Editing Template:CardSearch
From LOTR-TCG Wiki
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 3: | Line 3: | ||
</noinclude><includeonly> | </noinclude><includeonly> | ||
{{#cargo_query:tables= | {{#cargo_query:tables=Cards=C,CardReleases=EN,CardReleases=CR,CardSets=S,Languages=L | ||
|join on= | |join on=C.ReprintBaseID = EN.ID,EN.ID = CR.BaseCardID,C.SetNum=S.ID,CR.LanguageCode=L.Code | ||
|fields= | |fields= | ||
CONCAT('[[Image:Culture_', C.Culture, '.svg|x20px|text-bottom|link=', C.Culture, '_Culture|class=whitebg]]', ' <span class="tooltip">[[', REPLACE(REPLACE(C._pageName, '/Data', ''), 'Data:', ''), '|', CASE WHEN CR.LanguageCode <> 'EN' THEN CONCAT("'''", CR.LanguageCode, "''' ") ELSE '' END, IFNULL(CR.Title,EN.Title), CASE WHEN IFNULL(CR.Subtitle,EN.Subtitle) IS NULL THEN '' ELSE CONCAT(', ', IFNULL(CR.Subtitle,EN.Subtitle)) END, ' (', IFNULL(CR.CollInfo,C.CollInfo), ')', CASE WHEN CR.Revision > 0 THEN CONCAT(' [E',CR.Revision,']') ELSE '' END, ']]<span>[[File:', IFNULL(CR.ImageFilename,'Card_Not_Found.jpg'), '|500x500px]]</span></span>')=CardName | CONCAT('[[Image:Culture_', C.Culture, '.svg|x20px|text-bottom|link=', C.Culture, '_Culture|class=whitebg]]', ' <span class="tooltip">[[', REPLACE(REPLACE(C._pageName, '/Data', ''), 'Data:', ''), '|', CASE WHEN CR.LanguageCode <> 'EN' THEN CONCAT("'''", CR.LanguageCode, "''' ") ELSE '' END, IFNULL(CR.Title,EN.Title), CASE WHEN IFNULL(CR.Subtitle,EN.Subtitle) IS NULL THEN '' ELSE CONCAT(', ', IFNULL(CR.Subtitle,EN.Subtitle)) END, ' (', IFNULL(CR.CollInfo,C.CollInfo), ')', CASE WHEN CR.Revision > 0 THEN CONCAT(' [E',CR.Revision,']') ELSE '' END, ']]<span>[[File:', IFNULL(CR.ImageFilename,'Card_Not_Found.jpg'), '|500x500px]]</span></span>')=CardName | ||
Line 12: | Line 12: | ||
AND ("{{{subtitle|}}}" = "" OR C.Subtitle RLIKE "{{{subtitle|}}}") | AND ("{{{subtitle|}}}" = "" OR C.Subtitle RLIKE "{{{subtitle|}}}") | ||
AND ("{{{side|}}}" = "" OR C.Side = "{{{side|}}}") | AND ("{{{side|}}}" = "" OR C.Side = "{{{side|}}}") | ||
AND ("{{{creator|}}}" = "" OR "{{{creator|}}}" LIKE CONCAT('%', S.Creator, '%')) | AND ("{{{creator|}}}" = "" OR "{{{creator|}}}" LIKE CONCAT('%', S.Creator, '%')) | ||
AND ("{{{setnums|}}}" = "" OR "{{{setnums|}}}" LIKE CONCAT('%', S.Name, '%')) | AND ("{{{setnums|}}}" = "" OR "{{{setnums|}}}" LIKE CONCAT('%', S.Name, '%')) | ||
Line 19: | Line 18: | ||
AND ("{{{textSearch|}}}" = "" OR CR.GameText LIKE "%{{{textSearch|}}}%") | AND ("{{{textSearch|}}}" = "" OR CR.GameText LIKE "%{{{textSearch|}}}%") | ||
AND ("{{{textRegexSearch|}}}" = "" OR CR.GameText RLIKE "{{#replace:{{{textRegexSearch|}}}|\|\\}}") | AND ("{{{textRegexSearch|}}}" = "" OR CR.GameText RLIKE "{{#replace:{{{textRegexSearch|}}}|\|\\}}") | ||
AND ("{{{taggedTextRegexSearch|}}}" = "" OR CR.TaggedGameText RLIKE "{{{taggedTextRegexSearch|}}}") | |||
AND ("{{{culture|}}}" = "" OR "{{{culture|}}}" LIKE CONCAT('%', C.Culture, '%')) | AND ("{{{culture|}}}" = "" OR "{{{culture|}}}" LIKE CONCAT('%', C.Culture, '%')) | ||
Line 32: | Line 32: | ||
AND ("{{{usesItemClass|}}}" = "" OR CR.GameText RLIKE "({{#replace:{{#replace:{{#replace:{{#replace:{{{usesItemClass|}}}|,|{{!}}}}||}}|RangedWeapon|Ranged Weapon}}|HandWeapon|Hand Weapon}})" ) | AND ("{{{usesItemClass|}}}" = "" OR CR.GameText RLIKE "({{#replace:{{#replace:{{#replace:{{#replace:{{{usesItemClass|}}}|,|{{!}}}}||}}|RangedWeapon|Ranged Weapon}}|HandWeapon|Hand Weapon}})" ) | ||
AND ("{{{ | AND ("{{{eventPhase|}}}" = "" OR (C.CardType IN ('Event') AND ("{{{eventPhase|}}}" LIKE CONCAT('%', CR.Subtypes__full, '%') OR CR.GameText RLIKE "({{#replace:{{#replace:{{{eventPhase|}}}:|,|:{{!}}}}||}})"))) | ||
AND ("{{{keyword|}}}" = "" OR CR.GameText RLIKE '(?<!\\w )({{#replace:{{#replace:{{#replace:{{#replace:{{{keyword|}}}|,|{{!}}}}||}}|+|XX \\+}}|XX|}})\\.' OR ("{{{keyword|}}}" LIKE '%Ring-bound%' AND (C.Title IN ('Frodo', 'Sam') OR CR.CanBearRing = 1)) OR ("{{{keyword|}}}" LIKE '%Unbound%' AND (C.CardType = 'Companion' AND C.Title NOT IN ('Frodo', 'Sam') AND CR.GameText NOT RLIKE '(?<!\\w )Ring-bound\\.')) OR ("{{{keyword|}}}" LIKE '%Ambush%' AND CR.GameText RLIKE '(?<!\\w )Ambush \\(\\d+\\) | AND ("{{{hasPhaseAction|}}}" = "" OR (C.CardType NOT IN ('Event') AND CR.GameText RLIKE "({{#replace:{{#replace:{{{hasPhaseAction|}}}:|,|:{{!}}}}||}})")) | ||
AND ("{{{keyword|}}}" = "" OR CR.GameText RLIKE '(?<!\\w )({{#replace:{{#replace:{{#replace:{{#replace:{{{keyword|}}}|,|{{!}}}}||}}|+|XX \\+}}|XX|}})\\.' OR ("{{{keyword|}}}" LIKE '%Ring-bound%' AND (C.Title IN ('Frodo', 'Sam') OR CR.CanBearRing = 1)) OR ("{{{keyword|}}}" LIKE '%Unbound%' AND (C.CardType = 'Companion' AND C.Title NOT IN ('Frodo', 'Sam') AND CR.GameText NOT RLIKE '(?<!\\w )Ring-bound\\.')) OR ("{{{keyword|}}}" LIKE '%Ambush%' AND CR.GameText RLIKE '(?<!\\w )Ambush \\(\\d+\\)\\.') ) | |||
AND ("{{{usesKeyword|}}}" = "" OR (CR.GameText RLIKE '(?<=\\w )({{#replace:{{#replace:{{{usesKeyword|}}}|,|{{!}}}}||}})' AND (1 = CASE WHEN "{{{usesKeyword|}}}" LIKE '%Archer%' AND CR.GameText LIKE '%Archer%' THEN CR.GameText RLIKE '(?<=\\w )archer\\b' ELSE 1 END )) ) | AND ("{{{usesKeyword|}}}" = "" OR (CR.GameText RLIKE '(?<=\\w )({{#replace:{{#replace:{{{usesKeyword|}}}|,|{{!}}}}||}})' AND (1 = CASE WHEN "{{{usesKeyword|}}}" LIKE '%Archer%' AND CR.GameText LIKE '%Archer%' THEN CR.GameText RLIKE '(?<=\\w )archer\\b' ELSE 1 END )) ) | ||
Line 44: | Line 46: | ||
AND ("{{{strength|}}}" = "" OR CASE WHEN "{{{strength|}}}" RLIKE '(\\+{{!}}-)\\d+' THEN CR.StrengthMod = "{{{strength|}}}" ELSE CR.Strength = "{{{strength|}}}" END) | AND ("{{{strength|}}}" = "" OR CASE WHEN "{{{strength|}}}" RLIKE '(\\+{{!}}-)\\d+' THEN CR.StrengthMod = "{{{strength|}}}" ELSE CR.Strength = "{{{strength|}}}" END) | ||
AND ("{{{strengthMore|}}}" = "" OR CASE WHEN "{{{strengthMore|}}}" RLIKE '(\\+{{!}}-)\\d+' THEN CAST(CR.StrengthMod AS INT) >= CAST("{{{strengthMore|}}}" AS INT) ELSE CR.Strength >= "{{{strengthMore|}}}" END) | AND ("{{{strengthMore|}}}" = "" OR CASE WHEN "{{{strengthMore|}}}" RLIKE '(\\+{{!}}-)\\d+' THEN CAST(CR.StrengthMod AS INT) >= CAST("{{{strengthMore|}}}" AS INT) ELSE CR.Strength >= "{{{strengthMore|}}}" END) | ||
AND ("{{{strengthLess|}}}" = "" OR CASE WHEN "{{{strengthLess|}}}" RLIKE '(\\+{{!}}-)\\d+' THEN CAST(CR.StrengthMod AS INT) <= CAST("{{{strengthLess|}}}" AS INT) ELSE CR.Strength | AND ("{{{strengthLess|}}}" = "" OR CASE WHEN "{{{strengthLess|}}}" RLIKE '(\\+{{!}}-)\\d+' THEN CAST(CR.StrengthMod AS INT) <= CAST("{{{strengthLess|}}}" AS INT) ELSE CR.Strength >= "{{{strengthLess|}}}" END) | ||
AND ("{{{vitality|}}}" = "" OR CASE WHEN "{{{vitality|}}}" RLIKE '(\\+{{!}}-)\\d+' THEN CR.VitalityMod = "{{{vitality|}}}" ELSE CR.Vitality = "{{{vitality|}}}" END) | AND ("{{{vitality|}}}" = "" OR CASE WHEN "{{{vitality|}}}" RLIKE '(\\+{{!}}-)\\d+' THEN CR.VitalityMod = "{{{vitality|}}}" ELSE CR.Vitality = "{{{vitality|}}}" END) | ||
Line 60: | Line 62: | ||
AND ("{{{signet|}}}" = "" OR CR.Signet = "{{{signet|}}}") | AND ("{{{signet|}}}" = "" OR CR.Signet = "{{{signet|}}}") | ||
AND ("{{{block|}}}" = "" OR (C.CardType = 'Site' AND CR.Block = "{{{block|}}}")) | |||
AND ("{{{sitesitenum|}}}" = "" OR (C.CardType = 'Site' AND CR.SiteNum = "{{{sitesitenum|}}}")) | AND ("{{{sitesitenum|}}}" = "" OR (C.CardType = 'Site' AND CR.SiteNum = "{{{sitesitenum|}}}")) | ||
AND ("{{{sitesitenumMore|}}}" = "" OR (C.CardType = 'Site' AND CR.SiteNum >= "{{{sitesitenumMore|}}}")) | AND ("{{{sitesitenumMore|}}}" = "" OR (C.CardType = 'Site' AND CR.SiteNum >= "{{{sitesitenumMore|}}}")) | ||
Line 68: | Line 71: | ||
AND ("{{{shadownumLess|}}}" = "" OR (C.CardType = 'Site' AND IFNULL(CR.ShadowNum, CR.TwilightCost) <= "{{{shadownumLess|}}}")) | AND ("{{{shadownumLess|}}}" = "" OR (C.CardType = 'Site' AND IFNULL(CR.ShadowNum, CR.TwilightCost) <= "{{{shadownumLess|}}}")) | ||
AND ("{{{isSanctuary|any}}}" = " | AND ("{{{isSanctuary|any}}}" = "" OR CASE WHEN {{Boolean|{{{isSanctuary|any}}}}} = 1 THEN CR.GameText RLIKE '(?<!\\w )Sanctuary\\.' ELSE CR.GameText NOT RLIKE '(?<!\\w )Sanctuary\\.' END) | ||
AND ("{{{arrowDir|Any}}}" = " | AND ("{{{arrowDir|Any}}}" = "Any" OR CR.ArrowDir = "{{{arrowDir|Any}}}") | ||
AND (CASE WHEN {{Boolean|{{{isFoil|no}}}}} = 0 THEN CR.Subset NOT IN ('F', 'A', 'O') ELSE CR.Subset IN ('F', 'A', 'O') END) | AND (CASE WHEN {{Boolean|{{{isFoil|no}}}}} = 0 THEN CR.Subset NOT IN ('F', 'A', 'O') ELSE CR.Subset IN ('F', 'A', 'O') END) | ||
Line 79: | Line 82: | ||
AND ("{{{advancedOptions|}}}" = "" OR | AND ("{{{advancedOptions|}}}" = "" OR | ||
("{{{advancedOptions|}}}" RLIKE '(Burdens:{{!}}Auto-corruption)' AND CR.GameText RLIKE ' | ("{{{advancedOptions|}}}" RLIKE '(Burdens:{{!}}Auto-corruption)' AND CR.GameText RLIKE 'is corrupted') OR | ||
("{{{advancedOptions|}}}" RLIKE '(Burdens:{{!}}Add Burdens)' AND CR.GameText RLIKE 'add (up to )?(a{{!}}X{{!}}\\d) burden') OR | ("{{{advancedOptions|}}}" RLIKE '(Burdens:{{!}}Add Burdens)' AND CR.GameText RLIKE 'add (up to )?(a{{!}}X{{!}}\\d) burden') OR | ||
("{{{advancedOptions|}}}" RLIKE '(Burdens:{{!}}Prevent Burden Removal)' AND CR.GameText RLIKE '(burden[^\\.]*(can{{!}}may) ?not (be )?remove{{!}}about to remove[^\\.]*burdens?,)') OR | ("{{{advancedOptions|}}}" RLIKE '(Burdens:{{!}}Prevent Burden Removal)' AND CR.GameText RLIKE '(burden[^\\.]*(can{{!}}may) ?not (be )?remove{{!}}about to remove[^\\.]*burdens?,)') OR | ||
Line 95: | Line 98: | ||
("{{{advancedOptions|}}}" RLIKE '(Stats:{{!}}Modify Site Number:{{!}}Remove Site Number)' AND CR.GameText RLIKE 'site number (of [^\\d\\.\\+-]* )?-') OR | ("{{{advancedOptions|}}}" RLIKE '(Stats:{{!}}Modify Site Number:{{!}}Remove Site Number)' AND CR.GameText RLIKE 'site number (of [^\\d\\.\\+-]* )?-') OR | ||
("{{{advancedOptions|}}}" LIKE '%Ally Removal%' AND | ("{{{advancedOptions|}}}" LIKE '%Ally Removal%' AND CR.GameText RLIKE 'discard (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each) (\\[\\w+\\] )?(\\w+ or )?ally') OR | ||
("{{{advancedOptions|}}}" LIKE '%Companion Removal%' AND CR.GameText RLIKE 'discard (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each) (\\[\\w+\\] )?(\\w+ or )?companion(?! from hand)') OR | ("{{{advancedOptions|}}}" LIKE '%Companion Removal%' AND CR.GameText RLIKE 'discard (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each) (\\[\\w+\\] )?(\\w+ or )?companion(?! from hand)') OR | ||
("{{{advancedOptions|}}}" LIKE '%Minion Removal%' AND CR.GameText RLIKE 'discard (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each) (\\[\\w+\\] )?(\\w+ or )?minion') OR | ("{{{advancedOptions|}}}" LIKE '%Minion Removal%' AND CR.GameText RLIKE 'discard (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each) (\\[\\w+\\] )?(\\w+ or )?minion') OR | ||
("{{{advancedOptions|}}}" LIKE '%Follower Removal%' AND | ("{{{advancedOptions|}}}" LIKE '%Follower Removal%' AND CR.GameText RLIKE 'discard (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each) (\\[\\w+\\] )?(\\w+ or )?follower') OR | ||
("{{{advancedOptions|}}}" LIKE '%Condition Removal%' AND | ("{{{advancedOptions|}}}" LIKE '%Condition Removal%' AND CR.GameText RLIKE 'discard (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each) (Free Peoples {{!}}Shadow )?(\\[\\w+\\] )?(\\w+ or (Free Peoples {{!}}Shadow )?)?condition') OR | ||
("{{{advancedOptions|}}}" LIKE '%Possession Removal%' AND | ("{{{advancedOptions|}}}" LIKE '%Possession Removal%' AND CR.GameText RLIKE 'discard (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each) (Free Peoples {{!}}Shadow )?(\\[\\w+\\] )?(\\w+ or (Free Peoples {{!}}Shadow )?)?possession') OR | ||
("{{{advancedOptions|}}}" LIKE '%Artifact Removal%' AND | ("{{{advancedOptions|}}}" LIKE '%Artifact Removal%' AND CR.GameText RLIKE 'discard (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each) (Free Peoples {{!}}Shadow )?(\\[\\w+\\] )?(\\w+ or (Free Peoples {{!}}Shadow )?)?artifact') OR | ||
("{{{advancedOptions|}}}" RLIKE '(Cycling:{{!}}Draw Cards)' AND (CR.GameText RLIKE 'draw (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each) card' AND CR.GameText NOT RLIKE 'opponent shuffle[^\\.]*draw deck and draw' AND CR.GameText NOT RLIKE '(Free Peoples {{!}}Shadow )?player (must {{!}}may )?draw' OR CR.GameText RLIKE 'muster')) OR | ("{{{advancedOptions|}}}" RLIKE '(Cycling:{{!}}Draw Cards)' AND (CR.GameText RLIKE 'draw (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each) card' AND CR.GameText NOT RLIKE 'opponent shuffle[^\\.]*draw deck and draw' AND CR.GameText NOT RLIKE '(Free Peoples {{!}}Shadow )?player (must {{!}}may )?draw' OR CR.GameText RLIKE 'muster')) OR | ||
("{{{advancedOptions|}}}" RLIKE '(Cycling:{{!}}Recover Cards Into Hand)' AND CR.GameText RLIKE 'take [^\\.]*into hand') OR | ("{{{advancedOptions|}}}" RLIKE '(Cycling:{{!}}Recover Cards Into Hand)' AND CR.GameText RLIKE 'take [^\\.]*into hand') OR | ||
("{{{advancedOptions|}}}" RLIKE '(Cycling:{{!}}Discard From Your Hand)' AND (CR.GameText RLIKE 'discard | ("{{{advancedOptions|}}}" RLIKE '(Cycling:{{!}}Discard From Your Hand)' AND (CR.GameText RLIKE 'discard (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each) cards? from hand' AND CR.GameText NOT RLIKE '(opponent must discard{{!}}(Free Peoples {{!}}Shadow )?player[^\\.]*must [^\\.]* discard)' OR CR.GameText RLIKE 'muster')) OR | ||
("{{{advancedOptions|}}}" RLIKE '(Recursion:{{!}}Take Cards Into Hand From Discard)' AND CR.GameText RLIKE 'take [^\\.]*into hand from[^\\.]*discard') OR | ("{{{advancedOptions|}}}" RLIKE '(Recursion:{{!}}Take Cards Into Hand From Discard)' AND CR.GameText RLIKE 'take [^\\.]*into hand from[^\\.]*discard') OR | ||
Line 148: | Line 151: | ||
("{{{advancedOptions|}}}" RLIKE '(Initiative:{{!}}Initiative Bonus)' AND CR.GameText RLIKE '((while{{!}}if) (you{{!}}shadow) (have{{!}}has) initiative)') OR | ("{{{advancedOptions|}}}" RLIKE '(Initiative:{{!}}Initiative Bonus)' AND CR.GameText RLIKE '((while{{!}}if) (you{{!}}shadow) (have{{!}}has) initiative)') OR | ||
("{{{advancedOptions|}}}" RLIKE '(Initiative:{{!}}Shadow Initiative Manipulation)' AND CR.GameText RLIKE '((?<!if )(?<!if the )shadow (player )?has initiative{{!}}to have initiative)') OR | ("{{{advancedOptions|}}}" RLIKE '(Initiative:{{!}}Shadow Initiative Manipulation)' AND CR.GameText RLIKE '((?<!if )(?<!if the)shadow (player )?has initiative{{!}}to have initiative)') OR | ||
("{{{advancedOptions|}}}" RLIKE '(Initiative:{{!}}Freeps Initiative Loss Bonus)' AND C.Side = 'Free Peoples' AND CR.GameText RLIKE '(you lose initiative{{!}}shadow has initiative)') OR | ("{{{advancedOptions|}}}" RLIKE '(Initiative:{{!}}Freeps Initiative Loss Bonus)' AND C.Side = 'Free Peoples' AND CR.GameText RLIKE '(you lose initiative{{!}}shadow has initiative)') OR | ||
Line 156: | Line 159: | ||
("{{{advancedOptions|}}}" RLIKE '(Card Manipulation:{{!}}Place On Bottom Of Deck)' AND CR.GameText RLIKE "((on the bottom of{{!}}beneath) (your{{!}}its owners{{!}}(your{{!}}an) opponent's{{!}}his or her{{!}}their) draw deck)") OR | ("{{{advancedOptions|}}}" RLIKE '(Card Manipulation:{{!}}Place On Bottom Of Deck)' AND CR.GameText RLIKE "((on the bottom of{{!}}beneath) (your{{!}}its owners{{!}}(your{{!}}an) opponent's{{!}}his or her{{!}}their) draw deck)") OR | ||
("{{{advancedOptions|}}}" RLIKE '(Card Manipulation:{{!}}Shuffle Into Deck)' AND CR.GameText RLIKE "shuffle (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each)[^\\.]* into (your{{!}}its owners{{!}}(your{{!}}an) opponent's{{!}}his or her{{!}}their) draw deck") OR | ("{{{advancedOptions|}}}" RLIKE '(Card Manipulation:{{!}}Shuffle Into Deck)' AND CR.GameText RLIKE "shuffle (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each)[^\\.]* into (your{{!}}its owners{{!}}(your{{!}}an) opponent's{{!}}his or her{{!}}their) draw deck") OR | ||
("{{{advancedOptions|}}}" RLIKE '(Card Manipulation:{{!}}Discard From Your Deck)' AND CR.GameText RLIKE " | ("{{{advancedOptions|}}}" RLIKE '(Card Manipulation:{{!}}Discard From Your Deck)' AND CR.GameText RLIKE "discard (up to )?(the{{!}}an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each)[^\\.]* (from{{!}}of) (the top of )?your draw deck") OR | ||
("{{{advancedOptions|}}}" RLIKE '(Card Manipulation:{{!}}Discard From Opponent''s Deck)' AND CR.GameText RLIKE " | ("{{{advancedOptions|}}}" RLIKE '(Card Manipulation:{{!}}Discard From Opponent''s Deck)' AND CR.GameText RLIKE "discard (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each)[^\\.]* from (its owners{{!}}(your{{!}}an) opponent's{{!}}his or her{{!}}their) draw deck") OR | ||
("{{{advancedOptions|}}}" RLIKE '(Card Manipulation:{{!}}Discard From Opponent''s Hand)' AND CR.GameText RLIKE "( | ("{{{advancedOptions|}}}" RLIKE '(Card Manipulation:{{!}}Discard From Opponent''s Hand)' AND CR.GameText RLIKE "(make (an opponent{{!}}the shadow player) )?discard (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each)[^\\.]* from (its owners{{!}}(your{{!}}an) opponent's{{!}}his or her{{!}}their)? ?hand") OR | ||
("{{{advancedOptions|}}}" RLIKE '(Card Manipulation:{{!}}Reveal Opponent''s Hand)' AND CR.GameText RLIKE "(reveal (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each)[^\\.]* from (its owners{{!}}(your{{!}}an) opponent's | ("{{{advancedOptions|}}}" RLIKE '(Card Manipulation:{{!}}Reveal Opponent''s Hand)' AND CR.GameText RLIKE "(reveal (up to )?(an?{{!}}X{{!}}\\d{{!}}all{{!}}every{{!}}each)[^\\.]* from (its owners{{!}}(your{{!}}an) opponent's{{!}}his or her{{!}}their) hand{{!}}reveal (your{{!}}an) opponent's hand)") OR | ||