Merge branch 'master' into Mario/hagar_notfixed
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / weapons / weapon / hagar.qc
index f7dcef7..2ed0ca7 100644 (file)
@@ -130,7 +130,7 @@ void W_Hagar_Attack(Weapon thiswep)
 
        W_DecreaseAmmo(thiswep, self, WEP_CVAR_PRI(hagar, ammo));
 
 
        W_DecreaseAmmo(thiswep, self, WEP_CVAR_PRI(hagar, ammo));
 
-       W_SetupShot(self, false, 2, SND(HAGAR_FIRE), CH_WEAPON_A, WEP_CVAR_PRI(hagar, damage));
+       W_SetupShot(self, false, 2, SND_HAGAR_FIRE, CH_WEAPON_A, WEP_CVAR_PRI(hagar, damage));
 
        Send_Effect(EFFECT_HAGAR_MUZZLEFLASH, w_shotorg, w_shotdir * 1000, 1);
 
 
        Send_Effect(EFFECT_HAGAR_MUZZLEFLASH, w_shotorg, w_shotdir * 1000, 1);
 
@@ -172,7 +172,7 @@ void W_Hagar_Attack2(Weapon thiswep)
 
        W_DecreaseAmmo(thiswep, self, WEP_CVAR_SEC(hagar, ammo));
 
 
        W_DecreaseAmmo(thiswep, self, WEP_CVAR_SEC(hagar, ammo));
 
-       W_SetupShot(self, false, 2, SND(HAGAR_FIRE), CH_WEAPON_A, WEP_CVAR_SEC(hagar, damage));
+       W_SetupShot(self, false, 2, SND_HAGAR_FIRE, CH_WEAPON_A, WEP_CVAR_SEC(hagar, damage));
 
        Send_Effect(EFFECT_HAGAR_MUZZLEFLASH, w_shotorg, w_shotdir * 1000, 1);
 
 
        Send_Effect(EFFECT_HAGAR_MUZZLEFLASH, w_shotorg, w_shotdir * 1000, 1);
 
@@ -224,7 +224,7 @@ void W_Hagar_Attack2_Load_Release(.entity weaponentity)
 
        weapon_prepareattack_do(self, weaponentity, true, WEP_CVAR_SEC(hagar, refire));
 
 
        weapon_prepareattack_do(self, weaponentity, true, WEP_CVAR_SEC(hagar, refire));
 
-       W_SetupShot(self, false, 2, SND(HAGAR_FIRE), CH_WEAPON_A, WEP_CVAR_SEC(hagar, damage));
+       W_SetupShot(self, false, 2, SND_HAGAR_FIRE, CH_WEAPON_A, WEP_CVAR_SEC(hagar, damage));
        Send_Effect(EFFECT_HAGAR_MUZZLEFLASH, w_shotorg, w_shotdir * 1000, 1);
 
        forward = v_forward;
        Send_Effect(EFFECT_HAGAR_MUZZLEFLASH, w_shotorg, w_shotdir * 1000, 1);
 
        forward = v_forward;
@@ -309,9 +309,9 @@ void W_Hagar_Attack2_Load(Weapon thiswep, .entity weaponentity)
 
        bool stopped = loaded || !enough_ammo;
 
 
        bool stopped = loaded || !enough_ammo;
 
