]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Add turrets to the guide
authorotta8634 <k9wolf@pm.me>
Wed, 1 Jan 2025 05:41:56 +0000 (13:41 +0800)
committerotta8634 <k9wolf@pm.me>
Wed, 1 Jan 2025 05:41:56 +0000 (13:41 +0800)
Descriptions were somewhat based on scripts/entities.ent from xonotic/xonotic-maps.pk3dir.
Also renamed .turret_name -> .m_name, so the COLORED_NAME macros could work on turrets.

28 files changed:
qcsrc/common/turrets/cl_turrets.qc
qcsrc/common/turrets/config.qc
qcsrc/common/turrets/sv_turrets.qc
qcsrc/common/turrets/turret.qh
qcsrc/common/turrets/turret/ewheel.qc
qcsrc/common/turrets/turret/ewheel.qh
qcsrc/common/turrets/turret/flac.qc
qcsrc/common/turrets/turret/flac.qh
qcsrc/common/turrets/turret/fusionreactor.qc
qcsrc/common/turrets/turret/fusionreactor.qh
qcsrc/common/turrets/turret/hellion.qc
qcsrc/common/turrets/turret/hellion.qh
qcsrc/common/turrets/turret/hk.qc
qcsrc/common/turrets/turret/hk.qh
qcsrc/common/turrets/turret/machinegun.qc
qcsrc/common/turrets/turret/machinegun.qh
qcsrc/common/turrets/turret/mlrs.qc
qcsrc/common/turrets/turret/mlrs.qh
qcsrc/common/turrets/turret/phaser.qc
qcsrc/common/turrets/turret/phaser.qh
qcsrc/common/turrets/turret/plasma.qc
qcsrc/common/turrets/turret/plasma.qh
qcsrc/common/turrets/turret/plasma_dual.qc
qcsrc/common/turrets/turret/plasma_dual.qh
qcsrc/common/turrets/turret/tesla.qc
qcsrc/common/turrets/turret/tesla.qh
qcsrc/common/turrets/turret/walker.qc
qcsrc/common/turrets/turret/walker.qh

index 219b23318c9ab6a68ae9be5f798de916b32659b9..081d8003e91be13f5c802b134cd87df22ae2fe1c 100644 (file)
@@ -216,7 +216,7 @@ void turret_construct(entity this, bool isnew)
        if(this.tur_head == NULL)
                this.tur_head = spawn();
 
-       this.netname = tur.turret_name;
+       this.netname = tur.m_name;
 
        setorigin(this, this.origin);
        _setmodel(this, tur.model);
index 14c51be66122d463940a6f7d0c422d5a993b8528..777cda91be7cb81d5964a811baaba41f7f875e2a 100644 (file)
@@ -65,13 +65,13 @@ void Dump_Turret_Settings()
                heapsort(TUR_CONFIG_COUNT, T_Config_Queue_Swap, T_Config_Queue_Compare, NULL);
 
                // step 4: write queue
-               TUR_CONFIG_WRITETOFILE(sprintf("// {{{ #%d: %s\n", i, it.turret_name));
+               TUR_CONFIG_WRITETOFILE(sprintf("// {{{ #%d: %s\n", i, it.m_name));
                for (int j = 0; j < TUR_CONFIG_COUNT; ++j)
                        TUR_CONFIG_WRITETOFILE(config_queue[j]);
                TUR_CONFIG_WRITETOFILE("// }}}\n");
 
                // step 5: debug info
-               LOG_INFOF("#%d: %s: %d settings...", i, it.turret_name, TUR_CONFIG_COUNT);
+               LOG_INFOF("#%d: %s: %d settings...", i, it.m_name, TUR_CONFIG_COUNT);
                totalsettings += TUR_CONFIG_COUNT;
        });
        #undef TUR_CONFIG_WRITETOFILE
index cc9700c0a9d448bef17f87b5158bc023911f5cd8..9a9a902c27cf6ed60170ecef8928b8fb65043913 100644 (file)
@@ -1356,7 +1356,7 @@ bool turret_initialize(entity this, Turret tur)
        this.m_id                                       = tur.m_id;
        this.active                                     = ACTIVE_ACTIVE;
        this.effects                            = EF_NODRAW;
