#ifndef BITXOR_ASSIGN
# define BITXOR_ASSIGN(a,b) ((a) = ((a) | (b)) - ((a) & (b)))
#endif
-bool WarpZoneLib_MoveOutOfSolid(entity e);
+int WarpZoneLib_MoveOutOfSolid(entity e);
#define move_out_of_solid(e) WarpZoneLib_MoveOutOfSolid(e)
-bool WarpZoneLib_ExactTrigger_Touch(entity this, entity toucher);
-void WarpZoneLib_ExactTrigger_Init(entity this);
+bool WarpZoneLib_ExactTrigger_Touch(entity this, entity toucher, bool touchfunc);
// WARNING: this kills the trace globals
-#define EXACTTRIGGER_TOUCH(e,t) if(WarpZoneLib_ExactTrigger_Touch((e), (t))) return
-#define EXACTTRIGGER_INIT WarpZoneLib_ExactTrigger_Init(this)
+#define EXACTTRIGGER_TOUCH(e,t) if(!WarpZoneLib_ExactTrigger_Touch((e), (t), true)) return // intended for use in touch funcs
+#define EXACTTRIGGER_INIT WarpZoneLib_ExactTrigger_Init(this, true)