public void KjacRostFTheBloomerInner(List <Delta> deltas, GMWithLocation gmLoc) { if (turn == 0) { Unit source = gmLoc.SubjectUnit; int side = gmLoc.Side; foreach (Lane l in gmLoc.Lanes) { for (int pos = 0; pos < 2; pos++) { if (l.IsOccupied(side, pos) && l.Units[side, pos].Card.UnitType.Contains("Infantry")) { Unit target = l.Units[side, pos]; deltas.Add(new UnitDamageAmountDelta(target, 1, Damage.Type.MELEE, source)); appliedTo.Add(target); } } } } else if (turn == 1) { foreach (Unit u in appliedTo) { deltas.Add(new UnitDamageAmountDelta(u, -1, Damage.Type.MELEE, gmLoc.SubjectUnit)); } appliedTo.Clear(); } turn++; }
private void RemoveEffects(List <Delta> deltas, GMWithLocation gmLoc, Damage.Type?phase) { if (AppliedTo != null) { deltas.Add(new TowerDamageAmountDelta(AppliedTo, -3)); AppliedTo = null; } }
private void ApplyEffects(List <Delta> deltas, GMWithLocation gmLoc) { Tower tower = gmLoc.SubjectLane.Towers[gmLoc.Side]; deltas.Add( new TowerDamageAmountDelta(tower, 3) ); AppliedTo = tower; }
public void InnerCommercialComsRelay(List <Delta> delta, GMWithLocation gmLoc) { System.Console.WriteLine("COMM COMS RELAY INIT DEP"); CommercialComsRelayIR inputRequest = new CommercialComsRelayIR( gmLoc.SubjectPlayer, gmLoc.GameManager ); gmLoc.SubjectPlayer.AssignInputRequest(inputRequest); }
public void AddBoardUpdate(List <Delta> deltas, GMWithLocation gmLoc) { gmLoc.GameManager.AddPersistentDeltas += RushInner; Tuple <int, int, int> lsp = Lane.GetLaneSidePosOf(gmLoc.SubjectUnit, gmLoc.Lanes); Lane = gmLoc.Lanes[lsp.Item1]; Unit = gmLoc.SubjectUnit; Side = lsp.Item2; }
protected override Delta[] EffectRemoveDeltas(Unit appliedTo, GMWithLocation gmLoc) { return(new Delta[] { new UnitAbilityDelta(appliedTo, gmLoc.SubjectUnit, new RangedShield(2), UnitAbilityDelta.DeltaMode.REMOVE, gmLoc.GameManager) }); }
public void InnerCommercialShipper(List <Delta> deltas, GMWithLocation gmLoc) { System.Console.WriteLine("COMM SHIP INIT DEP"); deltas.AddRange(gmLoc.SubjectPlayer.GetDrawDeltas(gmLoc.GameManager)); CommercialShipperIR inputRequest = new CommercialShipperIR( gmLoc.SubjectPlayer, gmLoc.GameManager ); gmLoc.SubjectPlayer.AssignInputRequest(inputRequest); }
protected override Delta[] EffectAddDeltas(GMWithLocation gmLoc) { return(new Delta[] { new UnitAbilityDelta(gmLoc.SubjectUnit, gmLoc.SubjectUnit, new RangedShield(2), UnitAbilityDelta.DeltaMode.ADD, gmLoc.GameManager) }); }
public void SphereGreaserInner(List <Delta> deltas, GMWithLocation gmLoc) { if (gmLoc.IsFortifying(new string[] { "Drone" })) { deltas.AddRange(new List <Delta> { new RemoveFromLaneDelta(gmLoc.SubjectLane, gmLoc.Side, 0), new AddToHandDelta(gmLoc.SubjectPlayer.Hand, gmLoc.FrontUnit.Card) }); } }
private void RemovePersistentFromGM(List <Delta> deltas, GMWithLocation gmLoc, Damage.Type?phase) { System.Console.WriteLine("~\n~Persistent Field Ability Removed from GM~\n~"); gmLoc.GameManager.AddPersistentDeltas -= ReapplyEffects; foreach (Unit u in appliedTo) { deltas.AddRange(GetRemoveDeltas(u, Source, gmLoc.GameManager)); } appliedTo.Clear(); }
private void RegrowthInner(List <Delta> deltas, GMWithLocation gmLoc, Damage.Type?phase) { if (Function(gmLoc, phase)) { deltas.AddRange( gmLoc.SubjectPlayer.Hand .GetDrawDeltas( gmLoc.SubjectUnit.Card, gmLoc.GameManager ) ); } }
public void TempInner(List <Delta> deltas, GMWithLocation gmLoc) { if (turn == 0 && ShouldApply(gmLoc)) { deltas.AddRange(EffectAddDeltas(gmLoc)); appliedTo = AppliedTo(gmLoc); } else if (turn == 1 && appliedTo != null) { deltas.AddRange(EffectRemoveDeltas(appliedTo, gmLoc)); appliedTo = null; } turn++; }
public void SphereSkeletalReshaperInner(List <Delta> deltas, GMWithLocation gmLoc) { if (gmLoc.IsFortifying("Carthan")) { deltas.AddRange( UnitHealthDelta.GetHealDeltas( gmLoc.FrontUnit, gmLoc.SubjectUnit, 2, gmLoc.GameManager ) ); } }
public void SphereDeathseekersInner(List <Delta> deltas, GMWithLocation gmLoc) { if (turn == 0) { Unit self = gmLoc.SubjectUnit; // Fortify Artillery: Gain Spore 3 until end of turn. if (gmLoc.IsFortifying("Artillery")) { deltas.Add( new UnitAbilityDelta(self, self, new Spore(3), UnitAbilityDelta.DeltaMode.ADD, gmLoc.GameManager) ); appliedSporeTo = self; } // Fortify Infantry: Gain Lob until end of turn. if (gmLoc.IsFortifying("Infantry")) { deltas.Add( new UnitAbilityDelta(self, self, new Lob(), UnitAbilityDelta.DeltaMode.ADD, gmLoc.GameManager) ); appliedLobTo = self; } } else if (turn == 1) { // Remove Spore if (appliedSporeTo != null) { deltas.Add( new UnitAbilityDelta(appliedSporeTo, appliedSporeTo, new Spore(3), UnitAbilityDelta.DeltaMode.REMOVE, gmLoc.GameManager) ); appliedSporeTo = null; } // Remove Lob if (appliedLobTo != null) { deltas.Add( new UnitAbilityDelta(appliedLobTo, appliedLobTo, new Lob(), UnitAbilityDelta.DeltaMode.REMOVE, gmLoc.GameManager) ); appliedLobTo = null; } } turn++; }
public void ArchonEtherealClassInner(List <Delta> deltas, GMWithLocation gmLoc) { Unit front = gmLoc.FrontUnit; if (front != null) { deltas.AddRange( UnitHealthDelta.GetHealDeltas( front, gmLoc.SubjectUnit, 2, gmLoc.GameManager ) ); int side = gmLoc.Side; Unit left = gmLoc.LeftLane?.Units?[side, 0]; if (left != null) { deltas.AddRange( UnitHealthDelta.GetHealDeltas( left, gmLoc.SubjectUnit, 1, gmLoc.GameManager ) ); } Unit right = gmLoc.RightLane?.Units?[side, 0]; if (right != null) { deltas.AddRange( UnitHealthDelta.GetHealDeltas( right, gmLoc.SubjectUnit, 1, gmLoc.GameManager ) ); } } }
void MulchInner(List <Delta> deltas, GMWithLocation gmLoc, Damage.Type?phase) { RemoveFromDeckDelta top = new RemoveFromDeckDelta(gmLoc.SubjectPlayer.Deck, gmLoc.SubjectPlayer.Deck[0], 0); deltas.Add(top); UnitCard topUnitCard = top.Card as UnitCard; // BackUnit works out perfectly because it returns null if its empty or if it contains SubjectUnit if (topUnitCard != null && gmLoc.SubjectPlayer.ManaPool.CanAfford(topUnitCard.DeployCost - 1) && gmLoc.BackUnit == null) { deltas.AddRange(gmLoc.SubjectPlayer.ManaPool.GetSubtractDeltas(topUnitCard.DeployCost - 1)); deltas.AddRange(gmLoc.SubjectLane.GetDeployDeltas(topUnitCard, gmLoc.Side, 1, gmLoc.GameManager)); } else { deltas.AddRange(gmLoc.SubjectPlayer.Discard.GetDiscardDeltas(new Card[] { top.Card })); } }
public void ArchonBrynhildeClassInner(List <Delta> deltas, GMWithLocation gmLoc) { if (gmLoc.IsFortifying("Carthan")) { // heal front line 2 deltas.AddRange( UnitHealthDelta.GetHealDeltas( gmLoc.FrontUnit, gmLoc.SubjectUnit, 2, gmLoc.GameManager ) ); // gain 3 mana deltas.AddRange( gmLoc.SubjectPlayer.ManaPool.GetAddDeltas(3) ); } }
public void SphereDeathseekersInner(List <Delta> deltas, GMWithLocation gmLoc) { if (turn == 0) { Unit self = gmLoc.SubjectUnit; Unit front = gmLoc.FrontUnit; if (gmLoc.Pos == 0) { // Deploy Front Line: This gains Ranged and Melee Shield 3 this turn. deltas.AddRange(new Delta[] { new UnitAbilityDelta(self, self, new RangedShield(3), UnitAbilityDelta.DeltaMode.ADD, gmLoc.GameManager), new UnitAbilityDelta(self, self, new MeleeShield(3), UnitAbilityDelta.DeltaMode.ADD, gmLoc.GameManager) }); appliedShieldTo = self; } else if (gmLoc.IsFortifying("Carthan")) { // Fortify Carthan: This gains +3R this turn. deltas.Add(new UnitDamageAmountDelta(self, 3, Damage.Type.RANGED, self)); applied3RTo = self; } } else if (turn == 1) { if (appliedShieldTo != null) { deltas.AddRange(new Delta[] { new UnitAbilityDelta(appliedShieldTo, appliedShieldTo, new RangedShield(3), UnitAbilityDelta.DeltaMode.REMOVE, gmLoc.GameManager), new UnitAbilityDelta(appliedShieldTo, appliedShieldTo, new MeleeShield(3), UnitAbilityDelta.DeltaMode.REMOVE, gmLoc.GameManager) }); appliedShieldTo = null; } if (applied3RTo != null) { deltas.Add(new UnitDamageAmountDelta(applied3RTo, -3, Damage.Type.RANGED, applied3RTo)); applied3RTo = null; } } turn++; }
public void SphereMedicalVanguardInner(List <Delta> deltas, GMWithLocation gmLoc) { Console.WriteLine($"Sphere Medical Vanguard L{gmLoc.Lane} S{gmLoc.Side} P{gmLoc.Pos}"); if (gmLoc.Pos == 0 && gmLoc.BackUnit == null) { Console.WriteLine(" In"); int lane = gmLoc.Lane; int side = gmLoc.Side; Unit leftLaneFront = gmLoc.LeftLane?.Units?[side, 0]; if (leftLaneFront != null) { Console.WriteLine(" L"); deltas.AddRange( UnitHealthDelta.GetHealDeltas( leftLaneFront, gmLoc.SubjectUnit, 1, gmLoc.GameManager ) ); } Unit rightLaneFront = gmLoc.RightLane?.Units?[side, 0]; if (rightLaneFront != null) { Console.WriteLine(" R"); deltas.AddRange( UnitHealthDelta.GetHealDeltas( rightLaneFront, gmLoc.SubjectUnit, 1, gmLoc.GameManager ) ); } } }
public void EXAvengerCustomDrone1Inner(List <Delta> deltas, GMWithLocation gmLoc) { if (turn == 0) { if (gmLoc.IsFortifying("Carthan", "Infantry")) { foreach (Card c in gmLoc.SubjectPlayer.Hand) { deltas.AddRange(gmLoc.SubjectPlayer.Hand.GetRemoveDelta(c)); } buffAmount = gmLoc.SubjectPlayer.Hand.Count; deltas.Add(new UnitDamageAmountDelta(gmLoc.FrontUnit, buffAmount, Damage.Type.RANGED, gmLoc.SubjectUnit)); buffed = gmLoc.FrontUnit; deltas.AddRange( UnitHealthDelta.GetHealDeltas( gmLoc.FrontUnit, gmLoc.SubjectUnit, buffAmount, gmLoc.GameManager ) ); } } else if (turn == 1) { if (buffed != null) { deltas.Add(new UnitDamageAmountDelta(buffed, -buffAmount, Damage.Type.RANGED, gmLoc.SubjectUnit)); buffed = null; } } turn++; }
void SwarmInner(List <Delta> deltas, GMWithLocation gmLoc) { if (gmLoc.Pos == 1) { foreach (string s in gmLoc.SubjectUnit.Card.UnitType.Split(' ')) { if (s != "Unit" && gmLoc.IsFortifying(s)) { RemoveFromDeckDelta[] rs = gmLoc.SubjectPlayer.Deck .GetDrawDeltas(count: 1); deltas.AddRange(rs); deltas.AddRange( gmLoc.SubjectPlayer.Hand .GetDrawDeltas( rs, gmLoc.GameManager ) ); return; } } } }
void SporeInner(List <Delta> deltas, GMWithLocation gameStateLoc, Damage.Type?phase) { deltas.AddRange(gameStateLoc.SubjectPlayer.ManaPool .GetAddDeltas(Amount)); }
public void RemoveFromGM(List <Delta> deltas, GMWithLocation gmLoc, Damage.Type?phase) { gmLoc.GameManager.AddHealDeltas -= MgrLtTulYorvesInner; }
protected override Delta[] EffectRemoveDeltas(Unit appliedTo, GMWithLocation gmLoc) { return(new Delta[] { new UnitDamageAmountDelta(appliedTo, -3, Damage.Type.RANGED, gmLoc.SubjectUnit) }); }
protected override Delta[] EffectAddDeltas(GMWithLocation gmLoc) { return(new Delta[] { new UnitDamageAmountDelta(gmLoc.FrontUnit, 3, Damage.Type.RANGED, gmLoc.SubjectUnit) }); }
protected override Unit AppliedTo(GMWithLocation gmLoc) { return(gmLoc.FrontUnit); }
protected override bool ShouldApply(GMWithLocation gmLoc) { return(gmLoc.IsFortifying("Carthan")); }
public void RemoveBoardUpdate(List <Delta> deltas, GMWithLocation gmLoc, Damage.Type?phase) { gmLoc.GameManager.AddPersistentDeltas -= RushInner; }
public void AddToGM(List <Delta> deltas, GMWithLocation gmLoc) { System.Console.WriteLine("~MgrLt Added to GM~"); gmLoc.GameManager.AddHealDeltas += MgrLtTulYorvesInner; }
protected override bool ShouldApply(GMWithLocation gmLoc) { return(gmLoc.Pos == 0); }