-       this.netname                            = tur.turret_name;
+       this.netname                            = tur.m_name;
        this.max_health                         = GetResource(this, RES_HEALTH);
        this.target_validate_flags      = this.target_select_flags;
        this.ammo                                       = this.ammo_max;
index d46d54f58c8f456d8281a8605cf7a7ec45ec6de2..700e67a66f9f63c4e587d0eb0876f613c96e0914 100644 (file)
@@ -8,7 +8,9 @@ CLASS(Turret, Object)
     /** short name */
     ATTRIB(Turret, netname, string);
     /** human readable name */
-    ATTRIB(Turret, turret_name, string, _("Turret"));
+    ATTRIB(Turret, m_name, string, _("Turret"));
+    /** color */
+    ATTRIB(Turret, m_color, vector, '1 1 1');
     /** currently a copy of the model */
     ATTRIB(Turret, mdl, string);
     /** full name of model */
@@ -23,7 +25,7 @@ CLASS(Turret, Object)
     ATTRIB(Turret, m_maxs, vector, '0 0 0');
 
     METHOD(Turret, display, void(Turret this, void(string name, string icon) returns)) {
-        returns(this.turret_name, string_null);
+        returns(this.m_name, string_null);
     }
     /** (BOTH) setup turret data */
     METHOD(Turret, tr_setup, void(Turret this, entity it)) {
@@ -52,6 +54,13 @@ CLASS(Turret, Object)
 #endif
        /** (SERVER) dump turret cvars to config in data directory (see: sv_cmd dumpturrets) */
        METHOD(Turret, tr_config, void(Turret this)) { }
+
+#ifdef MENUQC
+    METHOD(Turret, describe, string(Turret this)) {
+        TC(Turret, this);
+        return SUPER(Object).describe(this);
+    }
+#endif
 ENDCLASS(Turret)
 
 // fields:
index 702662357bf72e3bd3b60f272c42966d46b22790..974af4a7a93a7a94525e37c9dbc8bb325c64d849 100644 (file)
@@ -241,3 +241,15 @@ METHOD(EWheel, tr_setup, void(EWheel this, entity it))
 }
 
 #endif // CSQC
+#ifdef MENUQC
+#include <common/weapons/weapon/blaster.qh>
+
+METHOD(EWheel, describe, string(EWheel this))
+{
+    TC(Ewheel, this);
+    return sprintf(_("The %s is a mobile turret that rolls around, attacking its targets when they enter its line of sight\n\n"
+        "It attacks by shooting laser beams similar to those of the %s, from both of its two cannons"),
+    COLORED_NAME(this), COLORED_NAME(WEP_BLASTER));
+}
+
+#endif // MENUQC
index 8a78d37be3e8f1cf7bfb215623fcd1aa8e621794..a73c465bf7694482f9753c0c3e22cab693d4673f 100644 (file)
@@ -12,7 +12,7 @@ CLASS(EWheel, Turret)
 /* model      */ ATTRIB_STRZONE(EWheel, model, string, strcat("models/turrets/", this.mdl));
 /* head_model */ ATTRIB_STRZONE(EWheel, head_model, string, strcat("models/turrets/", "ewheel-gun1.md3"));
 /* netname    */ ATTRIB(EWheel, netname, string, "ewheel");
-/* fullname   */ ATTRIB(EWheel, turret_name, string, _("eWheel Turret"));
+/* fullname   */ ATTRIB(EWheel, m_name, string, _("eWheel Turret"));
     ATTRIB(EWheel, m_weapon, Weapon, WEP_EWHEEL);
 
 #define X(BEGIN, P, END, class, prefix) \
index 6a81bc2c9919d28d04c8fea015593803a51b27cd..8deafec9dc59988ce6fbb10db586a829f162214f 100644 (file)
@@ -12,4 +12,18 @@ METHOD(Flac, tr_setup, void(Flac this, entity it))
     it.target_select_flags |= TFL_TARGETSELECT_NOTURRETS | TFL_TARGETSELECT_MISSILESONLY;
 }
 
