]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Relocate guide descriptions to QC files
authorotta8634 <k9wolf@pm.me>
Sun, 22 Dec 2024 06:25:39 +0000 (14:25 +0800)
committerotta8634 <k9wolf@pm.me>
Sun, 22 Dec 2024 06:25:39 +0000 (14:25 +0800)
This will allow for addressing the circular includes "issue" from before.

86 files changed:
qcsrc/common/items/item/ammo.qc
qcsrc/common/items/item/ammo.qh
qcsrc/common/items/item/armor.qc
qcsrc/common/items/item/armor.qh
qcsrc/common/items/item/health.qc
qcsrc/common/items/item/health.qh
qcsrc/common/items/item/jetpack.qc
qcsrc/common/items/item/jetpack.qh
qcsrc/common/monsters/monster/golem.qc
qcsrc/common/monsters/monster/golem.qh
qcsrc/common/monsters/monster/mage.qc
qcsrc/common/monsters/monster/mage.qh
qcsrc/common/monsters/monster/spider.qc
qcsrc/common/monsters/monster/spider.qh
qcsrc/common/monsters/monster/wyvern.qc
qcsrc/common/monsters/monster/wyvern.qh
qcsrc/common/monsters/monster/zombie.qc
qcsrc/common/monsters/monster/zombie.qh
qcsrc/common/mutators/mutator/instagib/items.qc
qcsrc/common/mutators/mutator/instagib/items.qh
qcsrc/common/mutators/mutator/overkill/okhmg.qc
qcsrc/common/mutators/mutator/overkill/okhmg.qh
qcsrc/common/mutators/mutator/overkill/okmachinegun.qc
qcsrc/common/mutators/mutator/overkill/okmachinegun.qh
qcsrc/common/mutators/mutator/overkill/oknex.qc
qcsrc/common/mutators/mutator/overkill/oknex.qh
qcsrc/common/mutators/mutator/overkill/okrpc.qc
qcsrc/common/mutators/mutator/overkill/okrpc.qh
qcsrc/common/mutators/mutator/overkill/okshotgun.qc
qcsrc/common/mutators/mutator/overkill/okshotgun.qh
qcsrc/common/mutators/mutator/powerups/powerup/invisibility.qc
qcsrc/common/mutators/mutator/powerups/powerup/invisibility.qh
qcsrc/common/mutators/mutator/powerups/powerup/shield.qc
qcsrc/common/mutators/mutator/powerups/powerup/shield.qh
qcsrc/common/mutators/mutator/powerups/powerup/speed.qc
qcsrc/common/mutators/mutator/powerups/powerup/speed.qh
qcsrc/common/mutators/mutator/powerups/powerup/strength.qc
qcsrc/common/mutators/mutator/powerups/powerup/strength.qh
qcsrc/common/vehicles/vehicle/bumblebee.qc
qcsrc/common/vehicles/vehicle/bumblebee.qh
qcsrc/common/vehicles/vehicle/racer.qc
qcsrc/common/vehicles/vehicle/racer.qh
qcsrc/common/vehicles/vehicle/raptor.qc
qcsrc/common/vehicles/vehicle/raptor.qh
qcsrc/common/vehicles/vehicle/spiderbot.qc
qcsrc/common/vehicles/vehicle/spiderbot.qh
qcsrc/common/weapons/weapon/arc.qc
qcsrc/common/weapons/weapon/arc.qh
qcsrc/common/weapons/weapon/blaster.qc
qcsrc/common/weapons/weapon/blaster.qh
qcsrc/common/weapons/weapon/crylink.qc
qcsrc/common/weapons/weapon/crylink.qh
qcsrc/common/weapons/weapon/devastator.qc
qcsrc/common/weapons/weapon/devastator.qh
qcsrc/common/weapons/weapon/electro.qc
qcsrc/common/weapons/weapon/electro.qh
qcsrc/common/weapons/weapon/fireball.qc
qcsrc/common/weapons/weapon/fireball.qh
qcsrc/common/weapons/weapon/hagar.qc
qcsrc/common/weapons/weapon/hagar.qh
qcsrc/common/weapons/weapon/hlac.qc
qcsrc/common/weapons/weapon/hlac.qh
qcsrc/common/weapons/weapon/hook.qc
qcsrc/common/weapons/weapon/hook.qh
qcsrc/common/weapons/weapon/machinegun.qc
qcsrc/common/weapons/weapon/machinegun.qh
qcsrc/common/weapons/weapon/minelayer.qc
qcsrc/common/weapons/weapon/minelayer.qh
qcsrc/common/weapons/weapon/mortar.qc
qcsrc/common/weapons/weapon/mortar.qh
qcsrc/common/weapons/weapon/porto.qc
qcsrc/common/weapons/weapon/porto.qh
qcsrc/common/weapons/weapon/rifle.qc
qcsrc/common/weapons/weapon/rifle.qh
qcsrc/common/weapons/weapon/seeker.qc
qcsrc/common/weapons/weapon/seeker.qh
qcsrc/common/weapons/weapon/shockwave.qc
qcsrc/common/weapons/weapon/shockwave.qh
qcsrc/common/weapons/weapon/shotgun.qc
qcsrc/common/weapons/weapon/shotgun.qh
qcsrc/common/weapons/weapon/tuba.qc
qcsrc/common/weapons/weapon/tuba.qh
qcsrc/common/weapons/weapon/vaporizer.qc
qcsrc/common/weapons/weapon/vaporizer.qh
qcsrc/common/weapons/weapon/vortex.qc
qcsrc/common/weapons/weapon/vortex.qh

index 48ca0ddab6947f2dd320a96d5644983f4a055ee4..79f6605990b3c0ad2fa3a628b435b1e0189f47da 100644 (file)
@@ -1,2 +1,53 @@
 #include "ammo.qh"
 
+#ifdef MENUQC
+METHOD(Shells, describe, string(Shells this))
+{
+    TC(Shells, this);
+    return sprintf(_("The %s ammo type is used by the %s and %s"),
+        COLORED_NAME(Shells),
+        strcat(rgb_to_hexcolor(COLOR_WEP_SHOTGUN), _("Shotgun"), "^7"),
+        strcat(rgb_to_hexcolor(COLOR_WEP_OKSHOTGUN), _("Overkill Shotgun"), "^7")
+    );
+}
+
+METHOD(Bullets, describe, string(Bullets this))
+{
+    TC(Bullets, this);
+    return sprintf(_("The %s ammo type is used by the %s, %s, %s, and %s"),
+        COLORED_NAME(Bullets),
+        strcat(rgb_to_hexcolor(COLOR_WEP_MACHINEGUN), _("MachineGun"), "^7"),
+        strcat(rgb_to_hexcolor(COLOR_WEP_RIFLE), _("Rifle"), "^7"),
+        strcat(rgb_to_hexcolor(COLOR_WEP_OKMACHINEGUN), _("Overkill MachineGun"), "^7"),
+        strcat(rgb_to_hexcolor(COLOR_WEP_OKHMG), _("Overkill Heavy Machine Gun"), "^7")
+    );
+}
+
+METHOD(Rockets, describe, string(Rockets this))
+{
+    TC(Rockets, this);
+    return sprintf(_("The %s ammo type is used by the %s, %s, %s, %s, %s, and %s"),
+        COLORED_NAME(Rockets),
+        strcat(rgb_to_hexcolor(COLOR_WEP_DEVASTATOR), _("Devastator"), "^7"),
+        strcat(rgb_to_hexcolor(COLOR_WEP_MORTAR), _("Mortar"), "^7"),
+        strcat(rgb_to_hexcolor(COLOR_WEP_HAGAR), _("Hagar"), "^7"),
+        strcat(rgb_to_hexcolor(COLOR_WEP_MINELAYER), _("Mine Layer"), "^7"),
+        strcat(rgb_to_hexcolor(COLOR_WEP_SEEKER), _("T.A.G. Seeker"), "^7"),
+        strcat(rgb_to_hexcolor(COLOR_WEP_OKRPC), _("Overkill Rocket Propelled Chainsaw"), "^7")
+    );
+}
+
+METHOD(Cells, describe, string(Cells this))
+{
+    TC(Cells, this);
+    return sprintf(_("The %s ammo type is used by the %s, %s, %s, %s, %s, and %s"),
+        COLORED_NAME(Cells),
+        strcat(rgb_to_hexcolor(COLOR_WEP_VORTEX), _("Vortex"), "^7"),
+        strcat(rgb_to_hexcolor(COLOR_WEP_CRYLINK), _("Crylink"), "^7"),
+        strcat(rgb_to_hexcolor(COLOR_WEP_ELECTRO), _("Electro"), "^7"),
+        strcat(rgb_to_hexcolor(COLOR_WEP_HLAC), _("Heavy Laser Assault Cannon"), "^7"),
+        strcat(rgb_to_hexcolor(COLOR_WEP_VAPORIZER), _("Vaporizer"), "^7"),
+        strcat(rgb_to_hexcolor(COLOR_WEP_ARC), _("Arc"), "^7")
+    );
+}
+#endif
index 7a8ecef9aa5dfac2f4560f0355978fe0edee555a..c8fa425b1b4c25001ff76ecad07d24305b6fc6c3 100644 (file)
@@ -68,17 +68,6 @@ CLASS(Shells, Ammo)
 /* itemid     */ ATTRIB(Shells, m_itemid, int, IT_RESOURCE);
 /* iteminit   */ ATTRIB(Shells, m_iteminit, void(Pickup this, entity item), ammo_shells_init);
 #endif
-#ifdef MENUQC
-METHOD(Shells, describe, string(Shells this))
-{
-    TC(Shells, this);
-    return sprintf(_("The %s ammo type is used by the %s and %s"),
-        COLORED_NAME(Shells),
-        strcat(rgb_to_hexcolor(COLOR_WEP_SHOTGUN), _("Shotgun"), "^7"),
-        strcat(rgb_to_hexcolor(COLOR_WEP_OKSHOTGUN), _("Overkill Shotgun"), "^7")
-    );
-}
-#endif
 ENDCLASS(Shells)
 REGISTER_ITEM(Shells, NEW(Shells));
 
@@ -113,19 +102,6 @@ CLASS(Bullets, Ammo)
 /* itemid     */ ATTRIB(Bullets, m_itemid, int, IT_RESOURCE);
 /* iteminit   */ ATTRIB(Bullets, m_iteminit, void(Pickup this, entity item), ammo_bullets_init);
 #endif
-#ifdef MENUQC
-METHOD(Bullets, describe, string(Bullets this))
-{
-    TC(Bullets, this);
-    return sprintf(_("The %s ammo type is used by the %s, %s, %s, and %s"),
-        COLORED_NAME(Bullets),
-        strcat(rgb_to_hexcolor(COLOR_WEP_MACHINEGUN), _("MachineGun"), "^7"),
-        strcat(rgb_to_hexcolor(COLOR_WEP_RIFLE), _("Rifle"), "^7"),
-        strcat(rgb_to_hexcolor(COLOR_WEP_OKMACHINEGUN), _("Overkill MachineGun"), "^7"),
-        strcat(rgb_to_hexcolor(COLOR_WEP_OKHMG), _("Overkill Heavy Machine Gun"), "^7")
-    );
-}
-#endif
 ENDCLASS(Bullets)
 REGISTER_ITEM(Bullets, NEW(Bullets));
 
@@ -160,21 +136,6 @@ CLASS(Rockets, Ammo)
 /* itemid     */ ATTRIB(Rockets, m_itemid, int, IT_RESOURCE);
 /* iteminit   */ ATTRIB(Rockets, m_iteminit, void(Pickup this, entity item), ammo_rockets_init);
 #endif
-#ifdef MENUQC
-METHOD(Rockets, describe, string(Rockets this))
-{
-    TC(Rockets, this);
-    return sprintf(_("The %s ammo type is used by the %s, %s, %s, %s, %s, and %s"),
-        COLORED_NAME(Rockets),
-        strcat(rgb_to_hexcolor(COLOR_WEP_DEVASTATOR), _("Devastator"), "^7"),
-        strcat(rgb_to_hexcolor(COLOR_WEP_MORTAR), _("Mortar"), "^7"),
-        strcat(rgb_to_hexcolor(COLOR_WEP_HAGAR), _("Hagar"), "^7"),
-        strcat(rgb_to_hexcolor(COLOR_WEP_MINELAYER), _("Mine Layer"), "^7"),
-        strcat(rgb_to_hexcolor(COLOR_WEP_SEEKER), _("T.A.G. Seeker"), "^7"),
-        strcat(rgb_to_hexcolor(COLOR_WEP_OKRPC), _("Overkill Rocket Propelled Chainsaw"), "^7")
-    );
-}
-#endif
 ENDCLASS(Rockets)
 REGISTER_ITEM(Rockets, NEW(Rockets));
 
@@ -209,21 +170,6 @@ CLASS(Cells, Ammo)
 /* itemid     */ ATTRIB(Cells, m_itemid, int, IT_RESOURCE);
 /* iteminit   */ ATTRIB(Cells, m_iteminit, void(Pickup this, entity item), ammo_cells_init);
 #endif
-#ifdef MENUQC
-METHOD(Cells, describe, string(Cells this))
-{
-    TC(Cells, this);
-    return sprintf(_("The %s ammo type is used by the %s, %s, %s, %s, %s, and %s"),
-        COLORED_NAME(Cells),
-        strcat(rgb_to_hexcolor(COLOR_WEP_VORTEX), _("Vortex"), "^7"),
-        strcat(rgb_to_hexcolor(COLOR_WEP_CRYLINK), _("Crylink"), "^7"),
-        strcat(rgb_to_hexcolor(COLOR_WEP_ELECTRO), _("Electro"), "^7"),
-        strcat(rgb_to_hexcolor(COLOR_WEP_HLAC), _("Heavy Laser Assault Cannon"), "^7"),
-        strcat(rgb_to_hexcolor(COLOR_WEP_VAPORIZER), _("Vaporizer"), "^7"),
-        strcat(rgb_to_hexcolor(COLOR_WEP_ARC), _("Arc"), "^7")
-    );
-}
-#endif
 ENDCLASS(Cells)
 REGISTER_ITEM(Cells, NEW(Cells));
 
index cca0b541843613470a8d49e0e530283bc2d356de..25d22a7a43854ac86304f548d70ae7b66c144608 100644 (file)
@@ -1 +1,36 @@
 #include "armor.qh"
