]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/weapons/weaponsystem.qc
Propagate sound references
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / weapons / weaponsystem.qc
index 12dcb45144d5a2a5d40662daefb77f5d2e9eef08..ad3189918f161776ac72eab9127d74feb3facb26 100644 (file)
@@ -52,9 +52,9 @@ vector CL_Weapon_GetShotOrg(int wpn)
 {
        entity wi = Weapons_from(wpn);
        entity e = spawn();
-       CL_WeaponEntity_SetModel(e, wi.mdl);
+       CL_WeaponEntity_SetModel(e, wi.mdl, false);
        vector ret = e.movedir;
-       CL_WeaponEntity_SetModel(e, "");
+       CL_WeaponEntity_SetModel(e, "", false);
        remove(e);
        return ret;
 }
@@ -91,7 +91,7 @@ void CL_Weaponentity_Think()
                this.dmg = this.owner.modelindex;
                this.deadflag = this.owner.deadflag;
 
-               CL_WeaponEntity_SetModel(this, this.owner.weaponname);
+               CL_WeaponEntity_SetModel(this, this.owner.weaponname, true);
        }
 
        this.alpha = -1;  // TODO: don't render this entity at all
@@ -152,7 +152,8 @@ void CL_ExteriorWeaponentity_Think()
        else if (this.owner.alpha != 0) this.alpha = this.owner.alpha;
        else this.alpha = 1;
 
-       this.glowmod = weaponentity_glowmod(PS(this.owner).m_weapon, this.owner.clientcolors);
+    Weapon wep = PS(this.owner).m_weapon;
+       if (wep) this.glowmod = weaponentity_glowmod(wep, this.owner.clientcolors);
        this.colormap = this.owner.colormap;
 
        CSQCMODEL_AUTOUPDATE(this);
@@ -682,8 +683,9 @@ void W_ReloadedAndReady(Weapon thiswep, entity actor, .entity weaponentity, int
        w_ready(wpn, actor, weaponentity, PHYS_INPUT_BUTTON_ATCK(actor) | (PHYS_INPUT_BUTTON_ATCK2(actor) << 1));
 }
 
-void W_Reload(entity actor, float sent_ammo_min, string sent_sound)
+void W_Reload(entity actor, float sent_ammo_min, Sound sent_sound)
 {
+    TC(Sound, sent_sound);
        .entity weaponentity = weaponentities[0];
        // set global values to work with
        Weapon e = PS(actor).m_weapon;
@@ -693,7 +695,8 @@ void W_Reload(entity actor, float sent_ammo_min, string sent_sound)
        actor.reload_ammo_min = sent_ammo_min;
        actor.reload_ammo_amount = e.reloading_ammo;
        actor.reload_time = e.reloading_time;
-       actor.reload_sound = sent_sound;
+       if (actor.reload_sound) strunzone(actor.reload_sound);
+       actor.reload_sound = strzone(Sound_fixpath(sent_sound));
 
        // don't reload weapons that don't have the RELOADABLE flag
        if (!(e.spawnflags & WEP_FLAG_RELOADABLE))