Drafted anti-air attack for Monk.

This commit is contained in:
genxium 2023-01-11 22:24:31 +08:00
parent 934a495d47
commit 71a5a7b727
11 changed files with 286 additions and 133 deletions

View File

@ -5506,12 +5506,18 @@ $packages["jsexport/battle"] = (function() {
} }
patternId = -1; patternId = -1;
if (decodedInput.BtnALevel > prevBtnALevel) { if (decodedInput.BtnALevel > prevBtnALevel) {
patternId = 1; if (0 > effDy) {
patternId = 3;
} else if (0 < effDy) {
patternId = 2;
} else {
patternId = 1;
}
} }
return [patternId, jumpedOrNot, effDx, effDy]; return [patternId, jumpedOrNot, effDx, effDy];
}; };
ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame = function(inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, collisionSpaceOffsetX, collisionSpaceOffsetY, chConfigsOrderedByJoinIndex) { ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame = function(inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, collisionSpaceOffsetX, collisionSpaceOffsetY, chConfigsOrderedByJoinIndex) {
var {_1, _2, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _i$1, _i$10, _i$11, _i$12, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _index$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$14, _ref$15, _ref$16, _ref$17, _ref$18, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, addToNextRenderFrame, atkedPlayerInNextFrame, atkedPlayerInNextFrame$1, bShape, bulletCollider, bulletColliders, bulletLocalId, bulletShape, bulletShape$1, bulletWx, bulletWx$1, bulletWy, bulletWy$1, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, colliderHeight, colliderWidth, colliderWorldHeight, colliderWorldWidth, collision, collision$1, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, defenderShape$1, effDx, effDy, effPushbacks, existent, existent$1, existent$2, existent$3, existent$4, existent$5, fireballBullet, halfColliderHeightDiff, halfColliderWidthDiff, halfColliderWorldHeightDiff, hardPushbackNorm, hardPushbackNorms, hasLockVel, hitboxSizeWx, hitboxSizeWx$1, hitboxSizeWy, hitboxSizeWy$1, i, i$1, i$2, i$3, i$4, inputsBuffer, isAnotherPlayer, isBarrier, isBullet, joinIndex, joinIndex$1, joinIndex$2, joinIndex$3, jumpedOrNot, jumpedOrNotList, landedOnGravityPushback, meleeBullet, newBullet, newBullet$1, newBulletCollider, newBulletCollider$1, newVx, newVy, nextRenderFrameFireballBullets, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, obj$2, offender, offender$1, offender$2, oldFramesToRecover, oldFramesToRecover$1, oldNextCharacterState, overlapResult, overlapped, overlapped$1, overlapped$2, patternId, playerCollider, playerCollider$1, playerCollider$2, playerCollider$3, playerColliders, playerShape, projectedMagnitude, pushbackVelX, pushbackVelX$1, pushbackVelY, pushbackVelY$1, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, t$2, t$3, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, v$2, v$3, v$4, v$5, wx, wy, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, xfac$2, xfac$3, xfac$4, $s, $r, $c} = $restore(this, {inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, collisionSpaceOffsetX, collisionSpaceOffsetY, chConfigsOrderedByJoinIndex}); var {_1, _2, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _i$1, _i$10, _i$11, _i$12, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _index$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$14, _ref$15, _ref$16, _ref$17, _ref$18, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, addToNextRenderFrame, atkedPlayerInNextFrame, atkedPlayerInNextFrame$1, bShape, bulletCollider, bulletColliders, bulletLocalId, bulletShape, bulletShape$1, bulletWx, bulletWx$1, bulletWy, bulletWy$1, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, colliderHeight, colliderWidth, colliderWorldHeight, colliderWorldWidth, collision, collision$1, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, defenderShape$1, effDx, effDy, effPushbacks, existent, existent$1, existent$2, existent$3, existent$4, existent$5, fireballBullet, halfColliderHeightDiff, halfColliderWidthDiff, halfColliderWorldHeightDiff, hardPushbackNorm, hardPushbackNorms, hasLockVel, hitboxSizeWx, hitboxSizeWx$1, hitboxSizeWy, hitboxSizeWy$1, i, i$1, i$2, i$3, i$4, inputsBuffer, isAnotherPlayer, isBarrier, isBullet, joinIndex, joinIndex$1, joinIndex$2, joinIndex$3, jumpedOrNot, jumpedOrNotList, landedOnGravityPushback, meleeBullet, newBullet, newBullet$1, newBulletCollider, newBulletCollider$1, newVx, newVy, nextRenderFrameFireballBullets, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, obj$2, offender, offender$1, offender$2, oldFramesToRecover, oldFramesToRecover$1, oldNextCharacterState, overlapResult, overlapped, overlapped$1, overlapped$2, patternId, playerCollider, playerCollider$1, playerCollider$2, playerCollider$3, playerColliders, playerShape, projectedMagnitude, pushbackVelX, pushbackVelX$1, pushbackVelY, pushbackVelY$1, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, t$2, t$3, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, v$2, v$3, v$4, v$5, wx, wy, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, xfac$2, xfac$3, $s, $r, $c} = $restore(this, {inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, collisionSpaceOffsetX, collisionSpaceOffsetY, chConfigsOrderedByJoinIndex});
/* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
roomCapacity = currRenderFrame.PlayersArr.$length; roomCapacity = currRenderFrame.PlayersArr.$length;
nextRenderFramePlayers = $makeSlice(sliceType$6, roomCapacity); nextRenderFramePlayers = $makeSlice(sliceType$6, roomCapacity);
@ -5593,22 +5599,20 @@ $packages["jsexport/battle"] = (function() {
newBullet$1[0] = $clone(v$1, FireballBullet); newBullet$1[0] = $clone(v$1, FireballBullet);
newBullet$1[0].Bullet.BulletLocalId = bulletLocalId; newBullet$1[0].Bullet.BulletLocalId = bulletLocalId;
bulletLocalId = bulletLocalId + (1) >> 0; bulletLocalId = bulletLocalId + (1) >> 0;
xfac$1 = 1; _tmp = currPlayerDownsync$1.VirtualGridX + ($imul(xfac, newBullet$1[0].Bullet.HitboxOffsetX)) >> 0;
if (0 > thatPlayerInNextFrame.DirX) { _tmp$1 = currPlayerDownsync$1.VirtualGridY + newBullet$1[0].Bullet.HitboxOffsetY >> 0;
xfac$1 = -xfac$1;
}
_tmp = currPlayerDownsync$1.VirtualGridX + ($imul(xfac$1, newBullet$1[0].Bullet.HitboxOffsetX)) >> 0;
_tmp$1 = currPlayerDownsync$1.VirtualGridY;
newBullet$1[0].VirtualGridX = _tmp; newBullet$1[0].VirtualGridX = _tmp;
newBullet$1[0].VirtualGridY = _tmp$1; newBullet$1[0].VirtualGridY = _tmp$1;
newBullet$1[0].Bullet.OriginatedRenderFrameId = currRenderFrame.Id; newBullet$1[0].Bullet.OriginatedRenderFrameId = currRenderFrame.Id;
newBullet$1[0].Bullet.OffenderJoinIndex = joinIndex; newBullet$1[0].Bullet.OffenderJoinIndex = joinIndex;
newBullet$1[0].VelX = $imul(newBullet$1[0].Speed, xfac$1); newBullet$1[0].DirX = xfac;
newBullet$1[0].DirY = 0;
newBullet$1[0].VelX = $imul(newBullet$1[0].Speed, xfac);
newBullet$1[0].VelY = 0; newBullet$1[0].VelY = 0;
nextRenderFrameFireballBullets = $append(nextRenderFrameFireballBullets, newBullet$1[0]); nextRenderFrameFireballBullets = $append(nextRenderFrameFireballBullets, newBullet$1[0]);
if (!((-1 === v$1.Bullet.SelfLockVelX))) { if (!((-1 === v$1.Bullet.SelfLockVelX))) {
hasLockVel = true; hasLockVel = true;
thatPlayerInNextFrame.VelX = $imul(xfac$1, v$1.Bullet.SelfLockVelX); thatPlayerInNextFrame.VelX = $imul(xfac, v$1.Bullet.SelfLockVelX);
} }
if (!((-1 === v$1.Bullet.SelfLockVelY))) { if (!((-1 === v$1.Bullet.SelfLockVelY))) {
hasLockVel = true; hasLockVel = true;
@ -5624,10 +5628,10 @@ $packages["jsexport/battle"] = (function() {
} }
if (0 === currPlayerDownsync$1.FramesToRecover) { if (0 === currPlayerDownsync$1.FramesToRecover) {
if (!((0 === effDx)) || !((0 === effDy))) { if (!((0 === effDx)) || !((0 === effDy))) {
_tmp$2 = effDx; if (!((0 === effDx))) {
_tmp$3 = effDy; thatPlayerInNextFrame.DirX = effDx;
thatPlayerInNextFrame.DirX = _tmp$2; }
thatPlayerInNextFrame.DirY = _tmp$3; thatPlayerInNextFrame.DirY = effDy;
thatPlayerInNextFrame.VelX = $imul(effDx, currPlayerDownsync$1.Speed); thatPlayerInNextFrame.VelX = $imul(effDx, currPlayerDownsync$1.Speed);
thatPlayerInNextFrame.CharacterState = 1; thatPlayerInNextFrame.CharacterState = 1;
} else { } else {
@ -5646,36 +5650,36 @@ $packages["jsexport/battle"] = (function() {
i$2 = _i$2; i$2 = _i$2;
currPlayerDownsync$2 = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); currPlayerDownsync$2 = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]);
joinIndex$1 = currPlayerDownsync$2.JoinIndex; joinIndex$1 = currPlayerDownsync$2.JoinIndex;
_tmp$4 = 0; _tmp$2 = 0;
_tmp$5 = 0; _tmp$3 = 0;
(x$2 = joinIndex$1 - 1 >> 0, ((x$2 < 0 || x$2 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$2])).X = _tmp$4; (x$2 = joinIndex$1 - 1 >> 0, ((x$2 < 0 || x$2 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$2])).X = _tmp$2;
(x$3 = joinIndex$1 - 1 >> 0, ((x$3 < 0 || x$3 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$3])).Y = _tmp$5; (x$3 = joinIndex$1 - 1 >> 0, ((x$3 < 0 || x$3 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$3])).Y = _tmp$3;
chConfig$1 = ((i$2 < 0 || i$2 >= chConfigsOrderedByJoinIndex.$length) ? ($throwRuntimeError("index out of range"), undefined) : chConfigsOrderedByJoinIndex.$array[chConfigsOrderedByJoinIndex.$offset + i$2]); chConfig$1 = ((i$2 < 0 || i$2 >= chConfigsOrderedByJoinIndex.$length) ? ($throwRuntimeError("index out of range"), undefined) : chConfigsOrderedByJoinIndex.$array[chConfigsOrderedByJoinIndex.$offset + i$2]);
_tmp$6 = currPlayerDownsync$2.VirtualGridX + currPlayerDownsync$2.VelX >> 0; _tmp$4 = currPlayerDownsync$2.VirtualGridX + currPlayerDownsync$2.VelX >> 0;
_tmp$7 = currPlayerDownsync$2.VirtualGridY + currPlayerDownsync$2.VelY >> 0; _tmp$5 = currPlayerDownsync$2.VirtualGridY + currPlayerDownsync$2.VelY >> 0;
newVx = _tmp$6; newVx = _tmp$4;
newVy = _tmp$7; newVy = _tmp$5;
if (((i$2 < 0 || i$2 >= jumpedOrNotList.$length) ? ($throwRuntimeError("index out of range"), undefined) : jumpedOrNotList.$array[jumpedOrNotList.$offset + i$2])) { if (((i$2 < 0 || i$2 >= jumpedOrNotList.$length) ? ($throwRuntimeError("index out of range"), undefined) : jumpedOrNotList.$array[jumpedOrNotList.$offset + i$2])) {
newVy = newVy + (chConfig$1.JumpingInitVelY) >> 0; newVy = newVy + (chConfig$1.JumpingInitVelY) >> 0;
} }
_tuple$2 = VirtualGridToWorldPos(newVx, newVy); _tuple$2 = VirtualGridToWorldPos(newVx, newVy);
wx = _tuple$2[0]; wx = _tuple$2[0];
wy = _tuple$2[1]; wy = _tuple$2[1];
_tmp$8 = $imul(currPlayerDownsync$2.ColliderRadius, 2); _tmp$6 = $imul(currPlayerDownsync$2.ColliderRadius, 2);
_tmp$9 = $imul(currPlayerDownsync$2.ColliderRadius, 4); _tmp$7 = $imul(currPlayerDownsync$2.ColliderRadius, 4);
colliderWidth = _tmp$8; colliderWidth = _tmp$6;
colliderHeight = _tmp$9; colliderHeight = _tmp$7;
_1 = currPlayerDownsync$2.CharacterState; _1 = currPlayerDownsync$2.CharacterState;
if (_1 === (9)) { if (_1 === (9)) {
_tmp$10 = $imul(currPlayerDownsync$2.ColliderRadius, 4); _tmp$8 = $imul(currPlayerDownsync$2.ColliderRadius, 4);
_tmp$9 = $imul(currPlayerDownsync$2.ColliderRadius, 2);
colliderWidth = _tmp$8;
colliderHeight = _tmp$9;
} else if ((_1 === (8)) || (_1 === (4)) || (_1 === (5))) {
_tmp$10 = $imul(currPlayerDownsync$2.ColliderRadius, 2);
_tmp$11 = $imul(currPlayerDownsync$2.ColliderRadius, 2); _tmp$11 = $imul(currPlayerDownsync$2.ColliderRadius, 2);
colliderWidth = _tmp$10; colliderWidth = _tmp$10;
colliderHeight = _tmp$11; colliderHeight = _tmp$11;
} else if ((_1 === (8)) || (_1 === (4)) || (_1 === (5))) {
_tmp$12 = $imul(currPlayerDownsync$2.ColliderRadius, 2);
_tmp$13 = $imul(currPlayerDownsync$2.ColliderRadius, 2);
colliderWidth = _tmp$12;
colliderHeight = _tmp$13;
} }
_tuple$3 = VirtualGridToWorldPos(colliderWidth, colliderHeight); _tuple$3 = VirtualGridToWorldPos(colliderWidth, colliderHeight);
colliderWorldWidth = _tuple$3[0]; colliderWorldWidth = _tuple$3[0];
@ -5703,11 +5707,11 @@ $packages["jsexport/battle"] = (function() {
/* */ $s = 12; continue; /* */ $s = 12; continue;
/* if (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) <= currRenderFrame.Id) && (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) + meleeBullet.Bullet.ActiveFrames >> 0) > currRenderFrame.Id)) { */ case 10: /* if (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) <= currRenderFrame.Id) && (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) + meleeBullet.Bullet.ActiveFrames >> 0) > currRenderFrame.Id)) { */ case 10:
offender = (x$4 = currRenderFrame.PlayersArr, x$5 = meleeBullet.Bullet.OffenderJoinIndex - 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])); offender = (x$4 = currRenderFrame.PlayersArr, x$5 = meleeBullet.Bullet.OffenderJoinIndex - 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5]));
xfac$2 = 1; xfac$1 = 1;
if (0 > offender.DirX) { if (0 > offender.DirX) {
xfac$2 = -xfac$2; xfac$1 = -xfac$1;
} }
_tuple$4 = VirtualGridToWorldPos(offender.VirtualGridX + ($imul(xfac$2, meleeBullet.Bullet.HitboxOffsetX)) >> 0, offender.VirtualGridY); _tuple$4 = VirtualGridToWorldPos(offender.VirtualGridX + ($imul(xfac$1, meleeBullet.Bullet.HitboxOffsetX)) >> 0, offender.VirtualGridY);
bulletWx = _tuple$4[0]; bulletWx = _tuple$4[0];
bulletWy = _tuple$4[1]; bulletWy = _tuple$4[1];
_tuple$5 = VirtualGridToWorldPos(meleeBullet.Bullet.HitboxSizeX, meleeBullet.Bullet.HitboxSizeY); _tuple$5 = VirtualGridToWorldPos(meleeBullet.Bullet.HitboxSizeX, meleeBullet.Bullet.HitboxSizeY);
@ -5773,12 +5777,12 @@ $packages["jsexport/battle"] = (function() {
/* while (true) { */ case 27: /* while (true) { */ case 27:
/* if (!(_i$6 < _ref$7.$length)) { break; } */ if(!(_i$6 < _ref$7.$length)) { $s = 28; continue; } /* if (!(_i$6 < _ref$7.$length)) { break; } */ if(!(_i$6 < _ref$7.$length)) { $s = 28; continue; }
obj = ((_i$6 < 0 || _i$6 >= _ref$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$7.$array[_ref$7.$offset + _i$6]); obj = ((_i$6 < 0 || _i$6 >= _ref$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$7.$array[_ref$7.$offset + _i$6]);
_tmp$12 = false;
_tmp$13 = false;
_tmp$14 = false; _tmp$14 = false;
_tmp$15 = false; isBarrier = _tmp$12;
_tmp$16 = false; isAnotherPlayer = _tmp$13;
isBarrier = _tmp$14; isBullet = _tmp$14;
isAnotherPlayer = _tmp$15;
isBullet = _tmp$16;
_ref$8 = obj.Data; _ref$8 = obj.Data;
if ($assertType(_ref$8, ptrType$5, true)[1]) { if ($assertType(_ref$8, ptrType$5, true)[1]) {
isAnotherPlayer = true; isAnotherPlayer = true;
@ -5804,10 +5808,10 @@ $packages["jsexport/battle"] = (function() {
} }
normAlignmentWithGravity = overlapResult.OverlapX * 0 + overlapResult.OverlapY * -1; normAlignmentWithGravity = overlapResult.OverlapX * 0 + overlapResult.OverlapY * -1;
if (isAnotherPlayer) { if (isAnotherPlayer) {
_tmp$17 = (overlapResult.Overlap - 0.2) * overlapResult.OverlapX; _tmp$15 = (overlapResult.Overlap - 0.2) * overlapResult.OverlapX;
_tmp$18 = (overlapResult.Overlap - 0.2) * overlapResult.OverlapY; _tmp$16 = (overlapResult.Overlap - 0.2) * overlapResult.OverlapY;
pushbackX = _tmp$17; pushbackX = _tmp$15;
pushbackY = _tmp$18; pushbackY = _tmp$16;
} }
_ref$9 = (x$8 = joinIndex$2 - 1 >> 0, ((x$8 < 0 || x$8 >= hardPushbackNorms.$length) ? ($throwRuntimeError("index out of range"), undefined) : hardPushbackNorms.$array[hardPushbackNorms.$offset + x$8])).$get(); _ref$9 = (x$8 = joinIndex$2 - 1 >> 0, ((x$8 < 0 || x$8 >= hardPushbackNorms.$length) ? ($throwRuntimeError("index out of range"), undefined) : hardPushbackNorms.$array[hardPushbackNorms.$offset + x$8])).$get();
_i$7 = 0; _i$7 = 0;
@ -5844,10 +5848,10 @@ $packages["jsexport/battle"] = (function() {
thatPlayerInNextFrame$2.CharacterState = 9; thatPlayerInNextFrame$2.CharacterState = 9;
thatPlayerInNextFrame$2.FramesToRecover = chConfig$2.LayDownFramesToRecover; thatPlayerInNextFrame$2.FramesToRecover = chConfig$2.LayDownFramesToRecover;
} else { } else {
_tmp$19 = 0; _tmp$17 = 0;
_tmp$20 = currPlayerDownsync$3.ColliderRadius; _tmp$18 = currPlayerDownsync$3.ColliderRadius;
halfColliderWidthDiff = _tmp$19; halfColliderWidthDiff = _tmp$17;
halfColliderHeightDiff = _tmp$20; halfColliderHeightDiff = _tmp$18;
_tuple$10 = VirtualGridToWorldPos(halfColliderWidthDiff, halfColliderHeightDiff); _tuple$10 = VirtualGridToWorldPos(halfColliderWidthDiff, halfColliderHeightDiff);
halfColliderWorldHeightDiff = _tuple$10[1]; halfColliderWorldHeightDiff = _tuple$10[1];
_index$2 = joinIndex$2 - 1 >> 0; _index$2 = joinIndex$2 - 1 >> 0;
@ -5928,14 +5932,14 @@ $packages["jsexport/battle"] = (function() {
_i$9++; _i$9++;
/* continue; */ $s = 37; continue; /* continue; */ $s = 37; continue;
} }
xfac$3 = 1; xfac$2 = 1;
if (0 > offender$1.DirX) { if (0 > offender$1.DirX) {
xfac$3 = -xfac$3; xfac$2 = -xfac$2;
} }
_tmp$21 = $imul(xfac$3, v$2.Bullet.PushbackVelX); _tmp$19 = $imul(xfac$2, v$2.Bullet.PushbackVelX);
_tmp$22 = v$2.Bullet.PushbackVelY; _tmp$20 = v$2.Bullet.PushbackVelY;
pushbackVelX = _tmp$21; pushbackVelX = _tmp$19;
pushbackVelY = _tmp$22; pushbackVelY = _tmp$20;
atkedPlayerInNextFrame = (x$11 = t.JoinIndex - 1 >> 0, ((x$11 < 0 || x$11 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + x$11])); atkedPlayerInNextFrame = (x$11 = t.JoinIndex - 1 >> 0, ((x$11 < 0 || x$11 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + x$11]));
atkedPlayerInNextFrame.VelX = pushbackVelX; atkedPlayerInNextFrame.VelX = pushbackVelX;
atkedPlayerInNextFrame.VelY = pushbackVelY; atkedPlayerInNextFrame.VelY = pushbackVelY;
@ -5994,14 +5998,14 @@ $packages["jsexport/battle"] = (function() {
_i$10++; _i$10++;
/* continue; */ $s = 43; continue; /* continue; */ $s = 43; continue;
} }
xfac$4 = 1; xfac$3 = 1;
if (0 > offender$2.DirX) { if (0 > offender$2.DirX) {
xfac$4 = -xfac$4; xfac$3 = -xfac$3;
} }
_tmp$23 = $imul(xfac$4, v$3.Bullet.PushbackVelX); _tmp$21 = $imul(xfac$3, v$3.Bullet.PushbackVelX);
_tmp$24 = v$3.Bullet.PushbackVelY; _tmp$22 = v$3.Bullet.PushbackVelY;
pushbackVelX$1 = _tmp$23; pushbackVelX$1 = _tmp$21;
pushbackVelY$1 = _tmp$24; pushbackVelY$1 = _tmp$22;
atkedPlayerInNextFrame$1 = (x$15 = t$2.JoinIndex - 1 >> 0, ((x$15 < 0 || x$15 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + x$15])); atkedPlayerInNextFrame$1 = (x$15 = t$2.JoinIndex - 1 >> 0, ((x$15 < 0 || x$15 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + x$15]));
atkedPlayerInNextFrame$1.VelX = pushbackVelX$1; atkedPlayerInNextFrame$1.VelX = pushbackVelX$1;
atkedPlayerInNextFrame$1.VelY = pushbackVelY$1; atkedPlayerInNextFrame$1.VelY = pushbackVelY$1;
@ -6031,10 +6035,10 @@ $packages["jsexport/battle"] = (function() {
nextRenderFrameMeleeBullets = $append(nextRenderFrameMeleeBullets, v$4); nextRenderFrameMeleeBullets = $append(nextRenderFrameMeleeBullets, v$4);
} else if ($assertType(_ref$16, ptrType$6, true)[1]) { } else if ($assertType(_ref$16, ptrType$6, true)[1]) {
v$5 = _ref$16.$val; v$5 = _ref$16.$val;
_tmp$25 = v$5.VirtualGridX + v$5.VelX >> 0; _tmp$23 = v$5.VirtualGridX + v$5.VelX >> 0;
_tmp$26 = v$5.VirtualGridY + v$5.VelY >> 0; _tmp$24 = v$5.VirtualGridY + v$5.VelY >> 0;
v$5.VirtualGridX = _tmp$25; v$5.VirtualGridX = _tmp$23;
v$5.VirtualGridY = _tmp$26; v$5.VirtualGridY = _tmp$24;
nextRenderFrameFireballBullets = $append(nextRenderFrameFireballBullets, v$5); nextRenderFrameFireballBullets = $append(nextRenderFrameFireballBullets, v$5);
} }
} }
@ -6088,7 +6092,7 @@ $packages["jsexport/battle"] = (function() {
_i$12++; _i$12++;
} }
$s = -1; return new RoomDownsyncFrame.ptr(currRenderFrame.Id + 1 >> 0, nextRenderFramePlayers, new $Int64(0, 0), nextRenderFrameMeleeBullets, nextRenderFrameFireballBullets, new $Uint64(0, 0), false, bulletLocalId); $s = -1; return new RoomDownsyncFrame.ptr(currRenderFrame.Id + 1 >> 0, nextRenderFramePlayers, new $Int64(0, 0), nextRenderFrameMeleeBullets, nextRenderFrameFireballBullets, new $Uint64(0, 0), false, bulletLocalId);
/* */ } return; } var $f = {$blk: ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame, $c: true, $r, _1, _2, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _i$1, _i$10, _i$11, _i$12, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _index$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$14, _ref$15, _ref$16, _ref$17, _ref$18, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, addToNextRenderFrame, atkedPlayerInNextFrame, atkedPlayerInNextFrame$1, bShape, bulletCollider, bulletColliders, bulletLocalId, bulletShape, bulletShape$1, bulletWx, bulletWx$1, bulletWy, bulletWy$1, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, colliderHeight, colliderWidth, colliderWorldHeight, colliderWorldWidth, collision, collision$1, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, defenderShape$1, effDx, effDy, effPushbacks, existent, existent$1, existent$2, existent$3, existent$4, existent$5, fireballBullet, halfColliderHeightDiff, halfColliderWidthDiff, halfColliderWorldHeightDiff, hardPushbackNorm, hardPushbackNorms, hasLockVel, hitboxSizeWx, hitboxSizeWx$1, hitboxSizeWy, hitboxSizeWy$1, i, i$1, i$2, i$3, i$4, inputsBuffer, isAnotherPlayer, isBarrier, isBullet, joinIndex, joinIndex$1, joinIndex$2, joinIndex$3, jumpedOrNot, jumpedOrNotList, landedOnGravityPushback, meleeBullet, newBullet, newBullet$1, newBulletCollider, newBulletCollider$1, newVx, newVy, nextRenderFrameFireballBullets, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, obj$2, offender, offender$1, offender$2, oldFramesToRecover, oldFramesToRecover$1, oldNextCharacterState, overlapResult, overlapped, overlapped$1, overlapped$2, patternId, playerCollider, playerCollider$1, playerCollider$2, playerCollider$3, playerColliders, playerShape, projectedMagnitude, pushbackVelX, pushbackVelX$1, pushbackVelY, pushbackVelY$1, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, t$2, t$3, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, v$2, v$3, v$4, v$5, wx, wy, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, xfac$2, xfac$3, xfac$4, $s};return $f; /* */ } return; } var $f = {$blk: ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame, $c: true, $r, _1, _2, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _i$1, _i$10, _i$11, _i$12, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _index$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$14, _ref$15, _ref$16, _ref$17, _ref$18, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, addToNextRenderFrame, atkedPlayerInNextFrame, atkedPlayerInNextFrame$1, bShape, bulletCollider, bulletColliders, bulletLocalId, bulletShape, bulletShape$1, bulletWx, bulletWx$1, bulletWy, bulletWy$1, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, colliderHeight, colliderWidth, colliderWorldHeight, colliderWorldWidth, collision, collision$1, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, defenderShape$1, effDx, effDy, effPushbacks, existent, existent$1, existent$2, existent$3, existent$4, existent$5, fireballBullet, halfColliderHeightDiff, halfColliderWidthDiff, halfColliderWorldHeightDiff, hardPushbackNorm, hardPushbackNorms, hasLockVel, hitboxSizeWx, hitboxSizeWx$1, hitboxSizeWy, hitboxSizeWy$1, i, i$1, i$2, i$3, i$4, inputsBuffer, isAnotherPlayer, isBarrier, isBullet, joinIndex, joinIndex$1, joinIndex$2, joinIndex$3, jumpedOrNot, jumpedOrNotList, landedOnGravityPushback, meleeBullet, newBullet, newBullet$1, newBulletCollider, newBulletCollider$1, newVx, newVy, nextRenderFrameFireballBullets, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, obj$2, offender, offender$1, offender$2, oldFramesToRecover, oldFramesToRecover$1, oldNextCharacterState, overlapResult, overlapped, overlapped$1, overlapped$2, patternId, playerCollider, playerCollider$1, playerCollider$2, playerCollider$3, playerColliders, playerShape, projectedMagnitude, pushbackVelX, pushbackVelX$1, pushbackVelY, pushbackVelY$1, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, t$2, t$3, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, v$2, v$3, v$4, v$5, wx, wy, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, xfac$2, xfac$3, $s};return $f;
}; };
$pkg.ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame = ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame; $pkg.ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame = ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame;
GenerateRectCollider = function(wx, wy, w, h, topPadding, bottomPadding, leftPadding, rightPadding, spaceOffsetX, spaceOffsetY, data, tag) { GenerateRectCollider = function(wx, wy, w, h, topPadding, bottomPadding, leftPadding, rightPadding, spaceOffsetX, spaceOffsetY, data, tag) {
@ -6214,7 +6218,7 @@ $packages["jsexport/battle"] = (function() {
$r = math.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = math.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = resolv.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = resolv.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.DIRECTION_DECODER = new sliceType$1([new sliceType([0, 0]), new sliceType([0, 2]), new sliceType([0, -2]), new sliceType([2, 0]), new sliceType([-2, 0]), new sliceType([1, 1]), new sliceType([-1, -1]), new sliceType([1, -1]), new sliceType([-1, 1])]); $pkg.DIRECTION_DECODER = new sliceType$1([new sliceType([0, 0]), new sliceType([0, 2]), new sliceType([0, -2]), new sliceType([2, 0]), new sliceType([-2, 0]), new sliceType([1, 1]), new sliceType([-1, -1]), new sliceType([1, -1]), new sliceType([-1, 1])]);
skills = $makeMap($Int.keyFor, [{ k: 1, v: new Skill.ptr(0, 30, 30, 30, 1, 2, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 7, 13, 30, 22, 13, 9, 50, 0, 5, 5, -1, 1200, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 2 }]), 0))])) }, { k: 2, v: new Skill.ptr(0, 36, 36, 36, 1, 11, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 18, 22, 36, 18, 18, 9, 50, 0, 5, 10, -1, 1800, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 3 }]), 0))])) }, { k: 3, v: new Skill.ptr(0, 50, 50, 50, 1, 12, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 15, 0, 0, 30, 999999999, 9, 200, 700, 10, 50, 500, 3200, 0, 4800, 3200, true, false, 0))])) }, { k: 4, v: new Skill.ptr(0, 30, 30, 30, 1, 2, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 7, 13, 30, 22, 13, 9, 50, 0, 5, 5, -1, 1200, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 5 }]), 0))])) }, { k: 5, v: new Skill.ptr(0, 36, 36, 36, 1, 11, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 18, 22, 36, 18, 18, 9, 50, 0, 5, 10, -1, 1800, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 6 }]), 0))])) }, { k: 6, v: new Skill.ptr(0, 45, 45, 45, 1, 12, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 15, 0, 0, 28, 999999999, 9, 200, 700, 10, -10, -1, 2400, 0, 3200, 3200, true, false, 0))])) }, { k: 7, v: new Skill.ptr(0, 30, 30, 30, 1, 2, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 7, 13, 30, 22, 13, 9, 50, 0, 5, 5, -1, 1200, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 2 }]), 0))])) }, { k: 8, v: new Skill.ptr(0, 36, 36, 36, 1, 11, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 18, 22, 36, 18, 18, 9, 50, 0, 5, 10, -1, 1800, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 3 }]), 0))])) }, { k: 9, v: new Skill.ptr(0, 50, 50, 50, 1, 12, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 15, 0, 0, 30, 999999999, 9, 200, 700, 10, 50, 500, 3200, 0, 4800, 3200, false, false, 0))])) }, { k: 10, v: new Skill.ptr(0, 40, 40, 40, 1, 13, new sliceType$2([new FireballBullet.ptr(0, 0, 0, 0, 0, 0, 800, 1, new Bullet.ptr(0, 0, 0, 15, 0, 0, 999999999, 15, 9, 200, 0, 20, -1, -1, 3200, 0, 4800, 3200, false, false, 0))])) }, { k: 255, v: new Skill.ptr(0, 30, 30, 30, 1, 6, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 3, 0, 0, 20, 18, 9, 50, 0, 5, -1, -1, 1200, 0, 3200, 2400, false, false, 0))])) }, { k: 256, v: new Skill.ptr(0, 20, 20, 20, 1, 6, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 3, 0, 0, 10, 15, 9, 50, 0, 5, -1, -1, 1200, 0, 3200, 2400, false, false, 0))])) }, { k: 257, v: new Skill.ptr(0, 30, 30, 30, 1, 6, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 3, 0, 0, 20, 18, 9, 50, 0, 5, -1, -1, 1200, 0, 3200, 2400, false, false, 0))])) }]); skills = $makeMap($Int.keyFor, [{ k: 1, v: new Skill.ptr(0, 30, 30, 30, 1, 2, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 7, 13, 30, 22, 13, 9, 50, 0, 5, 5, -1, 1200, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 2 }]), 0))])) }, { k: 2, v: new Skill.ptr(0, 36, 36, 36, 1, 11, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 18, 22, 36, 18, 18, 9, 50, 0, 5, 10, -1, 1800, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 3 }]), 0))])) }, { k: 3, v: new Skill.ptr(0, 50, 50, 50, 1, 12, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 8, 0, 0, 30, 999999999, 9, 200, 700, 10, 50, 500, 1600, 800, 3200, 3200, true, false, 0))])) }, { k: 4, v: new Skill.ptr(0, 30, 30, 30, 1, 2, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 7, 13, 30, 22, 13, 9, 50, 0, 5, 5, -1, 1200, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 5 }]), 0))])) }, { k: 5, v: new Skill.ptr(0, 36, 36, 36, 1, 11, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 18, 22, 36, 18, 18, 9, 50, 0, 5, 10, -1, 1800, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 6 }]), 0))])) }, { k: 6, v: new Skill.ptr(0, 45, 45, 45, 1, 12, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 8, 0, 0, 28, 999999999, 9, 200, -1, 10, -10, -1, 2400, 0, 3200, 3200, true, false, 0))])) }, { k: 7, v: new Skill.ptr(0, 30, 30, 30, 1, 2, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 7, 13, 30, 22, 13, 9, 50, 0, 5, -1, -1, 1200, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 8 }]), 0))])) }, { k: 8, v: new Skill.ptr(0, 36, 36, 36, 1, 11, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 18, 22, 36, 18, 18, 9, 50, 0, 5, 10, -1, 1800, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 9 }]), 0))])) }, { k: 9, v: new Skill.ptr(0, 40, 40, 40, 1, 12, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 7, 0, 0, 30, 999999999, 9, 200, 400, 10, 100, -1, 1000, 0, 3200, 3200, true, false, 0))])) }, { k: 10, v: new Skill.ptr(0, 40, 40, 40, 1, 13, new sliceType$2([new FireballBullet.ptr(0, 0, 0, 0, 0, 0, 800, 1, new Bullet.ptr(0, 0, 0, 15, 0, 0, 999999999, 15, 9, 200, 0, 20, -1, -1, 3200, 500, 4800, 3200, false, false, 0))])) }, { k: 11, v: new Skill.ptr(0, 60, 60, 60, 1, 14, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 3, 0, 0, 25, 999999999, 9, 200, 700, 30, 100, 800, 800, 0, 4000, 6400, true, false, 0))])) }, { k: 255, v: new Skill.ptr(0, 30, 30, 30, 1, 6, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 3, 0, 0, 20, 18, 9, 50, 0, 5, -1, -1, 1200, 0, 3200, 2400, false, false, 0))])) }, { k: 256, v: new Skill.ptr(0, 20, 20, 20, 1, 6, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 3, 0, 0, 10, 15, 9, 50, 0, 5, -1, -1, 1200, 0, 3200, 2400, false, false, 0))])) }, { k: 257, v: new Skill.ptr(0, 30, 30, 30, 1, 6, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 0, 3, 0, 0, 20, 18, 9, 50, 0, 5, -1, -1, 1200, 0, 3200, 2400, false, false, 0))])) }]);
$pkg.Characters = $makeMap($Int.keyFor, [{ k: 0, v: new CharacterConfig.ptr(0, "MonkGirl", 11, 1, 16, 16, 10, 27, 120, 800, (function(patternId, currPlayerDownsync) { $pkg.Characters = $makeMap($Int.keyFor, [{ k: 0, v: new CharacterConfig.ptr(0, "MonkGirl", 11, 1, 16, 16, 10, 27, 120, 800, (function(patternId, currPlayerDownsync) {
var _entry, _entry$1, _ref, _tuple, _tuple$1, currPlayerDownsync, existent1, existent2, nextSkillId, patternId, skillConfig, v, x, x$1; var _entry, _entry$1, _ref, _tuple, _tuple$1, currPlayerDownsync, existent1, existent2, nextSkillId, patternId, skillConfig, v, x, x$1;
if (1 === patternId) { if (1 === patternId) {
@ -6282,7 +6286,7 @@ $packages["jsexport/battle"] = (function() {
if (currPlayerDownsync.InAir) { if (currPlayerDownsync.InAir) {
return 257; return 257;
} else { } else {
return 10; return 7;
} }
} else { } else {
_tuple = (_entry = skills[$Int.keyFor(((currPlayerDownsync.ActiveSkillId >> 0)))], _entry !== undefined ? [_entry.v, true] : [ptrType.nil, false]); _tuple = (_entry = skills[$Int.keyFor(((currPlayerDownsync.ActiveSkillId >> 0)))], _entry !== undefined ? [_entry.v, true] : [ptrType.nil, false]);
@ -6303,6 +6307,14 @@ $packages["jsexport/battle"] = (function() {
} }
} }
} }
} else if (2 === patternId) {
if (!currPlayerDownsync.InAir) {
return 11;
}
} else if (3 === patternId) {
if (!currPlayerDownsync.InAir) {
return 10;
}
} }
return -1; return -1;
})) }]); })) }]);

