コード例 #1
0
        public override IEnumerator ApplyEffect(CardEffectState cardEffectState, CardEffectParams cardEffectParams)
        {
            StatusEffectStackData statusEffectStack = GetStatusEffectStack(cardEffectState);

            if (statusEffectStack == null)
            {
                yield break;
            }
            if (statusEffectStack.statusId == Burnout)
            {
                if (cardEffectParams.targets[0].IsMiniboss() || cardEffectParams.targets[0].IsOuterTrainBoss())
                {
                    yield break;
                }
            }
            CharacterState.AddStatusEffectParams addStatusEffectParams = default(CharacterState.AddStatusEffectParams);
            addStatusEffectParams.sourceRelicState = cardEffectParams.sourceRelic;
            addStatusEffectParams.sourceCardState  = cardEffectParams.playedCard;
            addStatusEffectParams.cardManager      = cardEffectParams.cardManager;
            addStatusEffectParams.sourceIsHero     = (cardEffectState.GetSourceTeamType() == Team.Type.Heroes);
            CharacterState.AddStatusEffectParams addStatusEffectParams2 = addStatusEffectParams;
            for (int num = cardEffectParams.targets.Count - 1; num >= 0; num--)
            {
                CharacterState characterState = cardEffectParams.targets[num];
                int            count          = statusEffectStack.count;
                characterState.AddStatusEffect(statusEffectStack.statusId, count, addStatusEffectParams2);
            }
        }
        public override IEnumerator ApplyEffect(CardEffectState cardEffectState, CardEffectParams cardEffectParams)
        {
            int intInRange = cardEffectState.GetIntInRange();

            CharacterState.AddStatusEffectParams addStatusEffectParams = default(CharacterState.AddStatusEffectParams);
            addStatusEffectParams.sourceRelicState = cardEffectParams.sourceRelic;
            addStatusEffectParams.sourceCardState  = cardEffectParams.playedCard;
            addStatusEffectParams.cardManager      = cardEffectParams.cardManager;
            addStatusEffectParams.sourceIsHero     = false;
            CharacterState.AddStatusEffectParams addStatusEffectParams2 = addStatusEffectParams;

            StatusEffectData.DisplayCategory buffOrDebuff = StatusEffectData.DisplayCategory.Negative;
            if (cardEffectState.GetParamBool())
            {
                buffOrDebuff = StatusEffectData.DisplayCategory.Positive;
            }

            foreach (CharacterState character in cardEffectParams.targets)
            {
                List <CharacterState.StatusEffectStack> statusEffectStacks;
                character.GetStatusEffects(out statusEffectStacks);

                foreach (var status in statusEffectStacks)
                {
                    if (status.State.GetDisplayCategory() == buffOrDebuff)
                    {
                        character.AddStatusEffect(status.State.GetStatusId(), 0, addStatusEffectParams2);
                    }
                }
            }
            yield break;
        }
コード例 #3
0
        public override IEnumerator ApplyEffect(CardEffectState cardEffectState, CardEffectParams cardEffectParams)
        {
            ProviderManager.TryGetProvider <RoomManager>(out RoomManager roomManager);
            CharacterState target = roomManager.GetPyreRoom().GetPyreHeart();

            if (cardEffectParams.saveManager.PreviewMode)
            {
                yield break;
            }

            StatusEffectStackData statusEffectStack = GetStatusEffectStack(cardEffectState);

            if (statusEffectStack == null)
            {
                yield break;
            }
            int intInRange = cardEffectState.GetIntInRange();

            CharacterState.AddStatusEffectParams addStatusEffectParams = default(CharacterState.AddStatusEffectParams);
            addStatusEffectParams.sourceRelicState = cardEffectParams.sourceRelic;
            addStatusEffectParams.sourceCardState  = cardEffectParams.playedCard;
            addStatusEffectParams.cardManager      = cardEffectParams.cardManager;
            addStatusEffectParams.sourceIsHero     = (cardEffectState.GetSourceTeamType() == Team.Type.Heroes);
            CharacterState.AddStatusEffectParams addStatusEffectParams2 = addStatusEffectParams;

            RngId         rngId = cardEffectParams.saveManager.PreviewMode ? RngId.BattleTest : RngId.Battle;
            PlayerManager playerManager;

            ProviderManager.TryGetProvider <PlayerManager>(out playerManager);

            target.AddStatusEffect(statusEffectStack.statusId, playerManager.GetEnergy(), addStatusEffectParams2);
        }
