X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fweapon%2Fmortar.qc;h=0fc5dd9bd266dd58ad9d419e86f136a7bca03a7f;hp=61ca5132625bbd3f6685f413a7e1d3ed39f4e3fc;hb=1add7fc6b9e512dcfcfd3180505046449ac782cd;hpb=77d6a05629e33da863fccb3cdd03b3c63af890dd diff --git a/qcsrc/common/weapons/weapon/mortar.qc b/qcsrc/common/weapons/weapon/mortar.qc index 61ca51326..0fc5dd9bd 100644 --- a/qcsrc/common/weapons/weapon/mortar.qc +++ b/qcsrc/common/weapons/weapon/mortar.qc @@ -84,6 +84,11 @@ void W_Mortar_Grenade_Explode() remove(self); } +void W_Mortar_Grenade_Explode_use(entity this, entity actor, entity trigger) +{ + WITHSELF(this, W_Mortar_Grenade_Explode()); +} + void W_Mortar_Grenade_Explode2() {SELFPARAM(); if(other.takedamage == DAMAGE_AIM) @@ -104,6 +109,10 @@ void W_Mortar_Grenade_Explode2() remove(self); } +void W_Mortar_Grenade_Explode2_use(entity this, entity actor, entity trigger) +{ + WITHSELF(this, W_Mortar_Grenade_Explode2()); +} void W_Mortar_Grenade_Damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force) { @@ -116,7 +125,7 @@ void W_Mortar_Grenade_Damage(entity this, entity inflictor, entity attacker, flo this.health = this.health - damage; if(this.health <= 0) - WITH(entity, self, this, W_PrepareExplosionByDamage(attacker, this.use)); + W_PrepareExplosionByDamage(this, attacker, adaptor_think2use); } void W_Mortar_Grenade_Think1() @@ -138,7 +147,7 @@ void W_Mortar_Grenade_Touch1() PROJECTILE_TOUCH; if(other.takedamage == DAMAGE_AIM || WEP_CVAR_PRI(mortar, type) == 0) // always explode when hitting a player, or if normal mortar projectile { - self.use(); + this.use(this, NULL, NULL); } else if(WEP_CVAR_PRI(mortar, type) == 1) // bounce { @@ -170,7 +179,7 @@ void W_Mortar_Grenade_Touch2() PROJECTILE_TOUCH; if(other.takedamage == DAMAGE_AIM || WEP_CVAR_SEC(mortar, type) == 0) // always explode when hitting a player, or if normal mortar projectile { - self.use(); + this.use(this, NULL, NULL); } else if(WEP_CVAR_SEC(mortar, type) == 1) // bounce { @@ -227,8 +236,8 @@ void W_Mortar_Attack(Weapon thiswep) gren.cnt = time + WEP_CVAR_PRI(mortar, lifetime); gren.nextthink = time; gren.think = W_Mortar_Grenade_Think1; - gren.use = W_Mortar_Grenade_Explode; - gren.touch = W_Mortar_Grenade_Touch1; + gren.use = W_Mortar_Grenade_Explode_use; + settouch(gren, W_Mortar_Grenade_Touch1); gren.takedamage = DAMAGE_YES; gren.health = WEP_CVAR_PRI(mortar, health); @@ -274,8 +283,8 @@ void W_Mortar_Attack2(Weapon thiswep) gren.nextthink = time + WEP_CVAR_SEC(mortar, lifetime); gren.think = adaptor_think2use_hittype_splash; - gren.use = W_Mortar_Grenade_Explode2; - gren.touch = W_Mortar_Grenade_Touch2; + gren.use = W_Mortar_Grenade_Explode2_use; + settouch(gren, W_Mortar_Grenade_Touch2); gren.takedamage = DAMAGE_YES; gren.health = WEP_CVAR_SEC(mortar, health); @@ -372,18 +381,16 @@ METHOD(Mortar, wr_think, void(entity thiswep, entity actor, .entity weaponentity } } } -METHOD(Mortar, wr_checkammo1, bool(entity thiswep)) +METHOD(Mortar, wr_checkammo1, bool(entity thiswep, entity actor)) { - SELFPARAM(); - float ammo_amount = self.(thiswep.ammo_field) >= WEP_CVAR_PRI(mortar, ammo); - ammo_amount += self.(weapon_load[WEP_MORTAR.m_id]) >= WEP_CVAR_PRI(mortar, ammo); + float ammo_amount = actor.(thiswep.ammo_field) >= WEP_CVAR_PRI(mortar, ammo); + ammo_amount += actor.(weapon_load[WEP_MORTAR.m_id]) >= WEP_CVAR_PRI(mortar, ammo); return ammo_amount; } -METHOD(Mortar, wr_checkammo2, bool(entity thiswep)) +METHOD(Mortar, wr_checkammo2, bool(entity thiswep, entity actor)) { - SELFPARAM(); - float ammo_amount = self.(thiswep.ammo_field) >= WEP_CVAR_SEC(mortar, ammo); - ammo_amount += self.(weapon_load[WEP_MORTAR.m_id]) >= WEP_CVAR_SEC(mortar, ammo); + float ammo_amount = actor.(thiswep.ammo_field) >= WEP_CVAR_SEC(mortar, ammo); + ammo_amount += actor.(weapon_load[WEP_MORTAR.m_id]) >= WEP_CVAR_SEC(mortar, ammo); return ammo_amount; } METHOD(Mortar, wr_reload, void(entity thiswep, entity actor, .entity weaponentity))