boardgamers / gaia-engine

Javascript engine for project gaia
MIT License
13 stars 6 forks source link

Federation lost planet algorithm glitch #219

Closed coyotte508 closed 3 years ago

coyotte508 commented 3 years ago

https://www.boardgamers.space/game/Blue-list-835 There was an alliance building issue on end of the game experienced by terrans. Basically, I wanted to build a federation using the shortest way, which was fine but then the shortest path was blocked by the lost planet of the other player. I was like ''Okey, I will use one more satelite to do it around'' But the game kept suggesting shortest path going through the lost planet and then if I tried it said that I can not put it there due to that lost planet. And when I custom build the satelite road it said that I must use shortest path and in the sugested road was again the lost planet on which the satelite can not be put. It wouldn't change outcome of the game but still was annoying that glitch caused the block to be way stronger than should have been

Zevenberge commented 3 years ago

Didn't manage to fix it yet, but the following json reproduces the issue.

{"players":[{"player":0,"faction":"terrans","data":{"victoryPoints":10,"bid":0,"credits":7,"ores":4,"qics":3,"knowledge":0,"power":{"area1":1,"area2":6,"area3":0,"gaia":0},"research":{"terra":2,"nav":2,"int":1,"gaia":1,"eco":0,"sci":0},"range":2,"gaiaformers":1,"gaiaformersInGaia":0,"terraformCostDiscount":1,"tiles":{"booster":"booster8","techs":[{"tile":"tech1","pos":"free3","enabled":true},{"tile":"tech8","pos":"nav","enabled":true}],"federations":[]},"satellites":0,"brainstone":null,"leechPossible":3,"tokenModifier":1,"buildings":{"m":3,"ts":1,"lab":0,"PI":0,"ac1":1,"ac2":0,"gf":0,"sp":0},"federationCount":0,"lostPlanet":0},"settings":{"autoChargePower":1},"events":{">":[{"spec":"3k,4o,15c,q,up-gaia","source":"income"},{"spec":">gf","source":"gaia"},{"spec":"o,q","source":"tech-free3"},{"spec":"tech","source":"income"},{"spec":"r","source":"nav"},{"spec":"q","source":"int"},{"spec":"d","source":"terra"},{"spec":"2o","source":"power3"}],"+":[{"spec":"+o,k","source":"income"},{"spec":"+o","source":"income"},{"spec":"+2k","source":"income"},{"spec":"+4c","source":"tech-nav"},{"spec":"+o","source":"income"},{"spec":"+3c","source":"income"}],">>":[{"spec":"m >> 2vp","source":"round3"}],"=>":[],"|":[{"spec":"lab | 3vp","source":"booster8"}],"PA->4pw":[]},"federationCache":{"availableSatellites":8,"federations":[{"planets":4,"satellites":1,"hexes":["2A11","3A6","3A7","6A1","6B0"]},{"planets":4,"satellites":5,"hexes":["8A2","2A7","2A8","6A4","6A3","6B1","6A1","3A7","6B0"]}]}},{"player":1,"faction":"xenos","data":{"victoryPoints":19,"bid":0,"credits":6,"ores":5,"qics":0,"knowledge":1,"power":{"area1":0,"area2":0,"area3":3,"gaia":0},"research":{"terra":1,"nav":5,"int":1,"gaia":0,"eco":1,"sci":0},"range":4,"gaiaformers":0,"gaiaformersInGaia":0,"terraformCostDiscount":0,"tiles":{"booster":"booster9","techs":[{"tile":"tech1","pos":"free3","enabled":true},{"tile":"tech5","pos":"free1","enabled":true},{"tile":"tech8","pos":"nav","enabled":true},{"tile":"tech6","pos":"free2","enabled":true}],"federations":[{"tile":"fed4","green":false}]},"satellites":3,"brainstone":null,"leechPossible":0,"tokenModifier":1,"buildings":{"m":2,"ts":1,"lab":1,"PI":0,"ac1":1,"ac2":0,"gf":0,"sp":0},"federationCount":1,"lostPlanet":1},"settings":{"autoChargePower":1},"events":{">":[{"spec":"3k,4o,15c,q,up-int","source":"income"},{"spec":"q","source":"int"},{"spec":"o,q","source":"tech-free3"},{"spec":"2o","source":"power3"},{"spec":"tech","source":"qic1"},{"spec":"2o","source":"terra"},{"spec":"tech","source":"income"},{"spec":"7c","source":"power4"},{"spec":"tech","source":"income"},{"spec":"2o","source":"power3"},{"spec":"r","source":"nav"}],"+":[{"spec":"+o,k","source":"income"},{"spec":"+o","source":"income"},{"spec":"+o","source":"income"},{"spec":"+o,pw","source":"tech-free1"},{"spec":"+2k","source":"income"},{"spec":"+4c","source":"tech-nav"},{"spec":"+2c,pw","source":"eco"},{"spec":"+k","source":"income"},{"spec":"+k,c","source":"tech-free2"},{"spec":"+3c","source":"income"}],">>":[{"spec":"m >> 2vp","source":"round3"}],"=>":[],"|":[{"spec":"PA | 4vp","source":"booster9"}],"PA->4pw":[]}}],"setup":["terrans","xenos"],"options":{"layout":"xshape","advancedRules":true,"map":{"sectors":[{"sector":"6A","rotation":1,"center":{"q":0,"r":0,"s":0}},{"sector":"1","rotation":5,"center":{"q":5,"r":-2,"s":-3}},{"sector":"3","rotation":1,"center":{"q":2,"r":3,"s":-5}},{"sector":"2","rotation":1,"center":{"q":-3,"r":5,"s":-2}},{"sector":"8","rotation":1,"center":{"q":-5,"r":2,"s":3}},{"sector":"4","rotation":5,"center":{"q":-2,"r":-3,"s":5}},{"sector":"5A","rotation":0,"center":{"q":-1,"r":8,"s":-7}},{"sector":"7A","rotation":3,"center":{"q":-8,"r":7,"s":1}}],"mirror":false}},"tiles":{"boosters":{"booster1":true,"booster8":false,"booster9":false,"booster3":true,"booster5":true},"techs":{"terra":{"tile":"tech2","count":4},"nav":{"tile":"tech8","count":2},"int":{"tile":"tech7","count":4},"gaia":{"tile":"tech9","count":4},"eco":{"tile":"tech3","count":4},"sci":{"tile":"tech4","count":4},"free1":{"tile":"tech5","count":3},"free2":{"tile":"tech6","count":3},"free3":{"tile":"tech1","count":2},"adv-terra":{"tile":"advtech3","count":1},"adv-nav":{"tile":"advtech14","count":1},"adv-int":{"tile":"advtech10","count":1},"adv-gaia":{"tile":"advtech7","count":1},"adv-eco":{"tile":"advtech8","count":1},"adv-sci":{"tile":"advtech12","count":1}},"scorings":{"round":["score1","score8","score3","score9","score2","score4"],"final":["gaia","planetType"]},"federations":{"fed1":3,"fed2":2,"fed3":3,"fed4":2,"fed5":3,"fed6":3}},"boardActions":{"power1":true,"power2":true,"power3":false,"power4":true,"power5":true,"power6":true,"power7":true,"qic1":true,"qic2":true,"qic3":true},"availableCommands":[{"name":"build","player":0,"data":{"buildings":[{"building":"gf","coordinates":"6A9","cost":"6t->tg","steps":0},{"building":"PI","cost":"6c,4o","coordinates":"6A1","upgrade":true},{"building":"lab","cost":"5c,3o","coordinates":"6A1","upgrade":true},{"building":"ts","cost":"3c,2o","coordinates":"6B0","upgrade":true},{"building":"m","coordinates":"1A4","cost":"2c,3o","steps":1},{"building":"gf","coordinates":"1A7","cost":"1q,6t->tg","steps":0},{"building":"m","coordinates":"1B4","cost":"2c,1o,1q","steps":0},{"building":"gf","coordinates":"3A2","cost":"1q,6t->tg","steps":0},{"building":"m","coordinates":"3B2","cost":"2c,1o,1q","steps":0},{"building":"m","coordinates":"3B5","cost":"2c,3o","steps":1},{"building":"m","coordinates":"2A9","cost":"2c,3o","steps":1},{"building":"ts","cost":"3c,2o","coordinates":"2A11","upgrade":true},{"building":"m","coordinates":"2B1","cost":"2c,3o","steps":1},{"building":"ts","cost":"6c,2o","coordinates":"8A2","upgrade":true},{"building":"gf","coordinates":"8A7","cost":"1q,6t->tg","steps":0},{"building":"gf","coordinates":"8A0","cost":"6t->tg","steps":0},{"building":"m","coordinates":"8B1","cost":"2c,3o","steps":1},{"building":"m","coordinates":"4A1","cost":"2c,3o,1q","steps":1},{"building":"m","coordinates":"4A6","cost":"2c,1o,3q","steps":0},{"building":"m","coordinates":"4B5","cost":"2c,3o,2q","steps":1},{"building":"m","coordinates":"5A0","cost":"2c,3o,2q","steps":1},{"building":"m","coordinates":"5A9","cost":"2c,3o,1q","steps":1},{"building":"gf","coordinates":"5A10","cost":"1q,6t->tg","steps":0},{"building":"m","coordinates":"5B1","cost":"2c,1o,3q","steps":0},{"building":"gf","coordinates":"7A0","cost":"1q,6t->tg","steps":0},{"building":"m","coordinates":"7B5","cost":"2c,3o","steps":1},{"building":"m","coordinates":"7B1","cost":"2c,1o,2q","steps":0},{"building":"m","coordinates":"7B3","cost":"2c,1o,2q","steps":0}]}},{"name":"federation","player":0,"data":{"tiles":["fed1","fed2","fed3","fed4","fed5","fed6"],"federations":[{"planets":4,"satellites":1,"hexes":"2A11,3A6,3A7,6A1,6B0"},{"planets":4,"satellites":5,"hexes":"2A7,2A8,3A7,6A1,6A3,6A4,6B0,6B1,8A2"}]}},{"name":"action","player":0,"data":{"poweracts":[{"name":"qic3","cost":"2q","income":["3vp","pt > vp"]}]}},{"name":"spend","player":0,"data":{"acts":[{"cost":"1q","income":"1o","range":[1,2,3]},{"cost":"1o","income":"1c","range":[1,2,3,4]},{"cost":"1o","income":"1t","range":[1,2,3,4]}]}},{"name":"burn","player":0,"data":[1,2,3]},{"name":"pass","player":0,"data":{"boosters":["booster1","booster3","booster5"]}}],"phase":"roundMove","subPhase":"beforeMove","round":3,"turnOrder":[0,1],"tempTurnOrder":[],"leechSources":[],"moveHistory":["init 2 randomSeed2","p2 rotate -3x5 1 -8x7 2","p1 faction terrans","p2 faction xenos","terrans build m 3A7","xenos build m 2A1","xenos build m 3A8","terrans build m 8A2","xenos build m 6A10","xenos booster booster9","terrans booster booster1","terrans build ts 3A7.","xenos charge 1pw","xenos build ts 3A8.","terrans charge 2pw","terrans build lab 3A7. tech free3. up terra.","xenos charge 2pw","xenos build lab 3A8. tech free3. up nav.","terrans charge 2pw","terrans build ac1 3A7. tech nav. up nav.","xenos charge 1pw","xenos action power3.","terrans up nav.","xenos action qic1. tech free1. up terra.","terrans build gf 6A1.","xenos build ac1 3A8. tech nav. up nav.","terrans charge 2pw","terrans spend 1pw for 1c. pass booster3","xenos up eco.","xenos pass booster1","terrans build m 6A1.","xenos charge 3pw","xenos build m 5A6.","terrans build m 6B0.","xenos charge 3pw","xenos action power4.","terrans build gf 2A11.","xenos build ts 6A10.","terrans charge 1pw","terrans spend 1pw for 1c. up int.","xenos build lab 6A10. tech free2. up nav.","terrans charge 1pw","terrans spend 1q for 1o. spend 1q for 1o. build ts 6A1.","xenos charge 3pw","xenos up nav.","terrans pass booster8","xenos action power3.","xenos build m 6B4.","terrans charge 1pw","xenos pass booster9","terrans build m 2A11.","xenos charge 1pw","xenos build ts 6B4.","terrans charge 1pw","terrans up terra.","xenos federation 3A8,6A0,6A10,6A11,6B4,6B5 fed4.","terrans burn 1. action power3.","xenos up nav. lostPlanet 3A6.","terrans charge 3pw"],"advancedLog":[{"player":1,"move":1},{"player":0,"move":2},{"player":1,"move":3},{"player":0,"changes":{"income":{"k":3,"o":4,"c":15,"q":1}}},{"player":1,"changes":{"income":{"k":3,"o":4,"c":15,"q":1},"int":{"q":1}}},{"player":0,"move":4},{"player":1,"move":5},{"player":1,"move":6},{"player":0,"move":7},{"player":1,"move":8},{"player":1,"move":9},{"player":0,"move":10},{"round":1},{"phase":"roundIncome"},{"player":0,"changes":{"income":{"o":3,"k":1},"booster1":{"k":1,"o":1}}},{"player":1,"changes":{"income":{"o":3,"k":1},"booster9":{"pw":4}}},{"phase":"roundGaia"},{"player":0,"move":11,"changes":{"build":{"c":-3,"o":-2}}},{"player":1,"move":12,"changes":{"charge":{"pw":1}}},{"player":1,"move":13,"changes":{"build":{"c":-3,"o":-2}}},{"player":0,"move":14,"changes":{"charge":{"pw":2,"vp":-1}}},{"player":0,"move":15,"changes":{"build":{"c":-5,"o":-3},"tech-free3":{"o":1,"q":1},"terra":{"o":2}}},{"player":1,"move":16,"changes":{"charge":{"pw":2,"vp":-1}}},{"player":1,"move":17,"changes":{"build":{"c":-5,"o":-3},"tech-free3":{"o":1,"q":1},"nav":{"q":1}}},{"player":0,"move":18,"changes":{"charge":{"pw":2,"vp":-1}}},{"player":0,"move":19,"changes":{"build":{"c":-6,"o":-6},"nav":{"q":1}}},{"player":1,"move":20,"changes":{"charge":{"pw":1}}},{"player":1,"move":21,"changes":{"power3":{"pw":-4,"o":2}}},{"player":0,"move":22,"changes":{"up":{"k":-4}}},{"player":1,"move":23,"changes":{"qic1":{"q":-4},"terra":{"o":2}}},{"player":0,"move":24},{"player":1,"move":25,"changes":{"build":{"c":-6,"o":-6}}},{"player":0,"move":26,"changes":{"charge":{"pw":2,"vp":-1}}},{"player":0,"move":27,"changes":{"spend":{"pw":-1,"c":1}}},{"player":1,"move":28,"changes":{"up":{"k":-4}}},{"player":1,"move":29,"changes":{"booster9":{"vp":4}}},{"round":2},{"phase":"roundIncome"},{"player":0,"changes":{"income":{"o":2,"k":3},"tech-nav":{"c":4},"booster3":{"q":1,"c":2}}},{"player":1,"changes":{"income":{"o":3,"k":3},"tech-free1":{"o":1,"pw":1},"tech-nav":{"c":4},"eco":{"c":2,"pw":1},"booster1":{"k":1,"o":1}}},{"phase":"roundGaia"},{"player":0,"move":30,"changes":{"build":{"c":-2,"o":-1}}},{"player":1,"move":31,"changes":{"charge":{"pw":3,"vp":-2}}},{"player":1,"move":32,"changes":{"build":{"c":-2,"o":-1}}},{"player":0,"move":33,"changes":{"build":{"c":-2,"o":-1}}},{"player":1,"move":34,"changes":{"charge":{"pw":3,"vp":-2}}},{"player":1,"move":35,"changes":{"power4":{"pw":-4,"c":7}}},{"player":0,"move":36},{"player":1,"move":37,"changes":{"build":{"c":-3,"o":-2},"round2":{"vp":3}}},{"player":0,"move":38,"changes":{"charge":{"pw":1}}},{"player":0,"move":39,"changes":{"spend":{"pw":-1,"c":1},"up":{"k":-4},"int":{"q":1}}},{"player":1,"move":40,"changes":{"build":{"c":-5,"o":-3},"nav":{"q":1,"pw":3}}},{"player":0,"move":41,"changes":{"charge":{"pw":1}}},{"player":0,"move":42,"changes":{"spend":{"q":-2,"o":2},"build":{"c":-3,"o":-2},"round2":{"vp":3}}},{"player":1,"move":43,"changes":{"charge":{"pw":3,"vp":-2}}},{"player":1,"move":44,"changes":{"up":{"k":-4}}},{"player":0,"move":45},{"player":1,"move":46,"changes":{"power3":{"pw":-4,"o":2}}},{"player":1,"move":47,"changes":{"build":{"c":-2,"o":-1,"q":-1}}},{"player":0,"move":48,"changes":{"charge":{"pw":1}}},{"player":1,"move":49},{"round":3},{"phase":"roundIncome"},{"player":0,"changes":{"income":{"o":3,"k":3,"c":3},"tech-nav":{"c":4},"booster8":{"k":1}}},{"player":1,"changes":{"income":{"o":3,"k":4},"tech-free1":{"o":1,"pw":1},"tech-nav":{"c":4},"eco":{"c":2,"pw":1},"tech-free2":{"k":1,"c":1},"booster9":{"pw":4}}},{"phase":"roundGaia"},{"player":0,"move":50,"changes":{"build":{"c":-2,"o":-1},"round3":{"vp":2}}},{"player":1,"move":51,"changes":{"charge":{"pw":1}}},{"player":1,"move":52,"changes":{"build":{"c":-3,"o":-2}}},{"player":0,"move":53,"changes":{"charge":{"pw":1}}},{"player":0,"move":54,"changes":{"up":{"k":-4}}},{"player":1,"move":55,"changes":{"federation":{"t":-3,"vp":7,"o":2}}},{"player":0,"move":56,"changes":{"power3":{"pw":-4,"o":2}}},{"player":1,"move":57,"changes":{"up":{"k":-4},"round3":{"vp":2}}},{"player":0,"move":58,"changes":{"charge":{"pw":3,"vp":-2}}}],"turnMoves":[],"newTurn":true,"terraformingFederation":"fed2","currentPlayer":0,"availableCommand":null,"oldPhase":"roundLeech","processedPlayer":0,"passedPlayers":[],"lastLeechSource":{"player":1,"coordinates":"3A6"},"map":[{"q":0,"r":2,"s":-2,"data":{"planet":"e","sector":"6A"}},{"q":-1,"r":2,"s":-1,"data":{"planet":"e","sector":"6A"}},{"q":-2,"r":2,"s":0,"data":{"planet":"e","sector":"6A"}},{"q":-2,"r":1,"s":1,"data":{"planet":"e","sector":"6A"}},{"q":-2,"r":0,"s":2,"data":{"planet":"e","sector":"6A"}},{"q":-1,"r":-1,"s":2,"data":{"planet":"e","sector":"6A"}},{"q":0,"r":-2,"s":2,"data":{"planet":"e","sector":"6A"}},{"q":1,"r":-2,"s":1,"data":{"planet":"m","sector":"6A"}},{"q":2,"r":-2,"s":0,"data":{"planet":"d","sector":"6A","building":"lab","player":1,"federations":[1]}},{"q":2,"r":-1,"s":-1,"data":{"planet":"e","sector":"6A","federations":[1]}},{"q":2,"r":0,"s":-2,"data":{"planet":"e","sector":"6A","federations":[1]}},{"q":1,"r":1,"s":-2,"data":{"planet":"g","sector":"6A","building":"ts","player":0}},{"q":0,"r":1,"s":-1,"data":{"planet":"e","sector":"6A"}},{"q":-1,"r":1,"s":0,"data":{"planet":"s","sector":"6A"}},{"q":-1,"r":0,"s":1,"data":{"planet":"e","sector":"6A"}},{"q":0,"r":-1,"s":1,"data":{"planet":"g","sector":"6A","building":"ts","player":1,"federations":[1]}},{"q":1,"r":-1,"s":0,"data":{"planet":"e","sector":"6A","federations":[1]}},{"q":1,"r":0,"s":-1,"data":{"planet":"r","sector":"6A","building":"m","player":0}},{"q":0,"r":0,"s":0,"data":{"planet":"e","sector":"6A"}},{"q":7,"r":-4,"s":-3,"data":{"planet":"e","sector":"1"}},{"q":7,"r":-3,"s":-4,"data":{"planet":"e","sector":"1"}},{"q":7,"r":-2,"s":-5,"data":{"planet":"e","sector":"1"}},{"q":6,"r":-1,"s":-5,"data":{"planet":"d","sector":"1"}},{"q":5,"r":0,"s":-5,"data":{"planet":"e","sector":"1"}},{"q":4,"r":0,"s":-4,"data":{"planet":"e","sector":"1"}},{"q":3,"r":0,"s":-3,"data":{"planet":"o","sector":"1"}},{"q":3,"r":-1,"s":-2,"data":{"planet":"v","sector":"1"}},{"q":3,"r":-2,"s":-1,"data":{"planet":"e","sector":"1"}},{"q":4,"r":-3,"s":-1,"data":{"planet":"m","sector":"1"}},{"q":5,"r":-4,"s":-1,"data":{"planet":"e","sector":"1"}},{"q":6,"r":-4,"s":-2,"data":{"planet":"e","sector":"1"}},{"q":6,"r":-3,"s":-3,"data":{"planet":"e","sector":"1"}},{"q":6,"r":-2,"s":-4,"data":{"planet":"s","sector":"1"}},{"q":5,"r":-1,"s":-4,"data":{"planet":"e","sector":"1"}},{"q":4,"r":-1,"s":-3,"data":{"planet":"e","sector":"1"}},{"q":4,"r":-2,"s":-2,"data":{"planet":"e","sector":"1"}},{"q":5,"r":-3,"s":-2,"data":{"planet":"r","sector":"1"}},{"q":5,"r":-2,"s":-3,"data":{"planet":"e","sector":"1"}},{"q":2,"r":5,"s":-7,"data":{"planet":"m","sector":"3"}},{"q":1,"r":5,"s":-6,"data":{"planet":"e","sector":"3"}},{"q":0,"r":5,"s":-5,"data":{"planet":"e","sector":"3"}},{"q":0,"r":4,"s":-4,"data":{"planet":"e","sector":"3"}},{"q":0,"r":3,"s":-3,"data":{"planet":"l","sector":"3","building":"m","player":1}},{"q":1,"r":2,"s":-3,"data":{"planet":"r","sector":"3","building":"ac1","player":0}},{"q":2,"r":1,"s":-3,"data":{"planet":"d","sector":"3","building":"ac1","player":1,"federations":[1]}},{"q":3,"r":1,"s":-4,"data":{"planet":"e","sector":"3"}},{"q":4,"r":1,"s":-5,"data":{"planet":"e","sector":"3"}},{"q":4,"r":2,"s":-6,"data":{"planet":"t","sector":"3"}},{"q":4,"r":3,"s":-7,"data":{"planet":"e","sector":"3"}},{"q":3,"r":4,"s":-7,"data":{"planet":"e","sector":"3"}},{"q":2,"r":4,"s":-6,"data":{"planet":"e","sector":"3"}},{"q":1,"r":4,"s":-5,"data":{"planet":"g","sector":"3"}},{"q":1,"r":3,"s":-4,"data":{"planet":"e","sector":"3"}},{"q":2,"r":2,"s":-4,"data":{"planet":"e","sector":"3"}},{"q":3,"r":2,"s":-5,"data":{"planet":"i","sector":"3"}},{"q":3,"r":3,"s":-6,"data":{"planet":"e","sector":"3"}},{"q":2,"r":3,"s":-5,"data":{"planet":"e","sector":"3"}},{"q":-5,"r":7,"s":-2,"data":{"planet":"t","sector":"2"}},{"q":-5,"r":6,"s":-1,"data":{"planet":"v","sector":"2"}},{"q":-5,"r":5,"s":0,"data":{"planet":"e","sector":"2"}},{"q":-4,"r":4,"s":0,"data":{"planet":"e","sector":"2"}},{"q":-3,"r":3,"s":0,"data":{"planet":"e","sector":"2"}},{"q":-2,"r":3,"s":-1,"data":{"planet":"o","sector":"2"}},{"q":-1,"r":3,"s":-2,"data":{"planet":"e","sector":"2"}},{"q":-1,"r":4,"s":-3,"data":{"planet":"g","sector":"2","building":"m","player":0}},{"q":-1,"r":5,"s":-4,"data":{"planet":"e","sector":"2"}},{"q":-2,"r":6,"s":-4,"data":{"planet":"d","sector":"2","building":"m","player":1}},{"q":-3,"r":7,"s":-4,"data":{"planet":"e","sector":"2"}},{"q":-4,"r":7,"s":-3,"data":{"planet":"e","sector":"2"}},{"q":-4,"r":6,"s":-2,"data":{"planet":"e","sector":"2"}},{"q":-4,"r":5,"s":-1,"data":{"planet":"e","sector":"2"}},{"q":-3,"r":4,"s":-1,"data":{"planet":"s","sector":"2"}},{"q":-2,"r":4,"s":-2,"data":{"planet":"e","sector":"2"}},{"q":-2,"r":5,"s":-3,"data":{"planet":"e","sector":"2"}},{"q":-3,"r":6,"s":-3,"data":{"planet":"i","sector":"2"}},{"q":-3,"r":5,"s":-2,"data":{"planet":"e","sector":"2"}},{"q":-5,"r":4,"s":1,"data":{"planet":"r","sector":"8","building":"m","player":0}},{"q":-6,"r":4,"s":2,"data":{"planet":"e","sector":"8"}},{"q":-7,"r":4,"s":3,"data":{"planet":"e","sector":"8"}},{"q":-7,"r":3,"s":4,"data":{"planet":"e","sector":"8"}},{"q":-7,"r":2,"s":5,"data":{"planet":"e","sector":"8"}},{"q":-6,"r":1,"s":5,"data":{"planet":"m","sector":"8"}},{"q":-5,"r":0,"s":5,"data":{"planet":"e","sector":"8"}},{"q":-4,"r":0,"s":4,"data":{"planet":"e","sector":"8"}},{"q":-3,"r":0,"s":3,"data":{"planet":"e","sector":"8"}},{"q":-3,"r":1,"s":2,"data":{"planet":"e","sector":"8"}},{"q":-3,"r":2,"s":1,"data":{"planet":"m","sector":"8"}},{"q":-4,"r":3,"s":1,"data":{"planet":"e","sector":"8"}},{"q":-5,"r":3,"s":2,"data":{"planet":"i","sector":"8"}},{"q":-6,"r":3,"s":3,"data":{"planet":"e","sector":"8"}},{"q":-6,"r":2,"s":4,"data":{"planet":"v","sector":"8"}},{"q":-5,"r":1,"s":4,"data":{"planet":"e","sector":"8"}},{"q":-4,"r":1,"s":3,"data":{"planet":"t","sector":"8"}},{"q":-4,"r":2,"s":2,"data":{"planet":"e","sector":"8"}},{"q":-5,"r":2,"s":3,"data":{"planet":"e","sector":"8"}},{"q":0,"r":-5,"s":5,"data":{"planet":"t","sector":"4"}},{"q":0,"r":-4,"s":4,"data":{"planet":"e","sector":"4"}},{"q":0,"r":-3,"s":3,"data":{"planet":"e","sector":"4"}},{"q":-1,"r":-2,"s":3,"data":{"planet":"i","sector":"4"}},{"q":-2,"r":-1,"s":3,"data":{"planet":"e","sector":"4"}},{"q":-3,"r":-1,"s":4,"data":{"planet":"e","sector":"4"}},{"q":-4,"r":-1,"s":5,"data":{"planet":"e","sector":"4"}},{"q":-4,"r":-2,"s":6,"data":{"planet":"e","sector":"4"}},{"q":-4,"r":-3,"s":7,"data":{"planet":"r","sector":"4"}},{"q":-3,"r":-4,"s":7,"data":{"planet":"e","sector":"4"}},{"q":-2,"r":-5,"s":7,"data":{"planet":"e","sector":"4"}},{"q":-1,"r":-5,"s":6,"data":{"planet":"e","sector":"4"}},{"q":-1,"r":-4,"s":5,"data":{"planet":"o","sector":"4"}},{"q":-1,"r":-3,"s":4,"data":{"planet":"e","sector":"4"}},{"q":-2,"r":-2,"s":4,"data":{"planet":"v","sector":"4"}},{"q":-3,"r":-2,"s":5,"data":{"planet":"e","sector":"4"}},{"q":-3,"r":-3,"s":6,"data":{"planet":"s","sector":"4"}},{"q":-2,"r":-4,"s":6,"data":{"planet":"e","sector":"4"}},{"q":-2,"r":-3,"s":5,"data":{"planet":"e","sector":"4"}},{"q":1,"r":8,"s":-9,"data":{"planet":"i","sector":"5A"}},{"q":0,"r":9,"s":-9,"data":{"planet":"e","sector":"5A"}},{"q":-1,"r":10,"s":-9,"data":{"planet":"e","sector":"5A"}},{"q":-2,"r":10,"s":-8,"data":{"planet":"e","sector":"5A"}},{"q":-3,"r":10,"s":-7,"data":{"planet":"e","sector":"5A"}},{"q":-3,"r":9,"s":-6,"data":{"planet":"v","sector":"5A"}},{"q":-3,"r":8,"s":-5,"data":{"planet":"d","sector":"5A","building":"m","player":1}},{"q":-2,"r":7,"s":-5,"data":{"planet":"e","sector":"5A"}},{"q":-1,"r":6,"s":-5,"data":{"planet":"e","sector":"5A"}},{"q":0,"r":6,"s":-6,"data":{"planet":"o","sector":"5A"}},{"q":1,"r":6,"s":-7,"data":{"planet":"m","sector":"5A"}},{"q":1,"r":7,"s":-8,"data":{"planet":"e","sector":"5A"}},{"q":0,"r":8,"s":-8,"data":{"planet":"e","sector":"5A"}},{"q":-1,"r":9,"s":-8,"data":{"planet":"g","sector":"5A"}},{"q":-2,"r":9,"s":-7,"data":{"planet":"e","sector":"5A"}},{"q":-2,"r":8,"s":-6,"data":{"planet":"e","sector":"5A"}},{"q":-1,"r":7,"s":-6,"data":{"planet":"e","sector":"5A"}},{"q":0,"r":7,"s":-7,"data":{"planet":"e","sector":"5A"}},{"q":-1,"r":8,"s":-7,"data":{"planet":"e","sector":"5A"}},{"q":-6,"r":5,"s":1,"data":{"planet":"e","sector":"7A"}},{"q":-6,"r":6,"s":0,"data":{"planet":"e","sector":"7A"}},{"q":-6,"r":7,"s":-1,"data":{"planet":"m","sector":"7A"}},{"q":-7,"r":8,"s":-1,"data":{"planet":"e","sector":"7A"}},{"q":-8,"r":9,"s":-1,"data":{"planet":"e","sector":"7A"}},{"q":-9,"r":9,"s":0,"data":{"planet":"e","sector":"7A"}},{"q":-10,"r":9,"s":1,"data":{"planet":"t","sector":"7A"}},{"q":-10,"r":8,"s":2,"data":{"planet":"e","sector":"7A"}},{"q":-10,"r":7,"s":3,"data":{"planet":"e","sector":"7A"}},{"q":-9,"r":6,"s":3,"data":{"planet":"e","sector":"7A"}},{"q":-8,"r":5,"s":3,"data":{"planet":"e","sector":"7A"}},{"q":-7,"r":5,"s":2,"data":{"planet":"s","sector":"7A"}},{"q":-7,"r":6,"s":1,"data":{"planet":"o","sector":"7A"}},{"q":-7,"r":7,"s":0,"data":{"planet":"e","sector":"7A"}},{"q":-8,"r":8,"s":0,"data":{"planet":"g","sector":"7A"}},{"q":-9,"r":8,"s":1,"data":{"planet":"e","sector":"7A"}},{"q":-9,"r":7,"s":2,"data":{"planet":"g","sector":"7A"}},{"q":-8,"r":6,"s":2,"data":{"planet":"e","sector":"7A"}},{"q":-8,"r":7,"s":1,"data":{"planet":"e","sector":"7A"}}],"expansions":0,"turnOrderAfterSetupAuction":[0,1],"playerToMove":0,"currentRoundScoringEvents":[{"spec":"m >> 2vp","source":"round3"}],"ended":false,"isLastRound":false}
coyotte508 commented 3 years ago

Thank you!

Intuitively I'd think that SpaceMap.excludedHexesForBuildingFederation (in map.ts) would be faulty, but I can't see how.

Zevenberge commented 3 years ago

It's the federation cache :) Manually clearing the cache to get some debugging going actually solved the issue.

image

Cache invalidation strikes again ;)

coyotte508 commented 3 years ago

Right - putting the lost planet on the board should invalidate federation cache for all players. Nice find!