You've already forked AM2R-Community-Updates
mirror of
https://github.com/izzy2lost/AM2R-Community-Updates.git
synced 2026-03-10 11:23:35 -07:00
125 lines
4.9 KiB
Plaintext
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;
|
|
}
|