X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Ft_items.qc;h=c31926550293dd2f0e9eb49b8f80b6723d751bdf;hb=8643336b62c2c2881987dabddc842a0214839012;hp=2ad368db12475a86a8cbaf3801d5e3530dcea432;hpb=9eb82dd6fc682e3ddecd471835f9047816236342;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/t_items.qc b/qcsrc/server/t_items.qc index 2ad368db1..c31926550 100644 --- a/qcsrc/server/t_items.qc +++ b/qcsrc/server/t_items.qc @@ -1,9 +1,10 @@ #include "t_items.qh" +#include "../common/items/all.qc" + #if defined(SVQC) #include "_all.qh" - #include "g_subs.qh" #include "waypointsprites.qh" #include "bot/bot.qh" @@ -18,11 +19,12 @@ #include "../common/constants.qh" #include "../common/deathtypes.qh" #include "../common/notifications.qh" + #include "../common/triggers/subs.qh" #include "../common/util.qh" - #include "../common/monsters/monsters.qh" + #include "../common/monsters/all.qh" - #include "../common/weapons/weapons.qh" + #include "../common/weapons/all.qh" #include "../warpzonelib/util_server.qh" #endif @@ -506,11 +508,15 @@ void Item_ItemsTime_UpdateTime(entity e, float t) switch(e.items) { case IT_HEALTH: + if(!autocvar_sv_itemstime) + break; //if (e.classname == "item_health_mega") if(Item_ItemsTime_UpdateTime_Check(it_health_mega_time, t)) it_health_mega_time = t; break; case IT_ARMOR: + if(!autocvar_sv_itemstime) + break; if (e.classname == "item_armor_large") if(Item_ItemsTime_UpdateTime_Check(it_armor_large_time, t)) it_armor_large_time = t; @@ -871,6 +877,8 @@ float Item_GiveTo(entity item, entity player) return 1; } +.entity itemdef; + void Item_Touch (void) { entity e, head; @@ -910,8 +918,9 @@ void Item_Touch (void) self.invincible_finished = max(0, self.invincible_finished - time); self.superweapons_finished = max(0, self.superweapons_finished - time); } - - if(!Item_GiveTo(self, other)) + entity it = self.itemdef; + bool gave = (it && it.instanceOfPickup) ? ITEM_HANDLE(Pickup, it, self, other) : Item_GiveTo(self, other); + if (!gave) { if (self.classname == "droppedweapon") { @@ -932,9 +941,7 @@ void Item_Touch (void) if (self.classname == "droppedweapon") remove (self); - else if (!self.spawnshieldtime) - return; - else + else if (self.spawnshieldtime) { if(self.team) { @@ -1361,12 +1368,19 @@ void StartItem (string itemmodel, string pickupsound, float defaultrespawntime, return; } } + +void StartItemA (entity a) +{ + self.itemdef = a; + StartItem(a.m_model, a.m_sound, a.m_respawntime(), a.m_respawntimejitter(), a.m_name, a.m_itemid, 0, a.m_itemflags, a.m_pickupevalfunc, a.m_botvalue); +} + void spawnfunc_item_rockets (void) { if(!self.ammo_rockets) self.ammo_rockets = g_pickup_rockets; if(!self.pickup_anyway) self.pickup_anyway = g_pickup_ammo_anyway; - StartItem ("models/items/a_rockets.md3", "misc/itempickup.wav", g_pickup_respawntime_ammo, g_pickup_respawntimejitter_ammo, "rockets", IT_ROCKETS, 0, 0, commodity_pickupevalfunc, 3000); + StartItemA (ITEM_Rockets); } void spawnfunc_item_bullets (void) { @@ -1384,7 +1398,7 @@ void spawnfunc_item_bullets (void) { self.ammo_nails = g_pickup_nails; if(!self.pickup_anyway) self.pickup_anyway = g_pickup_ammo_anyway; - StartItem ("models/items/a_bullets.mdl", "misc/itempickup.wav", g_pickup_respawntime_ammo, g_pickup_respawntimejitter_ammo, "bullets", IT_NAILS, 0, 0, commodity_pickupevalfunc, 2000); + StartItemA (ITEM_Bullets); } void spawnfunc_item_cells (void) { @@ -1392,7 +1406,7 @@ void spawnfunc_item_cells (void) { self.ammo_cells = g_pickup_cells; if(!self.pickup_anyway) self.pickup_anyway = g_pickup_ammo_anyway; - StartItem ("models/items/a_cells.md3", "misc/itempickup.wav", g_pickup_respawntime_ammo, g_pickup_respawntimejitter_ammo, "cells", IT_CELLS, 0, 0, commodity_pickupevalfunc, 2000); + StartItemA (ITEM_Cells); } void spawnfunc_item_plasma() @@ -1401,7 +1415,7 @@ void spawnfunc_item_plasma() self.ammo_plasma = g_pickup_plasma; if(!self.pickup_anyway) self.pickup_anyway = g_pickup_ammo_anyway; - StartItem ("models/items/a_cells.md3", "misc/itempickup.wav", g_pickup_respawntime_ammo, g_pickup_respawntimejitter_ammo, "plasma", IT_PLASMA, 0, 0, commodity_pickupevalfunc, 2000); + StartItemA (ITEM_Plasma); } void spawnfunc_item_shells (void) { @@ -1419,7 +1433,7 @@ void spawnfunc_item_shells (void) { self.ammo_shells = g_pickup_shells; if(!self.pickup_anyway) self.pickup_anyway = g_pickup_ammo_anyway; - StartItem ("models/items/a_shells.md3", "misc/itempickup.wav", g_pickup_respawntime_ammo, g_pickup_respawntimejitter_ammo, "shells", IT_SHELLS, 0, 0, commodity_pickupevalfunc, 500); + StartItemA (ITEM_Shells); } void spawnfunc_item_armor_small (void) { @@ -1429,7 +1443,7 @@ void spawnfunc_item_armor_small (void) { self.max_armorvalue = g_pickup_armorsmall_max; if(!self.pickup_anyway) self.pickup_anyway = g_pickup_armorsmall_anyway; - StartItem ("models/items/item_armor_small.md3", "misc/armor1.wav", g_pickup_respawntime_short, g_pickup_respawntimejitter_short, "5 Armor", IT_ARMOR_SHARD, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW); + StartItemA (ITEM_ArmorSmall); } void spawnfunc_item_armor_medium (void) { @@ -1439,7 +1453,7 @@ void spawnfunc_item_armor_medium (void) { self.max_armorvalue = g_pickup_armormedium_max; if(!self.pickup_anyway) self.pickup_anyway = g_pickup_armormedium_anyway; - StartItem ("models/items/item_armor_medium.md3", "misc/armor10.wav", g_pickup_respawntime_medium, g_pickup_respawntimejitter_medium, "25 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_MID); + StartItemA (ITEM_ArmorMedium); } void spawnfunc_item_armor_big (void) { @@ -1449,7 +1463,7 @@ void spawnfunc_item_armor_big (void) { self.max_armorvalue = g_pickup_armorbig_max; if(!self.pickup_anyway) self.pickup_anyway = g_pickup_armorbig_anyway; - StartItem ("models/items/item_armor_big.md3", "misc/armor17_5.wav", g_pickup_respawntime_long, g_pickup_respawntimejitter_long, "50 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, 20000); + StartItemA (ITEM_ArmorBig); } void spawnfunc_item_armor_large (void) { @@ -1459,7 +1473,7 @@ void spawnfunc_item_armor_large (void) { self.max_armorvalue = g_pickup_armorlarge_max; if(!self.pickup_anyway) self.pickup_anyway = g_pickup_armorlarge_anyway; - StartItem ("models/items/item_armor_large.md3", "misc/armor25.wav", g_pickup_respawntime_long, g_pickup_respawntimejitter_long, "100 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_HIGH); + StartItemA (ITEM_ArmorLarge); } void spawnfunc_item_health_small (void) { @@ -1469,7 +1483,7 @@ void spawnfunc_item_health_small (void) { self.health = g_pickup_healthsmall; if(!self.pickup_anyway) self.pickup_anyway = g_pickup_healthsmall_anyway; - StartItem ("models/items/g_h1.md3", "misc/minihealth.wav", g_pickup_respawntime_short, g_pickup_respawntimejitter_short, "5 Health", IT_5HP, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW); + StartItemA (ITEM_HealthSmall); } void spawnfunc_item_health_medium (void) { @@ -1479,7 +1493,7 @@ void spawnfunc_item_health_medium (void) { self.health = g_pickup_healthmedium; if(!self.pickup_anyway) self.pickup_anyway = g_pickup_healthmedium_anyway; - StartItem ("models/items/g_h25.md3", "misc/mediumhealth.wav", g_pickup_respawntime_short, g_pickup_respawntimejitter_short, "25 Health", IT_25HP, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_MID); + StartItemA (ITEM_HealthMedium); } void spawnfunc_item_health_large (void) { @@ -1489,17 +1503,17 @@ void spawnfunc_item_health_large (void) { self.health = g_pickup_healthlarge; if(!self.pickup_anyway) self.pickup_anyway = g_pickup_healthlarge_anyway; - StartItem ("models/items/g_h50.md3", "misc/mediumhealth.wav", g_pickup_respawntime_medium, g_pickup_respawntimejitter_medium, "50 Health", IT_25HP, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_MID); + StartItemA (ITEM_HealthLarge); } void spawnfunc_item_health_mega (void) { - if(!self.max_health) - self.max_health = g_pickup_healthmega_max; - if(!self.health) - self.health = g_pickup_healthmega; - if(!self.pickup_anyway) - self.pickup_anyway = g_pickup_healthmega_anyway; - StartItem ("models/items/g_h100.md3", "misc/megahealth.wav", g_pickup_respawntime_long, g_pickup_respawntimejitter_long, "100 Health", IT_HEALTH, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_HIGH); + if(!self.max_health) + self.max_health = g_pickup_healthmega_max; + if(!self.health) + self.health = g_pickup_healthmega; + if(!self.pickup_anyway) + self.pickup_anyway = g_pickup_healthmega_anyway; + StartItemA (ITEM_HealthMega); } // support old misnamed entities @@ -1513,13 +1527,13 @@ void spawnfunc_item_strength (void) { precache_sound("weapons/strength_fire.wav"); if(!self.strength_finished) self.strength_finished = autocvar_g_balance_powerup_strength_time; - StartItem ("models/items/g_strength.md3", "misc/powerup.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup, "Strength Powerup", IT_STRENGTH, 0, FL_POWERUP, generic_pickupevalfunc, 100000); + StartItemA (ITEM_Strength); } void spawnfunc_item_invincible (void) { if(!self.invincible_finished) self.invincible_finished = autocvar_g_balance_powerup_invincible_time; - StartItem ("models/items/g_invincible.md3", "misc/powerup_shield.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup, "Shield", IT_INVINCIBLE, 0, FL_POWERUP, generic_pickupevalfunc, 100000); + StartItemA (ITEM_Shield); } // compatibility: @@ -1680,7 +1694,7 @@ void spawnfunc_item_fuel(void) self.ammo_fuel = g_pickup_fuel; if(!self.pickup_anyway) self.pickup_anyway = g_pickup_ammo_anyway; - StartItem ("models/items/g_fuel.md3", "misc/itempickup.wav", g_pickup_respawntime_ammo, g_pickup_respawntimejitter_ammo, "Fuel", IT_FUEL, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW); + StartItemA (ITEM_JetpackFuel); } void spawnfunc_item_fuel_regen(void) @@ -1690,7 +1704,7 @@ void spawnfunc_item_fuel_regen(void) spawnfunc_item_fuel(); return; } - StartItem ("models/items/g_fuelregen.md3", "misc/itempickup.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup, "Fuel regenerator", IT_FUEL_REGEN, 0, FL_POWERUP, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW); + StartItemA (ITEM_JetpackRegen); } void spawnfunc_item_jetpack(void) @@ -1702,7 +1716,7 @@ void spawnfunc_item_jetpack(void) spawnfunc_item_fuel(); return; } - StartItem ("models/items/g_jetpack.md3", "misc/itempickup.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup, "Jet pack", IT_JETPACK, 0, FL_POWERUP, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW); + StartItemA (ITEM_Jetpack); } float GiveWeapon(entity e, float wpn, float op, float val)