8 .float healer_lifetime;
12 const int PROJECTILE_NADE = 71;
13 const int PROJECTILE_NADE_BURN = 72;
14 const int PROJECTILE_NADE_NAPALM = 73;
15 const int PROJECTILE_NADE_NAPALM_BURN = 74;
16 const int PROJECTILE_NAPALM_FOUNTAIN = 75;
17 const int PROJECTILE_NADE_ICE = 76;
18 const int PROJECTILE_NADE_ICE_BURN = 77;
19 const int PROJECTILE_NADE_TRANSLOCATE = 78;
20 const int PROJECTILE_NADE_SPAWN = 79;
21 const int PROJECTILE_NADE_HEAL = 80;
22 const int PROJECTILE_NADE_HEAL_BURN = 81;
23 const int PROJECTILE_NADE_MONSTER = 82;
24 const int PROJECTILE_NADE_MONSTER_BURN = 83;
27 const int NADES_MAX = 8;
28 entity NADES[NADES_MAX], NADES_first, NADES_last;
30 #define REGISTER_NADE(id) REGISTER(RegisterNades, NADE_TYPE, NADES, NADES_COUNT, id, m_id, NEW(Nade))
31 REGISTER_REGISTRY(RegisterNades)
34 ATTRIB(Nade, m_id, int, 0)
35 ATTRIB(Nade, m_color, vector, '0 0 0')
36 ATTRIB(Nade, m_name, string, _("Grenade"))
37 ATTRIB(Nade, m_icon, string, "nade_normal")
38 ATTRIBARRAY(Nade, m_projectile, int, 2)
39 ATTRIBARRAY(Nade, m_trail, string, 2)
40 METHOD(Nade, display, void(entity this, void(string name, string icon) returns)) {
41 returns(this.m_name, sprintf("/gfx/hud/%s/%s", cvar_string("menu_skin"), this.m_icon));
47 #define NADE_PROJECTILE(i, projectile, trail) do { \
48 this.m_projectile[i] = projectile; \
49 this.m_trail[i] = trail; \
52 REGISTER_NADE(NORMAL) {
53 this.m_color = '1 1 1';
54 NADE_PROJECTILE(0, PROJECTILE_NADE, string_null);
55 NADE_PROJECTILE(1, PROJECTILE_NADE_BURN, string_null);
58 REGISTER_NADE(NAPALM) {
59 this.m_color = '2 0.5 0';
60 this.m_name = _("Napalm grenade");
61 this.m_icon = "nade_napalm";
62 NADE_PROJECTILE(0, PROJECTILE_NADE_NAPALM, "TR_ROCKET");
63 NADE_PROJECTILE(1, PROJECTILE_NADE_NAPALM_BURN, "spiderbot_rocket_thrust");
67 this.m_color = '0 0.5 2';
68 this.m_name = _("Ice grenade");
69 this.m_icon = "nade_ice";
70 NADE_PROJECTILE(0, PROJECTILE_NADE_ICE, "TR_NEXUIZPLASMA");
71 NADE_PROJECTILE(1, PROJECTILE_NADE_ICE_BURN, "wakizashi_rocket_thrust");
74 REGISTER_NADE(TRANSLOCATE) {
75 this.m_color = '1 0 1';
76 this.m_name = _("Translocate grenade");
77 this.m_icon = "nade_translocate";
78 NADE_PROJECTILE(0, PROJECTILE_NADE_TRANSLOCATE, "TR_CRYLINKPLASMA");
79 NADE_PROJECTILE(1, PROJECTILE_NADE_TRANSLOCATE, "TR_CRYLINKPLASMA");
82 REGISTER_NADE(SPAWN) {
83 this.m_color = '1 0.9 0';
84 this.m_name = _("Spawn grenade");
85 this.m_icon = "nade_spawn";
86 NADE_PROJECTILE(0, PROJECTILE_NADE_SPAWN, "nade_yellow");
87 NADE_PROJECTILE(1, PROJECTILE_NADE_SPAWN, "nade_yellow");
91 this.m_color = '1 0 0';
92 this.m_name = _("Heal grenade");
93 this.m_icon = "nade_heal";
94 NADE_PROJECTILE(0, PROJECTILE_NADE_HEAL, "nade_red");
95 NADE_PROJECTILE(1, PROJECTILE_NADE_HEAL_BURN, "nade_red_burn");
98 REGISTER_NADE(MONSTER) {
99 this.m_color = '0.25 0.75 0';
100 this.m_name = _("Monster grenade");
101 this.m_icon = "nade_monster";
102 NADE_PROJECTILE(0, PROJECTILE_NADE_MONSTER, "nade_red");
103 NADE_PROJECTILE(1, PROJECTILE_NADE_MONSTER_BURN, "nade_red_burn");
106 entity Nade_FromProjectile(float proj)
108 FOREACH(NADES, true, LAMBDA(
109 for (int j = 0; j < 2; j++)
111 if (it.m_projectile[j] == proj) return it;
114 return NADE_TYPE_NULL;
117 string Nade_TrailEffect(float proj, float nade_team)
119 FOREACH(NADES, true, LAMBDA(
120 for (int j = 0; j < 2; j++)
122 if (it.m_projectile[j] == proj)
124 string trail = it.m_trail[j];
125 if (trail) return trail;
132 case PROJECTILE_NADE: return strcat("nade_", Static_Team_ColorName_Lower(nade_team));
133 case PROJECTILE_NADE_BURN: return strcat("nade_", Static_Team_ColorName_Lower(nade_team), "_burn");
139 float healer_send(entity to, int sf);