]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/weapons/w_electro.qc
Merge branch 'Mario/arc_sounds' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / weapons / w_electro.qc
index eb2f5a4aa535a930f138c9990a2ee19ede243a3a..3ec86c782de9d781c9d8945d9c3eef04dcbd1902 100644 (file)
@@ -1,15 +1,18 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(
-/* WEP_##id */ ELECTRO,
-/* function */ W_Electro,
-/* ammotype */ ammo_cells,
-/* impulse  */ 5,
-/* flags    */ WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_SPLASH,
-/* rating   */ BOT_PICKUP_RATING_MID,
-/* color       */ '0 0.5 1',
-/* model    */ "electro",
-/* netname  */ "electro",
-/* fullname */ _("Electro")
+/* WEP_##id  */ ELECTRO,
+/* function  */ W_Electro,
+/* ammotype  */ ammo_cells,
+/* impulse   */ 5,
+/* flags     */ WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH,
+/* rating    */ BOT_PICKUP_RATING_MID,
+/* color     */ '0 0.5 1',
+/* modelname */ "electro",
+/* simplemdl */ "foobar",
+/* crosshair */ "gfx/crosshairelectro 0.5",
+/* wepimg    */ "weaponelectro",
+/* refname   */ "electro",
+/* wepname   */ _("Electro")
 );
 
 #define ELECTRO_SETTINGS(w_cvar,w_prop) ELECTRO_SETTINGS_LIST(w_cvar, w_prop, ELECTRO, electro)
@@ -52,7 +55,8 @@ REGISTER_WEAPON(
        w_prop(id, sn, float,  switchdelay_drop, switchdelay_drop) \
        w_prop(id, sn, string, weaponreplace, weaponreplace) \
        w_prop(id, sn, float,  weaponstart, weaponstart) \
-       w_prop(id, sn, float,  weaponstartoverride, weaponstartoverride)
+       w_prop(id, sn, float,  weaponstartoverride, weaponstartoverride) \
+       w_prop(id, sn, float,  weaponthrowable, weaponthrowable)
 
 #ifdef SVQC
 ELECTRO_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP)
@@ -62,7 +66,7 @@ void W_Electro_ExplodeCombo(void);
 #endif
 #else
 #ifdef SVQC
-void spawnfunc_weapon_electro() { weapon_defaultspawnfunc(WEP_ELECTRO); }
+void spawnfunc_weapon_electro(void) { weapon_defaultspawnfunc(WEP_ELECTRO); }
 
 void W_Electro_TriggerCombo(vector org, float rad, entity own)
 {
@@ -186,7 +190,7 @@ void W_Electro_TouchExplode(void)
        W_Electro_Explode();
 }
 
