From: terencehill Date: Thu, 11 Apr 2019 15:10:22 +0000 (+0200) Subject: Fix #2199 "sv_cmd dumpturrets doesn't work". The new implementation is similar to... X-Git-Tag: xonotic-v0.8.5~1546^2~7 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=b9b69ac8b85f0cf2cddc8ac370c90a03f1db5024;p=xonotic%2Fxonotic-data.pk3dir.git Fix #2199 "sv_cmd dumpturrets doesn't work". The new implementation is similar to the dumpweapons one --- diff --git a/qcsrc/common/turrets/all.qh b/qcsrc/common/turrets/all.qh index e63a931a6..b82af599b 100644 --- a/qcsrc/common/turrets/all.qh +++ b/qcsrc/common/turrets/all.qh @@ -11,6 +11,18 @@ REGISTRY(Turrets, BITS(5)) REGISTER_REGISTRY(Turrets) REGISTRY_CHECK(Turrets) +#define TR_PROPS(L, class, prefix) \ + L(TR_CONFIG_BEGIN, TR_CONFIG, TR_CONFIG_END, class, prefix) \ + /**/ \ + +#define TR_CONFIG(class, turname, fld, T) _TR_CONFIG(class, fld, T, turname) +#define TR_CONFIG_BEGIN(class) METHOD(class, tr_config, void(class this)) { + #ifdef SVQC + #define _TR_CONFIG(class, fld, T, turname) if (#turname == this.netname) TUR_CONFIG_WRITE_CVARS(turname, fld, T); + #else + #define _TR_CONFIG(class, fld, T, turname) + #endif +#define TR_CONFIG_END() } GENERIC_COMMAND(dumpturrets, "Dump all turrets into turrets_dump.txt") { diff --git a/qcsrc/common/turrets/config.qh b/qcsrc/common/turrets/config.qh index ad9c3846f..2c47be091 100644 --- a/qcsrc/common/turrets/config.qh +++ b/qcsrc/common/turrets/config.qh @@ -7,6 +7,20 @@ float tur_config_file; float tur_config_alsoprint; float TUR_CONFIG_COUNT; +#define TUR_CONFIG_QUEUE(a) { \ + config_queue[TUR_CONFIG_COUNT] = a; \ + ++TUR_CONFIG_COUNT; } +#define TUR_CONFIG_WRITE_CVARS(turname, name, T) TUR_CONFIG_WRITE_PROPS_##T(turname, name) + +#define TUR_CONFIG_WRITE_PROPS_string(turname, name) \ + { TUR_CONFIG_QUEUE( \ + sprintf("set g_turrets_unit_%s_%s \"%s\"\n", #turname, #name, \ + cvar_string(sprintf("g_turrets_unit_%s_%s", #turname, #name)))) } + +#define TUR_CONFIG_WRITE_PROPS_float(turname, name) \ + { TUR_CONFIG_QUEUE( \ + sprintf("set g_turrets_unit_%s_%s %g\n", #turname, #name, \ + cvar(sprintf("g_turrets_unit_%s_%s", #turname, #name)))) } #endif diff --git a/qcsrc/common/turrets/turret/ewheel.qh b/qcsrc/common/turrets/turret/ewheel.qh index ed1a5a630..4e4cc31fd 100644 --- a/qcsrc/common/turrets/turret/ewheel.qh +++ b/qcsrc/common/turrets/turret/ewheel.qh @@ -14,5 +14,46 @@ CLASS(EWheel, Turret) /* netname */ ATTRIB(EWheel, netname, string, "ewheel"); /* fullname */ ATTRIB(EWheel, turret_name, string, _("eWheel Turret")); ATTRIB(EWheel, m_weapon, Weapon, WEP_EWHEEL); + +#define X(BEGIN, P, END, class, prefix) \ + BEGIN(class) \ + P(class, prefix, aim_firetolerance_dist, float) \ + P(class, prefix, aim_maxpitch, float) \ + P(class, prefix, aim_maxrot, float) \ + P(class, prefix, aim_speed, float) \ + P(class, prefix, ammo, float) \ + P(class, prefix, ammo_max, float) \ + P(class, prefix, ammo_recharge, float) \ + P(class, prefix, health, float) \ + P(class, prefix, respawntime, float) \ + P(class, prefix, shot_dmg, float) \ + P(class, prefix, shot_force, float) \ + P(class, prefix, shot_radius, float) \ + P(class, prefix, shot_refire, float) \ + P(class, prefix, shot_speed, float) \ + P(class, prefix, shot_spread, float) \ + P(class, prefix, shot_volly, float) \ + P(class, prefix, shot_volly_refire, float) \ + P(class, prefix, speed_fast, float) \ + P(class, prefix, speed_slow, float) \ + P(class, prefix, speed_slower, float) \ + P(class, prefix, speed_stop, float) \ + P(class, prefix, target_range, float) \ + P(class, prefix, target_range_min, float) \ + P(class, prefix, target_range_optimal, float) \ + P(class, prefix, target_select_anglebias, float) \ + P(class, prefix, target_select_missilebias, float) \ + P(class, prefix, target_select_playerbias, float) \ + P(class, prefix, target_select_rangebias, float) \ + P(class, prefix, target_select_samebias, float) \ + P(class, prefix, track_accel_pitch, float) \ + P(class, prefix, track_accel_rot, float) \ + P(class, prefix, track_blendrate, float) \ + P(class, prefix, track_type, float) \ + P(class, prefix, turnrate, float) \ + END() + TR_PROPS(X, EWheel, ewheel) +#undef X + ENDCLASS(EWheel) REGISTER_TURRET(EWHEEL, NEW(EWheel)); diff --git a/qcsrc/common/turrets/turret/flac.qh b/qcsrc/common/turrets/turret/flac.qh index 216dcd71f..041a8ea88 100644 --- a/qcsrc/common/turrets/turret/flac.qh +++ b/qcsrc/common/turrets/turret/flac.qh @@ -12,5 +12,41 @@ CLASS(Flac, Turret) /* netname */ ATTRIB(Flac, netname, string, "flac"); /* fullname */ ATTRIB(Flac, turret_name, string, _("FLAC Cannon")); ATTRIB(Flac, m_weapon, Weapon, WEP_FLAC); + +#define X(BEGIN, P, END, class, prefix) \ + BEGIN(class) \ + P(class, prefix, aim_firetolerance_dist, float) \ + P(class, prefix, aim_maxpitch, float) \ + P(class, prefix, aim_maxrot, float) \ + P(class, prefix, aim_speed, float) \ + P(class, prefix, ammo, float) \ + P(class, prefix, ammo_max, float) \ + P(class, prefix, ammo_recharge, float) \ + P(class, prefix, health, float) \ + P(class, prefix, respawntime, float) \ + P(class, prefix, shot_dmg, float) \ + P(class, prefix, shot_force, float) \ + P(class, prefix, shot_radius, float) \ + P(class, prefix, shot_refire, float) \ + P(class, prefix, shot_speed, float) \ + P(class, prefix, shot_spread, float) \ + P(class, prefix, shot_volly, float) \ + P(class, prefix, shot_volly_refire, float) \ + P(class, prefix, target_range, float) \ + P(class, prefix, target_range_min, float) \ + P(class, prefix, target_range_optimal, float) \ + P(class, prefix, target_select_anglebias, float) \ + P(class, prefix, target_select_missilebias, float) \ + P(class, prefix, target_select_playerbias, float) \ + P(class, prefix, target_select_rangebias, float) \ + P(class, prefix, target_select_samebias, float) \ + P(class, prefix, track_accel_pitch, float) \ + P(class, prefix, track_accel_rot, float) \ + P(class, prefix, track_blendrate, float) \ + P(class, prefix, track_type, float) \ + END() + TR_PROPS(X, Flac, flac) +#undef X + ENDCLASS(Flac) REGISTER_TURRET(FLAC, NEW(Flac)); diff --git a/qcsrc/common/turrets/turret/fusionreactor.qh b/qcsrc/common/turrets/turret/fusionreactor.qh index 2ca369b94..f3b1bfa54 100644 --- a/qcsrc/common/turrets/turret/fusionreactor.qh +++ b/qcsrc/common/turrets/turret/fusionreactor.qh @@ -10,4 +10,39 @@ CLASS(FusionReactor, Turret) /* netname */ ATTRIB(FusionReactor, netname, string, "fusreac"); /* fullname */ ATTRIB(FusionReactor, turret_name, string, _("Fusion Reactor")); ENDCLASS(FusionReactor) + +#define X(BEGIN, P, END, class, prefix) \ + BEGIN(class) \ + P(class, prefix, aim_firetolerance_dist, float) \ + P(class, prefix, aim_maxpitch, float) \ + P(class, prefix, aim_maxrot, float) \ + P(class, prefix, aim_speed, float) \ + P(class, prefix, ammo, float) \ + P(class, prefix, ammo_max, float) \ + P(class, prefix, ammo_recharge, float) \ + P(class, prefix, health, float) \ + P(class, prefix, respawntime, float) \ + P(class, prefix, shot_dmg, float) \ + P(class, prefix, shot_force, float) \ + P(class, prefix, shot_radius, float) \ + P(class, prefix, shot_refire, float) \ + P(class, prefix, shot_speed, float) \ + P(class, prefix, shot_spread, float) \ + P(class, prefix, shot_volly, float) \ + P(class, prefix, shot_volly_refire, float) \ + P(class, prefix, target_range, float) \ + P(class, prefix, target_range_min, float) \ + P(class, prefix, target_range_optimal, float) \ + P(class, prefix, target_select_anglebias, float) \ + P(class, prefix, target_select_playerbias, float) \ + P(class, prefix, target_select_rangebias, float) \ + P(class, prefix, target_select_samebias, float) \ + P(class, prefix, track_accel_pitch, float) \ + P(class, prefix, track_accel_rot, float) \ + P(class, prefix, track_blendrate, float) \ + P(class, prefix, track_type, float) \ + END() + TR_PROPS(X, FusionReactor, fusreac) +#undef X + REGISTER_TURRET(FUSIONREACTOR, NEW(FusionReactor)); diff --git a/qcsrc/common/turrets/turret/hellion.qh b/qcsrc/common/turrets/turret/hellion.qh index 216b4c7ec..83556ebc5 100644 --- a/qcsrc/common/turrets/turret/hellion.qh +++ b/qcsrc/common/turrets/turret/hellion.qh @@ -12,5 +12,43 @@ CLASS(Hellion, Turret) /* netname */ ATTRIB(Hellion, netname, string, "hellion"); /* fullname */ ATTRIB(Hellion, turret_name, string, _("Hellion Missile Turret")); ATTRIB(Hellion, m_weapon, Weapon, WEP_HELLION); + +#define X(BEGIN, P, END, class, prefix) \ + BEGIN(class) \ + P(class, prefix, aim_firetolerance_dist, float) \ + P(class, prefix, aim_maxpitch, float) \ + P(class, prefix, aim_maxrot, float) \ + P(class, prefix, aim_speed, float) \ + P(class, prefix, ammo, float) \ + P(class, prefix, ammo_max, float) \ + P(class, prefix, ammo_recharge, float) \ + P(class, prefix, health, float) \ + P(class, prefix, respawntime, float) \ + P(class, prefix, shot_dmg, float) \ + P(class, prefix, shot_force, float) \ + P(class, prefix, shot_radius, float) \ + P(class, prefix, shot_refire, float) \ + P(class, prefix, shot_speed, float) \ + P(class, prefix, shot_speed_gain, float) \ + P(class, prefix, shot_speed_max, float) \ + P(class, prefix, shot_spread, float) \ + P(class, prefix, shot_volly, float) \ + P(class, prefix, shot_volly_refire, float) \ + P(class, prefix, target_range, float) \ + P(class, prefix, target_range_min, float) \ + P(class, prefix, target_range_optimal, float) \ + P(class, prefix, target_select_anglebias, float) \ + P(class, prefix, target_select_missilebias, float) \ + P(class, prefix, target_select_playerbias, float) \ + P(class, prefix, target_select_rangebias, float) \ + P(class, prefix, target_select_samebias, float) \ + P(class, prefix, track_accel_pitch, float) \ + P(class, prefix, track_accel_rot, float) \ + P(class, prefix, track_blendrate, float) \ + P(class, prefix, track_type, float) \ + END() + TR_PROPS(X, Hellion, hellion) +#undef X + ENDCLASS(Hellion) REGISTER_TURRET(HELLION, NEW(Hellion)); diff --git a/qcsrc/common/turrets/turret/hk.qh b/qcsrc/common/turrets/turret/hk.qh index 639924fc4..c60d0f5fb 100644 --- a/qcsrc/common/turrets/turret/hk.qh +++ b/qcsrc/common/turrets/turret/hk.qh @@ -14,5 +14,46 @@ CLASS(HunterKiller, Turret) /* netname */ ATTRIB(HunterKiller, netname, string, "hk"); /* fullname */ ATTRIB(HunterKiller, turret_name, string, _("Hunter-Killer Turret")); ATTRIB(HunterKiller, m_weapon, Weapon, WEP_HK); + +#define X(BEGIN, P, END, class, prefix) \ + BEGIN(class) \ + P(class, prefix, aim_firetolerance_dist, float) \ + P(class, prefix, aim_maxpitch, float) \ + P(class, prefix, aim_maxrot, float) \ + P(class, prefix, aim_speed, float) \ + P(class, prefix, ammo, float) \ + P(class, prefix, ammo_max, float) \ + P(class, prefix, ammo_recharge, float) \ + P(class, prefix, health, float) \ + P(class, prefix, respawntime, float) \ + P(class, prefix, shot_dmg, float) \ + P(class, prefix, shot_force, float) \ + P(class, prefix, shot_radius, float) \ + P(class, prefix, shot_refire, float) \ + P(class, prefix, shot_speed, float) \ + P(class, prefix, shot_speed_accel, float) \ + P(class, prefix, shot_speed_accel2, float) \ + P(class, prefix, shot_speed_decel, float) \ + P(class, prefix, shot_speed_max, float) \ + P(class, prefix, shot_speed_turnrate, float) \ + P(class, prefix, shot_spread, float) \ + P(class, prefix, shot_volly, float) \ + P(class, prefix, shot_volly_refire, float) \ + P(class, prefix, target_range, float) \ + P(class, prefix, target_range_min, float) \ + P(class, prefix, target_range_optimal, float) \ + P(class, prefix, target_select_anglebias, float) \ + P(class, prefix, target_select_missilebias, float) \ + P(class, prefix, target_select_playerbias, float) \ + P(class, prefix, target_select_rangebias, float) \ + P(class, prefix, target_select_samebias, float) \ + P(class, prefix, track_accel_pitch, float) \ + P(class, prefix, track_accel_rot, float) \ + P(class, prefix, track_blendrate, float) \ + P(class, prefix, track_type, float) \ + END() + TR_PROPS(X, HunterKiller, hk) +#undef X + ENDCLASS(HunterKiller) REGISTER_TURRET(HK, NEW(HunterKiller)); diff --git a/qcsrc/common/turrets/turret/machinegun.qh b/qcsrc/common/turrets/turret/machinegun.qh index c4a6066b3..a6d950799 100644 --- a/qcsrc/common/turrets/turret/machinegun.qh +++ b/qcsrc/common/turrets/turret/machinegun.qh @@ -12,5 +12,41 @@ CLASS(MachineGunTurret, Turret) /* netname */ ATTRIB(MachineGunTurret, netname, string, "machinegun"); /* fullname */ ATTRIB(MachineGunTurret, turret_name, string, _("Machinegun Turret")); ATTRIB(MachineGunTurret, m_weapon, Weapon, WEP_TUR_MACHINEGUN); + +#define X(BEGIN, P, END, class, prefix) \ + BEGIN(class) \ + P(class, prefix, aim_firetolerance_dist, float) \ + P(class, prefix, aim_maxpitch, float) \ + P(class, prefix, aim_maxrot, float) \ + P(class, prefix, aim_speed, float) \ + P(class, prefix, ammo, float) \ + P(class, prefix, ammo_max, float) \ + P(class, prefix, ammo_recharge, float) \ + P(class, prefix, health, float) \ + P(class, prefix, respawntime, float) \ + P(class, prefix, shot_dmg, float) \ + P(class, prefix, shot_force, float) \ + P(class, prefix, shot_radius, float) \ + P(class, prefix, shot_refire, float) \ + P(class, prefix, shot_speed, float) \ + P(class, prefix, shot_spread, float) \ + P(class, prefix, shot_volly, float) \ + P(class, prefix, shot_volly_refire, float) \ + P(class, prefix, target_range, float) \ + P(class, prefix, target_range_min, float) \ + P(class, prefix, target_range_optimal, float) \ + P(class, prefix, target_select_anglebias, float) \ + P(class, prefix, target_select_missilebias, float) \ + P(class, prefix, target_select_playerbias, float) \ + P(class, prefix, target_select_rangebias, float) \ + P(class, prefix, target_select_samebias, float) \ + P(class, prefix, track_accel_pitch, float) \ + P(class, prefix, track_accel_rot, float) \ + P(class, prefix, track_blendrate, float) \ + P(class, prefix, track_type, float) \ + END() + TR_PROPS(X, MachineGunTurret, machinegun) +#undef X + ENDCLASS(MachineGunTurret) REGISTER_TURRET(MACHINEGUN, NEW(MachineGunTurret)); diff --git a/qcsrc/common/turrets/turret/mlrs.qh b/qcsrc/common/turrets/turret/mlrs.qh index 7e0bccf22..78c1f76e0 100644 --- a/qcsrc/common/turrets/turret/mlrs.qh +++ b/qcsrc/common/turrets/turret/mlrs.qh @@ -12,5 +12,41 @@ CLASS(MLRSTurret, Turret) /* netname */ ATTRIB(MLRSTurret, netname, string, "mlrs"); /* fullname */ ATTRIB(MLRSTurret, turret_name, string, _("MLRS Turret")); ATTRIB(MLRSTurret, m_weapon, Weapon, WEP_TUR_MLRS); + +#define X(BEGIN, P, END, class, prefix) \ + BEGIN(class) \ + P(class, prefix, aim_firetolerance_dist, float) \ + P(class, prefix, aim_maxpitch, float) \ + P(class, prefix, aim_maxrot, float) \ + P(class, prefix, aim_speed, float) \ + P(class, prefix, ammo, float) \ + P(class, prefix, ammo_max, float) \ + P(class, prefix, ammo_recharge, float) \ + P(class, prefix, health, float) \ + P(class, prefix, respawntime, float) \ + P(class, prefix, shot_dmg, float) \ + P(class, prefix, shot_force, float) \ + P(class, prefix, shot_radius, float) \ + P(class, prefix, shot_refire, float) \ + P(class, prefix, shot_speed, float) \ + P(class, prefix, shot_spread, float) \ + P(class, prefix, shot_volly, float) \ + P(class, prefix, shot_volly_refire, float) \ + P(class, prefix, target_range, float) \ + P(class, prefix, target_range_min, float) \ + P(class, prefix, target_range_optimal, float) \ + P(class, prefix, target_select_anglebias, float) \ + P(class, prefix, target_select_missilebias, float) \ + P(class, prefix, target_select_playerbias, float) \ + P(class, prefix, target_select_rangebias, float) \ + P(class, prefix, target_select_samebias, float) \ + P(class, prefix, track_accel_pitch, float) \ + P(class, prefix, track_accel_rot, float) \ + P(class, prefix, track_blendrate, float) \ + P(class, prefix, track_type, float) \ + END() + TR_PROPS(X, MLRSTurret, mlrs) +#undef X + ENDCLASS(MLRSTurret) REGISTER_TURRET(MLRS, NEW(MLRSTurret)); diff --git a/qcsrc/common/turrets/turret/phaser.qh b/qcsrc/common/turrets/turret/phaser.qh index 887a11a9e..538b62f21 100644 --- a/qcsrc/common/turrets/turret/phaser.qh +++ b/qcsrc/common/turrets/turret/phaser.qh @@ -12,5 +12,41 @@ CLASS(PhaserTurret, Turret) /* netname */ ATTRIB(PhaserTurret, netname, string, "phaser"); /* fullname */ ATTRIB(PhaserTurret, turret_name, string, _("Phaser Cannon")); ATTRIB(PhaserTurret, m_weapon, Weapon, WEP_PHASER); + +#define X(BEGIN, P, END, class, prefix) \ + BEGIN(class) \ + P(class, prefix, aim_firetolerance_dist, float) \ + P(class, prefix, aim_maxpitch, float) \ + P(class, prefix, aim_maxrot, float) \ + P(class, prefix, aim_speed, float) \ + P(class, prefix, ammo, float) \ + P(class, prefix, ammo_max, float) \ + P(class, prefix, ammo_recharge, float) \ + P(class, prefix, health, float) \ + P(class, prefix, respawntime, float) \ + P(class, prefix, shot_dmg, float) \ + P(class, prefix, shot_force, float) \ + P(class, prefix, shot_radius, float) \ + P(class, prefix, shot_refire, float) \ + P(class, prefix, shot_speed, float) \ + P(class, prefix, shot_spread, float) \ + P(class, prefix, shot_volly, float) \ + P(class, prefix, shot_volly_refire, float) \ + P(class, prefix, target_range, float) \ + P(class, prefix, target_range_min, float) \ + P(class, prefix, target_range_optimal, float) \ + P(class, prefix, target_select_anglebias, float) \ + P(class, prefix, target_select_missilebias, float) \ + P(class, prefix, target_select_playerbias, float) \ + P(class, prefix, target_select_rangebias, float) \ + P(class, prefix, target_select_samebias, float) \ + P(class, prefix, track_accel_pitch, float) \ + P(class, prefix, track_accel_rot, float) \ + P(class, prefix, track_blendrate, float) \ + P(class, prefix, track_type, float) \ + END() + TR_PROPS(X, PhaserTurret, phaser) +#undef X + ENDCLASS(PhaserTurret) REGISTER_TURRET(PHASER, NEW(PhaserTurret)); diff --git a/qcsrc/common/turrets/turret/plasma.qh b/qcsrc/common/turrets/turret/plasma.qh index f15ecfc89..a6be4dd7e 100644 --- a/qcsrc/common/turrets/turret/plasma.qh +++ b/qcsrc/common/turrets/turret/plasma.qh @@ -12,5 +12,41 @@ CLASS(PlasmaTurret, Turret) /* netname */ ATTRIB(PlasmaTurret, netname, string, "plasma"); /* fullname */ ATTRIB(PlasmaTurret, turret_name, string, _("Plasma Cannon")); ATTRIB(PlasmaTurret, m_weapon, Weapon, WEP_PLASMA); + +#define X(BEGIN, P, END, class, prefix) \ + BEGIN(class) \ + P(class, prefix, aim_firetolerance_dist, float) \ + P(class, prefix, aim_maxpitch, float) \ + P(class, prefix, aim_maxrot, float) \ + P(class, prefix, aim_speed, float) \ + P(class, prefix, ammo, float) \ + P(class, prefix, ammo_max, float) \ + P(class, prefix, ammo_recharge, float) \ + P(class, prefix, health, float) \ + P(class, prefix, respawntime, float) \ + P(class, prefix, shot_dmg, float) \ + P(class, prefix, shot_force, float) \ + P(class, prefix, shot_radius, float) \ + P(class, prefix, shot_refire, float) \ + P(class, prefix, shot_speed, float) \ + P(class, prefix, shot_spread, float) \ + P(class, prefix, shot_volly, float) \ + P(class, prefix, shot_volly_refire, float) \ + P(class, prefix, target_range, float) \ + P(class, prefix, target_range_min, float) \ + P(class, prefix, target_range_optimal, float) \ + P(class, prefix, target_select_anglebias, float) \ + P(class, prefix, target_select_missilebias, float) \ + P(class, prefix, target_select_playerbias, float) \ + P(class, prefix, target_select_rangebias, float) \ + P(class, prefix, target_select_samebias, float) \ + P(class, prefix, track_accel_pitch, float) \ + P(class, prefix, track_accel_rot, float) \ + P(class, prefix, track_blendrate, float) \ + P(class, prefix, track_type, float) \ + END() + TR_PROPS(X, PlasmaTurret, plasma) +#undef X + ENDCLASS(PlasmaTurret) REGISTER_TURRET(PLASMA, NEW(PlasmaTurret)); diff --git a/qcsrc/common/turrets/turret/plasma_dual.qh b/qcsrc/common/turrets/turret/plasma_dual.qh index 6fdfd32e7..e444056c9 100644 --- a/qcsrc/common/turrets/turret/plasma_dual.qh +++ b/qcsrc/common/turrets/turret/plasma_dual.qh @@ -19,5 +19,41 @@ CLASS(DualPlasmaTurret, PlasmaTurret) /* netname */ ATTRIB(DualPlasmaTurret, netname, string, "plasma_dual"); /* fullname */ ATTRIB(DualPlasmaTurret, turret_name, string, _("Dual Plasma Cannon")); ATTRIB(DualPlasmaTurret, m_weapon, Weapon, WEP_PLASMA_DUAL); + +#define X(BEGIN, P, END, class, prefix) \ + BEGIN(class) \ + P(class, prefix, aim_firetolerance_dist, float) \ + P(class, prefix, aim_maxpitch, float) \ + P(class, prefix, aim_maxrot, float) \ + P(class, prefix, aim_speed, float) \ + P(class, prefix, ammo, float) \ + P(class, prefix, ammo_max, float) \ + P(class, prefix, ammo_recharge, float) \ + P(class, prefix, health, float) \ + P(class, prefix, respawntime, float) \ + P(class, prefix, shot_dmg, float) \ + P(class, prefix, shot_force, float) \ + P(class, prefix, shot_radius, float) \ + P(class, prefix, shot_refire, float) \ + P(class, prefix, shot_speed, float) \ + P(class, prefix, shot_spread, float) \ + P(class, prefix, shot_volly, float) \ + P(class, prefix, shot_volly_refire, float) \ + P(class, prefix, target_range, float) \ + P(class, prefix, target_range_min, float) \ + P(class, prefix, target_range_optimal, float) \ + P(class, prefix, target_select_anglebias, float) \ + P(class, prefix, target_select_missilebias, float) \ + P(class, prefix, target_select_playerbias, float) \ + P(class, prefix, target_select_rangebias, float) \ + P(class, prefix, target_select_samebias, float) \ + P(class, prefix, track_accel_pitch, float) \ + P(class, prefix, track_accel_rot, float) \ + P(class, prefix, track_blendrate, float) \ + P(class, prefix, track_type, float) \ + END() + TR_PROPS(X, DualPlasmaTurret, plasma_dual) +#undef X + ENDCLASS(DualPlasmaTurret) REGISTER_TURRET(PLASMA_DUAL, NEW(DualPlasmaTurret)); diff --git a/qcsrc/common/turrets/turret/tesla.qh b/qcsrc/common/turrets/turret/tesla.qh index ee3192eb9..02b0d4af2 100644 --- a/qcsrc/common/turrets/turret/tesla.qh +++ b/qcsrc/common/turrets/turret/tesla.qh @@ -12,5 +12,41 @@ CLASS(TeslaCoil, Turret) /* netname */ ATTRIB(TeslaCoil, netname, string, "tesla"); /* fullname */ ATTRIB(TeslaCoil, turret_name, string, _("Tesla Coil")); ATTRIB(TeslaCoil, m_weapon, Weapon, WEP_TESLA); + +#define X(BEGIN, P, END, class, prefix) \ + BEGIN(class) \ + P(class, prefix, aim_firetolerance_dist, float) \ + P(class, prefix, aim_maxpitch, float) \ + P(class, prefix, aim_maxrot, float) \ + P(class, prefix, aim_speed, float) \ + P(class, prefix, ammo, float) \ + P(class, prefix, ammo_max, float) \ + P(class, prefix, ammo_recharge, float) \ + P(class, prefix, health, float) \ + P(class, prefix, respawntime, float) \ + P(class, prefix, shot_dmg, float) \ + P(class, prefix, shot_force, float) \ + P(class, prefix, shot_radius, float) \ + P(class, prefix, shot_refire, float) \ + P(class, prefix, shot_speed, float) \ + P(class, prefix, shot_spread, float) \ + P(class, prefix, shot_volly, float) \ + P(class, prefix, shot_volly_refire, float) \ + P(class, prefix, target_range, float) \ + P(class, prefix, target_range_min, float) \ + P(class, prefix, target_range_optimal, float) \ + P(class, prefix, target_select_anglebias, float) \ + P(class, prefix, target_select_missilebias, float) \ + P(class, prefix, target_select_playerbias, float) \ + P(class, prefix, target_select_rangebias, float) \ + P(class, prefix, target_select_samebias, float) \ + P(class, prefix, track_accel_pitch, float) \ + P(class, prefix, track_accel_rot, float) \ + P(class, prefix, track_blendrate, float) \ + P(class, prefix, track_type, float) \ + END() + TR_PROPS(X, TeslaCoil, tesla) +#undef X + ENDCLASS(TeslaCoil) REGISTER_TURRET(TESLA, NEW(TeslaCoil)); diff --git a/qcsrc/common/turrets/turret/walker.qh b/qcsrc/common/turrets/turret/walker.qh index 1c923cad7..ce2023dc1 100644 --- a/qcsrc/common/turrets/turret/walker.qh +++ b/qcsrc/common/turrets/turret/walker.qh @@ -14,5 +14,63 @@ CLASS(WalkerTurret, Turret) /* netname */ ATTRIB(WalkerTurret, netname, string, "walker"); /* fullname */ ATTRIB(WalkerTurret, turret_name, string, _("Walker Turret")); ATTRIB(WalkerTurret, m_weapon, Weapon, WEP_WALKER); + +#define X(BEGIN, P, END, class, prefix) \ + BEGIN(class) \ + P(class, prefix, aim_firetolerance_dist, float) \ + P(class, prefix, aim_maxpitch, float) \ + P(class, prefix, aim_maxrot, float) \ + P(class, prefix, aim_speed, float) \ + P(class, prefix, ammo, float) \ + P(class, prefix, ammo_max, float) \ + P(class, prefix, ammo_recharge, float) \ + P(class, prefix, health, float) \ + P(class, prefix, melee_damage, float) \ + P(class, prefix, melee_force, float) \ + P(class, prefix, melee_range, float) \ + P(class, prefix, respawntime, float) \ + P(class, prefix, rocket_damage, float) \ + P(class, prefix, rocket_force, float) \ + P(class, prefix, rocket_radius, float) \ + P(class, prefix, rocket_range, float) \ + P(class, prefix, rocket_range_min, float) \ + P(class, prefix, rocket_refire, float) \ + P(class, prefix, rocket_speed, float) \ + P(class, prefix, rocket_turnrate, float) \ + P(class, prefix, shot_dmg, float) \ + P(class, prefix, shot_force, float) \ + P(class, prefix, shot_radius, float) \ + P(class, prefix, shot_refire, float) \ + P(class, prefix, shot_speed, float) \ + P(class, prefix, shot_spread, float) \ + P(class, prefix, shot_volly, float) \ + P(class, prefix, shot_volly_refire, float) \ + P(class, prefix, speed_jump, float) \ + P(class, prefix, speed_roam, float) \ + P(class, prefix, speed_run, float) \ + P(class, prefix, speed_stop, float) \ + P(class, prefix, speed_swim, float) \ + P(class, prefix, speed_walk, float) \ + P(class, prefix, target_range, float) \ + P(class, prefix, target_range_min, float) \ + P(class, prefix, target_range_optimal, float) \ + P(class, prefix, target_select_anglebias, float) \ + P(class, prefix, target_select_missilebias, float) \ + P(class, prefix, target_select_playerbias, float) \ + P(class, prefix, target_select_rangebias, float) \ + P(class, prefix, target_select_samebias, float) \ + P(class, prefix, track_accel_pitch, float) \ + P(class, prefix, track_accel_rot, float) \ + P(class, prefix, track_blendrate, float) \ + P(class, prefix, track_type, float) \ + P(class, prefix, turn, float) \ + P(class, prefix, turn_run, float) \ + P(class, prefix, turn_strafe, float) \ + P(class, prefix, turn_swim, float) \ + P(class, prefix, turn_walk, float) \ + END() + TR_PROPS(X, WalkerTurret, walker) +#undef X + ENDCLASS(WalkerTurret) REGISTER_TURRET(WALKER, NEW(WalkerTurret));