Files
AM2R-Community-Updates/scripts/chStepSpiderBall.gml
2020-12-22 20:54:55 -06:00

125 lines
4.9 KiB
Plaintext

/// chStepSpiderBall()
if (state == SPIDERBALL) {
xVel = 0;
yVel = 0;
sbstate = 0;
edgedl = position_meeting(x - 7, y + 1, oSolid);
edgedr = position_meeting(x + 7, y + 1, oSolid);
edgeul = position_meeting(x - 7, y - 15, oSolid);
edgeur = position_meeting(x + 7, y - 15, oSolid);
if (isCollisionBottom(0) == 1) y -= 1;
if (isCollisionTop(0) == 1) y += 1;
if (isCollisionLeft(0) == 1) x += 1;
if (isCollisionRight(0) == 1) x -= 1;
if ((isCollisionBottom(1) == 1 || isCollisionPlatformBottom(1) == 1) && isCollisionRight(1) == 0 && isCollisionLeft(1) == 0) sbstate = 1;
if (isCollisionRight(1) == 1 && isCollisionBottom(1) == 0 && isCollisionTop(1) == 0) sbstate = 2;
if (isCollisionTop(1) == 1 && isCollisionRight(1) == 0 && isCollisionLeft(1) == 0) sbstate = 3;
if (isCollisionLeft(1) == 1 && isCollisionBottom(1) == 0 && isCollisionTop(1) == 0) sbstate = 4;
if (isCollisionBottom(1) == 1 && isCollisionRight(1) == 1) sbstate = 5;
if (isCollisionTop(1) == 1 && isCollisionRight(1) == 1) sbstate = 6;
if (isCollisionTop(1) == 1 && isCollisionLeft(1) == 1) sbstate = 7;
if (isCollisionBottom(1) == 1 && isCollisionLeft(1) == 1) sbstate = 8;
if (isCollisionBottom(1) == 0 && isCollisionLeft(1) == 0 && isCollisionRight(1) == 0 && isCollisionTop(1) == 0) {
if (edgedl == 1 && edgeul == 0 && edgeur == 0 && edgedr == 0) sbstate = 9;
if (edgeul == 1 && edgedl == 0 && edgeur == 0 && edgedr == 0) sbstate = 10;
if (edgeur == 1 && edgedl == 0 && edgeul == 0 && edgedr == 0) sbstate = 11;
if (edgedr == 1 && edgedl == 0 && edgeul == 0 && edgeur == 0) sbstate = 12;
if (edgedl == 1 && edgeul == 0 && edgeur == 0 && edgedr == 1) sbstate = 1;
if (edgedl == 0 && edgeul == 0 && edgeur == 1 && edgedr == 1) sbstate = 2;
if (edgedl == 0 && edgeul == 1 && edgeur == 1 && edgedr == 0) sbstate = 3;
if (edgedl == 1 && edgeul == 1 && edgeur == 0 && edgedr == 0) sbstate = 4;
}
if (sbstate == 0) {
state = AIRBALL;
sball = 1;
}
if (kRight > 0 && sbmove == 0) {
if (sbstate == 1) sbmove = 1;
if (sbstate == 3) sbmove = -1;
if (sbstate == 5) sbmove = 1;
if (sbstate == 6) sbmove = -1;
if (sbstate == 7) sbmove = -1;
if (sbstate == 8) sbmove = 1;
if (sbstate == 9) sbmove = 1;
if (sbstate == 10) sbmove = -1;
if (sbstate == 11) sbmove = -1;
if (sbstate == 12) sbmove = 1;
}
if (kLeft > 0 && sbmove == 0) {
if (sbstate == 1) sbmove = -1;
if (sbstate == 3) sbmove = 1;
if (sbstate == 5) sbmove = -1;
if (sbstate == 6) sbmove = 1;
if (sbstate == 7) sbmove = 1;
if (sbstate == 8) sbmove = -1;
if (sbstate == 9) sbmove = -1;
if (sbstate == 10) sbmove = 1;
if (sbstate == 11) sbmove = 1;
if (sbstate == 12) sbmove = -1;
}
if (kUp > 0 && sbmove == 0) {
if (sbstate == 2) sbmove = 1;
if (sbstate == 4) sbmove = -1;
if (sbstate == 5) sbmove = 1;
if (sbstate == 6) sbmove = 1;
if (sbstate == 7) sbmove = -1;
if (sbstate == 8) sbmove = -1;
if (sbstate == 9) sbmove = -1;
if (sbstate == 10) sbmove = -1;
if (sbstate == 11) sbmove = 1;
if (sbstate == 12) sbmove = 1;
}
if (kDown > 0 && sbmove == 0) {
if (sbstate == 2) sbmove = -1;
if (sbstate == 4) sbmove = 1;
if (sbstate == 5) sbmove = -1;
if (sbstate == 6) sbmove = -1;
if (sbstate == 7) sbmove = 1;
if (sbstate == 8) sbmove = 1;
if (sbstate == 9) sbmove = 1;
if (sbstate == 10) sbmove = 1;
if (sbstate == 11) sbmove = -1;
if (sbstate == 12) sbmove = -1;
}
if (kRight == 0 && kLeft == 0 && kUp == 0 && kDown == 0) sbmove = 0;
if (sbstate == 1) x += sbmove;
if (sbstate == 2) y -= sbmove;
if (sbstate == 3) x -= sbmove;
if (sbstate == 4) y += sbmove;
if (sbstate == 5) {
if (sbmove == 1) y -= 1;
if (sbmove == -1) x -= 1;
}
if (sbstate == 6) {
if (sbmove == 1) x -= 1;
if (sbmove == -1) y += 1;
}
if (sbstate == 7) {
if (sbmove == 1) y += 1;
if (sbmove == -1) x += 1;
}
if (sbstate == 8) {
if (sbmove == 1) x += 1;
if (sbmove == -1) y -= 1;
}
if (sbstate == 9) {
if (sbmove == 1) y += 1;
if (sbmove == -1) x -= 1;
}
if (sbstate == 10) {
if (sbmove == 1) x -= 1;
if (sbmove == -1) y -= 1;
}
if (sbstate == 11) {
if (sbmove == 1) y -= 1;
if (sbmove == -1) x += 1;
}
if (sbstate == 12) {
if (sbmove == 1) x += 1;
if (sbmove == -1) y += 1;
}
} // if (state == SPIDERBALL)
if (state == AIRBALL && sball == 1) {
if (isCollisionTop(1) == 1 || isCollisionBottom(1) == 1 || isCollisionRight(1) == 1 || isCollisionLeft(1) == 1) state = SPIDERBALL;
}