Пример #1
0
        private static void ApplyMonsterChanges(ClassicStageInfo self, StageInfo stage)
        {
            var monsters     = self.GetFieldValue <DirectorCardCategorySelection>("monsterCategories");
            var monsterCards = new List <DirectorCardHolder>();

            foreach (var cat in monsters.categories)
            {
                MonsterCategory      monstCat = GetMonsterCategory(cat.name);
                InteractableCategory interCat = GetInteractableCategory(cat.name);
                foreach (var t in cat.cards)
                {
                    monsterCards.Add(new DirectorCardHolder {
                        InteractableCategory = interCat,
                        MonsterCategory      = monstCat,
                        Card = t
                    });
                }
            }
            MonsterActions?.Invoke(monsterCards, stage);
            var monsterBasic = new List <DirectorCard>();
            var monsterSub   = new List <DirectorCard>();
            var monsterChamp = new List <DirectorCard>();

            foreach (var hold in monsterCards)
            {
                switch (hold.MonsterCategory)
                {
                case MonsterCategory.BasicMonsters:
                    monsterBasic.Add(hold.Card);
                    break;

                case MonsterCategory.Champions:
                    monsterChamp.Add(hold.Card);
                    break;

                case MonsterCategory.Minibosses:
                    monsterSub.Add(hold.Card);
                    break;
                }
            }
            for (int i = 0; i < monsters.categories.Length; i++)
            {
                DirectorCardCategorySelection.Category cat = monsters.categories[i];
                switch (cat.name)
                {
                case "Champions":
                    cat.cards = monsterChamp.ToArray();
                    break;

                case "Minibosses":
                    cat.cards = monsterSub.ToArray();
                    break;

                case "Basic Monsters":
                    cat.cards = monsterBasic.ToArray();
                    break;
                }
                monsters.categories[i] = cat;
            }
        }
Пример #2
0
        private static void SetStageSettings(ClassicStageInfo self, StageSettings set)
        {
            self.sceneDirectorInteractibleCredits = set.SceneDirectorInteractableCredits;
            self.sceneDirectorMonsterCredits      = set.SceneDirectorMonsterCredits;
            var keys    = set.BonusCreditObjects.Keys.ToArray();
            var bonuses = new ClassicStageInfo.BonusInteractibleCreditObject[keys.Length];

            for (int i = 0; i < keys.Length; i++)
            {
                bonuses[i] = new ClassicStageInfo.BonusInteractibleCreditObject {
                    objectThatGrantsPointsIfEnabled = keys[i],
                    points = set.BonusCreditObjects[keys[i]]
                };
            }
            self.bonusInteractibleCreditObjects = bonuses;
            var interCats = self.GetFieldValue <DirectorCardCategorySelection>("interactableCategories");

            for (int i = 0; i < interCats.categories.Length; i++)
            {
                var cat = interCats.categories[i];
                InteractableCategory intCat = GetInteractableCategory(cat.name);
                cat.selectionWeight     = set.InteractableCategoryWeights[intCat];
                interCats.categories[i] = cat;
            }
            var monstCats = self.GetFieldValue <DirectorCardCategorySelection>("monsterCategories");

            for (int i = 0; i < monstCats.categories.Length; i++)
            {
                var             cat    = monstCats.categories[i];
                MonsterCategory monCat = GetMonsterCategory(cat.name);
                cat.selectionWeight     = set.MonsterCategoryWeights[monCat];
                monstCats.categories[i] = cat;
            }
        }
Пример #3
0
 public Monster(int snoID, int monsterCategory, int race, int type, int powerType,
                int resists)
     : base(snoID, (int)ActorCategory.Monster, (int)TeamType.Hostile)
 {
     MonsterCategory = (MonsterCategory)monsterCategory;
     MonsterRace     = (MonsterRace)race;
     MonsterType     = (MonsterType)type;
     PowerType       = (MonsterPowerType)powerType;
     Resists         = (Resistance)resists;
 }
Пример #4
0
        public static SelectListItem ToSelectListItem(this MonsterCategory category)
        {
            var displayName = category == MonsterCategory.None
                                ? "選択してください"
                                : category.GetDisplayName();

            return(new SelectListItem {
                Text = displayName,
                Value = category.ToString().ToLower(),
            });
        }
