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) {
|
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) {
|
for (SpellAbility sa : source.manaAbilities) {
|
||||||
if (sa.isIntrinsic()) {
|
if (sa.isIntrinsic()) {
|
||||||
manaAbilities.add(sa.copy(card, lki));
|
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
|
// TODO use better way to always copy both Card and CardLKI
|
||||||
if ("Battlefield".equals(getParam("Origin"))) {
|
if ("Battlefield".equals(getParam("Origin"))) {
|
||||||
sa.setTriggeringObject(AbilityKey.Card, runParams.get(AbilityKey.CardLKI));
|
sa.setTriggeringObject(AbilityKey.Card, runParams.get(AbilityKey.CardLKI));
|
||||||
final Object crd = runParams.get(AbilityKey.Card);
|
sa.setTriggeringObject(AbilityKey.NewCard, 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);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
sa.setTriggeringObjectsFrom(runParams, AbilityKey.Card);
|
sa.setTriggeringObjectsFrom(runParams, AbilityKey.Card);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -477,17 +477,13 @@ public class TriggerHandler {
|
|||||||
if (runParams.get(AbilityKey.MergedCards) != null) {
|
if (runParams.get(AbilityKey.MergedCards) != null) {
|
||||||
// Check if the trigger cares the origin is from battlefield
|
// Check if the trigger cares the origin is from battlefield
|
||||||
Card original = (Card) runParams.get(AbilityKey.Card);
|
Card original = (Card) runParams.get(AbilityKey.Card);
|
||||||
Card lastKnownInfo = (Card) runParams.get(AbilityKey.CardLKI);
|
|
||||||
CardCollection mergedCards = (CardCollection) runParams.get(AbilityKey.MergedCards);
|
CardCollection mergedCards = (CardCollection) runParams.get(AbilityKey.MergedCards);
|
||||||
CardCollection mergedCardsLKI = new CardCollection(mergedCards);
|
|
||||||
mergedCards.set(mergedCards.indexOf(original), original);
|
mergedCards.set(mergedCards.indexOf(original), original);
|
||||||
mergedCardsLKI.set(mergedCardsLKI.indexOf(original), lastKnownInfo);
|
|
||||||
Map<AbilityKey, Object> newParams = AbilityKey.mapFromCard(original);
|
Map<AbilityKey, Object> newParams = AbilityKey.mapFromCard(original);
|
||||||
newParams.putAll(runParams);
|
newParams.putAll(runParams);
|
||||||
if ("Battlefield".equals(regtrig.getParam("Origin"))) {
|
if ("Battlefield".equals(regtrig.getParam("Origin"))) {
|
||||||
// If yes, only trigger once
|
// If yes, only trigger once
|
||||||
newParams.put(AbilityKey.Card, mergedCards);
|
newParams.put(AbilityKey.Card, mergedCards);
|
||||||
newParams.put(AbilityKey.CardLKI, mergedCardsLKI);
|
|
||||||
runSingleTriggerInternal(regtrig, newParams);
|
runSingleTriggerInternal(regtrig, newParams);
|
||||||
} else {
|
} else {
|
||||||
// Else, trigger for each merged components
|
// Else, trigger for each merged components
|
||||||
|
|||||||
Reference in New Issue
Block a user