-#endif
+#endif // SVQC
+#ifdef MENUQC
+#include <common/weapons/weapon/devastator.qh>
+#include <common/weapons/weapon/electro.qh>
+#include <common/weapons/weapon/mortar.qh>
+
+METHOD(Flac, describe, string(Flac this))
+{
+    TC(Flac, this);
+    return sprintf(_("The %s is a turret similar to flak cannons, instead firing anti-projectile flak shells to take down projectiles fired by its targets\n\n"
+        "The shells it shoots are against projectiles such as the %s secondary fire grenade, %s secondary fire balls, %s rockets, and other missiles"),
+    COLORED_NAME(this), COLORED_NAME(WEP_MORTAR), COLORED_NAME(WEP_ELECTRO), COLORED_NAME(WEP_DEVASTATOR));
+}
+
+#endif // MENUQC
index 9892cbba39476e6bb57d20c2311707238ee14a0c..16330edf295227964d4fec16380dc6e3ed3f439b 100644 (file)
@@ -10,7 +10,7 @@ CLASS(Flac, Turret)
 /* model      */ ATTRIB_STRZONE(Flac, model, string, strcat("models/turrets/", this.mdl));
 /* head_model */ ATTRIB_STRZONE(Flac, head_model, string, strcat("models/turrets/", "flac.md3"));
 /* netname    */ ATTRIB(Flac, netname, string, "flac");
-/* fullname   */ ATTRIB(Flac, turret_name, string, _("FLAC Cannon"));
+/* fullname   */ ATTRIB(Flac, m_name, string, _("FLAC Cannon"));
     ATTRIB(Flac, m_weapon, Weapon, WEP_FLAC);
 
 #define X(BEGIN, P, END, class, prefix) \
index 32ac81d586cc7ecc9035d7accddf5aada188bbdb..81a531065af422d47836dfa630146bf41525ab6f 100644 (file)
@@ -51,4 +51,16 @@ METHOD(FusionReactor, tr_setup, void(FusionReactor this, entity it))
     it.turret_firecheckfunc = turret_fusionreactor_firecheck;
 }
 
-#endif
+#endif // SVQC
+#ifdef MENUQC
+
+METHOD(FusionReactor, describe, string(FusionReactor this))
+{
+    TC(FusionReactor, this);
+    return sprintf(_("The %s is a bit of a unique turret, instead helping out other turrets rather than directly attacking its targets. "
+        "It has no weapon of its own, and instead works by generating power for nearby turrets, so that they can attack their shared targets more often\n\n"
+        "This is the only turret that doesn't directly attack its targets"),
+    COLORED_NAME(this));
+}
+
+#endif // MENUQC
index 0723ba58254b97354651150fa592182214db94d5..42ab95c067d33e0e099c8ef393b84498c0315214 100644 (file)
@@ -8,7 +8,7 @@ CLASS(FusionReactor, Turret)
 /* model      */ ATTRIB_STRZONE(FusionReactor, model, string, strcat("models/turrets/", this.mdl));
 /* head_model */ ATTRIB_STRZONE(FusionReactor, head_model, string, strcat("models/turrets/", "reactor.md3"));
 /* netname    */ ATTRIB(FusionReactor, netname, string, "fusreac");
-/* fullname   */ ATTRIB(FusionReactor, turret_name, string, _("Fusion Reactor"));
+/* fullname   */ ATTRIB(FusionReactor, m_name, string, _("Fusion Reactor"));
 ENDCLASS(FusionReactor)
 
 #define X(BEGIN, P, END, class, prefix) \
index 15dc36b3d7eadeb107446c3d257bd9c5a5a08eb9..8452cb024c92bb2b073068ebea9172cf7b4d0e68 100644 (file)
@@ -20,4 +20,16 @@ METHOD(Hellion, tr_setup, void(Hellion this, entity it))
     it.ammo_flags = TFL_AMMO_ROCKETS | TFL_AMMO_RECHARGE;
 }
 
