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; }
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); }
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; } } }
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; }
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; }