namespace BP
{
	namespace Actors
	{
		class Area : BP::ScriptActor
		{
			float waitTime;
			//------------------------------------------------------------------------------------------------------------------------
			Area(kActor@ actor)
			{
				super(actor);
				waitTime = 0.0f;
			}
			//------------------------------------------------------------------------------------------------------------------------
			void BP_OnStart() override
			{
				if (self.IsMarked())
				{
					self.Remove();
					return;
				}
			}
			//------------------------------------------------------------------------------------------------------------------------
			void BP_OnTouch(kActor@ instigator) override
			{
				waitTime -= GAME_DELTA_TIME;
		        if (instigator is null || waitTime > 0.0f)
				{
					return;
				}
			
				if (@instigator == @BP::LocalPlayer::Actor && !BP::Actor::IsDead(@instigator))
				{
					//check air jump door
					if (self.TID() == 4006 && Game.ActiveMapID() == 55)
					{
						if (BP::Inventory::Has(kActor_Inventory_AirJump))
						{
							kActorIterator cIterator;
							kActor@ pActor;
							while (!((@pActor = cIterator.GetNext()) is null))
							{
								if (pActor.TID() == 4005)
								{
									pActor.TriggerMessageID() = 1;
									pActor.Trigger(null);
									break;
								}
							}
							self.Mark(true);
							self.Remove();
							return;
						}
						else
						{
							waitTime = 5.0f;
						}
					}
				}
			}
			//------------------------------------------------------------------------------------------------------------------------
		};
	}
}