+
+#ifdef MENUQC
+METHOD(ArmorSmall, describe, string(ArmorSmall this))
+{
+    TC(ArmorSmall, this);
+    return sprintf(_("The %s provides you a small amount of armor when picked up, "
+        "protecting you from damage by absorbing incoming hits until it is depleted"),
+    COLORED_NAME(ArmorSmall));
+}
+
+METHOD(ArmorMedium, describe, string(ArmorMedium this))
+{
+    TC(ArmorMedium, this);
+    return sprintf(_("The %s provides you a medium amount of armor when picked up, "
+        "protecting you from damage by absorbing incoming hits until it is depleted"),
+    COLORED_NAME(ArmorMedium));
+}
+
+METHOD(ArmorBig, describe, string(ArmorBig this))
+{
+    TC(ArmorBig, this);
+    return sprintf(_("The %s provides you a large amount of armor when picked up, "
+        "protecting you from damage by absorbing incoming hits until it is depleted"),
+    COLORED_NAME(ArmorBig));
+}
+
+METHOD(ArmorMega, describe, string(ArmorMega this))
+{
+    TC(ArmorMega, this);
+    return sprintf(_("The %s provides you a huge amount of armor when picked up, "
+        "protecting you from damage by absorbing incoming hits until it is depleted\n\n"
+        "It tends to be one of the most highly contested items on a map, particularly in game modes like Duel"),
+    COLORED_NAME(ArmorMega));
+}
+#endif
index 5d65caa894996d513845628f0bf65c33508253bc..755fd1d32c01414c73579eab8abb8a98c7c5747e 100644 (file)
@@ -60,15 +60,6 @@ CLASS(ArmorSmall, Armor)
 /* pickupanyway */ ATTRIB(ArmorSmall, m_pickupanyway, float, GET(g_pickup_armorsmall_anyway));
 /* iteminit     */ ATTRIB(ArmorSmall, m_iteminit, void(Pickup this, entity item), item_armorsmall_init);
 #endif
-#ifdef MENUQC
-METHOD(ArmorSmall, describe, string(ArmorSmall this))
-{
-    TC(ArmorSmall, this);
-    return sprintf(_("The %s provides you a small amount of armor when picked up, "
-        "protecting you from damage by absorbing incoming hits until it is depleted"),
-    COLORED_NAME(ArmorSmall));
-}
-#endif
 ENDCLASS(ArmorSmall)
 REGISTER_ITEM(ArmorSmall, NEW(ArmorSmall));
 
@@ -119,15 +110,6 @@ CLASS(ArmorMedium, Armor)
 /* pickupanyway */ ATTRIB(ArmorMedium, m_pickupanyway, float, GET(g_pickup_armormedium_anyway));
 /* iteminit     */ ATTRIB(ArmorMedium, m_iteminit, void(Pickup this, entity item), item_armormedium_init);
 #endif
-#ifdef MENUQC
-METHOD(ArmorMedium, describe, string(ArmorMedium this))
-{
-    TC(ArmorMedium, this);
-    return sprintf(_("The %s provides you a medium amount of armor when picked up, "
-        "protecting you from damage by absorbing incoming hits until it is depleted"),
-    COLORED_NAME(ArmorMedium));
-}
-#endif
 ENDCLASS(ArmorMedium)
 REGISTER_ITEM(ArmorMedium, NEW(ArmorMedium));
 
@@ -177,15 +159,6 @@ CLASS(ArmorBig, Armor)
 /* pickupanyway */ ATTRIB(ArmorBig, m_pickupanyway, float, GET(g_pickup_armorbig_anyway));
 /* iteminit     */ ATTRIB(ArmorBig, m_iteminit, void(Pickup this, entity item), item_armorbig_init);
 #endif
-#ifdef MENUQC
-METHOD(ArmorBig, describe, string(ArmorBig this))
-{
-    TC(ArmorBig, this);
-    return sprintf(_("The %s provides you a large amount of armor when picked up, "
-        "protecting you from damage by absorbing incoming hits until it is depleted"),
-    COLORED_NAME(ArmorBig));
-}
-#endif
 ENDCLASS(ArmorBig)
 REGISTER_ITEM(ArmorBig, NEW(ArmorBig));
 
@@ -237,16 +210,6 @@ CLASS(ArmorMega, Armor)
 /* pickupanyway */ ATTRIB(ArmorMega, m_pickupanyway, float, GET(g_pickup_armormega_anyway));
 /* iteminit     */ ATTRIB(ArmorMega, m_iteminit, void(Pickup this, entity item), item_armormega_init);
 #endif
-#ifdef MENUQC
-METHOD(ArmorMega, describe, string(ArmorMega this))
-{
-    TC(ArmorMega, this);
-    return sprintf(_("The %s provides you a huge amount of armor when picked up, "
-        "protecting you from damage by absorbing incoming hits until it is depleted\n\n"
-        "It tends to be one of the most highly contested items on a map, particularly in game modes like Duel"),
-    COLORED_NAME(ArmorMega));
-}
-#endif
 ENDCLASS(ArmorMega)
 REGISTER_ITEM(ArmorMega, NEW(ArmorMega));
 
index 49a34c1c8ee280f159139311ae4b245c91a23c4f..1c82231c284e6f4929eb2b178ed819911d508c78 100644 (file)
@@ -1 +1,36 @@
 #include "health.qh"
+
+#ifdef MENUQC
+METHOD(HealthSmall, describe, string(HealthSmall this))
+{
+    TC(HealthSmall, this);
+    return sprintf(_("The %s restores a small amount of health when picked up, "
+        "helping you recover from damage taken during combat"),
+    COLORED_NAME(HealthSmall));
+}
+
+METHOD(HealthMedium, describe, string(HealthMedium this))
+{
+    TC(HealthMedium, this);
+    return sprintf(_("The %s restores a medium amount of health when picked up, "
+        "helping you recover from damage taken during combat"),
+    COLORED_NAME(HealthMedium));
+}
+
+METHOD(HealthBig, describe, string(HealthBig this))
+{
+    TC(HealthBig, this);
+    return sprintf(_("The %s restores a large amount of health when picked up, "
+        "helping you recover from damage taken during combat"),
+    COLORED_NAME(HealthBig));
+}
+
+METHOD(HealthMega, describe, string(HealthMega this))
+{
+    TC(HealthMega, this);
+    return sprintf(_("The %s restores a huge amount of health when picked up, "
+        "helping you recover from damage taken during combat\n\n"
+        "It tends to be one of the most highly contested items on a map, particularly in game modes like Duel"),
+    COLORED_NAME(HealthMega));
+}
+#endif
index 94265163f899051e240f933db5fb5be740cde559..3dbf93e10b4421b01dc6670264f41e23f4d832cb 100644 (file)
@@ -60,15 +60,6 @@ CLASS(HealthSmall, Health)
 /* pickupanyway */ ATTRIB(HealthSmall, m_pickupanyway, float, GET(g_pickup_healthsmall_anyway));
 /* iteminit     */ ATTRIB(HealthSmall, m_iteminit, void(Pickup this, entity item), item_healthsmall_init);
 #endif
-#ifdef MENUQC
-METHOD(HealthSmall, describe, string(HealthSmall this))
-{
-    TC(HealthSmall, this);
-    return sprintf(_("The %s restores a small amount of health when picked up, "
-        "helping you recover from damage taken during combat"),
-    COLORED_NAME(HealthSmall));
-}
-#endif
 ENDCLASS(HealthSmall)
 REGISTER_ITEM(HealthSmall, NEW(HealthSmall));
 
@@ -119,15 +110,6 @@ CLASS(HealthMedium, Health)
 /* pickupanyway */ ATTRIB(HealthMedium, m_pickupanyway, float, GET(g_pickup_healthmedium_anyway));
 /* iteminit     */ ATTRIB(HealthMedium, m_iteminit, void(Pickup this, entity item), item_healthmedium_init);
 #endif
-#ifdef MENUQC
-METHOD(HealthMedium, describe, string(HealthMedium this))
-{
-    TC(HealthMedium, this);
-    return sprintf(_("The %s restores a medium amount of health when picked up, "
-        "helping you recover from damage taken during combat"),
-    COLORED_NAME(HealthMedium));
-}
-#endif
 ENDCLASS(HealthMedium)
 REGISTER_ITEM(HealthMedium, NEW(HealthMedium));
 
@@ -177,15 +159,6 @@ CLASS(HealthBig, Health)
 /* pickupanyway */ ATTRIB(HealthBig, m_pickupanyway, float, GET(g_pickup_healthbig_anyway));
 /* iteminit     */ ATTRIB(HealthBig, m_iteminit, void(Pickup this, entity item), item_healthbig_init);
 #endif
-#ifdef MENUQC
-METHOD(HealthBig, describe, string(HealthBig this))
-{
-    TC(HealthBig, this);
-    return sprintf(_("The %s restores a large amount of health when picked up, "
-        "helping you recover from damage taken during combat"),
-    COLORED_NAME(HealthBig));
-}
-#endif
 ENDCLASS(HealthBig)
 REGISTER_ITEM(HealthBig, NEW(HealthBig));
 
@@ -236,16 +209,6 @@ CLASS(HealthMega, Health)
 /* pickupanyway */ ATTRIB(HealthMega, m_pickupanyway, float, GET(g_pickup_healthmega_anyway));
 /* iteminit     */ ATTRIB(HealthMega, m_iteminit, void(Pickup this, entity item), item_healthmega_init);
 #endif
-#ifdef MENUQC
-METHOD(HealthMega, describe, string(HealthMega this))
-{
-    TC(HealthMega, this);
-    return sprintf(_("The %s restores a huge amount of health when picked up, "
-        "helping you recover from damage taken during combat\n\n"
-        "It tends to be one of the most highly contested items on a map, particularly in game modes like Duel"),
-    COLORED_NAME(HealthMega));
-}
-#endif
 ENDCLASS(HealthMega)
 REGISTER_ITEM(HealthMega, NEW(HealthMega));
 
index 11b9d924309d32e5e666c38827ae841dce043ae3..698c0b1db47f73cd59360798278cc09a4104159b 100644 (file)
@@ -1,23 +1,44 @@
 #include "jetpack.qh"
 
 #ifdef SVQC
-
 METHOD(Jetpack, m_spawnfunc_hookreplace, GameItem(Jetpack this, entity e))
 {
-       if(start_items & ITEM_Jetpack.m_itemid)
-       {
+       if (start_items & ITEM_Jetpack.m_itemid)
                return ITEM_JetpackFuel;
-       }
        return this;
 }
 
 METHOD(JetpackRegen, m_spawnfunc_hookreplace, GameItem(JetpackRegen this, entity e))
 {
        if (start_items & ITEM_JetpackRegen.m_itemid)
-       {
                return ITEM_JetpackFuel;
-       }
        return this;
 }
+#endif
+
+#ifdef MENUQC
+METHOD(Jetpack, describe, string(Jetpack this))
+{
+       TC(Jetpack, this);
+       return sprintf(_("The %s allows you to fly around the map for a short period, "
+               "providing increased mobility, maneuverability, and the ability to reach higher ground\n\n"
+               "It consumes Fuel ammo while operating, so make sure you don't run out when you're high up!"),
+       COLORED_NAME(Jetpack));
+}
 
+METHOD(JetpackFuel, describe, string(JetpackFuel this))
+{
+       TC(JetpackFuel, this);
+       return sprintf(_("The %s ammo type is used by the %s"),
+       COLORED_NAME(JetpackFuel), COLORED_NAME(Jetpack));
+}
+
+METHOD(JetpackRegen, describe, string(JetpackRegen this))
+{
+       TC(JetpackRegen, this);
+       return sprintf(_("The %s powerup regenerates %s needed for the %s until the powerup expires, "
+               "so you can continue flying around for longer\n\n"
+               "Since it is a powerup, it will drop if you die while holding it"),
+       COLORED_NAME(JetpackRegen), COLORED_NAME(JetpackFuel), COLORED_NAME(Jetpack));
+}
 #endif
index 4df3f5984869313daff82267ad30c2ebee012995..5176aed7f2a5b560182b0796aa87d22b36b7d6a2 100644 (file)
@@ -48,16 +48,6 @@ CLASS(Jetpack, Powerup)
 /* pickupfunc */ ATTRIB(Jetpack, m_pickupevalfunc, float(entity player, entity item), ammo_pickupevalfunc);
 /* iteminit   */ ATTRIB(Jetpack, m_iteminit, void(Pickup this, entity item), powerup_jetpack_init);
 #endif
-#ifdef MENUQC
-METHOD(Jetpack, describe, string(Jetpack this))
-{
-    TC(Jetpack, this);
-    return sprintf(_("The %s allows you to fly around the map for a short period, "
-        "providing increased mobility, maneuverability, and the ability to reach higher ground\n\n"
-        "It consumes Fuel ammo while operating, so make sure you don't run out when you're high up!"),
-    COLORED_NAME(Jetpack));
-}
-#endif
 ENDCLASS(Jetpack)
 REGISTER_ITEM(Jetpack, NEW(Jetpack));
 
@@ -91,14 +81,6 @@ CLASS(JetpackFuel, Ammo)
 /* itemid     */ ATTRIB(JetpackFuel, m_itemid, int, IT_RESOURCE);
 /* iteminit   */ ATTRIB(JetpackFuel, m_iteminit, void(Pickup this, entity item), ammo_fuel_init);
 #endif
-#ifdef MENUQC
-METHOD(JetpackFuel, describe, string(JetpackFuel this))
-{
-    TC(JetpackFuel, this);
-    return sprintf(_("The %s ammo type is used by the %s"),
-    COLORED_NAME(JetpackFuel), COLORED_NAME(Jetpack));
-}
-#endif
 ENDCLASS(JetpackFuel)
 REGISTER_ITEM(JetpackFuel, NEW(JetpackFuel));
 
@@ -136,16 +118,6 @@ CLASS(JetpackRegen, Powerup)
 /* pickupfunc */ ATTRIB(JetpackRegen, m_pickupevalfunc, float(entity player, entity item), ammo_pickupevalfunc);
 /* iteminit   */ ATTRIB(JetpackRegen, m_iteminit, void(Pickup this, entity item), powerup_fuelregen_init);
 #endif
-#ifdef MENUQC
-METHOD(JetpackRegen, describe, string(JetpackRegen this))
-{
-    TC(JetpackRegen, this);
-    return sprintf(_("The %s powerup regenerates %s needed for the %s until the powerup expires, "
-        "so you can continue flying around for longer\n\n"
-        "Since it is a powerup, it will drop if you die while holding it"),
-    COLORED_NAME(JetpackRegen), COLORED_NAME(JetpackFuel), COLORED_NAME(Jetpack));
-}
-#endif
 ENDCLASS(JetpackRegen)
 REGISTER_ITEM(JetpackRegen, NEW(JetpackRegen));
 
index 8762dd9e4253ce2a28e5792a82cc67f0331ccaeb..f6507825d3b16f9b78995c2736683373a9736a37 100644 (file)
@@ -280,3 +280,11 @@ METHOD(Golem, mr_setup, bool(Golem this, entity actor))
     return true;
 }
 #endif
