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];
30 #define REGISTER_NADE(id) REGISTER(RegisterNades, NADE_TYPE, NADES, NADES_COUNT, id, Nade, m_id)
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 for (int i = 0; i < NADES_COUNT; i++)
100 entity nade = NADES[i];
101 for (int j = 0; j < 2; j++)
103 if (nade.m_projectile[j] == proj) return nade;
106 return NADE_TYPE_NULL;
109 string Nade_TrailEffect(float proj, float nade_team)
111 for (int i = 0; i < NADES_COUNT; i++)
113 entity nade = NADES[i];
114 for (int j = 0; j < 2; j++)
116 if (nade.m_projectile[j] == proj)
118 string trail = nade.m_trail[j];
119 if (trail) return trail;
126 case PROJECTILE_NADE: return strcat("nade_", Static_Team_ColorName_Lower(nade_team));
127 case PROJECTILE_NADE_BURN: return strcat("nade_", Static_Team_ColorName_Lower(nade_team), "_burn");
133 float healer_send(entity to, int sf);