]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/weapons/w_arc.qc
Working on cleaning up weapon spawn functions
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / weapons / w_arc.qc
index dc72833e42d17c3afc1e7105ecb762be988a3249..ab06a8a92327d9348cb25488cd0da6e5c94adf85 100644 (file)
@@ -39,6 +39,7 @@ void ArcInit();
 #endif
 #else
 #ifdef SVQC
+void spawnfunc_weapon_arc() { weapon_defaultspawnfunc(WEP_ARC); }
 
 float W_Arc_Beam_Send(entity to, float sf)
 {
@@ -155,120 +156,134 @@ void W_Arc_Attack1 (void)
 
 float w_arc(float req)
 {
-       if (req == WR_AIM)
+       switch(req)
        {
-               self.BUTTON_ATCK = bot_aim(1000000, 0, 0.001, FALSE);
-               /*
-               self.BUTTON_ATCK=FALSE;
-               self.BUTTON_ATCK2=FALSE;
-               if(vlen(self.origin-self.enemy.origin) > 1000)
-                       self.bot_aim_whichfiretype = 0;
-               if(self.bot_aim_whichfiretype == 0)
+               case WR_AIM:
                {
-                       float shoot;
+                       self.BUTTON_ATCK = bot_aim(1000000, 0, 0.001, FALSE);
+                       /*
+                       self.BUTTON_ATCK=FALSE;
+                       self.BUTTON_ATCK2=FALSE;
+                       if(vlen(self.origin-self.enemy.origin) > 1000)
+                               self.bot_aim_whichfiretype = 0;
+                       if(self.bot_aim_whichfiretype == 0)
+                       {
+                               float shoot;
 
-                       if(autocvar_g_balance_arc_primary_speed)
-                               shoot = bot_aim(autocvar_g_balance_arc_primary_speed, 0, autocvar_g_balance_arc_primary_lifetime, FALSE);
-                       else
-                               shoot = bot_aim(1000000, 0, 0.001, FALSE);
+                               if(autocvar_g_balance_arc_primary_speed)
+                                       shoot = bot_aim(autocvar_g_balance_arc_primary_speed, 0, autocvar_g_balance_arc_primary_lifetime, FALSE);
+                               else
+                                       shoot = bot_aim(1000000, 0, 0.001, FALSE);
 
-                       if(shoot)
+                               if(shoot)
+                               {
+                                       self.BUTTON_ATCK = TRUE;
+                                       if(random() < 0.01) self.bot_aim_whichfiretype = 1;
+                               }
+                       }
+                       else // todo
                        {
-                               self.BUTTON_ATCK = TRUE;
-                               if(random() < 0.01) self.bot_aim_whichfiretype = 1;
+                               //if(bot_aim(autocvar_g_balance_arc_secondary_speed, autocvar_g_balance_grenadelauncher_secondary_speed_up, autocvar_g_balance_arc_secondary_lifetime, TRUE))
+                               //{
+                               //      self.BUTTON_ATCK2 = TRUE;
+                               //      if(random() < 0.03) self.bot_aim_whichfiretype = 0;
+                               //}
                        }
+                       */
+                       
+                       return TRUE;
                }
-               else // todo
-               {
-                       //if(bot_aim(autocvar_g_balance_arc_secondary_speed, autocvar_g_balance_grenadelauncher_secondary_speed_up, autocvar_g_balance_arc_secondary_lifetime, TRUE))
-                       //{
-                       //      self.BUTTON_ATCK2 = TRUE;
-                       //      if(random() < 0.03) self.bot_aim_whichfiretype = 0;
-                       //}
-               }
-               */
-       }
-       else if (req == WR_THINK)
-       {
-               if (self.BUTTON_ATCK)
+               case WR_THINK:
                {
-                       if(self.BUTTON_ATCK_prev) // TODO: Find another way to implement this!
-                               /*if(self.animstate_startframe == self.anim_shoot_x && self.animstate_numframes == self.anim_shoot_y)
-                                       weapon_thinkf(WFRAME_DONTCHANGE, autocvar_g_balance_arc_primary_animtime, w_ready);
-                               else*/
-                                       weapon_thinkf(WFRAME_FIRE1, WEP_CVAR_PRI(arc, animtime), w_ready);
-                       
-                       if (weapon_prepareattack(0, 0))
+                       if (self.BUTTON_ATCK)
                        {
-                               if ((!self.arc_beam) || wasfreed(self.arc_beam))
-                                       W_Arc_Attack1();
+                               if(self.BUTTON_ATCK_prev) // TODO: Find another way to implement this!
+                                       /*if(self.animstate_startframe == self.anim_shoot_x && self.animstate_numframes == self.anim_shoot_y)
+                                               weapon_thinkf(WFRAME_DONTCHANGE, autocvar_g_balance_arc_primary_animtime, w_ready);
+                                       else*/
+                                               weapon_thinkf(WFRAME_FIRE1, WEP_CVAR_PRI(arc, animtime), w_ready);
                                
-                               if(!self.BUTTON_ATCK_prev)
+                               if (weapon_prepareattack(0, 0))
+                               {
+                                       if ((!self.arc_beam) || wasfreed(self.arc_beam))
+                                               W_Arc_Attack1();
+                                       
+                                       if(!self.BUTTON_ATCK_prev)
+                                       {
+                                               weapon_thinkf(WFRAME_FIRE1, WEP_CVAR_PRI(arc, animtime), w_ready);
+                                               self.BUTTON_ATCK_prev = 1;
+                                       }
+                               }
+                       } 
+                       else // todo
+                       {
+                               if (self.BUTTON_ATCK_prev != 0)
                                {
                                        weapon_thinkf(WFRAME_FIRE1, WEP_CVAR_PRI(arc, animtime), w_ready);
-                                       self.BUTTON_ATCK_prev = 1;
+                                       ATTACK_FINISHED(self) = time + WEP_CVAR_PRI(arc, refire) * W_WeaponRateFactor();
                                }
+                               self.BUTTON_ATCK_prev = 0;
                        }
-               } 
-               else // todo
+
+                       //if (self.BUTTON_ATCK2)
+                               //if (weapon_prepareattack(1, autocvar_g_balance_arc_secondary_refire))
+                               //{
+                               //      W_Arc_Attack2();
+                               //      self.arc_count = autocvar_g_balance_arc_secondary_count;
+                               //      weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_arc_secondary_animtime, w_arc_checkattack);
+                               //      self.arc_secondarytime = time + autocvar_g_balance_arc_secondary_refire2 * W_WeaponRateFactor();
+                               //}
+                               
+                       return TRUE;
+               }
+               case WR_PRECACHE:
                {
-                       if (self.BUTTON_ATCK_prev != 0)
-                       {
-                               weapon_thinkf(WFRAME_FIRE1, WEP_CVAR_PRI(arc, animtime), w_ready);
-                               ATTACK_FINISHED(self) = time + WEP_CVAR_PRI(arc, refire) * W_WeaponRateFactor();
-                       }
-                       self.BUTTON_ATCK_prev = 0;
+                       precache_model ("models/weapons/g_arc.md3");
+                       precache_model ("models/weapons/v_arc.md3");
+                       precache_model ("models/weapons/h_arc.iqm");
+                       //precache_sound ("weapons/arc_bounce.wav");
+                       precache_sound ("weapons/arc_fire.wav");
+                       precache_sound ("weapons/arc_fire2.wav");
+                       precache_sound ("weapons/arc_impact.wav");
+                       //precache_sound ("weapons/arc_impact_combo.wav");
+                       //precache_sound ("weapons/W_Arc_Beam_fire.wav");
+                       return TRUE;
                }
-
-               //if (self.BUTTON_ATCK2)
-                       //if (weapon_prepareattack(1, autocvar_g_balance_arc_secondary_refire))
-                       //{
-                       //      W_Arc_Attack2();
-                       //      self.arc_count = autocvar_g_balance_arc_secondary_count;
-                       //      weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_arc_secondary_animtime, w_arc_checkattack);
-                       //      self.arc_secondarytime = time + autocvar_g_balance_arc_secondary_refire2 * W_WeaponRateFactor();
-                       //}
-       }
-       else if (req == WR_PRECACHE)
-       {
-               precache_model ("models/weapons/g_arc.md3");
-               precache_model ("models/weapons/v_arc.md3");
-               precache_model ("models/weapons/h_arc.iqm");
-               //precache_sound ("weapons/arc_bounce.wav");
-               precache_sound ("weapons/arc_fire.wav");
-               precache_sound ("weapons/arc_fire2.wav");
-               precache_sound ("weapons/arc_impact.wav");
-               //precache_sound ("weapons/arc_impact_combo.wav");
-               //precache_sound ("weapons/W_Arc_Beam_fire.wav");
-       }
-       else if (req == WR_SETUP)
-               weapon_setup(WEP_ARC);
-       else if (req == WR_CHECKAMMO1)
-       {
-               return !WEP_CVAR_PRI(arc, ammo) || (self.ammo_cells > 0);
-       }
-       else if (req == WR_CHECKAMMO2)
-               return self.ammo_cells >= WEP_CVAR_SEC(arc, ammo);
-       else if (req == WR_KILLMESSAGE)
-       {
-               if(w_deathtype & HITTYPE_SECONDARY)
+               case WR_SETUP:
+               {
+                       weapon_setup(WEP_ARC);
+                       return TRUE;
+               }
+               case WR_CHECKAMMO1:
                {
-                       return WEAPON_ELECTRO_MURDER_ORBS;
+                       return !WEP_CVAR_PRI(arc, ammo) || (self.ammo_cells > 0);
                }
-               else
+               case WR_CHECKAMMO2:
                {
-                       if(w_deathtype & HITTYPE_BOUNCE)
-                               return WEAPON_ELECTRO_MURDER_COMBO;
+                       return self.ammo_cells >= WEP_CVAR_SEC(arc, ammo);
+               }
+               case WR_KILLMESSAGE:
+               {
+                       if(w_deathtype & HITTYPE_SECONDARY)
+                       {
+                               return WEAPON_ELECTRO_MURDER_ORBS;
+                       }
                        else
-                               return WEAPON_ELECTRO_MURDER_BOLT;
+                       {
+                               if(w_deathtype & HITTYPE_BOUNCE)
+                                       return WEAPON_ELECTRO_MURDER_COMBO;
+                               else
+                                       return WEAPON_ELECTRO_MURDER_BOLT;
+                       }
+               }
+               case WR_RESETPLAYER:
+               {
+                       //self.arc_secondarytime = time;
+                       return TRUE;
                }
-       }
-       else if (req == WR_RESETPLAYER)
-       {
-               //self.arc_secondarytime = time;
        }
        return TRUE;
