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_icon, string, "nade_normal")
37 ATTRIBARRAY(Nade, m_projectile, int, 2)
38 ATTRIBARRAY(Nade, m_trail, string, 2)
43 #define NADE_PROJECTILE(i, projectile, trail) do { \
44 this.m_projectile[i] = projectile; \
45 this.m_trail[i] = trail; \
48 REGISTER_NADE(NORMAL) {
49 this.m_color = '1 1 1';
50 NADE_PROJECTILE(0, PROJECTILE_NADE, string_null);
51 NADE_PROJECTILE(1, PROJECTILE_NADE_BURN, string_null);
54 REGISTER_NADE(NAPALM) {
55 this.m_color = '2 0.5 0';
56 this.m_icon = "nade_napalm";
57 NADE_PROJECTILE(0, PROJECTILE_NADE_NAPALM, "TR_ROCKET");
58 NADE_PROJECTILE(1, PROJECTILE_NADE_NAPALM_BURN, "spiderbot_rocket_thrust");
62 this.m_color = '0 0.5 2';
63 this.m_icon = "nade_ice";
64 NADE_PROJECTILE(0, PROJECTILE_NADE_ICE, "TR_NEXUIZPLASMA");
65 NADE_PROJECTILE(1, PROJECTILE_NADE_ICE_BURN, "wakizashi_rocket_thrust");
68 REGISTER_NADE(TRANSLOCATE) {
69 this.m_color = '1 0 1';
70 this.m_icon = "nade_translocate";
71 NADE_PROJECTILE(0, PROJECTILE_NADE_TRANSLOCATE, "TR_CRYLINKPLASMA");
72 NADE_PROJECTILE(1, PROJECTILE_NADE_TRANSLOCATE, "TR_CRYLINKPLASMA");
75 REGISTER_NADE(SPAWN) {
76 this.m_color = '1 0.9 0';
77 this.m_icon = "nade_spawn";
78 NADE_PROJECTILE(0, PROJECTILE_NADE_SPAWN, "nade_yellow");
79 NADE_PROJECTILE(1, PROJECTILE_NADE_SPAWN, "nade_yellow");
83 this.m_color = '1 0 0';
84 this.m_icon = "nade_heal";
85 NADE_PROJECTILE(0, PROJECTILE_NADE_HEAL, "nade_red");
86 NADE_PROJECTILE(1, PROJECTILE_NADE_HEAL_BURN, "nade_red_burn");
89 REGISTER_NADE(MONSTER) {
90 this.m_color = '0.25 0.75 0';
91 this.m_icon = "nade_monster";
92 NADE_PROJECTILE(0, PROJECTILE_NADE_MONSTER, "nade_red");
93 NADE_PROJECTILE(1, PROJECTILE_NADE_MONSTER_BURN, "nade_red_burn");
96 entity Nade_FromProjectile(float proj)
98 FOREACH(NADES, true, LAMBDA(
99 for (int j = 0; j < 2; j++)
101 if (it.m_projectile[j] == proj) return it;
104 return NADE_TYPE_NULL;
107 string Nade_TrailEffect(float proj, float nade_team)
109 FOREACH(NADES, true, LAMBDA(
110 for (int j = 0; j < 2; j++)
112 if (it.m_projectile[j] == proj)
114 string trail = it.m_trail[j];
115 if (trail) return trail;
122 case PROJECTILE_NADE: return strcat("nade_", Static_Team_ColorName_Lower(nade_team));
123 case PROJECTILE_NADE_BURN: return strcat("nade_", Static_Team_ColorName_Lower(nade_team), "_burn");
129 float healer_send(entity to, int sf);