コード例 #1
0
    public string PickSpellCastingClass(SaveableSelectedEnumPerEnum characterCasterTypes)
    {
        float weightSum = 0f;

        for (int i = 0; i < m_EnumedJsonables.Length; i++)
        {
            if (characterCasterTypes[i] == "NoSpells")
            {
                continue;
            }

            weightSum += Campaign.WeightingPerRarity[m_EnumedJsonables[i]];
        }

        float randomWeightSum = Random.Range(0f, weightSum);
        float weightCounter   = randomWeightSum;

        for (int i = 0; i < m_EnumedJsonables.Length; i++)
        {
            if (characterCasterTypes[i] == "NoSpells")
            {
                continue;
            }

            weightCounter -= Campaign.WeightingPerRarity[m_EnumedJsonables[i]];

            if (weightCounter <= 0f)
            {
                return(m_EnumSetting[i]);
            }
        }

        return(null);
    }
コード例 #2
0
    public static Spell CreateBlank(EnumSetting spellContainers, EnumSetting allowances, EnumSetting rarities, EnumSetting characterClasses,
                                    SaveableSelectedEnumPerEnum casterTypesPerCharacterClass, EnumSetting books)
    {
        JsonableSelectedEnumPerEnum containerAllowances = JsonableSelectedEnumPerEnum.CreateBlank(spellContainers, allowances);
        JsonableSelectedEnumPerEnum containerRarities   = JsonableSelectedEnumPerEnum.CreateBlank(spellContainers, rarities);
        IntValuedEnum creatorLevels = IntValuedEnum.CreateBlank(characterClasses);
        EnumValue     book          = EnumValue.CreateBlank(books);

        return(Create("NAME", containerAllowances, containerRarities, creatorLevels, book, 239, 0));
    }
コード例 #3
0
    protected override void SetupFromSplitJsonString(string[] splitJsonString)
    {
        name               = splitJsonString[0];
        notes              = CreateStringFromSafeJson(splitJsonString[1]);
        m_Books            = EnumSetting.Load(splitJsonString[2]);
        m_CharacterClasses = EnumSetting.Load(splitJsonString[3]);
        m_ShopSizes        = EnumSetting.Load(splitJsonString[4]);
        m_SettlementSizes  = EnumSetting.Load(splitJsonString[5]);
        m_Rarities         = EnumSetting.Load(splitJsonString[6]);
        m_Allowances       = EnumSetting.Load(splitJsonString[7]);
        m_UsesAutomaticBonusProgressionRules = Wrapper <bool> .CreateFromJsonString(splitJsonString[8]);

        m_UsesMinimumCasterLevelForSpellContainerItems = Wrapper <bool> .CreateFromJsonString(splitJsonString[9]);

        m_CasterTypesPerCharacterClass             = SaveableSelectedEnumPerEnum.Load(splitJsonString[10]);
        m_WeightingPerRarity                       = WeightingPerRarity.Load(splitJsonString[11]);
        m_RestockSettingsPerSettlementSize         = RestockSettingsPerSettlementSize.Load(splitJsonString[12]);
        m_AvailabilityPerShopSizePerStockType      = AvailabilityPerStockTypePerShopSize.Load(splitJsonString[13]);
        m_RestockFrequencyModifiersPerShopSize     = RestockFrequencyModifiersPerShopSize.Load(splitJsonString[14]);
        m_ReadyCashPerShopSize                     = ReadyCashPerShopSize.Load(splitJsonString[15]);
        m_RarityPerCharacterClassPerSpellContainer = RarityPerCharacterClassPerSpellContainer.Load(splitJsonString[16]);
        m_BudgetRangePerPowerLevelPerStockType     = FloatRangePerPowerLevelPerStockType.Load(splitJsonString[17]);
        m_ArmourCollection               = ArmourCollection.Load(splitJsonString[18]);
        m_SpellCollection                = SpellCollection.Load(splitJsonString[19]);
        m_WeaponCollection               = WeaponCollection.Load(splitJsonString[20]);
        m_RingCollection                 = RingCollection.Load(splitJsonString[21]);
        m_RodCollection                  = RodCollection.Load(splitJsonString[22]);
        m_StaffCollection                = StaffCollection.Load(splitJsonString[23]);
        m_WondrousCollection             = WondrousCollection.Load(splitJsonString[24]);
        m_ArmourQualityCollection        = ArmourQualityCollection.Load(splitJsonString[25]);
        m_WeaponQualityCollection        = WeaponQualityCollection.Load(splitJsonString[26]);
        m_WeaponQualityConstraintsMatrix = WeaponQualityConstraintsMatrix.Load(splitJsonString[27]);
        m_ArmourQualityConstraintsMatrix = ArmourQualityConstraintsMatrix.Load(splitJsonString[28]);

        settlements = new Settlement[splitJsonString.Length - 29];
        for (int i = 0; i < settlements.Length; i++)
        {
            settlements[i] = Settlement.CreateFromJsonString(splitJsonString[i + 29]);
        }

        current = this;
    }
コード例 #4
0
    protected override void SetupFromSplitJsonString(string[] splitJsonString)
    {
        name                 = splitJsonString[0];
        spellContainers      = EnumSetting.Load(splitJsonString[1]);
        allowances           = EnumSetting.Load(splitJsonString[2]);
        rarities             = EnumSetting.Load(splitJsonString[3]);
        characterClasses     = EnumSetting.Load(splitJsonString[4]);
        characterCasterTypes = SaveableSelectedEnumPerEnum.Load(splitJsonString[5]);
        books                = EnumSetting.Load(splitJsonString[6]);
        rarityPerCharacterClassPerSpellContainer = RarityPerCharacterClassPerSpellContainer.Load(splitJsonString[7]);
        spellCollectionFilter = SpellCollectionFilter.CreateFromJsonString(splitJsonString[8]);

        spells = new Spell[splitJsonString.Length - 9];
        for (int i = 0; i < spells.Length; i++)
        {
            spells[i] = Spell.CreateFromJsonString(splitJsonString[i + 9]);
        }

        spellCollectionFilter.ApplyFilter(this);
    }
コード例 #5
0
    public static SpellCollection Create(string name, EnumSetting spellContainers, EnumSetting allowances,
                                         EnumSetting rarities, EnumSetting characterClasses, SaveableSelectedEnumPerEnum characterCasterTypes,
                                         EnumSetting books, RarityPerCharacterClassPerSpellContainer rarityPerCharacterClassPerSpellContainer)
    {
        SpellCollection newSpellCollection = CreateInstance <SpellCollection> ();

        if (CheckName(name) == NameCheckResult.Bad)
        {
            throw new UnityException("Spell Collection name invalid, contains invalid characters.");
        }
        if (CheckName(name) == NameCheckResult.IsDefault)
        {
            throw new UnityException("Spell Collection name invalid, name cannot start with Default");
        }

        newSpellCollection.name                  = name;
        newSpellCollection.spellContainers       = spellContainers;
        newSpellCollection.allowances            = allowances;
        newSpellCollection.rarities              = rarities;
        newSpellCollection.characterClasses      = characterClasses;
        newSpellCollection.characterCasterTypes  = characterCasterTypes;
        newSpellCollection.books                 = books;
        newSpellCollection.spellCollectionFilter = SpellCollectionFilter.CreateBlank(allowances, rarities, characterClasses, books);
        newSpellCollection.spells                = new Spell[0];

        SaveableHolder.AddSaveable(newSpellCollection);

        return(newSpellCollection);
    }