]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/weapons/weaponsystem.qc
Merge branch 'terencehill/obsolete_cvars_removal' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / weapons / weaponsystem.qc
index 17781e6d4c955e475af42d57bc8585ff8b496740..076a172c8da323eb8e46e16bfddfbdddbfc87443 100644 (file)
@@ -50,7 +50,7 @@ float W_WeaponSpeedFactor()
 void(float fr, float t, void() func) weapon_thinkf;
 
 float CL_Weaponentity_CustomizeEntityForClient()
-{
+{SELFPARAM();
        self.viewmodelforclient = self.owner;
        if(IS_SPEC(other))
                if(other.enemy == self.owner)
@@ -110,19 +110,19 @@ float CL_Weaponentity_CustomizeEntityForClient()
 //   call again with ""
 //   remove the ent
 void CL_WeaponEntity_SetModel(string name)
-{
+{SELFPARAM();
        float v_shot_idx;
        if (name != "")
        {
                // if there is a child entity, hide it until we're sure we use it
                if (self.weaponentity)
                        self.weaponentity.model = "";
-               setmodel(self, W_Model(strcat("v_", name, ".md3")));
+               _setmodel(self, W_Model(strcat("v_", name, ".md3")));
                v_shot_idx = gettagindex(self, "shot"); // used later
                if(!v_shot_idx)
                        v_shot_idx = gettagindex(self, "tag_shot");
 
-               setmodel(self, W_Model(strcat("h_", name, ".iqm")));
+               _setmodel(self, W_Model(strcat("h_", name, ".iqm")));
                // preset some defaults that work great for renamed zym files (which don't need an animinfo)
                self.anim_fire1  = animfixfps(self, '0 1 0.01', '0 0 0');
                self.anim_fire2  = animfixfps(self, '1 1 0.01', '0 0 0');
@@ -135,14 +135,14 @@ void CL_WeaponEntity_SetModel(string name)
                {
                        if (!self.weaponentity)
                                self.weaponentity = spawn();
-                       setmodel(self.weaponentity, W_Model(strcat("v_", name, ".md3")));
+                       _setmodel(self.weaponentity, W_Model(strcat("v_", name, ".md3")));
                        setattachment(self.weaponentity, self, "weapon");
                }
                else if(gettagindex(self, "tag_weapon"))
                {
                        if (!self.weaponentity)
                                self.weaponentity = spawn();
-                       setmodel(self.weaponentity, W_Model(strcat("v_", name, ".md3")));
+                       _setmodel(self.weaponentity, W_Model(strcat("v_", name, ".md3")));
                        setattachment(self.weaponentity, self, "tag_weapon");
                }
                else
@@ -172,7 +172,7 @@ void CL_WeaponEntity_SetModel(string name)
                                self.movedir = gettaginfo(self, idx);
                        else
                        {
-                               print("WARNING: weapon model ", self.model, " does not support the 'shot' tag, will display shots TOTALLY wrong\n");
+                               LOG_INFO("WARNING: weapon model ", self.model, " does not support the 'shot' tag, will display shots TOTALLY wrong\n");
                                self.movedir = '0 0 0';
                        }
                }
@@ -196,7 +196,7 @@ void CL_WeaponEntity_SetModel(string name)
                                self.spawnorigin = gettaginfo(self, idx);
                        else
                        {
-                               print("WARNING: weapon model ", self.model, " does not support the 'shell' tag, will display casings wrong\n");
+                               LOG_INFO("WARNING: weapon model ", self.model, " does not support the 'shell' tag, will display casings wrong\n");
                                self.spawnorigin = self.movedir;
                        }
                }
@@ -225,7 +225,7 @@ void CL_WeaponEntity_SetModel(string name)
                        }
                        else
                        {
-                               print("WARNING: weapon model ", self.model, " does not support the 'handle' tag and neither does the v_ model support the 'shot' tag, will display muzzle flashes TOTALLY wrong\n");
+                               LOG_INFO("WARNING: weapon model ", self.model, " does not support the 'handle' tag and neither does the v_ model support the 'shot' tag, will display muzzle flashes TOTALLY wrong\n");
                                self.oldorigin = '0 0 0'; // there is no way to recover from this
                        }
                }
@@ -269,22 +269,19 @@ void CL_WeaponEntity_SetModel(string name)
 }
 
 vector CL_Weapon_GetShotOrg(float wpn)