Пример #5
0
            /// <summary>
            /// Adds a new monster to all stages.
            /// </summary>
            /// <param name="monsterCard">The DirectorCard for the monster</param>
            /// <param name="category">The category to add the monster to</param>
            public static void AddNewMonster(DirectorCard monsterCard, MonsterCategory category)
            {
                DirectorCardHolder card = new DirectorCardHolder
                {
                    Card = monsterCard,
                    InteractableCategory = InteractableCategory.None,
                    MonsterCategory      = category
                };

                MonsterActions += (monsters, currentStage) => {
                    monsters.Add(card);
                };
            }
Пример #6
0
            /// <summary>
            /// Adds a new monster to all stages.
            /// </summary>
            /// <param name="monsterCard">The DirectorCard for the monster</param>
            /// <param name="category">The category to add the monster to</param>
            public static void AddNewMonster(DirectorCard?monsterCard, MonsterCategory category)
            {
                if (!Loaded)
                {
                    throw new InvalidOperationException($"{nameof(DirectorAPI)} is not loaded. Please use [{nameof(R2APISubmoduleDependency)}(nameof({nameof(DirectorAPI)})]");
                }
                DirectorCardHolder card = new DirectorCardHolder {
                    Card = monsterCard,
                    InteractableCategory = InteractableCategory.None,
                    MonsterCategory      = category
                };

                MonsterActions += (monsters, currentStage) => {
                    monsters.Add(card);
                };
            }
Пример #7
0
            /// <summary>
            /// Adds a new monster to a specific stage.
            /// For custom stages use Stage.Custom and enter the name of the stage in customStageName.
            /// </summary>
            /// <param name="monsterCard">The DirectorCard of the monster to add</param>
            /// <param name="category">The category to add the monster to</param>
            /// <param name="stage">The stage to add the monster to</param>
            /// <param name="customStageName">The name of the custom stage</param>
            public static void AddNewMonsterToStage(DirectorCard monsterCard, MonsterCategory category, Stage stage, string customStageName = "")
            {
                DirectorCardHolder card = new DirectorCardHolder
                {
                    Card = monsterCard,
                    InteractableCategory = InteractableCategory.None,
                    MonsterCategory      = category
                };

                MonsterActions += (monsters, currentStage) => {
                    if (currentStage.stage == stage)
                    {
                        if (currentStage.CheckStage(stage, customStageName))
                        {
                            monsters.Add(card);
                        }
                    }
                };
            }
Пример #8
0
            /// <summary>
            /// Adds a new monster to a specific stage.
            /// For custom stages use Stage.Custom and enter the name of the stage in customStageName.
            /// </summary>
            /// <param name="monsterCard">The DirectorCard of the monster to add</param>
            /// <param name="category">The category to add the monster to</param>
            /// <param name="stage">The stage to add the monster to</param>
            /// <param name="customStageName">The name of the custom stage</param>
            public static void AddNewMonsterToStage(DirectorCard?monsterCard, MonsterCategory category, Stage stage, string?customStageName = "")
            {
                if (!Loaded)
                {
                    throw new InvalidOperationException($"{nameof(DirectorAPI)} is not loaded. Please use [{nameof(R2APISubmoduleDependency)}(nameof({nameof(DirectorAPI)})]");
                }
                DirectorCardHolder card = new DirectorCardHolder {
                    Card = monsterCard,
                    InteractableCategory = InteractableCategory.None,
                    MonsterCategory      = category
                };

                MonsterActions += (monsters, currentStage) => {
                    if (currentStage.stage == stage)
                    {
                        if (currentStage.CheckStage(stage, customStageName))
                        {
                            monsters.Add(card);
                        }
                    }
                };
            }
