Esempio n. 1
0
    void DoAttack()
    {
        CombatPlayer player = GameObject.FindObjectOfType <CombatPlayer>();

        if (player == null)
        {
            return;
        }

        int hitSkill = 50 + Level * 10;

        if (Random.Range(0, hitSkill) < Random.Range(0, player.Dodge()))
        {
            CombatBubbleSpawner.SpawnBubble(
                player.transform.position,
                "Dodged!",
                CombatBubbleSpawner.BubbleTypes.Round,
                Color.green
                );
            return;
        }

        int maxDamage = ((Bossiness - 1) * 2 + Level) * (1 + Difficulty.DiffLevel);

        int damage = Random.Range(maxDamage / 2, maxDamage);

        player.TakeDamage(damage, damageType);
    }
Esempio n. 2
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));
        }
Esempio n. 3
0
    public void OnStart(Combat.Player player)
    {
        _player = player;

        CombatPlayer p = Manager.Instance.DT.CombatPlayer[_player.Id];

        set(p.idle);

        if (player.Id == Def.MAIN_CHARACTER_ID)
        {
            rotate180Yaxis(Image.gameObject);
        }

        FloatingText.Hide();
    }
Esempio n. 4
0
        // constructor
        public UserPlayer(CombatMode mode) : base(mode, Def.MAIN_CHARACTER_ID)
        {
            _name = Manager.Instance.Object.MainCharacter.Name;

            CombatPlayer p = Manager.Instance.DT.CombatPlayer[Id];
            _criticalProbability = p.criticalProbability;

            Nurture.Character c = Manager.Instance.Object.NurtureMode.Character;
            _hp = c.Stamina;
            _mp = c.Intellect;
            _attack = c.Attack;
            _defense = c.Defense;
            _intellect = c.Intellect;
            _tactic = c.Tactic;
        }
Esempio n. 5
0
        public AIPlayer(CombatMode mode, int id, int hp, int mp, int criticalProbability, int attack, int defense, int intellect, int tactic) : base(mode, id)
        {
            CombatPlayer p = Manager.Instance.DT.CombatPlayer[id];

            _orient = p.orient;

            Character c = Manager.Instance.DT.Character[p.characterId];

            _name = c.name;

            _hp = hp;
            _mp = mp;
            _criticalProbability = criticalProbability;
            _attack    = attack;
            _defense   = defense;
            _intellect = intellect;
            _tactic    = tactic;
        }
Esempio n. 6
0
        // constructor
        public AIPlayer(CombatMode mode, int id) : base(mode, id)
        {
            CombatPlayer p = Manager.Instance.DT.CombatPlayer[id];

            _orient = p.orient;

            Character c = Manager.Instance.DT.Character[p.characterId];

            _name = c.name;

            _hp = p.hp;
            _mp = p.intellect;
            _criticalProbability = p.criticalProbability;
            _attack    = p.attack;
            _defense   = p.defense;
            _intellect = p.intellect;
            _tactic    = p.tactic;
        }
Esempio n. 7
0
    private void onTrick(int playerId, int damage)
    {
        CombatPlayer p = Manager.Instance.DT.CombatPlayer[_player.Id];

        Sprite s = null;

        if (_player.Id == playerId)
        {
            s = p.trick;
        }
        else
        {
            s = p.dfs;
            FloatingText.Float(damage.ToString(), NormalSize, NormalColor);
        }

        set(s);
    }
Esempio n. 8
0
    private void onCriticalAttack(int playerId, int damage)
    {
        CombatPlayer p = Manager.Instance.DT.CombatPlayer[_player.Id];

        Sprite s = null;

        if (_player.Id == playerId)
        {
            s = p.att;
        }
        else
        {
            s = p.dmg;
            FloatingText.Float(damage.ToString(), CriticalSize, CriticalColor);
        }

        set(s);
    }
Esempio n. 9
0
 void Start()
 {
     Instance = this;
 }
Esempio n. 10
0
    private void onEnd(Combat.CombatMode.EUserGameState state)
    {
        CombatPlayer p = Manager.Instance.DT.CombatPlayer[_player.Id];

        set(p.idle);
    }
Esempio n. 11
0
    private void onStartAIBattle()
    {
        CombatPlayer p = Manager.Instance.DT.CombatPlayer[_player.Id];

        set(p.idle);
    }