-{
-       entity wi, oldself;
-       vector ret;
-       wi = get_weaponinfo(wpn);
-       oldself = self;
-       self = spawn();
+{SELFPARAM();
+       entity wi = get_weaponinfo(wpn);
+       setself(spawn());
        CL_WeaponEntity_SetModel(wi.mdl);
-       ret = self.movedir;
+       vector ret = self.movedir;
        CL_WeaponEntity_SetModel("");
        remove(self);
-       self = oldself;
+       setself(this);
        return ret;
 }
 
 void CL_Weaponentity_Think()
-{
+{SELFPARAM();
        int tb;
        self.nextthink = time;
        if (intermission_running)
@@ -360,7 +357,7 @@ void CL_Weaponentity_Think()
 }
 
 void CL_ExteriorWeaponentity_Think()
-{
+{SELFPARAM();
        float tag_found;
        self.nextthink = time;
        if (self.owner.exteriorweaponentity != self)
@@ -379,7 +376,7 @@ void CL_ExteriorWeaponentity_Think()
                self.dmg = self.owner.modelindex;
                self.deadflag = self.owner.deadflag;
                if (self.owner.weaponname != "")
-                       setmodel(self, W_Model(strcat("v_", self.owner.weaponname, ".md3")));
+                       _setmodel(self, W_Model(strcat("v_", self.owner.weaponname, ".md3")));
                else
                        self.model = "";
 
@@ -404,46 +401,41 @@ void CL_ExteriorWeaponentity_Think()
        self.glowmod = self.owner.weaponentity_glowmod;
        self.colormap = self.owner.colormap;
 
-       CSQCMODEL_AUTOUPDATE();
+       CSQCMODEL_AUTOUPDATE(self);
 }
 
 // spawning weaponentity for client
-void CL_SpawnWeaponentity()
+void CL_SpawnWeaponentity(entity e)
 {
-       self.weaponentity = spawn();
-       self.weaponentity.classname = "weaponentity";
-       self.weaponentity.solid = SOLID_NOT;
-       self.weaponentity.owner = self;
-       setmodel(self.weaponentity, ""); // precision set when changed
-       setorigin(self.weaponentity, '0 0 0');
-       self.weaponentity.angles = '0 0 0';
-       self.weaponentity.viewmodelforclient = self;
-       self.weaponentity.flags = 0;
-       self.weaponentity.think = CL_Weaponentity_Think;
-       self.weaponentity.customizeentityforclient = CL_Weaponentity_CustomizeEntityForClient;
-       self.weaponentity.nextthink = time;
-
-       self.exteriorweaponentity = spawn();
-       self.exteriorweaponentity.classname = "exteriorweaponentity";
-       self.exteriorweaponentity.solid = SOLID_NOT;
-       self.exteriorweaponentity.exteriorweaponentity = self.exteriorweaponentity;
-       self.exteriorweaponentity.owner = self;
-       setorigin(self.exteriorweaponentity, '0 0 0');
-       self.exteriorweaponentity.angles = '0 0 0';
-       self.exteriorweaponentity.think = CL_ExteriorWeaponentity_Think;
-       self.exteriorweaponentity.nextthink = time;
-
-       {
-               entity oldself = self;
-               self = self.exteriorweaponentity;
-               CSQCMODEL_AUTOINIT();
-               self = oldself;
-       }
+       entity view = e.weaponentity = spawn();
+       view.classname = "weaponentity";
+       view.solid = SOLID_NOT;
+       view.owner = e;
+       setmodel(view, MDL_Null); // precision set when changed
+       setorigin(view, '0 0 0');
+       view.angles = '0 0 0';
+       view.viewmodelforclient = e;
+       view.flags = 0;
+       view.think = CL_Weaponentity_Think;
+       view.customizeentityforclient = CL_Weaponentity_CustomizeEntityForClient;
+       view.nextthink = time;
+
+       entity exterior = e.exteriorweaponentity = spawn();
+       exterior.classname = "exteriorweaponentity";
+       exterior.solid = SOLID_NOT;
+       exterior.exteriorweaponentity = exterior;
+       exterior.owner = e;
+       setorigin(exterior, '0 0 0');
+       exterior.angles = '0 0 0';
+       exterior.think = CL_ExteriorWeaponentity_Think;
+       exterior.nextthink = time;
+
+       CSQCMODEL_AUTOINIT(exterior);
 }
 
 // Weapon subs
 void w_clear()
-{
+{SELFPARAM();
        if (self.weapon != -1)
        {
                self.weapon = 0;
@@ -457,7 +449,7 @@ void w_clear()
 }
 
 void w_ready()
-{
+{SELFPARAM();
        if (self.weaponentity)
                self.weaponentity.state = WS_READY;
        weapon_thinkf(WFRAME_IDLE, 1000000, w_ready);
@@ -466,7 +458,7 @@ void w_ready()
 .float prevdryfire;
 .float prevwarntime;
 float weapon_prepareattack_checkammo(float secondary)
-{
+{SELFPARAM();
        if (!(self.items & IT_UNLIMITED_WEAPON_AMMO))
        if (!WEP_ACTION(self.weapon, WR_CHECKAMMO1 + secondary))
        {
@@ -513,7 +505,7 @@ float weapon_prepareattack_checkammo(float secondary)
 }
 .float race_penalty;
 float weapon_prepareattack_check(float secondary, float attacktime)
-{
+{SELFPARAM();
        if(!weapon_prepareattack_checkammo(secondary))
                return false;
 
@@ -543,7 +535,7 @@ float weapon_prepareattack_check(float secondary, float attacktime)
        return true;
 }
 float weapon_prepareattack_do(float secondary, float attacktime)
-{
+{SELFPARAM();
        self.weaponentity.state = WS_INUSE;
 
        self.spawnshieldtime = min(self.spawnshieldtime, time); // kill spawn shield when you fire
@@ -574,7 +566,7 @@ float weapon_prepareattack(float secondary, float attacktime)
 }
 
 void weapon_thinkf(float fr, float t, void() func)
-{
+{SELFPARAM();
        vector a;
        vector of, or, ou;
        float restartanim;
@@ -665,7 +657,7 @@ float forbidWeaponUse(entity player)
 }
 
 void W_WeaponFrame()
-{
+{SELFPARAM();
        vector fo, ri, up;
 
        if (frametime)
@@ -796,7 +788,7 @@ void W_WeaponFrame()
 }
 
 void W_AttachToShotorg(entity flash, vector offset)
-{
+{SELFPARAM();
        entity xflash;
        flash.owner = self;
        flash.angles_z = random() * 360;
@@ -828,7 +820,7 @@ void W_AttachToShotorg(entity flash, vector offset)
 }
 
 void W_DecreaseAmmo(float ammo_use)
-{
+{SELFPARAM();
        entity wep = get_weaponinfo(self.weapon);
 
        if(cvar("g_overkill"))
@@ -872,7 +864,7 @@ void W_DecreaseAmmo(float ammo_use)
 .string reload_sound;
 
 void W_ReloadedAndReady()
-{
+{SELFPARAM();
        // finish the reloading process, and do the ammo transfer
 
        self.clip_load = self.old_clip_load; // restore the ammo counter, in case we still had ammo in the weapon before reloading
@@ -899,7 +891,7 @@ void W_ReloadedAndReady()
 }
 
 void W_Reload(float sent_ammo_min, string sent_sound)
-{
+{SELFPARAM();
        // set global values to work with
        entity e;
        e = get_weaponinfo(self.weapon);
@@ -916,7 +908,7 @@ void W_Reload(float sent_ammo_min, string sent_sound)
        // don't reload weapons that don't have the RELOADABLE flag
        if (!(e.spawnflags & WEP_FLAG_RELOADABLE))
        {
-               dprint("Warning: Attempted to reload a weapon that does not have the WEP_FLAG_RELOADABLE flag. Fix your code!\n");
+               LOG_TRACE("Warning: Attempted to reload a weapon that does not have the WEP_FLAG_RELOADABLE flag. Fix your code!\n");
                return;
        }
 
@@ -976,10 +968,9 @@ void W_Reload(float sent_ammo_min, string sent_sound)
 }
 
 void W_DropEvent(float event, entity player, float weapon_type, entity weapon_item)
-{
-       entity oldself = self;
-       self = player;
+{SELFPARAM();
+       setself(player);
        weapon_dropevent_item = weapon_item;
        WEP_ACTION(weapon_type, event);
-       self = oldself;
+       setself(this);
 }