Пример #9
0
        private static void ApplyInteractableChanges(ClassicStageInfo self, StageInfo stage)
        {
            var interactables     = self.GetFieldValue <DirectorCardCategorySelection>("interactableCategories");
            var interactableCards = new List <DirectorCardHolder>();

            foreach (var cat in interactables.categories)
            {
                MonsterCategory      monstCat = GetMonsterCategory(cat.name);
                InteractableCategory interCat = GetInteractableCategory(cat.name);
                foreach (var t in cat.cards)
                {
                    interactableCards.Add(new DirectorCardHolder {
                        InteractableCategory = interCat,
                        MonsterCategory      = monstCat,
                        Card = t
                    });
                }
            }
            InteractableActions?.Invoke(interactableCards, stage);
            var interChests  = new List <DirectorCard>();
            var interBarrels = new List <DirectorCard>();
            var interShrines = new List <DirectorCard>();
            var interDrones  = new List <DirectorCard>();
            var interMisc    = new List <DirectorCard>();
            var interRare    = new List <DirectorCard>();
            var interDupe    = new List <DirectorCard>();

            foreach (var hold in interactableCards)
            {
                switch (hold.InteractableCategory)
                {
                case InteractableCategory.None:
                    R2API.Logger.LogWarning("InteractableCategory from DirectorCardHolder is None !");
                    break;

                case InteractableCategory.Chests:
                    interChests.Add(hold.Card);
                    break;

                case InteractableCategory.Barrels:
                    interBarrels.Add(hold.Card);
                    break;

                case InteractableCategory.Drones:
                    interDrones.Add(hold.Card);
                    break;

                case InteractableCategory.Duplicator:
                    interDupe.Add(hold.Card);
                    break;

                case InteractableCategory.Misc:
                    interMisc.Add(hold.Card);
                    break;

                case InteractableCategory.Rare:
                    interRare.Add(hold.Card);
                    break;

                case InteractableCategory.Shrines:
                    interShrines.Add(hold.Card);
                    break;
                }
            }
            for (int i = 0; i < interactables.categories.Length; i++)
            {
                DirectorCardCategorySelection.Category cat = interactables.categories[i];
                switch (cat.name)
                {
                case "Chests":
                    cat.cards = interChests.ToArray();
                    break;

                case "Barrels":
                    cat.cards = interBarrels.ToArray();
                    break;

                case "Shrines":
                    cat.cards = interShrines.ToArray();
                    break;

                case "Drones":
                    cat.cards = interDrones.ToArray();
                    break;

                case "Misc":
                    cat.cards = interMisc.ToArray();
                    break;

                case "Rare":
                    cat.cards = interRare.ToArray();
                    break;

                case "Duplicator":
                    cat.cards = interDupe.ToArray();
                    break;
                }
                interactables.categories[i] = cat;
            }
        }
Пример #10
0
 public Monster(int snoID, int monsterCategory, int race, int type, int powerType, 
     int resists)
     : base(snoID, (int)ActorCategory.Monster, (int)TeamType.Hostile)
 {
     MonsterCategory = (MonsterCategory)monsterCategory;
     MonsterRace = (MonsterRace)race;
     MonsterType = (MonsterType)type;
     PowerType = (MonsterPowerType)powerType;
     Resists = (Resistance)resists;
 }
Пример #11
0
 public FavoredEnemyType(FeatId feat, MonsterCategory category, MonsterSubtype subtype)
 {
     Feat     = feat;
     Category = category;
     Subtype  = subtype;
 }
Пример #12
0
 public static string GetDisplayName(this MonsterCategory category)
 => _displayAttributes[category]?.Name;
Пример #13
0
 public FavoredEnemyType(FeatId feat, MonsterCategory category)
 {
     Feat     = feat;
     Category = category;
     Subtype  = 0;
 }
Пример #14
0
 // 最初から2文字の文字列
 public static string ToString(MonsterCategory value)
 => value.ToString().Substring(0, 2).ToLower();