View File

@ -3,7 +3,7 @@
"_name": "Atk3", "_name": "Atk3",
"_objFlags": 0, "_objFlags": 0,
"_native": "", "_native": "",
"_duration": 0.6333333333333333, "_duration": 0.5333333333333333,
"sample": 60, "sample": 60,
"speed": 1, "speed": 1,
"wrapMode": 1, "wrapMode": 1,
@ -13,84 +13,72 @@
"spriteFrame": [ "spriteFrame": [
{ {
"frame": 0, "frame": 0,
"value": {
"__uuid__": "318745eb-06b1-4e7f-88d1-e23e02d99e67"
}
},
{
"frame": 0.06666666666666667,
"value": {
"__uuid__": "a64b6f59-fa72-4f5d-89dc-81a469244ea5"
}
},
{
"frame": 0.11666666666666667,
"value": {
"__uuid__": "f800d4a1-2396-4aa5-a578-11481db1d8bf"
}
},
{
"frame": 0.16666666666666666,
"value": { "value": {
"__uuid__": "d97f6a5f-8e63-40d7-bd14-9dc71e15e5db" "__uuid__": "d97f6a5f-8e63-40d7-bd14-9dc71e15e5db"
} }
}, },
{ {
"frame": 0.23333333333333334, "frame": 0.03333333333333333,
"value": { "value": {
"__uuid__": "196bcbf9-e89f-4b26-b736-73e2fa787e50" "__uuid__": "196bcbf9-e89f-4b26-b736-73e2fa787e50"
} }
}, },
{ {
"frame": 0.3, "frame": 0.08333333333333333,
"value": { "value": {
"__uuid__": "3229e023-e63d-4a4e-af72-2b1409ea43c5" "__uuid__": "3229e023-e63d-4a4e-af72-2b1409ea43c5"
} }
}, },
{ {
"frame": 0.36666666666666664, "frame": 0.11666666666666667,
"value": { "value": {
"__uuid__": "e2d6e8b8-b468-4edb-b8c3-860bd85ebeae" "__uuid__": "e2d6e8b8-b468-4edb-b8c3-860bd85ebeae"
} }
}, },
{ {
"frame": 0.4166666666666667, "frame": 0.16666666666666666,
"value": {
"__uuid__": "318745eb-06b1-4e7f-88d1-e23e02d99e67"
}
},
{
"frame": 0.21666666666666667,
"value": { "value": {
"__uuid__": "bba6f088-0e1f-4a12-9872-41670be1152a" "__uuid__": "bba6f088-0e1f-4a12-9872-41670be1152a"
} }
}, },
{ {
"frame": 0.45, "frame": 0.26666666666666666,
"value": { "value": {
"__uuid__": "2c5de5b2-9009-48fa-bef4-ae34cc94f876" "__uuid__": "2c5de5b2-9009-48fa-bef4-ae34cc94f876"
} }
}, },
{ {
"frame": 0.48333333333333334, "frame": 0.31666666666666665,
"value": { "value": {
"__uuid__": "6f27b252-6eaf-4b4b-9c5a-46ba899e4845" "__uuid__": "6f27b252-6eaf-4b4b-9c5a-46ba899e4845"
} }
}, },
{ {
"frame": 0.5166666666666667, "frame": 0.36666666666666664,
"value": { "value": {
"__uuid__": "4ebd5c60-efa6-4950-a4c8-74a7a8517333" "__uuid__": "4ebd5c60-efa6-4950-a4c8-74a7a8517333"
} }
}, },
{ {
"frame": 0.55, "frame": 0.4166666666666667,
"value": { "value": {
"__uuid__": "a207290f-4556-4adb-8a11-e1d5ba342550" "__uuid__": "a207290f-4556-4adb-8a11-e1d5ba342550"
} }
}, },
{ {
"frame": 0.5833333333333334, "frame": 0.4666666666666667,
"value": { "value": {
"__uuid__": "e9d442d2-981d-437d-87c0-085162017de7" "__uuid__": "e9d442d2-981d-437d-87c0-085162017de7"
} }
}, },
{ {
"frame": 0.6166666666666667, "frame": 0.5166666666666667,
"value": { "value": {
"__uuid__": "9b4d5c8c-5ec0-4fd7-a45e-6b0bc8ff9119" "__uuid__": "9b4d5c8c-5ec0-4fd7-a45e-6b0bc8ff9119"
} }

View File

@ -0,0 +1,85 @@
{
"__type__": "cc.AnimationClip",
"_name": "Atk5",
"_objFlags": 0,
"_native": "",
"_duration": 1.0166666666666666,
"sample": 60,
"speed": 1,
"wrapMode": 1,
"curveData": {
"comps": {
"cc.Sprite": {
"spriteFrame": [
{
"frame": 0,
"value": {
"__uuid__": "6aa88bb9-0427-496f-ae7d-dc06410e904e"
}
},
{
"frame": 0.08333333333333333,
"value": {
"__uuid__": "cdc65f83-c526-48b6-8a96-758b098568fe"
}
},
{
"frame": 0.16666666666666666,
"value": {
"__uuid__": "927636af-2d1d-4801-a546-857f5eeb256d"
}
},
{
"frame": 0.26666666666666666,
"value": {
"__uuid__": "2aeeb833-9151-4160-9775-9e08a376fd63"
}
},
{
"frame": 0.36666666666666664,
"value": {
"__uuid__": "2bd1de9e-30e5-4bc5-b6c3-5c286754b0b7"
}
},
{
"frame": 0.4666666666666667,
"value": {
"__uuid__": "15a6ebb3-289a-46fb-ac94-f6efa0d90510"
}
},
{
"frame": 0.5833333333333334,
"value": {
"__uuid__": "6ca922c0-cb62-4b1b-8773-79685a58bbd6"
}
},
{
"frame": 0.7,
"value": {
"__uuid__": "d60ceb6f-3a45-47dd-8d3f-bcfe8c919d85"
}
},
{
"frame": 0.8,
"value": {
"__uuid__": "c313f6a1-e0fa-4321-8336-c32f471b2592"
}
},
{
"frame": 0.9,
"value": {
"__uuid__": "bb886d03-7f3e-45c8-acfd-393091f09adb"
}
},
{
"frame": 1,
"value": {
"__uuid__": "1be255c3-f8c9-43ae-be68-2e500e7f1125"
}
}
]
}
}
},
"events": []
}

View File

@ -0,0 +1,5 @@
{
"ver": "2.1.0",
"uuid": "0abbd156-980e-475e-9994-3c958bd913fc",
"subMetas": {}
}

View File

@ -811,6 +811,9 @@
}, },
{ {
"__uuid__": "7e0a1e98-ee5a-446f-bec2-7d72b6916503" "__uuid__": "7e0a1e98-ee5a-446f-bec2-7d72b6916503"
},
{
"__uuid__": "0abbd156-980e-475e-9994-3c958bd913fc"
} }
], ],
"playOnLoad": false, "playOnLoad": false,

