X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Ft_items.qc;h=ee66278b34899733738a66e373f73cded1541406;hb=a60cee16752e5abd387f6b7cd7d826b4f0321d05;hp=c291e79a009f715fb67e0decc66d0cde175fb809;hpb=c6b8947c5875567662ac5c3e156325bcff42aee9;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/t_items.qc b/qcsrc/server/t_items.qc index c291e79a0..ee66278b3 100644 --- a/qcsrc/server/t_items.qc +++ b/qcsrc/server/t_items.qc @@ -233,8 +233,13 @@ void Item_ScheduleRespawnIn(entity e, float t) void Item_ScheduleRespawn(entity e) { - Item_Show(e, 0); - Item_ScheduleRespawnIn(e, ITEM_RESPAWNTIME(e)); + if(e.respawntime > 0) + { + Item_Show(e, 0); + Item_ScheduleRespawnIn(e, ITEM_RESPAWNTIME(e)); + } + else // if respawntime is -1, this item does not respawn + Item_Show(e, -1); } void Item_ScheduleInitialRespawn(entity e) @@ -263,7 +268,7 @@ float Item_GiveTo(entity item, entity player) if (player.ammo_fuel < g_pickup_fuel_max) { pickedup = TRUE; - player.ammo_fuel = min(player.ammo_fuel + item.ammo_fuel, g_pickup_fuel_max); + player.ammo_fuel = bound(player.ammo_fuel, g_pickup_fuel_max, player.ammo_fuel + item.ammo_fuel); player.pauserotfuel_finished = max(player.pauserotfuel_finished, time + cvar("g_balance_pause_fuel_rot")); } if((it = (item.items - (item.items & player.items)) & IT_PICKUPMASK)) @@ -293,7 +298,7 @@ float Item_GiveTo(entity item, entity player) if (item.weapons & WEPBIT_MINSTANEX) W_GiveWeapon (player, WEP_MINSTANEX, item.netname); if (item.ammo_cells) - player.ammo_cells = min (player.ammo_cells + cvar("g_minstagib_ammo_drop"), 999); + player.ammo_cells = bound(player.ammo_cells, 999, player.ammo_cells + cvar("g_minstagib_ammo_drop")); player.health = 100; } @@ -303,7 +308,7 @@ float Item_GiveTo(entity item, entity player) pickedup = TRUE; // sound not available // AnnounceTo(player, "_lives"); - player.armorvalue = min(player.armorvalue + cvar("g_minstagib_extralives"), 999); + player.armorvalue = bound(player.armorvalue, 999, player.armorvalue + cvar("g_minstagib_extralives")); sprint(player, "^3You picked up some extra lives\n"); } @@ -324,14 +329,6 @@ float Item_GiveTo(entity item, entity player) // AnnounceTo(player, "speed"); player.invincible_finished = max(player.invincible_finished, time) + cvar("g_balance_powerup_strength_time"); } - - if (item.ammo_fuel) - if (player.ammo_fuel < g_pickup_fuel_max) - { - pickedup = TRUE; - player.ammo_fuel = min(player.ammo_fuel + item.ammo_fuel, g_pickup_fuel_max); - player.pauserotfuel_finished = max(player.pauserotfuel_finished, time + cvar("g_balance_pause_fuel_rot")); - } } } else @@ -368,31 +365,31 @@ float Item_GiveTo(entity item, entity player) if ((player.ammo_shells < g_pickup_shells_max) || item.pickup_anyway) { pickedup = TRUE; - player.ammo_shells = min (player.ammo_shells + item.ammo_shells, g_pickup_shells_max); + player.ammo_shells = bound(player.ammo_shells, g_pickup_shells_max, player.ammo_shells + item.ammo_shells); } if (item.ammo_nails) if ((player.ammo_nails < g_pickup_nails_max) || item.pickup_anyway) { pickedup = TRUE; - player.ammo_nails = min (player.ammo_nails + item.ammo_nails, g_pickup_nails_max); + player.ammo_nails = bound(player.ammo_nails, g_pickup_nails_max, player.ammo_nails + item.ammo_nails); } if (item.ammo_rockets) if ((player.ammo_rockets < g_pickup_rockets_max) || item.pickup_anyway) { pickedup = TRUE; - player.ammo_rockets = min (player.ammo_rockets + item.ammo_rockets, g_pickup_rockets_max); + player.ammo_rockets = bound(player.ammo_rockets, g_pickup_rockets_max, player.ammo_rockets + item.ammo_rockets); } if (item.ammo_cells) if ((player.ammo_cells < g_pickup_cells_max) || item.pickup_anyway) { pickedup = TRUE; - player.ammo_cells = min (player.ammo_cells + item.ammo_cells, g_pickup_cells_max); + player.ammo_cells = bound(player.ammo_cells, g_pickup_cells_max, player.ammo_cells + item.ammo_cells); } if (item.ammo_fuel) if ((player.ammo_fuel < g_pickup_fuel_max) || item.pickup_anyway) { pickedup = TRUE; - player.ammo_fuel = min(player.ammo_fuel + item.ammo_fuel, g_pickup_fuel_max); + player.ammo_fuel = bound(player.ammo_fuel, g_pickup_fuel_max, player.ammo_fuel + item.ammo_fuel); player.pauserotfuel_finished = max(player.pauserotfuel_finished, time + cvar("g_balance_pause_fuel_rot")); } } @@ -433,14 +430,14 @@ float Item_GiveTo(entity item, entity player) if ((player.health < item.max_health) || item.pickup_anyway) { pickedup = TRUE; - player.health = min(player.health + item.health, item.max_health); + player.health = bound(player.health, item.max_health, player.health + item.health); player.pauserothealth_finished = max(player.pauserothealth_finished, time + cvar("g_balance_pause_health_rot")); } if (item.armorvalue) if ((player.armorvalue < item.max_armorvalue) || item.pickup_anyway) { pickedup = TRUE; - player.armorvalue = min(player.armorvalue + item.armorvalue, item.max_armorvalue); + player.armorvalue = bound(player.armorvalue, item.max_armorvalue, player.armorvalue + item.armorvalue); player.pauserotarmor_finished = max(player.pauserotarmor_finished, time + cvar("g_balance_pause_armor_rot")); } } @@ -484,6 +481,8 @@ void Item_Touch (void) if(!Item_GiveTo(self, other)) return; + other.last_pickup = time; + pointparticles(particleeffectnum("item_pickup"), self.origin, '0 0 0', 1); if (self.classname == "droppedweapon") @@ -1047,7 +1046,7 @@ void weapon_defaultspawnfunc(float wpn) { ammofield = Item_CounterField(j); if(!self.ammofield) - self.ammofield = cvar(strcat("g_pickup_", Item_CounterFieldName(j))); + self.ammofield = cvar(strcat("g_pickup_", Item_CounterFieldName(j), "_weapon")); } } } @@ -1192,7 +1191,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/g_a1.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); + 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); } void spawnfunc_item_armor_medium (void) { @@ -1202,7 +1201,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/g_armormedium.md3", "misc/armor10.wav", g_pickup_respawntime_medium, g_pickup_respawntimejitter_medium, "25 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_MID); + 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); } void spawnfunc_item_armor_big (void) { @@ -1212,7 +1211,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/g_a50.md3", "misc/armor17_5.wav", g_pickup_respawntime_long, g_pickup_respawntimejitter_long, "50 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, 20000); + 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); } void spawnfunc_item_armor_large (void) { @@ -1222,7 +1221,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/g_a25.md3", "misc/armor25.wav", g_pickup_respawntime_long, g_pickup_respawntimejitter_long, "100 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, BOT_PICKUP_RATING_HIGH); + 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); } void spawnfunc_item_health_small (void) {