X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fweapons%2Fprojectile.qc;h=ba8846277e38e16a84021596bab74c6308609edd;hb=ba0988ca930f50286f8cf3b6c114ebc6584964af;hp=fc769408bdf584d785a0fa0f5dd1cdb0d71ed45e;hpb=71e6c75bc408ae5a116f296797c49c0cef7be113;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/weapons/projectile.qc b/qcsrc/client/weapons/projectile.qc index fc769408b..ba8846277 100644 --- a/qcsrc/client/weapons/projectile.qc +++ b/qcsrc/client/weapons/projectile.qc @@ -1,3 +1,22 @@ +#if defined(CSQC) + #include "../../dpdefs/csprogsdefs.qc" + #include "../Defs.qc" + #include "../../common/constants.qh" + #include "../../warpzonelib/anglestransform.qh" + #include "../../common/util.qh" + #include "../../common/nades.qh" + #include "../../common/buffs.qh" + #include "../autocvars.qh" + #include "../../csqcmodellib/interpolate.qh" + #include "../movetypes.qh" + #include "../main.qh" + #include "../../csqcmodellib/cl_model.qh" + #include "projectile.qh" + #include "../../server/t_items.qh" +#elif defined(MENUQC) +#elif defined(SVQC) +#endif + .vector iorigin1, iorigin2; .float spawntime; .vector trail_oldorigin; @@ -11,11 +30,11 @@ void SUB_Stop() } .float alphamod; -.float count; // set if clientside projectile -.float cnt; // sound index +.int count; // set if clientside projectile +.int cnt; // sound index .float gravity; -.float snd_looping; -.float silent; +.int snd_looping; +.bool silent; void Projectile_ResetTrail(vector to) { @@ -36,7 +55,7 @@ void Projectile_DrawTrail(vector to) // force the effect even for stationary firemine if(self.cnt == PROJECTILE_FIREMINE) if(from == to) - from_z += 1; + from.z += 1; if (self.traileffect) { @@ -49,8 +68,8 @@ void Projectile_Draw() { vector rot; vector trailorigin; - float f; - float drawn; + int f; + bool drawn; float t; float a; @@ -116,7 +135,7 @@ void Projectile_Draw() vector ang; ang = self.angles; - ang_x = -ang_x; + ang_x = -ang.x; makevectors(ang); a = 1 - (time - self.fade_time) * self.fade_rate; @@ -159,7 +178,7 @@ void Projectile_Draw() self.drawmask = MASK_NORMAL; } -void loopsound(entity e, float ch, string samp, float vol, float attn) +void loopsound(entity e, int ch, string samp, float vol, float attn) { if(self.silent) return; @@ -179,7 +198,7 @@ void Ent_RemoveProjectile() void Ent_Projectile() { - float f; + int f; // projectile properties: // kind (interpolated, or clientside) @@ -309,6 +328,8 @@ void Ent_Projectile() case PROJECTILE_BUMBLE_GUN: setmodel(self, "models/elaser.mdl");self.traileffect = particleeffectnum("TR_NEXUIZPLASMA"); break; case PROJECTILE_BUMBLE_BEAM: setmodel(self, "models/elaser.mdl");self.traileffect = particleeffectnum("TR_NEXUIZPLASMA"); break; + case PROJECTILE_RPC: setmodel(self, "models/weapons/ok_rocket.md3");self.traileffect = particleeffectnum("TR_ROCKET"); break; + default: if(Nade_IDFromProjectile(self.cnt) != 0) { setmodel(self, "models/weapons/v_ok_grenade.md3");self.traileffect = particleeffectnum(Nade_TrailEffect(self.cnt, self.team)); break; } error("Received invalid CSQC projectile, can't work with this!"); @@ -334,6 +355,7 @@ void Ent_Projectile() self.move_bounce_factor = g_balance_electro_secondary_bouncefactor; self.move_bounce_stopspeed = g_balance_electro_secondary_bouncestop; break; + case PROJECTILE_RPC: case PROJECTILE_ROCKET: loopsound(self, CH_SHOTS_SINGLE, "weapons/rocket_fly.wav", VOL_BASE, ATTEN_NORM); self.mins = '-3 -3 -3'; @@ -441,17 +463,19 @@ void Ent_Projectile() if(Nade_IDFromProjectile(self.cnt) != 0) { + int nade_type = Nade_IDFromProjectile(self.cnt); self.mins = '-16 -16 -16'; self.maxs = '16 16 16'; - self.colormod = Nade_Color(Nade_IDFromProjectile(self.cnt)); - self.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP | DPCONTENTS_BOTCLIP; + self.colormod = Nade_Color(nade_type); self.move_movetype = MOVETYPE_BOUNCE; self.move_touch = func_null; self.scale = 1.5; self.avelocity = randomvec() * 720; - - if(Nade_IDFromProjectile(self.cnt) == NADE_TYPE_TRANSLOCATE) - self.solid = SOLID_TRIGGER; + + if(nade_type == NADE_TYPE_TRANSLOCATE || nade_type == NADE_TYPE_SPAWN) + self.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_PLAYERCLIP | DPCONTENTS_BOTCLIP; + else + self.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY; } setsize(self, self.mins, self.maxs); @@ -495,6 +519,7 @@ void Projectile_Precache() precache_model("models/sphere/sphere.md3"); precache_model("models/weapons/v_ok_grenade.md3"); + precache_model("models/weapons/ok_rocket.md3"); precache_sound("weapons/electro_fly.wav"); precache_sound("weapons/rocket_fly.wav");