-#endif
+#endif // SVQC
+#ifdef MENUQC
+#include <common/weapons/weapon/devastator.qh>
+
+METHOD(Hellion, describe, string(Hellion this))
+{
+    TC(Hellion, this);
+    return sprintf(_("The %s fires homing missiles similar to those of the %s towards its targets\n\n"
+        "Although the missiles usually deal less damage than a %s rocket, the %s has two cannons so it can dish out quite the punch"),
+    COLORED_NAME(this), COLORED_NAME(WEP_DEVASTATOR), COLORED_NAME(WEP_DEVASTATOR), COLORED_NAME(this));
+}
+
+#endif // MENUQC
index 23aaa4abcc8a929d03e118a661f6b6956a2b1dcd..a3b9644301e60789bac7156431756d8968e36893 100644 (file)
@@ -10,7 +10,7 @@ CLASS(Hellion, Turret)
 /* model      */ ATTRIB_STRZONE(Hellion, model, string, strcat("models/turrets/", this.mdl));
 /* head_model */ ATTRIB_STRZONE(Hellion, head_model, string, strcat("models/turrets/", "hellion.md3"));
 /* netname    */ ATTRIB(Hellion, netname, string, "hellion");
-/* fullname   */ ATTRIB(Hellion, turret_name, string, _("Hellion Missile Turret"));
+/* fullname   */ ATTRIB(Hellion, m_name, string, _("Hellion Missile Turret"));
     ATTRIB(Hellion, m_weapon, Weapon, WEP_HELLION);
 
 #define X(BEGIN, P, END, class, prefix) \
index ba2e89c2c12e1d8024eeaacdd57f573e1c806c8b..51d3b26b9f9012a41d2218a6e4e404d130ac12e2 100644 (file)
@@ -45,3 +45,15 @@ bool turret_hk_addtarget(entity this, entity e_target,entity e_sender)
 }
 
 #endif // SVQC
+#ifdef MENUQC
+#include <common/weapons/weapon/devastator.qh>
+
+METHOD(HunterKiller, describe, string(HunterKiller this))
+{
+    TC(HunterKiller, this);
+    return sprintf(_("The %s fires a single powerful homing rocket with the ability to evade obstacles to find its target. "
+        "The rocket it fires is similar to that of the %s"),
+    COLORED_NAME(this), COLORED_NAME(WEP_DEVASTATOR));
+}
+
+#endif // MENUQC
index 29060a61df6d1b3c64c99c35a37faaf11180c4df..34a45471649f32f201842583fa5a57ef81ee8fd5 100644 (file)
@@ -12,7 +12,7 @@ CLASS(HunterKiller, Turret)
 /* model      */ ATTRIB_STRZONE(HunterKiller, model, string, strcat("models/turrets/", this.mdl));
 /* head_model */ ATTRIB_STRZONE(HunterKiller, head_model, string, strcat("models/turrets/", "hk.md3"));
 /* netname    */ ATTRIB(HunterKiller, netname, string, "hk");
-/* fullname   */ ATTRIB(HunterKiller, turret_name, string, _("Hunter-Killer Turret"));
+/* fullname   */ ATTRIB(HunterKiller, m_name, string, _("Hunter-Killer Turret"));
     ATTRIB(HunterKiller, m_weapon, Weapon, WEP_HK);
 
 #define X(BEGIN, P, END, class, prefix) \
index a2ee1def6b8a68bb65671c545f33dc5871574718..73da02f9a7e7a1a7455e095c991d338313c7ffb8 100644 (file)
@@ -14,3 +14,14 @@ METHOD(MachineGunTurret, tr_setup, void(MachineGunTurret this, entity it))
 }
 
 #endif // SVQC
+#ifdef MENUQC
+#include <common/weapons/weapon/machinegun.qh>
+
+METHOD(MachineGunTurret, describe, string(MachineGunTurret this))
+{
+    TC(MachineGunTurret, this);
+    return sprintf(_("As the name suggests, the %s fires bullets in a burst at its targets, similar to the %s"),
+    COLORED_NAME(this), COLORED_NAME(WEP_MACHINEGUN));
+}
+
+#endif // MENUQC
index 99b1f79e4ab53968571e678337a8885a5405fc81..4250e2834ecf2f1574a049a27dba5fda7c3deeaa 100644 (file)
@@ -10,7 +10,7 @@ CLASS(MachineGunTurret, Turret)
 /* model      */ ATTRIB_STRZONE(MachineGunTurret, model, string, strcat("models/turrets/", this.mdl));
 /* head_model */ ATTRIB_STRZONE(MachineGunTurret, head_model, string, strcat("models/turrets/", "machinegun.md3"));
 /* netname    */ ATTRIB(MachineGunTurret, netname, string, "machinegun");