-       if(self.BUTTON_ATCK2)
+       if(PHYS_INPUT_BUTTON_ATCK2(self))
        {
        {
-               if(self.BUTTON_ATCK && WEP_CVAR_SEC(hagar, load_abort))
+               if(PHYS_INPUT_BUTTON_ATCK(self) && WEP_CVAR_SEC(hagar, load_abort))
                {
                        if(self.hagar_load)
                        {
                {
                        if(self.hagar_load)
                        {
@@ -375,7 +375,7 @@ void W_Hagar_Attack2_Load(Weapon thiswep, .entity weaponentity)
                }
 
                // release if player let go of button or if they've held it in too long
                }
 
                // release if player let go of button or if they've held it in too long
-               if(!self.BUTTON_ATCK2 || (stopped && self.hagar_loadstep < time && WEP_CVAR_SEC(hagar, load_hold) >= 0))
+               if(!PHYS_INPUT_BUTTON_ATCK2(self) || (stopped && self.hagar_loadstep < time && WEP_CVAR_SEC(hagar, load_hold) >= 0))
                {
                        self.(weaponentity).state = WS_READY;
                        W_Hagar_Attack2_Load_Release(weaponentity);
                {
                        self.(weaponentity).state = WS_READY;
                        W_Hagar_Attack2_Load_Release(weaponentity);
@@ -416,8 +416,8 @@ void W_Hagar_Attack_Auto(Weapon thiswep, entity actor, .entity weaponentity, int
        W_Hagar_Attack(thiswep);
 
        int slot = weaponslot(weaponentity);
        W_Hagar_Attack(thiswep);
 
        int slot = weaponslot(weaponentity);
-       int theframe = WFRAME_FIRE1;
        ATTACK_FINISHED(actor, slot) = time + WEP_CVAR_PRI(hagar, refire) * W_WeaponRateFactor();
        ATTACK_FINISHED(actor, slot) = time + WEP_CVAR_PRI(hagar, refire) * W_WeaponRateFactor();
+       int theframe = WFRAME_FIRE1;
        entity this = actor.(weaponentity);
        if(this)
        {
        entity this = actor.(weaponentity);
        if(this)
        {
@@ -427,114 +427,124 @@ void W_Hagar_Attack_Auto(Weapon thiswep, entity actor, .entity weaponentity, int
        weapon_thinkf(actor, weaponentity, theframe, WEP_CVAR_PRI(hagar, refire), W_Hagar_Attack_Auto);
 }
 
        weapon_thinkf(actor, weaponentity, theframe, WEP_CVAR_PRI(hagar, refire), W_Hagar_Attack_Auto);
 }
 
-               METHOD(Hagar, wr_aim, void(entity thiswep))
-               {
-                       if(random()>0.15)
-                               self.BUTTON_ATCK = bot_aim(WEP_CVAR_PRI(hagar, speed), 0, WEP_CVAR_PRI(hagar, lifetime), false);
-                       else // not using secondary_speed since these are only 15% and should cause some ricochets without re-aiming
-                               self.BUTTON_ATCK2 = bot_aim(WEP_CVAR_PRI(hagar, speed), 0, WEP_CVAR_PRI(hagar, lifetime), false);
-               }
-               METHOD(Hagar, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire))
-               {
-                       float loadable_secondary;
-                       loadable_secondary = (WEP_CVAR_SEC(hagar, load) && WEP_CVAR(hagar, secondary));
-
-                       if(loadable_secondary)
-                               W_Hagar_Attack2_Load(thiswep, weaponentity); // must always run each frame
-                       if(autocvar_g_balance_hagar_reload_ammo && actor.clip_load < min(WEP_CVAR_PRI(hagar, ammo), WEP_CVAR_SEC(hagar, ammo))) { // forced reload
-                               thiswep.wr_reload(thiswep, actor, weaponentity);
-                       } else if((fire & 1) && !actor.hagar_load && !actor.hagar_loadblock) // not while secondary is loaded or awaiting reset
-                       {
-                               if(weapon_prepareattack(thiswep, actor, weaponentity, false, 0))
-                                       W_Hagar_Attack_Auto(thiswep, actor, weaponentity, fire);
-                       }
-                       else if((fire & 2) && !loadable_secondary && WEP_CVAR(hagar, secondary))
-                       {
-                               if(weapon_prepareattack(thiswep, actor, weaponentity, true, WEP_CVAR_SEC(hagar, refire)))
-                               {
-                                       W_Hagar_Attack2(thiswep);
-                                       weapon_thinkf(actor, weaponentity, WFRAME_FIRE2, WEP_CVAR_SEC(hagar, refire), w_ready);
-                               }
-                       }
-               }
-               METHOD(Hagar, wr_gonethink, void(entity thiswep))
-               {
-                       // we lost the weapon and want to prepare switching away
-                       if(self.hagar_load)
-                       {
-                               .entity weaponentity = weaponentities[0]; // TODO: unhardcode
-                               self.(weaponentity).state = WS_READY;
-                               W_Hagar_Attack2_Load_Release(weaponentity);
-                       }
-               }
-               METHOD(Hagar, wr_setup, void(entity thiswep))
-               {
-                       self.hagar_loadblock = false;
-
-                       if(self.hagar_load)
-                       {
-                               W_DecreaseAmmo(thiswep, self, WEP_CVAR_SEC(hagar, ammo) * self.hagar_load * -1); // give back ammo if necessary
-                               self.hagar_load = 0;
-                       }
-               }
-               METHOD(Hagar, wr_checkammo1, bool(entity thiswep))
-               {
-                       float ammo_amount = self.(thiswep.ammo_field) >= WEP_CVAR_PRI(hagar, ammo);
-                       ammo_amount += self.(weapon_load[WEP_HAGAR.m_id]) >= WEP_CVAR_PRI(hagar, ammo);
-                       return ammo_amount;
-               }
-               METHOD(Hagar, wr_checkammo2, bool(entity thiswep))
-               {
-                       float ammo_amount = self.(thiswep.ammo_field) >= WEP_CVAR_SEC(hagar, ammo);
-                       ammo_amount += self.(weapon_load[WEP_HAGAR.m_id]) >= WEP_CVAR_SEC(hagar, ammo);
-                       return ammo_amount;
-               }
-               METHOD(Hagar, wr_resetplayer, void(entity thiswep))
-               {
-                       self.hagar_load = 0;
-               }
-               METHOD(Hagar, wr_playerdeath, void(entity thiswep))
-               {
-                       .entity weaponentity = weaponentities[0]; // TODO: unhardcode
-                       // if we have any rockets loaded when we die, release them
-                       if(self.hagar_load && WEP_CVAR_SEC(hagar, load_releasedeath))
-                               W_Hagar_Attack2_Load_Release(weaponentity);
-               }
-               METHOD(Hagar, wr_reload, void(entity thiswep, entity actor, .entity weaponentity))
-               {
-                       if(!self.hagar_load) // require releasing loaded rockets first
-                               W_Reload(self, min(WEP_CVAR_PRI(hagar, ammo), WEP_CVAR_SEC(hagar, ammo)), SND(RELOAD));
-               }
-               METHOD(Hagar, wr_suicidemessage, int(entity thiswep))
-               {
-                       return WEAPON_HAGAR_SUICIDE;
-               }
-               METHOD(Hagar, wr_killmessage, int(entity thiswep))
-               {
-                       if(w_deathtype & HITTYPE_SECONDARY)
-                               return WEAPON_HAGAR_MURDER_BURST;
-                       else
-                               return WEAPON_HAGAR_MURDER_SPRAY;
-               }
+METHOD(Hagar, wr_aim, void(entity thiswep))
+{
+    SELFPARAM();
+    if(random()>0.15)
+        PHYS_INPUT_BUTTON_ATCK(self) = bot_aim(self, WEP_CVAR_PRI(hagar, speed), 0, WEP_CVAR_PRI(hagar, lifetime), false);
+    else // not using secondary_speed since these are only 15% and should cause some ricochets without re-aiming
+        PHYS_INPUT_BUTTON_ATCK2(self) = bot_aim(self, WEP_CVAR_PRI(hagar, speed), 0, WEP_CVAR_PRI(hagar, lifetime), false);
+}
+METHOD(Hagar, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire))
+{
+    float loadable_secondary;
+    loadable_secondary = (WEP_CVAR_SEC(hagar, load) && WEP_CVAR(hagar, secondary));
+
+    if(loadable_secondary)
+        W_Hagar_Attack2_Load(thiswep, weaponentity); // must always run each frame
+    if(autocvar_g_balance_hagar_reload_ammo && actor.clip_load < min(WEP_CVAR_PRI(hagar, ammo), WEP_CVAR_SEC(hagar, ammo))) { // forced reload
+        thiswep.wr_reload(thiswep, actor, weaponentity);
+    }
+    else if((fire & 1) && !actor.hagar_load && !actor.hagar_loadblock) // not while secondary is loaded or awaiting reset
+       {
+               if(weapon_prepareattack(thiswep, actor, weaponentity, false, 0))
+                       W_Hagar_Attack_Auto(thiswep, actor, weaponentity, fire);
+       }
+    else if((fire & 2) && !loadable_secondary && WEP_CVAR(hagar, secondary))
+    {
+        if(weapon_prepareattack(thiswep, actor, weaponentity, true, WEP_CVAR_SEC(hagar, refire)))
+        {
+            W_Hagar_Attack2(thiswep);
+            weapon_thinkf(actor, weaponentity, WFRAME_FIRE2, WEP_CVAR_SEC(hagar, refire), w_ready);
+        }
+    }
+}
+METHOD(Hagar, wr_gonethink, void(entity thiswep))
+{
+    SELFPARAM();
+    // we lost the weapon and want to prepare switching away
+    if(self.hagar_load)
+    {
+        .entity weaponentity = weaponentities[0]; // TODO: unhardcode
+        self.(weaponentity).state = WS_READY;
+        W_Hagar_Attack2_Load_Release(weaponentity);
+    }
+}
+METHOD(Hagar, wr_setup, void(entity thiswep))
+{
+    SELFPARAM();
+    self.hagar_loadblock = false;
+
+    if(self.hagar_load)
+    {
+        W_DecreaseAmmo(thiswep, self, WEP_CVAR_SEC(hagar, ammo) * self.hagar_load * -1); // give back ammo if necessary
+        self.hagar_load = 0;
+    }
+}
+METHOD(Hagar, wr_checkammo1, bool(entity thiswep))
+{
+    SELFPARAM();
+    float ammo_amount = self.(thiswep.ammo_field) >= WEP_CVAR_PRI(hagar, ammo);
+    ammo_amount += self.(weapon_load[WEP_HAGAR.m_id]) >= WEP_CVAR_PRI(hagar, ammo);
+    return ammo_amount;
+}
+METHOD(Hagar, wr_checkammo2, bool(entity thiswep))
+{
+    SELFPARAM();
+    float ammo_amount = self.(thiswep.ammo_field) >= WEP_CVAR_SEC(hagar, ammo);
+    ammo_amount += self.(weapon_load[WEP_HAGAR.m_id]) >= WEP_CVAR_SEC(hagar, ammo);
+    return ammo_amount;
+}
+METHOD(Hagar, wr_resetplayer, void(entity thiswep))
+{
+    SELFPARAM();
+    self.hagar_load = 0;
+}
+METHOD(Hagar, wr_playerdeath, void(entity thiswep))
+{
+    SELFPARAM();
+    .entity weaponentity = weaponentities[0]; // TODO: unhardcode
+    // if we have any rockets loaded when we die, release them
+    if(self.hagar_load && WEP_CVAR_SEC(hagar, load_releasedeath))
+        W_Hagar_Attack2_Load_Release(weaponentity);
+}
+METHOD(Hagar, wr_reload, void(entity thiswep, entity actor, .entity weaponentity))
+{
+    SELFPARAM();
+    if(!self.hagar_load) // require releasing loaded rockets first
+        W_Reload(self, min(WEP_CVAR_PRI(hagar, ammo), WEP_CVAR_SEC(hagar, ammo)), SND_RELOAD);
+}
+METHOD(Hagar, wr_suicidemessage, Notification(entity thiswep))
+{
+    return WEAPON_HAGAR_SUICIDE;
+}
+METHOD(Hagar, wr_killmessage, Notification(entity thiswep))
+{
+    if(w_deathtype & HITTYPE_SECONDARY)
+        return WEAPON_HAGAR_MURDER_BURST;
+    else
+        return WEAPON_HAGAR_MURDER_SPRAY;
+}
 
 #endif
 #ifdef CSQC
 
 
 #endif
 #ifdef CSQC
 
-               METHOD(Hagar, wr_impacteffect, void(entity thiswep))
-               {
-                       vector org2;
-                       org2 = w_org + w_backoff * 6;
-                       pointparticles(EFFECT_HAGAR_EXPLODE, org2, '0 0 0', 1);
-                       if(!w_issilent)
-                       {
-                               if(w_random<0.15)
-                                       sound(self, CH_SHOTS, SND_HAGEXP1, VOL_BASE, ATTN_NORM);
-                               else if(w_random<0.7)
-                                       sound(self, CH_SHOTS, SND_HAGEXP2, VOL_BASE, ATTN_NORM);
-                               else
-                                       sound(self, CH_SHOTS, SND_HAGEXP3, VOL_BASE, ATTN_NORM);
-                       }
-               }
+METHOD(Hagar, wr_impacteffect, void(entity thiswep))
+{
+    SELFPARAM();
+    vector org2;
+    org2 = w_org + w_backoff * 6;
+    pointparticles(EFFECT_HAGAR_EXPLODE, org2, '0 0 0', 1);
+    if(!w_issilent)
+    {
+        if(w_random<0.15)
+            sound(self, CH_SHOTS, SND_HAGEXP1, VOL_BASE, ATTN_NORM);
+        else if(w_random<0.7)
+            sound(self, CH_SHOTS, SND_HAGEXP2, VOL_BASE, ATTN_NORM);
+        else
+            sound(self, CH_SHOTS, SND_HAGEXP3, VOL_BASE, ATTN_NORM);
+    }
+}
 
 #endif
 #endif
 
 #endif
 #endif