6 .float healer_lifetime;
10 const int PROJECTILE_NADE = 71;
11 const int PROJECTILE_NADE_BURN = 72;
12 const int PROJECTILE_NADE_NAPALM = 73;
13 const int PROJECTILE_NADE_NAPALM_BURN = 74;
14 const int PROJECTILE_NAPALM_FOUNTAIN = 75;
15 const int PROJECTILE_NADE_ICE = 76;
16 const int PROJECTILE_NADE_ICE_BURN = 77;
17 const int PROJECTILE_NADE_TRANSLOCATE = 78;
18 const int PROJECTILE_NADE_SPAWN = 79;
19 const int PROJECTILE_NADE_HEAL = 80;
20 const int PROJECTILE_NADE_HEAL_BURN = 81;
21 const int PROJECTILE_NADE_MONSTER = 82;
22 const int PROJECTILE_NADE_MONSTER_BURN = 83;
25 const int NADES_MAX = 8;
26 entity NADES[NADES_MAX], NADES_first, NADES_last;
28 #define REGISTER_NADE(id) REGISTER(RegisterNades, NADE_TYPE, NADES, NADES_COUNT, id, m_id, NEW(Nade))
29 REGISTER_REGISTRY(RegisterNades)
32 ATTRIB(Nade, m_id, int, 0)
33 ATTRIB(Nade, m_color, vector, '0 0 0')
34 ATTRIB(Nade, m_name, string, _("Grenade"))
35 ATTRIB(Nade, m_icon, string, "nade_normal")
36 ATTRIBARRAY(Nade, m_projectile, int, 2)
37 ATTRIBARRAY(Nade, m_trail, string, 2)
38 METHOD(Nade, display, void(entity this, void(string name, string icon) returns)) {
39 returns(this.m_name, sprintf("/gfx/hud/%s/%s", cvar_string("menu_skin"), this.m_icon));
45 #define NADE_PROJECTILE(i, projectile, trail) do { \
46 this.m_projectile[i] = projectile; \
47 this.m_trail[i] = trail; \
50 REGISTER_NADE(NORMAL) {
51 this.m_color = '1 1 1';
52 NADE_PROJECTILE(0, PROJECTILE_NADE, string_null);
53 NADE_PROJECTILE(1, PROJECTILE_NADE_BURN, string_null);
56 REGISTER_NADE(NAPALM) {
57 this.m_color = '2 0.5 0';
58 this.m_name = _("Napalm grenade");
59 this.m_icon = "nade_napalm";
60 NADE_PROJECTILE(0, PROJECTILE_NADE_NAPALM, "TR_ROCKET");
61 NADE_PROJECTILE(1, PROJECTILE_NADE_NAPALM_BURN, "spiderbot_rocket_thrust");
65 this.m_color = '0 0.5 2';
66 this.m_name = _("Ice grenade");
67 this.m_icon = "nade_ice";
68 NADE_PROJECTILE(0, PROJECTILE_NADE_ICE, "TR_NEXUIZPLASMA");
69 NADE_PROJECTILE(1, PROJECTILE_NADE_ICE_BURN, "wakizashi_rocket_thrust");
72 REGISTER_NADE(TRANSLOCATE) {
73 this.m_color = '1 0 1';
74 this.m_name = _("Translocate grenade");
75 this.m_icon = "nade_translocate";
76 NADE_PROJECTILE(0, PROJECTILE_NADE_TRANSLOCATE, "TR_CRYLINKPLASMA");
77 NADE_PROJECTILE(1, PROJECTILE_NADE_TRANSLOCATE, "TR_CRYLINKPLASMA");
80 REGISTER_NADE(SPAWN) {
81 this.m_color = '1 0.9 0';
82 this.m_name = _("Spawn grenade");
83 this.m_icon = "nade_spawn";
84 NADE_PROJECTILE(0, PROJECTILE_NADE_SPAWN, "nade_yellow");
85 NADE_PROJECTILE(1, PROJECTILE_NADE_SPAWN, "nade_yellow");
89 this.m_color = '1 0 0';
90 this.m_name = _("Heal grenade");
91 this.m_icon = "nade_heal";
92 NADE_PROJECTILE(0, PROJECTILE_NADE_HEAL, "nade_red");
93 NADE_PROJECTILE(1, PROJECTILE_NADE_HEAL_BURN, "nade_red_burn");
96 REGISTER_NADE(MONSTER) {
97 this.m_color = '0.25 0.75 0';
98 this.m_name = _("Monster grenade");
99 this.m_icon = "nade_monster";
100 NADE_PROJECTILE(0, PROJECTILE_NADE_MONSTER, "nade_red");
101 NADE_PROJECTILE(1, PROJECTILE_NADE_MONSTER_BURN, "nade_red_burn");
104 entity Nade_FromProjectile(float proj)
106 FOREACH(NADES, true, LAMBDA(
107 for (int j = 0; j < 2; j++)
109 if (it.m_projectile[j] == proj) return it;
112 return NADE_TYPE_NULL;
115 string Nade_TrailEffect(float proj, float nade_team)
117 FOREACH(NADES, true, LAMBDA(
118 for (int j = 0; j < 2; j++)
120 if (it.m_projectile[j] == proj)
122 string trail = it.m_trail[j];
123 if (trail) return trail;
130 case PROJECTILE_NADE: return strcat("nade_", Static_Team_ColorName_Lower(nade_team));
131 case PROJECTILE_NADE_BURN: return strcat("nade_", Static_Team_ColorName_Lower(nade_team), "_burn");
137 float healer_send(entity to, int sf);