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 _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 _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 _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;
        }