/// <summary>
 /// Converts a <see cref="CipCreatureFlag"/> to an <see cref="CreatureFlag"/>.
 /// </summary>
 /// <param name="cipFlag">The CIP creature flag to convert.</param>
 /// <returns>The <see cref="CreatureFlag"/> picked, if any.</returns>
 public static CreatureFlag?ToCreatureFlag(this CipCreatureFlag cipFlag)
 {
     return(cipFlag switch
     {
         CipCreatureFlag.Unpushable => CreatureFlag.CannotBePushed,
         CipCreatureFlag.KickBoxes => CreatureFlag.CannotBePushed,
         CipCreatureFlag.KickCreatures => CreatureFlag.CannotBePushed,
         CipCreatureFlag.NoHit => CreatureFlag.CannotBeTargetted,
         CipCreatureFlag.DistanceFighting => CreatureFlag.KeepsDistance,
         _ => null,
     });
예제 #2
0
        public void TestParseMonsterFile()
        {
            const string        ExpectedName              = "warlock";
            const string        ExpectedArticle           = "a";
            const BloodType     ExpectedBloodType         = BloodType.Blood;
            const uint          ExpectedExperience        = 4000;
            const CipOutfitType ExpectedOutfitType        = CipOutfitType.Outfit;
            const ushort        ExpectedOutfitId          = 130;
            const byte          ExpectedHeadColor         = 0;
            const byte          ExpectedBodyColor         = 52;
            const byte          ExpectedLegsColor         = 128;
            const byte          ExpectedFeetColor         = 95;
            const uint          ExpectedCorpse            = 4240;
            const ushort        ExpectedSummonCost        = 0;
            const ushort        ExpectedFleeThreshold     = 1000;
            const ushort        ExpectedAttack            = 40;
            const ushort        ExpectedDefense           = 50;
            const ushort        ExpectedArmor             = 32;
            const byte          ExpectedLoseTarget        = 50;
            const byte          ExpectedStrategyClosest   = 100;
            const byte          ExpectedStrategyWeakest   = 0;
            const byte          ExpectedStrategyStrongest = 0;
            const byte          ExpectedStrategyRandom    = 0;
            const uint          ExpectedHitpoints         = 3200;
            const uint          ExpectedSpeed             = 75;
            const uint          ExpectedCapacity          = 900;
            const uint          ExpectedFistSkill         = 50;
            const int           ExpectedSpellRulesCount   = 10;
            const int           ExpectedInventoryCount    = 18;

            CipCreatureFlag[] expectedFlags = new CipCreatureFlag[]
            {
                CipCreatureFlag.KickBoxes,
                CipCreatureFlag.KickCreatures,
                CipCreatureFlag.SeeInvisible,
                CipCreatureFlag.Unpushable,
                CipCreatureFlag.DistanceFighting,
                CipCreatureFlag.NoSummon,
                CipCreatureFlag.NoIllusion,
                CipCreatureFlag.NoBurning,
                CipCreatureFlag.NoPoison,
                CipCreatureFlag.NoEnergy,
                CipCreatureFlag.NoParalyze,
            };

            string[] expectedPhrases = new string[]
            {
                "Learn the secret of our magic! YOUR death!",
                "Even a rat is a better mage than you.",
                "We don't like intruders!",
            };

            (ushort id, byte max, ushort chance)[] expectedInventory = new (ushort, byte, ushort)[]