diff --git a/scripts/CommsHandlerTemplate.java b/scripts/CommsHandlerTemplate.java index 1159adc..6b528a8 100644 --- a/scripts/CommsHandlerTemplate.java +++ b/scripts/CommsHandlerTemplate.java @@ -22,8 +22,13 @@ public class MapSymmetry { public class ControlStatus { public static final int UNKNOWN = 0; public static final int OURS = 1; - public static final int THEIRS = 2; - public static final int EXPLORING = 3; + public static final int EXPLORING = 2; + public static final int MINOR_ENEMY = 3; + public static final int MEDIUM_ENEMY = 4; + public static final int MAJOR_ENEMY = 5; + // Enemy_offset = first status representing enemy control + public static final int ENEMY_OFFSET = 3; + public static final int CLUSTER_ENEMY_LEVELS = 3; } public class ClaimStatus { public static final int UNCLAIMED = 0; diff --git a/scripts/generate_comms_handler.py b/scripts/generate_comms_handler.py index d45cbe2..a79e6e5 100644 --- a/scripts/generate_comms_handler.py +++ b/scripts/generate_comms_handler.py @@ -10,6 +10,18 @@ 'y_coord': 6, } }, + 'miner_count': { # make sure this is in a single int + 'slots': 1, + 'bits': { + '': 8, + } + }, + 'soldier_count': { # mamke sure this is in a single int + 'slots': 1, + 'bits': { + '': 8, + } + }, 'cluster': { 'slots': 100, 'bits': { @@ -20,6 +32,7 @@ 'combat_cluster': { 'slots': 10, 'bits': { + 'priority': 2, 'index': 7, } }, @@ -37,24 +50,6 @@ 'index': 7, } }, - 'filler_do_not_use': { - 'slots': 1, - 'bits': { - '': 6, - } - }, - 'miner_count': { # make sure this is in a single int - 'slots': 1, - 'bits': { - '': 8, - } - }, - 'soldier_count': { # mamke sure this is in a single int - 'slots': 1, - 'bits': { - '': 8, - } - }, 'last_archon': { 'slots': 1, 'bits': { diff --git a/src/ares/Archon.java b/src/ares/Archon.java index 6794ae0..0e3611d 100644 --- a/src/ares/Archon.java +++ b/src/ares/Archon.java @@ -16,6 +16,9 @@ public class Archon extends Robot { int minerCount = 0; int soldierCount = 0; + // Start and end indices for resetting + int startResetCluster = 0; + boolean archonZeroAlive = true; boolean archonOneAlive = true; boolean archonTwoAlive = true; @@ -79,6 +82,8 @@ public void runUnit() throws GameActionException { build(); repair(); + + resetClusterControlStatus(); } public void updateUnitCounts() throws GameActionException { @@ -94,6 +99,15 @@ public void updateUnitCounts() throws GameActionException { } } + public boolean isTheirs(int controlStatus) { + if (controlStatus == CommsHandler.ControlStatus.MINOR_ENEMY || + controlStatus == CommsHandler.ControlStatus.MEDIUM_ENEMY || + controlStatus == CommsHandler.ControlStatus.MAJOR_ENEMY) { + return true; + } + return false; + } + /** * Sets initial explore clusters * @@ -162,9 +176,8 @@ public void setPriorityClusters() throws GameActionException { // String status = ""; // for (int i = 0; i < commsHandler.COMBAT_CLUSTER_SLOTS; i++) { - // int cluster = commsHandler.readCombatClusterIndex(i); - // status += " " + cluster + "(" + - // commsHandler.readClusterControlStatus(cluster) + ")"; + // int cluster = commsHandler.readCombatClusterIndex(i); + // status += " " + cluster + "(" + commsHandler.readClusterControlStatus(cluster) + ")"; // } // System.out.println("Combat"+status); // String status = ""; @@ -189,7 +202,7 @@ public void setPriorityClusters() throws GameActionException { if (cluster == commsHandler.UNDEFINED_CLUSTER_INDEX) { continue; } - if (commsHandler.readClusterControlStatus(cluster) != CommsHandler.ControlStatus.THEIRS) { + if (!isTheirs(commsHandler.readClusterControlStatus(cluster))) { commsHandler.writeCombatClusterIndex(i, commsHandler.UNDEFINED_CLUSTER_INDEX); } } @@ -201,7 +214,7 @@ public void setPriorityClusters() throws GameActionException { } int resourceCount = commsHandler.readClusterResourceCount(cluster); int controlStatus = commsHandler.readClusterControlStatus(cluster); - if (resourceCount == 0 || controlStatus == CommsHandler.ControlStatus.THEIRS) { + if (resourceCount == 0 || isTheirs(controlStatus)) { commsHandler.writeMineClusterIndex(i, commsHandler.UNDEFINED_CLUSTER_INDEX); } else { commsHandler.writeMineClusterClaimStatus(i, resourceCount / 4); @@ -218,8 +231,8 @@ public void setPriorityClusters() throws GameActionException { int nearestClusterStatus = (nearestClusterAll & 128) >> 7; // 2^7 int controlStatus = commsHandler.readClusterControlStatus(nearestCluster); if (nearestClusterStatus == CommsHandler.ClaimStatus.CLAIMED - || controlStatus == CommsHandler.ControlStatus.OURS - || controlStatus == CommsHandler.ControlStatus.THEIRS) { + || controlStatus == CommsHandler.ControlStatus.OURS + || isTheirs(controlStatus)) { // Also resets claimed/unclaimed bit to unclaimed commsHandler.writeExploreClusterAll(i, commsHandler.UNDEFINED_CLUSTER_INDEX); } @@ -280,8 +293,8 @@ public void setPriorityClusters() throws GameActionException { int resourceCount = commsHandler.readClusterResourceCount(i); resourcesOnMap += resourceCount * LEAD_RESOLUTION; // Combat cluster - if (combatClusterIndex < commsHandler.COMBAT_CLUSTER_SLOTS - && controlStatus == CommsHandler.ControlStatus.THEIRS) { + if (combatClusterIndex < commsHandler.COMBAT_CLUSTER_SLOTS + && isTheirs(controlStatus)) { // Verify cluster is not already in comms list boolean isValid = true; for (int j = 0; j < commsHandler.COMBAT_CLUSTER_SLOTS; j++) { @@ -292,6 +305,8 @@ public void setPriorityClusters() throws GameActionException { } if (isValid) { commsHandler.writeCombatClusterIndex(combatClusterIndex, i); + // Writes a 0 for miners, 1 for 1 soldier, 2 for multi-soldiers. + commsHandler.writeCombatClusterPriority(combatClusterIndex, controlStatus - CommsHandler.ControlStatus.ENEMY_OFFSET); combatClusterIndex++; // Preserve combat clusters which still have enemies @@ -306,7 +321,7 @@ public void setPriorityClusters() throws GameActionException { } // Mine cluster if (mineClusterIndex < commsHandler.MINE_CLUSTER_SLOTS && resourceCount > 0 - && controlStatus != CommsHandler.ControlStatus.THEIRS) { + && isTheirs(controlStatus)) { // Verify cluster is not already in comms list boolean isValid = true; for (int j = 0; j < commsHandler.MINE_CLUSTER_SLOTS; j++) { @@ -363,6 +378,29 @@ public void setPriorityClusters() throws GameActionException { // exploreClusterIndex); } + + public void resetClusterControlStatus() throws GameActionException { + int frequency = 4; + if (!lastArchon) { + return; + } + int nbl = Clock.getBytecodesLeft() / 200; + int endResetCluster = Math.min(startResetCluster + numClusters/frequency, numClusters); + endResetCluster = Math.min(startResetCluster + nbl, endResetCluster); + int diff = endResetCluster - startResetCluster; + System.out.println("indices: " + startResetCluster + " " + endResetCluster); + System.out.println("RESETTTING: " + diff); + + for (int i=startResetCluster; i < endResetCluster; i++) { + commsHandler.writeClusterControlStatus(i, 0); + } + if (endResetCluster == numClusters) { + startResetCluster = 0; + } else { + startResetCluster = endResetCluster; + } + } + /** * Builds a unit * diff --git a/src/ares/CommsHandler.java b/src/ares/CommsHandler.java index f11becb..e18315e 100644 --- a/src/ares/CommsHandler.java +++ b/src/ares/CommsHandler.java @@ -8,13 +8,12 @@ public class CommsHandler { RobotController rc; final int OUR_ARCHON_SLOTS = 4; + final int MINER_COUNT_SLOTS = 1; + final int SOLDIER_COUNT_SLOTS = 1; final int CLUSTER_SLOTS = 100; final int COMBAT_CLUSTER_SLOTS = 10; final int EXPLORE_CLUSTER_SLOTS = 10; final int MINE_CLUSTER_SLOTS = 10; - final int FILLER_DO_NOT_USE_SLOTS = 1; - final int MINER_COUNT_SLOTS = 1; - final int SOLDIER_COUNT_SLOTS = 1; final int LAST_ARCHON_SLOTS = 1; final int RESERVED_RESOURCES_SLOTS = 1; @@ -32,8 +31,13 @@ public class MapSymmetry { public class ControlStatus { public static final int UNKNOWN = 0; public static final int OURS = 1; - public static final int THEIRS = 2; - public static final int EXPLORING = 3; + public static final int EXPLORING = 2; + public static final int MINOR_ENEMY = 3; + public static final int MEDIUM_ENEMY = 4; + public static final int MAJOR_ENEMY = 5; + // Enemy_offset = first status representing enemy control + public static final int ENEMY_OFFSET = 3; + public static final int CLUSTER_ENEMY_LEVELS = 3; } public class ClaimStatus { public static final int UNCLAIMED = 0; @@ -63,23 +67,24 @@ public void writeOurArchonLocation(int idx, MapLocation loc) throws GameActionEx } public void initPriorityClusters() throws GameActionException { - rc.writeSharedArray(41, 255); - rc.writeSharedArray(42, 65535); - rc.writeSharedArray(43, 65535); - rc.writeSharedArray(44, 65535); - rc.writeSharedArray(45, 65533); - rc.writeSharedArray(46, 65021); - rc.writeSharedArray(47, 65021); - rc.writeSharedArray(48, 65021); - rc.writeSharedArray(49, 65021); - rc.writeSharedArray(50, 65020); - rc.writeSharedArray(51, 32543); - rc.writeSharedArray(52, 51185); - rc.writeSharedArray(53, 64639); - rc.writeSharedArray(54, 8135); - rc.writeSharedArray(55, 61948); - rc.writeSharedArray(56, 32543); - rc.writeSharedArray(57, 49152); + rc.writeSharedArray(42, 63); + rc.writeSharedArray(43, 40911); + rc.writeSharedArray(44, 59379); + rc.writeSharedArray(45, 63996); + rc.writeSharedArray(46, 65151); + rc.writeSharedArray(47, 16287); + rc.writeSharedArray(48, 57311); + rc.writeSharedArray(49, 57311); + rc.writeSharedArray(50, 57311); + rc.writeSharedArray(51, 57311); + rc.writeSharedArray(52, 57311); + rc.writeSharedArray(53, 51185); + rc.writeSharedArray(54, 64639); + rc.writeSharedArray(55, 8135); + rc.writeSharedArray(56, 61948); + rc.writeSharedArray(57, 32543); + rc.writeSharedArray(58, 51185); + rc.writeSharedArray(59, 64512); } @@ -211,208 +216,240 @@ public void writeOurArchonAll(int idx, int value) throws GameActionException { } } + public int readMinerCount() throws GameActionException { + return (rc.readSharedArray(4) & 65280) >>> 8; + } + + public void writeMinerCount(int value) throws GameActionException { + rc.writeSharedArray(4, (rc.readSharedArray(4) & 255) | (value << 8)); + } + + public int readMinerCountAll() throws GameActionException { + return (rc.readSharedArray(4) & 65280) >>> 8; + } + + public void writeMinerCountAll(int value) throws GameActionException { + rc.writeSharedArray(4, (rc.readSharedArray(4) & 255) | (value << 8)); + } + + public int readSoldierCount() throws GameActionException { + return (rc.readSharedArray(4) & 255); + } + + public void writeSoldierCount(int value) throws GameActionException { + rc.writeSharedArray(4, (rc.readSharedArray(4) & 65280) | (value)); + } + + public int readSoldierCountAll() throws GameActionException { + return (rc.readSharedArray(4) & 255); + } + + public void writeSoldierCountAll(int value) throws GameActionException { + rc.writeSharedArray(4, (rc.readSharedArray(4) & 65280) | (value)); + } + public int readClusterControlStatus(int idx) throws GameActionException { switch (idx) { case 0: - return (rc.readSharedArray(4) & 57344) >>> 13; + return (rc.readSharedArray(5) & 57344) >>> 13; case 1: - return (rc.readSharedArray(4) & 896) >>> 7; + return (rc.readSharedArray(5) & 896) >>> 7; case 2: - return (rc.readSharedArray(4) & 14) >>> 1; + return (rc.readSharedArray(5) & 14) >>> 1; case 3: - return (rc.readSharedArray(5) & 14336) >>> 11; + return (rc.readSharedArray(6) & 14336) >>> 11; case 4: - return (rc.readSharedArray(5) & 224) >>> 5; + return (rc.readSharedArray(6) & 224) >>> 5; case 5: - return ((rc.readSharedArray(5) & 3) << 1) + ((rc.readSharedArray(6) & 32768) >>> 15); + return ((rc.readSharedArray(6) & 3) << 1) + ((rc.readSharedArray(7) & 32768) >>> 15); case 6: - return (rc.readSharedArray(6) & 3584) >>> 9; + return (rc.readSharedArray(7) & 3584) >>> 9; case 7: - return (rc.readSharedArray(6) & 56) >>> 3; + return (rc.readSharedArray(7) & 56) >>> 3; case 8: - return (rc.readSharedArray(7) & 57344) >>> 13; + return (rc.readSharedArray(8) & 57344) >>> 13; case 9: - return (rc.readSharedArray(7) & 896) >>> 7; + return (rc.readSharedArray(8) & 896) >>> 7; case 10: - return (rc.readSharedArray(7) & 14) >>> 1; + return (rc.readSharedArray(8) & 14) >>> 1; case 11: - return (rc.readSharedArray(8) & 14336) >>> 11; + return (rc.readSharedArray(9) & 14336) >>> 11; case 12: - return (rc.readSharedArray(8) & 224) >>> 5; + return (rc.readSharedArray(9) & 224) >>> 5; case 13: - return ((rc.readSharedArray(8) & 3) << 1) + ((rc.readSharedArray(9) & 32768) >>> 15); + return ((rc.readSharedArray(9) & 3) << 1) + ((rc.readSharedArray(10) & 32768) >>> 15); case 14: - return (rc.readSharedArray(9) & 3584) >>> 9; + return (rc.readSharedArray(10) & 3584) >>> 9; case 15: - return (rc.readSharedArray(9) & 56) >>> 3; + return (rc.readSharedArray(10) & 56) >>> 3; case 16: - return (rc.readSharedArray(10) & 57344) >>> 13; + return (rc.readSharedArray(11) & 57344) >>> 13; case 17: - return (rc.readSharedArray(10) & 896) >>> 7; + return (rc.readSharedArray(11) & 896) >>> 7; case 18: - return (rc.readSharedArray(10) & 14) >>> 1; + return (rc.readSharedArray(11) & 14) >>> 1; case 19: - return (rc.readSharedArray(11) & 14336) >>> 11; + return (rc.readSharedArray(12) & 14336) >>> 11; case 20: - return (rc.readSharedArray(11) & 224) >>> 5; + return (rc.readSharedArray(12) & 224) >>> 5; case 21: - return ((rc.readSharedArray(11) & 3) << 1) + ((rc.readSharedArray(12) & 32768) >>> 15); + return ((rc.readSharedArray(12) & 3) << 1) + ((rc.readSharedArray(13) & 32768) >>> 15); case 22: - return (rc.readSharedArray(12) & 3584) >>> 9; + return (rc.readSharedArray(13) & 3584) >>> 9; case 23: - return (rc.readSharedArray(12) & 56) >>> 3; + return (rc.readSharedArray(13) & 56) >>> 3; case 24: - return (rc.readSharedArray(13) & 57344) >>> 13; + return (rc.readSharedArray(14) & 57344) >>> 13; case 25: - return (rc.readSharedArray(13) & 896) >>> 7; + return (rc.readSharedArray(14) & 896) >>> 7; case 26: - return (rc.readSharedArray(13) & 14) >>> 1; + return (rc.readSharedArray(14) & 14) >>> 1; case 27: - return (rc.readSharedArray(14) & 14336) >>> 11; + return (rc.readSharedArray(15) & 14336) >>> 11; case 28: - return (rc.readSharedArray(14) & 224) >>> 5; + return (rc.readSharedArray(15) & 224) >>> 5; case 29: - return ((rc.readSharedArray(14) & 3) << 1) + ((rc.readSharedArray(15) & 32768) >>> 15); + return ((rc.readSharedArray(15) & 3) << 1) + ((rc.readSharedArray(16) & 32768) >>> 15); case 30: - return (rc.readSharedArray(15) & 3584) >>> 9; + return (rc.readSharedArray(16) & 3584) >>> 9; case 31: - return (rc.readSharedArray(15) & 56) >>> 3; + return (rc.readSharedArray(16) & 56) >>> 3; case 32: - return (rc.readSharedArray(16) & 57344) >>> 13; + return (rc.readSharedArray(17) & 57344) >>> 13; case 33: - return (rc.readSharedArray(16) & 896) >>> 7; + return (rc.readSharedArray(17) & 896) >>> 7; case 34: - return (rc.readSharedArray(16) & 14) >>> 1; + return (rc.readSharedArray(17) & 14) >>> 1; case 35: - return (rc.readSharedArray(17) & 14336) >>> 11; + return (rc.readSharedArray(18) & 14336) >>> 11; case 36: - return (rc.readSharedArray(17) & 224) >>> 5; + return (rc.readSharedArray(18) & 224) >>> 5; case 37: - return ((rc.readSharedArray(17) & 3) << 1) + ((rc.readSharedArray(18) & 32768) >>> 15); + return ((rc.readSharedArray(18) & 3) << 1) + ((rc.readSharedArray(19) & 32768) >>> 15); case 38: - return (rc.readSharedArray(18) & 3584) >>> 9; + return (rc.readSharedArray(19) & 3584) >>> 9; case 39: - return (rc.readSharedArray(18) & 56) >>> 3; + return (rc.readSharedArray(19) & 56) >>> 3; case 40: - return (rc.readSharedArray(19) & 57344) >>> 13; + return (rc.readSharedArray(20) & 57344) >>> 13; case 41: - return (rc.readSharedArray(19) & 896) >>> 7; + return (rc.readSharedArray(20) & 896) >>> 7; case 42: - return (rc.readSharedArray(19) & 14) >>> 1; + return (rc.readSharedArray(20) & 14) >>> 1; case 43: - return (rc.readSharedArray(20) & 14336) >>> 11; + return (rc.readSharedArray(21) & 14336) >>> 11; case 44: - return (rc.readSharedArray(20) & 224) >>> 5; + return (rc.readSharedArray(21) & 224) >>> 5; case 45: - return ((rc.readSharedArray(20) & 3) << 1) + ((rc.readSharedArray(21) & 32768) >>> 15); + return ((rc.readSharedArray(21) & 3) << 1) + ((rc.readSharedArray(22) & 32768) >>> 15); case 46: - return (rc.readSharedArray(21) & 3584) >>> 9; + return (rc.readSharedArray(22) & 3584) >>> 9; case 47: - return (rc.readSharedArray(21) & 56) >>> 3; + return (rc.readSharedArray(22) & 56) >>> 3; case 48: - return (rc.readSharedArray(22) & 57344) >>> 13; + return (rc.readSharedArray(23) & 57344) >>> 13; case 49: - return (rc.readSharedArray(22) & 896) >>> 7; + return (rc.readSharedArray(23) & 896) >>> 7; case 50: - return (rc.readSharedArray(22) & 14) >>> 1; + return (rc.readSharedArray(23) & 14) >>> 1; case 51: - return (rc.readSharedArray(23) & 14336) >>> 11; + return (rc.readSharedArray(24) & 14336) >>> 11; case 52: - return (rc.readSharedArray(23) & 224) >>> 5; + return (rc.readSharedArray(24) & 224) >>> 5; case 53: - return ((rc.readSharedArray(23) & 3) << 1) + ((rc.readSharedArray(24) & 32768) >>> 15); + return ((rc.readSharedArray(24) & 3) << 1) + ((rc.readSharedArray(25) & 32768) >>> 15); case 54: - return (rc.readSharedArray(24) & 3584) >>> 9; + return (rc.readSharedArray(25) & 3584) >>> 9; case 55: - return (rc.readSharedArray(24) & 56) >>> 3; + return (rc.readSharedArray(25) & 56) >>> 3; case 56: - return (rc.readSharedArray(25) & 57344) >>> 13; + return (rc.readSharedArray(26) & 57344) >>> 13; case 57: - return (rc.readSharedArray(25) & 896) >>> 7; + return (rc.readSharedArray(26) & 896) >>> 7; case 58: - return (rc.readSharedArray(25) & 14) >>> 1; + return (rc.readSharedArray(26) & 14) >>> 1; case 59: - return (rc.readSharedArray(26) & 14336) >>> 11; + return (rc.readSharedArray(27) & 14336) >>> 11; case 60: - return (rc.readSharedArray(26) & 224) >>> 5; + return (rc.readSharedArray(27) & 224) >>> 5; case 61: - return ((rc.readSharedArray(26) & 3) << 1) + ((rc.readSharedArray(27) & 32768) >>> 15); + return ((rc.readSharedArray(27) & 3) << 1) + ((rc.readSharedArray(28) & 32768) >>> 15); case 62: - return (rc.readSharedArray(27) & 3584) >>> 9; + return (rc.readSharedArray(28) & 3584) >>> 9; case 63: - return (rc.readSharedArray(27) & 56) >>> 3; + return (rc.readSharedArray(28) & 56) >>> 3; case 64: - return (rc.readSharedArray(28) & 57344) >>> 13; + return (rc.readSharedArray(29) & 57344) >>> 13; case 65: - return (rc.readSharedArray(28) & 896) >>> 7; + return (rc.readSharedArray(29) & 896) >>> 7; case 66: - return (rc.readSharedArray(28) & 14) >>> 1; + return (rc.readSharedArray(29) & 14) >>> 1; case 67: - return (rc.readSharedArray(29) & 14336) >>> 11; + return (rc.readSharedArray(30) & 14336) >>> 11; case 68: - return (rc.readSharedArray(29) & 224) >>> 5; + return (rc.readSharedArray(30) & 224) >>> 5; case 69: - return ((rc.readSharedArray(29) & 3) << 1) + ((rc.readSharedArray(30) & 32768) >>> 15); + return ((rc.readSharedArray(30) & 3) << 1) + ((rc.readSharedArray(31) & 32768) >>> 15); case 70: - return (rc.readSharedArray(30) & 3584) >>> 9; + return (rc.readSharedArray(31) & 3584) >>> 9; case 71: - return (rc.readSharedArray(30) & 56) >>> 3; + return (rc.readSharedArray(31) & 56) >>> 3; case 72: - return (rc.readSharedArray(31) & 57344) >>> 13; + return (rc.readSharedArray(32) & 57344) >>> 13; case 73: - return (rc.readSharedArray(31) & 896) >>> 7; + return (rc.readSharedArray(32) & 896) >>> 7; case 74: - return (rc.readSharedArray(31) & 14) >>> 1; + return (rc.readSharedArray(32) & 14) >>> 1; case 75: - return (rc.readSharedArray(32) & 14336) >>> 11; + return (rc.readSharedArray(33) & 14336) >>> 11; case 76: - return (rc.readSharedArray(32) & 224) >>> 5; + return (rc.readSharedArray(33) & 224) >>> 5; case 77: - return ((rc.readSharedArray(32) & 3) << 1) + ((rc.readSharedArray(33) & 32768) >>> 15); + return ((rc.readSharedArray(33) & 3) << 1) + ((rc.readSharedArray(34) & 32768) >>> 15); case 78: - return (rc.readSharedArray(33) & 3584) >>> 9; + return (rc.readSharedArray(34) & 3584) >>> 9; case 79: - return (rc.readSharedArray(33) & 56) >>> 3; + return (rc.readSharedArray(34) & 56) >>> 3; case 80: - return (rc.readSharedArray(34) & 57344) >>> 13; + return (rc.readSharedArray(35) & 57344) >>> 13; case 81: - return (rc.readSharedArray(34) & 896) >>> 7; + return (rc.readSharedArray(35) & 896) >>> 7; case 82: - return (rc.readSharedArray(34) & 14) >>> 1; + return (rc.readSharedArray(35) & 14) >>> 1; case 83: - return (rc.readSharedArray(35) & 14336) >>> 11; + return (rc.readSharedArray(36) & 14336) >>> 11; case 84: - return (rc.readSharedArray(35) & 224) >>> 5; + return (rc.readSharedArray(36) & 224) >>> 5; case 85: - return ((rc.readSharedArray(35) & 3) << 1) + ((rc.readSharedArray(36) & 32768) >>> 15); + return ((rc.readSharedArray(36) & 3) << 1) + ((rc.readSharedArray(37) & 32768) >>> 15); case 86: - return (rc.readSharedArray(36) & 3584) >>> 9; + return (rc.readSharedArray(37) & 3584) >>> 9; case 87: - return (rc.readSharedArray(36) & 56) >>> 3; + return (rc.readSharedArray(37) & 56) >>> 3; case 88: - return (rc.readSharedArray(37) & 57344) >>> 13; + return (rc.readSharedArray(38) & 57344) >>> 13; case 89: - return (rc.readSharedArray(37) & 896) >>> 7; + return (rc.readSharedArray(38) & 896) >>> 7; case 90: - return (rc.readSharedArray(37) & 14) >>> 1; + return (rc.readSharedArray(38) & 14) >>> 1; case 91: - return (rc.readSharedArray(38) & 14336) >>> 11; + return (rc.readSharedArray(39) & 14336) >>> 11; case 92: - return (rc.readSharedArray(38) & 224) >>> 5; + return (rc.readSharedArray(39) & 224) >>> 5; case 93: - return ((rc.readSharedArray(38) & 3) << 1) + ((rc.readSharedArray(39) & 32768) >>> 15); + return ((rc.readSharedArray(39) & 3) << 1) + ((rc.readSharedArray(40) & 32768) >>> 15); case 94: - return (rc.readSharedArray(39) & 3584) >>> 9; + return (rc.readSharedArray(40) & 3584) >>> 9; case 95: - return (rc.readSharedArray(39) & 56) >>> 3; + return (rc.readSharedArray(40) & 56) >>> 3; case 96: - return (rc.readSharedArray(40) & 57344) >>> 13; + return (rc.readSharedArray(41) & 57344) >>> 13; case 97: - return (rc.readSharedArray(40) & 896) >>> 7; + return (rc.readSharedArray(41) & 896) >>> 7; case 98: - return (rc.readSharedArray(40) & 14) >>> 1; + return (rc.readSharedArray(41) & 14) >>> 1; case 99: - return (rc.readSharedArray(41) & 14336) >>> 11; + return (rc.readSharedArray(42) & 14336) >>> 11; default: return -1; } @@ -421,316 +458,316 @@ public int readClusterControlStatus(int idx) throws GameActionException { public void writeClusterControlStatus(int idx, int value) throws GameActionException { switch (idx) { case 0: - rc.writeSharedArray(4, (rc.readSharedArray(4) & 8191) | (value << 13)); + rc.writeSharedArray(5, (rc.readSharedArray(5) & 8191) | (value << 13)); break; case 1: - rc.writeSharedArray(4, (rc.readSharedArray(4) & 64639) | (value << 7)); + rc.writeSharedArray(5, (rc.readSharedArray(5) & 64639) | (value << 7)); break; case 2: - rc.writeSharedArray(4, (rc.readSharedArray(4) & 65521) | (value << 1)); + rc.writeSharedArray(5, (rc.readSharedArray(5) & 65521) | (value << 1)); break; case 3: - rc.writeSharedArray(5, (rc.readSharedArray(5) & 51199) | (value << 11)); + rc.writeSharedArray(6, (rc.readSharedArray(6) & 51199) | (value << 11)); break; case 4: - rc.writeSharedArray(5, (rc.readSharedArray(5) & 65311) | (value << 5)); + rc.writeSharedArray(6, (rc.readSharedArray(6) & 65311) | (value << 5)); break; case 5: - rc.writeSharedArray(5, (rc.readSharedArray(5) & 65532) | ((value & 6) >>> 1)); - rc.writeSharedArray(6, (rc.readSharedArray(6) & 32767) | ((value & 1) << 15)); + rc.writeSharedArray(6, (rc.readSharedArray(6) & 65532) | ((value & 6) >>> 1)); + rc.writeSharedArray(7, (rc.readSharedArray(7) & 32767) | ((value & 1) << 15)); break; case 6: - rc.writeSharedArray(6, (rc.readSharedArray(6) & 61951) | (value << 9)); + rc.writeSharedArray(7, (rc.readSharedArray(7) & 61951) | (value << 9)); break; case 7: - rc.writeSharedArray(6, (rc.readSharedArray(6) & 65479) | (value << 3)); + rc.writeSharedArray(7, (rc.readSharedArray(7) & 65479) | (value << 3)); break; case 8: - rc.writeSharedArray(7, (rc.readSharedArray(7) & 8191) | (value << 13)); + rc.writeSharedArray(8, (rc.readSharedArray(8) & 8191) | (value << 13)); break; case 9: - rc.writeSharedArray(7, (rc.readSharedArray(7) & 64639) | (value << 7)); + rc.writeSharedArray(8, (rc.readSharedArray(8) & 64639) | (value << 7)); break; case 10: - rc.writeSharedArray(7, (rc.readSharedArray(7) & 65521) | (value << 1)); + rc.writeSharedArray(8, (rc.readSharedArray(8) & 65521) | (value << 1)); break; case 11: - rc.writeSharedArray(8, (rc.readSharedArray(8) & 51199) | (value << 11)); + rc.writeSharedArray(9, (rc.readSharedArray(9) & 51199) | (value << 11)); break; case 12: - rc.writeSharedArray(8, (rc.readSharedArray(8) & 65311) | (value << 5)); + rc.writeSharedArray(9, (rc.readSharedArray(9) & 65311) | (value << 5)); break; case 13: - rc.writeSharedArray(8, (rc.readSharedArray(8) & 65532) | ((value & 6) >>> 1)); - rc.writeSharedArray(9, (rc.readSharedArray(9) & 32767) | ((value & 1) << 15)); + rc.writeSharedArray(9, (rc.readSharedArray(9) & 65532) | ((value & 6) >>> 1)); + rc.writeSharedArray(10, (rc.readSharedArray(10) & 32767) | ((value & 1) << 15)); break; case 14: - rc.writeSharedArray(9, (rc.readSharedArray(9) & 61951) | (value << 9)); + rc.writeSharedArray(10, (rc.readSharedArray(10) & 61951) | (value << 9)); break; case 15: - rc.writeSharedArray(9, (rc.readSharedArray(9) & 65479) | (value << 3)); + rc.writeSharedArray(10, (rc.readSharedArray(10) & 65479) | (value << 3)); break; case 16: - rc.writeSharedArray(10, (rc.readSharedArray(10) & 8191) | (value << 13)); + rc.writeSharedArray(11, (rc.readSharedArray(11) & 8191) | (value << 13)); break; case 17: - rc.writeSharedArray(10, (rc.readSharedArray(10) & 64639) | (value << 7)); + rc.writeSharedArray(11, (rc.readSharedArray(11) & 64639) | (value << 7)); break; case 18: - rc.writeSharedArray(10, (rc.readSharedArray(10) & 65521) | (value << 1)); + rc.writeSharedArray(11, (rc.readSharedArray(11) & 65521) | (value << 1)); break; case 19: - rc.writeSharedArray(11, (rc.readSharedArray(11) & 51199) | (value << 11)); + rc.writeSharedArray(12, (rc.readSharedArray(12) & 51199) | (value << 11)); break; case 20: - rc.writeSharedArray(11, (rc.readSharedArray(11) & 65311) | (value << 5)); + rc.writeSharedArray(12, (rc.readSharedArray(12) & 65311) | (value << 5)); break; case 21: - rc.writeSharedArray(11, (rc.readSharedArray(11) & 65532) | ((value & 6) >>> 1)); - rc.writeSharedArray(12, (rc.readSharedArray(12) & 32767) | ((value & 1) << 15)); + rc.writeSharedArray(12, (rc.readSharedArray(12) & 65532) | ((value & 6) >>> 1)); + rc.writeSharedArray(13, (rc.readSharedArray(13) & 32767) | ((value & 1) << 15)); break; case 22: - rc.writeSharedArray(12, (rc.readSharedArray(12) & 61951) | (value << 9)); + rc.writeSharedArray(13, (rc.readSharedArray(13) & 61951) | (value << 9)); break; case 23: - rc.writeSharedArray(12, (rc.readSharedArray(12) & 65479) | (value << 3)); + rc.writeSharedArray(13, (rc.readSharedArray(13) & 65479) | (value << 3)); break; case 24: - rc.writeSharedArray(13, (rc.readSharedArray(13) & 8191) | (value << 13)); + rc.writeSharedArray(14, (rc.readSharedArray(14) & 8191) | (value << 13)); break; case 25: - rc.writeSharedArray(13, (rc.readSharedArray(13) & 64639) | (value << 7)); + rc.writeSharedArray(14, (rc.readSharedArray(14) & 64639) | (value << 7)); break; case 26: - rc.writeSharedArray(13, (rc.readSharedArray(13) & 65521) | (value << 1)); + rc.writeSharedArray(14, (rc.readSharedArray(14) & 65521) | (value << 1)); break; case 27: - rc.writeSharedArray(14, (rc.readSharedArray(14) & 51199) | (value << 11)); + rc.writeSharedArray(15, (rc.readSharedArray(15) & 51199) | (value << 11)); break; case 28: - rc.writeSharedArray(14, (rc.readSharedArray(14) & 65311) | (value << 5)); + rc.writeSharedArray(15, (rc.readSharedArray(15) & 65311) | (value << 5)); break; case 29: - rc.writeSharedArray(14, (rc.readSharedArray(14) & 65532) | ((value & 6) >>> 1)); - rc.writeSharedArray(15, (rc.readSharedArray(15) & 32767) | ((value & 1) << 15)); + rc.writeSharedArray(15, (rc.readSharedArray(15) & 65532) | ((value & 6) >>> 1)); + rc.writeSharedArray(16, (rc.readSharedArray(16) & 32767) | ((value & 1) << 15)); break; case 30: - rc.writeSharedArray(15, (rc.readSharedArray(15) & 61951) | (value << 9)); + rc.writeSharedArray(16, (rc.readSharedArray(16) & 61951) | (value << 9)); break; case 31: - rc.writeSharedArray(15, (rc.readSharedArray(15) & 65479) | (value << 3)); + rc.writeSharedArray(16, (rc.readSharedArray(16) & 65479) | (value << 3)); break; case 32: - rc.writeSharedArray(16, (rc.readSharedArray(16) & 8191) | (value << 13)); + rc.writeSharedArray(17, (rc.readSharedArray(17) & 8191) | (value << 13)); break; case 33: - rc.writeSharedArray(16, (rc.readSharedArray(16) & 64639) | (value << 7)); + rc.writeSharedArray(17, (rc.readSharedArray(17) & 64639) | (value << 7)); break; case 34: - rc.writeSharedArray(16, (rc.readSharedArray(16) & 65521) | (value << 1)); + rc.writeSharedArray(17, (rc.readSharedArray(17) & 65521) | (value << 1)); break; case 35: - rc.writeSharedArray(17, (rc.readSharedArray(17) & 51199) | (value << 11)); + rc.writeSharedArray(18, (rc.readSharedArray(18) & 51199) | (value << 11)); break; case 36: - rc.writeSharedArray(17, (rc.readSharedArray(17) & 65311) | (value << 5)); + rc.writeSharedArray(18, (rc.readSharedArray(18) & 65311) | (value << 5)); break; case 37: - rc.writeSharedArray(17, (rc.readSharedArray(17) & 65532) | ((value & 6) >>> 1)); - rc.writeSharedArray(18, (rc.readSharedArray(18) & 32767) | ((value & 1) << 15)); + rc.writeSharedArray(18, (rc.readSharedArray(18) & 65532) | ((value & 6) >>> 1)); + rc.writeSharedArray(19, (rc.readSharedArray(19) & 32767) | ((value & 1) << 15)); break; case 38: - rc.writeSharedArray(18, (rc.readSharedArray(18) & 61951) | (value << 9)); + rc.writeSharedArray(19, (rc.readSharedArray(19) & 61951) | (value << 9)); break; case 39: - rc.writeSharedArray(18, (rc.readSharedArray(18) & 65479) | (value << 3)); + rc.writeSharedArray(19, (rc.readSharedArray(19) & 65479) | (value << 3)); break; case 40: - rc.writeSharedArray(19, (rc.readSharedArray(19) & 8191) | (value << 13)); + rc.writeSharedArray(20, (rc.readSharedArray(20) & 8191) | (value << 13)); break; case 41: - rc.writeSharedArray(19, (rc.readSharedArray(19) & 64639) | (value << 7)); + rc.writeSharedArray(20, (rc.readSharedArray(20) & 64639) | (value << 7)); break; case 42: - rc.writeSharedArray(19, (rc.readSharedArray(19) & 65521) | (value << 1)); + rc.writeSharedArray(20, (rc.readSharedArray(20) & 65521) | (value << 1)); break; case 43: - rc.writeSharedArray(20, (rc.readSharedArray(20) & 51199) | (value << 11)); + rc.writeSharedArray(21, (rc.readSharedArray(21) & 51199) | (value << 11)); break; case 44: - rc.writeSharedArray(20, (rc.readSharedArray(20) & 65311) | (value << 5)); + rc.writeSharedArray(21, (rc.readSharedArray(21) & 65311) | (value << 5)); break; case 45: - rc.writeSharedArray(20, (rc.readSharedArray(20) & 65532) | ((value & 6) >>> 1)); - rc.writeSharedArray(21, (rc.readSharedArray(21) & 32767) | ((value & 1) << 15)); + rc.writeSharedArray(21, (rc.readSharedArray(21) & 65532) | ((value & 6) >>> 1)); + rc.writeSharedArray(22, (rc.readSharedArray(22) & 32767) | ((value & 1) << 15)); break; case 46: - rc.writeSharedArray(21, (rc.readSharedArray(21) & 61951) | (value << 9)); + rc.writeSharedArray(22, (rc.readSharedArray(22) & 61951) | (value << 9)); break; case 47: - rc.writeSharedArray(21, (rc.readSharedArray(21) & 65479) | (value << 3)); + rc.writeSharedArray(22, (rc.readSharedArray(22) & 65479) | (value << 3)); break; case 48: - rc.writeSharedArray(22, (rc.readSharedArray(22) & 8191) | (value << 13)); + rc.writeSharedArray(23, (rc.readSharedArray(23) & 8191) | (value << 13)); break; case 49: - rc.writeSharedArray(22, (rc.readSharedArray(22) & 64639) | (value << 7)); + rc.writeSharedArray(23, (rc.readSharedArray(23) & 64639) | (value << 7)); break; case 50: - rc.writeSharedArray(22, (rc.readSharedArray(22) & 65521) | (value << 1)); + rc.writeSharedArray(23, (rc.readSharedArray(23) & 65521) | (value << 1)); break; case 51: - rc.writeSharedArray(23, (rc.readSharedArray(23) & 51199) | (value << 11)); + rc.writeSharedArray(24, (rc.readSharedArray(24) & 51199) | (value << 11)); break; case 52: - rc.writeSharedArray(23, (rc.readSharedArray(23) & 65311) | (value << 5)); + rc.writeSharedArray(24, (rc.readSharedArray(24) & 65311) | (value << 5)); break; case 53: - rc.writeSharedArray(23, (rc.readSharedArray(23) & 65532) | ((value & 6) >>> 1)); - rc.writeSharedArray(24, (rc.readSharedArray(24) & 32767) | ((value & 1) << 15)); + rc.writeSharedArray(24, (rc.readSharedArray(24) & 65532) | ((value & 6) >>> 1)); + rc.writeSharedArray(25, (rc.readSharedArray(25) & 32767) | ((value & 1) << 15)); break; case 54: - rc.writeSharedArray(24, (rc.readSharedArray(24) & 61951) | (value << 9)); + rc.writeSharedArray(25, (rc.readSharedArray(25) & 61951) | (value << 9)); break; case 55: - rc.writeSharedArray(24, (rc.readSharedArray(24) & 65479) | (value << 3)); + rc.writeSharedArray(25, (rc.readSharedArray(25) & 65479) | (value << 3)); break; case 56: - rc.writeSharedArray(25, (rc.readSharedArray(25) & 8191) | (value << 13)); + rc.writeSharedArray(26, (rc.readSharedArray(26) & 8191) | (value << 13)); break; case 57: - rc.writeSharedArray(25, (rc.readSharedArray(25) & 64639) | (value << 7)); + rc.writeSharedArray(26, (rc.readSharedArray(26) & 64639) | (value << 7)); break; case 58: - rc.writeSharedArray(25, (rc.readSharedArray(25) & 65521) | (value << 1)); + rc.writeSharedArray(26, (rc.readSharedArray(26) & 65521) | (value << 1)); break; case 59: - rc.writeSharedArray(26, (rc.readSharedArray(26) & 51199) | (value << 11)); + rc.writeSharedArray(27, (rc.readSharedArray(27) & 51199) | (value << 11)); break; case 60: - rc.writeSharedArray(26, (rc.readSharedArray(26) & 65311) | (value << 5)); + rc.writeSharedArray(27, (rc.readSharedArray(27) & 65311) | (value << 5)); break; case 61: - rc.writeSharedArray(26, (rc.readSharedArray(26) & 65532) | ((value & 6) >>> 1)); - rc.writeSharedArray(27, (rc.readSharedArray(27) & 32767) | ((value & 1) << 15)); + rc.writeSharedArray(27, (rc.readSharedArray(27) & 65532) | ((value & 6) >>> 1)); + rc.writeSharedArray(28, (rc.readSharedArray(28) & 32767) | ((value & 1) << 15)); break; case 62: - rc.writeSharedArray(27, (rc.readSharedArray(27) & 61951) | (value << 9)); + rc.writeSharedArray(28, (rc.readSharedArray(28) & 61951) | (value << 9)); break; case 63: - rc.writeSharedArray(27, (rc.readSharedArray(27) & 65479) | (value << 3)); + rc.writeSharedArray(28, (rc.readSharedArray(28) & 65479) | (value << 3)); break; case 64: - rc.writeSharedArray(28, (rc.readSharedArray(28) & 8191) | (value << 13)); + rc.writeSharedArray(29, (rc.readSharedArray(29) & 8191) | (value << 13)); break; case 65: - rc.writeSharedArray(28, (rc.readSharedArray(28) & 64639) | (value << 7)); + rc.writeSharedArray(29, (rc.readSharedArray(29) & 64639) | (value << 7)); break; case 66: - rc.writeSharedArray(28, (rc.readSharedArray(28) & 65521) | (value << 1)); + rc.writeSharedArray(29, (rc.readSharedArray(29) & 65521) | (value << 1)); break; case 67: - rc.writeSharedArray(29, (rc.readSharedArray(29) & 51199) | (value << 11)); + rc.writeSharedArray(30, (rc.readSharedArray(30) & 51199) | (value << 11)); break; case 68: - rc.writeSharedArray(29, (rc.readSharedArray(29) & 65311) | (value << 5)); + rc.writeSharedArray(30, (rc.readSharedArray(30) & 65311) | (value << 5)); break; case 69: - rc.writeSharedArray(29, (rc.readSharedArray(29) & 65532) | ((value & 6) >>> 1)); - rc.writeSharedArray(30, (rc.readSharedArray(30) & 32767) | ((value & 1) << 15)); + rc.writeSharedArray(30, (rc.readSharedArray(30) & 65532) | ((value & 6) >>> 1)); + rc.writeSharedArray(31, (rc.readSharedArray(31) & 32767) | ((value & 1) << 15)); break; case 70: - rc.writeSharedArray(30, (rc.readSharedArray(30) & 61951) | (value << 9)); + rc.writeSharedArray(31, (rc.readSharedArray(31) & 61951) | (value << 9)); break; case 71: - rc.writeSharedArray(30, (rc.readSharedArray(30) & 65479) | (value << 3)); + rc.writeSharedArray(31, (rc.readSharedArray(31) & 65479) | (value << 3)); break; case 72: - rc.writeSharedArray(31, (rc.readSharedArray(31) & 8191) | (value << 13)); + rc.writeSharedArray(32, (rc.readSharedArray(32) & 8191) | (value << 13)); break; case 73: - rc.writeSharedArray(31, (rc.readSharedArray(31) & 64639) | (value << 7)); + rc.writeSharedArray(32, (rc.readSharedArray(32) & 64639) | (value << 7)); break; case 74: - rc.writeSharedArray(31, (rc.readSharedArray(31) & 65521) | (value << 1)); + rc.writeSharedArray(32, (rc.readSharedArray(32) & 65521) | (value << 1)); break; case 75: - rc.writeSharedArray(32, (rc.readSharedArray(32) & 51199) | (value << 11)); + rc.writeSharedArray(33, (rc.readSharedArray(33) & 51199) | (value << 11)); break; case 76: - rc.writeSharedArray(32, (rc.readSharedArray(32) & 65311) | (value << 5)); + rc.writeSharedArray(33, (rc.readSharedArray(33) & 65311) | (value << 5)); break; case 77: - rc.writeSharedArray(32, (rc.readSharedArray(32) & 65532) | ((value & 6) >>> 1)); - rc.writeSharedArray(33, (rc.readSharedArray(33) & 32767) | ((value & 1) << 15)); + rc.writeSharedArray(33, (rc.readSharedArray(33) & 65532) | ((value & 6) >>> 1)); + rc.writeSharedArray(34, (rc.readSharedArray(34) & 32767) | ((value & 1) << 15)); break; case 78: - rc.writeSharedArray(33, (rc.readSharedArray(33) & 61951) | (value << 9)); + rc.writeSharedArray(34, (rc.readSharedArray(34) & 61951) | (value << 9)); break; case 79: - rc.writeSharedArray(33, (rc.readSharedArray(33) & 65479) | (value << 3)); + rc.writeSharedArray(34, (rc.readSharedArray(34) & 65479) | (value << 3)); break; case 80: - rc.writeSharedArray(34, (rc.readSharedArray(34) & 8191) | (value << 13)); + rc.writeSharedArray(35, (rc.readSharedArray(35) & 8191) | (value << 13)); break; case 81: - rc.writeSharedArray(34, (rc.readSharedArray(34) & 64639) | (value << 7)); + rc.writeSharedArray(35, (rc.readSharedArray(35) & 64639) | (value << 7)); break; case 82: - rc.writeSharedArray(34, (rc.readSharedArray(34) & 65521) | (value << 1)); + rc.writeSharedArray(35, (rc.readSharedArray(35) & 65521) | (value << 1)); break; case 83: - rc.writeSharedArray(35, (rc.readSharedArray(35) & 51199) | (value << 11)); + rc.writeSharedArray(36, (rc.readSharedArray(36) & 51199) | (value << 11)); break; case 84: - rc.writeSharedArray(35, (rc.readSharedArray(35) & 65311) | (value << 5)); + rc.writeSharedArray(36, (rc.readSharedArray(36) & 65311) | (value << 5)); break; case 85: - rc.writeSharedArray(35, (rc.readSharedArray(35) & 65532) | ((value & 6) >>> 1)); - rc.writeSharedArray(36, (rc.readSharedArray(36) & 32767) | ((value & 1) << 15)); + rc.writeSharedArray(36, (rc.readSharedArray(36) & 65532) | ((value & 6) >>> 1)); + rc.writeSharedArray(37, (rc.readSharedArray(37) & 32767) | ((value & 1) << 15)); break; case 86: - rc.writeSharedArray(36, (rc.readSharedArray(36) & 61951) | (value << 9)); + rc.writeSharedArray(37, (rc.readSharedArray(37) & 61951) | (value << 9)); break; case 87: - rc.writeSharedArray(36, (rc.readSharedArray(36) & 65479) | (value << 3)); + rc.writeSharedArray(37, (rc.readSharedArray(37) & 65479) | (value << 3)); break; case 88: - rc.writeSharedArray(37, (rc.readSharedArray(37) & 8191) | (value << 13)); + rc.writeSharedArray(38, (rc.readSharedArray(38) & 8191) | (value << 13)); break; case 89: - rc.writeSharedArray(37, (rc.readSharedArray(37) & 64639) | (value << 7)); + rc.writeSharedArray(38, (rc.readSharedArray(38) & 64639) | (value << 7)); break; case 90: - rc.writeSharedArray(37, (rc.readSharedArray(37) & 65521) | (value << 1)); + rc.writeSharedArray(38, (rc.readSharedArray(38) & 65521) | (value << 1)); break; case 91: - rc.writeSharedArray(38, (rc.readSharedArray(38) & 51199) | (value << 11)); + rc.writeSharedArray(39, (rc.readSharedArray(39) & 51199) | (value << 11)); break; case 92: - rc.writeSharedArray(38, (rc.readSharedArray(38) & 65311) | (value << 5)); + rc.writeSharedArray(39, (rc.readSharedArray(39) & 65311) | (value << 5)); break; case 93: - rc.writeSharedArray(38, (rc.readSharedArray(38) & 65532) | ((value & 6) >>> 1)); - rc.writeSharedArray(39, (rc.readSharedArray(39) & 32767) | ((value & 1) << 15)); + rc.writeSharedArray(39, (rc.readSharedArray(39) & 65532) | ((value & 6) >>> 1)); + rc.writeSharedArray(40, (rc.readSharedArray(40) & 32767) | ((value & 1) << 15)); break; case 94: - rc.writeSharedArray(39, (rc.readSharedArray(39) & 61951) | (value << 9)); + rc.writeSharedArray(40, (rc.readSharedArray(40) & 61951) | (value << 9)); break; case 95: - rc.writeSharedArray(39, (rc.readSharedArray(39) & 65479) | (value << 3)); + rc.writeSharedArray(40, (rc.readSharedArray(40) & 65479) | (value << 3)); break; case 96: - rc.writeSharedArray(40, (rc.readSharedArray(40) & 8191) | (value << 13)); + rc.writeSharedArray(41, (rc.readSharedArray(41) & 8191) | (value << 13)); break; case 97: - rc.writeSharedArray(40, (rc.readSharedArray(40) & 64639) | (value << 7)); + rc.writeSharedArray(41, (rc.readSharedArray(41) & 64639) | (value << 7)); break; case 98: - rc.writeSharedArray(40, (rc.readSharedArray(40) & 65521) | (value << 1)); + rc.writeSharedArray(41, (rc.readSharedArray(41) & 65521) | (value << 1)); break; case 99: - rc.writeSharedArray(41, (rc.readSharedArray(41) & 51199) | (value << 11)); + rc.writeSharedArray(42, (rc.readSharedArray(42) & 51199) | (value << 11)); break; } } @@ -738,205 +775,205 @@ public void writeClusterControlStatus(int idx, int value) throws GameActionExcep public int readClusterResourceCount(int idx) throws GameActionException { switch (idx) { case 0: - return (rc.readSharedArray(4) & 7168) >>> 10; + return (rc.readSharedArray(5) & 7168) >>> 10; case 1: - return (rc.readSharedArray(4) & 112) >>> 4; + return (rc.readSharedArray(5) & 112) >>> 4; case 2: - return ((rc.readSharedArray(4) & 1) << 2) + ((rc.readSharedArray(5) & 49152) >>> 14); + return ((rc.readSharedArray(5) & 1) << 2) + ((rc.readSharedArray(6) & 49152) >>> 14); case 3: - return (rc.readSharedArray(5) & 1792) >>> 8; + return (rc.readSharedArray(6) & 1792) >>> 8; case 4: - return (rc.readSharedArray(5) & 28) >>> 2; + return (rc.readSharedArray(6) & 28) >>> 2; case 5: - return (rc.readSharedArray(6) & 28672) >>> 12; + return (rc.readSharedArray(7) & 28672) >>> 12; case 6: - return (rc.readSharedArray(6) & 448) >>> 6; + return (rc.readSharedArray(7) & 448) >>> 6; case 7: - return (rc.readSharedArray(6) & 7); + return (rc.readSharedArray(7) & 7); case 8: - return (rc.readSharedArray(7) & 7168) >>> 10; + return (rc.readSharedArray(8) & 7168) >>> 10; case 9: - return (rc.readSharedArray(7) & 112) >>> 4; + return (rc.readSharedArray(8) & 112) >>> 4; case 10: - return ((rc.readSharedArray(7) & 1) << 2) + ((rc.readSharedArray(8) & 49152) >>> 14); + return ((rc.readSharedArray(8) & 1) << 2) + ((rc.readSharedArray(9) & 49152) >>> 14); case 11: - return (rc.readSharedArray(8) & 1792) >>> 8; + return (rc.readSharedArray(9) & 1792) >>> 8; case 12: - return (rc.readSharedArray(8) & 28) >>> 2; + return (rc.readSharedArray(9) & 28) >>> 2; case 13: - return (rc.readSharedArray(9) & 28672) >>> 12; + return (rc.readSharedArray(10) & 28672) >>> 12; case 14: - return (rc.readSharedArray(9) & 448) >>> 6; + return (rc.readSharedArray(10) & 448) >>> 6; case 15: - return (rc.readSharedArray(9) & 7); + return (rc.readSharedArray(10) & 7); case 16: - return (rc.readSharedArray(10) & 7168) >>> 10; + return (rc.readSharedArray(11) & 7168) >>> 10; case 17: - return (rc.readSharedArray(10) & 112) >>> 4; + return (rc.readSharedArray(11) & 112) >>> 4; case 18: - return ((rc.readSharedArray(10) & 1) << 2) + ((rc.readSharedArray(11) & 49152) >>> 14); + return ((rc.readSharedArray(11) & 1) << 2) + ((rc.readSharedArray(12) & 49152) >>> 14); case 19: - return (rc.readSharedArray(11) & 1792) >>> 8; + return (rc.readSharedArray(12) & 1792) >>> 8; case 20: - return (rc.readSharedArray(11) & 28) >>> 2; + return (rc.readSharedArray(12) & 28) >>> 2; case 21: - return (rc.readSharedArray(12) & 28672) >>> 12; + return (rc.readSharedArray(13) & 28672) >>> 12; case 22: - return (rc.readSharedArray(12) & 448) >>> 6; + return (rc.readSharedArray(13) & 448) >>> 6; case 23: - return (rc.readSharedArray(12) & 7); + return (rc.readSharedArray(13) & 7); case 24: - return (rc.readSharedArray(13) & 7168) >>> 10; + return (rc.readSharedArray(14) & 7168) >>> 10; case 25: - return (rc.readSharedArray(13) & 112) >>> 4; + return (rc.readSharedArray(14) & 112) >>> 4; case 26: - return ((rc.readSharedArray(13) & 1) << 2) + ((rc.readSharedArray(14) & 49152) >>> 14); + return ((rc.readSharedArray(14) & 1) << 2) + ((rc.readSharedArray(15) & 49152) >>> 14); case 27: - return (rc.readSharedArray(14) & 1792) >>> 8; + return (rc.readSharedArray(15) & 1792) >>> 8; case 28: - return (rc.readSharedArray(14) & 28) >>> 2; + return (rc.readSharedArray(15) & 28) >>> 2; case 29: - return (rc.readSharedArray(15) & 28672) >>> 12; + return (rc.readSharedArray(16) & 28672) >>> 12; case 30: - return (rc.readSharedArray(15) & 448) >>> 6; + return (rc.readSharedArray(16) & 448) >>> 6; case 31: - return (rc.readSharedArray(15) & 7); + return (rc.readSharedArray(16) & 7); case 32: - return (rc.readSharedArray(16) & 7168) >>> 10; + return (rc.readSharedArray(17) & 7168) >>> 10; case 33: - return (rc.readSharedArray(16) & 112) >>> 4; + return (rc.readSharedArray(17) & 112) >>> 4; case 34: - return ((rc.readSharedArray(16) & 1) << 2) + ((rc.readSharedArray(17) & 49152) >>> 14); + return ((rc.readSharedArray(17) & 1) << 2) + ((rc.readSharedArray(18) & 49152) >>> 14); case 35: - return (rc.readSharedArray(17) & 1792) >>> 8; + return (rc.readSharedArray(18) & 1792) >>> 8; case 36: - return (rc.readSharedArray(17) & 28) >>> 2; + return (rc.readSharedArray(18) & 28) >>> 2; case 37: - return (rc.readSharedArray(18) & 28672) >>> 12; + return (rc.readSharedArray(19) & 28672) >>> 12; case 38: - return (rc.readSharedArray(18) & 448) >>> 6; + return (rc.readSharedArray(19) & 448) >>> 6; case 39: - return (rc.readSharedArray(18) & 7); + return (rc.readSharedArray(19) & 7); case 40: - return (rc.readSharedArray(19) & 7168) >>> 10; + return (rc.readSharedArray(20) & 7168) >>> 10; case 41: - return (rc.readSharedArray(19) & 112) >>> 4; + return (rc.readSharedArray(20) & 112) >>> 4; case 42: - return ((rc.readSharedArray(19) & 1) << 2) + ((rc.readSharedArray(20) & 49152) >>> 14); + return ((rc.readSharedArray(20) & 1) << 2) + ((rc.readSharedArray(21) & 49152) >>> 14); case 43: - return (rc.readSharedArray(20) & 1792) >>> 8; + return (rc.readSharedArray(21) & 1792) >>> 8; case 44: - return (rc.readSharedArray(20) & 28) >>> 2; + return (rc.readSharedArray(21) & 28) >>> 2; case 45: - return (rc.readSharedArray(21) & 28672) >>> 12; + return (rc.readSharedArray(22) & 28672) >>> 12; case 46: - return (rc.readSharedArray(21) & 448) >>> 6; + return (rc.readSharedArray(22) & 448) >>> 6; case 47: - return (rc.readSharedArray(21) & 7); + return (rc.readSharedArray(22) & 7); case 48: - return (rc.readSharedArray(22) & 7168) >>> 10; + return (rc.readSharedArray(23) & 7168) >>> 10; case 49: - return (rc.readSharedArray(22) & 112) >>> 4; + return (rc.readSharedArray(23) & 112) >>> 4; case 50: - return ((rc.readSharedArray(22) & 1) << 2) + ((rc.readSharedArray(23) & 49152) >>> 14); + return ((rc.readSharedArray(23) & 1) << 2) + ((rc.readSharedArray(24) & 49152) >>> 14); case 51: - return (rc.readSharedArray(23) & 1792) >>> 8; + return (rc.readSharedArray(24) & 1792) >>> 8; case 52: - return (rc.readSharedArray(23) & 28) >>> 2; + return (rc.readSharedArray(24) & 28) >>> 2; case 53: - return (rc.readSharedArray(24) & 28672) >>> 12; + return (rc.readSharedArray(25) & 28672) >>> 12; case 54: - return (rc.readSharedArray(24) & 448) >>> 6; + return (rc.readSharedArray(25) & 448) >>> 6; case 55: - return (rc.readSharedArray(24) & 7); + return (rc.readSharedArray(25) & 7); case 56: - return (rc.readSharedArray(25) & 7168) >>> 10; + return (rc.readSharedArray(26) & 7168) >>> 10; case 57: - return (rc.readSharedArray(25) & 112) >>> 4; + return (rc.readSharedArray(26) & 112) >>> 4; case 58: - return ((rc.readSharedArray(25) & 1) << 2) + ((rc.readSharedArray(26) & 49152) >>> 14); + return ((rc.readSharedArray(26) & 1) << 2) + ((rc.readSharedArray(27) & 49152) >>> 14); case 59: - return (rc.readSharedArray(26) & 1792) >>> 8; + return (rc.readSharedArray(27) & 1792) >>> 8; case 60: - return (rc.readSharedArray(26) & 28) >>> 2; + return (rc.readSharedArray(27) & 28) >>> 2; case 61: - return (rc.readSharedArray(27) & 28672) >>> 12; + return (rc.readSharedArray(28) & 28672) >>> 12; case 62: - return (rc.readSharedArray(27) & 448) >>> 6; + return (rc.readSharedArray(28) & 448) >>> 6; case 63: - return (rc.readSharedArray(27) & 7); + return (rc.readSharedArray(28) & 7); case 64: - return (rc.readSharedArray(28) & 7168) >>> 10; + return (rc.readSharedArray(29) & 7168) >>> 10; case 65: - return (rc.readSharedArray(28) & 112) >>> 4; + return (rc.readSharedArray(29) & 112) >>> 4; case 66: - return ((rc.readSharedArray(28) & 1) << 2) + ((rc.readSharedArray(29) & 49152) >>> 14); + return ((rc.readSharedArray(29) & 1) << 2) + ((rc.readSharedArray(30) & 49152) >>> 14); case 67: - return (rc.readSharedArray(29) & 1792) >>> 8; + return (rc.readSharedArray(30) & 1792) >>> 8; case 68: - return (rc.readSharedArray(29) & 28) >>> 2; + return (rc.readSharedArray(30) & 28) >>> 2; case 69: - return (rc.readSharedArray(30) & 28672) >>> 12; + return (rc.readSharedArray(31) & 28672) >>> 12; case 70: - return (rc.readSharedArray(30) & 448) >>> 6; + return (rc.readSharedArray(31) & 448) >>> 6; case 71: - return (rc.readSharedArray(30) & 7); + return (rc.readSharedArray(31) & 7); case 72: - return (rc.readSharedArray(31) & 7168) >>> 10; + return (rc.readSharedArray(32) & 7168) >>> 10; case 73: - return (rc.readSharedArray(31) & 112) >>> 4; + return (rc.readSharedArray(32) & 112) >>> 4; case 74: - return ((rc.readSharedArray(31) & 1) << 2) + ((rc.readSharedArray(32) & 49152) >>> 14); + return ((rc.readSharedArray(32) & 1) << 2) + ((rc.readSharedArray(33) & 49152) >>> 14); case 75: - return (rc.readSharedArray(32) & 1792) >>> 8; + return (rc.readSharedArray(33) & 1792) >>> 8; case 76: - return (rc.readSharedArray(32) & 28) >>> 2; + return (rc.readSharedArray(33) & 28) >>> 2; case 77: - return (rc.readSharedArray(33) & 28672) >>> 12; + return (rc.readSharedArray(34) & 28672) >>> 12; case 78: - return (rc.readSharedArray(33) & 448) >>> 6; + return (rc.readSharedArray(34) & 448) >>> 6; case 79: - return (rc.readSharedArray(33) & 7); + return (rc.readSharedArray(34) & 7); case 80: - return (rc.readSharedArray(34) & 7168) >>> 10; + return (rc.readSharedArray(35) & 7168) >>> 10; case 81: - return (rc.readSharedArray(34) & 112) >>> 4; + return (rc.readSharedArray(35) & 112) >>> 4; case 82: - return ((rc.readSharedArray(34) & 1) << 2) + ((rc.readSharedArray(35) & 49152) >>> 14); + return ((rc.readSharedArray(35) & 1) << 2) + ((rc.readSharedArray(36) & 49152) >>> 14); case 83: - return (rc.readSharedArray(35) & 1792) >>> 8; + return (rc.readSharedArray(36) & 1792) >>> 8; case 84: - return (rc.readSharedArray(35) & 28) >>> 2; + return (rc.readSharedArray(36) & 28) >>> 2; case 85: - return (rc.readSharedArray(36) & 28672) >>> 12; + return (rc.readSharedArray(37) & 28672) >>> 12; case 86: - return (rc.readSharedArray(36) & 448) >>> 6; + return (rc.readSharedArray(37) & 448) >>> 6; case 87: - return (rc.readSharedArray(36) & 7); + return (rc.readSharedArray(37) & 7); case 88: - return (rc.readSharedArray(37) & 7168) >>> 10; + return (rc.readSharedArray(38) & 7168) >>> 10; case 89: - return (rc.readSharedArray(37) & 112) >>> 4; + return (rc.readSharedArray(38) & 112) >>> 4; case 90: - return ((rc.readSharedArray(37) & 1) << 2) + ((rc.readSharedArray(38) & 49152) >>> 14); + return ((rc.readSharedArray(38) & 1) << 2) + ((rc.readSharedArray(39) & 49152) >>> 14); case 91: - return (rc.readSharedArray(38) & 1792) >>> 8; + return (rc.readSharedArray(39) & 1792) >>> 8; case 92: - return (rc.readSharedArray(38) & 28) >>> 2; + return (rc.readSharedArray(39) & 28) >>> 2; case 93: - return (rc.readSharedArray(39) & 28672) >>> 12; + return (rc.readSharedArray(40) & 28672) >>> 12; case 94: - return (rc.readSharedArray(39) & 448) >>> 6; + return (rc.readSharedArray(40) & 448) >>> 6; case 95: - return (rc.readSharedArray(39) & 7); + return (rc.readSharedArray(40) & 7); case 96: - return (rc.readSharedArray(40) & 7168) >>> 10; + return (rc.readSharedArray(41) & 7168) >>> 10; case 97: - return (rc.readSharedArray(40) & 112) >>> 4; + return (rc.readSharedArray(41) & 112) >>> 4; case 98: - return ((rc.readSharedArray(40) & 1) << 2) + ((rc.readSharedArray(41) & 49152) >>> 14); + return ((rc.readSharedArray(41) & 1) << 2) + ((rc.readSharedArray(42) & 49152) >>> 14); case 99: - return (rc.readSharedArray(41) & 1792) >>> 8; + return (rc.readSharedArray(42) & 1792) >>> 8; default: return -1; } @@ -945,317 +982,317 @@ public int readClusterResourceCount(int idx) throws GameActionException { public void writeClusterResourceCount(int idx, int value) throws GameActionException { switch (idx) { case 0: - rc.writeSharedArray(4, (rc.readSharedArray(4) & 58367) | (value << 10)); + rc.writeSharedArray(5, (rc.readSharedArray(5) & 58367) | (value << 10)); break; case 1: - rc.writeSharedArray(4, (rc.readSharedArray(4) & 65423) | (value << 4)); + rc.writeSharedArray(5, (rc.readSharedArray(5) & 65423) | (value << 4)); break; case 2: - rc.writeSharedArray(4, (rc.readSharedArray(4) & 65534) | ((value & 4) >>> 2)); - rc.writeSharedArray(5, (rc.readSharedArray(5) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(5, (rc.readSharedArray(5) & 65534) | ((value & 4) >>> 2)); + rc.writeSharedArray(6, (rc.readSharedArray(6) & 16383) | ((value & 3) << 14)); break; case 3: - rc.writeSharedArray(5, (rc.readSharedArray(5) & 63743) | (value << 8)); + rc.writeSharedArray(6, (rc.readSharedArray(6) & 63743) | (value << 8)); break; case 4: - rc.writeSharedArray(5, (rc.readSharedArray(5) & 65507) | (value << 2)); + rc.writeSharedArray(6, (rc.readSharedArray(6) & 65507) | (value << 2)); break; case 5: - rc.writeSharedArray(6, (rc.readSharedArray(6) & 36863) | (value << 12)); + rc.writeSharedArray(7, (rc.readSharedArray(7) & 36863) | (value << 12)); break; case 6: - rc.writeSharedArray(6, (rc.readSharedArray(6) & 65087) | (value << 6)); + rc.writeSharedArray(7, (rc.readSharedArray(7) & 65087) | (value << 6)); break; case 7: - rc.writeSharedArray(6, (rc.readSharedArray(6) & 65528) | (value)); + rc.writeSharedArray(7, (rc.readSharedArray(7) & 65528) | (value)); break; case 8: - rc.writeSharedArray(7, (rc.readSharedArray(7) & 58367) | (value << 10)); + rc.writeSharedArray(8, (rc.readSharedArray(8) & 58367) | (value << 10)); break; case 9: - rc.writeSharedArray(7, (rc.readSharedArray(7) & 65423) | (value << 4)); + rc.writeSharedArray(8, (rc.readSharedArray(8) & 65423) | (value << 4)); break; case 10: - rc.writeSharedArray(7, (rc.readSharedArray(7) & 65534) | ((value & 4) >>> 2)); - rc.writeSharedArray(8, (rc.readSharedArray(8) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(8, (rc.readSharedArray(8) & 65534) | ((value & 4) >>> 2)); + rc.writeSharedArray(9, (rc.readSharedArray(9) & 16383) | ((value & 3) << 14)); break; case 11: - rc.writeSharedArray(8, (rc.readSharedArray(8) & 63743) | (value << 8)); + rc.writeSharedArray(9, (rc.readSharedArray(9) & 63743) | (value << 8)); break; case 12: - rc.writeSharedArray(8, (rc.readSharedArray(8) & 65507) | (value << 2)); + rc.writeSharedArray(9, (rc.readSharedArray(9) & 65507) | (value << 2)); break; case 13: - rc.writeSharedArray(9, (rc.readSharedArray(9) & 36863) | (value << 12)); + rc.writeSharedArray(10, (rc.readSharedArray(10) & 36863) | (value << 12)); break; case 14: - rc.writeSharedArray(9, (rc.readSharedArray(9) & 65087) | (value << 6)); + rc.writeSharedArray(10, (rc.readSharedArray(10) & 65087) | (value << 6)); break; case 15: - rc.writeSharedArray(9, (rc.readSharedArray(9) & 65528) | (value)); + rc.writeSharedArray(10, (rc.readSharedArray(10) & 65528) | (value)); break; case 16: - rc.writeSharedArray(10, (rc.readSharedArray(10) & 58367) | (value << 10)); + rc.writeSharedArray(11, (rc.readSharedArray(11) & 58367) | (value << 10)); break; case 17: - rc.writeSharedArray(10, (rc.readSharedArray(10) & 65423) | (value << 4)); + rc.writeSharedArray(11, (rc.readSharedArray(11) & 65423) | (value << 4)); break; case 18: - rc.writeSharedArray(10, (rc.readSharedArray(10) & 65534) | ((value & 4) >>> 2)); - rc.writeSharedArray(11, (rc.readSharedArray(11) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(11, (rc.readSharedArray(11) & 65534) | ((value & 4) >>> 2)); + rc.writeSharedArray(12, (rc.readSharedArray(12) & 16383) | ((value & 3) << 14)); break; case 19: - rc.writeSharedArray(11, (rc.readSharedArray(11) & 63743) | (value << 8)); + rc.writeSharedArray(12, (rc.readSharedArray(12) & 63743) | (value << 8)); break; case 20: - rc.writeSharedArray(11, (rc.readSharedArray(11) & 65507) | (value << 2)); + rc.writeSharedArray(12, (rc.readSharedArray(12) & 65507) | (value << 2)); break; case 21: - rc.writeSharedArray(12, (rc.readSharedArray(12) & 36863) | (value << 12)); + rc.writeSharedArray(13, (rc.readSharedArray(13) & 36863) | (value << 12)); break; case 22: - rc.writeSharedArray(12, (rc.readSharedArray(12) & 65087) | (value << 6)); + rc.writeSharedArray(13, (rc.readSharedArray(13) & 65087) | (value << 6)); break; case 23: - rc.writeSharedArray(12, (rc.readSharedArray(12) & 65528) | (value)); + rc.writeSharedArray(13, (rc.readSharedArray(13) & 65528) | (value)); break; case 24: - rc.writeSharedArray(13, (rc.readSharedArray(13) & 58367) | (value << 10)); + rc.writeSharedArray(14, (rc.readSharedArray(14) & 58367) | (value << 10)); break; case 25: - rc.writeSharedArray(13, (rc.readSharedArray(13) & 65423) | (value << 4)); + rc.writeSharedArray(14, (rc.readSharedArray(14) & 65423) | (value << 4)); break; case 26: - rc.writeSharedArray(13, (rc.readSharedArray(13) & 65534) | ((value & 4) >>> 2)); - rc.writeSharedArray(14, (rc.readSharedArray(14) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(14, (rc.readSharedArray(14) & 65534) | ((value & 4) >>> 2)); + rc.writeSharedArray(15, (rc.readSharedArray(15) & 16383) | ((value & 3) << 14)); break; case 27: - rc.writeSharedArray(14, (rc.readSharedArray(14) & 63743) | (value << 8)); + rc.writeSharedArray(15, (rc.readSharedArray(15) & 63743) | (value << 8)); break; case 28: - rc.writeSharedArray(14, (rc.readSharedArray(14) & 65507) | (value << 2)); + rc.writeSharedArray(15, (rc.readSharedArray(15) & 65507) | (value << 2)); break; case 29: - rc.writeSharedArray(15, (rc.readSharedArray(15) & 36863) | (value << 12)); + rc.writeSharedArray(16, (rc.readSharedArray(16) & 36863) | (value << 12)); break; case 30: - rc.writeSharedArray(15, (rc.readSharedArray(15) & 65087) | (value << 6)); + rc.writeSharedArray(16, (rc.readSharedArray(16) & 65087) | (value << 6)); break; case 31: - rc.writeSharedArray(15, (rc.readSharedArray(15) & 65528) | (value)); + rc.writeSharedArray(16, (rc.readSharedArray(16) & 65528) | (value)); break; case 32: - rc.writeSharedArray(16, (rc.readSharedArray(16) & 58367) | (value << 10)); + rc.writeSharedArray(17, (rc.readSharedArray(17) & 58367) | (value << 10)); break; case 33: - rc.writeSharedArray(16, (rc.readSharedArray(16) & 65423) | (value << 4)); + rc.writeSharedArray(17, (rc.readSharedArray(17) & 65423) | (value << 4)); break; case 34: - rc.writeSharedArray(16, (rc.readSharedArray(16) & 65534) | ((value & 4) >>> 2)); - rc.writeSharedArray(17, (rc.readSharedArray(17) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(17, (rc.readSharedArray(17) & 65534) | ((value & 4) >>> 2)); + rc.writeSharedArray(18, (rc.readSharedArray(18) & 16383) | ((value & 3) << 14)); break; case 35: - rc.writeSharedArray(17, (rc.readSharedArray(17) & 63743) | (value << 8)); + rc.writeSharedArray(18, (rc.readSharedArray(18) & 63743) | (value << 8)); break; case 36: - rc.writeSharedArray(17, (rc.readSharedArray(17) & 65507) | (value << 2)); + rc.writeSharedArray(18, (rc.readSharedArray(18) & 65507) | (value << 2)); break; case 37: - rc.writeSharedArray(18, (rc.readSharedArray(18) & 36863) | (value << 12)); + rc.writeSharedArray(19, (rc.readSharedArray(19) & 36863) | (value << 12)); break; case 38: - rc.writeSharedArray(18, (rc.readSharedArray(18) & 65087) | (value << 6)); + rc.writeSharedArray(19, (rc.readSharedArray(19) & 65087) | (value << 6)); break; case 39: - rc.writeSharedArray(18, (rc.readSharedArray(18) & 65528) | (value)); + rc.writeSharedArray(19, (rc.readSharedArray(19) & 65528) | (value)); break; case 40: - rc.writeSharedArray(19, (rc.readSharedArray(19) & 58367) | (value << 10)); + rc.writeSharedArray(20, (rc.readSharedArray(20) & 58367) | (value << 10)); break; case 41: - rc.writeSharedArray(19, (rc.readSharedArray(19) & 65423) | (value << 4)); + rc.writeSharedArray(20, (rc.readSharedArray(20) & 65423) | (value << 4)); break; case 42: - rc.writeSharedArray(19, (rc.readSharedArray(19) & 65534) | ((value & 4) >>> 2)); - rc.writeSharedArray(20, (rc.readSharedArray(20) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(20, (rc.readSharedArray(20) & 65534) | ((value & 4) >>> 2)); + rc.writeSharedArray(21, (rc.readSharedArray(21) & 16383) | ((value & 3) << 14)); break; case 43: - rc.writeSharedArray(20, (rc.readSharedArray(20) & 63743) | (value << 8)); + rc.writeSharedArray(21, (rc.readSharedArray(21) & 63743) | (value << 8)); break; case 44: - rc.writeSharedArray(20, (rc.readSharedArray(20) & 65507) | (value << 2)); + rc.writeSharedArray(21, (rc.readSharedArray(21) & 65507) | (value << 2)); break; case 45: - rc.writeSharedArray(21, (rc.readSharedArray(21) & 36863) | (value << 12)); + rc.writeSharedArray(22, (rc.readSharedArray(22) & 36863) | (value << 12)); break; case 46: - rc.writeSharedArray(21, (rc.readSharedArray(21) & 65087) | (value << 6)); + rc.writeSharedArray(22, (rc.readSharedArray(22) & 65087) | (value << 6)); break; case 47: - rc.writeSharedArray(21, (rc.readSharedArray(21) & 65528) | (value)); + rc.writeSharedArray(22, (rc.readSharedArray(22) & 65528) | (value)); break; case 48: - rc.writeSharedArray(22, (rc.readSharedArray(22) & 58367) | (value << 10)); + rc.writeSharedArray(23, (rc.readSharedArray(23) & 58367) | (value << 10)); break; case 49: - rc.writeSharedArray(22, (rc.readSharedArray(22) & 65423) | (value << 4)); + rc.writeSharedArray(23, (rc.readSharedArray(23) & 65423) | (value << 4)); break; case 50: - rc.writeSharedArray(22, (rc.readSharedArray(22) & 65534) | ((value & 4) >>> 2)); - rc.writeSharedArray(23, (rc.readSharedArray(23) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(23, (rc.readSharedArray(23) & 65534) | ((value & 4) >>> 2)); + rc.writeSharedArray(24, (rc.readSharedArray(24) & 16383) | ((value & 3) << 14)); break; case 51: - rc.writeSharedArray(23, (rc.readSharedArray(23) & 63743) | (value << 8)); + rc.writeSharedArray(24, (rc.readSharedArray(24) & 63743) | (value << 8)); break; case 52: - rc.writeSharedArray(23, (rc.readSharedArray(23) & 65507) | (value << 2)); + rc.writeSharedArray(24, (rc.readSharedArray(24) & 65507) | (value << 2)); break; case 53: - rc.writeSharedArray(24, (rc.readSharedArray(24) & 36863) | (value << 12)); + rc.writeSharedArray(25, (rc.readSharedArray(25) & 36863) | (value << 12)); break; case 54: - rc.writeSharedArray(24, (rc.readSharedArray(24) & 65087) | (value << 6)); + rc.writeSharedArray(25, (rc.readSharedArray(25) & 65087) | (value << 6)); break; case 55: - rc.writeSharedArray(24, (rc.readSharedArray(24) & 65528) | (value)); + rc.writeSharedArray(25, (rc.readSharedArray(25) & 65528) | (value)); break; case 56: - rc.writeSharedArray(25, (rc.readSharedArray(25) & 58367) | (value << 10)); + rc.writeSharedArray(26, (rc.readSharedArray(26) & 58367) | (value << 10)); break; case 57: - rc.writeSharedArray(25, (rc.readSharedArray(25) & 65423) | (value << 4)); + rc.writeSharedArray(26, (rc.readSharedArray(26) & 65423) | (value << 4)); break; case 58: - rc.writeSharedArray(25, (rc.readSharedArray(25) & 65534) | ((value & 4) >>> 2)); - rc.writeSharedArray(26, (rc.readSharedArray(26) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(26, (rc.readSharedArray(26) & 65534) | ((value & 4) >>> 2)); + rc.writeSharedArray(27, (rc.readSharedArray(27) & 16383) | ((value & 3) << 14)); break; case 59: - rc.writeSharedArray(26, (rc.readSharedArray(26) & 63743) | (value << 8)); + rc.writeSharedArray(27, (rc.readSharedArray(27) & 63743) | (value << 8)); break; case 60: - rc.writeSharedArray(26, (rc.readSharedArray(26) & 65507) | (value << 2)); + rc.writeSharedArray(27, (rc.readSharedArray(27) & 65507) | (value << 2)); break; case 61: - rc.writeSharedArray(27, (rc.readSharedArray(27) & 36863) | (value << 12)); + rc.writeSharedArray(28, (rc.readSharedArray(28) & 36863) | (value << 12)); break; case 62: - rc.writeSharedArray(27, (rc.readSharedArray(27) & 65087) | (value << 6)); + rc.writeSharedArray(28, (rc.readSharedArray(28) & 65087) | (value << 6)); break; case 63: - rc.writeSharedArray(27, (rc.readSharedArray(27) & 65528) | (value)); + rc.writeSharedArray(28, (rc.readSharedArray(28) & 65528) | (value)); break; case 64: - rc.writeSharedArray(28, (rc.readSharedArray(28) & 58367) | (value << 10)); + rc.writeSharedArray(29, (rc.readSharedArray(29) & 58367) | (value << 10)); break; case 65: - rc.writeSharedArray(28, (rc.readSharedArray(28) & 65423) | (value << 4)); + rc.writeSharedArray(29, (rc.readSharedArray(29) & 65423) | (value << 4)); break; case 66: - rc.writeSharedArray(28, (rc.readSharedArray(28) & 65534) | ((value & 4) >>> 2)); - rc.writeSharedArray(29, (rc.readSharedArray(29) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(29, (rc.readSharedArray(29) & 65534) | ((value & 4) >>> 2)); + rc.writeSharedArray(30, (rc.readSharedArray(30) & 16383) | ((value & 3) << 14)); break; case 67: - rc.writeSharedArray(29, (rc.readSharedArray(29) & 63743) | (value << 8)); + rc.writeSharedArray(30, (rc.readSharedArray(30) & 63743) | (value << 8)); break; case 68: - rc.writeSharedArray(29, (rc.readSharedArray(29) & 65507) | (value << 2)); + rc.writeSharedArray(30, (rc.readSharedArray(30) & 65507) | (value << 2)); break; case 69: - rc.writeSharedArray(30, (rc.readSharedArray(30) & 36863) | (value << 12)); + rc.writeSharedArray(31, (rc.readSharedArray(31) & 36863) | (value << 12)); break; case 70: - rc.writeSharedArray(30, (rc.readSharedArray(30) & 65087) | (value << 6)); + rc.writeSharedArray(31, (rc.readSharedArray(31) & 65087) | (value << 6)); break; case 71: - rc.writeSharedArray(30, (rc.readSharedArray(30) & 65528) | (value)); + rc.writeSharedArray(31, (rc.readSharedArray(31) & 65528) | (value)); break; case 72: - rc.writeSharedArray(31, (rc.readSharedArray(31) & 58367) | (value << 10)); + rc.writeSharedArray(32, (rc.readSharedArray(32) & 58367) | (value << 10)); break; case 73: - rc.writeSharedArray(31, (rc.readSharedArray(31) & 65423) | (value << 4)); + rc.writeSharedArray(32, (rc.readSharedArray(32) & 65423) | (value << 4)); break; case 74: - rc.writeSharedArray(31, (rc.readSharedArray(31) & 65534) | ((value & 4) >>> 2)); - rc.writeSharedArray(32, (rc.readSharedArray(32) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(32, (rc.readSharedArray(32) & 65534) | ((value & 4) >>> 2)); + rc.writeSharedArray(33, (rc.readSharedArray(33) & 16383) | ((value & 3) << 14)); break; case 75: - rc.writeSharedArray(32, (rc.readSharedArray(32) & 63743) | (value << 8)); + rc.writeSharedArray(33, (rc.readSharedArray(33) & 63743) | (value << 8)); break; case 76: - rc.writeSharedArray(32, (rc.readSharedArray(32) & 65507) | (value << 2)); + rc.writeSharedArray(33, (rc.readSharedArray(33) & 65507) | (value << 2)); break; case 77: - rc.writeSharedArray(33, (rc.readSharedArray(33) & 36863) | (value << 12)); + rc.writeSharedArray(34, (rc.readSharedArray(34) & 36863) | (value << 12)); break; case 78: - rc.writeSharedArray(33, (rc.readSharedArray(33) & 65087) | (value << 6)); + rc.writeSharedArray(34, (rc.readSharedArray(34) & 65087) | (value << 6)); break; case 79: - rc.writeSharedArray(33, (rc.readSharedArray(33) & 65528) | (value)); + rc.writeSharedArray(34, (rc.readSharedArray(34) & 65528) | (value)); break; case 80: - rc.writeSharedArray(34, (rc.readSharedArray(34) & 58367) | (value << 10)); + rc.writeSharedArray(35, (rc.readSharedArray(35) & 58367) | (value << 10)); break; case 81: - rc.writeSharedArray(34, (rc.readSharedArray(34) & 65423) | (value << 4)); + rc.writeSharedArray(35, (rc.readSharedArray(35) & 65423) | (value << 4)); break; case 82: - rc.writeSharedArray(34, (rc.readSharedArray(34) & 65534) | ((value & 4) >>> 2)); - rc.writeSharedArray(35, (rc.readSharedArray(35) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(35, (rc.readSharedArray(35) & 65534) | ((value & 4) >>> 2)); + rc.writeSharedArray(36, (rc.readSharedArray(36) & 16383) | ((value & 3) << 14)); break; case 83: - rc.writeSharedArray(35, (rc.readSharedArray(35) & 63743) | (value << 8)); + rc.writeSharedArray(36, (rc.readSharedArray(36) & 63743) | (value << 8)); break; case 84: - rc.writeSharedArray(35, (rc.readSharedArray(35) & 65507) | (value << 2)); + rc.writeSharedArray(36, (rc.readSharedArray(36) & 65507) | (value << 2)); break; case 85: - rc.writeSharedArray(36, (rc.readSharedArray(36) & 36863) | (value << 12)); + rc.writeSharedArray(37, (rc.readSharedArray(37) & 36863) | (value << 12)); break; case 86: - rc.writeSharedArray(36, (rc.readSharedArray(36) & 65087) | (value << 6)); + rc.writeSharedArray(37, (rc.readSharedArray(37) & 65087) | (value << 6)); break; case 87: - rc.writeSharedArray(36, (rc.readSharedArray(36) & 65528) | (value)); + rc.writeSharedArray(37, (rc.readSharedArray(37) & 65528) | (value)); break; case 88: - rc.writeSharedArray(37, (rc.readSharedArray(37) & 58367) | (value << 10)); + rc.writeSharedArray(38, (rc.readSharedArray(38) & 58367) | (value << 10)); break; case 89: - rc.writeSharedArray(37, (rc.readSharedArray(37) & 65423) | (value << 4)); + rc.writeSharedArray(38, (rc.readSharedArray(38) & 65423) | (value << 4)); break; case 90: - rc.writeSharedArray(37, (rc.readSharedArray(37) & 65534) | ((value & 4) >>> 2)); - rc.writeSharedArray(38, (rc.readSharedArray(38) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(38, (rc.readSharedArray(38) & 65534) | ((value & 4) >>> 2)); + rc.writeSharedArray(39, (rc.readSharedArray(39) & 16383) | ((value & 3) << 14)); break; case 91: - rc.writeSharedArray(38, (rc.readSharedArray(38) & 63743) | (value << 8)); + rc.writeSharedArray(39, (rc.readSharedArray(39) & 63743) | (value << 8)); break; case 92: - rc.writeSharedArray(38, (rc.readSharedArray(38) & 65507) | (value << 2)); + rc.writeSharedArray(39, (rc.readSharedArray(39) & 65507) | (value << 2)); break; case 93: - rc.writeSharedArray(39, (rc.readSharedArray(39) & 36863) | (value << 12)); + rc.writeSharedArray(40, (rc.readSharedArray(40) & 36863) | (value << 12)); break; case 94: - rc.writeSharedArray(39, (rc.readSharedArray(39) & 65087) | (value << 6)); + rc.writeSharedArray(40, (rc.readSharedArray(40) & 65087) | (value << 6)); break; case 95: - rc.writeSharedArray(39, (rc.readSharedArray(39) & 65528) | (value)); + rc.writeSharedArray(40, (rc.readSharedArray(40) & 65528) | (value)); break; case 96: - rc.writeSharedArray(40, (rc.readSharedArray(40) & 58367) | (value << 10)); + rc.writeSharedArray(41, (rc.readSharedArray(41) & 58367) | (value << 10)); break; case 97: - rc.writeSharedArray(40, (rc.readSharedArray(40) & 65423) | (value << 4)); + rc.writeSharedArray(41, (rc.readSharedArray(41) & 65423) | (value << 4)); break; case 98: - rc.writeSharedArray(40, (rc.readSharedArray(40) & 65534) | ((value & 4) >>> 2)); - rc.writeSharedArray(41, (rc.readSharedArray(41) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(41, (rc.readSharedArray(41) & 65534) | ((value & 4) >>> 2)); + rc.writeSharedArray(42, (rc.readSharedArray(42) & 16383) | ((value & 3) << 14)); break; case 99: - rc.writeSharedArray(41, (rc.readSharedArray(41) & 63743) | (value << 8)); + rc.writeSharedArray(42, (rc.readSharedArray(42) & 63743) | (value << 8)); break; } } @@ -1263,205 +1300,205 @@ public void writeClusterResourceCount(int idx, int value) throws GameActionExcep public int readClusterAll(int idx) throws GameActionException { switch (idx) { case 0: - return (rc.readSharedArray(4) & 64512) >>> 10; + return (rc.readSharedArray(5) & 64512) >>> 10; case 1: - return (rc.readSharedArray(4) & 1008) >>> 4; + return (rc.readSharedArray(5) & 1008) >>> 4; case 2: - return ((rc.readSharedArray(4) & 15) << 2) + ((rc.readSharedArray(5) & 49152) >>> 14); + return ((rc.readSharedArray(5) & 15) << 2) + ((rc.readSharedArray(6) & 49152) >>> 14); case 3: - return (rc.readSharedArray(5) & 16128) >>> 8; + return (rc.readSharedArray(6) & 16128) >>> 8; case 4: - return (rc.readSharedArray(5) & 252) >>> 2; + return (rc.readSharedArray(6) & 252) >>> 2; case 5: - return ((rc.readSharedArray(5) & 3) << 4) + ((rc.readSharedArray(6) & 61440) >>> 12); + return ((rc.readSharedArray(6) & 3) << 4) + ((rc.readSharedArray(7) & 61440) >>> 12); case 6: - return (rc.readSharedArray(6) & 4032) >>> 6; + return (rc.readSharedArray(7) & 4032) >>> 6; case 7: - return (rc.readSharedArray(6) & 63); + return (rc.readSharedArray(7) & 63); case 8: - return (rc.readSharedArray(7) & 64512) >>> 10; + return (rc.readSharedArray(8) & 64512) >>> 10; case 9: - return (rc.readSharedArray(7) & 1008) >>> 4; + return (rc.readSharedArray(8) & 1008) >>> 4; case 10: - return ((rc.readSharedArray(7) & 15) << 2) + ((rc.readSharedArray(8) & 49152) >>> 14); + return ((rc.readSharedArray(8) & 15) << 2) + ((rc.readSharedArray(9) & 49152) >>> 14); case 11: - return (rc.readSharedArray(8) & 16128) >>> 8; + return (rc.readSharedArray(9) & 16128) >>> 8; case 12: - return (rc.readSharedArray(8) & 252) >>> 2; + return (rc.readSharedArray(9) & 252) >>> 2; case 13: - return ((rc.readSharedArray(8) & 3) << 4) + ((rc.readSharedArray(9) & 61440) >>> 12); + return ((rc.readSharedArray(9) & 3) << 4) + ((rc.readSharedArray(10) & 61440) >>> 12); case 14: - return (rc.readSharedArray(9) & 4032) >>> 6; + return (rc.readSharedArray(10) & 4032) >>> 6; case 15: - return (rc.readSharedArray(9) & 63); + return (rc.readSharedArray(10) & 63); case 16: - return (rc.readSharedArray(10) & 64512) >>> 10; + return (rc.readSharedArray(11) & 64512) >>> 10; case 17: - return (rc.readSharedArray(10) & 1008) >>> 4; + return (rc.readSharedArray(11) & 1008) >>> 4; case 18: - return ((rc.readSharedArray(10) & 15) << 2) + ((rc.readSharedArray(11) & 49152) >>> 14); + return ((rc.readSharedArray(11) & 15) << 2) + ((rc.readSharedArray(12) & 49152) >>> 14); case 19: - return (rc.readSharedArray(11) & 16128) >>> 8; + return (rc.readSharedArray(12) & 16128) >>> 8; case 20: - return (rc.readSharedArray(11) & 252) >>> 2; + return (rc.readSharedArray(12) & 252) >>> 2; case 21: - return ((rc.readSharedArray(11) & 3) << 4) + ((rc.readSharedArray(12) & 61440) >>> 12); + return ((rc.readSharedArray(12) & 3) << 4) + ((rc.readSharedArray(13) & 61440) >>> 12); case 22: - return (rc.readSharedArray(12) & 4032) >>> 6; + return (rc.readSharedArray(13) & 4032) >>> 6; case 23: - return (rc.readSharedArray(12) & 63); + return (rc.readSharedArray(13) & 63); case 24: - return (rc.readSharedArray(13) & 64512) >>> 10; + return (rc.readSharedArray(14) & 64512) >>> 10; case 25: - return (rc.readSharedArray(13) & 1008) >>> 4; + return (rc.readSharedArray(14) & 1008) >>> 4; case 26: - return ((rc.readSharedArray(13) & 15) << 2) + ((rc.readSharedArray(14) & 49152) >>> 14); + return ((rc.readSharedArray(14) & 15) << 2) + ((rc.readSharedArray(15) & 49152) >>> 14); case 27: - return (rc.readSharedArray(14) & 16128) >>> 8; + return (rc.readSharedArray(15) & 16128) >>> 8; case 28: - return (rc.readSharedArray(14) & 252) >>> 2; + return (rc.readSharedArray(15) & 252) >>> 2; case 29: - return ((rc.readSharedArray(14) & 3) << 4) + ((rc.readSharedArray(15) & 61440) >>> 12); + return ((rc.readSharedArray(15) & 3) << 4) + ((rc.readSharedArray(16) & 61440) >>> 12); case 30: - return (rc.readSharedArray(15) & 4032) >>> 6; + return (rc.readSharedArray(16) & 4032) >>> 6; case 31: - return (rc.readSharedArray(15) & 63); + return (rc.readSharedArray(16) & 63); case 32: - return (rc.readSharedArray(16) & 64512) >>> 10; + return (rc.readSharedArray(17) & 64512) >>> 10; case 33: - return (rc.readSharedArray(16) & 1008) >>> 4; + return (rc.readSharedArray(17) & 1008) >>> 4; case 34: - return ((rc.readSharedArray(16) & 15) << 2) + ((rc.readSharedArray(17) & 49152) >>> 14); + return ((rc.readSharedArray(17) & 15) << 2) + ((rc.readSharedArray(18) & 49152) >>> 14); case 35: - return (rc.readSharedArray(17) & 16128) >>> 8; + return (rc.readSharedArray(18) & 16128) >>> 8; case 36: - return (rc.readSharedArray(17) & 252) >>> 2; + return (rc.readSharedArray(18) & 252) >>> 2; case 37: - return ((rc.readSharedArray(17) & 3) << 4) + ((rc.readSharedArray(18) & 61440) >>> 12); + return ((rc.readSharedArray(18) & 3) << 4) + ((rc.readSharedArray(19) & 61440) >>> 12); case 38: - return (rc.readSharedArray(18) & 4032) >>> 6; + return (rc.readSharedArray(19) & 4032) >>> 6; case 39: - return (rc.readSharedArray(18) & 63); + return (rc.readSharedArray(19) & 63); case 40: - return (rc.readSharedArray(19) & 64512) >>> 10; + return (rc.readSharedArray(20) & 64512) >>> 10; case 41: - return (rc.readSharedArray(19) & 1008) >>> 4; + return (rc.readSharedArray(20) & 1008) >>> 4; case 42: - return ((rc.readSharedArray(19) & 15) << 2) + ((rc.readSharedArray(20) & 49152) >>> 14); + return ((rc.readSharedArray(20) & 15) << 2) + ((rc.readSharedArray(21) & 49152) >>> 14); case 43: - return (rc.readSharedArray(20) & 16128) >>> 8; + return (rc.readSharedArray(21) & 16128) >>> 8; case 44: - return (rc.readSharedArray(20) & 252) >>> 2; + return (rc.readSharedArray(21) & 252) >>> 2; case 45: - return ((rc.readSharedArray(20) & 3) << 4) + ((rc.readSharedArray(21) & 61440) >>> 12); + return ((rc.readSharedArray(21) & 3) << 4) + ((rc.readSharedArray(22) & 61440) >>> 12); case 46: - return (rc.readSharedArray(21) & 4032) >>> 6; + return (rc.readSharedArray(22) & 4032) >>> 6; case 47: - return (rc.readSharedArray(21) & 63); + return (rc.readSharedArray(22) & 63); case 48: - return (rc.readSharedArray(22) & 64512) >>> 10; + return (rc.readSharedArray(23) & 64512) >>> 10; case 49: - return (rc.readSharedArray(22) & 1008) >>> 4; + return (rc.readSharedArray(23) & 1008) >>> 4; case 50: - return ((rc.readSharedArray(22) & 15) << 2) + ((rc.readSharedArray(23) & 49152) >>> 14); + return ((rc.readSharedArray(23) & 15) << 2) + ((rc.readSharedArray(24) & 49152) >>> 14); case 51: - return (rc.readSharedArray(23) & 16128) >>> 8; + return (rc.readSharedArray(24) & 16128) >>> 8; case 52: - return (rc.readSharedArray(23) & 252) >>> 2; + return (rc.readSharedArray(24) & 252) >>> 2; case 53: - return ((rc.readSharedArray(23) & 3) << 4) + ((rc.readSharedArray(24) & 61440) >>> 12); + return ((rc.readSharedArray(24) & 3) << 4) + ((rc.readSharedArray(25) & 61440) >>> 12); case 54: - return (rc.readSharedArray(24) & 4032) >>> 6; + return (rc.readSharedArray(25) & 4032) >>> 6; case 55: - return (rc.readSharedArray(24) & 63); + return (rc.readSharedArray(25) & 63); case 56: - return (rc.readSharedArray(25) & 64512) >>> 10; + return (rc.readSharedArray(26) & 64512) >>> 10; case 57: - return (rc.readSharedArray(25) & 1008) >>> 4; + return (rc.readSharedArray(26) & 1008) >>> 4; case 58: - return ((rc.readSharedArray(25) & 15) << 2) + ((rc.readSharedArray(26) & 49152) >>> 14); + return ((rc.readSharedArray(26) & 15) << 2) + ((rc.readSharedArray(27) & 49152) >>> 14); case 59: - return (rc.readSharedArray(26) & 16128) >>> 8; + return (rc.readSharedArray(27) & 16128) >>> 8; case 60: - return (rc.readSharedArray(26) & 252) >>> 2; + return (rc.readSharedArray(27) & 252) >>> 2; case 61: - return ((rc.readSharedArray(26) & 3) << 4) + ((rc.readSharedArray(27) & 61440) >>> 12); + return ((rc.readSharedArray(27) & 3) << 4) + ((rc.readSharedArray(28) & 61440) >>> 12); case 62: - return (rc.readSharedArray(27) & 4032) >>> 6; + return (rc.readSharedArray(28) & 4032) >>> 6; case 63: - return (rc.readSharedArray(27) & 63); + return (rc.readSharedArray(28) & 63); case 64: - return (rc.readSharedArray(28) & 64512) >>> 10; + return (rc.readSharedArray(29) & 64512) >>> 10; case 65: - return (rc.readSharedArray(28) & 1008) >>> 4; + return (rc.readSharedArray(29) & 1008) >>> 4; case 66: - return ((rc.readSharedArray(28) & 15) << 2) + ((rc.readSharedArray(29) & 49152) >>> 14); + return ((rc.readSharedArray(29) & 15) << 2) + ((rc.readSharedArray(30) & 49152) >>> 14); case 67: - return (rc.readSharedArray(29) & 16128) >>> 8; + return (rc.readSharedArray(30) & 16128) >>> 8; case 68: - return (rc.readSharedArray(29) & 252) >>> 2; + return (rc.readSharedArray(30) & 252) >>> 2; case 69: - return ((rc.readSharedArray(29) & 3) << 4) + ((rc.readSharedArray(30) & 61440) >>> 12); + return ((rc.readSharedArray(30) & 3) << 4) + ((rc.readSharedArray(31) & 61440) >>> 12); case 70: - return (rc.readSharedArray(30) & 4032) >>> 6; + return (rc.readSharedArray(31) & 4032) >>> 6; case 71: - return (rc.readSharedArray(30) & 63); + return (rc.readSharedArray(31) & 63); case 72: - return (rc.readSharedArray(31) & 64512) >>> 10; + return (rc.readSharedArray(32) & 64512) >>> 10; case 73: - return (rc.readSharedArray(31) & 1008) >>> 4; + return (rc.readSharedArray(32) & 1008) >>> 4; case 74: - return ((rc.readSharedArray(31) & 15) << 2) + ((rc.readSharedArray(32) & 49152) >>> 14); + return ((rc.readSharedArray(32) & 15) << 2) + ((rc.readSharedArray(33) & 49152) >>> 14); case 75: - return (rc.readSharedArray(32) & 16128) >>> 8; + return (rc.readSharedArray(33) & 16128) >>> 8; case 76: - return (rc.readSharedArray(32) & 252) >>> 2; + return (rc.readSharedArray(33) & 252) >>> 2; case 77: - return ((rc.readSharedArray(32) & 3) << 4) + ((rc.readSharedArray(33) & 61440) >>> 12); + return ((rc.readSharedArray(33) & 3) << 4) + ((rc.readSharedArray(34) & 61440) >>> 12); case 78: - return (rc.readSharedArray(33) & 4032) >>> 6; + return (rc.readSharedArray(34) & 4032) >>> 6; case 79: - return (rc.readSharedArray(33) & 63); + return (rc.readSharedArray(34) & 63); case 80: - return (rc.readSharedArray(34) & 64512) >>> 10; + return (rc.readSharedArray(35) & 64512) >>> 10; case 81: - return (rc.readSharedArray(34) & 1008) >>> 4; + return (rc.readSharedArray(35) & 1008) >>> 4; case 82: - return ((rc.readSharedArray(34) & 15) << 2) + ((rc.readSharedArray(35) & 49152) >>> 14); + return ((rc.readSharedArray(35) & 15) << 2) + ((rc.readSharedArray(36) & 49152) >>> 14); case 83: - return (rc.readSharedArray(35) & 16128) >>> 8; + return (rc.readSharedArray(36) & 16128) >>> 8; case 84: - return (rc.readSharedArray(35) & 252) >>> 2; + return (rc.readSharedArray(36) & 252) >>> 2; case 85: - return ((rc.readSharedArray(35) & 3) << 4) + ((rc.readSharedArray(36) & 61440) >>> 12); + return ((rc.readSharedArray(36) & 3) << 4) + ((rc.readSharedArray(37) & 61440) >>> 12); case 86: - return (rc.readSharedArray(36) & 4032) >>> 6; + return (rc.readSharedArray(37) & 4032) >>> 6; case 87: - return (rc.readSharedArray(36) & 63); + return (rc.readSharedArray(37) & 63); case 88: - return (rc.readSharedArray(37) & 64512) >>> 10; + return (rc.readSharedArray(38) & 64512) >>> 10; case 89: - return (rc.readSharedArray(37) & 1008) >>> 4; + return (rc.readSharedArray(38) & 1008) >>> 4; case 90: - return ((rc.readSharedArray(37) & 15) << 2) + ((rc.readSharedArray(38) & 49152) >>> 14); + return ((rc.readSharedArray(38) & 15) << 2) + ((rc.readSharedArray(39) & 49152) >>> 14); case 91: - return (rc.readSharedArray(38) & 16128) >>> 8; + return (rc.readSharedArray(39) & 16128) >>> 8; case 92: - return (rc.readSharedArray(38) & 252) >>> 2; + return (rc.readSharedArray(39) & 252) >>> 2; case 93: - return ((rc.readSharedArray(38) & 3) << 4) + ((rc.readSharedArray(39) & 61440) >>> 12); + return ((rc.readSharedArray(39) & 3) << 4) + ((rc.readSharedArray(40) & 61440) >>> 12); case 94: - return (rc.readSharedArray(39) & 4032) >>> 6; + return (rc.readSharedArray(40) & 4032) >>> 6; case 95: - return (rc.readSharedArray(39) & 63); + return (rc.readSharedArray(40) & 63); case 96: - return (rc.readSharedArray(40) & 64512) >>> 10; + return (rc.readSharedArray(41) & 64512) >>> 10; case 97: - return (rc.readSharedArray(40) & 1008) >>> 4; + return (rc.readSharedArray(41) & 1008) >>> 4; case 98: - return ((rc.readSharedArray(40) & 15) << 2) + ((rc.readSharedArray(41) & 49152) >>> 14); + return ((rc.readSharedArray(41) & 15) << 2) + ((rc.readSharedArray(42) & 49152) >>> 14); case 99: - return (rc.readSharedArray(41) & 16128) >>> 8; + return (rc.readSharedArray(42) & 16128) >>> 8; default: return -1; } @@ -1470,355 +1507,417 @@ public int readClusterAll(int idx) throws GameActionException { public void writeClusterAll(int idx, int value) throws GameActionException { switch (idx) { case 0: - rc.writeSharedArray(4, (rc.readSharedArray(4) & 1023) | (value << 10)); + rc.writeSharedArray(5, (rc.readSharedArray(5) & 1023) | (value << 10)); break; case 1: - rc.writeSharedArray(4, (rc.readSharedArray(4) & 64527) | (value << 4)); + rc.writeSharedArray(5, (rc.readSharedArray(5) & 64527) | (value << 4)); break; case 2: - rc.writeSharedArray(4, (rc.readSharedArray(4) & 65520) | ((value & 60) >>> 2)); - rc.writeSharedArray(5, (rc.readSharedArray(5) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(5, (rc.readSharedArray(5) & 65520) | ((value & 60) >>> 2)); + rc.writeSharedArray(6, (rc.readSharedArray(6) & 16383) | ((value & 3) << 14)); break; case 3: - rc.writeSharedArray(5, (rc.readSharedArray(5) & 49407) | (value << 8)); + rc.writeSharedArray(6, (rc.readSharedArray(6) & 49407) | (value << 8)); break; case 4: - rc.writeSharedArray(5, (rc.readSharedArray(5) & 65283) | (value << 2)); + rc.writeSharedArray(6, (rc.readSharedArray(6) & 65283) | (value << 2)); break; case 5: - rc.writeSharedArray(5, (rc.readSharedArray(5) & 65532) | ((value & 48) >>> 4)); - rc.writeSharedArray(6, (rc.readSharedArray(6) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(6, (rc.readSharedArray(6) & 65532) | ((value & 48) >>> 4)); + rc.writeSharedArray(7, (rc.readSharedArray(7) & 4095) | ((value & 15) << 12)); break; case 6: - rc.writeSharedArray(6, (rc.readSharedArray(6) & 61503) | (value << 6)); + rc.writeSharedArray(7, (rc.readSharedArray(7) & 61503) | (value << 6)); break; case 7: - rc.writeSharedArray(6, (rc.readSharedArray(6) & 65472) | (value)); + rc.writeSharedArray(7, (rc.readSharedArray(7) & 65472) | (value)); break; case 8: - rc.writeSharedArray(7, (rc.readSharedArray(7) & 1023) | (value << 10)); + rc.writeSharedArray(8, (rc.readSharedArray(8) & 1023) | (value << 10)); break; case 9: - rc.writeSharedArray(7, (rc.readSharedArray(7) & 64527) | (value << 4)); + rc.writeSharedArray(8, (rc.readSharedArray(8) & 64527) | (value << 4)); break; case 10: - rc.writeSharedArray(7, (rc.readSharedArray(7) & 65520) | ((value & 60) >>> 2)); - rc.writeSharedArray(8, (rc.readSharedArray(8) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(8, (rc.readSharedArray(8) & 65520) | ((value & 60) >>> 2)); + rc.writeSharedArray(9, (rc.readSharedArray(9) & 16383) | ((value & 3) << 14)); break; case 11: - rc.writeSharedArray(8, (rc.readSharedArray(8) & 49407) | (value << 8)); + rc.writeSharedArray(9, (rc.readSharedArray(9) & 49407) | (value << 8)); break; case 12: - rc.writeSharedArray(8, (rc.readSharedArray(8) & 65283) | (value << 2)); + rc.writeSharedArray(9, (rc.readSharedArray(9) & 65283) | (value << 2)); break; case 13: - rc.writeSharedArray(8, (rc.readSharedArray(8) & 65532) | ((value & 48) >>> 4)); - rc.writeSharedArray(9, (rc.readSharedArray(9) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(9, (rc.readSharedArray(9) & 65532) | ((value & 48) >>> 4)); + rc.writeSharedArray(10, (rc.readSharedArray(10) & 4095) | ((value & 15) << 12)); break; case 14: - rc.writeSharedArray(9, (rc.readSharedArray(9) & 61503) | (value << 6)); + rc.writeSharedArray(10, (rc.readSharedArray(10) & 61503) | (value << 6)); break; case 15: - rc.writeSharedArray(9, (rc.readSharedArray(9) & 65472) | (value)); + rc.writeSharedArray(10, (rc.readSharedArray(10) & 65472) | (value)); break; case 16: - rc.writeSharedArray(10, (rc.readSharedArray(10) & 1023) | (value << 10)); + rc.writeSharedArray(11, (rc.readSharedArray(11) & 1023) | (value << 10)); break; case 17: - rc.writeSharedArray(10, (rc.readSharedArray(10) & 64527) | (value << 4)); + rc.writeSharedArray(11, (rc.readSharedArray(11) & 64527) | (value << 4)); break; case 18: - rc.writeSharedArray(10, (rc.readSharedArray(10) & 65520) | ((value & 60) >>> 2)); - rc.writeSharedArray(11, (rc.readSharedArray(11) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(11, (rc.readSharedArray(11) & 65520) | ((value & 60) >>> 2)); + rc.writeSharedArray(12, (rc.readSharedArray(12) & 16383) | ((value & 3) << 14)); break; case 19: - rc.writeSharedArray(11, (rc.readSharedArray(11) & 49407) | (value << 8)); + rc.writeSharedArray(12, (rc.readSharedArray(12) & 49407) | (value << 8)); break; case 20: - rc.writeSharedArray(11, (rc.readSharedArray(11) & 65283) | (value << 2)); + rc.writeSharedArray(12, (rc.readSharedArray(12) & 65283) | (value << 2)); break; case 21: - rc.writeSharedArray(11, (rc.readSharedArray(11) & 65532) | ((value & 48) >>> 4)); - rc.writeSharedArray(12, (rc.readSharedArray(12) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(12, (rc.readSharedArray(12) & 65532) | ((value & 48) >>> 4)); + rc.writeSharedArray(13, (rc.readSharedArray(13) & 4095) | ((value & 15) << 12)); break; case 22: - rc.writeSharedArray(12, (rc.readSharedArray(12) & 61503) | (value << 6)); + rc.writeSharedArray(13, (rc.readSharedArray(13) & 61503) | (value << 6)); break; case 23: - rc.writeSharedArray(12, (rc.readSharedArray(12) & 65472) | (value)); + rc.writeSharedArray(13, (rc.readSharedArray(13) & 65472) | (value)); break; case 24: - rc.writeSharedArray(13, (rc.readSharedArray(13) & 1023) | (value << 10)); + rc.writeSharedArray(14, (rc.readSharedArray(14) & 1023) | (value << 10)); break; case 25: - rc.writeSharedArray(13, (rc.readSharedArray(13) & 64527) | (value << 4)); + rc.writeSharedArray(14, (rc.readSharedArray(14) & 64527) | (value << 4)); break; case 26: - rc.writeSharedArray(13, (rc.readSharedArray(13) & 65520) | ((value & 60) >>> 2)); - rc.writeSharedArray(14, (rc.readSharedArray(14) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(14, (rc.readSharedArray(14) & 65520) | ((value & 60) >>> 2)); + rc.writeSharedArray(15, (rc.readSharedArray(15) & 16383) | ((value & 3) << 14)); break; case 27: - rc.writeSharedArray(14, (rc.readSharedArray(14) & 49407) | (value << 8)); + rc.writeSharedArray(15, (rc.readSharedArray(15) & 49407) | (value << 8)); break; case 28: - rc.writeSharedArray(14, (rc.readSharedArray(14) & 65283) | (value << 2)); + rc.writeSharedArray(15, (rc.readSharedArray(15) & 65283) | (value << 2)); break; case 29: - rc.writeSharedArray(14, (rc.readSharedArray(14) & 65532) | ((value & 48) >>> 4)); - rc.writeSharedArray(15, (rc.readSharedArray(15) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(15, (rc.readSharedArray(15) & 65532) | ((value & 48) >>> 4)); + rc.writeSharedArray(16, (rc.readSharedArray(16) & 4095) | ((value & 15) << 12)); break; case 30: - rc.writeSharedArray(15, (rc.readSharedArray(15) & 61503) | (value << 6)); + rc.writeSharedArray(16, (rc.readSharedArray(16) & 61503) | (value << 6)); break; case 31: - rc.writeSharedArray(15, (rc.readSharedArray(15) & 65472) | (value)); + rc.writeSharedArray(16, (rc.readSharedArray(16) & 65472) | (value)); break; case 32: - rc.writeSharedArray(16, (rc.readSharedArray(16) & 1023) | (value << 10)); + rc.writeSharedArray(17, (rc.readSharedArray(17) & 1023) | (value << 10)); break; case 33: - rc.writeSharedArray(16, (rc.readSharedArray(16) & 64527) | (value << 4)); + rc.writeSharedArray(17, (rc.readSharedArray(17) & 64527) | (value << 4)); break; case 34: - rc.writeSharedArray(16, (rc.readSharedArray(16) & 65520) | ((value & 60) >>> 2)); - rc.writeSharedArray(17, (rc.readSharedArray(17) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(17, (rc.readSharedArray(17) & 65520) | ((value & 60) >>> 2)); + rc.writeSharedArray(18, (rc.readSharedArray(18) & 16383) | ((value & 3) << 14)); break; case 35: - rc.writeSharedArray(17, (rc.readSharedArray(17) & 49407) | (value << 8)); + rc.writeSharedArray(18, (rc.readSharedArray(18) & 49407) | (value << 8)); break; case 36: - rc.writeSharedArray(17, (rc.readSharedArray(17) & 65283) | (value << 2)); + rc.writeSharedArray(18, (rc.readSharedArray(18) & 65283) | (value << 2)); break; case 37: - rc.writeSharedArray(17, (rc.readSharedArray(17) & 65532) | ((value & 48) >>> 4)); - rc.writeSharedArray(18, (rc.readSharedArray(18) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(18, (rc.readSharedArray(18) & 65532) | ((value & 48) >>> 4)); + rc.writeSharedArray(19, (rc.readSharedArray(19) & 4095) | ((value & 15) << 12)); break; case 38: - rc.writeSharedArray(18, (rc.readSharedArray(18) & 61503) | (value << 6)); + rc.writeSharedArray(19, (rc.readSharedArray(19) & 61503) | (value << 6)); break; case 39: - rc.writeSharedArray(18, (rc.readSharedArray(18) & 65472) | (value)); + rc.writeSharedArray(19, (rc.readSharedArray(19) & 65472) | (value)); break; case 40: - rc.writeSharedArray(19, (rc.readSharedArray(19) & 1023) | (value << 10)); + rc.writeSharedArray(20, (rc.readSharedArray(20) & 1023) | (value << 10)); break; case 41: - rc.writeSharedArray(19, (rc.readSharedArray(19) & 64527) | (value << 4)); + rc.writeSharedArray(20, (rc.readSharedArray(20) & 64527) | (value << 4)); break; case 42: - rc.writeSharedArray(19, (rc.readSharedArray(19) & 65520) | ((value & 60) >>> 2)); - rc.writeSharedArray(20, (rc.readSharedArray(20) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(20, (rc.readSharedArray(20) & 65520) | ((value & 60) >>> 2)); + rc.writeSharedArray(21, (rc.readSharedArray(21) & 16383) | ((value & 3) << 14)); break; case 43: - rc.writeSharedArray(20, (rc.readSharedArray(20) & 49407) | (value << 8)); + rc.writeSharedArray(21, (rc.readSharedArray(21) & 49407) | (value << 8)); break; case 44: - rc.writeSharedArray(20, (rc.readSharedArray(20) & 65283) | (value << 2)); + rc.writeSharedArray(21, (rc.readSharedArray(21) & 65283) | (value << 2)); break; case 45: - rc.writeSharedArray(20, (rc.readSharedArray(20) & 65532) | ((value & 48) >>> 4)); - rc.writeSharedArray(21, (rc.readSharedArray(21) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(21, (rc.readSharedArray(21) & 65532) | ((value & 48) >>> 4)); + rc.writeSharedArray(22, (rc.readSharedArray(22) & 4095) | ((value & 15) << 12)); break; case 46: - rc.writeSharedArray(21, (rc.readSharedArray(21) & 61503) | (value << 6)); + rc.writeSharedArray(22, (rc.readSharedArray(22) & 61503) | (value << 6)); break; case 47: - rc.writeSharedArray(21, (rc.readSharedArray(21) & 65472) | (value)); + rc.writeSharedArray(22, (rc.readSharedArray(22) & 65472) | (value)); break; case 48: - rc.writeSharedArray(22, (rc.readSharedArray(22) & 1023) | (value << 10)); + rc.writeSharedArray(23, (rc.readSharedArray(23) & 1023) | (value << 10)); break; case 49: - rc.writeSharedArray(22, (rc.readSharedArray(22) & 64527) | (value << 4)); + rc.writeSharedArray(23, (rc.readSharedArray(23) & 64527) | (value << 4)); break; case 50: - rc.writeSharedArray(22, (rc.readSharedArray(22) & 65520) | ((value & 60) >>> 2)); - rc.writeSharedArray(23, (rc.readSharedArray(23) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(23, (rc.readSharedArray(23) & 65520) | ((value & 60) >>> 2)); + rc.writeSharedArray(24, (rc.readSharedArray(24) & 16383) | ((value & 3) << 14)); break; case 51: - rc.writeSharedArray(23, (rc.readSharedArray(23) & 49407) | (value << 8)); + rc.writeSharedArray(24, (rc.readSharedArray(24) & 49407) | (value << 8)); break; case 52: - rc.writeSharedArray(23, (rc.readSharedArray(23) & 65283) | (value << 2)); + rc.writeSharedArray(24, (rc.readSharedArray(24) & 65283) | (value << 2)); break; case 53: - rc.writeSharedArray(23, (rc.readSharedArray(23) & 65532) | ((value & 48) >>> 4)); - rc.writeSharedArray(24, (rc.readSharedArray(24) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(24, (rc.readSharedArray(24) & 65532) | ((value & 48) >>> 4)); + rc.writeSharedArray(25, (rc.readSharedArray(25) & 4095) | ((value & 15) << 12)); break; case 54: - rc.writeSharedArray(24, (rc.readSharedArray(24) & 61503) | (value << 6)); + rc.writeSharedArray(25, (rc.readSharedArray(25) & 61503) | (value << 6)); break; case 55: - rc.writeSharedArray(24, (rc.readSharedArray(24) & 65472) | (value)); + rc.writeSharedArray(25, (rc.readSharedArray(25) & 65472) | (value)); break; case 56: - rc.writeSharedArray(25, (rc.readSharedArray(25) & 1023) | (value << 10)); + rc.writeSharedArray(26, (rc.readSharedArray(26) & 1023) | (value << 10)); break; case 57: - rc.writeSharedArray(25, (rc.readSharedArray(25) & 64527) | (value << 4)); + rc.writeSharedArray(26, (rc.readSharedArray(26) & 64527) | (value << 4)); break; case 58: - rc.writeSharedArray(25, (rc.readSharedArray(25) & 65520) | ((value & 60) >>> 2)); - rc.writeSharedArray(26, (rc.readSharedArray(26) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(26, (rc.readSharedArray(26) & 65520) | ((value & 60) >>> 2)); + rc.writeSharedArray(27, (rc.readSharedArray(27) & 16383) | ((value & 3) << 14)); break; case 59: - rc.writeSharedArray(26, (rc.readSharedArray(26) & 49407) | (value << 8)); + rc.writeSharedArray(27, (rc.readSharedArray(27) & 49407) | (value << 8)); break; case 60: - rc.writeSharedArray(26, (rc.readSharedArray(26) & 65283) | (value << 2)); + rc.writeSharedArray(27, (rc.readSharedArray(27) & 65283) | (value << 2)); break; case 61: - rc.writeSharedArray(26, (rc.readSharedArray(26) & 65532) | ((value & 48) >>> 4)); - rc.writeSharedArray(27, (rc.readSharedArray(27) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(27, (rc.readSharedArray(27) & 65532) | ((value & 48) >>> 4)); + rc.writeSharedArray(28, (rc.readSharedArray(28) & 4095) | ((value & 15) << 12)); break; case 62: - rc.writeSharedArray(27, (rc.readSharedArray(27) & 61503) | (value << 6)); + rc.writeSharedArray(28, (rc.readSharedArray(28) & 61503) | (value << 6)); break; case 63: - rc.writeSharedArray(27, (rc.readSharedArray(27) & 65472) | (value)); + rc.writeSharedArray(28, (rc.readSharedArray(28) & 65472) | (value)); break; case 64: - rc.writeSharedArray(28, (rc.readSharedArray(28) & 1023) | (value << 10)); + rc.writeSharedArray(29, (rc.readSharedArray(29) & 1023) | (value << 10)); break; case 65: - rc.writeSharedArray(28, (rc.readSharedArray(28) & 64527) | (value << 4)); + rc.writeSharedArray(29, (rc.readSharedArray(29) & 64527) | (value << 4)); break; case 66: - rc.writeSharedArray(28, (rc.readSharedArray(28) & 65520) | ((value & 60) >>> 2)); - rc.writeSharedArray(29, (rc.readSharedArray(29) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(29, (rc.readSharedArray(29) & 65520) | ((value & 60) >>> 2)); + rc.writeSharedArray(30, (rc.readSharedArray(30) & 16383) | ((value & 3) << 14)); break; case 67: - rc.writeSharedArray(29, (rc.readSharedArray(29) & 49407) | (value << 8)); + rc.writeSharedArray(30, (rc.readSharedArray(30) & 49407) | (value << 8)); break; case 68: - rc.writeSharedArray(29, (rc.readSharedArray(29) & 65283) | (value << 2)); + rc.writeSharedArray(30, (rc.readSharedArray(30) & 65283) | (value << 2)); break; case 69: - rc.writeSharedArray(29, (rc.readSharedArray(29) & 65532) | ((value & 48) >>> 4)); - rc.writeSharedArray(30, (rc.readSharedArray(30) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(30, (rc.readSharedArray(30) & 65532) | ((value & 48) >>> 4)); + rc.writeSharedArray(31, (rc.readSharedArray(31) & 4095) | ((value & 15) << 12)); break; case 70: - rc.writeSharedArray(30, (rc.readSharedArray(30) & 61503) | (value << 6)); + rc.writeSharedArray(31, (rc.readSharedArray(31) & 61503) | (value << 6)); break; case 71: - rc.writeSharedArray(30, (rc.readSharedArray(30) & 65472) | (value)); + rc.writeSharedArray(31, (rc.readSharedArray(31) & 65472) | (value)); break; case 72: - rc.writeSharedArray(31, (rc.readSharedArray(31) & 1023) | (value << 10)); + rc.writeSharedArray(32, (rc.readSharedArray(32) & 1023) | (value << 10)); break; case 73: - rc.writeSharedArray(31, (rc.readSharedArray(31) & 64527) | (value << 4)); + rc.writeSharedArray(32, (rc.readSharedArray(32) & 64527) | (value << 4)); break; case 74: - rc.writeSharedArray(31, (rc.readSharedArray(31) & 65520) | ((value & 60) >>> 2)); - rc.writeSharedArray(32, (rc.readSharedArray(32) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(32, (rc.readSharedArray(32) & 65520) | ((value & 60) >>> 2)); + rc.writeSharedArray(33, (rc.readSharedArray(33) & 16383) | ((value & 3) << 14)); break; case 75: - rc.writeSharedArray(32, (rc.readSharedArray(32) & 49407) | (value << 8)); + rc.writeSharedArray(33, (rc.readSharedArray(33) & 49407) | (value << 8)); break; case 76: - rc.writeSharedArray(32, (rc.readSharedArray(32) & 65283) | (value << 2)); + rc.writeSharedArray(33, (rc.readSharedArray(33) & 65283) | (value << 2)); break; case 77: - rc.writeSharedArray(32, (rc.readSharedArray(32) & 65532) | ((value & 48) >>> 4)); - rc.writeSharedArray(33, (rc.readSharedArray(33) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(33, (rc.readSharedArray(33) & 65532) | ((value & 48) >>> 4)); + rc.writeSharedArray(34, (rc.readSharedArray(34) & 4095) | ((value & 15) << 12)); break; case 78: - rc.writeSharedArray(33, (rc.readSharedArray(33) & 61503) | (value << 6)); + rc.writeSharedArray(34, (rc.readSharedArray(34) & 61503) | (value << 6)); break; case 79: - rc.writeSharedArray(33, (rc.readSharedArray(33) & 65472) | (value)); + rc.writeSharedArray(34, (rc.readSharedArray(34) & 65472) | (value)); break; case 80: - rc.writeSharedArray(34, (rc.readSharedArray(34) & 1023) | (value << 10)); + rc.writeSharedArray(35, (rc.readSharedArray(35) & 1023) | (value << 10)); break; case 81: - rc.writeSharedArray(34, (rc.readSharedArray(34) & 64527) | (value << 4)); + rc.writeSharedArray(35, (rc.readSharedArray(35) & 64527) | (value << 4)); break; case 82: - rc.writeSharedArray(34, (rc.readSharedArray(34) & 65520) | ((value & 60) >>> 2)); - rc.writeSharedArray(35, (rc.readSharedArray(35) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(35, (rc.readSharedArray(35) & 65520) | ((value & 60) >>> 2)); + rc.writeSharedArray(36, (rc.readSharedArray(36) & 16383) | ((value & 3) << 14)); break; case 83: - rc.writeSharedArray(35, (rc.readSharedArray(35) & 49407) | (value << 8)); + rc.writeSharedArray(36, (rc.readSharedArray(36) & 49407) | (value << 8)); break; case 84: - rc.writeSharedArray(35, (rc.readSharedArray(35) & 65283) | (value << 2)); + rc.writeSharedArray(36, (rc.readSharedArray(36) & 65283) | (value << 2)); break; case 85: - rc.writeSharedArray(35, (rc.readSharedArray(35) & 65532) | ((value & 48) >>> 4)); - rc.writeSharedArray(36, (rc.readSharedArray(36) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(36, (rc.readSharedArray(36) & 65532) | ((value & 48) >>> 4)); + rc.writeSharedArray(37, (rc.readSharedArray(37) & 4095) | ((value & 15) << 12)); break; case 86: - rc.writeSharedArray(36, (rc.readSharedArray(36) & 61503) | (value << 6)); + rc.writeSharedArray(37, (rc.readSharedArray(37) & 61503) | (value << 6)); break; case 87: - rc.writeSharedArray(36, (rc.readSharedArray(36) & 65472) | (value)); + rc.writeSharedArray(37, (rc.readSharedArray(37) & 65472) | (value)); break; case 88: - rc.writeSharedArray(37, (rc.readSharedArray(37) & 1023) | (value << 10)); + rc.writeSharedArray(38, (rc.readSharedArray(38) & 1023) | (value << 10)); break; case 89: - rc.writeSharedArray(37, (rc.readSharedArray(37) & 64527) | (value << 4)); + rc.writeSharedArray(38, (rc.readSharedArray(38) & 64527) | (value << 4)); break; case 90: - rc.writeSharedArray(37, (rc.readSharedArray(37) & 65520) | ((value & 60) >>> 2)); - rc.writeSharedArray(38, (rc.readSharedArray(38) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(38, (rc.readSharedArray(38) & 65520) | ((value & 60) >>> 2)); + rc.writeSharedArray(39, (rc.readSharedArray(39) & 16383) | ((value & 3) << 14)); break; case 91: - rc.writeSharedArray(38, (rc.readSharedArray(38) & 49407) | (value << 8)); + rc.writeSharedArray(39, (rc.readSharedArray(39) & 49407) | (value << 8)); break; case 92: - rc.writeSharedArray(38, (rc.readSharedArray(38) & 65283) | (value << 2)); + rc.writeSharedArray(39, (rc.readSharedArray(39) & 65283) | (value << 2)); break; case 93: - rc.writeSharedArray(38, (rc.readSharedArray(38) & 65532) | ((value & 48) >>> 4)); - rc.writeSharedArray(39, (rc.readSharedArray(39) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(39, (rc.readSharedArray(39) & 65532) | ((value & 48) >>> 4)); + rc.writeSharedArray(40, (rc.readSharedArray(40) & 4095) | ((value & 15) << 12)); break; case 94: - rc.writeSharedArray(39, (rc.readSharedArray(39) & 61503) | (value << 6)); + rc.writeSharedArray(40, (rc.readSharedArray(40) & 61503) | (value << 6)); break; case 95: - rc.writeSharedArray(39, (rc.readSharedArray(39) & 65472) | (value)); + rc.writeSharedArray(40, (rc.readSharedArray(40) & 65472) | (value)); break; case 96: - rc.writeSharedArray(40, (rc.readSharedArray(40) & 1023) | (value << 10)); + rc.writeSharedArray(41, (rc.readSharedArray(41) & 1023) | (value << 10)); break; case 97: - rc.writeSharedArray(40, (rc.readSharedArray(40) & 64527) | (value << 4)); + rc.writeSharedArray(41, (rc.readSharedArray(41) & 64527) | (value << 4)); break; case 98: - rc.writeSharedArray(40, (rc.readSharedArray(40) & 65520) | ((value & 60) >>> 2)); - rc.writeSharedArray(41, (rc.readSharedArray(41) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(41, (rc.readSharedArray(41) & 65520) | ((value & 60) >>> 2)); + rc.writeSharedArray(42, (rc.readSharedArray(42) & 16383) | ((value & 3) << 14)); break; case 99: - rc.writeSharedArray(41, (rc.readSharedArray(41) & 49407) | (value << 8)); + rc.writeSharedArray(42, (rc.readSharedArray(42) & 49407) | (value << 8)); break; } } - public int readCombatClusterIndex(int idx) throws GameActionException { + public int readCombatClusterPriority(int idx) throws GameActionException { switch (idx) { case 0: - return (rc.readSharedArray(41) & 254) >>> 1; + return (rc.readSharedArray(42) & 192) >>> 6; case 1: - return ((rc.readSharedArray(41) & 1) << 6) + ((rc.readSharedArray(42) & 64512) >>> 10); + return (rc.readSharedArray(43) & 24576) >>> 13; case 2: - return (rc.readSharedArray(42) & 1016) >>> 3; + return (rc.readSharedArray(43) & 48) >>> 4; case 3: - return ((rc.readSharedArray(42) & 7) << 4) + ((rc.readSharedArray(43) & 61440) >>> 12); + return (rc.readSharedArray(44) & 6144) >>> 11; case 4: - return (rc.readSharedArray(43) & 4064) >>> 5; + return (rc.readSharedArray(44) & 12) >>> 2; case 5: - return ((rc.readSharedArray(43) & 31) << 2) + ((rc.readSharedArray(44) & 49152) >>> 14); + return (rc.readSharedArray(45) & 1536) >>> 9; case 6: - return (rc.readSharedArray(44) & 16256) >>> 7; + return (rc.readSharedArray(45) & 3); case 7: - return (rc.readSharedArray(44) & 127); + return (rc.readSharedArray(46) & 384) >>> 7; case 8: - return (rc.readSharedArray(45) & 65024) >>> 9; + return (rc.readSharedArray(47) & 49152) >>> 14; case 9: + return (rc.readSharedArray(47) & 96) >>> 5; + default: + return -1; + } + } + + public void writeCombatClusterPriority(int idx, int value) throws GameActionException { + switch (idx) { + case 0: + rc.writeSharedArray(42, (rc.readSharedArray(42) & 65343) | (value << 6)); + break; + case 1: + rc.writeSharedArray(43, (rc.readSharedArray(43) & 40959) | (value << 13)); + break; + case 2: + rc.writeSharedArray(43, (rc.readSharedArray(43) & 65487) | (value << 4)); + break; + case 3: + rc.writeSharedArray(44, (rc.readSharedArray(44) & 59391) | (value << 11)); + break; + case 4: + rc.writeSharedArray(44, (rc.readSharedArray(44) & 65523) | (value << 2)); + break; + case 5: + rc.writeSharedArray(45, (rc.readSharedArray(45) & 63999) | (value << 9)); + break; + case 6: + rc.writeSharedArray(45, (rc.readSharedArray(45) & 65532) | (value)); + break; + case 7: + rc.writeSharedArray(46, (rc.readSharedArray(46) & 65151) | (value << 7)); + break; + case 8: + rc.writeSharedArray(47, (rc.readSharedArray(47) & 16383) | (value << 14)); + break; + case 9: + rc.writeSharedArray(47, (rc.readSharedArray(47) & 65439) | (value << 5)); + break; + } + } + + public int readCombatClusterIndex(int idx) throws GameActionException { + switch (idx) { + case 0: + return ((rc.readSharedArray(42) & 63) << 1) + ((rc.readSharedArray(43) & 32768) >>> 15); + case 1: + return (rc.readSharedArray(43) & 8128) >>> 6; + case 2: + return ((rc.readSharedArray(43) & 15) << 3) + ((rc.readSharedArray(44) & 57344) >>> 13); + case 3: + return (rc.readSharedArray(44) & 2032) >>> 4; + case 4: + return ((rc.readSharedArray(44) & 3) << 5) + ((rc.readSharedArray(45) & 63488) >>> 11); + case 5: return (rc.readSharedArray(45) & 508) >>> 2; + case 6: + return (rc.readSharedArray(46) & 65024) >>> 9; + case 7: + return (rc.readSharedArray(46) & 127); + case 8: + return (rc.readSharedArray(47) & 16256) >>> 7; + case 9: + return ((rc.readSharedArray(47) & 31) << 2) + ((rc.readSharedArray(48) & 49152) >>> 14); default: return -1; } @@ -1827,37 +1926,38 @@ public int readCombatClusterIndex(int idx) throws GameActionException { public void writeCombatClusterIndex(int idx, int value) throws GameActionException { switch (idx) { case 0: - rc.writeSharedArray(41, (rc.readSharedArray(41) & 65281) | (value << 1)); + rc.writeSharedArray(42, (rc.readSharedArray(42) & 65472) | ((value & 126) >>> 1)); + rc.writeSharedArray(43, (rc.readSharedArray(43) & 32767) | ((value & 1) << 15)); break; case 1: - rc.writeSharedArray(41, (rc.readSharedArray(41) & 65534) | ((value & 64) >>> 6)); - rc.writeSharedArray(42, (rc.readSharedArray(42) & 1023) | ((value & 63) << 10)); + rc.writeSharedArray(43, (rc.readSharedArray(43) & 57407) | (value << 6)); break; case 2: - rc.writeSharedArray(42, (rc.readSharedArray(42) & 64519) | (value << 3)); + rc.writeSharedArray(43, (rc.readSharedArray(43) & 65520) | ((value & 120) >>> 3)); + rc.writeSharedArray(44, (rc.readSharedArray(44) & 8191) | ((value & 7) << 13)); break; case 3: - rc.writeSharedArray(42, (rc.readSharedArray(42) & 65528) | ((value & 112) >>> 4)); - rc.writeSharedArray(43, (rc.readSharedArray(43) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(44, (rc.readSharedArray(44) & 63503) | (value << 4)); break; case 4: - rc.writeSharedArray(43, (rc.readSharedArray(43) & 61471) | (value << 5)); + rc.writeSharedArray(44, (rc.readSharedArray(44) & 65532) | ((value & 96) >>> 5)); + rc.writeSharedArray(45, (rc.readSharedArray(45) & 2047) | ((value & 31) << 11)); break; case 5: - rc.writeSharedArray(43, (rc.readSharedArray(43) & 65504) | ((value & 124) >>> 2)); - rc.writeSharedArray(44, (rc.readSharedArray(44) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(45, (rc.readSharedArray(45) & 65027) | (value << 2)); break; case 6: - rc.writeSharedArray(44, (rc.readSharedArray(44) & 49279) | (value << 7)); + rc.writeSharedArray(46, (rc.readSharedArray(46) & 511) | (value << 9)); break; case 7: - rc.writeSharedArray(44, (rc.readSharedArray(44) & 65408) | (value)); + rc.writeSharedArray(46, (rc.readSharedArray(46) & 65408) | (value)); break; case 8: - rc.writeSharedArray(45, (rc.readSharedArray(45) & 511) | (value << 9)); + rc.writeSharedArray(47, (rc.readSharedArray(47) & 49279) | (value << 7)); break; case 9: - rc.writeSharedArray(45, (rc.readSharedArray(45) & 65027) | (value << 2)); + rc.writeSharedArray(47, (rc.readSharedArray(47) & 65504) | ((value & 124) >>> 2)); + rc.writeSharedArray(48, (rc.readSharedArray(48) & 16383) | ((value & 3) << 14)); break; } } @@ -1865,25 +1965,25 @@ public void writeCombatClusterIndex(int idx, int value) throws GameActionExcepti public int readCombatClusterAll(int idx) throws GameActionException { switch (idx) { case 0: - return (rc.readSharedArray(41) & 254) >>> 1; + return ((rc.readSharedArray(42) & 255) << 1) + ((rc.readSharedArray(43) & 32768) >>> 15); case 1: - return ((rc.readSharedArray(41) & 1) << 6) + ((rc.readSharedArray(42) & 64512) >>> 10); + return (rc.readSharedArray(43) & 32704) >>> 6; case 2: - return (rc.readSharedArray(42) & 1016) >>> 3; + return ((rc.readSharedArray(43) & 63) << 3) + ((rc.readSharedArray(44) & 57344) >>> 13); case 3: - return ((rc.readSharedArray(42) & 7) << 4) + ((rc.readSharedArray(43) & 61440) >>> 12); + return (rc.readSharedArray(44) & 8176) >>> 4; case 4: - return (rc.readSharedArray(43) & 4064) >>> 5; + return ((rc.readSharedArray(44) & 15) << 5) + ((rc.readSharedArray(45) & 63488) >>> 11); case 5: - return ((rc.readSharedArray(43) & 31) << 2) + ((rc.readSharedArray(44) & 49152) >>> 14); + return (rc.readSharedArray(45) & 2044) >>> 2; case 6: - return (rc.readSharedArray(44) & 16256) >>> 7; + return ((rc.readSharedArray(45) & 3) << 7) + ((rc.readSharedArray(46) & 65024) >>> 9); case 7: - return (rc.readSharedArray(44) & 127); + return (rc.readSharedArray(46) & 511); case 8: - return (rc.readSharedArray(45) & 65024) >>> 9; + return (rc.readSharedArray(47) & 65408) >>> 7; case 9: - return (rc.readSharedArray(45) & 508) >>> 2; + return ((rc.readSharedArray(47) & 127) << 2) + ((rc.readSharedArray(48) & 49152) >>> 14); default: return -1; } @@ -1892,37 +1992,39 @@ public int readCombatClusterAll(int idx) throws GameActionException { public void writeCombatClusterAll(int idx, int value) throws GameActionException { switch (idx) { case 0: - rc.writeSharedArray(41, (rc.readSharedArray(41) & 65281) | (value << 1)); + rc.writeSharedArray(42, (rc.readSharedArray(42) & 65280) | ((value & 510) >>> 1)); + rc.writeSharedArray(43, (rc.readSharedArray(43) & 32767) | ((value & 1) << 15)); break; case 1: - rc.writeSharedArray(41, (rc.readSharedArray(41) & 65534) | ((value & 64) >>> 6)); - rc.writeSharedArray(42, (rc.readSharedArray(42) & 1023) | ((value & 63) << 10)); + rc.writeSharedArray(43, (rc.readSharedArray(43) & 32831) | (value << 6)); break; case 2: - rc.writeSharedArray(42, (rc.readSharedArray(42) & 64519) | (value << 3)); + rc.writeSharedArray(43, (rc.readSharedArray(43) & 65472) | ((value & 504) >>> 3)); + rc.writeSharedArray(44, (rc.readSharedArray(44) & 8191) | ((value & 7) << 13)); break; case 3: - rc.writeSharedArray(42, (rc.readSharedArray(42) & 65528) | ((value & 112) >>> 4)); - rc.writeSharedArray(43, (rc.readSharedArray(43) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(44, (rc.readSharedArray(44) & 57359) | (value << 4)); break; case 4: - rc.writeSharedArray(43, (rc.readSharedArray(43) & 61471) | (value << 5)); + rc.writeSharedArray(44, (rc.readSharedArray(44) & 65520) | ((value & 480) >>> 5)); + rc.writeSharedArray(45, (rc.readSharedArray(45) & 2047) | ((value & 31) << 11)); break; case 5: - rc.writeSharedArray(43, (rc.readSharedArray(43) & 65504) | ((value & 124) >>> 2)); - rc.writeSharedArray(44, (rc.readSharedArray(44) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(45, (rc.readSharedArray(45) & 63491) | (value << 2)); break; case 6: - rc.writeSharedArray(44, (rc.readSharedArray(44) & 49279) | (value << 7)); + rc.writeSharedArray(45, (rc.readSharedArray(45) & 65532) | ((value & 384) >>> 7)); + rc.writeSharedArray(46, (rc.readSharedArray(46) & 511) | ((value & 127) << 9)); break; case 7: - rc.writeSharedArray(44, (rc.readSharedArray(44) & 65408) | (value)); + rc.writeSharedArray(46, (rc.readSharedArray(46) & 65024) | (value)); break; case 8: - rc.writeSharedArray(45, (rc.readSharedArray(45) & 511) | (value << 9)); + rc.writeSharedArray(47, (rc.readSharedArray(47) & 127) | (value << 7)); break; case 9: - rc.writeSharedArray(45, (rc.readSharedArray(45) & 65027) | (value << 2)); + rc.writeSharedArray(47, (rc.readSharedArray(47) & 65408) | ((value & 508) >>> 2)); + rc.writeSharedArray(48, (rc.readSharedArray(48) & 16383) | ((value & 3) << 14)); break; } } @@ -1930,25 +2032,25 @@ public void writeCombatClusterAll(int idx, int value) throws GameActionException public int readExploreClusterClaimStatus(int idx) throws GameActionException { switch (idx) { case 0: - return (rc.readSharedArray(45) & 2) >>> 1; + return (rc.readSharedArray(48) & 8192) >>> 13; case 1: - return (rc.readSharedArray(46) & 512) >>> 9; + return (rc.readSharedArray(48) & 32) >>> 5; case 2: - return (rc.readSharedArray(46) & 2) >>> 1; + return (rc.readSharedArray(49) & 8192) >>> 13; case 3: - return (rc.readSharedArray(47) & 512) >>> 9; + return (rc.readSharedArray(49) & 32) >>> 5; case 4: - return (rc.readSharedArray(47) & 2) >>> 1; + return (rc.readSharedArray(50) & 8192) >>> 13; case 5: - return (rc.readSharedArray(48) & 512) >>> 9; + return (rc.readSharedArray(50) & 32) >>> 5; case 6: - return (rc.readSharedArray(48) & 2) >>> 1; + return (rc.readSharedArray(51) & 8192) >>> 13; case 7: - return (rc.readSharedArray(49) & 512) >>> 9; + return (rc.readSharedArray(51) & 32) >>> 5; case 8: - return (rc.readSharedArray(49) & 2) >>> 1; + return (rc.readSharedArray(52) & 8192) >>> 13; case 9: - return (rc.readSharedArray(50) & 512) >>> 9; + return (rc.readSharedArray(52) & 32) >>> 5; default: return -1; } @@ -1957,34 +2059,34 @@ public int readExploreClusterClaimStatus(int idx) throws GameActionException { public void writeExploreClusterClaimStatus(int idx, int value) throws GameActionException { switch (idx) { case 0: - rc.writeSharedArray(45, (rc.readSharedArray(45) & 65533) | (value << 1)); + rc.writeSharedArray(48, (rc.readSharedArray(48) & 57343) | (value << 13)); break; case 1: - rc.writeSharedArray(46, (rc.readSharedArray(46) & 65023) | (value << 9)); + rc.writeSharedArray(48, (rc.readSharedArray(48) & 65503) | (value << 5)); break; case 2: - rc.writeSharedArray(46, (rc.readSharedArray(46) & 65533) | (value << 1)); + rc.writeSharedArray(49, (rc.readSharedArray(49) & 57343) | (value << 13)); break; case 3: - rc.writeSharedArray(47, (rc.readSharedArray(47) & 65023) | (value << 9)); + rc.writeSharedArray(49, (rc.readSharedArray(49) & 65503) | (value << 5)); break; case 4: - rc.writeSharedArray(47, (rc.readSharedArray(47) & 65533) | (value << 1)); + rc.writeSharedArray(50, (rc.readSharedArray(50) & 57343) | (value << 13)); break; case 5: - rc.writeSharedArray(48, (rc.readSharedArray(48) & 65023) | (value << 9)); + rc.writeSharedArray(50, (rc.readSharedArray(50) & 65503) | (value << 5)); break; case 6: - rc.writeSharedArray(48, (rc.readSharedArray(48) & 65533) | (value << 1)); + rc.writeSharedArray(51, (rc.readSharedArray(51) & 57343) | (value << 13)); break; case 7: - rc.writeSharedArray(49, (rc.readSharedArray(49) & 65023) | (value << 9)); + rc.writeSharedArray(51, (rc.readSharedArray(51) & 65503) | (value << 5)); break; case 8: - rc.writeSharedArray(49, (rc.readSharedArray(49) & 65533) | (value << 1)); + rc.writeSharedArray(52, (rc.readSharedArray(52) & 57343) | (value << 13)); break; case 9: - rc.writeSharedArray(50, (rc.readSharedArray(50) & 65023) | (value << 9)); + rc.writeSharedArray(52, (rc.readSharedArray(52) & 65503) | (value << 5)); break; } } @@ -1992,25 +2094,25 @@ public void writeExploreClusterClaimStatus(int idx, int value) throws GameAction public int readExploreClusterIndex(int idx) throws GameActionException { switch (idx) { case 0: - return ((rc.readSharedArray(45) & 1) << 6) + ((rc.readSharedArray(46) & 64512) >>> 10); + return (rc.readSharedArray(48) & 8128) >>> 6; case 1: - return (rc.readSharedArray(46) & 508) >>> 2; + return ((rc.readSharedArray(48) & 31) << 2) + ((rc.readSharedArray(49) & 49152) >>> 14); case 2: - return ((rc.readSharedArray(46) & 1) << 6) + ((rc.readSharedArray(47) & 64512) >>> 10); + return (rc.readSharedArray(49) & 8128) >>> 6; case 3: - return (rc.readSharedArray(47) & 508) >>> 2; + return ((rc.readSharedArray(49) & 31) << 2) + ((rc.readSharedArray(50) & 49152) >>> 14); case 4: - return ((rc.readSharedArray(47) & 1) << 6) + ((rc.readSharedArray(48) & 64512) >>> 10); + return (rc.readSharedArray(50) & 8128) >>> 6; case 5: - return (rc.readSharedArray(48) & 508) >>> 2; + return ((rc.readSharedArray(50) & 31) << 2) + ((rc.readSharedArray(51) & 49152) >>> 14); case 6: - return ((rc.readSharedArray(48) & 1) << 6) + ((rc.readSharedArray(49) & 64512) >>> 10); + return (rc.readSharedArray(51) & 8128) >>> 6; case 7: - return (rc.readSharedArray(49) & 508) >>> 2; + return ((rc.readSharedArray(51) & 31) << 2) + ((rc.readSharedArray(52) & 49152) >>> 14); case 8: - return ((rc.readSharedArray(49) & 1) << 6) + ((rc.readSharedArray(50) & 64512) >>> 10); + return (rc.readSharedArray(52) & 8128) >>> 6; case 9: - return (rc.readSharedArray(50) & 508) >>> 2; + return ((rc.readSharedArray(52) & 31) << 2) + ((rc.readSharedArray(53) & 49152) >>> 14); default: return -1; } @@ -2019,39 +2121,39 @@ public int readExploreClusterIndex(int idx) throws GameActionException { public void writeExploreClusterIndex(int idx, int value) throws GameActionException { switch (idx) { case 0: - rc.writeSharedArray(45, (rc.readSharedArray(45) & 65534) | ((value & 64) >>> 6)); - rc.writeSharedArray(46, (rc.readSharedArray(46) & 1023) | ((value & 63) << 10)); + rc.writeSharedArray(48, (rc.readSharedArray(48) & 57407) | (value << 6)); break; case 1: - rc.writeSharedArray(46, (rc.readSharedArray(46) & 65027) | (value << 2)); + rc.writeSharedArray(48, (rc.readSharedArray(48) & 65504) | ((value & 124) >>> 2)); + rc.writeSharedArray(49, (rc.readSharedArray(49) & 16383) | ((value & 3) << 14)); break; case 2: - rc.writeSharedArray(46, (rc.readSharedArray(46) & 65534) | ((value & 64) >>> 6)); - rc.writeSharedArray(47, (rc.readSharedArray(47) & 1023) | ((value & 63) << 10)); + rc.writeSharedArray(49, (rc.readSharedArray(49) & 57407) | (value << 6)); break; case 3: - rc.writeSharedArray(47, (rc.readSharedArray(47) & 65027) | (value << 2)); + rc.writeSharedArray(49, (rc.readSharedArray(49) & 65504) | ((value & 124) >>> 2)); + rc.writeSharedArray(50, (rc.readSharedArray(50) & 16383) | ((value & 3) << 14)); break; case 4: - rc.writeSharedArray(47, (rc.readSharedArray(47) & 65534) | ((value & 64) >>> 6)); - rc.writeSharedArray(48, (rc.readSharedArray(48) & 1023) | ((value & 63) << 10)); + rc.writeSharedArray(50, (rc.readSharedArray(50) & 57407) | (value << 6)); break; case 5: - rc.writeSharedArray(48, (rc.readSharedArray(48) & 65027) | (value << 2)); + rc.writeSharedArray(50, (rc.readSharedArray(50) & 65504) | ((value & 124) >>> 2)); + rc.writeSharedArray(51, (rc.readSharedArray(51) & 16383) | ((value & 3) << 14)); break; case 6: - rc.writeSharedArray(48, (rc.readSharedArray(48) & 65534) | ((value & 64) >>> 6)); - rc.writeSharedArray(49, (rc.readSharedArray(49) & 1023) | ((value & 63) << 10)); + rc.writeSharedArray(51, (rc.readSharedArray(51) & 57407) | (value << 6)); break; case 7: - rc.writeSharedArray(49, (rc.readSharedArray(49) & 65027) | (value << 2)); + rc.writeSharedArray(51, (rc.readSharedArray(51) & 65504) | ((value & 124) >>> 2)); + rc.writeSharedArray(52, (rc.readSharedArray(52) & 16383) | ((value & 3) << 14)); break; case 8: - rc.writeSharedArray(49, (rc.readSharedArray(49) & 65534) | ((value & 64) >>> 6)); - rc.writeSharedArray(50, (rc.readSharedArray(50) & 1023) | ((value & 63) << 10)); + rc.writeSharedArray(52, (rc.readSharedArray(52) & 57407) | (value << 6)); break; case 9: - rc.writeSharedArray(50, (rc.readSharedArray(50) & 65027) | (value << 2)); + rc.writeSharedArray(52, (rc.readSharedArray(52) & 65504) | ((value & 124) >>> 2)); + rc.writeSharedArray(53, (rc.readSharedArray(53) & 16383) | ((value & 3) << 14)); break; } } @@ -2059,25 +2161,25 @@ public void writeExploreClusterIndex(int idx, int value) throws GameActionExcept public int readExploreClusterAll(int idx) throws GameActionException { switch (idx) { case 0: - return ((rc.readSharedArray(45) & 3) << 6) + ((rc.readSharedArray(46) & 64512) >>> 10); + return (rc.readSharedArray(48) & 16320) >>> 6; case 1: - return (rc.readSharedArray(46) & 1020) >>> 2; + return ((rc.readSharedArray(48) & 63) << 2) + ((rc.readSharedArray(49) & 49152) >>> 14); case 2: - return ((rc.readSharedArray(46) & 3) << 6) + ((rc.readSharedArray(47) & 64512) >>> 10); + return (rc.readSharedArray(49) & 16320) >>> 6; case 3: - return (rc.readSharedArray(47) & 1020) >>> 2; + return ((rc.readSharedArray(49) & 63) << 2) + ((rc.readSharedArray(50) & 49152) >>> 14); case 4: - return ((rc.readSharedArray(47) & 3) << 6) + ((rc.readSharedArray(48) & 64512) >>> 10); + return (rc.readSharedArray(50) & 16320) >>> 6; case 5: - return (rc.readSharedArray(48) & 1020) >>> 2; + return ((rc.readSharedArray(50) & 63) << 2) + ((rc.readSharedArray(51) & 49152) >>> 14); case 6: - return ((rc.readSharedArray(48) & 3) << 6) + ((rc.readSharedArray(49) & 64512) >>> 10); + return (rc.readSharedArray(51) & 16320) >>> 6; case 7: - return (rc.readSharedArray(49) & 1020) >>> 2; + return ((rc.readSharedArray(51) & 63) << 2) + ((rc.readSharedArray(52) & 49152) >>> 14); case 8: - return ((rc.readSharedArray(49) & 3) << 6) + ((rc.readSharedArray(50) & 64512) >>> 10); + return (rc.readSharedArray(52) & 16320) >>> 6; case 9: - return (rc.readSharedArray(50) & 1020) >>> 2; + return ((rc.readSharedArray(52) & 63) << 2) + ((rc.readSharedArray(53) & 49152) >>> 14); default: return -1; } @@ -2086,39 +2188,39 @@ public int readExploreClusterAll(int idx) throws GameActionException { public void writeExploreClusterAll(int idx, int value) throws GameActionException { switch (idx) { case 0: - rc.writeSharedArray(45, (rc.readSharedArray(45) & 65532) | ((value & 192) >>> 6)); - rc.writeSharedArray(46, (rc.readSharedArray(46) & 1023) | ((value & 63) << 10)); + rc.writeSharedArray(48, (rc.readSharedArray(48) & 49215) | (value << 6)); break; case 1: - rc.writeSharedArray(46, (rc.readSharedArray(46) & 64515) | (value << 2)); + rc.writeSharedArray(48, (rc.readSharedArray(48) & 65472) | ((value & 252) >>> 2)); + rc.writeSharedArray(49, (rc.readSharedArray(49) & 16383) | ((value & 3) << 14)); break; case 2: - rc.writeSharedArray(46, (rc.readSharedArray(46) & 65532) | ((value & 192) >>> 6)); - rc.writeSharedArray(47, (rc.readSharedArray(47) & 1023) | ((value & 63) << 10)); + rc.writeSharedArray(49, (rc.readSharedArray(49) & 49215) | (value << 6)); break; case 3: - rc.writeSharedArray(47, (rc.readSharedArray(47) & 64515) | (value << 2)); + rc.writeSharedArray(49, (rc.readSharedArray(49) & 65472) | ((value & 252) >>> 2)); + rc.writeSharedArray(50, (rc.readSharedArray(50) & 16383) | ((value & 3) << 14)); break; case 4: - rc.writeSharedArray(47, (rc.readSharedArray(47) & 65532) | ((value & 192) >>> 6)); - rc.writeSharedArray(48, (rc.readSharedArray(48) & 1023) | ((value & 63) << 10)); + rc.writeSharedArray(50, (rc.readSharedArray(50) & 49215) | (value << 6)); break; case 5: - rc.writeSharedArray(48, (rc.readSharedArray(48) & 64515) | (value << 2)); + rc.writeSharedArray(50, (rc.readSharedArray(50) & 65472) | ((value & 252) >>> 2)); + rc.writeSharedArray(51, (rc.readSharedArray(51) & 16383) | ((value & 3) << 14)); break; case 6: - rc.writeSharedArray(48, (rc.readSharedArray(48) & 65532) | ((value & 192) >>> 6)); - rc.writeSharedArray(49, (rc.readSharedArray(49) & 1023) | ((value & 63) << 10)); + rc.writeSharedArray(51, (rc.readSharedArray(51) & 49215) | (value << 6)); break; case 7: - rc.writeSharedArray(49, (rc.readSharedArray(49) & 64515) | (value << 2)); + rc.writeSharedArray(51, (rc.readSharedArray(51) & 65472) | ((value & 252) >>> 2)); + rc.writeSharedArray(52, (rc.readSharedArray(52) & 16383) | ((value & 3) << 14)); break; case 8: - rc.writeSharedArray(49, (rc.readSharedArray(49) & 65532) | ((value & 192) >>> 6)); - rc.writeSharedArray(50, (rc.readSharedArray(50) & 1023) | ((value & 63) << 10)); + rc.writeSharedArray(52, (rc.readSharedArray(52) & 49215) | (value << 6)); break; case 9: - rc.writeSharedArray(50, (rc.readSharedArray(50) & 64515) | (value << 2)); + rc.writeSharedArray(52, (rc.readSharedArray(52) & 65472) | ((value & 252) >>> 2)); + rc.writeSharedArray(53, (rc.readSharedArray(53) & 16383) | ((value & 3) << 14)); break; } } @@ -2126,25 +2228,25 @@ public void writeExploreClusterAll(int idx, int value) throws GameActionExceptio public int readMineClusterClaimStatus(int idx) throws GameActionException { switch (idx) { case 0: - return ((rc.readSharedArray(50) & 3) << 1) + ((rc.readSharedArray(51) & 32768) >>> 15); + return (rc.readSharedArray(53) & 14336) >>> 11; case 1: - return (rc.readSharedArray(51) & 224) >>> 5; + return (rc.readSharedArray(53) & 14) >>> 1; case 2: - return (rc.readSharedArray(52) & 14336) >>> 11; + return (rc.readSharedArray(54) & 896) >>> 7; case 3: - return (rc.readSharedArray(52) & 14) >>> 1; + return (rc.readSharedArray(55) & 57344) >>> 13; case 4: - return (rc.readSharedArray(53) & 896) >>> 7; + return (rc.readSharedArray(55) & 56) >>> 3; case 5: - return (rc.readSharedArray(54) & 57344) >>> 13; + return (rc.readSharedArray(56) & 3584) >>> 9; case 6: - return (rc.readSharedArray(54) & 56) >>> 3; + return ((rc.readSharedArray(56) & 3) << 1) + ((rc.readSharedArray(57) & 32768) >>> 15); case 7: - return (rc.readSharedArray(55) & 3584) >>> 9; + return (rc.readSharedArray(57) & 224) >>> 5; case 8: - return ((rc.readSharedArray(55) & 3) << 1) + ((rc.readSharedArray(56) & 32768) >>> 15); + return (rc.readSharedArray(58) & 14336) >>> 11; case 9: - return (rc.readSharedArray(56) & 224) >>> 5; + return (rc.readSharedArray(58) & 14) >>> 1; default: return -1; } @@ -2153,36 +2255,35 @@ public int readMineClusterClaimStatus(int idx) throws GameActionException { public void writeMineClusterClaimStatus(int idx, int value) throws GameActionException { switch (idx) { case 0: - rc.writeSharedArray(50, (rc.readSharedArray(50) & 65532) | ((value & 6) >>> 1)); - rc.writeSharedArray(51, (rc.readSharedArray(51) & 32767) | ((value & 1) << 15)); + rc.writeSharedArray(53, (rc.readSharedArray(53) & 51199) | (value << 11)); break; case 1: - rc.writeSharedArray(51, (rc.readSharedArray(51) & 65311) | (value << 5)); + rc.writeSharedArray(53, (rc.readSharedArray(53) & 65521) | (value << 1)); break; case 2: - rc.writeSharedArray(52, (rc.readSharedArray(52) & 51199) | (value << 11)); + rc.writeSharedArray(54, (rc.readSharedArray(54) & 64639) | (value << 7)); break; case 3: - rc.writeSharedArray(52, (rc.readSharedArray(52) & 65521) | (value << 1)); + rc.writeSharedArray(55, (rc.readSharedArray(55) & 8191) | (value << 13)); break; case 4: - rc.writeSharedArray(53, (rc.readSharedArray(53) & 64639) | (value << 7)); + rc.writeSharedArray(55, (rc.readSharedArray(55) & 65479) | (value << 3)); break; case 5: - rc.writeSharedArray(54, (rc.readSharedArray(54) & 8191) | (value << 13)); + rc.writeSharedArray(56, (rc.readSharedArray(56) & 61951) | (value << 9)); break; case 6: - rc.writeSharedArray(54, (rc.readSharedArray(54) & 65479) | (value << 3)); + rc.writeSharedArray(56, (rc.readSharedArray(56) & 65532) | ((value & 6) >>> 1)); + rc.writeSharedArray(57, (rc.readSharedArray(57) & 32767) | ((value & 1) << 15)); break; case 7: - rc.writeSharedArray(55, (rc.readSharedArray(55) & 61951) | (value << 9)); + rc.writeSharedArray(57, (rc.readSharedArray(57) & 65311) | (value << 5)); break; case 8: - rc.writeSharedArray(55, (rc.readSharedArray(55) & 65532) | ((value & 6) >>> 1)); - rc.writeSharedArray(56, (rc.readSharedArray(56) & 32767) | ((value & 1) << 15)); + rc.writeSharedArray(58, (rc.readSharedArray(58) & 51199) | (value << 11)); break; case 9: - rc.writeSharedArray(56, (rc.readSharedArray(56) & 65311) | (value << 5)); + rc.writeSharedArray(58, (rc.readSharedArray(58) & 65521) | (value << 1)); break; } } @@ -2190,25 +2291,25 @@ public void writeMineClusterClaimStatus(int idx, int value) throws GameActionExc public int readMineClusterIndex(int idx) throws GameActionException { switch (idx) { case 0: - return (rc.readSharedArray(51) & 32512) >>> 8; + return (rc.readSharedArray(53) & 2032) >>> 4; case 1: - return ((rc.readSharedArray(51) & 31) << 2) + ((rc.readSharedArray(52) & 49152) >>> 14); + return ((rc.readSharedArray(53) & 1) << 6) + ((rc.readSharedArray(54) & 64512) >>> 10); case 2: - return (rc.readSharedArray(52) & 2032) >>> 4; + return (rc.readSharedArray(54) & 127); case 3: - return ((rc.readSharedArray(52) & 1) << 6) + ((rc.readSharedArray(53) & 64512) >>> 10); + return (rc.readSharedArray(55) & 8128) >>> 6; case 4: - return (rc.readSharedArray(53) & 127); + return ((rc.readSharedArray(55) & 7) << 4) + ((rc.readSharedArray(56) & 61440) >>> 12); case 5: - return (rc.readSharedArray(54) & 8128) >>> 6; + return (rc.readSharedArray(56) & 508) >>> 2; case 6: - return ((rc.readSharedArray(54) & 7) << 4) + ((rc.readSharedArray(55) & 61440) >>> 12); + return (rc.readSharedArray(57) & 32512) >>> 8; case 7: - return (rc.readSharedArray(55) & 508) >>> 2; + return ((rc.readSharedArray(57) & 31) << 2) + ((rc.readSharedArray(58) & 49152) >>> 14); case 8: - return (rc.readSharedArray(56) & 32512) >>> 8; + return (rc.readSharedArray(58) & 2032) >>> 4; case 9: - return ((rc.readSharedArray(56) & 31) << 2) + ((rc.readSharedArray(57) & 49152) >>> 14); + return ((rc.readSharedArray(58) & 1) << 6) + ((rc.readSharedArray(59) & 64512) >>> 10); default: return -1; } @@ -2217,38 +2318,38 @@ public int readMineClusterIndex(int idx) throws GameActionException { public void writeMineClusterIndex(int idx, int value) throws GameActionException { switch (idx) { case 0: - rc.writeSharedArray(51, (rc.readSharedArray(51) & 33023) | (value << 8)); + rc.writeSharedArray(53, (rc.readSharedArray(53) & 63503) | (value << 4)); break; case 1: - rc.writeSharedArray(51, (rc.readSharedArray(51) & 65504) | ((value & 124) >>> 2)); - rc.writeSharedArray(52, (rc.readSharedArray(52) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(53, (rc.readSharedArray(53) & 65534) | ((value & 64) >>> 6)); + rc.writeSharedArray(54, (rc.readSharedArray(54) & 1023) | ((value & 63) << 10)); break; case 2: - rc.writeSharedArray(52, (rc.readSharedArray(52) & 63503) | (value << 4)); + rc.writeSharedArray(54, (rc.readSharedArray(54) & 65408) | (value)); break; case 3: - rc.writeSharedArray(52, (rc.readSharedArray(52) & 65534) | ((value & 64) >>> 6)); - rc.writeSharedArray(53, (rc.readSharedArray(53) & 1023) | ((value & 63) << 10)); + rc.writeSharedArray(55, (rc.readSharedArray(55) & 57407) | (value << 6)); break; case 4: - rc.writeSharedArray(53, (rc.readSharedArray(53) & 65408) | (value)); + rc.writeSharedArray(55, (rc.readSharedArray(55) & 65528) | ((value & 112) >>> 4)); + rc.writeSharedArray(56, (rc.readSharedArray(56) & 4095) | ((value & 15) << 12)); break; case 5: - rc.writeSharedArray(54, (rc.readSharedArray(54) & 57407) | (value << 6)); + rc.writeSharedArray(56, (rc.readSharedArray(56) & 65027) | (value << 2)); break; case 6: - rc.writeSharedArray(54, (rc.readSharedArray(54) & 65528) | ((value & 112) >>> 4)); - rc.writeSharedArray(55, (rc.readSharedArray(55) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(57, (rc.readSharedArray(57) & 33023) | (value << 8)); break; case 7: - rc.writeSharedArray(55, (rc.readSharedArray(55) & 65027) | (value << 2)); + rc.writeSharedArray(57, (rc.readSharedArray(57) & 65504) | ((value & 124) >>> 2)); + rc.writeSharedArray(58, (rc.readSharedArray(58) & 16383) | ((value & 3) << 14)); break; case 8: - rc.writeSharedArray(56, (rc.readSharedArray(56) & 33023) | (value << 8)); + rc.writeSharedArray(58, (rc.readSharedArray(58) & 63503) | (value << 4)); break; case 9: - rc.writeSharedArray(56, (rc.readSharedArray(56) & 65504) | ((value & 124) >>> 2)); - rc.writeSharedArray(57, (rc.readSharedArray(57) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(58, (rc.readSharedArray(58) & 65534) | ((value & 64) >>> 6)); + rc.writeSharedArray(59, (rc.readSharedArray(59) & 1023) | ((value & 63) << 10)); break; } } @@ -2256,25 +2357,25 @@ public void writeMineClusterIndex(int idx, int value) throws GameActionException public int readMineClusterAll(int idx) throws GameActionException { switch (idx) { case 0: - return ((rc.readSharedArray(50) & 3) << 8) + ((rc.readSharedArray(51) & 65280) >>> 8); + return (rc.readSharedArray(53) & 16368) >>> 4; case 1: - return ((rc.readSharedArray(51) & 255) << 2) + ((rc.readSharedArray(52) & 49152) >>> 14); + return ((rc.readSharedArray(53) & 15) << 6) + ((rc.readSharedArray(54) & 64512) >>> 10); case 2: - return (rc.readSharedArray(52) & 16368) >>> 4; + return (rc.readSharedArray(54) & 1023); case 3: - return ((rc.readSharedArray(52) & 15) << 6) + ((rc.readSharedArray(53) & 64512) >>> 10); + return (rc.readSharedArray(55) & 65472) >>> 6; case 4: - return (rc.readSharedArray(53) & 1023); + return ((rc.readSharedArray(55) & 63) << 4) + ((rc.readSharedArray(56) & 61440) >>> 12); case 5: - return (rc.readSharedArray(54) & 65472) >>> 6; + return (rc.readSharedArray(56) & 4092) >>> 2; case 6: - return ((rc.readSharedArray(54) & 63) << 4) + ((rc.readSharedArray(55) & 61440) >>> 12); + return ((rc.readSharedArray(56) & 3) << 8) + ((rc.readSharedArray(57) & 65280) >>> 8); case 7: - return (rc.readSharedArray(55) & 4092) >>> 2; + return ((rc.readSharedArray(57) & 255) << 2) + ((rc.readSharedArray(58) & 49152) >>> 14); case 8: - return ((rc.readSharedArray(55) & 3) << 8) + ((rc.readSharedArray(56) & 65280) >>> 8); + return (rc.readSharedArray(58) & 16368) >>> 4; case 9: - return ((rc.readSharedArray(56) & 255) << 2) + ((rc.readSharedArray(57) & 49152) >>> 14); + return ((rc.readSharedArray(58) & 15) << 6) + ((rc.readSharedArray(59) & 64512) >>> 10); default: return -1; } @@ -2283,131 +2384,82 @@ public int readMineClusterAll(int idx) throws GameActionException { public void writeMineClusterAll(int idx, int value) throws GameActionException { switch (idx) { case 0: - rc.writeSharedArray(50, (rc.readSharedArray(50) & 65532) | ((value & 768) >>> 8)); - rc.writeSharedArray(51, (rc.readSharedArray(51) & 255) | ((value & 255) << 8)); + rc.writeSharedArray(53, (rc.readSharedArray(53) & 49167) | (value << 4)); break; case 1: - rc.writeSharedArray(51, (rc.readSharedArray(51) & 65280) | ((value & 1020) >>> 2)); - rc.writeSharedArray(52, (rc.readSharedArray(52) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(53, (rc.readSharedArray(53) & 65520) | ((value & 960) >>> 6)); + rc.writeSharedArray(54, (rc.readSharedArray(54) & 1023) | ((value & 63) << 10)); break; case 2: - rc.writeSharedArray(52, (rc.readSharedArray(52) & 49167) | (value << 4)); + rc.writeSharedArray(54, (rc.readSharedArray(54) & 64512) | (value)); break; case 3: - rc.writeSharedArray(52, (rc.readSharedArray(52) & 65520) | ((value & 960) >>> 6)); - rc.writeSharedArray(53, (rc.readSharedArray(53) & 1023) | ((value & 63) << 10)); + rc.writeSharedArray(55, (rc.readSharedArray(55) & 63) | (value << 6)); break; case 4: - rc.writeSharedArray(53, (rc.readSharedArray(53) & 64512) | (value)); + rc.writeSharedArray(55, (rc.readSharedArray(55) & 65472) | ((value & 1008) >>> 4)); + rc.writeSharedArray(56, (rc.readSharedArray(56) & 4095) | ((value & 15) << 12)); break; case 5: - rc.writeSharedArray(54, (rc.readSharedArray(54) & 63) | (value << 6)); + rc.writeSharedArray(56, (rc.readSharedArray(56) & 61443) | (value << 2)); break; case 6: - rc.writeSharedArray(54, (rc.readSharedArray(54) & 65472) | ((value & 1008) >>> 4)); - rc.writeSharedArray(55, (rc.readSharedArray(55) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(56, (rc.readSharedArray(56) & 65532) | ((value & 768) >>> 8)); + rc.writeSharedArray(57, (rc.readSharedArray(57) & 255) | ((value & 255) << 8)); break; case 7: - rc.writeSharedArray(55, (rc.readSharedArray(55) & 61443) | (value << 2)); + rc.writeSharedArray(57, (rc.readSharedArray(57) & 65280) | ((value & 1020) >>> 2)); + rc.writeSharedArray(58, (rc.readSharedArray(58) & 16383) | ((value & 3) << 14)); break; case 8: - rc.writeSharedArray(55, (rc.readSharedArray(55) & 65532) | ((value & 768) >>> 8)); - rc.writeSharedArray(56, (rc.readSharedArray(56) & 255) | ((value & 255) << 8)); + rc.writeSharedArray(58, (rc.readSharedArray(58) & 49167) | (value << 4)); break; case 9: - rc.writeSharedArray(56, (rc.readSharedArray(56) & 65280) | ((value & 1020) >>> 2)); - rc.writeSharedArray(57, (rc.readSharedArray(57) & 16383) | ((value & 3) << 14)); + rc.writeSharedArray(58, (rc.readSharedArray(58) & 65520) | ((value & 960) >>> 6)); + rc.writeSharedArray(59, (rc.readSharedArray(59) & 1023) | ((value & 63) << 10)); break; } } - public int readFillerDoNotUse() throws GameActionException { - return (rc.readSharedArray(57) & 16128) >>> 8; - } - - public void writeFillerDoNotUse(int value) throws GameActionException { - rc.writeSharedArray(57, (rc.readSharedArray(57) & 49407) | (value << 8)); - } - - public int readFillerDoNotUseAll() throws GameActionException { - return (rc.readSharedArray(57) & 16128) >>> 8; - } - - public void writeFillerDoNotUseAll(int value) throws GameActionException { - rc.writeSharedArray(57, (rc.readSharedArray(57) & 49407) | (value << 8)); - } - - public int readMinerCount() throws GameActionException { - return (rc.readSharedArray(57) & 255); - } - - public void writeMinerCount(int value) throws GameActionException { - rc.writeSharedArray(57, (rc.readSharedArray(57) & 65280) | (value)); - } - - public int readMinerCountAll() throws GameActionException { - return (rc.readSharedArray(57) & 255); - } - - public void writeMinerCountAll(int value) throws GameActionException { - rc.writeSharedArray(57, (rc.readSharedArray(57) & 65280) | (value)); - } - - public int readSoldierCount() throws GameActionException { - return (rc.readSharedArray(58) & 65280) >>> 8; - } - - public void writeSoldierCount(int value) throws GameActionException { - rc.writeSharedArray(58, (rc.readSharedArray(58) & 255) | (value << 8)); - } - - public int readSoldierCountAll() throws GameActionException { - return (rc.readSharedArray(58) & 65280) >>> 8; - } - - public void writeSoldierCountAll(int value) throws GameActionException { - rc.writeSharedArray(58, (rc.readSharedArray(58) & 255) | (value << 8)); - } - public int readLastArchonNum() throws GameActionException { - return (rc.readSharedArray(58) & 192) >>> 6; + return (rc.readSharedArray(59) & 768) >>> 8; } public void writeLastArchonNum(int value) throws GameActionException { - rc.writeSharedArray(58, (rc.readSharedArray(58) & 65343) | (value << 6)); + rc.writeSharedArray(59, (rc.readSharedArray(59) & 64767) | (value << 8)); } public int readLastArchonAll() throws GameActionException { - return (rc.readSharedArray(58) & 192) >>> 6; + return (rc.readSharedArray(59) & 768) >>> 8; } public void writeLastArchonAll(int value) throws GameActionException { - rc.writeSharedArray(58, (rc.readSharedArray(58) & 65343) | (value << 6)); + rc.writeSharedArray(59, (rc.readSharedArray(59) & 64767) | (value << 8)); } public int readReservedResourcesLead() throws GameActionException { - return ((rc.readSharedArray(58) & 63) << 4) + ((rc.readSharedArray(59) & 61440) >>> 12); + return ((rc.readSharedArray(59) & 255) << 2) + ((rc.readSharedArray(60) & 49152) >>> 14); } public void writeReservedResourcesLead(int value) throws GameActionException { - rc.writeSharedArray(58, (rc.readSharedArray(58) & 65472) | ((value & 1008) >>> 4)); - rc.writeSharedArray(59, (rc.readSharedArray(59) & 4095) | ((value & 15) << 12)); + rc.writeSharedArray(59, (rc.readSharedArray(59) & 65280) | ((value & 1020) >>> 2)); + rc.writeSharedArray(60, (rc.readSharedArray(60) & 16383) | ((value & 3) << 14)); } public int readReservedResourcesGold() throws GameActionException { - return (rc.readSharedArray(59) & 4032) >>> 6; + return (rc.readSharedArray(60) & 16128) >>> 8; } public void writeReservedResourcesGold(int value) throws GameActionException { - rc.writeSharedArray(59, (rc.readSharedArray(59) & 61503) | (value << 6)); + rc.writeSharedArray(60, (rc.readSharedArray(60) & 49407) | (value << 8)); } public int readReservedResourcesAll() throws GameActionException { - return ((rc.readSharedArray(58) & 63) << 10) + ((rc.readSharedArray(59) & 65472) >>> 6); + return ((rc.readSharedArray(59) & 255) << 8) + ((rc.readSharedArray(60) & 65280) >>> 8); } public void writeReservedResourcesAll(int value) throws GameActionException { - rc.writeSharedArray(58, (rc.readSharedArray(58) & 65472) | ((value & 64512) >>> 10)); - rc.writeSharedArray(59, (rc.readSharedArray(59) & 63) | ((value & 1023) << 6)); + rc.writeSharedArray(59, (rc.readSharedArray(59) & 65280) | ((value & 65280) >>> 8)); + rc.writeSharedArray(60, (rc.readSharedArray(60) & 255) | ((value & 255) << 8)); } } \ No newline at end of file diff --git a/src/ares/Robot.java b/src/ares/Robot.java index a219d9a..5d80ff3 100644 --- a/src/ares/Robot.java +++ b/src/ares/Robot.java @@ -179,8 +179,7 @@ public void setClusterStates() throws GameActionException { if (turnCount % 2 == 1) { setClusterControlStates(); - } - else { + } else { setClusterResourceStates(); } @@ -188,10 +187,22 @@ public void setClusterStates() throws GameActionException { // rc.setIndicatorString("Cluster States: "+(bytecodeUsed2 - bytecodeUsed)); } + /** + * Cluster Helper functions + */ + public int getClusterHeight(int clusterIndex) { + return clusterHeights[clusterIndex / clusterWidthsLength]; + } + + public int getClusterWidth(int clusterIndex) { + return clusterWidths[clusterIndex % clusterWidthsLength]; + } + + /** * Updates cluster information. Scans nearby tiles and enemy locations and aggregates into * clusterControls as a buffer. Uses markedClustersBuffer to track which buffers have been - * modified each turn to write them. In clusterControls, we set the 3rd and 4th bits to be + * modified each turn to write them. In clusterControls, we set the 4th - 6th bits to be * the new value and only read/write if it is different from the previous state. * * @throws GameActionException @@ -217,31 +228,130 @@ public void setClusterControlStates() throws GameActionException { } } + // Create list of adjacent clusters + int myClusterIdx = whichCluster(myLocation); + MapLocation myClusterCenter = getClusterCenter(myClusterIdx); + int myClusterWidth = getClusterWidth(myClusterIdx); + int myClusterHeight = getClusterHeight(myClusterIdx); + int[] adjacentClusterIndices = new int[9]; + int[] adjacentEnemySoldiers = new int[9]; + int[] adjacentEnemyMiners = new int[9]; + for (int i = -1; i <= 1; i++) { + for (int j = -1; j <= 1; j++) { + MapLocation newLoc = new MapLocation(myClusterCenter.x + i*myClusterWidth, myClusterCenter.y + j*myClusterHeight); + if (newLoc.x >= 0 && newLoc.x < rc.getMapWidth() && newLoc.y >= 0 && newLoc.y < rc.getMapHeight()) { + adjacentClusterIndices[(i+1)*3 + (j+1)] = whichCluster(newLoc); + } else { + adjacentClusterIndices[(i+1)*3 + (j+1)] = -1; + } + } + } + // Mark nearby clusters with enemies as hostile - // Process at max 10 enemies - int numEnemies = Math.min(nearbyEnemies.length, 10); - for (int i = 0; i < numEnemies; i++) { + // Process nearest 50 enemies. + int numEnemies = Math.min(nearbyEnemies.length, 50); + for (int i = 0; i < nearbyEnemies.length; i++) { RobotInfo enemy = nearbyEnemies[i]; // int clusterIdx = whichCluster(enemy.location); Note: Inlined to save bytecode - int clusterIdx = whichXLoc[enemy.location.x] + whichYLoc[enemy.location.y]; - // Write new status to buffer if we haven't marked as enemy controlled yet - if (clusterControls[clusterIdx] < 16) { - // Only add to modified list if we haven't marked this cluster yet - if (clusterControls[clusterIdx] < 8) { - markedClustersBuffer[markedClustersCount] = clusterIdx; - markedClustersCount++; - } - clusterControls[clusterIdx] = 16 + (clusterControls[clusterIdx] & 7); + int enemyClusterIdx = whichXLoc[enemy.location.x] + whichYLoc[enemy.location.y]; + System.out.println("Identified enemy in cluster: " + enemyClusterIdx); + if (enemyClusterIdx == adjacentClusterIndices[0]) { + if (enemy.type == RobotType.MINER) { adjacentEnemyMiners[0] += 1; } + else if (enemy.type == RobotType.SOLDIER) { adjacentEnemySoldiers[0] += 1; } + continue; + } + if (enemyClusterIdx == adjacentClusterIndices[1]) { + if (enemy.type == RobotType.MINER) { adjacentEnemyMiners[1] += 1; } + else if (enemy.type == RobotType.SOLDIER) { adjacentEnemySoldiers[1] += 1; } + continue; + } + if (enemyClusterIdx == adjacentClusterIndices[2]) { + if (enemy.type == RobotType.MINER) { adjacentEnemyMiners[2] += 1; } + else if (enemy.type == RobotType.SOLDIER) { adjacentEnemySoldiers[2] += 1; } + continue; + } + if (enemyClusterIdx == adjacentClusterIndices[3]) { + if (enemy.type == RobotType.MINER) { adjacentEnemyMiners[3] += 1; } + else if (enemy.type == RobotType.SOLDIER) { adjacentEnemySoldiers[3] += 1; } + continue; + } + if (enemyClusterIdx == adjacentClusterIndices[4]) { + if (enemy.type == RobotType.MINER) { adjacentEnemyMiners[4] += 1; } + else if (enemy.type == RobotType.SOLDIER) { adjacentEnemySoldiers[4] += 1; } + continue; + } + if (enemyClusterIdx == adjacentClusterIndices[5]) { + if (enemy.type == RobotType.MINER) { adjacentEnemyMiners[5] += 1; } + else if (enemy.type == RobotType.SOLDIER) { adjacentEnemySoldiers[5] += 1; } + continue; + } + if (enemyClusterIdx == adjacentClusterIndices[6]) { + if (enemy.type == RobotType.MINER) { adjacentEnemyMiners[6] += 1; } + else if (enemy.type == RobotType.SOLDIER) { adjacentEnemySoldiers[6] += 1; } + continue; + } + if (enemyClusterIdx == adjacentClusterIndices[7]) { + if (enemy.type == RobotType.MINER) { adjacentEnemyMiners[7] += 1; } + else if (enemy.type == RobotType.SOLDIER) { adjacentEnemySoldiers[7] += 1; } + continue; + } + if (enemyClusterIdx == adjacentClusterIndices[8]) { + if (enemy.type == RobotType.MINER) { adjacentEnemyMiners[8] += 1; } + else if (enemy.type == RobotType.SOLDIER) { adjacentEnemySoldiers[8] += 1; } + continue; + } + } + // Loop over adjacent clusters, consider the number of enemies + // and assign priorities. + for (int j=0; j<9; j++) { + // Adjacent cluster doesn't exist, it is off the map. + int clusterIdx = adjacentClusterIndices[j]; + if (clusterIdx == -1) { + continue; + } + if (adjacentEnemySoldiers[j] == 0 && adjacentEnemyMiners[j] == 0) { + continue; + } + if (clusterControls[clusterIdx] < 8) { + markedClustersBuffer[markedClustersCount] = clusterIdx; + markedClustersCount++; + } + if (adjacentEnemySoldiers[j] == 0) { + System.out.println("Miners in cluster: " + clusterIdx); + clusterControls[clusterIdx] = (CommsHandler.ControlStatus.MINOR_ENEMY << 3) + (clusterControls[clusterIdx] & 7); + } + else if (adjacentEnemySoldiers[j] == 1) { + System.out.println("One soldier in cluster: " + clusterIdx); + clusterControls[clusterIdx] = (CommsHandler.ControlStatus.MEDIUM_ENEMY << 3) + (clusterControls[clusterIdx] & 7); + } else { + System.out.println("Multiple soldiers in cluster: " + clusterIdx); + clusterControls[clusterIdx] = (CommsHandler.ControlStatus.MAJOR_ENEMY << 3) + (clusterControls[clusterIdx] & 7); } } + /** + int clusterIndex = adjacentClusterIndices[j] + // Write new status to buffer if we haven't marked as enemy controlled yet + if (clusterControls[clusterIdx] < 16) { + // Only add to modified list if we haven't marked this cluster yet + if (clusterControls[clusterIdx] < 8) { + markedClustersBuffer[markedClustersCount] = clusterIdx; + markedClustersCount++; + } + clusterControls[clusterIdx] = 16 + (clusterControls[clusterIdx] & 7); // 010xxx + }*/ + // Flush control buffer and write to comms for (int i = 0; i < markedClustersCount; i++) { int clusterIdx = markedClustersBuffer[i]; int oldClusterStatus = clusterControls[clusterIdx] & 7; int newClusterStatus = (clusterControls[clusterIdx] - oldClusterStatus) >>> 3; - if (oldClusterStatus != newClusterStatus - && newClusterStatus != commsHandler.readClusterControlStatus(clusterIdx)) { + if (clusterIdx == 37) { + System.out.println("Cluster 37: " + oldClusterStatus + " " + newClusterStatus); + } + if (//oldClusterStatus != newClusterStatus && + newClusterStatus > commsHandler.readClusterControlStatus(clusterIdx)) { + System.out.println("Writing." + clusterIdx); commsHandler.writeClusterControlStatus(clusterIdx, newClusterStatus); } clusterControls[clusterIdx] = newClusterStatus; @@ -439,6 +549,45 @@ public void attack() throws GameActionException { } } + /** + * Returns highest best combat cluster (as weighted by priority and distance) + * or UNDEFINED_CLUSTER_INDEX otherwise + * @return + * @throws GameActionException + */ + public int getBestCombatCluster() throws GameActionException { + int bestCluster = commsHandler.UNDEFINED_CLUSTER_INDEX; + double bestClusterWeight = Double.MAX_VALUE; + for (int i = 0; i < commsHandler.COMBAT_CLUSTER_SLOTS; i++) { + int currentCluster = commsHandler.readCombatClusterIndex(i); + int clusterPriority = commsHandler.readCombatClusterPriority(i); + // Skip if no more combat clusters written + if (currentCluster == commsHandler.UNDEFINED_CLUSTER_INDEX) { + continue; + } + int distance = myLocation.distanceSquaredTo( + new MapLocation( + clusterCentersX[currentCluster % clusterWidthsLength], + clusterCentersY[currentCluster / clusterWidthsLength] + ) + ); + // Closer clusters and those with more enemies have lower weights (lowest weight optimal) + // A cluster with a minor enemy has to be 3x closer to have equal weight to a cluster with major enemy. + double clusterWeight = (double)(distance) * (CommsHandler.ControlStatus.CLUSTER_ENEMY_LEVELS - clusterPriority); + + System.out.println("Considering cluster: " + getClusterCenter(currentCluster)); + System.out.println("Distance " + distance); + System.out.println("Enemy Level: " + clusterPriority); + System.out.println("Weight: " + clusterWeight); + + if (clusterWeight < bestClusterWeight) { + bestClusterWeight = clusterWeight; + bestCluster = currentCluster; + } + } + return bestCluster; + } + /** * Returns nearest combat cluster or UNDEFINED_CLUSTER_INDEX otherwise * @return @@ -578,6 +727,14 @@ public void precomputeClusterCenters() { } } + // Helper method to convert from cluster index to MapLocation + public MapLocation getClusterCenter(int clusterIndex) { + return new MapLocation( + clusterCentersX[clusterIndex % clusterWidthsLength], + clusterCentersY[clusterIndex / clusterWidthsLength] + ); + } + /** * Returns cluster given a location. * diff --git a/src/ares/Soldier.java b/src/ares/Soldier.java index 02ecc92..a52f68a 100644 --- a/src/ares/Soldier.java +++ b/src/ares/Soldier.java @@ -71,8 +71,14 @@ else if (nearbyEnemies.length > 0) { else { MapLocation newDestination = pathing.destination; // Navigate to nearest found enemy - int nearestCluster = getNearestCombatCluster(); + int nearestCluster = getBestCombatCluster(); if (nearestCluster != commsHandler.UNDEFINED_CLUSTER_INDEX) { + System.out.println("My best cluster is: " + + nearestCluster + + " at location " + + clusterCentersX[nearestCluster % clusterWidthsLength] + + " " + + clusterCentersY[nearestCluster / clusterWidthsLength]); resetControlStatus(pathing.destination); newDestination = new MapLocation(clusterCentersX[nearestCluster % clusterWidthsLength], clusterCentersY[nearestCluster / clusterWidthsLength]);