-};
+}
 
 void ArcInit()
 {
@@ -284,38 +299,39 @@ void ArcInit()
        #undef WEP_ADD_CVAR
        #undef WEP_ADD_PROP
 }
-
-void spawnfunc_weapon_arc (void) // should this really be here?
-{
-       weapon_defaultspawnfunc(WEP_ARC);
-}
 #endif
 #ifdef CSQC
 float w_arc(float req)
 {
-       if(req == WR_IMPACTEFFECT)
+       switch(req)
        {
-               vector org2;
-               org2 = w_org + w_backoff * 6;
-               
-               if(w_deathtype & HITTYPE_SECONDARY)
+               case WR_IMPACTEFFECT:
                {
-                       pointparticles(particleeffectnum("arc_ballexplode"), org2, '0 0 0', 1);
-                       if(!w_issilent)
-                               sound(self, CH_SHOTS, "weapons/arc_impact.wav", VOL_BASE, ATTN_NORM);
+                       vector org2;
+                       org2 = w_org + w_backoff * 6;
+                       
+                       if(w_deathtype & HITTYPE_SECONDARY)
+                       {
+                               pointparticles(particleeffectnum("arc_ballexplode"), org2, '0 0 0', 1);
+                               if(!w_issilent)
+                                       sound(self, CH_SHOTS, "weapons/arc_impact.wav", VOL_BASE, ATTN_NORM);
+                       }
+                       else
+                       {
+                               pointparticles(particleeffectnum("arc_impact"), org2, '0 0 0', 1);
+                               if(!w_issilent)
+                                       sound(self, CH_SHOTS, "weapons/arc_impact.wav", VOL_BASE, ATTN_NORM);
+                       }
+                       
+                       return TRUE;
                }
-               else
+               case WR_PRECACHE:
                {
-                       pointparticles(particleeffectnum("arc_impact"), org2, '0 0 0', 1);
-                       if(!w_issilent)
-                               sound(self, CH_SHOTS, "weapons/arc_impact.wav", VOL_BASE, ATTN_NORM);
+                       precache_sound("weapons/arc_impact.wav");
+                       precache_sound("weapons/arc_impact_combo.wav");
+                       return TRUE;
                }
        }
-       else if(req == WR_PRECACHE)
-       {
-               precache_sound("weapons/arc_impact.wav");
-               precache_sound("weapons/arc_impact_combo.wav");
-       }
        return TRUE;
 }
 #endif