protected override Composite CreateBehavior()
{
return new PrioritySelector
(
new Decorator(ret => FunkyGame.GameIsInvalid,
new Action(ret =>
{
if (TownPortalBehavior.FunkyTPBehaviorFlag)
TownPortalBehavior.ResetTPBehavior();
m_IsDone = true;
})),
//Return To Town
new Decorator(ret => TownPortalBehavior.FunkyTPOverlord(null),
new Action(ret => TownPortalBehavior.FunkyTPBehavior(null))),
//Setup our Vector and SNO
new Decorator(ret => !initalizedTownVars,
new Action(ret => InitalizeTownVariables())),
new Decorator(ret => MovementVector==Vector3.Zero || ObjectSNO==-1,
new Action(ret =>
{
if (TownPortalBehavior.FunkyTPBehaviorFlag)
TownPortalBehavior.ResetTPBehavior();
m_IsDone = true;
})),
//Movement
new Decorator(ret => !UpdateObject() || ZetaDia.Me.Position.Distance(MovementVector)>10f || !Object.InLineOfSight,
new Action(ret => Navigator.MoveTo(MovementVector))),
new Decorator(ret => !Interact,
new Action(ret =>
{
if (TownPortalBehavior.FunkyTPBehaviorFlag)
TownPortalBehavior.ResetTPBehavior();
m_IsDone = true;
})),
//Interaction
new Decorator(ret => !DialogIsVisible(),
new Action(ret => Object.Interact())),
new Decorator(ret => DialogIsVisible(),
new Action(ret => {
if (TownPortalBehavior.FunkyTPBehaviorFlag)
TownPortalBehavior.ResetTPBehavior();
m_IsDone = true;
}))
);
}