-const int NADE_TYPE_NORMAL = 1;
-const int NADE_TYPE_NAPALM = 2;
-const int NADE_TYPE_ICE = 3;
-const int NADE_TYPE_TRANSLOCATE = 4;
-const int NADE_TYPE_SPAWN = 5;
-const int NADE_TYPE_HEAL = 6;
-const int NADE_TYPE_MONSTER = 7;
+void RegisterNades();
+const int NADES_MAX = 8;
+entity NADES[NADES_MAX], NADES_first, NADES_last;
+int NADES_COUNT;
+#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);
+
+#define NADE_PROJECTILE(i, projectile, trail) do { \
+ this.m_projectile[i] = projectile; \
+ this.m_trail[i] = trail; \
+} while (0)
+
+REGISTER_NADE(NORMAL) {
+ this.m_color = '1 1 1';
+ NADE_PROJECTILE(0, PROJECTILE_NADE, string_null);
+ NADE_PROJECTILE(1, PROJECTILE_NADE_BURN, string_null);
+}