+#ifdef MENUQC
+METHOD(Golem, describe, string(Golem this))
+{
+    TC(Golem, this);
+    return _("Golems are truly a force to be feared. They tend to have an immense amount of health and take only half the damage from explosions\n\n"
+             "His pride and joy is his lightning energy attack. His attacks are throwing electro balls, and if the prey is near him he will attack with his claws");
+}
+#endif
index 5414b25293d06df4f7cd24aeacf052ce483c0efd..2f6ad8417eca97a6716abbc349994ea43d42c8ba 100644 (file)
@@ -15,14 +15,6 @@ CLASS(Golem, Monster)
 #endif
     ATTRIB(Golem, netname, string, "golem");
     ATTRIB(Golem, m_name, string, _("Golem"));
-#ifdef MENUQC
-    METHOD(Golem, describe, string(Golem this))
-    {
-        TC(Golem, this);
-        return _("Golems are truly a force to be feared. They tend to have an immense amount of health and take only half the damage from explosions\n\n"
-                 "His pride and joy is his lightning energy attack. His attacks are throwing electro balls, and if the prey is near him he will attack with his claws");
-    }
-#endif
 ENDCLASS(Golem)
 
 REGISTER_MONSTER(GOLEM, NEW(Golem));
index 6e6b7324d8bdd5a72dba9b862971449087e883d9..456774e7ab159b32535f848e1de7776fa61aabff 100644 (file)
@@ -486,3 +486,12 @@ METHOD(Mage, mr_setup, bool(Mage this, entity actor))
     return true;
 }
 #endif
+#ifdef MENUQC
+METHOD(Mage, describe, string(Mage this))
+{
+    TC(Mage, this);
+    return _("Mages are capable of developing magic with their powerful knowledge that they learn and practice during their spell sciences. "
+             "Sometimes the Mage can give regeneration to the owner and sometimes makes the owner pay the health for his needs to be with him\n\n"
+             "The Mage attacks by launching magic balls. This spell attack is known as \"Mage spike\"");
+}
+#endif
index 89b1ad6a774f40b9e990fd04d9296a70c1dd5df9..a5e3b9e0a0f227a2429ffd64665b0fa2b87b4a75 100644 (file)
@@ -15,15 +15,6 @@ CLASS(Mage, Monster)
 #endif
     ATTRIB(Mage, netname, string, "mage");
     ATTRIB(Mage, m_name, string, _("Mage"));
-#ifdef MENUQC
-    METHOD(Mage, describe, string(Mage this))
-    {
-        TC(Mage, this);
-        return _("Mages are capable of developing magic with their powerful knowledge that they learn and practice during their spell sciences. "
-                 "Sometimes the Mage can give regeneration to the owner and sometimes makes the owner pay the health for his needs to be with him\n\n"
-                 "The Mage attacks by launching magic balls. This spell attack is known as \"Mage spike\"");
-    }
-#endif
 ENDCLASS(Mage)
 
 REGISTER_MONSTER(MAGE, NEW(Mage));
index 0d0936eabb530a298930a56e830514f0a41e66b7..5a6ee384a0e39e582960553c2b777b39362eeedf 100644 (file)
@@ -235,3 +235,11 @@ METHOD(Spider, mr_setup, bool(Spider this, entity actor))
     return true;
 }
 #endif
+#ifdef MENUQC
+METHOD(Spider, describe, string(Spider this))
+{
+    TC(Spider, this);
+    return _("The Spider is a big arachnid that walks with 8 legs only on the ground, traveling faster than other monsters\n\n"
+             "When an opponent approaches a Spider, it will spit cobweb energy balls to slow down prey, then attack nearby opponents with its chelicerae");
+}
+#endif
index 7ad4498899a4b89fa4b80fb3f984da9e449f25dc..aebbf52752cda51fcef0d5f9bf05cded60b61cc4 100644 (file)
@@ -16,14 +16,6 @@ CLASS(Spider, Monster)
 #endif
     ATTRIB(Spider, netname, string, "spider");
     ATTRIB(Spider, m_name, string, _("Spider"));
-#ifdef MENUQC
-    METHOD(Spider, describe, string(Spider this))
-    {
-        TC(Spider, this);
-        return _("The Spider is a big arachnid that walks with 8 legs only on the ground, traveling faster than other monsters\n\n"
-                 "When an opponent approaches a Spider, it will spit cobweb energy balls to slow down prey, then attack nearby opponents with its chelicerae");
-    }
-#endif
 ENDCLASS(Spider)
 
 REGISTER_MONSTER(SPIDER, NEW(Spider));
index 3b48c67e7d96f8eb41a006e049fd09b2f4b63164..3fce73df72cb3e9b5c58f53f630892dd3b61e763 100644 (file)
@@ -179,3 +179,12 @@ METHOD(Wyvern, mr_setup, bool(Wyvern this, entity actor))
     return true;
 }
 #endif
+#ifdef MENUQC
+METHOD(Wyvern, describe, string(Wyvern this))
+{
+    TC(Wyvern, this);
+    return _("The Wyvern is a dragon that was said to breathe fire or to possess a poisonous breath, a reptilian body, two legs or sometimes none, and a spiked tail. "
+             "The alleged marine variant had a fishtail instead of the spiny dragon tail\n\n"
+             "Wyvern flies around the map and chases and attacks his opponents with fireballs");
+}
+#endif
index 0b4edf0006860c8da99d953a4f733abe04169f0e..2f2fc95bc9c1c3857721d3b5c4b4d40f1cb3a84e 100644 (file)
@@ -15,15 +15,6 @@ CLASS(Wyvern, Monster)
 #endif
     ATTRIB(Wyvern, netname, string, "wyvern");
     ATTRIB(Wyvern, m_name, string, _("Wyvern"));
-#ifdef MENUQC
-    METHOD(Wyvern, describe, string(Wyvern this))
-    {
-        TC(Wyvern, this);
-        return _("The Wyvern is a dragon that was said to breathe fire or to possess a poisonous breath, a reptilian body, two legs or sometimes none, and a spiked tail. "
-                 "The alleged marine variant had a fishtail instead of the spiny dragon tail\n\n"
-                 "Wyvern flies around the map and chases and attacks his opponents with fireballs");
-    }
-#endif
 ENDCLASS(Wyvern)
 
 REGISTER_MONSTER(WYVERN, NEW(Wyvern));
index 4cb4427706462f3a981e38781d07bac1ff51ca57..b9bdce0f26f37c32a5eac3cd7eb4d3b7ad2b9a34 100644 (file)
@@ -171,3 +171,13 @@ METHOD(Zombie, mr_setup, bool(Zombie this, entity actor))
     return true;
 }
 #endif
+#ifdef MENUQC
+METHOD(Zombie, describe, string(Zombie this))
+{
+    TC(Zombie, this);
+    return _("The Zombie is an undead human that tears chunks of flesh from its head, hindquarters, and crotch before proceeding to toss them at the player character for minor damage\n\n"
+             "When an opponent comes too close to the Zombie, it will start chasing then launch to attack with a bite\n\n"
+             "When a Zombie is close to death, it will stand in a \"dead pose,\" from which it can be revived. "
+             "To properly kill one, you will need to damage the Zombie when it is in a dead pose");
+}
+#endif
index 5a7054d7162f03103c3643f3eac888f8dd37d0d7..31b41c1f296c6e3278ec79fd5c1c527a066ef691 100644 (file)
@@ -15,16 +15,6 @@ CLASS(Zombie, Monster)
 #endif
     ATTRIB(Zombie, netname, string, "zombie");
     ATTRIB(Zombie, m_name, string, _("Zombie"));
-#ifdef MENUQC
-    METHOD(Zombie, describe, string(Zombie this))
-    {
-        TC(Zombie, this);
-        return _("The Zombie is an undead human that tears chunks of flesh from its head, hindquarters, and crotch before proceeding to toss them at the player character for minor damage\n\n"
-                 "When an opponent comes too close to the Zombie, it will start chasing then launch to attack with a bite\n\n"
-                 "When a Zombie is close to death, it will stand in a \"dead pose,\" from which it can be revived. "
-                 "To properly kill one, you will need to damage the Zombie when it is in a dead pose");
-    }
-#endif
 ENDCLASS(Zombie)
 
 REGISTER_MONSTER(ZOMBIE, NEW(Zombie));
index b0205a5f7b30aeb1dece55525c0943777eadbfcd..923c5be19c48df29c846785bcd1ad02577a3c939 100644 (file)
@@ -1 +1,21 @@
 #include "items.qh"
+
+#ifdef MENUQC
+METHOD(VaporizerCells, describe, string(VaporizerCells this))
+{
+    // can't include common/weapons/weapon/vaporizer.qh or else circular includes
+#define VAPORIZER_COLOR strcat(rgb_to_hexcolor(COLOR_WEP_VAPORIZER), _("Vaporizer"), "^7")
+    TC(VaporizerCells, this);
+    return sprintf(_("The %s is sometimes present on maps when InstaGib is enabled, providing ammo for the %s"),
+    COLORED_NAME(VaporizerCells), VAPORIZER_COLOR);
+#undef VAPORIZER_COLOR
+}
+
+METHOD(ExtraLife, describe, string(ExtraLife this))
+{
+    TC(ExtraLife, this);
+    return sprintf(_("The %s powerup acts as armor in InstaGib. "
+        "If a player is shot while having one or more extra lives, they will survive the shot but suffer strong knockback"),
+    COLORED_NAME(ExtraLife));
+}
+#endif
index 1089bf424e5f2777c57dc0b67ea21a7669d9388c..39b8eecdfdfdbd21790df448f4dc7a3729e36056 100644 (file)
@@ -41,17 +41,6 @@ CLASS(VaporizerCells, Ammo)
 /*             */ ATTRIB(VaporizerCells, m_respawntimejitter, float, GET(instagib_respawntimejitter_ammo));
 /* iteminit    */ ATTRIB(VaporizerCells, m_iteminit, void(Pickup this, entity item), ammo_vaporizercells_init);
 #endif
-#ifdef MENUQC
-METHOD(VaporizerCells, describe, string(VaporizerCells this))
-{
-    // can't include common/weapons/weapon/vaporizer.qh or else circular includes
-#define VAPORIZER_COLOR strcat(rgb_to_hexcolor(COLOR_WEP_VAPORIZER), _("Vaporizer"), "^7")
-    TC(VaporizerCells, this);
-    return sprintf(_("The %s is sometimes present on maps when InstaGib is enabled, providing ammo for the %s"),
-    COLORED_NAME(VaporizerCells), VAPORIZER_COLOR);
-#undef VORTEX_COLOR
-}
-#endif
 ENDCLASS(VaporizerCells)
 REGISTER_ITEM(VaporizerCells, NEW(VaporizerCells));
 
@@ -78,15 +67,6 @@ CLASS(ExtraLife, Powerup)
 #ifdef SVQC
 /* itemid    */ ATTRIB(ExtraLife, m_itemid, int, IT_RESOURCE);
 #endif
-#ifdef MENUQC
-METHOD(ExtraLife, describe, string(ExtraLife this))
-{
-    TC(ExtraLife, this);
-    return sprintf(_("The %s powerup acts as armor in InstaGib. "
-        "If a player is shot while having one or more extra lives, they will survive the shot but suffer strong knockback"),
-    COLORED_NAME(ExtraLife));
-}
-#endif
 ENDCLASS(ExtraLife)
 REGISTER_ITEM(ExtraLife, NEW(ExtraLife));
 
