/** If you register a new item, make sure to add it to all.inc */
CLASS(GameItem, Object)
ATTRIB(GameItem, m_id, int, 0)
+ ATTRIB(GameItem, m_name, string, string_null)
+ ATTRIB(GameItem, m_icon, string, string_null)
+ METHOD(GameItem, display, void(entity this, void(string name, string icon) returns))
+ void GameItem_display(entity this, void(string name, string icon) returns) {
+ returns(this.m_name, this.m_icon ? sprintf("/gfx/hud/%s/%s", cvar_string("menu_skin"), this.m_icon) : string_null);
+ }
METHOD(GameItem, show, void(entity this))
void GameItem_show(entity this) { print("A game item\n"); }
void ITEM_HANDLE(Show, entity this) { this.show(this); }
REGISTER_ITEM(Bullets, Ammo) {
this.m_model = "models/items/a_bullets.mdl";
this.m_name = "bullets";
+ this.m_icon = "ammo_bullets";
#ifdef SVQC
this.m_botvalue = 2000;
this.m_itemid = IT_NAILS;
REGISTER_ITEM(Cells, Ammo) {
this.m_model = "models/items/a_cells.md3";
this.m_name = "cells";
+ this.m_icon = "ammo_cells";
#ifdef SVQC
this.m_botvalue = 2000;
this.m_itemid = IT_CELLS;
REGISTER_ITEM(Plasma, Ammo) {
this.m_model = "models/items/a_cells.md3";
this.m_name = "plasma";
+ this.m_icon = "ammo_plasma";
#ifdef SVQC
this.m_botvalue = 2000;
this.m_itemid = IT_PLASMA;
REGISTER_ITEM(Rockets, Ammo) {
this.m_model = "models/items/a_rockets.md3";
this.m_name = "rockets";
+ this.m_icon = "ammo_rockets";
#ifdef SVQC
this.m_botvalue = 3000;
this.m_itemid = IT_ROCKETS;
REGISTER_ITEM(Shells, Ammo) {
this.m_model = "models/items/a_shells.md3";
this.m_name = "shells";
+ this.m_icon = "ammo_shells";
#ifdef SVQC
this.m_botvalue = 500;
this.m_itemid = IT_SHELLS;
this.m_model = "models/items/item_armor_small.md3";
this.m_sound = "misc/armor1.wav";
this.m_name = "5 Armor";
+ this.m_icon = "armor";
#ifdef SVQC
this.m_botvalue = BOT_PICKUP_RATING_LOW;
this.m_itemid = IT_ARMOR_SHARD;
this.m_model = "models/items/item_armor_medium.md3";
this.m_sound = "misc/armor10.wav";
this.m_name = "25 Armor";
+ this.m_icon = "armor";
#ifdef SVQC
this.m_botvalue = BOT_PICKUP_RATING_MID;
this.m_itemid = IT_ARMOR;
this.m_model = "models/items/item_armor_big.md3";
this.m_sound = "misc/armor17_5.wav";
this.m_name = "50 Armor";
+ this.m_icon = "armor";
#ifdef SVQC
this.m_botvalue = 20000; // FIXME: higher than BOT_PICKUP_RATING_HIGH?
this.m_itemid = IT_ARMOR;
this.m_model = "models/items/item_armor_large.md3";
this.m_sound = "misc/armor25.wav";
this.m_name = "100 Armor";
+ this.m_icon = "item_large_armor";
#ifdef SVQC
this.m_botvalue = BOT_PICKUP_RATING_HIGH;
this.m_itemid = IT_ARMOR;
this.m_model = "models/items/g_h1.md3";
this.m_sound = "misc/minihealth.wav";
this.m_name = "5 Health";
+ this.m_icon = "health";
#ifdef SVQC
this.m_botvalue = BOT_PICKUP_RATING_LOW;
this.m_itemid = IT_5HP;
this.m_model = "models/items/g_h25.md3";
this.m_sound = "misc/mediumhealth.wav";
this.m_name = "25 Health";
+ this.m_icon = "health";
#ifdef SVQC
this.m_botvalue = BOT_PICKUP_RATING_MID;
this.m_itemid = IT_25HP;
this.m_model = "models/items/g_h50.md3";
this.m_sound = "misc/mediumhealth.wav";
this.m_name = "50 Health";
+ this.m_icon = "health";
#ifdef SVQC
this.m_botvalue = BOT_PICKUP_RATING_MID;
this.m_itemid = IT_25HP;
this.m_model = "models/items/g_h100.md3";
this.m_sound = "misc/megahealth.wav";
this.m_name = "100 Health";
+ this.m_icon = "item_mega_health";
#ifdef SVQC
this.m_botvalue = BOT_PICKUP_RATING_HIGH;
this.m_itemid = IT_HEALTH;
REGISTER_ITEM(Jetpack, Pickup) {
this.m_model = "models/items/g_jetpack.md3";
this.m_name = "Jet pack";
+ this.m_icon = "jetpack";
#ifdef SVQC
this.m_botvalue = BOT_PICKUP_RATING_LOW;
this.m_itemflags = FL_POWERUP;
REGISTER_ITEM(JetpackFuel, Pickup) {
this.m_model = "models/items/g_fuel.md3";
this.m_name = "Fuel";
+ this.m_icon = "ammo_fuel";
#ifdef SVQC
this.m_botvalue = BOT_PICKUP_RATING_LOW;
this.m_itemid = IT_FUEL;
REGISTER_ITEM(JetpackRegen, Pickup) {
this.m_model = "models/items/g_fuelregen.md3";
this.m_name = "Fuel regenerator";
+ this.m_icon = "fuelregen";
#ifdef SVQC
this.m_botvalue = BOT_PICKUP_RATING_LOW;
this.m_itemflags = FL_POWERUP;
this.m_model = "models/items/g_strength.md3";
this.m_sound = "misc/powerup.wav";
this.m_name = "Strength Powerup";
+ this.m_icon = "strength";
#ifdef SVQC
this.m_itemid = IT_STRENGTH;
#endif
this.m_model = "models/items/g_invincible.md3";
this.m_sound = "misc/powerup_shield.wav";
this.m_name = "Shield";
+ this.m_icon = "shield";
#ifdef SVQC
this.m_itemid = IT_INVINCIBLE;
#endif
#define TOPICS(X) \
X(NEW(GametypeSource), _("Gametypes"), "gametype_dm") \
+ X(NEW(ItemSource), _("Items"), "gametype_kh") \
X(NEW(MapSource), _("Maps"), "gametype_ctf") \
if (cvar("developer")) X(NEW(DebugSource), _("Debug"), "gametype_ons") \
/**/
int GametypeSource_reload(string filter) { return MAPINFO_TYPE_COUNT; }
ENDCLASS(GametypeSource)
+#include "../../common/items/all.qh"
+CLASS(ItemSource, DataSource)
+ METHOD(ItemSource, getEntry, entity(int, void(string, string)))
+ entity ItemSource_getEntry(int i, void(string, string) returns) {
+ entity e = ITEMS[i];
+ if (returns) e.display(e, returns);
+ return e;
+ }
+ METHOD(ItemSource, reload, int(string))
+ int ItemSource_reload(string filter) { return ITEM_COUNT; }
+ENDCLASS(ItemSource)
+
CLASS(MapSource, DataSource)
METHOD(MapSource, getEntry, entity(int, void(string, string)))
entity MapSource_getEntry(int i, void(string, string) returns)
GETTER(float, instagib_respawntimejitter_ammo)
REGISTER_ITEM(VaporizerCells, Ammo) {
- this.m_model = "models/items/a_cells.md3";
- this.m_sound = "misc/itempickup.wav";
- this.m_name = "Vaporizer Ammo";
+ this.m_model = "models/items/a_cells.md3";
+ this.m_sound = "misc/itempickup.wav";
+ this.m_name = "Vaporizer Ammo";
+ this.m_icon = "ammo_supercells";
#ifdef SVQC
- this.m_botvalue = 100;
- this.m_itemid = IT_CELLS;
- this.m_respawntime = GET(instagib_respawntime_ammo);
- this.m_respawntimejitter = GET(instagib_respawntimejitter_ammo);
+ this.m_botvalue = 100;
+ this.m_itemid = IT_CELLS;
+ this.m_respawntime = GET(instagib_respawntime_ammo);
+ this.m_respawntimejitter = GET(instagib_respawntimejitter_ammo);
#endif
}
REGISTER_ITEM(ExtraLife, Powerup) {
- this.m_model = "models/items/g_h100.md3";
- this.m_sound = "misc/megahealth.wav";
- this.m_name = "Extralife";
+ this.m_model = "models/items/g_h100.md3";
+ this.m_sound = "misc/megahealth.wav";
+ this.m_name = "Extralife";
+ this.m_icon = "item_mega_health";
#ifdef SVQC
- this.m_itemid = IT_NAILS;
- this.m_botvalue = BOT_PICKUP_RATING_HIGH;
+ this.m_itemid = IT_NAILS;
+ this.m_botvalue = BOT_PICKUP_RATING_HIGH;
#endif
}