Frame 1
function MouseMoveProc() {
var a;
var b;
var i;
var f;
var x;
var xx;
var xxx;
var y;
var yy;
var yyy;
var s;
x = _xmouse;
y = _ymouse;
MCHandFore._x = x;
MCHandFore._y = y;
PutShadow();
if (((state == playerColor) && (toDoLength == 0)) && (state == nextState)) {
if ((((FLOORX <= x) && (x < (FLOORX + (3 * FLOORSPACING)))) && (FLOORY <= y)) && (y < (FLOORY + (3 * FLOORSPACING)))) {
x = x - FLOORX;
y = y - FLOORY;
xx = int(((x + y) / FLOORSPACING) + 0.5);
yy = int(((y - x) / FLOORSPACING) + 3.5) - 3;
if (((xx + yy) % 2) == 0) {
xxx = int((xx - yy) / 2);
yyy = int((xx + yy) / 2);
markZ = xxx + (yyy * 4);
a = 1;
b = map[HEAVENTOP + markZ];
} else {
xxx = int(((xx - yy) - 1) / 2);
yyy = int(((xx + yy) - 1) / 2);
markZ = (16 + xxx) + (yyy * 3);
a = 2;
b = map[HEAVENTOP + markZ];
}
} else if (((((FLOORX - FLOORRIM) <= x) && (x < ((FLOORX + (3 * FLOORSPACING)) + FLOORRIM))) && ((FLOORY - FLOORRIM) <= y)) && (y < ((FLOORY + (3 * FLOORSPACING)) + FLOORRIM))) {
if (x < FLOORX) {
xxx = 0;
} else if (x < (FLOORX + (3 * FLOORSPACING))) {
xxx = int(((x - FLOORX) / FLOORSPACING) + 0.5);
} else {
xxx = 3;
}
if (y < FLOORY) {
yyy = 0;
} else if (y < (FLOORY + (3 * FLOORSPACING))) {
yyy = int(((y - FLOORY) / FLOORSPACING) + 0.5);
} else {
yyy = 3;
}
markZ = xxx + (yyy * 4);
a = 1;
b = map[HEAVENTOP + markZ];
} else {
a = 0;
}
if (0 < a) {
if (state == playerColor) {
if (isGrabbing) {
if ((0 < transfereeNumber) && (0 <= forcusedTransferee)) {
with (MCStones[(("MCStone" + (3 - state)) + "_") + forcusedTransferee]) {
_x = _root.MCHandFore._x;
_y = _root.MCHandFore._y;
}
} else if (0 <= forcusedStone) {
with (MCStones[(("MCStone" + state) + "_") + forcusedStone]) {
_x = _root.MCHandFore._x;
_y = _root.MCHandFore._y;
}
}
}
}
if (0 < transfereeNumber) {
f = false;
i = 0;
while (i < transfereeNumber) {
if (stoneZ[((2 - playerColor) * 4) + transferee[i]] == markZ) {
f = true;
break;
}
i++;
}
if (0 <= forcusedTransferee) {
if (f) {
if (forcusedTransferee == transferee[i]) {
f = false;
}
} else if (b == 0) {
f = true;
i = 0;
while (i < transferMarkNumber) {
if (markZ == transferMarkZ[i]) {
f = false;
}
i++;
}
}
}
} else if (forcusedStone < 0) {
if (b == playerColor) {
f = true;
} else {
f = false;
}
} else {
f = true;
b = stoneZ[((playerColor * 4) - 4) + forcusedStone];
if ((map[COLOR1NUMBER] == 4) && (map[COLOR2NUMBER] == 4)) {
if (((((a != 1) || (xxx == 0)) || (xxx == 3)) || (yyy == 0)) || (yyy == 3)) {
f = false;
}
} else if (a == 1) {
if (((map[(HEAVENTOP + xxx) + (yyy * 4)] != playerColor) || (0 < map[(COLOR1NUMBER - 1) + state])) || (b == (xxx + (yyy * 4)))) {
if (0 < map[(HEAVENTOP + xxx) + (yyy * 4)]) {
f = false;
} else if ((0 <= b) && (b < 16)) {
f = false;
} else if (16 <= b) {
f = false;
i = 0;
while (i < 4) {
if (NEXTTOHELL[((b - 16) * 4) + i] == (xxx + (yyy * 4))) {
f = true;
break;
}
i++;
}
}
}
} else if (((map[(HELLTOP + xxx) + (yyy * 3)] != playerColor) || (0 < map[(COLOR1NUMBER - 1) + state])) || (b == ((16 + xxx) + (yyy * 3)))) {
if (0 < map[(HELLTOP + xxx) + (yyy * 3)]) {
f = false;
} else if (16 <= b) {
f = false;
} else if (0 <= b) {
f = false;
i = 0;
while (i < NEXTTOHEAVENLENGTH[b]) {
if (NEXTTOHEAVEN[(b * 4) + i] == (xxx + (yyy * 3))) {
f = true;
break;
}
i++;
}
}
}
}
if (((0 <= forcusedStone) || ((0 < transfereeNumber) && (0 <= forcusedTransferee))) && (!isGrabbing)) {
f = false;
}
if (a == 1) {
markZ = xxx + (yyy * 4);
} else {
markZ = (16 + xxx) + (yyy * 3);
}
SetMarkPosition(markZ);
if (f) {
MCGameBG.MCMark.gotoAndStop("OK");
} else {
MCGameBG.MCMark.gotoAndStop("NG");
}
MCGameBG.MCMark._visible = true;
} else {
MCGameBG.MCMark._visible = false;
}
}
if (((bulletin < 0) && (state == playerColor)) && (0 < a)) {
if ((0 <= forcusedStone) || ((0 < transfereeNumber) && (0 <= forcusedTransferee))) {
if (isGrabbing) {
MCHandFore.gotoAndStop("pick");
} else {
MCHandFore.gotoAndStop("paper");
}
} else if (MCGameBG.MCMark._currentframe == 1) {
MCHandFore.gotoAndStop("paper");
} else {
MCHandFore.gotoAndStop("stone");
}
} else {
MCHandFore.gotoAndStop("point");
}
PutShadow();
}
function PutShadow() {
var _local1;
var _local2;
_local1 = false;
if (0 <= forcusedStone) {
_local2 = MCStones[(("MCStone" + state) + "_") + forcusedStone];
_local1 = true;
} else if (0 <= forcusedTransferee) {
_local2 = MCStones[(("MCStone" + (3 - state)) + "_") + forcusedTransferee];
_local1 = true;
}
if (_local1) {
MCGameBG.MCShadow._x = _local2._x;
MCGameBG.MCShadow._y = _local2._y;
}
MCGameBG.MCShadow._visible = _local1;
}
function Stack(a, b, c) {
var _local1;
var _local3;
_local1 = toDoLength;
while (0 < _local1) {
toDo[_local1] = toDo[_local1 - 1];
_local1--;
}
toDo[0] = (a + (b * 10)) + (c * 100);
toDoLength++;
if ((c != 25) && (c != 26)) {
_local3 = String.fromCharCode(66 + (c % 100));
if ((map[(COLOR1NUMBER - 1) + a] == 0) || (100 <= c)) {
_local3 = String.fromCharCode(66 + stoneZ[((a * 4) - 4) + b]) + _local3;
}
history = history + _local3;
}
}
function InitializeRandom(n) {
if (n == 0) {
n = 1000000 /* 0x0F4240 */;
}
randomSeed = n;
randomSub = 1953125 /* 0x1DCD65 */;
randomMod = 16777216 /* 0x1000000 */;
}
function GetRandom() {
randomSeed = (randomSeed * randomSub) % randomMod;
return(randomSeed / randomMod);
}
function CopyMap(n, m) {
var _local1;
_local1 = 0;
while (_local1 < MAPSIZE) {
map[m + _local1] = map[n + _local1];
_local1++;
}
}
function CanMakeHard(n) {
var _local3;
var _local1;
var _local2;
var _local4;
_local1 = n + MAPSIZE;
if (0 < map[((n + COLOR1NUMBER) - 1) + playerColor]) {
_local2 = 0;
while (_local2 < 25) {
if (map[(n + HEAVENTOP) + _local2] == 0) {
CopyMap(n, _local1);
map[((_local1 + COLOR1NUMBER) - 1) + playerColor]--;
map[(_local1 + HEAVENTOP) + _local2] = playerColor;
RemoveSandwiched(_local1, playerColor, HEAVENTOP + _local2);
SetComeStable(_local1);
if (map[((_local1 + COLOR1STABLE) - 1) + playerColor] == 4) {
map[_local1 + COLOR1INFO] = map[_local1 + COLOR1INFO] * -1;
map[_local1 + COLOR2INFO] = map[_local1 + COLOR2INFO] * -1;
ScoreProc(_local1);
if (10000 <= map[((_local1 + COLOR1SCORE) - 1) + playerColor]) {
return(true);
}
}
}
_local2++;
}
}
_local2 = 0;
while (_local2 < 16) {
if (map[(n + HEAVENTOP) + _local2] == playerColor) {
_local4 = 0;
while (_local4 < NEXTTOHEAVENLENGTH[_local2]) {
_local3 = NEXTTOHEAVEN[(_local2 * 4) + _local4];
if (map[(n + HELLTOP) + _local3] == 0) {
CopyMap(n, _local1);
map[(_local1 + HEAVENTOP) + _local2] = 0;
map[(_local1 + HELLTOP) + _local3] = playerColor;
RemoveSandwiched(_local1, playerColor, HEAVENTOP + _local3);
SetComeStable(_local1);
if (map[((_local1 + COLOR1STABLE) - 1) + playerColor] == 4) {
map[_local1 + COLOR1INFO] = map[_local1 + COLOR1INFO] * -1;
map[_local1 + COLOR2INFO] = map[_local1 + COLOR2INFO] * -1;
ScoreProc(_local1);
if (10000 <= map[((_local1 + COLOR1SCORE) - 1) + playerColor]) {
return(true);
}
}
}
_local4++;
}
}
_local2++;
}
_local2 = 0;
while (_local2 < 9) {
if (map[(n + HELLTOP) + _local2] == playerColor) {
_local4 = 0;
while (_local4 < 4) {
_local3 = NEXTTOHELL[(_local2 * 4) + _local4];
if (map[(n + HEAVENTOP) + _local3] == 0) {
CopyMap(n, _local1);
map[(_local1 + HELLTOP) + _local2] = 0;
map[(_local1 + HEAVENTOP) + _local3] = playerColor;
RemoveSandwiched(_local1, playerColor, HEAVENTOP + _local3);
SetComeStable(_local1);
if (map[((_local1 + COLOR1STABLE) - 1) + playerColor] == 4) {
map[_local1 + COLOR1INFO] = map[_local1 + COLOR1INFO] * -1;
map[_local1 + COLOR2INFO] = map[_local1 + COLOR2INFO] * -1;
ScoreProc(_local1);
if (10000 <= map[((_local1 + COLOR1SCORE) - 1) + playerColor]) {
return(true);
}
}
}
_local4++;
}
}
_local2++;
}
return(false);
}
function RemoveSandwiched(n, a, c) {
var _local1;
var _local3;
_local3 = 0;
while (_local3 < SANDWICHLENGTH[c]) {
_local1 = ((c * 3) + _local3) * 4;
if (map[(n + HEAVENTOP) + SANDWICH[_local1 + 1]] == (3 - a)) {
if (map[(n + HEAVENTOP) + SANDWICH[_local1 + 2]] == a) {
map[(n + HEAVENTOP) + SANDWICH[_local1 + 1]] = 0;
} else if (SANDWICH[_local1] == 2) {
if (map[(n + HEAVENTOP) + SANDWICH[_local1 + 2]] == (3 - a)) {
if (map[(n + HEAVENTOP) + SANDWICH[_local1 + 3]] == a) {
map[(n + HEAVENTOP) + SANDWICH[_local1 + 2]] = 0;
map[(n + HEAVENTOP) + SANDWICH[_local1 + 1]] = 0;
}
}
}
}
_local3++;
}
}
function SetComeStable(n) {
var _local5;
var _local4;
var _local1;
var _local3;
map[n + COLOR1STABLE] = 4;
map[n + COLOR2STABLE] = 4;
_local1 = 0;
while (_local1 < 25) {
isStable[_local1] = true;
_local1++;
}
_local1 = 0;
while (_local1 < 50) {
canCome[_local1] = false;
_local1++;
}
_local1 = 0;
while (_local1 < 16) {
_local5 = map[(n + HEAVENTOP) + _local1];
if (_local5 == 0) {
if (0 < map[n + COLOR1NUMBER]) {
SetComeStableOne(n, 1, _local1);
}
if (0 < map[n + COLOR2NUMBER]) {
SetComeStableOne(n, 2, _local1);
}
} else {
_local3 = 0;
while (_local3 < NEXTTOHEAVENLENGTH[_local1]) {
_local4 = NEXTTOHEAVEN[(_local1 * 4) + _local3];
if (map[(n + HELLTOP) + _local4] == 0) {
SetComeStableOne(n, _local5, 16 + _local4);
}
_local3++;
}
}
_local1++;
}
_local1 = 0;
while (_local1 < 9) {
_local5 = map[(n + HELLTOP) + _local1];
if (_local5 == 0) {
if (0 < map[n + COLOR1NUMBER]) {
SetComeStableOne(n, 1, 16 + _local1);
}
if (0 < map[n + COLOR2NUMBER]) {
SetComeStableOne(n, 2, 16 + _local1);
}
} else {
_local3 = 0;
while (_local3 < 4) {
_local4 = NEXTTOHELL[(_local1 * 4) + _local3];
if (map[(n + HEAVENTOP) + _local4] == 0) {
SetComeStableOne(n, _local5, _local4);
}
_local3++;
}
}
_local1++;
}
}
function SetComeStableOne(n, a, c) {
var _local2;
var _local3;
var _local6;
var _local1;
canCome[((a * 25) - 25) + c] = true;
_local6 = 0;
while (_local6 < SANDWICHLENGTH[c]) {
_local2 = ((c * 3) + _local6) * 4;
_local3 = 2;
if (map[(n + HEAVENTOP) + SANDWICH[_local2 + 1]] == (3 - a)) {
if (SANDWICH[_local2] == 2) {
if (map[(n + HEAVENTOP) + SANDWICH[_local2 + 2]] == (3 - a)) {
_local3++;
}
}
if (map[(n + HEAVENTOP) + SANDWICH[_local2 + _local3]] == a) {
_local1 = 1;
while (_local1 < _local3) {
if (isStable[SANDWICH[_local2 + _local1]]) {
isStable[SANDWICH[_local2 + _local1]] = false;
map[(((n + COLOR1STABLE) - 1) + 3) - a]--;
}
_local1++;
}
}
}
_local6++;
}
}
function SetSandwich(n, a, c) {
var _local3;
var _local5;
var _local6;
var _local2;
var _local1;
transfereeNumber = 0;
_local6 = 0;
while (_local6 < SANDWICHLENGTH[c]) {
_local3 = ((c * 3) + _local6) * 4;
_local5 = 2;
if (map[(n + HEAVENTOP) + SANDWICH[_local3 + 1]] == (3 - a)) {
if (SANDWICH[_local3] == 2) {
if (map[(n + HEAVENTOP) + SANDWICH[_local3 + 2]] == (3 - a)) {
_local5++;
}
}
if (map[(n + HEAVENTOP) + SANDWICH[_local3 + _local5]] == a) {
_local2 = 1;
while (_local2 < _local5) {
_local1 = 0;
while (_local1 < 4) {
if (stoneZ[((2 - a) * 4) + _local1] == SANDWICH[_local3 + _local2]) {
transferee[transfereeNumber++] = _local1;
break;
}
_local1++;
}
_local2++;
}
}
}
_local6++;
}
}
function PlaySound(a) {
if (isSound) {
a.start();
}
}
function SetRecord(a) {
SetDigits(MCConsole.MCRecord.MCRecordGraphics.MCNumberMatch, record[a * 4]);
SetDigits(MCConsole.MCRecord.MCRecordGraphics.MCNumberWin, record[(a * 4) + 1]);
SetDigits(MCConsole.MCRecord.MCRecordGraphics.MCNumberWinCont, record[(a * 4) + 2]);
SetDigits(MCConsole.MCRecord.MCRecordGraphics.MCNumberLose, record[a * 4] - record[(a * 4) + 1]);
}
function SetDigits(a, b) {
var _local1;
_local1 = 0;
while (_local1 < 3) {
a["MCDigit" + _local1].gotoAndStop(1 + (int(b / Math.pow(10, _local1)) % 10));
_local1++;
}
}
function StartProc() {
var a;
var i;
var myDate;
soundRoomBGM1.stop("roomBGM1");
if (room == 0) {
PlaySound(soundGameBGM0_1);
} else if (room == 1) {
PlaySound(soundGameBGM1_1);
} else if (2 <= room) {
PlaySound(soundGameBGM2_1);
}
MCConsole.MCAlert._visible = false;
bulletin = -1;
MCGameBG.MCOpponent.gotoAndStop(room + "normal");
MCGameBG.MCOpponentCard.gotoAndStop(room + 1);
MCGameBG.MCTutorial.gotoAndStop("no");
RemoveTransferMark();
MCGameBG.MCGhost._visible = false;
MCGameBG._visible = true;
i = 0;
while (i < 4) {
MCStones["MCStone1_" + i].removeMovieClip();
MCStones["MCStone2_" + i].removeMovieClip();
i++;
}
i = 0;
while (i < 25) {
MCStones["MCDummy" + i].removeMovieClip();
i++;
}
i = 0;
while (i < 4) {
a = "MCStone" + (3 - playerColor);
MCStones.attachMovie(a + "Master", (a + "_") + i, i);
with (MCStones[(a + "_") + i]) {
_x = COMPUTERHOMEX + (i * HOMESPACING);
_y = COMPUTERHOMEY;
gotoAndStop("normal");
}
stoneZ[i] = -1;
a = "MCStone" + playerColor;
MCStones.attachMovie(a + "Master", (a + "_") + i, 29 + i);
with (MCStones[(a + "_") + i]) {
_x = PLAYERHOMEX + ((3 - i) * HOMESPACING);
_y = PLAYERHOMEY;
gotoAndStop("normal");
}
stoneZ[4 + i] = -1;
i++;
}
homeAnimation[0] = 0;
homeAnimation[1] = 0;
i = 0;
while (i < 16) {
MCStones.createEmptyMovieClip("MCDummy" + i, (4 + (i % 4)) + (int(i / 4) * 7));
i++;
}
i = 0;
while (i < 9) {
MCStones.createEmptyMovieClip("MCDummy" + (16 + i), (8 + (i % 3)) + (int(i / 3) * 7));
i++;
}
i = 0;
while (i < 25) {
map[HEAVENTOP + i] = 0;
i++;
}
MCStones.createEmptyMovieClip("MCFlying", 35);
MCStones._visible = true;
MCOpponentHand._x = OPPONENTHANDHOMEX;
MCOpponentHand._y = OPPONENTHANDHOMEY;
MCOpponentHand.gotoAndStop(room + "release");
MCOpponentHand._visible = true;
map[COLOR1NUMBER] = 4;
map[COLOR2NUMBER] = 4;
myDate = new Date();
InitializeRandom(myDate.getTime() % 1000000);
toDoLength = 0;
toDoAnimation = 0;
forcusedStone = -1;
forcusedTransferee = -1;
transfereeNumber = 0;
map[COLOR1INFO] = 0;
map[COLOR2INFO] = 0;
i = 0;
while (i < 4) {
latestInfo[i] = 0;
i++;
}
numberMove = 0;
history = "";
nextState = (map[NOWCOLOR] = firstColor);
}
function ReturnToRoomProc() {
soundGameBGM0_1.stop("gameBGM0_1");
soundGameBGM1_1.stop("gameBGM1_1");
soundGameBGM2_1.stop("gameBGM2_1");
MCGameBG._visible = false;
MCStones._visible = false;
MCOpponentHand._visible = false;
nextState = 0;
}
function SetMarkPosition(a) {
if (a < 16) {
MCGameBG.MCMark._x = FLOORX + ((a % 4) * FLOORSPACING);
MCGameBG.MCMark._y = FLOORY + (int(a / 4) * FLOORSPACING);
} else {
MCGameBG.MCMark._x = FLOORX + ((((a - 16) % 3) + 0.5) * FLOORSPACING);
MCGameBG.MCMark._y = FLOORY + ((int((a - 16) / 3) + 0.5) * FLOORSPACING);
}
}
function PutTransferMark(a) {
var _local1;
var _local2;
var _local3;
transferMarkNumber = transfereeNumber;
_local1 = 0;
while (_local1 < transferMarkNumber) {
transferMarkZ[_local1] = stoneZ[((a * 4) - 4) + transferee[_local1]];
_local2 = MCStones[(("MCStone" + a) + "_") + transferee[_local1]];
if (transferMarkZ[_local1] < 16) {
_local2.gotoAndPlay("heavenForcus");
} else {
_local2.gotoAndPlay("hellForcus");
}
_local3 = MCGameBG["MCTransferMark" + _local1];
_local3._x = _local2._x;
_local3._y = _local2._y;
_local3._visible = true;
_local1++;
}
}
function RemoveTransferMark() {
var _local1;
_local1 = 0;
while (_local1 < 4) {
MCGameBG["MCTransferMark" + _local1]._visible = false;
_local1++;
}
transferMarkNumber = 0;
}
function RememberPhase() {
var _local6;
var _local3;
var _local1;
var _local2;
var _local4;
var _local5;
phase[numberMove] = "";
_local6 = 1;
while (_local6 <= 2) {
_local2 = "";
_local3 = 0;
while (_local3 < 4) {
_local4 = String.fromCharCode(66 + stoneZ[((_local6 * 4) - 4) + _local3]);
_local5 = false;
_local1 = 0;
while (_local1 < _local3) {
if (_local4 < _local2.charAt(_local1)) {
_local2 = (_local2.substr(0, _local1) + _local4) + _local2.substr(_local1, _local3 - _local1);
_local5 = true;
break;
}
_local1++;
}
if (!_local5) {
_local2 = _local2 + _local4;
}
_local3++;
}
phase[numberMove] = phase[numberMove] + _local2;
_local6++;
}
}
function Score(n) {
SetComeStable(n);
ScoreProc(n);
}
function ScoreProc(n) {
var _local6;
var _local4;
var _local1;
var _local9;
var _local8;
var _local7;
var _local10;
var _local5;
var _local3;
var _local12;
var _local11;
map[n + COLOR1SCORE] = 0;
map[n + COLOR2SCORE] = 0;
map[n + COLOR1CANWIN] = 0;
map[n + COLOR2CANWIN] = 0;
_local10 = -1;
_local11 = false;
_local5 = 0;
while (_local5 < 10) {
_local6 = 0;
_local3 = 0;
while (_local3 < 4) {
_local6 = (_local6 * 3) + map[(n + HEAVENTOP) + HEAVENROW[(_local5 * 4) + _local3]];
_local3++;
}
_local3 = 0;
while (_local3 < HEAVENPOINTLENGTH[_local6]) {
_local4 = ((_local6 * 3) + _local3) * 3;
_local1 = HEAVENPOINT[_local4];
_local9 = ((n + COLOR1INFO) - 1) + _local1;
if (HEAVENPOINT[_local4 + 1] == 4) {
_local8 = map[_local9];
if ((_local8 == 0) || ((((-_local8) != (5 + _local5)) && (_local8 != -1)) && (_local8 != -4))) {
map[_local9] = 3;
map[((n + COLOR1SCORE) - 1) + _local1] = 100000 /* 0x0186A0 */;
map[(((n + COLOR1INFO) - 1) + 3) - _local1] = 100 + _local5;
_local11 = true;
break;
}
map[_local9] = 5 + _local5;
} else if (HEAVENPOINT[_local4 + 1] == 5) {
map[_local9] = 4;
} else {
_local7 = HEAVENROW[(_local5 * 4) + HEAVENPOINT[_local4 + 1]];
if (canCome[((_local1 * 25) - 25) + _local7]) {
map[((n + COLOR1SCORE) - 1) + _local1] = map[((n + COLOR1SCORE) - 1) + _local1] + HEAVENPOINT[_local4 + 2];
if (HEAVENPOINT[_local4 + 2] == 300) {
map[((n + COLOR1CANWIN) - 1) + _local1]++;
if (room == 3) {
if (map[((n + COLOR1STABLE) - 1) + _local1] == 4) {
if ((!canCome[((2 - _local1) * 25) + _local7]) || ((0 <= _local10) && (_local7 != _local10))) {
map[((n + COLOR1SCORE) - 1) + _local1] = map[((n + COLOR1SCORE) - 1) + _local1] + 10000;
}
_local10 = _local7;
}
}
}
} else {
map[((n + COLOR1SCORE) - 1) + _local1] = map[((n + COLOR1SCORE) - 1) + _local1] + (HEAVENPOINT[_local4 + 2] / 100);
}
}
_local3++;
}
if (_local11) {
break;
}
_local5++;
}
if (!_local11) {
_local5 = 0;
while (_local5 < 8) {
_local6 = 0;
_local3 = 0;
while (_local3 < 3) {
_local6 = (_local6 * 3) + map[(n + HELLTOP) + HELLROW[(_local5 * 3) + _local3]];
_local3++;
}
_local3 = 0;
while (_local3 < HELLPOINTLENGTH[_local6]) {
_local4 = ((_local6 * 2) + _local3) * 3;
_local1 = HELLPOINT[_local4];
_local9 = ((n + COLOR1INFO) - 1) + _local1;
if (HELLPOINT[_local4 + 1] == 4) {
_local8 = map[_local9];
if ((_local8 == 0) || (((-_local8) != (15 + _local5)) && (_local8 != -1))) {
map[_local9] = 3;
map[((n + COLOR1SCORE) - 1) + _local1] = 100000 /* 0x0186A0 */;
map[(((n + COLOR1INFO) - 1) + 3) - _local1] = 110 + _local5;
_local11 = true;
break;
}
map[_local9] = 15 + _local5;
} else {
_local7 = 16 + HELLROW[(_local5 * 3) + HELLPOINT[_local4 + 1]];
if (canCome[((_local1 * 25) - 25) + _local7]) {
map[((n + COLOR1SCORE) - 1) + _local1] = map[((n + COLOR1SCORE) - 1) + _local1] + HELLPOINT[_local4 + 2];
if (HELLPOINT[_local4 + 2] == 300) {
map[((n + COLOR1CANWIN) - 1) + _local1]++;
if (room == 3) {
if (map[((n + COLOR1STABLE) - 1) + _local1] == 4) {
if ((!canCome[((2 - _local1) * 25) + _local7]) || ((0 <= _local10) && (_local7 != _local10))) {
map[((n + COLOR1SCORE) - 1) + _local1] = map[((n + COLOR1SCORE) - 1) + _local1] + 10000;
}
_local10 = _local7;
}
}
}
} else {
map[((n + COLOR1SCORE) - 1) + _local1] = map[((n + COLOR1SCORE) - 1) + _local1] + (HELLPOINT[_local4 + 2] / 100);
}
}
_local3++;
}
if (_local11) {
break;
}
_local5++;
}
}
if (!_local11) {
_local5 = 0;
while (_local5 < 4) {
_local6 = 0;
_local3 = 0;
while (_local3 < 3) {
_local6 = (_local6 * 3) + map[(n + HEAVENTOP) + HEAVENROW2[(_local5 * 3) + _local3]];
_local3++;
}
_local3 = 0;
while (_local3 < HELLPOINTLENGTH[_local6]) {
_local4 = ((_local6 * 2) + _local3) * 3;
_local1 = HELLPOINT[_local4];
_local9 = ((n + COLOR1INFO) - 1) + _local1;
if (HELLPOINT[_local4 + 1] == 4) {
_local8 = map[_local9];
if ((_local8 == 0) || (((-_local8) != (23 + _local5)) && (_local8 != -1))) {
map[_local9] = 3;
map[((n + COLOR1SCORE) - 1) + _local1] = 100000 /* 0x0186A0 */;
map[(((n + COLOR1INFO) - 1) + 3) - _local1] = 118 + _local5;
_local11 = true;
break;
}
map[_local9] = 23 + _local5;
} else {
_local7 = HEAVENROW2[(_local5 * 3) + HELLPOINT[_local4 + 1]];
if (canCome[((_local1 * 25) - 25) + _local7]) {
map[((n + COLOR1SCORE) - 1) + _local1] = map[((n + COLOR1SCORE) - 1) + _local1] + HELLPOINT[_local4 + 2];
if (HELLPOINT[_local4 + 2] == 300) {
map[((n + COLOR1CANWIN) - 1) + _local1]++;
if (room == 3) {
if (map[((n + COLOR1STABLE) - 1) + _local1] == 4) {
if ((!canCome[((2 - _local1) * 25) + _local7]) || ((0 <= _local10) && (_local7 != _local10))) {
map[((n + COLOR1SCORE) - 1) + _local1] = map[((n + COLOR1SCORE) - 1) + _local1] + 10000;
}
}
_local10 = _local7;
}
}
} else {
map[((n + COLOR1SCORE) - 1) + _local1] = map[((n + COLOR1SCORE) - 1) + _local1] + (HELLPOINT[_local4 + 2] / 100);
}
}
_local3++;
}
if (_local11) {
break;
}
_local5++;
}
}
_local5 = 0;
while (_local5 < 2) {
_local6 = (n + COLOR1INFO) + _local5;
if (map[_local6] < 0) {
map[_local6] = 0;
}
_local5++;
}
}
function PutCheck() {
i1 = map[COLOR1INFO];
i2 = map[COLOR2INFO];
s1 = map[COLOR1SCORE];
s2 = map[COLOR2SCORE];
st1 = map[COLOR1STABLE];
st2 = map[COLOR2STABLE];
cw1 = map[COLOR1CANWIN];
cw2 = map[COLOR2CANWIN];
chk0 = map[0];
chk1 = map[1];
chk2 = map[2];
chk3 = map[3];
chk4 = map[4];
chk5 = map[5];
chk6 = map[6];
chk7 = map[7];
chk8 = map[8];
chk9 = map[9];
chk10 = map[10];
chk11 = map[11];
chk12 = map[12];
chk13 = map[13];
chk14 = map[14];
chk15 = map[15];
chk16 = map[16];
chk17 = map[17];
chk18 = map[18];
chk19 = map[19];
chk20 = map[20];
chk21 = map[21];
chk22 = map[22];
chk23 = map[23];
chk24 = map[24];
}
function Tester() {
var _local2;
var _local1;
ReturnToRoomProc();
StartProc();
numberMove = 10;
_local1 = MCStones.MCStone1_0;
_local2 = 4;
stoneZ[0] = _local2;
map[_local2] = 1;
_local1._x = FLOORX + (0 * FLOORSPACING);
_local1._y = FLOORY + (1 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("heavenStand");
_local1 = MCStones.MCStone1_1;
_local2 = 13;
stoneZ[1] = _local2;
map[_local2] = 1;
_local1._x = FLOORX + (1 * FLOORSPACING);
_local1._y = FLOORY + (3 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("heavenStand");
_local1 = MCStones.MCStone1_2;
_local2 = 15;
stoneZ[2] = _local2;
map[_local2] = 1;
_local1._x = FLOORX + (3 * FLOORSPACING);
_local1._y = FLOORY + (3 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("heavenStand");
_local1 = MCStones.MCStone1_3;
_local2 = 18;
stoneZ[3] = _local2;
map[_local2] = 1;
_local1._x = FLOORX + (2.5 * FLOORSPACING);
_local1._y = FLOORY + (0.5 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("hellStand");
map[COLOR1NUMBER] = 0;
_local1 = MCStones.MCStone2_0;
_local2 = 5;
stoneZ[4] = _local2;
map[_local2] = 2;
_local1._x = FLOORX + (1 * FLOORSPACING);
_local1._y = FLOORY + (1 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("heavenStand");
_local1 = MCStones.MCStone2_1;
_local2 = 6;
stoneZ[5] = _local2;
map[_local2] = 2;
_local1._x = FLOORX + (2 * FLOORSPACING);
_local1._y = FLOORY + (1 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("heavenStand");
_local1 = MCStones.MCStone2_2;
_local2 = 10;
stoneZ[6] = _local2;
map[_local2] = 2;
_local1._x = FLOORX + (2 * FLOORSPACING);
_local1._y = FLOORY + (2 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("heavenStand");
_local1 = MCStones.MCStone2_3;
_local2 = 11;
stoneZ[7] = _local2;
map[_local2] = 2;
_local1._x = FLOORX + (3 * FLOORSPACING);
_local1._y = FLOORY + (2 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("heavenStand");
map[COLOR2NUMBER] = 0;
playerColor = 1;
map[COLOR1INFO] = 0;
map[COLOR2INFO] = 0;
state = 2;
nextState = 1;
}
function Tester2() {
var _local2;
var _local1;
ReturnToRoomProc();
StartProc();
numberMove = 10;
_local1 = MCStones.MCStone1_0;
_local2 = 5;
stoneZ[0] = _local2;
map[_local2] = 1;
_local1._x = FLOORX + (1 * FLOORSPACING);
_local1._y = FLOORY + (1 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("heavenStand");
_local1 = MCStones.MCStone1_1;
_local2 = 18;
stoneZ[1] = _local2;
map[_local2] = 1;
_local1._x = FLOORX + (2.5 * FLOORSPACING);
_local1._y = FLOORY + (0.5 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("hellStand");
_local1 = MCStones.MCStone1_2;
_local2 = 22;
stoneZ[2] = _local2;
map[_local2] = 1;
_local1._x = FLOORX + (0.5 * FLOORSPACING);
_local1._y = FLOORY + (2.5 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("hellStand");
_local1 = MCStones.MCStone1_3;
_local2 = 24;
stoneZ[3] = _local2;
map[_local2] = 1;
_local1._x = FLOORX + (2.5 * FLOORSPACING);
_local1._y = FLOORY + (2.5 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("hellStand");
map[COLOR1NUMBER] = 0;
_local1 = MCStones.MCStone2_0;
_local2 = 0;
stoneZ[4] = _local2;
map[_local2] = 2;
_local1._x = FLOORX + (0 * FLOORSPACING);
_local1._y = FLOORY + (0 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("heavenStand");
_local1 = MCStones.MCStone2_1;
_local2 = 3;
stoneZ[5] = _local2;
map[_local2] = 2;
_local1._x = FLOORX + (3 * FLOORSPACING);
_local1._y = FLOORY + (0 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("heavenStand");
_local1 = MCStones.MCStone2_2;
_local2 = 12;
stoneZ[6] = _local2;
map[_local2] = 2;
_local1._x = FLOORX + (0 * FLOORSPACING);
_local1._y = FLOORY + (3 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("heavenStand");
_local1 = MCStones.MCStone2_3;
_local2 = 15;
stoneZ[7] = _local2;
map[_local2] = 2;
_local1._x = FLOORX + (3 * FLOORSPACING);
_local1._y = FLOORY + (3 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("heavenStand");
map[COLOR2NUMBER] = 0;
playerColor = 1;
map[COLOR1INFO] = 0;
map[COLOR2INFO] = 0;
state = 2;
nextState = 1;
}
onLoad = function () {
Mouse.hide();
FLASHWIDTH = 760;
FLASHHEIGHT = 520;
FLOORX = 90;
FLOORY = 120;
FLOORSPACING = 100;
FLOORRIM = 65;
COMPUTERHOMEX = 70;
COMPUTERHOMEY = 75;
PLAYERHOMEX = 231;
PLAYERHOMEY = 495;
HOMESPACING = 73;
OPPONENTHANDHOMEX = 100;
OPPONENTHANDHOMEY = -100;
HANDSPEED = 30;
record = new Array(16);
SOSimpei = SharedObject.getLocal("simpeiRecord", "/");
randomSeed = (randomSub = (randomMod = 0));
timeLastMouseDown = 0;
state = (nextState = 0);
wait = 0;
room = 0;
roomV = 0;
isSound = true;
bulletin = -1;
MAXPHASE = 1000;
phase = new Array(MAXPHASE);
phaseCount = new Array(MAXPHASE);
numberMove = 0;
history = "";
wantRetry = true;
isLevel4 = false;
playerColor = 0;
firstColor = 0;
winColor = 0;
toDo = new Array(10);
toDoLength = 0;
toDoAnimation = 0;
sx = 0;
sy = 0;
dx = 0;
dy = 0;
isGrabbing = false;
forcusedStone = -1;
markeZ = 0;
stoneZ = new Array(8);
homeAnimation = new Array(2);
transferee = new Array(4);
transferMarkZ = new Array(4);
transferMarkNumber = 0;
forcusedTransferee = -1;
transfereeNumber = 0;
isTransfering = false;
thinkingStone = 0;
thinkingDirection = 0;
thinkingOrigin = 0;
bestScore = 0;
bestStone = 0;
bestDirection = 0;
bestDestination = 0;
forbiddenPlace = "";
MAPSIZE = 36;
map = new Array(6 * MAPSIZE);
latestInfo = new Array(4);
HEAVENTOP = 0;
HELLTOP = 16;
NOWCOLOR = 25;
COLOR1NUMBER = 26;
COLOR2NUMBER = 27;
COLOR1STABLE = 28;
COLOR2STABLE = 29;
COLOR1INFO = 30;
COLOR2INFO = 31;
COLOR1SCORE = 32;
COLOR2SCORE = 33;
COLOR1CANWIN = 34;
COLOR2CANWIN = 35;
canCome = new Array(50);
isStable = new Array(25);
SANDWICH = new Array(2, 1, 2, 3, 2, 5, 10, 15, 2, 4, 8, 12, 1, 2, 3, 0, 1, 6, 11, 0, 2, 5, 9, 13, 2, 6, 10, 14, 1, 5, 8, 0, 1, 1, 0, 0, 2, 7, 11, 15, 2, 6, 9, 12, 2, 2, 1, 0, 2, 5, 6, 7, 1, 9, 14, 0, 1, 8, 12, 0, 1, 6, 7, 0, 1, 10, 15, 0, 1, 9, 13, 0, 1, 10, 14, 0, 1, 9, 12, 0, 1, 5, 4, 0, 1, 11, 15, 0, 1, 10, 13, 0, 2, 6, 5, 4, 1, 4, 0, 0, 1, 5, 2, 0, 2, 9, 10, 11, 1, 5, 1, 0, 1, 6, 3, 0, 1, 10, 11, 0, 1, 6, 2, 0, 1, 9, 8, 0, 1, 5, 0, 0, 1, 7, 3, 0, 2, 10, 9, 8, 1, 6, 1, 0, 2, 8, 4, 0, 2, 9, 6, 3, 2, 13, 14, 15, 2, 9, 5, 1, 1, 10, 7, 0, 1, 14, 15, 0, 2, 10, 6, 2, 1, 13, 12, 0, 1, 9, 4, 0, 2, 11, 7, 3, 2, 14, 13, 12, 2, 10, 5, 0, 1, 17, 18, 0, 1, 20, 24, 0, 1, 19, 22, 0, 1, 20, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 24, 0, 1, 20, 22, 0, 1, 17, 16, 0, 1, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 19, 16, 0, 1, 20, 18, 0, 1, 23, 24, 0, 1, 20, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 18, 0, 1, 23, 22, 0, 1, 20, 16);
SANDWICHLENGTH = new Array(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 0, 1, 3, 1, 3);
HEAVENROW = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15, 0, 5, 10, 15, 3, 6, 9, 12);
HELLROW = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 3, 6, 1, 4, 7, 2, 5, 8, 0, 4, 8, 2, 4, 6);
HEAVENROW2 = new Array(1, 6, 11, 2, 5, 8, 4, 9, 14, 7, 10, 13);
NEXTTOHEAVEN = new Array(0, 0, 0, 0, 0, 1, 0, 0, 1, 2, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 1, 3, 4, 1, 2, 4, 5, 2, 5, 0, 0, 3, 6, 0, 0, 3, 4, 6, 7, 4, 5, 7, 8, 5, 8, 0, 0, 6, 0, 0, 0, 6, 7, 0, 0, 7, 8, 0, 0, 8, 0, 0, 0);
NEXTTOHEAVENLENGTH = new Array(1, 2, 2, 1, 2, 4, 4, 2, 2, 4, 4, 2, 1, 2, 2, 1);
NEXTTOHELL = new Array(0, 1, 4, 5, 1, 2, 5, 6, 2, 3, 6, 7, 4, 5, 8, 9, 5, 6, 9, 10, 6, 7, 10, 11, 8, 9, 12, 13, 9, 10, 13, 14, 10, 11, 14, 15);
HEAVENPOINT = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 20, 1, 1, 20, 0, 0, 0, 2, 2, 20, 2, 1, 20, 0, 0, 0, 1, 1, 20, 1, 3, 20, 0, 0, 0, 1, 1, 300, 0, 0, 0, 0, 0, 0, 2, 1, 40, 1, 1, 20, 1, 0, 20, 2, 1, 20, 2, 3, 20, 0, 0, 0, 1, 1, 40, 2, 1, 20, 2, 0, 20, 2, 1, 300, 0, 0, 0, 0, 0, 0, 1, 0, 20, 1, 2, 20, 0, 0, 0, 1, 2, 300, 0, 0, 0, 0, 0, 0, 1, 0, 20, 1, 2, 20, 0, 0, 0, 1, 0, 300, 1, 3, 300, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 300, 2, 0, 80, 0, 0, 0, 1, 3, 40, 2, 0, 40, 0, 0, 0, 2, 0, 40, 0, 0, 0, 0, 0, 0, 2, 0, 40, 0, 0, 0, 0, 0, 0, 2, 0, 20, 2, 2, 20, 0, 0, 0, 2, 0, 20, 2, 2, 20, 0, 0, 0, 2, 2, 300, 0, 0, 0, 0, 0, 0, 2, 3, 40, 1, 0, 40, 0, 0, 0, 1, 0, 40, 0, 0, 0, 0, 0, 0, 1, 0, 40, 0, 0, 0, 0, 0, 0, 2, 0, 300, 2, 3, 300, 0, 0, 0, 2, 0, 300, 1, 0, 80, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 1, 1, 20, 1, 2, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 20, 1, 2, 20, 0, 0, 0, 1, 1, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 300, 2, 1, 40, 0, 0, 0, 2, 1, 20, 2, 3, 20, 0, 0, 0, 1, 1, 40, 0, 0, 0, 0, 0, 0, 2, 1, 300, 0, 0, 0, 0, 0, 0, 1, 2, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 300, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 1, 3, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 40, 2, 2, 20, 2, 3, 20, 1, 2, 40, 0, 0, 0, 0, 0, 0, 2, 2, 300, 1, 2, 40, 0, 0, 0, 2, 3, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 300, 1, 3, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 2, 1, 20, 2, 2, 20, 0, 0, 0, 2, 1, 20, 2, 2, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 20, 1, 3, 20, 0, 0, 0, 1, 1, 300, 0, 0, 0, 0, 0, 0, 2, 1, 40, 0, 0, 0, 0, 0, 0, 2, 1, 300, 0, 0, 0, 0, 0, 0, 2, 1, 300, 1, 1, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 40, 1, 2, 20, 1, 3, 20, 1, 2, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 300, 2, 3, 80, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 300, 0, 0, 0, 0, 0, 0, 2, 2, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 2, 5, 0, 0, 0, 0, 0, 0, 0);
HEAVENPOINTLENGTH = new Array(0, 2, 2, 2, 1, 3, 2, 3, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 0, 2, 1, 0, 2, 2, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 3, 1, 2, 1, 0, 0, 2, 0, 1, 2, 2, 0, 2, 1, 1, 1, 2, 0, 3, 1, 0, 2, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1);
HELLPOINT = new Array(0, 0, 0, 0, 0, 0, 1, 1, 20, 1, 0, 20, 2, 1, 20, 2, 0, 20, 1, 0, 20, 1, 2, 20, 1, 0, 300, 0, 0, 0, 2, 0, 40, 0, 0, 0, 2, 0, 20, 2, 2, 20, 1, 0, 40, 0, 0, 0, 2, 0, 300, 0, 0, 0, 1, 1, 20, 1, 2, 20, 1, 1, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 300, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 20, 2, 2, 20, 0, 0, 0, 0, 0, 0, 2, 1, 300, 0, 0, 0, 2, 2, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0);
HELLPOINTLENGTH = new Array(0, 2, 2, 2, 1, 1, 2, 1, 1, 2, 1, 0, 1, 1, 0, 1, 0, 0, 2, 0, 1, 1, 0, 0, 1, 0, 1);
soundClick = new Sound();
soundClick.attachSound("soundClickMaster");
soundStart = new Sound();
soundStart.attachSound("soundStartMaster");
soundGrab = new Sound();
soundGrab.attachSound("soundGrabMaster");
soundHellSettle = new Sound();
soundHellSettle.attachSound("soundHellSettleMaster");
soundHeavenSettle = new Sound();
soundHeavenSettle.attachSound("soundHeavenSettleMaster");
soundTransfer = new Sound();
soundTransfer.attachSound("soundTransferMaster");
soundThree = new Sound();
soundThree.attachSound("soundThreeMaster");
soundWin = new Sound();
soundWin.attachSound("soundWinMaster");
soundLose = new Sound();
soundLose.attachSound("soundLoseMaster");
soundClick2 = new Sound();
soundClick2.attachSound("soundClick2Master");
soundAir = new Sound();
soundAir.attachSound("soundAirMaster");
soundSlide = new Sound();
soundSlide.attachSound("soundSlideMaster");
soundCancel = new Sound();
soundCancel.attachSound("soundCancelMaster");
soundGameBGM0_1 = new Sound();
soundGameBGM0_1.attachSound("gameBGM0_1");
soundGameBGM0_1.onSoundComplete = function () {
soundGameBGM0_1.start(0, 10000);
};
soundGameBGM1_1 = new Sound();
soundGameBGM1_1.attachSound("gameBGM1_1");
soundGameBGM1_1.onSoundComplete = function () {
soundGameBGM1_1.start(0, 10000);
};
soundGameBGM2_1 = new Sound();
soundGameBGM2_1.attachSound("gameBGM2_1");
soundGameBGM2_1.onSoundComplete = function () {
soundGameBGM2_1.start(0, 10000);
};
soundDoorBGM1 = new Sound();
soundDoorBGM1.attachSound("doorBGM1");
soundDoorBGM1.onSoundComplete = function () {
soundDoorBGM1.start(0, 10000);
};
soundRoomBGM1 = new Sound();
soundRoomBGM1.attachSound("roomBGM1");
soundRoomBGM1.onSoundComplete = function () {
soundRoomBGM1.start(0, 10000);
};
var a;
var i;
var j;
var n;
a = SOSimpei.data.recordJoined;
if (a == undefined) {
a = "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0";
}
record = a.split(" ");
SOSimpei.data.recordJoined = record.join(" ");
SOSimpei.flush();
n = 0;
i = 0;
while (i < 4) {
attachMovie(("MCRoom" + i) + "Master", "MCRoom" + i, n++);
with (_root["MCRoom" + i]) {
_visible = false;
}
i++;
}
MCRoom3.ButtonTesterLevel4.onPress = function () {
MCConsole.ButtonChar._visible = (isLevel4 = true);
MCDoor.MCDoorLeft.MCLevel4._visible = true;
MCRoom3.MCLevel4Char._visible = true;
MCRoom3.MCAbsence._visible = false;
};
attachMovie("MCGameBGMaster", "MCGameBG", n++);
with (MCGameBG) {
_visible = false;
_x = 0;
_y = 0;
}
MCGameBG.MCFloor._x = FLOORX;
MCGameBG.MCFloor._y = FLOORY;
MCGameBG.ButtonGiveup.onPress = function () {
if ((bulletin < 0) && (((state == 1) || (state == 2)) || (state == 3))) {
PlaySound(soundCancel);
ReturnToRoomProc();
}
};
MCGameBG.ButtonTester.onPress = function () {
if (((bulletin < 0) && (toDoLength == 0)) && (state != 3)) {
PlaySound(soundClick);
Tester();
} else {
PlaySound(soundCancel);
}
};
MCGameBG.ButtonTester2.onPress = function () {
if (((bulletin < 0) && (toDoLength == 0)) && (state != 3)) {
PlaySound(soundClick);
Tester();
playerColor = 2;
} else {
PlaySound(soundCancel);
}
};
MCGameBG.ButtonTester3.onPress = function () {
if (((bulletin < 0) && (toDoLength == 0)) && (state != 3)) {
PlaySound(soundClick);
Tester2();
} else {
PlaySound(soundCancel);
}
};
MCGameBG.ButtonTester4.onPress = function () {
var _local1;
var _local2;
if (((bulletin < 0) && (toDoLength == 0)) && (state != 3)) {
PlaySound(soundClick);
Tester2();
_local1 = MCStones.MCStone1_0;
_local2 = 16;
stoneZ[0] = _local2;
map[5] = 0;
map[_local2] = 1;
_local1._x = FLOORX + (0.5 * FLOORSPACING);
_local1._y = FLOORY + (0.5 * FLOORSPACING);
_local1.swapDepths(MCStones["MCDummy" + _local2]);
_local1.gotoAndStop("hellStand");
playerColor = 2;
state = 1;
nextState = 2;
} else {
PlaySound(soundCancel);
}
};
MCGameBG.ButtonRetreat.onPress = function () {
var _local1;
var _local3;
var _local2;
if ((((((bulletin < 0) && (toDoLength == 0)) && (state != 3)) && (10 <= numberMove)) && (forcusedStone == -1)) && (transfereeNumber == 0)) {
_local1 = 0;
while (_local1 < 25) {
map[HEAVENTOP + _local1] = 0;
_local1++;
}
_local3 = phase[(numberMove - 1) - 2];
_local1 = 0;
while (_local1 < 8) {
_local2 = MCStones[(("MCStone" + (1 + int(_local1 / 4))) + "_") + (_local1 % 4)];
stoneZ[_local1] = _local3.charCodeAt(_local1) - 66;
map[HEAVENTOP + stoneZ[_local1]] = 1 + int(_local1 / 4);
SetMarkPosition(stoneZ[_local1]);
_local2._x = MCGameBG.MCMark._x;
_local2._y = MCGameBG.MCMark._y;
if (stoneZ[_local1] < 16) {
_local2.gotoAndStop("heavenStand");
} else {
_local2.gotoAndStop("hellStand");
}
_local1++;
}
if (numberMove < 995) {
numberMove = 995;
}
phase[numberMove - 1] = _local3;
phaseCount[numberMove - 1] = 1;
}
};
createEmptyMovieClip("MCStones", n++);
MCStones._visible = false;
attachMovie("MCResultMaster", "MCResult", n++);
MCResult._visible = false;
MCResult.ButtonResultChoose.onPress = function () {
PlaySound(soundClick2);
wantRetry = !wantRetry;
if (wantRetry) {
MCResult.gotoAndStop("questionRetry");
} else {
MCResult.gotoAndStop("questionReturnToMenu");
}
};
MCResult.ButtonRetry.onPress = function () {
PlaySound(soundStart);
MCConsole.MCRecord.gotoAndPlay("disappear");
StartProc();
MCResult._visible = false;
};
MCResult.ButtonToMenu.onPress = function () {
PlaySound(soundCancel);
MCConsole.MCRecord.gotoAndPlay("disappear");
MCGameBG._visible = false;
MCStones._visible = false;
ReturnToRoomProc();
bulletin = -1;
MCResult._visible = false;
};
attachMovie("MCDoorMaster", "MCDoor", n++);
MCDoor._visible = false;
MCDoor.MCDoorLeft.MCOnSale._visible = false;
MCDoor.MCDoorLeft.MCLevel4._visible = false;
MCDoor.gotoAndStop("top");
MCDoor.MCDoorRight.ButtonEnter.onPress = function () {
if (((bulletin < 0) && (state == -1)) && (nextState == -1)) {
soundDoorBGM1.stop("doorBGM1");
PlaySound(soundAir);
MCDoor.gotoAndPlay("open");
room = 0;
roomV = 0;
SetRecord(0);
MCRoom0._visible = true;
nextState = 0;
}
};
MCDoor.MCDoorLeft.MCOnSale.ButtonOnSale.onPress = function () {
PlaySound(soundSlide);
getURL ("http://www.asovision.com/simpei/index.html", "_self");
};
attachMovie("MCConsoleMaster", "MCConsole", n++);
MCConsole._visible = false;
MCConsole.MCHelp.gotoAndStop(1);
MCConsole.MCSound.gotoAndPlay("on");
MCConsole.ButtonLeft._visible = false;
MCConsole.MCLeft._visible = false;
MCConsole.ButtonRight._visible = false;
MCConsole.MCRight._visible = false;
MCConsole.ButtonChar._visible = false;
MCConsole.MCRecord.MCRecordGraphics.MCMap.gotoAndStop("room0");
MCConsole.MCRecord.MCRecordGraphics.MCMap.MCArrow._visible = false;
MCConsole.MCRecord.gotoAndStop("disappeared");
MCConsole.MCHead.gotoAndStop("disappeared");
MCConsole.MCHead.MCHeadGraphics.gotoAndStop(1);
MCConsole.MCAlert._visible = false;
MCConsole.MCHelpWindow.gotoAndStop(1);
MCConsole.MCHelpWindow._visible = false;
MCConsole.MCRecord.MCRecordGraphics.ButtonReset.onPress = function () {
PlaySound(soundCancel);
record[room * 4] = 0;
record[(room * 4) + 1] = 0;
record[(room * 4) + 2] = 0;
record[(room * 4) + 3] = 0;
MCConsole.MCPresent.gotoAndStop(1 + int(record[(room * 4) + 3]));
SetRecord(room);
SOSimpei.data.recordJoined = record.join(" ");
SOSimpei.flush();
};
MCConsole.ButtonChar.onPress = function () {
if (((state == 0) && (bulletin < 0)) && (wait == 0)) {
PlaySound(soundClick);
bulletin = 2;
playerColor = 1;
MCConsole.ButtonLeft._visible = false;
MCConsole.MCLeft._visible = false;
MCConsole.ButtonRight._visible = false;
MCConsole.MCRight._visible = false;
MCConsole.ButtonChar._visible = false;
MCConsole.MCPresent._visible = false;
MCConsole.MCAlert.MCNumberLevel.gotoAndStop(room + 1);
MCConsole.MCAlert.gotoAndStop(1);
MCConsole.MCAlert._visible = true;
}
};
MCConsole.MCAlert.ButtonFirstOrLast.onPress = function () {
PlaySound(soundClick2);
if (playerColor == 1) {
MCConsole.MCAlert.gotoAndStop(2);
playerColor = 2;
} else {
MCConsole.MCAlert.gotoAndStop(1);
playerColor = 1;
}
};
MCConsole.MCAlert.ButtonStart.onPress = function () {
PlaySound(soundStart);
MCConsole.MCRecord.gotoAndPlay("disappear");
MCConsole.MCHead.gotoAndPlay("disappear");
StartProc();
};
MCConsole.ButtonHelp.onPress = function () {
if (bulletin < 0) {
PlaySound(soundClick);
bulletin = 0;
MCConsole.MCHelpWindow.gotoAndStop(1);
MCConsole.MCHelpWindow._visible = true;
} else if (bulletin == 0) {
PlaySound(soundCancel);
bulletin = -1;
MCConsole.MCHelpWindow._visible = false;
}
};
MCConsole.MCHelpWindow.ButtonIndex1.onPress = function () {
PlaySound(soundClick);
MCConsole.MCHelpWindow.gotoAndStop(1);
};
MCConsole.MCHelpWindow.ButtonIndex2.onPress = function () {
PlaySound(soundClick);
MCConsole.MCHelpWindow.gotoAndStop(2);
};
MCConsole.MCHelpWindow.ButtonIndex3.onPress = function () {
PlaySound(soundClick);
MCConsole.MCHelpWindow.gotoAndStop(3);
};
MCConsole.MCHelpWindow.ButtonIndex4.onPress = function () {
PlaySound(soundClick);
MCConsole.MCHelpWindow.gotoAndStop(4);
};
MCConsole.MCHelpWindow.ButtonIndex5.onPress = function () {
PlaySound(soundClick);
MCConsole.MCHelpWindow.gotoAndStop(5);
};
MCConsole.MCHelpWindow.ButtonIndex6.onPress = function () {
PlaySound(soundClick);
MCConsole.MCHelpWindow.gotoAndStop(6);
};
MCConsole.MCHelpWindow.ButtonIndex7.onPress = function () {
PlaySound(soundClick);
MCConsole.MCHelpWindow.gotoAndStop(7);
};
MCConsole.MCHelpWindow.ButtonIndex8.onPress = function () {
PlaySound(soundClick);
MCConsole.MCHelpWindow.gotoAndStop(8);
};
MCConsole.MCHelpWindow.ButtonIndex9.onPress = function () {
PlaySound(soundClick);
MCConsole.MCHelpWindow.gotoAndStop(9);
};
MCConsole.MCHelpWindow.ButtonPrev.onPress = function () {
PlaySound(soundClick);
MCConsole.MCHelpWindow.prevFrame();
};
MCConsole.MCHelpWindow.ButtonNext.onPress = function () {
PlaySound(soundClick);
MCConsole.MCHelpWindow.nextFrame();
};
MCConsole.MCHelpWindow.ButtonClose.onPress = function () {
PlaySound(soundCancel);
bulletin = -1;
MCConsole.MCHelpWindow._visible = false;
};
MCConsole.ButtonSound.onPress = function () {
if (isSound) {
isSound = false;
MCConsole.MCSound.gotoAndStop("off");
soundDoorBGM1.stop("doorBGM1");
soundRoomBGM1.stop("roomBGM1");
soundGameBGM0_1.stop("gameBGM0_1");
soundGameBGM1_1.stop("gameBGM1_1");
soundGameBGM2_1.stop("gameBGM2_1");
} else {
isSound = true;
MCConsole.MCSound.gotoAndPlay("on");
if (state < 0) {
PlaySound(soundDoorBGM1);
} else if (state == 0) {
PlaySound(soundRoomBGM1);
} else if ((state == 1) || (state == 2)) {
if (room == 0) {
PlaySound(soundGameBGM0_1);
} else if (room == 1) {
PlaySound(soundGameBGM1_1);
} else if ((room == 2) || (room == 3)) {
PlaySound(soundGameBGM2_1);
}
}
}
};
MCConsole.ButtonLeft.onPress = function () {
if ((bulletin < 0) && (roomV == 0)) {
PlaySound(soundSlide);
MCConsole.MCRecord.gotoAndPlay("disappear");
MCConsole.MCHead.gotoAndPlay("disappear");
roomV = -1;
with (_root["MCRoom" + ((room + 3) % 4)]) {
_x = -FLASHWIDTH;
gotoAndStop(1);
_visible = true;
}
MCConsole.MCPresent._visible = false;
}
};
MCConsole.ButtonRight.onPress = function () {
if ((bulletin < 0) && (roomV == 0)) {
PlaySound(soundSlide);
MCConsole.MCRecord.gotoAndPlay("disappear");
MCConsole.MCHead.gotoAndPlay("disappear");
roomV = 1;
with (_root["MCRoom" + ((room + 1) % 4)]) {
_x = FLASHWIDTH;
gotoAndStop(1);
_visible = true;
}
MCConsole.MCPresent._visible = false;
}
};
attachMovie("MCOpponentHandMaster", "MCOpponentHand", n++);
MCOpponentHand._visible = false;
MCOpponentHand.gotoAndStop("0release");
attachMovie("MCHandForeMaster", "MCHandFore", n++);
MCHandFore._visible = false;
MCHandFore.gotoAndStop("point");
playerColor = 1;
firstColor = 1;
winColor = 0;
wait = 0;
state = -2;
nextState = -2;
};
onMouseMove = function () {
MouseMoveProc();
};
onMouseDown = function () {
var a;
var i;
var j;
var s;
var myDate;
var t;
myDate = new Date();
t = myDate.getTime();
if (((state == playerColor) && (toDoLength == 0)) && (bulletin < 0)) {
if (MCGameBG.MCMark._visible) {
if (MCGameBG.MCMark._currentframe == 1) {
a = map[HEAVENTOP + markZ];
if (0 < transfereeNumber) {
if (forcusedTransferee < 0) {
i = 0;
while (i < transfereeNumber) {
if (stoneZ[((2 - state) * 4) + transferee[i]] == markZ) {
isGrabbing = false;
MCHandFore.gotoAndStop("paper");
forcusedTransferee = transferee[i];
Stack(3 - state, forcusedTransferee, 25);
break;
}
i++;
}
} else if (a == 0) {
isGrabbing = false;
MCHandFore.gotoAndStop("paper");
Stack(3 - state, forcusedTransferee, 100 + markZ);
map[HEAVENTOP + stoneZ[((2 - state) * 4) + forcusedTransferee]] = 0;
map[HEAVENTOP + markZ] = 3 - state;
i = 0;
while (i < transfereeNumber) {
if (transferee[i] == forcusedTransferee) {
j = i;
while (j < (transfereeNumber - 1)) {
transferee[j] = transferee[j + 1];
j++;
}
break;
}
i++;
}
transfereeNumber--;
MCGameBG.MCMark._visible = false;
} else {
PlaySound(soundClick2);
isGrabbing = false;
MCHandFore.gotoAndStop("paper");
with (MCStones[(("MCStone" + (3 - state)) + "_") + forcusedTransferee]) {
_x = _root.MCGameBG.MCGhost._x;
_y = _root.MCGameBG.MCGhost._y;
swapDepths(_root.MCStones.MCFlying);
swapDepths(_root.MCStones["MCDummy" + stoneZ[((2 - state) * 4) + forcusedTransferee]]);
}
MCGameBG.MCGhost._visible = false;
i = 0;
while (i < transfereeNumber) {
if (stoneZ[((2 - state) * 4) + transferee[i]] == markZ) {
isGrabbing = false;
MCHandFore.gotoAndStop("paper");
forcusedTransferee = transferee[i];
MouseMoveProc();
Stack(3 - state, forcusedTransferee, 25);
break;
}
i++;
}
}
} else if (0 < map[(COLOR1NUMBER - 1) + state]) {
MCGameBG.MCMark._visible = false;
isGrabbing = false;
MCHandFore.gotoAndStop("paper");
Stack(state, 4 - map[(COLOR1NUMBER - 1) + state], markZ);
map[(COLOR1NUMBER - 1) + state]--;
map[HEAVENTOP + markZ] = state;
homeAnimation[state - 1] = 9;
} else if (forcusedStone < 0) {
PlaySound(soundClick);
isGrabbing = false;
MCHandFore.gotoAndStop("paper");
i = 0;
while (i < 4) {
if (stoneZ[((playerColor * 4) - 4) + i] == markZ) {
Stack(state, i, 25);
break;
}
i++;
}
} else if (map[HEAVENTOP + markZ] == playerColor) {
PlaySound(soundClick2);
isGrabbing = false;
MCHandFore.gotoAndStop("paper");
s = MCStones[(("MCStone" + playerColor) + "_") + forcusedStone];
if (stoneZ[((playerColor * 4) - 4) + forcusedStone] < 16) {
s.gotoAndStop("heavenStand");
} else {
s.gotoAndStop("hellStand");
}
s._x = MCGameBG.MCGhost._x;
s._y = MCGameBG.MCGhost._y;
MCGameBG.MCGhost._visible = false;
s.swapDepths(_root.MCStones.MCFlying);
s.swapDepths(_root.MCStones["MCDummy" + stoneZ[((playerColor * 4) - 4) + forcusedStone]]);
i = 0;
while (i < 4) {
if (stoneZ[((playerColor * 4) - 4) + i] == markZ) {
forcusedStone = i;
MouseMoveProc();
Stack(state, i, 25);
break;
}
i++;
}
} else {
isGrabbing = false;
MCHandFore.gotoAndStop("paper");
Stack(state, forcusedStone, markZ);
map[HEAVENTOP + stoneZ[((state * 4) - 4) + forcusedStone]] = 0;
map[HEAVENTOP + markZ] = state;
MCGameBG.MCMark._visible = false;
}
} else {
PlaySound(soundCancel);
}
}
}
timeLastMouseDown = t;
};
onEnterFrame = function () {
var a;
var b;
var c;
var d;
var e;
var m;
var n;
var z;
var f;
var i;
var j;
var k;
var s;
var myDate;
if (state != nextState) {
state = nextState;
f = true;
} else {
f = false;
}
switch (state) {
case -1 :
if (f) {
MCHandFore._visible = true;
MCConsole._visible = true;
MCDoor._visible = true;
PlaySound(soundDoorBGM1);
}
myDate = new Date();
a = (((2005 - myDate.getFullYear()) * 500) + 23) - myDate.getDate();
switch (myDate.getMonth()) {
case 0 :
case 1 :
case 2 :
a = a + 150;
case 3 :
a = a + 91;
break;
case 4 :
a = a + 61;
break;
case 5 :
a = a + 30;
break;
case 6 :
break;
case 7 :
a = a - 31;
break;
default :
a = a - 100;
}
if (99 < a) {
a = 99;
}
if (a <= 0) {
MCDoor.MCDoorLeft.MCOnSale._visible = true;
} else {
MCDoor.MCDoorLeft.MCOnSale._visible = false;
MCDoor.MCDoorLeft.MCCountDownDigit10.gotoAndStop(1 + (int(a / 10) % 10));
MCDoor.MCDoorLeft.MCCountDownDigit1.gotoAndStop(1 + (a % 10));
}
if (a <= -12) {
isLevel4 = true;
MCDoor.MCDoorLeft.MCLevel4._visible = true;
MCRoom3.MCLevel4Char._visible = true;
MCRoom3.MCAbsence._visible = false;
} else {
isLevel4 = false;
MCDoor.MCDoorLeft.MCLevel4._visible = false;
MCRoom3.MCLevel4Char._visible = false;
MCRoom3.MCAbsence._visible = true;
}
break;
case 0 :
if (f) {
firstColor = 1;
SetRecord(room);
wait = 8;
}
if (0 < wait) {
if ((--wait) == 0) {
PlaySound(soundRoomBGM1);
MCDoor._visible = false;
with (MCConsole) {
ButtonLeft._visible = true;
MCLeft._visible = true;
ButtonRight._visible = true;
MCRight._visible = true;
ButtonChar._visible = true;
MCRecord.gotoAndPlay("appear");
MCHead.MCHeadGraphics.gotoAndStop(2 + room);
MCHead.gotoAndPlay("appear");
MCPresent._visible = true;
}
}
}
if (roomV != 0) {
a = _root["MCRoom" + (((room + 4) + roomV) % 4)];
a._x = a._x - (roomV * 76);
MCConsole.MCRecord.MCRecordGraphics.MCMap.MCArrow._rotation = MCConsole.MCRecord.MCRecordGraphics.MCMap.MCArrow._rotation + (roomV * 9);
if ((((_root["MCRoom" + room]._x = _root["MCRoom" + room]._x - (roomV * 76))) % 760) == 0) {
_root["MCRoom" + room]._visible = false;
room = ((room + 4) + roomV) % 4;
MCConsole.MCRecord.MCRecordGraphics.MCMap.gotoAndStop("room" + room);
roomV = 0;
SetRecord(room);
MCConsole.MCRecord.gotoAndPlay("appear");
MCConsole.MCHead.MCHeadGraphics.gotoAndStop(2 + room);
MCConsole.MCHead.gotoAndPlay("appear");
if (room < 3) {
MCConsole.ButtonChar._visible = true;
} else {
MCConsole.ButtonChar._visible = isLevel4;
}
}
}
break;
case 1 :
case 2 :
if (f) {
map[NOWCOLOR] = state;
if (state == playerColor) {
MCGameBG.MCTurn.gotoAndPlay("opponent");
isGrabbing = false;
MouseMoveProc();
} else {
MCGameBG.MCTurn.gotoAndPlay("you");
f = false;
if (0 < numberMove) {
if (phaseCount[numberMove - 1] == 2) {
MCGameBG.MCTutorial.gotoAndStop("twice");
f = true;
}
}
if ((!f) && ((latestInfo[0] == 4) || (latestInfo[1] == 4))) {
MCGameBG.MCTutorial.gotoAndStop("bad4");
f = true;
}
if ((!f) && (5 <= latestInfo[playerColor - 1])) {
if (latestInfo[(2 + playerColor) - 1] == 4) {
MCGameBG.MCTutorial.gotoAndStop("badFrom4");
f = true;
}
}
if ((!f) && (5 <= latestInfo[state - 1])) {
if (latestInfo[(2 + state) - 1] == 4) {
MCGameBG.MCTutorial.gotoAndStop("badFrom4");
f = true;
} else if (latestInfo[(2 + state) - 1] < 5) {
MCGameBG.MCTutorial.gotoAndStop("bad3");
f = true;
}
}
if (!f) {
MCGameBG.MCTutorial.gotoAndStop("think");
}
thinkingStone = -1;
}
if (0 < map[(COLOR1NUMBER - 1) + state]) {
Stack(state, 4 - map[(COLOR1NUMBER - 1) + state], 25);
} else {
f = true;
i = 0;
while (i < 4) {
z = stoneZ[((state * 4) - 4) + i];
if (z < 16) {
j = 0;
while (j < NEXTTOHEAVENLENGTH[z]) {
if (map[HELLTOP + NEXTTOHEAVEN[(z * 4) + j]] == 0) {
f = false;
break;
}
j++;
}
} else {
f = false;
}
if (!f) {
break;
}
i++;
}
if (f) {
PlaySound(soundCancel);
MCGameBG.MCPass.gotoAndPlay("pass");
nextState = 3 - state;
break;
}
}
}
if (state == playerColor) {
if (toDoLength == 0) {
if (((0 <= forcusedStone) || ((0 < transfereeNumber) && (0 <= forcusedTransferee))) && ((!isGrabbing) || (!MCGameBG.MCMark._visible))) {
if (0 <= forcusedStone) {
s = MCStones[(("MCStone" + state) + "_") + forcusedStone];
} else {
s = MCStones[(("MCStone" + (3 - state)) + "_") + forcusedTransferee];
}
a = MCHandFore._x - s._x;
b = MCHandFore._y - s._y;
c = Math.sqrt((a * a) + (b * b));
if (MCGameBG.MCMark._visible && (c < 100)) {
if (c <= HANDSPEED) {
s._x = MCHandFore._x;
s._y = MCHandFore._y;
isGrabbing = true;
PlaySound(soundGrab);
MCHandFore.gotoAndStop("pick");
} else {
MCHandFore.gotoAndStop("paper");
s._x = s._x + ((a * HANDSPEED) / c);
s._y = s._y + ((b * HANDSPEED) / c);
}
} else {
isGrabbing = false;
MCHandFore.gotoAndStop("point");
a = MCGameBG.MCGhost._x - s._x;
b = MCGameBG.MCGhost._y - s._y;
c = Math.sqrt((a * a) + (b * b));
if (c <= HANDSPEED) {
s._x = MCGameBG.MCGhost._x;
s._y = MCGameBG.MCGhost._y;
} else {
s._x = s._x + ((a * HANDSPEED) / c);
s._y = s._y + ((b * HANDSPEED) / c);
}
}
}
}
if (OPPONENTHANDHOMEY < MCOpponentHand._y) {
MCOpponentHand._y = MCOpponentHand._y - HANDSPEED;
MCOpponentHand._x = MCOpponentHand._x + ((OPPONENTHANDHOMEX - MCOpponentHand._x) / int(((MCOpponentHand._y - OPPONENTHANDHOMEY) / HANDSPEED) + 1));
}
f = false;
if (0 < toDoLength) {
MCGameBG.MCTutorial.gotoAndStop("no");
f = true;
} else if (0 < numberMove) {
if (phaseCount[numberMove - 1] == 2) {
MCGameBG.MCTutorial.gotoAndStop("twice");
f = true;
}
}
if (!f) {
if (((0 <= forcusedStone) || ((0 < transfereeNumber) && (0 <= forcusedTransferee))) && (!isGrabbing)) {
MCGameBG.MCTutorial.gotoAndStop("doGrab");
} else if ((map[COLOR1NUMBER] + map[COLOR2NUMBER]) == 8) {
MCGameBG.MCTutorial.gotoAndStop("first");
} else if (transfereeNumber == 1) {
if (stoneZ[((2 - playerColor) * 4) + transferee[0]] < 16) {
MCGameBG.MCTutorial.gotoAndStop("transfer1Heaven");
} else {
MCGameBG.MCTutorial.gotoAndStop("transfer1Hell");
}
} else if (0 < transfereeNumber) {
if (forcusedTransferee < 0) {
MCGameBG.MCTutorial.gotoAndStop("transferPluralChoose");
} else {
MCGameBG.MCTutorial.gotoAndStop("transferPlural");
}
} else {
f = false;
if ((latestInfo[0] == 4) || (latestInfo[1] == 4)) {
MCGameBG.MCTutorial.gotoAndStop("bad4");
f = true;
} else if (5 <= latestInfo[(3 - playerColor) - 1]) {
if (latestInfo[(5 - playerColor) - 1] == 4) {
MCGameBG.MCTutorial.gotoAndStop("badFrom4");
f = true;
}
}
if ((!f) && (5 <= latestInfo[playerColor - 1])) {
if (latestInfo[(2 + playerColor) - 1] == 4) {
MCGameBG.MCTutorial.gotoAndStop("badFrom4");
f = true;
} else if (latestInfo[(2 + playerColor) - 1] < 5) {
MCGameBG.MCTutorial.gotoAndStop("bad3");
f = true;
}
}
if (!f) {
if (0 < map[(COLOR1NUMBER - 1) + playerColor]) {
MCGameBG.MCTutorial.gotoAndStop("any");
} else if (0 <= forcusedStone) {
if (stoneZ[((playerColor * 4) - 4) + forcusedStone] < 16) {
MCGameBG.MCTutorial.gotoAndStop("fromHeaven");
} else {
MCGameBG.MCTutorial.gotoAndStop("fromHell");
}
} else {
MCGameBG.MCTutorial.gotoAndStop("choose");
}
}
}
}
}
if (0 < wait) {
wait--;
} else if (0 < toDoLength) {
a = toDo[toDoLength - 1];
c = int(a / 100);
if (100 <= c) {
c = c - 100;
isTransfering = true;
} else {
isTransfering = false;
}
b = int(a / 10) % 10;
a = a % 10;
s = MCStones[(("MCStone" + a) + "_") + b];
z = stoneZ[((a * 4) - 4) + b];
if (toDoAnimation == 0) {
if (c < 25) {
toDoAnimation = 6;
sx = s._x;
sy = s._y;
if (c < 16) {
dx = FLOORX + ((c % 4) * FLOORSPACING);
dy = FLOORY + (int(c / 4) * FLOORSPACING);
if (z < 16) {
s.gotoAndPlay("jumpUpright");
} else if (dx < sx) {
s.gotoAndPlay("jumpUpCCW");
} else {
s.gotoAndPlay("jumpUpCW");
}
} else {
dx = FLOORX + ((((c - 16) % 3) + 0.5) * FLOORSPACING);
dy = FLOORY + ((int((c - 16) / 3) + 0.5) * FLOORSPACING);
if (dx < sx) {
s.gotoAndPlay("jumpDownCCW");
} else {
s.gotoAndPlay("jumpDownCW");
}
}
} else if (c == 25) {
if (state == playerColor) {
if (0 <= z) {
s.swapDepths(MCStones["MCDummy" + z]);
}
s.swapDepths(MCStones.MCFlying);
if (z < 16) {
s.gotoAndPlay("heavenForcus");
} else {
s.gotoAndPlay("hellForcus");
}
MCGameBG.MCGhost._x = s._x;
MCGameBG.MCGhost._y = s._y;
MCGameBG.MCGhost._visible = true;
if (a == playerColor) {
forcusedStone = b;
MouseMoveProc();
} else {
forcusedTransferee = b;
}
toDoAnimation = 1;
} else {
sx = MCOpponentHand._x;
sy = MCOpponentHand._y;
if (z < 0) {
dx = COMPUTERHOMEX;
dy = COMPUTERHOMEY;
} else if (z < 16) {
dx = FLOORX + ((z % 4) * FLOORSPACING);
dy = FLOORY + (int(z / 4) * FLOORSPACING);
} else {
dx = FLOORX + ((((z - 16) % 3) + 0.5) * FLOORSPACING);
dy = FLOORY + ((int((z - 16) / 3) + 0.5) * FLOORSPACING);
}
toDoAnimation = 5;
}
} else {
toDoAnimation = 17;
}
}
toDoAnimation--;
if (c < 25) {
with (s) {
_x = dx + ((toDoAnimation * (sx - dx)) / 6);
_y = dy + ((toDoAnimation * (sy - dy)) / 6);
}
if (state != playerColor) {
MCOpponentHand._x = s._x;
MCOpponentHand._y = s._y + ((toDoAnimation - 6) * 10);
}
} else if (c == 25) {
if (state != playerColor) {
MCOpponentHand._x = dx + ((toDoAnimation * (sx - dx)) / 5);
MCOpponentHand._y = dy + ((toDoAnimation * (sy - dy)) / 5);
}
} else if ((toDoAnimation % 5) == 4) {
if (toDoAnimation == 14) {
soundGameBGM0_1.stop("gameBGM0_1");
soundGameBGM1_1.stop("gameBGM1_1");
soundGameBGM2_1.stop("gameBGM2_1");
}
d = map[((COLOR1INFO - 1) + 3) - winColor] - 100;
if (d < 10) {
f = false;
e = 0;
i = 0;
while (i < 4) {
b = 0;
while (b < 4) {
if (stoneZ[((winColor * 4) - 4) + b] == HEAVENROW[(d * 4) + i]) {
if ((e++) == ((14 - toDoAnimation) / 5)) {
f = true;
break;
}
}
b++;
}
if (f) {
break;
}
i++;
}
} else if (d < 18) {
b = 0;
while (b < 4) {
if (stoneZ[((winColor * 4) - 4) + b] == (16 + HELLROW[((d - 10) * 3) + ((14 - toDoAnimation) / 5)])) {
break;
}
b++;
}
} else {
b = 0;
while (b < 4) {
if (stoneZ[((winColor * 4) - 4) + b] == HEAVENROW2[((d - 18) * 3) + ((14 - toDoAnimation) / 5)]) {
break;
}
b++;
}
}
PlaySound(soundThree);
MCStones[(("MCStone" + winColor) + "_") + b].gotoAndPlay("win");
}
if (toDoAnimation == 0) {
if (c < 25) {
if (state == playerColor) {
MCHandFore.gotoAndStop("point");
} else {
MCOpponentHand.gotoAndStop(room + "release");
}
stoneZ[((a * 4) - 4) + b] = c;
if (c < 16) {
PlaySound(soundHeavenSettle);
} else {
PlaySound(soundHellSettle);
}
if (isTransfering) {
map[(COLOR1INFO - 1) + a] = 1;
if (c < 16) {
s.gotoAndStop("heavenStand");
} else {
s.gotoAndStop("hellStand");
}
forcusedTransferee = -1;
} else {
forcusedStone = -1;
}
MCGameBG.MCGhost._visible = false;
s.swapDepths(MCStones.MCFlying);
s.swapDepths(MCStones["MCDummy" + c]);
} else if (c == 25) {
if (state != playerColor) {
MCOpponentHand.gotoAndStop(room + "grab");
if (0 <= z) {
s.swapDepths(MCStones["MCDummy" + z]);
}
s.swapDepths(MCStones.MCFlying);
MCGameBG.MCGhost._x = s._x;
MCGameBG.MCGhost._y = s._y;
MCGameBG.MCGhost._visible = true;
if (a == playerColor) {
PlaySound(soundTransfer);
forcusedTransferee = b;
} else {
PlaySound(soundGrab);
forcusedStone = b;
wait = 5;
}
if (z < 16) {
s.gotoAndPlay("heavenForcus");
} else {
s.gotoAndPlay("hellForcus");
}
}
}
if ((--toDoLength) == 0) {
if (c < 25) {
map[COLOR1INFO] = map[COLOR1INFO] * -1;
map[COLOR2INFO] = map[COLOR2INFO] * -1;
Score(0);
PutCheck();
d = map[(COLOR1SCORE - 1) + playerColor] - map[((COLOR1SCORE - 1) + 3) - playerColor];
if (500 < d) {
MCGameBG.MCOpponent.gotoAndStop(room + "surprise");
} else if (d <= -300) {
MCGameBG.MCOpponent.gotoAndStop(room + "happy");
} else {
MCGameBG.MCOpponent.gotoAndStop(room + "normal");
}
if (map[COLOR1INFO] == 3) {
winColor = 1;
Stack(0, 0, 26);
} else if (map[COLOR2INFO] == 3) {
winColor = 2;
Stack(0, 0, 26);
} else if (a == playerColor) {
if (isTransfering) {
RemoveTransferMark();
nextState = 3 - state;
} else {
SetSandwich(0, a, c);
if (0 < transfereeNumber) {
PlaySound(soundTransfer);
PutTransferMark(3 - playerColor);
if (transfereeNumber == 1) {
forcusedTransferee = transferee[0];
Stack(3 - playerColor, forcusedTransferee, 25);
} else {
forcusedTransferee = -1;
}
} else {
nextState = 3 - state;
}
}
} else if (isTransfering) {
if (0 < transfereeNumber) {
if (transfereeNumber == 1) {
Stack(3 - playerColor, transferee[0], 25);
}
} else {
RemoveTransferMark();
nextState = 3 - state;
}
} else {
SetSandwich(0, a, c);
if (0 < transfereeNumber) {
PlaySound(soundTransfer);
PutTransferMark(playerColor);
Stack(playerColor, transferee[0], 25);
Stack(playerColor, transferee[0], 100 + bestDestination);
map[HEAVENTOP + stoneZ[((playerColor * 4) - 4) + transferee[0]]] = 0;
map[HEAVENTOP + bestDestination] = playerColor;
if (transfereeNumber == 1) {
wait = 6;
} else {
i = 1;
while (i < transfereeNumber) {
d = 200000 /* 0x030D40 */;
e = 0;
n = MAPSIZE;
j = 0;
while (j < 25) {
if (map[HEAVENTOP + j] != 0) {
} else {
f = false;
k = 0;
while (k < transferMarkNumber) {
if (j == transferMarkZ[k]) {
f = true;
break;
}
k++;
}
if (f) {
} else {
CopyMap(0, n);
map[(n + HEAVENTOP) + stoneZ[((playerColor * 4) - 4) + transferee[i]]] = 0;
map[(n + HEAVENTOP) + j] = playerColor;
map[((n + COLOR1INFO) - 1) + state] = map[((n + COLOR1INFO) - 1) + state] * -1;
map[((n + COLOR1INFO) - 1) + playerColor] = -1;
Score(n);
b = map[((n + COLOR1CANWIN) - 1) + playerColor] * 10000;
if (b == 0) {
if (room == 1) {
b = (-map[((n + COLOR1CANWIN) - 1) + state]) - GetRandom();
} else {
b = ((-10000 + (map[((n + COLOR1SCORE) - 1) + playerColor] * (0.95 + (GetRandom() * 0.05)))) - (map[((n + COLOR1SCORE) - 1) + state] * (0.1 + (GetRandom() * 0.2)))) - GetRandom();
}
}
if (b < d) {
if (room == 3) {
if (map[((n + COLOR1SCORE) - 1) + state] < 10000) {
if (CanMakeHard(n)) {
b = b + 10000;
}
}
}
if (b < d) {
d = b;
e = j;
}
}
}
}
j++;
}
Stack(playerColor, transferee[i], 25);
Stack(playerColor, transferee[i], 100 + e);
map[HEAVENTOP + stoneZ[((playerColor * 4) - 4) + transferee[i]]] = 0;
map[HEAVENTOP + e] = playerColor;
i++;
}
}
transfereeNumber = 0;
} else {
nextState = 3 - state;
}
}
if (state != nextState) {
latestInfo[3] = latestInfo[1];
latestInfo[2] = latestInfo[0];
latestInfo[1] = map[COLOR2INFO];
latestInfo[0] = map[COLOR1INFO];
RememberPhase();
phaseCount[numberMove] = 1;
i = numberMove - 1;
while (0 <= i) {
if (phase[i] == phase[numberMove]) {
phaseCount[numberMove] = phaseCount[i] + 1;
if (phaseCount[numberMove] == 3) {
numberMove = MAXPHASE;
nextState = 3;
}
}
i--;
}
numberMove++;
if (numberMove == MAXPHASE) {
nextState = 3;
}
}
} else if (c == 25) {
} else {
nextState = 3;
}
}
}
} else if (state != playerColor) {
a = map[(COLOR1NUMBER - 1) + state];
if (a == 4) {
if (map[(COLOR1NUMBER - 1) + playerColor] == 4) {
a = int(GetRandom() * 4);
c = (5 + (int(a / 2) * 4)) + (a % 2);
} else {
a = stoneZ[(playerColor * 4) - 4];
if (room < 3) {
b = int(GetRandom() * 8);
} else {
b = int(GetRandom() * 7);
if ((((a == 6) && (5 <= b)) || ((a == 9) && (2 <= b))) || (a == 10)) {
b++;
}
}
if (4 <= b) {
b++;
}
c = ((a - 5) + (int(b / 3) * 4)) + (b % 3);
}
Stack(state, 0, c);
map[(COLOR1NUMBER - 1) + state]--;
map[HEAVENTOP + c] = state;
homeAnimation[state - 1] = 9;
} else if (0 < a) {
if (thinkingStone < 0) {
forbiddenPlace = "";
if (numberMove == 2) {
b = history;
c = "";
if (room < 3) {
if ((b == "GD") || (b == "GJ")) {
c = "L";
} else if ((b == "HC") || (b == "HM")) {
c = "K";
} else if ((b == "KF") || (b == "KP")) {
c = "H";
} else if ((b == "LI") || (b == "LO")) {
c = "G";
}
} else if (b == "GD") {
c = "BCHKEQFJPMN RSTUVWXYZ";
} else if (b == "GJ") {
c = "BFHKNQCDMPE RSTUVWXYZ";
} else if (b == "HC") {
c = "DEGLBNIMOJQ RSTUVWXYZ";
} else if (b == "HM") {
c = "EIGLQNDCJOB RSTUVWXYZ";
} else if (b == "KF") {
c = "JNGLBEOPIDQ RSTUVWXYZ";
} else if (b == "KP") {
c = "NOGLQEJFDIB RSTUVWXYZ";
} else if (b == "LI") {
c = "MQHKEBPOFCN RSTUVWXYZ";
} else if (b == "LO") {
c = "PQHKNBMICFE RSTUVWXYZ";
} else if (b == "GC") {
c = "DEH K";
} else if (b == "GF") {
c = "JNK H";
} else if (b == "HD") {
c = "CBG L";
} else if (b == "HI") {
c = "MQL G";
} else if (b == "KJ") {
c = "FBG L";
} else if (b == "KO") {
c = "PQL G";
} else if (b == "LM") {
c = "IEH K";
} else if (b == "LP") {
c = "ONK H";
} else if (b == "GB") {
c = "DJCFEN HKLMP RSTUVWXYZ";
} else if (b == "HE") {
c = "CMDIBQ GLKJO RSTUVWXYZ";
} else if (b == "KN") {
c = "FPJOBQ GLHDI RSTUVWXYZ";
} else if (b == "LQ") {
c = "IOMPEN HKGCF RSTUVWXYZ";
}
forbiddenPlace = c;
}
bestStone = (thinkingStone = 4 - a);
bestDirection = (thinkingDirection = (thinkingOrigin = int(GetRandom() * 25)));
bestScore = 200000 /* 0x030D40 */;
MCGameBG.MCMark.gotoAndStop("thinking");
MCGameBG.MCMark._visible = true;
}
SetMarkPosition(thinkingDirection);
n = MAPSIZE;
if ((map[HEAVENTOP + thinkingDirection] == 0) && (forbiddenPlace.indexOf(String.fromCharCode(66 + thinkingDirection)) < 0)) {
CopyMap(0, n);
map[((n + COLOR1NUMBER) - 1) + state]--;
map[(n + HEAVENTOP) + thinkingDirection] = state;
map[n + COLOR1INFO] = map[n + COLOR1INFO] * -1;
map[n + COLOR2INFO] = map[n + COLOR2INFO] * -1;
Score(n);
if (map[((n + COLOR1INFO) - 1) + state] == 3) {
bestDirection = thinkingDirection;
thinkingDirection = thinkingOrigin - 1;
} else {
SetSandwich(n, state, thinkingDirection);
if (0 < transfereeNumber) {
if (room != 0) {
m = n + MAPSIZE;
if (3 <= transfereeNumber) {
bestScore = 200000 /* 0x030D40 */;
}
i = 0;
while (i < 25) {
if ((map[(n + HEAVENTOP) + i] != 0) || (i == stoneZ[((playerColor * 4) - 4) + transferee[0]])) {
} else {
CopyMap(n, m);
map[(m + HEAVENTOP) + stoneZ[((playerColor * 4) - 4) + transferee[0]]] = 0;
map[(m + HEAVENTOP) + i] = playerColor;
map[((m + COLOR1INFO) - 1) + state] = map[((m + COLOR1INFO) - 1) + state] * -1;
map[((m + COLOR1INFO) - 1) + playerColor] = -1;
Score(m);
b = map[((m + COLOR1CANWIN) - 1) + playerColor] * 10000;
if (b == 0) {
if (room == 1) {
b = (-map[((m + COLOR1CANWIN) - 1) + state]) - GetRandom();
} else {
b = ((-10000 + (map[((m + COLOR1SCORE) - 1) + playerColor] * (0.95 + (GetRandom() * 0.05)))) - (map[((m + COLOR1SCORE) - 1) + state] * (0.1 + (GetRandom() * 0.2)))) - GetRandom();
}
}
if (b < bestScore) {
if (room == 3) {
if (map[((m + COLOR1SCORE) - 1) + state] < 10000) {
if (CanMakeHard(m)) {
b = b + 10000;
}
}
}
if (b < bestScore) {
bestScore = b;
bestDirection = thinkingDirection;
bestDestination = i;
}
}
}
i++;
}
if (3 <= transfereeNumber) {
thinkingDirection = thinkingOrigin - 1;
}
}
} else {
b = map[((n + COLOR1CANWIN) - 1) + playerColor] * 10000;
if (b == 0) {
if (room < 2) {
b = (-map[((n + COLOR1CANWIN) - 1) + state]) - GetRandom();
} else {
b = ((-10000 + (map[((n + COLOR1SCORE) - 1) + playerColor] * (0.95 + (GetRandom() * 0.05)))) - (map[((n + COLOR1SCORE) - 1) + state] * (0.1 + (GetRandom() * 0.2)))) - GetRandom();
}
}
if (b < bestScore) {
if (room == 3) {
if (map[((n + COLOR1SCORE) - 1) + state] < 10000) {
if (CanMakeHard(n)) {
b = b + 10000;
}
}
}
if (b < bestScore) {
bestScore = b;
bestDirection = thinkingDirection;
}
}
}
}
}
thinkingDirection = (++thinkingDirection) % 25;
if (thinkingDirection == thinkingOrigin) {
MCGameBG.MCMark._visible = false;
Stack(state, bestStone, bestDirection);
map[(COLOR1NUMBER - 1) + state]--;
map[HEAVENTOP + bestDirection] = state;
homeAnimation[state - 1] = 9;
}
} else {
if (thinkingStone < 0) {
bestStone = (thinkingStone = (thinkingOrigin = int(GetRandom() * 4)));
thinkingDirection = 0;
bestScore = 200000 /* 0x030D40 */;
bestDirection = 0;
MCGameBG.MCMark.gotoAndStop("thinking");
MCGameBG.MCMark._visible = true;
}
f = false;
n = MAPSIZE;
z = stoneZ[((state * 4) - 4) + thinkingStone];
SetMarkPosition(z);
if (z < 16) {
a = HELLTOP + NEXTTOHEAVEN[(z * 4) + thinkingDirection];
} else {
a = HEAVENTOP + NEXTTOHELL[((z - 16) * 4) + thinkingDirection];
}
if (map[a] == 0) {
CopyMap(0, n);
map[(n + HEAVENTOP) + z] = 0;
map[n + a] = state;
f = true;
}
if (f) {
map[n + COLOR1INFO] = map[n + COLOR1INFO] * -1;
map[n + COLOR2INFO] = map[n + COLOR2INFO] * -1;
Score(n);
if (map[((n + COLOR1INFO) - 1) + state] == 3) {
bestStone = thinkingStone;
bestDirection = thinkingDirection;
thinkingStone = thinkingOrigin - 1;
thinkingDirection = 3;
} else {
SetSandwich(n, state, a);
if (0 < transfereeNumber) {
if (room != 0) {
m = n + MAPSIZE;
if (3 <= transfereeNumber) {
bestScore = 200000 /* 0x030D40 */;
}
i = 0;
while (i < 25) {
if ((map[(n + HEAVENTOP) + i] != 0) || (i == stoneZ[((playerColor * 4) - 4) + transferee[0]])) {
} else {
CopyMap(n, m);
map[(m + HEAVENTOP) + stoneZ[((playerColor * 4) - 4) + transferee[0]]] = 0;
map[(m + HEAVENTOP) + i] = playerColor;
map[((m + COLOR1INFO) - 1) + state] = map[((m + COLOR1INFO) - 1) + state] * -1;
map[((m + COLOR1INFO) - 1) + playerColor] = -1;
Score(m);
b = map[((m + COLOR1CANWIN) - 1) + playerColor] * 10000;
if (b == 0) {
if (room == 1) {
b = (-map[((m + COLOR1CANWIN) - 1) + state]) - GetRandom();
} else {
b = ((-10000 + (map[((m + COLOR1SCORE) - 1) + playerColor] * (0.95 + (GetRandom() * 0.05)))) - (map[((m + COLOR1SCORE) - 1) + state] * (0.1 + (GetRandom() * 0.2)))) - GetRandom();
}
}
if (b < bestScore) {
if (room == 3) {
if (map[((m + COLOR1SCORE) - 1) + state] < 10000) {
if (CanMakeHard(m)) {
b = b + 10000;
}
}
}
if (b < bestScore) {
bestScore = b;
bestStone = thinkingStone;
bestDirection = thinkingDirection;
bestDestination = i;
}
}
}
i++;
}
if (3 <= transfereeNumber) {
thinkingStone = thinkingOrigin - 1;
thinkingDirection = 3;
}
}
} else {
b = map[((n + COLOR1CANWIN) - 1) + playerColor] * 10000;
if (b == 0) {
if (room < 2) {
b = (-map[((n + COLOR1CANWIN) - 1) + state]) - GetRandom();
} else {
b = ((-10000 + (map[((n + COLOR1SCORE) - 1) + playerColor] * (0.95 + (GetRandom() * 0.05)))) - (map[((n + COLOR1SCORE) - 1) + state] * (0.1 + (GetRandom() * 0.2)))) - GetRandom();
}
}
if (b < bestScore) {
if (room == 3) {
if (map[((n + COLOR1SCORE) - 1) + state] < 10000) {
if (CanMakeHard(n)) {
b = b + 10000;
}
}
}
if (b < bestScore) {
bestScore = b;
bestStone = thinkingStone;
bestDirection = thinkingDirection;
}
}
}
}
}
thinkingDirection++;
f = false;
if (z < 16) {
if (NEXTTOHEAVENLENGTH[z] <= thinkingDirection) {
f = true;
}
} else if (thinkingDirection == 4) {
f = true;
}
if (f) {
thinkingStone = (++thinkingStone) % 4;
if (thinkingStone == thinkingOrigin) {
MCGameBG.MCMark._visible = false;
a = stoneZ[((state * 4) - 4) + bestStone];
map[HEAVENTOP + a] = 0;
if (a < 16) {
b = NEXTTOHEAVEN[(a * 4) + bestDirection];
Stack(state, bestStone, 25);
Stack(state, bestStone, 16 + b);
map[HELLTOP + b] = state;
} else {
b = NEXTTOHELL[((a - 16) * 4) + bestDirection];
Stack(state, bestStone, 25);
Stack(state, bestStone, b);
map[HEAVENTOP + b] = state;
}
} else {
thinkingDirection = 0;
}
}
}
if (toDoLength) {
MCGameBG.MCTutorial.gotoAndStop("no");
}
}
i = 1;
while (i <= 2) {
if (0 < homeAnimation[i - 1]) {
if (i == playerColor) {
a = PLAYERHOMEX + (3 * HOMESPACING);
b = -1;
} else {
a = COMPUTERHOMEX;
b = 1;
}
if (homeAnimation[i - 1] == 9) {
j = 0;
while (j < map[(COLOR1NUMBER - 1) + i]) {
MCStones[(("MCStone" + i) + "_") + ((4 - map[(COLOR1NUMBER - 1) + i]) + j)].gotoAndPlay("homeProgress");
j++;
}
}
homeAnimation[i - 1]--;
j = 0;
while (j < map[(COLOR1NUMBER - 1) + i]) {
with (MCStones[(("MCStone" + i) + "_") + ((4 - map[(COLOR1NUMBER - 1) + i]) + j)]) {
_x = a + (((((j * 12) + homeAnimation[i - 1]) * b) * HOMESPACING) / 12);
}
j++;
}
}
i++;
}
break;
case 3 :
if (!f) {
break;
}
record[room * 4]++;
MCGameBG.MCTutorial.gotoAndStop("no");
if (MAXPHASE <= numberMove) {
soundGameBGM0_1.stop("gameBGM0_1");
soundGameBGM1_1.stop("gameBGM1_1");
soundGameBGM2_1.stop("gameBGM2_1");
PlaySound(soundLose);
if (numberMove == MAXPHASE) {
MCResult.MCThreeTimes._visible = false;
MCResult.MCMaxPhase._visible = true;
} else {
MCResult.MCThreeTimes._visible = true;
MCResult.MCMaxPhase._visible = false;
}
MCResult.gotoAndPlay("draw");
MCGameBG.MCOpponent.gotoAndStop(room + "sad");
record[(room * 4) + 2] = 0;
} else if (winColor == playerColor) {
PlaySound(soundWin);
MCResult.MCThreeTimes._visible = false;
MCResult.MCMaxPhase._visible = false;
MCResult.gotoAndPlay("youwin");
MCGameBG.MCOpponent.gotoAndStop(room + "sad");
record[(room * 4) + 1]++;
if ((++record[(room * 4) + 2]) == 3) {
if (record[(room * 4) + 3] == 0) {
record[(room * 4) + 3]++;
}
}
} else {
PlaySound(soundLose);
MCResult.MCThreeTimes._visible = false;
MCResult.MCMaxPhase._visible = false;
MCResult.gotoAndPlay("youlose");
MCGameBG.MCOpponent.gotoAndStop(room + "happy");
record[(room * 4) + 2] = 0;
}
wantRetry = true;
bulletin = 3;
MCResult._visible = true;
SOSimpei.data.recordJoined = record.join(" ");
SOSimpei.flush();
MCOpponentHand._visible = false;
SetRecord(room);
MCConsole.MCRecord.gotoAndPlay("appear");
}
PutShadow();
};
Symbol 51 MovieClip Frame 8
stop();
Symbol 51 MovieClip Frame 13
stop();
Symbol 58 MovieClip Frame 8
stop();
Symbol 58 MovieClip Frame 13
stop();
Symbol 79 Button
on (release) {
_parent.gotoAndPlay("1-2");
_parent.kruri.gotoAndPlay("currentFrame + 1");
}
Symbol 163 MovieClip Frame 2
gotoAndPlay ("on");
Symbol 213 MovieClip [MCStone2Master] Frame 10
gotoAndStop ("normal");
Symbol 213 MovieClip [MCStone2Master] Frame 14
gotoAndPlay ("heavenForcus");
Symbol 213 MovieClip [MCStone2Master] Frame 16
gotoAndPlay ("hellForcus");
Symbol 213 MovieClip [MCStone2Master] Frame 22
gotoAndStop ("heavenStand");
Symbol 213 MovieClip [MCStone2Master] Frame 28
gotoAndStop ("hellStand");
Symbol 213 MovieClip [MCStone2Master] Frame 34
gotoAndStop ("hellStand");
Symbol 213 MovieClip [MCStone2Master] Frame 40
gotoAndStop ("heavenStand");
Symbol 213 MovieClip [MCStone2Master] Frame 46
gotoAndStop ("heavenStand");
Symbol 213 MovieClip [MCStone2Master] Frame 48
gotoAndPlay ("transfer");
Symbol 213 MovieClip [MCStone2Master] Frame 50
gotoAndPlay ("transferWait");
Symbol 213 MovieClip [MCStone2Master] Frame 57
gotoAndPlay ("win");
Symbol 213 MovieClip [MCStone2Master] Frame 60
gotoAndPlay ("lose");
Symbol 231 MovieClip [MCStone1Master] Frame 10
gotoAndStop ("normal");
Symbol 231 MovieClip [MCStone1Master] Frame 14
gotoAndPlay ("heavenForcus");
Symbol 231 MovieClip [MCStone1Master] Frame 16
gotoAndPlay ("hellForcus");
Symbol 231 MovieClip [MCStone1Master] Frame 22
gotoAndStop ("heavenStand");
Symbol 231 MovieClip [MCStone1Master] Frame 28
gotoAndStop ("hellStand");
Symbol 231 MovieClip [MCStone1Master] Frame 34
gotoAndStop ("hellStand");
Symbol 231 MovieClip [MCStone1Master] Frame 40
gotoAndStop ("heavenStand");
Symbol 231 MovieClip [MCStone1Master] Frame 46
gotoAndStop ("heavenStand");
Symbol 231 MovieClip [MCStone1Master] Frame 48
gotoAndPlay ("transfer");
Symbol 231 MovieClip [MCStone1Master] Frame 50
gotoAndPlay ("transferWait");
Symbol 231 MovieClip [MCStone1Master] Frame 57
gotoAndPlay ("win");
Symbol 231 MovieClip [MCStone1Master] Frame 60
gotoAndPlay ("lose");
Symbol 308 MovieClip Frame 14
stop();
Symbol 308 MovieClip Frame 28
stop();
Symbol 325 MovieClip Frame 1
stop();
Symbol 325 MovieClip Frame 20
stop();
Symbol 379 MovieClip [MCDoorMaster] Frame 13
stop();
Symbol 485 MovieClip Frame 17
this.stop();
Symbol 496 MovieClip Frame 60
this.stop();
Symbol 500 MovieClip [MCResultMaster] Frame 31
gotoAndStop ("questionRetry");
Symbol 500 MovieClip [MCResultMaster] Frame 62
gotoAndStop ("questionRetry");
Symbol 500 MovieClip [MCResultMaster] Frame 93
gotoAndStop ("questionRetry");
Symbol 506 MovieClip Frame 1
onEnterFrame = function () {
if (pseudoPercent == undefined) {
_root.state = -2;
_root.nextState = -2;
pseudoPercent = 0;
}
if (_root.state == -2) {
percent = int((_root.getBytesLoaded() / _root.getBytesTotal()) * 100);
pseudoPercent = pseudoPercent + 10;
if (percent > pseudoPercent) {
percent = pseudoPercent;
}
bar._xscale = percent;
if (percent == 100) {
_root.nextState = -1;
_root.MCLoading._visible = false;
}
}
};