From: otta8634 Date: Sun, 22 Dec 2024 06:25:39 +0000 (+0800) Subject: Relocate guide descriptions to QC files X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=91bf35a4582c57e8001aae6cf0c39a2062cd6c45;p=xonotic%2Fxonotic-data.pk3dir.git Relocate guide descriptions to QC files This will allow for addressing the circular includes "issue" from before. --- diff --git a/qcsrc/common/items/item/ammo.qc b/qcsrc/common/items/item/ammo.qc index 48ca0ddab..79f660599 100644 --- a/qcsrc/common/items/item/ammo.qc +++ b/qcsrc/common/items/item/ammo.qc @@ -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 diff --git a/qcsrc/common/items/item/ammo.qh b/qcsrc/common/items/item/ammo.qh index 7a8ecef9a..c8fa425b1 100644 --- a/qcsrc/common/items/item/ammo.qh +++ b/qcsrc/common/items/item/ammo.qh @@ -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)); diff --git a/qcsrc/common/items/item/armor.qc b/qcsrc/common/items/item/armor.qc index cca0b5418..25d22a7a4 100644 --- a/qcsrc/common/items/item/armor.qc +++ b/qcsrc/common/items/item/armor.qc @@ -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 diff --git a/qcsrc/common/items/item/armor.qh b/qcsrc/common/items/item/armor.qh index 5d65caa89..755fd1d32 100644 --- a/qcsrc/common/items/item/armor.qh +++ b/qcsrc/common/items/item/armor.qh @@ -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)); diff --git a/qcsrc/common/items/item/health.qc b/qcsrc/common/items/item/health.qc index 49a34c1c8..1c82231c2 100644 --- a/qcsrc/common/items/item/health.qc +++ b/qcsrc/common/items/item/health.qc @@ -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 diff --git a/qcsrc/common/items/item/health.qh b/qcsrc/common/items/item/health.qh index 94265163f..3dbf93e10 100644 --- a/qcsrc/common/items/item/health.qh +++ b/qcsrc/common/items/item/health.qh @@ -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)); diff --git a/qcsrc/common/items/item/jetpack.qc b/qcsrc/common/items/item/jetpack.qc index 11b9d9243..698c0b1db 100644 --- a/qcsrc/common/items/item/jetpack.qc +++ b/qcsrc/common/items/item/jetpack.qc @@ -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 diff --git a/qcsrc/common/items/item/jetpack.qh b/qcsrc/common/items/item/jetpack.qh index 4df3f5984..5176aed7f 100644 --- a/qcsrc/common/items/item/jetpack.qh +++ b/qcsrc/common/items/item/jetpack.qh @@ -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)); diff --git a/qcsrc/common/monsters/monster/golem.qc b/qcsrc/common/monsters/monster/golem.qc index 8762dd9e4..f6507825d 100644 --- a/qcsrc/common/monsters/monster/golem.qc +++ b/qcsrc/common/monsters/monster/golem.qc @@ -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 diff --git a/qcsrc/common/monsters/monster/golem.qh b/qcsrc/common/monsters/monster/golem.qh index 5414b2529..2f6ad8417 100644 --- a/qcsrc/common/monsters/monster/golem.qh +++ b/qcsrc/common/monsters/monster/golem.qh @@ -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)); diff --git a/qcsrc/common/monsters/monster/mage.qc b/qcsrc/common/monsters/monster/mage.qc index 6e6b7324d..456774e7a 100644 --- a/qcsrc/common/monsters/monster/mage.qc +++ b/qcsrc/common/monsters/monster/mage.qc @@ -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 diff --git a/qcsrc/common/monsters/monster/mage.qh b/qcsrc/common/monsters/monster/mage.qh index 89b1ad6a7..a5e3b9e0a 100644 --- a/qcsrc/common/monsters/monster/mage.qh +++ b/qcsrc/common/monsters/monster/mage.qh @@ -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)); diff --git a/qcsrc/common/monsters/monster/spider.qc b/qcsrc/common/monsters/monster/spider.qc index 0d0936eab..5a6ee384a 100644 --- a/qcsrc/common/monsters/monster/spider.qc +++ b/qcsrc/common/monsters/monster/spider.qc @@ -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 diff --git a/qcsrc/common/monsters/monster/spider.qh b/qcsrc/common/monsters/monster/spider.qh index 7ad449889..aebbf5275 100644 --- a/qcsrc/common/monsters/monster/spider.qh +++ b/qcsrc/common/monsters/monster/spider.qh @@ -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)); diff --git a/qcsrc/common/monsters/monster/wyvern.qc b/qcsrc/common/monsters/monster/wyvern.qc index 3b48c67e7..3fce73df7 100644 --- a/qcsrc/common/monsters/monster/wyvern.qc +++ b/qcsrc/common/monsters/monster/wyvern.qc @@ -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 diff --git a/qcsrc/common/monsters/monster/wyvern.qh b/qcsrc/common/monsters/monster/wyvern.qh index 0b4edf000..2f2fc95bc 100644 --- a/qcsrc/common/monsters/monster/wyvern.qh +++ b/qcsrc/common/monsters/monster/wyvern.qh @@ -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)); diff --git a/qcsrc/common/monsters/monster/zombie.qc b/qcsrc/common/monsters/monster/zombie.qc index 4cb442770..b9bdce0f2 100644 --- a/qcsrc/common/monsters/monster/zombie.qc +++ b/qcsrc/common/monsters/monster/zombie.qc @@ -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 diff --git a/qcsrc/common/monsters/monster/zombie.qh b/qcsrc/common/monsters/monster/zombie.qh index 5a7054d71..31b41c1f2 100644 --- a/qcsrc/common/monsters/monster/zombie.qh +++ b/qcsrc/common/monsters/monster/zombie.qh @@ -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)); diff --git a/qcsrc/common/mutators/mutator/instagib/items.qc b/qcsrc/common/mutators/mutator/instagib/items.qc index b0205a5f7..923c5be19 100644 --- a/qcsrc/common/mutators/mutator/instagib/items.qc +++ b/qcsrc/common/mutators/mutator/instagib/items.qc @@ -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 diff --git a/qcsrc/common/mutators/mutator/instagib/items.qh b/qcsrc/common/mutators/mutator/instagib/items.qh index 1089bf424..39b8eecdf 100644 --- a/qcsrc/common/mutators/mutator/instagib/items.qh +++ b/qcsrc/common/mutators/mutator/instagib/items.qh @@ -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)); diff --git a/qcsrc/common/mutators/mutator/overkill/okhmg.qc b/qcsrc/common/mutators/mutator/overkill/okhmg.qc index 6f4693f2a..e4ddcc18e 100644 --- a/qcsrc/common/mutators/mutator/overkill/okhmg.qc +++ b/qcsrc/common/mutators/mutator/overkill/okhmg.qc @@ -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 diff --git a/qcsrc/common/mutators/mutator/overkill/okhmg.qh b/qcsrc/common/mutators/mutator/overkill/okhmg.qh index 43eb09463..052fc247a 100644 --- a/qcsrc/common/mutators/mutator/overkill/okhmg.qh +++ b/qcsrc/common/mutators/mutator/overkill/okhmg.qh @@ -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)); diff --git a/qcsrc/common/mutators/mutator/overkill/okmachinegun.qc b/qcsrc/common/mutators/mutator/overkill/okmachinegun.qc index 041ea0b5d..7c5d8fc8a 100644 --- a/qcsrc/common/mutators/mutator/overkill/okmachinegun.qc +++ b/qcsrc/common/mutators/mutator/overkill/okmachinegun.qc @@ -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 diff --git a/qcsrc/common/mutators/mutator/overkill/okmachinegun.qh b/qcsrc/common/mutators/mutator/overkill/okmachinegun.qh index 43f9274f2..97af8e400 100644 --- a/qcsrc/common/mutators/mutator/overkill/okmachinegun.qh +++ b/qcsrc/common/mutators/mutator/overkill/okmachinegun.qh @@ -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)); diff --git a/qcsrc/common/mutators/mutator/overkill/oknex.qc b/qcsrc/common/mutators/mutator/overkill/oknex.qc index 2b205fea9..bd83b3a5f 100644 --- a/qcsrc/common/mutators/mutator/overkill/oknex.qc +++ b/qcsrc/common/mutators/mutator/overkill/oknex.qc @@ -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 diff --git a/qcsrc/common/mutators/mutator/overkill/oknex.qh b/qcsrc/common/mutators/mutator/overkill/oknex.qh index 937efe863..e2ed56640 100644 --- a/qcsrc/common/mutators/mutator/overkill/oknex.qh +++ b/qcsrc/common/mutators/mutator/overkill/oknex.qh @@ -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)); diff --git a/qcsrc/common/mutators/mutator/overkill/okrpc.qc b/qcsrc/common/mutators/mutator/overkill/okrpc.qc index 46a783ce5..f456ca852 100644 --- a/qcsrc/common/mutators/mutator/overkill/okrpc.qc +++ b/qcsrc/common/mutators/mutator/overkill/okrpc.qc @@ -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 diff --git a/qcsrc/common/mutators/mutator/overkill/okrpc.qh b/qcsrc/common/mutators/mutator/overkill/okrpc.qh index a8cc06945..26ad75e46 100644 --- a/qcsrc/common/mutators/mutator/overkill/okrpc.qh +++ b/qcsrc/common/mutators/mutator/overkill/okrpc.qh @@ -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)); diff --git a/qcsrc/common/mutators/mutator/overkill/okshotgun.qc b/qcsrc/common/mutators/mutator/overkill/okshotgun.qc index 886401002..9162b1295 100644 --- a/qcsrc/common/mutators/mutator/overkill/okshotgun.qc +++ b/qcsrc/common/mutators/mutator/overkill/okshotgun.qc @@ -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 diff --git a/qcsrc/common/mutators/mutator/overkill/okshotgun.qh b/qcsrc/common/mutators/mutator/overkill/okshotgun.qh index fe797d560..731d52b61 100644 --- a/qcsrc/common/mutators/mutator/overkill/okshotgun.qh +++ b/qcsrc/common/mutators/mutator/overkill/okshotgun.qh @@ -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)); diff --git a/qcsrc/common/mutators/mutator/powerups/powerup/invisibility.qc b/qcsrc/common/mutators/mutator/powerups/powerup/invisibility.qc index dda2dcf8f..769d14bad 100644 --- a/qcsrc/common/mutators/mutator/powerups/powerup/invisibility.qc +++ b/qcsrc/common/mutators/mutator/powerups/powerup/invisibility.qc @@ -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 diff --git a/qcsrc/common/mutators/mutator/powerups/powerup/invisibility.qh b/qcsrc/common/mutators/mutator/powerups/powerup/invisibility.qh index 8776cf896..483392273 100644 --- a/qcsrc/common/mutators/mutator/powerups/powerup/invisibility.qh +++ b/qcsrc/common/mutators/mutator/powerups/powerup/invisibility.qh @@ -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)); diff --git a/qcsrc/common/mutators/mutator/powerups/powerup/shield.qc b/qcsrc/common/mutators/mutator/powerups/powerup/shield.qc index 230967b2b..3a1d529a2 100644 --- a/qcsrc/common/mutators/mutator/powerups/powerup/shield.qc +++ b/qcsrc/common/mutators/mutator/powerups/powerup/shield.qc @@ -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 diff --git a/qcsrc/common/mutators/mutator/powerups/powerup/shield.qh b/qcsrc/common/mutators/mutator/powerups/powerup/shield.qh index 6f3a41c9f..13b27cb12 100644 --- a/qcsrc/common/mutators/mutator/powerups/powerup/shield.qh +++ b/qcsrc/common/mutators/mutator/powerups/powerup/shield.qh @@ -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)); diff --git a/qcsrc/common/mutators/mutator/powerups/powerup/speed.qc b/qcsrc/common/mutators/mutator/powerups/powerup/speed.qc index 069d832f6..1bc9ab6eb 100644 --- a/qcsrc/common/mutators/mutator/powerups/powerup/speed.qc +++ b/qcsrc/common/mutators/mutator/powerups/powerup/speed.qc @@ -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 diff --git a/qcsrc/common/mutators/mutator/powerups/powerup/speed.qh b/qcsrc/common/mutators/mutator/powerups/powerup/speed.qh index 5d34eb344..9f6f8ccc2 100644 --- a/qcsrc/common/mutators/mutator/powerups/powerup/speed.qh +++ b/qcsrc/common/mutators/mutator/powerups/powerup/speed.qh @@ -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)); diff --git a/qcsrc/common/mutators/mutator/powerups/powerup/strength.qc b/qcsrc/common/mutators/mutator/powerups/powerup/strength.qc index c2f257292..16e47c6fd 100644 --- a/qcsrc/common/mutators/mutator/powerups/powerup/strength.qc +++ b/qcsrc/common/mutators/mutator/powerups/powerup/strength.qc @@ -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 diff --git a/qcsrc/common/mutators/mutator/powerups/powerup/strength.qh b/qcsrc/common/mutators/mutator/powerups/powerup/strength.qh index de133de26..f4bf17e1c 100644 --- a/qcsrc/common/mutators/mutator/powerups/powerup/strength.qh +++ b/qcsrc/common/mutators/mutator/powerups/powerup/strength.qh @@ -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)); diff --git a/qcsrc/common/vehicles/vehicle/bumblebee.qc b/qcsrc/common/vehicles/vehicle/bumblebee.qc index a7fcafc38..afc8a8c0b 100644 --- a/qcsrc/common/vehicles/vehicle/bumblebee.qc +++ b/qcsrc/common/vehicles/vehicle/bumblebee.qc @@ -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 diff --git a/qcsrc/common/vehicles/vehicle/bumblebee.qh b/qcsrc/common/vehicles/vehicle/bumblebee.qh index 05fc9f950..a6ab612db 100644 --- a/qcsrc/common/vehicles/vehicle/bumblebee.qh +++ b/qcsrc/common/vehicles/vehicle/bumblebee.qh @@ -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)); diff --git a/qcsrc/common/vehicles/vehicle/racer.qc b/qcsrc/common/vehicles/vehicle/racer.qc index adffbfce0..9ff0f6435 100644 --- a/qcsrc/common/vehicles/vehicle/racer.qc +++ b/qcsrc/common/vehicles/vehicle/racer.qc @@ -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 diff --git a/qcsrc/common/vehicles/vehicle/racer.qh b/qcsrc/common/vehicles/vehicle/racer.qh index b75732089..1224d50ad 100644 --- a/qcsrc/common/vehicles/vehicle/racer.qh +++ b/qcsrc/common/vehicles/vehicle/racer.qh @@ -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)); diff --git a/qcsrc/common/vehicles/vehicle/raptor.qc b/qcsrc/common/vehicles/vehicle/raptor.qc index da2c1da0b..c7131cb16 100644 --- a/qcsrc/common/vehicles/vehicle/raptor.qc +++ b/qcsrc/common/vehicles/vehicle/raptor.qc @@ -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 diff --git a/qcsrc/common/vehicles/vehicle/raptor.qh b/qcsrc/common/vehicles/vehicle/raptor.qh index 24c69394c..dbfa61a33 100644 --- a/qcsrc/common/vehicles/vehicle/raptor.qh +++ b/qcsrc/common/vehicles/vehicle/raptor.qh @@ -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)); diff --git a/qcsrc/common/vehicles/vehicle/spiderbot.qc b/qcsrc/common/vehicles/vehicle/spiderbot.qc index be1229da2..43f984d83 100644 --- a/qcsrc/common/vehicles/vehicle/spiderbot.qc +++ b/qcsrc/common/vehicles/vehicle/spiderbot.qc @@ -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 diff --git a/qcsrc/common/vehicles/vehicle/spiderbot.qh b/qcsrc/common/vehicles/vehicle/spiderbot.qh index 33aa8ad1f..ca61121fa 100644 --- a/qcsrc/common/vehicles/vehicle/spiderbot.qh +++ b/qcsrc/common/vehicles/vehicle/spiderbot.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/arc.qc b/qcsrc/common/weapons/weapon/arc.qc index c97860003..8d1b30908 100644 --- a/qcsrc/common/weapons/weapon/arc.qc +++ b/qcsrc/common/weapons/weapon/arc.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/arc.qh b/qcsrc/common/weapons/weapon/arc.qh index 7a8bcf0d4..76abc56b7 100644 --- a/qcsrc/common/weapons/weapon/arc.qh +++ b/qcsrc/common/weapons/weapon/arc.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/blaster.qc b/qcsrc/common/weapons/weapon/blaster.qc index 63e735b3b..2e670c429 100644 --- a/qcsrc/common/weapons/weapon/blaster.qc +++ b/qcsrc/common/weapons/weapon/blaster.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/blaster.qh b/qcsrc/common/weapons/weapon/blaster.qh index 0b2db652a..f1617d6cd 100644 --- a/qcsrc/common/weapons/weapon/blaster.qh +++ b/qcsrc/common/weapons/weapon/blaster.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/crylink.qc b/qcsrc/common/weapons/weapon/crylink.qc index 7306aef9f..e039665f6 100644 --- a/qcsrc/common/weapons/weapon/crylink.qc +++ b/qcsrc/common/weapons/weapon/crylink.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/crylink.qh b/qcsrc/common/weapons/weapon/crylink.qh index 0840e8f87..f27979aba 100644 --- a/qcsrc/common/weapons/weapon/crylink.qh +++ b/qcsrc/common/weapons/weapon/crylink.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/devastator.qc b/qcsrc/common/weapons/weapon/devastator.qc index d85cd4634..671c93223 100644 --- a/qcsrc/common/weapons/weapon/devastator.qc +++ b/qcsrc/common/weapons/weapon/devastator.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/devastator.qh b/qcsrc/common/weapons/weapon/devastator.qh index 9472648a3..39b0762c5 100644 --- a/qcsrc/common/weapons/weapon/devastator.qh +++ b/qcsrc/common/weapons/weapon/devastator.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/electro.qc b/qcsrc/common/weapons/weapon/electro.qc index cf67708f4..fd3896458 100644 --- a/qcsrc/common/weapons/weapon/electro.qc +++ b/qcsrc/common/weapons/weapon/electro.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/electro.qh b/qcsrc/common/weapons/weapon/electro.qh index b75a15dec..c00ab54ce 100644 --- a/qcsrc/common/weapons/weapon/electro.qh +++ b/qcsrc/common/weapons/weapon/electro.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/fireball.qc b/qcsrc/common/weapons/weapon/fireball.qc index 6e6cc8a68..db490dfa3 100644 --- a/qcsrc/common/weapons/weapon/fireball.qc +++ b/qcsrc/common/weapons/weapon/fireball.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/fireball.qh b/qcsrc/common/weapons/weapon/fireball.qh index 2b596ebd9..468cee355 100644 --- a/qcsrc/common/weapons/weapon/fireball.qh +++ b/qcsrc/common/weapons/weapon/fireball.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/hagar.qc b/qcsrc/common/weapons/weapon/hagar.qc index 15d8203d8..2740286ad 100644 --- a/qcsrc/common/weapons/weapon/hagar.qc +++ b/qcsrc/common/weapons/weapon/hagar.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/hagar.qh b/qcsrc/common/weapons/weapon/hagar.qh index b908d1170..977a740e7 100644 --- a/qcsrc/common/weapons/weapon/hagar.qh +++ b/qcsrc/common/weapons/weapon/hagar.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/hlac.qc b/qcsrc/common/weapons/weapon/hlac.qc index 81f06fc1c..ebea79e27 100644 --- a/qcsrc/common/weapons/weapon/hlac.qc +++ b/qcsrc/common/weapons/weapon/hlac.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/hlac.qh b/qcsrc/common/weapons/weapon/hlac.qh index 6eac2ac56..807ba29e9 100644 --- a/qcsrc/common/weapons/weapon/hlac.qh +++ b/qcsrc/common/weapons/weapon/hlac.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/hook.qc b/qcsrc/common/weapons/weapon/hook.qc index a5d2dc69e..96a2904d0 100644 --- a/qcsrc/common/weapons/weapon/hook.qc +++ b/qcsrc/common/weapons/weapon/hook.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/hook.qh b/qcsrc/common/weapons/weapon/hook.qh index e4051392f..6f42b9780 100644 --- a/qcsrc/common/weapons/weapon/hook.qh +++ b/qcsrc/common/weapons/weapon/hook.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/machinegun.qc b/qcsrc/common/weapons/weapon/machinegun.qc index 89d3692a1..db2882c2e 100644 --- a/qcsrc/common/weapons/weapon/machinegun.qc +++ b/qcsrc/common/weapons/weapon/machinegun.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/machinegun.qh b/qcsrc/common/weapons/weapon/machinegun.qh index 53155ef4e..b9f46c059 100644 --- a/qcsrc/common/weapons/weapon/machinegun.qh +++ b/qcsrc/common/weapons/weapon/machinegun.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/minelayer.qc b/qcsrc/common/weapons/weapon/minelayer.qc index 0a4a914dc..405af3ae0 100644 --- a/qcsrc/common/weapons/weapon/minelayer.qc +++ b/qcsrc/common/weapons/weapon/minelayer.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/minelayer.qh b/qcsrc/common/weapons/weapon/minelayer.qh index 82d114fb9..afe76cf6d 100644 --- a/qcsrc/common/weapons/weapon/minelayer.qh +++ b/qcsrc/common/weapons/weapon/minelayer.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/mortar.qc b/qcsrc/common/weapons/weapon/mortar.qc index 180161795..8d216bb8a 100644 --- a/qcsrc/common/weapons/weapon/mortar.qc +++ b/qcsrc/common/weapons/weapon/mortar.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/mortar.qh b/qcsrc/common/weapons/weapon/mortar.qh index a27c29b06..149ff8c9c 100644 --- a/qcsrc/common/weapons/weapon/mortar.qh +++ b/qcsrc/common/weapons/weapon/mortar.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/porto.qc b/qcsrc/common/weapons/weapon/porto.qc index ef5c5d778..093d1e0b4 100644 --- a/qcsrc/common/weapons/weapon/porto.qc +++ b/qcsrc/common/weapons/weapon/porto.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/porto.qh b/qcsrc/common/weapons/weapon/porto.qh index c8b29a692..f4e532d30 100644 --- a/qcsrc/common/weapons/weapon/porto.qh +++ b/qcsrc/common/weapons/weapon/porto.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/rifle.qc b/qcsrc/common/weapons/weapon/rifle.qc index 7a1fb2cfa..56c69bd4d 100644 --- a/qcsrc/common/weapons/weapon/rifle.qc +++ b/qcsrc/common/weapons/weapon/rifle.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/rifle.qh b/qcsrc/common/weapons/weapon/rifle.qh index f850eee55..a3805c77d 100644 --- a/qcsrc/common/weapons/weapon/rifle.qh +++ b/qcsrc/common/weapons/weapon/rifle.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/seeker.qc b/qcsrc/common/weapons/weapon/seeker.qc index 0f439716b..dccc68f1e 100644 --- a/qcsrc/common/weapons/weapon/seeker.qc +++ b/qcsrc/common/weapons/weapon/seeker.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/seeker.qh b/qcsrc/common/weapons/weapon/seeker.qh index d8d6538aa..546dcb228 100644 --- a/qcsrc/common/weapons/weapon/seeker.qh +++ b/qcsrc/common/weapons/weapon/seeker.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/shockwave.qc b/qcsrc/common/weapons/weapon/shockwave.qc index 605dbd7da..f6001c764 100644 --- a/qcsrc/common/weapons/weapon/shockwave.qc +++ b/qcsrc/common/weapons/weapon/shockwave.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/shockwave.qh b/qcsrc/common/weapons/weapon/shockwave.qh index e4be82a3e..597bebbca 100644 --- a/qcsrc/common/weapons/weapon/shockwave.qh +++ b/qcsrc/common/weapons/weapon/shockwave.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/shotgun.qc b/qcsrc/common/weapons/weapon/shotgun.qc index 723975770..101de3cca 100644 --- a/qcsrc/common/weapons/weapon/shotgun.qc +++ b/qcsrc/common/weapons/weapon/shotgun.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/shotgun.qh b/qcsrc/common/weapons/weapon/shotgun.qh index 896dd31a3..c90ed2b70 100644 --- a/qcsrc/common/weapons/weapon/shotgun.qh +++ b/qcsrc/common/weapons/weapon/shotgun.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/tuba.qc b/qcsrc/common/weapons/weapon/tuba.qc index 28608a221..4636be902 100644 --- a/qcsrc/common/weapons/weapon/tuba.qc +++ b/qcsrc/common/weapons/weapon/tuba.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/tuba.qh b/qcsrc/common/weapons/weapon/tuba.qh index 7c39b37c4..070b985db 100644 --- a/qcsrc/common/weapons/weapon/tuba.qh +++ b/qcsrc/common/weapons/weapon/tuba.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/vaporizer.qc b/qcsrc/common/weapons/weapon/vaporizer.qc index 4cd9415cf..c27cf36f9 100644 --- a/qcsrc/common/weapons/weapon/vaporizer.qc +++ b/qcsrc/common/weapons/weapon/vaporizer.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/vaporizer.qh b/qcsrc/common/weapons/weapon/vaporizer.qh index bea98ac64..aea349f94 100644 --- a/qcsrc/common/weapons/weapon/vaporizer.qh +++ b/qcsrc/common/weapons/weapon/vaporizer.qh @@ -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)); diff --git a/qcsrc/common/weapons/weapon/vortex.qc b/qcsrc/common/weapons/weapon/vortex.qc index 445494b4c..fc763b793 100644 --- a/qcsrc/common/weapons/weapon/vortex.qc +++ b/qcsrc/common/weapons/weapon/vortex.qc @@ -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 diff --git a/qcsrc/common/weapons/weapon/vortex.qh b/qcsrc/common/weapons/weapon/vortex.qh index efb37c895..714a970cb 100644 --- a/qcsrc/common/weapons/weapon/vortex.qh +++ b/qcsrc/common/weapons/weapon/vortex.qh @@ -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));