Exemplo n.º 1
0
        private void PrepareDebtTake()
        {
            try {
                NWCreature self   = (NWCreature)fSelf;
                Building   shop   = self.FindHouse();
                NWCreature debtor = null;

                Player player = GlobalVars.nwrGame.Player;
                int    debt   = player.GetDebt(self.Name);
                if (debt > 0 && self.IsAvailable(player, true) && !player.InRect(shop.Area))
                {
                    debtor = player;
                }

                DebtTakeGoal dtGoal = (DebtTakeGoal)FindGoalByKind(GoalKind.gk_DebtTake);
                if (debtor != null)
                {
                    if (dtGoal == null)
                    {
                        dtGoal = ((DebtTakeGoal)CreateGoal(GoalKind.gk_DebtTake));
                    }
                    dtGoal.Debtor = debtor;
                }
                else
                {
                    if (dtGoal != null)
                    {
                        ReleaseGoal(dtGoal);
                    }
                }
            } catch (Exception ex) {
                Logger.Write("TraderBrain.prepareDebtTake(): " + ex.Message);
            }
        }
Exemplo n.º 2
0
        protected override GoalEntity CreateGoalEx(int goalKind)
        {
            GoalEntity result = null;

            switch (goalKind)
            {
            case GoalKind.gk_Travel:
                result = new TravelGoal(this);
                break;

            case GoalKind.gk_PointGuard:
                result = new PointGuardGoal(this);
                break;

            case GoalKind.gk_ItemAcquire:
                result = new ItemAcquireGoal(this);
                break;

            case GoalKind.gk_EnemyChase:
                result = new EnemyChaseGoal(this);
                break;

            case GoalKind.gk_EnemyEvade:
                result = new EnemyEvadeGoal(this);
                break;

            case GoalKind.gk_AreaGuard:
                result = new AreaGuardGoal(this);
                break;

            case GoalKind.gk_ShopReturn:
                result = new ShopReturnGoal(this);
                break;

            case GoalKind.gk_PlayerFind:
                result = new PlayerFindGoal(this);
                break;

            case GoalKind.gk_Escort:
                result = new EscortGoal(this);
                break;

            case GoalKind.gk_Flock:
                result = new FlockGoal(this);
                break;

            case GoalKind.gk_DebtTake:
                result = new DebtTakeGoal(this);
                break;

            case GoalKind.gk_WareReturn:
                result = new WareReturnGoal(this);
                break;

            case GoalKind.gk_Stalk:
                result = new StalkGoal(this);
                break;
            }
            return(result);
        }
Exemplo n.º 3
0
        protected override void EvaluateGoal(GoalEntity goal)
        {
            try {
                NWCreature self = (NWCreature)fSelf;
                int        gk   = goal.Kind;

                switch (gk)
                {
                case GoalKind.gk_ShopReturn:
                    goal.Value = 0.23f;
                    break;

                case GoalKind.gk_DebtTake:
                {
                    DebtTakeGoal dtGoal = (DebtTakeGoal)goal;
                    if (self.IsAvailable(dtGoal.Debtor, true))
                    {
                        goal.Value = 1f;
                    }
                    else
                    {
                        goal.Value = 0.1f;
                    }
                }
                break;

                case GoalKind.gk_WareReturn:
                    Building house = (Building)self.FindHouse();
                    if (house.Area.Contains(self.PosX, self.PosY))
                    {
                        goal.Value = 0.9f;
                    }
                    else
                    {
                        goal.Value = 0.22f;
                    }
                    break;

                default:
                    base.EvaluateGoal(goal);
                    break;
                }
            } catch (Exception ex) {
                Logger.Write("TraderBrain.evaluateGoal(): " + ex.Message);
            }
        }