View File

@ -464,7 +464,7 @@
"array": [ "array": [
0, 0,
0, 0,
210.49935741157617, 216.63421096211545,
0, 0,
0, 0,
0, 0,

View File

@ -15,6 +15,7 @@ window.ATK_CHARACTER_STATE = {
Atk2: [11, "Atk2"], Atk2: [11, "Atk2"],
Atk3: [12, "Atk3"], Atk3: [12, "Atk3"],
Atk4: [13, "Atk4"], Atk4: [13, "Atk4"],
Atk5: [14, "Atk5"],
}; };
window.ATK_CHARACTER_STATE_ARR = []; window.ATK_CHARACTER_STATE_ARR = [];

View File

@ -7,20 +7,33 @@ cc.Class({
this.speciesName = null; this.speciesName = null;
}, },
setSpecies(speciesName) { setSpecies(speciesName, fireballBullet, rdf) {
if (speciesName == this.speciesName) return; if (speciesName == this.speciesName) return;
this.speciesName = speciesName; this.speciesName = speciesName;
this.effAnimNode = this.node.getChildByName(this.speciesName); this.effAnimNode = this.node.getChildByName(this.speciesName);
this.animComp = this.effAnimNode.getComponent(cc.Animation); this.animComp = this.effAnimNode.getComponent(cc.Animation);
this.effAnimNode.active = true; this.effAnimNode.active = true;
for (let k in this.children) { for (let k in this.children) {
const child = this.children[k]; const child = this.children[k];
if (!child.active) continue; if (!child.active) continue;
if (child == effAnimNode || child.name == speciesName) continue; if (child == effAnimNode || child.name == speciesName) continue;
child.active = false; child.active = false;
} }
this.updateAnim(speciesName, fireballBullet, rdf);
}, },
onLoad() { onLoad() {},
updateAnim(speciesName, fireballBullet, rdf) {
// Update directions
if (this.animComp && this.animComp.node) {
if (0 > fireballBullet.DirX) {
this.effAnimNode.scaleX = (-1.0);
} else if (0 < fireballBullet.DirX) {
this.effAnimNode.scaleX = (1.0);
}
}
this.animComp.play(speciesName);
}, },
}); });

