// This will kick you out of the Trader's room when the Wave is in progress (and assuming you were naughty, and didn't just leave) class KFTraderTeleporter extends Teleporter; var localized string CantStayInShopAfterClose; function Trigger( actor Other, pawn EventInstigator ) { local KFHumanPawn A; Log("Trigger Call"); // Log("Am I enabled? : "$bEnabled); //bEnabled = !bEnabled; if ( bEnabled ) //teleport any pawns already in my radius ForEach TouchingActors(class'KFHumanPawn', A) PostTouch(A); } // Let's add a Bitchy message to let the player know that hanging around after closing is a no-no simulated function PostTouch( actor Other ) { local Teleporter D,Dest[16]; local int i; if (KFGameReplicationInfo(Level.Game.GameReplicationInfo).bWaveInProgress) { //Log("REMOVING SHOP HOG!"); PlayerController(Pawn(Other).Controller).ClientMessage(CantStayInShopAfterClose, 'KFCriticalEvent'); PlayerController(Pawn(Other).Controller).ClientCloseMenu(true, true); if( (InStr( URL, "/" ) >= 0) || (InStr( URL, "#" ) >= 0) ) { // Teleport to a level on the net. if( (Role == ROLE_Authority) && (Pawn(Other) != None) && Pawn(Other).IsHumanControlled() ) Level.Game.SendPlayer(PlayerController(Pawn(Other).Controller), URL); } else { // Teleport to a random teleporter in this local level, if more than one pick random. foreach AllActors( class 'Teleporter', D ) if( string(D.tag)~=URL && D!=Self ) { Dest[i] = D; i++; if ( i > arraycount(Dest) ) break; } i = rand(i); if( Dest[i] != None ) { // Teleport the actor into the other teleporter. if ( Other.IsA('Pawn') ) Other.PlayTeleportEffect(false, true); Dest[i].Accept( Other, self ); if ( Pawn(Other) != None ) TriggerEvent(Event, self, Pawn(Other)); } } } } defaultproperties { CantStayInShopAfterClose="You cannot stay in the shop after closing" }