X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fweapon%2Fdevastator.qc;h=4a622275bc06accad1122bac1e17361f930212c4;hp=5654488ddb065d4e9aeb49b8f95cda1889de2132;hb=90d9f7c775306324957323d53d5a4ad995d999e3;hpb=a3a388a32d0ea11fe79341ef44edc21c5ba460f4 diff --git a/qcsrc/common/weapons/weapon/devastator.qc b/qcsrc/common/weapons/weapon/devastator.qc index 5654488dd..4a622275b 100644 --- a/qcsrc/common/weapons/weapon/devastator.qc +++ b/qcsrc/common/weapons/weapon/devastator.qc @@ -47,7 +47,7 @@ void W_Devastator_Explode(entity this, entity directhitentity) if(this.realowner.(weaponentity).m_weapon == thiswep) { if(GetResource(this.realowner, thiswep.ammo_type) < WEP_CVAR(devastator, ammo)) - if(!(this.realowner.items & IT_UNLIMITED_WEAPON_AMMO)) + if(!(this.realowner.items & IT_UNLIMITED_AMMO)) { this.realowner.cnt = thiswep.m_id; ATTACK_FINISHED(this.realowner, weaponentity) = time; @@ -71,8 +71,11 @@ void W_Devastator_DoRemoteExplode(entity this, .entity weaponentity) bool handled_as_rocketjump = false; entity head = NULL; + bool allow_rocketjump = WEP_CVAR(devastator, remote_jump); + MUTATOR_CALLHOOK(AllowRocketJumping, allow_rocketjump); + allow_rocketjump = M_ARGV(0, bool); - if(WEP_CVAR(devastator, remote_jump_radius)) + if(allow_rocketjump && WEP_CVAR(devastator, remote_jump_radius)) { head = WarpZone_FindRadius( this.origin, @@ -140,7 +143,7 @@ void W_Devastator_DoRemoteExplode(entity this, .entity weaponentity) if(this.realowner.(weaponentity).m_weapon == thiswep) { if(GetResource(this.realowner, thiswep.ammo_type) < WEP_CVAR(devastator, ammo)) - if(!(this.realowner.items & IT_UNLIMITED_WEAPON_AMMO)) + if(!(this.realowner.items & IT_UNLIMITED_AMMO)) { this.realowner.cnt = thiswep.m_id; ATTACK_FINISHED(this.realowner, weaponentity) = time; @@ -305,7 +308,7 @@ void W_Devastator_Attack(Weapon thiswep, entity actor, .entity weaponentity, int W_DecreaseAmmo(thiswep, actor, WEP_CVAR(devastator, ammo), weaponentity); W_SetupShot_ProjectileSize(actor, weaponentity, '-3 -3 -3', '3 3 3', false, 5, SND_ROCKET_FIRE, CH_WEAPON_A, WEP_CVAR(devastator, damage), thiswep.m_id); - Send_Effect(EFFECT_ROCKET_MUZZLEFLASH, w_shotorg, w_shotdir * 1000, 1); + W_MuzzleFlash(actor, weaponentity, EFFECT_ROCKET_MUZZLEFLASH, w_shotorg, w_shotdir * 1000); entity missile = WarpZone_RefSys_SpawnSameRefSys(actor); missile.weaponentity_fld = weaponentity; @@ -314,7 +317,7 @@ void W_Devastator_Attack(Weapon thiswep, entity actor, .entity weaponentity, int if(WEP_CVAR(devastator, detonatedelay) >= 0) missile.spawnshieldtime = time + WEP_CVAR(devastator, detonatedelay); else - missile.spawnshieldtime = -1; + missile.spawnshieldtime = -1; // NOTE: proximity based when rocket jumping missile.pushltime = time + WEP_CVAR(devastator, guidedelay); missile.classname = "rocket"; missile.bot_dodge = true; @@ -349,6 +352,7 @@ void W_Devastator_Attack(Weapon thiswep, entity actor, .entity weaponentity, int CSQCProjectile(missile, WEP_CVAR(devastator, guiderate) == 0 && WEP_CVAR(devastator, speedaccel) == 0, PROJECTILE_ROCKET, false); // because of fly sound // muzzle flash for 1st person view + // TODO: handle on the client side entity flash = spawn(); setmodel(flash, MDL_DEVASTATOR_MUZZLEFLASH); // precision set below SUB_SetFade(flash, time, 0.1); @@ -398,7 +402,7 @@ METHOD(Devastator, wr_aim, void(entity thiswep, entity actor, .entity weaponenti }); float desirabledamage; desirabledamage = enemydamage; - if(time > actor.invincible_finished && time > actor.spawnshieldtime) + if(time > STAT(INVINCIBLE_FINISHED, actor) && time > actor.spawnshieldtime) desirabledamage = desirabledamage - selfdamage * autocvar_g_balance_selfdamagepercent; if(teamplay && actor.team) desirabledamage = desirabledamage - teamdamage;