mirror of
https://git.code.sf.net/p/quake/game-source
synced 2024-11-22 20:11:49 +00:00
69 lines
1.1 KiB
C++
69 lines
1.1 KiB
C++
#include "common.qh"
|
|
|
|
#include "mapents_util.qh"
|
|
#include "misc.qh"
|
|
|
|
#include "items.qh"
|
|
|
|
.float() th_takeitem;
|
|
|
|
void() _item_regen_think = {
|
|
self.solid = SOLID_TRIGGER;
|
|
setmodel(self, self.model);
|
|
sound(self, CHAN_VOICE, self.noise7, 1, ATTN_NORM);
|
|
};
|
|
|
|
void() item_remove_regen = {
|
|
local float del;
|
|
|
|
self.solid = SOLID_NOT;
|
|
self.modelindex = 0;
|
|
|
|
del = self.wait + random()*self.delay;
|
|
if (del <= 0) {
|
|
safe_remove(self);
|
|
return;
|
|
}
|
|
|
|
self.think = _item_regen_think;
|
|
self.nextthink = time + del;
|
|
};
|
|
|
|
void() item_generic_touch = {
|
|
if (!other.th_takeitem)
|
|
return;
|
|
|
|
if (!util_check_targets()) return;
|
|
|
|
if (!switcheroo(other, self, other.th_takeitem))
|
|
return;
|
|
|
|
util_use_targets();
|
|
|
|
item_remove_regen();
|
|
};
|
|
|
|
void() item_generic = {
|
|
if (!self.noise7)
|
|
self.noise7 = "items/itembk2.wav";
|
|
|
|
if (sv_spawning)
|
|
precache_sound(self.noise7);
|
|
|
|
self.solid = SOLID_TRIGGER;
|
|
self.touch = item_generic_touch;
|
|
|
|
util_map_entity_init();
|
|
|
|
self.flags |= FL_ITEM;
|
|
|
|
if (!self.wait && !self.delay) {
|
|
self.wait = 20;
|
|
self.delay = 5;
|
|
}
|
|
|
|
if (sv_spawning) {
|
|
self.think = util_map_entity_drop;
|
|
self.nextthink = time + 0.2; // Let everything else drop to floor.
|
|
}
|
|
};
|