#pragma once #ifdef SVQC PROPERTY(float, g_pickup_respawntime_weapon) PROPERTY(float, g_pickup_respawntime_superweapon) PROPERTY(float, g_pickup_respawntime_ammo) PROPERTY(float, g_pickup_respawntime_short) PROPERTY(float, g_pickup_respawntime_medium) PROPERTY(float, g_pickup_respawntime_long) PROPERTY(float, g_pickup_respawntime_powerup) PROPERTY(float, g_pickup_respawntimejitter_weapon) PROPERTY(float, g_pickup_respawntimejitter_superweapon) PROPERTY(float, g_pickup_respawntimejitter_ammo) PROPERTY(float, g_pickup_respawntimejitter_short) PROPERTY(float, g_pickup_respawntimejitter_medium) PROPERTY(float, g_pickup_respawntimejitter_long) PROPERTY(float, g_pickup_respawntimejitter_powerup) #endif // pickup ratings for bot logic const int BOT_PICKUP_RATING_LOW = 2500; const int BOT_PICKUP_RATING_MID = 5000; const int BOT_PICKUP_RATING_HIGH = 10000; #include #include #include CLASS(Pickup, GameItem) #ifdef GAMEQC ATTRIB(Pickup, m_model, Model); ATTRIB(Pickup, m_sound, Sound, SND_ITEMPICKUP); #endif ATTRIB(Pickup, m_name, string); METHOD(Pickup, show, void(Pickup this)) { TC(Pickup, this); LOG_INFOF("%s: %s\n", etos(this), this.m_name); } ATTRIB(Pickup, m_itemid, int, 0); #ifdef SVQC ATTRIB(Pickup, m_mins, vector, '-16 -16 0'); ATTRIB(Pickup, m_maxs, vector, '16 16 32'); ATTRIB(Pickup, m_botvalue, int, 0); ATTRIB(Pickup, m_itemflags, int, 0); float generic_pickupevalfunc(entity player, entity item); ATTRIB(Pickup, m_pickupevalfunc, float(entity player, entity item), generic_pickupevalfunc); ATTRIB(Pickup, m_respawntime, float()); ATTRIB(Pickup, m_respawntimejitter, float()); float Item_GiveTo(entity item, entity player); METHOD(Pickup, giveTo, bool(Pickup this, entity item, entity player)) { TC(Pickup, this); bool b = Item_GiveTo(item, player); if (b) { LOG_DEBUGF("entity %i picked up %s", player, this.m_name); player.inventory.inv_items[this.m_id]++; Inventory_update(player); } return b; } bool ITEM_HANDLE(Pickup, Pickup this, entity item, entity player); #endif ENDCLASS(Pickup)