]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Give powerup statuseffect classes better names (cherry-pick 28ca8192ce)
authorotta8634 <k9wolf@pm.me>
Sun, 22 Dec 2024 16:58:25 +0000 (00:58 +0800)
committerotta8634 <k9wolf@pm.me>
Tue, 7 Jan 2025 14:34:13 +0000 (22:34 +0800)
This helps distinction between the Item and the StatusEffect clear for the main 4 powerups.
Also moved relevant attributes into their classes.

qcsrc/common/mutators/mutator/powerups/powerup/invisibility.qc
qcsrc/common/mutators/mutator/powerups/powerup/invisibility.qh
qcsrc/common/mutators/mutator/powerups/powerup/shield.qc
qcsrc/common/mutators/mutator/powerups/powerup/shield.qh
qcsrc/common/mutators/mutator/powerups/powerup/speed.qc
qcsrc/common/mutators/mutator/powerups/powerup/speed.qh
qcsrc/common/mutators/mutator/powerups/powerup/strength.qc
qcsrc/common/mutators/mutator/powerups/powerup/strength.qh

index dda2dcf8fafa6d2848839a608123f202a949fe96..ebc83e870a051d844df9a3c0d323ced08aef9cd5 100644 (file)
@@ -1,7 +1,7 @@
 #include "invisibility.qh"
 
 #ifdef SVQC
-METHOD(Invisibility, m_remove, void(StatusEffects this, entity actor, int removal_type))
+METHOD(InvisibilityStatusEffect, m_remove, void(StatusEffects this, entity actor, int removal_type))
 {
     bool wasactive = (actor.statuseffects && (actor.statuseffects.statuseffect_flags[this.m_id] & STATUSEFFECT_FLAG_ACTIVE));
     if(removal_type == STATUSEFFECT_REMOVE_TIMEOUT && wasactive && IS_PLAYER(actor))
@@ -17,9 +17,9 @@ METHOD(Invisibility, m_remove, void(StatusEffects this, entity actor, int remova
         if(actor.exteriorweaponentity)
             actor.exteriorweaponentity.alpha = default_weapon_alpha;
     }
-    SUPER(Invisibility).m_remove(this, actor, removal_type);
+    SUPER(InvisibilityStatusEffect).m_remove(this, actor, removal_type);
 }
-METHOD(Invisibility, m_apply, void(StatusEffects this, entity actor, float eff_time, float eff_flags))
+METHOD(InvisibilityStatusEffect, m_apply, void(StatusEffects this, entity actor, float eff_time, float eff_flags))
 {
     bool wasactive = (actor.statuseffects && (actor.statuseffects.statuseffect_flags[this.m_id] & STATUSEFFECT_FLAG_ACTIVE));
     if(!wasactive && IS_PLAYER(actor))
@@ -28,9 +28,9 @@ METHOD(Invisibility, m_apply, void(StatusEffects this, entity actor, float eff_t
             Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_POWERUP_INVISIBILITY, actor.netname);
         Send_Notification(NOTIF_ONE, actor, MSG_CENTER, CENTER_POWERUP_INVISIBILITY);
     }
-    SUPER(Invisibility).m_apply(this, actor, eff_time, eff_flags);
+    SUPER(InvisibilityStatusEffect).m_apply(this, actor, eff_time, eff_flags);
 }
-METHOD(Invisibility, m_tick, void(StatusEffects this, entity actor))
+METHOD(InvisibilityStatusEffect, m_tick, void(StatusEffects this, entity actor))
 {
     play_countdown(actor, StatusEffects_gettime(this, actor), SND_POWEROFF);
     if(!actor.vehicle)
@@ -39,6 +39,6 @@ METHOD(Invisibility, m_tick, void(StatusEffects this, entity actor))
         if(actor.exteriorweaponentity)
             actor.exteriorweaponentity.alpha = autocvar_g_balance_powerup_invisibility_alpha;
     }
-    SUPER(Invisibility).m_tick(this, actor);
+    SUPER(InvisibilityStatusEffect).m_tick(this, actor);
 }
 #endif
