diff --git a/battle_srv/models/room.go b/battle_srv/models/room.go
index 68c9cd0..fe69ed2 100644
--- a/battle_srv/models/room.go
+++ b/battle_srv/models/room.go
@@ -92,7 +92,6 @@ type Room struct {
Capacity int
collisionSpaceOffsetX float64
collisionSpaceOffsetY float64
- playerOpPatternToSkillId map[int]int
Players map[int32]*Player
PlayersArr []*Player // ordered by joinIndex
Space *resolv.Space
@@ -397,18 +396,11 @@ func (pR *Room) StartBattle() {
pR.RenderFrameId = 0
- // [WARNING] Only since battle starts do we have all players bound to certain joinIndexes.
- for _, player := range pR.Players {
- opJoinIndexPrefix := (int(player.JoinIndex) << uint(8))
- pR.playerOpPatternToSkillId[opJoinIndexPrefix+0] = 1 // Hardcoded for now
- }
-
// Initialize the "collisionSys" as well as "RenderFrameBuffer"
pR.CurDynamicsRenderFrameId = 0
kickoffFrameJs := &battle.RoomDownsyncFrame{
Id: pR.RenderFrameId,
PlayersArr: toJsPlayers(pR.Players),
- PlayerOpPatternToSkillId: pR.playerOpPatternToSkillId,
CountdownNanos: pR.BattleDurationNanos,
}
pR.RenderFrameBuffer.Put(kickoffFrameJs)
@@ -1270,7 +1262,7 @@ func (pR *Room) applyInputFrameDownsyncDynamics(fromRenderFrameId int32, toRende
}
}
- nextRenderFrame := battle.ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(pR.InputsBuffer, currRenderFrame, pR.Space, pR.CollisionSysMap, pR.InputDelayFrames, pR.InputScaleFrames, pR.collisionSpaceOffsetX, pR.collisionSpaceOffsetY, pR.SnapIntoPlatformOverlap, pR.SnapIntoPlatformThreshold, pR.WorldToVirtualGridRatio, pR.VirtualGridToWorldRatio, pR.playerOpPatternToSkillId)
+ nextRenderFrame := battle.ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(pR.InputsBuffer, currRenderFrame, pR.Space, pR.CollisionSysMap, pR.collisionSpaceOffsetX, pR.collisionSpaceOffsetY)
pR.RenderFrameBuffer.Put(nextRenderFrame)
pR.CurDynamicsRenderFrameId++
}
@@ -1467,7 +1459,6 @@ func (pR *Room) downsyncToSinglePlayer(playerId int32, player *Player, refRender
}
refRenderFrame := tmp.(*battle.RoomDownsyncFrame)
- refRenderFrame.PlayerOpPatternToSkillId = pR.playerOpPatternToSkillId
for i, player := range pR.PlayersArr {
refRenderFrame.PlayersArr[i].ColliderRadius = player.ColliderRadius // hardcoded for now
}
diff --git a/frontend/assets/plugin_scripts/jsexport.js b/frontend/assets/plugin_scripts/jsexport.js
index 601ee24..1d8605f 100644
--- a/frontend/assets/plugin_scripts/jsexport.js
+++ b/frontend/assets/plugin_scripts/jsexport.js
@@ -4724,7 +4724,7 @@ $packages["resolv"] = (function() {
return $pkg;
})();
$packages["jsexport/battle"] = (function() {
- var $pkg = {}, $init, math, resolv, Vec2D, Polygon2D, PlayerDownsync, InputFrameDecoded, Barrier, Bullet, MeleeBullet, FireballBullet, Skill, RoomDownsyncFrame, InputFrameDownsync, RingBuffer, CharacterConfig, SatResult, sliceType, sliceType$1, sliceType$2, ptrType, sliceType$3, sliceType$4, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, sliceType$5, ptrType$7, sliceType$6, sliceType$7, sliceType$8, sliceType$9, ptrType$8, sliceType$10, ptrType$9, sliceType$11, sliceType$12, ptrType$10, sliceType$13, ptrType$11, mapType, ptrType$12, skills, inAirSet, noOpSet, invinsibleSet, nonAttackingSet, NewRingBuffer, ConvertToInputFrameId, decodeInput, CalcPushbacks, isPolygonPairOverlapped, isPolygonPairSeparatedByDir, WorldToVirtualGridPos, VirtualGridToWorldPos, WorldToPolygonColliderBLPos, PolygonColliderBLToWorldPos, PolygonColliderBLToVirtualGridPos, VirtualGridToPolygonColliderBLPos, calcHardPushbacksNorms, deriveOpPattern, ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame, GenerateRectCollider, generateRectColliderInCollisionSpace, GenerateConvexPolygonCollider, AlignPolygon2DToBoundingBox;
+ var $pkg = {}, $init, math, resolv, Vec2D, Polygon2D, PlayerDownsync, InputFrameDecoded, Barrier, Bullet, MeleeBullet, FireballBullet, Skill, RoomDownsyncFrame, InputFrameDownsync, RingBuffer, SkillMapperType, CharacterConfig, SatResult, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, ptrType$2, sliceType$3, sliceType$4, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, sliceType$5, sliceType$6, sliceType$7, sliceType$8, sliceType$9, ptrType$8, sliceType$10, ptrType$9, sliceType$11, sliceType$12, ptrType$10, sliceType$13, ptrType$11, mapType, ptrType$12, skills, inAirSet, noOpSet, invinsibleSet, nonAttackingSet, NewRingBuffer, ConvertToInputFrameId, decodeInput, CalcPushbacks, isPolygonPairOverlapped, isPolygonPairSeparatedByDir, WorldToVirtualGridPos, VirtualGridToWorldPos, WorldToPolygonColliderBLPos, PolygonColliderBLToWorldPos, PolygonColliderBLToVirtualGridPos, VirtualGridToPolygonColliderBLPos, calcHardPushbacksNorms, deriveOpPattern, ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame, GenerateRectCollider, generateRectColliderInCollisionSpace, GenerateConvexPolygonCollider, AlignPolygon2DToBoundingBox;
math = $packages["math"];
resolv = $packages["resolv"];
Vec2D = $pkg.Vec2D = $newType(0, $kindStruct, "battle.Vec2D", true, "jsexport/battle", true, function(X_, Y_) {
@@ -4819,7 +4819,7 @@ $packages["jsexport/battle"] = (function() {
}
this.Boundary = Boundary_;
});
- Bullet = $pkg.Bullet = $newType(0, $kindStruct, "battle.Bullet", true, "jsexport/battle", true, function(OriginatedRenderFrameId_, OffenderJoinIndex_, StartupFrames_, CancellableStFrame_, CancellableEdFrame_, ActiveFrames_, HitStunFrames_, BlockStunFrames_, PushbackVelX_, PushbackVelY_, Damage_, SelfLockVelX_, SelfLockVelY_, HitboxOffsetX_, HitboxOffsetY_, HitboxSizeX_, HitboxSizeY_, BlowUp_) {
+ Bullet = $pkg.Bullet = $newType(0, $kindStruct, "battle.Bullet", true, "jsexport/battle", true, function(OriginatedRenderFrameId_, OffenderJoinIndex_, StartupFrames_, CancellableStFrame_, CancellableEdFrame_, ActiveFrames_, HitStunFrames_, BlockStunFrames_, PushbackVelX_, PushbackVelY_, Damage_, SelfLockVelX_, SelfLockVelY_, HitboxOffsetX_, HitboxOffsetY_, HitboxSizeX_, HitboxSizeY_, BlowUp_, CancelTransit_) {
this.$val = this;
if (arguments.length === 0) {
this.OriginatedRenderFrameId = 0;
@@ -4840,6 +4840,7 @@ $packages["jsexport/battle"] = (function() {
this.HitboxSizeX = 0;
this.HitboxSizeY = 0;
this.BlowUp = false;
+ this.CancelTransit = false;
return;
}
this.OriginatedRenderFrameId = OriginatedRenderFrameId_;
@@ -4860,11 +4861,12 @@ $packages["jsexport/battle"] = (function() {
this.HitboxSizeX = HitboxSizeX_;
this.HitboxSizeY = HitboxSizeY_;
this.BlowUp = BlowUp_;
+ this.CancelTransit = CancelTransit_;
});
MeleeBullet = $pkg.MeleeBullet = $newType(0, $kindStruct, "battle.MeleeBullet", true, "jsexport/battle", true, function(Bullet_) {
this.$val = this;
if (arguments.length === 0) {
- this.Bullet = new Bullet.ptr(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false);
+ this.Bullet = new Bullet.ptr(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, false);
return;
}
this.Bullet = Bullet_;
@@ -4879,7 +4881,7 @@ $packages["jsexport/battle"] = (function() {
this.VelX = 0;
this.VelY = 0;
this.Speed = 0;
- this.Bullet = new Bullet.ptr(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false);
+ this.Bullet = new Bullet.ptr(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, false);
return;
}
this.VirtualGridX = VirtualGridX_;
@@ -4891,7 +4893,7 @@ $packages["jsexport/battle"] = (function() {
this.Speed = Speed_;
this.Bullet = Bullet_;
});
- Skill = $pkg.Skill = $newType(0, $kindStruct, "battle.Skill", true, "jsexport/battle", true, function(BattleLocalId_, RecoveryFrames_, RecoveryFramesOnBlock_, RecoveryFramesOnHit_, ReleaseTriggerType_, Hits_) {
+ Skill = $pkg.Skill = $newType(0, $kindStruct, "battle.Skill", true, "jsexport/battle", true, function(BattleLocalId_, RecoveryFrames_, RecoveryFramesOnBlock_, RecoveryFramesOnHit_, ReleaseTriggerType_, BoundChState_, Hits_) {
this.$val = this;
if (arguments.length === 0) {
this.BattleLocalId = 0;
@@ -4899,7 +4901,8 @@ $packages["jsexport/battle"] = (function() {
this.RecoveryFramesOnBlock = 0;
this.RecoveryFramesOnHit = 0;
this.ReleaseTriggerType = 0;
- this.Hits = sliceType.nil;
+ this.BoundChState = 0;
+ this.Hits = sliceType$2.nil;
return;
}
this.BattleLocalId = BattleLocalId_;
@@ -4907,6 +4910,7 @@ $packages["jsexport/battle"] = (function() {
this.RecoveryFramesOnBlock = RecoveryFramesOnBlock_;
this.RecoveryFramesOnHit = RecoveryFramesOnHit_;
this.ReleaseTriggerType = ReleaseTriggerType_;
+ this.BoundChState = BoundChState_;
this.Hits = Hits_;
});
RoomDownsyncFrame = $pkg.RoomDownsyncFrame = $newType(0, $kindStruct, "battle.RoomDownsyncFrame", true, "jsexport/battle", true, function(Id_, PlayersArr_, CountdownNanos_, MeleeBullets_, FireballBullets_, BackendUnconfirmedMask_, ShouldForceResync_, PlayerOpPatternToSkillId_) {
@@ -4952,7 +4956,7 @@ $packages["jsexport/battle"] = (function() {
this.StFrameId = 0;
this.N = 0;
this.Cnt = 0;
- this.Eles = sliceType.nil;
+ this.Eles = sliceType$2.nil;
return;
}
this.Ed = Ed_;
@@ -4963,7 +4967,8 @@ $packages["jsexport/battle"] = (function() {
this.Cnt = Cnt_;
this.Eles = Eles_;
});
- CharacterConfig = $pkg.CharacterConfig = $newType(0, $kindStruct, "battle.CharacterConfig", true, "jsexport/battle", true, function(SpeciesId_, SpeciesName_, InAirIdleFrameIdxTurningPoint_, InAirIdleFrameIdxTurnedCycle_, LayDownFrames_, LayDownFramesToRecover_, GetUpFrames_, GetUpFramesToRecover_, JumpingInitVelY_, PatternIdToSkillId_) {
+ SkillMapperType = $pkg.SkillMapperType = $newType(4, $kindFunc, "battle.SkillMapperType", true, "jsexport/battle", true, null);
+ CharacterConfig = $pkg.CharacterConfig = $newType(0, $kindStruct, "battle.CharacterConfig", true, "jsexport/battle", true, function(SpeciesId_, SpeciesName_, InAirIdleFrameIdxTurningPoint_, InAirIdleFrameIdxTurnedCycle_, LayDownFrames_, LayDownFramesToRecover_, GetUpFrames_, GetUpFramesToRecover_, JumpingInitVelY_, SkillMapper_) {
this.$val = this;
if (arguments.length === 0) {
this.SpeciesId = 0;
@@ -4975,7 +4980,7 @@ $packages["jsexport/battle"] = (function() {
this.GetUpFrames = 0;
this.GetUpFramesToRecover = 0;
this.JumpingInitVelY = 0;
- this.PatternIdToSkillId = false;
+ this.SkillMapper = $throwNilPointerError;
return;
}
this.SpeciesId = SpeciesId_;
@@ -4987,7 +4992,7 @@ $packages["jsexport/battle"] = (function() {
this.GetUpFrames = GetUpFrames_;
this.GetUpFramesToRecover = GetUpFramesToRecover_;
this.JumpingInitVelY = JumpingInitVelY_;
- this.PatternIdToSkillId = PatternIdToSkillId_;
+ this.SkillMapper = SkillMapper_;
});
SatResult = $pkg.SatResult = $newType(0, $kindStruct, "battle.SatResult", true, "jsexport/battle", true, function(Overlap_, OverlapX_, OverlapY_, AContainedInB_, BContainedInA_, Axis_) {
this.$val = this;
@@ -5007,23 +5012,23 @@ $packages["jsexport/battle"] = (function() {
this.BContainedInA = BContainedInA_;
this.Axis = Axis_;
});
- sliceType = $sliceType($emptyInterface);
- sliceType$1 = $sliceType($Int32);
- sliceType$2 = $sliceType(sliceType$1);
- ptrType = $ptrType(SatResult);
+ sliceType = $sliceType($Int32);
+ sliceType$1 = $sliceType(sliceType);
+ sliceType$2 = $sliceType($emptyInterface);
+ ptrType = $ptrType(Skill);
+ ptrType$1 = $ptrType(MeleeBullet);
+ ptrType$2 = $ptrType(SatResult);
sliceType$3 = $sliceType(Vec2D);
sliceType$4 = $sliceType($String);
- ptrType$1 = $ptrType(resolv.Collision);
- ptrType$2 = $ptrType(sliceType$3);
- ptrType$3 = $ptrType(PlayerDownsync);
- ptrType$4 = $ptrType(MeleeBullet);
- ptrType$5 = $ptrType(resolv.ConvexPolygon);
- ptrType$6 = $ptrType(InputFrameDownsync);
+ ptrType$3 = $ptrType(resolv.Collision);
+ ptrType$4 = $ptrType(sliceType$3);
+ ptrType$5 = $ptrType(PlayerDownsync);
+ ptrType$6 = $ptrType(resolv.ConvexPolygon);
+ ptrType$7 = $ptrType(InputFrameDownsync);
sliceType$5 = $sliceType($Uint64);
- ptrType$7 = $ptrType(Skill);
- sliceType$6 = $sliceType(ptrType$3);
- sliceType$7 = $sliceType(ptrType$4);
- sliceType$8 = $sliceType(ptrType$2);
+ sliceType$6 = $sliceType(ptrType$5);
+ sliceType$7 = $sliceType(ptrType$1);
+ sliceType$8 = $sliceType(ptrType$4);
sliceType$9 = $sliceType($Bool);
ptrType$8 = $ptrType(resolv.Object);
sliceType$10 = $sliceType(ptrType$8);
@@ -5037,7 +5042,7 @@ $packages["jsexport/battle"] = (function() {
ptrType$12 = $ptrType(RingBuffer);
NewRingBuffer = function(n) {
var n;
- return new RingBuffer.ptr(0, 0, 0, 0, n, 0, $makeSlice(sliceType, n));
+ return new RingBuffer.ptr(0, 0, 0, 0, n, 0, $makeSlice(sliceType$2, n));
};
$pkg.NewRingBuffer = NewRingBuffer;
RingBuffer.ptr.prototype.Put = function(pItem) {
@@ -5190,8 +5195,8 @@ $packages["jsexport/battle"] = (function() {
$24r$1 = [false, 0, 0, overlapResult];
$s = 5; case 5: return $24r$1;
/* } */ case 3:
- $s = -1; return [false, 0, 0, ptrType.nil];
- /* */ } return; } } catch(err) { $err = err; $s = -1; return [false, 0, 0, ptrType.nil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: CalcPushbacks, $c: true, $r, $24r, $24r$1, _tmp, _tmp$1, _tuple, barrierShape, oldDx, oldDy, origX, origY, overlapResult, overlapped, playerShape, pushbackX, pushbackY, $s, $deferred};return $f; } }
+ $s = -1; return [false, 0, 0, ptrType$2.nil];
+ /* */ } return; } } catch(err) { $err = err; $s = -1; return [false, 0, 0, ptrType$2.nil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: CalcPushbacks, $c: true, $r, $24r, $24r$1, _tmp, _tmp$1, _tuple, barrierShape, oldDx, oldDy, origX, origY, overlapResult, overlapped, playerShape, pushbackX, pushbackY, $s, $deferred};return $f; } }
};
$pkg.CalcPushbacks = CalcPushbacks;
isPolygonPairOverlapped = function(a, b, result) {
@@ -5201,7 +5206,7 @@ $packages["jsexport/battle"] = (function() {
aCnt = _tmp;
bCnt = _tmp$1;
if ((1 === aCnt) && (1 === bCnt)) {
- if (!(ptrType.nil === result)) {
+ if (!(ptrType$2.nil === result)) {
result.Overlap = 0;
}
return ((x = (x$1 = a.Points, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === (x$2 = (x$3 = b.Points, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])), (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]))) && ((x$4 = (x$5 = a.Points, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0])), (1 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 1])) === (x$6 = (x$7 = b.Points, (0 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 0])), (1 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 1])));
@@ -5273,7 +5278,7 @@ $packages["jsexport/battle"] = (function() {
if (aStart > bEnd || aEnd < bStart) {
return true;
}
- if (!(ptrType.nil === result)) {
+ if (!(ptrType$2.nil === result)) {
overlap = 0;
if (aStart < bStart) {
result.AContainedInB = false;
@@ -5368,8 +5373,8 @@ $packages["jsexport/battle"] = (function() {
ret = [ret];
ret[0] = $makeSlice(sliceType$3, 0, 10);
collision = playerCollider.Check(0, 0, new sliceType$4([]));
- if (ptrType$1.nil === collision) {
- $s = -1; return (ret.$ptr || (ret.$ptr = new ptrType$2(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, ret)));
+ if (ptrType$3.nil === collision) {
+ $s = -1; return (ret.$ptr || (ret.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, ret)));
}
_ref = collision.Objects;
_i = 0;
@@ -5378,8 +5383,8 @@ $packages["jsexport/battle"] = (function() {
obj = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
isBarrier = false;
_ref$1 = obj.Data;
- if ($assertType(_ref$1, ptrType$3, true)[1]) {
- } else if ($assertType(_ref$1, ptrType$4, true)[1]) {
+ if ($assertType(_ref$1, ptrType$5, true)[1]) {
+ } else if ($assertType(_ref$1, ptrType$1, true)[1]) {
} else {
isBarrier = true;
}
@@ -5387,7 +5392,7 @@ $packages["jsexport/battle"] = (function() {
_i++;
/* continue; */ $s = 1; continue;
}
- barrierShape = $assertType(obj.Shape, ptrType$5);
+ barrierShape = $assertType(obj.Shape, ptrType$6);
_r = CalcPushbacks(0, 0, playerShape, barrierShape); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
overlapped = _tuple[0];
@@ -5408,11 +5413,11 @@ $packages["jsexport/battle"] = (function() {
_i++;
$s = 1; continue;
case 2:
- $s = -1; return (ret.$ptr || (ret.$ptr = new ptrType$2(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, ret)));
+ $s = -1; return (ret.$ptr || (ret.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, ret)));
/* */ } return; } var $f = {$blk: calcHardPushbacksNorms, $c: true, $r, _i, _r, _ref, _ref$1, _tmp, _tmp$1, _tuple, barrierShape, collision, isBarrier, joinIndex, obj, overlapResult, overlapped, pEffPushback, playerCollider, playerShape, pushbackX, pushbackY, ret, snapIntoPlatformOverlap, $s};return $f;
};
deriveOpPattern = function(currPlayerDownsync, thatPlayerInNextFrame, currRenderFrame, inputsBuffer, inputDelayFrames, inputScaleFrames) {
- var _entry, _entry$1, _entry$2, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, currPlayerDownsync, currRenderFrame, decodedInput, delayedInputFrameId, delayedInputFrameIdForPrevRdf, delayedInputList, delayedInputListForPrevRdf, effDx, effDy, existent, existent$1, inputDelayFrames, inputScaleFrames, inputsBuffer, joinIndex, jumpedOrNot, patternId, prevBtnALevel, prevBtnBLevel, prevDecodedInput, skillConfig, thatPlayerInNextFrame, v, x, x$1, x$2, x$3;
+ var _entry, _entry$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, currPlayerDownsync, currRenderFrame, decodedInput, delayedInputFrameId, delayedInputFrameIdForPrevRdf, delayedInputList, delayedInputListForPrevRdf, effDx, effDy, existent, existent$1, inputDelayFrames, inputScaleFrames, inputsBuffer, joinIndex, jumpedOrNot, patternId, prevBtnALevel, prevBtnBLevel, prevDecodedInput, thatPlayerInNextFrame, x, x$1;
delayedInputFrameId = ConvertToInputFrameId(currRenderFrame.Id, inputDelayFrames, inputScaleFrames);
delayedInputFrameIdForPrevRdf = ConvertToInputFrameId(currRenderFrame.Id - 1 >> 0, inputDelayFrames, inputScaleFrames);
if (0 >= delayedInputFrameId) {
@@ -5423,10 +5428,10 @@ $packages["jsexport/battle"] = (function() {
if (existent) {
return [-2, false, 0, 0];
}
- delayedInputList = $assertType(inputsBuffer.GetByFrameId(delayedInputFrameId), ptrType$6).InputList;
+ delayedInputList = $assertType(inputsBuffer.GetByFrameId(delayedInputFrameId), ptrType$7).InputList;
delayedInputListForPrevRdf = sliceType$5.nil;
if (0 < delayedInputFrameIdForPrevRdf) {
- delayedInputListForPrevRdf = $assertType(inputsBuffer.GetByFrameId(delayedInputFrameIdForPrevRdf), ptrType$6).InputList;
+ delayedInputListForPrevRdf = $assertType(inputsBuffer.GetByFrameId(delayedInputFrameIdForPrevRdf), ptrType$7).InputList;
}
jumpedOrNot = false;
joinIndex = currPlayerDownsync.JoinIndex;
@@ -5459,27 +5464,12 @@ $packages["jsexport/battle"] = (function() {
}
patternId = -1;
if (decodedInput.BtnALevel > prevBtnALevel) {
- if (currPlayerDownsync.InAir) {
- patternId = 255;
- } else {
- patternId = 1;
- }
- }
- if (!((-1 === patternId)) && 0 < currPlayerDownsync.FramesToRecover) {
- patternId = -1;
- skillConfig = (_entry$2 = skills[$Int.keyFor(((currPlayerDownsync.ActiveSkillId >> 0)))], _entry$2 !== undefined ? _entry$2.v : ptrType$7.nil);
- _ref = (x$2 = skillConfig.Hits, x$3 = currPlayerDownsync.ActiveSkillHit, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3]));
- if ($assertType(_ref, ptrType$4, true)[1]) {
- v = _ref.$val;
- if (v.Bullet.CancellableStFrame <= currPlayerDownsync.FramesInChState && currPlayerDownsync.FramesInChState < v.Bullet.CancellableEdFrame) {
- patternId = (((currPlayerDownsync.ActiveSkillId + 1 >> 0) >> 0));
- }
- }
+ patternId = 1;
}
return [patternId, jumpedOrNot, effDx, effDy];
};
ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame = function(inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, collisionSpaceOffsetX, collisionSpaceOffsetY, chConfigsOrderedByJoinIndex) {
- var {_1, _2, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _entry$6, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _r, _r$1, _r$2, _r$3, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _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$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, atkedPlayerInNextFrame, bShape, bulletCollider, bulletColliders, bulletShape, bulletWx, bulletWy, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, collision, collision$1, collisionPlayerIndex, collisionPlayerIndex$1, collisionPlayerIndex$2, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, hardPushbackNorm, hardPushbackNorms, hitboxSizeWx, hitboxSizeWy, 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, newBulletCollider, newVx, newVy, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, offender, offender$1, oldFramesToRecover, oldNextCharacterState, overlapResult, overlapped, overlapped$1, patternId, playerCollider, playerCollider$1, playerCollider$2, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, $s, $r, $c} = $restore(this, {inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, collisionSpaceOffsetX, collisionSpaceOffsetY, chConfigsOrderedByJoinIndex});
+ var {_1, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _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$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, atkedPlayerInNextFrame, bShape, bulletCollider, bulletColliders, bulletShape, bulletWx, bulletWy, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, collision, collision$1, collisionPlayerIndex, collisionPlayerIndex$1, collisionPlayerIndex$2, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, hardPushbackNorm, hardPushbackNorms, hitboxSizeWx, hitboxSizeWy, 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, newBulletCollider, newVx, newVy, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, offender, offender$1, oldFramesToRecover, oldNextCharacterState, overlapResult, overlapped, overlapped$1, patternId, playerCollider, playerCollider$1, playerCollider$2, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, $s, $r, $c} = $restore(this, {inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, collisionSpaceOffsetX, collisionSpaceOffsetY, chConfigsOrderedByJoinIndex});
/* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
roomCapacity = currRenderFrame.PlayersArr.$length;
nextRenderFramePlayers = $makeSlice(sliceType$6, roomCapacity);
@@ -5501,8 +5491,8 @@ $packages["jsexport/battle"] = (function() {
jumpedOrNotList = $makeSlice(sliceType$9, roomCapacity);
_ref$1 = currRenderFrame.PlayersArr;
_i$1 = 0;
- while (true) {
- if (!(_i$1 < _ref$1.$length)) { break; }
+ /* while (true) { */ case 1:
+ /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 2; continue; }
newBullet = [newBullet];
i$1 = _i$1;
currPlayerDownsync$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
@@ -5519,37 +5509,29 @@ $packages["jsexport/battle"] = (function() {
((i$1 < 0 || i$1 >= jumpedOrNotList.$length) ? ($throwRuntimeError("index out of range"), undefined) : jumpedOrNotList.$array[jumpedOrNotList.$offset + i$1] = true);
}
joinIndex = currPlayerDownsync$1.JoinIndex;
- if (!((-1 === patternId))) {
- _tuple$1 = (_entry = chConfig.PatternIdToSkillId[$Int.keyFor(patternId)], _entry !== undefined ? [_entry.v, true] : [0, false]);
- skillId = _tuple$1[0];
- existent = _tuple$1[1];
- if (existent) {
- skillConfig = (_entry$1 = skills[$Int.keyFor(skillId)], _entry$1 !== undefined ? _entry$1.v : ptrType$7.nil);
- thatPlayerInNextFrame.ActiveSkillId = ((skillId >> 0));
- thatPlayerInNextFrame.ActiveSkillHit = 0;
- _ref$2 = (x = skillConfig.Hits, x$1 = thatPlayerInNextFrame.ActiveSkillHit, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
- if ($assertType(_ref$2, ptrType$4, true)[1]) {
- v = _ref$2.$val;
- newBullet[0] = $clone(v, MeleeBullet);
- newBullet[0].Bullet.OriginatedRenderFrameId = currRenderFrame.Id;
- newBullet[0].Bullet.OffenderJoinIndex = joinIndex;
- nextRenderFrameMeleeBullets = $append(nextRenderFrameMeleeBullets, newBullet[0]);
- thatPlayerInNextFrame.FramesToRecover = skillConfig.RecoveryFrames;
- }
- _1 = skillId;
- if (_1 === (1)) {
- thatPlayerInNextFrame.CharacterState = 2;
- } else if (_1 === (2)) {
- thatPlayerInNextFrame.CharacterState = 11;
- } else if (_1 === (3)) {
- thatPlayerInNextFrame.CharacterState = 12;
- }
- if (false === currPlayerDownsync$1.InAir) {
- thatPlayerInNextFrame.VelX = 0;
- }
- _i$1++;
- continue;
+ _r = chConfig.SkillMapper(patternId, currPlayerDownsync$1); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
+ skillId = _r;
+ _tuple$1 = (_entry = skills[$Int.keyFor(skillId)], _entry !== undefined ? [_entry.v, true] : [ptrType.nil, false]);
+ skillConfig = _tuple$1[0];
+ existent = _tuple$1[1];
+ if (existent) {
+ thatPlayerInNextFrame.ActiveSkillId = ((skillId >> 0));
+ thatPlayerInNextFrame.ActiveSkillHit = 0;
+ _ref$2 = (x = skillConfig.Hits, x$1 = thatPlayerInNextFrame.ActiveSkillHit, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
+ if ($assertType(_ref$2, ptrType$1, true)[1]) {
+ v = _ref$2.$val;
+ newBullet[0] = $clone(v, MeleeBullet);
+ newBullet[0].Bullet.OriginatedRenderFrameId = currRenderFrame.Id;
+ newBullet[0].Bullet.OffenderJoinIndex = joinIndex;
+ nextRenderFrameMeleeBullets = $append(nextRenderFrameMeleeBullets, newBullet[0]);
+ thatPlayerInNextFrame.FramesToRecover = skillConfig.RecoveryFrames;
}
+ thatPlayerInNextFrame.CharacterState = skillConfig.BoundChState;
+ if (false === currPlayerDownsync$1.InAir) {
+ thatPlayerInNextFrame.VelX = 0;
+ }
+ _i$1++;
+ /* continue; */ $s = 1; continue;
}
if (0 === currPlayerDownsync$1.FramesToRecover) {
if (!((0 === effDx)) || !((0 === effDy))) {
@@ -5565,11 +5547,12 @@ $packages["jsexport/battle"] = (function() {
}
}
_i$1++;
- }
+ $s = 1; continue;
+ case 2:
_ref$3 = currRenderFrame.PlayersArr;
_i$2 = 0;
- /* while (true) { */ case 1:
- /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 2; continue; }
+ /* while (true) { */ case 4:
+ /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 5; continue; }
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]);
joinIndex$1 = currPlayerDownsync$2.JoinIndex;
@@ -5578,7 +5561,7 @@ $packages["jsexport/battle"] = (function() {
(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$3;
collisionPlayerIndex = 131072 + joinIndex$1 >> 0;
- playerCollider = (_entry$2 = collisionSysMap[$Int32.keyFor(collisionPlayerIndex)], _entry$2 !== undefined ? _entry$2.v : ptrType$8.nil);
+ playerCollider = (_entry$1 = collisionSysMap[$Int32.keyFor(collisionPlayerIndex)], _entry$1 !== undefined ? _entry$1.v : ptrType$8.nil);
thatPlayerInNextFrame$1 = ((i$2 < 0 || i$2 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$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$4 = currPlayerDownsync$2.VirtualGridX + currPlayerDownsync$2.VelX >> 0;
@@ -5591,23 +5574,23 @@ $packages["jsexport/battle"] = (function() {
_tuple$2 = VirtualGridToPolygonColliderBLPos(newVx, newVy, playerCollider.W * 0.5, playerCollider.H * 0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY);
playerCollider.X = _tuple$2[0];
playerCollider.Y = _tuple$2[1];
- $r = playerCollider.Update(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
+ $r = playerCollider.Update(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (currPlayerDownsync$2.InAir) {
thatPlayerInNextFrame$1.VelX = thatPlayerInNextFrame$1.VelX + (0) >> 0;
thatPlayerInNextFrame$1.VelY = thatPlayerInNextFrame$1.VelY + (-50) >> 0;
}
_i$2++;
- $s = 1; continue;
- case 2:
+ $s = 4; continue;
+ case 5:
bulletColliders = $makeSlice(sliceType$10, 0, currRenderFrame.MeleeBullets.$length);
_ref$4 = currRenderFrame.MeleeBullets;
_i$3 = 0;
- /* while (true) { */ case 4:
- /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 5; continue; }
+ /* while (true) { */ case 7:
+ /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 8; continue; }
meleeBullet = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$3]);
- /* */ if (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) <= currRenderFrame.Id) && (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) + meleeBullet.Bullet.ActiveFrames >> 0) > currRenderFrame.Id)) { $s = 6; continue; }
- /* */ $s = 7; 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 6:
+ /* */ if (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) <= currRenderFrame.Id) && (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) + meleeBullet.Bullet.ActiveFrames >> 0) > currRenderFrame.Id)) { $s = 9; continue; }
+ /* */ $s = 10; 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 9:
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 = 1;
if (0 > offender.DirX) {
@@ -5619,40 +5602,40 @@ $packages["jsexport/battle"] = (function() {
_tuple$4 = VirtualGridToWorldPos(meleeBullet.Bullet.HitboxSizeX, meleeBullet.Bullet.HitboxSizeY);
hitboxSizeWx = _tuple$4[0];
hitboxSizeWy = _tuple$4[1];
- _r = GenerateRectCollider(bulletWx, bulletWy, hitboxSizeWx, hitboxSizeWy, 0.1, 0.1, 0.1, 0.1, collisionSpaceOffsetX, collisionSpaceOffsetY, meleeBullet, "MeleeBullet"); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
- newBulletCollider = _r;
- $r = collisionSys.Add(new sliceType$10([newBulletCollider])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
+ _r$1 = GenerateRectCollider(bulletWx, bulletWy, hitboxSizeWx, hitboxSizeWy, 0.1, 0.1, 0.1, 0.1, collisionSpaceOffsetX, collisionSpaceOffsetY, meleeBullet, "MeleeBullet"); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
+ newBulletCollider = _r$1;
+ $r = collisionSys.Add(new sliceType$10([newBulletCollider])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
bulletColliders = $append(bulletColliders, newBulletCollider);
- $s = 8; continue;
- /* } else { */ case 7:
+ $s = 11; continue;
+ /* } else { */ case 10:
nextRenderFrameMeleeBullets = $append(nextRenderFrameMeleeBullets, meleeBullet);
- /* } */ case 8:
+ /* } */ case 11:
_i$3++;
- $s = 4; continue;
- case 5:
+ $s = 7; continue;
+ case 8:
_ref$5 = currRenderFrame.PlayersArr;
_i$4 = 0;
- /* while (true) { */ case 11:
- /* if (!(_i$4 < _ref$5.$length)) { break; } */ if(!(_i$4 < _ref$5.$length)) { $s = 12; continue; }
+ /* while (true) { */ case 14:
+ /* if (!(_i$4 < _ref$5.$length)) { break; } */ if(!(_i$4 < _ref$5.$length)) { $s = 15; continue; }
i$3 = _i$4;
currPlayerDownsync$3 = ((_i$4 < 0 || _i$4 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$4]);
joinIndex$2 = currPlayerDownsync$3.JoinIndex;
collisionPlayerIndex$1 = 131072 + joinIndex$2 >> 0;
- playerCollider$1 = (_entry$3 = collisionSysMap[$Int32.keyFor(collisionPlayerIndex$1)], _entry$3 !== undefined ? _entry$3.v : ptrType$8.nil);
- playerShape = $assertType(playerCollider$1.Shape, ptrType$5);
- _r$1 = calcHardPushbacksNorms(joinIndex$2, playerCollider$1, playerShape, 0.1, (x$6 = joinIndex$2 - 1 >> 0, ((x$6 < 0 || x$6 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$6]))); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
- (x$7 = joinIndex$2 - 1 >> 0, ((x$7 < 0 || x$7 >= hardPushbackNorms.$length) ? ($throwRuntimeError("index out of range"), undefined) : hardPushbackNorms.$array[hardPushbackNorms.$offset + x$7] = _r$1));
+ playerCollider$1 = (_entry$2 = collisionSysMap[$Int32.keyFor(collisionPlayerIndex$1)], _entry$2 !== undefined ? _entry$2.v : ptrType$8.nil);
+ playerShape = $assertType(playerCollider$1.Shape, ptrType$6);
+ _r$2 = calcHardPushbacksNorms(joinIndex$2, playerCollider$1, playerShape, 0.1, (x$6 = joinIndex$2 - 1 >> 0, ((x$6 < 0 || x$6 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$6]))); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
+ (x$7 = joinIndex$2 - 1 >> 0, ((x$7 < 0 || x$7 >= hardPushbackNorms.$length) ? ($throwRuntimeError("index out of range"), undefined) : hardPushbackNorms.$array[hardPushbackNorms.$offset + x$7] = _r$2));
thatPlayerInNextFrame$2 = ((i$3 < 0 || i$3 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i$3]);
chConfig$2 = ((i$3 < 0 || i$3 >= chConfigsOrderedByJoinIndex.$length) ? ($throwRuntimeError("index out of range"), undefined) : chConfigsOrderedByJoinIndex.$array[chConfigsOrderedByJoinIndex.$offset + i$3]);
landedOnGravityPushback = false;
collision = playerCollider$1.Check(0, 0, new sliceType$4([]));
- /* */ if (!(ptrType$1.nil === collision)) { $s = 14; continue; }
- /* */ $s = 15; continue;
- /* if (!(ptrType$1.nil === collision)) { */ case 14:
+ /* */ if (!(ptrType$3.nil === collision)) { $s = 17; continue; }
+ /* */ $s = 18; continue;
+ /* if (!(ptrType$3.nil === collision)) { */ case 17:
_ref$6 = collision.Objects;
_i$5 = 0;
- /* while (true) { */ case 16:
- /* if (!(_i$5 < _ref$6.$length)) { break; } */ if(!(_i$5 < _ref$6.$length)) { $s = 17; continue; }
+ /* while (true) { */ case 19:
+ /* if (!(_i$5 < _ref$6.$length)) { break; } */ if(!(_i$5 < _ref$6.$length)) { $s = 20; continue; }
obj = ((_i$5 < 0 || _i$5 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$5]);
_tmp$6 = false;
_tmp$7 = false;
@@ -5661,27 +5644,27 @@ $packages["jsexport/battle"] = (function() {
isAnotherPlayer = _tmp$7;
isBullet = _tmp$8;
_ref$7 = obj.Data;
- if ($assertType(_ref$7, ptrType$3, true)[1]) {
+ if ($assertType(_ref$7, ptrType$5, true)[1]) {
isAnotherPlayer = true;
- } else if ($assertType(_ref$7, ptrType$4, true)[1]) {
+ } else if ($assertType(_ref$7, ptrType$1, true)[1]) {
isBullet = true;
} else {
isBarrier = true;
}
if (isBullet) {
_i$5++;
- /* continue; */ $s = 16; continue;
+ /* continue; */ $s = 19; continue;
}
- bShape = $assertType(obj.Shape, ptrType$5);
- _r$2 = CalcPushbacks(0, 0, playerShape, bShape); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
- _tuple$5 = _r$2;
+ bShape = $assertType(obj.Shape, ptrType$6);
+ _r$3 = CalcPushbacks(0, 0, playerShape, bShape); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
+ _tuple$5 = _r$3;
overlapped = _tuple$5[0];
pushbackX = _tuple$5[1];
pushbackY = _tuple$5[2];
overlapResult = _tuple$5[3];
if (!overlapped) {
_i$5++;
- /* continue; */ $s = 16; continue;
+ /* continue; */ $s = 19; continue;
}
normAlignmentWithGravity = overlapResult.OverlapX * 0 + overlapResult.OverlapY * -1;
if (isAnotherPlayer) {
@@ -5710,9 +5693,9 @@ $packages["jsexport/battle"] = (function() {
landedOnGravityPushback = true;
}
_i$5++;
- $s = 16; continue;
- case 17:
- /* } */ case 15:
+ $s = 19; continue;
+ case 20:
+ /* } */ case 18:
if (landedOnGravityPushback) {
thatPlayerInNextFrame$2.InAir = false;
if (currPlayerDownsync$3.InAir && 0 >= currPlayerDownsync$3.VelY) {
@@ -5739,54 +5722,54 @@ $packages["jsexport/battle"] = (function() {
}
}
_i$4++;
- $s = 11; continue;
- case 12:
+ $s = 14; continue;
+ case 15:
_ref$9 = bulletColliders;
_i$7 = 0;
- /* while (true) { */ case 19:
- /* if (!(_i$7 < _ref$9.$length)) { break; } */ if(!(_i$7 < _ref$9.$length)) { $s = 20; continue; }
+ /* while (true) { */ case 22:
+ /* if (!(_i$7 < _ref$9.$length)) { break; } */ if(!(_i$7 < _ref$9.$length)) { $s = 23; continue; }
bulletCollider = ((_i$7 < 0 || _i$7 >= _ref$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$9.$array[_ref$9.$offset + _i$7]);
collision$1 = bulletCollider.Check(0, 0, new sliceType$4([]));
bulletCollider.Space.Remove(new sliceType$10([bulletCollider]));
_ref$10 = bulletCollider.Data;
- /* */ if ($assertType(_ref$10, ptrType$4, true)[1]) { $s = 21; continue; }
- /* */ $s = 22; continue;
- /* if ($assertType(_ref$10, ptrType$4, true)[1]) { */ case 21:
+ /* */ if ($assertType(_ref$10, ptrType$1, true)[1]) { $s = 24; continue; }
+ /* */ $s = 25; continue;
+ /* if ($assertType(_ref$10, ptrType$1, true)[1]) { */ case 24:
v$1 = _ref$10.$val;
- if (ptrType$1.nil === collision$1) {
+ if (ptrType$3.nil === collision$1) {
nextRenderFrameMeleeBullets = $append(nextRenderFrameMeleeBullets, v$1);
_i$7++;
- /* continue; */ $s = 19; continue;
+ /* continue; */ $s = 22; continue;
}
- bulletShape = $assertType(bulletCollider.Shape, ptrType$5);
+ bulletShape = $assertType(bulletCollider.Shape, ptrType$6);
offender$1 = (x$9 = currRenderFrame.PlayersArr, x$10 = v$1.Bullet.OffenderJoinIndex - 1 >> 0, ((x$10 < 0 || x$10 >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + x$10]));
_ref$11 = collision$1.Objects;
_i$8 = 0;
- /* while (true) { */ case 23:
- /* if (!(_i$8 < _ref$11.$length)) { break; } */ if(!(_i$8 < _ref$11.$length)) { $s = 24; continue; }
+ /* while (true) { */ case 26:
+ /* if (!(_i$8 < _ref$11.$length)) { break; } */ if(!(_i$8 < _ref$11.$length)) { $s = 27; continue; }
obj$1 = ((_i$8 < 0 || _i$8 >= _ref$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$11.$array[_ref$11.$offset + _i$8]);
- defenderShape = $assertType(obj$1.Shape, ptrType$5);
+ defenderShape = $assertType(obj$1.Shape, ptrType$6);
_ref$12 = obj$1.Data;
- /* */ if ($assertType(_ref$12, ptrType$3, true)[1]) { $s = 25; continue; }
- /* */ $s = 26; continue;
- /* if ($assertType(_ref$12, ptrType$3, true)[1]) { */ case 25:
+ /* */ if ($assertType(_ref$12, ptrType$5, true)[1]) { $s = 28; continue; }
+ /* */ $s = 29; continue;
+ /* if ($assertType(_ref$12, ptrType$5, true)[1]) { */ case 28:
t = _ref$12.$val;
if (v$1.Bullet.OffenderJoinIndex === t.JoinIndex) {
_i$8++;
- /* continue; */ $s = 23; continue;
+ /* continue; */ $s = 26; continue;
}
- _tuple$6 = (_entry$4 = invinsibleSet[$Int32.keyFor(t.CharacterState)], _entry$4 !== undefined ? [_entry$4.v, true] : [false, false]);
+ _tuple$6 = (_entry$3 = invinsibleSet[$Int32.keyFor(t.CharacterState)], _entry$3 !== undefined ? [_entry$3.v, true] : [false, false]);
existent$1 = _tuple$6[1];
if (existent$1) {
_i$8++;
- /* continue; */ $s = 23; continue;
+ /* continue; */ $s = 26; continue;
}
- _r$3 = CalcPushbacks(0, 0, bulletShape, defenderShape); /* */ $s = 28; case 28: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
- _tuple$7 = _r$3;
+ _r$4 = CalcPushbacks(0, 0, bulletShape, defenderShape); /* */ $s = 31; case 31: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
+ _tuple$7 = _r$4;
overlapped$1 = _tuple$7[0];
if (!overlapped$1) {
_i$8++;
- /* continue; */ $s = 23; continue;
+ /* continue; */ $s = 26; continue;
}
xfac$1 = 1;
if (0 > offender$1.DirX) {
@@ -5808,17 +5791,17 @@ $packages["jsexport/battle"] = (function() {
if (v$1.Bullet.HitStunFrames > oldFramesToRecover) {
atkedPlayerInNextFrame.FramesToRecover = v$1.Bullet.HitStunFrames;
}
- $s = 27; continue;
- /* } else { */ case 26:
+ $s = 30; continue;
+ /* } else { */ case 29:
t$1 = _ref$12;
- /* } */ case 27:
+ /* } */ case 30:
_i$8++;
- $s = 23; continue;
- case 24:
- /* } */ case 22:
+ $s = 26; continue;
+ case 27:
+ /* } */ case 25:
_i$7++;
- $s = 19; continue;
- case 20:
+ $s = 22; continue;
+ case 23:
_ref$13 = currRenderFrame.PlayersArr;
_i$9 = 0;
while (true) {
@@ -5827,30 +5810,30 @@ $packages["jsexport/battle"] = (function() {
currPlayerDownsync$4 = ((_i$9 < 0 || _i$9 >= _ref$13.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$13.$array[_ref$13.$offset + _i$9]);
joinIndex$3 = currPlayerDownsync$4.JoinIndex;
collisionPlayerIndex$2 = 131072 + joinIndex$3 >> 0;
- playerCollider$2 = (_entry$5 = collisionSysMap[$Int32.keyFor(collisionPlayerIndex$2)], _entry$5 !== undefined ? _entry$5.v : ptrType$8.nil);
+ playerCollider$2 = (_entry$4 = collisionSysMap[$Int32.keyFor(collisionPlayerIndex$2)], _entry$4 !== undefined ? _entry$4.v : ptrType$8.nil);
thatPlayerInNextFrame$3 = ((i$4 < 0 || i$4 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i$4]);
_tuple$8 = PolygonColliderBLToVirtualGridPos(playerCollider$2.X - (x$13 = joinIndex$3 - 1 >> 0, ((x$13 < 0 || x$13 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$13])).X, playerCollider$2.Y - (x$14 = joinIndex$3 - 1 >> 0, ((x$14 < 0 || x$14 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$14])).Y, playerCollider$2.W * 0.5, playerCollider$2.H * 0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY);
thatPlayerInNextFrame$3.VirtualGridX = _tuple$8[0];
thatPlayerInNextFrame$3.VirtualGridY = _tuple$8[1];
if (thatPlayerInNextFrame$3.InAir) {
oldNextCharacterState = thatPlayerInNextFrame$3.CharacterState;
- _2 = oldNextCharacterState;
- if ((_2 === (0)) || (_2 === (1))) {
+ _1 = oldNextCharacterState;
+ if ((_1 === (0)) || (_1 === (1))) {
if (((i$4 < 0 || i$4 >= jumpedOrNotList.$length) ? ($throwRuntimeError("index out of range"), undefined) : jumpedOrNotList.$array[jumpedOrNotList.$offset + i$4]) || (5 === currPlayerDownsync$4.CharacterState)) {
thatPlayerInNextFrame$3.CharacterState = 5;
} else {
thatPlayerInNextFrame$3.CharacterState = 4;
}
- } else if (_2 === (2)) {
+ } else if (_1 === (2)) {
thatPlayerInNextFrame$3.CharacterState = 6;
- } else if (_2 === (3)) {
+ } else if (_1 === (3)) {
thatPlayerInNextFrame$3.CharacterState = 7;
}
}
if (!((thatPlayerInNextFrame$3.CharacterState === currPlayerDownsync$4.CharacterState))) {
thatPlayerInNextFrame$3.FramesInChState = 0;
}
- _tuple$9 = (_entry$6 = nonAttackingSet[$Int32.keyFor(thatPlayerInNextFrame$3.CharacterState)], _entry$6 !== undefined ? [_entry$6.v, true] : [false, false]);
+ _tuple$9 = (_entry$5 = nonAttackingSet[$Int32.keyFor(thatPlayerInNextFrame$3.CharacterState)], _entry$5 !== undefined ? [_entry$5.v, true] : [false, false]);
existent$2 = _tuple$9[1];
if (existent$2) {
thatPlayerInNextFrame$3.ActiveSkillId = -1;
@@ -5859,7 +5842,7 @@ $packages["jsexport/battle"] = (function() {
_i$9++;
}
$s = -1; return new RoomDownsyncFrame.ptr(currRenderFrame.Id + 1 >> 0, nextRenderFramePlayers, new $Int64(0, 0), nextRenderFrameMeleeBullets, sliceType$11.nil, new $Uint64(0, 0), false, false);
- /* */ } return; } var $f = {$blk: ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame, $c: true, $r, _1, _2, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _entry$6, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _r, _r$1, _r$2, _r$3, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _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$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, atkedPlayerInNextFrame, bShape, bulletCollider, bulletColliders, bulletShape, bulletWx, bulletWy, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, collision, collision$1, collisionPlayerIndex, collisionPlayerIndex$1, collisionPlayerIndex$2, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, hardPushbackNorm, hardPushbackNorms, hitboxSizeWx, hitboxSizeWy, 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, newBulletCollider, newVx, newVy, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, offender, offender$1, oldFramesToRecover, oldNextCharacterState, overlapResult, overlapped, overlapped$1, patternId, playerCollider, playerCollider$1, playerCollider$2, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, $s};return $f;
+ /* */ } return; } var $f = {$blk: ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame, $c: true, $r, _1, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _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$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, atkedPlayerInNextFrame, bShape, bulletCollider, bulletColliders, bulletShape, bulletWx, bulletWy, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, collision, collision$1, collisionPlayerIndex, collisionPlayerIndex$1, collisionPlayerIndex$2, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, hardPushbackNorm, hardPushbackNorms, hitboxSizeWx, hitboxSizeWy, 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, newBulletCollider, newVx, newVy, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, offender, offender$1, oldFramesToRecover, oldNextCharacterState, overlapResult, overlapped, overlapped$1, patternId, playerCollider, playerCollider$1, playerCollider$2, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, $s};return $f;
};
$pkg.ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame = ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame;
GenerateRectCollider = function(wx, wy, w, h, topPadding, bottomPadding, leftPadding, rightPadding, spaceOffsetX, spaceOffsetY, data, tag) {
@@ -5968,23 +5951,84 @@ $packages["jsexport/battle"] = (function() {
PlayerDownsync.init("", [{prop: "Id", name: "Id", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "VirtualGridX", name: "VirtualGridX", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "VirtualGridY", name: "VirtualGridY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "DirX", name: "DirX", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "DirY", name: "DirY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "VelX", name: "VelX", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "VelY", name: "VelY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Speed", name: "Speed", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "BattleState", name: "BattleState", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "JoinIndex", name: "JoinIndex", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "ColliderRadius", name: "ColliderRadius", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Removed", name: "Removed", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Score", name: "Score", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "LastMoveGmtMillis", name: "LastMoveGmtMillis", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "FramesToRecover", name: "FramesToRecover", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "FramesInChState", name: "FramesInChState", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Hp", name: "Hp", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "MaxHp", name: "MaxHp", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "CharacterState", name: "CharacterState", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "InAir", name: "InAir", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "ActiveSkillId", name: "ActiveSkillId", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "ActiveSkillHit", name: "ActiveSkillHit", embedded: false, exported: true, typ: $Int32, tag: ""}]);
InputFrameDecoded.init("", [{prop: "Dx", name: "Dx", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Dy", name: "Dy", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "BtnALevel", name: "BtnALevel", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "BtnBLevel", name: "BtnBLevel", embedded: false, exported: true, typ: $Int32, tag: ""}]);
Barrier.init("", [{prop: "Boundary", name: "Boundary", embedded: false, exported: true, typ: ptrType$11, tag: ""}]);
- Bullet.init("", [{prop: "OriginatedRenderFrameId", name: "OriginatedRenderFrameId", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "OffenderJoinIndex", name: "OffenderJoinIndex", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "StartupFrames", name: "StartupFrames", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "CancellableStFrame", name: "CancellableStFrame", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "CancellableEdFrame", name: "CancellableEdFrame", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "ActiveFrames", name: "ActiveFrames", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "HitStunFrames", name: "HitStunFrames", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "BlockStunFrames", name: "BlockStunFrames", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "PushbackVelX", name: "PushbackVelX", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "PushbackVelY", name: "PushbackVelY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Damage", name: "Damage", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "SelfLockVelX", name: "SelfLockVelX", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "SelfLockVelY", name: "SelfLockVelY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "HitboxOffsetX", name: "HitboxOffsetX", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "HitboxOffsetY", name: "HitboxOffsetY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "HitboxSizeX", name: "HitboxSizeX", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "HitboxSizeY", name: "HitboxSizeY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "BlowUp", name: "BlowUp", embedded: false, exported: true, typ: $Bool, tag: ""}]);
+ Bullet.init("", [{prop: "OriginatedRenderFrameId", name: "OriginatedRenderFrameId", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "OffenderJoinIndex", name: "OffenderJoinIndex", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "StartupFrames", name: "StartupFrames", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "CancellableStFrame", name: "CancellableStFrame", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "CancellableEdFrame", name: "CancellableEdFrame", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "ActiveFrames", name: "ActiveFrames", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "HitStunFrames", name: "HitStunFrames", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "BlockStunFrames", name: "BlockStunFrames", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "PushbackVelX", name: "PushbackVelX", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "PushbackVelY", name: "PushbackVelY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Damage", name: "Damage", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "SelfLockVelX", name: "SelfLockVelX", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "SelfLockVelY", name: "SelfLockVelY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "HitboxOffsetX", name: "HitboxOffsetX", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "HitboxOffsetY", name: "HitboxOffsetY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "HitboxSizeX", name: "HitboxSizeX", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "HitboxSizeY", name: "HitboxSizeY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "BlowUp", name: "BlowUp", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "CancelTransit", name: "CancelTransit", embedded: false, exported: true, typ: mapType, tag: ""}]);
MeleeBullet.init("", [{prop: "Bullet", name: "Bullet", embedded: true, exported: true, typ: Bullet, tag: ""}]);
FireballBullet.init("", [{prop: "VirtualGridX", name: "VirtualGridX", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "VirtualGridY", name: "VirtualGridY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "DirX", name: "DirX", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "DirY", name: "DirY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "VelX", name: "VelX", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "VelY", name: "VelY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Speed", name: "Speed", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Bullet", name: "Bullet", embedded: true, exported: true, typ: Bullet, tag: ""}]);
- Skill.init("", [{prop: "BattleLocalId", name: "BattleLocalId", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "RecoveryFrames", name: "RecoveryFrames", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "RecoveryFramesOnBlock", name: "RecoveryFramesOnBlock", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "RecoveryFramesOnHit", name: "RecoveryFramesOnHit", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "ReleaseTriggerType", name: "ReleaseTriggerType", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Hits", name: "Hits", embedded: false, exported: true, typ: sliceType, tag: ""}]);
+ Skill.init("", [{prop: "BattleLocalId", name: "BattleLocalId", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "RecoveryFrames", name: "RecoveryFrames", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "RecoveryFramesOnBlock", name: "RecoveryFramesOnBlock", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "RecoveryFramesOnHit", name: "RecoveryFramesOnHit", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "ReleaseTriggerType", name: "ReleaseTriggerType", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "BoundChState", name: "BoundChState", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Hits", name: "Hits", embedded: false, exported: true, typ: sliceType$2, tag: ""}]);
RoomDownsyncFrame.init("", [{prop: "Id", name: "Id", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "PlayersArr", name: "PlayersArr", embedded: false, exported: true, typ: sliceType$6, tag: ""}, {prop: "CountdownNanos", name: "CountdownNanos", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "MeleeBullets", name: "MeleeBullets", embedded: false, exported: true, typ: sliceType$7, tag: ""}, {prop: "FireballBullets", name: "FireballBullets", embedded: false, exported: true, typ: sliceType$11, tag: ""}, {prop: "BackendUnconfirmedMask", name: "BackendUnconfirmedMask", embedded: false, exported: true, typ: $Uint64, tag: ""}, {prop: "ShouldForceResync", name: "ShouldForceResync", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "PlayerOpPatternToSkillId", name: "PlayerOpPatternToSkillId", embedded: false, exported: true, typ: mapType, tag: ""}]);
InputFrameDownsync.init("", [{prop: "InputFrameId", name: "InputFrameId", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "InputList", name: "InputList", embedded: false, exported: true, typ: sliceType$5, tag: ""}, {prop: "ConfirmedList", name: "ConfirmedList", embedded: false, exported: true, typ: $Uint64, tag: ""}]);
- RingBuffer.init("", [{prop: "Ed", name: "Ed", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "St", name: "St", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "EdFrameId", name: "EdFrameId", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "StFrameId", name: "StFrameId", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "N", name: "N", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Cnt", name: "Cnt", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Eles", name: "Eles", embedded: false, exported: true, typ: sliceType, tag: ""}]);
- CharacterConfig.init("", [{prop: "SpeciesId", name: "SpeciesId", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "SpeciesName", name: "SpeciesName", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "InAirIdleFrameIdxTurningPoint", name: "InAirIdleFrameIdxTurningPoint", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "InAirIdleFrameIdxTurnedCycle", name: "InAirIdleFrameIdxTurnedCycle", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "LayDownFrames", name: "LayDownFrames", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "LayDownFramesToRecover", name: "LayDownFramesToRecover", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "GetUpFrames", name: "GetUpFrames", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "GetUpFramesToRecover", name: "GetUpFramesToRecover", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "JumpingInitVelY", name: "JumpingInitVelY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "PatternIdToSkillId", name: "PatternIdToSkillId", embedded: false, exported: true, typ: mapType, tag: ""}]);
+ RingBuffer.init("", [{prop: "Ed", name: "Ed", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "St", name: "St", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "EdFrameId", name: "EdFrameId", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "StFrameId", name: "StFrameId", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "N", name: "N", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Cnt", name: "Cnt", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Eles", name: "Eles", embedded: false, exported: true, typ: sliceType$2, tag: ""}]);
+ SkillMapperType.init([$Int, ptrType$5], [$Int], false);
+ CharacterConfig.init("", [{prop: "SpeciesId", name: "SpeciesId", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "SpeciesName", name: "SpeciesName", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "InAirIdleFrameIdxTurningPoint", name: "InAirIdleFrameIdxTurningPoint", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "InAirIdleFrameIdxTurnedCycle", name: "InAirIdleFrameIdxTurnedCycle", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "LayDownFrames", name: "LayDownFrames", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "LayDownFramesToRecover", name: "LayDownFramesToRecover", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "GetUpFrames", name: "GetUpFrames", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "GetUpFramesToRecover", name: "GetUpFramesToRecover", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "JumpingInitVelY", name: "JumpingInitVelY", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "SkillMapper", name: "SkillMapper", embedded: false, exported: true, typ: SkillMapperType, tag: ""}]);
SatResult.init("", [{prop: "Overlap", name: "Overlap", embedded: false, exported: true, typ: $Float64, tag: ""}, {prop: "OverlapX", name: "OverlapX", embedded: false, exported: true, typ: $Float64, tag: ""}, {prop: "OverlapY", name: "OverlapY", embedded: false, exported: true, typ: $Float64, tag: ""}, {prop: "AContainedInB", name: "AContainedInB", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "BContainedInA", name: "BContainedInA", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Axis", name: "Axis", embedded: false, exported: true, typ: resolv.Vector, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$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; }
- $pkg.Characters = $makeMap($Int.keyFor, [{ k: 0, v: new CharacterConfig.ptr(0, "MonkGirl", 11, 1, 16, 16, 33, 30, 800, $makeMap($Int.keyFor, [{ k: 1, v: 1 }, { k: 2, v: 2 }, { k: 3, v: 3 }, { k: 255, v: 255 }])) }]);
- skills = $makeMap($Int.keyFor, [{ k: 1, v: new Skill.ptr(0, 20, 20, 20, 1, new sliceType([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 5, 8, 20, 10, 13, 9, 50, 0, 5, 0, 0, 1200, 0, 2400, 3200, false))])) }, { k: 2, v: new Skill.ptr(0, 36, 36, 36, 1, new sliceType([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 3, 18, 36, 20, 18, 9, 50, 0, 5, 0, 0, 1800, 0, 2400, 3200, false))])) }, { k: 3, v: new Skill.ptr(0, 60, 60, 60, 1, new sliceType([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 1, 0, 0, 30, 999999999, 9, 100, 400, 10, 0, 0, 2400, 0, 3200, 3200, true))])) }, { k: 255, v: new Skill.ptr(0, 34, 34, 34, 1, new sliceType([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 3, 0, 0, 20, 18, 9, 50, 0, 5, 0, 0, 1200, 0, 3200, 2400, false))])) }]);
- $pkg.DIRECTION_DECODER = new sliceType$2([new sliceType$1([0, 0]), new sliceType$1([0, 2]), new sliceType$1([0, -2]), new sliceType$1([2, 0]), new sliceType$1([-2, 0]), new sliceType$1([1, 1]), new sliceType$1([-1, -1]), new sliceType$1([1, -1]), new sliceType$1([-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, 7, 13, 30, 22, 13, 9, 50, 0, 5, 0, 0, 1200, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 2 }])))])) }, { k: 2, v: new Skill.ptr(0, 36, 36, 36, 1, 11, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 18, 22, 36, 18, 18, 9, 50, 0, 5, 0, 0, 1800, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 3 }])))])) }, { k: 3, v: new Skill.ptr(0, 60, 60, 60, 1, 12, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 15, 0, 0, 40, 999999999, 9, 200, 700, 10, 0, 0, 2400, 0, 3200, 3200, true, false))])) }, { k: 4, v: new Skill.ptr(0, 30, 30, 30, 1, 2, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 7, 13, 30, 22, 13, 9, 50, 0, 5, 0, 0, 1200, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 5 }])))])) }, { k: 5, v: new Skill.ptr(0, 36, 36, 36, 1, 11, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 18, 22, 36, 18, 18, 9, 50, 0, 5, 0, 0, 1800, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 6 }])))])) }, { k: 6, v: new Skill.ptr(0, 60, 60, 60, 1, 12, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 15, 0, 0, 40, 999999999, 9, 200, 700, 10, 0, 0, 2400, 0, 3200, 3200, true, false))])) }, { k: 255, v: new Skill.ptr(0, 34, 34, 34, 1, 6, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 3, 0, 0, 20, 18, 9, 50, 0, 5, 0, 0, 1200, 0, 3200, 2400, false, false))])) }, { k: 256, v: new Skill.ptr(0, 34, 34, 34, 1, 6, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 3, 0, 0, 20, 18, 9, 50, 0, 5, 0, 0, 1200, 0, 3200, 2400, false, false))])) }]);
+ $pkg.Characters = $makeMap($Int.keyFor, [{ k: 0, v: new CharacterConfig.ptr(0, "MonkGirl", 11, 1, 16, 16, 33, 30, 800, (function(patternId, currPlayerDownsync) {
+ var _entry, _entry$1, _ref, _tuple, _tuple$1, currPlayerDownsync, existent1, existent2, nextSkillId, patternId, skillConfig, v, x, x$1;
+ if (1 === patternId) {
+ if (0 === currPlayerDownsync.FramesToRecover) {
+ if (currPlayerDownsync.InAir) {
+ return 255;
+ } else {
+ return 1;
+ }
+ } else {
+ _tuple = (_entry = skills[$Int.keyFor(((currPlayerDownsync.ActiveSkillId >> 0)))], _entry !== undefined ? [_entry.v, true] : [ptrType.nil, false]);
+ skillConfig = _tuple[0];
+ existent1 = _tuple[1];
+ if (existent1) {
+ _ref = (x = skillConfig.Hits, x$1 = currPlayerDownsync.ActiveSkillHit, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
+ if ($assertType(_ref, ptrType$1, true)[1]) {
+ v = _ref.$val;
+ if (v.Bullet.CancellableStFrame <= currPlayerDownsync.FramesInChState && currPlayerDownsync.FramesInChState < v.Bullet.CancellableEdFrame) {
+ _tuple$1 = (_entry$1 = v.Bullet.CancelTransit[$Int.keyFor(patternId)], _entry$1 !== undefined ? [_entry$1.v, true] : [0, false]);
+ nextSkillId = _tuple$1[0];
+ existent2 = _tuple$1[1];
+ if (existent2) {
+ return nextSkillId;
+ }
+ }
+ }
+ }
+ }
+ }
+ return -1;
+ })) }, { k: 1, v: new CharacterConfig.ptr(1, "KnifeGirl", 9, 1, 16, 16, 30, 27, 750, (function(patternId, currPlayerDownsync) {
+ var _entry, _entry$1, _ref, _tuple, _tuple$1, currPlayerDownsync, existent1, existent2, nextSkillId, patternId, skillConfig, v, x, x$1;
+ if (1 === patternId) {
+ if (0 === currPlayerDownsync.FramesToRecover) {
+ if (currPlayerDownsync.InAir) {
+ return 256;
+ } else {
+ return 4;
+ }
+ } else {
+ _tuple = (_entry = skills[$Int.keyFor(((currPlayerDownsync.ActiveSkillId >> 0)))], _entry !== undefined ? [_entry.v, true] : [ptrType.nil, false]);
+ skillConfig = _tuple[0];
+ existent1 = _tuple[1];
+ if (existent1) {
+ _ref = (x = skillConfig.Hits, x$1 = currPlayerDownsync.ActiveSkillHit, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
+ if ($assertType(_ref, ptrType$1, true)[1]) {
+ v = _ref.$val;
+ if (v.Bullet.CancellableStFrame <= currPlayerDownsync.FramesInChState && currPlayerDownsync.FramesInChState < v.Bullet.CancellableEdFrame) {
+ _tuple$1 = (_entry$1 = v.Bullet.CancelTransit[$Int.keyFor(patternId)], _entry$1 !== undefined ? [_entry$1.v, true] : [0, false]);
+ nextSkillId = _tuple$1[0];
+ existent2 = _tuple$1[1];
+ if (existent2) {
+ return nextSkillId;
+ }
+ }
+ }
+ }
+ }
+ }
+ return -1;
+ })) }]);
inAirSet = $makeMap($Int32.keyFor, [{ k: 4, v: true }, { k: 5, v: true }, { k: 6, v: true }, { k: 7, v: true }, { k: 8, v: true }]);
noOpSet = $makeMap($Int32.keyFor, [{ k: 3, v: true }, { k: 7, v: true }, { k: 8, v: true }, { k: 9, v: true }]);
invinsibleSet = $makeMap($Int32.keyFor, [{ k: 8, v: true }, { k: 9, v: true }, { k: 10, v: true }]);
@@ -6090,7 +6134,7 @@ $packages["jsexport"] = (function() {
$pkg.NewPlayerDownsyncJs = NewPlayerDownsyncJs;
NewMeleeBulletJs = function(originatedRenderFrameId, offenderJoinIndex, startupFrames, cancellableStFrame, cancellableEdFrame, activeFrames, hitStunFrames, blockStunFrames, pushbackVelX, pushbackVelY, damage, selfLockVelX, selfLockVelY, hitboxOffsetX, hitboxOffsetY, hitboxSizeX, hitboxSizeY, blowUp) {
var activeFrames, blockStunFrames, blowUp, cancellableEdFrame, cancellableStFrame, damage, hitStunFrames, hitboxOffsetX, hitboxOffsetY, hitboxSizeX, hitboxSizeY, offenderJoinIndex, originatedRenderFrameId, pushbackVelX, pushbackVelY, selfLockVelX, selfLockVelY, startupFrames;
- return js.MakeWrapper(new battle.MeleeBullet.ptr(new battle.Bullet.ptr(originatedRenderFrameId, offenderJoinIndex, startupFrames, cancellableStFrame, cancellableEdFrame, activeFrames, hitStunFrames, blockStunFrames, pushbackVelX, pushbackVelY, damage, selfLockVelX, selfLockVelY, hitboxOffsetX, hitboxOffsetY, hitboxSizeX, hitboxSizeY, blowUp)));
+ return js.MakeWrapper(new battle.MeleeBullet.ptr(new battle.Bullet.ptr(originatedRenderFrameId, offenderJoinIndex, startupFrames, cancellableStFrame, cancellableEdFrame, activeFrames, hitStunFrames, blockStunFrames, pushbackVelX, pushbackVelY, damage, selfLockVelX, selfLockVelY, hitboxOffsetX, hitboxOffsetY, hitboxSizeX, hitboxSizeY, blowUp, false)));
};
$pkg.NewMeleeBulletJs = NewMeleeBulletJs;
NewRoomDownsyncFrameJs = function(id, playersArr, meleeBullets) {
diff --git a/frontend/assets/resources/animation/KnifeGirl.meta b/frontend/assets/resources/animation/KnifeGirl.meta
new file mode 100644
index 0000000..6988f8b
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl.meta
@@ -0,0 +1,7 @@
+{
+ "ver": "1.0.1",
+ "uuid": "15043c55-01a9-408c-b985-910c5de144c7",
+ "isSubpackage": false,
+ "subpackageName": "",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/Atk1.anim b/frontend/assets/resources/animation/KnifeGirl/Atk1.anim
new file mode 100644
index 0000000..87bd8ec
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/Atk1.anim
@@ -0,0 +1,91 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "Atk1",
+ "_objFlags": 0,
+ "_native": "",
+ "_duration": 0.6,
+ "sample": 60,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "6b2a1a09-8236-4972-8aee-1781b6547d4e"
+ }
+ },
+ {
+ "frame": 0.06666666666666667,
+ "value": {
+ "__uuid__": "5b269b2e-0800-4bf5-b5db-055b78cf318d"
+ }
+ },
+ {
+ "frame": 0.11666666666666667,
+ "value": {
+ "__uuid__": "e184f831-3f90-47cb-8ca5-ad9446ba0398"
+ }
+ },
+ {
+ "frame": 0.18333333333333332,
+ "value": {
+ "__uuid__": "f260f82b-10cf-49af-b46c-cd8dc7a3503f"
+ }
+ },
+ {
+ "frame": 0.23333333333333334,
+ "value": {
+ "__uuid__": "09f43e75-0986-4b8f-907b-e5a5a73b7c54"
+ }
+ },
+ {
+ "frame": 0.2833333333333333,
+ "value": {
+ "__uuid__": "d7432402-fcbd-4e2e-b2c1-33364f31948b"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "8acf1c5a-6910-47d6-aa18-1e6f07546d7a"
+ }
+ },
+ {
+ "frame": 0.38333333333333336,
+ "value": {
+ "__uuid__": "76120dbd-6390-4706-9580-dcec9687e83e"
+ }
+ },
+ {
+ "frame": 0.43333333333333335,
+ "value": {
+ "__uuid__": "f9a7a04a-2369-4946-8313-c2da896da51e"
+ }
+ },
+ {
+ "frame": 0.48333333333333334,
+ "value": {
+ "__uuid__": "c8fb14e2-745e-4a2b-b235-d43195052652"
+ }
+ },
+ {
+ "frame": 0.5333333333333333,
+ "value": {
+ "__uuid__": "1f23e0e5-830c-4d07-8f80-cbb98a2a1954"
+ }
+ },
+ {
+ "frame": 0.5833333333333334,
+ "value": {
+ "__uuid__": "4c512398-4290-4fdf-bb21-2b0062a9071b"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/Atk1.anim.meta b/frontend/assets/resources/animation/KnifeGirl/Atk1.anim.meta
new file mode 100644
index 0000000..1848098
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/Atk1.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "2.1.0",
+ "uuid": "829b17c6-9365-4e97-b14f-fa266bd5ecbe",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/Atk2.anim b/frontend/assets/resources/animation/KnifeGirl/Atk2.anim
new file mode 100644
index 0000000..a73ecfe
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/Atk2.anim
@@ -0,0 +1,91 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "Atk2",
+ "_objFlags": 0,
+ "_native": "",
+ "_duration": 1.0166666666666666,
+ "sample": 60,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "60f9f7d4-5cf7-4098-9455-0f6a74963fc6"
+ }
+ },
+ {
+ "frame": 0.06666666666666667,
+ "value": {
+ "__uuid__": "dd9a00aa-ddbc-4b01-a7cb-3c43c3a655b6"
+ }
+ },
+ {
+ "frame": 0.11666666666666667,
+ "value": {
+ "__uuid__": "f66e83bd-1afc-4957-bb16-488d70566ed1"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "bd682c41-dc62-49ff-a96a-18b33e50a6de"
+ }
+ },
+ {
+ "frame": 0.23333333333333334,
+ "value": {
+ "__uuid__": "94ccab85-e32f-4e13-b0e5-72c798f78ad1"
+ }
+ },
+ {
+ "frame": 0.3,
+ "value": {
+ "__uuid__": "e80d3a01-5048-42b7-a280-cb6aa01602c2"
+ }
+ },
+ {
+ "frame": 0.36666666666666664,
+ "value": {
+ "__uuid__": "d899088c-be62-47b4-9ebf-0a89a2261565"
+ }
+ },
+ {
+ "frame": 0.4166666666666667,
+ "value": {
+ "__uuid__": "5b1e5aa7-fd82-47ae-a5b2-6d4983d848ed"
+ }
+ },
+ {
+ "frame": 0.48333333333333334,
+ "value": {
+ "__uuid__": "c2945988-b4bb-4583-a5ef-2fa02b23a347"
+ }
+ },
+ {
+ "frame": 0.5666666666666667,
+ "value": {
+ "__uuid__": "070ea1e3-9c07-4735-8b94-515ef70216ad"
+ }
+ },
+ {
+ "frame": 0.6666666666666666,
+ "value": {
+ "__uuid__": "3b8bc5c0-26df-4218-b7dc-134a36080a35"
+ }
+ },
+ {
+ "frame": 1,
+ "value": {
+ "__uuid__": "3898259f-a3b0-490d-b260-f86ab5109dfe"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/Atk2.anim.meta b/frontend/assets/resources/animation/KnifeGirl/Atk2.anim.meta
new file mode 100644
index 0000000..ddd24ea
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/Atk2.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "2.1.0",
+ "uuid": "52b8e47d-715c-4c12-a2c9-6f553e14dc42",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/Atk3.anim b/frontend/assets/resources/animation/KnifeGirl/Atk3.anim
new file mode 100644
index 0000000..b6c9190
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/Atk3.anim
@@ -0,0 +1,97 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "Atk3",
+ "_objFlags": 0,
+ "_native": "",
+ "_duration": 1.0333333333333334,
+ "sample": 60,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "98276733-6f8d-4cac-8a7e-31883834c240"
+ }
+ },
+ {
+ "frame": 0.06666666666666667,
+ "value": {
+ "__uuid__": "51ab185b-2271-48b5-a897-af79721d566c"
+ }
+ },
+ {
+ "frame": 0.15,
+ "value": {
+ "__uuid__": "c29fd95d-7467-4138-9e01-6421af63dd68"
+ }
+ },
+ {
+ "frame": 0.21666666666666667,
+ "value": {
+ "__uuid__": "3285b5eb-c6be-4cb9-ac60-c506645fee4b"
+ }
+ },
+ {
+ "frame": 0.3,
+ "value": {
+ "__uuid__": "13fd4a87-71f4-4b69-a5b3-413d564c35e6"
+ }
+ },
+ {
+ "frame": 0.38333333333333336,
+ "value": {
+ "__uuid__": "7189e229-00d6-427a-8ea1-d05fbd97824f"
+ }
+ },
+ {
+ "frame": 0.4666666666666667,
+ "value": {
+ "__uuid__": "d9ccfe33-3db7-4b3a-807c-adb2121fb7c7"
+ }
+ },
+ {
+ "frame": 0.55,
+ "value": {
+ "__uuid__": "a51cbc29-0826-46f7-a38b-8b0f996fbace"
+ }
+ },
+ {
+ "frame": 0.65,
+ "value": {
+ "__uuid__": "7e9f3a24-6abc-4b49-a5c5-a0c100865ffc"
+ }
+ },
+ {
+ "frame": 0.7333333333333333,
+ "value": {
+ "__uuid__": "ecbaeb43-1118-483a-91c9-ff1ff01b7b33"
+ }
+ },
+ {
+ "frame": 0.8166666666666667,
+ "value": {
+ "__uuid__": "58afa365-a916-4ec6-aab3-1c87f5332b12"
+ }
+ },
+ {
+ "frame": 0.9166666666666666,
+ "value": {
+ "__uuid__": "7ada26fa-c72d-46f6-9b3a-ae9d7ba5eaf4"
+ }
+ },
+ {
+ "frame": 1.0166666666666666,
+ "value": {
+ "__uuid__": "ee5e4a85-6dda-4d1e-a469-5be1db6a8913"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/Atk3.anim.meta b/frontend/assets/resources/animation/KnifeGirl/Atk3.anim.meta
new file mode 100644
index 0000000..411a75a
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/Atk3.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "2.1.0",
+ "uuid": "9b500cb0-8048-4715-81db-cc975c914225",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/Atked1.anim b/frontend/assets/resources/animation/KnifeGirl/Atked1.anim
new file mode 100644
index 0000000..61a94da
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/Atked1.anim
@@ -0,0 +1,43 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "Atked1",
+ "_objFlags": 0,
+ "_native": "",
+ "_duration": 0.26666666666666666,
+ "sample": 60,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "9b90ae89-7fbe-4bb6-ab15-fc08462f54c5"
+ }
+ },
+ {
+ "frame": 0.1,
+ "value": {
+ "__uuid__": "aeb3553a-6de4-4197-9f06-d7cc3fa7c4cf"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "07650461-a7c0-4638-92fc-fa436752c045"
+ }
+ },
+ {
+ "frame": 0.25,
+ "value": {
+ "__uuid__": "ca22d473-83aa-4146-b732-89d0246a2968"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/Atked1.anim.meta b/frontend/assets/resources/animation/KnifeGirl/Atked1.anim.meta
new file mode 100644
index 0000000..3cf3078
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/Atked1.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "2.1.0",
+ "uuid": "2a50c853-000b-46f3-ae59-1dfb793de814",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/BlownUp1.anim b/frontend/assets/resources/animation/KnifeGirl/BlownUp1.anim
new file mode 100644
index 0000000..186d692
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/BlownUp1.anim
@@ -0,0 +1,43 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "BlownUp1",
+ "_objFlags": 0,
+ "_native": "",
+ "_duration": 0.45,
+ "sample": 60,
+ "speed": 1,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "8e2e03e0-7e2f-4bbb-b039-e232ef586232"
+ }
+ },
+ {
+ "frame": 0.15,
+ "value": {
+ "__uuid__": "0ea84f61-4a2f-4ca2-a0b8-b580e027c142"
+ }
+ },
+ {
+ "frame": 0.3,
+ "value": {
+ "__uuid__": "a3a31fcd-a162-456a-9c26-1f32413f87f3"
+ }
+ },
+ {
+ "frame": 0.43333333333333335,
+ "value": {
+ "__uuid__": "da4ee0a0-ba66-455c-99d3-9c803a3d0f17"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/BlownUp1.anim.meta b/frontend/assets/resources/animation/KnifeGirl/BlownUp1.anim.meta
new file mode 100644
index 0000000..42d5cde
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/BlownUp1.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "2.1.0",
+ "uuid": "0892a3ea-9da1-4157-825b-0c8ef1c73eeb",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/GetUp1.anim b/frontend/assets/resources/animation/KnifeGirl/GetUp1.anim
new file mode 100644
index 0000000..3d7ca5f
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/GetUp1.anim
@@ -0,0 +1,49 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "GetUp1",
+ "_objFlags": 0,
+ "_native": "",
+ "_duration": 0.5166666666666667,
+ "sample": 60,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "57640cd8-17eb-4279-a118-1ea40174da3c"
+ }
+ },
+ {
+ "frame": 0.15,
+ "value": {
+ "__uuid__": "d08a4f50-8707-4da2-8b12-83d1bf4fa2ca"
+ }
+ },
+ {
+ "frame": 0.3,
+ "value": {
+ "__uuid__": "3f26b0a4-db13-4a14-b885-5a812073eccf"
+ }
+ },
+ {
+ "frame": 0.4,
+ "value": {
+ "__uuid__": "23eb42d6-52a2-458d-98a3-2f692dd79398"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "7bd4428c-44f9-4ff8-8d00-d3448a27a0c4"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/GetUp1.anim.meta b/frontend/assets/resources/animation/KnifeGirl/GetUp1.anim.meta
new file mode 100644
index 0000000..55c64ca
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/GetUp1.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "2.1.0",
+ "uuid": "7d69868f-d474-4d86-a262-01f1cdd49021",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/Idle1.anim b/frontend/assets/resources/animation/KnifeGirl/Idle1.anim
new file mode 100644
index 0000000..24396b6
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/Idle1.anim
@@ -0,0 +1,85 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "Idle1",
+ "_objFlags": 0,
+ "_native": "",
+ "_duration": 2.0166666666666666,
+ "sample": 60,
+ "speed": 1,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "9ecbf97e-34bc-4c5e-b9e8-4d885a02e0d3"
+ }
+ },
+ {
+ "frame": 0.21666666666666667,
+ "value": {
+ "__uuid__": "92852885-b66d-42fe-a8e0-153e6c494bd2"
+ }
+ },
+ {
+ "frame": 0.4166666666666667,
+ "value": {
+ "__uuid__": "b0f1ecf7-be41-46a8-bccb-92ee53b4ef88"
+ }
+ },
+ {
+ "frame": 0.6166666666666667,
+ "value": {
+ "__uuid__": "944adaee-5e11-4c55-9573-1d529f21ed4b"
+ }
+ },
+ {
+ "frame": 0.8,
+ "value": {
+ "__uuid__": "ede36130-8312-46a2-abe5-ba102bc97822"
+ }
+ },
+ {
+ "frame": 1.0166666666666666,
+ "value": {
+ "__uuid__": "32dbb977-301c-4fbd-a19c-14a5ce0e2f5b"
+ }
+ },
+ {
+ "frame": 1.2,
+ "value": {
+ "__uuid__": "581c7ab1-451d-46b0-9eeb-24cf3b898924"
+ }
+ },
+ {
+ "frame": 1.4,
+ "value": {
+ "__uuid__": "27005132-eda8-4c3f-9f4a-3a6004245e9f"
+ }
+ },
+ {
+ "frame": 1.5833333333333333,
+ "value": {
+ "__uuid__": "2b339657-aa80-4ab6-a4dd-83e9c12b6a54"
+ }
+ },
+ {
+ "frame": 1.7833333333333334,
+ "value": {
+ "__uuid__": "08e25a99-158d-4159-8152-6c9047fe9d54"
+ }
+ },
+ {
+ "frame": 2,
+ "value": {
+ "__uuid__": "ab739541-39b5-4758-9b93-6681d6038730"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/Idle1.anim.meta b/frontend/assets/resources/animation/KnifeGirl/Idle1.anim.meta
new file mode 100644
index 0000000..960a287
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/Idle1.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "2.1.0",
+ "uuid": "5afe50e0-d03f-4d48-a7c0-a350c36e14d4",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/InAirAtk1.anim b/frontend/assets/resources/animation/KnifeGirl/InAirAtk1.anim
new file mode 100644
index 0000000..06df660
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/InAirAtk1.anim
@@ -0,0 +1,55 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "InAirAtk1",
+ "_objFlags": 0,
+ "_native": "",
+ "_duration": 0.38333333333333336,
+ "sample": 60,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "e6a3099f-b4c3-425f-a66b-9b992ae1c7b0"
+ }
+ },
+ {
+ "frame": 0.05,
+ "value": {
+ "__uuid__": "cade5a52-282e-47e5-aca9-5abb4f6afd14"
+ }
+ },
+ {
+ "frame": 0.1,
+ "value": {
+ "__uuid__": "96b0b028-3045-4a04-bf9c-c957f8c9e9ab"
+ }
+ },
+ {
+ "frame": 0.25,
+ "value": {
+ "__uuid__": "567f6bb7-c764-4c1d-bfec-f5c0c9812192"
+ }
+ },
+ {
+ "frame": 0.31666666666666665,
+ "value": {
+ "__uuid__": "5d0c32b4-52ce-4157-9b91-dd400a7ed07a"
+ }
+ },
+ {
+ "frame": 0.36666666666666664,
+ "value": {
+ "__uuid__": "fcef9c9b-dc71-459c-a541-9273b6e3923a"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/InAirAtk1.anim.meta b/frontend/assets/resources/animation/KnifeGirl/InAirAtk1.anim.meta
new file mode 100644
index 0000000..36c3312
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/InAirAtk1.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "2.1.0",
+ "uuid": "0e7468cc-b90d-4f68-91ce-0be126b406dd",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/InAirAtked1.anim b/frontend/assets/resources/animation/KnifeGirl/InAirAtked1.anim
new file mode 100644
index 0000000..907a389
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/InAirAtked1.anim
@@ -0,0 +1,31 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "InAirAtked1",
+ "_objFlags": 0,
+ "_native": "",
+ "_duration": 0.08333333333333333,
+ "sample": 60,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "01e8b938-03cb-4519-a417-384c31131a27"
+ }
+ },
+ {
+ "frame": 0.06666666666666667,
+ "value": {
+ "__uuid__": "d7970a18-f3af-44c6-b216-ee55b9a1b32c"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/InAirAtked1.anim.meta b/frontend/assets/resources/animation/KnifeGirl/InAirAtked1.anim.meta
new file mode 100644
index 0000000..1937862
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/InAirAtked1.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "2.1.0",
+ "uuid": "c86debde-118b-46b8-b483-f5ccec337315",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/InAirIdle1ByJump.anim b/frontend/assets/resources/animation/KnifeGirl/InAirIdle1ByJump.anim
new file mode 100644
index 0000000..18f6225
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/InAirIdle1ByJump.anim
@@ -0,0 +1,79 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "InAirIdle1ByJump",
+ "_objFlags": 0,
+ "_native": "",
+ "_duration": 0.4666666666666667,
+ "sample": 60,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "6ff7b4e6-80ec-4673-b47b-e0bba7567c3c"
+ }
+ },
+ {
+ "frame": 0.05,
+ "value": {
+ "__uuid__": "4ff35932-9869-4c78-9f75-b304eee46647"
+ }
+ },
+ {
+ "frame": 0.1,
+ "value": {
+ "__uuid__": "6b1355c5-a750-4e37-9018-de1b84238f6c"
+ }
+ },
+ {
+ "frame": 0.15,
+ "value": {
+ "__uuid__": "01193448-adb0-4364-94f3-ca810897f397"
+ }
+ },
+ {
+ "frame": 0.2,
+ "value": {
+ "__uuid__": "f4f0cd5d-835b-44c3-8cc9-2651dd00cd37"
+ }
+ },
+ {
+ "frame": 0.25,
+ "value": {
+ "__uuid__": "4c32b2d6-346f-4d6e-a92e-6678e4c4b1ad"
+ }
+ },
+ {
+ "frame": 0.3,
+ "value": {
+ "__uuid__": "30ef09b2-366a-4946-b556-2c0fac359c0b"
+ }
+ },
+ {
+ "frame": 0.35,
+ "value": {
+ "__uuid__": "6ab33993-124f-429e-ba4c-b0f6824ea6c7"
+ }
+ },
+ {
+ "frame": 0.4,
+ "value": {
+ "__uuid__": "e0612a37-a743-40fe-83ff-f189971f1992"
+ }
+ },
+ {
+ "frame": 0.45,
+ "value": {
+ "__uuid__": "6ff230eb-44e8-4ca9-97d0-1b059aa1e21b"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/InAirIdle1ByJump.anim.meta b/frontend/assets/resources/animation/KnifeGirl/InAirIdle1ByJump.anim.meta
new file mode 100644
index 0000000..617aa4b
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/InAirIdle1ByJump.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "2.1.0",
+ "uuid": "c4ddf3ea-2292-4511-a320-5486934ac361",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/InAirIdle1NoJump.anim b/frontend/assets/resources/animation/KnifeGirl/InAirIdle1NoJump.anim
new file mode 100644
index 0000000..efef36d
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/InAirIdle1NoJump.anim
@@ -0,0 +1,25 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "InAirIdle1NoJump",
+ "_objFlags": 0,
+ "_native": "",
+ "_duration": 0.016666666666666666,
+ "sample": 60,
+ "speed": 1,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "6ff230eb-44e8-4ca9-97d0-1b059aa1e21b"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/InAirIdle1NoJump.anim.meta b/frontend/assets/resources/animation/KnifeGirl/InAirIdle1NoJump.anim.meta
new file mode 100644
index 0000000..a578459
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/InAirIdle1NoJump.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "2.1.0",
+ "uuid": "bc461a02-4d1a-46a4-9f3c-7370adc6c1c8",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist
new file mode 100644
index 0000000..f5c8b15
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist
@@ -0,0 +1,1451 @@
+
+
+
+
+ frames
+
+ Atk1_0.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,128}
+ spriteSourceSize
+ {112,128}
+ textureRect
+ {{288,640},{112,128}}
+ textureRotated
+
+
+ Atk1_1.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,128}
+ spriteSourceSize
+ {112,128}
+ textureRect
+ {{352,768},{112,128}}
+ textureRotated
+
+
+ Atk1_10.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {64,128}
+ spriteSourceSize
+ {64,128}
+ textureRect
+ {{784,288},{64,128}}
+ textureRotated
+
+
+ Atk1_11.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{592,256},{80,128}}
+ textureRotated
+
+
+ Atk1_2.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{672,256},{80,128}}
+ textureRotated
+
+
+ Atk1_3.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,128}
+ spriteSourceSize
+ {112,128}
+ textureRect
+ {{416,896},{112,128}}
+ textureRotated
+
+
+ Atk1_4.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,128}
+ spriteSourceSize
+ {112,128}
+ textureRect
+ {{368,128},{112,128}}
+ textureRotated
+
+
+ Atk1_5.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,128}
+ spriteSourceSize
+ {96,128}
+ textureRect
+ {{480,384},{96,128}}
+ textureRotated
+
+
+ Atk1_6.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,128}
+ spriteSourceSize
+ {96,128}
+ textureRect
+ {{496,512},{96,128}}
+ textureRotated
+
+
+ Atk1_7.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{688,128},{80,128}}
+ textureRotated
+
+
+ Atk1_8.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{752,0},{80,128}}
+ textureRotated
+
+
+ Atk1_9.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{672,384},{80,128}}
+ textureRotated
+
+
+ Atk2_0.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{688,512},{80,128}}
+ textureRotated
+
+
+ Atk2_1.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,128}
+ spriteSourceSize
+ {96,128}
+ textureRect
+ {{576,384},{96,128}}
+ textureRotated
+
+
+ Atk2_10.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {128,112}
+ spriteSourceSize
+ {128,112}
+ textureRect
+ {{256,528},{128,112}}
+ textureRotated
+
+
+ Atk2_11.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,96}
+ spriteSourceSize
+ {96,96}
+ textureRect
+ {{1024,720},{96,96}}
+ textureRotated
+
+
+ Atk2_2.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,112}
+ spriteSourceSize
+ {96,112}
+ textureRect
+ {{816,352},{96,112}}
+ textureRotated
+
+
+ Atk2_3.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,112}
+ spriteSourceSize
+ {96,112}
+ textureRect
+ {{816,464},{96,112}}
+ textureRotated
+
+
+ Atk2_4.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,112}
+ spriteSourceSize
+ {96,112}
+ textureRect
+ {{1040,448},{96,112}}
+ textureRotated
+
+
+ Atk2_5.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,112}
+ spriteSourceSize
+ {96,112}
+ textureRect
+ {{912,480},{96,112}}
+ textureRotated
+
+
+ Atk2_6.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {144,112}
+ spriteSourceSize
+ {144,112}
+ textureRect
+ {{176,640},{144,112}}
+ textureRotated
+
+
+ Atk2_7.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {128,112}
+ spriteSourceSize
+ {128,112}
+ textureRect
+ {{480,128},{128,112}}
+ textureRotated
+
+
+ Atk2_8.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {160,112}
+ spriteSourceSize
+ {160,112}
+ textureRect
+ {{0,160},{160,112}}
+ textureRotated
+
+
+ Atk2_9.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {144,112}
+ spriteSourceSize
+ {144,112}
+ textureRect
+ {{240,784},{144,112}}
+ textureRotated
+
+
+ Atk3_0.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{704,640},{80,128}}
+ textureRotated
+
+
+ Atk3_1.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,128}
+ spriteSourceSize
+ {96,128}
+ textureRect
+ {{512,640},{96,128}}
+ textureRotated
+
+
+ Atk3_10.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{768,768},{80,128}}
+ textureRotated
+
+
+ Atk3_11.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{832,896},{80,128}}
+ textureRotated
+
+
+ Atk3_12.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,128}
+ spriteSourceSize
+ {112,128}
+ textureRect
+ {{432,0},{112,128}}
+ textureRotated
+
+
+ Atk3_2.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,128}
+ spriteSourceSize
+ {96,128}
+ textureRect
+ {{592,512},{96,128}}
+ textureRotated
+
+
+ Atk3_3.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,128}
+ spriteSourceSize
+ {112,128}
+ textureRect
+ {{368,256},{112,128}}
+ textureRotated
+
+
+ Atk3_4.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {144,128}
+ spriteSourceSize
+ {144,128}
+ textureRect
+ {{112,0},{144,128}}
+ textureRotated
+
+
+ Atk3_5.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {144,144}
+ spriteSourceSize
+ {144,144}
+ textureRect
+ {{96,800},{144,144}}
+ textureRotated
+
+
+ Atk3_6.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,160}
+ spriteSourceSize
+ {96,160}
+ textureRect
+ {{0,640},{96,160}}
+ textureRotated
+
+
+ Atk3_7.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,160}
+ spriteSourceSize
+ {96,160}
+ textureRect
+ {{0,800},{96,160}}
+ textureRotated
+
+
+ Atk3_8.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,160}
+ spriteSourceSize
+ {112,160}
+ textureRect
+ {{0,0},{112,160}}
+ textureRotated
+
+
+ Atk3_9.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,160}
+ spriteSourceSize
+ {80,160}
+ textureRect
+ {{96,640},{80,160}}
+ textureRotated
+
+
+ Atked1_0.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,128}
+ spriteSourceSize
+ {96,128}
+ textureRect
+ {{576,768},{96,128}}
+ textureRotated
+
+
+ Atked1_1.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,112}
+ spriteSourceSize
+ {112,112}
+ textureRect
+ {{1040,0},{112,112}}
+ textureRotated
+
+
+ Atked1_2.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,112}
+ spriteSourceSize
+ {96,112}
+ textureRect
+ {{1024,544},{96,112}}
+ textureRotated
+
+
+ Atked1_3.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {128,112}
+ spriteSourceSize
+ {128,112}
+ textureRect
+ {{544,0},{128,112}}
+ textureRotated
+
+
+ BlownUp1_0.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {160,112}
+ spriteSourceSize
+ {160,112}
+ textureRect
+ {{0,320},{160,112}}
+ textureRotated
+
+
+ BlownUp1_1.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {160,112}
+ spriteSourceSize
+ {160,112}
+ textureRect
+ {{0,480},{160,112}}
+ textureRotated
+
+
+ BlownUp1_2.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {128,96}
+ spriteSourceSize
+ {128,96}
+ textureRect
+ {{592,128},{128,96}}
+ textureRotated
+
+
+ BlownUp1_3.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {144,96}
+ spriteSourceSize
+ {144,96}
+ textureRect
+ {{272,928},{144,96}}
+ textureRotated
+
+
+ GetUp1_0.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {144,64}
+ spriteSourceSize
+ {144,64}
+ textureRect
+ {{0,960},{144,64}}
+ textureRotated
+
+
+ GetUp1_1.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {144,64}
+ spriteSourceSize
+ {144,64}
+ textureRect
+ {{112,576},{144,64}}
+ textureRotated
+
+
+ GetUp1_2.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {128,80}
+ spriteSourceSize
+ {128,80}
+ textureRect
+ {{144,944},{128,80}}
+ textureRotated
+
+
+ GetUp1_3.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,80}
+ spriteSourceSize
+ {96,80}
+ textureRect
+ {{928,768},{96,80}}
+ textureRotated
+
+
+ GetUp1_4.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,80}
+ spriteSourceSize
+ {80,80}
+ textureRect
+ {{992,928},{80,80}}
+ textureRotated
+
+
+ Idle1_0.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,128}
+ spriteSourceSize
+ {96,128}
+ textureRect
+ {{640,896},{96,128}}
+ textureRotated
+
+
+ Idle1_1.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {128,128}
+ spriteSourceSize
+ {128,128}
+ textureRect
+ {{240,144},{128,128}}
+ textureRotated
+
+
+ Idle1_10.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,128}
+ spriteSourceSize
+ {112,128}
+ textureRect
+ {{368,384},{112,128}}
+ textureRotated
+
+
+ Idle1_2.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {128,128}
+ spriteSourceSize
+ {128,128}
+ textureRect
+ {{304,0},{128,128}}
+ textureRotated
+
+
+ Idle1_3.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {144,128}
+ spriteSourceSize
+ {144,128}
+ textureRect
+ {{112,144},{144,128}}
+ textureRotated
+
+
+ Idle1_4.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {144,128}
+ spriteSourceSize
+ {144,128}
+ textureRect
+ {{112,288},{144,128}}
+ textureRotated
+
+
+ Idle1_5.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {144,128}
+ spriteSourceSize
+ {144,128}
+ textureRect
+ {{112,432},{144,128}}
+ textureRotated
+
+
+ Idle1_6.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {128,128}
+ spriteSourceSize
+ {128,128}
+ textureRect
+ {{240,272},{128,128}}
+ textureRotated
+
+
+ Idle1_7.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {128,128}
+ spriteSourceSize
+ {128,128}
+ textureRect
+ {{240,400},{128,128}}
+ textureRotated
+
+
+ Idle1_8.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,128}
+ spriteSourceSize
+ {112,128}
+ textureRect
+ {{384,512},{112,128}}
+ textureRotated
+
+
+ Idle1_9.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,128}
+ spriteSourceSize
+ {112,128}
+ textureRect
+ {{400,640},{112,128}}
+ textureRotated
+
+
+ InAirAtk1_0.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,80}
+ spriteSourceSize
+ {80,80}
+ textureRect
+ {{1072,896},{80,80}}
+ textureRotated
+
+
+ InAirAtk1_1.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,80}
+ spriteSourceSize
+ {96,80}
+ textureRect
+ {{1024,816},{96,80}}
+ textureRotated
+
+
+ InAirAtk1_2.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,112}
+ spriteSourceSize
+ {112,112}
+ textureRect
+ {{1040,112},{112,112}}
+ textureRotated
+
+
+ InAirAtk1_3.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,112}
+ spriteSourceSize
+ {112,112}
+ textureRect
+ {{1040,224},{112,112}}
+ textureRotated
+
+
+ InAirAtk1_4.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {128,112}
+ spriteSourceSize
+ {128,112}
+ textureRect
+ {{480,256},{128,112}}
+ textureRotated
+
+
+ InAirAtk1_5.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,80}
+ spriteSourceSize
+ {112,80}
+ textureRect
+ {{832,688},{112,80}}
+ textureRotated
+
+
+ InAirAtked1_0.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,112}
+ spriteSourceSize
+ {112,112}
+ textureRect
+ {{1040,336},{112,112}}
+ textureRotated
+
+
+ InAirAtked1_1.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {128,96}
+ spriteSourceSize
+ {128,96}
+ textureRect
+ {{656,0},{128,96}}
+ textureRotated
+
+
+ InAirIdle1_0.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,112}
+ spriteSourceSize
+ {80,112}
+ textureRect
+ {{832,576},{80,112}}
+ textureRotated
+
+
+ InAirIdle1_1.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,112}
+ spriteSourceSize
+ {80,112}
+ textureRect
+ {{848,768},{80,112}}
+ textureRotated
+
+
+ InAirIdle1_2.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {64,128}
+ spriteSourceSize
+ {64,128}
+ textureRect
+ {{912,320},{64,128}}
+ textureRotated
+
+
+ InAirIdle1_3.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,112}
+ spriteSourceSize
+ {80,112}
+ textureRect
+ {{1024,640},{80,112}}
+ textureRotated
+
+
+ InAirIdle1_4.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,96}
+ spriteSourceSize
+ {80,96}
+ textureRect
+ {{944,672},{80,96}}
+ textureRotated
+
+
+ InAirIdle1_5.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,96}
+ spriteSourceSize
+ {80,96}
+ textureRect
+ {{928,848},{80,96}}
+ textureRotated
+
+
+ InAirIdle1_6.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,96}
+ spriteSourceSize
+ {80,96}
+ textureRect
+ {{912,928},{80,96}}
+ textureRotated
+
+
+ InAirIdle1_7.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,112}
+ spriteSourceSize
+ {96,112}
+ textureRect
+ {{912,576},{96,112}}
+ textureRotated
+
+
+ InAirIdle1_8.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,128}
+ spriteSourceSize
+ {96,128}
+ textureRect
+ {{608,640},{96,128}}
+ textureRotated
+
+
+ InAirIdle1_9.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,128}
+ spriteSourceSize
+ {96,128}
+ textureRect
+ {{672,768},{96,128}}
+ textureRotated
+
+
+ LayDown1_0.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {144,64}
+ spriteSourceSize
+ {144,64}
+ textureRect
+ {{240,0},{144,64}}
+ textureRotated
+
+
+ LayDown1_1.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {128,48}
+ spriteSourceSize
+ {128,48}
+ textureRect
+ {{912,384},{128,48}}
+ textureRotated
+
+
+ LayDown1_2.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {128,48}
+ spriteSourceSize
+ {128,48}
+ textureRect
+ {{912,432},{128,48}}
+ textureRotated
+
+
+ Walking_0.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,128}
+ spriteSourceSize
+ {112,128}
+ textureRect
+ {{464,768},{112,128}}
+ textureRotated
+
+
+ Walking_1.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {112,128}
+ spriteSourceSize
+ {112,128}
+ textureRect
+ {{528,896},{112,128}}
+ textureRotated
+
+
+ Walking_10.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{912,0},{80,128}}
+ textureRotated
+
+
+ Walking_11.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{832,0},{80,128}}
+ textureRotated
+
+
+ Walking_12.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {96,128}
+ spriteSourceSize
+ {96,128}
+ textureRect
+ {{736,896},{96,128}}
+ textureRotated
+
+
+ Walking_2.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{912,80},{80,128}}
+ textureRotated
+
+
+ Walking_3.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {48,128}
+ spriteSourceSize
+ {48,128}
+ textureRect
+ {{768,512},{48,128}}
+ textureRotated
+
+
+ Walking_4.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {48,128}
+ spriteSourceSize
+ {48,128}
+ textureRect
+ {{784,640},{48,128}}
+ textureRotated
+
+
+ Walking_5.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{784,128},{80,128}}
+ textureRotated
+
+
+ Walking_6.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {64,128}
+ spriteSourceSize
+ {64,128}
+ textureRect
+ {{752,384},{64,128}}
+ textureRotated
+
+
+ Walking_7.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{912,160},{80,128}}
+ textureRotated
+
+
+ Walking_8.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{784,208},{80,128}}
+ textureRotated
+
+
+ Walking_9.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {80,128}
+ spriteSourceSize
+ {80,128}
+ textureRect
+ {{912,240},{80,128}}
+ textureRotated
+
+
+
+ metadata
+
+ format
+ 3
+ pixelFormat
+ RGBA8888
+ premultiplyAlpha
+
+ realTextureFileName
+ KnifeGirl.png
+ size
+ {1152,1024}
+ smartupdate
+ $TexturePacker:SmartUpdate:43c720e0426fad1631b1b033ca007c9b:6efe60d7637a19764428580eac5c940c:1ae107e0c6667a1ecb5ed98687517e0e$
+ textureFileName
+ KnifeGirl.png
+
+
+
diff --git a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist.meta b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist.meta
new file mode 100644
index 0000000..14176d3
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist.meta
@@ -0,0 +1,2102 @@
+{
+ "ver": "1.2.4",
+ "uuid": "579bc0c1-f5e2-4a5d-889b-9d567e53b0e6",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "size": {
+ "width": 1152,
+ "height": 1024
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "Atk1_0.png": {
+ "ver": "1.0.4",
+ "uuid": "5b269b2e-0800-4bf5-b5db-055b78cf318d",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 288,
+ "trimY": 640,
+ "width": 112,
+ "height": 128,
+ "rawWidth": 112,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk1_1.png": {
+ "ver": "1.0.4",
+ "uuid": "e184f831-3f90-47cb-8ca5-ad9446ba0398",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 352,
+ "trimY": 768,
+ "width": 112,
+ "height": 128,
+ "rawWidth": 112,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk1_10.png": {
+ "ver": "1.0.4",
+ "uuid": "4c512398-4290-4fdf-bb21-2b0062a9071b",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 784,
+ "trimY": 288,
+ "width": 64,
+ "height": 128,
+ "rawWidth": 64,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk1_11.png": {
+ "ver": "1.0.4",
+ "uuid": "6b2a1a09-8236-4972-8aee-1781b6547d4e",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 592,
+ "trimY": 256,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk1_2.png": {
+ "ver": "1.0.4",
+ "uuid": "f260f82b-10cf-49af-b46c-cd8dc7a3503f",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 672,
+ "trimY": 256,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk1_3.png": {
+ "ver": "1.0.4",
+ "uuid": "09f43e75-0986-4b8f-907b-e5a5a73b7c54",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 416,
+ "trimY": 896,
+ "width": 112,
+ "height": 128,
+ "rawWidth": 112,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk1_4.png": {
+ "ver": "1.0.4",
+ "uuid": "d7432402-fcbd-4e2e-b2c1-33364f31948b",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 368,
+ "trimY": 128,
+ "width": 112,
+ "height": 128,
+ "rawWidth": 112,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk1_5.png": {
+ "ver": "1.0.4",
+ "uuid": "8acf1c5a-6910-47d6-aa18-1e6f07546d7a",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 480,
+ "trimY": 384,
+ "width": 96,
+ "height": 128,
+ "rawWidth": 96,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk1_6.png": {
+ "ver": "1.0.4",
+ "uuid": "76120dbd-6390-4706-9580-dcec9687e83e",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 496,
+ "trimY": 512,
+ "width": 96,
+ "height": 128,
+ "rawWidth": 96,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk1_7.png": {
+ "ver": "1.0.4",
+ "uuid": "f9a7a04a-2369-4946-8313-c2da896da51e",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 688,
+ "trimY": 128,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk1_8.png": {
+ "ver": "1.0.4",
+ "uuid": "c8fb14e2-745e-4a2b-b235-d43195052652",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 752,
+ "trimY": 0,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk1_9.png": {
+ "ver": "1.0.4",
+ "uuid": "1f23e0e5-830c-4d07-8f80-cbb98a2a1954",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 672,
+ "trimY": 384,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk2_0.png": {
+ "ver": "1.0.4",
+ "uuid": "dd9a00aa-ddbc-4b01-a7cb-3c43c3a655b6",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 688,
+ "trimY": 512,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk2_1.png": {
+ "ver": "1.0.4",
+ "uuid": "f66e83bd-1afc-4957-bb16-488d70566ed1",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 576,
+ "trimY": 384,
+ "width": 96,
+ "height": 128,
+ "rawWidth": 96,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk2_10.png": {
+ "ver": "1.0.4",
+ "uuid": "3898259f-a3b0-490d-b260-f86ab5109dfe",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 256,
+ "trimY": 528,
+ "width": 128,
+ "height": 112,
+ "rawWidth": 128,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk2_11.png": {
+ "ver": "1.0.4",
+ "uuid": "60f9f7d4-5cf7-4098-9455-0f6a74963fc6",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1024,
+ "trimY": 720,
+ "width": 96,
+ "height": 96,
+ "rawWidth": 96,
+ "rawHeight": 96,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk2_2.png": {
+ "ver": "1.0.4",
+ "uuid": "bd682c41-dc62-49ff-a96a-18b33e50a6de",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 816,
+ "trimY": 352,
+ "width": 96,
+ "height": 112,
+ "rawWidth": 96,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk2_3.png": {
+ "ver": "1.0.4",
+ "uuid": "94ccab85-e32f-4e13-b0e5-72c798f78ad1",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 816,
+ "trimY": 464,
+ "width": 96,
+ "height": 112,
+ "rawWidth": 96,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk2_4.png": {
+ "ver": "1.0.4",
+ "uuid": "e80d3a01-5048-42b7-a280-cb6aa01602c2",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1040,
+ "trimY": 448,
+ "width": 96,
+ "height": 112,
+ "rawWidth": 96,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk2_5.png": {
+ "ver": "1.0.4",
+ "uuid": "d899088c-be62-47b4-9ebf-0a89a2261565",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 912,
+ "trimY": 480,
+ "width": 96,
+ "height": 112,
+ "rawWidth": 96,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk2_6.png": {
+ "ver": "1.0.4",
+ "uuid": "5b1e5aa7-fd82-47ae-a5b2-6d4983d848ed",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 176,
+ "trimY": 640,
+ "width": 144,
+ "height": 112,
+ "rawWidth": 144,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk2_7.png": {
+ "ver": "1.0.4",
+ "uuid": "c2945988-b4bb-4583-a5ef-2fa02b23a347",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 480,
+ "trimY": 128,
+ "width": 128,
+ "height": 112,
+ "rawWidth": 128,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk2_8.png": {
+ "ver": "1.0.4",
+ "uuid": "070ea1e3-9c07-4735-8b94-515ef70216ad",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 160,
+ "width": 160,
+ "height": 112,
+ "rawWidth": 160,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk2_9.png": {
+ "ver": "1.0.4",
+ "uuid": "3b8bc5c0-26df-4218-b7dc-134a36080a35",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 240,
+ "trimY": 784,
+ "width": 144,
+ "height": 112,
+ "rawWidth": 144,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk3_0.png": {
+ "ver": "1.0.4",
+ "uuid": "98276733-6f8d-4cac-8a7e-31883834c240",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 704,
+ "trimY": 640,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk3_1.png": {
+ "ver": "1.0.4",
+ "uuid": "51ab185b-2271-48b5-a897-af79721d566c",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 512,
+ "trimY": 640,
+ "width": 96,
+ "height": 128,
+ "rawWidth": 96,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk3_10.png": {
+ "ver": "1.0.4",
+ "uuid": "58afa365-a916-4ec6-aab3-1c87f5332b12",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 768,
+ "trimY": 768,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk3_11.png": {
+ "ver": "1.0.4",
+ "uuid": "7ada26fa-c72d-46f6-9b3a-ae9d7ba5eaf4",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 832,
+ "trimY": 896,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk3_12.png": {
+ "ver": "1.0.4",
+ "uuid": "ee5e4a85-6dda-4d1e-a469-5be1db6a8913",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 432,
+ "trimY": 0,
+ "width": 112,
+ "height": 128,
+ "rawWidth": 112,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk3_2.png": {
+ "ver": "1.0.4",
+ "uuid": "c29fd95d-7467-4138-9e01-6421af63dd68",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 592,
+ "trimY": 512,
+ "width": 96,
+ "height": 128,
+ "rawWidth": 96,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk3_3.png": {
+ "ver": "1.0.4",
+ "uuid": "3285b5eb-c6be-4cb9-ac60-c506645fee4b",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 368,
+ "trimY": 256,
+ "width": 112,
+ "height": 128,
+ "rawWidth": 112,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk3_4.png": {
+ "ver": "1.0.4",
+ "uuid": "13fd4a87-71f4-4b69-a5b3-413d564c35e6",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 112,
+ "trimY": 0,
+ "width": 144,
+ "height": 128,
+ "rawWidth": 144,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk3_5.png": {
+ "ver": "1.0.4",
+ "uuid": "7189e229-00d6-427a-8ea1-d05fbd97824f",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 96,
+ "trimY": 800,
+ "width": 144,
+ "height": 144,
+ "rawWidth": 144,
+ "rawHeight": 144,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk3_6.png": {
+ "ver": "1.0.4",
+ "uuid": "d9ccfe33-3db7-4b3a-807c-adb2121fb7c7",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 640,
+ "width": 96,
+ "height": 160,
+ "rawWidth": 96,
+ "rawHeight": 160,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk3_7.png": {
+ "ver": "1.0.4",
+ "uuid": "a51cbc29-0826-46f7-a38b-8b0f996fbace",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 800,
+ "width": 96,
+ "height": 160,
+ "rawWidth": 96,
+ "rawHeight": 160,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk3_8.png": {
+ "ver": "1.0.4",
+ "uuid": "7e9f3a24-6abc-4b49-a5c5-a0c100865ffc",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 112,
+ "height": 160,
+ "rawWidth": 112,
+ "rawHeight": 160,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atk3_9.png": {
+ "ver": "1.0.4",
+ "uuid": "ecbaeb43-1118-483a-91c9-ff1ff01b7b33",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 96,
+ "trimY": 640,
+ "width": 80,
+ "height": 160,
+ "rawWidth": 80,
+ "rawHeight": 160,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atked1_0.png": {
+ "ver": "1.0.4",
+ "uuid": "9b90ae89-7fbe-4bb6-ab15-fc08462f54c5",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 576,
+ "trimY": 768,
+ "width": 96,
+ "height": 128,
+ "rawWidth": 96,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atked1_1.png": {
+ "ver": "1.0.4",
+ "uuid": "aeb3553a-6de4-4197-9f06-d7cc3fa7c4cf",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1040,
+ "trimY": 0,
+ "width": 112,
+ "height": 112,
+ "rawWidth": 112,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atked1_2.png": {
+ "ver": "1.0.4",
+ "uuid": "07650461-a7c0-4638-92fc-fa436752c045",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1024,
+ "trimY": 544,
+ "width": 96,
+ "height": 112,
+ "rawWidth": 96,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Atked1_3.png": {
+ "ver": "1.0.4",
+ "uuid": "ca22d473-83aa-4146-b732-89d0246a2968",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 544,
+ "trimY": 0,
+ "width": 128,
+ "height": 112,
+ "rawWidth": 128,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "BlownUp1_0.png": {
+ "ver": "1.0.4",
+ "uuid": "8e2e03e0-7e2f-4bbb-b039-e232ef586232",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 320,
+ "width": 160,
+ "height": 112,
+ "rawWidth": 160,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "BlownUp1_1.png": {
+ "ver": "1.0.4",
+ "uuid": "0ea84f61-4a2f-4ca2-a0b8-b580e027c142",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 480,
+ "width": 160,
+ "height": 112,
+ "rawWidth": 160,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "BlownUp1_2.png": {
+ "ver": "1.0.4",
+ "uuid": "a3a31fcd-a162-456a-9c26-1f32413f87f3",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 592,
+ "trimY": 128,
+ "width": 128,
+ "height": 96,
+ "rawWidth": 128,
+ "rawHeight": 96,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "BlownUp1_3.png": {
+ "ver": "1.0.4",
+ "uuid": "da4ee0a0-ba66-455c-99d3-9c803a3d0f17",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 272,
+ "trimY": 928,
+ "width": 144,
+ "height": 96,
+ "rawWidth": 144,
+ "rawHeight": 96,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "GetUp1_0.png": {
+ "ver": "1.0.4",
+ "uuid": "d08a4f50-8707-4da2-8b12-83d1bf4fa2ca",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 960,
+ "width": 144,
+ "height": 64,
+ "rawWidth": 144,
+ "rawHeight": 64,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "GetUp1_1.png": {
+ "ver": "1.0.4",
+ "uuid": "3f26b0a4-db13-4a14-b885-5a812073eccf",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 112,
+ "trimY": 576,
+ "width": 144,
+ "height": 64,
+ "rawWidth": 144,
+ "rawHeight": 64,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "GetUp1_2.png": {
+ "ver": "1.0.4",
+ "uuid": "23eb42d6-52a2-458d-98a3-2f692dd79398",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 144,
+ "trimY": 944,
+ "width": 128,
+ "height": 80,
+ "rawWidth": 128,
+ "rawHeight": 80,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "GetUp1_3.png": {
+ "ver": "1.0.4",
+ "uuid": "7bd4428c-44f9-4ff8-8d00-d3448a27a0c4",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 928,
+ "trimY": 768,
+ "width": 96,
+ "height": 80,
+ "rawWidth": 96,
+ "rawHeight": 80,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "GetUp1_4.png": {
+ "ver": "1.0.4",
+ "uuid": "57640cd8-17eb-4279-a118-1ea40174da3c",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 992,
+ "trimY": 928,
+ "width": 80,
+ "height": 80,
+ "rawWidth": 80,
+ "rawHeight": 80,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Idle1_0.png": {
+ "ver": "1.0.4",
+ "uuid": "92852885-b66d-42fe-a8e0-153e6c494bd2",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 640,
+ "trimY": 896,
+ "width": 96,
+ "height": 128,
+ "rawWidth": 96,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Idle1_1.png": {
+ "ver": "1.0.4",
+ "uuid": "b0f1ecf7-be41-46a8-bccb-92ee53b4ef88",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 240,
+ "trimY": 144,
+ "width": 128,
+ "height": 128,
+ "rawWidth": 128,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Idle1_10.png": {
+ "ver": "1.0.4",
+ "uuid": "9ecbf97e-34bc-4c5e-b9e8-4d885a02e0d3",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 368,
+ "trimY": 384,
+ "width": 112,
+ "height": 128,
+ "rawWidth": 112,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Idle1_2.png": {
+ "ver": "1.0.4",
+ "uuid": "944adaee-5e11-4c55-9573-1d529f21ed4b",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 304,
+ "trimY": 0,
+ "width": 128,
+ "height": 128,
+ "rawWidth": 128,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Idle1_3.png": {
+ "ver": "1.0.4",
+ "uuid": "ede36130-8312-46a2-abe5-ba102bc97822",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 112,
+ "trimY": 144,
+ "width": 144,
+ "height": 128,
+ "rawWidth": 144,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Idle1_4.png": {
+ "ver": "1.0.4",
+ "uuid": "32dbb977-301c-4fbd-a19c-14a5ce0e2f5b",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 112,
+ "trimY": 288,
+ "width": 144,
+ "height": 128,
+ "rawWidth": 144,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Idle1_5.png": {
+ "ver": "1.0.4",
+ "uuid": "581c7ab1-451d-46b0-9eeb-24cf3b898924",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 112,
+ "trimY": 432,
+ "width": 144,
+ "height": 128,
+ "rawWidth": 144,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Idle1_6.png": {
+ "ver": "1.0.4",
+ "uuid": "27005132-eda8-4c3f-9f4a-3a6004245e9f",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 240,
+ "trimY": 272,
+ "width": 128,
+ "height": 128,
+ "rawWidth": 128,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Idle1_7.png": {
+ "ver": "1.0.4",
+ "uuid": "2b339657-aa80-4ab6-a4dd-83e9c12b6a54",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 240,
+ "trimY": 400,
+ "width": 128,
+ "height": 128,
+ "rawWidth": 128,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Idle1_8.png": {
+ "ver": "1.0.4",
+ "uuid": "08e25a99-158d-4159-8152-6c9047fe9d54",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 384,
+ "trimY": 512,
+ "width": 112,
+ "height": 128,
+ "rawWidth": 112,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Idle1_9.png": {
+ "ver": "1.0.4",
+ "uuid": "ab739541-39b5-4758-9b93-6681d6038730",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 400,
+ "trimY": 640,
+ "width": 112,
+ "height": 128,
+ "rawWidth": 112,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirAtk1_0.png": {
+ "ver": "1.0.4",
+ "uuid": "e6a3099f-b4c3-425f-a66b-9b992ae1c7b0",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1072,
+ "trimY": 896,
+ "width": 80,
+ "height": 80,
+ "rawWidth": 80,
+ "rawHeight": 80,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirAtk1_1.png": {
+ "ver": "1.0.4",
+ "uuid": "cade5a52-282e-47e5-aca9-5abb4f6afd14",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1024,
+ "trimY": 816,
+ "width": 96,
+ "height": 80,
+ "rawWidth": 96,
+ "rawHeight": 80,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirAtk1_2.png": {
+ "ver": "1.0.4",
+ "uuid": "96b0b028-3045-4a04-bf9c-c957f8c9e9ab",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1040,
+ "trimY": 112,
+ "width": 112,
+ "height": 112,
+ "rawWidth": 112,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirAtk1_3.png": {
+ "ver": "1.0.4",
+ "uuid": "567f6bb7-c764-4c1d-bfec-f5c0c9812192",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1040,
+ "trimY": 224,
+ "width": 112,
+ "height": 112,
+ "rawWidth": 112,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirAtk1_4.png": {
+ "ver": "1.0.4",
+ "uuid": "5d0c32b4-52ce-4157-9b91-dd400a7ed07a",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 480,
+ "trimY": 256,
+ "width": 128,
+ "height": 112,
+ "rawWidth": 128,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirAtk1_5.png": {
+ "ver": "1.0.4",
+ "uuid": "fcef9c9b-dc71-459c-a541-9273b6e3923a",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 832,
+ "trimY": 688,
+ "width": 112,
+ "height": 80,
+ "rawWidth": 112,
+ "rawHeight": 80,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirAtked1_0.png": {
+ "ver": "1.0.4",
+ "uuid": "01e8b938-03cb-4519-a417-384c31131a27",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1040,
+ "trimY": 336,
+ "width": 112,
+ "height": 112,
+ "rawWidth": 112,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirAtked1_1.png": {
+ "ver": "1.0.4",
+ "uuid": "d7970a18-f3af-44c6-b216-ee55b9a1b32c",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 656,
+ "trimY": 0,
+ "width": 128,
+ "height": 96,
+ "rawWidth": 128,
+ "rawHeight": 96,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirIdle1_0.png": {
+ "ver": "1.0.4",
+ "uuid": "6ff7b4e6-80ec-4673-b47b-e0bba7567c3c",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 832,
+ "trimY": 576,
+ "width": 80,
+ "height": 112,
+ "rawWidth": 80,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirIdle1_1.png": {
+ "ver": "1.0.4",
+ "uuid": "4ff35932-9869-4c78-9f75-b304eee46647",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 848,
+ "trimY": 768,
+ "width": 80,
+ "height": 112,
+ "rawWidth": 80,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirIdle1_2.png": {
+ "ver": "1.0.4",
+ "uuid": "6b1355c5-a750-4e37-9018-de1b84238f6c",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 912,
+ "trimY": 320,
+ "width": 64,
+ "height": 128,
+ "rawWidth": 64,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirIdle1_3.png": {
+ "ver": "1.0.4",
+ "uuid": "01193448-adb0-4364-94f3-ca810897f397",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1024,
+ "trimY": 640,
+ "width": 80,
+ "height": 112,
+ "rawWidth": 80,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirIdle1_4.png": {
+ "ver": "1.0.4",
+ "uuid": "f4f0cd5d-835b-44c3-8cc9-2651dd00cd37",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 944,
+ "trimY": 672,
+ "width": 80,
+ "height": 96,
+ "rawWidth": 80,
+ "rawHeight": 96,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirIdle1_5.png": {
+ "ver": "1.0.4",
+ "uuid": "4c32b2d6-346f-4d6e-a92e-6678e4c4b1ad",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 928,
+ "trimY": 848,
+ "width": 80,
+ "height": 96,
+ "rawWidth": 80,
+ "rawHeight": 96,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirIdle1_6.png": {
+ "ver": "1.0.4",
+ "uuid": "30ef09b2-366a-4946-b556-2c0fac359c0b",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 912,
+ "trimY": 928,
+ "width": 80,
+ "height": 96,
+ "rawWidth": 80,
+ "rawHeight": 96,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirIdle1_7.png": {
+ "ver": "1.0.4",
+ "uuid": "6ab33993-124f-429e-ba4c-b0f6824ea6c7",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 912,
+ "trimY": 576,
+ "width": 96,
+ "height": 112,
+ "rawWidth": 96,
+ "rawHeight": 112,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirIdle1_8.png": {
+ "ver": "1.0.4",
+ "uuid": "e0612a37-a743-40fe-83ff-f189971f1992",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 608,
+ "trimY": 640,
+ "width": 96,
+ "height": 128,
+ "rawWidth": 96,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "InAirIdle1_9.png": {
+ "ver": "1.0.4",
+ "uuid": "6ff230eb-44e8-4ca9-97d0-1b059aa1e21b",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 672,
+ "trimY": 768,
+ "width": 96,
+ "height": 128,
+ "rawWidth": 96,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "LayDown1_0.png": {
+ "ver": "1.0.4",
+ "uuid": "7effc101-0b6c-4399-beea-7c9ef6e9df7e",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 240,
+ "trimY": 0,
+ "width": 144,
+ "height": 64,
+ "rawWidth": 144,
+ "rawHeight": 64,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "LayDown1_1.png": {
+ "ver": "1.0.4",
+ "uuid": "4e8a4f3c-5406-4700-9230-b2abc29a1093",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 912,
+ "trimY": 384,
+ "width": 128,
+ "height": 48,
+ "rawWidth": 128,
+ "rawHeight": 48,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "LayDown1_2.png": {
+ "ver": "1.0.4",
+ "uuid": "1ae5e6f6-ba82-485d-b3c7-59fd16ece3d5",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 912,
+ "trimY": 432,
+ "width": 128,
+ "height": 48,
+ "rawWidth": 128,
+ "rawHeight": 48,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Walking_0.png": {
+ "ver": "1.0.4",
+ "uuid": "cbbd2ddc-9ed3-40bf-ab87-2f9d26c2dd85",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 464,
+ "trimY": 768,
+ "width": 112,
+ "height": 128,
+ "rawWidth": 112,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Walking_1.png": {
+ "ver": "1.0.4",
+ "uuid": "9435195e-4560-495e-b1ae-083c0c87e8a0",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 528,
+ "trimY": 896,
+ "width": 112,
+ "height": 128,
+ "rawWidth": 112,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Walking_10.png": {
+ "ver": "1.0.4",
+ "uuid": "9100da6b-7582-4afb-9698-3d67d3b2012d",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 912,
+ "trimY": 0,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Walking_11.png": {
+ "ver": "1.0.4",
+ "uuid": "1257f72d-0cb3-4750-ae70-13c2d8eb2269",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 832,
+ "trimY": 0,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Walking_12.png": {
+ "ver": "1.0.4",
+ "uuid": "1d34b6db-27ba-4e26-864d-0f00d501765e",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 736,
+ "trimY": 896,
+ "width": 96,
+ "height": 128,
+ "rawWidth": 96,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Walking_2.png": {
+ "ver": "1.0.4",
+ "uuid": "ec048360-7a17-4f22-ba52-eb86ec1acae8",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 912,
+ "trimY": 80,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Walking_3.png": {
+ "ver": "1.0.4",
+ "uuid": "82bb81e3-667c-4280-8710-211f4904ef2f",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 768,
+ "trimY": 512,
+ "width": 48,
+ "height": 128,
+ "rawWidth": 48,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Walking_4.png": {
+ "ver": "1.0.4",
+ "uuid": "c3b14ecc-a6d9-4cb3-8637-ca7b407a0f5c",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 784,
+ "trimY": 640,
+ "width": 48,
+ "height": 128,
+ "rawWidth": 48,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Walking_5.png": {
+ "ver": "1.0.4",
+ "uuid": "f958fb7f-ef5a-4918-81f3-564004572f45",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 784,
+ "trimY": 128,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Walking_6.png": {
+ "ver": "1.0.4",
+ "uuid": "8a0ecf92-db26-4206-9a80-20e749055def",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 752,
+ "trimY": 384,
+ "width": 64,
+ "height": 128,
+ "rawWidth": 64,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Walking_7.png": {
+ "ver": "1.0.4",
+ "uuid": "942f2e02-a700-4fbf-877e-08c93e4d4010",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 912,
+ "trimY": 160,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Walking_8.png": {
+ "ver": "1.0.4",
+ "uuid": "30546064-1a11-499e-8523-a82c83951c73",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 784,
+ "trimY": 208,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Walking_9.png": {
+ "ver": "1.0.4",
+ "uuid": "515bb75f-7a1f-4500-8aa9-c895915ce19f",
+ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 912,
+ "trimY": 240,
+ "width": 80,
+ "height": 128,
+ "rawWidth": 80,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.png b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.png
new file mode 100644
index 0000000..ce49a1c
Binary files /dev/null and b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.png differ
diff --git a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.png.meta b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.png.meta
new file mode 100644
index 0000000..8abb6b5
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.png.meta
@@ -0,0 +1,12 @@
+{
+ "ver": "2.3.3",
+ "uuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
+ "type": "raw",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "premultiplyAlpha": false,
+ "genMipmaps": false,
+ "packable": true,
+ "platformSettings": {},
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/LayDown1.anim b/frontend/assets/resources/animation/KnifeGirl/LayDown1.anim
new file mode 100644
index 0000000..a0cd4e2
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/LayDown1.anim
@@ -0,0 +1,37 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "LayDown1",
+ "_objFlags": 0,
+ "_native": "",
+ "_duration": 0.25,
+ "sample": 60,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "7effc101-0b6c-4399-beea-7c9ef6e9df7e"
+ }
+ },
+ {
+ "frame": 0.11666666666666667,
+ "value": {
+ "__uuid__": "4e8a4f3c-5406-4700-9230-b2abc29a1093"
+ }
+ },
+ {
+ "frame": 0.23333333333333334,
+ "value": {
+ "__uuid__": "1ae5e6f6-ba82-485d-b3c7-59fd16ece3d5"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/LayDown1.anim.meta b/frontend/assets/resources/animation/KnifeGirl/LayDown1.anim.meta
new file mode 100644
index 0000000..0e3a0ce
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/LayDown1.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "2.1.0",
+ "uuid": "0a6478a6-f4cc-47cb-a1c6-761cf9141eb2",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/Walking.anim b/frontend/assets/resources/animation/KnifeGirl/Walking.anim
new file mode 100644
index 0000000..ef50177
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/Walking.anim
@@ -0,0 +1,97 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "Walking",
+ "_objFlags": 0,
+ "_native": "",
+ "_duration": 1.1166666666666667,
+ "sample": 60,
+ "speed": 1.2,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "30546064-1a11-499e-8523-a82c83951c73"
+ }
+ },
+ {
+ "frame": 0.08333333333333333,
+ "value": {
+ "__uuid__": "cbbd2ddc-9ed3-40bf-ab87-2f9d26c2dd85"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "9435195e-4560-495e-b1ae-083c0c87e8a0"
+ }
+ },
+ {
+ "frame": 0.25,
+ "value": {
+ "__uuid__": "ec048360-7a17-4f22-ba52-eb86ec1acae8"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "82bb81e3-667c-4280-8710-211f4904ef2f"
+ }
+ },
+ {
+ "frame": 0.4166666666666667,
+ "value": {
+ "__uuid__": "c3b14ecc-a6d9-4cb3-8637-ca7b407a0f5c"
+ }
+ },
+ {
+ "frame": 0.5166666666666667,
+ "value": {
+ "__uuid__": "f958fb7f-ef5a-4918-81f3-564004572f45"
+ }
+ },
+ {
+ "frame": 0.6166666666666667,
+ "value": {
+ "__uuid__": "8a0ecf92-db26-4206-9a80-20e749055def"
+ }
+ },
+ {
+ "frame": 0.7333333333333333,
+ "value": {
+ "__uuid__": "942f2e02-a700-4fbf-877e-08c93e4d4010"
+ }
+ },
+ {
+ "frame": 0.8333333333333334,
+ "value": {
+ "__uuid__": "515bb75f-7a1f-4500-8aa9-c895915ce19f"
+ }
+ },
+ {
+ "frame": 0.9166666666666666,
+ "value": {
+ "__uuid__": "9100da6b-7582-4afb-9698-3d67d3b2012d"
+ }
+ },
+ {
+ "frame": 1.0166666666666666,
+ "value": {
+ "__uuid__": "1257f72d-0cb3-4750-ae70-13c2d8eb2269"
+ }
+ },
+ {
+ "frame": 1.1,
+ "value": {
+ "__uuid__": "1d34b6db-27ba-4e26-864d-0f00d501765e"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/KnifeGirl/Walking.anim.meta b/frontend/assets/resources/animation/KnifeGirl/Walking.anim.meta
new file mode 100644
index 0000000..c4729aa
--- /dev/null
+++ b/frontend/assets/resources/animation/KnifeGirl/Walking.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "2.1.0",
+ "uuid": "f7f60d3f-32c0-4b56-901e-6eec9f73fa83",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/frontend/assets/resources/animation/MonkGirl/Atk1.anim b/frontend/assets/resources/animation/MonkGirl/Atk1.anim
index 0a2dc11..2a20d16 100644
--- a/frontend/assets/resources/animation/MonkGirl/Atk1.anim
+++ b/frontend/assets/resources/animation/MonkGirl/Atk1.anim
@@ -3,7 +3,7 @@
"_name": "Atk1",
"_objFlags": 0,
"_native": "",
- "_duration": 0.2833333333333333,
+ "_duration": 0.5,
"sample": 60,
"speed": 1,
"wrapMode": 1,
@@ -24,19 +24,19 @@
}
},
{
- "frame": 0.1,
+ "frame": 0.11666666666666667,
"value": {
"__uuid__": "72bc74a1-6e8c-48bb-9ab2-9b8f502ceffb"
}
},
{
- "frame": 0.25,
+ "frame": 0.43333333333333335,
"value": {
"__uuid__": "7e619896-100d-4903-b256-e30ddb5ad397"
}
},
{
- "frame": 0.26666666666666666,
+ "frame": 0.48333333333333334,
"value": {
"__uuid__": "4a35e0f5-95c4-445b-8f9b-6514a060a72d"
}
diff --git a/frontend/assets/resources/animation/MonkGirl/Atk3.anim b/frontend/assets/resources/animation/MonkGirl/Atk3.anim
index ebf6cfd..1c7c16b 100644
--- a/frontend/assets/resources/animation/MonkGirl/Atk3.anim
+++ b/frontend/assets/resources/animation/MonkGirl/Atk3.anim
@@ -3,7 +3,7 @@
"_name": "Atk3",
"_objFlags": 0,
"_native": "",
- "_duration": 1,
+ "_duration": 1.0166666666666666,
"sample": 60,
"speed": 1,
"wrapMode": 1,
@@ -13,69 +13,57 @@
"spriteFrame": [
{
"frame": 0,
- "value": {
- "__uuid__": "4e1a3e61-dc3e-4de1-9385-bce2c5f54764"
- }
- },
- {
- "frame": 0.05,
"value": {
"__uuid__": "39ba4413-6f4a-49a5-a7ca-d11140dfe7dd"
}
},
{
- "frame": 0.11666666666666667,
+ "frame": 0.08333333333333333,
"value": {
"__uuid__": "26b646c7-bdbc-495e-adaf-9d52ef1b5c84"
}
},
{
- "frame": 0.21666666666666667,
+ "frame": 0.16666666666666666,
"value": {
"__uuid__": "5a5208a0-1c29-446f-8375-739aef09fe65"
}
},
{
- "frame": 0.3,
+ "frame": 0.2833333333333333,
"value": {
"__uuid__": "414628f0-13ec-4f01-83a0-b94f6a13fff1"
}
},
{
- "frame": 0.43333333333333335,
+ "frame": 0.4166666666666667,
"value": {
"__uuid__": "c494965a-e7e6-4c99-ac61-60642e6247dc"
}
},
{
- "frame": 0.5666666666666667,
+ "frame": 0.5333333333333333,
"value": {
"__uuid__": "04cafb17-39ab-4f2b-9830-3eaf42cab254"
}
},
{
- "frame": 0.7166666666666667,
+ "frame": 0.6666666666666666,
"value": {
"__uuid__": "fd9c7d8a-1038-4cab-a0e6-699e404701db"
}
},
{
- "frame": 0.8333333333333334,
+ "frame": 0.8,
"value": {
"__uuid__": "2447c6b3-292b-43b4-84e5-acc35df0c1f5"
}
},
{
- "frame": 0.9333333333333333,
+ "frame": 1,
"value": {
"__uuid__": "00275818-b9b6-41ab-a792-f21ff10747fa"
}
- },
- {
- "frame": 0.9833333333333333,
- "value": {
- "__uuid__": "11a06f33-cdfa-46cf-aae4-41e72a6711c2"
- }
}
]
}
diff --git a/frontend/assets/resources/animation/MonkGirl/MonkGirl.plist b/frontend/assets/resources/animation/MonkGirl/MonkGirl.plist
index cec6563..a7ecf2c 100644
--- a/frontend/assets/resources/animation/MonkGirl/MonkGirl.plist
+++ b/frontend/assets/resources/animation/MonkGirl/MonkGirl.plist
@@ -15,7 +15,7 @@
spriteSourceSize
{62,92}
textureRect
- {{551,127},{62,92}}
+ {{1211,188},{62,92}}
textureRotated
@@ -30,9 +30,9 @@
spriteSourceSize
{77,99}
textureRect
- {{93,594},{77,99}}
+ {{603,325},{77,99}}
textureRotated
-
+
Atk1_2.png
@@ -45,7 +45,7 @@
spriteSourceSize
{112,99}
textureRect
- {{0,359},{112,99}}
+ {{407,227},{112,99}}
textureRotated
@@ -60,7 +60,7 @@
spriteSourceSize
{96,100}
textureRect
- {{240,88},{96,100}}
+ {{727,101},{96,100}}
textureRotated
@@ -75,7 +75,7 @@
spriteSourceSize
{62,92}
textureRect
- {{551,127},{62,92}}
+ {{1211,188},{62,92}}
textureRotated
@@ -90,9 +90,9 @@
spriteSourceSize
{58,97}
textureRect
- {{170,675},{58,97}}
+ {{770,402},{58,97}}
textureRotated
-
+
Atk2_1.png
@@ -105,9 +105,9 @@
spriteSourceSize
{60,90}
textureRect
- {{743,537},{60,90}}
+ {{1324,435},{60,90}}
textureRotated
-
+
Atk2_2.png
@@ -120,9 +120,9 @@
spriteSourceSize
{84,96}
textureRect
- {{920,215},{84,96}}
+ {{823,100},{84,96}}
textureRotated
-
+
Atk2_3.png
@@ -135,7 +135,7 @@
spriteSourceSize
{55,100}
textureRect
- {{302,365},{55,100}}
+ {{776,0},{55,100}}
textureRotated
@@ -150,9 +150,9 @@
spriteSourceSize
{63,100}
textureRect
- {{312,562},{63,100}}
+ {{407,339},{63,100}}
textureRotated
-
+
Atk2_5.png
@@ -165,9 +165,9 @@
spriteSourceSize
{66,101}
textureRect
- {{915,299},{66,101}}
+ {{710,0},{66,101}}
textureRotated
-
+
Atk2_6.png
@@ -180,7 +180,7 @@
spriteSourceSize
{80,95}
textureRect
- {{548,461},{80,95}}
+ {{907,96},{80,95}}
textureRotated
@@ -195,7 +195,7 @@
spriteSourceSize
{116,109}
textureRect
- {{0,0},{116,109}}
+ {{340,402},{116,109}}
textureRotated
@@ -210,7 +210,7 @@
spriteSourceSize
{102,96}
textureRect
- {{144,93},{102,96}}
+ {{646,210},{102,96}}
textureRotated
@@ -225,9 +225,9 @@
spriteSourceSize
{75,102}
textureRect
- {{170,573},{75,102}}
+ {{0,437},{75,102}}
textureRotated
-
+
Atk3_0.png
@@ -236,11 +236,11 @@
spriteOffset
{0,0}
spriteSize
- {51,131}
+ {66,109}
spriteSourceSize
- {51,131}
+ {66,109}
textureRect
- {{93,109},{51,131}}
+ {{456,402},{66,109}}
textureRotated
@@ -251,26 +251,11 @@
spriteOffset
{0,0}
spriteSize
- {53,103}
+ {66,113}
spriteSourceSize
- {53,103}
+ {66,113}
textureRect
- {{162,470},{53,103}}
- textureRotated
-
-
- Atk3_10.png
-
- aliases
-
- spriteOffset
- {0,0}
- spriteSize
- {74,100}
- spriteSourceSize
- {74,100}
- textureRect
- {{357,365},{74,100}}
+ {{403,114},{66,113}}
textureRotated
@@ -281,13 +266,13 @@
spriteOffset
{0,0}
spriteSize
- {70,109}
+ {78,151}
spriteSourceSize
- {70,109}
+ {78,151}
textureRect
- {{442,127},{70,109}}
+ {{0,0},{78,151}}
textureRotated
-
+
Atk3_3.png
@@ -296,13 +281,13 @@
spriteOffset
{0,0}
spriteSize
- {131,93}
+ {77,144}
spriteSourceSize
- {131,93}
+ {77,144}
textureRect
- {{0,109},{131,93}}
+ {{0,151},{77,144}}
textureRotated
-
+
Atk3_4.png
@@ -311,11 +296,11 @@
spriteOffset
{0,0}
spriteSize
- {89,119}
+ {78,142}
spriteSourceSize
- {89,119}
+ {78,142}
textureRect
- {{0,240},{89,119}}
+ {{0,295},{78,142}}
textureRotated
@@ -326,13 +311,13 @@
spriteOffset
{0,0}
spriteSize
- {88,119}
+ {83,139}
spriteSourceSize
- {88,119}
+ {83,139}
textureRect
- {{236,0},{88,119}}
+ {{77,151},{83,139}}
textureRotated
-
+
Atk3_6.png
@@ -341,11 +326,11 @@
spriteOffset
{0,0}
spriteSize
- {57,120}
+ {78,131}
spriteSourceSize
- {57,120}
+ {78,131}
textureRect
- {{959,0},{57,120}}
+ {{78,0},{78,131}}
textureRotated
@@ -356,11 +341,11 @@
spriteOffset
{0,0}
spriteSize
- {59,122}
+ {59,139}
spriteSourceSize
- {59,122}
+ {59,139}
textureRect
- {{243,350},{59,122}}
+ {{78,290},{59,139}}
textureRotated
@@ -371,26 +356,11 @@
spriteOffset
{0,0}
spriteSize
- {80,111}
+ {59,139}
spriteSourceSize
- {80,111}
+ {59,139}
textureRect
- {{163,350},{80,111}}
- textureRotated
-
-
- Atk3_9.png
-
- aliases
-
- spriteOffset
- {0,0}
- spriteSize
- {82,110}
- spriteSourceSize
- {82,110}
- textureRect
- {{153,240},{82,110}}
+ {{137,290},{59,139}}
textureRotated
@@ -405,7 +375,7 @@
spriteSourceSize
{62,97}
textureRect
- {{305,465},{62,97}}
+ {{708,402},{62,97}}
textureRotated
@@ -420,7 +390,7 @@
spriteSourceSize
{73,95}
textureRect
- {{943,120},{73,95}}
+ {{1001,190},{73,95}}
textureRotated
@@ -435,9 +405,9 @@
spriteSourceSize
{90,89}
textureRect
- {{706,356},{90,89}}
+ {{1260,93},{90,89}}
textureRotated
-
+
BlownUp1_0.png
@@ -450,9 +420,9 @@
spriteSourceSize
{95,80}
textureRect
- {{564,653},{95,80}}
+ {{896,394},{95,80}}
textureRotated
-
+
BlownUp1_1.png
@@ -465,7 +435,7 @@
spriteSourceSize
{80,95}
textureRect
- {{578,556},{80,95}}
+ {{976,0},{80,95}}
textureRotated
@@ -480,9 +450,9 @@
spriteSourceSize
{83,92}
textureRect
- {{623,349},{83,92}}
+ {{194,429},{83,92}}
textureRotated
-
+
BlownUp1_3.png
@@ -495,9 +465,9 @@
spriteSourceSize
{92,83}
textureRect
- {{706,445},{92,83}}
+ {{102,429},{92,83}}
textureRotated
-
+
GetUp1_0.png
@@ -510,9 +480,9 @@
spriteSourceSize
{112,45}
textureRect
- {{144,195},{112,45}}
+ {{508,0},{112,45}}
textureRotated
-
+
GetUp1_1.png
@@ -525,7 +495,7 @@
spriteSourceSize
{88,69}
textureRect
- {{355,284},{88,69}}
+ {{1236,435},{88,69}}
textureRotated
@@ -540,9 +510,9 @@
spriteSourceSize
{91,90}
textureRect
- {{215,472},{91,90}}
+ {{702,312},{91,90}}
textureRotated
-
+
GetUp1_3.png
@@ -555,9 +525,9 @@
spriteSourceSize
{120,93}
textureRect
- {{116,0},{120,93}}
+ {{254,124},{120,93}}
textureRotated
-
+
GetUp1_4.png
@@ -570,7 +540,7 @@
spriteSourceSize
{100,112}
textureRect
- {{0,471},{100,112}}
+ {{408,0},{100,112}}
textureRotated
@@ -585,7 +555,7 @@
spriteSourceSize
{106,93}
textureRect
- {{0,583},{106,93}}
+ {{553,0},{106,93}}
textureRotated
@@ -600,9 +570,9 @@
spriteSourceSize
{106,79}
textureRect
- {{336,112},{106,79}}
+ {{567,219},{106,79}}
textureRotated
-
+
GetUp1_7.png
@@ -615,7 +585,7 @@
spriteSourceSize
{73,87}
textureRect
- {{289,191},{73,87}}
+ {{1262,0},{73,87}}
textureRotated
@@ -630,9 +600,9 @@
spriteSourceSize
{67,90}
textureRect
- {{736,627},{67,90}}
+ {{1341,368},{67,90}}
textureRotated
-
+
GetUp1_9.png
@@ -645,9 +615,9 @@
spriteSourceSize
{58,97}
textureRect
- {{170,675},{58,97}}
+ {{770,402},{58,97}}
textureRotated
-
+
Idle1_0.png
@@ -660,7 +630,7 @@
spriteSourceSize
{58,95}
textureRect
- {{565,365},{58,95}}
+ {{1050,381},{58,95}}
textureRotated
@@ -675,7 +645,7 @@
spriteSourceSize
{58,97}
textureRect
- {{367,465},{58,97}}
+ {{742,201},{58,97}}
textureRotated
@@ -690,9 +660,9 @@
spriteSourceSize
{60,94}
textureRect
- {{613,204},{60,94}}
+ {{1146,284},{60,94}}
textureRotated
-
+
Idle1_2.png
@@ -705,7 +675,7 @@
spriteSourceSize
{58,97}
textureRect
- {{375,562},{58,97}}
+ {{793,298},{58,97}}
textureRotated
@@ -720,7 +690,7 @@
spriteSourceSize
{58,97}
textureRect
- {{425,465},{58,97}}
+ {{800,201},{58,97}}
textureRotated
@@ -735,9 +705,9 @@
spriteSourceSize
{60,95}
textureRect
- {{802,318},{60,95}}
+ {{1065,95},{60,95}}
textureRotated
-
+
Idle1_5.png
@@ -750,7 +720,7 @@
spriteSourceSize
{60,94}
textureRect
- {{877,533},{60,94}}
+ {{1151,189},{60,94}}
textureRotated
@@ -765,7 +735,7 @@
spriteSourceSize
{59,93}
textureRect
- {{376,191},{59,93}}
+ {{1203,0},{59,93}}
textureRotated
@@ -780,7 +750,7 @@
spriteSourceSize
{58,93}
textureRect
- {{502,266},{58,93}}
+ {{1206,283},{58,93}}
textureRotated
@@ -795,7 +765,7 @@
spriteSourceSize
{59,93}
textureRect
- {{443,266},{59,93}}
+ {{1177,378},{59,93}}
textureRotated
@@ -810,7 +780,7 @@
spriteSourceSize
{60,94}
textureRect
- {{877,627},{60,94}}
+ {{1200,94},{60,94}}
textureRotated
@@ -825,7 +795,7 @@
spriteSourceSize
{77,68}
textureRect
- {{937,652},{77,68}}
+ {{1264,341},{77,68}}
textureRotated
@@ -840,9 +810,9 @@
spriteSourceSize
{118,76}
textureRect
- {{355,0},{118,76}}
+ {{267,284},{118,76}}
textureRotated
-
+
InAirAtk1_10.png
@@ -855,9 +825,9 @@
spriteSourceSize
{104,65}
textureRect
- {{707,213},{104,65}}
+ {{595,106},{104,65}}
textureRotated
-
+
InAirAtk1_11.png
@@ -870,9 +840,9 @@
spriteSourceSize
{80,66}
textureRect
- {{289,264},{80,66}}
+ {{1349,0},{80,66}}
textureRotated
-
+
InAirAtk1_12.png
@@ -885,7 +855,7 @@
spriteSourceSize
{102,67}
textureRect
- {{245,563},{102,67}}
+ {{660,104},{102,67}}
textureRotated
@@ -900,7 +870,7 @@
spriteSourceSize
{79,66}
textureRect
- {{937,365},{79,66}}
+ {{1349,66},{79,66}}
textureRotated
@@ -915,9 +885,9 @@
spriteSourceSize
{124,64}
textureRect
- {{711,0},{124,64}}
+ {{156,0},{124,64}}
textureRotated
-
+
InAirAtk1_4.png
@@ -930,9 +900,9 @@
spriteSourceSize
{104,64}
textureRect
- {{811,254},{104,64}}
+ {{646,0},{104,64}}
textureRotated
-
+
InAirAtk1_5.png
@@ -945,7 +915,7 @@
spriteSourceSize
{79,61}
textureRect
- {{937,497},{79,61}}
+ {{1264,280},{79,61}}
textureRotated
@@ -960,9 +930,9 @@
spriteSourceSize
{124,64}
textureRect
- {{835,0},{124,64}}
+ {{160,124},{124,64}}
textureRotated
-
+
InAirAtk1_7.png
@@ -975,9 +945,9 @@
spriteSourceSize
{106,67}
textureRect
- {{814,187},{106,67}}
+ {{641,402},{106,67}}
textureRotated
-
+
InAirAtk1_8.png
@@ -990,7 +960,7 @@
spriteSourceSize
{79,66}
textureRect
- {{937,431},{79,66}}
+ {{1349,132},{79,66}}
textureRotated
@@ -1005,7 +975,7 @@
spriteSourceSize
{118,64}
textureRect
- {{89,240},{118,64}}
+ {{343,244},{118,64}}
textureRotated
@@ -1020,9 +990,9 @@
spriteSourceSize
{71,119}
textureRect
- {{473,0},{71,119}}
+ {{282,0},{71,119}}
textureRotated
-
+
InAirIdle1_1.png
@@ -1035,9 +1005,9 @@
spriteSourceSize
{71,119}
textureRect
- {{592,0},{71,119}}
+ {{196,284},{71,119}}
textureRotated
-
+
InAirIdle1_10.png
@@ -1050,9 +1020,9 @@
spriteSourceSize
{55,114}
textureRect
- {{593,71},{55,114}}
+ {{353,0},{55,114}}
textureRotated
-
+
InAirIdle1_11.png
@@ -1065,7 +1035,7 @@
spriteSourceSize
{62,124}
textureRect
- {{100,470},{62,124}}
+ {{220,0},{62,124}}
textureRotated
@@ -1080,7 +1050,7 @@
spriteSourceSize
{74,90}
textureRect
- {{803,628},{74,90}}
+ {{1273,183},{74,90}}
textureRotated
@@ -1095,7 +1065,7 @@
spriteSourceSize
{110,54}
textureRect
- {{235,240},{110,54}}
+ {{286,402},{110,54}}
textureRotated
@@ -1110,9 +1080,9 @@
spriteSourceSize
{85,88}
textureRect
- {{658,537},{85,88}}
+ {{1343,283},{85,88}}
textureRotated
-
+
InAirIdle1_5.png
@@ -1125,7 +1095,7 @@
spriteSourceSize
{64,112}
textureRect
- {{99,358},{64,112}}
+ {{469,112},{64,112}}
textureRotated
@@ -1140,9 +1110,9 @@
spriteSourceSize
{62,107}
textureRect
- {{707,151},{62,107}}
+ {{533,112},{62,107}}
textureRotated
-
+
InAirIdle1_7.png
@@ -1155,7 +1125,7 @@
spriteSourceSize
{85,84}
textureRect
- {{623,264},{85,84}}
+ {{1347,198},{85,84}}
textureRotated
@@ -1170,9 +1140,9 @@
spriteSourceSize
{109,61}
textureRect
- {{834,64},{109,61}}
+ {{506,224},{109,61}}
textureRotated
-
+
InAirIdle1_9.png
@@ -1185,9 +1155,9 @@
spriteSourceSize
{78,95}
textureRect
- {{707,278},{78,95}}
+ {{916,292},{78,95}}
textureRotated
-
+
LayDown1_0.png
@@ -1200,9 +1170,9 @@
spriteSourceSize
{115,56}
textureRect
- {{478,71},{115,56}}
+ {{347,119},{115,56}}
textureRotated
-
+
LayDown1_1.png
@@ -1215,9 +1185,9 @@
spriteSourceSize
{109,57}
textureRect
- {{707,94},{109,57}}
+ {{522,402},{109,57}}
textureRotated
-
+
LayDown1_2.png
@@ -1230,9 +1200,9 @@
spriteSourceSize
{108,62}
textureRect
- {{816,125},{108,62}}
+ {{579,402},{108,62}}
textureRotated
-
+
LayDown1_3.png
@@ -1245,7 +1215,7 @@
spriteSourceSize
{123,36}
textureRect
- {{355,76},{123,36}}
+ {{160,248},{123,36}}
textureRotated
@@ -1260,9 +1230,9 @@
spriteSourceSize
{123,30}
textureRect
- {{711,64},{123,30}}
+ {{224,124},{123,30}}
textureRotated
-
+
Walking_0.png
@@ -1275,7 +1245,7 @@
spriteSourceSize
{78,95}
textureRect
- {{628,441},{78,95}}
+ {{923,191},{78,95}}
textureRotated
@@ -1290,7 +1260,7 @@
spriteSourceSize
{75,96}
textureRect
- {{433,562},{75,96}}
+ {{831,0},{75,96}}
textureRotated
@@ -1305,7 +1275,7 @@
spriteSourceSize
{65,96}
textureRect
- {{431,365},{65,96}}
+ {{851,298},{65,96}}
textureRotated
@@ -1320,7 +1290,7 @@
spriteSourceSize
{65,96}
textureRect
- {{483,461},{65,96}}
+ {{858,196},{65,96}}
textureRotated
@@ -1335,9 +1305,9 @@
spriteSourceSize
{74,95}
textureRect
- {{375,659},{74,95}}
+ {{976,387},{74,95}}
textureRotated
-
+
Walking_13.png
@@ -1350,9 +1320,9 @@
spriteSourceSize
{75,94}
textureRect
- {{470,658},{75,94}}
+ {{1125,95},{75,94}}
textureRotated
-
+
Walking_14.png
@@ -1365,7 +1335,7 @@
spriteSourceSize
{70,94}
textureRect
- {{937,558},{70,94}}
+ {{1133,0},{70,94}}
textureRotated
@@ -1380,9 +1350,9 @@
spriteSourceSize
{78,94}
textureRect
- {{613,126},{78,94}}
+ {{1068,285},{78,94}}
textureRotated
-
+
Walking_2.png
@@ -1395,9 +1365,9 @@
spriteSourceSize
{69,96}
textureRect
- {{496,365},{69,96}}
+ {{507,333},{69,96}}
textureRotated
-
+
Walking_3.png
@@ -1410,7 +1380,7 @@
spriteSourceSize
{70,96}
textureRect
- {{508,557},{70,96}}
+ {{906,0},{70,96}}
textureRotated
@@ -1425,9 +1395,9 @@
spriteSourceSize
{78,95}
textureRect
- {{796,378},{78,95}}
+ {{987,95},{78,95}}
textureRotated
-
+
Walking_5.png
@@ -1440,9 +1410,9 @@
spriteSourceSize
{77,95}
textureRect
- {{789,456},{77,95}}
+ {{1056,0},{77,95}}
textureRotated
-
+
Walking_6.png
@@ -1455,9 +1425,9 @@
spriteSourceSize
{69,94}
textureRect
- {{435,197},{69,94}}
+ {{1108,379},{69,94}}
textureRotated
-
+
Walking_7.png
@@ -1470,7 +1440,7 @@
spriteSourceSize
{77,94}
textureRect
- {{659,625},{77,94}}
+ {{1074,190},{77,94}}
textureRotated
@@ -1485,7 +1455,7 @@
spriteSourceSize
{74,95}
textureRect
- {{803,533},{74,95}}
+ {{994,286},{74,95}}
textureRotated
@@ -1500,9 +1470,9 @@
spriteSourceSize
{68,96}
textureRect
- {{267,665},{68,96}}
+ {{828,395},{68,96}}
textureRotated
-
+
metadata
@@ -1516,9 +1486,9 @@
realTextureFileName
MonkGirl.png
size
- {1016,733}
+ {1431,512}
smartupdate
- $TexturePacker:SmartUpdate:278efbee9ca246d0ea7209b427040c71:0ee1cca010fb9c74ab24ae28995c20de:7b088363a1f16e4f4ff313aecc52227b$
+ $TexturePacker:SmartUpdate:b61c8127138360fc5127f38c3072d44e:e6a91336f913f21d08fc641d99741429:7b088363a1f16e4f4ff313aecc52227b$
textureFileName
MonkGirl.png
diff --git a/frontend/assets/resources/animation/MonkGirl/MonkGirl.plist.meta b/frontend/assets/resources/animation/MonkGirl/MonkGirl.plist.meta
index 2b6411b..d76ba3e 100644
--- a/frontend/assets/resources/animation/MonkGirl/MonkGirl.plist.meta
+++ b/frontend/assets/resources/animation/MonkGirl/MonkGirl.plist.meta
@@ -3,8 +3,8 @@
"uuid": "725c90f9-56f8-48ea-9159-4d2949cd3ce0",
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"size": {
- "width": 1016,
- "height": 733
+ "width": 1431,
+ "height": 512
},
"type": "Texture Packer",
"subMetas": {
@@ -17,8 +17,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 551,
- "trimY": 127,
+ "trimX": 1211,
+ "trimY": 188,
"width": 62,
"height": 92,
"rawWidth": 62,
@@ -36,11 +36,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 93,
- "trimY": 594,
+ "trimX": 603,
+ "trimY": 325,
"width": 77,
"height": 99,
"rawWidth": 77,
@@ -61,8 +61,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 0,
- "trimY": 359,
+ "trimX": 407,
+ "trimY": 227,
"width": 112,
"height": 99,
"rawWidth": 112,
@@ -83,8 +83,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 240,
- "trimY": 88,
+ "trimX": 727,
+ "trimY": 101,
"width": 96,
"height": 100,
"rawWidth": 96,
@@ -105,8 +105,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 551,
- "trimY": 127,
+ "trimX": 1211,
+ "trimY": 188,
"width": 62,
"height": 92,
"rawWidth": 62,
@@ -124,11 +124,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 170,
- "trimY": 675,
+ "trimX": 770,
+ "trimY": 402,
"width": 58,
"height": 97,
"rawWidth": 58,
@@ -146,11 +146,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 743,
- "trimY": 537,
+ "trimX": 1324,
+ "trimY": 435,
"width": 60,
"height": 90,
"rawWidth": 60,
@@ -168,11 +168,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 920,
- "trimY": 215,
+ "trimX": 823,
+ "trimY": 100,
"width": 84,
"height": 96,
"rawWidth": 84,
@@ -193,8 +193,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 302,
- "trimY": 365,
+ "trimX": 776,
+ "trimY": 0,
"width": 55,
"height": 100,
"rawWidth": 55,
@@ -212,11 +212,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 312,
- "trimY": 562,
+ "trimX": 407,
+ "trimY": 339,
"width": 63,
"height": 100,
"rawWidth": 63,
@@ -234,11 +234,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 915,
- "trimY": 299,
+ "trimX": 710,
+ "trimY": 0,
"width": 66,
"height": 101,
"rawWidth": 66,
@@ -259,8 +259,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 548,
- "trimY": 461,
+ "trimX": 907,
+ "trimY": 96,
"width": 80,
"height": 95,
"rawWidth": 80,
@@ -281,8 +281,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 0,
- "trimY": 0,
+ "trimX": 340,
+ "trimY": 402,
"width": 116,
"height": 109,
"rawWidth": 116,
@@ -303,8 +303,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 144,
- "trimY": 93,
+ "trimX": 646,
+ "trimY": 210,
"width": 102,
"height": 96,
"rawWidth": 102,
@@ -322,11 +322,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 170,
- "trimY": 573,
+ "trimX": 0,
+ "trimY": 437,
"width": 75,
"height": 102,
"rawWidth": 75,
@@ -347,12 +347,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 93,
- "trimY": 109,
- "width": 51,
- "height": 131,
- "rawWidth": 51,
- "rawHeight": 131,
+ "trimX": 456,
+ "trimY": 402,
+ "width": 66,
+ "height": 109,
+ "rawWidth": 66,
+ "rawHeight": 109,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -369,34 +369,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 162,
- "trimY": 470,
- "width": 53,
- "height": 103,
- "rawWidth": 53,
- "rawHeight": 103,
- "borderTop": 0,
- "borderBottom": 0,
- "borderLeft": 0,
- "borderRight": 0,
- "spriteType": "normal",
- "subMetas": {}
- },
- "Atk3_10.png": {
- "ver": "1.0.4",
- "uuid": "4e1a3e61-dc3e-4de1-9385-bce2c5f54764",
- "rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
- "trimType": "auto",
- "trimThreshold": 1,
- "rotated": false,
- "offsetX": 0,
- "offsetY": 0,
- "trimX": 357,
- "trimY": 365,
- "width": 74,
- "height": 100,
- "rawWidth": 74,
- "rawHeight": 100,
+ "trimX": 403,
+ "trimY": 114,
+ "width": 66,
+ "height": 113,
+ "rawWidth": 66,
+ "rawHeight": 113,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -410,15 +388,15 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 442,
- "trimY": 127,
- "width": 70,
- "height": 109,
- "rawWidth": 70,
- "rawHeight": 109,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 78,
+ "height": 151,
+ "rawWidth": 78,
+ "rawHeight": 151,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -432,15 +410,15 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
- "trimY": 109,
- "width": 131,
- "height": 93,
- "rawWidth": 131,
- "rawHeight": 93,
+ "trimY": 151,
+ "width": 77,
+ "height": 144,
+ "rawWidth": 77,
+ "rawHeight": 144,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -458,11 +436,11 @@
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
- "trimY": 240,
- "width": 89,
- "height": 119,
- "rawWidth": 89,
- "rawHeight": 119,
+ "trimY": 295,
+ "width": 78,
+ "height": 142,
+ "rawWidth": 78,
+ "rawHeight": 142,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -476,15 +454,15 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 236,
- "trimY": 0,
- "width": 88,
- "height": 119,
- "rawWidth": 88,
- "rawHeight": 119,
+ "trimX": 77,
+ "trimY": 151,
+ "width": 83,
+ "height": 139,
+ "rawWidth": 83,
+ "rawHeight": 139,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -501,12 +479,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 959,
+ "trimX": 78,
"trimY": 0,
- "width": 57,
- "height": 120,
- "rawWidth": 57,
- "rawHeight": 120,
+ "width": 78,
+ "height": 131,
+ "rawWidth": 78,
+ "rawHeight": 131,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -523,12 +501,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 243,
- "trimY": 350,
+ "trimX": 78,
+ "trimY": 290,
"width": 59,
- "height": 122,
+ "height": 139,
"rawWidth": 59,
- "rawHeight": 122,
+ "rawHeight": 139,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -545,34 +523,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 163,
- "trimY": 350,
- "width": 80,
- "height": 111,
- "rawWidth": 80,
- "rawHeight": 111,
- "borderTop": 0,
- "borderBottom": 0,
- "borderLeft": 0,
- "borderRight": 0,
- "spriteType": "normal",
- "subMetas": {}
- },
- "Atk3_9.png": {
- "ver": "1.0.4",
- "uuid": "11a06f33-cdfa-46cf-aae4-41e72a6711c2",
- "rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
- "trimType": "auto",
- "trimThreshold": 1,
- "rotated": false,
- "offsetX": 0,
- "offsetY": 0,
- "trimX": 153,
- "trimY": 240,
- "width": 82,
- "height": 110,
- "rawWidth": 82,
- "rawHeight": 110,
+ "trimX": 137,
+ "trimY": 290,
+ "width": 59,
+ "height": 139,
+ "rawWidth": 59,
+ "rawHeight": 139,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -589,8 +545,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 305,
- "trimY": 465,
+ "trimX": 708,
+ "trimY": 402,
"width": 62,
"height": 97,
"rawWidth": 62,
@@ -611,8 +567,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 943,
- "trimY": 120,
+ "trimX": 1001,
+ "trimY": 190,
"width": 73,
"height": 95,
"rawWidth": 73,
@@ -630,11 +586,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 706,
- "trimY": 356,
+ "trimX": 1260,
+ "trimY": 93,
"width": 90,
"height": 89,
"rawWidth": 90,
@@ -652,11 +608,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 564,
- "trimY": 653,
+ "trimX": 896,
+ "trimY": 394,
"width": 95,
"height": 80,
"rawWidth": 95,
@@ -677,8 +633,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 578,
- "trimY": 556,
+ "trimX": 976,
+ "trimY": 0,
"width": 80,
"height": 95,
"rawWidth": 80,
@@ -696,11 +652,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 623,
- "trimY": 349,
+ "trimX": 194,
+ "trimY": 429,
"width": 83,
"height": 92,
"rawWidth": 83,
@@ -718,11 +674,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 706,
- "trimY": 445,
+ "trimX": 102,
+ "trimY": 429,
"width": 92,
"height": 83,
"rawWidth": 92,
@@ -740,11 +696,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 144,
- "trimY": 195,
+ "trimX": 508,
+ "trimY": 0,
"width": 112,
"height": 45,
"rawWidth": 112,
@@ -765,8 +721,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 355,
- "trimY": 284,
+ "trimX": 1236,
+ "trimY": 435,
"width": 88,
"height": 69,
"rawWidth": 88,
@@ -784,11 +740,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 215,
- "trimY": 472,
+ "trimX": 702,
+ "trimY": 312,
"width": 91,
"height": 90,
"rawWidth": 91,
@@ -806,11 +762,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 116,
- "trimY": 0,
+ "trimX": 254,
+ "trimY": 124,
"width": 120,
"height": 93,
"rawWidth": 120,
@@ -831,8 +787,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 0,
- "trimY": 471,
+ "trimX": 408,
+ "trimY": 0,
"width": 100,
"height": 112,
"rawWidth": 100,
@@ -853,8 +809,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 0,
- "trimY": 583,
+ "trimX": 553,
+ "trimY": 0,
"width": 106,
"height": 93,
"rawWidth": 106,
@@ -872,11 +828,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 336,
- "trimY": 112,
+ "trimX": 567,
+ "trimY": 219,
"width": 106,
"height": 79,
"rawWidth": 106,
@@ -897,8 +853,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 289,
- "trimY": 191,
+ "trimX": 1262,
+ "trimY": 0,
"width": 73,
"height": 87,
"rawWidth": 73,
@@ -916,11 +872,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 736,
- "trimY": 627,
+ "trimX": 1341,
+ "trimY": 368,
"width": 67,
"height": 90,
"rawWidth": 67,
@@ -938,11 +894,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 170,
- "trimY": 675,
+ "trimX": 770,
+ "trimY": 402,
"width": 58,
"height": 97,
"rawWidth": 58,
@@ -963,8 +919,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 565,
- "trimY": 365,
+ "trimX": 1050,
+ "trimY": 381,
"width": 58,
"height": 95,
"rawWidth": 58,
@@ -985,8 +941,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 367,
- "trimY": 465,
+ "trimX": 742,
+ "trimY": 201,
"width": 58,
"height": 97,
"rawWidth": 58,
@@ -1004,11 +960,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 613,
- "trimY": 204,
+ "trimX": 1146,
+ "trimY": 284,
"width": 60,
"height": 94,
"rawWidth": 60,
@@ -1029,8 +985,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 375,
- "trimY": 562,
+ "trimX": 793,
+ "trimY": 298,
"width": 58,
"height": 97,
"rawWidth": 58,
@@ -1051,8 +1007,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 425,
- "trimY": 465,
+ "trimX": 800,
+ "trimY": 201,
"width": 58,
"height": 97,
"rawWidth": 58,
@@ -1070,11 +1026,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 802,
- "trimY": 318,
+ "trimX": 1065,
+ "trimY": 95,
"width": 60,
"height": 95,
"rawWidth": 60,
@@ -1095,8 +1051,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 877,
- "trimY": 533,
+ "trimX": 1151,
+ "trimY": 189,
"width": 60,
"height": 94,
"rawWidth": 60,
@@ -1117,8 +1073,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 376,
- "trimY": 191,
+ "trimX": 1203,
+ "trimY": 0,
"width": 59,
"height": 93,
"rawWidth": 59,
@@ -1139,8 +1095,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 502,
- "trimY": 266,
+ "trimX": 1206,
+ "trimY": 283,
"width": 58,
"height": 93,
"rawWidth": 58,
@@ -1161,8 +1117,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 443,
- "trimY": 266,
+ "trimX": 1177,
+ "trimY": 378,
"width": 59,
"height": 93,
"rawWidth": 59,
@@ -1183,8 +1139,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 877,
- "trimY": 627,
+ "trimX": 1200,
+ "trimY": 94,
"width": 60,
"height": 94,
"rawWidth": 60,
@@ -1205,8 +1161,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 937,
- "trimY": 652,
+ "trimX": 1264,
+ "trimY": 341,
"width": 77,
"height": 68,
"rawWidth": 77,
@@ -1224,11 +1180,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 355,
- "trimY": 0,
+ "trimX": 267,
+ "trimY": 284,
"width": 118,
"height": 76,
"rawWidth": 118,
@@ -1246,11 +1202,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 707,
- "trimY": 213,
+ "trimX": 595,
+ "trimY": 106,
"width": 104,
"height": 65,
"rawWidth": 104,
@@ -1268,11 +1224,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 289,
- "trimY": 264,
+ "trimX": 1349,
+ "trimY": 0,
"width": 80,
"height": 66,
"rawWidth": 80,
@@ -1293,8 +1249,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 245,
- "trimY": 563,
+ "trimX": 660,
+ "trimY": 104,
"width": 102,
"height": 67,
"rawWidth": 102,
@@ -1315,8 +1271,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 937,
- "trimY": 365,
+ "trimX": 1349,
+ "trimY": 66,
"width": 79,
"height": 66,
"rawWidth": 79,
@@ -1334,10 +1290,10 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 711,
+ "trimX": 156,
"trimY": 0,
"width": 124,
"height": 64,
@@ -1356,11 +1312,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 811,
- "trimY": 254,
+ "trimX": 646,
+ "trimY": 0,
"width": 104,
"height": 64,
"rawWidth": 104,
@@ -1381,8 +1337,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 937,
- "trimY": 497,
+ "trimX": 1264,
+ "trimY": 280,
"width": 79,
"height": 61,
"rawWidth": 79,
@@ -1400,11 +1356,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 835,
- "trimY": 0,
+ "trimX": 160,
+ "trimY": 124,
"width": 124,
"height": 64,
"rawWidth": 124,
@@ -1422,11 +1378,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 814,
- "trimY": 187,
+ "trimX": 641,
+ "trimY": 402,
"width": 106,
"height": 67,
"rawWidth": 106,
@@ -1447,8 +1403,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 937,
- "trimY": 431,
+ "trimX": 1349,
+ "trimY": 132,
"width": 79,
"height": 66,
"rawWidth": 79,
@@ -1469,8 +1425,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 89,
- "trimY": 240,
+ "trimX": 343,
+ "trimY": 244,
"width": 118,
"height": 64,
"rawWidth": 118,
@@ -1488,10 +1444,10 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 473,
+ "trimX": 282,
"trimY": 0,
"width": 71,
"height": 119,
@@ -1510,11 +1466,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 592,
- "trimY": 0,
+ "trimX": 196,
+ "trimY": 284,
"width": 71,
"height": 119,
"rawWidth": 71,
@@ -1532,11 +1488,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 593,
- "trimY": 71,
+ "trimX": 353,
+ "trimY": 0,
"width": 55,
"height": 114,
"rawWidth": 55,
@@ -1557,8 +1513,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 100,
- "trimY": 470,
+ "trimX": 220,
+ "trimY": 0,
"width": 62,
"height": 124,
"rawWidth": 62,
@@ -1579,8 +1535,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 803,
- "trimY": 628,
+ "trimX": 1273,
+ "trimY": 183,
"width": 74,
"height": 90,
"rawWidth": 74,
@@ -1601,8 +1557,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 235,
- "trimY": 240,
+ "trimX": 286,
+ "trimY": 402,
"width": 110,
"height": 54,
"rawWidth": 110,
@@ -1620,11 +1576,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 658,
- "trimY": 537,
+ "trimX": 1343,
+ "trimY": 283,
"width": 85,
"height": 88,
"rawWidth": 85,
@@ -1645,8 +1601,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 99,
- "trimY": 358,
+ "trimX": 469,
+ "trimY": 112,
"width": 64,
"height": 112,
"rawWidth": 64,
@@ -1664,11 +1620,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 707,
- "trimY": 151,
+ "trimX": 533,
+ "trimY": 112,
"width": 62,
"height": 107,
"rawWidth": 62,
@@ -1689,8 +1645,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 623,
- "trimY": 264,
+ "trimX": 1347,
+ "trimY": 198,
"width": 85,
"height": 84,
"rawWidth": 85,
@@ -1708,11 +1664,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 834,
- "trimY": 64,
+ "trimX": 506,
+ "trimY": 224,
"width": 109,
"height": 61,
"rawWidth": 109,
@@ -1730,11 +1686,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 707,
- "trimY": 278,
+ "trimX": 916,
+ "trimY": 292,
"width": 78,
"height": 95,
"rawWidth": 78,
@@ -1752,11 +1708,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 478,
- "trimY": 71,
+ "trimX": 347,
+ "trimY": 119,
"width": 115,
"height": 56,
"rawWidth": 115,
@@ -1774,11 +1730,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 707,
- "trimY": 94,
+ "trimX": 522,
+ "trimY": 402,
"width": 109,
"height": 57,
"rawWidth": 109,
@@ -1796,11 +1752,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 816,
- "trimY": 125,
+ "trimX": 579,
+ "trimY": 402,
"width": 108,
"height": 62,
"rawWidth": 108,
@@ -1821,8 +1777,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 355,
- "trimY": 76,
+ "trimX": 160,
+ "trimY": 248,
"width": 123,
"height": 36,
"rawWidth": 123,
@@ -1840,11 +1796,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 711,
- "trimY": 64,
+ "trimX": 224,
+ "trimY": 124,
"width": 123,
"height": 30,
"rawWidth": 123,
@@ -1865,8 +1821,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 628,
- "trimY": 441,
+ "trimX": 923,
+ "trimY": 191,
"width": 78,
"height": 95,
"rawWidth": 78,
@@ -1887,8 +1843,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 433,
- "trimY": 562,
+ "trimX": 831,
+ "trimY": 0,
"width": 75,
"height": 96,
"rawWidth": 75,
@@ -1909,8 +1865,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 431,
- "trimY": 365,
+ "trimX": 851,
+ "trimY": 298,
"width": 65,
"height": 96,
"rawWidth": 65,
@@ -1931,8 +1887,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 483,
- "trimY": 461,
+ "trimX": 858,
+ "trimY": 196,
"width": 65,
"height": 96,
"rawWidth": 65,
@@ -1950,11 +1906,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 375,
- "trimY": 659,
+ "trimX": 976,
+ "trimY": 387,
"width": 74,
"height": 95,
"rawWidth": 74,
@@ -1972,11 +1928,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 470,
- "trimY": 658,
+ "trimX": 1125,
+ "trimY": 95,
"width": 75,
"height": 94,
"rawWidth": 75,
@@ -1997,8 +1953,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 937,
- "trimY": 558,
+ "trimX": 1133,
+ "trimY": 0,
"width": 70,
"height": 94,
"rawWidth": 70,
@@ -2016,11 +1972,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 613,
- "trimY": 126,
+ "trimX": 1068,
+ "trimY": 285,
"width": 78,
"height": 94,
"rawWidth": 78,
@@ -2038,11 +1994,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 496,
- "trimY": 365,
+ "trimX": 507,
+ "trimY": 333,
"width": 69,
"height": 96,
"rawWidth": 69,
@@ -2063,8 +2019,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 508,
- "trimY": 557,
+ "trimX": 906,
+ "trimY": 0,
"width": 70,
"height": 96,
"rawWidth": 70,
@@ -2082,11 +2038,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 796,
- "trimY": 378,
+ "trimX": 987,
+ "trimY": 95,
"width": 78,
"height": 95,
"rawWidth": 78,
@@ -2104,11 +2060,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 789,
- "trimY": 456,
+ "trimX": 1056,
+ "trimY": 0,
"width": 77,
"height": 95,
"rawWidth": 77,
@@ -2126,11 +2082,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 435,
- "trimY": 197,
+ "trimX": 1108,
+ "trimY": 379,
"width": 69,
"height": 94,
"rawWidth": 69,
@@ -2151,8 +2107,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 659,
- "trimY": 625,
+ "trimX": 1074,
+ "trimY": 190,
"width": 77,
"height": 94,
"rawWidth": 77,
@@ -2173,8 +2129,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 803,
- "trimY": 533,
+ "trimX": 994,
+ "trimY": 286,
"width": 74,
"height": 95,
"rawWidth": 74,
@@ -2192,11 +2148,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 267,
- "trimY": 665,
+ "trimX": 828,
+ "trimY": 395,
"width": 68,
"height": 96,
"rawWidth": 68,
diff --git a/frontend/assets/resources/animation/MonkGirl/MonkGirl.png b/frontend/assets/resources/animation/MonkGirl/MonkGirl.png
index dc9467c..9c31fbd 100644
Binary files a/frontend/assets/resources/animation/MonkGirl/MonkGirl.png and b/frontend/assets/resources/animation/MonkGirl/MonkGirl.png differ
diff --git a/frontend/assets/resources/prefabs/ControlledCharacter.prefab b/frontend/assets/resources/prefabs/ControlledCharacter.prefab
index 1e75df0..f768285 100644
--- a/frontend/assets/resources/prefabs/ControlledCharacter.prefab
+++ b/frontend/assets/resources/prefabs/ControlledCharacter.prefab
@@ -33,14 +33,14 @@
"_active": true,
"_components": [
{
- "__id__": 27
+ "__id__": 21
},
{
- "__id__": 28
+ "__id__": 22
}
],
"_prefab": {
- "__id__": 29
+ "__id__": 23
},
"_opacity": 255,
"_color": {
@@ -489,19 +489,13 @@
"__id__": 12
},
{
- "__id__": 15
- },
- {
- "__id__": 18
- },
- {
- "__id__": 22
+ "__id__": 16
}
],
"_active": true,
"_components": [],
"_prefab": {
- "__id__": 26
+ "__id__": 20
},
"_opacity": 255,
"_color": {
@@ -550,381 +544,6 @@
"groupIndex": 0,
"_id": ""
},
- {
- "__type__": "cc.Node",
- "_name": "SoldierWaterGhost",
- "_objFlags": 0,
- "_parent": {
- "__id__": 11
- },
- "_children": [],
- "_active": false,
- "_components": [
- {
- "__id__": 13
- }
- ],
- "_prefab": {
- "__id__": 14
- },
- "_opacity": 255,
- "_color": {
- "__type__": "cc.Color",
- "r": 255,
- "g": 255,
- "b": 255,
- "a": 255
- },
- "_contentSize": {
- "__type__": "cc.Size",
- "width": 0,
- "height": 0
- },
- "_anchorPoint": {
- "__type__": "cc.Vec2",
- "x": 0.5,
- "y": 0.5
- },
- "_trs": {
- "__type__": "TypedArray",
- "ctor": "Float64Array",
- "array": [
- 0,
- -24,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ]
- },
- "_eulerAngles": {
- "__type__": "cc.Vec3",
- "x": 0,
- "y": 0,
- "z": 0
- },
- "_skewX": 0,
- "_skewY": 0,
- "_is3DNode": false,
- "_groupIndex": 0,
- "groupIndex": 0,
- "_id": ""
- },
- {
- "__type__": "dragonBones.ArmatureDisplay",
- "_name": "",
- "_objFlags": 0,
- "node": {
- "__id__": 12
- },
- "_enabled": true,
- "_materials": [
- {
- "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
- }
- ],
- "_armatureName": "SoldierWaterGhost",
- "_animationName": "Idle1",
- "_preCacheMode": 0,
- "_cacheMode": 0,
- "playTimes": -1,
- "premultipliedAlpha": false,
- "_armatureKey": "2ae76843-1f61-48cf-bbfb-384c0dcf77e1#e9e703e9-3589-4713-b889-28b23406d220",
- "_accTime": 0,
- "_playCount": 0,
- "_frameCache": null,
- "_curFrame": null,
- "_playing": false,
- "_armatureCache": null,
- "_N$dragonAsset": {
- "__uuid__": "2ae76843-1f61-48cf-bbfb-384c0dcf77e1"
- },
- "_N$dragonAtlasAsset": {
- "__uuid__": "e9e703e9-3589-4713-b889-28b23406d220"
- },
- "_N$_defaultArmatureIndex": 0,
- "_N$_animationIndex": 8,
- "_N$_defaultCacheMode": 0,
- "_N$timeScale": 1,
- "_N$debugBones": false,
- "_N$enableBatch": false,
- "_id": ""
- },
- {
- "__type__": "cc.PrefabInfo",
- "root": {
- "__id__": 1
- },
- "asset": {
- "__uuid__": "59bff7a2-23e1-4d69-bce7-afb37eae196a"
- },
- "fileId": "42Rmp/YOdMOYWzJwr3ET1h",
- "sync": false
- },
- {
- "__type__": "cc.Node",
- "_name": "SoldierFireGhost",
- "_objFlags": 0,
- "_parent": {
- "__id__": 11
- },
- "_children": [],
- "_active": false,
- "_components": [
- {
- "__id__": 16
- }
- ],
- "_prefab": {
- "__id__": 17
- },
- "_opacity": 255,
- "_color": {
- "__type__": "cc.Color",
- "r": 255,
- "g": 255,
- "b": 255,
- "a": 255
- },
- "_contentSize": {
- "__type__": "cc.Size",
- "width": 0,
- "height": 0
- },
- "_anchorPoint": {
- "__type__": "cc.Vec2",
- "x": 0.5,
- "y": 0.5
- },
- "_trs": {
- "__type__": "TypedArray",
- "ctor": "Float64Array",
- "array": [
- 0,
- -24,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1
- ]
- },
- "_eulerAngles": {
- "__type__": "cc.Vec3",
- "x": 0,
- "y": 0,
- "z": 0
- },
- "_skewX": 0,
- "_skewY": 0,
- "_is3DNode": false,
- "_groupIndex": 0,
- "groupIndex": 0,
- "_id": ""
- },
- {
- "__type__": "dragonBones.ArmatureDisplay",
- "_name": "",
- "_objFlags": 0,
- "node": {
- "__id__": 15
- },
- "_enabled": true,
- "_materials": [
- {
- "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
- }
- ],
- "_armatureName": "SoldierFireGhost",
- "_animationName": "Idle1",
- "_preCacheMode": 0,
- "_cacheMode": 0,
- "playTimes": -1,
- "premultipliedAlpha": false,
- "_armatureKey": "36230012-8df3-4e85-afad-76ec47d0e4d7#4a9187d5-a9ad-4464-a03c-d2f3cc277051",
- "_accTime": 0,
- "_playCount": 0,
- "_frameCache": null,
- "_curFrame": null,
- "_playing": false,
- "_armatureCache": null,
- "_N$dragonAsset": {
- "__uuid__": "36230012-8df3-4e85-afad-76ec47d0e4d7"
- },
- "_N$dragonAtlasAsset": {
- "__uuid__": "4a9187d5-a9ad-4464-a03c-d2f3cc277051"
- },
- "_N$_defaultArmatureIndex": 0,
- "_N$_animationIndex": 8,
- "_N$_defaultCacheMode": 0,
- "_N$timeScale": 1,
- "_N$debugBones": false,
- "_N$enableBatch": false,
- "_id": ""
- },
- {
- "__type__": "cc.PrefabInfo",
- "root": {
- "__id__": 1
- },
- "asset": {
- "__uuid__": "59bff7a2-23e1-4d69-bce7-afb37eae196a"
- },
- "fileId": "3b2LJFABVL7ozO2U81FC4U",
- "sync": false
- },
- {
- "__type__": "cc.Node",
- "_name": "UltramanTiga",
- "_objFlags": 0,
- "_parent": {
- "__id__": 11
- },
- "_children": [],
- "_active": false,
- "_components": [
- {
- "__id__": 19
- },
- {
- "__id__": 20
- }
- ],
- "_prefab": {
- "__id__": 21
- },
- "_opacity": 255,
- "_color": {
- "__type__": "cc.Color",
- "r": 255,
- "g": 255,
- "b": 255,
- "a": 255
- },
- "_contentSize": {
- "__type__": "cc.Size",
- "width": 1425,
- "height": 1024
- },
- "_anchorPoint": {
- "__type__": "cc.Vec2",
- "x": 0.5,
- "y": 0.5
- },
- "_trs": {
- "__type__": "TypedArray",
- "ctor": "Float64Array",
- "array": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0.7,
- 0.7,
- 1
- ]
- },
- "_eulerAngles": {
- "__type__": "cc.Vec3",
- "x": 0,
- "y": 0,
- "z": 0
- },
- "_skewX": 0,
- "_skewY": 0,
- "_is3DNode": false,
- "_groupIndex": 0,
- "groupIndex": 0,
- "_id": ""
- },
- {
- "__type__": "cc.Animation",
- "_name": "",
- "_objFlags": 0,
- "node": {
- "__id__": 18
- },
- "_enabled": true,
- "_defaultClip": null,
- "_clips": [
- {
- "__uuid__": "252b321f-81f4-485c-85bd-ea44d298cb76"
- },
- {
- "__uuid__": "f51bb583-0010-48f3-a6a1-451a78ac2d65"
- },
- {
- "__uuid__": "c738236a-0702-45f8-aa38-99457b051997"
- },
- {
- "__uuid__": "c69bcceb-d7d1-4e33-9623-e2a374a0a6b6"
- },
- {
- "__uuid__": "43dbf141-be76-48c3-bdef-29233ccbe30d"
- },
- {
- "__uuid__": "8710591c-3f5e-4911-83e7-42cc18be6af9"
- },
- {
- "__uuid__": "c69bcceb-d7d1-4e33-9623-e2a374a0a6b6"
- }
- ],
- "playOnLoad": false,
- "_id": ""
- },
- {
- "__type__": "cc.Sprite",
- "_name": "",
- "_objFlags": 0,
- "node": {
- "__id__": 18
- },
- "_enabled": true,
- "_materials": [
- {
- "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
- }
- ],
- "_srcBlendFactor": 770,
- "_dstBlendFactor": 771,
- "_spriteFrame": null,
- "_type": 0,
- "_sizeMode": 1,
- "_fillType": 0,
- "_fillCenter": {
- "__type__": "cc.Vec2",
- "x": 0,
- "y": 0
- },
- "_fillStart": 0,
- "_fillRange": 0,
- "_isTrimmedMode": true,
- "_atlas": {
- "__uuid__": "5d522f7b-359b-4f38-ac35-55fdbee56cae"
- },
- "_id": ""
- },
- {
- "__type__": "cc.PrefabInfo",
- "root": {
- "__id__": 1
- },
- "asset": {
- "__uuid__": "59bff7a2-23e1-4d69-bce7-afb37eae196a"
- },
- "fileId": "17JdhftghBYr81MfV9i6cy",
- "sync": false
- },
{
"__type__": "cc.Node",
"_name": "MonkGirl",
@@ -933,17 +552,17 @@
"__id__": 11
},
"_children": [],
- "_active": true,
+ "_active": false,
"_components": [
{
- "__id__": 23
+ "__id__": 13
},
{
- "__id__": 24
+ "__id__": 14
}
],
"_prefab": {
- "__id__": 25
+ "__id__": 15
},
"_opacity": 255,
"_color": {
@@ -997,7 +616,7 @@
"_name": "",
"_objFlags": 0,
"node": {
- "__id__": 22
+ "__id__": 12
},
"_enabled": true,
"_defaultClip": null,
@@ -1050,7 +669,7 @@
"_name": "",
"_objFlags": 0,
"node": {
- "__id__": 22
+ "__id__": 12
},
"_enabled": true,
"_materials": [
@@ -1088,6 +707,169 @@
"fileId": "6cGpRwF5ZPjpJdtoqbrnta",
"sync": false
},
+ {
+ "__type__": "cc.Node",
+ "_name": "KnifeGirl",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 11
+ },
+ "_children": [],
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 17
+ },
+ {
+ "__id__": 18
+ }
+ ],
+ "_prefab": {
+ "__id__": 19
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1425,
+ "height": 1024
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0.7,
+ 0.7,
+ 1
+ ]
+ },
+ "_eulerAngles": {
+ "__type__": "cc.Vec3",
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_is3DNode": false,
+ "_groupIndex": 0,
+ "groupIndex": 0,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 16
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "5afe50e0-d03f-4d48-a7c0-a350c36e14d4"
+ },
+ {
+ "__uuid__": "f7f60d3f-32c0-4b56-901e-6eec9f73fa83"
+ },
+ {
+ "__uuid__": "829b17c6-9365-4e97-b14f-fa266bd5ecbe"
+ },
+ {
+ "__uuid__": "2a50c853-000b-46f3-ae59-1dfb793de814"
+ },
+ {
+ "__uuid__": "bc461a02-4d1a-46a4-9f3c-7370adc6c1c8"
+ },
+ {
+ "__uuid__": "c4ddf3ea-2292-4511-a320-5486934ac361"
+ },
+ {
+ "__uuid__": "0e7468cc-b90d-4f68-91ce-0be126b406dd"
+ },
+ {
+ "__uuid__": "c86debde-118b-46b8-b483-f5ccec337315"
+ },
+ {
+ "__uuid__": "0892a3ea-9da1-4157-825b-0c8ef1c73eeb"
+ },
+ {
+ "__uuid__": "0a6478a6-f4cc-47cb-a1c6-761cf9141eb2"
+ },
+ {
+ "__uuid__": "7d69868f-d474-4d86-a262-01f1cdd49021"
+ },
+ {
+ "__uuid__": "52b8e47d-715c-4c12-a2c9-6f553e14dc42"
+ },
+ {
+ "__uuid__": "9b500cb0-8048-4715-81db-cc975c914225"
+ }
+ ],
+ "playOnLoad": false,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 16
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": {
+ "__uuid__": "579bc0c1-f5e2-4a5d-889b-9d567e53b0e6"
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "59bff7a2-23e1-4d69-bce7-afb37eae196a"
+ },
+ "fileId": "bdCx1wrTtJ1KaGHUmgL7iA",
+ "sync": false
+ },
{
"__type__": "cc.PrefabInfo",
"root": {
diff --git a/frontend/assets/scenes/offline_map.fire b/frontend/assets/scenes/offline_map.fire
index 7059ef0..6ba3709 100644
--- a/frontend/assets/scenes/offline_map.fire
+++ b/frontend/assets/scenes/offline_map.fire
@@ -461,7 +461,7 @@
"array": [
0,
0,
- 216.50635094610968,
+ 216.05530045313827,
0,
0,
0,
diff --git a/frontend/assets/scripts/AttackingCharacter.js b/frontend/assets/scripts/AttackingCharacter.js
index 672b997..ca81472 100644
--- a/frontend/assets/scripts/AttackingCharacter.js
+++ b/frontend/assets/scripts/AttackingCharacter.js
@@ -80,9 +80,9 @@ cc.Class({
// Update directions
if (this.animComp && this.animComp.node) {
if (0 > rdfPlayer.DirX) {
- this.animComp.node.scaleX = (-1.0);
+ this.animNode.scaleX = (-1.0);
} else if (0 < rdfPlayer.DirX) {
- this.animComp.node.scaleX = (1.0);
+ this.animNode.scaleX = (1.0);
}
}
diff --git a/frontend/assets/scripts/OfflineMap.js b/frontend/assets/scripts/OfflineMap.js
index 166ffde..061ee53 100644
--- a/frontend/assets/scripts/OfflineMap.js
+++ b/frontend/assets/scripts/OfflineMap.js
@@ -161,7 +161,7 @@ cc.Class({
inAir: true,
}),
],
- speciesIdList: [0, 0],
+ speciesIdList: [1, 0],
});
self.selfPlayerInfo = {
diff --git a/jsexport/battle/battle.go b/jsexport/battle/battle.go
index e59d3e9..e8917d5 100644
--- a/jsexport/battle/battle.go
+++ b/jsexport/battle/battle.go
@@ -28,8 +28,8 @@ const (
SNAP_INTO_PLATFORM_OVERLAP = float64(0.1)
SNAP_INTO_PLATFORM_THRESHOLD = float64(0.5)
- NO_SKILL = int32(-1)
- NO_SKILL_HIT = int32(-1)
+ NO_SKILL = -1
+ NO_SKILL_HIT = -1
)
// These directions are chosen such that when speed is changed to "(speedX+delta, speedY+delta)" for any of them, the direction is unchanged.
@@ -383,30 +383,9 @@ func deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame *PlayerDownsync,
}
}
- /*
- As long as the current "CharacterState" is not in "noOpSet", we have 2 cases where attacking is allowed:
- 1. it happens when the player is IDLE or Walking, i.e. "0 == currPlayerDownsync.FramesToRecover", which is just the normal case
- 2. it happens when the player is having non-empty "ActiveSkillId" which might be cancellable
- */
patternId := PATTERN_ID_NO_OP
if decodedInput.BtnALevel > prevBtnALevel {
- if currPlayerDownsync.InAir {
- patternId = 255
- } else {
- patternId = 1
- }
- }
-
- if PATTERN_ID_NO_OP != patternId && 0 < currPlayerDownsync.FramesToRecover {
- // [WARN] Handle skill cancellation
- patternId = PATTERN_ID_NO_OP // First, reset the patternId to no-op as it should be by default not cancelling anything
- skillConfig := skills[int(currPlayerDownsync.ActiveSkillId)]
- switch v := skillConfig.Hits[currPlayerDownsync.ActiveSkillHit].(type) {
- case *MeleeBullet:
- if v.CancellableStFrame <= currPlayerDownsync.FramesInChState && currPlayerDownsync.FramesInChState < v.CancellableEdFrame {
- patternId = int(currPlayerDownsync.ActiveSkillId + 1) // if "currPlayerDownsync.InAir", it won't map to a valid skill in the next step and thus act as PATTERN_ID_NO_OP
- }
- }
+ patternId = 1
}
return patternId, jumpedOrNot, effDx, effDy
@@ -463,38 +442,28 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
jumpedOrNotList[i] = true
}
joinIndex := currPlayerDownsync.JoinIndex
- if PATTERN_ID_NO_OP != patternId {
- if skillId, existent := chConfig.PatternIdToSkillId[patternId]; existent {
- skillConfig := skills[skillId]
- thatPlayerInNextFrame.ActiveSkillId = int32(skillId)
- thatPlayerInNextFrame.ActiveSkillHit = 0
+ skillId := chConfig.SkillMapper(patternId, currPlayerDownsync)
+ if skillConfig, existent := skills[skillId]; existent {
+ thatPlayerInNextFrame.ActiveSkillId = int32(skillId)
+ thatPlayerInNextFrame.ActiveSkillHit = 0
- // TODO: Respect non-zero "selfLockVel"
+ // TODO: Respect non-zero "selfLockVel"
- // Hardcoded to use only the first hit for now
- switch v := skillConfig.Hits[thatPlayerInNextFrame.ActiveSkillHit].(type) {
- case *MeleeBullet:
- var newBullet MeleeBullet = *v // Copied primitive fields into an onstack variable
- newBullet.OriginatedRenderFrameId = currRenderFrame.Id
- newBullet.OffenderJoinIndex = joinIndex
- nextRenderFrameMeleeBullets = append(nextRenderFrameMeleeBullets, &newBullet)
- thatPlayerInNextFrame.FramesToRecover = skillConfig.RecoveryFrames
- }
-
- // TODO: How to differentiate skill cancellable among different characters, e.g. some characters might be allowed to have 4-cancellation-combo or more?
- switch skillId {
- case 1:
- thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_ATK1
- case 2:
- thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_ATK2
- case 3:
- thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_ATK3
- }
- if false == currPlayerDownsync.InAir {
- thatPlayerInNextFrame.VelX = 0
- }
- continue // Don't allow movement if skill is used
+ // Hardcoded to use only the first hit for now
+ switch v := skillConfig.Hits[thatPlayerInNextFrame.ActiveSkillHit].(type) {
+ case *MeleeBullet:
+ var newBullet MeleeBullet = *v // Copied primitive fields into an onstack variable
+ newBullet.OriginatedRenderFrameId = currRenderFrame.Id
+ newBullet.OffenderJoinIndex = joinIndex
+ nextRenderFrameMeleeBullets = append(nextRenderFrameMeleeBullets, &newBullet)
+ thatPlayerInNextFrame.FramesToRecover = skillConfig.RecoveryFrames
}
+
+ thatPlayerInNextFrame.CharacterState = skillConfig.BoundChState
+ if false == currPlayerDownsync.InAir {
+ thatPlayerInNextFrame.VelX = 0
+ }
+ continue // Don't allow movement if skill is used
}
if 0 == currPlayerDownsync.FramesToRecover {
@@ -720,8 +689,8 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
// Remove any active skill if not attacking
if _, existent := nonAttackingSet[thatPlayerInNextFrame.CharacterState]; existent {
- thatPlayerInNextFrame.ActiveSkillId = NO_SKILL
- thatPlayerInNextFrame.ActiveSkillHit = NO_SKILL_HIT
+ thatPlayerInNextFrame.ActiveSkillId = int32(NO_SKILL)
+ thatPlayerInNextFrame.ActiveSkillHit = int32(NO_SKILL_HIT)
}
}
diff --git a/jsexport/battle/characterConfig.go b/jsexport/battle/characterConfig.go
index 4c30c39..165882a 100644
--- a/jsexport/battle/characterConfig.go
+++ b/jsexport/battle/characterConfig.go
@@ -1,5 +1,7 @@
package battle
+type SkillMapperType func(patternId int, currPlayerDownsync *PlayerDownsync) int
+
type CharacterConfig struct {
SpeciesId int
SpeciesName string
@@ -15,7 +17,7 @@ type CharacterConfig struct {
JumpingInitVelY int32
- PatternIdToSkillId map[int]int
+ SkillMapper SkillMapperType
}
var Characters = map[int]*CharacterConfig{
@@ -34,26 +36,89 @@ var Characters = map[int]*CharacterConfig{
JumpingInitVelY: int32(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO),
- PatternIdToSkillId: map[int]int{
- 1: 1, // Atk1
- 2: 2, // Atk2
- 3: 3, // Atk3
- 255: 255, // InAirAtk1
+ SkillMapper: func(patternId int, currPlayerDownsync *PlayerDownsync) int {
+ if 1 == patternId {
+ if 0 == currPlayerDownsync.FramesToRecover {
+ if currPlayerDownsync.InAir {
+ return 255
+ } else {
+ return 1
+ }
+ } else {
+ // Now that "0 < FramesToRecover", we're only able to fire any skill if it's a cancellation
+ if skillConfig, existent1 := skills[int(currPlayerDownsync.ActiveSkillId)]; existent1 {
+ switch v := skillConfig.Hits[currPlayerDownsync.ActiveSkillHit].(type) {
+ case *MeleeBullet:
+ if v.CancellableStFrame <= currPlayerDownsync.FramesInChState && currPlayerDownsync.FramesInChState < v.CancellableEdFrame {
+ if nextSkillId, existent2 := v.CancelTransit[patternId]; existent2 {
+ return nextSkillId
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // By default no skill can be fired
+ return NO_SKILL
+ },
+ },
+ 1: &CharacterConfig{
+ SpeciesId: 1,
+ SpeciesName: "KnifeGirl",
+
+ InAirIdleFrameIdxTurningPoint: 9,
+ InAirIdleFrameIdxTurnedCycle: 1,
+
+ LayDownFrames: int32(16),
+ LayDownFramesToRecover: int32(16),
+
+ GetUpFrames: int32(30),
+ GetUpFramesToRecover: int32(27), // 3 invinsible frames for just-blown-up character to make a comeback
+
+ JumpingInitVelY: int32(float64(7.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
+
+ SkillMapper: func(patternId int, currPlayerDownsync *PlayerDownsync) int {
+ if 1 == patternId {
+ if 0 == currPlayerDownsync.FramesToRecover {
+ if currPlayerDownsync.InAir {
+ return 256
+ } else {
+ return 4
+ }
+ } else {
+ // Now that "0 < FramesToRecover", we're only able to fire any skill if it's a cancellation
+ if skillConfig, existent1 := skills[int(currPlayerDownsync.ActiveSkillId)]; existent1 {
+ switch v := skillConfig.Hits[currPlayerDownsync.ActiveSkillHit].(type) {
+ case *MeleeBullet:
+ if v.CancellableStFrame <= currPlayerDownsync.FramesInChState && currPlayerDownsync.FramesInChState < v.CancellableEdFrame {
+ if nextSkillId, existent2 := v.CancelTransit[patternId]; existent2 {
+ return nextSkillId
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // By default no skill can be fired
+ return NO_SKILL
},
},
}
var skills = map[int]*Skill{
1: &Skill{
- RecoveryFrames: int32(20),
- RecoveryFramesOnBlock: int32(20),
- RecoveryFramesOnHit: int32(20),
+ RecoveryFrames: int32(30),
+ RecoveryFramesOnBlock: int32(30),
+ RecoveryFramesOnHit: int32(30),
ReleaseTriggerType: int32(1),
+ BoundChState: ATK_CHARACTER_STATE_ATK1,
Hits: []interface{}{
&MeleeBullet{
Bullet: Bullet{
- StartupFrames: int32(5),
- ActiveFrames: int32(10),
+ StartupFrames: int32(7),
+ ActiveFrames: int32(22),
HitStunFrames: int32(13),
BlockStunFrames: int32(9),
Damage: int32(5),
@@ -63,8 +128,12 @@ var skills = map[int]*Skill{
HitboxOffsetY: int32(0),
HitboxSizeX: int32(float64(24) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxSizeY: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
- CancellableStFrame: int32(8),
- CancellableEdFrame: int32(20),
+ CancellableStFrame: int32(13),
+ CancellableEdFrame: int32(30),
+
+ CancelTransit: map[int]int{
+ 1: 2,
+ },
// TODO: Use non-zero "selfLockVel"
},
},
@@ -75,11 +144,12 @@ var skills = map[int]*Skill{
RecoveryFramesOnBlock: int32(36),
RecoveryFramesOnHit: int32(36),
ReleaseTriggerType: int32(1),
+ BoundChState: ATK_CHARACTER_STATE_ATK2,
Hits: []interface{}{
&MeleeBullet{
Bullet: Bullet{
- StartupFrames: int32(3),
- ActiveFrames: int32(20),
+ StartupFrames: int32(18),
+ ActiveFrames: int32(18),
HitStunFrames: int32(18),
BlockStunFrames: int32(9),
Damage: int32(5),
@@ -89,8 +159,11 @@ var skills = map[int]*Skill{
HitboxOffsetY: int32(0),
HitboxSizeX: int32(float64(24) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxSizeY: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
- CancellableStFrame: int32(18),
+ CancellableStFrame: int32(22),
CancellableEdFrame: int32(36),
+ CancelTransit: map[int]int{
+ 1: 3,
+ },
},
},
},
@@ -100,16 +173,102 @@ var skills = map[int]*Skill{
RecoveryFramesOnBlock: int32(60),
RecoveryFramesOnHit: int32(60),
ReleaseTriggerType: int32(1),
+ BoundChState: ATK_CHARACTER_STATE_ATK3,
Hits: []interface{}{
&MeleeBullet{
Bullet: Bullet{
- StartupFrames: int32(1),
- ActiveFrames: int32(30),
+ StartupFrames: int32(15),
+ ActiveFrames: int32(40),
HitStunFrames: MAX_INT32,
BlockStunFrames: int32(9),
Damage: int32(10),
- PushbackVelX: int32(float64(1) * WORLD_TO_VIRTUAL_GRID_RATIO),
- PushbackVelY: int32(float64(4) * 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(24) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ HitboxOffsetY: int32(0),
+ HitboxSizeX: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ HitboxSizeY: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ BlowUp: true,
+ },
+ },
+ },
+ },
+ 4: &Skill{
+ RecoveryFrames: int32(30),
+ RecoveryFramesOnBlock: int32(30),
+ RecoveryFramesOnHit: int32(30),
+ ReleaseTriggerType: int32(1),
+ BoundChState: ATK_CHARACTER_STATE_ATK1,
+ Hits: []interface{}{
+ &MeleeBullet{
+ Bullet: Bullet{
+ StartupFrames: int32(7),
+ ActiveFrames: int32(22),
+ HitStunFrames: int32(13),
+ BlockStunFrames: int32(9),
+ Damage: int32(5),
+ PushbackVelX: int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ PushbackVelY: int32(0),
+ HitboxOffsetX: int32(float64(12) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ HitboxOffsetY: int32(0),
+ HitboxSizeX: int32(float64(24) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ HitboxSizeY: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ CancellableStFrame: int32(13),
+ CancellableEdFrame: int32(30),
+
+ CancelTransit: map[int]int{
+ 1: 5,
+ },
+ // TODO: Use non-zero "selfLockVel"
+ },
+ },
+ },
+ },
+ 5: &Skill{
+ RecoveryFrames: int32(36),
+ RecoveryFramesOnBlock: int32(36),
+ RecoveryFramesOnHit: int32(36),
+ ReleaseTriggerType: int32(1),
+ BoundChState: ATK_CHARACTER_STATE_ATK2,
+ Hits: []interface{}{
+ &MeleeBullet{
+ Bullet: Bullet{
+ StartupFrames: int32(18),
+ ActiveFrames: int32(18),
+ HitStunFrames: int32(18),
+ BlockStunFrames: int32(9),
+ Damage: int32(5),
+ PushbackVelX: int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ PushbackVelY: int32(0),
+ HitboxOffsetX: int32(float64(18) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ HitboxOffsetY: int32(0),
+ HitboxSizeX: int32(float64(24) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ HitboxSizeY: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ CancellableStFrame: int32(22),
+ CancellableEdFrame: int32(36),
+ CancelTransit: map[int]int{
+ 1: 6,
+ },
+ },
+ },
+ },
+ },
+ 6: &Skill{
+ RecoveryFrames: int32(60),
+ RecoveryFramesOnBlock: int32(60),
+ RecoveryFramesOnHit: int32(60),
+ ReleaseTriggerType: int32(1),
+ BoundChState: ATK_CHARACTER_STATE_ATK3,
+ Hits: []interface{}{
+ &MeleeBullet{
+ Bullet: Bullet{
+ StartupFrames: int32(15),
+ ActiveFrames: int32(40),
+ HitStunFrames: MAX_INT32,
+ BlockStunFrames: int32(9),
+ Damage: int32(10),
+ PushbackVelX: int32(float64(2) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ PushbackVelY: int32(float64(7) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxOffsetX: int32(float64(24) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxOffsetY: int32(0),
HitboxSizeX: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
@@ -124,6 +283,31 @@ var skills = map[int]*Skill{
RecoveryFramesOnBlock: int32(34),
RecoveryFramesOnHit: int32(34),
ReleaseTriggerType: int32(1),
+ BoundChState: ATK_CHARACTER_STATE_INAIR_ATK1,
+ Hits: []interface{}{
+ &MeleeBullet{
+ Bullet: Bullet{
+ StartupFrames: int32(3),
+ ActiveFrames: int32(20),
+ HitStunFrames: int32(18),
+ BlockStunFrames: int32(9),
+ Damage: int32(5),
+ PushbackVelX: int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ PushbackVelY: int32(0),
+ HitboxOffsetX: int32(float64(12) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ HitboxOffsetY: int32(0),
+ HitboxSizeX: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ HitboxSizeY: int32(float64(24) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ },
+ },
+ },
+ },
+ 256: &Skill{
+ RecoveryFrames: int32(34),
+ RecoveryFramesOnBlock: int32(34),
+ RecoveryFramesOnHit: int32(34),
+ ReleaseTriggerType: int32(1),
+ BoundChState: ATK_CHARACTER_STATE_INAIR_ATK1,
Hits: []interface{}{
&MeleeBullet{
Bullet: Bullet{
diff --git a/jsexport/battle/room_downsync_frame.go b/jsexport/battle/room_downsync_frame.go
index f411c0e..110bf99 100644
--- a/jsexport/battle/room_downsync_frame.go
+++ b/jsexport/battle/room_downsync_frame.go
@@ -79,6 +79,8 @@ type Bullet struct {
HitboxSizeY int32
BlowUp bool
+
+ CancelTransit map[int]int
}
type MeleeBullet struct {
@@ -101,7 +103,8 @@ type Skill struct {
RecoveryFrames int32
RecoveryFramesOnBlock int32
RecoveryFramesOnHit int32
- ReleaseTriggerType int32 // 1: rising-edge, 2: falling-edge
+ ReleaseTriggerType int32 // 1: rising-edge, 2: falling-edge
+ BoundChState int32
Hits []interface{} // Hits within a "Skill" are automatically triggered
}