4 METHOD(Shield, m_remove, void(StatusEffects this, entity actor, int removal_type))
6 bool wasactive = (actor.statuseffects && (actor.statuseffects.statuseffect_flags[this.m_id] & STATUSEFFECT_FLAG_ACTIVE));
7 if(removal_type == STATUSEFFECT_REMOVE_TIMEOUT && wasactive && IS_PLAYER(actor))
9 //Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_POWERDOWN_SHIELD, actor.netname);
10 Send_Notification(NOTIF_ONE, actor, MSG_CENTER, CENTER_POWERDOWN_SHIELD);
13 stopsound(actor, CH_TRIGGER_SINGLE); // get rid of the pickup sound
14 actor.effects &= ~(EF_RED | EF_ADDITIVE | EF_FULLBRIGHT);
15 SUPER(Shield).m_remove(this, actor, removal_type);
17 METHOD(Shield, m_apply, void(StatusEffects this, entity actor, float eff_time, float eff_flags))
19 bool wasactive = (actor.statuseffects && (actor.statuseffects.statuseffect_flags[this.m_id] & STATUSEFFECT_FLAG_ACTIVE));
20 if(!wasactive && IS_PLAYER(actor))
23 Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_POWERUP_SHIELD, actor.netname);
24 Send_Notification(NOTIF_ONE, actor, MSG_CENTER, CENTER_POWERUP_SHIELD);
26 SUPER(Shield).m_apply(this, actor, eff_time, eff_flags);
28 METHOD(Shield, m_tick, void(StatusEffects this, entity actor))
30 play_countdown(actor, StatusEffects_gettime(this, actor), SND_POWEROFF);
31 actor.effects |= (EF_RED | EF_ADDITIVE | EF_FULLBRIGHT);
32 SUPER(Shield).m_tick(this, actor);
36 METHOD(Shield, m_active, bool(StatusEffects this, entity actor))
38 if(autocvar__hud_configure)
40 return SUPER(Shield).m_active(this, actor);
42 METHOD(Shield, m_tick, void(StatusEffects this, entity actor))
47 float currentTime = (autocvar__hud_configure) ? 27 : bound(0, actor.statuseffect_time[this.m_id] - time, 99);
48 addPowerupItem(this.m_name, this.m_icon, autocvar_hud_progressbar_shield_color, currentTime, this.m_lifetime, (actor.statuseffect_flags[this.m_id] & STATUSEFFECT_FLAG_PERSISTENT));