-/* fullname   */ ATTRIB(MachineGunTurret, turret_name, string, _("Machinegun Turret"));
+/* fullname   */ ATTRIB(MachineGunTurret, m_name, string, _("Machinegun Turret"));
     ATTRIB(MachineGunTurret, m_weapon, Weapon, WEP_TUR_MACHINEGUN);
 
 #define X(BEGIN, P, END, class, prefix) \
index 2315012b11379bed39838e697795a6345569dbf5..49d87523e618bf60e4e2686068751bc14f5cbe46 100644 (file)
@@ -25,3 +25,16 @@ METHOD(MLRSTurret, tr_setup, void(MLRSTurret this, entity it))
 }
 
 #endif // SVQC
+#ifdef MENUQC
+#include <common/weapons/weapon/devastator.qh>
+
+METHOD(MLRSTurret, describe, string(MLRSTurret this))
+{
+    TC(MLRSTurret, this);
+    return sprintf(_("The %s fires a rapid burst of 6 rockets similar to those of the %s towards its targets\n\n"
+        "Getting caught in the line of fire of this turret can be very deadly, "
+        "but thankfully it doesn't shoot if you get too close, so as to not damage itself"),
+    COLORED_NAME(this), COLORED_NAME(WEP_DEVASTATOR));
+}
+
+#endif // MENUQC
index 0c7c98f9d1bf2ef33d215abf452409a6f6388c1e..075a1acbaf7a056d564b773c519032a4a5dfe64e 100644 (file)
@@ -10,7 +10,7 @@ CLASS(MLRSTurret, Turret)
 /* model      */ ATTRIB_STRZONE(MLRSTurret, model, string, strcat("models/turrets/", this.mdl));
 /* head_model */ ATTRIB_STRZONE(MLRSTurret, head_model, string, strcat("models/turrets/", "mlrs.md3"));
 /* netname    */ ATTRIB(MLRSTurret, netname, string, "mlrs");
-/* fullname   */ ATTRIB(MLRSTurret, turret_name, string, _("MLRS Turret"));
+/* fullname   */ ATTRIB(MLRSTurret, m_name, string, _("MLRS Turret"));
     ATTRIB(MLRSTurret, m_weapon, Weapon, WEP_TUR_MLRS);
 
 #define X(BEGIN, P, END, class, prefix) \
index 9c93a6e89a742313b097ba23fd1a03a3267a16df..1706c3ba39e31e3b116ca554f746af5039eeba6a 100644 (file)
@@ -42,4 +42,15 @@ bool turret_phaser_firecheck(entity this)
     return turret_firecheck(this);
 }
 
-#endif
+#endif // SVQC
+#ifdef MENUQC
+
+METHOD(PhaserTurret, describe, string(PhaserTurret this))
+{
+    TC(PhaserTurret, this);
+    return sprintf(_("The %s is a turret that fires an invisible beam of energy towards its targets\n\n"
+        "Looks are deceiving with the %s, since although the beam of energy can't be seen, it constantly deals damage to and slows down players who intercept its path"),
+    COLORED_NAME(this), COLORED_NAME(this));
+}
+
+#endif // MENUQC
index 0901f5c797144bd5066309857de21d9d0231fd22..de70502cd497b07b4dd42359927cfbdcb9bdf005 100644 (file)
@@ -10,7 +10,7 @@ CLASS(PhaserTurret, Turret)
 /* model      */ ATTRIB_STRZONE(PhaserTurret, model, string, strcat("models/turrets/", this.mdl));
 /* head_model */ ATTRIB_STRZONE(PhaserTurret, head_model, string, strcat("models/turrets/", "phaser.md3"));
 /* netname    */ ATTRIB(PhaserTurret, netname, string, "phaser");
