60 lines
1.1 KiB
Plaintext
60 lines
1.1 KiB
Plaintext
enumflags { ITEM_DONT_DROP=16, ITEM_RESPAWN };
|
|
|
|
/*==========
|
|
ItemRespawn
|
|
==========*/
|
|
void() ItemRespawn =
|
|
{
|
|
sound (self, CHAN_VOICE, "items/itembk2.wav", 1, ATTN_NORM);
|
|
self.model = self.mdl;
|
|
self.solid = SOLID_TRIGGER;
|
|
setorigin (self, self.origin); // link back into world
|
|
};
|
|
|
|
/*==========
|
|
PlaceItem
|
|
==========*/
|
|
void() PlaceItem =
|
|
{
|
|
self.mdl = self.model;
|
|
self.flags = FL_ITEM;
|
|
self.solid = SOLID_TRIGGER;
|
|
|
|
if (self.spawnflags & ITEM_DONT_DROP)
|
|
{
|
|
self.movetype = MOVETYPE_NONE;
|
|
setorigin(self, self.origin);
|
|
}
|
|
else
|
|
{
|
|
self.movetype = MOVETYPE_TOSS;
|
|
setorigin(self, self.origin + '0 0 6');
|
|
if (!droptofloor())
|
|
{
|
|
dprint(self.classname);
|
|
dprint (" fell out of level at ");
|
|
dprint (vtos(self.origin));
|
|
dprint ("\n");
|
|
remove(self);
|
|
}
|
|
}
|
|
};
|
|
|
|
/*==========
|
|
StartItem
|
|
==========*/
|
|
void() StartItem =
|
|
{
|
|
if (self.spawnflags & (ITEM_DONT_DROP | ITEM_RESPAWN))
|
|
{
|
|
dprint("potential ");
|
|
dprint(self.classname);
|
|
dprint(" with erroneous spawnflag at ");
|
|
dprint(vtos(self.origin));
|
|
dprint("\n");
|
|
}
|
|
|
|
self.think = PlaceItem;
|
|
self.nextthink = time + 0.2;
|
|
};
|