index df25c8a9c8cd76faf9c2f3a26aa763318bf1062b..ef814f39c2bb072c37fe31d854ab2494b2dfb577 100644 (file)
@@ -28,35 +28,37 @@ void powerup_invisibility_init(Pickup def, entity item)
         item.invisibility_finished = (item.count) ? item.count : autocvar_g_balance_powerup_invisibility_time;
 }
 #endif
-REGISTER_ITEM(Invisibility, NEW(Powerup)) {
-    this.m_canonical_spawnfunc = "item_invisibility";
+
+CLASS(InvisibilityItem, Powerup)
+    ATTRIB(InvisibilityItem, m_canonical_spawnfun, string, "item_invisibility");
 #ifdef SVQC
-    this.m_iteminit         =   powerup_invisibility_init;
+    ATTRIB(InvisibilityItem, m_iteminit, void(Pickup def, entity item), powerup_invisibility_init);
 #endif
 #ifdef GAMEQC
-    this.spawnflags         =   ITEM_FLAG_NORMAL;
-    this.m_itemid           =   IT_INVISIBILITY;
-    this.m_model            =   MDL_BUFF; // TODO: MDL_Invisibility_ITEM when new model available
-    this.m_skin             =   12;
-    this.m_sound            =   SND_Invisibility;
-    this.m_glow             =   true;
-    this.m_respawnsound     =   SND_STRENGTH_RESPAWN;
+    ATTRIB(InvisibilityItem, spawnflags, int, ITEM_FLAG_NORMAL);
+    ATTRIB(InvisibilityItem, m_itemid, int, IT_INVISIBILITY);
+    ATTRIB(InvisibilityItem, m_model, Model, MDL_BUFF); // TODO: MDL_Invisibility_ITEM when new model available
+    ATTRIB(InvisibilityItem, m_skin, int, 12);
+    ATTRIB(InvisibilityItem, m_sound, Sound, SND_Invisibility);
+    ATTRIB(InvisibilityItem, m_glow, bool, true);
+    ATTRIB(InvisibilityItem, m_respawnsound, Sound, SND_STRENGTH_RESPAWN);
 #endif
-    this.netname            =   "invisibility";
-    this.m_name             =   _("Invisibility");
-    this.m_icon             =   "buff_invisible";
-    this.m_color            =   '0.5 0.5 1';
-    this.m_waypoint         =   _("Invisibility");
-    this.m_waypointblink    =   2;
-}
+    ATTRIB(InvisibilityItem, netname, string, "invisibility");
+    ATTRIB(InvisibilityItem, m_name, string, _("Invisibility"));
+    ATTRIB(InvisibilityItem, m_icon, string, "buff_invisible");
+    ATTRIB(InvisibilityItem, m_color, vector, '0.5 0.5 1');
+    ATTRIB(InvisibilityItem, m_waypoint, string, _("Invisibility"));
+    ATTRIB(InvisibilityItem, m_waypointblink, int, 2);
+ENDCLASS(InvisibilityItem)
+REGISTER_ITEM(Invisibility, NEW(InvisibilityItem));
 
 SPAWNFUNC_ITEM(item_invisibility, ITEM_Invisibility)
 SPAWNFUNC_ITEM(item_buff_invisibility, ITEM_Invisibility)
 
-CLASS(Invisibility, Powerups)
-    ATTRIB(Invisibility, netname, string, "invisibility");
-    ATTRIB(Invisibility, m_name, string, _("Invisibility"));
-    ATTRIB(Invisibility, m_color, vector, '0.5 0.5 1');
-    ATTRIB(Invisibility, m_icon, string, "buff_invisible");
-ENDCLASS(Invisibility)
-REGISTER_STATUSEFFECT(Invisibility, NEW(Invisibility));
+CLASS(InvisibilityStatusEffect, Powerups)
+    ATTRIB(InvisibilityStatusEffect, netname, string, "invisibility");
+    ATTRIB(InvisibilityStatusEffect, m_name, string, _("Invisibility"));
+    ATTRIB(InvisibilityStatusEffect, m_color, vector, '0.5 0.5 1');
+    ATTRIB(InvisibilityStatusEffect, m_icon, string, "buff_invisible");
+ENDCLASS(InvisibilityStatusEffect)
+REGISTER_STATUSEFFECT(Invisibility, NEW(InvisibilityStatusEffect));
index 230967b2b82c9f1575f0adf69cc4050afad053e0..999b683ef586be18fdb6da3d3302c352f03d060e 100644 (file)
@@ -1,7 +1,7 @@
 #include "shield.qh"
 
 #ifdef SVQC
