private ITicker _AttackStrategy()
        {
            Guid enemy = Guid.Empty;

            var   skill         = ACTOR_STATUS_TYPE.NORMAL_IDLE;
            float distance      = 0;
            var   builder       = new Regulus.BehaviourTree.Builder();
            var   traceStrategy = new TraceStrategy(this);

            return(builder
                   .Sequence()
                   .Action((delta) => _FindEnemy(out enemy))

                   .Selector()
                   .Sub(_ChangeToBattle())
                   .Sequence()
                   .Action((delta) => _FindSkill(ref skill, ref distance))
                   .Action((delta) => traceStrategy.Reset(enemy, distance))
                   .Action((delta) => traceStrategy.Tick(delta))
                   .Action((delta) => _UseSkill(skill))
                   .End()

                   .End()


                   .End()
                   .Build());
        }
        private ITicker _ResourceObtaionStrategy()
        {
            var th = new TurnHandler(this);


            var  traceStrategy = new TraceStrategy(this);
            Guid target        = Guid.Empty;
            var  builder       = new Regulus.BehaviourTree.Builder();
            var  distance      = 1f;
            var  node          = builder
                                 .Sequence()
                                 .Action(_NotEnemy)
                                 .Action((delta) => _FindResourceTarget(out target))
                                 .Action((delta) => _GetDistance(target, out distance))
                                 //.Action((delta) => _Talk(string.Format("Mining Target. Distance:{0}", distance)))
                                 .Sequence()
                                 .Action((delta) => traceStrategy.Reset(target, distance))
                                 .Action((delta) => traceStrategy.Tick(delta))
                                 //.Action((delta) => _Talk("Begin Mining ."))
                                 .Action((delta) => _Loot(target))
                                 //.Action((delta) => _Talk("Mining Done."))
                                 .End()
                                 .End()
                                 .Build();

            return(node);
        }
        private ITicker _RescueCompanion()
        {
            var  trace   = new TraceStrategy(this);
            Guid target  = Guid.Empty;
            var  builder = new Regulus.BehaviourTree.Builder();

            return(builder
                   .Sequence()
                   .Action((delta) => _CheckItemAmount("AidKit", (count) => count >= 1))
                   .Action((delta) => _FindWounded(out target))
                   .Action((delta) => trace.Reset(target, 1))
                   .Action(trace.Tick)
                   .Action(_StopMove)
                   .Action((dt) => _UseItem("AidKit"))
                   .End()
                   .Build());
        }
        private ITicker _LootStrategy()
        {
            var th = new TurnHandler(this);


            var  traceStrategy = new TraceStrategy(this);
            Guid target        = Guid.Empty;
            var  builder       = new Regulus.BehaviourTree.Builder();
            var  distance      = 1f;
            var  node          = builder
                                 .Sequence()
                                 .Action(_NotEnemy)
                                 .Action((delta) => _FindLootTarget(out target))
                                 .Action((delta) => traceStrategy.Reset(target, distance))
                                 .Action((delta) => traceStrategy.Tick(delta))
                                 .Action((delta) => _Loot(target))
                                 .End()
                                 .Build();

            return(node);
        }