diff --git a/AI/CombatDummy.php b/AI/CombatDummy.php index f07905529..2405615fa 100644 --- a/AI/CombatDummy.php +++ b/AI/CombatDummy.php @@ -25,7 +25,7 @@ function CombatDummyAI() for($i=0; $iid = 23; $response->cardBacks[] = $cardBack; $cardBack = new stdClass(); +$cardBack->name = "Galactic Gonks"; +$cardBack->id = 24; +$response->cardBacks[] = $cardBack; +$cardBack = new stdClass(); +$cardBack->name = "Fallen Order"; +$cardBack->id = 25; +$response->cardBacks[] = $cardBack; +$cardBack = new stdClass(); +$cardBack->name = "Mythic Force"; +$cardBack->id = 26; +$response->cardBacks[] = $cardBack; +$cardBack = new stdClass(); +$cardBack->name = "MoG TCG"; +$cardBack->id = 27; +$response->cardBacks[] = $cardBack; +$cardBack = new stdClass(); $response->playmats = []; if(IsUserLoggedIn()) { diff --git a/AllyAbilities.php b/AllyAbilities.php index f7546527c..3bb1fe118 100644 --- a/AllyAbilities.php +++ b/AllyAbilities.php @@ -519,6 +519,11 @@ function AllyTakeControl($player, $uniqueID) { $otherPlayer = $player == 1 ? 2 : 1; $ally = new Ally($uniqueID, $otherPlayer); if (!$ally->Exists()) return -1; + if($ally->IsLeader()) { + $ally->Destroy(); + return $uniqueID; + } + $allyIndex = $ally->Index(); $allyController = $ally->Controller(); @@ -591,8 +596,8 @@ function AllyEntersPlayState($cardID, $player, $from="-") } function AllyPlayableExhausted(Ally $ally) { - global $CS_LeaderUpgradeAbilityID1, $CS_NumUsesLeaderUpgrade1; - //global $CS_LeaderUpgradeAbilityID2, $CS_NumUsesLeaderUpgrade2;//Twin Suns prep + $playable = false; + $cardID = $ally->CardID(); switch($cardID) { case "5630404651"://MagnaGuard Wing Leader @@ -606,62 +611,83 @@ function AllyPlayableExhausted(Ally $ally) { return true; default: break; } - - $leaderUpgradeAbilityID = GetClassState($ally->Controller(), $CS_LeaderUpgradeAbilityID1); - $numUsesLeaderUpgradeUses = GetClassState($ally->Controller(), $CS_NumUsesLeaderUpgrade1); - switch($leaderUpgradeAbilityID) { - case "3eb545eb4b"://Poe Dameron JTL leader upgrade - return $ally->HasUpgrade("3eb545eb4b") && $numUsesLeaderUpgradeUses > 0; - default: break; + if($ally->IsUpgraded()) { + $playable = $playable || CheckForUpgradesPlayableExhausted($ally); } - return false; + return $playable; } -function TheirAllyPlayableExhausted($ally) { +function TheirAllyPlayableExhausted(Ally $ally) { + $playable = false; + $cardID = $ally->CardID(); switch($cardID) { case "3577961001"://Mercenary Gunship return true; - default: return false; + default: break; + } + if($ally->IsUpgraded()) { + $playable = $playable || CheckForUpgradesPlayableExhausted($ally); + } + + return $playable; +} + +function CheckForUpgradesPlayableExhausted(Ally $ally, $theirCard=false) { + global $currentPlayer, $CS_NumUsesLeaderUpgrade1, $CS_NumUsesLeaderUpgrade2; + $otherPlayer = $currentPlayer == 1 ? 2 : 1; + $playableBy = $theirCard ? $otherPlayer : $currentPlayer; + if($ally->IsUpgraded()) { + $upgrades = $ally->GetUpgrades(withMetadata:true); + for($i=0; $i 0; + break; + default: break; + } + } } + + return false; } -function AllyDoesAbilityExhaust($cardID, $abilityIndex) { - global $currentPlayer, $CS_LeaderUpgradeAbilityID1, $CS_LeaderUpgradeAbilityID2; +function AllyDoesAbilityExhaust($cardID) { + global $currentPlayer; + $abilityName = GetResolvedAbilityName($cardID); + if($abilityName == "Poe Pilot") return false; switch($cardID) { case "5630404651"://MagnaGuard Wing Leader - return $abilityIndex == 1; + return $abilityName != "Droid Attack"; case "4300219753"://Fett's Firespray - return $abilityIndex == 1; + return $abilityName != "Exhaust"; case "2471223947"://Frontline Shuttle - return $abilityIndex == 1; + return $abilityName != "Shuttle"; case "1885628519"://Crosshair - return $abilityIndex == 1 || $abilityIndex == 2; + return $abilityName != "Buff"; case "040a3e81f3"://Lando Leader Unit - return $abilityIndex == 1; + return $abilityName != "Smuggle"; case "2b13cefced"://Fennec Shand Leader Unit - return $abilityIndex == 1; + return $abilityName != "Ambush"; case "a742dea1f1"://Han Solo Red Leader Unit - return $abilityIndex == 1; - default: break; - } - $leaderUpgradeAbilityID = GetClassState($currentPlayer, $CS_LeaderUpgradeAbilityID1); - switch($leaderUpgradeAbilityID) { - case "3eb545eb4b"://Poe Dameron JTL leader upgrade - return $abilityIndex == 0; + return $abilityName != "Play"; default: break; } return true; } -function TheirAllyDoesAbilityExhaust($cardID, $abilityIndex) { +function TheirAllyDoesAbilityExhaust($cardID) { + $abilityName = GetResolvedAbilityName($cardID); + if($abilityName == "Poe Pilot") return false; switch($cardID) { case "3577961001"://Mercenary Gunship - return false; + return $abilityName != "Take Control"; default: return true; } + + } function AllyHealth($cardID, $playerID="") @@ -679,26 +705,28 @@ function AllyHealth($cardID, $playerID="") function AllyLeavesPlayAbility($player, $index) { - $allies = &GetAllies($player); - $cardID = $allies[$index]; - $uniqueID = $allies[$index + 5]; - $fromEpicAction = $allies[$index + 16]; - $leaderUndeployed = LeaderUndeployed($cardID); + global $CS_CachedLeader1EpicAction, $CS_CachedLeader2EpicAction; + $cachedEpicAction1 = GetClassState($player, $CS_CachedLeader1EpicAction) == 1; + $ally = new Ally("MYALLY-" . $index, $player); + $leaderUndeployed = LeaderUndeployed($ally->CardID()); if($leaderUndeployed != "") { - AddCharacter($leaderUndeployed, $player, counters:$fromEpicAction ? 1 : 0, status:1); + $usedEpicAction = $ally->FromEpicAction() || $cachedEpicAction1; + AddCharacter($leaderUndeployed, $ally->Owner(), counters:$usedEpicAction ? 1 : 0, status:1); } //Pilot leader upgrades - $subcardsArr = explode(",", $allies[$index + 4]); + $subcardsArr = $ally->GetSubcards(); for($i=0;$iCardID())) { + $leaderUndeployed = LeaderUndeployed($subcard->CardID()); if($leaderUndeployed != "") { - AddCharacter($leaderUndeployed, $player, counters:$subcardsArr[$i+4] == 1 ? 1 : 0, status:1); + $usedEpicAction = $subcard->FromEpicAction() || $cachedEpicAction1; + AddCharacter($leaderUndeployed, $subcard->Owner(), counters:$usedEpicAction ? 1 : 0, status:1); } } } - switch($cardID) + switch($ally->CardID()) { case "3401690666"://Relentless $otherPlayer = ($player == 1 ? 2 : 1); @@ -709,11 +737,11 @@ function AllyLeavesPlayAbility($player, $index) break; case "7964782056"://Qi'Ra unit $otherPlayer = $player == 1 ? 2 : 1; - SearchLimitedCurrentTurnEffects("7964782056", $otherPlayer, uniqueID:$uniqueID, remove:true); + SearchLimitedCurrentTurnEffects("7964782056", $otherPlayer, uniqueID:$ally->UniqueID(), remove:true); break; case "3503494534"://Regional Governor $otherPlayer = $player == 1 ? 2 : 1; - SearchLimitedCurrentTurnEffects("3503494534", $otherPlayer, uniqueID:$uniqueID, remove:true); + SearchLimitedCurrentTurnEffects("3503494534", $otherPlayer, uniqueID:$ally->UniqueID(), remove:true); break; case "4002861992"://DJ (Blatant Thief) $djAlly = new Ally("MYALLY-" . $index, $player); @@ -2590,6 +2618,7 @@ function SpecificAllyAttackAbilities($attackID) $card = Mill($mainPlayer, 1); if(CardCostIsOdd($card)) { AddDecisionQueue("MULTIZONEINDICES", $mainPlayer, "MYALLY"); + AddDecisionQueue("MZFILTER", $mainPlayer, "index=" . $attackerAlly->MZIndex()); AddDecisionQueue("SETDQCONTEXT", $mainPlayer, "Choose a unit to give an experience"); AddDecisionQueue("CHOOSEMULTIZONE", $mainPlayer, "<-", 1); AddDecisionQueue("MZOP", $mainPlayer, "ADDEXPERIENCE", 1); @@ -2645,9 +2674,7 @@ function SpecificAllyAttackAbilities($attackID) AddDecisionQueue("SETDQCONTEXT", $mainPlayer, "Choose a unit to deal 1 damage to"); AddDecisionQueue("MAYCHOOSEMULTIZONE", $mainPlayer, "<-", 1); AddDecisionQueue("MZOP", $mainPlayer, "DEALDAMAGE,1,$mainPlayer,1", 1); - AddDecisionQueue("MULTIZONEINDICES", $mainPlayer, "MYCHAR:definedType=Base&THEIRCHAR:definedType=Base"); - AddDecisionQueue("SETDQCONTEXT", $mainPlayer, "Choose a base to deal 1 damage to", 1); - AddDecisionQueue("CHOOSEMULTIZONE", $mainPlayer, "<-", 1); + AddDecisionQueue("PASSPARAMETER", $mainPlayer, "THEIRCHAR-0", 1); AddDecisionQueue("MZOP", $mainPlayer, "DEALDAMAGE,1,$mainPlayer,1", 1); } break; @@ -2665,7 +2692,8 @@ function SpecificAllyAttackAbilities($attackID) AddDecisionQueue("MZOP", $mainPlayer, "ADDEXPERIENCE", 1); } if(SearchCount(SearchAllies($mainPlayer, aspect:"Aggression")) > 0) { - AddDecisionQueue("MULTIZONEINDICES", $mainPlayer, "MYALLY&THEIRALLY&MYCHAR:definedType=Base&THEIRCHAR:definedType=Base"); + AddDecisionQueue("MULTIZONEINDICES", $mainPlayer, "MYALLY&THEIRALLY"); + AddDecisionQueue("PREPENDLASTRESULT", $mainPlayer, "THEIRCHAR-0,", 1); AddDecisionQueue("SETDQCONTEXT", $mainPlayer, "Choose a card to deal 1 damage to"); AddDecisionQueue("CHOOSEMULTIZONE", $mainPlayer, "<-", 1); AddDecisionQueue("MZOP", $mainPlayer, DamageStringBuilder(1, $mainPlayer, 1), 1); diff --git a/CardDictionary.php b/CardDictionary.php index 50fdfb52b..3e73e5a32 100644 --- a/CardDictionary.php +++ b/CardDictionary.php @@ -883,10 +883,10 @@ function HasSaboteur($cardID, $player, $index) // return $cost; // } -function AbilityCost($cardID, $index=-1, $theirCard = false) +function AbilityCost($cardID) { global $currentPlayer; - $abilityName = $theirCard ? GetOpponentControlledAbilityNames($cardID) : GetResolvedAbilityName($cardID); + $abilityName = GetResolvedAbilityName($cardID); if($abilityName == "Heroic Resolve") return 2; if($abilityName == "Poe Pilot") return 1; switch($cardID) { @@ -1401,7 +1401,9 @@ function CheckSORAbilityNames($cardID, $index, $validate) { case "8117080217"://Admiral Ozzel return "Play Imperial Unit,Attack"; case "2471223947"://Frontline Shuttle - return "Shuttle,Attack"; + $ally = new Ally("MYALLY-" . $index, $currentPlayer); + if($validate) return $ally->IsExhausted() ? "Shuttle" : "Shuttle,Attack"; + else return "Shuttle,Attack"; case "1951911851"://Grand Admiral Thrawn return LeaderAbilitiesIgnored() ? "" : "Exhaust"; @@ -1422,7 +1424,9 @@ function CheckSHDAbilityNames($cardID, $index, $validate) { case "1090660242"://The Client return "Bounty,Attack"; case "1885628519"://Crosshair - return "Buff,Snipe,Attack"; + $ally = new Ally("MYALLY-" . $index, $currentPlayer); + if($validate) return $ally->IsExhausted() ? "Buff" : "Buff,Snipe,Attack"; + else return "Buff,Snipe,Attack"; case "2503039837"://Moff Gideon return LeaderAbilitiesIgnored() ? "" : "Attack"; case "2526288781"://Bossk @@ -1578,6 +1582,8 @@ function CheckJTLAbilityNames($cardID) { } function GetOpponentControlledAbilityNames($cardID) { + global $currentPlayer, $CS_NumUsesLeaderUpgrade1; + $otherPlayer = ($currentPlayer == 1 ? 2 : 1); $abilityNames = ""; switch($cardID) { @@ -1587,13 +1593,34 @@ function GetOpponentControlledAbilityNames($cardID) { default: break; } + $theirAlliesWithCardID = explode(",", SearchAlliesForCard($otherPlayer, $cardID)); + for($i=0; $iIsUpgraded()) { + $upgrades = $ally->GetUpgrades(withMetadata:true); + for($j=0; $j 0) { + if($abilityNames != "") $abilityNames .= ","; + $abilityNames .= "Poe Pilot"; + } + break; + default: break; + } + } + } + } + return $abilityNames; } function GetAbilityIndex($cardID, $index, $abilityName, $theirCard = false) { $abilityName = str_replace("_", " ", $abilityName); - $names = explode(",", GetAbilityNames($cardID, $index)); + $names = $theirCard + ? explode(",", GetOpponentControlledAbilityNames($cardID)) + : explode(",", GetAbilityNames($cardID, $index)); for($i = 0; $i < count($names); ++$i) { if($abilityName == $names[$i]) return $i; } @@ -1615,10 +1642,11 @@ function GetResolvedAbilityType($cardID, $from="-", $theirCard = false) function GetResolvedAbilityName($cardID, $from="-") { - global $currentPlayer, $CS_AbilityIndex, $CS_PlayIndex; + global $currentPlayer, $CS_AbilityIndex, $CS_PlayIndex, $CS_OppCardActive; + $theirCard = GetClassState($currentPlayer, $CS_OppCardActive) == 1; if($from != "PLAY" && $from != "EQUIP" && $from != "-") return ""; $abilityIndex = GetClassState($currentPlayer, $CS_AbilityIndex); - $abilityNames = GetAbilityNames($cardID, GetClassState($currentPlayer, $CS_PlayIndex)); + $abilityNames = $theirCard ? GetOpponentControlledAbilityNames($cardID) : GetAbilityNames($cardID, GetClassState($currentPlayer, $CS_PlayIndex)); if($abilityNames == "" || $abilityIndex == "-") return ""; $abilityNames = explode(",", $abilityNames); return $abilityNames[$abilityIndex]; diff --git a/Classes/Ally.php b/Classes/Ally.php index 72cfe33af..a672ec784 100644 --- a/Classes/Ally.php +++ b/Classes/Ally.php @@ -526,13 +526,14 @@ function AddSubcard($cardID, $ownerID = null, $asPilot = false, $epicAction = fa } function RemoveSubcard($subcardID, $subcardUniqueID = "", $movingPilot = false) { - global $CS_PlayIndex; + global $CS_PlayIndex, $CS_CachedLeader1EpicAction, $CS_CachedLeader2EpicAction; if($this->index == -1) return false; $subcards = $this->GetSubcards(); for($i=0; $iCardID() == $subcardID && ($subcardUniqueID == "" || $subcards[$i+3] == $subcardUniqueID)) { + $ownerId = $subcard->Owner(); + $epicAction = $subcard->FromEpicAction(); for ($j = SubcardPieces() - 1; $j >= 0; $j--) { unset($subcards[$i+$j]); @@ -544,7 +545,8 @@ function RemoveSubcard($subcardID, $subcardUniqueID = "", $movingPilot = false) if(CardIDIsLeader($subcardID) && !$movingPilot) { $leaderUndeployed = LeaderUndeployed($subcardID); if($leaderUndeployed != "") { - AddCharacter($leaderUndeployed, $this->playerID, counters:$epicAction ? 1 : 0, status:1); + $usedEpicAction = $epicAction || (GetClassState($this->Owner(), $CS_CachedLeader1EpicAction) == 1); + AddCharacter($leaderUndeployed, $this->playerID, counters:$usedEpicAction ? 1 : 0, status:1); } } return $ownerId; @@ -849,4 +851,40 @@ function LastAllyIndex($player): int { return count($allies) - AllyPieces(); } +//SubCard class to handle interactions involving subcards +class SubCard { + // Properties + private $subcards = []; + private $index = -1; + + function __construct(Ally $ally, int $index) { + $this->subcards = $ally->GetSubcards(); + $this->index = $index; + } + + function Index() { + return $this->index; + } + + function CardID() { + return $this->subcards[$this->index]; + } + + function Owner() { + return $this->subcards[$this->index+1]; + } + + function IsPilot() { + return $this->subcards[$this->index+2] == "1"; + } + + function UniqueID() { + return $this->subcards[$this->index+3]; + } + + function FromEpicAction() { + return $this->subcards[$this->index+4] == "1"; + } +} + ?> diff --git a/Constants.php b/Constants.php index a7e6b3fbd..d3e5b09c5 100644 --- a/Constants.php +++ b/Constants.php @@ -285,8 +285,8 @@ function SubcardPieces(){ $CS_NamesOfCardsPlayed = 60; //free//string;default "-" $CS_NumFirstOrderPlayed = 61; $CS_PlayedAsInstant = 62; //If the card was played as an instant -- some things like banish we lose memory of as soon as it is removed from the zone -$CS_LeaderUpgradeAbilityID1 = 63; -$CS_LeaderUpgradeAbilityID2 = 64; +$CS_CachedLeader1EpicAction = 63; +$CS_CachedLeader2EpicAction = 64; $CS_HitsWithSword = 65; $CS_NumClonesPlayed = 66; $CS_UnitsThatAttackedBase = 67; @@ -491,7 +491,7 @@ function ResetClassState($player) global $CS_HighestRoll, $CS_NumAuras, $CS_AbilityIndex, $CS_AdditionalCosts, $CS_NumRedPlayed, $CS_PlayUniqueID, $CS_AlluvionUsed; global $CS_NumPhantasmAADestroyed, $CS_NumEventsPlayed, $CS_MaxQuellUsed, $CS_DamageDealt, $CS_ArcaneTargetsSelected, $CS_NumDragonAttacks, $CS_NumIllusionistAttacks; global $CS_LastDynCost, $CS_NumIllusionistActionCardAttacks, $CS_ArcaneDamageDealt, $CS_LayerPlayIndex, $CS_NumCardsPlayed, $CS_NamesOfCardsPlayed; - global $CS_PlayedAsInstant, $CS_LeaderUpgradeAbilityID1, $CS_LeaderUpgradeAbilityID2, $CS_HitsWithSword, $CS_NumMelodyPlayed, + global $CS_PlayedAsInstant, $CS_HitsWithSword, $CS_NumMelodyPlayed, $CS_NumClonesPlayed, $CS_UnitsThatAttackedBase, $CS_PlayedWithExploit, $CS_AlliesDestroyed, $CS_NumFirstOrderPlayed; $classState = &GetPlayerClassState($player); @@ -559,8 +559,8 @@ function ResetClassState($player) $classState[$CS_NamesOfCardsPlayed] = "-"; $classState[$CS_NumFirstOrderPlayed] = 0; $classState[$CS_PlayedAsInstant] = 0; - $classState[$CS_LeaderUpgradeAbilityID1] = "-"; - $classState[$CS_LeaderUpgradeAbilityID2] = "-"; + //$classState[$CS_CachedLeader1EpicAction];//these persist + //$classState[$CS_CachedLeader2EpicAction];//these persist $classState[$CS_HitsWithSword] = 0; $classState[$CS_NumClonesPlayed] = 0; $classState[$CS_UnitsThatAttackedBase] = "-"; diff --git a/CoreLogic.php b/CoreLogic.php index d31344a65..8b908f6af 100644 --- a/CoreLogic.php +++ b/CoreLogic.php @@ -2140,6 +2140,24 @@ function PlayerAspects($player) } } } + //check they have a leader upgrade for your aspects + $otherPlayer = $player == 1 ? 2 : 1; + $theirAllies = &GetAllies($otherPlayer); + for($i=0; $iIsUpgraded()) { + $upgrades = $ally->GetUpgrades(withMetadata:true); + for($j=0; $jUniqueID(), 1); - AddDecisionQueue("MZOP", $currentPlayer, "TAKECONTROL", 1); - AddDecisionQueue("PASSPARAMETER", $currentPlayer, -1, 1); - AddDecisionQueue("SETCLASSSTATE", $currentPlayer, $CS_OppCardActive, 1); - } + $abilityName = GetResolvedAbilityName($cardID, $from); + if($abilityName == "Take Control") { + global $CS_OppCardActive; + $oppIndex = GetClassState($currentPlayer, $CS_OppIndex); + $ally = new Ally("THEIRALLY-" . $oppIndex, $otherPlayer); + AddDecisionQueue("PASSPARAMETER", $currentPlayer, $ally->UniqueID(), 1); + AddDecisionQueue("MZOP", $currentPlayer, "TAKECONTROL", 1); + AddDecisionQueue("PASSPARAMETER", $currentPlayer, -1, 1); + AddDecisionQueue("SETCLASSSTATE", $currentPlayer, $CS_OppCardActive, 1); + } break; case "8552292852"://Kashyyyk Defender AddDecisionQueue("MULTIZONEINDICES", $currentPlayer, "MYALLY&THEIRALLY"); @@ -5856,7 +5876,7 @@ function PlayAbility($cardID, $from, $resourcesPaid, $target = "-", $additionalC AddDecisionQueue("MULTIZONEINDICES", $currentPlayer, "THEIRALLY"); AddDecisionQueue("MZFILTER", $currentPlayer, "token=0", 1); AddDecisionQueue("SETDQCONTEXT", $currentPlayer, "Choose a unit to take control of", 1); - AddDecisionQueue("MAYCHOOSEMULTIZONE", $currentPlayer, "<-", 1); + AddDecisionQueue("CHOOSEMULTIZONE", $currentPlayer, "<-", 1); AddDecisionQueue("MZOP", $currentPlayer, "READY", 1); AddDecisionQueue("MZOP", $currentPlayer, "GETUNIQUEID", 1); AddDecisionQueue("MZOP", $currentPlayer, "TAKECONTROL", 1); @@ -6128,10 +6148,7 @@ function PlayAbility($cardID, $from, $resourcesPaid, $target = "-", $additionalC break; case "3132453342"://Captain Phasma if(GetResolvedAbilityName($cardID) == "Deal Damage" && GetClassState($currentPlayer, $CS_NumFirstOrderPlayed) > 0) { - AddDecisionQueue("MULTIZONEINDICES", $currentPlayer, "MYCHAR:definedType=Base&THEIRCHAR:definedType=Base"); - AddDecisionQueue("SETDQCONTEXT", $currentPlayer, "Choose a base to deal 1 damage to", 1); - AddDecisionQueue("CHOOSEMULTIZONE", $currentPlayer, "<-", 1); - AddDecisionQueue("MZOP", $currentPlayer, "DEALDAMAGE,1,$currentPlayer,1", 1); + DealDamageAsync($otherPlayer, 2, "DAMAGE", "3132453342"); } break; case "8174214418"://Turbolaser Salvo diff --git a/GameLogic.php b/GameLogic.php index 7ce23bcf4..d4790c880 100644 --- a/GameLogic.php +++ b/GameLogic.php @@ -660,6 +660,7 @@ function DecisionQueueStaticEffect($phase, $player, $parameter, $lastResult) } $targetAlly->Attach($upgradeID, $upgradeOwnerID); + CheckHealthAllAllies(); return $lastResult; case "GETCAPTIVES": $ally = new Ally($lastResult); @@ -1650,27 +1651,25 @@ function DecisionQueueStaticEffect($phase, $player, $parameter, $lastResult) SetClassState($player, $CS_AbilityIndex, $index); if(IsAlly($parameter, $player)) { $ally = new Ally("MYALLY-" . GetClassState($player, $CS_PlayIndex), $player); - if($ally->IsUpgraded()) { - CheckForLeaderUpgradeAbilities($ally); - } - if(AllyDoesAbilityExhaust($parameter, $index)) $ally->Exhaust(); + if(AllyDoesAbilityExhaust($parameter)) $ally->Exhaust(); } $names = explode(",", GetAbilityNames($parameter, GetClassState($player, $CS_PlayIndex))); $ability = implode(" ", explode("_", $names[$index])); WriteLog("{$ability} ability was chosen."); return $lastResult; case "SETABILITYTYPEOPP"://For activating opponent's cards - global $CS_OppIndex, $CS_OppCardActive; + global $CS_OppIndex, $CS_OppCardActive, $CS_PlayIndex; $lastPlayed[2] = $lastResult; $otherPlayer = ($player == 1 ? 2 : 1); $index = GetAbilityIndex($parameter, GetClassState($player, $CS_OppIndex), $lastResult, theirCard:true); SetClassState($player, $CS_AbilityIndex, $index); - if(IsAlly($parameter, $otherPlayer) && TheirAllyDoesAbilityExhaust($parameter, $index)) { - $ally = new Ally("MYALLY-" . GetClassState($player, $CS_PlayIndex), $player);//TODO: look into how this gets called + if(IsAlly($parameter, $otherPlayer) && TheirAllyDoesAbilityExhaust($parameter)) { + $ally = new Ally("MYALLY-" . GetClassState($player, $CS_PlayIndex), $player); $ally->Exhaust(); } $names = explode(",", GetOpponentControlledAbilityNames($parameter)); - WriteLog(implode(" ", explode("_", $names[$index])) . " ability was chosen!"); + $ability = implode(" ", explode("_", $names[$index])); + WriteLog("{$ability} ability was chosen."); return $lastResult; case "MZSTARTTURNABILITY": MZStartTurnAbility($player, $lastResult); diff --git a/GeneratedCode/GeneratedCardDictionaries.js b/GeneratedCode/GeneratedCardDictionaries.js index d588170b2..db50f262f 100644 --- a/GeneratedCode/GeneratedCardDictionaries.js +++ b/GeneratedCode/GeneratedCardDictionaries.js @@ -1,5 +1,5 @@ function CardTitle(cardID) { - const data = {"2579145458":"Luke Skywalker","0dcb77795c":"Luke Skywalker","6088773439":"Darth Vader","0ca1902a46":"Darth Vader","2524528997":"Cell Block Guard","3038238423":"Fleet Lieutenant","9266336818":"Grand Moff Tarkin","9680213078":"Leia Organa","5562575456":"TIE\/ln Fighter","5494760041":"Galactic Ambition","0494601180":"Alliance X-Wing","3509161777":"You're My Only Hope","8129465864":"Administrator's Tower","8560666697":"Director Krennic","e2c6231b35":"Director Krennic","3572356139":"Chewbacca","8301e8d7ef":"Chewbacca","2855740390":"Lieutenant Childsen","4786320542":"Obi-Wan Kenobi","8615772965":"Vigilance","8679831560":"Repair","6472095064":"Vanquish","0507674993":"Command Center","6903722220":"Luke's Lightsaber","8954587682":"Superlaser Technician","2703877689":"Resupply","8117080217":"Admiral Ozzel","9002021213":"Imperial Interceptor","0705773109":"Vader's Lightsaber","9500514827":"Han Solo","8297630396":"Shoot First","6901817734":"Asteroid Sanctuary","9996676854":"Admiral Motti","9097690846":"Snowtrooper Lieutenant","8986035098":"Viper Probe Droid","1557302740":"General Veers","6072239164":"AT-ST","0523973552":"I Am Your Father","2758597010":"Maximum Firepower","9568000754":"R2-D2","9799982630":"General Dodonna","1862616109":"Snowspeeder","8752877738":"Shield","2912358777":"Grand Moff Tarkin","59cd013a2d":"Grand Moff Tarkin","6514927936":"Leia Organa","87e8807695":"Leia Organa","0827076106":"Admiral Ackbar","0073206444":"Command","3974134277":"Prepare for Takeoff","2007868442":"Experience","7911083239":"Grand Inquisitor","6827598372":"Grand Inquisitor","4841169874":"Sabine Wren","51e8757e4c":"Sabine Wren","0160548661":"Fallen Lightsaber","5907868016":"Fighters for Freedom","3736081333":"Aggression","6577517407":"Wampa","8148673131":"Open Fire","3789633661":"Cunning","0949648290":"Greedo","5346983501":"Syndicate Lackeys","8800836530":"No Good to Me Dead","2050990622":"Spark of Rebellion","4626028465":"Boba Fett","0e65f012f5":"Boba Fett","7202133736":"Waylay","5954056864":"Han Solo","5e90bd91b0":"Han Solo","1951911851":"Grand Admiral Thrawn","02199f9f1e":"Grand Admiral Thrawn","2429341052":"Security Complex","8327910265":"Energy Conversion Lab","2055904747":"Echo Base","1393827469":"Tarkintown","8659924257":"Catacombs of Cadera","2569134232":"Jedha City","6093792814":"Chopper Base","6458912354":"Death Trooper","7596515127":"Academy Defense Walker","9624333142":"Count Dooku","7485151088":"Search Your Feelings","0074718689":"Restored ARC-170","4405415770":"Yoda","5449704164":"2-1B Surgical Droid","8333567388":"Distant Patroller","9702250295":"Cloud City Wing Guard","7751685516":"System Patrol Craft","8184790799":"Consular Security Force","1662196707":"Kanan Jarrus","7622279662":"Vigilant Honor Guards","3896582249":"Redemption","4599464590":"Rugged Survivors","9059202647":"Resilient","3099663280":"Entrenched","0867878280":"It Binds All Things","4849184191":"Takedown","4566580942":"Admiral Piett","7929181061":"General Tagge","3988315236":"Seasoned Shoretrooper","1780978508":"Emperor's Royal Guard","8294130780":"Gladiator Star Destroyer","3830969722":"Blizzard Assault AT-AT","3401690666":"Relentless","4631297392":"Devastator","1900571801":"Overwhelming Barrage","6253392993":"Bright Hope","4339330745":"Wedge Antilles","4919000710":"Home One","0961039929":"Colonel Yularen","1611702639":"Consortium StarViper","3138552659":"Homestead Militia","2649829005":"Agent Kallus","7648077180":"97th Legion","3987987905":"Hardpoint Heavy Blaster","3407775126":"Recruit","2383321298":"Death Star Stormtrooper","2651321164":"Tactical Advantage","4619930426":"First Legion Snowtrooper","9097316363":"Emperor Palpatine","1446471743":"Force Choke","7495752423":"Green Squadron A-Wing","3646264648":"Sabine Wren","5230572435":"Mace Windu","2404916657":"Cantina Braggart","6348804504":"Ardent Sympathizer","2668056720":"Disabling Fang Fighter","7517208605":"Star Wing Scout","0797226725":"Infiltrator's Skill","7262314209":"Mission Briefing","5154172446":"ISB Agent","4156799805":"Boba Fett","9950828238":"Seventh Fleet Defender","0052542605":"Bossk","4300219753":"Fett's Firespray","1880931426":"Lothal Insurgent","9560139036":"Ezra Bridger","1785627279":"Millennium Falcon","1017822723":"Rogue Operative","7285270931":"Auzituck Liberator Gunship","8918765832":"Chewbacca","9250443409":"Lando Calrissian","4299027717":"Mining Guild TIE Fighter","7280213969":"Smuggling Compartment","1626462639":"Change of Heart","3809048641":"Surprise Strike","4092697474":"TIE Advanced","8009713136":"C-3PO","0046930738":"Rebel Pathfinder","3443737404":"Wing Leader","2048866729":"Iden Versio","b0dbca5c05":"Iden Versio","4263394087":"Chirrut \u00cemwe","d1a7b76ae7":"Chirrut \u00cemwe","5784497124":"Emperor Palpatine","6c5b96c7ef":"Emperor Palpatine","7440067052":"Hera Syndulla","80df3928eb":"Hera Syndulla","8600121285":"IG-88","fb475d4ea4":"IG-88","3187874229":"Cassian Andor","3c60596a7a":"Cassian Andor","8244682354":"Jyn Erso","20f21b4948":"Jyn Erso","9133080458":"Inferno Four","9412277544":"Del Meeko","1664771721":"Gideon Hask","0176921487":"Power of the Dark Side","6931439330":"The Ghost","3503494534":"Regional Governor","3280523224":"Rukh","8506660490":"Darth Vader","9785616387":"The Emperor's Legion","3377409249":"Rogue Squadron Skirmisher","4721628683":"Patrolling V-Wing","1047592361":"Ruthless Raider","3232845719":"K-2SO","9647945674":"Zeb Orrelios","8429598559":"Black One","6954704048":"Heroic Sacrifice","5767546527":"For a Cause I Believe In","0256267292":"Benthic 'Two Tubes'","1705806419":"Force Throw","3058784025":"Keep Fighting","7728042035":"Chimaera","6208347478":"Chopper","3018017739":"Vanguard Ace","9644107128":"Bamboozle","0700214503":"Crafty Smuggler","3613174521":"Outer Rim Headhunter","6028207223":"Pirated Starfighter","9985638644":"Snapshot Reflexes","3426168686":"Sneak Attack","7366340487":"Outmaneuver","2202839291":"Don't Get Cocky","4536594859":"Medal Ceremony","7109944284":"Luke Skywalker","8995892693":"Red Three","4642322279":"Partisan Insurgent","9210902604":"Precision Fire","7257556541":"Bodhi Rook","6366665313":"Capital City","3810584393":"Dagobah Swamp","0461841375":"Kestro City","9633997311":"Scout Bike Pursuer","6663619377":"AT-AT Suppressor","8240629990":"Avenger","8495694166":"Jedi Lightsaber","5264521057":"Wilderness Fighter","9459170449":"Cargo Juggernaut","8788948272":"Devotion","8981523525":"Moment of Peace","3208391441":"Make an Opening","2756312994":"Alliance Dispatcher","4317911650":"Battlefield Marine","3498814896":"Mon Mothma","6912684909":"Echo Base Defender","1939951561":"Attack Pattern Delta","5575681343":"Vanguard Infantry","2471223947":"Frontline Shuttle","6432884726":"Steadfast Battalion","6718924441":"Mercenary Company","3463676231":"Academy Training","8055390529":"Traitorous","1349057156":"Strike True","8395007579":"Fifth Brother","0828695133":"Seventh Sister","9070397522":"SpecForce Soldier","1746195484":"Jedha Agitator","7533529264":"Wolffe","4323691274":"Power Failure","3802299538":"Cartel Spacer","5035052619":"Jabba the Hutt","3684950815":"Bounty Hunter Crew","1021495802":"Cantina Bouncer","9859536518":"Jawa Scavenger","1081012039":"Regional Sympathizers","4111616117":"Volunteer Soldier","8098293047":"Occupier Siege Tank","4550121827":"Protector","6515891401":"Karabast","1208707254":"Rallying Cry","8691800148":"Reinforcement Walker","5950125325":"Confiscate","5707383130":"Bendu","7861932582":"The Force Is With Me","9353672706":"General Krell","2027289177":"Escort Skiff","5555846790":"Saw Gerrera","2739464284":"Gamorrean Guards","5879557998":"Baze Malbus","4166047484":"Guardian of the Whills","8988732248":"Rebel Assault","7916724925":"Bombing Run","5464125379":"Strafing Gunship","6385228745":"Corellian Freighter","1353201082":"Superlaser Blast","1323728003":"Electrostaff","2554951775":"Bail Organa","8968669390":"U-Wing Reinforcement","2639435822":"Force Lightning","5335160564":"Guerilla Attack Pod","6702266551":"Smoke and Cinders","5871074103":"Forced Surrender","7870435409":"Bib Fortuna","2715652707":"I Had No Choice","9448937272":"Swoop Racer","2587711125":"Disarm","1598425314":"Underworld Thug","4685993945":"Frontier AT-RT","6087834273":"Restock","2503039837":"Moff Gideon","4484318969":"Moff Gideon","9005139831":"The Mandalorian","4088c46c4d":"The Mandalorian","4843225228":"Phase-III Dark Trooper","0302968596":"Calculated Lethality","5351496853":"Gideon's Light Cruiser","4117365450":"Wanted","0754286363":"The Mandalorian's Rifle","8142386948":"Razor Crest","6536128825":"Grogu","6585115122":"The Mandalorian","1982478444":"Vigilant Pursuit Craft","2288926269":"Privateer Crew","6847268098":"Timely Intervention","5874342508":"Hotshot DL-44 Blaster","0622803599":"Jabba the Hutt","f928681d36":"Jabba the Hutt","8709191884":"Hunter","c9ff9863d7":"Hunter","7424360283":"Bo-Katan Kryze","a579b400c0":"Bo-Katan Kryze","3488958204":"Remnant Science Facility","2403450809":"Remote Village","4006047777":"Maz Kanata's Castle","5662039114":"Nevarro City","2547571983":"Death Watch Hideout","6956298674":"Spice Mines","4313706014":"Coronet City","9617095664":"Jabba's Palace","6878039039":"Hylobon Enforcer","2969011922":"Pyke Sentinel","9336505300":"Death Trooper","4341703515":"Supercommando Squad","8228196561":"Clan Saxon Gauntlet","4783554451":"First Light","4843813137":"Brutal Traditions","0282219568":"Clan Wren Rescuer","7486516061":"Concord Dawn Interceptors","1747533523":"Village Protectors","8190373087":"Gentle Giant","9999079491":"Mystic Reflection","6911505367":"Second Chance","8818201543":"Midnight Repairs","4327133297":"Moisture Farmer","4511413808":"Follower of The Way","7291903225":"Rickety Quadjumper","5636691221":"HWK-290 Freighter","4383889628":"Wroshyr Tree Tender","6409922374":"Niima Outpost Constables","8639184906":"System Patrol Craft","1503633301":"Survivors' Gauntlet","3770196734":"Cargo Juggernaut","1780014071":"Public Enemy","7687006104":"Foundling","7277605274":"Resilient","4282425335":"Top Target","1368144544":"Imprisoned","3514010297":"Mandalorian Armor","3525325147":"Vambrace Grappleshot","8645125292":"Covert Strength","1973545191":"Unexpected Escape","6452159858":"Evidence of the Crime","3329959260":"Fell the Dragon","5303936245":"Rival's Fall","8712779685":"Outland TIE Vanguard","9462361238":"Seasoned Shoretrooper","1994773472":"Superlaser Technician","8305828130":"Warbird Stowaway","1885628519":"Crosshair","8552719712":"Pirate Battle Tank","1565760222":"Remnant Reserves","4643489029":"Palpatine's Return","9503028597":"Clone Deserter","4534554684":"Freetown Backup","5977238053":"Sundari Peacekeeper","3671559022":"Echo","1805986989":"Modded Cohort","9757839764":"Adelphi Patrol Wing","6775521270":"Inspiring Mentor","9828896088":"Spark of Hope","8080818347":"Rule with Respect","7204838421":"Enterprising Lackeys","5984647454":"Enforced Loyalty","5576996578":"Endless Legions","0336440515":"Warzone Lieutenant","5171970586":"Collections Starhopper","4590862665":"Gamorrean Retainer","0505904136":"Scanning Officer","3503780024":"Outlaw Corona","6905327595":"Reputable Hunter","4721657243":"Kihraxz Heavy Fighter","9483244696":"Weequay Pirate Gang","9765804063":"Discerning Veteran","3027902905":"Mercenary Company","1086021299":"Arquitens Assault Cruiser","9642863632":"Bounty Hunter's Quarry","8877249477":"Legal Authority","2178538979":"Price on Your Head","1141018768":"Commission","0802973415":"Outflank","1701265931":"Moment of Glory","3765912000":"Take Captive","2346145249":"Choose Sides","8031540027":"Dengar","2151430798":"Guavian Antagonizer","5557494276":"Death Watch Loyalist","1743599390":"Trandoshan Hunters","4897501399":"Ruthlessness","3012322434":"Give In to Your Anger","5896817672":"Headhunting","9195624101":"Heroic Renegade","4595532978":"Ketsu Onyo","6037778228":"Nite Owl Skirmisher","9951020952":"Koska Reeves","7922308768":"Valiant Assault Ship","1556608115":"Desperado Freighter","4085341914":"Heroic Resolve","3228620062":"Cripple Authority","9270539174":"Wild Rancor","8090818642":"The Chaos of War","9690731982":"Reckless Gunslinger","7642980906":"Stolen Landspeeder","3786602643":"House Kast Soldier","7351946067":"Rhokai Gunship","2965702252":"Unlicensed Headhunter","4395522409":"Disabling Fang Fighter","8679638018":"Wanted Insurgents","8991513192":"Hunting Nexu","3487311898":"Clan Challengers","3417125055":"IG-11","1304452249":"Covetous Rivals","4935319539":"Krayt Dragon","2740761445":"Guild Target","1938453783":"Armed to the Teeth","0807120264":"Death Mark","6471336466":"Vambrace Flamethrower","7826408293":"Daring Raid","6962053552":"Desperate Attack","8576088385":"Detention Block Rescue","4772866341":"Pillage","7212445649":"Bravado","9725921907":"Kintan Intimidator","6135081953":"Doctor Evazan","6939947927":"Hunter of the Haxion Brood","1810342362":"Lurking TIE Phantom","6853970496":"Slaver's Freighter","7718080954":"Frozen in Carbonite","5696041568":"Triple Dark Raid","9108611319":"Cartel Turncoat","9552605383":"L3-37","1386874723":"Omega","9115773123":"Coruscant Dissident","8656645362":"Liberated Slaves","9040137775":"Principled Outlaw","7578472075":"Let the Wookiee Win","5283722046":"Spare the Target","4717189843":"A New Adventure","1910812527":"Final Showdown","6475868209":"Criminal Muscle","2121724481":"Cloud-Rider","6947306017":"Fugitive Wookiee","0088477218":"Privateer Scyk","8095362491":"Frontier Trader","1312599620":"Smuggler's Starfighter","7171636330":"Chain Code Collector","2556508706":"Resourceful Pursuers","7982524453":"Fennec Shand","6420322033":"Enticing Reward","2011561919":"Snapshot Reflexes","6117103324":"Jetpack","7270736993":"Unrefusable Offer","2750823386":"Look the Other Way","6151970296":"Bounty Posting","0931441928":"Ma Klounkee","4663781580":"Swoop Down","8750826002":"Surprise Strike","5778949819":"Relentless Pursuit","8261033110":"Evacuate","4328408486":"Incinerator Trooper","3803148745":"Ruthless Assassin","6416685228":"Snowtrooper Lieutenant","0315522200":"Black Sun Starfighter","1575743055":"Cell Block Guard","6635692731":"Hutt's Henchmen","6425029011":"Altering the Deal","7354795397":"No Bargain","9472541076":"Grey Squadron Y-Wing","9405733493":"Protector of the Throne","3881257511":"Tech","1477806735":"Wookiee Warrior","0866321455":"Smuggler's Aid","9845101935":"This Is The Way","4057912610":"Bounty Guild Initiate","3577961001":"Mercenary Gunship","4088627455":"Underworld Thug","1081897816":"Mandalorian Warrior","6870437193":"Twin Pod Cloud Car","2090698177":"Street Gang Recruiter","3074091930":"Rich Reward","1630144142":"Confiscate","9794215464":"Gar Saxon","3feee05e13":"Gar Saxon","2432897157":"Qi'ra","4aa0804b2b":"Qi'ra","9596662994":"Finn","8903067778":"Finn","4352150438":"Rey","e091d2a983":"Rey","3045538805":"Hondo Ohnaka","415bde775d":"Hondo Ohnaka","9334480612":"Boba Fett","919facb76d":"Boba Fett","2526288781":"Bossk","d2bbda6982":"Bossk","1480894253":"Kylo Ren","8def61a58e":"Kylo Ren","9226435975":"Han Solo","a742dea1f1":"Han Solo","1384530409":"Cad Bane","724979d608":"Cad Bane","0254929700":"Doctor Aphra","58f9f2d4a0":"Doctor Aphra","0911874487":"Fennec Shand","2b13cefced":"Fennec Shand","5440730550":"Lando Calrissian","040a3e81f3":"Lando Calrissian","6722700037":"Doctor Pershing","1090660242":"The Client","5632569775":"Lom Pyke","0252207505":"Synara San","3731235174":"Supreme Leader Snoke","5511838014":"Kuiil","5080989992":"Rose Tico","0196346374":"Rey","2560835268":"The Armorer","5169472456":"Chewbacca","9871430123":"Sugi","0474909987":"Val","0518313150":"Embo","3399023235":"Fenn Rau","2744523125":"Salacious Crumb","7936091758":"General Tagge","9734237871":"Ephant Mon","8862896760":"Maul","8380936981":"Jabba's Rancor","9752523457":"Finalizer","9850906885":"Maz Kanata","2143627819":"The Marauder","3468546373":"General Rieekan","9151673075":"Cobb Vanth","3141660491":"The Darksaber","3991112153":"Kylo's TIE Silencer","8687233791":"Punishing One","6769342445":"Jango Fett","3622749641":"Krrsantan","6263178121":"Kylo Ren","3086868510":"Pre Vizsla","6234506067":"Cassian Andor","5966087637":"Poe Dameron","2470093702":"Wrecker","9637610169":"Bo-Katan Kryze","6910883839":"Migs Mayfeld","5830140660":"Bazine Netal","6097248635":"4-LOM","1690726274":"Zuckuss","5818136044":"Xanadu Blood","0598830553":"Dryden Vos","7964782056":"Qi'ra","2522489681":"Zorii Bliss","5752414373":"Millennium Falcon","4002861992":"DJ","3010720738":"Tobias Beckett","8107876051":"Enfys Nest","5738033724":"Boba Fett's Armor","3952758746":"Toro Calican","7674544152":"Kragan Gorr","6884078296":"Greef Karga","7022736145":"Tarfful","0981852103":"Lady Proxima","6463485981":"Experience","3358002015":"Shield","1401885853":"Count Dooku","8292269690":"Darth Vader","9954244145":"Emperor Palpatine","3038397952":"Kylo Ren","7315203824":"Asajj Ventress","5866567543":"Darth Maul","2155351882":"Ahsoka Tano","7224a2074a":"Ahsoka Tano","2872203891":"General Grievous","fb7af4616c":"General Grievous","3876951742":"General's Guardian","0511508627":"Captain Rex","7380773849":"Coruscant Guard","2282198576":"Anakin Skywalker","5027991609":"Separatist Commando","5584601885":"Battle Droid Escort","6772128891":"Hailfire Tank","1209133362":"332nd Stalwart","3463348370":"Battle Droid","3941784506":"Clone Trooper","2742665601":"Nala Se","f05184bd91":"Nala Se","6064906790":"Nute Gunray","b7caecf9a3":"Nute Gunray","2784756758":"Obi-Wan Kenobi","0ee1e18cf4":"Obi-Wan Kenobi","2847868671":"Yoda","e71f6f766c":"Yoda","5683908835":"Count Dooku","6fa73a45ed":"Count Dooku","1686059165":"Wat Tambor","12122bc0b1":"Wat Tambor","7734824762":"Captain Rex","47557288d6":"Captain Rex","2870878795":"Padm\u00e9 Amidala","4ae6d91ddc":"Padm\u00e9 Amidala","6461101372":"Maul","40b649e6f6":"Maul","5081383630":"Pre Vizsla","11299cc72f":"Pre Vizsla","8777351722":"Anakin Skywalker","24a81d97b5":"Anakin Skywalker","4628885755":"Mace Windu","9b212e2eeb":"Mace Windu","8929774056":"Asajj Ventress","f8e0c65364":"Asajj Ventress","9155536481":"Jango Fett","cfdcbd005a":"Jango Fett","0026166404":"Chancellor Palpatine","ad86d54e97":"Chancellor Palpatine","2358113881":"Quinlan Vos","3f7f027abd":"Quinlan Vos","5333016146":"Rune Haako","0677558416":"Wartime Trade Official","1039828081":"Calculating MagnaGuard","4776553531":"General Grievous","6412545836":"Morgan Elsbeth","2761325938":"Devastating Gunship","5084084838":"Droideka Security","6436543702":"Providence Destroyer","3381931079":"Malevolence","7895170711":"A Fine Addition","1389085256":"Lethal Crackdown","7924172103":"Barriss Offee","8919416985":"Outspoken Representative","8552292852":"Kashyyyk Defender","2260777958":"41st Elite Corps","3033790509":"Captain Typho","6384086894":"Satine Kryze","6648824001":"Obi-Wan's Aethersprite","4541556921":"Knight of the Republic","9832122703":"Luminara Unduli","4036958275":"Hello There","7244268162":"Finn","7289764651":"Duchess's Champion","5013214638":"Equalize","5157630261":"Compassionate Senator","3504029875":"Warrior Drone","4718895864":"Padawan Starfighter","0598115741":"Royal Guard Attach\u00e9","8345985976":"Trade Federation Shuttle","4179773207":"Infantry of the 212th","3420865217":"Daughter of Dathomir","7000286964":"Vulture Interceptor Wing","7200475001":"Ki-Adi-Mundi","8845972926":"Falchion Ion Tank","1320229479":"Multi-Troop Transport","0216922902":"The Zillo Beast","9399634203":"I Have the High Ground","6732988831":"Grievous Reassembly","2359136621":"Guarding the Way","3596811933":"Disruptive Burst","0968965258":"Death by Droids","5406361032":"Vanquish","2565830105":"The Invasion of Christophsis","3680942691":"Confederate Courier","9610332938":"Poggle the Lesser","6999668340":"Droid Commando","5630404651":"MagnaGuard Wing Leader","7979348081":"Kraken","1039176181":"Kalani","7013591351":"Admiral Trench","9283787549":"Separatist Super Tank","7579458834":"Reprocess","4895747419":"Consolidation of Power","2265363405":"Echo","2395430106":"Republic Tactical Officer","0268657344":"Admiral Yularen","8640210306":"Advanced Recon Commando","1314547987":"Shaak Ti","9966134941":"Pelta Supply Frigate","6190335038":"Aayla Secura","6238512843":"Republic Defense Carrier","0633620454":"Synchronized Strike","3500129784":"Petition the Senate","0142631581":"Mas Amedda","1192349217":"Manufactured Soldiers","9415708584":"Pyrrhic Assault","0249398533":"Obedient Vanguard","3258646001":"Steadfast Senator","6534973905":"Patrolling V-Wing","8426882030":"Ryloth Militia","7252148824":"501st Liberator","8418001763":"Huyang","9176356859":"Republic ARC-170","4824842849":"Subjugating Starfighter","6330903136":"B2 Legionnaires","9017877021":"Clone Commander Cody","2041344712":"Osi Sobeck","0345124206":"Clone","5243634234":"Baktoid Spider Droid","2554988743":"Gor","7344129644":"Outflank","6830921347":"Tactical Advantage","2267524398":"The Clone Wars","4916334670":"Encouraging Leadership","3365254092":"Resupply","5316152584":"Take Captive","1272825113":"In Defense of Kamino","8139901441":"Bo-Katan Kryze","6022703929":"OOM-Series Officer","6277739341":"Confederate Tri-Fighter","1313247160":"B1 Attack Platform","3556557330":"Asajj Ventress","8613680163":"Darth Maul","8201333805":"Squadron of Vultures","8540765053":"Savage Opress","8655450523":"Count Dooku","6476609909":"Corner the Prey","8060312086":"Self-Destruct","2800918480":"Soldier of the 501st","4551109857":"Anakin's Interceptor","7099699830":"Jyn Erso","6969421569":"Batch Brothers","5936350569":"Jesse","8096748603":"Steela Gerrera","6404471739":"Senatorial Corvette","3476041913":"Low Altitude Gunship","0354710662":"Saw Gerrera","2585318816":"Resolute","8022262805":"Bold Resistance","7789777396":"Mister Bones","0056489820":"Unlimited Power","0595607848":"Disaffected Senator","9227411088":"Clone Heavy Gunner","8084593619":"Dendup's Loyalist","3410014206":"Vanguard Droid Bomber","3600744650":"Bold Recon Commando","2298508689":"Reckless Torrent","1368135704":"Relentless Rocket Droid","0683052393":"Hevy","1641175580":"Kit Fisto","3693364726":"Aurra Sing","4210027426":"Heavy Persuader Tank","4362937866":"Daring Raid","4042866439":"Grenade Strike","6669050232":"Grim Resolve","2103133661":"Blood Sport","5807228000":"Open Fire","1417180295":"Strategic Analysis","5013139687":"Caught in the Crossfire","7235023816":"Guerilla Insurgency","1167572655":"Planetary Invasion","6406254252":"Soulless One","0036920495":"Elite P-38 Starfighter","6623894685":"Infiltrating Demolisher","9964112400":"Rush Clovis","3589814405":"Tactical Droid Commander","4489623180":"Ziro the Hutt","0021045666":"San Hill","0693815329":"Cad Bane","3459567689":"Wartime Profiteering","4113123883":"Unnatural Life","2483302291":"On the Doorstep","1882027961":"Wolf Pack Escort","8307804692":"Padm\u00e9 Amidala","5616678900":"R2-D2","7144880397":"Ahsoka Tano","2843644198":"Sabine Wren","7494987248":"Plo Koon","2443835595":"Republic Attack Pod","8414572243":"Enfys Nest","9620454519":"Clear the Field","0328412140":"Creative Thinking","7510418786":"Aid from the Innocent","9216621233":"Jar Jar Binks","0038286155":"Chancellor Palpatine","1302133998":"Impropriety Among Thieves","5445166624":"Clone Dive Trooper","9262288850":"Independent Senator","6257858302":"B1 Security Team","9479767991":"Favorable Delegate","8549156761":"Hotshot V-Wing","0199085444":"Lux Bonteri","7732981122":"Sly Moore","8839068683":"Freelance Assassin","4512764429":"Sanctioner's Shuttle","7953154930":"Hidden Sharpshooter","3348783048":"Geonosis Patrol Fighter","3434956158":"Fives","6700679522":"Tri-Droid Suppressor","6401761275":"In Pursuit","3357486161":"Political Pressure","0959549331":"Unmasking the Conspiracy","4910017138":"Breaking In","6849037019":"Now There Are Two of Them","5190917242":"Waylay","3799780905":"Prisoner of War","4050810437":"Droid Starfighter","3246242155":"Super Battle Droid","6787851182":"Dwarf Spider Droid","9927473096":"Patrolling AAT","0398102006":"The Invisible Hand","1083333786":"Battle Droid Legion","6826668370":"Droid Deployment","4412828936":"Merciless Contest","4569767827":"Execute Order 66","9209567613":"Phase I Clone Trooper","1988887369":"Phase II Clone Trooper","8187818742":"Republic Commando","9185282472":"Eta-2 Light Interceptor","7884088000":"Armored Saber Tank","6570091935":"Tranquility","5350889336":"AT-TE Vanguard","5610901450":"Heroes on Both Sides","8719468890":"Sword and Shield Maneuver","5074877594":"Drop In","2535372432":"Aggrieved Parliamentarian","2574847177":"Headhunter Squadron","1358583691":"Volunteer Soldier","4602353389":"Brain Invaders","2483520485":"Private Manufacturing","6594935791":"Pau City","6672139274":"Sundari","7303722102":"The Crystal City","8589863038":"Droid Manufactory","7827173440":"Lair of Grievous","0348855629":"Tipoca City","6854189262":"Shadow Collective Camp","0109520913":"KCM Mining Facility","3867306441":"The Nest","9652861741":"Petranaki Arena","1023625185":"Level 1313","2293075446":"Pyke Palace","7884488904":"For The Republic","3962135775":"Foresight","1555775184":"Roger Roger","8061497086":"Perilous Position","4991712618":"Unshakeable Will","4886127868":"Nameless Valor","2397845395":"Strategic Acumen","0414253215":"General's Blade","3292172753":"Squad Support","6410481716":"Mace Windu's Lightsaber","7439418148":"Twice the Pride","3840495762":"Old Access Codes","2007876522":"Clone Cohort","7547538214":"Droid Cohort","2012334456":"On Top of Things","9003830954":"Shadowed Intentions","0875550518":"Grievous's Wheel Bike","0741296536":"Ahsoka's Padawan Lightsaber","7280804443":"Hold-Out Blaster","4179470615":"Asajj Ventress","3f0b5622a7":"Asajj Ventress","5846322081":"Grand Admiral Thrawn","53207e4131":"Grand Admiral Thrawn","3658069276":"Lando Calrissian","3064aff14f":"Lando Calrissian","3933322003":"Rose Tico","590b638b18":"Rose Tico","4030832630":"Admiral Piett","649c6a9dbd":"Admiral Piett","7661383869":"Darth Vader","fb0da8985e":"Darth Vader","8943696478":"Admiral Holdo","ccf9474416":"Admiral Holdo","0011262813":"Wedge Antilles","6414788e89":"Wedge Antilles","9831674351":"Boba Fett","f6eb711cf3":"Boba Fett","3132453342":"Captain Phasma","fda7bdc316":"Captain Phasma","0766281795":"Luke Skywalker","11e54776e9":"Luke Skywalker","8520821318":"Poe Dameron","3eb545eb4b":"Poe Dameron","3905028200":"Admiral Trench","7c082aefc9":"Admiral Trench","8656409691":"Rio Durant","81a416eb1f":"Rio Durant","7514405173":"Admiral Ackbar","36859e7ec4":"Admiral Ackbar","0616724418":"Han Solo","a015eb5c5e":"Han Solo","1029978899":"Colossus","4028826022":"Data Vault","4301437393":"Thermal Oscillator","9586661707":"Nabat Village","6311662442":"Director Krennic","1164297413":"Onyx Squadron Brute","3878744555":"Interceptor Ace","9325037410":"Iden Versio","6390089966":"Banshee","0753794638":"Corvus","5184505570":"Chimaera","0235116526":"Fleet Interdictor","9810057689":"No Glory, Only Results","9430527677":"Hera Syndulla","1039444094":"Paige Tico","3475471540":"Cassian Andor","5751831621":"Red Squadron X-Wing","5422802110":"D'Qar Cargo Frigate","6300552434":"Gold Leader","5834478243":"You're All Clear, Kid","3874382333":"Academy Graduate","1397553238":"Desperate Commando","0596500013":"Landing Shuttle","5093056978":"Direct Hit","1034181657":"First Order TIE Fighter","5345999887":"Kijimi Patrollers","4921363233":"Wingman Victor Two","9811031405":"Victor Leader","1911230033":"Wingman Victor Three","3427170256":"Captain Phasma","7138400365":"The Invisible Hand","6610553087":"Nien Nunb","7653629848":"Phoenix Squadron A-Wing","2388374331":"Blue Leader","7924461681":"Leia Organa","0524529055":"Snap Wexley","3711891756":"Red Leader","7208848194":"Chewbacca","8779760486":"Raddus","2778554011":"General Draven","0926549684":"Resupply Carrier","4334684518":"Tandem Assault","8993849612":"Eject","8174214418":"Turbolaser Salvo","6861397107":"First Order Stormtrooper","9611596703":"Allegiant General Pryde","9921128444":"General Hux","9595057518":"Special Forces TIE Fighter","3282713547":"Dengar","3722493191":"IG-2000","1463418669":"IG-88","1330473789":"Devastator","4033634907":"No Disintegrations","2283726359":"BB-8","6600603122":"Massassi Tactical Officer","3389903389":"Black One","0514089787":"Frisk","7831643253":"Red Squadron Y-Wing","2633842896":"Biggs Darklighter","8500401413":"Red Five","6228218834":"Tactical Heavy Bomber","7072861308":"Profundity","2995807621":"Trench Run","3666212779":"Captain Tarkin","8287246260":"Droid Missile Platform","4560739921":"Hunting Aggressor","3885807284":"Fight Fire With Fire","8734471238":"Stay on Target","9695562265":"Koiogran Turn","0425156332":"Planetary Bombardment","9720757803":"Rampart","7389195577":"Zygerrian Starhopper","3876470102":"Hound's Tooth","7192849828":"Mist Hunter","4573745395":"Bossk","7312183744":"Moff Gideon","7700932371":"Boba Fett","9958088138":"Invincible","5667308555":"I Have You Now","7420426716":"Dagger Squadron Pilot","8523415830":"Anakin Skywalker","1965647391":"Blade Squadron B-Wing","1990020761":"Shuttle Tydirium","3388566378":"Ahsoka Tano","6354077246":"Black Squadron Scout Wing","6720065735":"Han Solo","1356826899":"Home One","8833191722":"Never Tell Me the Odds","0964312065":"It's a Trap","6421006753":"The Mandalorian","0587196584":"Independent Smuggler","5673100759":"BoShek","1303370295":"Death Space Skirmisher","2711104544":"Guerilla Soldier","6272475624":"Stolen AT-Hauler","3567283316":"Radiant VII","4819196588":"Electromagnetic Pulse","8105698374":"Commandeer","3504944818":"TIE Bomber","7157369742":"TIE Dagger Vanguard","6648978613":"Fett's Firespray","1519837763":"Shuttle ST-149","2657417747":"Quasar TIE Carrier","5375722883":"R2-D2","8845408332":"Millennium Falcon","7325248681":"Sabine's Masterpiece","6854247423":"Tantive IV","2177194044":"Swarming Vulture Droid","7268926664":"TIE Fighter","9415311381":"X-Wing","2736121234":"Experience","9976985144":"Shield"}; + const data = {"2579145458":"Luke Skywalker","0dcb77795c":"Luke Skywalker","6088773439":"Darth Vader","0ca1902a46":"Darth Vader","2524528997":"Cell Block Guard","3038238423":"Fleet Lieutenant","9266336818":"Grand Moff Tarkin","9680213078":"Leia Organa","5562575456":"TIE\/ln Fighter","5494760041":"Galactic Ambition","0494601180":"Alliance X-Wing","3509161777":"You're My Only Hope","8129465864":"Administrator's Tower","8560666697":"Director Krennic","e2c6231b35":"Director Krennic","3572356139":"Chewbacca","8301e8d7ef":"Chewbacca","2855740390":"Lieutenant Childsen","4786320542":"Obi-Wan Kenobi","8615772965":"Vigilance","8679831560":"Repair","6472095064":"Vanquish","0507674993":"Command Center","6903722220":"Luke's Lightsaber","8954587682":"Superlaser Technician","2703877689":"Resupply","8117080217":"Admiral Ozzel","9002021213":"Imperial Interceptor","0705773109":"Vader's Lightsaber","9500514827":"Han Solo","8297630396":"Shoot First","6901817734":"Asteroid Sanctuary","9996676854":"Admiral Motti","9097690846":"Snowtrooper Lieutenant","8986035098":"Viper Probe Droid","1557302740":"General Veers","6072239164":"AT-ST","0523973552":"I Am Your Father","2758597010":"Maximum Firepower","9568000754":"R2-D2","9799982630":"General Dodonna","1862616109":"Snowspeeder","8752877738":"Shield","2912358777":"Grand Moff Tarkin","59cd013a2d":"Grand Moff Tarkin","6514927936":"Leia Organa","87e8807695":"Leia Organa","0827076106":"Admiral Ackbar","0073206444":"Command","3974134277":"Prepare for Takeoff","2007868442":"Experience","7911083239":"Grand Inquisitor","6827598372":"Grand Inquisitor","4841169874":"Sabine Wren","51e8757e4c":"Sabine Wren","0160548661":"Fallen Lightsaber","5907868016":"Fighters for Freedom","3736081333":"Aggression","6577517407":"Wampa","8148673131":"Open Fire","3789633661":"Cunning","0949648290":"Greedo","5346983501":"Syndicate Lackeys","8800836530":"No Good to Me Dead","2050990622":"Spark of Rebellion","4626028465":"Boba Fett","0e65f012f5":"Boba Fett","7202133736":"Waylay","5954056864":"Han Solo","5e90bd91b0":"Han Solo","1951911851":"Grand Admiral Thrawn","02199f9f1e":"Grand Admiral Thrawn","2429341052":"Security Complex","8327910265":"Energy Conversion Lab","2055904747":"Echo Base","1393827469":"Tarkintown","8659924257":"Catacombs of Cadera","2569134232":"Jedha City","6093792814":"Chopper Base","6458912354":"Death Trooper","7596515127":"Academy Defense Walker","9624333142":"Count Dooku","7485151088":"Search Your Feelings","0074718689":"Restored ARC-170","4405415770":"Yoda","5449704164":"2-1B Surgical Droid","8333567388":"Distant Patroller","9702250295":"Cloud City Wing Guard","7751685516":"System Patrol Craft","8184790799":"Consular Security Force","1662196707":"Kanan Jarrus","7622279662":"Vigilant Honor Guards","3896582249":"Redemption","4599464590":"Rugged Survivors","9059202647":"Resilient","3099663280":"Entrenched","0867878280":"It Binds All Things","4849184191":"Takedown","4566580942":"Admiral Piett","7929181061":"General Tagge","3988315236":"Seasoned Shoretrooper","1780978508":"Emperor's Royal Guard","8294130780":"Gladiator Star Destroyer","3830969722":"Blizzard Assault AT-AT","3401690666":"Relentless","4631297392":"Devastator","1900571801":"Overwhelming Barrage","6253392993":"Bright Hope","4339330745":"Wedge Antilles","4919000710":"Home One","0961039929":"Colonel Yularen","1611702639":"Consortium StarViper","3138552659":"Homestead Militia","2649829005":"Agent Kallus","7648077180":"97th Legion","3987987905":"Hardpoint Heavy Blaster","3407775126":"Recruit","2383321298":"Death Star Stormtrooper","2651321164":"Tactical Advantage","4619930426":"First Legion Snowtrooper","9097316363":"Emperor Palpatine","1446471743":"Force Choke","7495752423":"Green Squadron A-Wing","3646264648":"Sabine Wren","5230572435":"Mace Windu","2404916657":"Cantina Braggart","6348804504":"Ardent Sympathizer","2668056720":"Disabling Fang Fighter","7517208605":"Star Wing Scout","0797226725":"Infiltrator's Skill","7262314209":"Mission Briefing","5154172446":"ISB Agent","4156799805":"Boba Fett","9950828238":"Seventh Fleet Defender","0052542605":"Bossk","4300219753":"Fett's Firespray","1880931426":"Lothal Insurgent","9560139036":"Ezra Bridger","1785627279":"Millennium Falcon","1017822723":"Rogue Operative","7285270931":"Auzituck Liberator Gunship","8918765832":"Chewbacca","9250443409":"Lando Calrissian","4299027717":"Mining Guild TIE Fighter","7280213969":"Smuggling Compartment","1626462639":"Change of Heart","3809048641":"Surprise Strike","4092697474":"TIE Advanced","8009713136":"C-3PO","0046930738":"Rebel Pathfinder","3443737404":"Wing Leader","2048866729":"Iden Versio","b0dbca5c05":"Iden Versio","4263394087":"Chirrut \u00cemwe","d1a7b76ae7":"Chirrut \u00cemwe","5784497124":"Emperor Palpatine","6c5b96c7ef":"Emperor Palpatine","7440067052":"Hera Syndulla","80df3928eb":"Hera Syndulla","8600121285":"IG-88","fb475d4ea4":"IG-88","3187874229":"Cassian Andor","3c60596a7a":"Cassian Andor","8244682354":"Jyn Erso","20f21b4948":"Jyn Erso","9133080458":"Inferno Four","9412277544":"Del Meeko","1664771721":"Gideon Hask","0176921487":"Power of the Dark Side","6931439330":"The Ghost","3503494534":"Regional Governor","3280523224":"Rukh","8506660490":"Darth Vader","9785616387":"The Emperor's Legion","3377409249":"Rogue Squadron Skirmisher","4721628683":"Patrolling V-Wing","1047592361":"Ruthless Raider","3232845719":"K-2SO","9647945674":"Zeb Orrelios","8429598559":"Black One","6954704048":"Heroic Sacrifice","5767546527":"For a Cause I Believe In","0256267292":"Benthic 'Two Tubes'","1705806419":"Force Throw","3058784025":"Keep Fighting","7728042035":"Chimaera","6208347478":"Chopper","3018017739":"Vanguard Ace","9644107128":"Bamboozle","0700214503":"Crafty Smuggler","3613174521":"Outer Rim Headhunter","6028207223":"Pirated Starfighter","9985638644":"Snapshot Reflexes","3426168686":"Sneak Attack","7366340487":"Outmaneuver","2202839291":"Don't Get Cocky","4536594859":"Medal Ceremony","7109944284":"Luke Skywalker","8995892693":"Red Three","4642322279":"Partisan Insurgent","9210902604":"Precision Fire","7257556541":"Bodhi Rook","6366665313":"Capital City","3810584393":"Dagobah Swamp","0461841375":"Kestro City","9633997311":"Scout Bike Pursuer","6663619377":"AT-AT Suppressor","8240629990":"Avenger","8495694166":"Jedi Lightsaber","5264521057":"Wilderness Fighter","9459170449":"Cargo Juggernaut","8788948272":"Devotion","8981523525":"Moment of Peace","3208391441":"Make an Opening","2756312994":"Alliance Dispatcher","4317911650":"Battlefield Marine","3498814896":"Mon Mothma","6912684909":"Echo Base Defender","1939951561":"Attack Pattern Delta","5575681343":"Vanguard Infantry","2471223947":"Frontline Shuttle","6432884726":"Steadfast Battalion","6718924441":"Mercenary Company","3463676231":"Academy Training","8055390529":"Traitorous","1349057156":"Strike True","8395007579":"Fifth Brother","0828695133":"Seventh Sister","9070397522":"SpecForce Soldier","1746195484":"Jedha Agitator","7533529264":"Wolffe","4323691274":"Power Failure","3802299538":"Cartel Spacer","5035052619":"Jabba the Hutt","3684950815":"Bounty Hunter Crew","1021495802":"Cantina Bouncer","9859536518":"Jawa Scavenger","1081012039":"Regional Sympathizers","4111616117":"Volunteer Soldier","8098293047":"Occupier Siege Tank","4550121827":"Protector","6515891401":"Karabast","1208707254":"Rallying Cry","8691800148":"Reinforcement Walker","5950125325":"Confiscate","5707383130":"Bendu","7861932582":"The Force Is With Me","9353672706":"General Krell","2027289177":"Escort Skiff","5555846790":"Saw Gerrera","2739464284":"Gamorrean Guards","5879557998":"Baze Malbus","4166047484":"Guardian of the Whills","8988732248":"Rebel Assault","7916724925":"Bombing Run","5464125379":"Strafing Gunship","6385228745":"Corellian Freighter","1353201082":"Superlaser Blast","1323728003":"Electrostaff","2554951775":"Bail Organa","8968669390":"U-Wing Reinforcement","2639435822":"Force Lightning","5335160564":"Guerilla Attack Pod","6702266551":"Smoke and Cinders","5871074103":"Forced Surrender","7870435409":"Bib Fortuna","2715652707":"I Had No Choice","9448937272":"Swoop Racer","2587711125":"Disarm","1598425314":"Underworld Thug","4685993945":"Frontier AT-RT","6087834273":"Restock","2503039837":"Moff Gideon","4484318969":"Moff Gideon","9005139831":"The Mandalorian","4088c46c4d":"The Mandalorian","4843225228":"Phase-III Dark Trooper","0302968596":"Calculated Lethality","5351496853":"Gideon's Light Cruiser","4117365450":"Wanted","0754286363":"The Mandalorian's Rifle","8142386948":"Razor Crest","6536128825":"Grogu","6585115122":"The Mandalorian","1982478444":"Vigilant Pursuit Craft","2288926269":"Privateer Crew","6847268098":"Timely Intervention","5874342508":"Hotshot DL-44 Blaster","0622803599":"Jabba the Hutt","f928681d36":"Jabba the Hutt","8709191884":"Hunter","c9ff9863d7":"Hunter","7424360283":"Bo-Katan Kryze","a579b400c0":"Bo-Katan Kryze","3488958204":"Remnant Science Facility","2403450809":"Remote Village","4006047777":"Maz Kanata's Castle","5662039114":"Nevarro City","2547571983":"Death Watch Hideout","6956298674":"Spice Mines","4313706014":"Coronet City","9617095664":"Jabba's Palace","6878039039":"Hylobon Enforcer","2969011922":"Pyke Sentinel","9336505300":"Death Trooper","4341703515":"Supercommando Squad","8228196561":"Clan Saxon Gauntlet","4783554451":"First Light","4843813137":"Brutal Traditions","0282219568":"Clan Wren Rescuer","7486516061":"Concord Dawn Interceptors","1747533523":"Village Protectors","8190373087":"Gentle Giant","9999079491":"Mystic Reflection","6911505367":"Second Chance","8818201543":"Midnight Repairs","4327133297":"Moisture Farmer","4511413808":"Follower of The Way","7291903225":"Rickety Quadjumper","5636691221":"HWK-290 Freighter","4383889628":"Wroshyr Tree Tender","6409922374":"Niima Outpost Constables","8639184906":"System Patrol Craft","1503633301":"Survivors' Gauntlet","3770196734":"Cargo Juggernaut","1780014071":"Public Enemy","7687006104":"Foundling","7277605274":"Resilient","4282425335":"Top Target","1368144544":"Imprisoned","3514010297":"Mandalorian Armor","3525325147":"Vambrace Grappleshot","8645125292":"Covert Strength","1973545191":"Unexpected Escape","6452159858":"Evidence of the Crime","3329959260":"Fell the Dragon","5303936245":"Rival's Fall","8712779685":"Outland TIE Vanguard","9462361238":"Seasoned Shoretrooper","1994773472":"Superlaser Technician","8305828130":"Warbird Stowaway","1885628519":"Crosshair","8552719712":"Pirate Battle Tank","1565760222":"Remnant Reserves","4643489029":"Palpatine's Return","9503028597":"Clone Deserter","4534554684":"Freetown Backup","5977238053":"Sundari Peacekeeper","3671559022":"Echo","1805986989":"Modded Cohort","9757839764":"Adelphi Patrol Wing","6775521270":"Inspiring Mentor","9828896088":"Spark of Hope","8080818347":"Rule with Respect","7204838421":"Enterprising Lackeys","5984647454":"Enforced Loyalty","5576996578":"Endless Legions","0336440515":"Warzone Lieutenant","5171970586":"Collections Starhopper","4590862665":"Gamorrean Retainer","0505904136":"Scanning Officer","3503780024":"Outlaw Corona","6905327595":"Reputable Hunter","4721657243":"Kihraxz Heavy Fighter","9483244696":"Weequay Pirate Gang","9765804063":"Discerning Veteran","3027902905":"Mercenary Company","1086021299":"Arquitens Assault Cruiser","9642863632":"Bounty Hunter's Quarry","8877249477":"Legal Authority","2178538979":"Price on Your Head","1141018768":"Commission","0802973415":"Outflank","1701265931":"Moment of Glory","3765912000":"Take Captive","2346145249":"Choose Sides","8031540027":"Dengar","2151430798":"Guavian Antagonizer","5557494276":"Death Watch Loyalist","1743599390":"Trandoshan Hunters","4897501399":"Ruthlessness","3012322434":"Give In to Your Anger","5896817672":"Headhunting","9195624101":"Heroic Renegade","4595532978":"Ketsu Onyo","6037778228":"Nite Owl Skirmisher","9951020952":"Koska Reeves","7922308768":"Valiant Assault Ship","1556608115":"Desperado Freighter","4085341914":"Heroic Resolve","3228620062":"Cripple Authority","9270539174":"Wild Rancor","8090818642":"The Chaos of War","9690731982":"Reckless Gunslinger","7642980906":"Stolen Landspeeder","3786602643":"House Kast Soldier","7351946067":"Rhokai Gunship","2965702252":"Unlicensed Headhunter","4395522409":"Disabling Fang Fighter","8679638018":"Wanted Insurgents","8991513192":"Hunting Nexu","3487311898":"Clan Challengers","3417125055":"IG-11","1304452249":"Covetous Rivals","4935319539":"Krayt Dragon","2740761445":"Guild Target","1938453783":"Armed to the Teeth","0807120264":"Death Mark","6471336466":"Vambrace Flamethrower","7826408293":"Daring Raid","6962053552":"Desperate Attack","8576088385":"Detention Block Rescue","4772866341":"Pillage","7212445649":"Bravado","9725921907":"Kintan Intimidator","6135081953":"Doctor Evazan","6939947927":"Hunter of the Haxion Brood","1810342362":"Lurking TIE Phantom","6853970496":"Slaver's Freighter","7718080954":"Frozen in Carbonite","5696041568":"Triple Dark Raid","9108611319":"Cartel Turncoat","9552605383":"L3-37","1386874723":"Omega","9115773123":"Coruscant Dissident","8656645362":"Liberated Slaves","9040137775":"Principled Outlaw","7578472075":"Let the Wookiee Win","5283722046":"Spare the Target","4717189843":"A New Adventure","1910812527":"Final Showdown","6475868209":"Criminal Muscle","2121724481":"Cloud-Rider","6947306017":"Fugitive Wookiee","0088477218":"Privateer Scyk","8095362491":"Frontier Trader","1312599620":"Smuggler's Starfighter","7171636330":"Chain Code Collector","2556508706":"Resourceful Pursuers","7982524453":"Fennec Shand","6420322033":"Enticing Reward","2011561919":"Snapshot Reflexes","6117103324":"Jetpack","7270736993":"Unrefusable Offer","2750823386":"Look the Other Way","6151970296":"Bounty Posting","0931441928":"Ma Klounkee","4663781580":"Swoop Down","8750826002":"Surprise Strike","5778949819":"Relentless Pursuit","8261033110":"Evacuate","4328408486":"Incinerator Trooper","3803148745":"Ruthless Assassin","6416685228":"Snowtrooper Lieutenant","0315522200":"Black Sun Starfighter","1575743055":"Cell Block Guard","6635692731":"Hutt's Henchmen","6425029011":"Altering the Deal","7354795397":"No Bargain","9472541076":"Grey Squadron Y-Wing","9405733493":"Protector of the Throne","3881257511":"Tech","1477806735":"Wookiee Warrior","0866321455":"Smuggler's Aid","9845101935":"This Is The Way","4057912610":"Bounty Guild Initiate","3577961001":"Mercenary Gunship","4088627455":"Underworld Thug","1081897816":"Mandalorian Warrior","6870437193":"Twin Pod Cloud Car","2090698177":"Street Gang Recruiter","3074091930":"Rich Reward","1630144142":"Confiscate","9794215464":"Gar Saxon","3feee05e13":"Gar Saxon","2432897157":"Qi'ra","4aa0804b2b":"Qi'ra","9596662994":"Finn","8903067778":"Finn","4352150438":"Rey","e091d2a983":"Rey","3045538805":"Hondo Ohnaka","415bde775d":"Hondo Ohnaka","9334480612":"Boba Fett","919facb76d":"Boba Fett","2526288781":"Bossk","d2bbda6982":"Bossk","1480894253":"Kylo Ren","8def61a58e":"Kylo Ren","9226435975":"Han Solo","a742dea1f1":"Han Solo","1384530409":"Cad Bane","724979d608":"Cad Bane","0254929700":"Doctor Aphra","58f9f2d4a0":"Doctor Aphra","0911874487":"Fennec Shand","2b13cefced":"Fennec Shand","5440730550":"Lando Calrissian","040a3e81f3":"Lando Calrissian","6722700037":"Doctor Pershing","1090660242":"The Client","5632569775":"Lom Pyke","0252207505":"Synara San","3731235174":"Supreme Leader Snoke","5511838014":"Kuiil","5080989992":"Rose Tico","0196346374":"Rey","2560835268":"The Armorer","5169472456":"Chewbacca","9871430123":"Sugi","0474909987":"Val","0518313150":"Embo","3399023235":"Fenn Rau","2744523125":"Salacious Crumb","7936091758":"General Tagge","9734237871":"Ephant Mon","8862896760":"Maul","8380936981":"Jabba's Rancor","9752523457":"Finalizer","9850906885":"Maz Kanata","2143627819":"The Marauder","3468546373":"General Rieekan","9151673075":"Cobb Vanth","3141660491":"The Darksaber","3991112153":"Kylo's TIE Silencer","8687233791":"Punishing One","6769342445":"Jango Fett","3622749641":"Krrsantan","6263178121":"Kylo Ren","3086868510":"Pre Vizsla","6234506067":"Cassian Andor","5966087637":"Poe Dameron","2470093702":"Wrecker","9637610169":"Bo-Katan Kryze","6910883839":"Migs Mayfeld","5830140660":"Bazine Netal","6097248635":"4-LOM","1690726274":"Zuckuss","5818136044":"Xanadu Blood","0598830553":"Dryden Vos","7964782056":"Qi'ra","2522489681":"Zorii Bliss","5752414373":"Millennium Falcon","4002861992":"DJ","3010720738":"Tobias Beckett","8107876051":"Enfys Nest","5738033724":"Boba Fett's Armor","3952758746":"Toro Calican","7674544152":"Kragan Gorr","6884078296":"Greef Karga","7022736145":"Tarfful","0981852103":"Lady Proxima","6463485981":"Experience","3358002015":"Shield","1401885853":"Count Dooku","8292269690":"Darth Vader","9954244145":"Emperor Palpatine","3038397952":"Kylo Ren","7315203824":"Asajj Ventress","5866567543":"Darth Maul","2155351882":"Ahsoka Tano","7224a2074a":"Ahsoka Tano","2872203891":"General Grievous","fb7af4616c":"General Grievous","3876951742":"General's Guardian","0511508627":"Captain Rex","7380773849":"Coruscant Guard","2282198576":"Anakin Skywalker","5027991609":"Separatist Commando","5584601885":"Battle Droid Escort","6772128891":"Hailfire Tank","1209133362":"332nd Stalwart","3463348370":"Battle Droid","3941784506":"Clone Trooper","2742665601":"Nala Se","f05184bd91":"Nala Se","6064906790":"Nute Gunray","b7caecf9a3":"Nute Gunray","2784756758":"Obi-Wan Kenobi","0ee1e18cf4":"Obi-Wan Kenobi","2847868671":"Yoda","e71f6f766c":"Yoda","5683908835":"Count Dooku","6fa73a45ed":"Count Dooku","1686059165":"Wat Tambor","12122bc0b1":"Wat Tambor","7734824762":"Captain Rex","47557288d6":"Captain Rex","2870878795":"Padm\u00e9 Amidala","4ae6d91ddc":"Padm\u00e9 Amidala","6461101372":"Maul","40b649e6f6":"Maul","5081383630":"Pre Vizsla","11299cc72f":"Pre Vizsla","8777351722":"Anakin Skywalker","24a81d97b5":"Anakin Skywalker","4628885755":"Mace Windu","9b212e2eeb":"Mace Windu","8929774056":"Asajj Ventress","f8e0c65364":"Asajj Ventress","9155536481":"Jango Fett","cfdcbd005a":"Jango Fett","0026166404":"Chancellor Palpatine","ad86d54e97":"Chancellor Palpatine","2358113881":"Quinlan Vos","3f7f027abd":"Quinlan Vos","5333016146":"Rune Haako","0677558416":"Wartime Trade Official","1039828081":"Calculating MagnaGuard","4776553531":"General Grievous","6412545836":"Morgan Elsbeth","2761325938":"Devastating Gunship","5084084838":"Droideka Security","6436543702":"Providence Destroyer","3381931079":"Malevolence","7895170711":"A Fine Addition","1389085256":"Lethal Crackdown","7924172103":"Barriss Offee","8919416985":"Outspoken Representative","8552292852":"Kashyyyk Defender","2260777958":"41st Elite Corps","3033790509":"Captain Typho","6384086894":"Satine Kryze","6648824001":"Obi-Wan's Aethersprite","4541556921":"Knight of the Republic","9832122703":"Luminara Unduli","4036958275":"Hello There","7244268162":"Finn","7289764651":"Duchess's Champion","5013214638":"Equalize","5157630261":"Compassionate Senator","3504029875":"Warrior Drone","4718895864":"Padawan Starfighter","0598115741":"Royal Guard Attach\u00e9","8345985976":"Trade Federation Shuttle","4179773207":"Infantry of the 212th","3420865217":"Daughter of Dathomir","7000286964":"Vulture Interceptor Wing","7200475001":"Ki-Adi-Mundi","8845972926":"Falchion Ion Tank","1320229479":"Multi-Troop Transport","0216922902":"The Zillo Beast","9399634203":"I Have the High Ground","6732988831":"Grievous Reassembly","2359136621":"Guarding the Way","3596811933":"Disruptive Burst","0968965258":"Death by Droids","5406361032":"Vanquish","2565830105":"The Invasion of Christophsis","3680942691":"Confederate Courier","9610332938":"Poggle the Lesser","6999668340":"Droid Commando","5630404651":"MagnaGuard Wing Leader","7979348081":"Kraken","1039176181":"Kalani","7013591351":"Admiral Trench","9283787549":"Separatist Super Tank","7579458834":"Reprocess","4895747419":"Consolidation of Power","2265363405":"Echo","2395430106":"Republic Tactical Officer","0268657344":"Admiral Yularen","8640210306":"Advanced Recon Commando","1314547987":"Shaak Ti","9966134941":"Pelta Supply Frigate","6190335038":"Aayla Secura","6238512843":"Republic Defense Carrier","0633620454":"Synchronized Strike","3500129784":"Petition the Senate","0142631581":"Mas Amedda","1192349217":"Manufactured Soldiers","9415708584":"Pyrrhic Assault","0249398533":"Obedient Vanguard","3258646001":"Steadfast Senator","6534973905":"Patrolling V-Wing","8426882030":"Ryloth Militia","7252148824":"501st Liberator","8418001763":"Huyang","9176356859":"Republic ARC-170","4824842849":"Subjugating Starfighter","6330903136":"B2 Legionnaires","9017877021":"Clone Commander Cody","2041344712":"Osi Sobeck","0345124206":"Clone","5243634234":"Baktoid Spider Droid","2554988743":"Gor","7344129644":"Outflank","6830921347":"Tactical Advantage","2267524398":"The Clone Wars","4916334670":"Encouraging Leadership","3365254092":"Resupply","5316152584":"Take Captive","1272825113":"In Defense of Kamino","8139901441":"Bo-Katan Kryze","6022703929":"OOM-Series Officer","6277739341":"Confederate Tri-Fighter","1313247160":"B1 Attack Platform","3556557330":"Asajj Ventress","8613680163":"Darth Maul","8201333805":"Squadron of Vultures","8540765053":"Savage Opress","8655450523":"Count Dooku","6476609909":"Corner the Prey","8060312086":"Self-Destruct","2800918480":"Soldier of the 501st","4551109857":"Anakin's Interceptor","7099699830":"Jyn Erso","6969421569":"Batch Brothers","5936350569":"Jesse","8096748603":"Steela Gerrera","6404471739":"Senatorial Corvette","3476041913":"Low Altitude Gunship","0354710662":"Saw Gerrera","2585318816":"Resolute","8022262805":"Bold Resistance","7789777396":"Mister Bones","0056489820":"Unlimited Power","0595607848":"Disaffected Senator","9227411088":"Clone Heavy Gunner","8084593619":"Dendup's Loyalist","3410014206":"Vanguard Droid Bomber","3600744650":"Bold Recon Commando","2298508689":"Reckless Torrent","1368135704":"Relentless Rocket Droid","0683052393":"Hevy","1641175580":"Kit Fisto","3693364726":"Aurra Sing","4210027426":"Heavy Persuader Tank","4362937866":"Daring Raid","4042866439":"Grenade Strike","6669050232":"Grim Resolve","2103133661":"Blood Sport","5807228000":"Open Fire","1417180295":"Strategic Analysis","5013139687":"Caught in the Crossfire","7235023816":"Guerilla Insurgency","1167572655":"Planetary Invasion","6406254252":"Soulless One","0036920495":"Elite P-38 Starfighter","6623894685":"Infiltrating Demolisher","9964112400":"Rush Clovis","3589814405":"Tactical Droid Commander","4489623180":"Ziro the Hutt","0021045666":"San Hill","0693815329":"Cad Bane","3459567689":"Wartime Profiteering","4113123883":"Unnatural Life","2483302291":"On the Doorstep","1882027961":"Wolf Pack Escort","8307804692":"Padm\u00e9 Amidala","5616678900":"R2-D2","7144880397":"Ahsoka Tano","2843644198":"Sabine Wren","7494987248":"Plo Koon","2443835595":"Republic Attack Pod","8414572243":"Enfys Nest","9620454519":"Clear the Field","0328412140":"Creative Thinking","7510418786":"Aid from the Innocent","9216621233":"Jar Jar Binks","0038286155":"Chancellor Palpatine","1302133998":"Impropriety Among Thieves","5445166624":"Clone Dive Trooper","9262288850":"Independent Senator","6257858302":"B1 Security Team","9479767991":"Favorable Delegate","8549156761":"Hotshot V-Wing","0199085444":"Lux Bonteri","7732981122":"Sly Moore","8839068683":"Freelance Assassin","4512764429":"Sanctioner's Shuttle","7953154930":"Hidden Sharpshooter","3348783048":"Geonosis Patrol Fighter","3434956158":"Fives","6700679522":"Tri-Droid Suppressor","6401761275":"In Pursuit","3357486161":"Political Pressure","0959549331":"Unmasking the Conspiracy","4910017138":"Breaking In","6849037019":"Now There Are Two of Them","5190917242":"Waylay","3799780905":"Prisoner of War","4050810437":"Droid Starfighter","3246242155":"Super Battle Droid","6787851182":"Dwarf Spider Droid","9927473096":"Patrolling AAT","0398102006":"The Invisible Hand","1083333786":"Battle Droid Legion","6826668370":"Droid Deployment","4412828936":"Merciless Contest","4569767827":"Execute Order 66","9209567613":"Phase I Clone Trooper","1988887369":"Phase II Clone Trooper","8187818742":"Republic Commando","9185282472":"Eta-2 Light Interceptor","7884088000":"Armored Saber Tank","6570091935":"Tranquility","5350889336":"AT-TE Vanguard","5610901450":"Heroes on Both Sides","8719468890":"Sword and Shield Maneuver","5074877594":"Drop In","2535372432":"Aggrieved Parliamentarian","2574847177":"Headhunter Squadron","1358583691":"Volunteer Soldier","4602353389":"Brain Invaders","2483520485":"Private Manufacturing","6594935791":"Pau City","6672139274":"Sundari","7303722102":"The Crystal City","8589863038":"Droid Manufactory","7827173440":"Lair of Grievous","0348855629":"Tipoca City","6854189262":"Shadow Collective Camp","0109520913":"KCM Mining Facility","3867306441":"The Nest","9652861741":"Petranaki Arena","1023625185":"Level 1313","2293075446":"Pyke Palace","7884488904":"For The Republic","3962135775":"Foresight","1555775184":"Roger Roger","8061497086":"Perilous Position","4991712618":"Unshakeable Will","4886127868":"Nameless Valor","2397845395":"Strategic Acumen","0414253215":"General's Blade","3292172753":"Squad Support","6410481716":"Mace Windu's Lightsaber","7439418148":"Twice the Pride","3840495762":"Old Access Codes","2007876522":"Clone Cohort","7547538214":"Droid Cohort","2012334456":"On Top of Things","9003830954":"Shadowed Intentions","0875550518":"Grievous's Wheel Bike","0741296536":"Ahsoka's Padawan Lightsaber","7280804443":"Hold-Out Blaster","4179470615":"Asajj Ventress","3f0b5622a7":"Asajj Ventress","5846322081":"Grand Admiral Thrawn","53207e4131":"Grand Admiral Thrawn","3658069276":"Lando Calrissian","3064aff14f":"Lando Calrissian","3933322003":"Rose Tico","590b638b18":"Rose Tico","4030832630":"Admiral Piett","649c6a9dbd":"Admiral Piett","7661383869":"Darth Vader","fb0da8985e":"Darth Vader","8943696478":"Admiral Holdo","ccf9474416":"Admiral Holdo","0011262813":"Wedge Antilles","6414788e89":"Wedge Antilles","9831674351":"Boba Fett","f6eb711cf3":"Boba Fett","3132453342":"Captain Phasma","fda7bdc316":"Captain Phasma","0766281795":"Luke Skywalker","11e54776e9":"Luke Skywalker","8520821318":"Poe Dameron","3eb545eb4b":"Poe Dameron","3905028200":"Admiral Trench","7c082aefc9":"Admiral Trench","8656409691":"Rio Durant","81a416eb1f":"Rio Durant","7514405173":"Admiral Ackbar","36859e7ec4":"Admiral Ackbar","0616724418":"Han Solo","a015eb5c5e":"Han Solo","1029978899":"Colossus","4028826022":"Data Vault","4301437393":"Thermal Oscillator","9586661707":"Nabat Village","6311662442":"Director Krennic","1164297413":"Onyx Squadron Brute","3878744555":"Interceptor Ace","9325037410":"Iden Versio","6390089966":"Banshee","0753794638":"Corvus","5184505570":"Chimaera","0235116526":"Fleet Interdictor","3858069945":"Power from Pain","9810057689":"No Glory, Only Results","9430527677":"Hera Syndulla","1039444094":"Paige Tico","3475471540":"Cassian Andor","5306772000":"Phantom II","5751831621":"Red Squadron X-Wing","5422802110":"D'Qar Cargo Frigate","5763330426":"The Ghost","6300552434":"Gold Leader","5834478243":"You're All Clear, Kid","3874382333":"Academy Graduate","1397553238":"Desperate Commando","0596500013":"Landing Shuttle","7610382003":"CR90 Relief Runner","5093056978":"Direct Hit","6196035152":"Nebula Ignition","1034181657":"First Order TIE Fighter","5345999887":"Kijimi Patrollers","4921363233":"Wingman Victor Two","9811031405":"Victor Leader","1911230033":"Wingman Victor Three","0097256640":"TIE Ambush Squadron","3427170256":"Captain Phasma","7138400365":"The Invisible Hand","2870117979":"Executor","6610553087":"Nien Nunb","7653629848":"Phoenix Squadron A-Wing","2388374331":"Blue Leader","7924461681":"Leia Organa","0524529055":"Snap Wexley","8757741946":"Poe Dameron","3711891756":"Red Leader","7208848194":"Chewbacca","8779760486":"Raddus","2778554011":"General Draven","0926549684":"Resupply Carrier","4334684518":"Tandem Assault","8993849612":"Eject","8174214418":"Turbolaser Salvo","6861397107":"First Order Stormtrooper","9611596703":"Allegiant General Pryde","9921128444":"General Hux","9595057518":"Special Forces TIE Fighter","3282713547":"Dengar","3722493191":"IG-2000","1463418669":"IG-88","1330473789":"Devastator","4033634907":"No Disintegrations","2283726359":"BB-8","6600603122":"Massassi Tactical Officer","3389903389":"Black One","0514089787":"Frisk","7831643253":"Red Squadron Y-Wing","2633842896":"Biggs Darklighter","8500401413":"Red Five","6228218834":"Tactical Heavy Bomber","7072861308":"Profundity","2995807621":"Trench Run","4147863169":"Relentless Firespray","3666212779":"Captain Tarkin","8287246260":"Droid Missile Platform","4019449999":"Cham Syndulla","4560739921":"Hunting Aggressor","3885807284":"Fight Fire With Fire","8734471238":"Stay on Target","9695562265":"Koiogran Turn","0425156332":"Planetary Bombardment","9720757803":"Rampart","7389195577":"Zygerrian Starhopper","3876470102":"Hound's Tooth","7192849828":"Mist Hunter","4573745395":"Bossk","7312183744":"Moff Gideon","7700932371":"Boba Fett","9958088138":"Invincible","5667308555":"I Have You Now","7420426716":"Dagger Squadron Pilot","8523415830":"Anakin Skywalker","1965647391":"Blade Squadron B-Wing","1990020761":"Shuttle Tydirium","3388566378":"Ahsoka Tano","6354077246":"Black Squadron Scout Wing","6720065735":"Han Solo","1356826899":"Home One","8833191722":"Never Tell Me the Odds","0964312065":"It's a Trap","6421006753":"The Mandalorian","0587196584":"Independent Smuggler","5673100759":"BoShek","1303370295":"Death Space Skirmisher","2711104544":"Guerilla Soldier","6272475624":"Stolen AT-Hauler","3567283316":"Radiant VII","4819196588":"Electromagnetic Pulse","8105698374":"Commandeer","3504944818":"TIE Bomber","2922063712":"Sith Trooper","7157369742":"TIE Dagger Vanguard","6648978613":"Fett's Firespray","1519837763":"Shuttle ST-149","2657417747":"Quasar TIE Carrier","5375722883":"R2-D2","5052103576":"Resistance X-Wing","8845408332":"Millennium Falcon","7325248681":"Sabine's Masterpiece","6854247423":"Tantive IV","2177194044":"Swarming Vulture Droid","7268926664":"TIE Fighter","9415311381":"X-Wing","2736121234":"Experience","9976985144":"Shield"}; return data[cardID] !== undefined ? data[cardID] : ""; } diff --git a/GeneratedCode/GeneratedCardDictionaries.php b/GeneratedCode/GeneratedCardDictionaries.php index 3dbcde42b..f7b3fa8b9 100644 --- a/GeneratedCode/GeneratedCardDictionaries.php +++ b/GeneratedCode/GeneratedCardDictionaries.php @@ -882,30 +882,38 @@ function CardTitle($cardID) { '0753794638' => 'Corvus', 5184505570 => 'Chimaera', '0235116526' => 'Fleet Interdictor', + 3858069945 => 'Power from Pain', 9810057689 => 'No Glory, Only Results', 9430527677 => 'Hera Syndulla', 1039444094 => 'Paige Tico', 3475471540 => 'Cassian Andor', + 5306772000 => 'Phantom II', 5751831621 => 'Red Squadron X-Wing', 5422802110 => 'D\'Qar Cargo Frigate', + 5763330426 => 'The Ghost', 6300552434 => 'Gold Leader', 5834478243 => 'You\'re All Clear, Kid', 3874382333 => 'Academy Graduate', 1397553238 => 'Desperate Commando', '0596500013' => 'Landing Shuttle', + 7610382003 => 'CR90 Relief Runner', 5093056978 => 'Direct Hit', + 6196035152 => 'Nebula Ignition', 1034181657 => 'First Order TIE Fighter', 5345999887 => 'Kijimi Patrollers', 4921363233 => 'Wingman Victor Two', 9811031405 => 'Victor Leader', 1911230033 => 'Wingman Victor Three', + '0097256640' => 'TIE Ambush Squadron', 3427170256 => 'Captain Phasma', 7138400365 => 'The Invisible Hand', + 2870117979 => 'Executor', 6610553087 => 'Nien Nunb', 7653629848 => 'Phoenix Squadron A-Wing', 2388374331 => 'Blue Leader', 7924461681 => 'Leia Organa', '0524529055' => 'Snap Wexley', + 8757741946 => 'Poe Dameron', 3711891756 => 'Red Leader', 7208848194 => 'Chewbacca', 8779760486 => 'Raddus', @@ -933,8 +941,10 @@ function CardTitle($cardID) { 6228218834 => 'Tactical Heavy Bomber', 7072861308 => 'Profundity', 2995807621 => 'Trench Run', + 4147863169 => 'Relentless Firespray', 3666212779 => 'Captain Tarkin', 8287246260 => 'Droid Missile Platform', + 4019449999 => 'Cham Syndulla', 4560739921 => 'Hunting Aggressor', 3885807284 => 'Fight Fire With Fire', 8734471238 => 'Stay on Target', @@ -969,11 +979,13 @@ function CardTitle($cardID) { 4819196588 => 'Electromagnetic Pulse', 8105698374 => 'Commandeer', 3504944818 => 'TIE Bomber', + 2922063712 => 'Sith Trooper', 7157369742 => 'TIE Dagger Vanguard', 6648978613 => 'Fett\'s Firespray', 1519837763 => 'Shuttle ST-149', 2657417747 => 'Quasar TIE Carrier', 5375722883 => 'R2-D2', + 5052103576 => 'Resistance X-Wing', 8845408332 => 'Millennium Falcon', 7325248681 => 'Sabine\'s Masterpiece', 6854247423 => 'Tantive IV', @@ -1333,16 +1345,20 @@ function CardSubtitle($cardID) { 9430527677 => 'We\'ve Lost Enough', 1039444094 => 'Dropping the Hammer', 3475471540 => 'Threading the Eye', + 5306772000 => 'Modified to Dock', + 5763330426 => 'Heart of the Family', 6300552434 => 'Fastest Ship in the Fleet', 4921363233 => 'Mauler Mithel', 9811031405 => 'Leading from the Front', 1911230033 => 'Backstabber', 3427170256 => 'On My Command', 7138400365 => 'Crawling With Vultures', + 2870117979 => 'Might of the Empire', 6610553087 => 'Loyal Co-Pilot', 2388374331 => 'Scarif Air Support', 7924461681 => 'Pilots, To Your Stations', '0524529055' => 'Resistance Recon Flier', + 8757741946 => 'One Hell of a Pilot', 3711891756 => 'Form Up', 7208848194 => 'Faithful First Mate', 8779760486 => 'Holdo\'s Final Command', @@ -1360,6 +1376,7 @@ function CardSubtitle($cardID) { 8500401413 => 'Running the Trench', 7072861308 => 'We Fight!', 3666212779 => 'Full Forward Assault', + 4019449999 => 'Rallying Ryloth', 9720757803 => 'Enjoy the Exit', 3876470102 => 'Reliable and Deadly', 7192849828 => 'The Findsman\'s Pursuit', @@ -2217,30 +2234,38 @@ function CardCost($cardID) { '0753794638' => 5, 5184505570 => 6, '0235116526' => 7, + 3858069945 => 3, 9810057689 => 5, 9430527677 => 2, 1039444094 => 2, 3475471540 => 3, + 5306772000 => 3, 5751831621 => 3, 5422802110 => 5, + 5763330426 => 5, 6300552434 => 6, 5834478243 => 2, 3874382333 => 2, 1397553238 => 2, '0596500013' => 3, + 7610382003 => 6, 5093056978 => 4, + 6196035152 => 9, 1034181657 => 1, 5345999887 => 2, 4921363233 => 2, 9811031405 => 3, 1911230033 => 3, + '0097256640' => 4, 3427170256 => 5, 7138400365 => 6, + 2870117979 => 11, 6610553087 => 1, 7653629848 => 2, 2388374331 => 3, 7924461681 => 3, '0524529055' => 3, + 8757741946 => 4, 3711891756 => 4, 7208848194 => 5, 8779760486 => 7, @@ -2268,8 +2293,10 @@ function CardCost($cardID) { 6228218834 => 5, 7072861308 => 9, 2995807621 => 1, + 4147863169 => 6, 3666212779 => 3, 8287246260 => 3, + 4019449999 => 4, 4560739921 => 4, 3885807284 => 1, 8734471238 => 2, @@ -2304,11 +2331,13 @@ function CardCost($cardID) { 4819196588 => 1, 8105698374 => 5, 3504944818 => 2, + 2922063712 => 3, 7157369742 => 3, 6648978613 => 4, 1519837763 => 4, 2657417747 => 6, 5375722883 => 1, + 5052103576 => 2, 8845408332 => 3, 7325248681 => 3, 6854247423 => 7, @@ -2968,24 +2997,30 @@ function CardHPDictionary($cardID) { 9430527677 => 3, 1039444094 => 2, 3475471540 => 4, + 5306772000 => 3, 5751831621 => 4, 5422802110 => 7, + 5763330426 => 6, 6300552434 => 5, 3874382333 => 2, 1397553238 => 2, '0596500013' => 4, + 7610382003 => 6, 1034181657 => 1, 5345999887 => 1, 4921363233 => 2, 9811031405 => 4, 1911230033 => 3, + '0097256640' => 3, 3427170256 => 6, 7138400365 => 6, + 2870117979 => 12, 6610553087 => 2, 7653629848 => 2, 2388374331 => 3, 7924461681 => 4, '0524529055' => 5, + 8757741946 => 3, 3711891756 => 4, 7208848194 => 6, 8779760486 => 6, @@ -3008,8 +3043,10 @@ function CardHPDictionary($cardID) { 8500401413 => 4, 6228218834 => 5, 7072861308 => 9, + 4147863169 => 6, 3666212779 => 5, 8287246260 => 2, + 4019449999 => 4, 4560739921 => 6, 9720757803 => 3, 7389195577 => 3, @@ -3035,11 +3072,13 @@ function CardHPDictionary($cardID) { 6272475624 => 5, 3567283316 => 6, 3504944818 => 4, + 2922063712 => 3, 7157369742 => 2, 6648978613 => 4, 1519837763 => 4, 2657417747 => 7, 5375722883 => 4, + 5052103576 => 2, 8845408332 => 4, 7325248681 => 3, 6854247423 => 7, @@ -3650,24 +3689,30 @@ function CardPower($cardID) { 9430527677 => 2, 1039444094 => 3, 3475471540 => 3, + 5306772000 => 3, 5751831621 => 3, 5422802110 => 6, + 5763330426 => 5, 6300552434 => 5, 3874382333 => 1, 1397553238 => 2, '0596500013' => 2, + 7610382003 => 4, 1034181657 => 2, 5345999887 => 1, 4921363233 => 3, 9811031405 => 2, 1911230033 => 4, + '0097256640' => 2, 3427170256 => 5, 7138400365 => 6, + 2870117979 => 12, 6610553087 => 1, 7653629848 => 3, 2388374331 => 3, 7924461681 => 3, '0524529055' => 2, + 8757741946 => 3, 3711891756 => 3, 7208848194 => 5, 8779760486 => 8, @@ -3689,8 +3734,10 @@ function CardPower($cardID) { 8500401413 => 3, 6228218834 => 3, 7072861308 => 8, + 4147863169 => 4, 3666212779 => 2, 8287246260 => 4, + 4019449999 => 5, 4560739921 => 3, 9720757803 => 3, 7389195577 => 2, @@ -3715,11 +3762,13 @@ function CardPower($cardID) { 2711104544 => 2, 6272475624 => 4, 3567283316 => 5, + 2922063712 => 3, 7157369742 => 2, 6648978613 => 4, 1519837763 => 3, 2657417747 => 5, 5375722883 => 1, + 5052103576 => 2, 8845408332 => 3, 7325248681 => 3, 6854247423 => 5, @@ -3799,6 +3848,7 @@ function CardUpgradeHPDictionary($cardID) { 1911230033 => 1, 6610553087 => 2, '0524529055' => 2, + 8757741946 => 3, 7208848194 => 3, 3282713547 => 2, 1463418669 => 3, @@ -3893,6 +3943,7 @@ function CardUpgradePower($cardID) { 1911230033 => 1, 6610553087 => 1, '0524529055' => 2, + 8757741946 => 2, 7208848194 => 3, 3282713547 => 1, 2283726359 => 1, @@ -4770,30 +4821,38 @@ function CardAspects($cardID) { '0753794638' => 'Vigilance,Villainy', 5184505570 => 'Vigilance,Villainy', '0235116526' => 'Vigilance,Villainy', + 3858069945 => 'Vigilance,Villainy', 9810057689 => 'Vigilance,Villainy', 9430527677 => 'Vigilance,Heroism', 1039444094 => 'Vigilance,Heroism', 3475471540 => 'Vigilance,Heroism', + 5306772000 => 'Vigilance,Heroism', 5751831621 => 'Vigilance,Heroism', 5422802110 => 'Vigilance,Heroism', + 5763330426 => 'Vigilance,Heroism', 6300552434 => 'Vigilance,Heroism', 5834478243 => 'Vigilance,Heroism', 3874382333 => 'Vigilance', 1397553238 => 'Vigilance', '0596500013' => 'Vigilance', + 7610382003 => 'Vigilance', 5093056978 => 'Vigilance', + 6196035152 => 'Vigilance', 1034181657 => 'Command,Villainy', 5345999887 => 'Command,Villainy', 4921363233 => 'Command,Villainy', 9811031405 => 'Command,Villainy', 1911230033 => 'Command,Villainy', + '0097256640' => 'Command,Villainy', 3427170256 => 'Command,Villainy', 7138400365 => 'Command,Villainy', + 2870117979 => 'Command,Villainy', 6610553087 => 'Command,Heroism', 7653629848 => 'Command,Heroism', 2388374331 => 'Command,Heroism', 7924461681 => 'Command,Heroism', '0524529055' => 'Command,Heroism', + 8757741946 => 'Command,Heroism', 3711891756 => 'Command,Heroism', 7208848194 => 'Command,Heroism', 8779760486 => 'Command,Heroism', @@ -4821,8 +4880,10 @@ function CardAspects($cardID) { 6228218834 => 'Aggression,Heroism', 7072861308 => 'Aggression,Heroism', 2995807621 => 'Aggression,Heroism', + 4147863169 => 'Aggression,Aggression', 3666212779 => 'Aggression', 8287246260 => 'Aggression', + 4019449999 => 'Aggression', 4560739921 => 'Aggression', 3885807284 => 'Aggression', 8734471238 => 'Aggression', @@ -4857,11 +4918,13 @@ function CardAspects($cardID) { 4819196588 => 'Cunning', 8105698374 => 'Cunning', 3504944818 => 'Villainy', + 2922063712 => 'Villainy', 7157369742 => 'Villainy', 6648978613 => 'Villainy', 1519837763 => 'Villainy', 2657417747 => 'Villainy', 5375722883 => 'Heroism', + 5052103576 => 'Heroism', 8845408332 => 'Heroism', 7325248681 => 'Heroism', 6854247423 => 'Heroism', @@ -5715,30 +5778,38 @@ function CardTraits($cardID) { '0753794638' => 'Imperial,Vehicle,Capital Ship', 5184505570 => 'Imperial,Vehicle,Capital Ship', '0235116526' => 'Imperial,Vehicle,Capital Ship', + 3858069945 => 'Tactic', 9810057689 => 'Tactic', 9430527677 => 'Rebel,Twi\'lek,Spectre,Pilot', 1039444094 => 'Resistance,Pilot', 3475471540 => 'Rebel,Pilot', + 5306772000 => 'Rebel,Vehicle,Transport,Spectre', 5751831621 => 'Rebel,Vehicle,Fighter', 5422802110 => 'Resistance,Vehicle,Capital Ship', + 5763330426 => 'Rebel,Vehicle,Transport,Spectre', 6300552434 => 'Rebel,Vehicle,Transport', 5834478243 => 'Gambit', 3874382333 => 'Imperial,Pilot', 1397553238 => 'Resistance,Trooper', '0596500013' => 'Imperial,Vehicle,Transport', + 7610382003 => 'Rebel,Vehicle,Capital Ship', 5093056978 => 'Tactic', + 6196035152 => 'Disaster', 1034181657 => 'First Order,Vehicle,Fighter', 5345999887 => 'First Order,Vehicle,Fighter', 4921363233 => 'Imperial,Pilot', 9811031405 => 'Imperial,Vehicle,Fighter', 1911230033 => 'Imperial,Pilot', + '0097256640' => 'Imperial,Vehicle,Fighter', 3427170256 => 'First Order,Trooper', 7138400365 => 'Separatist,Vehicle,Capital Ship', + 2870117979 => 'Imperial,Vehicle,Capital Ship', 6610553087 => 'Rebel,Pilot', 7653629848 => 'Rebel,Vehicle,Fighter', 2388374331 => 'Rebel,Vehicle,Fighter', 7924461681 => 'Rebel,Official', '0524529055' => 'Resistance,Pilot', + 8757741946 => 'Resistance,Pilot', 3711891756 => 'Rebel,Vehicle,Fighter', 7208848194 => 'Rebel,Wookiee,Pilot', 8779760486 => 'Resistance,Vehicle,Capital Ship', @@ -5766,8 +5837,10 @@ function CardTraits($cardID) { 6228218834 => 'Resistance,Vehicle,Transport', 7072861308 => 'Rebel,Vehicle,Capital Ship', 2995807621 => 'Gambit', + 4147863169 => 'Underworld,Vehicle,Transport', 3666212779 => 'Republic,Official', 8287246260 => 'Separatist,Droid,Vehicle,Transport', + 4019449999 => 'Rebel,Twi\'lek', 4560739921 => 'Underworld,Vehicle,Transport', 3885807284 => 'Gambit', 8734471238 => 'Tactic', @@ -5802,11 +5875,13 @@ function CardTraits($cardID) { 4819196588 => 'Tactic', 8105698374 => 'Trick', 3504944818 => 'Imperial,Vehicle,Fighter', + 2922063712 => 'First Order,Sith,Trooper', 7157369742 => 'First Order,Sith,Vehicle,Fighter', 6648978613 => 'Underworld,Vehicle,Transport', 1519837763 => 'Imperial,Vehicle,Transport', 2657417747 => 'Imperial,Vehicle,Capital Ship', 5375722883 => 'Rebel,Droid,Pilot', + 5052103576 => 'Resistance,Vehicle,Fighter', 8845408332 => 'Rebel,Vehicle,Transport', 7325248681 => 'Rebel,Vehicle,Fighter,Spectre', 6854247423 => 'Rebel,Vehicle,Capital Ship', @@ -6436,24 +6511,30 @@ function CardArenas($cardID) { 9430527677 => 'Ground', 1039444094 => 'Ground', 3475471540 => 'Ground', + 5306772000 => 'Space', 5751831621 => 'Space', 5422802110 => 'Space', + 5763330426 => 'Space', 6300552434 => 'Space', 3874382333 => 'Ground', 1397553238 => 'Ground', '0596500013' => 'Space', + 7610382003 => 'Space', 1034181657 => 'Space', 5345999887 => 'Space', 4921363233 => 'Ground', 9811031405 => 'Space', 1911230033 => 'Ground', + '0097256640' => 'Space', 3427170256 => 'Ground', 7138400365 => 'Space', + 2870117979 => 'Space', 6610553087 => 'Ground', 7653629848 => 'Space', 2388374331 => 'Space', 7924461681 => 'Ground', '0524529055' => 'Ground', + 8757741946 => 'Ground', 3711891756 => 'Space', 7208848194 => 'Ground', 8779760486 => 'Space', @@ -6476,8 +6557,10 @@ function CardArenas($cardID) { 8500401413 => 'Space', 6228218834 => 'Space', 7072861308 => 'Space', + 4147863169 => 'Space', 3666212779 => 'Ground', 8287246260 => 'Space', + 4019449999 => 'Ground', 4560739921 => 'Space', 9720757803 => 'Space', 7389195577 => 'Space', @@ -6503,11 +6586,13 @@ function CardArenas($cardID) { 6272475624 => 'Space', 3567283316 => 'Space', 3504944818 => 'Space', + 2922063712 => 'Ground', 7157369742 => 'Space', 6648978613 => 'Space', 1519837763 => 'Space', 2657417747 => 'Space', 5375722883 => 'Ground', + 5052103576 => 'Space', 8845408332 => 'Space', 7325248681 => 'Space', 6854247423 => 'Space', @@ -7401,30 +7486,38 @@ function DefinedCardType($cardID) { '0753794638' => 'Unit', 5184505570 => 'Unit', '0235116526' => 'Unit', + 3858069945 => 'Event', 9810057689 => 'Event', 9430527677 => 'Unit', 1039444094 => 'Unit', 3475471540 => 'Unit', + 5306772000 => 'Unit', 5751831621 => 'Unit', 5422802110 => 'Unit', + 5763330426 => 'Unit', 6300552434 => 'Unit', 5834478243 => 'Event', 3874382333 => 'Unit', 1397553238 => 'Unit', '0596500013' => 'Unit', + 7610382003 => 'Unit', 5093056978 => 'Event', + 6196035152 => 'Event', 1034181657 => 'Unit', 5345999887 => 'Unit', 4921363233 => 'Unit', 9811031405 => 'Unit', 1911230033 => 'Unit', + '0097256640' => 'Unit', 3427170256 => 'Unit', 7138400365 => 'Unit', + 2870117979 => 'Unit', 6610553087 => 'Unit', 7653629848 => 'Unit', 2388374331 => 'Unit', 7924461681 => 'Unit', '0524529055' => 'Unit', + 8757741946 => 'Unit', 3711891756 => 'Unit', 7208848194 => 'Unit', 8779760486 => 'Unit', @@ -7452,8 +7545,10 @@ function DefinedCardType($cardID) { 6228218834 => 'Unit', 7072861308 => 'Unit', 2995807621 => 'Event', + 4147863169 => 'Unit', 3666212779 => 'Unit', 8287246260 => 'Unit', + 4019449999 => 'Unit', 4560739921 => 'Unit', 3885807284 => 'Event', 8734471238 => 'Event', @@ -7488,11 +7583,13 @@ function DefinedCardType($cardID) { 4819196588 => 'Event', 8105698374 => 'Event', 3504944818 => 'Unit', + 2922063712 => 'Unit', 7157369742 => 'Unit', 6648978613 => 'Unit', 1519837763 => 'Unit', 2657417747 => 'Unit', 5375722883 => 'Unit', + 5052103576 => 'Unit', 8845408332 => 'Unit', 7325248681 => 'Unit', 6854247423 => 'Unit', @@ -8005,16 +8102,20 @@ function CardIsUnique($cardID) { 9430527677 => 1, 1039444094 => 1, 3475471540 => 1, + 5306772000 => 1, + 5763330426 => 1, 6300552434 => 1, 4921363233 => 1, 9811031405 => 1, 1911230033 => 1, 3427170256 => 1, 7138400365 => 1, + 2870117979 => 1, 6610553087 => 1, 2388374331 => 1, 7924461681 => 1, '0524529055' => 1, + 8757741946 => 1, 3711891756 => 1, 7208848194 => 1, 8779760486 => 1, @@ -8032,6 +8133,7 @@ function CardIsUnique($cardID) { 8500401413 => 1, 7072861308 => 1, 3666212779 => 1, + 4019449999 => 1, 9720757803 => 1, 3876470102 => 1, 7192849828 => 1, @@ -8231,17 +8333,21 @@ function HasWhenPlayed($cardID) { 5184505570 => true, 5751831621 => true, 5345999887 => true, + '0097256640' => true, 3427170256 => true, 7138400365 => true, + 2870117979 => true, 2388374331 => true, 7924461681 => true, '0524529055' => true, + 8757741946 => true, 2778554011 => true, '0926549684' => true, 9595057518 => true, 3722493191 => true, 1330473789 => true, 7072861308 => true, + 4019449999 => true, 1965647391 => true, 3388566378 => true, 6421006753 => true, @@ -8302,6 +8408,9 @@ function HasWhenDestroyed($cardID) { '0235116526' => true, 1397553238 => true, '0596500013' => true, + 7610382003 => true, + '0097256640' => true, + 2870117979 => true, 8779760486 => true, 6861397107 => true, 7072861308 => true, @@ -9196,30 +9305,38 @@ function CardSet($cardID) { '0753794638' => 'JTL', 5184505570 => 'JTL', '0235116526' => 'JTL', + 3858069945 => 'JTL', 9810057689 => 'JTL', 9430527677 => 'JTL', 1039444094 => 'JTL', 3475471540 => 'JTL', + 5306772000 => 'JTL', 5751831621 => 'JTL', 5422802110 => 'JTL', + 5763330426 => 'JTL', 6300552434 => 'JTL', 5834478243 => 'JTL', 3874382333 => 'JTL', 1397553238 => 'JTL', '0596500013' => 'JTL', + 7610382003 => 'JTL', 5093056978 => 'JTL', + 6196035152 => 'JTL', 1034181657 => 'JTL', 5345999887 => 'JTL', 4921363233 => 'JTL', 9811031405 => 'JTL', 1911230033 => 'JTL', + '0097256640' => 'JTL', 3427170256 => 'JTL', 7138400365 => 'JTL', + 2870117979 => 'JTL', 6610553087 => 'JTL', 7653629848 => 'JTL', 2388374331 => 'JTL', 7924461681 => 'JTL', '0524529055' => 'JTL', + 8757741946 => 'JTL', 3711891756 => 'JTL', 7208848194 => 'JTL', 8779760486 => 'JTL', @@ -9247,8 +9364,10 @@ function CardSet($cardID) { 6228218834 => 'JTL', 7072861308 => 'JTL', 2995807621 => 'JTL', + 4147863169 => 'JTL', 3666212779 => 'JTL', 8287246260 => 'JTL', + 4019449999 => 'JTL', 4560739921 => 'JTL', 3885807284 => 'JTL', 8734471238 => 'JTL', @@ -9283,11 +9402,13 @@ function CardSet($cardID) { 4819196588 => 'JTL', 8105698374 => 'JTL', 3504944818 => 'JTL', + 2922063712 => 'JTL', 7157369742 => 'JTL', 6648978613 => 'JTL', 1519837763 => 'JTL', 2657417747 => 'JTL', 5375722883 => 'JTL', + 5052103576 => 'JTL', 8845408332 => 'JTL', 7325248681 => 'JTL', 6854247423 => 'JTL', @@ -10109,30 +10230,38 @@ function UUIDLookup($cardID) { 'JTL_038' => '0753794638', 'JTL_039' => '5184505570', 'JTL_040' => '0235116526', + 'JTL_042' => '3858069945', 'JTL_043' => '9810057689', 'JTL_045' => '9430527677', 'JTL_046' => '1039444094', 'JTL_048' => '3475471540', + 'JTL_050' => '5306772000', 'JTL_051' => '5751831621', 'JTL_052' => '5422802110', + 'JTL_053' => '5763330426', 'JTL_054' => '6300552434', 'JTL_055' => '5834478243', 'JTL_058' => '3874382333', 'JTL_060' => '1397553238', 'JTL_063' => '0596500013', + 'JTL_071' => '7610382003', 'JTL_078' => '5093056978', + 'JTL_080' => '6196035152', 'JTL_081' => '1034181657', 'JTL_082' => '5345999887', 'JTL_084' => '4921363233', 'JTL_085' => '9811031405', 'JTL_086' => '1911230033', + 'JTL_087' => '0097256640', 'JTL_088' => '3427170256', 'JTL_089' => '7138400365', + 'JTL_090' => '2870117979', 'JTL_093' => '6610553087', 'JTL_095' => '7653629848', 'JTL_096' => '2388374331', 'JTL_097' => '7924461681', 'JTL_098' => '0524529055', + 'JTL_100' => '8757741946', 'JTL_101' => '3711891756', 'JTL_103' => '7208848194', 'JTL_104' => '8779760486', @@ -10160,8 +10289,10 @@ function UUIDLookup($cardID) { 'JTL_152' => '6228218834', 'JTL_154' => '7072861308', 'JTL_156' => '2995807621', + 'JTL_157' => '4147863169', 'JTL_161' => '3666212779', 'JTL_162' => '8287246260', + 'JTL_164' => '4019449999', 'JTL_165' => '4560739921', 'JTL_173' => '3885807284', 'JTL_177' => '8734471238', @@ -10196,11 +10327,13 @@ function UUIDLookup($cardID) { 'JTL_230' => '4819196588', 'JTL_235' => '8105698374', 'JTL_237' => '3504944818', + 'JTL_238' => '2922063712', 'JTL_239' => '7157369742', 'JTL_240' => '6648978613', 'JTL_242' => '1519837763', 'JTL_243' => '2657417747', 'JTL_245' => '5375722883', + 'JTL_247' => '5052103576', 'JTL_249' => '8845408332', 'JTL_250' => '7325248681', 'JTL_252' => '6854247423', @@ -11092,30 +11225,38 @@ function CardIDLookup($cardID) { '0753794638' => 'JTL_038', 5184505570 => 'JTL_039', '0235116526' => 'JTL_040', + 3858069945 => 'JTL_042', 9810057689 => 'JTL_043', 9430527677 => 'JTL_045', 1039444094 => 'JTL_046', 3475471540 => 'JTL_048', + 5306772000 => 'JTL_050', 5751831621 => 'JTL_051', 5422802110 => 'JTL_052', + 5763330426 => 'JTL_053', 6300552434 => 'JTL_054', 5834478243 => 'JTL_055', 3874382333 => 'JTL_058', 1397553238 => 'JTL_060', '0596500013' => 'JTL_063', + 7610382003 => 'JTL_071', 5093056978 => 'JTL_078', + 6196035152 => 'JTL_080', 1034181657 => 'JTL_081', 5345999887 => 'JTL_082', 4921363233 => 'JTL_084', 9811031405 => 'JTL_085', 1911230033 => 'JTL_086', + '0097256640' => 'JTL_087', 3427170256 => 'JTL_088', 7138400365 => 'JTL_089', + 2870117979 => 'JTL_090', 6610553087 => 'JTL_093', 7653629848 => 'JTL_095', 2388374331 => 'JTL_096', 7924461681 => 'JTL_097', '0524529055' => 'JTL_098', + 8757741946 => 'JTL_100', 3711891756 => 'JTL_101', 7208848194 => 'JTL_103', 8779760486 => 'JTL_104', @@ -11143,8 +11284,10 @@ function CardIDLookup($cardID) { 6228218834 => 'JTL_152', 7072861308 => 'JTL_154', 2995807621 => 'JTL_156', + 4147863169 => 'JTL_157', 3666212779 => 'JTL_161', 8287246260 => 'JTL_162', + 4019449999 => 'JTL_164', 4560739921 => 'JTL_165', 3885807284 => 'JTL_173', 8734471238 => 'JTL_177', @@ -11179,11 +11322,13 @@ function CardIDLookup($cardID) { 4819196588 => 'JTL_230', 8105698374 => 'JTL_235', 3504944818 => 'JTL_237', + 2922063712 => 'JTL_238', 7157369742 => 'JTL_239', 6648978613 => 'JTL_240', 1519837763 => 'JTL_242', 2657417747 => 'JTL_243', 5375722883 => 'JTL_245', + 5052103576 => 'JTL_247', 8845408332 => 'JTL_249', 7325248681 => 'JTL_250', 6854247423 => 'JTL_252', @@ -11197,19 +11342,31 @@ function CardIDLookup($cardID) { } function CardTitles() { - return '2-1B Surgical Droid|332nd Stalwart|4-LOM|41st Elite Corps|501st Liberator|97th Legion|A Fine Addition|A New Adventure|AT-AT Suppressor|AT-ST|AT-TE Vanguard|Aayla Secura|Academy Defense Walker|Academy Graduate|Academy Training|Adelphi Patrol Wing|Administrator\'s Tower|Admiral Ackbar|Admiral Holdo|Admiral Motti|Admiral Ozzel|Admiral Piett|Admiral Trench|Admiral Yularen|Advanced Recon Commando|Agent Kallus|Aggression|Aggrieved Parliamentarian|Ahsoka Tano|Ahsoka\'s Padawan Lightsaber|Aid from the Innocent|Allegiant General Pryde|Alliance Dispatcher|Alliance X-Wing|Altering the Deal|Anakin Skywalker|Anakin\'s Interceptor|Ardent Sympathizer|Armed to the Teeth|Armored Saber Tank|Arquitens Assault Cruiser|Asajj Ventress|Asteroid Sanctuary|Attack Pattern Delta|Aurra Sing|Auzituck Liberator Gunship|Avenger|B1 Attack Platform|B1 Security Team|B2 Legionnaires|BB-8|Bail Organa|Baktoid Spider Droid|Bamboozle|Banshee|Barriss Offee|Batch Brothers|Battle Droid|Battle Droid Escort|Battle Droid Legion|Battlefield Marine|Baze Malbus|Bazine Netal|Bendu|Benthic \'Two Tubes\'|Bib Fortuna|Biggs Darklighter|Black One|Black Squadron Scout Wing|Black Sun Starfighter|Blade Squadron B-Wing|Blizzard Assault AT-AT|Blood Sport|Blue Leader|Bo-Katan Kryze|BoShek|Boba Fett|Boba Fett\'s Armor|Bodhi Rook|Bold Recon Commando|Bold Resistance|Bombing Run|Bossk|Bounty Guild Initiate|Bounty Hunter Crew|Bounty Hunter\'s Quarry|Bounty Posting|Brain Invaders|Bravado|Breaking In|Bright Hope|Brutal Traditions|C-3PO|Cad Bane|Calculated Lethality|Calculating MagnaGuard|Cantina Bouncer|Cantina Braggart|Capital City|Captain Phasma|Captain Rex|Captain Tarkin|Captain Typho|Cargo Juggernaut|Cartel Spacer|Cartel Turncoat|Cassian Andor|Catacombs of Cadera|Caught in the Crossfire|Cell Block Guard|Chain Code Collector|Chancellor Palpatine|Change of Heart|Chewbacca|Chimaera|Chirrut Îmwe|Choose Sides|Chopper|Chopper Base|Clan Challengers|Clan Saxon Gauntlet|Clan Wren Rescuer|Clear the Field|Clone|Clone Cohort|Clone Commander Cody|Clone Deserter|Clone Dive Trooper|Clone Heavy Gunner|Clone Trooper|Cloud City Wing Guard|Cloud-Rider|Cobb Vanth|Collections Starhopper|Colonel Yularen|Colossus|Command|Command Center|Commandeer|Commission|Compassionate Senator|Concord Dawn Interceptors|Confederate Courier|Confederate Tri-Fighter|Confiscate|Consolidation of Power|Consortium StarViper|Consular Security Force|Corellian Freighter|Corner the Prey|Coronet City|Coruscant Dissident|Coruscant Guard|Corvus|Count Dooku|Covert Strength|Covetous Rivals|Crafty Smuggler|Creative Thinking|Criminal Muscle|Cripple Authority|Crosshair|Cunning|D\'Qar Cargo Frigate|DJ|Dagger Squadron Pilot|Dagobah Swamp|Daring Raid|Darth Maul|Darth Vader|Data Vault|Daughter of Dathomir|Death Mark|Death Space Skirmisher|Death Star Stormtrooper|Death Trooper|Death Watch Hideout|Death Watch Loyalist|Death by Droids|Del Meeko|Dendup\'s Loyalist|Dengar|Desperado Freighter|Desperate Attack|Desperate Commando|Detention Block Rescue|Devastating Gunship|Devastator|Devotion|Direct Hit|Director Krennic|Disabling Fang Fighter|Disaffected Senator|Disarm|Discerning Veteran|Disruptive Burst|Distant Patroller|Doctor Aphra|Doctor Evazan|Doctor Pershing|Don\'t Get Cocky|Droid Cohort|Droid Commando|Droid Deployment|Droid Manufactory|Droid Missile Platform|Droid Starfighter|Droideka Security|Drop In|Dryden Vos|Duchess\'s Champion|Dwarf Spider Droid|Echo|Echo Base|Echo Base Defender|Eject|Electromagnetic Pulse|Electrostaff|Elite P-38 Starfighter|Embo|Emperor Palpatine|Emperor\'s Royal Guard|Encouraging Leadership|Endless Legions|Energy Conversion Lab|Enforced Loyalty|Enfys Nest|Enterprising Lackeys|Enticing Reward|Entrenched|Ephant Mon|Equalize|Escort Skiff|Eta-2 Light Interceptor|Evacuate|Evidence of the Crime|Execute Order 66|Experience|Ezra Bridger|Falchion Ion Tank|Fallen Lightsaber|Favorable Delegate|Fell the Dragon|Fenn Rau|Fennec Shand|Fett\'s Firespray|Fifth Brother|Fight Fire With Fire|Fighters for Freedom|Final Showdown|Finalizer|Finn|First Legion Snowtrooper|First Light|First Order Stormtrooper|First Order TIE Fighter|Fives|Fleet Interdictor|Fleet Lieutenant|Follower of The Way|For The Republic|For a Cause I Believe In|Force Choke|Force Lightning|Force Throw|Forced Surrender|Foresight|Foundling|Freelance Assassin|Freetown Backup|Frisk|Frontier AT-RT|Frontier Trader|Frontline Shuttle|Frozen in Carbonite|Fugitive Wookiee|Galactic Ambition|Gamorrean Guards|Gamorrean Retainer|Gar Saxon|General Dodonna|General Draven|General Grievous|General Hux|General Krell|General Rieekan|General Tagge|General Veers|General\'s Blade|General\'s Guardian|Gentle Giant|Geonosis Patrol Fighter|Gideon Hask|Gideon\'s Light Cruiser|Give In to Your Anger|Gladiator Star Destroyer|Gold Leader|Gor|Grand Admiral Thrawn|Grand Inquisitor|Grand Moff Tarkin|Greedo|Greef Karga|Green Squadron A-Wing|Grenade Strike|Grey Squadron Y-Wing|Grievous Reassembly|Grievous\'s Wheel Bike|Grim Resolve|Grogu|Guardian of the Whills|Guarding the Way|Guavian Antagonizer|Guerilla Attack Pod|Guerilla Insurgency|Guerilla Soldier|Guild Target|HWK-290 Freighter|Hailfire Tank|Han Solo|Hardpoint Heavy Blaster|Headhunter Squadron|Headhunting|Heavy Persuader Tank|Hello There|Hera Syndulla|Heroes on Both Sides|Heroic Renegade|Heroic Resolve|Heroic Sacrifice|Hevy|Hidden Sharpshooter|Hold-Out Blaster|Home One|Homestead Militia|Hondo Ohnaka|Hotshot DL-44 Blaster|Hotshot V-Wing|Hound\'s Tooth|House Kast Soldier|Hunter|Hunter of the Haxion Brood|Hunting Aggressor|Hunting Nexu|Hutt\'s Henchmen|Huyang|Hylobon Enforcer|I Am Your Father|I Had No Choice|I Have You Now|I Have the High Ground|IG-11|IG-2000|IG-88|ISB Agent|Iden Versio|Imperial Interceptor|Imprisoned|Impropriety Among Thieves|In Defense of Kamino|In Pursuit|Incinerator Trooper|Independent Senator|Independent Smuggler|Infantry of the 212th|Inferno Four|Infiltrating Demolisher|Infiltrator\'s Skill|Inspiring Mentor|Interceptor Ace|Invincible|It Binds All Things|It\'s a Trap|Jabba the Hutt|Jabba\'s Palace|Jabba\'s Rancor|Jango Fett|Jar Jar Binks|Jawa Scavenger|Jedha Agitator|Jedha City|Jedi Lightsaber|Jesse|Jetpack|Jyn Erso|K-2SO|KCM Mining Facility|Kalani|Kanan Jarrus|Karabast|Kashyyyk Defender|Keep Fighting|Kestro City|Ketsu Onyo|Ki-Adi-Mundi|Kihraxz Heavy Fighter|Kijimi Patrollers|Kintan Intimidator|Kit Fisto|Knight of the Republic|Koiogran Turn|Koska Reeves|Kragan Gorr|Kraken|Krayt Dragon|Krrsantan|Kuiil|Kylo Ren|Kylo\'s TIE Silencer|L3-37|Lady Proxima|Lair of Grievous|Landing Shuttle|Lando Calrissian|Legal Authority|Leia Organa|Let the Wookiee Win|Lethal Crackdown|Level 1313|Liberated Slaves|Lieutenant Childsen|Lom Pyke|Look the Other Way|Lothal Insurgent|Low Altitude Gunship|Luke Skywalker|Luke\'s Lightsaber|Luminara Unduli|Lurking TIE Phantom|Lux Bonteri|Ma Klounkee|Mace Windu|Mace Windu\'s Lightsaber|MagnaGuard Wing Leader|Make an Opening|Malevolence|Mandalorian Armor|Mandalorian Warrior|Manufactured Soldiers|Mas Amedda|Massassi Tactical Officer|Maul|Maximum Firepower|Maz Kanata|Maz Kanata\'s Castle|Medal Ceremony|Mercenary Company|Mercenary Gunship|Merciless Contest|Midnight Repairs|Migs Mayfeld|Millennium Falcon|Mining Guild TIE Fighter|Mission Briefing|Mist Hunter|Mister Bones|Modded Cohort|Moff Gideon|Moisture Farmer|Moment of Glory|Moment of Peace|Mon Mothma|Morgan Elsbeth|Multi-Troop Transport|Mystic Reflection|Nabat Village|Nala Se|Nameless Valor|Nevarro City|Never Tell Me the Odds|Nien Nunb|Niima Outpost Constables|Nite Owl Skirmisher|No Bargain|No Disintegrations|No Glory, Only Results|No Good to Me Dead|Now There Are Two of Them|Nute Gunray|OOM-Series Officer|Obedient Vanguard|Obi-Wan Kenobi|Obi-Wan\'s Aethersprite|Occupier Siege Tank|Old Access Codes|Omega|On Top of Things|On the Doorstep|Onyx Squadron Brute|Open Fire|Osi Sobeck|Outer Rim Headhunter|Outflank|Outland TIE Vanguard|Outlaw Corona|Outmaneuver|Outspoken Representative|Overwhelming Barrage|Padawan Starfighter|Padmé Amidala|Paige Tico|Palpatine\'s Return|Partisan Insurgent|Patrolling AAT|Patrolling V-Wing|Pau City|Pelta Supply Frigate|Perilous Position|Petition the Senate|Petranaki Arena|Phase I Clone Trooper|Phase II Clone Trooper|Phase-III Dark Trooper|Phoenix Squadron A-Wing|Pillage|Pirate Battle Tank|Pirated Starfighter|Planetary Bombardment|Planetary Invasion|Plo Koon|Poe Dameron|Poggle the Lesser|Political Pressure|Power Failure|Power of the Dark Side|Pre Vizsla|Precision Fire|Prepare for Takeoff|Price on Your Head|Principled Outlaw|Prisoner of War|Private Manufacturing|Privateer Crew|Privateer Scyk|Profundity|Protector|Protector of the Throne|Providence Destroyer|Public Enemy|Punishing One|Pyke Palace|Pyke Sentinel|Pyrrhic Assault|Qi\'ra|Quasar TIE Carrier|Quinlan Vos|R2-D2|Raddus|Radiant VII|Rallying Cry|Rampart|Razor Crest|Rebel Assault|Rebel Pathfinder|Reckless Gunslinger|Reckless Torrent|Recruit|Red Five|Red Leader|Red Squadron X-Wing|Red Squadron Y-Wing|Red Three|Redemption|Regional Governor|Regional Sympathizers|Reinforcement Walker|Relentless|Relentless Pursuit|Relentless Rocket Droid|Remnant Reserves|Remnant Science Facility|Remote Village|Repair|Reprocess|Republic ARC-170|Republic Attack Pod|Republic Commando|Republic Defense Carrier|Republic Tactical Officer|Reputable Hunter|Resilient|Resolute|Resourceful Pursuers|Restock|Restored ARC-170|Resupply|Resupply Carrier|Rey|Rhokai Gunship|Rich Reward|Rickety Quadjumper|Rio Durant|Rival\'s Fall|Roger Roger|Rogue Operative|Rogue Squadron Skirmisher|Rose Tico|Royal Guard Attaché|Rugged Survivors|Rukh|Rule with Respect|Rune Haako|Rush Clovis|Ruthless Assassin|Ruthless Raider|Ruthlessness|Ryloth Militia|Sabine Wren|Sabine\'s Masterpiece|Salacious Crumb|San Hill|Sanctioner\'s Shuttle|Satine Kryze|Savage Opress|Saw Gerrera|Scanning Officer|Scout Bike Pursuer|Search Your Feelings|Seasoned Shoretrooper|Second Chance|Security Complex|Self-Destruct|Senatorial Corvette|Separatist Commando|Separatist Super Tank|Seventh Fleet Defender|Seventh Sister|Shaak Ti|Shadow Collective Camp|Shadowed Intentions|Shield|Shoot First|Shuttle ST-149|Shuttle Tydirium|Slaver\'s Freighter|Sly Moore|Smoke and Cinders|Smuggler\'s Aid|Smuggler\'s Starfighter|Smuggling Compartment|Snap Wexley|Snapshot Reflexes|Sneak Attack|Snowspeeder|Snowtrooper Lieutenant|Soldier of the 501st|Soulless One|Spare the Target|Spark of Hope|Spark of Rebellion|SpecForce Soldier|Special Forces TIE Fighter|Spice Mines|Squad Support|Squadron of Vultures|Star Wing Scout|Stay on Target|Steadfast Battalion|Steadfast Senator|Steela Gerrera|Stolen AT-Hauler|Stolen Landspeeder|Strafing Gunship|Strategic Acumen|Strategic Analysis|Street Gang Recruiter|Strike True|Subjugating Starfighter|Sugi|Sundari|Sundari Peacekeeper|Super Battle Droid|Supercommando Squad|Superlaser Blast|Superlaser Technician|Supreme Leader Snoke|Surprise Strike|Survivors\' Gauntlet|Swarming Vulture Droid|Swoop Down|Swoop Racer|Sword and Shield Maneuver|Synara San|Synchronized Strike|Syndicate Lackeys|System Patrol Craft|TIE Advanced|TIE Bomber|TIE Dagger Vanguard|TIE Fighter|TIE/ln Fighter|Tactical Advantage|Tactical Droid Commander|Tactical Heavy Bomber|Take Captive|Takedown|Tandem Assault|Tantive IV|Tarfful|Tarkintown|Tech|The Armorer|The Chaos of War|The Client|The Clone Wars|The Crystal City|The Darksaber|The Emperor\'s Legion|The Force Is With Me|The Ghost|The Invasion of Christophsis|The Invisible Hand|The Mandalorian|The Mandalorian\'s Rifle|The Marauder|The Nest|The Zillo Beast|Thermal Oscillator|This Is The Way|Timely Intervention|Tipoca City|Tobias Beckett|Top Target|Toro Calican|Trade Federation Shuttle|Traitorous|Trandoshan Hunters|Tranquility|Trench Run|Tri-Droid Suppressor|Triple Dark Raid|Turbolaser Salvo|Twice the Pride|Twin Pod Cloud Car|U-Wing Reinforcement|Underworld Thug|Unexpected Escape|Unlicensed Headhunter|Unlimited Power|Unmasking the Conspiracy|Unnatural Life|Unrefusable Offer|Unshakeable Will|Vader\'s Lightsaber|Val|Valiant Assault Ship|Vambrace Flamethrower|Vambrace Grappleshot|Vanguard Ace|Vanguard Droid Bomber|Vanguard Infantry|Vanquish|Victor Leader|Vigilance|Vigilant Honor Guards|Vigilant Pursuit Craft|Village Protectors|Viper Probe Droid|Volunteer Soldier|Vulture Interceptor Wing|Wampa|Wanted|Wanted Insurgents|Warbird Stowaway|Warrior Drone|Wartime Profiteering|Wartime Trade Official|Warzone Lieutenant|Wat Tambor|Waylay|Wedge Antilles|Weequay Pirate Gang|Wild Rancor|Wilderness Fighter|Wing Leader|Wingman Victor Three|Wingman Victor Two|Wolf Pack Escort|Wolffe|Wookiee Warrior|Wrecker|Wroshyr Tree Tender|X-Wing|Xanadu Blood|Yoda|You\'re All Clear, Kid|You\'re My Only Hope|Zeb Orrelios|Ziro the Hutt|Zorii Bliss|Zuckuss|Zygerrian Starhopper'; + return '2-1B Surgical Droid|332nd Stalwart|4-LOM|41st Elite Corps|501st Liberator|97th Legion|A Fine Addition|A New Adventure|AT-AT Suppressor|AT-ST|AT-TE Vanguard|Aayla Secura|Academy Defense Walker|Academy Graduate|Academy Training|Adelphi Patrol Wing|Administrator\'s Tower|Admiral Ackbar|Admiral Holdo|Admiral Motti|Admiral Ozzel|Admiral Piett|Admiral Trench|Admiral Yularen|Advanced Recon Commando|Agent Kallus|Aggression|Aggrieved Parliamentarian|Ahsoka Tano|Ahsoka\'s Padawan Lightsaber|Aid from the Innocent|Allegiant General Pryde|Alliance Dispatcher|Alliance X-Wing|Altering the Deal|Anakin Skywalker|Anakin\'s Interceptor|Ardent Sympathizer|Armed to the Teeth|Armored Saber Tank|Arquitens Assault Cruiser|Asajj Ventress|Asteroid Sanctuary|Attack Pattern Delta|Aurra Sing|Auzituck Liberator Gunship|Avenger|B1 Attack Platform|B1 Security Team|B2 Legionnaires|BB-8|Bail Organa|Baktoid Spider Droid|Bamboozle|Banshee|Barriss Offee|Batch Brothers|Battle Droid|Battle Droid Escort|Battle Droid Legion|Battlefield Marine|Baze Malbus|Bazine Netal|Bendu|Benthic \'Two Tubes\'|Bib Fortuna|Biggs Darklighter|Black One|Black Squadron Scout Wing|Black Sun Starfighter|Blade Squadron B-Wing|Blizzard Assault AT-AT|Blood Sport|Blue Leader|Bo-Katan Kryze|BoShek|Boba Fett|Boba Fett\'s Armor|Bodhi Rook|Bold Recon Commando|Bold Resistance|Bombing Run|Bossk|Bounty Guild Initiate|Bounty Hunter Crew|Bounty Hunter\'s Quarry|Bounty Posting|Brain Invaders|Bravado|Breaking In|Bright Hope|Brutal Traditions|C-3PO|CR90 Relief Runner|Cad Bane|Calculated Lethality|Calculating MagnaGuard|Cantina Bouncer|Cantina Braggart|Capital City|Captain Phasma|Captain Rex|Captain Tarkin|Captain Typho|Cargo Juggernaut|Cartel Spacer|Cartel Turncoat|Cassian Andor|Catacombs of Cadera|Caught in the Crossfire|Cell Block Guard|Chain Code Collector|Cham Syndulla|Chancellor Palpatine|Change of Heart|Chewbacca|Chimaera|Chirrut Îmwe|Choose Sides|Chopper|Chopper Base|Clan Challengers|Clan Saxon Gauntlet|Clan Wren Rescuer|Clear the Field|Clone|Clone Cohort|Clone Commander Cody|Clone Deserter|Clone Dive Trooper|Clone Heavy Gunner|Clone Trooper|Cloud City Wing Guard|Cloud-Rider|Cobb Vanth|Collections Starhopper|Colonel Yularen|Colossus|Command|Command Center|Commandeer|Commission|Compassionate Senator|Concord Dawn Interceptors|Confederate Courier|Confederate Tri-Fighter|Confiscate|Consolidation of Power|Consortium StarViper|Consular Security Force|Corellian Freighter|Corner the Prey|Coronet City|Coruscant Dissident|Coruscant Guard|Corvus|Count Dooku|Covert Strength|Covetous Rivals|Crafty Smuggler|Creative Thinking|Criminal Muscle|Cripple Authority|Crosshair|Cunning|D\'Qar Cargo Frigate|DJ|Dagger Squadron Pilot|Dagobah Swamp|Daring Raid|Darth Maul|Darth Vader|Data Vault|Daughter of Dathomir|Death Mark|Death Space Skirmisher|Death Star Stormtrooper|Death Trooper|Death Watch Hideout|Death Watch Loyalist|Death by Droids|Del Meeko|Dendup\'s Loyalist|Dengar|Desperado Freighter|Desperate Attack|Desperate Commando|Detention Block Rescue|Devastating Gunship|Devastator|Devotion|Direct Hit|Director Krennic|Disabling Fang Fighter|Disaffected Senator|Disarm|Discerning Veteran|Disruptive Burst|Distant Patroller|Doctor Aphra|Doctor Evazan|Doctor Pershing|Don\'t Get Cocky|Droid Cohort|Droid Commando|Droid Deployment|Droid Manufactory|Droid Missile Platform|Droid Starfighter|Droideka Security|Drop In|Dryden Vos|Duchess\'s Champion|Dwarf Spider Droid|Echo|Echo Base|Echo Base Defender|Eject|Electromagnetic Pulse|Electrostaff|Elite P-38 Starfighter|Embo|Emperor Palpatine|Emperor\'s Royal Guard|Encouraging Leadership|Endless Legions|Energy Conversion Lab|Enforced Loyalty|Enfys Nest|Enterprising Lackeys|Enticing Reward|Entrenched|Ephant Mon|Equalize|Escort Skiff|Eta-2 Light Interceptor|Evacuate|Evidence of the Crime|Execute Order 66|Executor|Experience|Ezra Bridger|Falchion Ion Tank|Fallen Lightsaber|Favorable Delegate|Fell the Dragon|Fenn Rau|Fennec Shand|Fett\'s Firespray|Fifth Brother|Fight Fire With Fire|Fighters for Freedom|Final Showdown|Finalizer|Finn|First Legion Snowtrooper|First Light|First Order Stormtrooper|First Order TIE Fighter|Fives|Fleet Interdictor|Fleet Lieutenant|Follower of The Way|For The Republic|For a Cause I Believe In|Force Choke|Force Lightning|Force Throw|Forced Surrender|Foresight|Foundling|Freelance Assassin|Freetown Backup|Frisk|Frontier AT-RT|Frontier Trader|Frontline Shuttle|Frozen in Carbonite|Fugitive Wookiee|Galactic Ambition|Gamorrean Guards|Gamorrean Retainer|Gar Saxon|General Dodonna|General Draven|General Grievous|General Hux|General Krell|General Rieekan|General Tagge|General Veers|General\'s Blade|General\'s Guardian|Gentle Giant|Geonosis Patrol Fighter|Gideon Hask|Gideon\'s Light Cruiser|Give In to Your Anger|Gladiator Star Destroyer|Gold Leader|Gor|Grand Admiral Thrawn|Grand Inquisitor|Grand Moff Tarkin|Greedo|Greef Karga|Green Squadron A-Wing|Grenade Strike|Grey Squadron Y-Wing|Grievous Reassembly|Grievous\'s Wheel Bike|Grim Resolve|Grogu|Guardian of the Whills|Guarding the Way|Guavian Antagonizer|Guerilla Attack Pod|Guerilla Insurgency|Guerilla Soldier|Guild Target|HWK-290 Freighter|Hailfire Tank|Han Solo|Hardpoint Heavy Blaster|Headhunter Squadron|Headhunting|Heavy Persuader Tank|Hello There|Hera Syndulla|Heroes on Both Sides|Heroic Renegade|Heroic Resolve|Heroic Sacrifice|Hevy|Hidden Sharpshooter|Hold-Out Blaster|Home One|Homestead Militia|Hondo Ohnaka|Hotshot DL-44 Blaster|Hotshot V-Wing|Hound\'s Tooth|House Kast Soldier|Hunter|Hunter of the Haxion Brood|Hunting Aggressor|Hunting Nexu|Hutt\'s Henchmen|Huyang|Hylobon Enforcer|I Am Your Father|I Had No Choice|I Have You Now|I Have the High Ground|IG-11|IG-2000|IG-88|ISB Agent|Iden Versio|Imperial Interceptor|Imprisoned|Impropriety Among Thieves|In Defense of Kamino|In Pursuit|Incinerator Trooper|Independent Senator|Independent Smuggler|Infantry of the 212th|Inferno Four|Infiltrating Demolisher|Infiltrator\'s Skill|Inspiring Mentor|Interceptor Ace|Invincible|It Binds All Things|It\'s a Trap|Jabba the Hutt|Jabba\'s Palace|Jabba\'s Rancor|Jango Fett|Jar Jar Binks|Jawa Scavenger|Jedha Agitator|Jedha City|Jedi Lightsaber|Jesse|Jetpack|Jyn Erso|K-2SO|KCM Mining Facility|Kalani|Kanan Jarrus|Karabast|Kashyyyk Defender|Keep Fighting|Kestro City|Ketsu Onyo|Ki-Adi-Mundi|Kihraxz Heavy Fighter|Kijimi Patrollers|Kintan Intimidator|Kit Fisto|Knight of the Republic|Koiogran Turn|Koska Reeves|Kragan Gorr|Kraken|Krayt Dragon|Krrsantan|Kuiil|Kylo Ren|Kylo\'s TIE Silencer|L3-37|Lady Proxima|Lair of Grievous|Landing Shuttle|Lando Calrissian|Legal Authority|Leia Organa|Let the Wookiee Win|Lethal Crackdown|Level 1313|Liberated Slaves|Lieutenant Childsen|Lom Pyke|Look the Other Way|Lothal Insurgent|Low Altitude Gunship|Luke Skywalker|Luke\'s Lightsaber|Luminara Unduli|Lurking TIE Phantom|Lux Bonteri|Ma Klounkee|Mace Windu|Mace Windu\'s Lightsaber|MagnaGuard Wing Leader|Make an Opening|Malevolence|Mandalorian Armor|Mandalorian Warrior|Manufactured Soldiers|Mas Amedda|Massassi Tactical Officer|Maul|Maximum Firepower|Maz Kanata|Maz Kanata\'s Castle|Medal Ceremony|Mercenary Company|Mercenary Gunship|Merciless Contest|Midnight Repairs|Migs Mayfeld|Millennium Falcon|Mining Guild TIE Fighter|Mission Briefing|Mist Hunter|Mister Bones|Modded Cohort|Moff Gideon|Moisture Farmer|Moment of Glory|Moment of Peace|Mon Mothma|Morgan Elsbeth|Multi-Troop Transport|Mystic Reflection|Nabat Village|Nala Se|Nameless Valor|Nebula Ignition|Nevarro City|Never Tell Me the Odds|Nien Nunb|Niima Outpost Constables|Nite Owl Skirmisher|No Bargain|No Disintegrations|No Glory, Only Results|No Good to Me Dead|Now There Are Two of Them|Nute Gunray|OOM-Series Officer|Obedient Vanguard|Obi-Wan Kenobi|Obi-Wan\'s Aethersprite|Occupier Siege Tank|Old Access Codes|Omega|On Top of Things|On the Doorstep|Onyx Squadron Brute|Open Fire|Osi Sobeck|Outer Rim Headhunter|Outflank|Outland TIE Vanguard|Outlaw Corona|Outmaneuver|Outspoken Representative|Overwhelming Barrage|Padawan Starfighter|Padmé Amidala|Paige Tico|Palpatine\'s Return|Partisan Insurgent|Patrolling AAT|Patrolling V-Wing|Pau City|Pelta Supply Frigate|Perilous Position|Petition the Senate|Petranaki Arena|Phantom II|Phase I Clone Trooper|Phase II Clone Trooper|Phase-III Dark Trooper|Phoenix Squadron A-Wing|Pillage|Pirate Battle Tank|Pirated Starfighter|Planetary Bombardment|Planetary Invasion|Plo Koon|Poe Dameron|Poggle the Lesser|Political Pressure|Power Failure|Power from Pain|Power of the Dark Side|Pre Vizsla|Precision Fire|Prepare for Takeoff|Price on Your Head|Principled Outlaw|Prisoner of War|Private Manufacturing|Privateer Crew|Privateer Scyk|Profundity|Protector|Protector of the Throne|Providence Destroyer|Public Enemy|Punishing One|Pyke Palace|Pyke Sentinel|Pyrrhic Assault|Qi\'ra|Quasar TIE Carrier|Quinlan Vos|R2-D2|Raddus|Radiant VII|Rallying Cry|Rampart|Razor Crest|Rebel Assault|Rebel Pathfinder|Reckless Gunslinger|Reckless Torrent|Recruit|Red Five|Red Leader|Red Squadron X-Wing|Red Squadron Y-Wing|Red Three|Redemption|Regional Governor|Regional Sympathizers|Reinforcement Walker|Relentless|Relentless Firespray|Relentless Pursuit|Relentless Rocket Droid|Remnant Reserves|Remnant Science Facility|Remote Village|Repair|Reprocess|Republic ARC-170|Republic Attack Pod|Republic Commando|Republic Defense Carrier|Republic Tactical Officer|Reputable Hunter|Resilient|Resistance X-Wing|Resolute|Resourceful Pursuers|Restock|Restored ARC-170|Resupply|Resupply Carrier|Rey|Rhokai Gunship|Rich Reward|Rickety Quadjumper|Rio Durant|Rival\'s Fall|Roger Roger|Rogue Operative|Rogue Squadron Skirmisher|Rose Tico|Royal Guard Attaché|Rugged Survivors|Rukh|Rule with Respect|Rune Haako|Rush Clovis|Ruthless Assassin|Ruthless Raider|Ruthlessness|Ryloth Militia|Sabine Wren|Sabine\'s Masterpiece|Salacious Crumb|San Hill|Sanctioner\'s Shuttle|Satine Kryze|Savage Opress|Saw Gerrera|Scanning Officer|Scout Bike Pursuer|Search Your Feelings|Seasoned Shoretrooper|Second Chance|Security Complex|Self-Destruct|Senatorial Corvette|Separatist Commando|Separatist Super Tank|Seventh Fleet Defender|Seventh Sister|Shaak Ti|Shadow Collective Camp|Shadowed Intentions|Shield|Shoot First|Shuttle ST-149|Shuttle Tydirium|Sith Trooper|Slaver\'s Freighter|Sly Moore|Smoke and Cinders|Smuggler\'s Aid|Smuggler\'s Starfighter|Smuggling Compartment|Snap Wexley|Snapshot Reflexes|Sneak Attack|Snowspeeder|Snowtrooper Lieutenant|Soldier of the 501st|Soulless One|Spare the Target|Spark of Hope|Spark of Rebellion|SpecForce Soldier|Special Forces TIE Fighter|Spice Mines|Squad Support|Squadron of Vultures|Star Wing Scout|Stay on Target|Steadfast Battalion|Steadfast Senator|Steela Gerrera|Stolen AT-Hauler|Stolen Landspeeder|Strafing Gunship|Strategic Acumen|Strategic Analysis|Street Gang Recruiter|Strike True|Subjugating Starfighter|Sugi|Sundari|Sundari Peacekeeper|Super Battle Droid|Supercommando Squad|Superlaser Blast|Superlaser Technician|Supreme Leader Snoke|Surprise Strike|Survivors\' Gauntlet|Swarming Vulture Droid|Swoop Down|Swoop Racer|Sword and Shield Maneuver|Synara San|Synchronized Strike|Syndicate Lackeys|System Patrol Craft|TIE Advanced|TIE Ambush Squadron|TIE Bomber|TIE Dagger Vanguard|TIE Fighter|TIE/ln Fighter|Tactical Advantage|Tactical Droid Commander|Tactical Heavy Bomber|Take Captive|Takedown|Tandem Assault|Tantive IV|Tarfful|Tarkintown|Tech|The Armorer|The Chaos of War|The Client|The Clone Wars|The Crystal City|The Darksaber|The Emperor\'s Legion|The Force Is With Me|The Ghost|The Invasion of Christophsis|The Invisible Hand|The Mandalorian|The Mandalorian\'s Rifle|The Marauder|The Nest|The Zillo Beast|Thermal Oscillator|This Is The Way|Timely Intervention|Tipoca City|Tobias Beckett|Top Target|Toro Calican|Trade Federation Shuttle|Traitorous|Trandoshan Hunters|Tranquility|Trench Run|Tri-Droid Suppressor|Triple Dark Raid|Turbolaser Salvo|Twice the Pride|Twin Pod Cloud Car|U-Wing Reinforcement|Underworld Thug|Unexpected Escape|Unlicensed Headhunter|Unlimited Power|Unmasking the Conspiracy|Unnatural Life|Unrefusable Offer|Unshakeable Will|Vader\'s Lightsaber|Val|Valiant Assault Ship|Vambrace Flamethrower|Vambrace Grappleshot|Vanguard Ace|Vanguard Droid Bomber|Vanguard Infantry|Vanquish|Victor Leader|Vigilance|Vigilant Honor Guards|Vigilant Pursuit Craft|Village Protectors|Viper Probe Droid|Volunteer Soldier|Vulture Interceptor Wing|Wampa|Wanted|Wanted Insurgents|Warbird Stowaway|Warrior Drone|Wartime Profiteering|Wartime Trade Official|Warzone Lieutenant|Wat Tambor|Waylay|Wedge Antilles|Weequay Pirate Gang|Wild Rancor|Wilderness Fighter|Wing Leader|Wingman Victor Three|Wingman Victor Two|Wolf Pack Escort|Wolffe|Wookiee Warrior|Wrecker|Wroshyr Tree Tender|X-Wing|Xanadu Blood|Yoda|You\'re All Clear, Kid|You\'re My Only Hope|Zeb Orrelios|Ziro the Hutt|Zorii Bliss|Zuckuss|Zygerrian Starhopper'; } function IsUnimplemented($cardID) { $unimplementedCards = array ( + '0097256640' => true, 2711104544 => true, + 2870117979 => true, + 2922063712 => true, + 3858069945 => true, 3905028200 => true, + 4019449999 => true, + 4147863169 => true, + 5052103576 => true, + 5306772000 => true, + 5763330426 => true, + 6196035152 => true, 6228218834 => true, 6272475624 => true, 6354077246 => true, 6600603122 => true, 7138400365 => true, + 7610382003 => true, '7c082aefc9' => true, + 8757741946 => true, 9430527677 => true, 9586661707 => true, 9810057689 => true, diff --git a/GetNextTurn2.php b/GetNextTurn2.php index 62387a4ce..60b2add7a 100644 --- a/GetNextTurn2.php +++ b/GetNextTurn2.php @@ -1186,7 +1186,7 @@ function getCaption($layer, $cardID) $border = CardBorderColor($theirAllies[$i], "ALLY", $action == 16, "THEIRS"); $ally = new Ally($mzIndex, $otherPlayer); - $playable = NumResourcesAvailable($currentPlayer) >= AbilityCost($ally->CardID(), $ally->Index(), true); + $playable = GetOpponentControlledAbilityNames($ally->CardID()) != ""; if (!$mzChooseFromPlay && $playable && TheirAllyPlayableExhausted($ally)) { $border = CardBorderColor($theirAllies[$i], "PLAY", $playable); @@ -1342,9 +1342,6 @@ function getCaption($layer, $cardID) $actionDataOverride = $inOptions ? $mzIndex : 0; $border = CardBorderColor($myAllies[$i], "PLAY", $action == 16); } else { - if($ally->IsUpgraded()) { - CheckForLeaderUpgradeAbilities($ally); - } $playable = IsPlayable($myAllies[$i], $turn[0], "PLAY", $i, $restriction) && (!$ally->IsExhausted() || AllyPlayableExhausted($ally)); $border = CardBorderColor($myAllies[$i], "PLAY", $playable); $action = $currentPlayer == $playerID && $turn[0] != "P" && $playable ? 24 : 0; diff --git a/LeaderAbilities.php b/LeaderAbilities.php index e9e563c4c..82aa9967e 100644 --- a/LeaderAbilities.php +++ b/LeaderAbilities.php @@ -1,9 +1,11 @@ Attach($cardID, $player, epicAction:$epicAction); switch($cardID) { @@ -53,17 +55,4 @@ function HanSoloPilotLeaderJTL($player) { ReadyResource($player, $odds); } -function CheckForLeaderUpgradeAbilities($ally) { - global $CS_LeaderUpgradeAbilityID1; - $upgrades = $ally->GetUpgrades(withMetadata:false); - for($i=0; $iController(), $CS_LeaderUpgradeAbilityID1, $upgrades[$i]); - break; - default: break; - } - } -} - ?> diff --git a/Libraries/NetworkingLibraries.php b/Libraries/NetworkingLibraries.php index 87c65529d..3e5f3f677 100644 --- a/Libraries/NetworkingLibraries.php +++ b/Libraries/NetworkingLibraries.php @@ -1517,11 +1517,11 @@ function PlayCard($cardID, $from, $dynCostResolved = -1, $index = -1, $uniqueID $layers[count($layers) - LayerPieces()] = "RESUMETURN"; //Means the defending player played something, so the end turn attempt failed } if ($turn[0] != "P") { - if ($dynCostResolved >= 0 || $oppCardActive) { + if ($dynCostResolved >= 0) { SetClassState($currentPlayer, $CS_DynCostResolved, $dynCostResolved); $baseCost = match ($from) { "RESOURCES" => SmuggleCost($cardID, $currentPlayer, $index) + SelfCostModifier($cardID, $from), - "PLAY", "EQUIP" => AbilityCost($cardID, $index, $oppCardActive), + "PLAY", "EQUIP" => AbilityCost($cardID), "HAND" => GetClassState($currentPlayer, $CS_PlayedAsUpgrade) == "1" && PilotingCost($cardID) > -1 ? PilotingCost($cardID) + SelfCostModifier($cardID, $from) : CardCost($cardID) + SelfCostModifier($cardID, $from), @@ -1566,16 +1566,15 @@ function PlayCard($cardID, $from, $dynCostResolved = -1, $index = -1, $uniqueID if ($from != "PLAY" && ($turn[0] != "B" || (count($layers) > 0 && $layers[0] != ""))) GetLayerTarget($cardID); //Right now only units in play can attack - if (!$oppCardActive) { - if ($from == "PLAY") { - AddDecisionQueue("ATTACK", $currentPlayer, $cardID . "," . $from); - } - if ($dynCost == "") - AddDecisionQueue("PASSPARAMETER", $currentPlayer, "0"); - else - AddDecisionQueue("GETCLASSSTATE", $currentPlayer, $CS_LastDynCost); - AddDecisionQueue("RESUMEPAYING", $currentPlayer, $cardID . "!" . $from . "!" . $index . "!" . $prepaidResources); + if ($from == "PLAY" && !$oppCardActive) { + AddDecisionQueue("ATTACK", $currentPlayer, $cardID . "," . $from); } + if ($dynCost == "") + AddDecisionQueue("PASSPARAMETER", $currentPlayer, "0"); + else + AddDecisionQueue("GETCLASSSTATE", $currentPlayer, $CS_LastDynCost); + AddDecisionQueue("RESUMEPAYING", $currentPlayer, $cardID . "!" . $from . "!" . $index . "!" . $prepaidResources); + $decisionQueue = array_merge($decisionQueue, $dqCopy); ProcessDecisionQueue(); //MISSING CR 5.1.3d Decide if action that can be played as instant will be @@ -1757,6 +1756,8 @@ function AddPrePitchDecisionQueue($cardID, $from, $index = -1, $skipAbilityType AddDecisionQueue("BUTTONINPUT", $currentPlayer, $names); AddDecisionQueue("SETABILITYTYPE", $currentPlayer, $cardID); } else { + AddDecisionQueue("SETDQCONTEXT", $currentPlayer, "Choose which ability to activate"); + AddDecisionQueue("BUTTONINPUT", $currentPlayer, $names); AddDecisionQueue("SETABILITYTYPEOPP", $currentPlayer, $cardID); } } @@ -1776,7 +1777,7 @@ function AddPrePitchDecisionQueue($cardID, $from, $index = -1, $skipAbilityType AddDecisionQueue("MZOP", $currentPlayer, "EXPLOIT", 1); } $pilotCost = PilotingCost($cardID, $currentPlayer); - if ($pilotCost >= 0) { + if ($pilotCost >= 0 && !CurrentTurnEffectsPlayingUnit($currentPlayer)) { if (!SearchCurrentTurnEffects("0011262813", $currentPlayer)) {//Wedge Antilles Leader AddDecisionQueue("SETDQCONTEXT", $currentPlayer, "Choose if you want to play this unit as a pilot?"); AddDecisionQueue("YESNO", $currentPlayer, "if you want to play this unit as a pilot"); @@ -2167,15 +2168,23 @@ function PlayCardEffect($cardID, $from, $resourcesPaid, $target = "-", $addition } //TODO: Fix this Relentless and first light and The Mandalorian hack // Events and abilities that are not played should be resolved before any ally abilities - else if ($from == "PLAY" || $from == "EQUIP" || $cardID == "3401690666" || $cardID == "4783554451" || $cardID == "4088c46c4d" || DefinedTypesContains($cardID, "Event", $currentPlayer)) { + else if ($from == "PLAY" || $from == "EQUIP" || IsUnitException($cardID) || DefinedTypesContains($cardID, "Event", $currentPlayer)) { AddLayer($layerName, $currentPlayer, $cardID, $from . "!" . $resourcesPaid . "!" . $target . "!" . $additionalCosts . "!" . $abilityIndex . "!" . $playIndex, "-", $uniqueID, append: true); if (!$openedChain) ResolveGoAgain($cardID, $currentPlayer, $from); CopyCurrentTurnEffectsFromAfterResolveEffects(); SetClassState($currentPlayer, $CS_PlayIndex, -1); SetClassState($currentPlayer, $CS_CharacterIndex, -1); - ProcessDecisionQueue(); - return; + if(IsUnitException($cardID)) { + $ally = new Ally($uniqueID); + if(!HasAmbush($ally->CardID(), $ally->Controller(), $ally->Index(), $from)) { + ProcessDecisionQueue(); + return; + } + } else { + ProcessDecisionQueue(); + return; + } } else if ((HasWhenPlayed($cardID) && !IsExploitWhenPlayed($cardID)) || $cardID == "8055390529") { // TODO: Fix Dooku and Traitorous hack. AddLayer("PLAYCARDABILITY", $currentPlayer, $cardID, $from . "!" . $resourcesPaid . "!" . $target . "!" . $additionalCosts . "!" . $abilityIndex . "!" . $playIndex, "-", $uniqueID, append: true); } @@ -2204,6 +2213,64 @@ function PlayCardEffect($cardID, $from, $resourcesPaid, $target = "-", $addition ProcessDecisionQueue(); } +function CurrentTurnEffectsPlayingUnit($player) { + global $currentTurnEffects, $CS_AfterPlayedBy; + switch(GetClassState($player, $CS_AfterPlayedBy)) { + //Spark of Rebellion + case "3572356139"://Chewbacca (Walking Carpet) + //Jump to Lightspeed + case "3658069276"://Lando Calrissian leader + return true; + } + + for ($i=0; $i true, + default => false + }; +} + function RelentlessLostAbilities($player): bool { $relentlessIndex = SearchAlliesForCard($player, "3401690666"); diff --git a/Libraries/PlayerSettings.php b/Libraries/PlayerSettings.php index e60748aba..9af8ddcae 100644 --- a/Libraries/PlayerSettings.php +++ b/Libraries/PlayerSettings.php @@ -115,6 +115,10 @@ function GetCardBack($player) case 21: return "porg_depot"; case 22: return "darth_players"; case 23: return "MainedoKaraSleeves"; + case 24: return "galactic-gonks"; + case 25: return "fallen-order"; + case 26: return "mythic-force"; + case 27: return "mog-tcg"; default: return "CardBack"; } } @@ -316,6 +320,10 @@ function GetSettingsUI($player) $rv .= CreateRadioButton($SET_Cardback . "-" . 21, "Default", 26, $SET_Cardback . "-" . $settings[$SET_Cardback], "Porg Depot"); $rv .= CreateRadioButton($SET_Cardback . "-" . 22, "Default", 26, $SET_Cardback . "-" . $settings[$SET_Cardback], "Darth Players"); $rv .= CreateRadioButton($SET_Cardback . "-" . 23, "Default", 26, $SET_Cardback . "-" . $settings[$SET_Cardback], "Mainedalorians"); + $rv .= CreateRadioButton($SET_Cardback . "-" . 24, "Default", 26, $SET_Cardback . "-" . $settings[$SET_Cardback], "Galactic Gonks"); + $rv .= CreateRadioButton($SET_Cardback . "-" . 25, "Default", 26, $SET_Cardback . "-" . $settings[$SET_Cardback], "Fallen Order"); + $rv .= CreateRadioButton($SET_Cardback . "-" . 26, "Default", 26, $SET_Cardback . "-" . $settings[$SET_Cardback], "Mythic Force"); + $rv .= CreateRadioButton($SET_Cardback . "-" . 27, "Default", 26, $SET_Cardback . "-" . $settings[$SET_Cardback], "MoG TCG"); $stage = getenv('STAGE') ?: 'prod'; $isDev = $stage === 'dev'; diff --git a/UnimplementedCards/0097256640.webp b/UnimplementedCards/0097256640.webp new file mode 100644 index 000000000..71e414627 Binary files /dev/null and b/UnimplementedCards/0097256640.webp differ diff --git a/UnimplementedCards/2870117979.webp b/UnimplementedCards/2870117979.webp new file mode 100644 index 000000000..f3555bf09 Binary files /dev/null and b/UnimplementedCards/2870117979.webp differ diff --git a/UnimplementedCards/2922063712.webp b/UnimplementedCards/2922063712.webp new file mode 100644 index 000000000..e31ab1826 Binary files /dev/null and b/UnimplementedCards/2922063712.webp differ diff --git a/UnimplementedCards/3858069945.webp b/UnimplementedCards/3858069945.webp new file mode 100644 index 000000000..c7a2d9ff3 Binary files /dev/null and b/UnimplementedCards/3858069945.webp differ diff --git a/UnimplementedCards/4019449999.webp b/UnimplementedCards/4019449999.webp new file mode 100644 index 000000000..73819216d Binary files /dev/null and b/UnimplementedCards/4019449999.webp differ diff --git a/UnimplementedCards/4147863169.webp b/UnimplementedCards/4147863169.webp new file mode 100644 index 000000000..dc7acf964 Binary files /dev/null and b/UnimplementedCards/4147863169.webp differ diff --git a/UnimplementedCards/5052103576.webp b/UnimplementedCards/5052103576.webp new file mode 100644 index 000000000..b520078eb Binary files /dev/null and b/UnimplementedCards/5052103576.webp differ diff --git a/UnimplementedCards/5306772000.webp b/UnimplementedCards/5306772000.webp new file mode 100644 index 000000000..d66973e2d Binary files /dev/null and b/UnimplementedCards/5306772000.webp differ diff --git a/UnimplementedCards/5763330426.webp b/UnimplementedCards/5763330426.webp new file mode 100644 index 000000000..fab792520 Binary files /dev/null and b/UnimplementedCards/5763330426.webp differ diff --git a/UnimplementedCards/6196035152.webp b/UnimplementedCards/6196035152.webp new file mode 100644 index 000000000..968bbcdbb Binary files /dev/null and b/UnimplementedCards/6196035152.webp differ diff --git a/UnimplementedCards/7610382003.webp b/UnimplementedCards/7610382003.webp new file mode 100644 index 000000000..054aed778 Binary files /dev/null and b/UnimplementedCards/7610382003.webp differ diff --git a/UnimplementedCards/8757741946.webp b/UnimplementedCards/8757741946.webp new file mode 100644 index 000000000..8976c94fa Binary files /dev/null and b/UnimplementedCards/8757741946.webp differ diff --git a/WebpImages2/0097256640.webp b/WebpImages2/0097256640.webp new file mode 100644 index 000000000..2f779376b Binary files /dev/null and b/WebpImages2/0097256640.webp differ diff --git a/WebpImages2/2870117979.webp b/WebpImages2/2870117979.webp new file mode 100644 index 000000000..13e667c04 Binary files /dev/null and b/WebpImages2/2870117979.webp differ diff --git a/WebpImages2/2922063712.webp b/WebpImages2/2922063712.webp new file mode 100644 index 000000000..0b6030ac9 Binary files /dev/null and b/WebpImages2/2922063712.webp differ diff --git a/WebpImages2/3858069945.webp b/WebpImages2/3858069945.webp new file mode 100644 index 000000000..482618f4c Binary files /dev/null and b/WebpImages2/3858069945.webp differ diff --git a/WebpImages2/4019449999.webp b/WebpImages2/4019449999.webp new file mode 100644 index 000000000..ad88f6605 Binary files /dev/null and b/WebpImages2/4019449999.webp differ diff --git a/WebpImages2/4147863169.webp b/WebpImages2/4147863169.webp new file mode 100644 index 000000000..99782cd33 Binary files /dev/null and b/WebpImages2/4147863169.webp differ diff --git a/WebpImages2/5052103576.webp b/WebpImages2/5052103576.webp new file mode 100644 index 000000000..6fc3c958c Binary files /dev/null and b/WebpImages2/5052103576.webp differ diff --git a/WebpImages2/5306772000.webp b/WebpImages2/5306772000.webp new file mode 100644 index 000000000..8acf46835 Binary files /dev/null and b/WebpImages2/5306772000.webp differ diff --git a/WebpImages2/5763330426.webp b/WebpImages2/5763330426.webp new file mode 100644 index 000000000..1f5f6623d Binary files /dev/null and b/WebpImages2/5763330426.webp differ diff --git a/WebpImages2/6196035152.webp b/WebpImages2/6196035152.webp new file mode 100644 index 000000000..dd159b780 Binary files /dev/null and b/WebpImages2/6196035152.webp differ diff --git a/WebpImages2/7610382003.webp b/WebpImages2/7610382003.webp new file mode 100644 index 000000000..1efbab89a Binary files /dev/null and b/WebpImages2/7610382003.webp differ diff --git a/WebpImages2/8757741946.webp b/WebpImages2/8757741946.webp new file mode 100644 index 000000000..1be67933c Binary files /dev/null and b/WebpImages2/8757741946.webp differ diff --git a/WebpImages2/BBCardBack.webp b/WebpImages2/BBCardBack.webp new file mode 100644 index 000000000..f97fd97b0 Binary files /dev/null and b/WebpImages2/BBCardBack.webp differ diff --git a/WebpImages2/CBForceFam.webp b/WebpImages2/CBForceFam.webp new file mode 100644 index 000000000..c6cd619db Binary files /dev/null and b/WebpImages2/CBForceFam.webp differ diff --git a/WebpImages2/MainedoKaraSleeves.webp b/WebpImages2/MainedoKaraSleeves.webp new file mode 100644 index 000000000..00cceed58 Binary files /dev/null and b/WebpImages2/MainedoKaraSleeves.webp differ diff --git a/WebpImages2/Rajeux_TCG.webp b/WebpImages2/Rajeux_TCG.webp new file mode 100644 index 000000000..9a87adfcc Binary files /dev/null and b/WebpImages2/Rajeux_TCG.webp differ diff --git a/WebpImages2/cantina_crew.webp b/WebpImages2/cantina_crew.webp new file mode 100644 index 000000000..80140bb00 Binary files /dev/null and b/WebpImages2/cantina_crew.webp differ diff --git a/WebpImages2/darth_players.webp b/WebpImages2/darth_players.webp new file mode 100644 index 000000000..eeacd2737 Binary files /dev/null and b/WebpImages2/darth_players.webp differ diff --git a/WebpImages2/fallen-order.webp b/WebpImages2/fallen-order.webp new file mode 100644 index 000000000..70aa7b3ec Binary files /dev/null and b/WebpImages2/fallen-order.webp differ diff --git a/WebpImages2/galactic-gonks.webp b/WebpImages2/galactic-gonks.webp new file mode 100644 index 000000000..5403bdaad Binary files /dev/null and b/WebpImages2/galactic-gonks.webp differ diff --git a/WebpImages2/holocron_card_club.webp b/WebpImages2/holocron_card_club.webp new file mode 100644 index 000000000..1b0abd575 Binary files /dev/null and b/WebpImages2/holocron_card_club.webp differ diff --git a/WebpImages2/maclunky_gaming.webp b/WebpImages2/maclunky_gaming.webp new file mode 100644 index 000000000..fc09e36f6 Binary files /dev/null and b/WebpImages2/maclunky_gaming.webp differ diff --git a/WebpImages2/mog-tcg.webp b/WebpImages2/mog-tcg.webp new file mode 100644 index 000000000..43c88eaaf Binary files /dev/null and b/WebpImages2/mog-tcg.webp differ diff --git a/WebpImages2/mythic-force.webp b/WebpImages2/mythic-force.webp new file mode 100644 index 000000000..37344965e Binary files /dev/null and b/WebpImages2/mythic-force.webp differ diff --git a/WebpImages2/porg_depot.webp b/WebpImages2/porg_depot.webp new file mode 100644 index 000000000..b386ee78b Binary files /dev/null and b/WebpImages2/porg_depot.webp differ diff --git a/WebpImages2/too_many_hans.webp b/WebpImages2/too_many_hans.webp new file mode 100644 index 000000000..51b9e89f9 Binary files /dev/null and b/WebpImages2/too_many_hans.webp differ diff --git a/WebpImages2/under_the_twin_suns.webp b/WebpImages2/under_the_twin_suns.webp new file mode 100644 index 000000000..2c0e75d54 Binary files /dev/null and b/WebpImages2/under_the_twin_suns.webp differ diff --git a/concat/0097256640.webp b/concat/0097256640.webp new file mode 100644 index 000000000..f27405b56 Binary files /dev/null and b/concat/0097256640.webp differ diff --git a/concat/2870117979.webp b/concat/2870117979.webp new file mode 100644 index 000000000..172b56792 Binary files /dev/null and b/concat/2870117979.webp differ diff --git a/concat/2922063712.webp b/concat/2922063712.webp new file mode 100644 index 000000000..9e2711c02 Binary files /dev/null and b/concat/2922063712.webp differ diff --git a/concat/3858069945.webp b/concat/3858069945.webp new file mode 100644 index 000000000..b06d4012d Binary files /dev/null and b/concat/3858069945.webp differ diff --git a/concat/4019449999.webp b/concat/4019449999.webp new file mode 100644 index 000000000..7ae88a424 Binary files /dev/null and b/concat/4019449999.webp differ diff --git a/concat/4147863169.webp b/concat/4147863169.webp new file mode 100644 index 000000000..c7eb25f64 Binary files /dev/null and b/concat/4147863169.webp differ diff --git a/concat/5052103576.webp b/concat/5052103576.webp new file mode 100644 index 000000000..8cf3cd9b6 Binary files /dev/null and b/concat/5052103576.webp differ diff --git a/concat/5306772000.webp b/concat/5306772000.webp new file mode 100644 index 000000000..d19104c7a Binary files /dev/null and b/concat/5306772000.webp differ diff --git a/concat/5763330426.webp b/concat/5763330426.webp new file mode 100644 index 000000000..0986be56c Binary files /dev/null and b/concat/5763330426.webp differ diff --git a/concat/6196035152.webp b/concat/6196035152.webp new file mode 100644 index 000000000..30d0ab900 Binary files /dev/null and b/concat/6196035152.webp differ diff --git a/concat/7610382003.webp b/concat/7610382003.webp new file mode 100644 index 000000000..9ffdbca24 Binary files /dev/null and b/concat/7610382003.webp differ diff --git a/concat/8757741946.webp b/concat/8757741946.webp new file mode 100644 index 000000000..2f274a275 Binary files /dev/null and b/concat/8757741946.webp differ diff --git a/concat/fallen-order.webp b/concat/fallen-order.webp new file mode 100644 index 000000000..70aa7b3ec Binary files /dev/null and b/concat/fallen-order.webp differ diff --git a/concat/galactic-gonks.webp b/concat/galactic-gonks.webp new file mode 100644 index 000000000..5403bdaad Binary files /dev/null and b/concat/galactic-gonks.webp differ diff --git a/concat/mog-tcg.webp b/concat/mog-tcg.webp new file mode 100644 index 000000000..43c88eaaf Binary files /dev/null and b/concat/mog-tcg.webp differ diff --git a/concat/mythic-force.webp b/concat/mythic-force.webp new file mode 100644 index 000000000..37344965e Binary files /dev/null and b/concat/mythic-force.webp differ diff --git a/crops/0097256640_cropped.png b/crops/0097256640_cropped.png new file mode 100644 index 000000000..4fa4a1c78 Binary files /dev/null and b/crops/0097256640_cropped.png differ diff --git a/crops/2870117979_cropped.png b/crops/2870117979_cropped.png new file mode 100644 index 000000000..bed7d468b Binary files /dev/null and b/crops/2870117979_cropped.png differ diff --git a/crops/2922063712_cropped.png b/crops/2922063712_cropped.png new file mode 100644 index 000000000..f2de70e51 Binary files /dev/null and b/crops/2922063712_cropped.png differ diff --git a/crops/3858069945_cropped.png b/crops/3858069945_cropped.png new file mode 100644 index 000000000..d39b91c53 Binary files /dev/null and b/crops/3858069945_cropped.png differ diff --git a/crops/4019449999_cropped.png b/crops/4019449999_cropped.png new file mode 100644 index 000000000..bbd951ceb Binary files /dev/null and b/crops/4019449999_cropped.png differ diff --git a/crops/4147863169_cropped.png b/crops/4147863169_cropped.png new file mode 100644 index 000000000..d610c357e Binary files /dev/null and b/crops/4147863169_cropped.png differ diff --git a/crops/5052103576_cropped.png b/crops/5052103576_cropped.png new file mode 100644 index 000000000..844cdc418 Binary files /dev/null and b/crops/5052103576_cropped.png differ diff --git a/crops/5306772000_cropped.png b/crops/5306772000_cropped.png new file mode 100644 index 000000000..5ec1054ee Binary files /dev/null and b/crops/5306772000_cropped.png differ diff --git a/crops/5763330426_cropped.png b/crops/5763330426_cropped.png new file mode 100644 index 000000000..a1ff039a3 Binary files /dev/null and b/crops/5763330426_cropped.png differ diff --git a/crops/6196035152_cropped.png b/crops/6196035152_cropped.png new file mode 100644 index 000000000..8642aa903 Binary files /dev/null and b/crops/6196035152_cropped.png differ diff --git a/crops/7610382003_cropped.png b/crops/7610382003_cropped.png new file mode 100644 index 000000000..c54f31825 Binary files /dev/null and b/crops/7610382003_cropped.png differ diff --git a/crops/8757741946_cropped.png b/crops/8757741946_cropped.png new file mode 100644 index 000000000..d1dd01fc3 Binary files /dev/null and b/crops/8757741946_cropped.png differ diff --git a/zzCardCodeGenerator.php b/zzCardCodeGenerator.php index 7bd925a0c..a0badb3f4 100644 --- a/zzCardCodeGenerator.php +++ b/zzCardCodeGenerator.php @@ -28,7 +28,7 @@ $setArray = []; $cardIDArray = []; - $language = "FR"; + $language = "EN"; while ($hasMoreData) { @@ -70,25 +70,24 @@ } AddToArrays($cardID, $card->cardUid); - - $definedType = $card->type->data->attributes->name; - if($definedType == "Token Unit") $definedType = "Unit"; - $imageUrl = $card->artFront->data->attributes->formats->card->url; - + //$imageUrl = "https://swudb.com/cards/" . $set . "/" . $cardNumber . ".png"; + $imageUrl = $card->artFront->data->attributes->formats->card->url; + $imageWidth = $card->artFront->data->attributes->width; + $imageHeight = $card->artFront->data->attributes->height; + $isLandscape = $imageWidth > $imageHeight; + $isBottomPosition = $card->hp === null && $card->power === null && $card->upgradeHp === null && $card->upgradePower === null; // Only Events are bottom position. This is a hack to check if the card is an event. + CheckImage($card->cardUid, $imageUrl, $language, isLandscape:$isLandscape, isBottomPosition:$isBottomPosition); - - CheckImage($card->cardUid, $imageUrl, $language, $definedType, set:$set); - if($card->artBack->data != null) { - $type2 = $card->type2->data == null ? "" : $card->type2->data->attributes->name; - if($type2 == "Leader Unit" || $type2 == "Leader Unité" || $type2 = "Unidad Líder" || $type2 == "Anführer-Einheit" || $type2 = "Unità Leader") $definedType = "Unit"; + if ($card->artBack->data != null) { $imageUrl = $card->artBack->data->attributes->formats->card->url; - echo("$imageUrl"); - echo(" "); + $imageWidth = $card->artBack->data->attributes->width; + $imageHeight = $card->artBack->data->attributes->height; + $isLandscape = $imageWidth > $imageHeight; $arr = explode("_", $imageUrl); $arr = explode(".", $arr[count($arr)-1]); $uuid = $arr[0]; - CheckImage($uuid, $imageUrl, $language, $definedType, isBack:true, set:$set); + CheckImage($uuid, $imageUrl, $language, isLandscape:$isLandscape, isBottomPosition:false); AddToArrays($cardID, $uuid); } } @@ -261,7 +260,7 @@ function AddToArrays($cardID, $uuid) // Type 2 $definedType2 = $card->type2->data ? $card->type2->data->attributes->name : ""; - if ($definedType2 == "Leader Unit" || $definedType2 == "Leader Unité" || $definedType2 = "Unidad Líder" || $definedType2 == "Anführer-Einheit" || $definedType2 = "Unità Leader") $definedType2 = "Unit"; + if ($definedType2 == "Leader Unit") $definedType2 = "Unit"; if ($definedType2 && $definedType2 != $DEFAULT_CARD_TYPE2) { $type2Array[$uuid] = $definedType2; } diff --git a/zzImageConverter.php b/zzImageConverter.php index 50308d1f4..cdec82736 100644 --- a/zzImageConverter.php +++ b/zzImageConverter.php @@ -1,14 +1,13 @@ "); + echo("Image for $cardID does not exist.
"); + $handler = fopen($filename, "w"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $imageURL); @@ -27,25 +27,32 @@ function CheckImage($cardID, $url, $language, $definedType, $isBack=false, $set= curl_exec($ch); curl_close($ch); //if(filesize($filename) < 10000) { unlink($filename); return; } - if(file_exists($filename)) echo("Image for " . $cardID . " successfully retrieved.
"); - if(file_exists($filename)) - { + + if (file_exists($filename)) { + echo("Image for " . $cardID . " successfully retrieved.
"); echo("Normalizing file size for " . $cardID . ".
"); - echo("Defined Type: " . $definedType . "
"); + echo("Is Landscape: " . $isLandscape . "
"); + echo("Is Bottom Position: " . $isBottomPosition . "
"); $image = imagecreatefrompng($filename); //$image = imagecreatefromjpeg($filename); - if($definedType == "Base" || $definedType == "Leader") { - if(imagesy($image) > imagesx($image)) $image = imagerotate($image, -90, 0); + + if ($isLandscape) { + if(imagesy($image) > imagesx($image)) { + $image = imagerotate($image, -90, 0); + } $image = imagescale($image, 628, 450); + } else { + $image = imagescale($image, 450, 628); } - else $image = imagescale($image, 450, 628); imagewebp($image, $filename); // Free up memory imagedestroy($image); } + $isNew = true; } - if($language == "EN" && $isNew && !file_exists($filenameNew)) { + + if ($language == "EN" && $isNew && !file_exists($filenameNew)) { echo("Converting image for " . $cardID . " to new format.
"); try { $image = imagecreatefromwebp($filename); @@ -55,25 +62,24 @@ function CheckImage($cardID, $url, $language, $definedType, $isBack=false, $set= imagewebp($image, $filenameNew); imagedestroy($image); } - if(!file_exists($concatFilename)) - { + + if (!file_exists($concatFilename)) { echo("Concat image for " . $cardID . " does not exist. Converting: $filename
"); - if(file_exists($filename)) - { + + if (file_exists($filename)) { echo("Attempting to convert image for " . $cardID . " to concat.
"); $image = imagecreatefromwebp($filename); //$image = imagecreatefrompng($filename); - if($definedType == "Event") { + if($isBottomPosition) { $imageTop = imagecrop($image, ['x' => 0, 'y' => 0, 'width' => 450, 'height' => 110]); $imageBottom = imagecrop($image, ['x' => 0, 'y' => 320, 'width' => 450, 'height' => 628]); $dest = imagecreatetruecolor(450, 450); imagecopy($dest, $imageTop, 0, 0, 0, 0, 450, 110); imagecopy($dest, $imageBottom, 0, 111, 0, 0, 450, 404); - } - else { + } else { $imageTop = imagecrop($image, ['x' => 0, 'y' => 0, 'width' => 450, 'height' => 372]); $imageBottom = imagecrop($image, ['x' => 0, 'y' => 570, 'width' => 450, 'height' => 628]); @@ -88,14 +94,17 @@ function CheckImage($cardID, $url, $language, $definedType, $isBack=false, $set= imagedestroy($dest); imagedestroy($imageTop); imagedestroy($imageBottom); - if(file_exists($concatFilename)) echo("Image for " . $cardID . " successfully converted to concat.
"); + + if (file_exists($concatFilename)) { + echo("Image for " . $cardID . " successfully converted to concat.
"); + } } } - if(!file_exists($cropFilename)) - { + + if (!file_exists($cropFilename)) { echo("Crop image for " . $cardID . " does not exist.
"); - if(file_exists($filename)) - { + + if (file_exists($filename)) { echo("Attempting to convert image for " . $cardID . " to crops.
"); try { $image = imagecreatefromwebp($filename); @@ -103,7 +112,7 @@ function CheckImage($cardID, $url, $language, $definedType, $isBack=false, $set= $image = imagecreatefrompng($filename); } //$image = imagecreatefrompng($filename); - if($definedType == "Event") $image = imagecrop($image, ['x' => 50, 'y' => 326, 'width' => 350, 'height' => 246]); + if($isBottomPosition) $image = imagecrop($image, ['x' => 50, 'y' => 326, 'width' => 350, 'height' => 246]); else $image = imagecrop($image, ['x' => 50, 'y' => 100, 'width' => 350, 'height' => 270]); imagepng($image, $cropFilename); imagedestroy($image);