// reset the flag
setattachment(flag, NULL, "");
- tracebox(player.origin - FLAG_DROP_OFFSET, flag.m_mins, flag.m_maxs, player.origin + FLAG_DROP_OFFSET, MOVE_NOMONSTERS, flag);
flag.solid = SOLID_TRIGGER; // before setorigin to ensure area grid linking
- setorigin(flag, trace_endpos);
+ setorigin(flag, player.origin);
+ WarpZoneLib_MoveOutOfSolid(flag); // a flag has a bigger bbox than a player
flag.owner.flagcarried = NULL;
GameRules_scoring_vip(flag.owner, false);
flag.owner = NULL;
IL_PUSH(g_damagedbycontents, ball);
ball.effects &= ~EF_NODRAW;
setorigin(ball, player.origin + '0 0 10');
+ WarpZoneLib_MoveOutOfSolid(ball); // a ball has a bigger bbox than a player
ball.velocity = '0 0 200' + '0 100 0'*crandom() + '100 0 0'*crandom();
ball.owner = NULL;
navigation_dynamicgoal_set(ball, player);
key.angles_y += key.owner.angles.y;
#endif
key.flags = FL_ITEM;
+ WarpZoneLib_MoveOutOfSolid(key); // a key has a bigger bbox than a player
if(!IL_CONTAINS(g_items, key))
IL_PUSH(g_items, key);
set_movetype(key, MOVETYPE_TOSS);