Example #1
0
        CombatResult NPCSetUp(NPC self, CharacterMotherClass[] allies, CharacterMotherClass[] enemies, Random rng,
                              CombatResult.Team t)
        {
            int state = self.HealthStatus(out string r, false);

            if (state > -1)
            {
                int[]        info    = NPCCombat.MobAI(self, allies, enemies);
                CombatResult cresult = new CombatResult(self, self.abilities[info[0]], rng, this, t)
                {
                    target = info[1] + "," + info[2]
                };
                return(cresult);
            }
            CombatResult cr = new CombatResult(self, null, rng, this, t);

            if (state > -2 && state < 2)
            {
                if (self.ConsumeHealing())
                {
                    cr.action = CombatResult.Action.Consume;
                }
            }
            return(cr);
        }
Example #2
0
        internal Combat(NPC[] mobs, params CharacterMotherClass[] players)
        {
            //
            Random rng = new Random();

            playerParty = new CombatResult[players.Length];
            for (int i = 0; i < players.Length; i++)
            {
                if (players[i] is Player player)
                {
                    playerParty[i] = new CombatResult(players[i], player.GetAbility(player.duel.abilityName, true),
                                                      rng, this, CombatResult.Team.P);
                }
                else if (players[i] is NPC follower)
                {
                    playerParty[i] = NPCSetUp(follower, players, mobs, rng, CombatResult.Team.P);
                }
            }
            //
            mobParty = new CombatResult[mobs.Length];
            for (int i = 0; i < mobs.Length; i++)
            {
                mobParty[i] = NPCSetUp(mobs[i], mobs, players, rng, CombatResult.Team.M);
            }
        }
Example #3
0
        internal static CombatResult GetTargetCR(CombatResult caster, CombatResult[] friends, CombatResult[] foes)
        {
            if (caster.abilityUsed == null)
            {
                return(caster);
            }
            CombatResult[] selection = null;
            if (caster.target == "Default")
            {
                switch (caster.abilityUsed.type)
                {
                case Ability.AType.Martial:
                case Ability.AType.Elemental:
                case Ability.AType.Tactical:
                case Ability.AType.Enchantment:
                    foreach (var foe in foes)
                    {
                        if (foe.character.health > 0)
                        {
                            return(foe);
                        }
                    }
                    return(foes[0]);

                case Ability.AType.Defensive:
                    return(caster);
                }
            }
            switch (caster.target[0])
            {
            case '0':
                selection = foes;
                break;

            case '1':
                selection = friends;
                break;
            }
            int index = Verify.MinMax(int.Parse(caster.target[2].ToString()), selection.Length - 1);

            return(selection[index]);
        }