-/* fullname   */ ATTRIB(PhaserTurret, turret_name, string, _("Phaser Cannon"));
+/* fullname   */ ATTRIB(PhaserTurret, m_name, string, _("Phaser Cannon"));
     ATTRIB(PhaserTurret, m_weapon, Weapon, WEP_PHASER);
 
 #define X(BEGIN, P, END, class, prefix) \
index 66000939e09cfc5a8de0a3b6876fb7b426d359b5..0b2ef14d8ed8df8891454d9b9d5d35271f20b9c6 100644 (file)
@@ -43,4 +43,17 @@ METHOD(PlasmaTurret, tr_setup, void(PlasmaTurret this, entity it))
     turret_do_updates(it);
 }
 
-#endif
+#endif // SVQC
+#ifdef MENUQC
+#include <common/weapons/weapon/electro.qh>
+#include "plasma_dual.qh"
+
+METHOD(PlasmaTurret, describe, string(PlasmaTurret this))
+{
+    TC(PlasmaTurret, this);
+    return sprintf(_("The %s is a turret that fires electric balls forwards, similar to those of the %s\n\n"
+        "It is a weaker version of the %s, which has two electric ball cannons"),
+    COLORED_NAME(this), COLORED_NAME(WEP_ELECTRO), COLORED_NAME(TUR_PLASMA_DUAL));
+}
+
+#endif // MENUQC
index bc38f6ffd964c09a6685b3f23bdf8cb89a7f6c9b..29225670b07d07de1c5e69cb73930546abf2a155 100644 (file)
@@ -10,7 +10,7 @@ CLASS(PlasmaTurret, Turret)
 /* model      */ ATTRIB_STRZONE(PlasmaTurret, model, string, strcat("models/turrets/", this.mdl));
 /* head_model */ ATTRIB_STRZONE(PlasmaTurret, head_model, string, strcat("models/turrets/", "plasma.md3"));
 /* netname    */ ATTRIB(PlasmaTurret, netname, string, "plasma");
-/* fullname   */ ATTRIB(PlasmaTurret, turret_name, string, _("Plasma Cannon"));
+/* fullname   */ ATTRIB(PlasmaTurret, m_name, string, _("Plasma Cannon"));
     ATTRIB(PlasmaTurret, m_weapon, Weapon, WEP_PLASMA);
 
 #define X(BEGIN, P, END, class, prefix) \
index 920f88ad2938f4a50d0ab03fbc7d726d5ce28dd0..38336b13a9609be9c6599d529c94623a2f324192 100644 (file)
@@ -31,4 +31,17 @@ METHOD(DualPlasmaTurret, tr_think, void(DualPlasmaTurret thistur, entity it))
         it.tur_head.frame = 0;
 }
 
-#endif
+#endif // SVQC
+#ifdef MENUQC
+#include <common/weapons/weapon/electro.qh>
+#include "plasma.qh"
+
+METHOD(DualPlasmaTurret, describe, string(DualPlasmaTurret this))
+{
+    TC(DualPlasmaTurret, this);
+    return sprintf(_("The %s is a turret that fires electric balls forwards from its two cannons, shooting balls similar to those of the %s\n\n"
+        "It is a stronger version of the %s, which only has one electric ball cannon"),
+    COLORED_NAME(this), COLORED_NAME(WEP_ELECTRO), COLORED_NAME(TUR_PLASMA));
+}
+
+#endif // MENUQC
index 299475cd08128b3be294bd39f32aa49a1330f793..f97b582ce5a3c5eb62b699d38ae9b568c164f418 100644 (file)
@@ -17,7 +17,7 @@ CLASS(DualPlasmaTurret, PlasmaTurret)
 /* model      */ ATTRIB_STRZONE(DualPlasmaTurret, model, string, strcat("models/turrets/", this.mdl));
 /* head_model */ ATTRIB_STRZONE(DualPlasmaTurret, head_model, string, strcat("models/turrets/", "plasmad.md3"));
 /* netname    */ ATTRIB(DualPlasmaTurret, netname, string, "plasma_dual");
