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