m |
m (rewording, thx Alan Alince) |
||
Line 89: | Line 89: | ||
*# Therefore, while the '''Seek''' process normally requires cards to be revealed, the Trap mechanic ensures that this reveal is skipped. The handling of Traps shows how <span style="font-family: monospace; background-color: #f8f9fa; padding: 0.2em 0.4em; border: 1px solid #d1d5da; border-radius: 3px;">AttachCard()</span> triggers card-specific logic (via callbacks) that overrides the default rules, allowing Traps to stay face-down as intended.<div style="height: 20px;"></div> | *# Therefore, while the '''Seek''' process normally requires cards to be revealed, the Trap mechanic ensures that this reveal is skipped. The handling of Traps shows how <span style="font-family: monospace; background-color: #f8f9fa; padding: 0.2em 0.4em; border: 1px solid #d1d5da; border-radius: 3px;">AttachCard()</span> triggers card-specific logic (via callbacks) that overrides the default rules, allowing Traps to stay face-down as intended.<div style="height: 20px;"></div> | ||
* Intentional or not?<br />Yes we may say that the behavior of Traps not revealed after '''Seek''' function is intentionally coded by the developers, and here is why:<br /> | * Intentional or not?<br />Yes we may say that the behavior of Traps not revealed after '''Seek''' function is intentionally coded by the developers, and here is why:<br /> | ||
− | *# Traps have specific mechanics that are fundamental | + | *# Traps have specific mechanics that are fundamental to their function: they are played facedown and ''only revealed when triggered''. There is no exception; if a Trap is revealed faceup in the graveyard it is because cards are placed faceup in the graveyard porecess; if a trap is returned to hand, nothing says in the returned to hand process that it should be revealed. |
− | *# The fact that Traps aren’t revealed during a '''Seek''' mechanism follows the logic of the game. The code appears to be structured to ensure this rule is confirmed by preventing the <span style="font-family: monospace; background-color: #f8f9fa; padding: 0.2em 0.4em; border: 1px solid #d1d5da; border-radius: 3px;">RevealCard()</span> function from | + | *# The fact that Traps aren’t revealed during a '''Seek''' mechanism follows the logic of the game. The code appears to be structured to ensure this rule is confirmed by preventing the <span style="font-family: monospace; background-color: #f8f9fa; padding: 0.2em 0.4em; border: 1px solid #d1d5da; border-radius: 3px;">RevealCard()</span> function from being triggered for Traps. |
*# Functions like <span style="font-family: monospace; background-color: #f8f9fa; padding: 0.2em 0.4em; border: 1px solid #d1d5da; border-radius: 3px;">PlayFaceDown()</span> and specific conditions in the code show that the developers have built these special rules for Traps, and they take effect before the standard rules apply. | *# Functions like <span style="font-family: monospace; background-color: #f8f9fa; padding: 0.2em 0.4em; border: 1px solid #d1d5da; border-radius: 3px;">PlayFaceDown()</span> and specific conditions in the code show that the developers have built these special rules for Traps, and they take effect before the standard rules apply. | ||
*# Now, the following example code would essentially stop <span style="font-family: monospace; background-color: #f8f9fa; padding: 0.2em 0.4em; border: 1px solid #d1d5da; border-radius: 3px;">PlayFaceDown()</span> from bypassing the reveal process for '''Seek'''ed cards. | *# Now, the following example code would essentially stop <span style="font-family: monospace; background-color: #f8f9fa; padding: 0.2em 0.4em; border: 1px solid #d1d5da; border-radius: 3px;">PlayFaceDown()</span> from bypassing the reveal process for '''Seek'''ed cards. |
File References in the Game | Terms to Locate Seek Reference |
---|---|
|
|
Code seek: | |
public void StartTargetingForSeek() { ClearTargets(); MoveToCastPosition(); GameModel.UnhighlightCards(); GameModel.SetGameState(GameState.GameStateType.target); List<ShadowEraCard> abilityTargets = GetAbilityTargets(); for (int i = 0; i < GameModel.DeckCount(); i++) { ShadowEraCard deck = GameModel.GetDeck(i); if (abilityTargets.Contains(deck)) { GameModel.RemoveDeck(deck); i--; } } for (int j = 0; j < abilityTargets.Count; j++) { GameModel.AddDeck(abilityTargets[j]); } GameModel.HighlightCards(GetAbilityTargets()); DeckListDisplay.abilityCard = parent; DeckListDisplay.ShowDeck(GameModel.CurSide()); } public void DoSeek(bool usedShadowEnergy) { DeckListDisplay.CloseDeck(); if (targets.Count > 0 && GameModel.HandCount() < GameModel.MaxHandSize()) { GameModel.RemoveDeck(targets[0]); GameModel.ShowCardForPlayer(targets[0]); GameModel.AddHand(targets[0]); GameModel.OnSeek(targets[0]); } else { GameModel.OnSeek(null); } ShuffleOurDeck(); targets.Clear(); } public void ShuffleOurDeck() { GameModel.ShuffleDeck(); } |
Alan said: "Card effects take precedence over the game rules."
void PlayFaceDown(ShadowEraCard card, bool isSeeked)
{ if (isSeeked) { // Allow RevealCard() to be invoked for Seeked cards RevealCard(card); } else { // Keep the card face-down as usual (normal Trap behavior) KeepCardFaceDown(card); } } |