-METHOD(Shield, m_remove, void(StatusEffects this, entity actor, int removal_type))
+METHOD(ShieldStatusEffect, m_remove, void(StatusEffects this, entity actor, int removal_type))
 {
     bool wasactive = (actor.statuseffects && (actor.statuseffects.statuseffect_flags[this.m_id] & STATUSEFFECT_FLAG_ACTIVE));
     if(removal_type == STATUSEFFECT_REMOVE_TIMEOUT && wasactive && IS_PLAYER(actor))
@@ -12,9 +12,9 @@ METHOD(Shield, m_remove, void(StatusEffects this, entity actor, int removal_type
     if(wasactive)
         stopsound(actor, CH_TRIGGER_SINGLE); // get rid of the pickup sound
     actor.effects &= ~(EF_RED | EF_ADDITIVE | EF_FULLBRIGHT);
-    SUPER(Shield).m_remove(this, actor, removal_type);
+    SUPER(ShieldStatusEffect).m_remove(this, actor, removal_type);
 }
-METHOD(Shield, m_apply, void(StatusEffects this, entity actor, float eff_time, float eff_flags))
+METHOD(ShieldStatusEffect, m_apply, void(StatusEffects this, entity actor, float eff_time, float eff_flags))
 {
     bool wasactive = (actor.statuseffects && (actor.statuseffects.statuseffect_flags[this.m_id] & STATUSEFFECT_FLAG_ACTIVE));
     if(!wasactive && IS_PLAYER(actor))
@@ -23,23 +23,23 @@ METHOD(Shield, m_apply, void(StatusEffects this, entity actor, float eff_time, f
             Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_POWERUP_SHIELD, actor.netname);
         Send_Notification(NOTIF_ONE, actor, MSG_CENTER, CENTER_POWERUP_SHIELD);
     }
-    SUPER(Shield).m_apply(this, actor, eff_time, eff_flags);
+    SUPER(ShieldStatusEffect).m_apply(this, actor, eff_time, eff_flags);
 }
-METHOD(Shield, m_tick, void(StatusEffects this, entity actor))
+METHOD(ShieldStatusEffect, m_tick, void(StatusEffects this, entity actor))
 {
     play_countdown(actor, StatusEffects_gettime(this, actor), SND_POWEROFF);
     actor.effects |= (EF_RED | EF_ADDITIVE | EF_FULLBRIGHT);
-    SUPER(Shield).m_tick(this, actor);
+    SUPER(ShieldStatusEffect).m_tick(this, actor);
 }
 #endif
 #ifdef CSQC
-METHOD(Shield, m_active, bool(StatusEffects this, entity actor))
+METHOD(ShieldStatusEffect, m_active, bool(StatusEffects this, entity actor))
 {
     if(autocvar__hud_configure)
         return true;
-    return SUPER(Shield).m_active(this, actor);
+    return SUPER(ShieldStatusEffect).m_active(this, actor);
 }
-METHOD(Shield, m_tick, void(StatusEffects this, entity actor))
+METHOD(ShieldStatusEffect, m_tick, void(StatusEffects this, entity actor))
 {
     if(this.m_hidden)
         return;
index ac7faaeda0dc6f68b7119e148fa197f732030a67..280b4a33f86fd54ca7518da477a0010b40adfdbe 100644 (file)
@@ -27,33 +27,35 @@ void powerup_shield_init(Pickup def, entity item)
         item.invincible_finished = (item.count) ? item.count : autocvar_g_balance_powerup_invincible_time;
 }
 #endif
-REGISTER_ITEM(Shield, NEW(Powerup)) {
-    this.m_canonical_spawnfunc = "item_shield";
+
+CLASS(ShieldItem, Powerup)
+    ATTRIB(ShieldItem, m_canonical_spawnfunc, string, "item_shield");
 #ifdef SVQC
-    this.m_iteminit         =   powerup_shield_init;
+    ATTRIB(ShieldItem, m_iteminit, void(Pickup def, entity item), powerup_shield_init);
 #endif
 #ifdef GAMEQC
-    this.spawnflags         =   ITEM_FLAG_NORMAL;
-    this.m_itemid           =   IT_INVINCIBLE;
-    this.m_model            =   MDL_Shield_ITEM;
-    this.m_sound            =   SND_Shield;
-    this.m_glow             =   true;
-    this.m_respawnsound     =   SND_SHIELD_RESPAWN;
+    ATTRIB(ShieldItem, spawnflags, int, ITEM_FLAG_NORMAL);
+    ATTRIB(ShieldItem, m_itemid, int, IT_INVINCIBLE);
+    ATTRIB(ShieldItem, m_model, Model, MDL_Shield_ITEM);
+    ATTRIB(ShieldItem, m_sound, Sound, SND_Shield);
+    ATTRIB(ShieldItem, m_glow, bool, true);
+    ATTRIB(ShieldItem, m_respawnsound, Sound, SND_SHIELD_RESPAWN);
 #endif
-    this.netname            =   "invincible";
-    this.m_name             =   _("Shield");
-    this.m_icon             =   "shield";
-    this.m_color            =   '1 0 1';
-    this.m_waypoint         =   _("Shield");
-    this.m_waypointblink    =   2;
-}
+    ATTRIB(ShieldItem, netname, string, "invincible");
+    ATTRIB(ShieldItem, m_name, string, _("Shield"));
+    ATTRIB(ShieldItem, m_icon, string, "shield");
+    ATTRIB(ShieldItem, m_color, vector, '1 0 1');
+    ATTRIB(ShieldItem, m_waypoint, string, _("Shield"));
+    ATTRIB(ShieldItem, m_waypointblink, int, 2);
+ENDCLASS(ShieldItem)
+REGISTER_ITEM(Shield, NEW(ShieldItem));
 
 SPAWNFUNC_ITEM(item_shield, ITEM_Shield)
 SPAWNFUNC_ITEM(item_invincible, ITEM_Shield)
 
-CLASS(Shield, Powerups)
-    ATTRIB(Shield, netname, string, "invincible"); // NOTE: referring to as invincible so that it matches the powerup item
-    ATTRIB(Shield, m_name, string, _("Shield"));
-    ATTRIB(Shield, m_icon, string, "shield");
-ENDCLASS(Shield)
-REGISTER_STATUSEFFECT(Shield, NEW(Shield));
+CLASS(ShieldStatusEffect, Powerups)
+    ATTRIB(ShieldStatusEffect, netname, string, "invincible"); // NOTE: referring to as invincible so that it matches the powerup item
+    ATTRIB(ShieldStatusEffect, m_name, string, _("Shield"));
+    ATTRIB(ShieldStatusEffect, m_icon, string, "shield");
+ENDCLASS(ShieldStatusEffect)
+REGISTER_STATUSEFFECT(Shield, NEW(ShieldStatusEffect));
index 069d832f60b1c8db4b3e87c879aa8b34578dc115..db481fe2a7f59807766d2f8729190b89808163e7 100644 (file)
@@ -1,7 +1,7 @@
 #include "speed.qh"
 
 #ifdef SVQC
-METHOD(Speed, m_remove, void(StatusEffects this, entity actor, int removal_type))
+METHOD(SpeedStatusEffect, m_remove, void(StatusEffects this, entity actor, int removal_type))
 {
     bool wasactive = (actor.statuseffects && (actor.statuseffects.statuseffect_flags[this.m_id] & STATUSEFFECT_FLAG_ACTIVE));
     if(removal_type == STATUSEFFECT_REMOVE_TIMEOUT && wasactive && IS_PLAYER(actor))
@@ -11,9 +11,9 @@ METHOD(Speed, m_remove, void(StatusEffects this, entity actor, int removal_type)
     }
     if(wasactive)
         stopsound(actor, CH_TRIGGER_SINGLE); // get rid of the pickup sound
-    SUPER(Speed).m_remove(this, actor, removal_type);
+    SUPER(SpeedStatusEffect).m_remove(this, actor, removal_type);
 }
-METHOD(Speed, m_apply, void(StatusEffects this, entity actor, float eff_time, float eff_flags))
+METHOD(SpeedStatusEffect, m_apply, void(StatusEffects this, entity actor, float eff_time, float eff_flags))
 {
     bool wasactive = (actor.statuseffects && (actor.statuseffects.statuseffect_flags[this.m_id] & STATUSEFFECT_FLAG_ACTIVE));
     if(!wasactive && IS_PLAYER(actor))
@@ -22,11 +22,11 @@ METHOD(Speed, m_apply, void(StatusEffects this, entity actor, float eff_time, fl
             Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_POWERUP_SPEED, actor.netname);
         Send_Notification(NOTIF_ONE, actor, MSG_CENTER, CENTER_POWERUP_SPEED);
     }
-    SUPER(Speed).m_apply(this, actor, eff_time, eff_flags);
+    SUPER(SpeedStatusEffect).m_apply(this, actor, eff_time, eff_flags);
 }
-METHOD(Speed, m_tick, void(StatusEffects this, entity actor))
+METHOD(SpeedStatusEffect, m_tick, void(StatusEffects this, entity actor))
 {
     play_countdown(actor, StatusEffects_gettime(this, actor), SND_POWEROFF);
-    SUPER(Speed).m_tick(this, actor);
+    SUPER(SpeedStatusEffect).m_tick(this, actor);
 }
 #endif
index 6b4653546dea215733ca8e19745060cc854aec02..0682f16d61a99ad5a37659f793ab11208fcc08a2 100644 (file)
@@ -29,35 +29,37 @@ void powerup_speed_init(Pickup def, entity item)
         item.speed_finished = (item.count) ? item.count : autocvar_g_balance_powerup_speed_time;
 }
 #endif
-REGISTER_ITEM(Speed, NEW(Powerup)) {
-    this.m_canonical_spawnfunc = "item_speed";
+
+CLASS(SpeedItem, Powerup)
+    ATTRIB(SpeedItem, m_canonical_spawnfunc, string, "item_speed");
 #ifdef SVQC
-    this.m_iteminit         =   powerup_speed_init;
+    ATTRIB(SpeedItem, m_iteminit, void(Pickup def, entity item), powerup_speed_init);
 #endif
 #ifdef GAMEQC
-    this.spawnflags         =   ITEM_FLAG_NORMAL;
-    this.m_itemid           =   IT_SPEED;
-    this.m_model            =   MDL_BUFF; // TODO: MDL_Speed_ITEM when new model available
-    this.m_skin             =   9;
-    this.m_sound            =   SND_Speed;
-    this.m_glow             =   true;
-    this.m_respawnsound     =   SND_SHIELD_RESPAWN;
+    ATTRIB(SpeedItem, spawnflags, int, ITEM_FLAG_NORMAL);
+    ATTRIB(SpeedItem, m_itemid, int, IT_SPEED);
+    ATTRIB(SpeedItem, m_model, Model, MDL_BUFF); // TODO: MDL_Speed_ITEM when new model available
+    ATTRIB(SpeedItem, m_skin, int, 9);
+    ATTRIB(SpeedItem, m_sound, Sound, SND_Speed);
+    ATTRIB(SpeedItem, m_glow, bool, true);
+    ATTRIB(SpeedItem, m_respawnsound, Sound, SND_SHIELD_RESPAWN);
 #endif
-    this.netname            =   "speed";
-    this.m_name             =   _("Speed");
-    this.m_icon             =   "buff_speed";
-    this.m_color            =   '0.1 1 0.84';
-    this.m_waypoint         =   _("Speed");
-    this.m_waypointblink    =   2;
-}
+    ATTRIB(SpeedItem, netname, string, "speed");
+    ATTRIB(SpeedItem, m_name, string, _("Speed"));
+    ATTRIB(SpeedItem, m_icon, string, "buff_speed");
+    ATTRIB(SpeedItem, m_color, vector, '0.1 1 0.84');
+    ATTRIB(SpeedItem, m_waypoint, string, _("Speed"));
+    ATTRIB(SpeedItem, m_waypointblink, int, 2);
+ENDCLASS(SpeedItem)
+REGISTER_ITEM(Speed, NEW(SpeedItem));
 
 SPAWNFUNC_ITEM(item_speed, ITEM_Speed)
 SPAWNFUNC_ITEM(item_buff_speed, ITEM_Speed)
 
-CLASS(Speed, Powerups)
-    ATTRIB(Speed, netname, string, "speed");
-    ATTRIB(Speed, m_name, string, _("Speed"));
-    ATTRIB(Speed, m_color, vector, '0.1 1 0.84');
-    ATTRIB(Speed, m_icon, string, "buff_speed");
-ENDCLASS(Speed)
-REGISTER_STATUSEFFECT(Speed, NEW(Speed));
+CLASS(SpeedStatusEffect, Powerups)
+    ATTRIB(SpeedStatusEffect, netname, string, "speed");
+    ATTRIB(SpeedStatusEffect, m_name, string, _("Speed"));
+    ATTRIB(SpeedStatusEffect, m_color, vector, '0.1 1 0.84');
+    ATTRIB(SpeedStatusEffect, m_icon, string, "buff_speed");
+ENDCLASS(SpeedStatusEffect)
+REGISTER_STATUSEFFECT(Speed, NEW(SpeedStatusEffect));
index c2f25729216ab1cb388795f3344e67f666f6bfc0..2c5c7d20ada36722683b7061215743086080c1e4 100644 (file)
@@ -1,7 +1,7 @@
 #include "strength.qh"
 
 #ifdef SVQC
-METHOD(Strength, m_remove, void(StatusEffects this, entity actor, int removal_type))
+METHOD(StrengthStatusEffect, m_remove, void(StatusEffects this, entity actor, int removal_type))
 {
     bool wasactive = (actor.statuseffects && (actor.statuseffects.statuseffect_flags[this.m_id] & STATUSEFFECT_FLAG_ACTIVE));
     if(removal_type == STATUSEFFECT_REMOVE_TIMEOUT && wasactive && IS_PLAYER(actor))
@@ -12,9 +12,9 @@ METHOD(Strength, m_remove, void(StatusEffects this, entity actor, int removal_ty
     if(wasactive)
         stopsound(actor, CH_TRIGGER_SINGLE); // get rid of the pickup sound
     actor.effects &= ~(EF_BLUE | EF_ADDITIVE | EF_FULLBRIGHT);
-    SUPER(Strength).m_remove(this, actor, removal_type);
+    SUPER(StrengthStatusEffect).m_remove(this, actor, removal_type);
 }
-METHOD(Strength, m_apply, void(StatusEffects this, entity actor, float eff_time, float eff_flags))
+METHOD(StrengthStatusEffect, m_apply, void(StatusEffects this, entity actor, float eff_time, float eff_flags))
 {
     bool wasactive = (actor.statuseffects && (actor.statuseffects.statuseffect_flags[this.m_id] & STATUSEFFECT_FLAG_ACTIVE));
     if(!wasactive && IS_PLAYER(actor))
@@ -23,23 +23,23 @@ METHOD(Strength, m_apply, void(StatusEffects this, entity actor, float eff_time,
             Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_POWERUP_STRENGTH, actor.netname);
         Send_Notification(NOTIF_ONE, actor, MSG_CENTER, CENTER_POWERUP_STRENGTH);
     }
-    SUPER(Strength).m_apply(this, actor, eff_time, eff_flags);
+    SUPER(StrengthStatusEffect).m_apply(this, actor, eff_time, eff_flags);
 }
-METHOD(Strength, m_tick, void(StatusEffects this, entity actor))
+METHOD(StrengthStatusEffect, m_tick, void(StatusEffects this, entity actor))
 {
     play_countdown(actor, StatusEffects_gettime(this, actor), SND_POWEROFF);
     actor.effects |= (EF_BLUE | EF_ADDITIVE | EF_FULLBRIGHT);
-    SUPER(Strength).m_tick(this, actor);
+    SUPER(StrengthStatusEffect).m_tick(this, actor);
 }
 #endif
 #ifdef CSQC
-METHOD(Strength, m_active, bool(StatusEffects this, entity actor))
+METHOD(StrengthStatusEffect, m_active, bool(StatusEffects this, entity actor))
 {
     if(autocvar__hud_configure)
         return true;
-    return SUPER(Strength).m_active(this, actor);
+    return SUPER(StrengthStatusEffect).m_active(this, actor);
 }
-METHOD(Strength, m_tick, void(StatusEffects this, entity actor))
+METHOD(StrengthStatusEffect, m_tick, void(StatusEffects this, entity actor))
 {
     if(this.m_hidden)
         return;
index 3567cb1c34e0cc25925b715713c92d8cf04ff9d6..d61cbeb6b3403cf9930cad52a836220ca9d4ea67 100644 (file)
@@ -29,32 +29,34 @@ void powerup_strength_init(Pickup def, entity item)
         item.strength_finished = (item.count) ? item.count : autocvar_g_balance_powerup_strength_time;
 }
 #endif
-REGISTER_ITEM(Strength, NEW(Powerup)) {
-    this.m_canonical_spawnfunc = "item_strength";
+
+CLASS(StrengthItem, Powerup)
+    ATTRIB(StrengthItem, m_canonical_spawnfunc, string, "item_strength");
 #ifdef SVQC
-    this.m_iteminit         =   powerup_strength_init;
+    ATTRIB(StrengthItem, m_iteminit, void(Pickup def, entity item), powerup_strength_init);
 #endif
 #ifdef GAMEQC
-    this.spawnflags         =   ITEM_FLAG_NORMAL;
-    this.m_itemid           =   IT_STRENGTH;
-    this.m_model            =   MDL_Strength_ITEM;
-    this.m_sound            =   SND_Strength;
-    this.m_glow             =   true;
-    this.m_respawnsound     =   SND_STRENGTH_RESPAWN;
+    ATTRIB(StrengthItem, spawnflags, int, ITEM_FLAG_NORMAL);
+    ATTRIB(StrengthItem, m_itemid, int, IT_STRENGTH);
+    ATTRIB(StrengthItem, m_model, Model, MDL_Strength_ITEM);
+    ATTRIB(StrengthItem, m_sound, Sound, SND_Strength);
+    ATTRIB(StrengthItem, m_glow, bool, true);
+    ATTRIB(StrengthItem, m_respawnsound, Sound, SND_STRENGTH_RESPAWN);
 #endif
-    this.netname            =   "strength";
-    this.m_name             =   _("Strength");
-    this.m_icon             =   "strength";
-    this.m_color            =   '0 0 1';
-    this.m_waypoint         =   _("Strength");
-    this.m_waypointblink    =   2;
-}
+    ATTRIB(StrengthItem, netname, string, "strength");
+    ATTRIB(StrengthItem, m_name, string, _("Strength"));
+    ATTRIB(StrengthItem, m_icon, string, "strength");
+    ATTRIB(StrengthItem, m_color, vector, '1 0 0');
+    ATTRIB(StrengthItem, m_waypoint, string, _("Strength"));
+    ATTRIB(StrengthItem, m_waypointblink, int, 2);
+ENDCLASS(StrengthItem)
+REGISTER_ITEM(Strength, NEW(StrengthItem));
 
 SPAWNFUNC_ITEM(item_strength, ITEM_Strength)
 
-CLASS(Strength, Powerups)
-    ATTRIB(Strength, netname, string, "strength");
-    ATTRIB(Strength, m_name, string, _("Strength"));
-    ATTRIB(Strength, m_icon, string, "strength");
-ENDCLASS(Strength)
-REGISTER_STATUSEFFECT(Strength, NEW(Strength));
+CLASS(StrengthStatusEffect, Powerups)
+    ATTRIB(StrengthStatusEffect, netname, string, "strength");
+    ATTRIB(StrengthStatusEffect, m_name, string, _("Strength"));
+    ATTRIB(StrengthStatusEffect, m_icon, string, "strength");
+ENDCLASS(StrengthStatusEffect)
+REGISTER_STATUSEFFECT(Strength, NEW(StrengthStatusEffect));