Пример #1
0
        private Combat.AIPlayer getRivalPlayer(int combatPlayerId, Combat.UserPlayer userPlayer)
        {
            if (null == userPlayer)
            {
                Log.Error("not found combat.userplayer");
                return(null);
            }

            if (false == ExtCombatPlayer.IsValid(combatPlayerId))
            {
                Log.Error(string.Format("invalid combat player id; {0}", combatPlayerId));
                return(null);
            }

            // @note: CombatPlayer(DataTable) differ from Combat.UserPlayer, Combat.AIPlayer
            CombatPlayer rivalPlayer = Manager.Instance.DT.CombatPlayer[combatPlayerId];

            int hp = Mathf.RoundToInt(userPlayer.Hp * Def.COMBAT_RIVAL_AI_STAT_MAX_RATIO);

            hp = Nurture.Character.Adjust(hp);

            int criticalProbability = userPlayer.CriticalProbability;

            int mp = 0, attack = 0, defense = 0, intellect = 0, tactic = 0;

            switch (rivalPlayer.orient)
            {
            case Combat.AIPlayer.EOrient.Attack:
                mp        = Def.MIN_STAT;
                attack    = Nurture.Character.Adjust(Mathf.RoundToInt(userPlayer.AttackPower * Def.COMBAT_RIVAL_AI_STAT_MAX_RATIO));
                defense   = getRivalStat(userPlayer.Defense, Def.COMBAT_RIVAL_AI_STAT_MIN_RATIO, Def.COMBAT_RIVAL_AI_STAT_MAX_RATIO);
                intellect = Def.MIN_STAT;
                tactic    = Nurture.Character.Adjust(Mathf.RoundToInt(userPlayer.Tactic * Def.COMBAT_RIVAL_AI_STAT_MAX_RATIO));
                break;

            case Combat.AIPlayer.EOrient.Trick:
                mp        = getRivalStat(userPlayer.Mp, Def.COMBAT_RIVAL_AI_STAT_MIN_RATIO, Def.COMBAT_RIVAL_AI_STAT_MAX_RATIO);
                attack    = Def.MIN_STAT;
                defense   = Nurture.Character.Adjust(Mathf.RoundToInt(userPlayer.Defense * Def.COMBAT_RIVAL_AI_STAT_MAX_RATIO));
                intellect = Nurture.Character.Adjust(Mathf.RoundToInt(userPlayer.Intellect * Def.COMBAT_RIVAL_AI_STAT_MAX_RATIO));
                tactic    = getRivalStat(userPlayer.Tactic, Def.COMBAT_RIVAL_AI_STAT_MIN_RATIO, Def.COMBAT_RIVAL_AI_STAT_MAX_RATIO);
                break;

            case Combat.AIPlayer.EOrient.All:
                mp        = getRivalStat(userPlayer.Mp, Def.COMBAT_RIVAL_AI_STAT_MIN_RATIO, Def.COMBAT_RIVAL_AI_STAT_MAX_RATIO);
                attack    = getRivalStat(userPlayer.AttackPower, Def.COMBAT_RIVAL_AI_STAT_MIN_RATIO, Def.COMBAT_RIVAL_AI_STAT_MAX_RATIO);
                defense   = getRivalStat(userPlayer.Defense, Def.COMBAT_RIVAL_AI_STAT_MIN_RATIO, Def.COMBAT_RIVAL_AI_STAT_MAX_RATIO);
                intellect = getRivalStat(userPlayer.Intellect, Def.COMBAT_RIVAL_AI_STAT_MIN_RATIO, Def.COMBAT_RIVAL_AI_STAT_MAX_RATIO);
                tactic    = getRivalStat(userPlayer.Tactic, Def.COMBAT_RIVAL_AI_STAT_MIN_RATIO, Def.COMBAT_RIVAL_AI_STAT_MAX_RATIO);
                break;

            default:
                Log.Error("invalid combat.ai.player orient");
                break;
            }

            return(new Combat.AIPlayer(Manager.Instance.Object.CombatMode, combatPlayerId,
                                       hp, mp, criticalProbability, attack, defense, intellect, tactic));
        }
Пример #2
0
        public void Start(int playerId)
        {
            if (false == ExtCombatPlayer.IsValid(playerId))
            {
                Log.Error(string.Format("invalid player id: {0}", playerId));
                return;
            }

            UserPlayer user = new UserPlayer(this);
            AIPlayer   ai   = new AIPlayer(this, playerId);

            start(user, ai);
        }