this.m_model = MDL_Bullets_ITEM;
#endif
this.netname = "bullets";
- this.m_name = "bullets";
+ this.m_name = _("bullets");
this.m_icon = "ammo_bullets";
#ifdef SVQC
this.m_botvalue = 1500;
this.m_model = MDL_Cells_ITEM;
#endif
this.netname = "cells";
- this.m_name = "cells";
+ this.m_name = _("cells");
this.m_icon = "ammo_cells";
#ifdef SVQC
this.m_botvalue = 1500;
this.m_model = MDL_Plasma_ITEM;
#endif
this.netname = "plasma";
- this.m_name = "plasma";
+ this.m_name = _("plasma");
this.m_icon = "ammo_plasma";
#ifdef SVQC
this.m_botvalue = 1500;
this.m_model = MDL_Rockets_ITEM;
#endif
this.netname = "rockets";
- this.m_name = "rockets";
+ this.m_name = _("rockets");
this.m_icon = "ammo_rockets";
#ifdef SVQC
this.m_botvalue = 1500;
this.m_model = MDL_Shells_ITEM;
#endif
this.netname = "shells";
- this.m_name = "shells";
+ this.m_name = _("shells");
this.m_icon = "ammo_shells";
#ifdef SVQC
this.m_botvalue = 1000;
this.m_sound = SND_ArmorSmall;
#endif
this.netname = "armor_small";
- this.m_name = "5 Armor";
+ this.m_name = _("Small armor");
this.m_icon = "armor";
#ifdef SVQC
this.m_itemid = IT_ARMOR_SHARD;
this.m_sound = SND_ArmorMedium;
#endif
this.netname = "armor_medium";
- this.m_name = "25 Armor";
+ this.m_name = _("Medium armor");
this.m_icon = "armor";
#ifdef SVQC
this.m_itemid = IT_ARMOR;
this.m_sound = SND_ArmorBig;
#endif
this.netname = "armor_big";
- this.m_name = "50 Armor";
+ this.m_name = _("Big armor");
this.m_icon = "armor";
this.m_color = '0 1 0';
this.m_waypoint = _("Big armor");
this.m_sound = SND_ArmorMega;
#endif
this.netname = "armor_mega";
- this.m_name = "100 Armor";
+ this.m_name = _("Mega armor");
this.m_icon = "item_large_armor";
this.m_color = '0 1 0';
this.m_waypoint = _("Mega armor");
this.m_sound = SND_HealthSmall;
#endif
this.netname = "health_small";
- this.m_name = "5 Health";
+ this.m_name = _("Small health");
this.m_icon = "health";
#ifdef SVQC
this.m_itemid = IT_5HP;
this.m_sound = SND_HealthMedium;
#endif
this.netname = "health_medium";
- this.m_name = "25 Health";
+ this.m_name = _("Medium health");
this.m_icon = "health";
#ifdef SVQC
this.m_itemid = IT_25HP;
this.m_sound = SND_HealthBig;
#endif
this.netname = "health_big";
- this.m_name = "50 Health";
+ this.m_name = _("Big health");
this.m_icon = "health";
this.m_color = '1 0 0';
this.m_waypoint = _("Big health");
this.m_sound = SND_HealthMega;
#endif
this.netname = "health_mega";
- this.m_name = "100 Health";
+ this.m_name = _("Mega health");
this.m_icon = "item_mega_health";
this.m_color = '1 0 0';
this.m_waypoint = _("Mega health");
this.m_itemid = IT_JETPACK;
#endif
this.netname = "jetpack";
- this.m_name = "Jetpack";
+ this.m_name = _("Jetpack");
this.m_icon = "jetpack";
this.m_color = '0.5 0.5 0.5';
this.m_waypoint = _("Jetpack");
this.m_model = MDL_JetpackFuel_ITEM;
#endif
this.netname = "fuel";
- this.m_name = "Fuel";
+ this.m_name = _("fuel");
this.m_icon = "ammo_fuel";
#ifdef SVQC
this.m_botvalue = 2000;
this.m_model = MDL_JetpackRegen_ITEM;
#endif
this.netname = "fuel_regen";
- this.m_name = "Fuel regenerator";
+ this.m_name = _("Fuel regenerator");
this.m_icon = "fuelregen";
this.m_color = '1 0.5 0';
this.m_waypoint = _("Fuel regen");
this.m_respawnsound = SND_STRENGTH_RESPAWN;
#endif
this.netname = "strength";
- this.m_name = "Strength Powerup";
+ this.m_name = _("Strength");
this.m_icon = "strength";
this.m_color = '0 0 1';
this.m_waypoint = _("Strength");
this.m_respawnsound = SND_SHIELD_RESPAWN;
#endif
this.netname = "invincible";
- this.m_name = "Shield";
+ this.m_name = _("Shield");
this.m_icon = "shield";
this.m_color = '1 0 1';
this.m_waypoint = _("Shield");
}
REGISTER_BUFF(AMMO) {
- this.m_prettyName = _("Ammo");
- this.m_name = "ammo";
+ this.m_name = _("Ammo");
+ this.netname = "ammo";
this.m_skin = 3;
this.m_color = '0.76 1 0.1';
}
BUFF_SPAWNFUNC_Q3TA_COMPAT(ammoregen, BUFF_AMMO)
REGISTER_BUFF(RESISTANCE) {
- this.m_prettyName = _("Resistance");
- this.m_name = "resistance";
+ this.m_name = _("Resistance");
+ this.netname = "resistance";
this.m_skin = 0;
this.m_color = '0.36 1 0.07';
}
BUFF_SPAWNFUNC_Q3TA_COMPAT(resistance, BUFF_RESISTANCE)
REGISTER_BUFF(SPEED) {
- this.m_prettyName = _("Speed");
- this.m_name = "speed";
+ this.m_name = _("Speed");
+ this.netname = "speed";
this.m_skin = 9;
this.m_color = '0.1 1 0.84';
}
BUFF_SPAWNFUNC_Q3TA_COMPAT(scout, BUFF_SPEED)
REGISTER_BUFF(MEDIC) {
- this.m_prettyName = _("Medic");
- this.m_name = "medic";
+ this.m_name = _("Medic");
+ this.netname = "medic";
this.m_skin = 1;
this.m_color = '1 0.12 0';
}
BUFF_SPAWNFUNC_Q3TA_COMPAT(revival, BUFF_MEDIC)
REGISTER_BUFF(BASH) {
- this.m_prettyName = _("Bash");
- this.m_name = "bash";
+ this.m_name = _("Bash");
+ this.netname = "bash";
this.m_skin = 5;
this.m_color = '1 0.39 0';
}
BUFF_SPAWNFUNCS(bash, BUFF_BASH)
REGISTER_BUFF(VAMPIRE) {
- this.m_prettyName = _("Vampire");
- this.m_name = "vampire";
+ this.m_name = _("Vampire");
+ this.netname = "vampire";
this.m_skin = 2;
this.m_color = '1 0 0.24';
}
BUFF_SPAWNFUNCS(vampire, BUFF_VAMPIRE)
REGISTER_BUFF(DISABILITY) {
- this.m_prettyName = _("Disability");
- this.m_name = "disability";
+ this.m_name = _("Disability");
+ this.netname = "disability";
this.m_skin = 7;
this.m_color = '0.94 0.3 1';
}
BUFF_SPAWNFUNCS(disability, BUFF_DISABILITY)
REGISTER_BUFF(VENGEANCE) {
- this.m_prettyName = _("Vengeance");
- this.m_name = "vengeance";
+ this.m_name = _("Vengeance");
+ this.netname = "vengeance";
this.m_skin = 15;
this.m_color = '1 0.23 0.61';
}
BUFF_SPAWNFUNCS(vengeance, BUFF_VENGEANCE)
REGISTER_BUFF(JUMP) {
- this.m_prettyName = _("Jump");
- this.m_name = "jump";
+ this.m_name = _("Jump");
+ this.netname = "jump";
this.m_skin = 10;
this.m_color = '0.24 0.78 1';
}
BUFF_SPAWNFUNC_Q3TA_COMPAT(jumper, BUFF_JUMP)
REGISTER_BUFF(INVISIBLE) {
- this.m_prettyName = _("Invisible");
- this.m_name = "invisible";
+ this.m_name = _("Invisible");
+ this.netname = "invisible";
this.m_skin = 12;
this.m_color = '0.5 0.5 1';
}
BUFF_SPAWNFUNC_Q3TA_COMPAT(invis, BUFF_INVISIBLE)
REGISTER_BUFF(INFERNO) {
- this.m_prettyName = _("Inferno");
- this.m_name = "inferno";
+ this.m_name = _("Inferno");
+ this.netname = "inferno";
this.m_skin = 16;
this.m_color = '1 0.62 0';
}
BUFF_SPAWNFUNCS(inferno, BUFF_INFERNO)
REGISTER_BUFF(SWAPPER) {
- this.m_prettyName = _("Swapper");
- this.m_name = "swapper";
+ this.m_name = _("Swapper");
+ this.netname = "swapper";
this.m_skin = 17;
this.m_color = '0.63 0.36 1';
}
BUFF_SPAWNFUNCS(swapper, BUFF_SWAPPER)
REGISTER_BUFF(MAGNET) {
- this.m_prettyName = _("Magnet");
- this.m_name = "magnet";
+ this.m_name = _("Magnet");
+ this.netname = "magnet";
this.m_skin = 18;
this.m_color = '1 0.95 0.18';
}
BUFF_SPAWNFUNCS(magnet, BUFF_MAGNET)
REGISTER_BUFF(LUCK) {
- this.m_prettyName = _("Luck");
- this.m_name = "luck";
+ this.m_name = _("Luck");
+ this.netname = "luck";
this.m_skin = 19;
this.m_color = '1 0.23 0.44';
}
BUFF_SPAWNFUNCS(luck, BUFF_LUCK)
REGISTER_BUFF(FLIGHT) {
- this.m_prettyName = _("Flight");
- this.m_name = "flight";
+ this.m_name = _("Flight");
+ this.netname = "flight";
this.m_skin = 11;
this.m_color = '0.23 0.44 1';
}
string BUFF_NAME(int i)
{
Buff b = Buffs_from(i);
- return strcat(rgb_to_hexcolor(b.m_color), b.m_prettyName);
+ return strcat(rgb_to_hexcolor(b.m_color), b.m_name);
}
entity buff_FirstFromFlags(int _buffs)
CLASS(Buff, Pickup)
/** bit index */
ATTRIB(Buff, m_itemid, int, 0);
- ATTRIB(Buff, m_name, string, "buff");
+ ATTRIB(Buff, netname, string, "buff");
ATTRIB(Buff, m_color, vector, '1 1 1');
- ATTRIB(Buff, m_prettyName, string, "Buff");
+ ATTRIB(Buff, m_name, string, "Buff");
ATTRIB(Buff, m_skin, int, 0);
ATTRIB(Buff, m_sprite, string, "");
METHOD(Buff, display, void(entity this, void(string name, string icon) returns)) {
- returns(this.m_prettyName, sprintf("/gfx/hud/%s/buff_%s", cvar_string("menu_skin"), this.m_name));
+ returns(this.m_name, sprintf("/gfx/hud/%s/buff_%s", cvar_string("menu_skin"), this.netname));
}
#ifdef SVQC
METHOD(Buff, m_time, float(Buff this))
STATIC_INIT(REGISTER_BUFFS) {
FOREACH(Buffs, true, {
- it.netname = it.m_name; \
it.m_itemid = BIT(it.m_id - 1); \
- it.m_sprite = strzone(strcat("buff-", it.m_name)); \
+ it.m_sprite = strzone(strcat("buff-", it.netname)); \
});
}
{
int allBuffs = STAT(BUFFS);
FOREACH(Buffs, it.m_itemid & allBuffs, {
- addPowerupItem(it.m_prettyName, strcat("buff_", it.m_name), it.m_color, bound(0, STAT(BUFF_TIME) - time, 99), 60);
+ addPowerupItem(it.m_name, strcat("buff_", it.netname), it.m_color, bound(0, STAT(BUFF_TIME) - time, 99), 60);
});
}
MUTATOR_HOOKFUNCTION(cl_buffs, WP_Format)
{
Buff b = Buffs_from(this.wp_extra);
M_ARGV(2, vector) = b.m_color;
- M_ARGV(3, string) = b.m_prettyName;
- M_ARGV(4, string) = strcat("buff_", b.m_name);
+ M_ARGV(3, string) = b.m_name;
+ M_ARGV(4, string) = strcat("buff_", b.netname);
return true;
}
}
return false;
if (buff == BUFF_VAMPIRE && cvar("g_vampire"))
return false;
- return cvar(strcat("g_buffs_", buff.m_name));
+ return cvar(strcat("g_buffs_", buff.netname));
}
.int buff_seencount;
this.m_sound = SND_VaporizerCells;
#endif
this.netname = "vaporizer_cells";
- this.m_name = "Vaporizer Ammo";
+ this.m_name = _("Vaporizer ammo");
this.m_icon = "ammo_supercells";
#ifdef SVQC
this.m_botvalue = 2000;
this.m_sound = SND_ExtraLife;
#endif
this.netname = "extralife";
- this.m_name = "Extra life";
+ this.m_name = _("Extra life");
this.m_icon = "item_mega_health";
this.m_color = '1 0 0';
this.m_waypoint = _("Extra life");
this.m_respawnsound = SND_STRENGTH_RESPAWN;
#endif
this.netname = "invisibility";
- this.m_name = "Invisibility";
+ this.m_name = _("Invisibility");
this.m_icon = "strength";
this.m_color = '0 0 1';
this.m_waypoint = _("Invisibility");
this.m_respawnsound = SND_SHIELD_RESPAWN;
#endif
this.netname = "speed";
- this.m_name = "Speed";
+ this.m_name = _("Speed");
this.m_icon = "shield";
this.m_color = '1 0 1';
this.m_waypoint = _("Speed");
MSG_INFO_NOTIF(ITEM_BUFF_GOT, N_CONSOLE, 0, 1, "item_buffname", "", "", _("^BGYou got the %s^BG buff!"), "")
MSG_INFO_NOTIF(ITEM_WEAPON_DONTHAVE, N_DISABLE, 0, 1, "item_wepname", "", "", _("^BGYou do not have the ^F1%s"), "")
- MSG_INFO_NOTIF(ITEM_WEAPON_DROP, N_DISABLE, 1, 1, "item_wepname item_wepammo", "", "", _("^BGYou dropped the ^F1%s^BG%s"), "")
+ MSG_INFO_NOTIF(ITEM_WEAPON_DROP, N_DISABLE, 0, 2, "item_wepname item_wepammo", "", "", _("^BGYou dropped the ^F1%s^BG%s"), "")
MSG_INFO_NOTIF(ITEM_WEAPON_GOT, N_DISABLE, 0, 1, "item_wepname", "", "", _("^BGYou got the ^F1%s"), "")
MSG_INFO_NOTIF(ITEM_WEAPON_NOAMMO, N_DISABLE, 0, 1, "item_wepname", "", "", _("^BGYou don't have enough ammo for the ^F1%s"), "")
MSG_INFO_NOTIF(ITEM_WEAPON_PRIMORSEC, N_DISABLE, 0, 3, "item_wepname f2primsec f3primsec", "", "", _("^F1%s %s^BG is unable to fire, but its ^F1%s^BG can"), "")
MSG_CENTER_NOTIF(ITEM_FUELREGEN_GOT, N_ENABLE, 0, 0, "", CPID_ITEM, "item_centime 0", _("^BGYou got the ^F1Fuel regenerator"), "")
MSG_CENTER_NOTIF(ITEM_JETPACK_GOT, N_ENABLE, 0, 0, "", CPID_ITEM, "item_centime 0", _("^BGYou got the ^F1Jetpack"), "")
MSG_CENTER_NOTIF(ITEM_WEAPON_DONTHAVE, N_ENABLE, 0, 1, "item_wepname", CPID_ITEM, "item_centime 0", _("^BGYou do not have the ^F1%s"), "")
- MSG_CENTER_NOTIF(ITEM_WEAPON_DROP, N_ENABLE, 1, 1, "item_wepname item_wepammo", CPID_ITEM, "item_centime 0", _("^BGYou dropped the ^F1%s^BG%s"), "")
+ MSG_CENTER_NOTIF(ITEM_WEAPON_DROP, N_ENABLE, 0, 2, "item_wepname item_wepammo", CPID_ITEM, "item_centime 0", _("^BGYou dropped the ^F1%s^BG%s"), "")
MSG_CENTER_NOTIF(ITEM_WEAPON_GOT, N_ENABLE, 0, 1, "item_wepname", CPID_ITEM, "item_centime 0", _("^BGYou got the ^F1%s"), "")
MSG_CENTER_NOTIF(ITEM_WEAPON_NOAMMO, N_ENABLE, 0, 1, "item_wepname", CPID_ITEM, "item_centime 0", _("^BGYou don't have enough ammo for the ^F1%s"), "")
MSG_CENTER_NOTIF(ITEM_WEAPON_PRIMORSEC, N_ENABLE, 0, 3, "item_wepname f2primsec f3primsec", CPID_ITEM, "item_centime 0", _("^F1%s %s^BG is unable to fire, but its ^F1%s^BG can"), "")
#include <common/teams.qh>
#include <common/util.qh>
#include <common/sounds/sound.qh>
+#include <common/weapons/all.qh>
#ifdef CSQC
#include <client/autocvars.qh>
spree_end: placed at the end of murder messages to show ending of sprees
spree_lost: placed at the end of suicide messages to show losing of sprees
item_wepname: return full name of a weapon from weaponid
- item_wepammo: ammo display for weapon from string
+ item_wepammo: ammo display for weapon from f1 and f2
item_centime: amount of time to display weapon message in centerprint
item_buffname: return full name of a buff from buffid
death_team: show the full name of the team a player is switching from
ARG_CASE(ARG_CS_SV, "item_wepname", Weapons_from(f1).m_name) \
ARG_CASE(ARG_CS_SV, "item_buffname", BUFF_NAME(f1)) \
ARG_CASE(ARG_CS_SV, "f3buffname", BUFF_NAME(f3)) \
- ARG_CASE(ARG_CS_SV, "item_wepammo", (s1 != "" ? sprintf(_(" with %s"), s1) : "")) \
+ ARG_CASE(ARG_CS_SV, "item_wepammo", (f2 > 0 ? notif_arg_item_wepammo(f1, f2) : "")) \
ARG_CASE(ARG_DC, "item_centime", ftos(autocvar_notification_item_centerprinttime)) \
ARG_CASE(ARG_SV, "death_team", Team_ColoredFullName(f1)) \
ARG_CASE(ARG_CS, "death_team", Team_ColoredFullName(f1 - 1)) \
return "";
}
+string notif_arg_item_wepammo(float f1, float f2)
+{
+ string ammoitems = "";
+ Weapon wep = Weapons_from(f1);
+ switch (wep.ammo_type)
+ {
+ case RESOURCE_SHELLS: ammoitems = ITEM_Shells.m_name; break;
+ case RESOURCE_BULLETS: ammoitems = ITEM_Bullets.m_name; break;
+ case RESOURCE_ROCKETS: ammoitems = ITEM_Rockets.m_name; break;
+ case RESOURCE_CELLS: ammoitems = ITEM_Cells.m_name; break;
+ case RESOURCE_PLASMA: ammoitems = ITEM_Plasma.m_name; break;
+ case RESOURCE_FUEL: ammoitems = ITEM_JetpackFuel.m_name; break;
+ default: return ""; // doesn't use ammo
+ }
+ return sprintf(_(" with %d %s"), f2, ammoitems);
+}
+
// ====================================
// Initialization/Create Declarations
string NearestLocation(vector p);
+string AmmoNameFromWeaponentity(Weapon wep);
+
void play2(entity e, string filename);
string playername(entity p, bool team_colorize);
SUB_VanishOrRemove(this);
}
-// returns amount of ammo used as string, or -1 for failure, or 0 for no ammo count
-string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vector velo, .entity weaponentity)
+// returns amount of ammo used, or -1 for failure, or 0 for no ammo count
+float W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vector velo, .entity weaponentity)
{
- float thisammo;
- string s;
Weapon info = Weapons_from(wpn);
int ammotype = info.ammo_type;
weapon_defaultspawnfunc(wep, info);
if(startitem_failed)
- return string_null;
+ return -1;
setthink(wep, thrown_wep_think);
wep.savenextthink = wep.nextthink;
wep.nextthink = min(wep.nextthink, time + 0.5);
//wa = W_AmmoItemCode(wpn);
if(ammotype == RESOURCE_NONE)
{
- return "";
+ return 0;
}
else
{
- s = "";
-
if(doreduce && g_weapon_stay == 2)
{
// if our weapon is loaded, give its load back to the player
}
float ownderammo = GetResourceAmount(own, ammotype);
- thisammo = min(ownderammo, GetResourceAmount(wep, ammotype));
+ float thisammo = min(ownderammo, GetResourceAmount(wep, ammotype));
SetResourceAmount(wep, ammotype, thisammo);
SetResourceAmount(own, ammotype, ownderammo - thisammo);
- switch (ammotype)
- {
- case RESOURCE_SHELLS: s = sprintf("%s and %d shells", s, thisammo); break;
- case RESOURCE_BULLETS: s = sprintf("%s and %d nails", s, thisammo); break;
- case RESOURCE_ROCKETS: s = sprintf("%s and %d rockets", s, thisammo); break;
- case RESOURCE_CELLS: s = sprintf("%s and %d cells", s, thisammo); break;
- case RESOURCE_PLASMA: s = sprintf("%s and %d plasma", s, thisammo); break;
- case RESOURCE_FUEL: s = sprintf("%s and %d fuel", s, thisammo); break;
- }
-
- s = substring(s, 5, -1);
+ return thisammo;
}
- return s;
+ return 0;
}
}
STAT(WEAPONS, this) &= ~set;
W_SwitchWeapon_Force(this, w_getbestweapon(this, weaponentity), weaponentity);
- string a = W_ThrowNewWeapon(this, w.m_id, doreduce, this.origin + delta, velo, weaponentity);
+ float a = W_ThrowNewWeapon(this, w.m_id, doreduce, this.origin + delta, velo, weaponentity);
- if(!a) return;
- Send_Notification(NOTIF_ONE, this, MSG_MULTI, ITEM_WEAPON_DROP, a, w.m_id);
+ if(a < 0) return;
+ Send_Notification(NOTIF_ONE, this, MSG_MULTI, ITEM_WEAPON_DROP, w.m_id, a);
}
void SpawnThrownWeapon(entity this, vector org, Weapon wep, .entity weaponentity)
.float savenextthink;
void thrown_wep_think(entity this);
-// returns amount of ammo used as string, or -1 for failure, or 0 for no ammo count
-string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vector velo, .entity weaponentity);
+// returns amount of ammo used, or -1 for failure, or 0 for no ammo count
+float W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vector velo, .entity weaponentity);
bool W_IsWeaponThrowable(entity this, int w);