diff --git a/battle_srv/models/pb_type_convert.go b/battle_srv/models/pb_type_convert.go
index b7ce3f0..8049373 100644
--- a/battle_srv/models/pb_type_convert.go
+++ b/battle_srv/models/pb_type_convert.go
@@ -31,6 +31,8 @@ func toPbRoomDownsyncFrame(rdf *battle.RoomDownsyncFrame) *pb.RoomDownsyncFrame
FramesInChState: last.FramesInChState,
ActiveSkillId: last.ActiveSkillId,
ActiveSkillHit: last.ActiveSkillHit,
+ FramesInvinsible: last.FramesInvinsible,
+ FramesSelfLockVel: last.FramesSelfLockVel,
Speed: last.Speed,
BattleState: last.BattleState,
CharacterState: last.CharacterState,
@@ -63,6 +65,7 @@ func toPbRoomDownsyncFrame(rdf *battle.RoomDownsyncFrame) *pb.RoomDownsyncFrame
SelfLockVelX: last.SelfLockVelX,
SelfLockVelY: last.SelfLockVelY,
+ FramesSelfLockVel: last.FramesSelfLockVel,
HitboxOffsetX: last.HitboxOffsetX,
HitboxOffsetY: last.HitboxOffsetY,
@@ -96,6 +99,8 @@ func toPbPlayers(modelInstances map[int32]*Player, withMetaInfo bool) []*pb.Play
FramesInChState: last.FramesInChState,
ActiveSkillId: last.ActiveSkillId,
ActiveSkillHit: last.ActiveSkillHit,
+ FramesInvinsible: last.FramesInvinsible,
+ FramesSelfLockVel: last.FramesSelfLockVel,
Speed: last.Speed,
BattleState: last.BattleState,
CharacterState: last.CharacterState,
@@ -135,6 +140,8 @@ func toJsPlayers(modelInstances map[int32]*Player) []*battle.PlayerDownsync {
FramesInChState: last.FramesInChState,
ActiveSkillId: last.ActiveSkillId,
ActiveSkillHit: last.ActiveSkillHit,
+ FramesInvinsible: last.FramesInvinsible,
+ FramesSelfLockVel: last.FramesSelfLockVel,
Speed: last.Speed,
BattleState: last.BattleState,
CharacterState: last.CharacterState,
diff --git a/battle_srv/protos/room_downsync_frame.pb.go b/battle_srv/protos/room_downsync_frame.pb.go
index a93f289..529846a 100644
--- a/battle_srv/protos/room_downsync_frame.pb.go
+++ b/battle_srv/protos/room_downsync_frame.pb.go
@@ -48,6 +48,8 @@ type PlayerDownsync struct {
FramesInChState int32 `protobuf:"varint,20,opt,name=framesInChState,proto3" json:"framesInChState,omitempty"` // number of frames elapsed in the current character state
ActiveSkillId int32 `protobuf:"varint,21,opt,name=activeSkillId,proto3" json:"activeSkillId,omitempty"`
ActiveSkillHit int32 `protobuf:"varint,22,opt,name=activeSkillHit,proto3" json:"activeSkillHit,omitempty"`
+ FramesInvinsible int32 `protobuf:"varint,23,opt,name=framesInvinsible,proto3" json:"framesInvinsible,omitempty"`
+ FramesSelfLockVel int32 `protobuf:"varint,24,opt,name=framesSelfLockVel,proto3" json:"framesSelfLockVel,omitempty"`
Name string `protobuf:"bytes,997,opt,name=name,proto3" json:"name,omitempty"`
DisplayName string `protobuf:"bytes,998,opt,name=displayName,proto3" json:"displayName,omitempty"`
Avatar string `protobuf:"bytes,999,opt,name=avatar,proto3" json:"avatar,omitempty"`
@@ -239,6 +241,20 @@ func (x *PlayerDownsync) GetActiveSkillHit() int32 {
return 0
}
+func (x *PlayerDownsync) GetFramesInvinsible() int32 {
+ if x != nil {
+ return x.FramesInvinsible
+ }
+ return 0
+}
+
+func (x *PlayerDownsync) GetFramesSelfLockVel() int32 {
+ if x != nil {
+ return x.FramesSelfLockVel
+ }
+ return 0
+}
+
func (x *PlayerDownsync) GetName() string {
if x != nil {
return x.Name
@@ -776,11 +792,12 @@ type MeleeBullet struct {
Damage int32 `protobuf:"varint,11,opt,name=damage,proto3" json:"damage,omitempty"`
SelfLockVelX int32 `protobuf:"varint,12,opt,name=selfLockVelX,proto3" json:"selfLockVelX,omitempty"`
SelfLockVelY int32 `protobuf:"varint,13,opt,name=selfLockVelY,proto3" json:"selfLockVelY,omitempty"`
- HitboxOffsetX int32 `protobuf:"varint,14,opt,name=hitboxOffsetX,proto3" json:"hitboxOffsetX,omitempty"`
- HitboxOffsetY int32 `protobuf:"varint,15,opt,name=hitboxOffsetY,proto3" json:"hitboxOffsetY,omitempty"`
- HitboxSizeX int32 `protobuf:"varint,16,opt,name=hitboxSizeX,proto3" json:"hitboxSizeX,omitempty"`
- HitboxSizeY int32 `protobuf:"varint,17,opt,name=hitboxSizeY,proto3" json:"hitboxSizeY,omitempty"`
- BlowUp bool `protobuf:"varint,18,opt,name=blowUp,proto3" json:"blowUp,omitempty"`
+ FramesSelfLockVel int32 `protobuf:"varint,14,opt,name=framesSelfLockVel,proto3" json:"framesSelfLockVel,omitempty"`
+ HitboxOffsetX int32 `protobuf:"varint,15,opt,name=hitboxOffsetX,proto3" json:"hitboxOffsetX,omitempty"`
+ HitboxOffsetY int32 `protobuf:"varint,16,opt,name=hitboxOffsetY,proto3" json:"hitboxOffsetY,omitempty"`
+ HitboxSizeX int32 `protobuf:"varint,17,opt,name=hitboxSizeX,proto3" json:"hitboxSizeX,omitempty"`
+ HitboxSizeY int32 `protobuf:"varint,18,opt,name=hitboxSizeY,proto3" json:"hitboxSizeY,omitempty"`
+ BlowUp bool `protobuf:"varint,19,opt,name=blowUp,proto3" json:"blowUp,omitempty"`
}
func (x *MeleeBullet) Reset() {
@@ -906,6 +923,13 @@ func (x *MeleeBullet) GetSelfLockVelY() int32 {
return 0
}
+func (x *MeleeBullet) GetFramesSelfLockVel() int32 {
+ if x != nil {
+ return x.FramesSelfLockVel
+ }
+ return 0
+}
+
func (x *MeleeBullet) GetHitboxOffsetX() int32 {
if x != nil {
return x.HitboxOffsetX
@@ -1193,7 +1217,7 @@ var file_room_downsync_frame_proto_rawDesc = []byte{
0x0a, 0x19, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x5f,
0x66, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x73, 0x1a, 0x0e, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x22, 0xeb, 0x05, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f,
+ 0x6f, 0x74, 0x6f, 0x22, 0xc5, 0x06, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f,
0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61,
0x6c, 0x47, 0x72, 0x69, 0x64, 0x58, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x76, 0x69,
@@ -1235,199 +1259,207 @@ var file_room_downsync_frame_proto_rawDesc = []byte{
0x65, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69,
0x76, 0x65, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x48, 0x69, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x48, 0x69, 0x74,
- 0x12, 0x13, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xe5, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
- 0x4e, 0x61, 0x6d, 0x65, 0x18, 0xe6, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73,
- 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74,
- 0x61, 0x72, 0x18, 0xe7, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61,
- 0x72, 0x22, 0x6f, 0x0a, 0x11, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44,
- 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x64, 0x78, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x02, 0x64, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x02, 0x64, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x74, 0x6e, 0x41, 0x4c, 0x65,
- 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x62, 0x74, 0x6e, 0x41, 0x4c,
- 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x74, 0x6e, 0x42, 0x4c, 0x65, 0x76, 0x65,
- 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x62, 0x74, 0x6e, 0x42, 0x4c, 0x65, 0x76,
- 0x65, 0x6c, 0x22, 0x50, 0x0a, 0x10, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65,
- 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46,
- 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e,
- 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e,
- 0x63, 0x6f, 0x64, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x6e, 0x63,
- 0x6f, 0x64, 0x65, 0x64, 0x22, 0x7c, 0x0a, 0x12, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61,
- 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e,
- 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1c,
- 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x04, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69,
- 0x73, 0x74, 0x22, 0x3b, 0x0a, 0x0f, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x55,
- 0x70, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f,
- 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22,
- 0xb8, 0x02, 0x0a, 0x05, 0x57, 0x73, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x73, 0x67,
- 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x12,
- 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61,
- 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x61, 0x63, 0x74, 0x12, 0x1c, 0x0a,
- 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x61,
- 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49,
- 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74,
- 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x61,
+ 0x12, 0x2a, 0x0a, 0x10, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x49, 0x6e, 0x76, 0x69, 0x6e, 0x73,
+ 0x69, 0x62, 0x6c, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x66, 0x72, 0x61, 0x6d,
+ 0x65, 0x73, 0x49, 0x6e, 0x76, 0x69, 0x6e, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x11,
+ 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x53, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65,
+ 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x53,
+ 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x12, 0x13, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0xe5, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x21, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0xe6,
+ 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61,
+ 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0xe7, 0x07, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x6f, 0x0a, 0x11, 0x49,
+ 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64,
+ 0x12, 0x0e, 0x0a, 0x02, 0x64, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x64, 0x78,
+ 0x12, 0x0e, 0x0a, 0x02, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x64, 0x79,
+ 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x74, 0x6e, 0x41, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x09, 0x62, 0x74, 0x6e, 0x41, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c,
+ 0x0a, 0x09, 0x62, 0x74, 0x6e, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x09, 0x62, 0x74, 0x6e, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x50, 0x0a, 0x10,
+ 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63,
+ 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61,
+ 0x6d, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x22, 0x7c,
+ 0x0a, 0x12, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e,
+ 0x73, 0x79, 0x6e, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61,
+ 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75,
+ 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75,
+ 0x74, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x70,
+ 0x75, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72,
+ 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63,
+ 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3b, 0x0a, 0x0f,
+ 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x12,
+ 0x28, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+ 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xb8, 0x02, 0x0a, 0x05, 0x57, 0x73,
+ 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61,
+ 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61,
+ 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x03, 0x61, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49,
+ 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6a, 0x6f, 0x69, 0x6e,
+ 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46,
+ 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63,
+ 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x61,
0x63, 0x6b, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49,
- 0x64, 0x12, 0x4e, 0x0a, 0x15, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55,
- 0x70, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46,
- 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x15, 0x69, 0x6e, 0x70, 0x75,
- 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63,
- 0x68, 0x12, 0x27, 0x0a, 0x02, 0x68, 0x62, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74,
- 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x02, 0x68, 0x62, 0x22, 0x89, 0x02, 0x0a, 0x06, 0x57,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x03, 0x72, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x63, 0x68, 0x6f, 0x65,
- 0x64, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x65, 0x63,
- 0x68, 0x6f, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, 0x74,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x61, 0x63, 0x74, 0x12, 0x2b, 0x0a, 0x03, 0x72,
- 0x64, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x73, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x72,
- 0x61, 0x6d, 0x65, 0x52, 0x03, 0x72, 0x64, 0x66, 0x12, 0x54, 0x0a, 0x17, 0x69, 0x6e, 0x70, 0x75,
- 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61,
- 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77,
- 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x17, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d,
- 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x36,
- 0x0a, 0x08, 0x62, 0x63, 0x69, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65,
- 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x62, 0x63,
- 0x69, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x22, 0xf4, 0x01, 0x0a, 0x14, 0x49, 0x6e, 0x70, 0x75, 0x74,
- 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12,
- 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d,
- 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x72, 0x65, 0x66, 0x52, 0x65,
- 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x75,
- 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65,
- 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x58, 0x0a, 0x19, 0x74, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x49,
- 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e,
- 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e,
- 0x73, 0x79, 0x6e, 0x63, 0x52, 0x19, 0x74, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75,
- 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x73, 0x12,
- 0x2c, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65,
- 0x73, 0x79, 0x6e, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68, 0x6f, 0x75,
- 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x22, 0xbf, 0x05,
- 0x0a, 0x0b, 0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x38, 0x0a,
- 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64, 0x65,
- 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17,
- 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72,
- 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x6e,
- 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e,
- 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70,
- 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x63,
- 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72, 0x61, 0x6d,
- 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c,
- 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x63,
- 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72, 0x61, 0x6d,
- 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c,
- 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61,
- 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12,
- 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73,
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e, 0x46,
- 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74,
- 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f,
- 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12,
- 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58, 0x18,
- 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56,
- 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56,
- 0x65, 0x6c, 0x59, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62,
- 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67,
- 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x12,
- 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58, 0x18,
- 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56,
- 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56,
- 0x65, 0x6c, 0x59, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c,
- 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f,
- 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d,
- 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x12, 0x24, 0x0a,
- 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x18, 0x0f,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73,
- 0x65, 0x74, 0x59, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a,
- 0x65, 0x58, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78,
- 0x53, 0x69, 0x7a, 0x65, 0x58, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53,
- 0x69, 0x7a, 0x65, 0x59, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69, 0x74, 0x62,
- 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x77, 0x55,
- 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x77, 0x55, 0x70, 0x22,
- 0xc9, 0x05, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x64,
- 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65, 0x4e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65,
- 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c,
- 0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69, 0x6e,
- 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x0a, 0x15,
- 0x77, 0x69, 0x6c, 0x6c, 0x4b, 0x69, 0x63, 0x6b, 0x49, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69,
- 0x76, 0x65, 0x46, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x77, 0x69, 0x6c,
- 0x6c, 0x4b, 0x69, 0x63, 0x6b, 0x49, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46,
- 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x49,
- 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f,
- 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x46, 0x0a, 0x1e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46,
- 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54,
- 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1e,
- 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63,
- 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x48,
- 0x0a, 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x64,
- 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x73,
- 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x50,
- 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x19, 0x72, 0x6f, 0x6c, 0x6c,
- 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4d,
- 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x72, 0x6f, 0x6c,
- 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74,
- 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x3a, 0x0a, 0x18, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61,
- 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4e, 0x61, 0x6e,
- 0x6f, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61,
- 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4e, 0x61, 0x6e,
- 0x6f, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68,
- 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x6e,
- 0x64, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0c,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0b, 0x20, 0x01,
- 0x28, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58,
- 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59,
- 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66,
- 0x73, 0x65, 0x74, 0x59, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f,
- 0x6e, 0x4d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10,
+ 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x49,
+ 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x4e, 0x0a, 0x15, 0x69,
+ 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x42,
+ 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70,
+ 0x73, 0x79, 0x6e, 0x63, 0x52, 0x15, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65,
+ 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x27, 0x0a, 0x02, 0x68,
+ 0x62, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
+ 0x2e, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63,
+ 0x52, 0x02, 0x68, 0x62, 0x22, 0x89, 0x02, 0x0a, 0x06, 0x57, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12,
+ 0x10, 0x0a, 0x03, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x65,
+ 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x63, 0x68, 0x6f, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x49, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x65, 0x63, 0x68, 0x6f, 0x65, 0x64, 0x4d, 0x73,
+ 0x67, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x03, 0x61, 0x63, 0x74, 0x12, 0x2b, 0x0a, 0x03, 0x72, 0x64, 0x66, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x52, 0x6f, 0x6f, 0x6d,
+ 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x03, 0x72,
+ 0x64, 0x66, 0x12, 0x54, 0x0a, 0x17, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65,
+ 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x70,
+ 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52,
+ 0x17, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73,
+ 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x36, 0x0a, 0x08, 0x62, 0x63, 0x69, 0x46,
+ 0x72, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x64,
+ 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x62, 0x63, 0x69, 0x46, 0x72, 0x61, 0x6d, 0x65,
+ 0x22, 0xf4, 0x01, 0x0a, 0x14, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65,
+ 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x66,
+ 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x10, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72,
+ 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f,
+ 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12,
+ 0x58, 0x0a, 0x19, 0x74, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72,
+ 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75,
+ 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x19,
+ 0x74, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65,
+ 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x68, 0x6f,
+ 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63,
+ 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x22, 0xed, 0x05, 0x0a, 0x0b, 0x4d, 0x65, 0x6c, 0x65,
+ 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69,
+ 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65,
+ 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e,
+ 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49,
+ 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69,
+ 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6f, 0x66,
+ 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12,
+ 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x46,
+ 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c,
+ 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74,
+ 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c,
+ 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64,
+ 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46,
+ 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x63, 0x74,
+ 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74,
+ 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12,
+ 0x28, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d,
+ 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53,
+ 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73,
+ 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a,
+ 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x18, 0x0a, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c,
+ 0x59, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c,
+ 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a,
+ 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x18, 0x0d, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c,
+ 0x59, 0x12, 0x2c, 0x0a, 0x11, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x53, 0x65, 0x6c, 0x66, 0x4c,
+ 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x66, 0x72,
+ 0x61, 0x6d, 0x65, 0x73, 0x53, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x12,
+ 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58,
+ 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66,
+ 0x66, 0x73, 0x65, 0x74, 0x58, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f,
+ 0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69,
+ 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x12, 0x20, 0x0a, 0x0b, 0x68,
+ 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x12, 0x20, 0x0a,
+ 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x18, 0x12, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x12,
+ 0x16, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x77, 0x55, 0x70, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x06, 0x62, 0x6c, 0x6f, 0x77, 0x55, 0x70, 0x22, 0xc9, 0x05, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x74,
+ 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c,
+ 0x0a, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e,
+ 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f,
+ 0x50, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x0a, 0x15, 0x77, 0x69, 0x6c, 0x6c, 0x4b, 0x69, 0x63, 0x6b,
+ 0x49, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x6f, 0x72, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x15, 0x77, 0x69, 0x6c, 0x6c, 0x4b, 0x69, 0x63, 0x6b, 0x49, 0x66, 0x49,
+ 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6f,
+ 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x13,
+ 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61,
+ 0x6e, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c,
+ 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x46,
+ 0x0a, 0x1e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79,
+ 0x6e, 0x63, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61,
+ 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x6f, 0x6c,
+ 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x61,
+ 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73,
+ 0x50, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x64, 0x65,
+ 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x12, 0x3c, 0x0a, 0x19, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69,
+ 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x19, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74,
+ 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x3a,
+ 0x0a, 0x18, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61,
+ 0x74, 0x65, 0x64, 0x44, 0x74, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x18, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61,
+ 0x74, 0x65, 0x64, 0x44, 0x74, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65,
+ 0x6e, 0x64, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65,
+ 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66,
+ 0x73, 0x65, 0x74, 0x58, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x12, 0x2a, 0x0a, 0x10,
0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70,
- 0x12, 0x39, 0x0a, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x67,
- 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0xe7, 0x07, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x67,
- 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xc8, 0x02, 0x0a, 0x11,
- 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x72, 0x61, 0x6d,
- 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69,
- 0x64, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72, 0x72, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x50,
- 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x0a, 0x70,
- 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f,
- 0x73, 0x12, 0x37, 0x0a, 0x0c, 0x6d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74,
- 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
- 0x2e, 0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x0c, 0x6d, 0x65,
- 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x16, 0x62, 0x61,
- 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64,
- 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x62, 0x61, 0x63, 0x6b,
- 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61,
- 0x73, 0x6b, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63,
- 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73,
- 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63,
- 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x4c, 0x69, 0x73,
- 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73,
- 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x13, 0x5a, 0x11, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65,
- 0x5f, 0x73, 0x72, 0x76, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x33,
+ 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f,
+ 0x6e, 0x4d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x12, 0x39, 0x0a, 0x17, 0x66, 0x72, 0x61, 0x6d,
+ 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x18, 0xe7, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x66, 0x72, 0x61, 0x6d,
+ 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x22, 0xc8, 0x02, 0x0a, 0x11, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x6f, 0x77, 0x6e,
+ 0x73, 0x79, 0x6e, 0x63, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x6c, 0x61,
+ 0x79, 0x65, 0x72, 0x73, 0x41, 0x72, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f, 0x77,
+ 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72,
+ 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61,
+ 0x6e, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x37, 0x0a, 0x0c, 0x6d, 0x65, 0x6c,
+ 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75,
+ 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x0c, 0x6d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65,
+ 0x74, 0x73, 0x12, 0x36, 0x0a, 0x16, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63,
+ 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x04, 0x52, 0x16, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e,
+ 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x68,
+ 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72,
+ 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x70, 0x65, 0x63,
+ 0x69, 0x65, 0x73, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52,
+ 0x0d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x13,
+ 0x5a, 0x11, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x73, 0x72, 0x76, 0x2f, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
diff --git a/frontend/assets/plugin_scripts/jsexport.js b/frontend/assets/plugin_scripts/jsexport.js
index 2c5ffa7..6962eff 100644
--- a/frontend/assets/plugin_scripts/jsexport.js
+++ b/frontend/assets/plugin_scripts/jsexport.js
@@ -4747,7 +4747,7 @@ $packages["jsexport/battle"] = (function() {
this.Anchor = Anchor_;
this.Points = Points_;
});
- PlayerDownsync = $pkg.PlayerDownsync = $newType(0, $kindStruct, "battle.PlayerDownsync", true, "jsexport/battle", true, function(Id_, VirtualGridX_, VirtualGridY_, DirX_, DirY_, VelX_, VelY_, Speed_, BattleState_, JoinIndex_, ColliderRadius_, Removed_, Score_, LastMoveGmtMillis_, FramesToRecover_, FramesInChState_, Hp_, MaxHp_, CharacterState_, InAir_, ActiveSkillId_, ActiveSkillHit_) {
+ PlayerDownsync = $pkg.PlayerDownsync = $newType(0, $kindStruct, "battle.PlayerDownsync", true, "jsexport/battle", true, function(Id_, VirtualGridX_, VirtualGridY_, DirX_, DirY_, VelX_, VelY_, Speed_, BattleState_, JoinIndex_, ColliderRadius_, Removed_, Score_, LastMoveGmtMillis_, FramesToRecover_, FramesInChState_, Hp_, MaxHp_, CharacterState_, InAir_, ActiveSkillId_, ActiveSkillHit_, FramesInvinsible_, FramesSelfLockVel_) {
this.$val = this;
if (arguments.length === 0) {
this.Id = 0;
@@ -4772,6 +4772,8 @@ $packages["jsexport/battle"] = (function() {
this.InAir = false;
this.ActiveSkillId = 0;
this.ActiveSkillHit = 0;
+ this.FramesInvinsible = 0;
+ this.FramesSelfLockVel = 0;
return;
}
this.Id = Id_;
@@ -4796,6 +4798,8 @@ $packages["jsexport/battle"] = (function() {
this.InAir = InAir_;
this.ActiveSkillId = ActiveSkillId_;
this.ActiveSkillHit = ActiveSkillHit_;
+ this.FramesInvinsible = FramesInvinsible_;
+ this.FramesSelfLockVel = FramesSelfLockVel_;
});
InputFrameDecoded = $pkg.InputFrameDecoded = $newType(0, $kindStruct, "battle.InputFrameDecoded", true, "jsexport/battle", true, function(Dx_, Dy_, BtnALevel_, BtnBLevel_) {
this.$val = this;
@@ -4819,7 +4823,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_, CancelTransit_) {
+ 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_, FramesSelfLockVel_, HitboxOffsetX_, HitboxOffsetY_, HitboxSizeX_, HitboxSizeY_, BlowUp_, CancelTransit_) {
this.$val = this;
if (arguments.length === 0) {
this.OriginatedRenderFrameId = 0;
@@ -4835,6 +4839,7 @@ $packages["jsexport/battle"] = (function() {
this.Damage = 0;
this.SelfLockVelX = 0;
this.SelfLockVelY = 0;
+ this.FramesSelfLockVel = 0;
this.HitboxOffsetX = 0;
this.HitboxOffsetY = 0;
this.HitboxSizeX = 0;
@@ -4856,6 +4861,7 @@ $packages["jsexport/battle"] = (function() {
this.Damage = Damage_;
this.SelfLockVelX = SelfLockVelX_;
this.SelfLockVelY = SelfLockVelY_;
+ this.FramesSelfLockVel = FramesSelfLockVel_;
this.HitboxOffsetX = HitboxOffsetX_;
this.HitboxOffsetY = HitboxOffsetY_;
this.HitboxSizeX = HitboxSizeX_;
@@ -4866,7 +4872,7 @@ $packages["jsexport/battle"] = (function() {
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, false);
+ this.Bullet = new Bullet.ptr(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, false);
return;
}
this.Bullet = Bullet_;
@@ -4881,7 +4887,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, false);
+ this.Bullet = new Bullet.ptr(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, false);
return;
}
this.VirtualGridX = VirtualGridX_;
@@ -4968,7 +4974,7 @@ $packages["jsexport/battle"] = (function() {
this.Eles = Eles_;
});
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_, Speed_, JumpingInitVelY_, SkillMapper_) {
+ CharacterConfig = $pkg.CharacterConfig = $newType(0, $kindStruct, "battle.CharacterConfig", true, "jsexport/battle", true, function(SpeciesId_, SpeciesName_, InAirIdleFrameIdxTurningPoint_, InAirIdleFrameIdxTurnedCycle_, LayDownFrames_, LayDownFramesToRecover_, GetUpInvinsibleFrames_, GetUpFramesToRecover_, Speed_, JumpingInitVelY_, SkillMapper_) {
this.$val = this;
if (arguments.length === 0) {
this.SpeciesId = 0;
@@ -4977,7 +4983,7 @@ $packages["jsexport/battle"] = (function() {
this.InAirIdleFrameIdxTurnedCycle = 0;
this.LayDownFrames = 0;
this.LayDownFramesToRecover = 0;
- this.GetUpFrames = 0;
+ this.GetUpInvinsibleFrames = 0;
this.GetUpFramesToRecover = 0;
this.Speed = 0;
this.JumpingInitVelY = 0;
@@ -4990,7 +4996,7 @@ $packages["jsexport/battle"] = (function() {
this.InAirIdleFrameIdxTurnedCycle = InAirIdleFrameIdxTurnedCycle_;
this.LayDownFrames = LayDownFrames_;
this.LayDownFramesToRecover = LayDownFramesToRecover_;
- this.GetUpFrames = GetUpFrames_;
+ this.GetUpInvinsibleFrames = GetUpInvinsibleFrames_;
this.GetUpFramesToRecover = GetUpFramesToRecover_;
this.Speed = Speed_;
this.JumpingInitVelY = JumpingInitVelY_;
@@ -5483,7 +5489,7 @@ $packages["jsexport/battle"] = (function() {
return [patternId, jumpedOrNot, effDx, effDy];
};
ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame = function(inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, collisionSpaceOffsetX, collisionSpaceOffsetY, chConfigsOrderedByJoinIndex) {
- var {_1, _2, _entry, _entry$1, _entry$2, _i, _i$1, _i$10, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _index$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$14, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _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, colliderHeight, colliderWidth, colliderWorldHeight, colliderWorldWidth, collision, collision$1, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, halfColliderHeightDiff, halfColliderWidthDiff, halfColliderWorldHeightDiff, 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, playerCollider$3, playerColliders, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, wx, wy, 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, _2, _entry, _entry$1, _entry$2, _i, _i$1, _i$10, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _index$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$14, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _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, colliderHeight, colliderWidth, colliderWorldHeight, colliderWorldWidth, collision, collision$1, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, halfColliderHeightDiff, halfColliderWidthDiff, halfColliderWorldHeightDiff, hardPushbackNorm, hardPushbackNorms, hasLockVel, 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, playerCollider$3, playerColliders, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, wx, wy, 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, xfac$2, $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);
@@ -5493,10 +5499,16 @@ $packages["jsexport/battle"] = (function() {
if (!(_i < _ref.$length)) { break; }
i = _i;
currPlayerDownsync = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
- ((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i] = new PlayerDownsync.ptr(currPlayerDownsync.Id, currPlayerDownsync.VirtualGridX, currPlayerDownsync.VirtualGridY, currPlayerDownsync.DirX, currPlayerDownsync.DirY, currPlayerDownsync.VelX, currPlayerDownsync.VelY, currPlayerDownsync.Speed, currPlayerDownsync.BattleState, currPlayerDownsync.JoinIndex, currPlayerDownsync.ColliderRadius, currPlayerDownsync.Removed, currPlayerDownsync.Score, 0, currPlayerDownsync.FramesToRecover - 1 >> 0, currPlayerDownsync.FramesInChState + 1 >> 0, currPlayerDownsync.Hp, currPlayerDownsync.MaxHp, currPlayerDownsync.CharacterState, true, currPlayerDownsync.ActiveSkillId, currPlayerDownsync.ActiveSkillHit));
+ ((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i] = new PlayerDownsync.ptr(currPlayerDownsync.Id, currPlayerDownsync.VirtualGridX, currPlayerDownsync.VirtualGridY, currPlayerDownsync.DirX, currPlayerDownsync.DirY, currPlayerDownsync.VelX, currPlayerDownsync.VelY, currPlayerDownsync.Speed, currPlayerDownsync.BattleState, currPlayerDownsync.JoinIndex, currPlayerDownsync.ColliderRadius, currPlayerDownsync.Removed, currPlayerDownsync.Score, 0, currPlayerDownsync.FramesToRecover - 1 >> 0, currPlayerDownsync.FramesInChState + 1 >> 0, currPlayerDownsync.Hp, currPlayerDownsync.MaxHp, currPlayerDownsync.CharacterState, true, currPlayerDownsync.ActiveSkillId, currPlayerDownsync.ActiveSkillHit, currPlayerDownsync.FramesInvinsible - 1 >> 0, currPlayerDownsync.FramesSelfLockVel - 1 >> 0));
if (((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i]).FramesToRecover < 0) {
((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i]).FramesToRecover = 0;
}
+ if (((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i]).FramesInvinsible < 0) {
+ ((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i]).FramesInvinsible = 0;
+ }
+ if (((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i]).FramesSelfLockVel < 0) {
+ ((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i]).FramesSelfLockVel = 0;
+ }
_i++;
}
nextRenderFrameMeleeBullets = $makeSlice(sliceType$7, 0, currRenderFrame.MeleeBullets.$length);
@@ -5539,11 +5551,28 @@ $packages["jsexport/battle"] = (function() {
newBullet[0].Bullet.OffenderJoinIndex = joinIndex;
nextRenderFrameMeleeBullets = $append(nextRenderFrameMeleeBullets, newBullet[0]);
thatPlayerInNextFrame.FramesToRecover = skillConfig.RecoveryFrames;
+ hasLockVel = false;
+ if (!((-1 === v.Bullet.SelfLockVelX))) {
+ hasLockVel = true;
+ xfac = 1;
+ if (0 > thatPlayerInNextFrame.DirX) {
+ xfac = -xfac;
+ }
+ thatPlayerInNextFrame.VelX = $imul(xfac, v.Bullet.SelfLockVelX);
+ thatPlayerInNextFrame.FramesSelfLockVel = v.Bullet.FramesSelfLockVel;
+ }
+ if (!((-1 === v.Bullet.SelfLockVelY))) {
+ hasLockVel = true;
+ thatPlayerInNextFrame.VelY = v.Bullet.SelfLockVelY;
+ thatPlayerInNextFrame.FramesSelfLockVel = v.Bullet.FramesSelfLockVel;
+ }
+ if (false === hasLockVel) {
+ if (false === currPlayerDownsync$1.InAir) {
+ thatPlayerInNextFrame.VelX = 0;
+ }
+ }
}
thatPlayerInNextFrame.CharacterState = skillConfig.BoundChState;
- if (false === currPlayerDownsync$1.InAir) {
- thatPlayerInNextFrame.VelX = 0;
- }
_i$1++;
/* continue; */ $s = 1; continue;
}
@@ -5627,11 +5656,11 @@ $packages["jsexport/battle"] = (function() {
/* */ $s = 11; continue;
/* if (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) <= currRenderFrame.Id) && (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) + meleeBullet.Bullet.ActiveFrames >> 0) > currRenderFrame.Id)) { */ case 10:
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;
+ xfac$1 = 1;
if (0 > offender.DirX) {
- xfac = -xfac;
+ xfac$1 = -xfac$1;
}
- _tuple$4 = VirtualGridToWorldPos(offender.VirtualGridX + ($imul(xfac, meleeBullet.Bullet.HitboxOffsetX)) >> 0, offender.VirtualGridY);
+ _tuple$4 = VirtualGridToWorldPos(offender.VirtualGridX + ($imul(xfac$1, meleeBullet.Bullet.HitboxOffsetX)) >> 0, offender.VirtualGridY);
bulletWx = _tuple$4[0];
bulletWy = _tuple$4[1];
_tuple$5 = VirtualGridToWorldPos(meleeBullet.Bullet.HitboxSizeX, meleeBullet.Bullet.HitboxSizeY);
@@ -5757,8 +5786,9 @@ $packages["jsexport/battle"] = (function() {
thatPlayerInNextFrame$2.FramesToRecover = chConfig$2.GetUpFramesToRecover;
}
} else if (10 === thatPlayerInNextFrame$2.CharacterState) {
- if (thatPlayerInNextFrame$2.FramesInChState === chConfig$2.GetUpFrames) {
+ if (0 === thatPlayerInNextFrame$2.FramesToRecover) {
thatPlayerInNextFrame$2.CharacterState = 0;
+ thatPlayerInNextFrame$2.FramesInvinsible = chConfig$2.GetUpInvinsibleFrames;
}
}
}
@@ -5806,6 +5836,10 @@ $packages["jsexport/battle"] = (function() {
_i$8++;
/* continue; */ $s = 27; continue;
}
+ if (0 < t.FramesInvinsible) {
+ _i$8++;
+ /* continue; */ $s = 27; continue;
+ }
_r$5 = CalcPushbacks(0, 0, bulletShape, defenderShape); /* */ $s = 32; case 32: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple$9 = _r$5;
overlapped$1 = _tuple$9[0];
@@ -5813,11 +5847,11 @@ $packages["jsexport/battle"] = (function() {
_i$8++;
/* continue; */ $s = 27; continue;
}
- xfac$1 = 1;
+ xfac$2 = 1;
if (0 > offender$1.DirX) {
- xfac$1 = -xfac$1;
+ xfac$2 = -xfac$2;
}
- _tmp$19 = $imul(xfac$1, v$1.Bullet.PushbackVelX);
+ _tmp$19 = $imul(xfac$2, v$1.Bullet.PushbackVelX);
_tmp$20 = v$1.Bullet.PushbackVelY;
pushbackVelX = _tmp$19;
pushbackVelY = _tmp$20;
@@ -5891,7 +5925,7 @@ $packages["jsexport/battle"] = (function() {
_i$10++;
}
$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, _i, _i$1, _i$10, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _index$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$14, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _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, colliderHeight, colliderWidth, colliderWorldHeight, colliderWorldWidth, collision, collision$1, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, halfColliderHeightDiff, halfColliderWidthDiff, halfColliderWorldHeightDiff, 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, playerCollider$3, playerColliders, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, wx, wy, 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, _2, _entry, _entry$1, _entry$2, _i, _i$1, _i$10, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _index$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$14, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _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, colliderHeight, colliderWidth, colliderWorldHeight, colliderWorldWidth, collision, collision$1, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, halfColliderHeightDiff, halfColliderWidthDiff, halfColliderWorldHeightDiff, hardPushbackNorm, hardPushbackNorms, hasLockVel, 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, playerCollider$3, playerColliders, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, wx, wy, 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, xfac$2, $s};return $f;
};
$pkg.ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame = ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame;
GenerateRectCollider = function(wx, wy, w, h, topPadding, bottomPadding, leftPadding, rightPadding, spaceOffsetX, spaceOffsetY, data, tag) {
@@ -5997,10 +6031,10 @@ $packages["jsexport/battle"] = (function() {
ptrType$12.methods = [{prop: "Put", name: "Put", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Pop", name: "Pop", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "GetArrIdxByOffset", name: "GetArrIdxByOffset", pkg: "", typ: $funcType([$Int32], [$Int32], false)}, {prop: "GetByOffset", name: "GetByOffset", pkg: "", typ: $funcType([$Int32], [$emptyInterface], false)}, {prop: "GetByFrameId", name: "GetByFrameId", pkg: "", typ: $funcType([$Int32], [$emptyInterface], false)}, {prop: "SetByFrameId", name: "SetByFrameId", pkg: "", typ: $funcType([$emptyInterface, $Int32], [$Int32, $Int32, $Int32], false)}];
Vec2D.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: $Float64, tag: ""}, {prop: "Y", name: "Y", embedded: false, exported: true, typ: $Float64, tag: ""}]);
Polygon2D.init("", [{prop: "Anchor", name: "Anchor", embedded: false, exported: true, typ: ptrType$10, tag: ""}, {prop: "Points", name: "Points", embedded: false, exported: true, typ: sliceType$13, tag: ""}]);
- 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: ""}]);
+ 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: ""}, {prop: "FramesInvinsible", name: "FramesInvinsible", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "FramesSelfLockVel", name: "FramesSelfLockVel", 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: ""}, {prop: "CancelTransit", name: "CancelTransit", embedded: false, exported: true, typ: mapType, 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: "FramesSelfLockVel", name: "FramesSelfLockVel", 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: "BoundChState", name: "BoundChState", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Hits", name: "Hits", embedded: false, exported: true, typ: sliceType$2, tag: ""}]);
@@ -6008,7 +6042,7 @@ $packages["jsexport/battle"] = (function() {
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$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: "Speed", name: "Speed", 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: ""}]);
+ 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: "GetUpInvinsibleFrames", name: "GetUpInvinsibleFrames", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "GetUpFramesToRecover", name: "GetUpFramesToRecover", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Speed", name: "Speed", 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() {};
@@ -6016,8 +6050,8 @@ $packages["jsexport/battle"] = (function() {
$r = math.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = resolv.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.DIRECTION_DECODER = new sliceType$1([new sliceType([0, 0]), new sliceType([0, 2]), new sliceType([0, -2]), new sliceType([2, 0]), new sliceType([-2, 0]), new sliceType([1, 1]), new sliceType([-1, -1]), new sliceType([1, -1]), new sliceType([-1, 1])]);
- 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, 120, 800, (function(patternId, currPlayerDownsync) {
+ 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, 5, -1, 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, 10, -1, 0, 1800, 0, 2400, 3200, false, $makeMap($Int.keyFor, [{ k: 1, v: 3 }])))])) }, { k: 3, v: new Skill.ptr(0, 70, 70, 70, 1, 12, new sliceType$2([new MeleeBullet.ptr(new Bullet.ptr(0, 0, 15, 0, 0, 30, 999999999, 9, 200, 700, 10, -1, -1, 0, 3200, 0, 4800, 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, 5, -1, 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, 10, -1, 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, -10, -1, 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, -1, -1, 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, -1, -1, 0, 1200, 0, 3200, 2400, false, false))])) }]);
+ $pkg.Characters = $makeMap($Int.keyFor, [{ k: 0, v: new CharacterConfig.ptr(0, "MonkGirl", 11, 1, 16, 16, 10, 27, 120, 800, (function(patternId, currPlayerDownsync) {
var _entry, _entry$1, _ref, _tuple, _tuple$1, currPlayerDownsync, existent1, existent2, nextSkillId, patternId, skillConfig, v, x, x$1;
if (1 === patternId) {
if (0 === currPlayerDownsync.FramesToRecover) {
@@ -6047,7 +6081,7 @@ $packages["jsexport/battle"] = (function() {
}
}
return -1;
- })) }, { k: 1, v: new CharacterConfig.ptr(1, "KnifeGirl", 9, 1, 16, 16, 30, 27, 140, 750, (function(patternId, currPlayerDownsync) {
+ })) }, { k: 1, v: new CharacterConfig.ptr(1, "KnifeGirl", 9, 1, 16, 16, 10, 27, 140, 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) {
@@ -6081,7 +6115,7 @@ $packages["jsexport/battle"] = (function() {
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 }]);
- nonAttackingSet = $makeMap($Int32.keyFor, []);
+ nonAttackingSet = $makeMap($Int32.keyFor, [{ k: 0, v: true }, { k: 1, v: true }, { k: 4, v: true }, { k: 5, v: true }, { k: 3, v: true }, { k: 7, v: true }, { k: 8, v: true }, { k: 9, v: true }, { k: 10, v: true }]);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
@@ -6108,8 +6142,8 @@ $packages["jsexport"] = (function() {
funcType = $funcType([$Float64, $Float64], [ptrType$5], false);
funcType$1 = $funcType([ptrType, sliceType$1], [ptrType$5], false);
funcType$2 = $funcType([ptrType$1], [ptrType$5], false);
- funcType$3 = $funcType([$Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Bool], [ptrType$5], false);
- funcType$4 = $funcType([$Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Bool], [ptrType$5], false);
+ funcType$3 = $funcType([$Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Bool], [ptrType$5], false);
+ funcType$4 = $funcType([$Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Int32, $Bool], [ptrType$5], false);
funcType$5 = $funcType([$Int32, sliceType$2, sliceType$3], [ptrType$5], false);
funcType$6 = $funcType([$Int, $Int, $Int, $Int], [ptrType$5], false);
funcType$7 = $funcType([$Int32, sliceType, $Uint64], [ptrType$5], false);
@@ -6178,14 +6212,14 @@ $packages["jsexport"] = (function() {
return js.MakeWrapper(new battle.Barrier.ptr(boundary));
};
$pkg.NewBarrierJs = NewBarrierJs;
- NewPlayerDownsyncJs = function(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY, framesToRecover, framesInChState, activeSkillId, activeSkillHit, speed, battleState, characterState, joinIndex, hp, maxHp, colliderRadius, inAir) {
- var activeSkillHit, activeSkillId, battleState, characterState, colliderRadius, dirX, dirY, framesInChState, framesToRecover, hp, id, inAir, joinIndex, maxHp, speed, velX, velY, virtualGridX, virtualGridY;
- return js.MakeWrapper(new battle.PlayerDownsync.ptr(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY, speed, battleState, joinIndex, colliderRadius, false, 0, 0, framesToRecover, framesInChState, hp, maxHp, characterState, inAir, activeSkillId, activeSkillHit));
+ NewPlayerDownsyncJs = function(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY, framesToRecover, framesInChState, activeSkillId, activeSkillHit, framesInvinsible, framesSelfLockVel, speed, battleState, characterState, joinIndex, hp, maxHp, colliderRadius, inAir) {
+ var activeSkillHit, activeSkillId, battleState, characterState, colliderRadius, dirX, dirY, framesInChState, framesInvinsible, framesSelfLockVel, framesToRecover, hp, id, inAir, joinIndex, maxHp, speed, velX, velY, virtualGridX, virtualGridY;
+ return js.MakeWrapper(new battle.PlayerDownsync.ptr(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY, speed, battleState, joinIndex, colliderRadius, false, 0, 0, framesToRecover, framesInChState, hp, maxHp, characterState, inAir, activeSkillId, activeSkillHit, framesInvinsible, 0));
};
$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, false)));
+ NewMeleeBulletJs = function(originatedRenderFrameId, offenderJoinIndex, startupFrames, cancellableStFrame, cancellableEdFrame, activeFrames, hitStunFrames, blockStunFrames, pushbackVelX, pushbackVelY, damage, selfLockVelX, selfLockVelY, framesSelfLockVel, hitboxOffsetX, hitboxOffsetY, hitboxSizeX, hitboxSizeY, blowUp) {
+ var activeFrames, blockStunFrames, blowUp, cancellableEdFrame, cancellableStFrame, damage, framesSelfLockVel, 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, framesSelfLockVel, hitboxOffsetX, hitboxOffsetY, hitboxSizeX, hitboxSizeY, blowUp, false)));
};
$pkg.NewMeleeBulletJs = NewMeleeBulletJs;
NewRoomDownsyncFrameJs = function(id, playersArr, meleeBullets) {
diff --git a/frontend/assets/resources/animation/MonkGirl/MonkGirl.plist b/frontend/assets/resources/animation/MonkGirl/MonkGirl.plist
index a7ecf2c..155a5aa 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
- {{1211,188},{62,92}}
+ {{1277,188},{62,92}}
textureRotated
@@ -30,9 +30,9 @@
spriteSourceSize
{77,99}
textureRect
- {{603,325},{77,99}}
+ {{748,0},{77,99}}
textureRotated
-
+
Atk1_2.png
@@ -45,7 +45,7 @@
spriteSourceSize
{112,99}
textureRect
- {{407,227},{112,99}}
+ {{408,348},{112,99}}
textureRotated
@@ -60,7 +60,7 @@
spriteSourceSize
{96,100}
textureRect
- {{727,101},{96,100}}
+ {{664,315},{96,100}}
textureRotated
@@ -75,7 +75,7 @@
spriteSourceSize
{62,92}
textureRect
- {{1211,188},{62,92}}
+ {{1277,188},{62,92}}
textureRotated
@@ -90,7 +90,7 @@
spriteSourceSize
{58,97}
textureRect
- {{770,402},{58,97}}
+ {{1023,194},{58,97}}
textureRotated
@@ -105,7 +105,7 @@
spriteSourceSize
{60,90}
textureRect
- {{1324,435},{60,90}}
+ {{1393,141},{60,90}}
textureRotated
@@ -120,7 +120,7 @@
spriteSourceSize
{84,96}
textureRect
- {{823,100},{84,96}}
+ {{1087,97},{84,96}}
textureRotated
@@ -135,7 +135,7 @@
spriteSourceSize
{55,100}
textureRect
- {{776,0},{55,100}}
+ {{731,101},{55,100}}
textureRotated
@@ -150,9 +150,9 @@
spriteSourceSize
{63,100}
textureRect
- {{407,339},{63,100}}
+ {{717,206},{63,100}}
textureRotated
-
+
Atk2_5.png
@@ -165,7 +165,7 @@
spriteSourceSize
{66,101}
textureRect
- {{710,0},{66,101}}
+ {{682,0},{66,101}}
textureRotated
@@ -180,7 +180,7 @@
spriteSourceSize
{80,95}
textureRect
- {{907,96},{80,95}}
+ {{1126,0},{80,95}}
textureRotated
@@ -195,9 +195,9 @@
spriteSourceSize
{116,109}
textureRect
- {{340,402},{116,109}}
+ {{315,119},{116,109}}
textureRotated
-
+
Atk2_8.png
@@ -210,7 +210,7 @@
spriteSourceSize
{102,96}
textureRect
- {{646,210},{102,96}}
+ {{621,213},{102,96}}
textureRotated
@@ -225,7 +225,7 @@
spriteSourceSize
{75,102}
textureRect
- {{0,437},{75,102}}
+ {{139,421},{75,102}}
textureRotated
@@ -240,7 +240,7 @@
spriteSourceSize
{66,109}
textureRect
- {{456,402},{66,109}}
+ {{469,110},{66,109}}
textureRotated
@@ -255,7 +255,7 @@
spriteSourceSize
{66,113}
textureRect
- {{403,114},{66,113}}
+ {{355,235},{66,113}}
textureRotated
@@ -330,7 +330,7 @@
spriteSourceSize
{78,131}
textureRect
- {{78,0},{78,131}}
+ {{137,290},{78,131}}
textureRotated
@@ -345,9 +345,9 @@
spriteSourceSize
{59,139}
textureRect
- {{78,290},{59,139}}
+ {{0,437},{59,139}}
textureRotated
-
+
Atk3_8.png
@@ -360,7 +360,7 @@
spriteSourceSize
{59,139}
textureRect
- {{137,290},{59,139}}
+ {{78,290},{59,139}}
textureRotated
@@ -375,9 +375,9 @@
spriteSourceSize
{62,97}
textureRect
- {{708,402},{62,97}}
+ {{507,434},{62,97}}
textureRotated
-
+
Atked1_1.png
@@ -390,7 +390,7 @@
spriteSourceSize
{73,95}
textureRect
- {{1001,190},{73,95}}
+ {{1171,95},{73,95}}
textureRotated
@@ -405,7 +405,7 @@
spriteSourceSize
{90,89}
textureRect
- {{1260,93},{90,89}}
+ {{1324,0},{90,89}}
textureRotated
@@ -420,7 +420,7 @@
spriteSourceSize
{95,80}
textureRect
- {{896,394},{95,80}}
+ {{1084,291},{95,80}}
textureRotated
@@ -435,7 +435,7 @@
spriteSourceSize
{80,95}
textureRect
- {{976,0},{80,95}}
+ {{1010,388},{80,95}}
textureRotated
@@ -450,9 +450,9 @@
spriteSourceSize
{83,92}
textureRect
- {{194,429},{83,92}}
+ {{1208,382},{83,92}}
textureRotated
-
+
BlownUp1_3.png
@@ -465,9 +465,9 @@
spriteSourceSize
{92,83}
textureRect
- {{102,429},{92,83}}
+ {{1224,284},{92,83}}
textureRotated
-
+
GetUp1_0.png
@@ -480,7 +480,7 @@
spriteSourceSize
{112,45}
textureRect
- {{508,0},{112,45}}
+ {{424,115},{112,45}}
textureRotated
@@ -495,7 +495,7 @@
spriteSourceSize
{88,69}
textureRect
- {{1236,435},{88,69}}
+ {{604,427},{88,69}}
textureRotated
@@ -510,9 +510,9 @@
spriteSourceSize
{91,90}
textureRect
- {{702,312},{91,90}}
+ {{1303,93},{91,90}}
textureRotated
-
+
GetUp1_3.png
@@ -525,7 +525,7 @@
spriteSourceSize
{120,93}
textureRect
- {{254,124},{120,93}}
+ {{222,123},{120,93}}
textureRotated
@@ -540,9 +540,9 @@
spriteSourceSize
{100,112}
textureRect
- {{408,0},{100,112}}
+ {{241,396},{100,112}}
textureRotated
-
+
GetUp1_5.png
@@ -555,7 +555,7 @@
spriteSourceSize
{106,93}
textureRect
- {{553,0},{106,93}}
+ {{507,328},{106,93}}
textureRotated
@@ -570,7 +570,7 @@
spriteSourceSize
{106,79}
textureRect
- {{567,219},{106,79}}
+ {{542,217},{106,79}}
textureRotated
@@ -585,9 +585,9 @@
spriteSourceSize
{73,87}
textureRect
- {{1262,0},{73,87}}
+ {{1307,280},{73,87}}
textureRotated
-
+
GetUp1_8.png
@@ -600,7 +600,7 @@
spriteSourceSize
{67,90}
textureRect
- {{1341,368},{67,90}}
+ {{1413,74},{67,90}}
textureRotated
@@ -615,7 +615,7 @@
spriteSourceSize
{58,97}
textureRect
- {{770,402},{58,97}}
+ {{1023,194},{58,97}}
textureRotated
@@ -630,7 +630,7 @@
spriteSourceSize
{58,95}
textureRect
- {{1050,381},{58,95}}
+ {{1090,386},{58,95}}
textureRotated
@@ -645,7 +645,7 @@
spriteSourceSize
{58,97}
textureRect
- {{742,201},{58,97}}
+ {{1029,97},{58,97}}
textureRotated
@@ -660,7 +660,7 @@
spriteSourceSize
{60,94}
textureRect
- {{1146,284},{60,94}}
+ {{1148,386},{60,94}}
textureRotated
@@ -675,7 +675,7 @@
spriteSourceSize
{58,97}
textureRect
- {{793,298},{58,97}}
+ {{1081,194},{58,97}}
textureRotated
@@ -690,7 +690,7 @@
spriteSourceSize
{58,97}
textureRect
- {{800,201},{58,97}}
+ {{1068,0},{58,97}}
textureRotated
@@ -705,7 +705,7 @@
spriteSourceSize
{60,95}
textureRect
- {{1065,95},{60,95}}
+ {{1206,0},{60,95}}
textureRotated
@@ -720,7 +720,7 @@
spriteSourceSize
{60,94}
textureRect
- {{1151,189},{60,94}}
+ {{1164,288},{60,94}}
textureRotated
@@ -735,7 +735,7 @@
spriteSourceSize
{59,93}
textureRect
- {{1203,0},{59,93}}
+ {{789,403},{59,93}}
textureRotated
@@ -750,7 +750,7 @@
spriteSourceSize
{58,93}
textureRect
- {{1206,283},{58,93}}
+ {{1266,0},{58,93}}
textureRotated
@@ -765,7 +765,7 @@
spriteSourceSize
{59,93}
textureRect
- {{1177,378},{59,93}}
+ {{1244,95},{59,93}}
textureRotated
@@ -780,7 +780,7 @@
spriteSourceSize
{60,94}
textureRect
- {{1200,94},{60,94}}
+ {{1217,190},{60,94}}
textureRotated
@@ -795,9 +795,9 @@
spriteSourceSize
{77,68}
textureRect
- {{1264,341},{77,68}}
+ {{1437,417},{77,68}}
textureRotated
-
+
InAirAtk1_1.png
@@ -810,7 +810,7 @@
spriteSourceSize
{118,76}
textureRect
- {{267,284},{118,76}}
+ {{215,278},{118,76}}
textureRotated
@@ -825,7 +825,7 @@
spriteSourceSize
{104,65}
textureRect
- {{595,106},{104,65}}
+ {{617,0},{104,65}}
textureRotated
@@ -840,7 +840,7 @@
spriteSourceSize
{80,66}
textureRect
- {{1349,0},{80,66}}
+ {{1380,285},{80,66}}
textureRotated
@@ -855,7 +855,7 @@
spriteSourceSize
{102,67}
textureRect
- {{660,104},{102,67}}
+ {{664,104},{102,67}}
textureRotated
@@ -870,9 +870,9 @@
spriteSourceSize
{79,66}
textureRect
- {{1349,66},{79,66}}
+ {{1339,201},{79,66}}
textureRotated
-
+
InAirAtk1_3.png
@@ -885,7 +885,7 @@
spriteSourceSize
{124,64}
textureRect
- {{156,0},{124,64}}
+ {{78,0},{124,64}}
textureRotated
@@ -900,7 +900,7 @@
spriteSourceSize
{104,64}
textureRect
- {{646,0},{104,64}}
+ {{600,323},{104,64}}
textureRotated
@@ -915,9 +915,9 @@
spriteSourceSize
{79,61}
textureRect
- {{1264,280},{79,61}}
+ {{1376,417},{79,61}}
textureRotated
-
+
InAirAtk1_6.png
@@ -930,7 +930,7 @@
spriteSourceSize
{124,64}
textureRect
- {{160,124},{124,64}}
+ {{142,0},{124,64}}
textureRotated
@@ -945,7 +945,7 @@
spriteSourceSize
{106,67}
textureRect
- {{641,402},{106,67}}
+ {{597,107},{106,67}}
textureRotated
@@ -960,7 +960,7 @@
spriteSourceSize
{79,66}
textureRect
- {{1349,132},{79,66}}
+ {{1380,351},{79,66}}
textureRotated
@@ -975,7 +975,7 @@
spriteSourceSize
{118,64}
textureRect
- {{343,244},{118,64}}
+ {{291,243},{118,64}}
textureRotated
@@ -990,7 +990,7 @@
spriteSourceSize
{71,119}
textureRect
- {{282,0},{71,119}}
+ {{242,0},{71,119}}
textureRotated
@@ -1005,7 +1005,7 @@
spriteSourceSize
{71,119}
textureRect
- {{196,284},{71,119}}
+ {{313,0},{71,119}}
textureRotated
@@ -1020,7 +1020,7 @@
spriteSourceSize
{55,114}
textureRect
- {{353,0},{55,114}}
+ {{353,361},{55,114}}
textureRotated
@@ -1035,7 +1035,7 @@
spriteSourceSize
{62,124}
textureRect
- {{220,0},{62,124}}
+ {{160,124},{62,124}}
textureRotated
@@ -1050,9 +1050,9 @@
spriteSourceSize
{74,90}
textureRect
- {{1273,183},{74,90}}
+ {{1413,0},{74,90}}
textureRotated
-
+
InAirIdle1_3.png
@@ -1065,7 +1065,7 @@
spriteSourceSize
{110,54}
textureRect
- {{286,402},{110,54}}
+ {{440,0},{110,54}}
textureRotated
@@ -1080,9 +1080,9 @@
spriteSourceSize
{85,88}
textureRect
- {{1343,283},{85,88}}
+ {{1291,376},{85,88}}
textureRotated
-
+
InAirIdle1_5.png
@@ -1095,7 +1095,7 @@
spriteSourceSize
{64,112}
textureRect
- {{469,112},{64,112}}
+ {{421,235},{64,112}}
textureRotated
@@ -1110,7 +1110,7 @@
spriteSourceSize
{62,107}
textureRect
- {{533,112},{62,107}}
+ {{555,0},{62,107}}
textureRotated
@@ -1125,9 +1125,9 @@
spriteSourceSize
{85,84}
textureRect
- {{1347,198},{85,84}}
+ {{1405,201},{85,84}}
textureRotated
-
+
InAirIdle1_8.png
@@ -1140,7 +1140,7 @@
spriteSourceSize
{109,61}
textureRect
- {{506,224},{109,61}}
+ {{494,0},{109,61}}
textureRotated
@@ -1155,7 +1155,7 @@
spriteSourceSize
{78,95}
textureRect
- {{916,292},{78,95}}
+ {{1139,193},{78,95}}
textureRotated
@@ -1170,7 +1170,7 @@
spriteSourceSize
{115,56}
textureRect
- {{347,119},{115,56}}
+ {{384,0},{115,56}}
textureRotated
@@ -1185,7 +1185,7 @@
spriteSourceSize
{109,57}
textureRect
- {{522,402},{109,57}}
+ {{485,219},{109,57}}
textureRotated
@@ -1200,7 +1200,7 @@
spriteSourceSize
{108,62}
textureRect
- {{579,402},{108,62}}
+ {{535,109},{108,62}}
textureRotated
@@ -1215,9 +1215,9 @@
spriteSourceSize
{123,36}
textureRect
- {{160,248},{123,36}}
+ {{206,0},{123,36}}
textureRotated
-
+
LayDown1_4.png
@@ -1230,22 +1230,7 @@
spriteSourceSize
{123,30}
textureRect
- {{224,124},{123,30}}
- textureRotated
-
-
- Walking_0.png
-
- aliases
-
- spriteOffset
- {0,0}
- spriteSize
- {78,95}
- spriteSourceSize
- {78,95}
- textureRect
- {{923,191},{78,95}}
+ {{160,248},{123,30}}
textureRotated
@@ -1256,13 +1241,13 @@
spriteOffset
{0,0}
spriteSize
- {75,96}
+ {81,97}
spriteSourceSize
- {75,96}
+ {81,97}
textureRect
- {{831,0},{75,96}}
+ {{692,415},{81,97}}
textureRotated
-
+
Walking_10.png
@@ -1271,11 +1256,11 @@
spriteOffset
{0,0}
spriteSize
- {65,96}
+ {81,97}
spriteSourceSize
- {65,96}
+ {81,97}
textureRect
- {{851,298},{65,96}}
+ {{760,306},{81,97}}
textureRotated
@@ -1286,11 +1271,11 @@
spriteOffset
{0,0}
spriteSize
- {65,96}
+ {81,97}
spriteSourceSize
- {65,96}
+ {81,97}
textureRect
- {{858,196},{65,96}}
+ {{780,201},{81,97}}
textureRotated
@@ -1301,11 +1286,11 @@
spriteOffset
{0,0}
spriteSize
- {74,95}
+ {81,97}
spriteSourceSize
- {74,95}
+ {81,97}
textureRect
- {{976,387},{74,95}}
+ {{786,99},{81,97}}
textureRotated
@@ -1316,11 +1301,11 @@
spriteOffset
{0,0}
spriteSize
- {75,94}
+ {81,97}
spriteSourceSize
- {75,94}
+ {81,97}
textureRect
- {{1125,95},{75,94}}
+ {{825,0},{81,97}}
textureRotated
@@ -1331,11 +1316,11 @@
spriteOffset
{0,0}
spriteSize
- {70,94}
+ {81,97}
spriteSourceSize
- {70,94}
+ {81,97}
textureRect
- {{1133,0},{70,94}}
+ {{841,298},{81,97}}
textureRotated
@@ -1346,11 +1331,26 @@
spriteOffset
{0,0}
spriteSize
- {78,94}
+ {81,97}
spriteSourceSize
- {78,94}
+ {81,97}
textureRect
- {{1068,285},{78,94}}
+ {{848,395},{81,97}}
+ textureRotated
+
+
+ Walking_16.png
+
+ aliases
+
+ spriteOffset
+ {0,0}
+ spriteSize
+ {81,97}
+ spriteSourceSize
+ {81,97}
+ textureRect
+ {{861,196},{81,97}}
textureRotated
@@ -1361,13 +1361,13 @@
spriteOffset
{0,0}
spriteSize
- {69,96}
+ {81,97}
spriteSourceSize
- {69,96}
+ {81,97}
textureRect
- {{507,333},{69,96}}
+ {{867,97},{81,97}}
textureRotated
-
+
Walking_3.png
@@ -1376,11 +1376,11 @@
spriteOffset
{0,0}
spriteSize
- {70,96}
+ {81,97}
spriteSourceSize
- {70,96}
+ {81,97}
textureRect
- {{906,0},{70,96}}
+ {{906,0},{81,97}}
textureRotated
@@ -1391,11 +1391,11 @@
spriteOffset
{0,0}
spriteSize
- {78,95}
+ {81,97}
spriteSourceSize
- {78,95}
+ {81,97}
textureRect
- {{987,95},{78,95}}
+ {{922,293},{81,97}}
textureRotated
@@ -1406,11 +1406,11 @@
spriteOffset
{0,0}
spriteSize
- {77,95}
+ {81,97}
spriteSourceSize
- {77,95}
+ {81,97}
textureRect
- {{1056,0},{77,95}}
+ {{942,194},{81,97}}
textureRotated
@@ -1421,11 +1421,11 @@
spriteOffset
{0,0}
spriteSize
- {69,94}
+ {81,97}
spriteSourceSize
- {69,94}
+ {81,97}
textureRect
- {{1108,379},{69,94}}
+ {{948,97},{81,97}}
textureRotated
@@ -1436,11 +1436,11 @@
spriteOffset
{0,0}
spriteSize
- {77,94}
+ {81,97}
spriteSourceSize
- {77,94}
+ {81,97}
textureRect
- {{1074,190},{77,94}}
+ {{987,0},{81,97}}
textureRotated
@@ -1451,11 +1451,11 @@
spriteOffset
{0,0}
spriteSize
- {74,95}
+ {81,97}
spriteSourceSize
- {74,95}
+ {81,97}
textureRect
- {{994,286},{74,95}}
+ {{929,390},{81,97}}
textureRotated
@@ -1466,11 +1466,11 @@
spriteOffset
{0,0}
spriteSize
- {68,96}
+ {81,97}
spriteSourceSize
- {68,96}
+ {81,97}
textureRect
- {{828,395},{68,96}}
+ {{1003,291},{81,97}}
textureRotated
@@ -1486,9 +1486,9 @@
realTextureFileName
MonkGirl.png
size
- {1431,512}
+ {1505,496}
smartupdate
- $TexturePacker:SmartUpdate:b61c8127138360fc5127f38c3072d44e:e6a91336f913f21d08fc641d99741429:7b088363a1f16e4f4ff313aecc52227b$
+ $TexturePacker:SmartUpdate:8383576ddc6ed0fb9e6adcbc98ec9c07:b0caf27c9f592741053365a3d87b3473: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 d76ba3e..e72a3d5 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": 1431,
- "height": 512
+ "width": 1505,
+ "height": 496
},
"type": "Texture Packer",
"subMetas": {
@@ -17,7 +17,7 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1211,
+ "trimX": 1277,
"trimY": 188,
"width": 62,
"height": 92,
@@ -36,11 +36,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 603,
- "trimY": 325,
+ "trimX": 748,
+ "trimY": 0,
"width": 77,
"height": 99,
"rawWidth": 77,
@@ -61,8 +61,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 407,
- "trimY": 227,
+ "trimX": 408,
+ "trimY": 348,
"width": 112,
"height": 99,
"rawWidth": 112,
@@ -83,8 +83,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 727,
- "trimY": 101,
+ "trimX": 664,
+ "trimY": 315,
"width": 96,
"height": 100,
"rawWidth": 96,
@@ -105,7 +105,7 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1211,
+ "trimX": 1277,
"trimY": 188,
"width": 62,
"height": 92,
@@ -127,8 +127,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 770,
- "trimY": 402,
+ "trimX": 1023,
+ "trimY": 194,
"width": 58,
"height": 97,
"rawWidth": 58,
@@ -149,8 +149,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1324,
- "trimY": 435,
+ "trimX": 1393,
+ "trimY": 141,
"width": 60,
"height": 90,
"rawWidth": 60,
@@ -171,8 +171,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 823,
- "trimY": 100,
+ "trimX": 1087,
+ "trimY": 97,
"width": 84,
"height": 96,
"rawWidth": 84,
@@ -193,8 +193,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 776,
- "trimY": 0,
+ "trimX": 731,
+ "trimY": 101,
"width": 55,
"height": 100,
"rawWidth": 55,
@@ -212,11 +212,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 407,
- "trimY": 339,
+ "trimX": 717,
+ "trimY": 206,
"width": 63,
"height": 100,
"rawWidth": 63,
@@ -237,7 +237,7 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 710,
+ "trimX": 682,
"trimY": 0,
"width": 66,
"height": 101,
@@ -259,8 +259,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 907,
- "trimY": 96,
+ "trimX": 1126,
+ "trimY": 0,
"width": 80,
"height": 95,
"rawWidth": 80,
@@ -278,11 +278,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 340,
- "trimY": 402,
+ "trimX": 315,
+ "trimY": 119,
"width": 116,
"height": 109,
"rawWidth": 116,
@@ -303,8 +303,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 646,
- "trimY": 210,
+ "trimX": 621,
+ "trimY": 213,
"width": 102,
"height": 96,
"rawWidth": 102,
@@ -325,8 +325,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 0,
- "trimY": 437,
+ "trimX": 139,
+ "trimY": 421,
"width": 75,
"height": 102,
"rawWidth": 75,
@@ -347,8 +347,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 456,
- "trimY": 402,
+ "trimX": 469,
+ "trimY": 110,
"width": 66,
"height": 109,
"rawWidth": 66,
@@ -369,8 +369,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 403,
- "trimY": 114,
+ "trimX": 355,
+ "trimY": 235,
"width": 66,
"height": 113,
"rawWidth": 66,
@@ -479,8 +479,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 78,
- "trimY": 0,
+ "trimX": 137,
+ "trimY": 290,
"width": 78,
"height": 131,
"rawWidth": 78,
@@ -498,11 +498,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 78,
- "trimY": 290,
+ "trimX": 0,
+ "trimY": 437,
"width": 59,
"height": 139,
"rawWidth": 59,
@@ -523,7 +523,7 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 137,
+ "trimX": 78,
"trimY": 290,
"width": 59,
"height": 139,
@@ -542,11 +542,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 708,
- "trimY": 402,
+ "trimX": 507,
+ "trimY": 434,
"width": 62,
"height": 97,
"rawWidth": 62,
@@ -567,8 +567,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1001,
- "trimY": 190,
+ "trimX": 1171,
+ "trimY": 95,
"width": 73,
"height": 95,
"rawWidth": 73,
@@ -589,8 +589,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1260,
- "trimY": 93,
+ "trimX": 1324,
+ "trimY": 0,
"width": 90,
"height": 89,
"rawWidth": 90,
@@ -611,8 +611,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 896,
- "trimY": 394,
+ "trimX": 1084,
+ "trimY": 291,
"width": 95,
"height": 80,
"rawWidth": 95,
@@ -633,8 +633,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 976,
- "trimY": 0,
+ "trimX": 1010,
+ "trimY": 388,
"width": 80,
"height": 95,
"rawWidth": 80,
@@ -652,11 +652,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 194,
- "trimY": 429,
+ "trimX": 1208,
+ "trimY": 382,
"width": 83,
"height": 92,
"rawWidth": 83,
@@ -674,11 +674,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 102,
- "trimY": 429,
+ "trimX": 1224,
+ "trimY": 284,
"width": 92,
"height": 83,
"rawWidth": 92,
@@ -699,8 +699,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 508,
- "trimY": 0,
+ "trimX": 424,
+ "trimY": 115,
"width": 112,
"height": 45,
"rawWidth": 112,
@@ -721,8 +721,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1236,
- "trimY": 435,
+ "trimX": 604,
+ "trimY": 427,
"width": 88,
"height": 69,
"rawWidth": 88,
@@ -740,11 +740,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 702,
- "trimY": 312,
+ "trimX": 1303,
+ "trimY": 93,
"width": 91,
"height": 90,
"rawWidth": 91,
@@ -765,8 +765,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 254,
- "trimY": 124,
+ "trimX": 222,
+ "trimY": 123,
"width": 120,
"height": 93,
"rawWidth": 120,
@@ -784,11 +784,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 408,
- "trimY": 0,
+ "trimX": 241,
+ "trimY": 396,
"width": 100,
"height": 112,
"rawWidth": 100,
@@ -809,8 +809,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 553,
- "trimY": 0,
+ "trimX": 507,
+ "trimY": 328,
"width": 106,
"height": 93,
"rawWidth": 106,
@@ -831,8 +831,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 567,
- "trimY": 219,
+ "trimX": 542,
+ "trimY": 217,
"width": 106,
"height": 79,
"rawWidth": 106,
@@ -850,11 +850,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1262,
- "trimY": 0,
+ "trimX": 1307,
+ "trimY": 280,
"width": 73,
"height": 87,
"rawWidth": 73,
@@ -875,8 +875,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1341,
- "trimY": 368,
+ "trimX": 1413,
+ "trimY": 74,
"width": 67,
"height": 90,
"rawWidth": 67,
@@ -897,8 +897,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 770,
- "trimY": 402,
+ "trimX": 1023,
+ "trimY": 194,
"width": 58,
"height": 97,
"rawWidth": 58,
@@ -919,8 +919,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1050,
- "trimY": 381,
+ "trimX": 1090,
+ "trimY": 386,
"width": 58,
"height": 95,
"rawWidth": 58,
@@ -941,8 +941,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 742,
- "trimY": 201,
+ "trimX": 1029,
+ "trimY": 97,
"width": 58,
"height": 97,
"rawWidth": 58,
@@ -963,8 +963,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1146,
- "trimY": 284,
+ "trimX": 1148,
+ "trimY": 386,
"width": 60,
"height": 94,
"rawWidth": 60,
@@ -985,8 +985,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 793,
- "trimY": 298,
+ "trimX": 1081,
+ "trimY": 194,
"width": 58,
"height": 97,
"rawWidth": 58,
@@ -1007,8 +1007,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 800,
- "trimY": 201,
+ "trimX": 1068,
+ "trimY": 0,
"width": 58,
"height": 97,
"rawWidth": 58,
@@ -1029,8 +1029,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1065,
- "trimY": 95,
+ "trimX": 1206,
+ "trimY": 0,
"width": 60,
"height": 95,
"rawWidth": 60,
@@ -1051,8 +1051,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1151,
- "trimY": 189,
+ "trimX": 1164,
+ "trimY": 288,
"width": 60,
"height": 94,
"rawWidth": 60,
@@ -1073,8 +1073,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1203,
- "trimY": 0,
+ "trimX": 789,
+ "trimY": 403,
"width": 59,
"height": 93,
"rawWidth": 59,
@@ -1095,8 +1095,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1206,
- "trimY": 283,
+ "trimX": 1266,
+ "trimY": 0,
"width": 58,
"height": 93,
"rawWidth": 58,
@@ -1117,8 +1117,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1177,
- "trimY": 378,
+ "trimX": 1244,
+ "trimY": 95,
"width": 59,
"height": 93,
"rawWidth": 59,
@@ -1139,8 +1139,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1200,
- "trimY": 94,
+ "trimX": 1217,
+ "trimY": 190,
"width": 60,
"height": 94,
"rawWidth": 60,
@@ -1158,11 +1158,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1264,
- "trimY": 341,
+ "trimX": 1437,
+ "trimY": 417,
"width": 77,
"height": 68,
"rawWidth": 77,
@@ -1183,8 +1183,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 267,
- "trimY": 284,
+ "trimX": 215,
+ "trimY": 278,
"width": 118,
"height": 76,
"rawWidth": 118,
@@ -1205,8 +1205,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 595,
- "trimY": 106,
+ "trimX": 617,
+ "trimY": 0,
"width": 104,
"height": 65,
"rawWidth": 104,
@@ -1227,8 +1227,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1349,
- "trimY": 0,
+ "trimX": 1380,
+ "trimY": 285,
"width": 80,
"height": 66,
"rawWidth": 80,
@@ -1249,7 +1249,7 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 660,
+ "trimX": 664,
"trimY": 104,
"width": 102,
"height": 67,
@@ -1268,11 +1268,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1349,
- "trimY": 66,
+ "trimX": 1339,
+ "trimY": 201,
"width": 79,
"height": 66,
"rawWidth": 79,
@@ -1293,7 +1293,7 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 156,
+ "trimX": 78,
"trimY": 0,
"width": 124,
"height": 64,
@@ -1315,8 +1315,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 646,
- "trimY": 0,
+ "trimX": 600,
+ "trimY": 323,
"width": 104,
"height": 64,
"rawWidth": 104,
@@ -1334,11 +1334,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1264,
- "trimY": 280,
+ "trimX": 1376,
+ "trimY": 417,
"width": 79,
"height": 61,
"rawWidth": 79,
@@ -1359,8 +1359,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 160,
- "trimY": 124,
+ "trimX": 142,
+ "trimY": 0,
"width": 124,
"height": 64,
"rawWidth": 124,
@@ -1381,8 +1381,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 641,
- "trimY": 402,
+ "trimX": 597,
+ "trimY": 107,
"width": 106,
"height": 67,
"rawWidth": 106,
@@ -1403,8 +1403,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1349,
- "trimY": 132,
+ "trimX": 1380,
+ "trimY": 351,
"width": 79,
"height": 66,
"rawWidth": 79,
@@ -1425,8 +1425,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 343,
- "trimY": 244,
+ "trimX": 291,
+ "trimY": 243,
"width": 118,
"height": 64,
"rawWidth": 118,
@@ -1447,7 +1447,7 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 282,
+ "trimX": 242,
"trimY": 0,
"width": 71,
"height": 119,
@@ -1469,8 +1469,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 196,
- "trimY": 284,
+ "trimX": 313,
+ "trimY": 0,
"width": 71,
"height": 119,
"rawWidth": 71,
@@ -1492,7 +1492,7 @@
"offsetX": 0,
"offsetY": 0,
"trimX": 353,
- "trimY": 0,
+ "trimY": 361,
"width": 55,
"height": 114,
"rawWidth": 55,
@@ -1513,8 +1513,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 220,
- "trimY": 0,
+ "trimX": 160,
+ "trimY": 124,
"width": 62,
"height": 124,
"rawWidth": 62,
@@ -1532,11 +1532,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1273,
- "trimY": 183,
+ "trimX": 1413,
+ "trimY": 0,
"width": 74,
"height": 90,
"rawWidth": 74,
@@ -1557,8 +1557,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 286,
- "trimY": 402,
+ "trimX": 440,
+ "trimY": 0,
"width": 110,
"height": 54,
"rawWidth": 110,
@@ -1576,11 +1576,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1343,
- "trimY": 283,
+ "trimX": 1291,
+ "trimY": 376,
"width": 85,
"height": 88,
"rawWidth": 85,
@@ -1601,8 +1601,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 469,
- "trimY": 112,
+ "trimX": 421,
+ "trimY": 235,
"width": 64,
"height": 112,
"rawWidth": 64,
@@ -1623,8 +1623,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 533,
- "trimY": 112,
+ "trimX": 555,
+ "trimY": 0,
"width": 62,
"height": 107,
"rawWidth": 62,
@@ -1642,11 +1642,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1347,
- "trimY": 198,
+ "trimX": 1405,
+ "trimY": 201,
"width": 85,
"height": 84,
"rawWidth": 85,
@@ -1667,8 +1667,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 506,
- "trimY": 224,
+ "trimX": 494,
+ "trimY": 0,
"width": 109,
"height": 61,
"rawWidth": 109,
@@ -1689,8 +1689,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 916,
- "trimY": 292,
+ "trimX": 1139,
+ "trimY": 193,
"width": 78,
"height": 95,
"rawWidth": 78,
@@ -1711,8 +1711,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 347,
- "trimY": 119,
+ "trimX": 384,
+ "trimY": 0,
"width": 115,
"height": 56,
"rawWidth": 115,
@@ -1733,8 +1733,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 522,
- "trimY": 402,
+ "trimX": 485,
+ "trimY": 219,
"width": 109,
"height": 57,
"rawWidth": 109,
@@ -1755,8 +1755,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 579,
- "trimY": 402,
+ "trimX": 535,
+ "trimY": 109,
"width": 108,
"height": 62,
"rawWidth": 108,
@@ -1774,11 +1774,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 160,
- "trimY": 248,
+ "trimX": 206,
+ "trimY": 0,
"width": 123,
"height": 36,
"rawWidth": 123,
@@ -1796,11 +1796,11 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 224,
- "trimY": 124,
+ "trimX": 160,
+ "trimY": 248,
"width": 123,
"height": 30,
"rawWidth": 123,
@@ -1812,43 +1812,21 @@
"spriteType": "normal",
"subMetas": {}
},
- "Walking_0.png": {
- "ver": "1.0.4",
- "uuid": "95e3dc3c-ee98-4ae8-899f-3d6539a649cb",
- "rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
- "trimType": "auto",
- "trimThreshold": 1,
- "rotated": false,
- "offsetX": 0,
- "offsetY": 0,
- "trimX": 923,
- "trimY": 191,
- "width": 78,
- "height": 95,
- "rawWidth": 78,
- "rawHeight": 95,
- "borderTop": 0,
- "borderBottom": 0,
- "borderLeft": 0,
- "borderRight": 0,
- "spriteType": "normal",
- "subMetas": {}
- },
"Walking_1.png": {
"ver": "1.0.4",
"uuid": "7515ef50-3a14-4e58-8811-a0c890fc40f3",
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 831,
- "trimY": 0,
- "width": 75,
- "height": 96,
- "rawWidth": 75,
- "rawHeight": 96,
+ "trimX": 692,
+ "trimY": 415,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -1865,12 +1843,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 851,
- "trimY": 298,
- "width": 65,
- "height": 96,
- "rawWidth": 65,
- "rawHeight": 96,
+ "trimX": 760,
+ "trimY": 306,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -1887,12 +1865,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 858,
- "trimY": 196,
- "width": 65,
- "height": 96,
- "rawWidth": 65,
- "rawHeight": 96,
+ "trimX": 780,
+ "trimY": 201,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -1909,12 +1887,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 976,
- "trimY": 387,
- "width": 74,
- "height": 95,
- "rawWidth": 74,
- "rawHeight": 95,
+ "trimX": 786,
+ "trimY": 99,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -1931,12 +1909,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1125,
- "trimY": 95,
- "width": 75,
- "height": 94,
- "rawWidth": 75,
- "rawHeight": 94,
+ "trimX": 825,
+ "trimY": 0,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -1953,12 +1931,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1133,
- "trimY": 0,
- "width": 70,
- "height": 94,
- "rawWidth": 70,
- "rawHeight": 94,
+ "trimX": 841,
+ "trimY": 298,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -1975,12 +1953,34 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1068,
- "trimY": 285,
- "width": 78,
- "height": 94,
- "rawWidth": 78,
- "rawHeight": 94,
+ "trimX": 848,
+ "trimY": 395,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Walking_16.png": {
+ "ver": "1.0.4",
+ "uuid": "60f04127-1580-4dda-828b-57d82e991398",
+ "rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 861,
+ "trimY": 196,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -1994,15 +1994,15 @@
"rawTextureUuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 507,
- "trimY": 333,
- "width": 69,
- "height": 96,
- "rawWidth": 69,
- "rawHeight": 96,
+ "trimX": 867,
+ "trimY": 97,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -2021,10 +2021,10 @@
"offsetY": 0,
"trimX": 906,
"trimY": 0,
- "width": 70,
- "height": 96,
- "rawWidth": 70,
- "rawHeight": 96,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -2041,12 +2041,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 987,
- "trimY": 95,
- "width": 78,
- "height": 95,
- "rawWidth": 78,
- "rawHeight": 95,
+ "trimX": 922,
+ "trimY": 293,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -2063,12 +2063,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1056,
- "trimY": 0,
- "width": 77,
- "height": 95,
- "rawWidth": 77,
- "rawHeight": 95,
+ "trimX": 942,
+ "trimY": 194,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -2085,12 +2085,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1108,
- "trimY": 379,
- "width": 69,
- "height": 94,
- "rawWidth": 69,
- "rawHeight": 94,
+ "trimX": 948,
+ "trimY": 97,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -2107,12 +2107,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 1074,
- "trimY": 190,
- "width": 77,
- "height": 94,
- "rawWidth": 77,
- "rawHeight": 94,
+ "trimX": 987,
+ "trimY": 0,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -2129,12 +2129,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 994,
- "trimY": 286,
- "width": 74,
- "height": 95,
- "rawWidth": 74,
- "rawHeight": 95,
+ "trimX": 929,
+ "trimY": 390,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -2151,12 +2151,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 828,
- "trimY": 395,
- "width": 68,
- "height": 96,
- "rawWidth": 68,
- "rawHeight": 96,
+ "trimX": 1003,
+ "trimY": 291,
+ "width": 81,
+ "height": 97,
+ "rawWidth": 81,
+ "rawHeight": 97,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
diff --git a/frontend/assets/resources/animation/MonkGirl/MonkGirl.png b/frontend/assets/resources/animation/MonkGirl/MonkGirl.png
index 9c31fbd..0984281 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/animation/MonkGirl/Walking.anim b/frontend/assets/resources/animation/MonkGirl/Walking.anim
index 4b11534..6235387 100644
--- a/frontend/assets/resources/animation/MonkGirl/Walking.anim
+++ b/frontend/assets/resources/animation/MonkGirl/Walking.anim
@@ -3,9 +3,9 @@
"_name": "Walking",
"_objFlags": 0,
"_native": "",
- "_duration": 0.26666666666666666,
+ "_duration": 0.6666666666666666,
"sample": 60,
- "speed": 0.25,
+ "speed": 1,
"wrapMode": 2,
"curveData": {
"comps": {
@@ -14,102 +14,116 @@
{
"frame": 0,
"value": {
- "__uuid__": "275387d0-70fd-47f5-b82e-14165a14c45a"
- }
- },
- {
- "frame": 0.016666666666666666,
- "value": {
- "__uuid__": "95e3dc3c-ee98-4ae8-899f-3d6539a649cb"
- }
- },
- {
- "frame": 0.03333333333333333,
- "value": {
- "__uuid__": "7515ef50-3a14-4e58-8811-a0c890fc40f3"
+ "__uuid__": "60f04127-1580-4dda-828b-57d82e991398"
}
},
{
"frame": 0.05,
- "value": {
- "__uuid__": "fa3d6703-1cfc-4f40-b61e-7ebf0fdac56a"
- }
- },
- {
- "frame": 0.06666666666666667,
"value": {
"__uuid__": "37eea7f3-5a1d-4172-be38-9b492399ef44"
}
},
- {
- "frame": 0.08333333333333333,
- "value": {
- "__uuid__": "0e2ad2ed-2b21-4e14-9607-5a341d9ed7e4"
- }
- },
{
"frame": 0.1,
"value": {
- "__uuid__": "e1625aba-a6fc-4883-a696-2d9d56d3050d"
- }
- },
- {
- "frame": 0.11666666666666667,
- "value": {
- "__uuid__": "86f805a2-a27c-4c96-8e11-acc448b0bdd0"
- }
- },
- {
- "frame": 0.13333333333333333,
- "value": {
- "__uuid__": "63bcaa39-1cc5-461f-a175-0d7a0abd3510"
+ "__uuid__": "0e2ad2ed-2b21-4e14-9607-5a341d9ed7e4"
}
},
{
"frame": 0.15,
"value": {
- "__uuid__": "691383d5-9199-4bd5-9803-403216331d7f"
- }
- },
- {
- "frame": 0.16666666666666666,
- "value": {
- "__uuid__": "602818c2-1242-4a24-87ba-77f6accccbc3"
- }
- },
- {
- "frame": 0.18333333333333332,
- "value": {
- "__uuid__": "650b8ccb-2a82-4972-bb5b-79a2cb4a3503"
+ "__uuid__": "e1625aba-a6fc-4883-a696-2d9d56d3050d"
}
},
{
"frame": 0.2,
"value": {
- "__uuid__": "b264bcc2-71c7-45a6-8c94-be049bb0d163"
- }
- },
- {
- "frame": 0.21666666666666667,
- "value": {
- "__uuid__": "a75af05e-3b54-45d8-b7ad-cbcf2b65b2a9"
- }
- },
- {
- "frame": 0.23333333333333334,
- "value": {
- "__uuid__": "3e2e26f7-007a-4130-8d90-154dfcde96d3"
+ "__uuid__": "86f805a2-a27c-4c96-8e11-acc448b0bdd0"
}
},
{
"frame": 0.25,
+ "value": {
+ "__uuid__": "63bcaa39-1cc5-461f-a175-0d7a0abd3510"
+ }
+ },
+ {
+ "frame": 0.3,
+ "value": {
+ "__uuid__": "691383d5-9199-4bd5-9803-403216331d7f"
+ }
+ },
+ {
+ "frame": 0.35,
+ "value": {
+ "__uuid__": "602818c2-1242-4a24-87ba-77f6accccbc3"
+ }
+ },
+ {
+ "frame": 0.4,
+ "value": {
+ "__uuid__": "650b8ccb-2a82-4972-bb5b-79a2cb4a3503"
+ }
+ },
+ {
+ "frame": 0.45,
+ "value": {
+ "__uuid__": "b264bcc2-71c7-45a6-8c94-be049bb0d163"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "3e2e26f7-007a-4130-8d90-154dfcde96d3"
+ }
+ },
+ {
+ "frame": 0.55,
+ "value": {
+ "__uuid__": "275387d0-70fd-47f5-b82e-14165a14c45a"
+ }
+ },
+ {
+ "frame": 0.6,
"value": {
"__uuid__": "9cf71d99-7262-4a6c-8c27-06167d841a24"
}
+ },
+ {
+ "frame": 0.65,
+ "value": {
+ "__uuid__": "60f04127-1580-4dda-828b-57d82e991398"
+ }
}
]
}
}
},
- "events": []
+ "events": [
+ {
+ "frame": 0,
+ "func": "",
+ "params": []
+ },
+ {
+ "frame": 0,
+ "func": "",
+ "params": []
+ },
+ {
+ "frame": 0,
+ "func": "",
+ "params": []
+ },
+ {
+ "frame": 0,
+ "func": "",
+ "params": []
+ },
+ {
+ "frame": 0,
+ "func": "",
+ "params": []
+ }
+ ]
}
\ No newline at end of file
diff --git a/frontend/assets/resources/map/dungeon/map.tmx b/frontend/assets/resources/map/dungeon/map.tmx
index 3639788..508e49e 100644
--- a/frontend/assets/resources/map/dungeon/map.tmx
+++ b/frontend/assets/resources/map/dungeon/map.tmx
@@ -9,10 +9,10 @@
-
diff --git a/frontend/assets/resources/pbfiles/room_downsync_frame.proto b/frontend/assets/resources/pbfiles/room_downsync_frame.proto
index 7551b66..4c6c6e9 100644
--- a/frontend/assets/resources/pbfiles/room_downsync_frame.proto
+++ b/frontend/assets/resources/pbfiles/room_downsync_frame.proto
@@ -27,6 +27,8 @@ message PlayerDownsync {
int32 framesInChState = 20; // number of frames elapsed in the current character state
int32 activeSkillId = 21;
int32 activeSkillHit = 22;
+ int32 framesInvinsible = 23;
+ int32 framesSelfLockVel = 24;
string name = 997;
string displayName = 998;
@@ -103,13 +105,14 @@ message MeleeBullet {
int32 selfLockVelX = 12;
int32 selfLockVelY = 13;
+ int32 framesSelfLockVel = 14;
- int32 hitboxOffsetX = 14;
- int32 hitboxOffsetY = 15;
- int32 hitboxSizeX = 16;
- int32 hitboxSizeY = 17;
+ int32 hitboxOffsetX = 15;
+ int32 hitboxOffsetY = 16;
+ int32 hitboxSizeX = 17;
+ int32 hitboxSizeY = 18;
- bool blowUp = 18;
+ bool blowUp = 19;
}
message BattleColliderInfo {
diff --git a/frontend/assets/resources/prefabs/ControlledCharacter.prefab b/frontend/assets/resources/prefabs/ControlledCharacter.prefab
index 5a5db55..80d2db2 100644
--- a/frontend/assets/resources/prefabs/ControlledCharacter.prefab
+++ b/frontend/assets/resources/prefabs/ControlledCharacter.prefab
@@ -552,7 +552,7 @@
"__id__": 11
},
"_children": [],
- "_active": false,
+ "_active": true,
"_components": [
{
"__id__": 13
diff --git a/frontend/assets/scenes/offline_map.fire b/frontend/assets/scenes/offline_map.fire
index 33d98c7..7059ef0 100644
--- a/frontend/assets/scenes/offline_map.fire
+++ b/frontend/assets/scenes/offline_map.fire
@@ -461,7 +461,7 @@
"array": [
0,
0,
- 209.83528025849938,
+ 216.50635094610968,
0,
0,
0,
diff --git a/frontend/assets/scripts/Map.js b/frontend/assets/scripts/Map.js
index 63a8d52..154e56f 100644
--- a/frontend/assets/scripts/Map.js
+++ b/frontend/assets/scripts/Map.js
@@ -329,6 +329,56 @@ cc.Class({
}
},
+ initDebugDrawers() {
+ const self = this;
+ if (self.showCriticalCoordinateLabels) {
+ const drawer1 = new cc.Node();
+ drawer1.setPosition(cc.v2(0, 0))
+ safelyAddChild(self.node, drawer1);
+ setLocalZOrder(drawer1, 999);
+ const g1 = drawer1.addComponent(cc.Graphics);
+ g1.lineWidth = 2;
+ self.g1 = g1;
+
+ const collisionSpaceObjs = gopkgs.GetCollisionSpaceObjsJs(self.gopkgsCollisionSys); // This step is slow according to Chrome profiling, and we only need draw it once for those static barriers
+ for (let k in collisionSpaceObjs) {
+ const body = collisionSpaceObjs[k];
+ let padding = 0;
+ if (null != body.Data && null != body.Data.JoinIndex) {
+ // character
+ if (1 == body.Data.JoinIndex) {
+ g1.strokeColor = cc.Color.BLUE;
+ } else {
+ g1.strokeColor = cc.Color.RED;
+ }
+ padding = self.snapIntoPlatformOverlap;
+ } else {
+ // barrier
+ g1.strokeColor = cc.Color.WHITE;
+ }
+ const points = body.Shape.Points;
+ const wpos = [body.X - self.spaceOffsetX, body.Y - self.spaceOffsetY];
+ g1.moveTo(wpos[0], wpos[1]);
+ const cnt = points.length;
+ for (let j = 0; j < cnt; j += 1) {
+ const x = wpos[0] + points[j][0],
+ y = wpos[1] + points[j][1];
+ g1.lineTo(x, y);
+ }
+ g1.lineTo(wpos[0], wpos[1]);
+ g1.stroke();
+ }
+
+ const drawer2 = new cc.Node();
+ drawer2.setPosition(cc.v2(0, 0))
+ safelyAddChild(self.node, drawer2);
+ setLocalZOrder(drawer2, 999);
+ const g2 = drawer2.addComponent(cc.Graphics);
+ g2.lineWidth = 2;
+ self.g2 = g2;
+ }
+ },
+
onLoad() {
const self = this;
window.mapIns = self;
@@ -418,16 +468,6 @@ cc.Class({
mapNode.removeAllChildren();
self._resetCurrentMatch();
- if (self.showCriticalCoordinateLabels) {
- const drawer = new cc.Node();
- drawer.setPosition(cc.v2(0, 0))
- safelyAddChild(self.node, drawer);
- setLocalZOrder(drawer, 999);
- const g = drawer.addComponent(cc.Graphics);
- g.lineWidth = 2;
- self.g = g;
- }
-
tiledMapIns.tmxAsset = tmxAsset;
const newMapSize = tiledMapIns.getMapSize();
const newTileSize = tiledMapIns.getTileSize();
@@ -456,37 +496,6 @@ cc.Class({
const newBarrierCollider = gopkgs.GenerateConvexPolygonColliderJs(gopkgsBoundary, self.spaceOffsetX, self.spaceOffsetY, gopkgsBarrier, "Barrier");
self.gopkgsCollisionSys.Add(newBarrierCollider);
- if (false && self.showCriticalCoordinateLabels) {
- for (let i = 0; i < boundaryObj.length; ++i) {
- const barrierVertLabelNode = new cc.Node();
- switch (i % 4) {
- case 0:
- barrierVertLabelNode.color = cc.Color.RED;
- break;
- case 1:
- barrierVertLabelNode.color = cc.Color.GRAY;
- break;
- case 2:
- barrierVertLabelNode.color = cc.Color.BLACK;
- break;
- default:
- barrierVertLabelNode.color = cc.Color.MAGENTA;
- break;
- }
- const wx = boundaryObj.anchor.x + boundaryObj[i].x,
- wy = boundaryObj.anchor.y + boundaryObj[i].y;
- barrierVertLabelNode.setPosition(cc.v2(wx, wy));
- const barrierVertLabel = barrierVertLabelNode.addComponent(cc.Label);
- barrierVertLabel.fontSize = 12;
- barrierVertLabel.lineHeight = barrierVertLabel.fontSize + 1;
- barrierVertLabel.string = `(${wx.toFixed(1)}, ${wy.toFixed(1)})`;
- safelyAddChild(self.node, barrierVertLabelNode);
- setLocalZOrder(barrierVertLabelNode, 5);
-
- barrierVertLabelNode.active = true;
- }
-
- }
// console.log("Created barrier: ", newBarrierCollider);
++barrierIdCounter;
const collisionBarrierIndex = (self.collisionBarrierIndexPrefix + barrierIdCounter);
@@ -496,7 +505,7 @@ cc.Class({
Object.assign(self.selfPlayerInfo, {
Id: self.selfPlayerInfo.playerId
});
-
+ self.initDebugDrawers();
const reqData = window.pb.protos.WsReq.encode({
msgId: Date.now(),
act: window.UPSYNC_MSG_ACT_PLAYER_COLLIDER_ACK,
@@ -569,13 +578,13 @@ cc.Class({
const jsPlayersArr = new Array().fill(null);
for (let k in pbRdf.playersArr) {
const pbPlayer = pbRdf.playersArr[k];
- const jsPlayer = gopkgs.NewPlayerDownsyncJs(pbPlayer.id, pbPlayer.virtualGridX, pbPlayer.virtualGridY, pbPlayer.dirX, pbPlayer.dirY, pbPlayer.velX, pbPlayer.velY, pbPlayer.framesToRecover, pbPlayer.framesInChState, pbPlayer.activeSkillId, pbPlayer.activeSkillHit, pbPlayer.speed, pbPlayer.battleState, pbPlayer.characterState, pbPlayer.joinIndex, pbPlayer.hp, pbPlayer.maxHp, pbPlayer.colliderRadius, pbPlayer.inAir);
+ const jsPlayer = gopkgs.NewPlayerDownsyncJs(pbPlayer.id, pbPlayer.virtualGridX, pbPlayer.virtualGridY, pbPlayer.dirX, pbPlayer.dirY, pbPlayer.velX, pbPlayer.velY, pbPlayer.framesToRecover, pbPlayer.framesInChState, pbPlayer.activeSkillId, pbPlayer.activeSkillHit, pbPlayer.framesInvinsible, pbPlayer.framesSelfLockVel, pbPlayer.speed, pbPlayer.battleState, pbPlayer.characterState, pbPlayer.joinIndex, pbPlayer.hp, pbPlayer.maxHp, pbPlayer.colliderRadius, pbPlayer.inAir);
jsPlayersArr[k] = jsPlayer;
}
const jsMeleeBulletsArr = [];
for (let k in pbRdf.meleeBullets) {
const pbBullet = pbRdf.meleeBullets[k];
- const jsBullet = gopkgs.NewMeleeBulletJs(pbBullet.originatedRenderFrameId, pbBullet.offenderJoinIndex, pbBullet.startupFrames, pbBullet.cancellableStFrame, pbBullet.cancellableEdFrame, pbBullet.activeFrames, pbBullet.hitStunFrames, pbBullet.blockStunFrames, pbBullet.pushbackVelX, pbBullet.pushbackVelY, pbBullet.damage, pbBullet.selfLockVelX, pbBullet.selfLockVelY, pbBullet.hitboxOffsetX, pbBullet.hitboxOffsetY, pbBullet.hitboxSizeX, pbBullet.hitboxSizeY, pbBullet.blowUp);
+ const jsBullet = gopkgs.NewMeleeBulletJs(pbBullet.originatedRenderFrameId, pbBullet.offenderJoinIndex, pbBullet.startupFrames, pbBullet.cancellableStFrame, pbBullet.cancellableEdFrame, pbBullet.activeFrames, pbBullet.hitStunFrames, pbBullet.blockStunFrames, pbBullet.pushbackVelX, pbBullet.pushbackVelY, pbBullet.damage, pbBullet.selfLockVelX, pbBullet.selfLockVelY, pbBullet.framesSelfLockVel, pbBullet.hitboxOffsetX, pbBullet.hitboxOffsetY, pbBullet.hitboxSizeX, pbBullet.hitboxSizeY, pbBullet.blowUp);
jsMeleeBulletsArr.push(jsBullet);
}
@@ -849,7 +858,7 @@ batchInputFrameIdRange=[${batch[0].inputFrameId}, ${batch[batch.length - 1].inpu
let st = performance.now();
let prevSelfInput = null,
currSelfInput = null;
- const noDelayInputFrameId = gopkgs.ConvertToNoDelayInputFrameId(self.renderFrameId);
+ const noDelayInputFrameId = gopkgs.ConvertToNoDelayInputFrameId(self.renderFrameId);
if (gopkgs.ShouldGenerateInputFrameUpsync(self.renderFrameId)) {
[prevSelfInput, currSelfInput] = self.getOrPrefabInputFrameUpsync(noDelayInputFrameId);
}
@@ -1207,71 +1216,42 @@ actuallyUsedinputList:{${self.inputFrameDownsyncStr(actuallyUsedInputClone)}}`);
rightPadding = 0.1,
topPadding = 0.1,
bottomPadding = 0.1;
- if (self.showCriticalCoordinateLabels) {
- let g = self.g;
- g.clear();
-
- const collisionSpaceObjs = gopkgs.GetCollisionSpaceObjsJs(self.gopkgsCollisionSys);
- for (let k in collisionSpaceObjs) {
- const body = collisionSpaceObjs[k];
- let padding = 0;
- if (null != body.Data && null != body.Data.JoinIndex) {
- // character
- if (1 == body.Data.JoinIndex) {
- g.strokeColor = cc.Color.BLUE;
- } else {
- g.strokeColor = cc.Color.RED;
- }
- padding = self.snapIntoPlatformOverlap;
- } else {
- // barrier
- g.strokeColor = cc.Color.WHITE;
- }
- const points = body.Shape.Points;
- const wpos = [body.X - self.spaceOffsetX, body.Y - self.spaceOffsetY];
- g.moveTo(wpos[0], wpos[1]);
- const cnt = points.length;
- for (let j = 0; j < cnt; j += 1) {
- const x = wpos[0] + points[j][0],
- y = wpos[1] + points[j][1];
- g.lineTo(x, y);
- }
- g.lineTo(wpos[0], wpos[1]);
- g.stroke();
- }
+ if (self.showCriticalCoordinateLabels && self.g2) {
+ let g2 = self.g2;
+ g2.clear();
for (let k in rdf.PlayersArr) {
const player = rdf.PlayersArr[k];
if (1 == player.JoinIndex) {
- g.strokeColor = cc.Color.BLUE;
+ g2.strokeColor = cc.Color.BLUE;
} else {
- g.strokeColor = cc.Color.RED;
+ g2.strokeColor = cc.Color.RED;
}
- let [colliderWidth, colliderHeight] = [player.ColliderRadius*2, player.ColliderRadius*4];
- switch (player.CharacterState) {
- case ATK_CHARACTER_STATE.LayDown1[0]:
- [colliderWidth, colliderHeight] = [player.ColliderRadius*4, player.ColliderRadius*2];
+ let [colliderWidth, colliderHeight] = [player.ColliderRadius * 2, player.ColliderRadius * 4];
+ switch (player.CharacterState) {
+ case ATK_CHARACTER_STATE.LayDown1[0]:
+ [colliderWidth, colliderHeight] = [player.ColliderRadius * 4, player.ColliderRadius * 2];
break;
- case ATK_CHARACTER_STATE.BlownUp1[0]:
- case ATK_CHARACTER_STATE.InAirIdle1NoJump[0]:
- case ATK_CHARACTER_STATE.InAirIdle1ByJump[0]:
- [colliderWidth, colliderHeight] = [player.ColliderRadius*2, player.ColliderRadius*2];
+ case ATK_CHARACTER_STATE.BlownUp1[0]:
+ case ATK_CHARACTER_STATE.InAirIdle1NoJump[0]:
+ case ATK_CHARACTER_STATE.InAirIdle1ByJump[0]:
+ [colliderWidth, colliderHeight] = [player.ColliderRadius * 2, player.ColliderRadius * 2];
break;
- }
+ }
- const [halfColliderWidth, halfColliderHeight] = gopkgs.VirtualGridToWorldPos((colliderWidth >> 1), (colliderHeight >> 1));
+ const [halfColliderWidth, halfColliderHeight] = gopkgs.VirtualGridToWorldPos((colliderWidth >> 1), (colliderHeight >> 1));
const [wx, wy] = gopkgs.VirtualGridToWorldPos(player.VirtualGridX, player.VirtualGridY);
const [cx, cy] = gopkgs.WorldToPolygonColliderBLPos(wx, wy, halfColliderWidth, halfColliderHeight, topPadding, bottomPadding, leftPadding, rightPadding, 0, 0);
- const pts = [[0, 0], [leftPadding + halfColliderWidth*2 + rightPadding, 0], [leftPadding + halfColliderWidth*2 + rightPadding, bottomPadding + halfColliderHeight*2 + topPadding], [0, bottomPadding + halfColliderHeight*2 + topPadding]];
+ const pts = [[0, 0], [leftPadding + halfColliderWidth * 2 + rightPadding, 0], [leftPadding + halfColliderWidth * 2 + rightPadding, bottomPadding + halfColliderHeight * 2 + topPadding], [0, bottomPadding + halfColliderHeight * 2 + topPadding]];
- g.moveTo(cx, cy);
+ g2.moveTo(cx, cy);
for (let j = 0; j < pts.length; j += 1) {
- g.lineTo(pts[j][0] + cx, pts[j][1] + cy);
+ g2.lineTo(pts[j][0] + cx, pts[j][1] + cy);
}
- g.lineTo(cx, cy);
- g.stroke();
+ g2.lineTo(cx, cy);
+ g2.stroke();
}
for (let k in rdf.MeleeBullets) {
@@ -1281,11 +1261,11 @@ actuallyUsedinputList:{${self.inputFrameDownsyncStr(actuallyUsedInputClone)}}`);
&&
meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames + meleeBullet.Bullet.ActiveFrames > rdf.Id
) {
- const offender = rdf.PlayersArr[meleeBullet.Bullet.OffenderJoinIndex-1];
+ const offender = rdf.PlayersArr[meleeBullet.Bullet.OffenderJoinIndex - 1];
if (1 == offender.JoinIndex) {
- g.strokeColor = cc.Color.BLUE;
+ g2.strokeColor = cc.Color.BLUE;
} else {
- g.strokeColor = cc.Color.RED;
+ g2.strokeColor = cc.Color.RED;
}
let xfac = 1; // By now, straight Punch offset doesn't respect "y-axis"
@@ -1295,14 +1275,14 @@ actuallyUsedinputList:{${self.inputFrameDownsyncStr(actuallyUsedInputClone)}}`);
const [bulletWx, bulletWy] = gopkgs.VirtualGridToWorldPos(offender.VirtualGridX + xfac * meleeBullet.Bullet.HitboxOffsetX, offender.VirtualGridY);
const [halfColliderWidth, halfColliderHeight] = gopkgs.VirtualGridToWorldPos((meleeBullet.Bullet.HitboxSizeX >> 1), (meleeBullet.Bullet.HitboxSizeY >> 1));
const [bulletCx, bulletCy] = gopkgs.WorldToPolygonColliderBLPos(bulletWx, bulletWy, halfColliderWidth, halfColliderHeight, topPadding, bottomPadding, leftPadding, rightPadding, 0, 0);
- const pts = [[0, 0], [leftPadding + halfColliderWidth*2 + rightPadding, 0], [leftPadding + halfColliderWidth*2 + rightPadding, bottomPadding + halfColliderHeight*2 + topPadding], [0, bottomPadding + halfColliderHeight*2 + topPadding]];
+ const pts = [[0, 0], [leftPadding + halfColliderWidth * 2 + rightPadding, 0], [leftPadding + halfColliderWidth * 2 + rightPadding, bottomPadding + halfColliderHeight * 2 + topPadding], [0, bottomPadding + halfColliderHeight * 2 + topPadding]];
- g.moveTo(bulletCx, bulletCy);
+ g2.moveTo(bulletCx, bulletCy);
for (let j = 0; j < pts.length; j += 1) {
- g.lineTo(pts[j][0] + bulletCx, pts[j][1] + bulletCy);
+ g2.lineTo(pts[j][0] + bulletCx, pts[j][1] + bulletCy);
}
- g.lineTo(bulletCx, bulletCy);
- g.stroke();
+ g2.lineTo(bulletCx, bulletCy);
+ g2.stroke();
}
}
}
diff --git a/frontend/assets/scripts/OfflineMap.js b/frontend/assets/scripts/OfflineMap.js
index ca75172..97e2a8a 100644
--- a/frontend/assets/scripts/OfflineMap.js
+++ b/frontend/assets/scripts/OfflineMap.js
@@ -13,7 +13,7 @@ cc.Class({
onLoad() {
const self = this;
window.mapIns = self;
- self.showCriticalCoordinateLabels = false;
+ self.showCriticalCoordinateLabels = true;
const mapNode = self.node;
const canvasNode = mapNode.parent;
@@ -83,42 +83,12 @@ cc.Class({
const newBarrierCollider = gopkgs.GenerateConvexPolygonColliderJs(gopkgsBoundary, self.spaceOffsetX, self.spaceOffsetY, gopkgsBarrier, "Barrier");
self.gopkgsCollisionSys.Add(newBarrierCollider);
- if (false && self.showCriticalCoordinateLabels) {
- for (let i = 0; i < boundaryObj.length; ++i) {
- const barrierVertLabelNode = new cc.Node();
- switch (i % 4) {
- case 0:
- barrierVertLabelNode.color = cc.Color.RED;
- break;
- case 1:
- barrierVertLabelNode.color = cc.Color.GRAY;
- break;
- case 2:
- barrierVertLabelNode.color = cc.Color.BLACK;
- break;
- default:
- barrierVertLabelNode.color = cc.Color.MAGENTA;
- break;
- }
- const wx = boundaryObj.anchor.x + boundaryObj[i].x,
- wy = boundaryObj.anchor.y + boundaryObj[i].y;
- barrierVertLabelNode.setPosition(cc.v2(wx, wy));
- const barrierVertLabel = barrierVertLabelNode.addComponent(cc.Label);
- barrierVertLabel.fontSize = 12;
- barrierVertLabel.lineHeight = barrierVertLabel.fontSize + 1;
- barrierVertLabel.string = `(${wx.toFixed(1)}, ${wy.toFixed(1)})`;
- safelyAddChild(self.node, barrierVertLabelNode);
- setLocalZOrder(barrierVertLabelNode, 5);
-
- barrierVertLabelNode.active = true;
- }
-
- }
// console.log("Created barrier: ", newBarrierCollider);
++barrierIdCounter;
const collisionBarrierIndex = (self.collisionBarrierIndexPrefix + barrierIdCounter);
self.gopkgsCollisionSysMap[collisionBarrierIndex] = newBarrierCollider;
}
+ self.initDebugDrawers();
const p1Vpos = gopkgs.WorldToVirtualGridPos(boundaryObjs.playerStartingPositions[0].x, boundaryObjs.playerStartingPositions[0].y);
const p2Vpos = gopkgs.WorldToVirtualGridPos(boundaryObjs.playerStartingPositions[1].x, boundaryObjs.playerStartingPositions[1].y);
@@ -159,7 +129,7 @@ cc.Class({
inAir: true,
}),
],
- speciesIdList: [1, 0],
+ speciesIdList: [0, 1],
});
self.selfPlayerInfo = {
diff --git a/frontend/assets/scripts/modules/room_downsync_frame_proto_bundle.forcemsg.js b/frontend/assets/scripts/modules/room_downsync_frame_proto_bundle.forcemsg.js
index 3546a90..bacd9a9 100644
--- a/frontend/assets/scripts/modules/room_downsync_frame_proto_bundle.forcemsg.js
+++ b/frontend/assets/scripts/modules/room_downsync_frame_proto_bundle.forcemsg.js
@@ -1213,6 +1213,8 @@ $root.protos = (function() {
* @property {number|null} [framesInChState] PlayerDownsync framesInChState
* @property {number|null} [activeSkillId] PlayerDownsync activeSkillId
* @property {number|null} [activeSkillHit] PlayerDownsync activeSkillHit
+ * @property {number|null} [framesInvinsible] PlayerDownsync framesInvinsible
+ * @property {number|null} [framesSelfLockVel] PlayerDownsync framesSelfLockVel
* @property {string|null} [name] PlayerDownsync name
* @property {string|null} [displayName] PlayerDownsync displayName
* @property {string|null} [avatar] PlayerDownsync avatar
@@ -1409,6 +1411,22 @@ $root.protos = (function() {
*/
PlayerDownsync.prototype.activeSkillHit = 0;
+ /**
+ * PlayerDownsync framesInvinsible.
+ * @member {number} framesInvinsible
+ * @memberof protos.PlayerDownsync
+ * @instance
+ */
+ PlayerDownsync.prototype.framesInvinsible = 0;
+
+ /**
+ * PlayerDownsync framesSelfLockVel.
+ * @member {number} framesSelfLockVel
+ * @memberof protos.PlayerDownsync
+ * @instance
+ */
+ PlayerDownsync.prototype.framesSelfLockVel = 0;
+
/**
* PlayerDownsync name.
* @member {string} name
@@ -1501,6 +1519,10 @@ $root.protos = (function() {
writer.uint32(/* id 21, wireType 0 =*/168).int32(message.activeSkillId);
if (message.activeSkillHit != null && Object.hasOwnProperty.call(message, "activeSkillHit"))
writer.uint32(/* id 22, wireType 0 =*/176).int32(message.activeSkillHit);
+ if (message.framesInvinsible != null && Object.hasOwnProperty.call(message, "framesInvinsible"))
+ writer.uint32(/* id 23, wireType 0 =*/184).int32(message.framesInvinsible);
+ if (message.framesSelfLockVel != null && Object.hasOwnProperty.call(message, "framesSelfLockVel"))
+ writer.uint32(/* id 24, wireType 0 =*/192).int32(message.framesSelfLockVel);
if (message.name != null && Object.hasOwnProperty.call(message, "name"))
writer.uint32(/* id 997, wireType 2 =*/7978).string(message.name);
if (message.displayName != null && Object.hasOwnProperty.call(message, "displayName"))
@@ -1629,6 +1651,14 @@ $root.protos = (function() {
message.activeSkillHit = reader.int32();
break;
}
+ case 23: {
+ message.framesInvinsible = reader.int32();
+ break;
+ }
+ case 24: {
+ message.framesSelfLockVel = reader.int32();
+ break;
+ }
case 997: {
message.name = reader.string();
break;
@@ -1742,6 +1772,12 @@ $root.protos = (function() {
if (message.activeSkillHit != null && message.hasOwnProperty("activeSkillHit"))
if (!$util.isInteger(message.activeSkillHit))
return "activeSkillHit: integer expected";
+ if (message.framesInvinsible != null && message.hasOwnProperty("framesInvinsible"))
+ if (!$util.isInteger(message.framesInvinsible))
+ return "framesInvinsible: integer expected";
+ if (message.framesSelfLockVel != null && message.hasOwnProperty("framesSelfLockVel"))
+ if (!$util.isInteger(message.framesSelfLockVel))
+ return "framesSelfLockVel: integer expected";
if (message.name != null && message.hasOwnProperty("name"))
if (!$util.isString(message.name))
return "name: string expected";
@@ -1810,6 +1846,10 @@ $root.protos = (function() {
message.activeSkillId = object.activeSkillId | 0;
if (object.activeSkillHit != null)
message.activeSkillHit = object.activeSkillHit | 0;
+ if (object.framesInvinsible != null)
+ message.framesInvinsible = object.framesInvinsible | 0;
+ if (object.framesSelfLockVel != null)
+ message.framesSelfLockVel = object.framesSelfLockVel | 0;
if (object.name != null)
message.name = String(object.name);
if (object.displayName != null)
@@ -1855,6 +1895,8 @@ $root.protos = (function() {
object.framesInChState = 0;
object.activeSkillId = 0;
object.activeSkillHit = 0;
+ object.framesInvinsible = 0;
+ object.framesSelfLockVel = 0;
object.name = "";
object.displayName = "";
object.avatar = "";
@@ -1903,6 +1945,10 @@ $root.protos = (function() {
object.activeSkillId = message.activeSkillId;
if (message.activeSkillHit != null && message.hasOwnProperty("activeSkillHit"))
object.activeSkillHit = message.activeSkillHit;
+ if (message.framesInvinsible != null && message.hasOwnProperty("framesInvinsible"))
+ object.framesInvinsible = message.framesInvinsible;
+ if (message.framesSelfLockVel != null && message.hasOwnProperty("framesSelfLockVel"))
+ object.framesSelfLockVel = message.framesSelfLockVel;
if (message.name != null && message.hasOwnProperty("name"))
object.name = message.name;
if (message.displayName != null && message.hasOwnProperty("displayName"))
@@ -4042,6 +4088,7 @@ $root.protos = (function() {
* @property {number|null} [damage] MeleeBullet damage
* @property {number|null} [selfLockVelX] MeleeBullet selfLockVelX
* @property {number|null} [selfLockVelY] MeleeBullet selfLockVelY
+ * @property {number|null} [framesSelfLockVel] MeleeBullet framesSelfLockVel
* @property {number|null} [hitboxOffsetX] MeleeBullet hitboxOffsetX
* @property {number|null} [hitboxOffsetY] MeleeBullet hitboxOffsetY
* @property {number|null} [hitboxSizeX] MeleeBullet hitboxSizeX
@@ -4168,6 +4215,14 @@ $root.protos = (function() {
*/
MeleeBullet.prototype.selfLockVelY = 0;
+ /**
+ * MeleeBullet framesSelfLockVel.
+ * @member {number} framesSelfLockVel
+ * @memberof protos.MeleeBullet
+ * @instance
+ */
+ MeleeBullet.prototype.framesSelfLockVel = 0;
+
/**
* MeleeBullet hitboxOffsetX.
* @member {number} hitboxOffsetX
@@ -4258,16 +4313,18 @@ $root.protos = (function() {
writer.uint32(/* id 12, wireType 0 =*/96).int32(message.selfLockVelX);
if (message.selfLockVelY != null && Object.hasOwnProperty.call(message, "selfLockVelY"))
writer.uint32(/* id 13, wireType 0 =*/104).int32(message.selfLockVelY);
+ if (message.framesSelfLockVel != null && Object.hasOwnProperty.call(message, "framesSelfLockVel"))
+ writer.uint32(/* id 14, wireType 0 =*/112).int32(message.framesSelfLockVel);
if (message.hitboxOffsetX != null && Object.hasOwnProperty.call(message, "hitboxOffsetX"))
- writer.uint32(/* id 14, wireType 0 =*/112).int32(message.hitboxOffsetX);
+ writer.uint32(/* id 15, wireType 0 =*/120).int32(message.hitboxOffsetX);
if (message.hitboxOffsetY != null && Object.hasOwnProperty.call(message, "hitboxOffsetY"))
- writer.uint32(/* id 15, wireType 0 =*/120).int32(message.hitboxOffsetY);
+ writer.uint32(/* id 16, wireType 0 =*/128).int32(message.hitboxOffsetY);
if (message.hitboxSizeX != null && Object.hasOwnProperty.call(message, "hitboxSizeX"))
- writer.uint32(/* id 16, wireType 0 =*/128).int32(message.hitboxSizeX);
+ writer.uint32(/* id 17, wireType 0 =*/136).int32(message.hitboxSizeX);
if (message.hitboxSizeY != null && Object.hasOwnProperty.call(message, "hitboxSizeY"))
- writer.uint32(/* id 17, wireType 0 =*/136).int32(message.hitboxSizeY);
+ writer.uint32(/* id 18, wireType 0 =*/144).int32(message.hitboxSizeY);
if (message.blowUp != null && Object.hasOwnProperty.call(message, "blowUp"))
- writer.uint32(/* id 18, wireType 0 =*/144).bool(message.blowUp);
+ writer.uint32(/* id 19, wireType 0 =*/152).bool(message.blowUp);
return writer;
};
@@ -4355,22 +4412,26 @@ $root.protos = (function() {
break;
}
case 14: {
- message.hitboxOffsetX = reader.int32();
+ message.framesSelfLockVel = reader.int32();
break;
}
case 15: {
- message.hitboxOffsetY = reader.int32();
+ message.hitboxOffsetX = reader.int32();
break;
}
case 16: {
- message.hitboxSizeX = reader.int32();
+ message.hitboxOffsetY = reader.int32();
break;
}
case 17: {
- message.hitboxSizeY = reader.int32();
+ message.hitboxSizeX = reader.int32();
break;
}
case 18: {
+ message.hitboxSizeY = reader.int32();
+ break;
+ }
+ case 19: {
message.blowUp = reader.bool();
break;
}
@@ -4448,6 +4509,9 @@ $root.protos = (function() {
if (message.selfLockVelY != null && message.hasOwnProperty("selfLockVelY"))
if (!$util.isInteger(message.selfLockVelY))
return "selfLockVelY: integer expected";
+ if (message.framesSelfLockVel != null && message.hasOwnProperty("framesSelfLockVel"))
+ if (!$util.isInteger(message.framesSelfLockVel))
+ return "framesSelfLockVel: integer expected";
if (message.hitboxOffsetX != null && message.hasOwnProperty("hitboxOffsetX"))
if (!$util.isInteger(message.hitboxOffsetX))
return "hitboxOffsetX: integer expected";
@@ -4504,6 +4568,8 @@ $root.protos = (function() {
message.selfLockVelX = object.selfLockVelX | 0;
if (object.selfLockVelY != null)
message.selfLockVelY = object.selfLockVelY | 0;
+ if (object.framesSelfLockVel != null)
+ message.framesSelfLockVel = object.framesSelfLockVel | 0;
if (object.hitboxOffsetX != null)
message.hitboxOffsetX = object.hitboxOffsetX | 0;
if (object.hitboxOffsetY != null)
@@ -4544,6 +4610,7 @@ $root.protos = (function() {
object.damage = 0;
object.selfLockVelX = 0;
object.selfLockVelY = 0;
+ object.framesSelfLockVel = 0;
object.hitboxOffsetX = 0;
object.hitboxOffsetY = 0;
object.hitboxSizeX = 0;
@@ -4576,6 +4643,8 @@ $root.protos = (function() {
object.selfLockVelX = message.selfLockVelX;
if (message.selfLockVelY != null && message.hasOwnProperty("selfLockVelY"))
object.selfLockVelY = message.selfLockVelY;
+ if (message.framesSelfLockVel != null && message.hasOwnProperty("framesSelfLockVel"))
+ object.framesSelfLockVel = message.framesSelfLockVel;
if (message.hitboxOffsetX != null && message.hasOwnProperty("hitboxOffsetX"))
object.hitboxOffsetX = message.hitboxOffsetX;
if (message.hitboxOffsetY != null && message.hasOwnProperty("hitboxOffsetY"))
diff --git a/jsexport/battle/battle.go b/jsexport/battle/battle.go
index 34e2ad0..95f82d9 100644
--- a/jsexport/battle/battle.go
+++ b/jsexport/battle/battle.go
@@ -32,6 +32,8 @@ const (
NO_SKILL = -1
NO_SKILL_HIT = -1
+
+ NO_LOCK_VEL = int32(-1)
)
// These directions are chosen such that when speed is changed to "(speedX+delta, speedY+delta)" for any of them, the direction is unchanged.
@@ -86,7 +88,17 @@ var invinsibleSet = map[int32]bool{
ATK_CHARACTER_STATE_GET_UP1: true,
}
-var nonAttackingSet = map[int32]bool{}
+var nonAttackingSet = map[int32]bool{
+ ATK_CHARACTER_STATE_IDLE1: true,
+ ATK_CHARACTER_STATE_WALKING: true,
+ ATK_CHARACTER_STATE_INAIR_IDLE1_NO_JUMP: true,
+ ATK_CHARACTER_STATE_INAIR_IDLE1_BY_JUMP: true,
+ ATK_CHARACTER_STATE_ATKED1: true,
+ ATK_CHARACTER_STATE_INAIR_ATKED1: true,
+ ATK_CHARACTER_STATE_BLOWN_UP1: true,
+ ATK_CHARACTER_STATE_LAY_DOWN1: true,
+ ATK_CHARACTER_STATE_GET_UP1: true,
+}
func ShouldPrefabInputFrameDownsync(prevRenderFrameId int32, renderFrameId int32) (bool, int32) {
for i := prevRenderFrameId + 1; i <= renderFrameId; i++ {
@@ -426,31 +438,39 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
// Make a copy first
for i, currPlayerDownsync := range currRenderFrame.PlayersArr {
nextRenderFramePlayers[i] = &PlayerDownsync{
- Id: currPlayerDownsync.Id,
- VirtualGridX: currPlayerDownsync.VirtualGridX,
- VirtualGridY: currPlayerDownsync.VirtualGridY,
- DirX: currPlayerDownsync.DirX,
- DirY: currPlayerDownsync.DirY,
- VelX: currPlayerDownsync.VelX,
- VelY: currPlayerDownsync.VelY,
- CharacterState: currPlayerDownsync.CharacterState,
- InAir: true,
- Speed: currPlayerDownsync.Speed,
- BattleState: currPlayerDownsync.BattleState,
- Score: currPlayerDownsync.Score,
- Removed: currPlayerDownsync.Removed,
- JoinIndex: currPlayerDownsync.JoinIndex,
- Hp: currPlayerDownsync.Hp,
- MaxHp: currPlayerDownsync.MaxHp,
- FramesToRecover: currPlayerDownsync.FramesToRecover - 1,
- FramesInChState: currPlayerDownsync.FramesInChState + 1,
- ActiveSkillId: currPlayerDownsync.ActiveSkillId,
- ActiveSkillHit: currPlayerDownsync.ActiveSkillHit,
- ColliderRadius: currPlayerDownsync.ColliderRadius,
+ Id: currPlayerDownsync.Id,
+ VirtualGridX: currPlayerDownsync.VirtualGridX,
+ VirtualGridY: currPlayerDownsync.VirtualGridY,
+ DirX: currPlayerDownsync.DirX,
+ DirY: currPlayerDownsync.DirY,
+ VelX: currPlayerDownsync.VelX,
+ VelY: currPlayerDownsync.VelY,
+ CharacterState: currPlayerDownsync.CharacterState,
+ InAir: true,
+ Speed: currPlayerDownsync.Speed,
+ BattleState: currPlayerDownsync.BattleState,
+ Score: currPlayerDownsync.Score,
+ Removed: currPlayerDownsync.Removed,
+ JoinIndex: currPlayerDownsync.JoinIndex,
+ Hp: currPlayerDownsync.Hp,
+ MaxHp: currPlayerDownsync.MaxHp,
+ FramesToRecover: currPlayerDownsync.FramesToRecover - 1,
+ FramesInChState: currPlayerDownsync.FramesInChState + 1,
+ ActiveSkillId: currPlayerDownsync.ActiveSkillId,
+ ActiveSkillHit: currPlayerDownsync.ActiveSkillHit,
+ FramesInvinsible: currPlayerDownsync.FramesInvinsible - 1,
+ FramesSelfLockVel: currPlayerDownsync.FramesSelfLockVel - 1,
+ ColliderRadius: currPlayerDownsync.ColliderRadius,
}
if nextRenderFramePlayers[i].FramesToRecover < 0 {
nextRenderFramePlayers[i].FramesToRecover = 0
}
+ if nextRenderFramePlayers[i].FramesInvinsible < 0 {
+ nextRenderFramePlayers[i].FramesInvinsible = 0
+ }
+ if nextRenderFramePlayers[i].FramesSelfLockVel < 0 {
+ nextRenderFramePlayers[i].FramesSelfLockVel = 0
+ }
}
nextRenderFrameMeleeBullets := make([]*MeleeBullet, 0, len(currRenderFrame.MeleeBullets)) // Is there any better way to reduce malloc/free impact, e.g. smart prediction for fixed memory allocation?
@@ -475,8 +495,6 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
thatPlayerInNextFrame.ActiveSkillId = int32(skillId)
thatPlayerInNextFrame.ActiveSkillHit = 0
- // TODO: Respect non-zero "selfLockVel"
-
// Hardcoded to use only the first hit for now
switch v := skillConfig.Hits[thatPlayerInNextFrame.ActiveSkillHit].(type) {
case *MeleeBullet:
@@ -485,12 +503,30 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
newBullet.OffenderJoinIndex = joinIndex
nextRenderFrameMeleeBullets = append(nextRenderFrameMeleeBullets, &newBullet)
thatPlayerInNextFrame.FramesToRecover = skillConfig.RecoveryFrames
+
+ hasLockVel := false
+ if NO_LOCK_VEL != v.SelfLockVelX {
+ hasLockVel = true
+ xfac := int32(1)
+ if 0 > thatPlayerInNextFrame.DirX {
+ xfac = -xfac
+ }
+ thatPlayerInNextFrame.VelX = xfac * v.SelfLockVelX
+ thatPlayerInNextFrame.FramesSelfLockVel = v.FramesSelfLockVel
+ }
+ if NO_LOCK_VEL != v.SelfLockVelY {
+ hasLockVel = true
+ thatPlayerInNextFrame.VelY = v.SelfLockVelY
+ thatPlayerInNextFrame.FramesSelfLockVel = v.FramesSelfLockVel
+ }
+ if false == hasLockVel {
+ if false == currPlayerDownsync.InAir {
+ thatPlayerInNextFrame.VelX = 0
+ }
+ }
}
thatPlayerInNextFrame.CharacterState = skillConfig.BoundChState
- if false == currPlayerDownsync.InAir {
- thatPlayerInNextFrame.VelX = 0
- }
continue // Don't allow movement if skill is used
}
@@ -640,9 +676,9 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
thatPlayerInNextFrame.FramesToRecover = chConfig.GetUpFramesToRecover
}
} else if ATK_CHARACTER_STATE_GET_UP1 == thatPlayerInNextFrame.CharacterState {
- if thatPlayerInNextFrame.FramesInChState == chConfig.GetUpFrames {
- // [WARNING] Before reaching here, the player had 3 invinsible frames to either attack or jump, if it ever took any action then this condition wouldn't have been met, thus we hereby only transit it back to IDLE as it took no action
+ if 0 == thatPlayerInNextFrame.FramesToRecover {
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_IDLE1
+ thatPlayerInNextFrame.FramesInvinsible = chConfig.GetUpInvinsibleFrames
}
}
}
@@ -671,6 +707,9 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
if _, existent := invinsibleSet[t.CharacterState]; existent {
continue
}
+ if 0 < t.FramesInvinsible {
+ continue
+ }
overlapped, _, _, _ := CalcPushbacks(0, 0, bulletShape, defenderShape)
if !overlapped {
continue
diff --git a/jsexport/battle/characterConfig.go b/jsexport/battle/characterConfig.go
index 8e8feaa..d72c52b 100644
--- a/jsexport/battle/characterConfig.go
+++ b/jsexport/battle/characterConfig.go
@@ -12,8 +12,8 @@ type CharacterConfig struct {
LayDownFrames int32
LayDownFramesToRecover int32
- GetUpFrames int32
- GetUpFramesToRecover int32
+ GetUpInvinsibleFrames int32
+ GetUpFramesToRecover int32
Speed int32
JumpingInitVelY int32
@@ -32,8 +32,8 @@ var Characters = map[int]*CharacterConfig{
LayDownFrames: int32(16),
LayDownFramesToRecover: int32(16),
- GetUpFrames: int32(33),
- GetUpFramesToRecover: int32(30), // 3 invinsible frames for just-blown-up character to make a comeback
+ GetUpInvinsibleFrames: int32(10),
+ GetUpFramesToRecover: int32(27),
Speed: int32(float64(1.2) * WORLD_TO_VIRTUAL_GRID_RATIO),
JumpingInitVelY: int32(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO),
@@ -75,8 +75,8 @@ var Characters = map[int]*CharacterConfig{
LayDownFrames: int32(16),
LayDownFramesToRecover: int32(16),
- GetUpFrames: int32(30),
- GetUpFramesToRecover: int32(27), // 3 invinsible frames for just-blown-up character to make a comeback
+ GetUpInvinsibleFrames: int32(10),
+ GetUpFramesToRecover: int32(27),
Speed: int32(float64(1.4) * WORLD_TO_VIRTUAL_GRID_RATIO),
JumpingInitVelY: int32(float64(7.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
@@ -125,6 +125,8 @@ var skills = map[int]*Skill{
HitStunFrames: int32(13),
BlockStunFrames: int32(9),
Damage: int32(5),
+ SelfLockVelX: int32(float64(0.05) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ SelfLockVelY: NO_LOCK_VEL,
PushbackVelX: int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
PushbackVelY: int32(0),
HitboxOffsetX: int32(float64(12) * WORLD_TO_VIRTUAL_GRID_RATIO),
@@ -156,6 +158,8 @@ var skills = map[int]*Skill{
HitStunFrames: int32(18),
BlockStunFrames: int32(9),
Damage: int32(5),
+ SelfLockVelX: int32(float64(0.1) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ SelfLockVelY: NO_LOCK_VEL,
PushbackVelX: int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
PushbackVelY: int32(0),
HitboxOffsetX: int32(float64(18) * WORLD_TO_VIRTUAL_GRID_RATIO),
@@ -172,24 +176,26 @@ var skills = map[int]*Skill{
},
},
3: &Skill{
- RecoveryFrames: int32(60),
- RecoveryFramesOnBlock: int32(60),
- RecoveryFramesOnHit: int32(60),
+ RecoveryFrames: int32(70),
+ RecoveryFramesOnBlock: int32(70),
+ RecoveryFramesOnHit: int32(70),
ReleaseTriggerType: int32(1),
BoundChState: ATK_CHARACTER_STATE_ATK3,
Hits: []interface{}{
&MeleeBullet{
Bullet: Bullet{
StartupFrames: int32(15),
- ActiveFrames: int32(40),
+ ActiveFrames: int32(30),
HitStunFrames: MAX_INT32,
BlockStunFrames: int32(9),
Damage: int32(10),
+ SelfLockVelX: NO_LOCK_VEL,
+ SelfLockVelY: NO_LOCK_VEL,
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),
+ HitboxOffsetX: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxOffsetY: int32(0),
- HitboxSizeX: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ HitboxSizeX: int32(float64(48) * WORLD_TO_VIRTUAL_GRID_RATIO),
HitboxSizeY: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
BlowUp: true,
},
@@ -210,6 +216,8 @@ var skills = map[int]*Skill{
HitStunFrames: int32(13),
BlockStunFrames: int32(9),
Damage: int32(5),
+ SelfLockVelX: int32(float64(0.05) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ SelfLockVelY: NO_LOCK_VEL,
PushbackVelX: int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
PushbackVelY: int32(0),
HitboxOffsetX: int32(float64(12) * WORLD_TO_VIRTUAL_GRID_RATIO),
@@ -241,6 +249,8 @@ var skills = map[int]*Skill{
HitStunFrames: int32(18),
BlockStunFrames: int32(9),
Damage: int32(5),
+ SelfLockVelX: int32(float64(0.1) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ SelfLockVelY: NO_LOCK_VEL,
PushbackVelX: int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
PushbackVelY: int32(0),
HitboxOffsetX: int32(float64(18) * WORLD_TO_VIRTUAL_GRID_RATIO),
@@ -270,6 +280,8 @@ var skills = map[int]*Skill{
HitStunFrames: MAX_INT32,
BlockStunFrames: int32(9),
Damage: int32(10),
+ SelfLockVelX: int32(float64(-0.1) * WORLD_TO_VIRTUAL_GRID_RATIO),
+ SelfLockVelY: NO_LOCK_VEL,
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),
@@ -295,6 +307,8 @@ var skills = map[int]*Skill{
HitStunFrames: int32(18),
BlockStunFrames: int32(9),
Damage: int32(5),
+ SelfLockVelX: NO_LOCK_VEL,
+ SelfLockVelY: NO_LOCK_VEL,
PushbackVelX: int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
PushbackVelY: int32(0),
HitboxOffsetX: int32(float64(12) * WORLD_TO_VIRTUAL_GRID_RATIO),
@@ -319,6 +333,8 @@ var skills = map[int]*Skill{
HitStunFrames: int32(18),
BlockStunFrames: int32(9),
Damage: int32(5),
+ SelfLockVelX: NO_LOCK_VEL,
+ SelfLockVelY: NO_LOCK_VEL,
PushbackVelX: int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
PushbackVelY: int32(0),
HitboxOffsetX: int32(float64(12) * WORLD_TO_VIRTUAL_GRID_RATIO),
diff --git a/jsexport/battle/room_downsync_frame.go b/jsexport/battle/room_downsync_frame.go
index 110bf99..39465a3 100644
--- a/jsexport/battle/room_downsync_frame.go
+++ b/jsexport/battle/room_downsync_frame.go
@@ -36,6 +36,9 @@ type PlayerDownsync struct {
ActiveSkillId int32
ActiveSkillHit int32
+
+ FramesInvinsible int32
+ FramesSelfLockVel int32
}
type InputFrameDecoded struct {
@@ -70,8 +73,9 @@ type Bullet struct {
PushbackVelY int32
Damage int32
- SelfLockVelX int32
- SelfLockVelY int32
+ SelfLockVelX int32
+ SelfLockVelY int32
+ FramesSelfLockVel int32
HitboxOffsetX int32
HitboxOffsetY int32
diff --git a/jsexport/main.go b/jsexport/main.go
index 275f902..2516d25 100644
--- a/jsexport/main.go
+++ b/jsexport/main.go
@@ -42,31 +42,32 @@ func NewBarrierJs(boundary *Polygon2D) *js.Object {
})
}
-func NewPlayerDownsyncJs(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY, framesToRecover, framesInChState, activeSkillId, activeSkillHit, speed, battleState, characterState, joinIndex, hp, maxHp, colliderRadius int32, inAir bool) *js.Object {
+func NewPlayerDownsyncJs(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY, framesToRecover, framesInChState, activeSkillId, activeSkillHit, framesInvinsible, framesSelfLockVel, speed, battleState, characterState, joinIndex, hp, maxHp, colliderRadius int32, inAir bool) *js.Object {
return js.MakeWrapper(&PlayerDownsync{
- Id: id,
- VirtualGridX: virtualGridX,
- VirtualGridY: virtualGridY,
- DirX: dirX,
- DirY: dirY,
- VelX: velX,
- VelY: velY,
- FramesToRecover: framesToRecover,
- FramesInChState: framesInChState,
- ActiveSkillId: activeSkillId,
- ActiveSkillHit: activeSkillHit,
- Speed: speed,
- BattleState: battleState,
- CharacterState: characterState,
- JoinIndex: joinIndex,
- Hp: hp,
- MaxHp: maxHp,
- ColliderRadius: colliderRadius,
- InAir: inAir,
+ Id: id,
+ VirtualGridX: virtualGridX,
+ VirtualGridY: virtualGridY,
+ DirX: dirX,
+ DirY: dirY,
+ VelX: velX,
+ VelY: velY,
+ FramesToRecover: framesToRecover,
+ FramesInChState: framesInChState,
+ ActiveSkillId: activeSkillId,
+ ActiveSkillHit: activeSkillHit,
+ FramesInvinsible: framesInvinsible,
+ Speed: speed,
+ BattleState: battleState,
+ CharacterState: characterState,
+ JoinIndex: joinIndex,
+ Hp: hp,
+ MaxHp: maxHp,
+ ColliderRadius: colliderRadius,
+ InAir: inAir,
})
}
-func NewMeleeBulletJs(originatedRenderFrameId, offenderJoinIndex, startupFrames, cancellableStFrame, cancellableEdFrame, activeFrames, hitStunFrames, blockStunFrames, pushbackVelX, pushbackVelY, damage, selfLockVelX, selfLockVelY, hitboxOffsetX, hitboxOffsetY, hitboxSizeX, hitboxSizeY int32, blowUp bool) *js.Object {
+func NewMeleeBulletJs(originatedRenderFrameId, offenderJoinIndex, startupFrames, cancellableStFrame, cancellableEdFrame, activeFrames, hitStunFrames, blockStunFrames, pushbackVelX, pushbackVelY, damage, selfLockVelX, selfLockVelY, framesSelfLockVel, hitboxOffsetX, hitboxOffsetY, hitboxSizeX, hitboxSizeY int32, blowUp bool) *js.Object {
return js.MakeWrapper(&MeleeBullet{
Bullet: Bullet{
OriginatedRenderFrameId: originatedRenderFrameId,
@@ -83,8 +84,9 @@ func NewMeleeBulletJs(originatedRenderFrameId, offenderJoinIndex, startupFrames,
PushbackVelY: pushbackVelY,
Damage: damage,
- SelfLockVelX: selfLockVelX,
- SelfLockVelY: selfLockVelY,
+ SelfLockVelX: selfLockVelX,
+ SelfLockVelY: selfLockVelY,
+ FramesSelfLockVel: framesSelfLockVel,
HitboxOffsetX: hitboxOffsetX,
HitboxOffsetY: hitboxOffsetY,