diff --git a/src/game/boe.party.cpp b/src/game/boe.party.cpp index 6234d66d..54e9dce8 100644 --- a/src/game/boe.party.cpp +++ b/src/game/boe.party.cpp @@ -2377,13 +2377,7 @@ short damage_pc(cPlayer& which_pc,short how_much,eDamageType damage_type,eRace t if(how_much < 0) how_much = 0; which_pc.marked_damage += how_much; - short boom_type = 2; - if(damage_type == eDamageType::FIRE) - boom_type = 0; - else if(damage_type == eDamageType::UNBLOCKABLE) - boom_type = 4; - else if(damage_type == eDamageType::COLD) - boom_type = 5; + short boom_type = get_boom_type(damage_type); if(is_town()) add_explosion(univ.party.town_loc,how_much,0,boom_type,0,0); else add_explosion(which_pc.combat_pos,how_much,0,boom_type,0,0); diff --git a/src/game/boe.specials.cpp b/src/game/boe.specials.cpp index eaf22784..559a21ee 100644 --- a/src/game/boe.specials.cpp +++ b/src/game/boe.specials.cpp @@ -1433,6 +1433,17 @@ void set_sound_type(eDamageType dam_type, short& sound_type) { } } +short get_boom_type(eDamageType dam_type){ + short boom_type = 2; + if(dam_type == eDamageType::FIRE) + boom_type = 0; + else if(dam_type == eDamageType::UNBLOCKABLE) + boom_type = 4; + else if(dam_type == eDamageType::COLD) + boom_type = 5; + return boom_type; +} + // Damaging and killing monsters needs to be here because several have specials attached to them. short damage_monst(cCreature& victim, short who_hit, short how_much, eDamageType dam_type, short sound_type, bool do_print) { short r1,which_spot; @@ -1492,15 +1503,8 @@ short damage_monst(cCreature& victim, short who_hit, short how_much, eDamageType if(boom_anim_active) { if(how_much < 0) how_much = 0; - short boom_type = 2; - if(dam_type == eDamageType::FIRE) - boom_type = 0; - else if(dam_type == eDamageType::UNBLOCKABLE) - boom_type = 4; - else if(dam_type == eDamageType::COLD) - boom_type = 5; victim.marked_damage += how_much; - add_explosion(victim.cur_loc,how_much,0,boom_type,14 * (victim.x_width - 1),18 * (victim.y_width - 1)); + add_explosion(victim.cur_loc,how_much,0,get_boom_type(dam_type),14 * (victim.x_width - 1),18 * (victim.y_width - 1)); // Note: Windows version printed an "undamaged" message here if applicable, but I don't think that's right. if(how_much == 0) return false; diff --git a/src/game/boe.specials.hpp b/src/game/boe.specials.hpp index d4700b0a..30b2d545 100644 --- a/src/game/boe.specials.hpp +++ b/src/game/boe.specials.hpp @@ -9,6 +9,7 @@ void use_item(short pc,short item); bool use_space(location where); bool adj_town_look(location where); void set_sound_type(eDamageType dam_type, short& sound_type); +short get_boom_type(eDamageType dam_type); short damage_monst(cCreature& which_m, short who_hit, short how_much, eDamageType dam_type, short sound_type = -1, bool do_print = true); void petrify_monst(cCreature& which_m,int strength); void kill_monst(cCreature& which_m,short who_killed,eMainStatus type = eMainStatus::DEAD);