diff --git a/src/game/boe.monster.cpp b/src/game/boe.monster.cpp index e0f967e7..de82d1c8 100644 --- a/src/game/boe.monster.cpp +++ b/src/game/boe.monster.cpp @@ -815,53 +815,44 @@ void monst_inflict_fields(short which_monst) { if(univ.town.monst[which_monst].is_alive()) { where_check.x = univ.town.monst[which_monst].cur_loc.x + i; where_check.y = univ.town.monst[which_monst].cur_loc.y + j; - // TODO: If the goal is to damage the monster by any fields it's on, why all the break statements? if(univ.town.is_quickfire(where_check.x,where_check.y)) { r1 = get_ran(2,1,8); damage_monst(*which_m,7,r1,eDamageType::FIRE); - break; } if(univ.town.is_blade_wall(where_check.x,where_check.y)) { r1 = get_ran(6,1,8); - if(have_radiate && which_radiate != eFieldType::WALL_BLADES) + if(!have_radiate || which_radiate != eFieldType::WALL_BLADES) damage_monst(*which_m,7,r1,eDamageType::WEAPON); - break; } if(univ.town.is_force_wall(where_check.x,where_check.y)) { r1 = get_ran(3,1,6); - if(have_radiate && which_radiate != eFieldType::WALL_FORCE) + if(!have_radiate || which_radiate != eFieldType::WALL_FORCE) damage_monst(*which_m,7,r1,eDamageType::MAGIC); - break; } if(univ.town.is_sleep_cloud(where_check.x,where_check.y)) { - if(have_radiate && which_radiate != eFieldType::CLOUD_SLEEP) + if(!have_radiate || which_radiate != eFieldType::CLOUD_SLEEP) which_m->sleep(eStatus::ASLEEP,3,0); - break; } if(univ.town.is_ice_wall(where_check.x,where_check.y)) { r1 = get_ran(3,1,6); - if(have_radiate && which_radiate != eFieldType::WALL_ICE) + if(!have_radiate || which_radiate != eFieldType::WALL_ICE) damage_monst(*which_m,7,r1,eDamageType::COLD); - break; } if(univ.town.is_scloud(where_check.x,where_check.y)) { r1 = get_ran(1,2,3); - if(have_radiate && which_radiate != eFieldType::CLOUD_STINK) + if(!have_radiate || which_radiate != eFieldType::CLOUD_STINK) which_m->curse(r1); - break; } if(univ.town.is_web(where_check.x,where_check.y) && which_m->m_type != eRace::BUG) { which_m->spell_note(eSpellNote::WEBBED); r1 = get_ran(1,2,3); which_m->web(r1); univ.town.set_web(where_check.x,where_check.y,false); - break; } if(univ.town.is_fire_wall(where_check.x,where_check.y)) { r1 = get_ran(2,1,6); - if(have_radiate && which_radiate != eFieldType::WALL_FIRE) + if(!have_radiate || which_radiate != eFieldType::WALL_FIRE) damage_monst(*which_m,7,r1,eDamageType::FIRE); - break; } if(univ.town.is_force_cage(where_check.x,where_check.y)) process_force_cage(where_check, univ.get_target_i(*which_m));