示例#1
0
        public static string GetScriptName_Combined(this MeleeWeaponSkill weaponSkill)
        {
            switch (weaponSkill)
            {
            case MeleeWeaponSkill.HeavyWeapons:
                return("heavy");

            case MeleeWeaponSkill.LightWeapons:
            case MeleeWeaponSkill.FinesseWeapons:
                return("light_finesse");

            case MeleeWeaponSkill.TwoHandedCombat:
                return("two_handed");
            }
            return(null);
        }
 private static string GetDamageScript(MeleeWeaponSkill weaponSkill, TreasureWeaponType weaponType)
 {
     return("MeleeWeapons.Damage_WieldDifficulty_DamageVariance." + weaponSkill.GetScriptName_Combined() + "_" + weaponType.GetScriptName() + ".txt");
 }
 private static string GetOffenseDefenseScript(MeleeWeaponSkill weaponSkill, TreasureWeaponType weaponType)
 {
     return("MeleeWeapons.WeaponOffense_WeaponDefense." + weaponType.GetScriptShortName() + "_offense_defense.txt");
 }
        /// <summary>
        /// Creates and optionally mutates a new MeleeWeapon
        /// </summary>
        public static WorldObject CreateMeleeWeapon(TreasureDeath profile, bool isMagical, MeleeWeaponSkill weaponSkill = MeleeWeaponSkill.Undef, bool mutate = true)
        {
            var wcid       = 0;
            var weaponType = 0;

            var eleType = ThreadSafeRandom.Next(0, 4);

            if (weaponSkill == MeleeWeaponSkill.Undef)
            {
                weaponSkill = (MeleeWeaponSkill)ThreadSafeRandom.Next(1, 4);
            }

            switch (weaponSkill)
            {
            case MeleeWeaponSkill.HeavyWeapons:

                weaponType = ThreadSafeRandom.Next(0, LootTables.HeavyWeaponsMatrix.Length - 1);
                wcid       = LootTables.HeavyWeaponsMatrix[weaponType][eleType];
                break;

            case MeleeWeaponSkill.LightWeapons:

                weaponType = ThreadSafeRandom.Next(0, LootTables.LightWeaponsMatrix.Length - 1);
                wcid       = LootTables.LightWeaponsMatrix[weaponType][eleType];
                break;

            case MeleeWeaponSkill.FinesseWeapons:

                weaponType = ThreadSafeRandom.Next(0, LootTables.FinesseWeaponsMatrix.Length - 1);
                wcid       = LootTables.FinesseWeaponsMatrix[weaponType][eleType];
                break;

            case MeleeWeaponSkill.TwoHandedCombat:

                weaponType = ThreadSafeRandom.Next(0, LootTables.TwoHandedWeaponsMatrix.Length - 1);
                wcid       = LootTables.TwoHandedWeaponsMatrix[weaponType][eleType];
                break;
            }

            var wo = WorldObjectFactory.CreateNewWorldObject((uint)wcid);

            if (wo != null && mutate)
            {
                if (!MutateMeleeWeapon(wo, profile, isMagical))
                {
                    log.Warn($"[LOOT] {wo.WeenieClassId} - {wo.Name} is not a MeleeWeapon");
                    return(null);
                }
            }
            return(wo);
        }