public override IEnumerator OnTrigger(List <CharacterState> targets) { ProviderManager.TryGetProvider <RoomManager>(out RoomManager roomManager); var cardEffectParams = new CardEffectParams { saveManager = ProviderManager.CombatManager.GetSaveManager(), combatManager = ProviderManager.CombatManager, heroManager = ProviderManager.CombatManager.GetHeroManager(), roomManager = roomManager, targets = targets, }; var bumper = new CardEffectBump(); yield return(bumper.Bump(cardEffectParams, -1)); }
public override IEnumerator ApplyEffect(CardEffectState cardEffectState, CardEffectParams cardEffectParams) { if (cardEffectParams.targets.Count == 0) { yield break; } var availableFloors = GetAvailableFloors(cardEffectParams.targets[0], cardEffectParams.roomManager); int chosenFloor = 0; if (availableFloors.Count > 0) { RngId rngId = cardEffectParams.saveManager.PreviewMode ? RngId.BattleTest : RngId.Battle; chosenFloor = availableFloors[RandomManager.Range(0, availableFloors.Count, rngId)]; } yield return(bumper.Bump(cardEffectParams, chosenFloor - cardEffectParams.targets[0].GetCurrentRoomIndex())); yield break; }
protected override IEnumerator OnTriggered(InputTriggerParams inputTriggerParams, OutputTriggerParams outputTriggerParams) { // Don't fly up during Relentless List <CharacterState> characters = new List <CharacterState>(); inputTriggerParams.combatManager.GetHeroManager().AddCharactersInRoomToList(characters, inputTriggerParams.associatedCharacter.GetCurrentRoomIndex()); foreach (var character in characters) { if (character.GetStatusEffect("relentless") != null) { yield break; } } // Provider ProviderManager.TryGetProvider <RoomManager>(out inputTriggerParams.roomManager); // At end of turn, ascend and if we try to ascend into the Pyre then we kaboom and do something. if (inputTriggerParams.associatedCharacter.GetCurrentRoomIndex() == 2) { yield return(inputTriggerParams.associatedCharacter.Sacrifice(new CardState())); } else { var cardEffectParams = new CardEffectParams { saveManager = inputTriggerParams.combatManager.GetSaveManager(), combatManager = inputTriggerParams.combatManager, heroManager = inputTriggerParams.combatManager.GetHeroManager(), roomManager = inputTriggerParams.roomManager, targets = new List <CharacterState> { inputTriggerParams.associatedCharacter }, }; var bumper = new CardEffectBump(); yield return(bumper.Bump(cardEffectParams, 1)); } yield break; }
protected override IEnumerator OnTriggered(InputTriggerParams inputTriggerParams, OutputTriggerParams outputTriggerParams) { ProviderManager.TryGetProvider <RoomManager>(out inputTriggerParams.roomManager); // At end of turn, descend, and if we did Descend remove a stack of gravity. if (canMove(inputTriggerParams)) { var cardEffectParams = new CardEffectParams { saveManager = inputTriggerParams.combatManager.GetSaveManager(), combatManager = inputTriggerParams.combatManager, heroManager = inputTriggerParams.combatManager.GetHeroManager(), roomManager = inputTriggerParams.roomManager, targets = new List <CharacterState> { inputTriggerParams.associatedCharacter }, }; var bumper = new CardEffectBump(); yield return(bumper.Bump(cardEffectParams, -1)); yield return(Descend(inputTriggerParams.associatedCharacter)); } }