X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fweapon%2Fdevastator.qc;h=dbd8f651a0da10b2b3c1922a83a7d72fc2b29d9f;hb=fb4de10baa184b2228b92776b58b2c272120d04b;hp=fc6b8af19ec45912c74708eccd76df73d1a28aef;hpb=020203bfc55c480b73af2611bea0f0198b4fd314;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/weapons/weapon/devastator.qc b/qcsrc/common/weapons/weapon/devastator.qc index fc6b8af19..dbd8f651a 100644 --- a/qcsrc/common/weapons/weapon/devastator.qc +++ b/qcsrc/common/weapons/weapon/devastator.qc @@ -13,7 +13,7 @@ CLASS(Devastator, Weapon) /* crosshair */ ATTRIB(Devastator, w_crosshair_size, float, 0.7); /* wepimg */ ATTRIB(Devastator, model2, string, "weaponrocketlauncher"); /* refname */ ATTRIB(Devastator, netname, string, "devastator"); -/* wepname */ ATTRIB(Devastator, message, string, _("Devastator")); +/* wepname */ ATTRIB(Devastator, m_name, string, _("Devastator")); ENDCLASS(Devastator) REGISTER_WEAPON(DEVASTATOR, NEW(Devastator)); @@ -64,7 +64,7 @@ DEVASTATOR_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP) #endif #ifdef IMPLEMENTATION #ifdef SVQC -spawnfunc(weapon_devastator) { weapon_defaultspawnfunc(WEP_DEVASTATOR.m_id); } +spawnfunc(weapon_devastator) { weapon_defaultspawnfunc(this, WEP_DEVASTATOR); } spawnfunc(weapon_rocketlauncher) { spawnfunc_weapon_devastator(this); } .entity lastrocket; @@ -111,14 +111,15 @@ void W_Devastator_Explode(void) if(!(self.realowner.items & IT_UNLIMITED_WEAPON_AMMO)) { self.realowner.cnt = WEP_DEVASTATOR.m_id; - ATTACK_FINISHED(self.realowner) = time; + int slot = 0; // TODO: unhardcode + ATTACK_FINISHED(self.realowner, slot) = time; self.realowner.switchweapon = w_getbestweapon(self.realowner); } } remove(self); } -void W_Devastator_DoRemoteExplode(void) +void W_Devastator_DoRemoteExplode(int slot) {SELFPARAM(); W_Devastator_Unregister(); @@ -190,14 +191,14 @@ void W_Devastator_DoRemoteExplode(void) if(!(self.realowner.items & IT_UNLIMITED_WEAPON_AMMO)) { self.realowner.cnt = WEP_DEVASTATOR.m_id; - ATTACK_FINISHED(self.realowner) = time; + ATTACK_FINISHED(self.realowner, slot) = time; self.realowner.switchweapon = w_getbestweapon(self.realowner); } } remove(self); } -void W_Devastator_RemoteExplode(void) +void W_Devastator_RemoteExplode(int slot) {SELFPARAM(); if(self.realowner.deadflag == DEAD_NO) if(self.realowner.lastrocket) @@ -207,7 +208,7 @@ void W_Devastator_RemoteExplode(void) : (vlen(NearestPointOnBox(self.realowner, self.origin) - self.origin) > WEP_CVAR(devastator, remote_radius)) // safety device ) { - W_Devastator_DoRemoteExplode(); + W_Devastator_DoRemoteExplode(slot); } } } @@ -304,8 +305,9 @@ void W_Devastator_Think(void) } } + int slot = 0; // TODO: unhardcode if(self.rl_detonate_later) - W_Devastator_RemoteExplode(); + W_Devastator_RemoteExplode(slot); } if(self.csqcprojectile_clientanimate == 0) @@ -520,7 +522,7 @@ void W_Devastator_Attack(Weapon thiswep) } } #endif - METHOD(Devastator, wr_think, void(entity thiswep, entity actor, int fire)) + METHOD(Devastator, wr_think, void(entity thiswep, entity actor, int slot, int fire)) { if(WEP_CVAR(devastator, reload_ammo) && actor.clip_load < WEP_CVAR(devastator, ammo)) { // forced reload Weapon w = get_weaponinfo(actor.weapon); @@ -529,10 +531,10 @@ void W_Devastator_Attack(Weapon thiswep) if(fire & 1) { if(actor.rl_release || WEP_CVAR(devastator, guidestop)) - if(weapon_prepareattack(thiswep, actor, false, WEP_CVAR(devastator, refire))) + if(weapon_prepareattack(thiswep, actor, slot, false, WEP_CVAR(devastator, refire))) { W_Devastator_Attack(thiswep); - weapon_thinkf(actor, WFRAME_FIRE1, WEP_CVAR(devastator, animtime), w_ready); + weapon_thinkf(actor, slot, WFRAME_FIRE1, WEP_CVAR(devastator, animtime), w_ready); actor.rl_release = 0; } } @@ -569,7 +571,7 @@ void W_Devastator_Attack(Weapon thiswep) { #if 0 // don't switch while guiding a missile - if(ATTACK_FINISHED(self) <= time || self.weapon != WEP_DEVASTATOR.m_id) + if(ATTACK_FINISHED(self, slot) <= time || self.weapon != WEP_DEVASTATOR.m_id) { ammo_amount = false; if(WEP_CVAR(devastator, reload_ammo)) @@ -637,7 +639,7 @@ void W_Devastator_Attack(Weapon thiswep) { vector org2; org2 = w_org + w_backoff * 12; - pointparticles(particleeffectnum(EFFECT_ROCKET_EXPLODE), org2, '0 0 0', 1); + pointparticles(EFFECT_ROCKET_EXPLODE, org2, '0 0 0', 1); if(!w_issilent) sound(self, CH_SHOTS, SND_ROCKET_IMPACT, VOL_BASE, ATTN_NORM); }