public static CardData Make() { ChampionCardDataBuilder championCardDataBuilder = new ChampionCardDataBuilder { Cost = 0, Champion = BuildUnit(), ChampionIconPath = "influka/Clan/Icon_ClassSelect_Marisa.png", ChampionSelectedCue = "", StarterCardData = CustomCardManager.GetCardDataByID(AliceGift.ID), CardID = ID, NameKey = ID + "_Name", OverrideDescriptionKey = ID + "_Desc", LinkedClass = RetrospectiveUnknownVoyage.getClan(), ClanID = TouhouClan.ID, CardPoolIDs = new List <string> { TouhouClan.ID, UnitsAllBanner }, CardType = CardType.Monster, TargetsRoom = true, AssetPath = AssetAdder.rootPath + AssetAdder.ucardPath, UpgradeTree = GetUpgradeTreeDataBuilder(), }; AssetAdder.AddImg(championCardDataBuilder, ID); return(championCardDataBuilder.BuildAndRegister(1)); }
static void Prefix(ref CardData __instance) { if (!__instance.HasCardArtPrefabVariant() && CustomCardManager.CustomCardData.ContainsKey(__instance.GetID())) { CustomCardManager.CreateCardGameObject(__instance.GetID()); } }
/// <summary> /// Builds the CardData represented by this builder's parameters recursively /// and registers it and its components with the appropriate managers. /// </summary> /// <returns>The newly registered CardData</returns> public CardData BuildAndRegister(int ChampionIndex = 0) { var cardData = this.Build(); Trainworks.Log(LogLevel.Debug, "Adding custom card: " + cardData.GetName()); CustomCardManager.RegisterCustomCard(cardData, this.CardPoolIDs); var Clan = cardData.GetLinkedClass(); ChampionData ClanChamp = Clan.GetChampionData(ChampionIndex); ClanChamp.championCardData = cardData; if (this.ChampionIconPath != null) { Sprite championIconSprite = CustomAssetManager.LoadSpriteFromPath(this.BaseAssetPath + "/" + this.ChampionIconPath); ClanChamp.championIcon = championIconSprite; } ClanChamp.starterCardData = StarterCardData; if (this.UpgradeTree != null) { ClanChamp.upgradeTree = UpgradeTree.Build(); } ClanChamp.championSelectedCue = ChampionSelectedCue; return(cardData); }
static void Postfix(SaveManager __instance) { CustomCardManager.SaveManager = __instance; CustomCardManager.FinishCustomCardRegistration(); CustomCharacterManager.SaveManager = __instance; CustomCharacterManager.FinishCustomCharacterRegistration(); }
public static void Create() { // Basic Card Stats ChampionCardDataBuilder railyard = new ChampionCardDataBuilder { Cost = 0, Champion = BuildUnit(), ChampionIconPath = "Clan Assets/Icon_ClassSelect_Werewolf.png", ChampionSelectedCue = "", StarterCardData = CustomCardManager.GetCardDataByID("Claws_StarterCard"), CardID = IDName, Name = "Shengar the Vicious", //OverrideDescriptionKey = IDName + "_Desc", LinkedClass = CustomClassManager.GetClassDataByID(ClawsClan.ID), ClanID = ClawsClan.ID, CardPoolIDs = new List <string> { }, CardType = CardType.Monster, TargetsRoom = true, AssetPath = "Clan Assets/hero/werewolfchampion_card.png", }; // Do this to complete railyard.BuildAndRegister(); }
static void Postfix(ref SaveManager __instance) { __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(NotHornBreak.ID)); __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(GiveEveryoneArmor.ID)); __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(PlayOtherCards.ID)); __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(BlueEyesWhiteDragon.ID)); __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(DragonCostume.ID)); }
public CardData BuildAndRegister() { var cardData = this.Build(); API.Log(LogLevel.Debug, "Adding custom card: " + cardData.GetName()); CustomCardManager.RegisterCustomCard(cardData, this.CardPoolIDs); return(cardData); }
public static void Make() { var random = new Random(); // Basic Card Stats ChampionCardDataBuilder railyard = new ChampionCardDataBuilder { Cost = 0, Champion = BuildUnit(), ChampionIconPath = "Clan Assets/Icon_ClassSelect_Hero2.png", ChampionSelectedCue = "", StarterCardData = CustomCardManager.GetCardDataByID(Analog.IDName), UpgradeTree = new CardUpgradeTreeDataBuilder { UpgradeTrees = new List <List <CardUpgradeDataBuilder> > { new List <CardUpgradeDataBuilder> { DiscipleEphemeralBasic.Builder(), DiscipleEphemeralPremium.Builder(), DiscipleEphemeralPro.Builder(), }, new List <CardUpgradeDataBuilder> { DiscipleFlamelinkedBasic.Builder(), DiscipleFlamelinkedPremium.Builder(), DiscipleFlamelinkedPro.Builder(), }, new List <CardUpgradeDataBuilder> { DiscipleEchoBasic.Builder(), DiscipleEchoPremium.Builder(), DiscipleEchoPro.Builder(), }, }, }, CardID = IDName, NameKey = IDName + "_Name", //OverrideDescriptionKey = IDName + "_Desc", LinkedClass = DiscipleClan.getClan(), ClanID = Clan.IDName, CardPoolIDs = new List <string> { "Chrono", UnitsAllBanner }, CardType = CardType.Monster, TargetsRoom = true, AssetPath = Utils.rootPath + Utils.ucardPath, }; Utils.AddCardPortrait(railyard, "Hero2"); // Do this to complete railyard.BuildAndRegister(1); }
public static void Make() { // Basic Card Stats ChampionCardDataBuilder railyard = new ChampionCardDataBuilder { Cost = 0, Champion = BuildUnit(), ChampionIconPath = "ag88/Clan Assets/Icon_ClassSelect_Mech.png", ChampionSelectedCue = "", StarterCardData = CustomCardManager.GetCardDataByID(FlawedMech.IDName), UpgradeTree = new CardUpgradeTreeDataBuilder { UpgradeTrees = new List <List <CardUpgradeDataBuilder> > { new List <CardUpgradeDataBuilder> { MechVanguardGuzzlerBasic.Builder(), MechVanguardGuzzlerPremium.Builder(), MechVanguardGuzzlerPro.Builder(), }, new List <CardUpgradeDataBuilder> { MechVanguardSupporterBasic.Builder(), MechVanguardSupporterPremium.Builder(), MechVanguardSupporterPro.Builder(), }, new List <CardUpgradeDataBuilder> { MechVanguardSweeperBasic.Builder(), MechVanguardSweeperPremium.Builder(), MechVanguardSweeperPro.Builder(), }, }, }, CardID = IDName, NameKey = IDName + "_Name", OverrideDescriptionKey = IDName + "_Desc", LinkedClass = MechClan.getClan(), ClanID = Clan.IDName, CardPoolIDs = new List <string> { "AG88", UnitsAllBanner }, CardType = CardType.Monster, TargetsRoom = true, AssetPath = Utils.rootPath + Utils.ucardPath, }; Utils.AddImg(railyard, imgName + ".png"); // Do this to complete railyard.BuildAndRegister(); }
static void Postfix(ref SaveManager __instance) { __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(FlawedMech.ID)); /*__instance.AddCardToDeck(CustomCardManager.GetCardDataByID(MechEnforcer.ID)); * __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(MechFortress.ID)); * __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(MechGoliath.ID));*/ __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(MechGuard.ID)); __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(Recycle.ID));/* * __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(MechTitan.ID)); * __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(Scavenger.ID)); * __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(Vulture.ID));*/ }
public static void RegisterBanner() { CardPool cardPool = UnityEngine.ScriptableObject.CreateInstance <CardPool>(); var cardDataList = (Malee.ReorderableArray <CardData>)AccessTools.Field(typeof(CardPool), "cardDataList").GetValue(cardPool); cardDataList.Add(CustomCardManager.GetCardDataByID("Direclaws_Devilhound")); cardDataList.Add(CustomCardManager.GetCardDataByID("Direclaws_Witherclaw")); new RewardNodeDataBuilder() { RewardNodeID = "Horde_UnitBanner", MapNodePoolIDs = new List <string> { VanillaMapNodePoolIDs.RandomChosenMainClassUnit, VanillaMapNodePoolIDs.RandomChosenSubClassUnit }, Name = "Dire Claws Banner", Description = "Recruit a Dire Claws unit.", RequiredClass = CustomClassManager.GetClassDataByID(ClawsClan.ID), ControllerSelectedOutline = "Clan Assets/selection_outlines.png", FrozenSpritePath = "Clan Assets/POI_Map_Clan_CHorde_Frozen.png", EnabledSpritePath = "Clan Assets/POI_Map_Clan_CHorde_Enabled.png", EnabledVisitedSpritePath = "Clan Assets/POI_Map_Clan_CHorde_Enabled.png", DisabledSpritePath = "Clan Assets/POI_Map_Clan_CHorde_Disabled.png", DisabledVisitedSpritePath = "Clan Assets/POI_Map_Clan_CHorde_VisitedDisabled.png", GlowSpritePath = "Clan Assets/MSK_Map_Clan_CHorde_01.png", MapIconPath = "Clan Assets/POI_Map_Clan_CHorde_Enabled.png", MinimapIconPath = "Clan Assets/Icon_MiniMap_ClanBanner.png", SkipCheckInBattleMode = true, OverrideTooltipTitleBody = false, NodeSelectedSfxCue = "Node_Banner", RewardBuilders = new List <IRewardDataBuilder> { new DraftRewardDataBuilder() { DraftRewardID = "Horde_UnitsDraft", _RewardSpritePath = "Clan Assets/POI_Map_Clan_CHorde_Enabled.png", _RewardTitleKey = "Dire Claws Banner", _RewardDescriptionKey = "Choose a unit!", Costs = new int[] { 100 }, _IsServiceMerchantReward = false, DraftPool = cardPool, ClassType = (RunState.ClassType) 7, DraftOptionsCount = 2, RarityFloorOverride = CollectableRarity.Common } } }.BuildAndRegister(); }
public static void BuildAndRegister() { CardPool cardPool = UnityEngine.ScriptableObject.CreateInstance <CardPool>(); var cardDataList = (Malee.ReorderableArray <CardData>)AccessTools.Field(typeof(CardPool), "cardDataList").GetValue(cardPool); cardDataList.Add(CustomCardManager.GetCardDataByID(BlueEyesWhiteDragon.ID)); cardDataList.Add(CustomCardManager.GetCardDataByID(DragonCostume.ID)); new RewardNodeDataBuilder() { RewardNodeID = ID, MapNodePoolIDs = new List <string> { VanillaMapNodePoolIDs.RandomChosenMainClassUnit, VanillaMapNodePoolIDs.RandomChosenSubClassUnit }, Name = "Test Clan Banner", Description = "Offers units from the illustrious Test Clan", RequiredClass = CustomClassManager.GetClassDataByID(TestClan.ID), FrozenSpritePath = "assets/TestClanBanner_Frozen.png", EnabledSpritePath = "assets/TestClanBanner_Enabled.png", DisabledSpritePath = "assets/TestClanBanner_Disabled.png", DisabledVisitedSpritePath = "assets/TestClanBanner_Disabled_Visited.png", GlowSpritePath = "assets/TestClanBanner_Glow.png", MapIconPath = "assets/TestClanBanner_Enabled.png", MinimapIconPath = "assets/TestClanBanner_Minimap.png", SkipCheckInBattleMode = true, OverrideTooltipTitleBody = false, NodeSelectedSfxCue = "Node_Banner", RewardBuilders = new List <IRewardDataBuilder> { new DraftRewardDataBuilder() { DraftRewardID = RewardID, _RewardSpritePath = "assets/TestClanBanner_Enabled.png", _RewardTitleKey = "Test Clan Banner", _RewardDescriptionKey = "Choose a card!", Costs = new int[] { 100 }, _IsServiceMerchantReward = false, DraftPool = cardPool, ClassType = (RunState.ClassType) 7, DraftOptionsCount = 2, RarityFloorOverride = CollectableRarity.Uncommon } } }.BuildAndRegister(); }
public static void Modify() { string frozenLanceID = VanillaCardIDs.FrozenLance; var frozenLanceData = CustomCardManager.GetCardDataByID(frozenLanceID); // Add piercing to Frozen Lance's trait list var piercingTrait = new CardTraitData(); string piercingTraitName = VanillaCardTraitTypes.CardTraitIgnoreArmor.AssemblyQualifiedName; piercingTrait.Setup(piercingTraitName); frozenLanceData.GetTraits().Add(piercingTrait); // Set Frozen Lance's damage to 12 var frozenLanceDamageEffect = frozenLanceData.GetEffects()[0]; Traverse.Create(frozenLanceDamageEffect).Field("paramInt").SetValue(12); // Instantiate the Frostbite CardEffect var frostbiteEffect = new CardEffectData(); // Set its effect type string addStatusEffectName = VanillaCardEffectTypes.CardEffectAddStatusEffect.AssemblyQualifiedName; Traverse.Create(frostbiteEffect).Field("effectStateName").SetValue(addStatusEffectName); // Set targeting mode to be the same one used by Flash Freeze: Last Targeted Characters Traverse.Create(frostbiteEffect).Field("targetMode").SetValue(TargetMode.LastTargetedCharacters); // This field can't be null, or the game crashes with a NullPointerException // All the other null fields are fine, though Traverse.Create(frostbiteEffect).Field("targetModeStatusEffectsFilter").SetValue(new string[0]); // Create the Frostbite status and add it to the effect's status array StatusEffectStackData frostbiteStatus = new StatusEffectStackData(); frostbiteStatus.statusId = VanillaStatusEffectIDs.Frostbite; frostbiteStatus.count = 327; var paramStatusEffects = new StatusEffectStackData[] { frostbiteStatus }; Traverse.Create(frostbiteEffect).Field("paramStatusEffects").SetValue(paramStatusEffects); // Add the Frostbite effect to Frozen Lance's card effect list frozenLanceData.GetEffects().Add(frostbiteEffect); }
public static void Log(string cardID) { var cardData = CustomCardManager.GetCardDataByID(cardID); if (cardData != null) { UnityEngine.Debug.Log(LocalizationManager.GetTranslation(cardData.GetOverrideDescriptionKey())); return; } var charData = CustomCharacterManager.GetCharacterDataByID(cardID); if (charData != null) { foreach (var trigger in charData.GetTriggers()) { UnityEngine.Debug.Log(LocalizationManager.GetTranslation(trigger.GetDescriptionKey())); } } }
public static CharacterData BuildUnit() { CardPool cardPool = UnityEngine.ScriptableObject.CreateInstance <CardPool>(); CharacterDataBuilder characterDataBuilder = new CharacterDataBuilder { characterID = ID, NameKey = ID + "_Name", Size = 1, Health = 10, AttackDamage = 3, TriggerBuilders = new List <CharacterTriggerDataBuilder> { new CharacterTriggerDataBuilder { Trigger = CharacterTriggerData.Trigger.PostCombat, AdditionalTextOnTrigger = "", EffectBuilders = new List <CardEffectDataBuilder> { new CardEffectDataBuilder { EffectStateType = typeof(CardEffectAddBattleCard), ParamCardPool = cardPool, ParamInt = 1 } } } } }; AssetAdder.AddUnitImg(characterDataBuilder, ID); CardData forPool = CustomCardManager.GetCardDataByID(AliceGift.ID); var cardDataList = (Malee.ReorderableArray <CardData>)AccessTools.Field(typeof(CardPool), "cardDataList").GetValue(cardPool); cardDataList.Add(forPool); return(characterDataBuilder.BuildAndRegister()); }
/// <summary> /// Builds the CardPool represented by this builder's parameters /// </summary> /// <returns>The newly created CardPool</returns> public CardPool Build() { CardPool cardPool = ScriptableObject.CreateInstance <CardPool>(); cardPool.name = this.CardPoolID; var cardDataList = (Malee.ReorderableArray <CardData>)AccessTools.Field(typeof(CardPool), "cardDataList").GetValue(cardPool); foreach (string cardID in this.CardIDs) { var card = CustomCardManager.GetCardDataByID(cardID); if (card != null) { cardDataList.Add(card); } } foreach (CardData cardData in this.Cards) { cardDataList.Add(cardData); } return(cardPool); }
public static void BuildAndRegister() { var championCharacterBuilder = new CharacterDataBuilder { CharacterID = CharID, Name = "K.Aqua", Size = 1, Health = 10, AttackDamage = 5, AssetPath = "assets/kaqua_character.png" }; new ChampionCardDataBuilder() { Champion = championCharacterBuilder, ChampionIconPath = "assets/kaqua.png", StarterCardData = CustomCardManager.GetCardDataByID(VanillaCardIDs.AlphaFiend), CardID = ID, Name = "K.Aqua", ClanID = TestClan.ID, AssetPath = "assets/kaqua.png" }.BuildAndRegister(); }
public static void BuildAndRegister() { new ClassDataBuilder { ClassID = ID, Name = "Test Clan", Description = "Test Clan Description", SubclassDescription = "Test Clan Sub Description", CardStyle = ClassCardStyle.Stygian, IconAssetPaths = new List <string> { "assets/testclan-small.png", //It can be - or _ depending the name of the image you downloaded "assets/testclan-large.png", //It can be - or _ depending the name of the image you downloaded "assets/testclan-large.png", //It can be - or _ depending the name of the image you downloaded "assets/testclan-silhouette.png" //It can be - or _ depending the name of the image you downloaded }, UiColor = new Color(0.1f, 0.8f, 0.8f, 1f), UiColorDark = new Color(0.05f, 0.5f, 0.5f, 1f), }.BuildAndRegister(); CardPool cardPool = UnityEngine.ScriptableObject.CreateInstance <CardPool>(); var cardDataList = (Malee.ReorderableArray <CardData>)AccessTools.Field(typeof(CardPool), "cardDataList").GetValue(cardPool); //cardDataList.Add(CustomCardManager.GetCardDataByID(BlueEyesWhiteDragon.ID)); //cardDataList.Add(CustomCardManager.GetCardDataByID(DragonCostume.ID)); new RewardNodeDataBuilder() { RewardNodeID = ID, MapNodePoolIDs = new List <string> { VanillaMapNodePoolIDs.RandomChosenMainClassUnit, VanillaMapNodePoolIDs.RandomChosenSubClassUnit }, Name = "Test Clan Banner", Description = "Offers units from the illustrious Test Clan", RequiredClass = CustomClassManager.GetClassDataByID(TestClan.ID), FrozenSpritePath = "assets/TestClanBanner_Frozen.png", EnabledSpritePath = "assets/TestClanBanner_Enabled.png", DisabledSpritePath = "assets/TestClanBanner_Disabled.png", DisabledVisitedSpritePath = "assets/TestClanBanner_Disabled_Visited.png", GlowSpritePath = "assets/TestClanBanner_Glow.png", MapIconPath = "assets/TestClanBanner_Enabled.png", MinimapIconPath = "assets/TestClanBanner_Minimap.png", SkipCheckInBattleMode = true, OverrideTooltipTitleBody = false, NodeSelectedSfxCue = "Node_Banner", ControllerSelectedOutline = "assets/TestClanBanner_Glow.png", //Highlight banners if using a controller. RewardBuilders = new List <IRewardDataBuilder> { new DraftRewardDataBuilder() { DraftRewardID = RewardNodeID, _RewardSpritePath = "assets/TestClanBanner_Enabled.png", _RewardTitleKey = "Test Clan Banner", _RewardDescriptionKey = "Choose a card!", Costs = new int[] { 100 }, _IsServiceMerchantReward = false, DraftPool = cardPool, ClassType = (RunState.ClassType) 7, DraftOptionsCount = 2, RarityFloorOverride = CollectableRarity.Uncommon } } }.BuildAndRegister(); var championCharacterBuilder = new CharacterDataBuilder { CharacterID = CharacterID, Name = "K.Aqua", Size = 1, Health = 10, AttackDamage = 5, AssetPath = "assets/kaqua_character.png" }; new ChampionCardDataBuilder() { Champion = championCharacterBuilder, ChampionIconPath = "assets/kaqua.png", StarterCardData = CustomCardManager.GetCardDataByID(VanillaCardIDs.Torch), CardID = ID, Name = "K.Aqua", ClanID = TestClan.ID, AssetPath = "assets/kaqua.png" }.BuildAndRegister(); }
static void Postfix(ref SaveManager __instance) { var id = SpiritClan.GUID + "_TestSpell0001"; __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(id)); }
static void Postfix(ref List <CardData> __result, ref CardPool cardPool, ClassData classData, CollectableRarity paramRarity, CardPoolHelper.RarityCondition rarityCondition, bool testRarityCondition) { List <CardData> customCardsToAddToPool = CustomCardManager.GetCardsForPoolSatisfyingConstraints(cardPool.GetInstanceID(), classData, paramRarity, rarityCondition, testRarityCondition); __result.AddRange(customCardsToAddToPool); }
private static void LoadCards() { CustomCardManager.RegisterCustomCard(NyoBlastCreator.CreateCard()); }
// Creates a 0-cost 3/4 with Train Steward's card art static void Postfix(ref SaveManager __instance) { __instance.AddCardToDeck(CustomCardManager.GetCardDataByID("TestMod_BlueEyes")); }
static void Postfix(ref SaveManager __instance) { var id = TestPlugin.GUID + "_TestSpell"; __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(id)); }
static void Postfix(ref SaveManager __instance) { __instance.AddCardToDeck(CustomCardManager.GetCardDataByID(Spell1.ID)); }