Esempio n. 1
0
    public static Weapon GetWeaponFromType(WeaponType type, bool isBase = false, bool canBeAnythingAndGreatSword = true)
    {
        int notAskedType = Random.Range(0, 100);

        if (!isBase && notAskedType < ChanceNotRaceWeaponPercent)
        {
            var tmpType = (WeaponType)Random.Range(0, System.Enum.GetNames(typeof(WeaponType)).Length);
            if (canBeAnythingAndGreatSword || tmpType != WeaponType.GreatSword)
            {
                type = tmpType;
            }
        }
        Rarity rarity = Rarity.Normal;

        if (!isBase)
        {
            if (Random.Range(0, 100) < RareWeaponAppearancePercent)
            {
                rarity = Rarity.Rare;
            }
            else if (Random.Range(0, 100) < MagicalWeaponAppearancePercent)
            {
                rarity = Rarity.Magical;
            }
        }
        var    subType   = Random.Range(0, WeaponTypeNames[type.GetHashCode()].Length);
        string name      = GetWeaponNameFromRarity(type.GetHashCode(), subType, rarity /*, isBase*/);
        Weapon tmpWeapon = null;

        switch (type)
        {
        case WeaponType.Sword:
            tmpWeapon            = GetBaseSword();
            tmpWeapon.BaseDamage = SwordDamage[rarity.GetHashCode()];
            break;

        case WeaponType.Spear:
            tmpWeapon            = GetBaseSpear();
            tmpWeapon.BaseDamage = SpearDamage[rarity.GetHashCode()];
            break;

        case WeaponType.Club:
            tmpWeapon            = GetBaseClub();
            tmpWeapon.BaseDamage = ClubDamage[rarity.GetHashCode()];
            break;

        case WeaponType.Knife:
            tmpWeapon            = GetBaseKnife();
            tmpWeapon.BaseDamage = KnifeDamage[rarity.GetHashCode()];
            break;

        case WeaponType.Bow:
            tmpWeapon            = GetBaseBow();
            tmpWeapon.BaseDamage = BowDamage[rarity.GetHashCode()];
            break;

        case WeaponType.Daggers:
            tmpWeapon            = GetBaseDaggers();
            tmpWeapon.BaseDamage = DaggersDamage[rarity.GetHashCode()];
            break;

        case WeaponType.Hammer:
            tmpWeapon            = GetBaseHammer();
            tmpWeapon.BaseDamage = HammerDamage[rarity.GetHashCode()];
            break;

        case WeaponType.Axe:
            tmpWeapon            = GetBaseAxe();
            tmpWeapon.BaseDamage = AxeDamage[rarity.GetHashCode()];
            break;

        case WeaponType.GreatSword:
            tmpWeapon            = GetBaseGreatSword();
            tmpWeapon.BaseDamage = GreatSwordDamage[rarity.GetHashCode()];
            break;

        case WeaponType.Gauntlets:
            tmpWeapon            = GetBaseGauntlets();
            tmpWeapon.BaseDamage = GauntletsDamage[rarity.GetHashCode()];
            break;
        }
        tmpWeapon.Name   = name;
        tmpWeapon.Rarity = rarity;
        var baseDamageFloat = tmpWeapon.BaseDamage * Helper.MultiplierFromPercent(1, Random.Range(-BaseInitDamageRangePercentage, BaseInitDamageRangePercentage + 1));

        tmpWeapon.BaseDamage  = (int)baseDamageFloat;
        tmpWeapon.WeaponParts = CreateWeaponPartsFromTypeSubType(type, subType, tmpWeapon.NbSkinParts);
        return(tmpWeapon);
    }