protected override void SequenceMainBranch() { switch (SequenceStep) { case 0: //Wait a bit CurSequenceAction = new WaitSeqAction(300d); break; case 1: //Deal damage InteractionResult[] interactions = AttemptDamage(BaseDamage, EntitiesAffected[0], Action.DamageProperties, false); //Switch only if the victim was hit, damage was greater than 0, and the victim didn't perform any defensive actions if (interactions[0] != null && interactions[0].WasVictimHit == true && interactions[0].VictimResult.TotalDamage > 0 && interactions[0].VictimResult.DefensiveActionsPerformed == Enumerations.DefensiveActionTypes.None) { //Find a Partner to swap to List <BattlePartner> allPartners = new List <BattlePartner>(); Inventory.Instance.partnerInventory.GetAllPartners(allPartners); //Remove the current Partner from being selected allPartners.Remove(User.BManager.Partner); //Filter out all dead Partners BattleManagerUtils.FilterDeadEntities(allPartners); //If there's another Partner available, choose it if (allPartners.Count != 0) { int randIndex = RandomGlobals.Randomizer.Next(0, allPartners.Count); SwapPartnerBattleEvent swapPartnerBattleEvent = new SwapPartnerBattleEvent(User.BManager.Partner, allPartners[randIndex], 300d, 300d); User.BManager.battleEventManager.QueueBattleEvent((int)BattleGlobals.BattleEventPriorities.SwapPartner, new BattleGlobals.BattleState[] { BattleGlobals.BattleState.Turn }, swapPartnerBattleEvent); } } CurSequenceAction = new WaitSeqAction(0d); ChangeSequenceBranch(SequenceBranch.End); break; default: PrintInvalidSequence(); break; } }
protected override void SequenceStartBranch() { switch (SequenceStep) { case 0: SwapPartnerBattleEvent swapPartnerBattleEvent = new SwapPartnerBattleEvent(User.BManager.Partner, NewPartner, 300d, 300d); User.BManager.battleEventManager.QueueBattleEvent((int)BattleGlobals.BattleEventPriorities.SwapPartner, new BattleGlobals.BattleState[] { BattleGlobals.BattleState.Turn }, swapPartnerBattleEvent); CurSequenceAction = new WaitForBattleEventSeqAction(swapPartnerBattleEvent); ChangeSequenceBranch(SequenceBranch.End); break; default: PrintInvalidSequence(); break; } }