mirror of
https://github.com/genxium/DelayNoMore
synced 2024-12-26 03:39:00 +00:00
Added turn-around and dashing actual triggers.
This commit is contained in:
parent
ff48b47ecc
commit
2f097dfec5
File diff suppressed because one or more lines are too long
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"ver": "1.0.5",
|
"ver": "1.0.5",
|
||||||
"uuid": "d41313ca-b2c3-4436-a05f-7e0eb290b1e6",
|
"uuid": "40edd08e-316c-44b8-a50f-bd173554c554",
|
||||||
"isPlugin": true,
|
"isPlugin": true,
|
||||||
"loadPluginInWeb": true,
|
"loadPluginInWeb": true,
|
||||||
"loadPluginInNative": true,
|
"loadPluginInNative": true,
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "TurnAround1",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"_duration": 0.15,
|
||||||
|
"sample": 60,
|
||||||
|
"speed": 1,
|
||||||
|
"wrapMode": 1,
|
||||||
|
"curveData": {
|
||||||
|
"comps": {
|
||||||
|
"cc.Sprite": {
|
||||||
|
"spriteFrame": [
|
||||||
|
{
|
||||||
|
"frame": 0,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "28ee1f29-e538-4d36-bb5c-275f9e3b392b"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.03333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "211a73bb-31d7-4e6c-901e-f6939d9214e0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.08333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "048c41dc-fc00-4bc4-8041-6003e7c2b6e4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.13333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "9435195e-4560-495e-b1ae-083c0c87e8a0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"events": []
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.1.0",
|
||||||
|
"uuid": "e906322d-a08b-4477-a2e9-98acd42fa034",
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
43
frontend/assets/resources/animation/Monk/TurnAround1.anim
Normal file
43
frontend/assets/resources/animation/Monk/TurnAround1.anim
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "TurnAround1",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"_duration": 0.15,
|
||||||
|
"sample": 60,
|
||||||
|
"speed": 1,
|
||||||
|
"wrapMode": 1,
|
||||||
|
"curveData": {
|
||||||
|
"comps": {
|
||||||
|
"cc.Sprite": {
|
||||||
|
"spriteFrame": [
|
||||||
|
{
|
||||||
|
"frame": 0,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "ee5e05fa-b515-470f-bc3c-43544f02cb92"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.03333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "ffa521b6-118e-46e8-be1c-51cc54381ec8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.08333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "0b27d2c9-c5a3-4020-adbe-0297c1ba3aeb"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.13333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "a47f518e-62fb-4549-8897-4f2d387bd145"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"events": []
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.1.0",
|
||||||
|
"uuid": "edd23b2f-1caa-4836-88a7-e4af1f26743e",
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "TurnAround1",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"_duration": 0.15,
|
||||||
|
"sample": 60,
|
||||||
|
"speed": 1,
|
||||||
|
"wrapMode": 1,
|
||||||
|
"curveData": {
|
||||||
|
"comps": {
|
||||||
|
"cc.Sprite": {
|
||||||
|
"spriteFrame": [
|
||||||
|
{
|
||||||
|
"frame": 0,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "c1a00209-f74d-41b5-a5da-df5720ac34b4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.03333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "2b52c0f1-2360-4a2b-9233-bf5662de09a5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.08333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "e3f9dfe7-ed91-4dc3-b68b-a3a3c2637074"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.13333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "7515ef50-3a14-4e58-8811-a0c890fc40f3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"events": []
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.1.0",
|
||||||
|
"uuid": "6e1139d4-03dd-4bd4-9510-606e94f629fe",
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
@ -482,6 +482,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__uuid__": "e8247e2a-1b5b-4618-86f8-224b25246b55"
|
"__uuid__": "e8247e2a-1b5b-4618-86f8-224b25246b55"
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"__uuid__": "6e1139d4-03dd-4bd4-9510-606e94f629fe"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"playOnLoad": false,
|
"playOnLoad": false,
|
||||||
@ -653,6 +660,9 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__uuid__": "411f964a-4dd8-424c-b2e2-d92b10474ce2"
|
"__uuid__": "411f964a-4dd8-424c-b2e2-d92b10474ce2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "e906322d-a08b-4477-a2e9-98acd42fa034"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"playOnLoad": false,
|
"playOnLoad": false,
|
||||||
@ -822,6 +832,11 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__uuid__": "0abbd156-980e-475e-9994-3c958bd913fc"
|
"__uuid__": "0abbd156-980e-475e-9994-3c958bd913fc"
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"__uuid__": "edd23b2f-1caa-4836-88a7-e4af1f26743e"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"playOnLoad": false,
|
"playOnLoad": false,
|
||||||
|
@ -537,7 +537,7 @@
|
|||||||
"array": [
|
"array": [
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
215.64032554232523,
|
209.73151519075364,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
|
@ -18,6 +18,7 @@ window.ATK_CHARACTER_STATE = {
|
|||||||
Atk5: [14, "Atk5"],
|
Atk5: [14, "Atk5"],
|
||||||
Dashing: [15, "Dashing"],
|
Dashing: [15, "Dashing"],
|
||||||
OnWall: [16, "OnWall"],
|
OnWall: [16, "OnWall"],
|
||||||
|
TurnAround1: [17, "TurnAround1"],
|
||||||
};
|
};
|
||||||
|
|
||||||
window.ATK_CHARACTER_STATE_ARR = [];
|
window.ATK_CHARACTER_STATE_ARR = [];
|
||||||
@ -93,7 +94,7 @@ cc.Class({
|
|||||||
} else if (0 < rdfPlayer.DirX) {
|
} else if (0 < rdfPlayer.DirX) {
|
||||||
this.animNode.scaleX = (+1.0);
|
this.animNode.scaleX = (+1.0);
|
||||||
}
|
}
|
||||||
if (ATK_CHARACTER_STATE.OnWall[0] == newCharacterState) {
|
if (ATK_CHARACTER_STATE.OnWall[0] == newCharacterState || ATK_CHARACTER_STATE.TurnAround1[0] == newCharacterState) {
|
||||||
if (0 < rdfPlayer.OnWallNormX) {
|
if (0 < rdfPlayer.OnWallNormX) {
|
||||||
this.animNode.scaleX = (-1.0);
|
this.animNode.scaleX = (-1.0);
|
||||||
} else {
|
} else {
|
||||||
|
@ -96,7 +96,7 @@ cc.Class({
|
|||||||
const p2Vpos = gopkgs.WorldToVirtualGridPos(boundaryObjs.playerStartingPositions[1].x, boundaryObjs.playerStartingPositions[1].y);
|
const p2Vpos = gopkgs.WorldToVirtualGridPos(boundaryObjs.playerStartingPositions[1].x, boundaryObjs.playerStartingPositions[1].y);
|
||||||
const colliderRadiusV = gopkgs.WorldToVirtualGridPos(12.0, 0);
|
const colliderRadiusV = gopkgs.WorldToVirtualGridPos(12.0, 0);
|
||||||
|
|
||||||
const speciesIdList = [1, 4096];
|
const speciesIdList = [1,4096];
|
||||||
const chConfigsOrderedByJoinIndex = gopkgs.GetCharacterConfigsOrderedByJoinIndex(speciesIdList);
|
const chConfigsOrderedByJoinIndex = gopkgs.GetCharacterConfigsOrderedByJoinIndex(speciesIdList);
|
||||||
|
|
||||||
const startRdf = window.pb.protos.RoomDownsyncFrame.create({
|
const startRdf = window.pb.protos.RoomDownsyncFrame.create({
|
||||||
|
@ -16,13 +16,13 @@ const (
|
|||||||
PATTERN_ID_UNABLE_TO_OP = -2
|
PATTERN_ID_UNABLE_TO_OP = -2
|
||||||
PATTERN_ID_NO_OP = -1
|
PATTERN_ID_NO_OP = -1
|
||||||
|
|
||||||
WORLD_TO_VIRTUAL_GRID_RATIO = float64(100)
|
WORLD_TO_VIRTUAL_GRID_RATIO = float64(100.0)
|
||||||
VIRTUAL_GRID_TO_WORLD_RATIO = float64(1.0) / WORLD_TO_VIRTUAL_GRID_RATIO
|
VIRTUAL_GRID_TO_WORLD_RATIO = float64(1.0) / WORLD_TO_VIRTUAL_GRID_RATIO
|
||||||
|
|
||||||
GRAVITY_X = int32(0)
|
GRAVITY_X = int32(0)
|
||||||
GRAVITY_Y = -int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO) // makes all "playerCollider.Y" a multiple of 0.5 in all cases
|
GRAVITY_Y = -int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO) // makes all "playerCollider.Y" a multiple of 0.5 in all cases
|
||||||
|
|
||||||
INPUT_DELAY_FRAMES = int32(8) // in the count of render frames
|
INPUT_DELAY_FRAMES = int32(4) // in the count of render frames
|
||||||
INPUT_SCALE_FRAMES = uint32(2) // inputDelayedAndScaledFrameId = ((originalFrameId - InputDelayFrames) >> InputScaleFrames)
|
INPUT_SCALE_FRAMES = uint32(2) // inputDelayedAndScaledFrameId = ((originalFrameId - InputDelayFrames) >> InputScaleFrames)
|
||||||
NST_DELAY_FRAMES = int32(16) // network-single-trip delay in the count of render frames, proposed to be (InputDelayFrames >> 1) because we expect a round-trip delay to be exactly "InputDelayFrames"
|
NST_DELAY_FRAMES = int32(16) // network-single-trip delay in the count of render frames, proposed to be (InputDelayFrames >> 1) because we expect a round-trip delay to be exactly "InputDelayFrames"
|
||||||
|
|
||||||
@ -448,7 +448,7 @@ func calcHardPushbacksNorms(joinIndex int32, currPlayerDownsync, thatPlayerInNex
|
|||||||
return &ret
|
return &ret
|
||||||
}
|
}
|
||||||
|
|
||||||
func deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame *PlayerDownsync, currRenderFrame *RoomDownsyncFrame, inputsBuffer *RingBuffer) (int, bool, int32, int32) {
|
func deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame *PlayerDownsync, currRenderFrame *RoomDownsyncFrame, chConfig *CharacterConfig, inputsBuffer *RingBuffer) (int, bool, int32, int32) {
|
||||||
// returns (patternId, jumpedOrNot, effectiveDx, effectiveDy)
|
// returns (patternId, jumpedOrNot, effectiveDx, effectiveDy)
|
||||||
delayedInputFrameId := ConvertToDelayedInputFrameId(currRenderFrame.Id)
|
delayedInputFrameId := ConvertToDelayedInputFrameId(currRenderFrame.Id)
|
||||||
delayedInputFrameIdForPrevRdf := ConvertToDelayedInputFrameId(currRenderFrame.Id - 1)
|
delayedInputFrameIdForPrevRdf := ConvertToDelayedInputFrameId(currRenderFrame.Id - 1)
|
||||||
@ -478,11 +478,14 @@ func deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame *PlayerDownsync,
|
|||||||
prevBtnBLevel = prevDecodedInput.BtnBLevel
|
prevBtnBLevel = prevDecodedInput.BtnBLevel
|
||||||
}
|
}
|
||||||
|
|
||||||
if 0 == currPlayerDownsync.FramesToRecover {
|
patternId := PATTERN_ID_NO_OP
|
||||||
// Jumping and moving are only allowed here
|
if 0 == currPlayerDownsync.FramesToRecover || currPlayerDownsync.CapturedByInertia {
|
||||||
|
// Jumping is allowed within "CapturedByInertia", but moving is only allowed when "0 == FramesToRecover" (constrained later in "ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame")
|
||||||
effDx, effDy = decodedInput.Dx, decodedInput.Dy
|
effDx, effDy = decodedInput.Dx, decodedInput.Dy
|
||||||
if decodedInput.BtnBLevel > prevBtnBLevel {
|
if decodedInput.BtnBLevel > prevBtnBLevel {
|
||||||
if _, existent := inAirSet[currPlayerDownsync.CharacterState]; !existent {
|
if chConfig.DashingEnabled && 0 > effDy {
|
||||||
|
patternId = 5
|
||||||
|
} else if _, existent := inAirSet[currPlayerDownsync.CharacterState]; !existent {
|
||||||
jumpedOrNot = true
|
jumpedOrNot = true
|
||||||
} else if ATK_CHARACTER_STATE_ONWALL == currPlayerDownsync.CharacterState {
|
} else if ATK_CHARACTER_STATE_ONWALL == currPlayerDownsync.CharacterState {
|
||||||
jumpedOrNot = true
|
jumpedOrNot = true
|
||||||
@ -490,18 +493,19 @@ func deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame *PlayerDownsync,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
patternId := PATTERN_ID_NO_OP
|
if PATTERN_ID_NO_OP == patternId {
|
||||||
if 0 < decodedInput.BtnALevel {
|
if 0 < decodedInput.BtnALevel {
|
||||||
if decodedInput.BtnALevel > prevBtnALevel {
|
if decodedInput.BtnALevel > prevBtnALevel {
|
||||||
if 0 > effDy {
|
if 0 > effDy {
|
||||||
patternId = 3
|
patternId = 3
|
||||||
} else if 0 < effDy {
|
} else if 0 < effDy {
|
||||||
patternId = 2
|
patternId = 2
|
||||||
|
} else {
|
||||||
|
patternId = 1
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
patternId = 1
|
patternId = 4 // Holding
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
patternId = 4 // Holding
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -562,7 +566,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
for i, currPlayerDownsync := range currRenderFrame.PlayersArr {
|
for i, currPlayerDownsync := range currRenderFrame.PlayersArr {
|
||||||
chConfig := chConfigsOrderedByJoinIndex[i]
|
chConfig := chConfigsOrderedByJoinIndex[i]
|
||||||
thatPlayerInNextFrame := nextRenderFramePlayers[i]
|
thatPlayerInNextFrame := nextRenderFramePlayers[i]
|
||||||
patternId, jumpedOrNot, effDx, effDy := deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame, currRenderFrame, inputsBuffer)
|
patternId, jumpedOrNot, effDx, effDy := deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame, currRenderFrame, chConfig, inputsBuffer)
|
||||||
|
|
||||||
jumpedOrNotList[i] = jumpedOrNot
|
jumpedOrNotList[i] = jumpedOrNot
|
||||||
joinIndex := currPlayerDownsync.JoinIndex
|
joinIndex := currPlayerDownsync.JoinIndex
|
||||||
@ -642,15 +646,17 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
alignedWithInertia := true
|
alignedWithInertia := true
|
||||||
|
exactTurningAround := false
|
||||||
if 0 == effDx && 0 != thatPlayerInNextFrame.VelX {
|
if 0 == effDx && 0 != thatPlayerInNextFrame.VelX {
|
||||||
alignedWithInertia = false
|
alignedWithInertia = false
|
||||||
} else if 0 != effDx && 0 == thatPlayerInNextFrame.VelX {
|
} else if 0 != effDx && 0 == thatPlayerInNextFrame.VelX {
|
||||||
alignedWithInertia = false
|
alignedWithInertia = false
|
||||||
} else if 0 > effDx*thatPlayerInNextFrame.VelX {
|
} else if 0 > effDx*thatPlayerInNextFrame.VelX {
|
||||||
alignedWithInertia = false
|
alignedWithInertia = false
|
||||||
|
exactTurningAround = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if !isWallJumping && !prevCapturedByInertia && !alignedWithInertia {
|
if !jumpedOrNot && !isWallJumping && !prevCapturedByInertia && !alignedWithInertia {
|
||||||
/*
|
/*
|
||||||
[WARNING] A "turn-around", or in more generic direction schema a "change in direction" is a hurdle for our current "prediction+rollback" approach, yet applying a "FramesToRecover" for "turn-around" can alleviate the graphical inconsistence to a huge extent! For better operational experience, this is intentionally NOT APPLIED TO WALL JUMPING!
|
[WARNING] A "turn-around", or in more generic direction schema a "change in direction" is a hurdle for our current "prediction+rollback" approach, yet applying a "FramesToRecover" for "turn-around" can alleviate the graphical inconsistence to a huge extent! For better operational experience, this is intentionally NOT APPLIED TO WALL JUMPING!
|
||||||
|
|
||||||
@ -659,6 +665,9 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
//fmt.Printf("joinIndex=%d is not wall jumping and not aligned w/ inertia\n{renderFrame.id: %d, effDx: %d, thatPlayerInNextFrame.VelX: %d}\n", currPlayerDownsync.JoinIndex, currRenderFrame.Id, effDx, thatPlayerInNextFrame.VelX)
|
//fmt.Printf("joinIndex=%d is not wall jumping and not aligned w/ inertia\n{renderFrame.id: %d, effDx: %d, thatPlayerInNextFrame.VelX: %d}\n", currPlayerDownsync.JoinIndex, currRenderFrame.Id, effDx, thatPlayerInNextFrame.VelX)
|
||||||
thatPlayerInNextFrame.CapturedByInertia = true
|
thatPlayerInNextFrame.CapturedByInertia = true
|
||||||
thatPlayerInNextFrame.FramesToRecover = chConfig.InertiaFramesToRecover
|
thatPlayerInNextFrame.FramesToRecover = chConfig.InertiaFramesToRecover
|
||||||
|
if exactTurningAround {
|
||||||
|
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_TURNAROUND
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
thatPlayerInNextFrame.CapturedByInertia = false
|
thatPlayerInNextFrame.CapturedByInertia = false
|
||||||
if 0 != effDx {
|
if 0 != effDx {
|
||||||
@ -1053,7 +1062,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
if thatPlayerInNextFrame.InAir {
|
if thatPlayerInNextFrame.InAir {
|
||||||
oldNextCharacterState := thatPlayerInNextFrame.CharacterState
|
oldNextCharacterState := thatPlayerInNextFrame.CharacterState
|
||||||
switch oldNextCharacterState {
|
switch oldNextCharacterState {
|
||||||
case ATK_CHARACTER_STATE_IDLE1, ATK_CHARACTER_STATE_WALKING:
|
case ATK_CHARACTER_STATE_IDLE1, ATK_CHARACTER_STATE_WALKING, ATK_CHARACTER_STATE_TURNAROUND:
|
||||||
if thatPlayerInNextFrame.OnWall {
|
if thatPlayerInNextFrame.OnWall {
|
||||||
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_ONWALL
|
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_ONWALL
|
||||||
} else if jumpedOrNotList[i] || ATK_CHARACTER_STATE_INAIR_IDLE1_BY_JUMP == currPlayerDownsync.CharacterState {
|
} else if jumpedOrNotList[i] || ATK_CHARACTER_STATE_INAIR_IDLE1_BY_JUMP == currPlayerDownsync.CharacterState {
|
||||||
|
@ -45,11 +45,11 @@ var Characters = map[int]*CharacterConfig{
|
|||||||
GetUpInvinsibleFrames: int32(10),
|
GetUpInvinsibleFrames: int32(10),
|
||||||
GetUpFramesToRecover: int32(27),
|
GetUpFramesToRecover: int32(27),
|
||||||
|
|
||||||
Speed: int32(float64(2.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
Speed: int32(float64(2.1) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||||
JumpingInitVelY: int32(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
JumpingInitVelY: int32(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||||
JumpingFramesToRecover: int32(2),
|
JumpingFramesToRecover: int32(2),
|
||||||
|
|
||||||
InertiaFramesToRecover: int32(5),
|
InertiaFramesToRecover: int32(8),
|
||||||
|
|
||||||
DashingEnabled: false,
|
DashingEnabled: false,
|
||||||
OnWallEnabled: false,
|
OnWallEnabled: false,
|
||||||
@ -94,11 +94,11 @@ var Characters = map[int]*CharacterConfig{
|
|||||||
GetUpInvinsibleFrames: int32(10),
|
GetUpInvinsibleFrames: int32(10),
|
||||||
GetUpFramesToRecover: int32(27),
|
GetUpFramesToRecover: int32(27),
|
||||||
|
|
||||||
Speed: int32(float64(2.6) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
Speed: int32(float64(2.19) * WORLD_TO_VIRTUAL_GRID_RATIO), // I don't know why "2.2" is so special that it throws a compile error
|
||||||
JumpingInitVelY: int32(float64(7.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
JumpingInitVelY: int32(float64(7.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||||
JumpingFramesToRecover: int32(2),
|
JumpingFramesToRecover: int32(2),
|
||||||
|
|
||||||
InertiaFramesToRecover: int32(5),
|
InertiaFramesToRecover: int32(8),
|
||||||
|
|
||||||
DashingEnabled: true,
|
DashingEnabled: true,
|
||||||
OnWallEnabled: true,
|
OnWallEnabled: true,
|
||||||
@ -128,6 +128,8 @@ var Characters = map[int]*CharacterConfig{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if 5 == patternId {
|
||||||
|
return 12
|
||||||
}
|
}
|
||||||
|
|
||||||
// By default no skill can be fired
|
// By default no skill can be fired
|
||||||
@ -147,11 +149,11 @@ var Characters = map[int]*CharacterConfig{
|
|||||||
GetUpInvinsibleFrames: int32(8),
|
GetUpInvinsibleFrames: int32(8),
|
||||||
GetUpFramesToRecover: int32(30),
|
GetUpFramesToRecover: int32(30),
|
||||||
|
|
||||||
Speed: int32(float64(2.0) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
Speed: int32(float64(1.8) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||||
JumpingInitVelY: int32(float64(7.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
JumpingInitVelY: int32(float64(7.8) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||||
JumpingFramesToRecover: int32(2),
|
JumpingFramesToRecover: int32(2),
|
||||||
|
|
||||||
InertiaFramesToRecover: int32(5),
|
InertiaFramesToRecover: int32(8),
|
||||||
|
|
||||||
DashingEnabled: false,
|
DashingEnabled: false,
|
||||||
OnWallEnabled: false,
|
OnWallEnabled: false,
|
||||||
@ -547,6 +549,33 @@ var skills = map[int]*Skill{
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
12: &Skill{
|
||||||
|
RecoveryFrames: int32(15),
|
||||||
|
RecoveryFramesOnBlock: int32(15),
|
||||||
|
RecoveryFramesOnHit: int32(15),
|
||||||
|
ReleaseTriggerType: int32(1),
|
||||||
|
BoundChState: ATK_CHARACTER_STATE_DASHING,
|
||||||
|
Hits: []interface{}{
|
||||||
|
&MeleeBullet{
|
||||||
|
Bullet: &BulletConfig{
|
||||||
|
StartupFrames: int32(0),
|
||||||
|
ActiveFrames: int32(0),
|
||||||
|
HitStunFrames: MAX_INT32,
|
||||||
|
BlockStunFrames: int32(0),
|
||||||
|
Damage: int32(0),
|
||||||
|
SelfLockVelX: int32(float64(9) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||||
|
SelfLockVelY: int32(0),
|
||||||
|
PushbackVelX: NO_LOCK_VEL,
|
||||||
|
PushbackVelY: NO_LOCK_VEL,
|
||||||
|
HitboxOffsetX: int32(0),
|
||||||
|
HitboxOffsetY: int32(0),
|
||||||
|
HitboxSizeX: int32(0),
|
||||||
|
HitboxSizeY: int32(0),
|
||||||
|
BlowUp: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
255: &Skill{
|
255: &Skill{
|
||||||
RecoveryFrames: int32(30),
|
RecoveryFrames: int32(30),
|
||||||
RecoveryFramesOnBlock: int32(30),
|
RecoveryFramesOnBlock: int32(30),
|
||||||
|
Loading…
Reference in New Issue
Block a user