-/* fullname   */ ATTRIB(DualPlasmaTurret, turret_name, string, _("Dual Plasma Cannon"));
+/* fullname   */ ATTRIB(DualPlasmaTurret, m_name, string, _("Dual Plasma Cannon"));
     ATTRIB(DualPlasmaTurret, m_weapon, Weapon, WEP_PLASMA_DUAL);
 
 #define X(BEGIN, P, END, class, prefix) \
index 4c27bc9acce8cd112e0426e0062a0cceee1e115e..e3fba0634d911f3f3da0d67a28e9a9ac0e46badd 100644 (file)
@@ -85,4 +85,15 @@ bool turret_tesla_firecheck(entity this)
     return false;
 }
 
-#endif
+#endif // SVQC
+#ifdef MENUQC
+
+METHOD(TeslaCoil, describe, string(TeslaCoil this))
+{
+    TC(TeslaCoil, this);
+    return sprintf(_("The %s is a turret that electrocutes all who dare come near it, sending powerful high-voltage arcs of lightning to strike its targets\n\n"
+        "Since the arcs of lightning can jump between nearby targets, it is best to just stay away from the %s"),
+    COLORED_NAME(this), COLORED_NAME(this));
+}
+
+#endif // MENUQC
index 6f01737be2193a73ffb13bf1088817ca500a64a8..29cd0a2986ee8ebf0e09211896dfae5dca34973a 100644 (file)
@@ -10,7 +10,7 @@ CLASS(TeslaCoil, Turret)
 /* model      */ ATTRIB_STRZONE(TeslaCoil, model, string, strcat("models/turrets/", this.mdl));
 /* head_model */ ATTRIB_STRZONE(TeslaCoil, head_model, string, strcat("models/turrets/", "tesla_head.md3"));
 /* netname    */ ATTRIB(TeslaCoil, netname, string, "tesla");
-/* fullname   */ ATTRIB(TeslaCoil, turret_name, string, _("Tesla Coil"));
+/* fullname   */ ATTRIB(TeslaCoil, m_name, string, _("Tesla Coil"));
     ATTRIB(TeslaCoil, m_weapon, Weapon, WEP_TESLA);
 
 #define X(BEGIN, P, END, class, prefix) \
index 8e347f962c2cedbd4cd8cefbe22c6368b668a5a1..8777c3a5c6b3c8198cb84807b67e8a5ab4794dda 100644 (file)
@@ -640,3 +640,17 @@ METHOD(WalkerTurret, tr_setup, void(WalkerTurret this, entity it))
 }
 
 #endif // CSQC
+#ifdef MENUQC
+#include <common/weapons/weapon/devastator.qh>
+#include <common/weapons/weapon/machinegun.qh>
+
+METHOD(WalkerTurret, describe, string(WalkerTurret this))
+{
+    TC(WalkerTurret, this);
+    return sprintf(_("The %s is an arachnid-like walking turret that hunts down its targets\n\n"
+        "It has two weapons, both a machinegun like the %s for medium range combat, and a rocket launcher shooting homing missiles like the %s for long range targets. "
+        "It also has the ability to melee close by targets"),
+    COLORED_NAME(this), COLORED_NAME(WEP_MACHINEGUN), COLORED_NAME(WEP_DEVASTATOR));
+}
+
+#endif // MENUQC
index 466040468ef8afadc7173048a7104a08b4610e66..5da7e9fd61161df35af900a473e4945295ce2a3d 100644 (file)
@@ -12,7 +12,7 @@ CLASS(WalkerTurret, Turret)
 /* model      */ ATTRIB_STRZONE(WalkerTurret, model, string, strcat("models/turrets/", this.mdl));
 /* head_model */ ATTRIB_STRZONE(WalkerTurret, head_model, string, strcat("models/turrets/", "walker_head_minigun.md3"));
 /* netname    */ ATTRIB(WalkerTurret, netname, string, "walker");
-/* fullname   */ ATTRIB(WalkerTurret, turret_name, string, _("Walker Turret"));
+/* fullname   */ ATTRIB(WalkerTurret, m_name, string, _("Walker Turret"));
     ATTRIB(WalkerTurret, m_weapon, Weapon, WEP_WALKER);
 
 #define X(BEGIN, P, END, class, prefix) \