コード例 #4
0
 private void ApplyEffectInternal()
 {
     if (saveManager.PreviewMode)
     {
         _previewEnchantedTargets.Clear();
         foreach (KeyValuePair <CharacterState, EnchantedState> primaryEnchantedTarget in _primaryEnchantedTargets)
         {
             _previewEnchantedTargets.Add(primaryEnchantedTarget.Key, new EnchantedState(primaryEnchantedTarget.Value));
         }
     }
     foreach (CharacterState target in GetRoomTargets(Team.Type.Monsters))
     {
         if (!EnchantedTargets.ContainsKey(target))
         {
             EnchantedTargets.Add(target, new EnchantedState());
         }
     }
     foreach (KeyValuePair <CharacterState, EnchantedState> enchantedTarget in EnchantedTargets)
     {
         CharacterState key = enchantedTarget.Key;
         enchantedTarget.Value.nextStateAction = (IsEnchantmentValidForTarget(key) ? EnchanterStateNextAction.AddStatusEffect : EnchanterStateNextAction.RemoveStatusEffect);
     }
     BalanceData.TimingData activeTiming = saveManager.GetActiveTiming();
     foreach (KeyValuePair <CharacterState, EnchantedState> enchantedTarget2 in EnchantedTargets)
     {
         CharacterState key2  = enchantedTarget2.Key;
         EnchantedState value = enchantedTarget2.Value;
         if (!key2.IsDead && !key2.IsDestroyed)
         {
             if (value.nextStateAction == EnchanterStateNextAction.AddStatusEffect && !value.isEnchanted)
             {
                 CharacterState.AddStatusEffectParams addStatusEffectParams = default(CharacterState.AddStatusEffectParams);
                 addStatusEffectParams.fromEffectType = typeof(CardEffectEnchant);
                 addStatusEffectParams.sourceIsHero   = (key2.GetTeamType() == Team.Type.Heroes);
                 CharacterState.AddStatusEffectParams addStatusEffectParams2 = addStatusEffectParams;
                 key2.AddStatusEffect(statusEffect.statusId, statusEffect.count, addStatusEffectParams2);
                 value.isEnchanted = true;
             }
             else if (value.nextStateAction == EnchanterStateNextAction.RemoveStatusEffect && value.isEnchanted)
             {
                 key2.RemoveStatusEffect(statusEffect.statusId, removeAtEndOfTurn: false, statusEffect.count, !saveManager.PreviewMode, null, typeof(CardEffectEnchant));
                 value.isEnchanted = false;
             }
             value.nextStateAction = EnchanterStateNextAction.NoAction;
         }
     }
 }
コード例 #5
0
        public override IEnumerator ApplyEffect(CardEffectState cardEffectState, CardEffectParams cardEffectParams)
        {
            CharacterState.AddStatusEffectParams addStatusEffectParams = default(CharacterState.AddStatusEffectParams);
            addStatusEffectParams.sourceRelicState = cardEffectParams.sourceRelic;
            addStatusEffectParams.sourceCardState  = cardEffectParams.playedCard;
            addStatusEffectParams.cardManager      = cardEffectParams.cardManager;
            addStatusEffectParams.sourceIsHero     = (cardEffectState.GetSourceTeamType() == Team.Type.Heroes);
            CharacterState.AddStatusEffectParams addStatusEffectParams2 = addStatusEffectParams;

            foreach (CharacterState character in cardEffectParams.targets)
            {
                List <CharacterState.StatusEffectStack> statusEffectStacks;
                character.GetStatusEffects(out statusEffectStacks);


                // True flips buffs into debuffs, false flips debuffs into buffs
                foreach (var status in statusEffectStacks)
                {
                    if (cardEffectState.GetParamBool())
                    {
                        if (StatusFlips.ContainsKey(status.State.GetStatusId()))
                        {
                            int count = status.Count;
                            character.RemoveStatusEffect(status.State.GetStatusId(), false, count);

                            string debuff = StatusFlips.GetValueSafe(status.State.GetStatusId());
                            Trainworks.Trainworks.Log(BepInEx.Logging.LogLevel.All, "Flipping " + status.State.GetStatusId() + " to " + debuff + " - " + count);
                            character.AddStatusEffect(debuff, count);
                        }
                    }
                    else
                    {
                        if (StatusFlips.ContainsValue(status.State.GetStatusId()))
                        {
                            int count = status.Count;
                            character.RemoveStatusEffect(status.State.GetStatusId(), false, count);

                            string buff = StatusFlips.FirstOrDefault(x => x.Value == status.State.GetStatusId()).Key;
                            Trainworks.Trainworks.Log(BepInEx.Logging.LogLevel.All, "Flipping " + status.State.GetStatusId() + " to " + buff + " - " + count);
                            character.AddStatusEffect(buff, count);
                        }
                    }
                }
            }
            yield break;
        }
コード例 #6
0
        public IEnumerator ApplyCharacterTriggerEffect(CharacterTriggerRelicEffectParams relicEffectParams)
        {
            CharacterState characterState = relicEffectParams.characterState;
            int            num            = RandomManager.Range(0, statusEffects.Length, RngId.Battle);
            int            numStacks      = (statusEffects[num].count <= 0) ? 1 : statusEffects[num].count;

            CharacterState.AddStatusEffectParams addStatusEffectParams = default(CharacterState.AddStatusEffectParams);
            addStatusEffectParams.sourceRelicState = _srcRelicState;
            CharacterState.AddStatusEffectParams addStatusEffectParams2 = addStatusEffectParams;
            characterState.AddStatusEffect(statusEffects[num].statusId, numStacks, addStatusEffectParams2);
            string activatedDescription = GetActivatedDescription();

            activatedDescription = string.Format(activatedDescription, statusEffects[num]);
            if (_srcRelicData.CanShowNotifications)
            {
                relicEffectParams.relicManager.ShowRelicActivated(_srcRelicState.GetIcon(), activatedDescription, characterState.GetCharacterUI());
            }
            yield break;
        }