-void W_Electro_Bolt_Think()
+void W_Electro_Bolt_Think(void)
 {
        if(time >= self.ltime)
        {
@@ -244,11 +248,20 @@ void W_Electro_Attack_Bolt(void)
 
        W_DecreaseAmmo(WEP_CVAR_PRI(electro, ammo));
 
-       W_SetupShot_ProjectileSize(self, '0 0 -3', '0 0 -3', FALSE, 2, "weapons/electro_fire.wav", CH_WEAPON_A, WEP_CVAR_PRI(electro, damage));
+       W_SetupShot_ProjectileSize(
+               self,
+               '0 0 -3',
+               '0 0 -3',
+               FALSE,
+               2,
+               "weapons/electro_fire.wav",
+               CH_WEAPON_A,
+               WEP_CVAR_PRI(electro, damage)
+       );
 
        pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
 
-       proj = spawn ();
+       proj = spawn();
        proj.classname = "electro_bolt";
        proj.owner = proj.realowner = self;
        proj.bot_dodge = TRUE;
@@ -262,7 +275,7 @@ void W_Electro_Attack_Bolt(void)
        setorigin(proj, w_shotorg);
 
        proj.movetype = MOVETYPE_FLY;
-       WEP_SETUPPROJVELOCITY_PRI(proj, electro);
+       W_SetupProjVelocity_PRI(proj, electro);
        proj.angles = vectoangles(proj.velocity);
        proj.touch = W_Electro_TouchExplode;
        setsize(proj, '0 0 -3', '0 0 -3');
@@ -333,7 +346,16 @@ void W_Electro_Attack_Orb(void)
 {
        W_DecreaseAmmo(WEP_CVAR_SEC(electro, ammo));
 
-       W_SetupShot_ProjectileSize(self, '0 0 -4', '0 0 -4', FALSE, 2, "weapons/electro_fire2.wav", CH_WEAPON_A, WEP_CVAR_SEC(electro, damage));
+       W_SetupShot_ProjectileSize(
+               self,
+               '0 0 -4',
+               '0 0 -4',
+               FALSE,
+               2,
+               "weapons/electro_fire2.wav",
+               CH_WEAPON_A,
+               WEP_CVAR_SEC(electro, damage)
+       );
 
        w_shotdir = v_forward; // no TrueAim for grenades please
 
@@ -354,7 +376,7 @@ void W_Electro_Attack_Orb(void)
        //proj.glow_size = 50;
        //proj.glow_color = 45;
        proj.movetype = MOVETYPE_BOUNCE;
-       WEP_SETUPPROJVELOCITY_UP_SEC(proj, electro);
+       W_SetupProjVelocity_UP_SEC(proj, electro);
        proj.touch = W_Electro_Orb_Touch;
        setsize(proj, '0 0 -4', '0 0 -4');
        proj.takedamage = DAMAGE_YES;
@@ -381,7 +403,7 @@ void W_Electro_Attack_Orb(void)
        other = proj; MUTATOR_CALLHOOK(EditProjectile);
 }
 
-void W_Electro_CheckAttack()
+void W_Electro_CheckAttack(void)
 {
        if(self.electro_count > 1)
        if(self.BUTTON_ATCK2)
@@ -483,12 +505,12 @@ float W_Electro(float req)
                        precache_sound("weapons/electro_fire2.wav");
                        precache_sound("weapons/electro_impact.wav");
                        precache_sound("weapons/electro_impact_combo.wav");
-                       ELECTRO_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
+                       ELECTRO_SETTINGS(WEP_SKIP_CVAR, WEP_SET_PROP)
                        return TRUE;
                }
                case WR_CHECKAMMO1:
                {
-                       ammo_amount = self.AMMO_VAL(WEP_ELECTRO) >= WEP_CVAR_PRI(electro, ammo);
+                       ammo_amount = self.WEP_AMMO(ELECTRO) >= WEP_CVAR_PRI(electro, ammo);
                        ammo_amount += self.(weapon_load[WEP_ELECTRO]) >= WEP_CVAR_PRI(electro, ammo);
                        return ammo_amount;
                }
@@ -496,12 +518,12 @@ float W_Electro(float req)
                {
                        if(WEP_CVAR(electro, combo_safeammocheck)) // true if you can fire at least one secondary blob AND one primary shot after it, otherwise false.
                        {
-                               ammo_amount = self.AMMO_VAL(WEP_ELECTRO) >= WEP_CVAR_SEC(electro, ammo) + WEP_CVAR_PRI(electro, ammo);
+                               ammo_amount = self.WEP_AMMO(ELECTRO) >= WEP_CVAR_SEC(electro, ammo) + WEP_CVAR_PRI(electro, ammo);
                                ammo_amount += self.(weapon_load[WEP_ELECTRO]) >= WEP_CVAR_SEC(electro, ammo) + WEP_CVAR_PRI(electro, ammo);
                        }
                        else
                        {
-                               ammo_amount = self.AMMO_VAL(WEP_ELECTRO) >= WEP_CVAR_SEC(electro, ammo);
+                               ammo_amount = self.WEP_AMMO(ELECTRO) >= WEP_CVAR_SEC(electro, ammo);
                                ammo_amount += self.(weapon_load[WEP_ELECTRO]) >= WEP_CVAR_SEC(electro, ammo);
                        }
                        return ammo_amount;
@@ -543,7 +565,7 @@ float W_Electro(float req)
                        }
                }
        }
-       return TRUE;
+       return FALSE;
 }
 #endif
 #ifdef CSQC
@@ -586,8 +608,13 @@ float W_Electro(float req)
                        precache_sound("weapons/electro_impact_combo.wav");
                        return TRUE;
                }
+               case WR_ZOOMRETICLE:
+               {
+                       // no weapon specific image for this weapon
+                       return FALSE;
+               }
        }
-       return TRUE;
+       return FALSE;
 }
 #endif
 #endif