X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fweapon%2Fvortex.qc;h=640cd2c402f325769a8cfb86c16f14b4e8a75429;hb=12354d764a576f55a290ba11d9f34ccf4e3930d0;hp=6459ad7a8da2a5b41eaacfdad0ee2737651950fc;hpb=42a9e3d7ece2c716e5cd6899e90841acb7fb891b;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/weapons/weapon/vortex.qc b/qcsrc/common/weapons/weapon/vortex.qc index 6459ad7a8..640cd2c40 100644 --- a/qcsrc/common/weapons/weapon/vortex.qc +++ b/qcsrc/common/weapons/weapon/vortex.qc @@ -128,9 +128,9 @@ NET_HANDLE(TE_CSQC_VORTEXBEAMPARTICLE, bool isNew) if(!MUTATOR_CALLHOOK(Particles_VortexBeam, shotorg, endpos)) if(autocvar_cl_particles_oldvortexbeam && (STAT(ALLOW_OLDVORTEXBEAM) || isdemo())) - WarpZone_TrailParticles_WithMultiplier(world, particleeffectnum(EFFECT_VORTEX_BEAM_OLD), shotorg, endpos, 1, PARTICLES_USEALPHA | PARTICLES_USEFADE); + WarpZone_TrailParticles_WithMultiplier(NULL, particleeffectnum(EFFECT_VORTEX_BEAM_OLD), shotorg, endpos, 1, PARTICLES_USEALPHA | PARTICLES_USEFADE); else - WarpZone_TrailParticles_WithMultiplier(world, particleeffectnum(EFFECT_VORTEX_BEAM), shotorg, endpos, 1, PARTICLES_USEALPHA | PARTICLES_USEFADE); + WarpZone_TrailParticles_WithMultiplier(NULL, particleeffectnum(EFFECT_VORTEX_BEAM), shotorg, endpos, 1, PARTICLES_USEALPHA | PARTICLES_USEFADE); return true; } #endif @@ -142,21 +142,23 @@ spawnfunc(weapon_nex) { spawnfunc_weapon_vortex(this); } REGISTER_MUTATOR(vortex_charge, true); MUTATOR_HOOKFUNCTION(vortex_charge, GetPressedKeys) -{SELFPARAM(); +{ + entity player = M_ARGV(0, entity); + // WEAPONTODO - float xyspeed = vlen(vec2(this.velocity)); - if (PS(this).m_weapon == WEP_VORTEX && WEP_CVAR(vortex, charge) && WEP_CVAR(vortex, charge_velocity_rate) && xyspeed > WEP_CVAR(vortex, charge_minspeed)) + float xyspeed = vlen(vec2(player.velocity)); + if (PS(player).m_weapon == WEP_VORTEX && WEP_CVAR(vortex, charge) && WEP_CVAR(vortex, charge_velocity_rate) && xyspeed > WEP_CVAR(vortex, charge_minspeed)) { // add a maximum of charge_velocity_rate when going fast (f = 1), gradually increasing from minspeed (f = 0) to maxspeed xyspeed = min(xyspeed, WEP_CVAR(vortex, charge_maxspeed)); float f = (xyspeed - WEP_CVAR(vortex, charge_minspeed)) / (WEP_CVAR(vortex, charge_maxspeed) - WEP_CVAR(vortex, charge_minspeed)); // add the extra charge - this.vortex_charge = min(1, this.vortex_charge + WEP_CVAR(vortex, charge_velocity_rate) * f * PHYS_INPUT_TIMELENGTH); + player.vortex_charge = min(1, player.vortex_charge + WEP_CVAR(vortex, charge_velocity_rate) * f * PHYS_INPUT_TIMELENGTH); } } void W_Vortex_Attack(Weapon thiswep, entity actor, float issecondary) -{entity this = actor; +{ float mydmg, myforce, mymindist, mymaxdist, myhalflife, myforcehalflife, myammo, charge; mydmg = WEP_CVAR_BOTH(vortex, !issecondary, damage); @@ -168,12 +170,12 @@ void W_Vortex_Attack(Weapon thiswep, entity actor, float issecondary) myammo = WEP_CVAR_BOTH(vortex, !issecondary, ammo); float flying; - flying = IsFlying(self); // do this BEFORE to make the trace values from FireRailgunBullet last + flying = IsFlying(actor); // do this BEFORE to make the trace values from FireRailgunBullet last if(WEP_CVAR(vortex, charge)) { - charge = WEP_CVAR(vortex, charge_mindmg) / mydmg + (1 - WEP_CVAR(vortex, charge_mindmg) / mydmg) * self.vortex_charge; - self.vortex_charge *= WEP_CVAR(vortex, charge_shot_multiplier); // do this AFTER setting mydmg/myforce + charge = WEP_CVAR(vortex, charge_mindmg) / mydmg + (1 - WEP_CVAR(vortex, charge_mindmg) / mydmg) * actor.vortex_charge; + actor.vortex_charge *= WEP_CVAR(vortex, charge_shot_multiplier); // do this AFTER setting mydmg/myforce // O RLY? -- divVerent // YA RLY -- FruitieX } @@ -182,43 +184,42 @@ void W_Vortex_Attack(Weapon thiswep, entity actor, float issecondary) mydmg *= charge; myforce *= charge; - W_SetupShot(self, true, 5, SND_NEXFIRE, CH_WEAPON_A, mydmg); + W_SetupShot(actor, true, 5, SND_NEXFIRE, CH_WEAPON_A, mydmg); if(charge > WEP_CVAR(vortex, charge_animlimit) && WEP_CVAR(vortex, charge_animlimit)) // if the Vortex is overcharged, we play an extra sound { - sound(self, CH_WEAPON_B, SND_NEXCHARGE, VOL_BASE * (charge - 0.5 * WEP_CVAR(vortex, charge_animlimit)) / (1 - 0.5 * WEP_CVAR(vortex, charge_animlimit)), ATTN_NORM); + sound(actor, CH_WEAPON_B, SND_NEXCHARGE, VOL_BASE * (charge - 0.5 * WEP_CVAR(vortex, charge_animlimit)) / (1 - 0.5 * WEP_CVAR(vortex, charge_animlimit)), ATTN_NORM); } yoda = 0; damage_goodhits = 0; - FireRailgunBullet(self, w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, mydmg, myforce, mymindist, mymaxdist, myhalflife, myforcehalflife, WEP_VORTEX.m_id); + FireRailgunBullet(actor, w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, mydmg, myforce, mymindist, mymaxdist, myhalflife, myforcehalflife, WEP_VORTEX.m_id); if(yoda && flying) - Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_ACHIEVEMENT_YODA); - if(damage_goodhits && self.vortex_lasthit) + Send_Notification(NOTIF_ONE, actor, MSG_ANNCE, ANNCE_ACHIEVEMENT_YODA); + if(damage_goodhits && actor.vortex_lasthit) { - Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_ACHIEVEMENT_IMPRESSIVE); + Send_Notification(NOTIF_ONE, actor, MSG_ANNCE, ANNCE_ACHIEVEMENT_IMPRESSIVE); damage_goodhits = 0; // only every second time } - self.vortex_lasthit = damage_goodhits; + actor.vortex_lasthit = damage_goodhits; //beam and muzzle flash done on client SendCSQCVortexBeamParticle(charge); - W_DecreaseAmmo(thiswep, self, myammo); + W_DecreaseAmmo(thiswep, actor, myammo); } .float vortex_chargepool_pauseregen_finished; METHOD(Vortex, wr_aim, void(entity thiswep, entity actor)) { - entity this = actor; - if(bot_aim(self, 1000000, 0, 1, false)) - PHYS_INPUT_BUTTON_ATCK(self) = true; + if(bot_aim(actor, 1000000, 0, 1, false)) + PHYS_INPUT_BUTTON_ATCK(actor) = true; else { if(WEP_CVAR(vortex, charge)) - PHYS_INPUT_BUTTON_ATCK2(self) = true; + PHYS_INPUT_BUTTON_ATCK2(actor) = true; } } METHOD(Vortex, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire)) @@ -347,14 +348,13 @@ METHOD(Vortex, wr_checkammo2, bool(entity thiswep, entity actor)) } METHOD(Vortex, wr_resetplayer, void(entity thiswep, entity actor)) { - entity this = actor; if (WEP_CVAR(vortex, charge)) { if (WEP_CVAR_SEC(vortex, chargepool)) { - self.vortex_chargepool_ammo = 1; + actor.vortex_chargepool_ammo = 1; } - self.vortex_charge = WEP_CVAR(vortex, charge_start); + actor.vortex_charge = WEP_CVAR(vortex, charge_start); } - self.vortex_lasthit = 0; + actor.vortex_lasthit = 0; } METHOD(Vortex, wr_reload, void(entity thiswep, entity actor, .entity weaponentity)) {