#ifndef NADES_H
#define NADES_H
-#include "oo.qh"
-#include "registry.qh"
#include "teams.qh"
.float healer_lifetime;
void RegisterNades();
const int NADES_MAX = 8;
-entity NADES[NADES_MAX];
+entity NADES[NADES_MAX], NADES_first, NADES_last;
int NADES_COUNT;
-#define REGISTER_NADE(id) REGISTER(RegisterNades, NADE_TYPE, NADES, NADES_COUNT, id, Nade, m_id)
+#define REGISTER_NADE(id) REGISTER(RegisterNades, NADE_TYPE, NADES, NADES_COUNT, id, m_id, NEW(Nade))
REGISTER_REGISTRY(RegisterNades)
CLASS(Nade, Object)
ATTRIB(Nade, m_id, int, 0)
ATTRIB(Nade, m_color, vector, '0 0 0')
+ ATTRIB(Nade, m_name, string, _("Grenade"))
ATTRIB(Nade, m_icon, string, "nade_normal")
ATTRIBARRAY(Nade, m_projectile, int, 2)
ATTRIBARRAY(Nade, m_trail, string, 2)
+ METHOD(Nade, display, void(entity this, void(string name, string icon) returns)) {
+ returns(this.m_name, sprintf("/gfx/hud/%s/%s", cvar_string("menu_skin"), this.m_icon));
+ }
ENDCLASS(Nade)
-REGISTER_NADE(NULL);
+REGISTER_NADE(Null);
#define NADE_PROJECTILE(i, projectile, trail) do { \
this.m_projectile[i] = projectile; \
REGISTER_NADE(NAPALM) {
this.m_color = '2 0.5 0';
+ this.m_name = _("Napalm grenade");
this.m_icon = "nade_napalm";
NADE_PROJECTILE(0, PROJECTILE_NADE_NAPALM, "TR_ROCKET");
NADE_PROJECTILE(1, PROJECTILE_NADE_NAPALM_BURN, "spiderbot_rocket_thrust");
REGISTER_NADE(ICE) {
this.m_color = '0 0.5 2';
+ this.m_name = _("Ice grenade");
this.m_icon = "nade_ice";
NADE_PROJECTILE(0, PROJECTILE_NADE_ICE, "TR_NEXUIZPLASMA");
NADE_PROJECTILE(1, PROJECTILE_NADE_ICE_BURN, "wakizashi_rocket_thrust");
REGISTER_NADE(TRANSLOCATE) {
this.m_color = '1 0 1';
+ this.m_name = _("Translocate grenade");
this.m_icon = "nade_translocate";
NADE_PROJECTILE(0, PROJECTILE_NADE_TRANSLOCATE, "TR_CRYLINKPLASMA");
NADE_PROJECTILE(1, PROJECTILE_NADE_TRANSLOCATE, "TR_CRYLINKPLASMA");
REGISTER_NADE(SPAWN) {
this.m_color = '1 0.9 0';
+ this.m_name = _("Spawn grenade");
this.m_icon = "nade_spawn";
NADE_PROJECTILE(0, PROJECTILE_NADE_SPAWN, "nade_yellow");
NADE_PROJECTILE(1, PROJECTILE_NADE_SPAWN, "nade_yellow");
REGISTER_NADE(HEAL) {
this.m_color = '1 0 0';
+ this.m_name = _("Heal grenade");
this.m_icon = "nade_heal";
NADE_PROJECTILE(0, PROJECTILE_NADE_HEAL, "nade_red");
NADE_PROJECTILE(1, PROJECTILE_NADE_HEAL_BURN, "nade_red_burn");
REGISTER_NADE(MONSTER) {
this.m_color = '0.25 0.75 0';
+ this.m_name = _("Monster grenade");
this.m_icon = "nade_monster";
NADE_PROJECTILE(0, PROJECTILE_NADE_MONSTER, "nade_red");
NADE_PROJECTILE(1, PROJECTILE_NADE_MONSTER_BURN, "nade_red_burn");
entity Nade_FromProjectile(float proj)
{
- for (int i = 0; i < NADES_COUNT; i++)
- {
- entity nade = NADES[i];
+ FOREACH(NADES, true, LAMBDA(
for (int j = 0; j < 2; j++)
{
- if (nade.m_projectile[j] == proj) return nade;
+ if (it.m_projectile[j] == proj) return it;
}
- }
- return NADE_TYPE_NULL;
+ ));
+ return NADE_TYPE_Null;
}
string Nade_TrailEffect(float proj, float nade_team)
{
- for (int i = 0; i < NADES_COUNT; i++)
- {
- entity nade = NADES[i];
+ FOREACH(NADES, true, LAMBDA(
for (int j = 0; j < 2; j++)
{
- if (nade.m_projectile[j] == proj)
+ if (it.m_projectile[j] == proj)
{
- string trail = nade.m_trail[j];
+ string trail = it.m_trail[j];
if (trail) return trail;
break;
}
}
- }
+ ));
switch (proj)
{
case PROJECTILE_NADE: return strcat("nade_", Static_Team_ColorName_Lower(nade_team));