mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
Fix triggered object issue
This commit is contained in:
@@ -564,9 +564,6 @@ public class CardState extends GameObject implements IHasSVars {
|
||||
}
|
||||
|
||||
public final void addAbilitiesFrom(final CardState source, final boolean lki) {
|
||||
// TODO: what happens if SVar has the same name ?
|
||||
sVars.putAll(source.getSVars());
|
||||
|
||||
for (SpellAbility sa : source.manaAbilities) {
|
||||
if (sa.isIntrinsic()) {
|
||||
manaAbilities.add(sa.copy(card, lki));
|
||||
|
||||
@@ -195,16 +195,7 @@ public class TriggerChangesZone extends Trigger {
|
||||
// TODO use better way to always copy both Card and CardLKI
|
||||
if ("Battlefield".equals(getParam("Origin"))) {
|
||||
sa.setTriggeringObject(AbilityKey.Card, runParams.get(AbilityKey.CardLKI));
|
||||
final Object crd = runParams.get(AbilityKey.Card);
|
||||
if (crd instanceof Card) {
|
||||
sa.setTriggeringObject(AbilityKey.NewCard, CardUtil.getLKICopy((Card)runParams.get(AbilityKey.Card)));
|
||||
} else if (crd instanceof CardCollection) {
|
||||
CardCollection newCards = new CardCollection();
|
||||
for (final Card c : (CardCollection) crd) {
|
||||
newCards.add(CardUtil.getLKICopy(c));
|
||||
}
|
||||
sa.setTriggeringObject(AbilityKey.NewCard, newCards);
|
||||
}
|
||||
sa.setTriggeringObject(AbilityKey.NewCard, runParams.get(AbilityKey.Card));
|
||||
} else {
|
||||
sa.setTriggeringObjectsFrom(runParams, AbilityKey.Card);
|
||||
}
|
||||
|
||||
@@ -477,17 +477,13 @@ public class TriggerHandler {
|
||||
if (runParams.get(AbilityKey.MergedCards) != null) {
|
||||
// Check if the trigger cares the origin is from battlefield
|
||||
Card original = (Card) runParams.get(AbilityKey.Card);
|
||||
Card lastKnownInfo = (Card) runParams.get(AbilityKey.CardLKI);
|
||||
CardCollection mergedCards = (CardCollection) runParams.get(AbilityKey.MergedCards);
|
||||
CardCollection mergedCardsLKI = new CardCollection(mergedCards);
|
||||
mergedCards.set(mergedCards.indexOf(original), original);
|
||||
mergedCardsLKI.set(mergedCardsLKI.indexOf(original), lastKnownInfo);
|
||||
Map<AbilityKey, Object> newParams = AbilityKey.mapFromCard(original);
|
||||
newParams.putAll(runParams);
|
||||
if ("Battlefield".equals(regtrig.getParam("Origin"))) {
|
||||
// If yes, only trigger once
|
||||
newParams.put(AbilityKey.Card, mergedCards);
|
||||
newParams.put(AbilityKey.CardLKI, mergedCardsLKI);
|
||||
runSingleTriggerInternal(regtrig, newParams);
|
||||
} else {
|
||||
// Else, trigger for each merged components
|
||||
|
||||
Reference in New Issue
Block a user