X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Ft_items.qc;h=b26c840ff0c8834ba446c01939fe8760095a95c1;hp=cd4ab6ceb21d29f956d3ce8af4cab46bdc66a1cb;hb=dbdc35464a18f62bf550a20eddac9ec16b0eacee;hpb=2ebd57fa31241642f35b82e541661d0703bb7f93 diff --git a/qcsrc/server/t_items.qc b/qcsrc/server/t_items.qc index cd4ab6ceb2..b26c840ff0 100644 --- a/qcsrc/server/t_items.qc +++ b/qcsrc/server/t_items.qc @@ -440,7 +440,7 @@ float Item_GiveTo(entity item, entity player) pickedup |= Item_GiveAmmoTo(item, player, armorvalue, item.max_armorvalue, ITEM_MODE_ARMOR); if (item.flags & FL_WEAPON) - if ((it = item.weapons - (item.weapons & player.weapons)) || (item.spawnshieldtime && g_pickup_weapons_anyway)) + if ((it = item.weapons - (item.weapons & player.weapons)) || (item.spawnshieldtime && self.pickup_anyway)) { pickedup = TRUE; for(i = WEP_FIRST; i <= WEP_LAST; ++i) @@ -483,7 +483,6 @@ float Item_GiveTo(entity item, entity player) if (!pickedup) return 0; - sound (player, CH_TRIGGER, item.item_pickupsound, VOL_BASE, ATTN_NORM); if (_switchweapon) if (player.switchweapon != w_getbestweapon(player)) W_SwitchWeapon_Force(player, w_getbestweapon(player)); @@ -525,13 +524,14 @@ void Item_Touch (void) self.strength_finished += time; self.invincible_finished += time; self.superweapons_finished += time; - return; } + return; } other.last_pickup = time; pointparticles(particleeffectnum("item_pickup"), self.origin, '0 0 0', 1); + sound (other, CH_TRIGGER, self.item_pickupsound, VOL_BASE, ATTN_NORM); if (self.classname == "droppedweapon") remove (self); @@ -568,6 +568,9 @@ void Item_Reset() self.think = SUB_Null; self.nextthink = 0; + if(self.waypointsprite_attached) + WaypointSprite_Kill(self.waypointsprite_attached); + if((self.flags & FL_POWERUP) | (self.weapons & WEPBIT_SUPERWEAPONS)) // do not spawn powerups initially! Item_ScheduleInitialRespawn(self); } @@ -987,6 +990,7 @@ void weapon_defaultspawnfunc(float wpn) string s; entity oldself; float i, j; + float f; if(self.classname != "droppedweapon" && self.classname != "replacedweapon") { @@ -1084,15 +1088,21 @@ void weapon_defaultspawnfunc(float wpn) } } + // pickup anyway + if(g_pickup_weapons_anyway) + self.pickup_anyway = TRUE; + + f = FL_WEAPON; + // no weapon-stay on superweapons - if(self.weapons & WEPBIT_SUPERWEAPONS) - self.flags |= FL_NO_WEAPON_STAY; + if(e.weapons & WEPBIT_SUPERWEAPONS) + f |= FL_NO_WEAPON_STAY; // weapon stay isn't supported for teamed weapons if(self.team) - self.flags |= FL_NO_WEAPON_STAY; + f |= FL_NO_WEAPON_STAY; - StartItem(e.model, "weapons/weaponpickup.wav", self.respawntime, self.respawntimejitter, e.message, 0, e.weapons, FL_WEAPON, weapon_pickupevalfunc, e.bot_pickupbasevalue); + StartItem(e.model, "weapons/weaponpickup.wav", self.respawntime, self.respawntimejitter, e.message, 0, e.weapons, f, weapon_pickupevalfunc, e.bot_pickupbasevalue); if (self.modelindex) // don't precache if self was removed weapon_action(e.weapon, WR_PRECACHE); }