X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fweapon%2Fhlac.qc;h=94c5d3e5ddedc059217947e1c48f6e92c88297e0;hb=c2d50c76c59b481a0b0e29a205f5e0dfc9f95630;hp=252cc96e34988c5c1698f864d4eb2a0a197e98f8;hpb=df665474154273d055a2489359282d4e0e053cd8;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/weapons/weapon/hlac.qc b/qcsrc/common/weapons/weapon/hlac.qc index 252cc96e3..94c5d3e5d 100644 --- a/qcsrc/common/weapons/weapon/hlac.qc +++ b/qcsrc/common/weapons/weapon/hlac.qc @@ -14,39 +14,41 @@ CLASS(HLAC, Weapon) /* wepimg */ ATTRIB(HLAC, model2, string, "weaponhlac"); /* refname */ ATTRIB(HLAC, netname, string, "hlac"); /* wepname */ ATTRIB(HLAC, m_name, string, _("Heavy Laser Assault Cannon")); + +#define X(BEGIN, P, END, class, prefix) \ + BEGIN(class) \ + P(class, prefix, ammo, float, BOTH) \ + P(class, prefix, animtime, float, BOTH) \ + P(class, prefix, damage, float, BOTH) \ + P(class, prefix, edgedamage, float, BOTH) \ + P(class, prefix, force, float, BOTH) \ + P(class, prefix, lifetime, float, BOTH) \ + P(class, prefix, radius, float, BOTH) \ + P(class, prefix, refire, float, BOTH) \ + P(class, prefix, reload_ammo, float, NONE) \ + P(class, prefix, reload_time, float, NONE) \ + P(class, prefix, secondary, float, NONE) \ + P(class, prefix, shots, float, SEC) \ + P(class, prefix, speed, float, BOTH) \ + P(class, prefix, spread, float, SEC) \ + P(class, prefix, spread_add, float, PRI) \ + P(class, prefix, spread_crouchmod, float, BOTH) \ + P(class, prefix, spread_max, float, PRI) \ + P(class, prefix, spread_min, float, PRI) \ + P(class, prefix, switchdelay_drop, float, NONE) \ + P(class, prefix, switchdelay_raise, float, NONE) \ + P(class, prefix, weaponreplace, string,NONE) \ + P(class, prefix, weaponstartoverride, float, NONE) \ + P(class, prefix, weaponstart, float, NONE) \ + P(class, prefix, weaponthrowable, float, NONE) \ + END() + W_PROPS(X, HLAC, hlac) +#undef X + ENDCLASS(HLAC) -REGISTER_WEAPON(HLAC, NEW(HLAC)); - -#define HLAC_SETTINGS(w_cvar,w_prop) HLAC_SETTINGS_LIST(w_cvar, w_prop, HLAC, hlac) -#define HLAC_SETTINGS_LIST(w_cvar,w_prop,id,sn) \ - w_cvar(id, sn, BOTH, ammo) \ - w_cvar(id, sn, BOTH, animtime) \ - w_cvar(id, sn, BOTH, damage) \ - w_cvar(id, sn, BOTH, edgedamage) \ - w_cvar(id, sn, BOTH, force) \ - w_cvar(id, sn, BOTH, lifetime) \ - w_cvar(id, sn, BOTH, radius) \ - w_cvar(id, sn, BOTH, refire) \ - w_cvar(id, sn, BOTH, speed) \ - w_cvar(id, sn, BOTH, spread_crouchmod) \ - w_cvar(id, sn, PRI, spread_add) \ - w_cvar(id, sn, PRI, spread_max) \ - w_cvar(id, sn, PRI, spread_min) \ - w_cvar(id, sn, NONE, secondary) \ - w_cvar(id, sn, SEC, shots) \ - w_cvar(id, sn, SEC, spread) \ - w_prop(id, sn, float, reloading_ammo, reload_ammo) \ - w_prop(id, sn, float, reloading_time, reload_time) \ - w_prop(id, sn, float, switchdelay_raise, switchdelay_raise) \ - w_prop(id, sn, float, switchdelay_drop, switchdelay_drop) \ - w_prop(id, sn, string, weaponreplace, weaponreplace) \ - w_prop(id, sn, float, weaponstart, weaponstart) \ - w_prop(id, sn, float, weaponstartoverride, weaponstartoverride) \ - w_prop(id, sn, float, weaponthrowable, weaponthrowable) +REGISTER_WEAPON(HLAC, hlac, NEW(HLAC)); + -#ifdef SVQC -HLAC_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP) -#endif #endif #ifdef IMPLEMENTATION #ifdef SVQC @@ -161,7 +163,7 @@ void W_HLAC_Attack2() // weapon frames void W_HLAC_Attack_Frame(Weapon thiswep, entity actor, .entity weaponentity, int fire) { - if(actor.weapon != actor.switchweapon) // abort immediately if switching + if(actor.weapon != PS(actor).m_switchweapon.m_id) // abort immediately if switching { w_ready(thiswep, actor, weaponentity, fire); return; @@ -169,8 +171,7 @@ void W_HLAC_Attack_Frame(Weapon thiswep, entity actor, .entity weaponentity, int if(actor.BUTTON_ATCK) { - Weapon w = get_weaponinfo(actor.weapon); - if(!w.wr_checkammo1(w)) + if(!thiswep.wr_checkammo1(thiswep)) if(!(actor.items & IT_UNLIMITED_WEAPON_AMMO)) { W_SwitchWeapon_Force(actor, w_getbestweapon(actor)); @@ -213,8 +214,7 @@ void W_HLAC_Attack2_Frame(Weapon thiswep) METHOD(HLAC, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire)) { if(autocvar_g_balance_hlac_reload_ammo && actor.clip_load < min(WEP_CVAR_PRI(hlac, ammo), WEP_CVAR_SEC(hlac, ammo))) { // forced reload - Weapon w = get_weaponinfo(actor.weapon); - w.wr_reload(w); + thiswep.wr_reload(thiswep); } else if(fire & 1) { if(weapon_prepareattack(thiswep, actor, weaponentity, false, WEP_CVAR_PRI(hlac, refire))) @@ -234,26 +234,18 @@ void W_HLAC_Attack2_Frame(Weapon thiswep) } } } - METHOD(HLAC, wr_init, void(entity thiswep)) - { - HLAC_SETTINGS(WEP_SKIP_CVAR, WEP_SET_PROP); - } METHOD(HLAC, wr_checkammo1, bool(entity thiswep)) { - float ammo_amount = self.WEP_AMMO(HLAC) >= WEP_CVAR_PRI(hlac, ammo); + float ammo_amount = self.(thiswep.ammo_field) >= WEP_CVAR_PRI(hlac, ammo); ammo_amount += self.(weapon_load[WEP_HLAC.m_id]) >= WEP_CVAR_PRI(hlac, ammo); return ammo_amount; } METHOD(HLAC, wr_checkammo2, bool(entity thiswep)) { - float ammo_amount = self.WEP_AMMO(HLAC) >= WEP_CVAR_SEC(hlac, ammo); + float ammo_amount = self.(thiswep.ammo_field) >= WEP_CVAR_SEC(hlac, ammo); ammo_amount += self.(weapon_load[WEP_HLAC.m_id]) >= WEP_CVAR_SEC(hlac, ammo); return ammo_amount; } - METHOD(HLAC, wr_config, void(entity thiswep)) - { - HLAC_SETTINGS(WEP_CONFIG_WRITE_CVARS, WEP_CONFIG_WRITE_PROPS); - } METHOD(HLAC, wr_reload, void(entity thiswep)) { W_Reload(self, min(WEP_CVAR_PRI(hlac, ammo), WEP_CVAR_SEC(hlac, ammo)), SND(RELOAD));