View File

@ -1067,7 +1067,7 @@ othersForcedDownsyncRenderFrame=${JSON.stringify(othersForcedDownsyncRenderFrame
} }
}, },
_renderFireballBullet(fireballBullet) { _renderFireballBullet(fireballBullet, rdf) {
const self = this; const self = this;
let pqNode = self.cachedFireballs.popAny(fireballBullet.Bullet.BulletLocalId); let pqNode = self.cachedFireballs.popAny(fireballBullet.Bullet.BulletLocalId);
const speciesName = `Fireball${fireballBullet.SpeciesId}`; const speciesName = `Fireball${fireballBullet.SpeciesId}`;
@ -1078,7 +1078,7 @@ othersForcedDownsyncRenderFrame=${JSON.stringify(othersForcedDownsyncRenderFrame
console.log(`Using a cached fireball node for rendering for bulletLocalId=${fireballBullet.Bullet.BulletLocalId}`); console.log(`Using a cached fireball node for rendering for bulletLocalId=${fireballBullet.Bullet.BulletLocalId}`);
} }
const cachedFireball = pqNode.value; const cachedFireball = pqNode.value;
cachedFireball.setSpecies(speciesName); cachedFireball.setSpecies(speciesName, fireballBullet, rdf);
cachedFireball.lastUsed = self.renderFrameId; cachedFireball.lastUsed = self.renderFrameId;
cachedFireball.bulletLocalId = fireballBullet.Bullet.BulletLocalId; cachedFireball.bulletLocalId = fireballBullet.Bullet.BulletLocalId;
@ -1111,7 +1111,9 @@ othersForcedDownsyncRenderFrame=${JSON.stringify(othersForcedDownsyncRenderFrame
const fireballBullets = rdf.FireballBullets; const fireballBullets = rdf.FireballBullets;
for (let k in fireballBullets) { for (let k in fireballBullets) {
const fireballBullet = fireballBullets[k]; const fireballBullet = fireballBullets[k];
self._renderFireballBullet(fireballBullet); if ((fireballBullet.Bullet.OriginatedRenderFrameId + fireballBullet.Bullet.StartupFrames <= rdf.Id) && (fireballBullet.Bullet.OriginatedRenderFrameId + fireballBullet.Bullet.StartupFrames + fireballBullet.Bullet.ActiveFrames > rdf.Id)) {
self._renderFireballBullet(fireballBullet, rdf);
}
} }
// Update countdown // Update countdown

View File

@ -65,6 +65,7 @@ const (
ATK_CHARACTER_STATE_ATK2 = int32(11) ATK_CHARACTER_STATE_ATK2 = int32(11)
ATK_CHARACTER_STATE_ATK3 = int32(12) ATK_CHARACTER_STATE_ATK3 = int32(12)
ATK_CHARACTER_STATE_ATK4 = int32(13) ATK_CHARACTER_STATE_ATK4 = int32(13)
ATK_CHARACTER_STATE_ATK5 = int32(14)
) )
var inAirSet = map[int32]bool{ var inAirSet = map[int32]bool{
@ -425,7 +426,13 @@ func deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame *PlayerDownsync,
patternId := PATTERN_ID_NO_OP patternId := PATTERN_ID_NO_OP
if decodedInput.BtnALevel > prevBtnALevel { if decodedInput.BtnALevel > prevBtnALevel {
patternId = 1 if 0 > effDy {
patternId = 3
} else if 0 < effDy {
patternId = 2
} else {
patternId = 1
}
} }
return patternId, jumpedOrNot, effDx, effDy return patternId, jumpedOrNot, effDx, effDy
@ -521,13 +528,11 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
var newBullet FireballBullet = *v // Copied primitive fields into an onstack variable var newBullet FireballBullet = *v // Copied primitive fields into an onstack variable
newBullet.BulletLocalId = bulletLocalId newBullet.BulletLocalId = bulletLocalId
bulletLocalId++ bulletLocalId++
xfac := int32(1) newBullet.VirtualGridX, newBullet.VirtualGridY = currPlayerDownsync.VirtualGridX+xfac*newBullet.HitboxOffsetX, currPlayerDownsync.VirtualGridY+newBullet.HitboxOffsetY
if 0 > thatPlayerInNextFrame.DirX {
xfac = -xfac
}
newBullet.VirtualGridX, newBullet.VirtualGridY = currPlayerDownsync.VirtualGridX+xfac*newBullet.HitboxOffsetX, currPlayerDownsync.VirtualGridY
newBullet.OriginatedRenderFrameId = currRenderFrame.Id newBullet.OriginatedRenderFrameId = currRenderFrame.Id
newBullet.OffenderJoinIndex = joinIndex newBullet.OffenderJoinIndex = joinIndex
newBullet.DirX = xfac
newBullet.DirY = 0
newBullet.VelX = newBullet.Speed * xfac newBullet.VelX = newBullet.Speed * xfac
newBullet.VelY = 0 newBullet.VelY = 0
nextRenderFrameFireballBullets = append(nextRenderFrameFireballBullets, &newBullet) nextRenderFrameFireballBullets = append(nextRenderFrameFireballBullets, &newBullet)
@ -550,7 +555,10 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
if 0 == currPlayerDownsync.FramesToRecover { if 0 == currPlayerDownsync.FramesToRecover {
if 0 != effDx || 0 != effDy { if 0 != effDx || 0 != effDy {
thatPlayerInNextFrame.DirX, thatPlayerInNextFrame.DirY = effDx, effDy if 0 != effDx {
thatPlayerInNextFrame.DirX = effDx
}
thatPlayerInNextFrame.DirY = effDy
thatPlayerInNextFrame.VelX = effDx * currPlayerDownsync.Speed thatPlayerInNextFrame.VelX = effDx * currPlayerDownsync.Speed
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_WALKING thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_WALKING
} else { } else {

View File

@ -130,7 +130,7 @@ var Characters = map[int]*CharacterConfig{
if currPlayerDownsync.InAir { if currPlayerDownsync.InAir {
return 257 return 257
} else { } else {
return 10 return 7
} }
} else { } else {
// Now that "0 < FramesToRecover", we're only able to fire any skill if it's a cancellation // Now that "0 < FramesToRecover", we're only able to fire any skill if it's a cancellation
@ -145,6 +145,14 @@ var Characters = map[int]*CharacterConfig{
} }
} }
} }
} else if 2 == patternId {
if !currPlayerDownsync.InAir {
return 11
}
} else if 3 == patternId {
if !currPlayerDownsync.InAir {
return 10
}
} }
// By default no skill can be fired // By default no skill can be fired
@ -227,7 +235,7 @@ var skills = map[int]*Skill{
Hits: []interface{}{ Hits: []interface{}{
&MeleeBullet{ &MeleeBullet{
Bullet: Bullet{ Bullet: Bullet{
StartupFrames: int32(15), StartupFrames: int32(8),
ActiveFrames: int32(30), ActiveFrames: int32(30),
HitStunFrames: MAX_INT32, HitStunFrames: MAX_INT32,
BlockStunFrames: int32(9), BlockStunFrames: int32(9),
@ -236,9 +244,9 @@ var skills = map[int]*Skill{
SelfLockVelY: int32(float64(5) * WORLD_TO_VIRTUAL_GRID_RATIO), SelfLockVelY: int32(float64(5) * WORLD_TO_VIRTUAL_GRID_RATIO),
PushbackVelX: int32(float64(2) * WORLD_TO_VIRTUAL_GRID_RATIO), PushbackVelX: int32(float64(2) * WORLD_TO_VIRTUAL_GRID_RATIO),
PushbackVelY: int32(float64(7) * WORLD_TO_VIRTUAL_GRID_RATIO), PushbackVelY: int32(float64(7) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxOffsetX: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO), HitboxOffsetX: int32(float64(16) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxOffsetY: int32(0), HitboxOffsetY: int32(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxSizeX: int32(float64(48) * WORLD_TO_VIRTUAL_GRID_RATIO), HitboxSizeX: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxSizeY: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO), HitboxSizeY: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
BlowUp: true, BlowUp: true,
}, },
@ -318,7 +326,7 @@ var skills = map[int]*Skill{
Hits: []interface{}{ Hits: []interface{}{
&MeleeBullet{ &MeleeBullet{
Bullet: Bullet{ Bullet: Bullet{
StartupFrames: int32(15), StartupFrames: int32(8),
ActiveFrames: int32(28), ActiveFrames: int32(28),
HitStunFrames: MAX_INT32, HitStunFrames: MAX_INT32,
BlockStunFrames: int32(9), BlockStunFrames: int32(9),
@ -326,7 +334,7 @@ var skills = map[int]*Skill{
SelfLockVelX: int32(float64(-0.1) * WORLD_TO_VIRTUAL_GRID_RATIO), SelfLockVelX: int32(float64(-0.1) * WORLD_TO_VIRTUAL_GRID_RATIO),
SelfLockVelY: NO_LOCK_VEL, SelfLockVelY: NO_LOCK_VEL,
PushbackVelX: int32(float64(2) * WORLD_TO_VIRTUAL_GRID_RATIO), PushbackVelX: int32(float64(2) * WORLD_TO_VIRTUAL_GRID_RATIO),
PushbackVelY: int32(float64(7) * WORLD_TO_VIRTUAL_GRID_RATIO), PushbackVelY: NO_LOCK_VEL,
HitboxOffsetX: int32(float64(24) * WORLD_TO_VIRTUAL_GRID_RATIO), HitboxOffsetX: int32(float64(24) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxOffsetY: int32(0), HitboxOffsetY: int32(0),
HitboxSizeX: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO), HitboxSizeX: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
@ -350,7 +358,7 @@ var skills = map[int]*Skill{
HitStunFrames: int32(13), HitStunFrames: int32(13),
BlockStunFrames: int32(9), BlockStunFrames: int32(9),
Damage: int32(5), Damage: int32(5),
SelfLockVelX: int32(float64(0.05) * WORLD_TO_VIRTUAL_GRID_RATIO), SelfLockVelX: NO_LOCK_VEL,
SelfLockVelY: NO_LOCK_VEL, SelfLockVelY: NO_LOCK_VEL,
PushbackVelX: int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO), PushbackVelX: int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
PushbackVelY: int32(0), PushbackVelY: int32(0),
@ -362,7 +370,7 @@ var skills = map[int]*Skill{
CancellableEdFrame: int32(30), CancellableEdFrame: int32(30),
CancelTransit: map[int]int{ CancelTransit: map[int]int{
1: 2, 1: 8,
}, },
// TODO: Use non-zero "selfLockVel" // TODO: Use non-zero "selfLockVel"
}, },
@ -394,34 +402,35 @@ var skills = map[int]*Skill{
CancellableStFrame: int32(22), CancellableStFrame: int32(22),
CancellableEdFrame: int32(36), CancellableEdFrame: int32(36),
CancelTransit: map[int]int{ CancelTransit: map[int]int{
1: 3, 1: 9,
}, },
}, },
}, },
}, },
}, },
9: &Skill{ 9: &Skill{
RecoveryFrames: int32(50), RecoveryFrames: int32(40),
RecoveryFramesOnBlock: int32(50), RecoveryFramesOnBlock: int32(40),
RecoveryFramesOnHit: int32(50), RecoveryFramesOnHit: int32(40),
ReleaseTriggerType: int32(1), ReleaseTriggerType: int32(1),
BoundChState: ATK_CHARACTER_STATE_ATK3, BoundChState: ATK_CHARACTER_STATE_ATK3,
Hits: []interface{}{ Hits: []interface{}{
&MeleeBullet{ &MeleeBullet{
Bullet: Bullet{ Bullet: Bullet{
StartupFrames: int32(15), StartupFrames: int32(7),
ActiveFrames: int32(30), ActiveFrames: int32(30),
HitStunFrames: MAX_INT32, HitStunFrames: MAX_INT32,
BlockStunFrames: int32(9), BlockStunFrames: int32(9),
Damage: int32(10), Damage: int32(10),
SelfLockVelX: int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO), SelfLockVelX: int32(float64(1) * WORLD_TO_VIRTUAL_GRID_RATIO),
SelfLockVelY: int32(float64(5) * WORLD_TO_VIRTUAL_GRID_RATIO), SelfLockVelY: NO_LOCK_VEL,
PushbackVelX: int32(float64(2) * WORLD_TO_VIRTUAL_GRID_RATIO), PushbackVelX: int32(float64(2) * WORLD_TO_VIRTUAL_GRID_RATIO),
PushbackVelY: int32(float64(7) * WORLD_TO_VIRTUAL_GRID_RATIO), PushbackVelY: int32(float64(4) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxOffsetX: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO), HitboxOffsetX: int32(float64(10) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxOffsetY: int32(0), HitboxOffsetY: int32(0),
HitboxSizeX: int32(float64(48) * WORLD_TO_VIRTUAL_GRID_RATIO), HitboxSizeX: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxSizeY: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO), HitboxSizeY: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
BlowUp: true,
}, },
}, },
}, },
@ -447,13 +456,40 @@ var skills = map[int]*Skill{
PushbackVelX: int32(float64(2) * WORLD_TO_VIRTUAL_GRID_RATIO), PushbackVelX: int32(float64(2) * WORLD_TO_VIRTUAL_GRID_RATIO),
PushbackVelY: int32(0), PushbackVelY: int32(0),
HitboxOffsetX: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO), HitboxOffsetX: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxOffsetY: int32(0), HitboxOffsetY: int32(float64(5) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxSizeX: int32(float64(48) * WORLD_TO_VIRTUAL_GRID_RATIO), HitboxSizeX: int32(float64(48) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxSizeY: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO), HitboxSizeY: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
}, },
}, },
}, },
}, },
11: &Skill{
RecoveryFrames: int32(60),
RecoveryFramesOnBlock: int32(60),
RecoveryFramesOnHit: int32(60),
ReleaseTriggerType: int32(1),
BoundChState: ATK_CHARACTER_STATE_ATK5,
Hits: []interface{}{
&MeleeBullet{
Bullet: Bullet{
StartupFrames: int32(3),
ActiveFrames: int32(25),
HitStunFrames: MAX_INT32,
BlockStunFrames: int32(9),
Damage: int32(30),
SelfLockVelX: int32(float64(1) * WORLD_TO_VIRTUAL_GRID_RATIO),
SelfLockVelY: int32(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO),
PushbackVelX: int32(float64(2) * WORLD_TO_VIRTUAL_GRID_RATIO),
PushbackVelY: int32(float64(7) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxOffsetX: int32(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxOffsetY: int32(0),
HitboxSizeX: int32(float64(40) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxSizeY: int32(float64(64) * WORLD_TO_VIRTUAL_GRID_RATIO),
BlowUp: true,
},
},
},
},
255: &Skill{ 255: &Skill{
RecoveryFrames: int32(30), RecoveryFrames: int32(30),
RecoveryFramesOnBlock: int32(30), RecoveryFramesOnBlock: int32(30),