+#if defined(CSQC)
+#elif defined(MENUQC)
+#elif defined(SVQC)
+ #include "../dpdefs/progsdefs.qh"
+ #include "../dpdefs/dpextensions.qh"
+ #include "../warpzonelib/util_server.qh"
+ #include "../common/util.qh"
+ #include "../common/monsters/monsters.qh"
+ #include "defs.qh"
+ #include "../common/notifications.qh"
+ #include "item_key.qh"
+#endif
+
/*
TODO:
- add an unlock sound (here to trigger_keylock and to func_door)
- should keys have a trigger?
*/
-float item_keys_usekey(entity l, entity p) {
+bool item_keys_usekey(entity l, entity p) {
float valid = l.itemkeys & p.itemkeys;
if (!valid) {
// other has none of the needed keys
- return FALSE;
+ return false;
} else if (l.itemkeys == valid) {
// ALL needed keys were given
l.itemkeys = 0;
- return TRUE;
+ return true;
} else {
// only some of the needed keys were given
l.itemkeys &= ~valid;
- return TRUE;
+ return true;
}
}
{
// first nudge it off the floor a little bit to avoid math errors
setorigin(self, self.origin + '0 0 1');
- // note droptofloor returns FALSE if stuck/or would fall too far
+ // note droptofloor returns false if stuck/or would fall too far
droptofloor();
}
itemkeys MUST always have exactly one bit set.
*/
void spawnfunc_item_key() {
- local string _model, _netname;
- local vector _colormod;
+ string _netname;
+ vector _colormod;
// reject this entity if more than one key was set!
if (self.itemkeys>0 && (self.itemkeys & (self.itemkeys-1)) != 0) {
}
// find default model
-#ifdef GMQCC
- _model = string_null;
-#endif
+ string _model = string_null;
if (self.itemkeys <= ITEM_KEY_BIT(2)) {
_model = "models/keys/key.md3";
} else if (self.itemkeys >= ITEM_KEY_BIT(3) && self.itemkeys <= ITEM_KEY_BIT(5)) {
* trigger givent targets
*/
void trigger_keylock_trigger(string s) {
- local entity t, stemp, otemp, atemp;
-
- stemp = self;
- otemp = other;
- atemp = activator;
-
+ entity stemp = self;
+ entity otemp = other;
+ entity atemp = activator;
+ entity t;
for(t = world; (t = find(t, targetname, s)); )
if (t.use) {
self = t;
* kill killtarget of trigger keylock.
*/
void trigger_keylock_kill(string s) {
- local entity t;
+ entity t;
for(t = world; (t = find(t, targetname, s)); )
remove(t);
};
void trigger_keylock_touch(void) {
- local float key_used, started_delay;
-
- key_used = FALSE;
- started_delay = FALSE;
+ bool key_used = false;
+ bool started_delay = false;
// only player may trigger the lock
if (!IS_PLAYER(other))
}
// trigger target2
- if (self.delay <= time || started_delay == TRUE)
+ if (self.delay <= time || started_delay == true)
if (self.target2) {
trigger_keylock_trigger(self.target2);
- started_delay = TRUE;
+ started_delay = true;
self.delay = time + self.wait;
}
} else {