They were previously in their .qh files, which is inconsistent with mostly everything else in the guide.
Putting them in the .qc file can prevent circular includes, so the guide entries can reference each other.
SUPER(AmmoBuff).m_tick(this, actor);
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(AmmoBuff, describe, string(AmmoBuff this))
+{
+ TC(AmmoBuff, this);
+ return sprintf(_("The %s gives you infinite ammo until the buff expires, so you don't need to worry about running out of ammo\n\n"
+ "It also removes the need to reload any weapons that require reloading"),
+ COLORED_NAME_WITH_CONCAT(this, _("Buff")));
+}
+#endif // MENUQC
ATTRIB(AmmoBuff, m_icon, string, "buff_ammo");
ATTRIB(AmmoBuff, m_skin, int, 3);
ATTRIB(AmmoBuff, m_color, vector, '0.76 1 0.1');
-#ifdef MENUQC
- METHOD(AmmoBuff, describe, string(AmmoBuff this))
- {
- TC(AmmoBuff, this);
- return sprintf(_("The %s gives you infinite ammo until the buff expires, so you don't need to worry about running out of ammo\n\n"
- "It also removes the need to reload any weapons that require reloading"),
- COLORED_NAME_WITH_CONCAT(this, _("Buff")));
- }
-#endif
ENDCLASS(AmmoBuff)
REGISTER_BUFF(AMMO, NEW(AmmoBuff));
return frag_force;
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(BashBuff, describe, string(BashBuff this))
+{
+ TC(BashBuff, this);
+ return sprintf(_("The %s increases knockback force you deal, and makes you immune to knockback while the buff is active\n\n"
+ "It also slightly increases knockback you deal to yourself"),
+ COLORED_NAME_WITH_CONCAT(this, _("Buff")));
+}
+#endif // MENUQC
ATTRIB(BashBuff, m_icon, string, "buff_bash");
ATTRIB(BashBuff, m_skin, int, 5);
ATTRIB(BashBuff, m_color, vector, '1 0.39 0');
-#ifdef MENUQC
- METHOD(BashBuff, describe, string(BashBuff this))
- {
- TC(BashBuff, this);
- return sprintf(_("The %s increases knockback force you deal, and makes you immune to knockback while the buff is active\n\n"
- "It also slightly increases knockback you deal to yourself"),
- COLORED_NAME_WITH_CONCAT(this, _("Buff")));
- }
-#endif
ENDCLASS(BashBuff)
REGISTER_BUFF(BASH, NEW(BashBuff));
M_ARGV(0, float) *= autocvar_g_buffs_disability_weaponspeed;
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(DisabilityBuff, describe, string(DisabilityBuff this))
+{
+ TC(DisabilityBuff, this);
+ return sprintf(_("The %s causes your enemies and monsters to slow down for a few seconds when you attack them, while the buff is active\n\n"
+ "This is particularly useful against speedy players, especially in %s"),
+ COLORED_NAME_WITH_CONCAT(this, _("Buff")), COLORED_NAME(MAPINFO_TYPE_CTF));
+}
+#endif // MENUQC
ATTRIB(DisabilityBuff, m_icon, string, "buff_disability");
ATTRIB(DisabilityBuff, m_skin, int, 7);
ATTRIB(DisabilityBuff, m_color, vector, '0.94 0.3 1');
-#ifdef MENUQC
- METHOD(DisabilityBuff, describe, string(DisabilityBuff this))
- {
- TC(DisabilityBuff, this);
- return sprintf(_("The %s causes your enemies and monsters to slow down for a few seconds when you attack them, while the buff is active\n\n"
- "This is particularly useful against speedy players, especially in %s"),
- COLORED_NAME_WITH_CONCAT(this, _("Buff")), COLORED_NAME(MAPINFO_TYPE_CTF));
- }
-#endif
ENDCLASS(DisabilityBuff)
REGISTER_BUFF(DISABILITY, NEW(DisabilityBuff));
SUPER(FlightBuff).m_remove(this, actor, removal_type);
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(FlightBuff, describe, string(FlightBuff this))
+{
+ TC(FlightBuff, this);
+ return sprintf(_("While you have the %s, you can crouch while midair to switch your gravity, allowing flight"),
+ COLORED_NAME_WITH_CONCAT(this, _("Buff")));
+}
+#endif
ATTRIB(FlightBuff, m_icon, string, "buff_flight");
ATTRIB(FlightBuff, m_skin, int, 11);
ATTRIB(FlightBuff, m_color, vector, '0.23 0.44 1');
-#ifdef MENUQC
- METHOD(FlightBuff, describe, string(FlightBuff this))
- {
- TC(FlightBuff, this);
- return sprintf(_("While you have the %s, you can crouch while midair to switch your gravity, allowing flight"),
- COLORED_NAME_WITH_CONCAT(this, _("Buff")));
- }
-#endif
ENDCLASS(FlightBuff)
REGISTER_BUFF(FLIGHT, NEW(FlightBuff));
return frag_damage * autocvar_g_buffs_inferno_damagemultiplier;
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(InfernoBuff, describe, string(InfernoBuff this))
+{
+ TC(InfernoBuff, this);
+ return sprintf(_("The %s sets any enemies or monsters you attack alight, dealing burn damage to them for several seconds until the buff expires"),
+ COLORED_NAME_WITH_CONCAT(this, _("Buff")));
+}
+#endif // MENUQC
ATTRIB(InfernoBuff, m_icon, string, "buff_inferno");
ATTRIB(InfernoBuff, m_skin, int, 16);
ATTRIB(InfernoBuff, m_color, vector, '1 0.62 0');
-#ifdef MENUQC
- METHOD(InfernoBuff, describe, string(InfernoBuff this))
- {
- TC(InfernoBuff, this);
- return sprintf(_("The %s sets any enemies or monsters you attack alight, dealing burn damage to them for several seconds until the buff expires"),
- COLORED_NAME_WITH_CONCAT(this, _("Buff")));
- }
-#endif
ENDCLASS(InfernoBuff)
REGISTER_BUFF(INFERNO, NEW(InfernoBuff));
STAT(MOVEVARS_JUMPVELOCITY, player) = autocvar_g_buffs_jump_height;
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(JumpBuff, describe, string(JumpBuff this))
+{
+ TC(JumpBuff, this);
+ return sprintf(_("The %s greatly increases your jump height, while the buff is active\n\nIt also makes you immune to fall damage"),
+ COLORED_NAME_WITH_CONCAT(this, _("Buff")));
+}
+#endif // MENUQC
ATTRIB(JumpBuff, m_icon, string, "buff_jump");
ATTRIB(JumpBuff, m_skin, int, 10);
ATTRIB(JumpBuff, m_color, vector, '0.24 0.78 1');
-#ifdef MENUQC
- METHOD(JumpBuff, describe, string(JumpBuff this))
- {
- TC(JumpBuff, this);
- return sprintf(_("The %s greatly increases your jump height, while the buff is active\n\nIt also makes you immune to fall damage"),
- COLORED_NAME_WITH_CONCAT(this, _("Buff")));
- }
-#endif
ENDCLASS(JumpBuff)
REGISTER_BUFF(JUMP, NEW(JumpBuff));
return frag_damage;
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(LuckBuff, describe, string(LuckBuff this))
+{
+ TC(LuckBuff, this);
+ return sprintf(_("While you have the %s, each attack has a chance of being a critical hit with greatly increased damage"),
+ COLORED_NAME_WITH_CONCAT(this, _("Buff")));
+}
+#endif // MENUQC
ATTRIB(LuckBuff, m_icon, string, "buff_luck");
ATTRIB(LuckBuff, m_skin, int, 19);
ATTRIB(LuckBuff, m_color, vector, '1 0.23 0.44');
-#ifdef MENUQC
- METHOD(LuckBuff, describe, string(LuckBuff this))
- {
- TC(LuckBuff, this);
- return sprintf(_("While you have the %s, each attack has a chance of being a critical hit with greatly increased damage"),
- COLORED_NAME_WITH_CONCAT(this, _("Buff")));
- }
-#endif
ENDCLASS(LuckBuff)
REGISTER_BUFF(LUCK, NEW(LuckBuff));
SUPER(MagnetBuff).m_tick(this, actor);
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(MagnetBuff, describe, string(MagnetBuff this))
+{
+ TC(MagnetBuff, this);
+ return sprintf(_("The %s greatly increases your item pickup range, collecting nearby items for you while the buff is active"),
+ COLORED_NAME_WITH_CONCAT(this, _("Buff")));
+}
+#endif // MENUQC
ATTRIB(MagnetBuff, m_icon, string, "buff_magnet");
ATTRIB(MagnetBuff, m_skin, int, 18);
ATTRIB(MagnetBuff, m_color, vector, '1 0.95 0.18');
-#ifdef MENUQC
- METHOD(MagnetBuff, describe, string(MagnetBuff this))
- {
- TC(MagnetBuff, this);
- return sprintf(_("The %s greatly increases your item pickup range, collecting nearby items for you while the buff is active"),
- COLORED_NAME_WITH_CONCAT(this, _("Buff")));
- }
-#endif
ENDCLASS(MagnetBuff)
REGISTER_BUFF(MAGNET, NEW(MagnetBuff));
return frag_damage;
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(MedicBuff, describe, string(MedicBuff this))
+{
+ TC(MedicBuff, this);
+ return sprintf(_("The %s increases health regeneration speed, increases the maximum health you can have before health starts to rot, and reduces health rot speed until the buff expires\n\n"
+ "It also gives you a chance to survive a fatal hit, with a small amount of health left over"),
+ COLORED_NAME_WITH_CONCAT(this, _("Buff")));
+}
+#endif // MENUQC
ATTRIB(MedicBuff, m_icon, string, "buff_medic");
ATTRIB(MedicBuff, m_skin, int, 1);
ATTRIB(MedicBuff, m_color, vector, '1 0.12 0');
-#ifdef MENUQC
- METHOD(MedicBuff, describe, string(MedicBuff this))
- {
- TC(MedicBuff, this);
- return sprintf(_("The %s increases health regeneration speed, increases the maximum health you can have before health starts to rot, and reduces health rot speed until the buff expires\n\n"
- "It also gives you a chance to survive a fatal hit, with a small amount of health left over"),
- COLORED_NAME_WITH_CONCAT(this, _("Buff")));
- }
-#endif
ENDCLASS(MedicBuff)
REGISTER_BUFF(MEDIC, NEW(MedicBuff));
return bound(0, frag_damage * (1 - autocvar_g_buffs_resistance_blockpercent), frag_damage);
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(ResistanceBuff, describe, string(ResistanceBuff this))
+{
+ TC(ResistanceBuff, this);
+ return sprintf(_("The %s greatly reduces your damage taken while the buff is active\n\n"
+ "This also impacts the damage you deal to yourself"),
+ COLORED_NAME_WITH_CONCAT(this, _("Buff")));
+}
+#endif // MENUQC
ATTRIB(ResistanceBuff, m_icon, string, "buff_resistance");
ATTRIB(ResistanceBuff, m_skin, int, 0);
ATTRIB(ResistanceBuff, m_color, vector, '0.36 1 0.07');
-#ifdef MENUQC
- METHOD(ResistanceBuff, describe, string(ResistanceBuff this))
- {
- TC(ResistanceBuff, this);
- return sprintf(_("The %s greatly reduces your damage taken while the buff is active\n\n"
- "This also impacts the damage you deal to yourself"),
- COLORED_NAME_WITH_CONCAT(this, _("Buff")));
- }
-#endif
ENDCLASS(ResistanceBuff)
REGISTER_BUFF(RESISTANCE, NEW(ResistanceBuff));
}
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(SwapperBuff, describe, string(SwapperBuff this))
+{
+ TC(SwapperBuff, this);
+ return sprintf(_("The %s allows you to press the ^3drop weapon^7 bind to switch places with a nearby enemy once\n\n"
+ "A common usage of this buff is to jump over the map's void, then swap with an enemy, to cause them to fall into the void"),
+ COLORED_NAME_WITH_CONCAT(this, _("Buff")));
+}
+#endif // MENUQC
ATTRIB(SwapperBuff, m_icon, string, "buff_swapper");
ATTRIB(SwapperBuff, m_skin, int, 17);
ATTRIB(SwapperBuff, m_color, vector, '0.63 0.36 1');
-#ifdef MENUQC
- METHOD(SwapperBuff, describe, string(SwapperBuff this))
- {
- TC(SwapperBuff, this);
- return sprintf(_("The %s allows you to press the ^3drop weapon^7 bind to switch places with a nearby enemy once\n\n"
- "A common usage of this buff is to jump over the map's void, then swap with an enemy, to cause them to fall into the void"),
- COLORED_NAME_WITH_CONCAT(this, _("Buff")));
- }
-#endif
ENDCLASS(SwapperBuff)
REGISTER_BUFF(SWAPPER, NEW(SwapperBuff));
}
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(VampireBuff, describe, string(VampireBuff this))
+{
+ TC(VampireBuff, this);
+ return sprintf(_("The %s converts some of the damage you deal to enemies and monsters into health for yourself, until the buff expires"),
+ COLORED_NAME_WITH_CONCAT(this, _("Buff")));
+}
+#endif // MENUQC
ATTRIB(VampireBuff, m_icon, string, "buff_vampire");
ATTRIB(VampireBuff, m_skin, int, 2);
ATTRIB(VampireBuff, m_color, vector, '1 0 0.24');
-#ifdef MENUQC
- METHOD(VampireBuff, describe, string(VampireBuff this))
- {
- TC(VampireBuff, this);
- return sprintf(_("The %s converts some of the damage you deal to enemies and monsters into health for yourself, until the buff expires"),
- COLORED_NAME_WITH_CONCAT(this, _("Buff")));
- }
-#endif
ENDCLASS(VampireBuff)
REGISTER_BUFF(VAMPIRE, NEW(VampireBuff));
return frag_damage * autocvar_g_buffs_vengeance_damage_multiplier;
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(VengeanceBuff, describe, string(VengeanceBuff this))
+{
+ TC(VengeanceBuff, this);
+ return sprintf(_("The %s reciprocates a portion of the damage enemies deal to you onto them, until the buff expires"),
+ COLORED_NAME_WITH_CONCAT(this, _("Buff")));
+}
+#endif // MENUQC
ATTRIB(VengeanceBuff, m_icon, string, "buff_vengeance");
ATTRIB(VengeanceBuff, m_skin, int, 15);
ATTRIB(VengeanceBuff, m_color, vector, '1 0.23 0.61');
-#ifdef MENUQC
- METHOD(VengeanceBuff, describe, string(VengeanceBuff this))
- {
- TC(VengeanceBuff, this);
- return sprintf(_("The %s reciprocates a portion of the damage enemies deal to you onto them, until the buff expires"),
- COLORED_NAME_WITH_CONCAT(this, _("Buff")));
- }
-#endif
ENDCLASS(VengeanceBuff)
REGISTER_BUFF(VENGEANCE, NEW(VengeanceBuff));
orb.colormod = '0.66 0.33 0';
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(AmmoNade, describe, string(AmmoNade this))
+{
+ TC(AmmoNade, this);
+ return sprintf(_("The %s detonates after a short delay, temporarily creating an orb around the point where it detonated for several seconds. "
+ "If your team members enter the orb they will recover ammo, and if enemies enter the sphere they will lose ammo\n\n"
+ "This does not impact weapon magazines, so it won't reload your weapons for you"),
+ COLORED_NAME(this));
+}
+#endif // MENUQC
ATTRIB(AmmoNade, m_color, vector, '0.66 0.33 0');
ATTRIB(AmmoNade, m_name, string, _("Ammo grenade"));
ATTRIB(AmmoNade, m_icon, string, "nade_ammo");
-#ifdef MENUQC
- METHOD(AmmoNade, describe, string(AmmoNade this))
- {
- TC(AmmoNade, this);
- return sprintf(_("The %s detonates after a short delay, temporarily creating an orb around the point where it detonated for several seconds. "
- "If your team members enter the orb they will recover ammo, and if enemies enter the sphere they will lose ammo\n\n"
- "This does not impact weapon magazines, so it won't reload your weapons for you"),
- COLORED_NAME(this));
- }
-#endif
ATTRIB(AmmoNade, netname, string, "ammo");
ATTRIB(AmmoNade, impulse, int, 10);
ENDCLASS(AmmoNade)
return false;
}
#endif // CSQC
+#ifdef MENUQC
+METHOD(DarknessNade, describe, string(DarknessNade this))
+{
+ TC(DarknessNade, this);
+ return sprintf(_("The %s detonates after a short delay, creating a dark field which temporarily blinds enemies who enter it"),
+ COLORED_NAME(this));
+}
+#endif // MENUQC
ATTRIB(DarknessNade, m_color, vector, '0.23 0 0.23');
ATTRIB(DarknessNade, m_name, string, _("Darkness grenade"));
ATTRIB(DarknessNade, m_icon, string, "nade_darkness");
-#ifdef MENUQC
- METHOD(DarknessNade, describe, string(DarknessNade this))
- {
- TC(DarknessNade, this);
- return sprintf(_("The %s detonates after a short delay, creating a dark field which temporarily blinds enemies who enter it"),
- COLORED_NAME(this));
- }
-#endif
ATTRIB(DarknessNade, netname, string, "darkness");
ATTRIB(DarknessNade, impulse, int, 11);
ENDCLASS(DarknessNade)
}
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(EntrapNade, describe, string(EntrapNade this))
+{
+ TC(EntrapNade, this);
+ return sprintf(_("The %s detonates after a short delay, temporarily creating an orb around the point where it detonated for several seconds. "
+ "Players and projectiles that enter the sphere will be slowed down, including yourself"),
+ COLORED_NAME(this));
+}
+#endif // MENUQC
ATTRIB(EntrapNade, m_color, vector, '0.15 0.85 0');
ATTRIB(EntrapNade, m_name, string, _("Entrap grenade"));
ATTRIB(EntrapNade, m_icon, string, "nade_entrap");
-#ifdef MENUQC
- METHOD(EntrapNade, describe, string(EntrapNade this))
- {
- TC(EntrapNade, this);
- return sprintf(_("The %s detonates after a short delay, temporarily creating an orb around the point where it detonated for several seconds. "
- "Players and projectiles that enter the sphere will be slowed down, including yourself"),
- COLORED_NAME(this));
- }
-#endif
ATTRIB(EntrapNade, netname, string, "entrap");
ATTRIB(EntrapNade, impulse, int, 8);
ENDCLASS(EntrapNade)
orb.colormod = '1 0 0';
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(HealNade, describe, string(HealNade this))
+{
+ TC(HealNade, this);
+ return sprintf(_("The %s detonates after a short delay, temporarily creating a healing orb around the point where it detonated for several seconds. "
+ "If your team members enter the orb they will recover health, and if enemies enter the sphere they will be harmed"),
+ COLORED_NAME(this));
+}
+#endif // MENUQC
ATTRIB(HealNade, m_color, vector, '1 0 0');
ATTRIB(HealNade, m_name, string, _("Heal grenade"));
ATTRIB(HealNade, m_icon, string, "nade_heal");
-#ifdef MENUQC
- METHOD(HealNade, describe, string(HealNade this))
- {
- TC(HealNade, this);
- return sprintf(_("The %s detonates after a short delay, temporarily creating a healing orb around the point where it detonated for several seconds. "
- "If your team members enter the orb they will recover health, and if enemies enter the sphere they will be harmed"),
- COLORED_NAME(this));
- }
-#endif
ATTRIB(HealNade, netname, string, "heal");
ATTRIB(HealNade, impulse, int, 6);
ENDCLASS(HealNade)
setmodel(fountain, MDL_Null);
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(IceNade, describe, string(IceNade this))
+{
+ TC(IceNade, this);
+ return sprintf(_("The %s detonates after a short delay, freezing any enemies who walk within the explosion radius for a few seconds after the explosion. "
+ "While frozen, enemies are progressively dealt damage"),
+ COLORED_NAME(this));
+}
+#endif // MENUQC
ATTRIB(IceNade, m_color, vector, '0 0.5 2');
ATTRIB(IceNade, m_name, string, _("Ice grenade"));
ATTRIB(IceNade, m_icon, string, "nade_ice");
-#ifdef MENUQC
- METHOD(IceNade, describe, string(IceNade this))
- {
- TC(IceNade, this);
- return sprintf(_("The %s detonates after a short delay, freezing any enemies who walk within the explosion radius for a few seconds after the explosion. "
- "While frozen, enemies are progressively dealt damage"),
- COLORED_NAME(this));
- }
-#endif
ATTRIB(IceNade, netname, string, "ice");
ATTRIB(IceNade, impulse, int, 3);
ENDCLASS(IceNade)
e.monster_skill = MONSTER_SKILL_INSANE;
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(MonsterNade, describe, string(MonsterNade this))
+{
+ TC(MonsterNade, this);
+ return sprintf(_("The %s explodes after a short delay, spawning one of four monster types"),
+ COLORED_NAME(this));
+}
+#endif // MENUQC
ATTRIB(MonsterNade, m_color, vector, '0.25 0.75 0');
ATTRIB(MonsterNade, m_name, string, _("Monster grenade"));
ATTRIB(MonsterNade, m_icon, string, "nade_monster");
-#ifdef MENUQC
- METHOD(MonsterNade, describe, string(MonsterNade this))
- {
- TC(MonsterNade, this);
- return sprintf(_("The %s explodes after a short delay, spawning one of four monster types"),
- COLORED_NAME(this));
- }
-#endif
ATTRIB(MonsterNade, netname, string, "pokenade"); // TODO: "monster"? nade needs renaming!
ATTRIB(MonsterNade, impulse, int, 7);
ENDCLASS(MonsterNade)
CSQCProjectile(fountain, true, PROJECTILE_NAPALM_FOUNTAIN, true);
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(NapalmNade, describe, string(NapalmNade this))
+{
+ TC(NapalmNade, this);
+ return sprintf(_("The %s explodes after a short delay, spreading fiery napalm globs around in the fountain. "
+ "The napalm fire balls burn for a while, and damage players who get too close"),
+ COLORED_NAME(this));
+}
+#endif // MENUQC
ATTRIB(NapalmNade, m_color, vector, '2 0.5 0');
ATTRIB(NapalmNade, m_name, string, _("Napalm grenade"));
ATTRIB(NapalmNade, m_icon, string, "nade_napalm");
-#ifdef MENUQC
- METHOD(NapalmNade, describe, string(NapalmNade this))
- {
- TC(NapalmNade, this);
- return sprintf(_("The %s explodes after a short delay, spreading fiery napalm globs around in the fountain. "
- "The napalm fire balls burn for a while, and damage players who get too close"),
- COLORED_NAME(this));
- }
-#endif
ATTRIB(NapalmNade, netname, string, "napalm");
ATTRIB(NapalmNade, impulse, int, 2);
ENDCLASS(NapalmNade)
autocvar_g_nades_nade_radius, '1 1 1' * autocvar_g_nades_nade_force, this.projectiledeathtype, 0, this);
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(NormalNade, describe, string(NormalNade this))
+{
+ TC(NormalNade, this);
+ return sprintf(_("The (normal) %s explodes after a short delay, dealing damage to nearby players\n\n"
+ "Make sure you remember to throw it with ^3drop weapon^7, or else it will blow up in your hands!"),
+ COLORED_NAME(this));
+}
+#endif // MENUQC
ATTRIB(NormalNade, m_color, vector, '1 1 1');
ATTRIB(NormalNade, m_name, string, _("Grenade"));
ATTRIB(NormalNade, m_icon, string, "nade_normal");
-#ifdef MENUQC
- METHOD(NormalNade, describe, string(NormalNade this))
- {
- TC(NormalNade, this);
- return sprintf(_("The (normal) %s explodes after a short delay, dealing damage to nearby players\n\n"
- "Make sure you remember to throw it with ^3drop weapon^7, or else it will blow up in your hands!"),
- COLORED_NAME(this));
- }
-#endif
ATTRIB(NormalNade, impulse, int, 1);
ATTRIB(NormalNade, netname, string, "normal");
ENDCLASS(NormalNade)
return false;
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(SpawnNade, describe, string(SpawnNade this))
+{
+ TC(SpawnNade, this);
+ return sprintf(_("The %s detonates after a short delay, temporarily setting your spawn point to where it detonated. "
+ "It is useful for cases where you want to go back to some point on the map after you die"),
+ COLORED_NAME(this));
+}
+#endif // MENUQC
ATTRIB(SpawnNade, m_color, vector, '1 0.9 0');
ATTRIB(SpawnNade, m_name, string, _("Spawn grenade"));
ATTRIB(SpawnNade, m_icon, string, "nade_spawn");
-#ifdef MENUQC
- METHOD(SpawnNade, describe, string(SpawnNade this))
- {
- TC(SpawnNade, this);
- return sprintf(_("The %s detonates after a short delay, temporarily setting your spawn point to where it detonated. "
- "It is useful for cases where you want to go back to some point on the map after you die"),
- COLORED_NAME(this));
- }
-#endif
ATTRIB(SpawnNade, netname, string, "spawn");
ATTRIB(SpawnNade, impulse, int, 5);
ENDCLASS(SpawnNade)
return false;
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(TranslocateNade, describe, string(TranslocateNade this))
+{
+ TC(TranslocateNade, this);
+ return sprintf(_("The %s detonates after a short delay, teleporting you to where it detonated"),
+ COLORED_NAME(this));
+}
+#endif // MENUQC
ATTRIB(TranslocateNade, m_color, vector, '1 0 1');
ATTRIB(TranslocateNade, m_name, string, _("Translocate grenade"));
ATTRIB(TranslocateNade, m_icon, string, "nade_translocate");
-#ifdef MENUQC
- METHOD(TranslocateNade, describe, string(TranslocateNade this))
- {
- TC(TranslocateNade, this);
- return sprintf(_("The %s detonates after a short delay, teleporting you to where it detonated"),
- COLORED_NAME(this));
- }
-#endif
ATTRIB(TranslocateNade, netname, string, "translocate");
ATTRIB(TranslocateNade, impulse, int, 4);
ENDCLASS(TranslocateNade)
}
}
#endif // SVQC
+#ifdef MENUQC
+METHOD(VeilNade, describe, string(VeilNade this))
+{
+ TC(VeilNade, this);
+ return sprintf(_("The Veil grenade detonates after a short delay, temporarily creating an orb around the point where it detonated for several seconds. "
+ "Players inside the orb will be invisible to those outside it"),
+ COLORED_NAME(this));
+}
+#endif // MENUQC
ATTRIB(VeilNade, m_name, string, _("Veil grenade"));
ATTRIB(VeilNade, m_icon, string, "nade_veil");
ATTRIB(VeilNade, m_alpha, float, 0.45);
-#ifdef MENUQC
- METHOD(VeilNade, describe, string(VeilNade this))
- {
- TC(VeilNade, this);
- return sprintf(_("The Veil grenade detonates after a short delay, temporarily creating an orb around the point where it detonated for several seconds. "
- "Players inside the orb will be invisible to those outside it"),
- COLORED_NAME(this));
- }
-#endif
ATTRIB(VeilNade, netname, string, "veil");
ATTRIB(VeilNade, impulse, int, 9);
ENDCLASS(VeilNade)