diff --git a/common/main/object.h b/common/main/object.h index 15f33770a..aab0441f1 100644 --- a/common/main/object.h +++ b/common/main/object.h @@ -472,10 +472,7 @@ static inline void set_player_id(const vobjptr_t o, ubyte id) o->id = id; } -static inline void set_powerup_id(const vobjptr_t o, ubyte id) -{ - o->id = id; -} +void set_powerup_id(vobjptr_t o, uint8_t id); static inline void set_robot_id(const vobjptr_t o, ubyte id) { diff --git a/similar/main/gamesave.cpp b/similar/main/gamesave.cpp index 432feff8d..f2b7047cd 100644 --- a/similar/main/gamesave.cpp +++ b/similar/main/gamesave.cpp @@ -257,7 +257,7 @@ static void verify_object(const vobjptr_t obj) if ( obj->type == OBJ_POWERUP ) { if ( get_powerup_id(obj) >= N_powerup_types ) { - set_powerup_id(obj, 0); + set_powerup_id(obj, POW_SHIELD_BOOST); Assert( obj->render_type != RT_POLYOBJ ); } obj->control_type = CT_POWERUP; diff --git a/similar/main/gameseq.cpp b/similar/main/gameseq.cpp index 62e60258c..0798d7697 100644 --- a/similar/main/gameseq.cpp +++ b/similar/main/gameseq.cpp @@ -1605,9 +1605,6 @@ void (bash_to_shield)(const vobjptr_t i) enum powerup_type_t type = (enum powerup_type_t) get_powerup_id(i); PowerupsInMine[type]=MaxPowerupsAllowed[type]=0; set_powerup_id(i, POW_SHIELD_BOOST); - i->size = Powerup_info[get_powerup_id(i)].size; - i->rtype.vclip_info.vclip_num = Powerup_info[get_powerup_id(i)].vclip_num; - i->rtype.vclip_info.frametime = Vclip[i->rtype.vclip_info.vclip_num].frame_time; } diff --git a/similar/main/multi.cpp b/similar/main/multi.cpp index efccbb222..48aeab4af 100644 --- a/similar/main/multi.cpp +++ b/similar/main/multi.cpp @@ -3254,14 +3254,10 @@ void multi_prep_level(void) if (!inv_remaining) { set_powerup_id(o, POW_SHIELD_BOOST); - o->rtype.vclip_info.vclip_num = Powerup_info[get_powerup_id(o)].vclip_num; - o->rtype.vclip_info.frametime = Vclip[o->rtype.vclip_info.vclip_num].frame_time; } else { set_powerup_id(o, POW_INVULNERABILITY); - o->rtype.vclip_info.vclip_num = Powerup_info[get_powerup_id(o)].vclip_num; - o->rtype.vclip_info.frametime = Vclip[o->rtype.vclip_info.vclip_num].frame_time; } } @@ -3270,16 +3266,12 @@ void multi_prep_level(void) if ((get_powerup_id(o) >= POW_KEY_BLUE) && (get_powerup_id(o) <= POW_KEY_GOLD)) { set_powerup_id(o, POW_SHIELD_BOOST); - o->rtype.vclip_info.vclip_num = Powerup_info[get_powerup_id(o)].vclip_num; - o->rtype.vclip_info.frametime = Vclip[o->rtype.vclip_info.vclip_num].frame_time; } if (get_powerup_id(o) == POW_INVULNERABILITY) { if (!inv_remaining) { set_powerup_id(o, POW_SHIELD_BOOST); - o->rtype.vclip_info.vclip_num = Powerup_info[get_powerup_id(o)].vclip_num; - o->rtype.vclip_info.frametime = Vclip[o->rtype.vclip_info.vclip_num].frame_time; } else -- inv_remaining; } @@ -3288,8 +3280,6 @@ void multi_prep_level(void) if (!cloak_remaining) { set_powerup_id(o, POW_SHIELD_BOOST); - o->rtype.vclip_info.vclip_num = Powerup_info[get_powerup_id(o)].vclip_num; - o->rtype.vclip_info.frametime = Vclip[o->rtype.vclip_info.vclip_num].frame_time; } else -- cloak_remaining; } diff --git a/similar/main/object.cpp b/similar/main/object.cpp index fd36fbb68..2279959d1 100644 --- a/similar/main/object.cpp +++ b/similar/main/object.cpp @@ -1923,6 +1923,14 @@ int update_object_seg(const vobjptridx_t obj) return 1; } +void set_powerup_id(const vobjptr_t o, uint8_t id) +{ + o->id = id; + o->size = Powerup_info[id].size; + const auto vclip_num = Powerup_info[id].vclip_num; + o->rtype.vclip_info.vclip_num = vclip_num; + o->rtype.vclip_info.frametime = Vclip[vclip_num].frame_time; +} //go through all objects and make sure they have the correct segment numbers void fix_object_segs()