index 6f4693f2afb1f08dc5bc77ba46ca72ac28779874..e4ddcc18e05abb6a5933007c3748f0e348314ee9 100644 (file)
@@ -155,3 +155,19 @@ METHOD(OverkillHeavyMachineGun, wr_impacteffect, void(entity thiswep, entity act
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(OverkillHeavyMachineGun, describe, string(OverkillHeavyMachineGun this))
+{
+       TC(OverkillHeavyMachineGun, this);
+       return sprintf(_("The %s is a superweapon that rapidly fires harmful bullets with a small degree of spread\n\n"
+               "Like with all Overkill weapons, the secondary fire shoots a laser which does not damage or push enemies, but can be used to push yourself around\n\n"
+               "It is a superweapon found on some maps, meaning that it breaks down after some time\n\n"
+               "The primary fire consumes %s ammo, although you spawn with an infinite amount of it in Overkill. "
+               "It has a limited magazine size, so needs reloading after several shots\n\n"
+               "The %s can be used in a lot of situations, and it works particularly well at long ranges since the bullets pierce the sky instantaneously\n\n"
+               "Since its bullets deal a lot more damage than the %s's bullets, it is often heavily contested when it spawns in"),
+       COLORED_NAME(OverkillHeavyMachineGun), COLORED_NAME(Bullets), COLORED_NAME(OverkillHeavyMachineGun), COLORED_NAME(OverkillMachineGun));
+}
+
+#endif
index 43eb094639391ddfc9989d2b927c8c20cfd23f35..052fc247a0d75334571fde9e9f86b3ef7c4a56e4 100644 (file)
@@ -48,20 +48,6 @@ CLASS(OverkillHeavyMachineGun, Weapon)
        END()
        W_PROPS(X, OverkillHeavyMachineGun, okhmg)
 #undef X
-#ifdef MENUQC
-METHOD(OverkillHeavyMachineGun, describe, string(OverkillHeavyMachineGun this))
-{
-       TC(OverkillHeavyMachineGun, this);
-       return sprintf(_("The %s is a superweapon that rapidly fires harmful bullets with a small degree of spread\n\n"
-               "Like with all Overkill weapons, the secondary fire shoots a laser which does not damage or push enemies, but can be used to push yourself around\n\n"
-               "It is a superweapon found on some maps, meaning that it breaks down after some time\n\n"
-               "The primary fire consumes %s ammo, although you spawn with an infinite amount of it in Overkill. "
-               "It has a limited magazine size, so needs reloading after several shots\n\n"
-               "The %s can be used in a lot of situations, and it works particularly well at long ranges since the bullets pierce the sky instantaneously\n\n"
-               "Since its bullets deal a lot more damage than the %s's bullets, it is often heavily contested when it spawns in"),
-       COLORED_NAME(OverkillHeavyMachineGun), COLORED_NAME(Bullets), COLORED_NAME(OverkillHeavyMachineGun), COLORED_NAME(OverkillMachineGun));
-}
-#endif
 ENDCLASS(OverkillHeavyMachineGun)
 REGISTER_WEAPON(OVERKILL_HMG, NEW(OverkillHeavyMachineGun));
 
index 041ea0b5d4385ca6acc1f0155d785aef63be8d37..7c5d8fc8a90843f50a33324baee0a29cce0a1abb 100644 (file)
@@ -155,3 +155,17 @@ METHOD(OverkillMachineGun, wr_impacteffect, void(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(OverkillMachineGun, describe, string(OverkillMachineGun this))
+{
+       TC(OverkillMachineGun, this);
+       return sprintf(_("The %s quickly fires bullets with a small degree of spread\n\n"
+               "Like with all Overkill weapons, the secondary fire shoots a laser which does not damage or push enemies, but can be used to push yourself around\n\n"
+               "The primary fire consumes %s ammo, although you spawn with an infinite amount of it in Overkill. "
+               "It has a limited magazine size, so needs reloading after several shots\n\n"
+               "The %s can be used in a lot of situations, and it works particularly well at long ranges since the bullets pierce the sky instantaneously"),
+       COLORED_NAME(OverkillMachineGun), COLORED_NAME(Bullets), COLORED_NAME(OverkillMachineGun));
+}
+
+#endif
index 43f9274f20e8840dd80bfa66a2fb023aefe967b8..97af8e400b739fb4b0a75acbd0f6914c0cc0a050 100644 (file)
@@ -47,18 +47,6 @@ CLASS(OverkillMachineGun, Weapon)
        END()
        W_PROPS(X, OverkillMachineGun, okmachinegun)
 #undef X
-#ifdef MENUQC
-METHOD(OverkillMachineGun, describe, string(OverkillMachineGun this))
-{
-       TC(OverkillMachineGun, this);
-       return sprintf(_("The %s quickly fires bullets with a small degree of spread\n\n"
-               "Like with all Overkill weapons, the secondary fire shoots a laser which does not damage or push enemies, but can be used to push yourself around\n\n"
-               "The primary fire consumes %s ammo, although you spawn with an infinite amount of it in Overkill. "
-               "It has a limited magazine size, so needs reloading after several shots\n\n"
-               "The %s can be used in a lot of situations, and it works particularly well at long ranges since the bullets pierce the sky instantaneously"),
-       COLORED_NAME(OverkillMachineGun), COLORED_NAME(Bullets), COLORED_NAME(OverkillMachineGun));
-}
-#endif
 ENDCLASS(OverkillMachineGun)
 REGISTER_WEAPON(OVERKILL_MACHINEGUN, NEW(OverkillMachineGun));
 
index 2b205fea9ce966467d6bbc37adebdf5363415ced..bd83b3a5f0e6cff0660897f3c76a9c6c84a6a2b6 100644 (file)
@@ -362,3 +362,17 @@ METHOD(OverkillNex, wr_zoomdir, bool(entity thiswep))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(OverkillNex, describe, string(OverkillNex this))
+{
+       TC(OverkillNex, this);
+       return sprintf(_("The %s fires harmful beams of energy that traverse the map instantaneously and deal a significant chunk of damage on impact\n\n"
+               "Like with all Overkill weapons, the secondary fire shoots a laser which does not damage or push enemies, but can be used to push yourself around\n\n"
+               "The primary fire consumes %s ammo, although you spawn with an infinite amount of it in Overkill. "
+               "It has a limited magazine size, so needs reloading after several shots\n\n"
+               "Since it is the only Overkill weapon with no spread, the %s stands out at long ranges"),
+       COLORED_NAME(OverkillNex), COLORED_NAME(Cells), COLORED_NAME(OverkillNex));
+}
+
+#endif
index 937efe863ceaa48517516310c3e05bb528885058..e2ed566400d384e8b11d3c2dafdd3d158d4b8f13 100644 (file)
@@ -59,18 +59,6 @@ CLASS(OverkillNex, Weapon)
        END()
        W_PROPS(X, OverkillNex, oknex)
 #undef X
-#ifdef MENUQC
-METHOD(OverkillNex, describe, string(OverkillNex this))
-{
-       TC(OverkillNex, this);
-       return sprintf(_("The %s fires harmful beams of energy that traverse the map instantaneously and deal a significant chunk of damage on impact\n\n"
-               "Like with all Overkill weapons, the secondary fire shoots a laser which does not damage or push enemies, but can be used to push yourself around\n\n"
-               "The primary fire consumes %s ammo, although you spawn with an infinite amount of it in Overkill. "
-               "It has a limited magazine size, so needs reloading after several shots\n\n"
-               "Since it is the only Overkill weapon with no spread, the %s stands out at long ranges"),
-       COLORED_NAME(OverkillNex), COLORED_NAME(Cells), COLORED_NAME(OverkillNex));
-}
-#endif
 ENDCLASS(OverkillNex)
 REGISTER_WEAPON(OVERKILL_NEX, NEW(OverkillNex));
 
index 46a783ce550220840597ca6db5697ddcb117ee01..f456ca8523fe36655016aa7e5a91bc415c41382a 100644 (file)
@@ -231,3 +231,17 @@ METHOD(OverkillRocketPropelledChainsaw, wr_impacteffect, void(entity thiswep, en
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(OverkillRocketPropelledChainsaw, describe, string(OverkillRocketPropelledChainsaw this))
+{
+       TC(OverkillRocketPropelledChainsaw, this);
+       return sprintf(_("As the name suggests, the %s is a superweapon that fires a rocket propelled chainsaw which explodes on impact, dealing a lot of splash damage to any players close by\n\n"
+               "Like with all Overkill weapons, the secondary fire shoots a laser which does not damage or push enemies, but can be used to push yourself around\n\n"
+               "It is a superweapon found on some maps, meaning that it breaks down after some time\n\n"
+               "The primary fire consumes %s ammo, although you spawn with an infinite amount of it in Overkill\n\n"
+               "Since it is the only Overkill weapon which deals splash damage, the %s is a good choice of weapon for attacking groups of enemies"),
+       COLORED_NAME(OverkillRocketPropelledChainsaw), COLORED_NAME(Rockets), COLORED_NAME(OverkillRocketPropelledChainsaw));
+}
+
+#endif
index a8cc06945bcad9088817e41975484d55020005f3..26ad75e465481d4b8aed384ce61fbd8097185e75 100644 (file)
@@ -50,18 +50,6 @@ CLASS(OverkillRocketPropelledChainsaw, Weapon)
        END()
        W_PROPS(X, OverkillRocketPropelledChainsaw, okrpc)
 #undef X
-#ifdef MENUQC
-METHOD(OverkillRocketPropelledChainsaw, describe, string(OverkillRocketPropelledChainsaw this))
-{
-       TC(OverkillRocketPropelledChainsaw, this);
-       return sprintf(_("As the name suggests, the %s is a superweapon that fires a rocket propelled chainsaw which explodes on impact, dealing a lot of splash damage to any players close by\n\n"
-               "Like with all Overkill weapons, the secondary fire shoots a laser which does not damage or push enemies, but can be used to push yourself around\n\n"
-               "It is a superweapon found on some maps, meaning that it breaks down after some time\n\n"
-               "The primary fire consumes %s ammo, although you spawn with an infinite amount of it in Overkill\n\n"
-               "Since it is the only Overkill weapon which deals splash damage, the %s is a good choice of weapon for attacking groups of enemies"),
-       COLORED_NAME(OverkillRocketPropelledChainsaw), COLORED_NAME(Rockets), COLORED_NAME(OverkillRocketPropelledChainsaw));
-}
-#endif
 ENDCLASS(OverkillRocketPropelledChainsaw)
 REGISTER_WEAPON(OVERKILL_RPC, NEW(OverkillRocketPropelledChainsaw));
 
index 886401002e363d79fcb86edf092bf71426f6e1e8..9162b1295c275cf9ac1fa5db6ddcbd888925f768 100644 (file)
@@ -120,3 +120,17 @@ METHOD(OverkillShotgun, wr_impacteffect, void(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(OverkillShotgun, describe, string(OverkillShotgun this))
+{
+       TC(OverkillShotgun, this);
+       return sprintf(_("The %s fires a single shotgun round which spreads into multiple pellets upon exiting the barrel, dealing a deadly blow if up close\n\n"
+               "Like with all Overkill weapons, the secondary fire shoots a laser which does not damage or push enemies, but can be used to push yourself around\n\n"
+               "The primary fire consumes %s ammo, although you spawn with an infinite amount of it in Overkill. "
+               "It has a limited magazine size, so needs reloading after several shots\n\n"
+               "The %s's damage drops off quickly as the range increases, so it is only useful for close combat or sometimes medium range combat"),
+       COLORED_NAME(OverkillShotgun), COLORED_NAME(Shells), COLORED_NAME(OverkillShotgun));
+}
+
+#endif
index fe797d5604f68cd0046be0441cfb4c342b33fb08..731d52b610d1eb4545198c2f8c91db8c41f616f4 100644 (file)
@@ -48,18 +48,6 @@ CLASS(OverkillShotgun, Weapon)
        END()
        W_PROPS(X, OverkillShotgun, okshotgun)
 #undef X
-#ifdef MENUQC
-METHOD(OverkillShotgun, describe, string(OverkillShotgun this))
-{
-       TC(OverkillShotgun, this);
-       return sprintf(_("The %s fires a single shotgun round which spreads into multiple pellets upon exiting the barrel, dealing a deadly blow if up close\n\n"
-               "Like with all Overkill weapons, the secondary fire shoots a laser which does not damage or push enemies, but can be used to push yourself around\n\n"
-               "The primary fire consumes %s ammo, although you spawn with an infinite amount of it in Overkill. "
-               "It has a limited magazine size, so needs reloading after several shots\n\n"
-               "The %s's damage drops off quickly as the range increases, so it is only useful for close combat or sometimes medium range combat"),
-       COLORED_NAME(OverkillShotgun), COLORED_NAME(Shells), COLORED_NAME(OverkillShotgun));
-}
-#endif
 ENDCLASS(OverkillShotgun)
 REGISTER_WEAPON(OVERKILL_SHOTGUN, NEW(OverkillShotgun));
 
index dda2dcf8fafa6d2848839a608123f202a949fe96..769d14badc2b17c468ea5ed930db4a627091ea08 100644 (file)
@@ -42,3 +42,13 @@ METHOD(Invisibility, m_tick, void(StatusEffects this, entity actor))
     SUPER(Invisibility).m_tick(this, actor);
 }
 #endif
+#ifdef MENUQC
+METHOD(Invisibility, describe, string(Invisibility this))
+{
+    TC(Invisibility, this);
+    return sprintf(_("The %s powerup increases your translucency while the powerup is active, making it more difficult for enemies to see you. "
+        "This powerup is often present in InstaGib\n\n"
+        "Since it is a powerup, it will drop if you die while holding it"),
+    COLORED_NAME(Invisibility));
+}
+#endif
index 8776cf89656d158689795bae8b20ab4e8e461c7a..48339227324a5738c32b25d1c523b297e1f1db3d 100644 (file)
@@ -59,15 +59,5 @@ CLASS(Invisibility, Powerups)
     ATTRIB(Invisibility, m_name, string, _("Invisibility"));
     ATTRIB(Invisibility, m_color, vector, COLOR_POWERUP_INVISIBILITY);
     ATTRIB(Invisibility, m_icon, string, "buff_invisible");
-#ifdef MENUQC
-    METHOD(Invisibility, describe, string(Invisibility this))
-    {
-        TC(Invisibility, this);
-        return sprintf(_("The %s powerup increases your translucency while the powerup is active, making it more difficult for enemies to see you. "
-            "This powerup is often present in InstaGib\n\n"
-            "Since it is a powerup, it will drop if you die while holding it"),
-        COLORED_NAME(Invisibility));
-    }
-#endif
 ENDCLASS(Invisibility)
 REGISTER_STATUSEFFECT(Invisibility, NEW(Invisibility));
index 230967b2b82c9f1575f0adf69cc4050afad053e0..3a1d529a2eaf6ff2b47dcc465a6f173078bcc0c8 100644 (file)
@@ -48,3 +48,13 @@ METHOD(Shield, m_tick, void(StatusEffects this, entity actor))
     addPowerupItem(this.m_name, this.m_icon, autocvar_hud_progressbar_shield_color, currentTime, this.m_lifetime, (actor.statuseffect_flags[this.m_id] & STATUSEFFECT_FLAG_PERSISTENT));
 }
 #endif
+#ifdef MENUQC
+METHOD(Shield, describe, string(Shield this))
+{
+    TC(Shield, this);
+    return sprintf(_("The %s powerup greatly decreases the damage you take until the powerup expires, having a compounding effect with armor. "
+        "It also makes you more resistant to knockback\n\n"
+        "Since it is a powerup, it will drop if you die while holding it"),
+    COLORED_NAME(Shield));
+}
+#endif
index 6f3a41c9faa39d2a0d5c93145e4109af09eb5b20..13b27cb124b961f34839402bb3703be689762aef 100644 (file)
@@ -57,15 +57,5 @@ CLASS(Shield, Powerups)
     ATTRIB(Shield, m_name, string, _("Shield"));
     ATTRIB(Shield, m_color, vector, COLOR_POWERUP_SHIELD);
     ATTRIB(Shield, m_icon, string, "shield");
-#ifdef MENUQC
-    METHOD(Shield, describe, string(Shield this))
-    {
-        TC(Shield, this);
-        return sprintf(_("The %s powerup greatly decreases the damage you take until the powerup expires, having a compounding effect with armor. "
-            "It also makes you more resistant to knockback\n\n"
-            "Since it is a powerup, it will drop if you die while holding it"),
-        COLORED_NAME(Shield));
-    }
-#endif
 ENDCLASS(Shield)
 REGISTER_STATUSEFFECT(Shield, NEW(Shield));
index 069d832f60b1c8db4b3e87c879aa8b34578dc115..1bc9ab6eb88167c779dd635d07aca40df6d128d5 100644 (file)
@@ -30,3 +30,13 @@ METHOD(Speed, m_tick, void(StatusEffects this, entity actor))
     SUPER(Speed).m_tick(this, actor);
 }
 #endif
+#ifdef MENUQC
+METHOD(Speed, describe, string(Speed this))
+{
+    TC(Speed, this);
+    return sprintf(_("The %s powerup increases your movement speed, attack speed, and health regeneration speed while the powerup is active. "
+        "However, it also makes you a bit more vulnerable to incoming attacks\n\n"
+        "Since it is a powerup, it will drop if you die while holding it"),
+    COLORED_NAME(Speed));
+}
+#endif
index 5d34eb34468f0206ffd90009ec97dcf2fd0e305a..9f6f8ccc2dce17badba1fd23d41a988c6e2caf07 100644 (file)
@@ -60,15 +60,5 @@ CLASS(Speed, Powerups)
     ATTRIB(Speed, m_name, string, _("Speed"));
     ATTRIB(Speed, m_color, vector, COLOR_POWERUP_SPEED);
     ATTRIB(Speed, m_icon, string, "buff_speed");
-#ifdef MENUQC
-    METHOD(Speed, describe, string(Speed this))
-    {
-        TC(Speed, this);
-        return sprintf(_("The %s powerup increases your movement speed, attack speed, and health regeneration speed while the powerup is active. "
-            "However, it also makes you a bit more vulnerable to incoming attacks\n\n"
-            "Since it is a powerup, it will drop if you die while holding it"),
-        COLORED_NAME(Speed));
-    }
-#endif
 ENDCLASS(Speed)
 REGISTER_STATUSEFFECT(Speed, NEW(Speed));
index c2f25729216ab1cb388795f3344e67f666f6bfc0..16e47c6fda339e5669f7df0dc8ad24ff261a09b5 100644 (file)
@@ -48,3 +48,14 @@ METHOD(Strength, m_tick, void(StatusEffects this, entity actor))
     addPowerupItem(this.m_name, this.m_icon, autocvar_hud_progressbar_strength_color, currentTime, this.m_lifetime, (actor.statuseffect_flags[this.m_id] & STATUSEFFECT_FLAG_PERSISTENT));
 }
 #endif
+#ifdef MENUQC
+METHOD(Strength, describe, string(Strength this))
+{
+    TC(Strength, this);
+    return sprintf(_("The %s powerup greatly increases the damage you deal, until the powerup expires. "
+        "It also increases the knockback that your attacks deal\n\n"
+        "The damage and knockback you deal to yourself also increases but by a smaller amount\n\n"
+        "Since it is a powerup, it will drop if you die while holding it"),
+    COLORED_NAME(Strength));
+}
+#endif
index de133de26200c07e33b8aeaebb352f7a4590fb98..f4bf17e1c8e27e81c467c7a790698e6b3aae2596 100644 (file)
@@ -58,16 +58,5 @@ CLASS(Strength, Powerups)
     ATTRIB(Strength, m_name, string, _("Strength"));
     ATTRIB(Strength, m_color, vector, COLOR_POWERUP_STRENGTH);
     ATTRIB(Strength, m_icon, string, "strength");
-#ifdef MENUQC
-    METHOD(Strength, describe, string(Strength this))
-    {
-        TC(Strength, this);
-        return sprintf(_("The %s powerup greatly increases the damage you deal, until the powerup expires. "
-            "It also increases the knockback that your attacks deal\n\n"
-            "The damage and knockback you deal to yourself also increases but by a smaller amount\n\n"
-            "Since it is a powerup, it will drop if you die while holding it"),
-        COLORED_NAME(Strength));
-    }
-#endif
 ENDCLASS(Strength)
 REGISTER_STATUSEFFECT(Strength, NEW(Strength));
index a7fcafc38507d9dca2c7e7ef336c810c2e1d1e14..afc8a8c0bae0e387e726b412a226318371aaa5aa 100644 (file)
@@ -976,3 +976,17 @@ METHOD(Bumblebee, vr_setup, void(Bumblebee thisveh, entity instance))
 #endif
 
 #endif
+#ifdef MENUQC
+
+METHOD(Bumblebee, describe, string(Bumblebee this))
+{
+    TC(Bumblebee, this);
+    return sprintf(_("The %s vehicle seats up to three passengers, who are given different roles based on the order they enter\n\n"
+        "The first player to enter will be the pilot, flying the vehicle up into the skies. "
+        "The first player can also shoot a green healing wave to heal other teammates on the ground\n\n"
+        "The second player to enter is the right gunner and the third player to enter is the left gunner\n\n"
+        "When the pilot exits the vehicle, the players switch roles by moving up in position"),
+    COLORED_NAME(Bumblebee));
+}
+
+#endif
index 05fc9f95098c363bfa3eb415990474f1e17901d8..a6ab612db2d1f5c135b3eaed1d99723f088a16cf 100644 (file)
@@ -23,18 +23,6 @@ CLASS(Bumblebee, Vehicle)
 /* netname    */ ATTRIB(Bumblebee, netname, string, "bumblebee");
 /* fullname   */ ATTRIB(Bumblebee, m_name, string, _("Bumblebee"));
 /* icon       */ ATTRIB(Bumblebee, m_icon, string, "vehicle_bumble");
-#ifdef MENUQC
-METHOD(Bumblebee, describe, string(Bumblebee this))
-{
-       TC(Bumblebee, this);
-       return sprintf(_("The %s vehicle seats up to three passengers, who are given different roles based on the order they enter\n\n"
-               "The first player to enter will be the pilot, flying the vehicle up into the skies. "
-               "The first player can also shoot a green healing wave to heal other teammates on the ground\n\n"
-               "The second player to enter is the right gunner and the third player to enter is the left gunner\n\n"
-               "When the pilot exits the vehicle, the players switch roles by moving up in position"),
-       COLORED_NAME(Bumblebee));
-}
-#endif
 ENDCLASS(Bumblebee)
 REGISTER_VEHICLE(BUMBLEBEE, NEW(Bumblebee));
 
index adffbfce002414ebbac5ab7bffea06cb5d5592d4..9ff0f64352774a4e6b2b64e20eeacdd4291e2159 100644 (file)
@@ -641,3 +641,16 @@ METHOD(Racer, vr_setup, void(Racer thisveh, entity instance))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Racer, describe, string(Racer this))
+{
+    TC(Racer, this);
+    return sprintf(_("The %s vehicle looks like a jet, but does not fly uwpards very well. "
+        "It seats only one passenger, who becomes the pilot\n\n"
+        "It can be accelerated by pressing the ^3+jump^7 bind, which consumes power from the same source as the primary weapon\n\n"
+        "The %s's primary weapon is a laser and the secondary weapon is energy balls that explode on impact"),
+    COLORED_NAME(Racer), COLORED_NAME(Racer));
+}
+
+#endif
index b7573208922081137f730995837122923f6bfb79..1224d50ad92239caaf6c1ca021d2f861b6868988 100644 (file)
@@ -23,16 +23,5 @@ CLASS(Racer, Vehicle)
 /* netname    */ ATTRIB(Racer, netname, string, "racer");
 /* fullname   */ ATTRIB(Racer, m_name, string, _("Racer"));
 /* icon       */ ATTRIB(Racer, m_icon, string, "vehicle_racer");
-#ifdef MENUQC
-METHOD(Racer, describe, string(Racer this))
-{
-       TC(Racer, this);
-       return sprintf(_("The %s vehicle looks like a jet, but does not fly uwpards very well. "
-               "It seats only one passenger, who becomes the pilot\n\n"
-               "It can be accelerated by pressing the ^3+jump^7 bind, which consumes power from the same source as the primary weapon\n\n"
-               "The %s's primary weapon is a laser and the secondary weapon is energy balls that explode on impact"),
-       COLORED_NAME(Racer), COLORED_NAME(Racer));
-}
-#endif
 ENDCLASS(Racer)
 REGISTER_VEHICLE(RACER, NEW(Racer));
index da2c1da0be446d6e214f4d867753534dc3fdcc26..c7131cb16e9b44f9e140c65318be9718fae2ecd1 100644 (file)
@@ -839,3 +839,20 @@ METHOD(Raptor, vr_setup, void(Raptor thisveh, entity instance))
 #endif
 
 #endif
+#ifdef MENUQC
+
+METHOD(Raptor, describe, string(Raptor this))
+{
+    // can't include ./spiderbot.qh or else circular includes
+#define SPIDERBOT_COLOR strcat(rgb_to_hexcolor('1 1 1'), _("Spiderbot"), "^7")
+    TC(Raptor, this);
+    return sprintf(_("The %s vehicle is a flying vehicle that takes only one pilot, who can also opearate two weapons\n\n"
+        "The two weapons have different reticles for them similar to the %s. "
+        "The primary weapon is laser-based, and is shot toward the white reticle. "
+        "The secondary weapon drops bombs to the ground, aiming towards the green reticle. "
+        "The white reticle always points at the head of the vehicle, while the green reticle's location is determined by the momentum of the vehicle"),
+    COLORED_NAME(Raptor), SPIDERBOT_COLOR);
+#undef SPIDERBOT_COLOR
+}
+
+#endif
index 24c69394c2568bf65863bf9949623cdc43194779..dbfa61a334cafb41245e40d260931a805f3a2127 100644 (file)
@@ -23,21 +23,6 @@ CLASS(Raptor, Vehicle)
 /* netname    */ ATTRIB(Raptor, netname, string, "raptor");
 /* fullname   */ ATTRIB(Raptor, m_name, string, _("Raptor"));
 /* icon       */ ATTRIB(Raptor, m_icon, string, "vehicle_raptor");
-#ifdef MENUQC
-METHOD(Raptor, describe, string(Raptor this))
-{
-       // can't include ./spiderbot.qh or else circular includes
-#define SPIDERBOT_COLOR strcat(rgb_to_hexcolor('1 1 1'), _("Spiderbot"), "^7")
-       TC(Raptor, this);
-       return sprintf(_("The %s vehicle is a flying vehicle that takes only one pilot, who can also opearate two weapons\n\n"
-               "The two weapons have different reticles for them similar to the %s. "
-               "The primary weapon is laser-based, and is shot toward the white reticle. "
-               "The secondary weapon drops bombs to the ground, aiming towards the green reticle. "
-               "The white reticle always points at the head of the vehicle, while the green reticle's location is determined by the momentum of the vehicle"),
-       COLORED_NAME(Raptor), SPIDERBOT_COLOR);
-#undef SPIDERBOT_COLOR
-}
-#endif
 ENDCLASS(Raptor)
 REGISTER_VEHICLE(RAPTOR, NEW(Raptor));
 
index be1229da29faa290854d1c8cfd7617db3feb3813..43f984d83da67e8beeb06682b66dde4527156389 100644 (file)
@@ -644,3 +644,18 @@ METHOD(Spiderbot, vr_setup, void(Spiderbot thisveh, entity instance))
 #endif
 
 #endif
+#ifdef MENUQC
+
+METHOD(Spiderbot, describe, string(Spiderbot this))
+{
+    TC(Spiderbot, this);
+    return sprintf(_("The %s vehicle walks and jumps around, and takes only one rider\n\n"
+        "It can jump from very high altitudes while protecting the rider\n\n"
+        "It has two weapons the rider can control, which have different reticles for them similar to the %s. "
+        "The primary weapon is a machine gun, and is shot toward the green reticle. "
+        "The secondary weapon shoots rockets towards the white reticle. "
+        "The white reticle points to the front of the vehicle, while the green reticle also points to the front, with a bit of delay when the %s rotates"),
+    COLORED_NAME(Spiderbot), COLORED_NAME(Raptor), COLORED_NAME(Spiderbot));
+}
+
+#endif
index 33aa8ad1ff3b869954c1d7ce5a533aaecff48cb0..ca61121fa0b2723d95b71bfd302e1957454dc89b 100644 (file)
@@ -24,19 +24,6 @@ CLASS(Spiderbot, Vehicle)
 /* netname    */ ATTRIB(Spiderbot, netname, string, "spiderbot");
 /* fullname   */ ATTRIB(Spiderbot, m_name, string, _("Spiderbot"));
 /* icon       */ ATTRIB(Spiderbot, m_icon, string, "vehicle_spider");
-#ifdef MENUQC
-METHOD(Spiderbot, describe, string(Spiderbot this))
-{
-       TC(Spiderbot, this);
-       return sprintf(_("The %s vehicle walks and jumps around, and takes only one rider\n\n"
-               "It can jump from very high altitudes while protecting the rider\n\n"
-               "It has two weapons the rider can control, which have different reticles for them similar to the %s. "
-               "The primary weapon is a machine gun, and is shot toward the green reticle. "
-               "The secondary weapon shoots rockets towards the white reticle. "
-               "The white reticle points to the front of the vehicle, while the green reticle also points to the front, with a bit of delay when the %s rotates"),
-       COLORED_NAME(Spiderbot), COLORED_NAME(Raptor), COLORED_NAME(Spiderbot));
-}
-#endif
 ENDCLASS(Spiderbot)
 
 REGISTER_VEHICLE(SPIDERBOT, NEW(Spiderbot));
index c97860003ae3c584e3c876b209a87030cb02a67c..8d1b30908d51d3ebbbd7fba312e302e3be7ba355 100644 (file)
@@ -1509,3 +1509,16 @@ NET_HANDLE(ENT_CLIENT_ARC_BEAM, bool isnew)
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Arc, describe, string(Arc this))
+{
+       TC(Arc, this);
+       return sprintf(_("The %s fires a continuous stream of electricity, steadily dealing damage to any enemies that cross its path\n\n"
+               "The secondary fire rapidly shoots electro balls forward, exploding on impact and dealing some splash damage\n\n"
+               "It consumes %s ammo, steadily churning through your supply to maintain the stream\n\n"
+               "The %s is quite a versatile weapon, however it is more effective at close to medium ranges, since the stream is not instantaneous"),
+       COLORED_NAME(Arc), COLORED_NAME(Cells), COLORED_NAME(Arc));
+}
+
+#endif
index 7a8bcf0d417bc9bd3e3ce10a89740363c374862d..76abc56b7495715dcff24ffaaec7e371bc19279c 100644 (file)
@@ -80,17 +80,6 @@ CLASS(Arc, Weapon)
        END()
        W_PROPS(X, Arc, arc)
 #undef X
-#ifdef MENUQC
-METHOD(Arc, describe, string(Arc this))
-{
-       TC(Arc, this);
-       return sprintf(_("The %s fires a continuous stream of electricity, steadily dealing damage to any enemies that cross its path\n\n"
-               "The secondary fire rapidly shoots electro balls forward, exploding on impact and dealing some splash damage\n\n"
-               "It consumes %s ammo, steadily churning through your supply to maintain the stream\n\n"
-               "The %s is quite a versatile weapon, however it is more effective at close to medium ranges, since the stream is not instantaneous"),
-       COLORED_NAME(Arc), COLORED_NAME(Cells), COLORED_NAME(Arc));
-}
-#endif
 ENDCLASS(Arc)
 REGISTER_WEAPON(ARC, NEW(Arc));
 
index 63e735b3b15cd158182475f3715f89526dc910a6..2e670c42902991e884219f550c1def4cfdfba991 100644 (file)
@@ -152,3 +152,18 @@ METHOD(Blaster, wr_impacteffect, void(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Blaster, describe, string(Blaster this))
+{
+       TC(Blaster, this);
+       return sprintf(_("The %s is one of the two main default weapons, firing a relatively weak high speed laser forwards, dealing some splash damage but importantly a lot of knockback\n\n"
+               "It has no secondary fire, instead switching to the previously selected weapon\n\n"
+               "It doesn't require ammo, meaning it is a great choice if you are running low on ammo and need to preserve some\n\n"
+               "The %s is always available so ends up being used a lot when players spawn in, but it's difficult to master when used over a medium to long range\n\n"
+               "One of the most common uses of the %s is \"laser jumping,\" where you can gain height by aiming down, jumping, then firing to boost yourself up. "
+               "Because it does a lot of knockback, another common usage is alternating between a high damage weapon and the %s to throw the enemy's aim off"),
+       COLORED_NAME(Blaster), COLORED_NAME(Blaster), COLORED_NAME(Blaster), COLORED_NAME(Blaster));
+}
+
+#endif
index 0b2db652aef435e92d82acd6aa00fc429d90bd38..f1617d6cd2aa1fa5a4572c01940ef0250506c2f6 100644 (file)
@@ -45,19 +45,6 @@ CLASS(Blaster, Weapon)
        END()
        W_PROPS(X, Blaster, blaster)
 #undef X
-#ifdef MENUQC
-METHOD(Blaster, describe, string(Blaster this))
-{
-       TC(Blaster, this);
-       return sprintf(_("The %s is one of the two main default weapons, firing a relatively weak high speed laser forwards, dealing some splash damage but importantly a lot of knockback\n\n"
-               "It has no secondary fire, instead switching to the previously selected weapon\n\n"
-               "It doesn't require ammo, meaning it is a great choice if you are running low on ammo and need to preserve some\n\n"
-               "The %s is always available so ends up being used a lot when players spawn in, but it's difficult to master when used over a medium to long range\n\n"
-               "One of the most common uses of the %s is \"laser jumping,\" where you can gain height by aiming down, jumping, then firing to boost yourself up. "
-               "Because it does a lot of knockback, another common usage is alternating between a high damage weapon and the %s to throw the enemy's aim off"),
-       COLORED_NAME(Blaster), COLORED_NAME(Blaster), COLORED_NAME(Blaster), COLORED_NAME(Blaster));
-}
-#endif
 ENDCLASS(Blaster)
 REGISTER_WEAPON(BLASTER, NEW(Blaster));
 
index 7306aef9f4d84df3de4228f68fb879b68029f264..e039665f617896fbf3affdbdd6361f8e18ceed0e 100644 (file)
@@ -628,3 +628,21 @@ METHOD(Crylink, wr_impacteffect, void(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Crylink, describe, string(Crylink this))
+{
+       TC(Crylink, this);
+       return sprintf(_("The %s fires bursts of laser-like projectiles, spreading out as they travel away, and deflecting off walls. "
+               "If the primary fire is held, when it's released the projectiles will converge before spreading out again, "
+               "which can be utilized to deal more damage to an enemy by making the projectiles converge on them\n\n"
+               "The secondary fire shoots the projectiles together in a tight group, so it is often the better option in situations where the enemy is an easy target to hit\n\n"
+               "It consumes %s ammo for each projectile, which is shared by several weapons\n\n"
+               "Close to medium range is the ideal time to use the %s, although the secondary fire can be useful for long range combat sometimes\n\n"
+               "The %s deals knockback in a unique way, pulling the player from their center to the point of impact. "
+               "This makes it one of the best weapons to slow someone down if you are chasing them, particularly with the secondary fire. "
+               "Another common use of the %s is \"crylink running,\" where you partially angle down and use the secondary fire to pull yourself forwards, in order to gain speed"),
+       COLORED_NAME(Crylink), COLORED_NAME(Cells), COLORED_NAME(Crylink), COLORED_NAME(Crylink), COLORED_NAME(Crylink));
+}
+
+#endif
index 0840e8f87cf86e8f7af17bff13f6ac4ccf5ad24a..f27979aba852c1e0969bd9cbffb44a759e6f1faa 100644 (file)
@@ -60,22 +60,6 @@ CLASS(Crylink, Weapon)
        END()
        W_PROPS(X, Crylink, crylink)
 #undef X
-#ifdef MENUQC
-METHOD(Crylink, describe, string(Crylink this))
-{
-       TC(Crylink, this);
-       return sprintf(_("The %s fires bursts of laser-like projectiles, spreading out as they travel away, and deflecting off walls. "
-               "If the primary fire is held, when it's released the projectiles will converge before spreading out again, "
-               "which can be utilized to deal more damage to an enemy by making the projectiles converge on them\n\n"
-               "The secondary fire shoots the projectiles together in a tight group, so it is often the better option in situations where the enemy is an easy target to hit\n\n"
-               "It consumes %s ammo for each projectile, which is shared by several weapons\n\n"
-               "Close to medium range is the ideal time to use the %s, although the secondary fire can be useful for long range combat sometimes\n\n"
-               "The %s deals knockback in a unique way, pulling the player from their center to the point of impact. "
-               "This makes it one of the best weapons to slow someone down if you are chasing them, particularly with the secondary fire. "
-               "Another common use of the %s is \"crylink running,\" where you partially angle down and use the secondary fire to pull yourself forwards, in order to gain speed"),
-       COLORED_NAME(Crylink), COLORED_NAME(Cells), COLORED_NAME(Crylink), COLORED_NAME(Crylink), COLORED_NAME(Crylink));
-}
-#endif
 ENDCLASS(Crylink)
 REGISTER_WEAPON(CRYLINK, NEW(Crylink));
 
index d85cd46349438435b85490144af1b26ce96834a5..671c93223196fdcc9b66ebb552300624e8a6ea03 100644 (file)
@@ -606,3 +606,20 @@ METHOD(Devastator, wr_impacteffect, void(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Devastator, describe, string(Devastator this))
+{
+       TC(Devastator, this);
+       return sprintf(_("The %s launches a remote controlled rocket, dealing significant damage when it explodes on impact. "
+               "If the primary fire is held, the rocket can be guided by the user's aim, allowing steering it towards enemies\n\n"
+               "The secondary fire can be used to immediately detonate the most recently fired rocket, allowing dealing damage to enemies even if the rocket barely missed colliding with them\n\n"
+               "It consumes a bunch of %s ammo for each rocket, which can end up being depleted quickly, so often players alternate with another weapon like %s\n\n"
+               "Due to its high damage output, the %s is one of the most commonly used weapons. "
+               "It can be used in almost any scenario, working best in medium range combat. "
+               "In close range combat, the large splash radius means often rockets can damage yourself as well as the enemy\n\n"
+               "Due to the ability to remotely detonate rockets, a common usage is \"rocket flying\", where you fire a rocket and immediately detonate it to boost yourself while mid-air"),
+       COLORED_NAME(Devastator), COLORED_NAME(Rockets), COLORED_NAME(Vortex), COLORED_NAME(Devastator));
+}
+
+#endif
index 9472648a3014f6ca613bffa9b077e94c7004ba80..39b0762c56e3450c3c7362f3dbc526aecfe8475a 100644 (file)
@@ -67,21 +67,6 @@ CLASS(Devastator, Weapon)
        END()
        W_PROPS(X, Devastator, devastator)
 #undef X
-#ifdef MENUQC
-METHOD(Devastator, describe, string(Devastator this))
-{
-       TC(Devastator, this);
-       return sprintf(_("The %s launches a remote controlled rocket, dealing significant damage when it explodes on impact. "
-               "If the primary fire is held, the rocket can be guided by the user's aim, allowing steering it towards enemies\n\n"
-               "The secondary fire can be used to immediately detonate the most recently fired rocket, allowing dealing damage to enemies even if the rocket barely missed colliding with them\n\n"
-               "It consumes a bunch of %s ammo for each rocket, which can end up being depleted quickly, so often players alternate with another weapon like %s\n\n"
-               "Due to its high damage output, the %s is one of the most commonly used weapons. "
-               "It can be used in almost any scenario, working best in medium range combat. "
-               "In close range combat, the large splash radius means often rockets can damage yourself as well as the enemy\n\n"
-               "Due to the ability to remotely detonate rockets, a common usage is \"rocket flying\", where you fire a rocket and immediately detonate it to boost yourself while mid-air"),
-       COLORED_NAME(Devastator), COLORED_NAME(Rockets), COLORED_NAME(Vortex), COLORED_NAME(Devastator));
-}
-#endif
 ENDCLASS(Devastator)
 REGISTER_WEAPON(DEVASTATOR, NEW(Devastator));
 
index cf67708f4bdf971eb43fc73023fc8e7f92f64b43..fd389645885b67ac62b3cf1e07989a90248fb9ec 100644 (file)
@@ -775,3 +775,19 @@ METHOD(Electro, wr_impacteffect, void(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Electro, describe, string(Electro this))
+{
+       TC(Electro, this);
+       return sprintf(_("The %s shoots electric balls forwards, dealing some splash damage when they burst on impact\n\n"
+               "The secondary fire launches similar balls that are influenced by gravity, "
+               "so they can be laid around the map at high traffic locations (like the flag in Capture The Flag) to damage enemies that walk by. "
+               "The balls burst after some time, and can be forced to burst in a \"combo\" if a primary fire ball bursts near them\n\n"
+               "It consumes some %s ammo for each ball\n\n"
+               "The %s is one of the best spam weapons to use in crowded areas, since combos can deal tons of damage, if the enemy is close enough. "
+               "Since the primary fire doesn't travel particularly fast, the %s is not useful in many other situations"),
+       COLORED_NAME(Electro), COLORED_NAME(Cells), COLORED_NAME(Electro), COLORED_NAME(Electro));
+}
+
+#endif
index b75a15decf422cbd84c9c98372fdb5efc94565e9..c00ab54cec303dc752ebad14cf50291df24c9a80 100644 (file)
@@ -74,20 +74,6 @@ CLASS(Electro, Weapon)
        END()
        W_PROPS(X, Electro, electro)
 #undef X
-#ifdef MENUQC
-METHOD(Electro, describe, string(Electro this))
-{
-       TC(Electro, this);
-       return sprintf(_("The %s shoots electric balls forwards, dealing some splash damage when they burst on impact\n\n"
-               "The secondary fire launches similar balls that are influenced by gravity, "
-               "so they can be laid around the map at high traffic locations (like the flag in Capture The Flag) to damage enemies that walk by. "
-               "The balls burst after some time, and can be forced to burst in a \"combo\" if a primary fire ball bursts near them\n\n"
-               "It consumes some %s ammo for each ball\n\n"
-               "The %s is one of the best spam weapons to use in crowded areas, since combos can deal tons of damage, if the enemy is close enough. "
-               "Since the primary fire doesn't travel particularly fast, the %s is not useful in many other situations"),
-       COLORED_NAME(Electro), COLORED_NAME(Cells), COLORED_NAME(Electro), COLORED_NAME(Electro));
-}
-#endif
 ENDCLASS(Electro)
 REGISTER_WEAPON(ELECTRO, NEW(Electro));
 
index 6e6cc8a689cf4df0aa336e4e5abc9c8c2793afef..db490dfa38a42ab8e8e30687d6744e69be3e52e0 100644 (file)
@@ -433,3 +433,18 @@ METHOD(Fireball, wr_impacteffect, void(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Fireball, describe, string(Fireball this))
+{
+       TC(Fireball, this);
+       return sprintf(_("The %s supercharges then fires a massive fireball in a straight line, dealing heaps of splash damage over a large radius on impact\n\n"
+               "The secondary fire launches flaming balls that set nearby players alight\n\n"
+               "It is a superweapon, so isn't often found in game\n\n"
+               "It doesn't require ammo, but it is destroyed after some time\n\n"
+               "Since the %s takes a moment to charge and the fireball travels slowly, using it effectively may be difficult, "
+               "but if done properly it can deal a ton of damage"),
+       COLORED_NAME(Fireball), COLORED_NAME(Fireball));
+}
+
+#endif
index 2b596ebd974abde7230c98ce387cf632d4ca91d2..468cee355c019cbdf55da22bd39c1fedd99f3e2d 100644 (file)
@@ -54,19 +54,6 @@ CLASS(Fireball, Weapon)
        END()
        W_PROPS(X, Fireball, fireball)
 #undef X
-#ifdef MENUQC
-METHOD(Fireball, describe, string(Fireball this))
-{
-       TC(Fireball, this);
-       return sprintf(_("The %s supercharges then fires a massive fireball in a straight line, dealing heaps of splash damage over a large radius on impact\n\n"
-               "The secondary fire launches flaming balls that set nearby players alight\n\n"
-               "It is a superweapon, so isn't often found in game\n\n"
-               "It doesn't require ammo, but it is destroyed after some time\n\n"
-               "Since the %s takes a moment to charge and the fireball travels slowly, using it effectively may be difficult, "
-               "but if done properly it can deal a ton of damage"),
-       COLORED_NAME(Fireball), COLORED_NAME(Fireball));
-}
-#endif
 ENDCLASS(Fireball)
 REGISTER_WEAPON(FIREBALL, NEW(Fireball));
 
index 15d8203d891f325e6db0b95d8af57908934c2726..2740286adf2b3255415f7f08a58aca2ee9372ff4 100644 (file)
@@ -496,3 +496,18 @@ METHOD(Hagar, wr_impacteffect, void(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Hagar, describe, string(Hagar this))
+{
+       TC(Hagar, this);
+       return sprintf(_("The %s rapidly fires small propelled rockets forwards, dealing some splash damage on impact\n\n"
+               "When the secondary fire is held, multiple rockets are loaded up, and they're shot at the same time when released. "
+               "These rockets can't be held forever, so it will fire itself after some time (after a warning beep) if the secondary fire isn't released\n\n"
+               "It consumes %s ammo for each rocket\n\n"
+               "The %s works best over close to medium ranges, since it's hard to land hits at a long distance. "
+               "A common usage is fully loading the secondary fire before turning a corner, so you can surprise any enemies around the corner with a bunch of rockets to the face"),
+       COLORED_NAME(Hagar), COLORED_NAME(Rockets), COLORED_NAME(Hagar));
+}
+
+#endif
index b908d1170df850ad7c9cbc103599fb1b2864ca64..977a740e7755bfe5db79fa474a92e18d6aee9c82 100644 (file)
@@ -58,19 +58,6 @@ CLASS(Hagar, Weapon)
        END()
        W_PROPS(X, Hagar, hagar)
 #undef X
-#ifdef MENUQC
-METHOD(Hagar, describe, string(Hagar this))
-{
-       TC(Hagar, this);
-       return sprintf(_("The %s rapidly fires small propelled rockets forwards, dealing some splash damage on impact\n\n"
-               "When the secondary fire is held, multiple rockets are loaded up, and they're shot at the same time when released. "
-               "These rockets can't be held forever, so it will fire itself after some time (after a warning beep) if the secondary fire isn't released\n\n"
-               "It consumes %s ammo for each rocket\n\n"
-               "The %s works best over close to medium ranges, since it's hard to land hits at a long distance. "
-               "A common usage is fully loading the secondary fire before turning a corner, so you can surprise any enemies around the corner with a bunch of rockets to the face"),
-       COLORED_NAME(Hagar), COLORED_NAME(Rockets), COLORED_NAME(Hagar));
-}
-#endif
 ENDCLASS(Hagar)
 REGISTER_WEAPON(HAGAR, NEW(Hagar));
 
index 81f06fc1c416e35fc558dd280661e21b508dd16a..ebea79e2732fdd7718f88a167b543c4a817e9714 100644 (file)
@@ -226,3 +226,20 @@ METHOD(HLAC, wr_impacteffect, void(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(HLAC, describe, string(HLAC this))
+{
+       TC(HLAC, this);
+       return sprintf(_("The %s (or HLAC for short) fires lasers in quick succession. "
+               "The projectiles it fires are similar to those of the %s\n\n"
+               "The secondary fire shoots a randomly scattered burst of multiple lasers at once\n\n"
+               "Unlike the %s, it consumes %s ammo for each laser shot, meaning that it cannot be used infinitely\n\n"
+               "The %s works best in close ranges, but the primary fire is also useful in medium ranges\n\n"
+               "A unique aspect of the %s is that the longer the primary fire is held, the more that the lasers will start to spread out. "
+               "This means releasing primary fire every now and then is important to restore accuracy. "
+               "Also, the %s has less spread when used while crouching"),
+       COLORED_NAME(HLAC), COLORED_NAME(Blaster), COLORED_NAME(Blaster), COLORED_NAME(Cells), COLORED_NAME(HLAC), COLORED_NAME(HLAC), COLORED_NAME(HLAC));
+}
+
+#endif
index 6eac2ac569ae7eda7c9722b14a769d094133b6c3..807ba29e9c0c7fd41e624349c2b2ad1bf1f9714a 100644 (file)
@@ -53,21 +53,6 @@ CLASS(HLAC, Weapon)
        END()
        W_PROPS(X, HLAC, hlac)
 #undef X
-#ifdef MENUQC
-METHOD(HLAC, describe, string(HLAC this))
-{
-       TC(HLAC, this);
-       return sprintf(_("The %s (or HLAC for short) fires lasers in quick succession. "
-               "The projectiles it fires are similar to those of the %s\n\n"
-               "The secondary fire shoots a randomly scattered burst of multiple lasers at once\n\n"
-               "Unlike the %s, it consumes %s ammo for each laser shot, meaning that it cannot be used infinitely\n\n"
-               "The %s works best in close ranges, but the primary fire is also useful in medium ranges\n\n"
-               "A unique aspect of the %s is that the longer the primary fire is held, the more that the lasers will start to spread out. "
-               "This means releasing primary fire every now and then is important to restore accuracy. "
-               "Also, the %s has less spread when used while crouching"),
-       COLORED_NAME(HLAC), COLORED_NAME(Blaster), COLORED_NAME(Blaster), COLORED_NAME(Cells), COLORED_NAME(HLAC), COLORED_NAME(HLAC), COLORED_NAME(HLAC));
-}
-#endif
 ENDCLASS(HLAC)
 REGISTER_WEAPON(HLAC, NEW(HLAC));
 
index a5d2dc69e01dac21316bbc4ee2a815d1960a1bdc..96a2904d04bdb8a3f836bdc350fd758b106120bf 100644 (file)
@@ -510,3 +510,18 @@ NET_HANDLE(ENT_CLIENT_HOOK, bool bIsNew)
 
 // TODO: hook: temporarily transform this.origin for drawing the model along warpzones!
 #endif
+#ifdef MENUQC
+
+METHOD(Hook, describe, string(Hook this))
+{
+       TC(Hook, this);
+       return sprintf(_("The %s is a unique weapon, firing a chain forwards which pulls you in once it latches onto something\n\n"
+               "The secondary fire usually drops a gravity bomb that affects enemies, also releasing light a smoke like a flashbang\n\n"
+               "It usually requires %s ammo to work, consuming it both when initially firing the hook, and after a couple seconds as it reels you in\n\n"
+               "The %s allows reaching previously unreachable places on maps and zooming around the map at high speeds, "
+               "making both surprise ambushes and miraculous escapes possible\n\n"
+               "It isn't available very often on maps, unless the Grappling Hook mutator is active, in which all players have it on their offhand, used with the ^3+hook^7 bind"),
+       COLORED_NAME(Hook), COLORED_NAME(JetpackFuel), COLORED_NAME(Hook));
+}
+
+#endif
index e4051392f5cd957a285214575578eed0ab2fa46d..6f42b9780b8b848d5bbfbec32b028509b6214a80 100644 (file)
@@ -50,19 +50,6 @@ CLASS(Hook, Weapon)
        END()
        W_PROPS(X, Hook, hook)
 #undef X
-#ifdef MENUQC
-METHOD(Hook, describe, string(Hook this))
-{
-       TC(Hook, this);
-       return sprintf(_("The %s is a unique weapon, firing a chain forwards which pulls you in once it latches onto something\n\n"
-               "The secondary fire usually drops a gravity bomb that affects enemies, also releasing light a smoke like a flashbang\n\n"
-               "It usually requires %s ammo to work, consuming it both when initially firing the hook, and after a couple seconds as it reels you in\n\n"
-               "The %s allows reaching previously unreachable places on maps and zooming around the map at high speeds, "
-               "making both surprise ambushes and miraculous escapes possible\n\n"
-               "It isn't available very often on maps, unless the Grappling Hook mutator is active, in which all players have it on their offhand, used with the ^3+hook^7 bind"),
-       COLORED_NAME(Hook), COLORED_NAME(JetpackFuel), COLORED_NAME(Hook));
-}
-#endif
 ENDCLASS(Hook)
 REGISTER_WEAPON(HOOK, NEW(Hook));
 
index 89d3692a1dc5c4c9f2f5f605812f624398ba3a99..db2882c2e5f1d77ca047487123899700ad19d96e 100644 (file)
@@ -412,3 +412,17 @@ METHOD(MachineGun, wr_impacteffect, void(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(MachineGun, describe, string(MachineGun this))
+{
+       TC(MachineGun, this);
+       return sprintf(_("The %s quickly fires bullets with a small degree of spread\n\n"
+               "The secondary fire fires a quick burst of bullets faster than the primary fire and with no spread, but there's a short delay until it can be used again\n\n"
+               "It consumes %s ammo for each bullet shot, until the whole magazine is emptied\n\n"
+               "The %s can be used in a lot of situations, and it works particularly well at long ranges since the bullets pierce the sky instantaneously. "
+               "Since the secondary fire has no spread, it's the better option when firing over a long range"),
+       COLORED_NAME(MachineGun), COLORED_NAME(Bullets), COLORED_NAME(MachineGun));
+}
+
+#endif
index 53155ef4eba6c4ba6ae15b17074435b5d3b144c4..b9f46c0597fc75de04d4a4b0a7f313a29c666e31 100644 (file)
@@ -64,18 +64,6 @@ CLASS(MachineGun, Weapon)
        END()
        W_PROPS(X, MachineGun, machinegun)
 #undef X
-#ifdef MENUQC
-METHOD(MachineGun, describe, string(MachineGun this))
-{
-       TC(MachineGun, this);
-       return sprintf(_("The %s quickly fires bullets with a small degree of spread\n\n"
-               "The secondary fire fires a quick burst of bullets faster than the primary fire and with no spread, but there's a short delay until it can be used again\n\n"
-               "It consumes %s ammo for each bullet shot, until the whole magazine is emptied\n\n"
-               "The %s can be used in a lot of situations, and it works particularly well at long ranges since the bullets pierce the sky instantaneously. "
-               "Since the secondary fire has no spread, it's the better option when firing over a long range"),
-       COLORED_NAME(MachineGun), COLORED_NAME(Bullets), COLORED_NAME(MachineGun));
-}
-#endif
 ENDCLASS(MachineGun)
 REGISTER_WEAPON(MACHINEGUN, NEW(MachineGun));
 
index 0a4a914dc215d24b8c21be33d987f39086d06a5c..405af3ae04799f24c55adec800a30b1fdda4156e 100644 (file)
@@ -512,3 +512,18 @@ METHOD(MineLayer, wr_impacteffect, void(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(MineLayer, describe, string(MineLayer this))
+{
+       TC(MineLayer, this);
+       return sprintf(_("The %s places mines on the ground when fired, which detonate and damage enemies if stepped on. "
+               "Only a couple mines can be placed at any time, and after several seconds they will self-detonate\n\n"
+               "The secondary fire instantaneously detonates any mines fired by the primary fire, first waiting until you're far enough away\n\n"
+               "It consumes %s ammo for each mine laid\n\n"
+               "The mines are not launched very far before they hit the ground, so the %s isn't very effective at medium to long ranges. "
+               "It is often used to protect important areas of the map such as the flag in Capture The Flag, control points in Onslaught, or checkpoints in Assault"),
+       COLORED_NAME(MineLayer), COLORED_NAME(Rockets), COLORED_NAME(MineLayer));
+}
+
+#endif
index 82d114fb98db4eb57db1575bd90d5fdbd80b3462..afe76cf6decf346cc1d33955ffc1b791d0fe4d35 100644 (file)
@@ -55,19 +55,6 @@ CLASS(MineLayer, Weapon)
        END()
        W_PROPS(X, MineLayer, minelayer)
 #undef X
-#ifdef MENUQC
-METHOD(MineLayer, describe, string(MineLayer this))
-{
-       TC(MineLayer, this);
-       return sprintf(_("The %s places mines on the ground when fired, which detonate and damage enemies if stepped on. "
-               "Only a couple mines can be placed at any time, and after several seconds they will self-detonate\n\n"
-               "The secondary fire instantaneously detonates any mines fired by the primary fire, first waiting until you're far enough away\n\n"
-               "It consumes %s ammo for each mine laid\n\n"
-               "The mines are not launched very far before they hit the ground, so the %s isn't very effective at medium to long ranges. "
-               "It is often used to protect important areas of the map such as the flag in Capture The Flag, control points in Onslaught, or checkpoints in Assault"),
-       COLORED_NAME(MineLayer), COLORED_NAME(Rockets), COLORED_NAME(MineLayer));
-}
-#endif
 ENDCLASS(MineLayer)
 REGISTER_WEAPON(MINE_LAYER, NEW(MineLayer));
 
index 1801617957db3bc00252769be6f2982d52fab55d..8d216bb8aa3db71df974c497e4fd340e75a3510e 100644 (file)
@@ -372,3 +372,17 @@ METHOD(Mortar, wr_impacteffect, void(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Mortar, describe, string(Mortar this))
+{
+       TC(Mortar, this);
+       return sprintf(_("The %s launches a grenade that explodes immediately on impact, dealing a medium amount of splash damage\n\n"
+               "The secondary fire shoots a similar grenade that explodes shortly after bouncing\n\n"
+               "It consumes %s ammo for every grenade launched\n\n"
+               "The %s works best at close to medium ranges, but it's quite tricky to hit an enemy if they're airborne. "
+               "Since the secondary fire grenade bounces before exploding, it can be bounced against walls to damage enemies lurking around a corner"),
+       COLORED_NAME(Mortar), COLORED_NAME(Rockets), COLORED_NAME(Mortar));
+}
+
+#endif
index a27c29b06e144bef31f0bde1f1a018b6afc777a2..149ff8c9ce0967d67a654aa79038f13fa5771bf1 100644 (file)
@@ -56,18 +56,6 @@ CLASS(Mortar, Weapon)
        END()
        W_PROPS(X, Mortar, mortar)
 #undef X
-#ifdef MENUQC
-METHOD(Mortar, describe, string(Mortar this))
-{
-       TC(Mortar, this);
-       return sprintf(_("The %s launches a grenade that explodes immediately on impact, dealing a medium amount of splash damage\n\n"
-               "The secondary fire shoots a similar grenade that explodes shortly after bouncing\n\n"
-               "It consumes %s ammo for every grenade launched\n\n"
-               "The %s works best at close to medium ranges, but it's quite tricky to hit an enemy if they're airborne. "
-               "Since the secondary fire grenade bounces before exploding, it can be bounced against walls to damage enemies lurking around a corner"),
-       COLORED_NAME(Mortar), COLORED_NAME(Rockets), COLORED_NAME(Mortar));
-}
-#endif
 ENDCLASS(Mortar)
 REGISTER_WEAPON(MORTAR, NEW(Mortar));
 
index ef5c5d7780163e4be293d82ce8bb3500df27d1e1..093d1e0b48f0092235d5e2947b8d8606a67dcab3 100644 (file)
@@ -423,3 +423,17 @@ METHOD(PortoLaunch, wr_impacteffect, void(entity this, entity actor)) {
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(PortoLaunch, describe, string(PortoLaunch this))
+{
+       TC(PortoLaunch, this);
+       return sprintf(_("The %s is a unique gun that creates one-way portals between flat surfaces on the map, that immediately teleport players and projectiles\n\n"
+               "The secondary fire is used to shoot the out-portal, while the primary fire shoots the in-portal\n\n"
+               "It doesn't require ammo, but it is destroyed after some time\n\n"
+               "The portals will close either after the player who shot them dies or after some time period"
+               "The %s isn't often placed on maps, but if used well it can make for some interesting gameplay"),
+       COLORED_NAME(PortoLaunch), COLORED_NAME(PortoLaunch));
+}
+
+#endif
index c8b29a69283eccfb4e6bf21e5f4bea7d03b16644..f4e532d30f320359b2fdd3aba53247755dda5e79 100644 (file)
@@ -35,18 +35,6 @@ CLASS(PortoLaunch, Weapon)
        END()
        W_PROPS(X, PortoLaunch, porto)
 #undef X
-#ifdef MENUQC
-METHOD(PortoLaunch, describe, string(PortoLaunch this))
-{
-       TC(PortoLaunch, this);
-       return sprintf(_("The %s is a unique gun that creates one-way portals between flat surfaces on the map, that immediately teleport players and projectiles\n\n"
-               "The secondary fire is used to shoot the out-portal, while the primary fire shoots the in-portal\n\n"
-               "It doesn't require ammo, but it is destroyed after some time\n\n"
-               "The portals will close either after the player who shot them dies or after some time period"
-               "The %s isn't often placed on maps, but if used well it can make for some interesting gameplay"),
-       COLORED_NAME(PortoLaunch), COLORED_NAME(PortoLaunch));
-}
-#endif
 ENDCLASS(PortoLaunch)
 REGISTER_WEAPON(PORTO, NEW(PortoLaunch));
 
index 7a1fb2cfaf9181b5a6c0bf4b897c817e4b36e8b5..56c69bd4d6e1105143a9ed0559d26812c85486fb 100644 (file)
@@ -259,3 +259,21 @@ METHOD(Rifle, wr_zoomdir, bool(entity thiswep))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Rifle, describe, string(Rifle this))
+{
+       // can't include ./vortex.qh or else circular includes
+#define VORTEX_COLOR strcat(rgb_to_hexcolor(COLOR_WEP_VORTEX), _("Vortex"), "^7")
+       TC(Rifle, this);
+       return sprintf(_("The %s fires bullets that traverse the map instantaneously and deal a significant chunk of damage on impact\n\n"
+               "The secondary fire shoots a few less powerful bullets at once with a bit of scatter\n\n"
+               "It consumes %s ammo for each bullet shot\n\n"
+               "Unlike the %s, the secondary fire doesn't zoom, so the ^3+zoom^7 bind needs to be used manually with the %s. "
+               "Also, it needs to be reloaded after its magazine is emptied\n\n"
+               "Similar to the %s, the %s can be used at any range, but it stands out at long ranges"),
+       COLORED_NAME(Rifle), COLORED_NAME(Bullets), VORTEX_COLOR, COLORED_NAME(Rifle), VORTEX_COLOR, COLORED_NAME(Rifle));
+#undef VORTEX_COLOR
+}
+
+#endif
index f850eee557e362d563c65f5e56bea44784728288..a3805c77df7f4ca2e0e4b0f3a4f7b307c61bc6f0 100644 (file)
@@ -54,22 +54,6 @@ CLASS(Rifle, Weapon)
        END()
        W_PROPS(X, Rifle, rifle)
 #undef X
-#ifdef MENUQC
-METHOD(Rifle, describe, string(Rifle this))
-{
-       // can't include ./vortex.qh or else circular includes
-#define VORTEX_COLOR strcat(rgb_to_hexcolor(COLOR_WEP_VORTEX), _("Vortex"), "^7")
-       TC(Rifle, this);
-       return sprintf(_("The %s fires bullets that traverse the map instantaneously and deal a significant chunk of damage on impact\n\n"
-               "The secondary fire shoots a few less powerful bullets at once with a bit of scatter\n\n"
-               "It consumes %s ammo for each bullet shot\n\n"
-               "Unlike the %s, the secondary fire doesn't zoom, so the ^3+zoom^7 bind needs to be used manually with the %s. "
-               "Also, it needs to be reloaded after its magazine is emptied\n\n"
-               "Similar to the %s, the %s can be used at any range, but it stands out at long ranges"),
-       COLORED_NAME(Rifle), COLORED_NAME(Bullets), VORTEX_COLOR, COLORED_NAME(Rifle), VORTEX_COLOR, COLORED_NAME(Rifle));
-#undef VORTEX_COLOR
-}
-#endif
 ENDCLASS(Rifle)
 REGISTER_WEAPON(RIFLE, NEW(Rifle));
 
index 0f439716bb67b6eeb450a2b5d8fe5ef84c738c05..dccc68f1eb61514154451a78e63431b64b4843b3 100644 (file)
@@ -679,3 +679,18 @@ METHOD(Seeker, wr_impacteffect, void(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Seeker, describe, string(Seeker this))
+{
+       TC(Seeker, this);
+       return sprintf(_("The %s is a unique weapon, firing a \"tag\" which then launches a few homing missiles if it collides with a player. "
+               "The homing isn't perfect, so sometimes the missiles can hit an object or a corner\n\n"
+               "The secondary fire launches a rapid barrage of scattered explosives that travel only a short distance\n\n"
+               "It consumes %s ammo, even when the tag doesn't land\n\n"
+               "The %s primary fire deals quite a lot of damage when a tag lands, although it requires skill to aim effectively. "
+               "The secondary fire is only useful in close range combat, and sometimes the explosives can damage yourself too"),
+       COLORED_NAME(Seeker), COLORED_NAME(Rockets), COLORED_NAME(Seeker));
+}
+
+#endif
index d8d6538aa70b5b2639ea736eece9a35f068e6ebe..546dcb22827d34d1106eac100cafc6d27eac7a4e 100644 (file)
@@ -84,19 +84,6 @@ CLASS(Seeker, Weapon)
        END()
        W_PROPS(X, Seeker, seeker)
 #undef X
-#ifdef MENUQC
-METHOD(Seeker, describe, string(Seeker this))
-{
-       TC(Seeker, this);
-       return sprintf(_("The %s is a unique weapon, firing a \"tag\" which then launches a few homing missiles if it collides with a player. "
-               "The homing isn't perfect, so sometimes the missiles can hit an object or a corner\n\n"
-               "The secondary fire launches a rapid barrage of scattered explosives that travel only a short distance\n\n"
-               "It consumes %s ammo, even when the tag doesn't land\n\n"
-               "The %s primary fire deals quite a lot of damage when a tag lands, although it requires skill to aim effectively. "
-               "The secondary fire is only useful in close range combat, and sometimes the explosives can damage yourself too"),
-       COLORED_NAME(Seeker), COLORED_NAME(Rockets), COLORED_NAME(Seeker));
-}
-#endif
 ENDCLASS(Seeker)
 REGISTER_WEAPON(SEEKER, NEW(Seeker));
 
index 605dbd7da59ce55caa4671c55cbdaa109ddbfb80..f6001c7640833db47f878c297079bdf0ba7c083d 100644 (file)
@@ -813,3 +813,16 @@ METHOD(Shockwave, wr_impacteffect, void(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Shockwave, describe, string(Shockwave this))
+{
+       TC(Shockwave, this);
+       return sprintf(_("The %s is a unique weapon, firing shockwave blasts that deal damage over a short range\n\n"
+               "Similar to the %s, the secondary fire swings the %s, slapping players close enough with the head of the weapon\n\n"
+               "It doesn't require ammo to work\n\n"
+               "The %s can only deal damage over a short range, so it is not useful for medium and long range combat"),
+       COLORED_NAME(Shockwave), COLORED_NAME(Shotgun), COLORED_NAME(Shockwave), COLORED_NAME(Shockwave));
+}
+
+#endif
index e4be82a3ec343f72a3ff33275e5bd244983934a6..597bebbca61d299283a7019521bbe0fe150c3b5b 100644 (file)
@@ -76,17 +76,6 @@ CLASS(Shockwave, Weapon)
        END()
        W_PROPS(X, Shockwave, shockwave)
 #undef X
-#ifdef MENUQC
-METHOD(Shockwave, describe, string(Shockwave this))
-{
-       TC(Shockwave, this);
-       return sprintf(_("The %s is a unique weapon, firing shockwave blasts that deal damage over a short range\n\n"
-               "Similar to the %s, the secondary fire swings the %s, slapping players close enough with the head of the weapon\n\n"
-               "It doesn't require ammo to work\n\n"
-               "The %s can only deal damage over a short range, so it is not useful for medium and long range combat"),
-       COLORED_NAME(Shockwave), COLORED_NAME(Shotgun), COLORED_NAME(Shockwave), COLORED_NAME(Shockwave));
-}
-#endif
 ENDCLASS(Shockwave)
 REGISTER_WEAPON(SHOCKWAVE, NEW(Shockwave));
 
index 7239757700ba3784498aa860dcdf63bd7fb07adb..101de3cca8cd4f7553471d8c474ccf858d567111 100644 (file)
@@ -385,3 +385,17 @@ METHOD(Shotgun, wr_impacteffect, void(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Shotgun, describe, string(Shotgun this))
+{
+       TC(Shotgun, this);
+       return sprintf(_("The %s is one of the two main default weapons, firing a single shotgun round which spreads into multiple pellets upon exiting the barrel\n\n"
+               "The secondary fire swings the %s, slapping players close enough with the head of the weapon. "
+               "Since the slap takes a moment to land, timing this well is difficult\n\n"
+               "The primary fire consumes %s ammo, although if you spawn in with the %s you will already have some\n\n"
+               "The %s's damage drops off quickly as the range increases, so it is only useful for close combat or sometimes medium range combat"),
+       COLORED_NAME(Shotgun), COLORED_NAME(Shotgun), COLORED_NAME(Shells), COLORED_NAME(Shotgun), COLORED_NAME(Shotgun));
+}
+
+#endif
index 896dd31a367121b9c2f8a1e902f659e332fcf0cf..c90ed2b70c460aff0ef1405d289a4187c28a5ae5 100644 (file)
@@ -61,18 +61,6 @@ CLASS(Shotgun, Weapon)
        END()
        W_PROPS(X, Shotgun, shotgun)
 #undef X
-#ifdef MENUQC
-METHOD(Shotgun, describe, string(Shotgun this))
-{
-       TC(Shotgun, this);
-       return sprintf(_("The %s is one of the two main default weapons, firing a single shotgun round which spreads into multiple pellets upon exiting the barrel\n\n"
-               "The secondary fire swings the %s, slapping players close enough with the head of the weapon. "
-               "Since the slap takes a moment to land, timing this well is difficult\n\n"
-               "The primary fire consumes %s ammo, although if you spawn in with the %s you will already have some\n\n"
-               "The %s's damage drops off quickly as the range increases, so it is only useful for close combat or sometimes medium range combat"),
-       COLORED_NAME(Shotgun), COLORED_NAME(Shotgun), COLORED_NAME(Shells), COLORED_NAME(Shotgun), COLORED_NAME(Shotgun));
-}
-#endif
 ENDCLASS(Shotgun)
 REGISTER_WEAPON(SHOTGUN, NEW(Shotgun));
 
index 28608a2212498b507b1458d002d5d2e4af34a61a..4636be9023023e0d91226619e27474c67dbcac6d 100644 (file)
@@ -593,3 +593,18 @@ PRECACHE(Tuba)
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Tuba, describe, string(Tuba this))
+{
+       TC(Tuba, this);
+       return sprintf(_("The %s is unique weapon that makes the ears of nearby enemies bleed by playing awful sounds, also slightly knocking them back\n\n"
+               "The secondary fire works the same way, playing a higher pitch\n\n"
+               "The only ammo it needs to operate is the breath from your lungs\n\n"
+               "Since your enemies need to be close by to hear your awful music, the %s is only effective at very close ranges\n\n"
+               "The pitch the %s plays depends on the movement keys pressed. "
+               "Reloading the weapon switches its model and notes played"),
+       COLORED_NAME(Tuba), COLORED_NAME(Tuba), COLORED_NAME(Tuba));
+}
+
+#endif
index 7c39b37c411243d5bb845a1ffd1da5d789132c63..070b985dbcb2625cf2775e240fc7dbae7f2cd68a 100644 (file)
@@ -40,19 +40,6 @@ CLASS(Tuba, Weapon)
        END()
        W_PROPS(X, Tuba, tuba)
 #undef X
-#ifdef MENUQC
-METHOD(Tuba, describe, string(Tuba this))
-{
-       TC(Tuba, this);
-       return sprintf(_("The %s is unique weapon that makes the ears of nearby enemies bleed by playing awful sounds, also slightly knocking them back\n\n"
-               "The secondary fire works the same way, playing a higher pitch\n\n"
-               "The only ammo it needs to operate is the breath from your lungs\n\n"
-               "Since your enemies need to be close by to hear your awful music, the %s is only effective at very close ranges\n\n"
-               "The pitch the %s plays depends on the movement keys pressed. "
-               "Reloading the weapon switches its model and notes played"),
-       COLORED_NAME(Tuba), COLORED_NAME(Tuba), COLORED_NAME(Tuba));
-}
-#endif
 ENDCLASS(Tuba)
 REGISTER_WEAPON(TUBA, NEW(Tuba));
 
index 4cd9415cfd1e8fd4a9c284e649fc3d23e5960a1e..c27cf36f98fffa39931036f8a14c8722a3983b24 100644 (file)
@@ -407,3 +407,17 @@ METHOD(Vaporizer, wr_zoom, bool(entity thiswep, entity actor))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Vaporizer, describe, string(Vaporizer this))
+{
+       TC(Vaporizer, this);
+       return sprintf(_("The %s is unique weapon, firing a deadly beam of energy dealing a huge amount of damage. "
+               "In InstaGib, the beam has the ability to instantly kill enemies with a single shot, unless they have an %s\n\n"
+               "The secondary fire fires a laser similar to that fired by the %s, with very strong knockback\n\n"
+               "It is a superweapon, so isn't often found in game, except in InstaGib where all players spawn with it\n\n"
+               "It consumes some %s ammo with each shot"),
+       COLORED_NAME(Vaporizer), COLORED_NAME(ExtraLife), COLORED_NAME(Blaster), COLORED_NAME(Cells));
+}
+
+#endif
index bea98ac64568ad884b1356fc9b9787f6d1b00708..aea349f94d95381f33df3ae380ac8868af986c57 100644 (file)
@@ -49,18 +49,6 @@ CLASS(Vaporizer, Weapon)
        END()
        W_PROPS(X, Vaporizer, vaporizer)
 #undef X
-#ifdef MENUQC
-METHOD(Vaporizer, describe, string(Vaporizer this))
-{
-       TC(Vaporizer, this);
-       return sprintf(_("The %s is unique weapon, firing a deadly beam of energy dealing a huge amount of damage. "
-               "In InstaGib, the beam has the ability to instantly kill enemies with a single shot, unless they have an %s\n\n"
-               "The secondary fire fires a laser similar to that fired by the %s, with very strong knockback\n\n"
-               "It is a superweapon, so isn't often found in game, except in InstaGib where all players spawn with it\n\n"
-               "It consumes some %s ammo with each shot"),
-       COLORED_NAME(Vaporizer), COLORED_NAME(ExtraLife), COLORED_NAME(Blaster), COLORED_NAME(Cells));
-}
-#endif
 ENDCLASS(Vaporizer)
 REGISTER_WEAPON(VAPORIZER, NEW(Vaporizer));
 
index 445494b4c191524c6a84714c3d319a8161f7839c..fc763b793698d0d3381b0541875748150c2cda51 100644 (file)
@@ -353,3 +353,18 @@ METHOD(Vortex, wr_zoomdir, bool(entity thiswep))
 }
 
 #endif
+#ifdef MENUQC
+
+METHOD(Vortex, describe, string(Vortex this))
+{
+       TC(Vortex, this);
+       return sprintf(_("The %s fires harmful beams of energy that traverse the map instantaneously and deal a significant chunk of damage on impact\n\n"
+               "The secondary fire zooms in when held, allowing for ease of aiming\n\n"
+               "It consumes %s ammo for each bullet shot\n\n"
+               "Unlike the %s, the %s doesn't need to be reloaded manually, although you have to wait a couple seconds between shots. "
+               "Uniquely, the %s can be fired slightly before it finishes completely reloading, albeit dealing slightly less damage\n\n"
+               "Similar to the %s, the %s can be used at any range, but it stands out at long ranges"),
+       COLORED_NAME(Vortex), COLORED_NAME(Cells), COLORED_NAME(Rifle), COLORED_NAME(Vortex), COLORED_NAME(Vortex), COLORED_NAME(Rifle), COLORED_NAME(Vortex));
+}
+
+#endif
index efb37c895e0d2420704e1f3bc3c407c8b3ef9b93..714a970cba252edb3b5630479ff127574fb4c5d0 100644 (file)
@@ -66,19 +66,6 @@ CLASS(Vortex, Weapon)
        END()
        W_PROPS(X, Vortex, vortex)
 #undef X
-#ifdef MENUQC
-METHOD(Vortex, describe, string(Vortex this))
-{
-       TC(Vortex, this);
-       return sprintf(_("The %s fires harmful beams of energy that traverse the map instantaneously and deal a significant chunk of damage on impact\n\n"
-               "The secondary fire zooms in when held, allowing for ease of aiming\n\n"
-               "It consumes %s ammo for each bullet shot\n\n"
-               "Unlike the %s, the %s doesn't need to be reloaded manually, although you have to wait a couple seconds between shots. "
-               "Uniquely, the %s can be fired slightly before it finishes completely reloading, albeit dealing slightly less damage\n\n"
-               "Similar to the %s, the %s can be used at any range, but it stands out at long ranges"),
-       COLORED_NAME(Vortex), COLORED_NAME(Cells), COLORED_NAME(Rifle), COLORED_NAME(Vortex), COLORED_NAME(Vortex), COLORED_NAME(Rifle), COLORED_NAME(Vortex));
-}
-#endif
 ENDCLASS(Vortex)
 REGISTER_WEAPON(VORTEX, NEW(Vortex));