X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fweapon%2Fmortar.qc;h=6a479c20a82e119c3eef0a9e465206bbf1da4b7f;hb=9ad0d0d4d2156d5035cdaf5c61b308dfc5291caa;hp=36a3c0c9e66f9c5ee515ad17d057cf8bff2dc4d6;hpb=d4e9ae30b350c9f471dcb72929e976735c818919;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/weapons/weapon/mortar.qc b/qcsrc/common/weapons/weapon/mortar.qc index 36a3c0c9e..6a479c20a 100644 --- a/qcsrc/common/weapons/weapon/mortar.qc +++ b/qcsrc/common/weapons/weapon/mortar.qc @@ -14,43 +14,46 @@ CLASS(Mortar, Weapon) /* wepimg */ ATTRIB(Mortar, model2, string, "weapongrenadelauncher"); /* refname */ ATTRIB(Mortar, netname, string, "mortar"); /* wepname */ ATTRIB(Mortar, m_name, string, _("Mortar")); + +#define X(BEGIN, P, END, class, prefix) \ + BEGIN(class) \ + P(class, prefix, ammo, float, BOTH) \ + P(class, prefix, animtime, float, BOTH) \ + P(class, prefix, bouncefactor, float, NONE) \ + P(class, prefix, bouncestop, float, NONE) \ + P(class, prefix, damageforcescale, float, BOTH) \ + P(class, prefix, damage, float, BOTH) \ + P(class, prefix, edgedamage, float, BOTH) \ + P(class, prefix, force, float, BOTH) \ + P(class, prefix, health, float, BOTH) \ + P(class, prefix, lifetime, float, BOTH) \ + P(class, prefix, lifetime_bounce, float, SEC) \ + P(class, prefix, lifetime_stick, 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, remote_detonateprimary, float, SEC) \ + P(class, prefix, remote_minbouncecnt, float, PRI) \ + P(class, prefix, speed, float, BOTH) \ + P(class, prefix, speed_up, float, BOTH) \ + P(class, prefix, speed_z, float, BOTH) \ + P(class, prefix, spread, float, BOTH) \ + P(class, prefix, switchdelay_drop, float, NONE) \ + P(class, prefix, switchdelay_raise, float, NONE) \ + P(class, prefix, type, float, BOTH) \ + 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, Mortar, mortar) +#undef X ENDCLASS(Mortar) -REGISTER_WEAPON(MORTAR, NEW(Mortar)); - -#define MORTAR_SETTINGS(w_cvar,w_prop) MORTAR_SETTINGS_LIST(w_cvar, w_prop, MORTAR, mortar) -#define MORTAR_SETTINGS_LIST(w_cvar,w_prop,id,sn) \ - w_cvar(id, sn, BOTH, ammo) \ - w_cvar(id, sn, BOTH, animtime) \ - w_cvar(id, sn, NONE, bouncefactor) \ - w_cvar(id, sn, NONE, bouncestop) \ - w_cvar(id, sn, BOTH, damage) \ - w_cvar(id, sn, BOTH, damageforcescale) \ - w_cvar(id, sn, BOTH, edgedamage) \ - w_cvar(id, sn, BOTH, force) \ - w_cvar(id, sn, BOTH, health) \ - w_cvar(id, sn, BOTH, lifetime) \ - w_cvar(id, sn, SEC, lifetime_bounce) \ - w_cvar(id, sn, BOTH, lifetime_stick) \ - w_cvar(id, sn, BOTH, radius) \ - w_cvar(id, sn, BOTH, refire) \ - w_cvar(id, sn, SEC, remote_detonateprimary) \ - w_cvar(id, sn, PRI, remote_minbouncecnt) \ - w_cvar(id, sn, BOTH, speed) \ - w_cvar(id, sn, BOTH, speed_up) \ - w_cvar(id, sn, BOTH, speed_z) \ - w_cvar(id, sn, BOTH, spread) \ - w_cvar(id, sn, BOTH, type) \ - 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(MORTAR, mortar, NEW(Mortar)); + #ifdef SVQC -MORTAR_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP) .float gl_detonate_later; .float gl_bouncecnt; #endif @@ -335,8 +338,7 @@ void W_Mortar_Attack2(Weapon thiswep) METHOD(Mortar, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire)) { if(autocvar_g_balance_mortar_reload_ammo && actor.clip_load < min(WEP_CVAR_PRI(mortar, ammo), WEP_CVAR_SEC(mortar, 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(mortar, refire))) @@ -369,10 +371,6 @@ void W_Mortar_Attack2(Weapon thiswep) } } } - METHOD(Mortar, wr_init, void(entity thiswep)) - { - MORTAR_SETTINGS(WEP_SKIP_CVAR, WEP_SET_PROP); - } METHOD(Mortar, wr_checkammo1, bool(entity thiswep)) { float ammo_amount = self.WEP_AMMO(MORTAR) >= WEP_CVAR_PRI(mortar, ammo); @@ -385,10 +383,6 @@ void W_Mortar_Attack2(Weapon thiswep) ammo_amount += self.(weapon_load[WEP_MORTAR.m_id]) >= WEP_CVAR_SEC(mortar, ammo); return ammo_amount; } - METHOD(Mortar, wr_config, void(entity thiswep)) - { - MORTAR_SETTINGS(WEP_CONFIG_WRITE_CVARS, WEP_CONFIG_WRITE_PROPS); - } METHOD(Mortar, wr_reload, void(entity thiswep)) { W_Reload(self, min(WEP_CVAR_PRI(mortar, ammo), WEP_CVAR_SEC(mortar, ammo)), SND(RELOAD)); // WEAPONTODO