kingargyle / iaskirmish-data

Imperial Assault Data Project. Includes JSON data and format specification.
MIT License
4 stars 1 forks source link

UID field in every card #4

Open valeriodigregorio opened 6 years ago

valeriodigregorio commented 6 years ago

Can we have an UID in each card? Canonical name are not uniques :(

If yes please use same UID as Tabletop Admiral this will help with portability.

valeriodigregorio commented 6 years ago

According to TTAdmiral. Deployments:

    m = new HashMap<String, Integer>();
    m.put("lukeskywalker", 1); // Luke Skywalker (HotR)
    m.put("hansolo", 2); // Han Solo
    m.put("eliterebelsaboteur", 3); // Rebel Saboteur [Elite]
    m.put("eliterebeltrooper", 4); // Rebel Trooper [Elite]
    m.put("gideonargus", 5); // Gideon Argus
    m.put("generalweiss", 6); // General Weiss
    m.put("agentblaise", 7); // Agent Blaise
    m.put("eliteallianceranger", 8); // Alliance Ranger [Elite]
    m.put("allianceranger", 9); // Alliance Ranger
    m.put("elitealliancesmuggler", 10); // Alliance Smuggler [Elite]
    m.put("alliancesmuggler", 11); // Alliance Smuggler
    m.put("bantharider", 12); // Bantha Rider
    m.put("bobafett", 13); // Boba Fett
    m.put("bossk", 14); // Bossk
    m.put("captainterro", 15); // Captain Terro
    m.put("dewbackrider", 16); // Dewback Rider
    m.put("chewbacca", 17); // Chewbacca
    m.put("atst", 18); // AT-ST
    m.put("darthvader", 19); // Darth Vader
    m.put("dialapassil", 20); // Diala Passil
    m.put("eliteewebengineer", 21); // E-Web Engineer [Elite]
    m.put("ewebengineer", 22); // E-Web Engineer
    m.put("fennsignis", 23); // Fenn Signis
    m.put("gaarkhan", 24); // Gaarkhan
    m.put("eliteimperialofficer", 25); // Imperial Officer [Elite]
    m.put("imperialofficer", 26); // Imperial Officer
    m.put("jynodan", 27); // Jyn Odan
    m.put("makeshkarey", 28); // Mak Eshkarey
    m.put("elitenexu", 29); // Nexu [Elite]
    m.put("nexu", 30); // Nexu
    m.put("probedroid", 31); // Probe Droid
    m.put("royalguard", 32); // Royal Guard
    m.put("elitestormtrooper", 33); // Stormtrooper [Elite]
    m.put("stormtrooper", 34); // Stormtrooper
    m.put("elitetrandoshanhunter", 35); // Trandoshan Hunter [Elite]
    m.put("trandoshanhunter", 36); // Trandoshan Hunter
    m.put("dengar", 37); // Dengar
    m.put("eliteechobasetrooper", 38); // Echo Base Trooper [Elite]
    m.put("echobasetrooper", 39); // Echo Base Trooper
    m.put("generalsorin", 40); // General Sorin
    m.put("greedo", 41); // Greedo
    m.put("elitehiredgun", 42); // Hired Gun [Elite]
    m.put("hiredgun", 43); // Hired Gun
    m.put("ig88", 44); // IG-88
    m.put("eliteisbinfiltrator", 45); // ISB Infiltrator [Elite]
    m.put("isbinfiltrator", 46); // ISB Infiltrator
    m.put("elitegamorreanguard", 47); // Gamorrean Guard [Elite]
    m.put("gamorreanguard", 48); // Gamorrean Guard
    m.put("elitejettrooper", 49); // Jet Trooper [Elite]
    m.put("jettrooper", 50); // Jet Trooper
    m.put("onarkoma", 51); // Onar Koma
    m.put("rancor", 52); // Rancor
    m.put("shylavarad", 53); // Shyla Varad
    m.put("vintohreeda", 54); // Vinto Hreeda
    m.put("eliteweequaypirate", 55); // Weequay Pirate [Elite]
    m.put("weequaypirate", 56); // Weequay Pirate
    m.put("kaynsomos", 57); // Kayn Somos
    m.put("landocalrissian", 58); // Lando Calrissian
    m.put("leiaorgana", 59); // Leia Organa
    m.put("lukeskywalkerjedi", 60); // Luke Skywalker (Jedi)
    m.put("obiwankenobi", 61); // Obi-Wan Kenobi
    m.put("c3po", 62); // C-3P0
    m.put("r2d2", 63); // R2-D2
    m.put("rebelsaboteur", 64); // Rebel Saboteur
    m.put("rebeltrooper", 65); // Rebel Trooper
    m.put("elitehkassassindroid", 66); // HK Assassin Droid [Elite]
    m.put("hkassassindroid", 67); // HK Assassin Droid
    m.put("lokukanoloa", 68); // Loku Kanoloa
    m.put("mhd19", 69); // MHD-19
    m.put("sc2mrepulsortank", 70); // SC2-M Repulsor Tank
    m.put("elitesnowtrooper", 71); // Snowtrooper [Elite]
    m.put("snowtrooper", 72); // Snowtrooper
    m.put("verenatalos", 73); // Verena Talos
    m.put("elitewampa", 74); // Wampa [Elite]
    m.put("wampa", 75); // Wampa
    m.put("royalguardchampion", 76); // Royal Guard Champion
    m.put("davithelso", 77); // Davith Elso
    m.put("murnerin", 78); // Murne Rin
    m.put("eliteugnaughttinkerer", 79); // Ugnaught Tinkerer [Elite]
    m.put("ugnaughttinkerer", 80); // Ugnaught Tinkerer
    m.put("elitewingguard", 81); // Wing Guard [Elite]
    m.put("wingguard", 82); // Wing Guard
    m.put("thegrandinquisitor", 83); // The Grand Inquisitor
    m.put("bivbodhrik", 84); // Biv Bodhrik
    m.put("eliteheavystormtrooper", 85); // Heavy Stormtrooper [Elite]
    m.put("heavystormtrooper", 86); // Heavy Stormtrooper
    m.put("saskateft", 87); // Saska Teft
    m.put("elitetuskenraider", 88); // Tusken Raider [Elite]
    m.put("tuskenraider", 89); // Tusken Raider
    m.put("elitewookieewarrior", 90); // Wookie Warrior [Elite]
    m.put("wookieewarrior", 91); // Wookie Warrior
    m.put("zillotechnique", 92); // Zillo Technique
    m.put("survivalist", 93); // Survivalist
    m.put("smugglersrun", 94); // Smugglers Run
    m.put("beasttamer", 95); // Beast Tamer
    m.put("explosivearmaments", 96); // Explosive Armaments
    m.put("headhunter", 97); // Headhunter
    m.put("feedingfrenzy", 98); // Feeding Frenzy
    m.put("balanceoftheforce", 99); // Balance of the Force
    m.put("deviousscheme", 100); // Devious Scheme
    m.put("firststrike", 101); // First Strike
    m.put("rebelhighcommand", 102); // Rebel High Command
    m.put("temporaryallianceempire", 103); // Temporary Alliance (E)
    m.put("tempoaryalliancescum", 104); // Temporary Alliance (M)
    m.put("vadersfinest", 105); // Vaders Finest
    m.put("punishingstrike", 106); // Punishing Strike
    m.put("combatsuit", 107); // Combat Suit
    m.put("thegeneralsranks", 108); // The Generals Ranks
    m.put("preyontheweak", 109); // Prey on the Weak
    m.put("lastresort", 110); // Last Resort
    m.put("crosstraining", 111); // Cross-Training
    m.put("rulebyfear", 112); // Rule by Fear
    m.put("onadiplomaticmission", 113); // On A Diplomatic Mission
    m.put("channeltheforce", 114); // Channel the Force
    m.put("targetingcomputer", 115); // Targeting Computer
    m.put("underduress", 116); // Under Duress
    m.put("advancedcomsystems", 117); // Advanced Com Systems
    m.put("furyofkashyyk", 118); // Fury of Kashyyyk
    m.put("jabbathehutt", 120); // Jabba the Hutt
    m.put("blackmarket", 121); // Black Market
    m.put("heroiceffort", 122); // Heroic Effort
    m.put("eliteprobedroid", 123); // Probe Droid [Elite]
    m.put("indenturedjester", 124); // Indentured Jester
    m.put("eliteroyalguard", 125); // Royal Guard [Elite]
    m.put("unshakable", 126); // Unshakable
    m.put("salaciousbcrumb", 127); // Salacious B. Crumb
    m.put("motivation", 128); // Motivation
    m.put("herasyndulla", 129); // Hera Syndulla
    m.put("scavengedweaponry", 130); // Scavenged Weaponry
    m.put("bt1", 131); // BT-1
    m.put("c110p", 132); // C1-10P
    m.put("000", 133); // 0-0-0
    m.put("jawascavenger", 134); // Jawa Scavenger
    m.put("focusedonthekill", 135); // Focused on the Kill
    m.put("elitejawascavenger", 136); // Jawa Scavenger [Elite]
    m.put("kotunferalo", 138); // Ko-Tun Feralo
    m.put("drivenbyhatred", 139); // Driven by Hatred
    m.put("maul", 140); // Maul
    m.put("emperorpalpatine", 141); // Emperor Palpatine
    m.put("ahsokatano", 142); // Ahsoka Tano
    m.put("trustedally", 143); // Trusted Ally
    m.put("atdp", 144); // AT-DP
    m.put("sentrydroid", 145); // Sentry Droid
    m.put("clawditeshapeshifter", 146); // Clawdite Shapeshifter
    m.put("drokkatta", 147); // Drokkatta
    m.put("jarrodkelvin", 148); // Jarrod Kelvin
    m.put("roguesmuggler", 149); // Rogue Smuggler
    m.put("wookieeavenger", 150); // Wookiee Avenger
    m.put("riottrooper", 151); // Riot Trooper
    m.put("eliteclawditeshapeshifter", 152); // Clawdite Shapeshifter [Elite]
    m.put("eliteriottrooper", 153); // Riot Trooper [Elite]
    m.put("elitesentrydroid", 154); // Sentry Droid [Elite]
    m.put("j4x7", 156); // J4X-7
valeriodigregorio commented 6 years ago

According to TTAdmiral. Commands:

        m = new HashMap<String, Integer>();
        m.put("heartoffreedom", 1); // Heart of Freedom
        m.put("selfdefense", 2); // Self-Defense
        m.put("espionagemastery", 4); // Espionage Mastery
        m.put("intelligenceleak", 5); // Intelligence Leak
        m.put("smuggledsupplies", 6); // Smuggled Supplies
        m.put("smugglerstricks", 7); // Smugglers Tricks
        m.put("crush", 8); // Crush
        m.put("jundlandterror", 9); // Jundland Terror
        m.put("opportunistic", 10); // Opportunistic
        m.put("partingblow", 11); // Parting Blow
        m.put("capturetheweary", 12); // Capture the Weary
        m.put("mandaloriantactics", 13); // Mandalorian Tactics
        m.put("disorient", 14); // Disorient
        m.put("grislycontest", 15); // Grisly Contest
        m.put("trandoshanterror", 16); // Trandoshan Terror
        m.put("adrenaline", 17); // Adrenaline
        m.put("debtsrepaid", 18); // Debts Repaid
        m.put("holdground", 19); // Hold Ground
        m.put("roar", 20); // Roar
        m.put("wookieerage", 21); // Wookie Rage
        m.put("burstfire", 22); // Burst Fire
        m.put("celebration", 23); // Celebration
        m.put("closethegap", 24); // Close the Gap
        m.put("coveringfire", 25); // Covering Fire
        m.put("deadeye", 26); // Deadeye
        m.put("deflection", 27); // Deflection
        m.put("elementofsurprise", 28); // Element of Surprise
        m.put("exposeweakness", 29); // Expose Weakness
        m.put("ferocity", 30); // Ferocity
        m.put("fleetfooted", 31); // Fleet Footed
        m.put("forcelightning", 32); // Force Lightning
        m.put("furiouscharge", 33); // Furious Charge
        m.put("guardianstance", 34); // Guardian Stance
        m.put("hunterprotocol", 35); // Hunter Protocol
        m.put("knowledgeanddefense", 36); // Knowledge and Defense
        m.put("lordofthesith", 37); // Lord of the Sith
        m.put("lureofthedarkside", 38); // Lure of the Dark Side
        m.put("marksman", 39); // Marksman
        m.put("maximumfirepower", 40); // Maximum Firepower
        m.put("meditation", 41); // Meditation
        m.put("oneinamillion", 42); // One in a Million
        m.put("planning", 43); // Planning
        m.put("priceontheirheads", 44); // Price on Their Heads
        m.put("pummel", 45); // Pummel
        m.put("rally", 46); // Rally
        m.put("recovery", 47); // Recovery
        m.put("regroup", 48); // Regroup
        m.put("shadowops", 49); // Shadow Ops
        m.put("sittight", 50); // Sit Tight
        m.put("sonofskywalker", 51); // Son of Skywalker
        m.put("takecover", 52); // Take Cover
        m.put("takeinitiative", 53); // Take Initiative
        m.put("takeitdown", 54); // Take it Down
        m.put("telekineticthrow", 55); // Telekinetic Throw
        m.put("tothelimit", 56); // To the Limit
        m.put("urgency", 57); // Urgency
        m.put("braceyourself", 58); // Brace Yourself
        m.put("dangerousbargains", 59); // Dangerous Bargains
        m.put("payback", 60); // Payback
        m.put("againsttheodds", 61); // Against the Odds
        m.put("efficienttravel", 62); // Efficient Travel
        m.put("hitandrun", 63); // Hit and Run
        m.put("fieldtactician", 64); // Field Tactician
        m.put("fuelupgrade", 65); // Fuel Upgrade
        m.put("optimalbombardment", 66); // Optimal Bombardment
        m.put("endlessreserves", 67); // Endless Reserves
        m.put("explosiveweaponry", 68); // Explosive Weaponry
        m.put("heavyarmor", 69); // Heavy Armor
        m.put("neworders", 70); // New Orders
        m.put("overrun", 71); // Overrun
        m.put("intheshadows", 72); // In the Shadows
        m.put("primarytarget", 73); // Primary Target
        m.put("strokeofbrilliance", 74); // Stroke of Brilliance
        m.put("disable", 75); // Disable
        m.put("imakemyownluck", 76); // I Make My Own Luck
        m.put("inspiringspeech", 77); // Inspiring Speech
        m.put("reposition", 78); // Reposition
        m.put("slipperytarget", 79); // Slippery Target
        m.put("ofnoimportance", 80); // Of No Importance
        m.put("blazeofglory", 81); // Blaze of Glory
        m.put("dirtytrick", 82); // Dirty Trick
        m.put("merciless", 83); // Merciless
        m.put("overdrive", 84); // Overdrive
        m.put("repair", 85); // Repair
        m.put("commdisruption", 86); // Comm Disruption
        m.put("datatheft", 87); // Data Theft
        m.put("strategicshift", 88); // Strategic Shift
        m.put("rallythetroops", 89); // Rally the Troops
        m.put("rankandfile", 90); // Rank and File
        m.put("squadswarm", 91); // Squad Swarm
        m.put("blackmarketprices", 92); // Black Market Prices
        m.put("cheattowin", 93); // Cheat to Win
        m.put("stallfortime", 94); // Stall for Time
        m.put("behindenemylines", 95); // Behind Enemy Lines
        m.put("icanfeelit", 96); // I Can Feel It
        m.put("thereisanother", 97); // There is Another
        m.put("apowerfulinfluence", 98); // A Powerful Influence
        m.put("forcesurge", 99); // Force Surge
        m.put("imustgoalone", 100); // I Must Go Alone
        m.put("devotion", 101); // Devotion
        m.put("etiquetteandprotocol", 102); // Etiquette and Protocol
        m.put("hardtohit", 103); // Hard to Hit
        m.put("singlepurpose", 104); // Single Purpose
        m.put("terminalnetwork", 105); // Terminal Network
        m.put("changeofplans", 106); // Change of Plans
        m.put("collectintel", 107); // Collect Intel
        m.put("emergencyaid", 108); // Emergency Aid
        m.put("hideinplainsight", 109); // Hide in Plain Sight
        m.put("lockon", 110); // Lock On
        m.put("focus", 111); // Focus
        m.put("grenadier", 112); // Grenadier
        m.put("reinforcements", 113); // Reinforcements
        m.put("strengthinnumbers", 114); // Strength in Numbers
        m.put("coordinatedattack", 115); // Coordinated Attack
        m.put("harshenvironment", 116); // Harsh Environment
        m.put("masteroperative", 117); // Master Operative
        m.put("miracleworker", 118); // Miracle Worker
        m.put("negation", 119); // Negation
        m.put("overchargedweapons", 120); // Overcharged Weapons
        m.put("setatrap", 121); // Set a Trap
        m.put("sizeadvantage", 122); // Size Advantage
        m.put("survivalinstincts", 123); // Survival Instincts
        m.put("bodyguard", 124); // Bodyguard
        m.put("counterattack", 125); // Counter Attack
        m.put("cripple", 126); // Cripple
        m.put("flurryofblades", 127); // Flurry of Blades
        m.put("setforstun", 128); // Set for Stun
        m.put("stealthtactics", 129); // Stealth Tactics
        m.put("camouflage", 130); // Camouflage
        m.put("fataldeception", 131); // Fatal Deception
        m.put("forceillusion", 132); // Force Illusion
        m.put("vanish", 133); // Vanish
        m.put("deadlyprecision", 134); // Deadly Precision
        m.put("forcerush", 135); // Force Rush
        m.put("huntthemdown", 136); // Hunt Them Down
        m.put("cruelstrike", 137); // Cruel Strike
        m.put("hiddentrap", 138); // Hidden Trap
        m.put("staydown", 139); // Stay Down
        m.put("improvisedweapons", 140); // Improvised Weapons
        m.put("wildfury", 141); // Wild Fury
        m.put("shootthemessenger", 142); // Shoot the Messenger
        m.put("assassinate", 143); // Assassinate
        m.put("bloodfeud", 144); // Blood Feud
        m.put("jumpjets", 145); // Jump Jets
        m.put("toughluck", 146); // Tough Luck
        m.put("wildattack", 147); // Wild Attack
        m.put("callthevanguard", 148); // Call the Vanguard
        m.put("heightenedreflexes", 149); // Heightened Reflexes
        m.put("mitigate", 150); // Mitigate
        m.put("battlefieldawareness", 151); // Battlefield Awareness
        m.put("cavalrycharge", 152); // Cavalry Charge
        m.put("feralswipes", 153); // Feral Swipes
        m.put("blitz", 154); // Blitz
        m.put("parry", 155); // Parry
        m.put("positioningadvantage", 156); // Positioning Advantage
        m.put("onthelam", 157); // On the Lam
        m.put("toolsforthejob", 158); // Tools for the Job
        m.put("stimulants", 159); // Stimulants
        m.put("pickpocket", 160); // Pickpocket
        m.put("toxicdart", 161); // Toxic Dart
        m.put("gloryofthekill", 162); // Glory of the Kill
        m.put("runforcover", 163); // Run for Cover
        m.put("draw", 164); // Draw!
        m.put("extraprotection", 165); // Extra Protection
        m.put("bladestorm", 166); // Bladestorm
        m.put("sarlacsweep", 167); // Sarlacc Sweep
        m.put("provoke", 168); // Provoke
        m.put("sharedexperience", 169); // Shared Experience
        m.put("ballisticsmatrix", 170); // Ballistics Matrix
        m.put("triangulate", 171); // Triangulate
        m.put("onamission", 172); // On A Mission
        m.put("eerievisage", 174); // Eerie Visage
        m.put("utinni", 175); // Utinni!
        m.put("navigationupgrade", 176); // Navigation Upgrade
        m.put("advancewarning", 177); // Advance Warning
        m.put("targetingnetwork", 178); // Targeting Network
        m.put("evacuate", 179); // Evacuate
        m.put("lookingforafight", 180); // Looking for a Fight
        m.put("cutlines", 181); // Cut Lines
        m.put("braceforimpact", 182); // Brace for Impact
        m.put("takeposition", 183); // Take Position
        m.put("battlescars", 184); // Battle Scars
        m.put("collateraldamage", 185); // Collateral Damage
        m.put("fieldsupply", 186); // Field Supply
        m.put("heavyordnance", 187); // Heavy Ordnance
        m.put("readyweapons", 188); // Ready Weapons
        m.put("terminalprotocol", 189); // Terminal Protocol
        m.put("balancingforce", 191); // Balancing Force
        m.put("foolmeonce", 192); // Fool Me Once
        m.put("forcejump", 193); // Force Jump
        m.put("forcepush", 194); // Force Push
        m.put("rightbackatya", 195); // Right Back At Ya
        m.put("chaoticforce", 196); // Chaotic Force
        m.put("deathblow", 197); // Deathblow
        m.put("facetoface", 198); // Face to Face
        m.put("wreakvengeance", 200); // Wreak Vengeance
        m.put("corruptingforce", 201); // Corrupting Force
        m.put("darkenergy", 202); // Dark Energy
        m.put("preparedforbattle", 203); // Prepared for Battle
        m.put("unlimitedpower", 204); // Unlimited Power
        m.put("arcingshot", 205); // Arcing Shot
        m.put("armedescort", 206); // Armed Escort
        m.put("concentratedfire", 207); // Concentrated Fire
        m.put("droidmastery", 208); // Droid Mastery
        m.put("forwardmarch", 209); // Forward March
        m.put("officerstraining", 210); // Officers Training

Don't reuse following UIDs: 173: "sharedexperience" 190: "takeposition" 199: "lookingforafight" These looks somehow duplicated on TTAdmiral.

kingargyle commented 6 years ago

I'd rather try to stay away from adding UIDs that are specific to a particular implementation, it just rubs the Data Architect in me wrong. If we come up with rules like, Faction + Canonical Name for look up and requirement, we can achieve the same thing, that isn't tied to a particulary system specific id.

valeriodigregorio commented 6 years ago

Fine with canonical names as long as you'll keep them unique over time.

kingargyle commented 6 years ago

We just need to establish rules for people to look items up. Which is why need canonical names not just for deployment cards, but command cards, factions, and types. As I said, open to suggestions to help improve things, I did all this design while I had down time at a client in November so probably missed some use cases.