Пример #15
0
        private static void ApplyInteractableChanges(ClassicStageInfo self, StageInfo stage)
        {
            var interactables = self.GetFieldValue <DirectorCardCategorySelection>("interactableCategories");
            List <DirectorCardHolder> interactableCards = new List <DirectorCardHolder>();

            for (int i = 0; i < interactables.categories.Length; i++)
            {
                DirectorCardCategorySelection.Category cat = interactables.categories[i];
                MonsterCategory      monstCat = GetMonsterCategory(cat.name);
                InteractableCategory interCat = GetInteractableCategory(cat.name);
                for (int j = 0; j < cat.cards.Length; j++)
                {
                    interactableCards.Add(new DirectorCardHolder
                    {
                        interactableCategory = interCat,
                        monsterCategory      = monstCat,
                        card = cat.cards[j]
                    });
                }
            }

            interactableActions?.Invoke(interactableCards, stage);

            DirectorCard[] interChests  = new DirectorCard[0];
            DirectorCard[] interBarrels = new DirectorCard[0];
            DirectorCard[] interShrines = new DirectorCard[0];
            DirectorCard[] interDrones  = new DirectorCard[0];
            DirectorCard[] interMisc    = new DirectorCard[0];
            DirectorCard[] interRare    = new DirectorCard[0];
            DirectorCard[] interDupe    = new DirectorCard[0];

            for (int i = 0; i < interactableCards.Count; i++)
            {
                DirectorCardHolder hold = interactableCards[i];
                switch (hold.interactableCategory)
                {
                default:
                    Debug.Log("Wtf are you doing...");
                    break;

                case InteractableCategory.Chests:
                    AddToArray <DirectorCard>(ref interChests, hold.card);
                    break;

                case InteractableCategory.Barrels:
                    AddToArray <DirectorCard>(ref interBarrels, hold.card);
                    break;

                case InteractableCategory.Drones:
                    AddToArray <DirectorCard>(ref interDrones, hold.card);
                    break;

                case InteractableCategory.Duplicator:
                    AddToArray <DirectorCard>(ref interDupe, hold.card);
                    break;

                case InteractableCategory.Misc:
                    AddToArray <DirectorCard>(ref interMisc, hold.card);
                    break;

                case InteractableCategory.Rare:
                    AddToArray <DirectorCard>(ref interRare, hold.card);
                    break;

                case InteractableCategory.Shrines:
                    AddToArray <DirectorCard>(ref interShrines, hold.card);
                    break;
                }
            }
            for (int i = 0; i < interactables.categories.Length; i++)
            {
                DirectorCardCategorySelection.Category cat = interactables.categories[i];
                switch (cat.name)
                {
                default:
                    Debug.Log(cat.name);
                    break;

                case "Chests":
                    cat.cards = interChests;
                    break;

                case "Barrels":
                    cat.cards = interBarrels;
                    break;

                case "Shrines":
                    cat.cards = interShrines;
                    break;

                case "Drones":
                    cat.cards = interDrones;
                    break;

                case "Misc":
                    cat.cards = interMisc;
                    break;

                case "Rare":
                    cat.cards = interRare;
                    break;

                case "Duplicator":
                    cat.cards = interDupe;
                    break;
                }
                interactables.categories[i] = cat;
            }
        }
Пример #16
0
 public static bool IsMonsterCategory(this GameObject obj, MonsterCategory category)
 {
     return(GameSystems.Critter.IsCategory(obj, category));
 }
Пример #17
0
 public string GetMonsterCategoryName(MonsterCategory monsterCat)
 {
     return(statMes[7000 + (int)monsterCat]);
 }
Пример #18
0
        private static void ApplyMonsterChanges(ClassicStageInfo self, StageInfo stage)
        {
            var monsters = self.GetFieldValue <DirectorCardCategorySelection>("monsterCategories");
            List <DirectorCardHolder> monsterCards = new List <DirectorCardHolder>();

            for (int i = 0; i < monsters.categories.Length; i++)
            {
                DirectorCardCategorySelection.Category cat = monsters.categories[i];
                MonsterCategory      monstCat = GetMonsterCategory(cat.name);
                InteractableCategory interCat = GetInteractableCategory(cat.name);
                for (int j = 0; j < cat.cards.Length; j++)
                {
                    monsterCards.Add(new DirectorCardHolder
                    {
                        interactableCategory = interCat,
                        monsterCategory      = monstCat,
                        card = cat.cards[j]
                    });
                }
            }

            monsterActions?.Invoke(monsterCards, stage);

            DirectorCard[] monsterBasic = new DirectorCard[0];
            DirectorCard[] monsterSub   = new DirectorCard[0];
            DirectorCard[] monsterChamp = new DirectorCard[0];

            for (int i = 0; i < monsterCards.Count; i++)
            {
                DirectorCardHolder hold = monsterCards[i];
                switch (hold.monsterCategory)
                {
                default:
                    Debug.Log("Wtf are you doing...");
                    break;

                case MonsterCategory.BasicMonsters:
                    AddToArray <DirectorCard>(ref monsterBasic, hold.card);
                    break;

                case MonsterCategory.Champions:
                    AddToArray <DirectorCard>(ref monsterChamp, hold.card);
                    break;

                case MonsterCategory.Minibosses:
                    AddToArray <DirectorCard>(ref monsterSub, hold.card);
                    break;
                }
            }
            for (int i = 0; i < monsters.categories.Length; i++)
            {
                DirectorCardCategorySelection.Category cat = monsters.categories[i];
                switch (cat.name)
                {
                default:
                    Debug.Log(cat.name);
                    break;

                case "Champions":
                    cat.cards = monsterChamp;
                    break;

                case "Minibosses":
                    cat.cards = monsterSub;
                    break;

                case "Basic Monsters":
                    cat.cards = monsterBasic;
                    break;
                }
                monsters.categories[i] = cat;
            }
        }
 public WildShapeSpec(int ProtoId, int MinLvl, MonsterCategory MonCat)
 {
     protoId = ProtoId;
     minLvl  = MinLvl;
     monCat  = MonCat;
 }