void mdeath::boomer_glow( monster &z ) { std::string explode = string_format( _( "a %s explode!" ), z.name() ); sounds::sound( z.pos(), 24, sounds::sound_t::combat, explode, false, "explosion", "small" ); for( auto &&dest : g->m.points_in_radius( z.pos(), 1 ) ) { // *NOPAD* g->m.bash( dest, 10 ); if( monster *const z = g->critter_at<monster>( dest ) ) { z->stumble(); z->moves -= 250; } if( Creature *const critter = g->critter_at( dest ) ) { critter->add_env_effect( effect_boomered, bp_eyes, 5, 25_turns ); for( int i = 0; i < rng( 2, 4 ); i++ ) { body_part bp = random_body_part(); critter->add_env_effect( effect_glowing, bp, 4, 4_minutes ); if( critter != nullptr && critter->has_effect( effect_glowing ) ) { break; } } } } g->m.propagate_field( z.pos(), fd_bile, 30, 2 ); }
void mdeath::boomer( monster &z ) { std::string explode = string_format( _( "a %s explode!" ), z.name() ); sounds::sound( z.pos(), 24, sounds::sound_t::combat, explode, false, "explosion", "small" ); for( auto &&dest : g->m.points_in_radius( z.pos(), 1 ) ) { // *NOPAD* g->m.bash( dest, 10 ); if( monster *const z = g->critter_at<monster>( dest ) ) { z->stumble(); z->moves -= 250; } } if( rl_dist( z.pos(), g->u.pos() ) == 1 ) { g->u.add_env_effect( effect_boomered, bp_eyes, 2, 24_turns ); } g->m.propagate_field( z.pos(), fd_bile, 15, 1 ); }