public virtual bool ObjectInteraction()
{
#region DebugInfo
if (FunkyBaseExtension.Settings.Debugging.DebugStatusBar)
{
FunkyGame.sStatusText = "[Interact- ";
switch (Cache.CurrentTarget.targetType.Value)
{
case TargetType.Avoidance:
FunkyGame.sStatusText += "Avoid] ";
break;
case TargetType.Fleeing:
FunkyGame.sStatusText += "Flee] ";
break;
case TargetType.NoMovement:
FunkyGame.sStatusText += "NoMovement] ";
break;
case TargetType.Unit:
FunkyGame.sStatusText += "Combat] ";
break;
case TargetType.Item:
case TargetType.Gold:
case TargetType.Globe:
FunkyGame.sStatusText += "Pickup] ";
break;
case TargetType.Interactable:
FunkyGame.sStatusText += "Interact] ";
break;
case TargetType.Container:
FunkyGame.sStatusText += "Open] ";
break;
case TargetType.Destructible:
case TargetType.Barricade:
FunkyGame.sStatusText += "Destroy] ";
break;
case TargetType.Shrine:
FunkyGame.sStatusText += "Click] ";
break;
case TargetType.LineOfSight:
FunkyGame.sStatusText += "LOS] ";
break;
}
FunkyGame.sStatusText += "Target=" + Cache.CurrentTarget.InternalName + " C-Dist=" + Math.Round(Cache.CurrentTarget.CentreDistance, 2) + ". " +
"R-Dist=" + Math.Round(Cache.CurrentTarget.RadiusDistance, 2) + ". ";
if (Cache.CurrentTarget.targetType.Value == TargetType.Unit && FunkyGame.Hero.Class.PowerPrime.Power != SNOPower.None)
FunkyGame.sStatusText += "Power=" + FunkyGame.Hero.Class.PowerPrime.Power + " (range " + FunkyGame.Hero.Class.PowerPrime.MinimumRange + ") ";
FunkyGame.sStatusText += "Weight=" + Cache.CurrentTarget.Weight;
BotMain.StatusText = FunkyGame.sStatusText;
FunkyGame.bResetStatusText = true;
}
#endregion
switch (Cache.CurrentTarget.targetType.Value)
{
case TargetType.Unit:
case TargetType.Item:
case TargetType.Gold:
case TargetType.Globe:
case TargetType.Shrine:
case TargetType.Interactable:
case TargetType.Container:
case TargetType.Door:
case TargetType.Destructible:
case TargetType.Barricade:
case TargetType.CursedShrine:
case TargetType.CursedChest:
CurrentState = Cache.CurrentTarget.Interact();
break;
case TargetType.AvoidanceMovements:
CurrentState = RunStatus.Running;
break;
case TargetType.Backtrack:
//Last position.. since we are interacting, we are within range.
if (Navigation.Navigation.NP.CurrentPath.Count <= 1)
{
Cache.Backtracking = false;
Cache.StartingLocation = Vector3.Zero;
}
CurrentState = RunStatus.Running;
break;
case TargetType.NoMovement:
CurrentState = RunStatus.Running;
break;
case TargetType.LineOfSight:
//Last position.. since we are interacting, we are within range.
//if (Navigation.NP.CurrentPath.Count <= 1)
//{
Helpers.Logger.DBLog.InfoFormat("Ending LOS Movement from Interaction");
Navigation.Navigation.NP.Clear();
FunkyGame.Navigation.LOSmovementObject = null;
//}
CurrentState = RunStatus.Running;
break;
case TargetType.Interaction:
Logger.DBLog.InfoFormat("Interacting with obj {0}", Cache.CurrentTarget.DebugStringSimple);
Cache.CurrentTarget.ref_DiaObject.Interact();
Cache.bForceTargetUpdate = true;
break;
}
// Now tell Trinity to get a new target!
FunkyGame.Navigation.lastChangedZigZag = DateTime.Today;
FunkyGame.Navigation.vPositionLastZigZagCheck = Vector3.Zero;
//bForceTargetUpdate=true;
return false;
}