game-source/klik/mapents/items.qc

69 lines
1.2 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.
}
};