X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fweapon%2Fhagar.qc;h=c66e4a438344f57ab1f304a5f3bfae0c150e6cd6;hb=9f70bdba9a6fb2c06324be13504341da967f7028;hp=505a656ec8c9866df0b0b8e5e691b7147dc76f14;hpb=6e7fae90a84673482a986aa83a6b618fb23c7eb5;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/weapons/weapon/hagar.qc b/qcsrc/common/weapons/weapon/hagar.qc index 505a656ec..c66e4a438 100644 --- a/qcsrc/common/weapons/weapon/hagar.qc +++ b/qcsrc/common/weapons/weapon/hagar.qc @@ -309,9 +309,9 @@ void W_Hagar_Attack2_Load(Weapon thiswep, .entity weaponentity) bool stopped = loaded || !enough_ammo; - if(self.BUTTON_ATCK2) + if(PHYS_INPUT_BUTTON_ATCK2(self)) { - if(self.BUTTON_ATCK && WEP_CVAR_SEC(hagar, load_abort)) + if(PHYS_INPUT_BUTTON_ATCK(self) && WEP_CVAR_SEC(hagar, load_abort)) { if(self.hagar_load) { @@ -375,7 +375,7 @@ void W_Hagar_Attack2_Load(Weapon thiswep, .entity weaponentity) } // release if player let go of button or if they've held it in too long - if(!self.BUTTON_ATCK2 || (stopped && self.hagar_loadstep < time && WEP_CVAR_SEC(hagar, load_hold) >= 0)) + if(!PHYS_INPUT_BUTTON_ATCK2(self) || (stopped && self.hagar_loadstep < time && WEP_CVAR_SEC(hagar, load_hold) >= 0)) { self.(weaponentity).state = WS_READY; W_Hagar_Attack2_Load_Release(weaponentity); @@ -397,117 +397,117 @@ void W_Hagar_Attack2_Load(Weapon thiswep, .entity weaponentity) } } - METHOD(Hagar, wr_aim, void(entity thiswep)) - { - if(random()>0.15) - self.BUTTON_ATCK = bot_aim(WEP_CVAR_PRI(hagar, speed), 0, WEP_CVAR_PRI(hagar, lifetime), false); - else // not using secondary_speed since these are only 15% and should cause some ricochets without re-aiming - self.BUTTON_ATCK2 = bot_aim(WEP_CVAR_PRI(hagar, speed), 0, WEP_CVAR_PRI(hagar, lifetime), false); - } - METHOD(Hagar, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire)) - { - float loadable_secondary; - loadable_secondary = (WEP_CVAR_SEC(hagar, load) && WEP_CVAR(hagar, secondary)); - - if(loadable_secondary) - W_Hagar_Attack2_Load(thiswep, weaponentity); // must always run each frame - if(autocvar_g_balance_hagar_reload_ammo && actor.clip_load < min(WEP_CVAR_PRI(hagar, ammo), WEP_CVAR_SEC(hagar, ammo))) { // forced reload - thiswep.wr_reload(thiswep, actor, weaponentity); - } else if((fire & 1) && !actor.hagar_load && !actor.hagar_loadblock) // not while secondary is loaded or awaiting reset - { - if(weapon_prepareattack(thiswep, actor, weaponentity, false, WEP_CVAR_PRI(hagar, refire))) - { - W_Hagar_Attack(thiswep); - weapon_thinkf(actor, weaponentity, WFRAME_FIRE1, WEP_CVAR_PRI(hagar, refire), w_ready); - } - } - else if((fire & 2) && !loadable_secondary && WEP_CVAR(hagar, secondary)) - { - if(weapon_prepareattack(thiswep, actor, weaponentity, true, WEP_CVAR_SEC(hagar, refire))) - { - W_Hagar_Attack2(thiswep); - weapon_thinkf(actor, weaponentity, WFRAME_FIRE2, WEP_CVAR_SEC(hagar, refire), w_ready); - } - } - } - METHOD(Hagar, wr_gonethink, void(entity thiswep)) - { - // we lost the weapon and want to prepare switching away - if(self.hagar_load) - { - .entity weaponentity = weaponentities[0]; // TODO: unhardcode - self.(weaponentity).state = WS_READY; - W_Hagar_Attack2_Load_Release(weaponentity); - } - } - METHOD(Hagar, wr_setup, void(entity thiswep)) - { - self.hagar_loadblock = false; +METHOD(Hagar, wr_aim, void(entity thiswep)) +{ + if(random()>0.15) + PHYS_INPUT_BUTTON_ATCK(self) = bot_aim(WEP_CVAR_PRI(hagar, speed), 0, WEP_CVAR_PRI(hagar, lifetime), false); + else // not using secondary_speed since these are only 15% and should cause some ricochets without re-aiming + PHYS_INPUT_BUTTON_ATCK2(self) = bot_aim(WEP_CVAR_PRI(hagar, speed), 0, WEP_CVAR_PRI(hagar, lifetime), false); +} +METHOD(Hagar, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire)) +{ + float loadable_secondary; + loadable_secondary = (WEP_CVAR_SEC(hagar, load) && WEP_CVAR(hagar, secondary)); + + if(loadable_secondary) + W_Hagar_Attack2_Load(thiswep, weaponentity); // must always run each frame + if(autocvar_g_balance_hagar_reload_ammo && actor.clip_load < min(WEP_CVAR_PRI(hagar, ammo), WEP_CVAR_SEC(hagar, ammo))) { // forced reload + thiswep.wr_reload(thiswep, actor, weaponentity); + } else if((fire & 1) && !actor.hagar_load && !actor.hagar_loadblock) // not while secondary is loaded or awaiting reset + { + if(weapon_prepareattack(thiswep, actor, weaponentity, false, WEP_CVAR_PRI(hagar, refire))) + { + W_Hagar_Attack(thiswep); + weapon_thinkf(actor, weaponentity, WFRAME_FIRE1, WEP_CVAR_PRI(hagar, refire), w_ready); + } + } + else if((fire & 2) && !loadable_secondary && WEP_CVAR(hagar, secondary)) + { + if(weapon_prepareattack(thiswep, actor, weaponentity, true, WEP_CVAR_SEC(hagar, refire))) + { + W_Hagar_Attack2(thiswep); + weapon_thinkf(actor, weaponentity, WFRAME_FIRE2, WEP_CVAR_SEC(hagar, refire), w_ready); + } + } +} +METHOD(Hagar, wr_gonethink, void(entity thiswep)) +{ + // we lost the weapon and want to prepare switching away + if(self.hagar_load) + { + .entity weaponentity = weaponentities[0]; // TODO: unhardcode + self.(weaponentity).state = WS_READY; + W_Hagar_Attack2_Load_Release(weaponentity); + } +} +METHOD(Hagar, wr_setup, void(entity thiswep)) +{ + self.hagar_loadblock = false; - if(self.hagar_load) - { - W_DecreaseAmmo(thiswep, self, WEP_CVAR_SEC(hagar, ammo) * self.hagar_load * -1); // give back ammo if necessary - self.hagar_load = 0; - } - } - METHOD(Hagar, wr_checkammo1, bool(entity thiswep)) - { - float ammo_amount = self.(thiswep.ammo_field) >= WEP_CVAR_PRI(hagar, ammo); - ammo_amount += self.(weapon_load[WEP_HAGAR.m_id]) >= WEP_CVAR_PRI(hagar, ammo); - return ammo_amount; - } - METHOD(Hagar, wr_checkammo2, bool(entity thiswep)) - { - float ammo_amount = self.(thiswep.ammo_field) >= WEP_CVAR_SEC(hagar, ammo); - ammo_amount += self.(weapon_load[WEP_HAGAR.m_id]) >= WEP_CVAR_SEC(hagar, ammo); - return ammo_amount; - } - METHOD(Hagar, wr_resetplayer, void(entity thiswep)) - { - self.hagar_load = 0; - } - METHOD(Hagar, wr_playerdeath, void(entity thiswep)) - { - .entity weaponentity = weaponentities[0]; // TODO: unhardcode - // if we have any rockets loaded when we die, release them - if(self.hagar_load && WEP_CVAR_SEC(hagar, load_releasedeath)) - W_Hagar_Attack2_Load_Release(weaponentity); - } - METHOD(Hagar, wr_reload, void(entity thiswep, entity actor, .entity weaponentity)) - { - if(!self.hagar_load) // require releasing loaded rockets first - W_Reload(self, min(WEP_CVAR_PRI(hagar, ammo), WEP_CVAR_SEC(hagar, ammo)), SND(RELOAD)); - } - METHOD(Hagar, wr_suicidemessage, Notification(entity thiswep)) - { - return WEAPON_HAGAR_SUICIDE; - } - METHOD(Hagar, wr_killmessage, Notification(entity thiswep)) - { - if(w_deathtype & HITTYPE_SECONDARY) - return WEAPON_HAGAR_MURDER_BURST; - else - return WEAPON_HAGAR_MURDER_SPRAY; - } + if(self.hagar_load) + { + W_DecreaseAmmo(thiswep, self, WEP_CVAR_SEC(hagar, ammo) * self.hagar_load * -1); // give back ammo if necessary + self.hagar_load = 0; + } +} +METHOD(Hagar, wr_checkammo1, bool(entity thiswep)) +{ + float ammo_amount = self.(thiswep.ammo_field) >= WEP_CVAR_PRI(hagar, ammo); + ammo_amount += self.(weapon_load[WEP_HAGAR.m_id]) >= WEP_CVAR_PRI(hagar, ammo); + return ammo_amount; +} +METHOD(Hagar, wr_checkammo2, bool(entity thiswep)) +{ + float ammo_amount = self.(thiswep.ammo_field) >= WEP_CVAR_SEC(hagar, ammo); + ammo_amount += self.(weapon_load[WEP_HAGAR.m_id]) >= WEP_CVAR_SEC(hagar, ammo); + return ammo_amount; +} +METHOD(Hagar, wr_resetplayer, void(entity thiswep)) +{ + self.hagar_load = 0; +} +METHOD(Hagar, wr_playerdeath, void(entity thiswep)) +{ + .entity weaponentity = weaponentities[0]; // TODO: unhardcode + // if we have any rockets loaded when we die, release them + if(self.hagar_load && WEP_CVAR_SEC(hagar, load_releasedeath)) + W_Hagar_Attack2_Load_Release(weaponentity); +} +METHOD(Hagar, wr_reload, void(entity thiswep, entity actor, .entity weaponentity)) +{ + if(!self.hagar_load) // require releasing loaded rockets first + W_Reload(self, min(WEP_CVAR_PRI(hagar, ammo), WEP_CVAR_SEC(hagar, ammo)), SND(RELOAD)); +} +METHOD(Hagar, wr_suicidemessage, Notification(entity thiswep)) +{ + return WEAPON_HAGAR_SUICIDE; +} +METHOD(Hagar, wr_killmessage, Notification(entity thiswep)) +{ + if(w_deathtype & HITTYPE_SECONDARY) + return WEAPON_HAGAR_MURDER_BURST; + else + return WEAPON_HAGAR_MURDER_SPRAY; +} #endif #ifdef CSQC - METHOD(Hagar, wr_impacteffect, void(entity thiswep)) - { - vector org2; - org2 = w_org + w_backoff * 6; - pointparticles(EFFECT_HAGAR_EXPLODE, org2, '0 0 0', 1); - if(!w_issilent) - { - if(w_random<0.15) - sound(self, CH_SHOTS, SND_HAGEXP1, VOL_BASE, ATTN_NORM); - else if(w_random<0.7) - sound(self, CH_SHOTS, SND_HAGEXP2, VOL_BASE, ATTN_NORM); - else - sound(self, CH_SHOTS, SND_HAGEXP3, VOL_BASE, ATTN_NORM); - } - } +METHOD(Hagar, wr_impacteffect, void(entity thiswep)) +{ + vector org2; + org2 = w_org + w_backoff * 6; + pointparticles(EFFECT_HAGAR_EXPLODE, org2, '0 0 0', 1); + if(!w_issilent) + { + if(w_random<0.15) + sound(self, CH_SHOTS, SND_HAGEXP1, VOL_BASE, ATTN_NORM); + else if(w_random<0.7) + sound(self, CH_SHOTS, SND_HAGEXP2, VOL_BASE, ATTN_NORM); + else + sound(self, CH_SHOTS, SND_HAGEXP3, VOL_BASE, ATTN_NORM); + } +} #endif #endif