diff --git a/pom.xml b/pom.xml
index 7266d29..e3bd951 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,7 +89,7 @@
- uno.mloluyu.desktop.Launcher
+ uno.mloluyu.desktop.DesktopLauncher
@@ -102,7 +102,7 @@
true
- uno.mloluyu.desktop.Launcher
+ uno.mloluyu.desktop.DesktopLauncher
diff --git a/src/main/java/uno/mloluyu/characters/AdvancedFighter.java b/src/main/java/uno/mloluyu/characters/AdvancedFighter.java
index a029733..3382dca 100644
--- a/src/main/java/uno/mloluyu/characters/AdvancedFighter.java
+++ b/src/main/java/uno/mloluyu/characters/AdvancedFighter.java
@@ -8,23 +8,9 @@ public class AdvancedFighter extends SimpleFighter {
@Override
public void attack(String attackType) {
- // 根据攻击类型设置不同攻击力或状态
- switch (attackType.toLowerCase()) {
- case "light":
- changeAction(Action.ATTACK);
- // System.out.println(getName() + " 发起轻攻击!");
- break;
- case "heavy":
- changeAction(Action.ATTACK);
- // System.out.println(getName() + " 发起重攻击!");
- break;
- case "special":
- changeAction(Action.ATTACK);
- // System.out.println(getName() + " 发动特殊技能!");
- break;
- default:
- super.attack(attackType); // 默认调用父类攻击逻辑
- break;
- }
+ // 先使用父类的攻击逻辑来保证 isAttacking/attackTimer/attackbox 等状态被正确设置
+ super.attack(attackType);
+ // 在这里可以添加 AdvancedFighter 特有的扩展行为(攻击力、特效等)
+ // 例如:根据 attackType 调整伤害或触发粒子/声音,但不要忘记保留父类的状态设置
}
}
diff --git a/src/main/java/uno/mloluyu/characters/SimpleFighter.java b/src/main/java/uno/mloluyu/characters/SimpleFighter.java
index 9b5519d..3840c05 100644
--- a/src/main/java/uno/mloluyu/characters/SimpleFighter.java
+++ b/src/main/java/uno/mloluyu/characters/SimpleFighter.java
@@ -3,14 +3,13 @@ package uno.mloluyu.characters;
// 注意:本类使用的是包 uno.mloluyu.characters 下的 Action (IDLE, JUMP, MOVE, ATTACK, DEFEND, HIT, DEAD)
// 避免与 uno.mloluyu.characters.character.Action (ATTACK1/2/3...) 混淆
-// 简化:去除内部按键时长跟踪,统一由 FighterController 负责
-
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.math.Rectangle;
+import uno.mloluyu.network.NetworkManager;
/**
* 简化版角色类,仅包含移动、攻击、受击等基础功能。
@@ -18,51 +17,27 @@ import com.badlogic.gdx.math.Rectangle;
public class SimpleFighter {
private String name; // 角色名称
-
- private Action currentAction = Action.IDLE; // 当前动作状态(待机、攻击、受击等)
- private float verticalSpeed = 0f; // 垂直速度(可用于跳跃或下落)
- private boolean isGrounded = true; // 是否在地面上
-
- private Rectangle hitbox = new Rectangle(0, 0, 64, 128); // 碰撞盒,用于位置和受击判定
- private Rectangle attackbox = new Rectangle(0, 0, 80, 80); // 攻击盒,用于攻击判定
- private boolean isFacingRight = true; // 是否面向右侧
-
- private float speed = 300f; // 移动速度(像素/秒)
- private int health = 100; // 当前生命值
-
- private boolean isAttacking = false; // 是否正在攻击(攻击状态标志)
- private boolean attackJustStarted = false; // 攻击刚开始的标记,避免第一帧被减掉
- private int attackInvokeCount = 0; // 调试:attack()调用次数
-
- // 攻击持续时间(秒)
- private float attackTimer = 0f;
- private static final float ATTACK_DURATION = 0.15f; // 攻击判定显示时间
-
- private static boolean debugEnabled = true; // F3 开关
-
- public static void toggleDebug() {
- debugEnabled = !debugEnabled;
- }
-
- public static boolean isDebugEnabled() {
- return debugEnabled;
- }
+ private Action currentAction = Action.IDLE; // 当前动作状态
+ private float verticalSpeed = 0f; // 垂直速度(跳跃/下落)
+ private boolean isGrounded = true; // 是否着地
+ private Rectangle hitbox = new Rectangle(0, 0, 64, 128); // 碰撞盒
+ private Rectangle attackbox = new Rectangle(0, 0, 80, 80); // 攻击判定盒
+ private boolean isFacingRight = true; // 朝向(右/左)
+ private float speed = 300f; // 水平移动速度
+ private int health = 100; // 生命值
+ private boolean isAttacking = false; // 是否正在攻击
+ private boolean attackJustStarted = false; // 攻击是否刚开始
+ private float attackTimer = 0f; // 攻击计时器
+ private static final float ATTACK_DURATION = 0.15f; // 攻击持续时间
public SimpleFighter(String name) {
- this.name = name; // 构造函数,初始化角色名称
+ this.name = name;
}
public void update(float deltaTime) {
- // 自愈:动作是 ATTACK 但标记丢失
- if (currentAction == Action.ATTACK && attackTimer > 0f && !isAttacking) {
- isAttacking = true;
- attackJustStarted = false;
- }
-
- // 攻击计时
if (isAttacking) {
if (attackJustStarted) {
- attackJustStarted = false; // 第一帧不扣时间
+ attackJustStarted = false;
} else {
attackTimer -= deltaTime;
}
@@ -71,15 +46,11 @@ public class SimpleFighter {
attackTimer = 0f;
if (currentAction == Action.ATTACK)
changeAction(Action.IDLE);
- if (debugEnabled)
- System.out.println("[ATTACK-END]");
}
} else {
- // 空闲/移动状态下保持一个默认攻击盒(便于调试观察)
updateAttackbox("light");
}
- // 垂直运动 & 重力
if (!isGrounded) {
verticalSpeed -= 2500 * deltaTime;
hitbox.y += verticalSpeed * deltaTime;
@@ -92,36 +63,23 @@ public class SimpleFighter {
}
}
- @Deprecated
- public void render(SpriteBatch batch, ShapeRenderer shapeRenderer) {
- batch.end();
- shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
- renderDebug(shapeRenderer);
- shapeRenderer.end();
- batch.begin();
+ public void renderSprite(SpriteBatch batch) {
}
- public void renderSprite(SpriteBatch batch) {
- /* 预留贴图渲染入口 */ }
-
public void renderDebug(ShapeRenderer sr) {
- if (!debugEnabled)
- return;
sr.setColor(Color.BLUE);
sr.rect(hitbox.x, hitbox.y, hitbox.width, hitbox.height);
if (isAttacking) {
- // 只画轮廓;填充在 GameScreen 专门的 Filled pass 中画
sr.setColor(Color.RED);
sr.rect(attackbox.x, attackbox.y, attackbox.width, attackbox.height);
}
- // 朝向箭头
float arrowX = isFacingRight ? hitbox.x + hitbox.width + 5 : hitbox.x - 15;
sr.setColor(Color.YELLOW);
sr.line(arrowX, hitbox.y + hitbox.height * 0.7f, arrowX + (isFacingRight ? 10 : -10),
hitbox.y + hitbox.height * 0.7f);
}
- public void handleInput(int keycode, boolean isPressed, float duration) {
+ public void handleInput(int keycode, boolean isPressed) {
if (isPressed) {
if (keycode == Input.Keys.LEFT || keycode == Input.Keys.A) {
move(-1, Gdx.graphics.getDeltaTime());
@@ -131,42 +89,38 @@ public class SimpleFighter {
if (keycode == Input.Keys.SPACE || keycode == Input.Keys.UP || keycode == Input.Keys.W) {
jump();
}
- // 攻击按键
if (!isAttacking) {
if (keycode == Input.Keys.Z || keycode == Input.Keys.J) {
attack("light");
+ NetworkManager.getInstance().sendAttack("light");
} else if (keycode == Input.Keys.X || keycode == Input.Keys.K) {
attack("heavy");
+ NetworkManager.getInstance().sendAttack("heavy");
} else if (keycode == Input.Keys.SHIFT_LEFT || keycode == Input.Keys.SHIFT_RIGHT) {
attack("special");
+ NetworkManager.getInstance().sendAttack("special");
}
}
} else {
if ((keycode == Input.Keys.LEFT || keycode == Input.Keys.RIGHT || keycode == Input.Keys.A
- || keycode == Input.Keys.D) &&
- getCurrentAction() == Action.MOVE) {
+ || keycode == Input.Keys.D) && getCurrentAction() == Action.MOVE) {
changeAction(Action.IDLE);
}
}
}
- public void handleInput(int keycode, boolean isPressed) {
- handleInput(keycode, isPressed, 0f); // 调用已有方法,补充默认持续时间
- }
-
public Action getCurrentAction() {
- return currentAction; // 获取当前动作状态
+ return currentAction;
}
public void changeAction(Action newAction) {
- this.currentAction = newAction; // 切换角色动作状态
+ this.currentAction = newAction;
}
public void jump() {
if (isGrounded) {
verticalSpeed = 1000f;
isGrounded = false;
- System.out.println("跳跃高度: " + verticalSpeed);
changeAction(Action.JUMP);
}
}
@@ -175,18 +129,14 @@ public class SimpleFighter {
if (x != 0) {
isFacingRight = x > 0;
hitbox.x += x * speed * deltaTime;
- changeAction(Action.MOVE); // 移动时切换为 MOVE 状态
+ changeAction(Action.MOVE);
} else if (isGrounded && !isAttacking) {
- changeAction(Action.IDLE); // 停止移动时恢复待机
+ changeAction(Action.IDLE);
}
}
private void updateAttackbox(String attackType) {
- float offsetX;
- float offsetY = 20; // 默认偏移量
- float width = 80;
- float height = 80;
-
+ float offsetX, offsetY = 20, width = 80, height = 80;
switch (attackType) {
case "heavy":
offsetX = isFacingRight ? hitbox.width : -100;
@@ -206,7 +156,6 @@ public class SimpleFighter {
default:
offsetX = isFacingRight ? hitbox.width - 10 : -attackbox.width + 10;
}
-
attackbox.setPosition(hitbox.x + offsetX, hitbox.y + offsetY);
attackbox.setSize(width, height);
}
@@ -217,59 +166,42 @@ public class SimpleFighter {
attackJustStarted = true;
changeAction(Action.ATTACK);
updateAttackbox(attackType);
- attackInvokeCount++;
- if (debugEnabled)
- System.out.println("[ATTACK] type=" + attackType + " count=" + attackInvokeCount);
}
public void takeHit(int damage) {
- health = Math.max(0, health - damage); // 扣除生命值,最小为 0
- changeAction(health > 0 ? Action.HIT : Action.DEAD); // 根据生命值切换为受击或死亡状态
+ health = Math.max(0, health - damage);
+ changeAction(health > 0 ? Action.HIT : Action.DEAD);
}
public boolean isAlive() {
- return health > 0; // 判断角色是否存活
+ return health > 0;
}
public boolean isAttacking() {
- return isAttacking; // 判断是否处于攻击状态
+ return isAttacking;
}
- // 常用访问器
public Rectangle getHitbox() {
- return hitbox; // 获取碰撞盒
+ return hitbox;
}
public Rectangle getAttackbox() {
- return attackbox; // 获取攻击盒
+ return attackbox;
}
public int getHealth() {
- return health; // 获取当前生命值
+ return health;
}
public String getName() {
- return name; // 获取角色名称
+ return name;
}
public void setPosition(float x, float y) {
- hitbox.setPosition(x, y); // 设置角色位置
- }
-
- public void debugPrintState() {
- if (debugEnabled)
- System.out.println("[STATE] action=" + currentAction + ", atk=" + isAttacking + ", t=" + attackTimer);
+ hitbox.setPosition(x, y);
}
public float getAttackTimer() {
return attackTimer;
}
-
- public float getAttackTimerPercent() {
- return isAttacking ? attackTimer / ATTACK_DURATION : 0f;
- }
-
- public int getAttackInvokeCount() {
- return attackInvokeCount;
- }
}
diff --git a/src/main/java/uno/mloluyu/characters/character/Action.java b/src/main/java/uno/mloluyu/characters/character/Action.java
deleted file mode 100644
index 1dabb46..0000000
--- a/src/main/java/uno/mloluyu/characters/character/Action.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package uno.mloluyu.characters.character;
-
-public enum Action {
- IDLE, WALK, JUMP, FALL,
- ATTACK1, ATTACK2, ATTACK3, ATTACK4,
- HIT, DEFEND,
- SPECIAL1, SPECIAL2,
- DEATH
-}
diff --git a/src/main/java/uno/mloluyu/characters/character/Alice.java b/src/main/java/uno/mloluyu/characters/character/Alice.java
deleted file mode 100644
index 554dfbb..0000000
--- a/src/main/java/uno/mloluyu/characters/character/Alice.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package uno.mloluyu.characters.character;
-
-import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.graphics.g2d.TextureAtlas;
-
-/**
- * Alice角色类,继承自Fighter父类,定义其专属属性和动画
- */
-public class Alice extends Fighter {
-
- private static final String ATLAS_PATH = "src/main/resources/character/alice/精灵1.2.atlas";
-
- public Alice() {
- super("Alice", new TextureAtlas(Gdx.files.internal(ATLAS_PATH)));
-
- speed = 350f;
- maxHealth = 90;
- health = maxHealth;
- attackPower = 12;
- }
-
- @Override
- protected void loadAnimations() {
- animationManager.loadLooping(Action.IDLE, "stand/stand", 15);
- animationManager.loadLooping(Action.WALK, "walkFront/walkFront", 9);
- animationManager.loadOneShot(Action.JUMP, "jump/jump", 8);
- animationManager.loadOneShot(Action.FALL, "hitSpin/hitSpin", 5);
-
- animationManager.loadOneShot(Action.ATTACK1, "attackAa/attackAa", 6);
- animationManager.loadOneShot(Action.ATTACK2, "attackAb/attackAb", 6);
- animationManager.loadOneShot(Action.ATTACK3, "attackAc/attackAc", 6);
- animationManager.loadOneShot(Action.ATTACK4, "attackAd/attackAd", 6);
-
- animationManager.loadOneShot(Action.HIT, "hitSpin/hitSpin", 5);
- // animationManager.loadOneShot(Action.DEATH, "death/death", 8);
-
- // 可选特殊动作(如资源存在可启用)
- // animationManager.loadOneShot(Action.SPECIAL1, "special/special1", 6);
- // animationManager.loadOneShot(Action.SPECIAL2, "special/special2", 6);
-
- animationManager.setFrameDuration(Action.IDLE, 0.04f);
- animationManager.setFrameDuration(Action.WALK, 0.08f);
- animationManager.setFrameDuration(Action.ATTACK1, 0.07f);
- animationManager.setFrameDuration(Action.SPECIAL2, 0.06f);
- }
-
- @Override
- protected void handleMoveState() {
- if (currentAction != Action.ATTACK1 &&
- currentAction != Action.ATTACK2 &&
- currentAction != Action.ATTACK3 &&
- currentAction != Action.ATTACK4 &&
- currentAction != Action.SPECIAL1 &&
- currentAction != Action.SPECIAL2 &&
- currentAction != Action.DEFEND &&
- currentAction != Action.JUMP &&
- currentAction != Action.FALL) {
- changeAction(Action.WALK);
- }
- }
-
- @Override
- protected boolean canAttack() {
- return super.canAttack() || currentAction == Action.JUMP || currentAction == Action.FALL;
- }
-
- public int getHp() {
- return health;
- }
-}
diff --git a/src/main/java/uno/mloluyu/characters/character/Fighter.java b/src/main/java/uno/mloluyu/characters/character/Fighter.java
deleted file mode 100644
index d9812d2..0000000
--- a/src/main/java/uno/mloluyu/characters/character/Fighter.java
+++ /dev/null
@@ -1,287 +0,0 @@
-package uno.mloluyu.characters.character;
-
-import com.badlogic.gdx.graphics.g2d.SpriteBatch;
-import com.badlogic.gdx.math.Rectangle;
-import com.badlogic.gdx.utils.Disposable;
-import com.badlogic.gdx.graphics.g2d.TextureAtlas;
-
-/**
- * 抽象类 Fighter,定义所有角色的基础属性与行为。
- * 包括动画控制、移动、攻击、受击、渲染等核心逻辑。
- */
-public abstract class Fighter implements Disposable {
-
- // 默认帧持续时间(秒)
- protected static final float DEFAULT_FRAME_DURATION = 0.1f;
- // 默认生命值
- protected static final int DEFAULT_HEALTH = 100;
- // 默认移动速度(像素/秒)
- protected static final float DEFAULT_SPEED = 300f;
-
- // 角色名称
- protected String name;
- // 当前动作状态
- protected Action currentAction = Action.IDLE;
- // 当前动作已持续时间
- protected float stateTime = 0f;
- // 是否面向右侧
- protected boolean isFacingRight = true;
- // 当前动画是否播放完毕
- protected boolean isAnimationFinished = false;
-
- // 碰撞盒(用于位置和受击判定)
- protected Rectangle hitbox = new Rectangle(0, 0, 64, 128);
- // 攻击盒(用于攻击判定)
- protected Rectangle attackbox = new Rectangle(0, 0, 80, 80);
-
- // 移动速度
- protected float speed = DEFAULT_SPEED;
- // 当前生命值
- protected int health = DEFAULT_HEALTH;
- // 最大生命值
- protected int maxHealth = DEFAULT_HEALTH;
- // 攻击力
- protected int attackPower = 10;
-
- // 动画管理器
- protected FighterAnimationManager animationManager;
-
- /**
- * 构造函数,初始化角色名称与动画资源。
- *
- * @param name 角色名称
- * @param atlas 动画图集
- */
- public Fighter(String name, TextureAtlas atlas) {
- this.name = name;
- this.animationManager = new FighterAnimationManager(atlas);
- loadAnimations();
- }
-
- /**
- * 加载角色的所有动画资源,由子类实现。
- */
- protected abstract void loadAnimations();
-
- /**
- * 每帧更新角色状态,包括动画播放与碰撞盒更新。
- *
- * @param deltaTime 帧间隔时间
- */
- public void update(float deltaTime) {
- stateTime += deltaTime;
- isAnimationFinished = animationManager.isFinished(currentAction, stateTime);
- handleAnimationTransitions();
- updateHitboxes();
- }
-
- /**
- * 渲染角色当前帧。
- *
- * @param batch 渲染批处理器
- */
- public void render(SpriteBatch batch) {
- animationManager.render(batch, currentAction, stateTime, hitbox, isFacingRight);
- }
-
- /**
- * 动画播放完毕后的动作切换逻辑。
- */
- protected void handleAnimationTransitions() {
- if (!isAnimationFinished)
- return;
-
- switch (currentAction) {
- case ATTACK1, ATTACK2, ATTACK3, ATTACK4, SPECIAL1, SPECIAL2, HIT -> changeAction(Action.IDLE);
- case JUMP -> changeAction(Action.FALL);
- default -> {
- }
- }
- }
-
- /**
- * 切换角色动作状态。
- *
- * @param newAction 新动作
- * @return 是否成功切换
- */
- public boolean changeAction(Action newAction) {
- if (isActionUninterruptible(currentAction))
- return false;
- if (currentAction != newAction) {
- currentAction = newAction;
- stateTime = 0f;
- isAnimationFinished = false;
- return true;
- }
- return false;
- }
-
- /**
- * 判断某个动作是否不可打断(如受击或死亡)。
- *
- * @param action 动作枚举
- * @return 是否不可打断
- */
- protected boolean isActionUninterruptible(Action action) {
- return action == Action.HIT || action == Action.DEATH;
- }
-
- /**
- * 更新攻击盒位置(根据角色朝向调整)。
- */
- protected void updateHitboxes() {
- float offsetX = isFacingRight ? hitbox.width - 10 : -attackbox.width + 10;
- attackbox.setPosition(hitbox.x + offsetX, hitbox.y + 20);
- }
-
- /**
- * 移动角色。
- *
- * @param x 水平移动方向(-1左,1右)
- * @param deltaTime 帧间隔时间
- */
- public void move(float x, float deltaTime) {
- if (x != 0) {
- isFacingRight = x > 0;
- hitbox.x += x * speed * deltaTime;
- handleMoveState();
- } else if (currentAction == Action.WALK) {
- changeAction(Action.IDLE);
- }
- }
-
- /**
- * 移动状态下的动作切换逻辑。
- */
- protected void handleMoveState() {
- if (!isActionUninterruptible(currentAction) &&
- currentAction != Action.JUMP &&
- currentAction != Action.FALL &&
- currentAction != Action.DEFEND &&
- !currentAction.name().startsWith("ATTACK") &&
- !currentAction.name().startsWith("SPECIAL")) {
- changeAction(Action.WALK);
- }
- }
-
- /**
- * 发起攻击动作。
- *
- * @param attackType 攻击类型(1~5)
- * @return 是否成功发起攻击
- */
- public boolean attack(int attackType) {
- if (!canAttack())
- return false;
-
- Action attackAction = switch (attackType) {
- case 1 -> Action.ATTACK1;
- case 2 -> Action.ATTACK2;
- case 3 -> Action.ATTACK3;
- case 4 -> Action.SPECIAL1;
- case 5 -> Action.SPECIAL2;
- default -> null;
- };
-
- return attackAction != null && changeAction(attackAction);
- }
-
- /**
- * 判断当前是否可以攻击。
- *
- * @return 是否可攻击
- */
- protected boolean canAttack() {
- return currentAction == Action.IDLE || currentAction == Action.WALK;
- }
-
- /**
- * 接受伤害。
- *
- * @param damage 伤害值
- */
- public void takeHit(int damage) {
- if (currentAction == Action.DEATH)
- return;
-
- health = Math.max(0, health - damage);
- changeAction(health == 0 ? Action.DEATH : Action.HIT);
- }
-
- /**
- * 设置角色位置。
- *
- * @param x 横坐标
- * @param y 纵坐标
- */
- public void setPosition(float x, float y) {
- hitbox.setPosition(x, y);
- }
-
- /**
- * 设置角色朝向。
- *
- * @param facingRight 是否面向右
- */
- public void setFacingRight(boolean facingRight) {
- this.isFacingRight = facingRight;
- }
-
- // 以下为常用属性访问器
-
- public String getName() {
- return name;
- }
-
- public Rectangle getHitbox() {
- return hitbox;
- }
-
- public Rectangle getAttackbox() {
- return attackbox;
- }
-
- public boolean isFacingRight() {
- return isFacingRight;
- }
-
- public int getHealth() {
- return health;
- }
-
- public Action getCurrentAction() {
- return currentAction;
- }
-
- public float getX() {
- return hitbox.x;
- }
-
- public float getY() {
- return hitbox.y;
- }
-
- public float getCenterX() {
- return hitbox.x + hitbox.width / 2;
- }
-
- public float getCenterY() {
- return hitbox.y + hitbox.height / 2;
- }
-
- /**
- * 帧事件监听器接口,用于在动画播放到某一帧时触发逻辑。
- */
- public interface FrameEventListener {
- void onFrameEvent(Action action, int frameIndex);
- }
-
- /**
- * 释放资源(如动画图集)。
- */
- @Override
- public void dispose() {
- animationManager.dispose();
- }
-}
diff --git a/src/main/java/uno/mloluyu/characters/character/FighterAnimationManager.java b/src/main/java/uno/mloluyu/characters/character/FighterAnimationManager.java
deleted file mode 100644
index 40acbe2..0000000
--- a/src/main/java/uno/mloluyu/characters/character/FighterAnimationManager.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package uno.mloluyu.characters.character;
-
-import com.badlogic.gdx.graphics.g2d.*;
-import com.badlogic.gdx.math.Rectangle;
-import com.badlogic.gdx.utils.Array;
-
-import uno.mloluyu.util.SimpleFormatter;
-
-import java.util.EnumMap;
-
-public class FighterAnimationManager {
- private EnumMap> animations = new EnumMap<>(Action.class);
- private EnumMap frameDurations = new EnumMap<>(Action.class);
- private TextureAtlas atlas;
- private float scaleX = 1.0f;
- private float scaleY = 1.0f;
-
- public FighterAnimationManager(TextureAtlas atlas) {
- this.atlas = atlas;
- for (Action action : Action.values()) {
- frameDurations.put(action, 0.1f);
- }
- }
-
- public void loadAnimation(Action action, String prefix, int count, boolean loop) {
- Array frames = new Array<>();
- for (int i = 0; i < count; i++) {
- String regionName = prefix + SimpleFormatter.addLeadingZeros(i, 3);
- TextureRegion region = atlas.findRegion(regionName);
- if (region == null) {
- throw new IllegalArgumentException("未找到区域: " + regionName);
- }
- frames.add(region);
- }
-
- Animation animation = new Animation<>(frameDurations.get(action), frames);
- animation.setPlayMode(loop ? Animation.PlayMode.LOOP : Animation.PlayMode.NORMAL);
- animations.put(action, animation);
- }
-
- public void loadLooping(Action action, String prefix, int count) {
- loadAnimation(action, prefix, count, true);
- }
-
- public void loadOneShot(Action action, String prefix, int count) {
- loadAnimation(action, prefix, count, false);
- }
-
- public void setFrameDuration(Action action, float duration) {
- frameDurations.put(action, duration);
- Animation anim = animations.get(action);
- if (anim != null) anim.setFrameDuration(duration);
- }
-
- public boolean isFinished(Action action, float stateTime) {
- Animation anim = animations.get(action);
- return anim != null && anim.isAnimationFinished(stateTime);
- }
-
- public void render(SpriteBatch batch, Action action, float stateTime, Rectangle hitbox, boolean isFacingRight) {
- Animation anim = animations.get(action);
- if (anim == null) return;
-
- TextureRegion frame = anim.getKeyFrame(stateTime, anim.getPlayMode() == Animation.PlayMode.LOOP);
- if (frame == null) return;
-
- float frameWidth = frame.getRegionWidth() * scaleX;
- float frameHeight = frame.getRegionHeight() * scaleY;
- float drawX = hitbox.x + (hitbox.width - frameWidth) / 2;
- float drawY = hitbox.y;
-
- boolean wasFlippedX = frame.isFlipX();
- frame.flip(!isFacingRight && !wasFlippedX, false);
- frame.flip(isFacingRight && wasFlippedX, false);
-
- batch.draw(frame, drawX, drawY, frameWidth / 2, frameHeight / 2, frameWidth, frameHeight, 1f, 1f, 0f);
- frame.flip(wasFlippedX != frame.isFlipX(), false);
- }
-
- public void dispose() {
- if (atlas != null) atlas.dispose();
- }
-}
diff --git a/src/main/java/uno/mloluyu/characters/character/FighterList.java b/src/main/java/uno/mloluyu/characters/character/FighterList.java
deleted file mode 100644
index 98870f2..0000000
--- a/src/main/java/uno/mloluyu/characters/character/FighterList.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package uno.mloluyu.characters.character;
-
-import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.graphics.g2d.TextureAtlas;
-
-public class FighterList {
-
- public static final TextureAtlas aliceAtlas = new TextureAtlas(Gdx.files.internal("src\\main\\resources\\character\\alice\\alice.atlas"));
-
-}
diff --git a/src/main/java/uno/mloluyu/characters/character/Reimu.java b/src/main/java/uno/mloluyu/characters/character/Reimu.java
deleted file mode 100644
index 0a6eb86..0000000
--- a/src/main/java/uno/mloluyu/characters/character/Reimu.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package uno.mloluyu.characters.character;
-
-import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.graphics.g2d.TextureAtlas;
-
-public class Reimu extends Fighter {
- public Reimu() {
- super("Reimu", new TextureAtlas(Gdx.files.internal("src/main/resources/character/reimu/reimu.atlas")));
-
- // 设置角色属性
- speed = 350f; // 更快的移动速度
- maxHealth = 90; // 较低的生命值
- health = maxHealth;
- attackPower = 12; // 中等攻击力
- }
-
- @Override
- protected void loadAnimations() {
- // 基础动作 (looping)
- animationManager.loadLooping(Action.IDLE, "other/stand", 9);
- animationManager.loadLooping(Action.WALK, "other/walkFront", 9);
- // 一次性动作 (one-shot)
- animationManager.loadOneShot(Action.JUMP, "other/jump", 8);
- animationManager.loadOneShot(Action.FALL, "other/hitSpin", 5);
-
- // 攻击动作
- animationManager.loadOneShot(Action.ATTACK1, "attackAa/attackAa", 6);
- animationManager.loadOneShot(Action.ATTACK2, "attackAb/attackAb", 6);
- animationManager.loadOneShot(Action.ATTACK3, "attackAc/attackAc", 6);
- animationManager.loadOneShot(Action.ATTACK4, "attackAd/attackAd", 6);
-
- // 受击
- animationManager.loadOneShot(Action.HIT, "hitSpin/hitSpin", 5);
-
- // 帧间隔
- animationManager.setFrameDuration(Action.IDLE, 0.04f);
- animationManager.setFrameDuration(Action.WALK, 0.08f);
- animationManager.setFrameDuration(Action.ATTACK1, 0.07f);
- animationManager.setFrameDuration(Action.SPECIAL2, 0.06f);
- }
-
- @Override
- protected void handleMoveState() {
- if (currentAction != Action.ATTACK1 &&
- currentAction != Action.ATTACK2 &&
- currentAction != Action.ATTACK3 &&
- currentAction != Action.SPECIAL1 &&
- currentAction != Action.SPECIAL2 &&
- currentAction != Action.DEFEND &&
- currentAction != Action.JUMP &&
- currentAction != Action.FALL) {
- changeAction(Action.WALK);
- }
- }
-
- /**
- * 空中也可以攻击
- */
- @Override
- protected boolean canAttack() {
- return super.canAttack() || currentAction == Action.JUMP || currentAction == Action.FALL;
- }
-
- /**
- * 获取当前生命值
- */
- public int getHp() {
- return health;
- }
-}
diff --git a/src/main/java/uno/mloluyu/desktop/CharacterSelectScreen.java b/src/main/java/uno/mloluyu/desktop/CharacterSelectScreen.java
index 6094f2c..44a74cc 100644
--- a/src/main/java/uno/mloluyu/desktop/CharacterSelectScreen.java
+++ b/src/main/java/uno/mloluyu/desktop/CharacterSelectScreen.java
@@ -1,7 +1,6 @@
package uno.mloluyu.desktop;
import java.util.UUID;
-import uno.mloluyu.network.NetworkManager;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.ScreenAdapter;
@@ -11,10 +10,9 @@ import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
-import uno.mloluyu.characters.character.Alice;
import uno.mloluyu.characters.AdvancedFighter;
import uno.mloluyu.characters.SimpleFighter;
-import uno.mloluyu.characters.character.Reimu;
+import uno.mloluyu.network.NetworkManager;
import uno.mloluyu.util.ClearScreen;
import java.util.Arrays;
import java.util.List;
@@ -154,24 +152,30 @@ public class CharacterSelectScreen extends ScreenAdapter {
SimpleFighter fighter = null;
switch (selectedCharacter) {
case "Alice":
- fighter = new AdvancedFighter("Alice");
- break;
case "Reimu":
- fighter = new AdvancedFighter("Reimu");
+ fighter = new AdvancedFighter(selectedCharacter);
break;
+ default:
+ fighter = new SimpleFighter(selectedCharacter);
}
if (fighter != null) {
if (multiplayerMode) {
- // 设置唯一玩家 ID 并发送角色选择
- if (NetworkManager.getInstance().getLocalPlayerId() == null) {
+ NetworkManager nm = NetworkManager.getInstance();
+ // 主机或客户端的 localPlayerId 应该已经在 NetworkSettingsScreen 设置,这里兜底
+ if (nm.getLocalPlayerId() == null) {
String playerId = UUID.randomUUID().toString();
- NetworkManager.getInstance().setLocalPlayerId(playerId);
- Gdx.app.log("Network", "设置玩家ID: " + playerId);
+ nm.setLocalPlayerId(playerId);
+ Gdx.app.log("Network", "兜底设置玩家ID: " + playerId);
+ }
+ if (nm.isConnected()) {
+ nm.sendCharacterSelection(selectedCharacter);
+ // 发送初始位置(角色生成初始 hitbox 坐标)
+ nm.sendPosition(fighter.getHitbox().x, fighter.getHitbox().y);
+ } else {
+ Gdx.app.log("Network", "未连接网络,无法发送角色选择");
}
- NetworkManager.getInstance().sendCharacterSelection(selectedCharacter);
}
-
game.setScreen(new GameScreen(game, fighter));
}
}
diff --git a/src/main/java/uno/mloluyu/desktop/GameScreen.java b/src/main/java/uno/mloluyu/desktop/GameScreen.java
index 0513b67..7e43fce 100644
--- a/src/main/java/uno/mloluyu/desktop/GameScreen.java
+++ b/src/main/java/uno/mloluyu/desktop/GameScreen.java
@@ -15,6 +15,7 @@ import java.util.HashMap;
import java.util.Map;
import uno.mloluyu.characters.SimpleFighter;
+import uno.mloluyu.characters.AdvancedFighter;
import uno.mloluyu.network.NetworkManager;
import uno.mloluyu.util.ClearScreen;
import uno.mloluyu.versatile.FighterController;
@@ -26,8 +27,7 @@ public class GameScreen extends ScreenAdapter {
private SpriteBatch batch;
private ShapeRenderer shapeRenderer;
- private OrthographicCamera camera; // 添加摄像机
- private com.badlogic.gdx.graphics.g2d.BitmapFont debugFont; // 添加 debugFont 字段
+ private OrthographicCamera camera;
public GameScreen(MainGame game, SimpleFighter player) {
this.player = player;
@@ -42,7 +42,6 @@ public class GameScreen extends ScreenAdapter {
batch = new SpriteBatch();
shapeRenderer = new ShapeRenderer();
- debugFont = new com.badlogic.gdx.graphics.g2d.BitmapFont(); // 初始化 debugFont
Gdx.input.setInputProcessor(controller);
}
@@ -58,24 +57,57 @@ public class GameScreen extends ScreenAdapter {
Map positions = NetworkManager.getInstance().getPlayerPositions();
if (positions != null) {
for (Map.Entry entry : positions.entrySet()) {
- float[] pos = entry.getValue();
- if (pos == null)
+ String playerId = entry.getKey();
+ // 忽略本地玩家自己,仅渲染其他玩家
+ if (playerId.equals(NetworkManager.getInstance().getLocalPlayerId())) {
continue;
- SimpleFighter remote = otherPlayers.computeIfAbsent(entry.getKey(),
- k -> new SimpleFighter("Remote-" + k));
+ }
+ float[] pos = entry.getValue();
+ if (pos == null) {
+ continue;
+ }
+ // 根据网络上的角色选择信息来创建对应类型的远程角色实例,便于未来同步更多行为状态
+ final String charName = NetworkManager.getInstance().getPlayerCharacters().get(entry.getKey());
+ SimpleFighter remote = otherPlayers.computeIfAbsent(entry.getKey(), k -> {
+ if (charName != null) {
+ switch (charName) {
+ case "Alice":
+ case "Reimu":
+ return new AdvancedFighter(charName);
+ default:
+ return new SimpleFighter("Remote-" + k);
+ }
+ }
+ return new SimpleFighter("Remote-" + k);
+ });
remote.setPosition(pos[0], pos[1]);
remote.update(delta);
}
+ // 处理远程攻击同步:触发远程角色的攻击动画
+ Map attacks = NetworkManager.getInstance().getPlayerAttacks();
+ for (Map.Entry atk : attacks.entrySet()) {
+ SimpleFighter remoteAtk = otherPlayers.get(atk.getKey());
+ if (remoteAtk != null) {
+ remoteAtk.attack(atk.getValue());
+ }
+ }
+ attacks.clear();
}
}
- // F3 调试切换
- if (Gdx.input.isKeyJustPressed(com.badlogic.gdx.Input.Keys.F3)) {
- SimpleFighter.toggleDebug();
- }
-
// 摄像机跟随
- camera.position.lerp(new Vector3(player.getHitbox().x, player.getHitbox().y, 0), 0.1f);
+ // 摄像头跟随:若有一个远程玩家,则居中于本地和远程玩家中点
+ Vector3 targetPos;
+ if (otherPlayers.size() == 1) {
+ SimpleFighter remote = otherPlayers.values().iterator().next();
+ float midX = (player.getHitbox().x + remote.getHitbox().x) * 0.5f;
+ float midY = (player.getHitbox().y + remote.getHitbox().y) * 0.5f;
+ targetPos = new Vector3(midX, midY, 0);
+ } else {
+ // 默认为跟随本地玩家
+ targetPos = new Vector3(player.getHitbox().x, player.getHitbox().y, 0);
+ }
+ camera.position.lerp(targetPos, 0.1f);
camera.update();
batch.setProjectionMatrix(camera.combined);
shapeRenderer.setProjectionMatrix(camera.combined);
@@ -91,6 +123,7 @@ public class GameScreen extends ScreenAdapter {
|| (player.getCurrentAction() == Action.ATTACK && player.getAttackTimer() > 0);
if (showPlayerAttack)
drawAttackBox(player, 1f, 0f, 0f, 0.35f);
+
for (SimpleFighter remote : otherPlayers.values()) {
drawHitbox(remote, Color.GREEN);
if (remote.isAttacking())
@@ -98,38 +131,47 @@ public class GameScreen extends ScreenAdapter {
}
shapeRenderer.end();
- // -------- Sprite / HUD pass --------
+ // -------- Sprite pass --------
batch.begin();
player.renderSprite(batch);
- if (SimpleFighter.isDebugEnabled()) {
- debugFont.setColor(Color.WHITE);
- debugFont.draw(batch,
- "ACTION:" + player.getCurrentAction() +
- " atk=" + player.isAttacking() +
- " timer=" + String.format("%.2f", player.getAttackTimer()) +
- " atkInvoke=" + player.getAttackInvokeCount(),
- 10, Gdx.graphics.getHeight() - 10);
- }
batch.end();
// -------- Debug line pass --------
- if (SimpleFighter.isDebugEnabled()) {
- shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
- player.renderDebug(shapeRenderer);
- for (SimpleFighter remote : otherPlayers.values())
- remote.renderDebug(shapeRenderer);
- shapeRenderer.setColor(Color.WHITE);
- shapeRenderer.rect(0, 0, 1000, 1000);
- shapeRenderer.end();
- }
-
- // 控制台状态输出(保持以便继续诊断)
- player.debugPrintState();
- if (SimpleFighter.isDebugEnabled() && player.isAttacking()) {
- Rectangle ab = player.getAttackbox();
- System.out.println("[DEBUG] AttackBox: x=" + ab.x + ", y=" + ab.y + ", w=" + ab.width + ", h=" + ab.height
- + ", timer=" + player.getAttackTimer());
+ shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
+ player.renderDebug(shapeRenderer);
+ for (SimpleFighter remote : otherPlayers.values())
+ remote.renderDebug(shapeRenderer);
+ shapeRenderer.setColor(Color.WHITE);
+ shapeRenderer.rect(0, 0, 1000, 1000);
+ shapeRenderer.end();
+ // -------- UI health bar pass --------
+ // 使用屏幕坐标绘制血条
+ OrthographicCamera uiCam = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
+ uiCam.setToOrtho(false);
+ uiCam.update();
+ shapeRenderer.setProjectionMatrix(uiCam.combined);
+ shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
+ // 绘制本地玩家血条(左侧)和所有远程玩家血条(右侧依次排列)
+ float barWidth = 200f, barHeight = 10f, padding = 10f;
+ float screenW = Gdx.graphics.getWidth(), screenH = Gdx.graphics.getHeight();
+ // 本地玩家血条
+ shapeRenderer.setColor(Color.DARK_GRAY);
+ shapeRenderer.rect(padding, screenH - padding - barHeight, barWidth, barHeight);
+ shapeRenderer.setColor(Color.RED);
+ shapeRenderer.rect(padding, screenH - padding - barHeight,
+ barWidth * (player.getHealth() / 100f), barHeight);
+ // 远程玩家血条
+ int idx = 0;
+ for (SimpleFighter remote : otherPlayers.values()) {
+ float x = screenW - padding - barWidth - idx * (barWidth + padding);
+ shapeRenderer.setColor(Color.DARK_GRAY);
+ shapeRenderer.rect(x, screenH - padding - barHeight, barWidth, barHeight);
+ shapeRenderer.setColor(Color.GREEN);
+ shapeRenderer.rect(x, screenH - padding - barHeight,
+ barWidth * (remote.getHealth() / 100f), barHeight);
+ idx++;
}
+ shapeRenderer.end();
}
private void drawHitbox(SimpleFighter fighter, Color color) {
diff --git a/src/main/java/uno/mloluyu/desktop/MainMenuScreen.java b/src/main/java/uno/mloluyu/desktop/MainMenuScreen.java
index b0c80ff..267797f 100644
--- a/src/main/java/uno/mloluyu/desktop/MainMenuScreen.java
+++ b/src/main/java/uno/mloluyu/desktop/MainMenuScreen.java
@@ -8,7 +8,6 @@ import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
-import uno.mloluyu.characters.character.Alice;
import uno.mloluyu.versatile.FighterController;
import static uno.mloluyu.util.Font.loadChineseFont;
diff --git a/src/main/java/uno/mloluyu/desktop/NetworkSettingsScreen.java b/src/main/java/uno/mloluyu/desktop/NetworkSettingsScreen.java
index 5bd640a..5428946 100644
--- a/src/main/java/uno/mloluyu/desktop/NetworkSettingsScreen.java
+++ b/src/main/java/uno/mloluyu/desktop/NetworkSettingsScreen.java
@@ -72,11 +72,13 @@ public class NetworkSettingsScreen extends ScreenAdapter {
// 创建房间
if (isHovered(mouseX, mouseY, BUTTON_X, CREATE_ROOM_Y)) {
Gdx.app.log("Network", "创建房间按钮被点击!");
-
- NetworkManager.getInstance().createRoom();
- NetworkManager.getInstance().joinRoom("127.0.0.1");
-
- Gdx.app.log("Network", "已连接到本地服务器,等待其他玩家加入...");
+ NetworkManager nm = NetworkManager.getInstance();
+ nm.createRoom(); // 只创建服务器,不自连,等待其他客户端加入
+ if (nm.getLocalPlayerId() == null) {
+ nm.setLocalPlayerId(java.util.UUID.randomUUID().toString());
+ Gdx.app.log("Network", "房主玩家ID: " + nm.getLocalPlayerId());
+ }
+ Gdx.app.log("Network", "房间创建成功,等待客户端加入...");
CharacterSelectScreen characterSelectScreen = new CharacterSelectScreen(game);
characterSelectScreen.setMultiplayerMode(true);
game.setScreen(characterSelectScreen);
@@ -90,7 +92,12 @@ public class NetworkSettingsScreen extends ScreenAdapter {
@Override
public void input(String ip) {
if (ip != null && !ip.trim().isEmpty()) {
- NetworkManager.getInstance().joinRoom(ip.trim());
+ NetworkManager nm = NetworkManager.getInstance();
+ if (nm.getLocalPlayerId() == null) {
+ nm.setLocalPlayerId(java.util.UUID.randomUUID().toString());
+ Gdx.app.log("Network", "客户端玩家ID: " + nm.getLocalPlayerId());
+ }
+ nm.joinRoom(ip.trim());
Gdx.app.log("Network", "正在连接到服务器 " + ip.trim() + "...");
Gdx.app.postRunnable(() -> {
diff --git a/src/main/java/uno/mloluyu/network/ConnectServer.java b/src/main/java/uno/mloluyu/network/ConnectServer.java
index 6919971..4cfa15a 100644
--- a/src/main/java/uno/mloluyu/network/ConnectServer.java
+++ b/src/main/java/uno/mloluyu/network/ConnectServer.java
@@ -30,6 +30,8 @@ public class ConnectServer implements Runnable {
Socket socket = serverSocket.accept(null);
connectedSockets.add(socket);
Gdx.app.log("Server", "玩家连接成功: " + socket.getRemoteAddress());
+ // 向新加入的客户端发送当前已有玩家的状态快照(角色选择 + 当前位置)
+ sendSnapshotTo(socket);
new Thread(() -> handlePlayer(socket)).start();
}
@@ -39,6 +41,29 @@ public class ConnectServer implements Runnable {
}
}
+ private void sendSnapshotTo(Socket socket) {
+ try {
+ NetworkManager nm = NetworkManager.getInstance();
+ // 发送角色选择快照
+ for (java.util.Map.Entry e : nm.getPlayerCharacters().entrySet()) {
+ String line = "SELECT:" + e.getKey() + "," + e.getValue();
+ socket.getOutputStream().write(line.getBytes(StandardCharsets.UTF_8));
+ }
+ // 发送位置快照
+ for (java.util.Map.Entry e : nm.getPlayerPositions().entrySet()) {
+ float[] p = e.getValue();
+ if (p != null && p.length == 2) {
+ String line = "POS:" + e.getKey() + "," + p[0] + "," + p[1];
+ socket.getOutputStream().write(line.getBytes(StandardCharsets.UTF_8));
+ }
+ }
+ socket.getOutputStream().flush();
+ Gdx.app.log("Server", "已发送状态快照给新客户端");
+ } catch (Exception ex) {
+ Gdx.app.error("Server", "发送快照失败: " + ex.getMessage(), ex);
+ }
+ }
+
private void handlePlayer(Socket socket) {
try {
byte[] buffer = new byte[1024];
diff --git a/src/main/java/uno/mloluyu/network/NetworkManager.java b/src/main/java/uno/mloluyu/network/NetworkManager.java
index 1e00cbe..a26db8b 100644
--- a/src/main/java/uno/mloluyu/network/NetworkManager.java
+++ b/src/main/java/uno/mloluyu/network/NetworkManager.java
@@ -14,6 +14,8 @@ public class NetworkManager {
private String localCharacter;
private final Map playerPositions = new HashMap<>();
private final Map playerCharacters = new HashMap<>();
+ // 存储远程玩家的攻击类型(attackType)
+ private final Map playerAttacks = new HashMap<>();
public static NetworkManager getInstance() {
if (instance == null) {
@@ -30,34 +32,21 @@ public class NetworkManager {
return localPlayerId;
}
- public void createRoom() {//创建房间
+ public void createRoom() {// 创建房间
isHost = true;
server = new ConnectServer(11455);
new Thread(server).start();
Gdx.app.log("Network", "房主模式:服务器已启动");
}
- public void joinRoom(String ip) {//加入房间
+ public void joinRoom(String ip) {// 加入房间
isHost = false;
client = new ConnectClient(ip, 11455);
Gdx.app.log("Network", "客户端模式:连接到房主 " + ip);
}
- public void sendPosition(float x, float y) {//发送位置消息
+ public void sendPosition(float x, float y) {// 发送位置消息
String msg = "POS:" + localPlayerId + "," + x + "," + y;
- Gdx.app.log("Network", "发送位置消息: " + msg);
- if (isHost && server != null) {
- server.broadcastToOthers(null, msg);
- receiveMessage(msg);
- } else if (client != null) {
- client.sendMessage(msg);
- }
- }
-
- public void sendCharacterSelection(String character) {//发送角色选择消息
- this.localCharacter = character;
- String msg = "SELECT:" + localPlayerId + "," + character;
- Gdx.app.log("Network", "发送角色选择消息: " + msg);
if (isHost && server != null) {
server.broadcastToOthers(null, msg);
receiveMessage(msg);
@@ -66,8 +55,18 @@ public class NetworkManager {
}
}
- public void receiveMessage(String message) {//解析消息
- Gdx.app.log("Network", "收到消息: " + message);
+ public void sendCharacterSelection(String character) {// 发送角色选择消息
+ this.localCharacter = character;
+ String msg = "SELECT:" + localPlayerId + "," + character;
+ if (isHost && server != null) {
+ server.broadcastToOthers(null, msg);
+ receiveMessage(msg);
+ } else if (client != null) {
+ client.sendMessage(msg);
+ }
+ }
+
+ public void receiveMessage(String message) {// 解析消息
if (message.startsWith("POS:")) {
String[] parts = message.substring(4).split(",");
@@ -76,8 +75,7 @@ public class NetworkManager {
try {
float x = Float.parseFloat(parts[1]);
float y = Float.parseFloat(parts[2]);
- playerPositions.put(playerId, new float[]{x, y});
- Gdx.app.log("Network", "位置更新: " + playerId + " -> " + x + "," + y);
+ playerPositions.put(playerId, new float[] { x, y });
} catch (NumberFormatException e) {
Gdx.app.error("Network", "位置解析失败: " + message);
}
@@ -96,6 +94,16 @@ public class NetworkManager {
}
} else if (message.equals("READY")) {
Gdx.app.log("Network", "收到准备信号");
+ } else if (message.startsWith("ATTACK:")) {
+ String[] parts = message.substring(7).split(",");
+ if (parts.length == 2) {
+ String playerId = parts[0];
+ String attackType = parts[1];
+ playerAttacks.put(playerId, attackType);
+ Gdx.app.log("Network", "攻击同步: " + playerId + " -> " + attackType);
+ } else {
+ Gdx.app.error("Network", "攻击消息格式错误: " + message);
+ }
} else {
Gdx.app.log("Network", "未知消息类型: " + message);
}
@@ -105,6 +113,29 @@ public class NetworkManager {
return playerPositions;
}
+ /**
+ * 获取远程玩家的未处理攻击类型映射
+ */
+ public Map getPlayerAttacks() {
+ return playerAttacks;
+ }
+
+ /**
+ * 发送攻击消息给其他玩家
+ */
+ public void sendAttack(String attackType) {
+ if (localPlayerId == null)
+ return;
+ String msg = "ATTACK:" + localPlayerId + "," + attackType;
+ Gdx.app.log("Network", "发送攻击消息: " + msg);
+ if (isHost && server != null) {
+ server.broadcastToOthers(null, msg);
+ receiveMessage(msg);
+ } else if (client != null) {
+ client.sendMessage(msg);
+ }
+ }
+
public Map getPlayerCharacters() {
return playerCharacters;
}
diff --git a/src/main/java/uno/mloluyu/versatile/FighterController.java b/src/main/java/uno/mloluyu/versatile/FighterController.java
index 283579f..de83228 100644
--- a/src/main/java/uno/mloluyu/versatile/FighterController.java
+++ b/src/main/java/uno/mloluyu/versatile/FighterController.java
@@ -1,20 +1,12 @@
package uno.mloluyu.versatile;
-import java.util.HashMap;
-import java.util.Map;
-
-import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.Input;
import com.badlogic.gdx.InputAdapter;
import com.badlogic.gdx.utils.Array;
-import uno.mloluyu.characters.character.Action;
-import uno.mloluyu.characters.character.Fighter;
import uno.mloluyu.characters.SimpleFighter;
public class FighterController extends InputAdapter {
private final SimpleFighter fighter;
private final Array pressedKeys = new Array<>();
- private final Map keyPressDuration = new HashMap<>();
public FighterController(SimpleFighter fighter) {
this.fighter = fighter;
@@ -27,44 +19,34 @@ public class FighterController extends InputAdapter {
public void update(float deltaTime) {
if (fighter == null)
return;
-
for (int keycode : pressedKeys) {
- float currentDuration = keyPressDuration.getOrDefault(keycode, 0f);
- currentDuration += deltaTime;
- keyPressDuration.put(keycode, currentDuration);
- fighter.handleInput(keycode, true, currentDuration); // 持续按下的键,传递持续时间
+ fighter.handleInput(keycode, true); // 持续按下的键,每帧触发
}
}
@Override
public boolean keyDown(int keycode) {
- // System.out.println("按键按下: " + keycode);
if (fighter == null)
return false;
if (!pressedKeys.contains(keycode, false)) {
pressedKeys.add(keycode);
- keyPressDuration.put(keycode, 0f); // 初始化按键持续时间
}
- fighter.handleInput(keycode, true, 0f); // 按下事件,初始持续时间为 0
+ fighter.handleInput(keycode, true); // 按下事件
return true;
}
@Override
public boolean keyUp(int keycode) {
- // System.out.println("按键松开: " + keycode);
-
if (fighter == null)
return false;
- float duration = keyPressDuration.getOrDefault(keycode, 0f);
pressedKeys.removeValue(keycode, false);
- keyPressDuration.remove(keycode);
- fighter.handleInput(keycode, false, duration); // 按键松开事件,传递持续时间
+ fighter.handleInput(keycode, false); // 按键松开事件
return true;
- }// 松开事件
+ }
public SimpleFighter getFighter() {
return fighter;
diff --git a/src/main/resources/character/alice/alice.atlas b/src/main/resources/character/alice/alice.atlas
new file mode 100644
index 0000000..97a237f
--- /dev/null
+++ b/src/main/resources/character/alice/alice.atlas
@@ -0,0 +1,1400 @@
+alice.png
+size: 1952, 1909
+format: RGBA8888
+filter: Linear, Linear
+repeat: none
+pma: false
+alpha/alpha000
+ bounds: 0, 192, 256, 256
+attackAa/attackAa000
+ bounds: 592, 1638, 51, 93
+ offsets: 34, 17, 128, 128
+attackAa/attackAa001
+ bounds: 1444, 414, 53, 90
+ offsets: 26, 17, 128, 128
+attackAa/attackAa002
+ bounds: 720, 1230, 79, 89
+ offsets: 28, 17, 128, 128
+attackAa/attackAa003
+ bounds: 256, 1724, 87, 87
+ offsets: 30, 17, 128, 128
+attackAa/attackAa004
+ bounds: 1853, 256, 83, 88
+ offsets: 28, 17, 128, 128
+attackAa/attackAa005
+ bounds: 1516, 489, 59, 92
+ offsets: 33, 17, 128, 128
+attackAa/attackAa006
+ bounds: 1639, 670, 48, 94
+ offsets: 40, 17, 128, 128
+attackAb/attackAb000
+ bounds: 1335, 815, 49, 69
+ offsets: 36, 16, 128, 128
+attackAb/attackAb001
+ bounds: 976, 1421, 56, 57
+ offsets: 30, 16, 128, 128
+attackAb/attackAb002
+ bounds: 635, 1469, 69, 59
+ offsets: 24, 16, 128, 128
+attackAb/attackAb003
+ bounds: 376, 1668, 89, 59
+ offsets: 26, 15, 128, 128
+attackAb/attackAb004
+ bounds: 1372, 503, 72, 61
+ offsets: 21, 16, 128, 128
+attackAb/attackAb005
+ bounds: 704, 1469, 62, 68
+ offsets: 29, 16, 128, 128
+attackAb/attackAb006
+ bounds: 948, 1579, 51, 69
+ offsets: 39, 16, 128, 128
+attackAc/attackAc000
+ bounds: 1153, 1518, 47, 71
+ offsets: 39, 38, 128, 128
+attackAc/attackAc001
+ bounds: 1639, 764, 49, 71
+ offsets: 36, 35, 128, 128
+attackAc/attackAc002
+ bounds: 871, 1410, 58, 72
+ offsets: 29, 33, 128, 128
+attackAc/attackAc003
+ bounds: 1056, 856, 60, 70
+ offsets: 28, 34, 128, 128
+attackAc/attackAc004
+ bounds: 640, 1155, 97, 60
+ offsets: 28, 40, 128, 128
+attackAc/attackAc005
+ bounds: 1684, 361, 93, 63
+ offsets: 29, 39, 128, 128
+attackAc/attackAc006
+ bounds: 1777, 361, 86, 68
+ offsets: 33, 36, 128, 128
+attackAc/attackAc007
+ bounds: 1515, 581, 70, 74
+ offsets: 36, 33, 128, 128
+attackAc/attackAc008
+ bounds: 343, 1727, 58, 84
+ offsets: 39, 25, 128, 128
+attackAc/attackAc009
+ bounds: 1384, 804, 51, 87
+ offsets: 41, 23, 128, 128
+attackAc/attackAc010
+ bounds: 1435, 804, 49, 92
+ offsets: 38, 17, 128, 128
+attackAd/attackAd000
+ bounds: 1213, 547, 45, 96
+ offsets: 39, 15, 128, 128
+attackAd/attackAd001
+ bounds: 972, 925, 47, 94
+ offsets: 39, 15, 128, 128
+attackAd/attackAd002
+ bounds: 1085, 926, 60, 94
+ offsets: 45, 15, 128, 128
+attackAd/attackAd003
+ bounds: 799, 1230, 74, 93
+ offsets: 36, 15, 128, 128
+attackAd/attackAd004
+ bounds: 1863, 344, 75, 92
+ offsets: 35, 15, 128, 128
+attackAd/attackAd005
+ bounds: 1367, 607, 67, 93
+ offsets: 37, 15, 128, 128
+attackAd/attackAd006
+ bounds: 949, 1073, 50, 96
+ offsets: 45, 15, 128, 128
+attackAd/attackAd007
+ bounds: 1754, 763, 43, 96
+ offsets: 47, 15, 128, 128
+attackAd/attackAd008
+ bounds: 1145, 924, 39, 96
+ offsets: 45, 15, 128, 128
+attackBc/attackBc009
+ bounds: 1432, 896, 60, 88
+ offsets: 32, 15, 256, 128
+attackBc/attackBc010
+ bounds: 1491, 986, 48, 92
+ offsets: 33, 15, 256, 128
+attackBc/attackBc011
+ bounds: 1492, 891, 41, 95
+ offsets: 31, 15, 256, 128
+attackBc/attackBc012
+ bounds: 1652, 878, 39, 96
+ offsets: 30, 15, 256, 128
+attackBe/attackBe000
+ bounds: 465, 1660, 48, 67
+ offsets: 14, 18, 64, 128
+attackBf/attackBf000
+ bounds: 1754, 859, 47, 96
+ offsets: 22, 15, 256, 128
+attackBf/attackBf001
+ bounds: 1584, 744, 55, 91
+ offsets: 25, 17, 256, 128
+attackBf/attackBf002
+ bounds: 1754, 955, 55, 88
+ offsets: 32, 17, 256, 128
+attackBf/attackBf003
+ bounds: 118, 1824, 80, 85
+ offsets: 29, 15, 256, 128
+attackBf/attackBf004
+ bounds: 513, 1638, 79, 86
+ offsets: 28, 15, 256, 128
+attackBf/attackBf005
+ bounds: 1753, 502, 68, 87
+ offsets: 29, 15, 256, 128
+attackCa/attackCa000
+ bounds: 692, 1323, 50, 93
+ offsets: 16, 2, 116, 104
+attackCa/attackCa001
+ bounds: 1043, 1114, 58, 91
+ offsets: 11, 2, 116, 104
+attackCa/attackCa002
+ bounds: 1590, 1079, 57, 90
+ offsets: 10, 2, 116, 104
+attackCa/attackCa003
+ bounds: 1588, 1169, 57, 90
+ offsets: 10, 2, 116, 104
+attackCa/attackCa004
+ bounds: 1645, 1169, 57, 90
+ offsets: 10, 2, 116, 104
+attackCa/attackCa005
+ bounds: 1783, 1044, 57, 90
+ offsets: 10, 2, 116, 104
+attackCa/attackCa006
+ bounds: 1688, 763, 66, 90
+ offsets: 1, 2, 116, 104
+attackCa/attackCa007
+ bounds: 1862, 792, 65, 90
+ offsets: 2, 2, 116, 104
+attackCa/attackCa008
+ bounds: 1474, 1078, 58, 88
+ offsets: 22, 2, 116, 104
+attackCa/attackCa009
+ bounds: 1684, 590, 72, 79
+ offsets: 24, 4, 116, 104
+attackCa/attackCa010
+ bounds: 1760, 429, 75, 73
+ offsets: 35, 4, 116, 104
+attackCa/attackCa011
+ bounds: 1684, 424, 76, 76
+ offsets: 34, 4, 116, 104
+attackCa/attackCa012
+ bounds: 198, 1824, 68, 85
+ offsets: 26, 4, 116, 104
+attackCa/attackCa013
+ bounds: 1414, 1075, 60, 88
+ offsets: 28, 3, 116, 104
+attackCa/attackCa014
+ bounds: 1158, 1020, 50, 93
+ offsets: 28, 3, 116, 104
+attackCa/attackCa015
+ bounds: 1753, 669, 43, 94
+ offsets: 27, 3, 116, 104
+attackCa/attackCa016
+ bounds: 635, 1811, 44, 97
+ offsets: 22, 1, 116, 104
+BulletAa/BulletAa000
+ bounds: 1688, 1037, 32, 32
+BulletAa/BulletAa001
+ bounds: 1043, 1205, 32, 32
+BulletAa/BulletAa002
+ bounds: 643, 1697, 32, 32
+BulletAa/BulletAa003
+ bounds: 1506, 1876, 32, 32
+BulletAa/BulletAa004
+ bounds: 1538, 1876, 32, 32
+BulletAa/BulletAa005
+ bounds: 1075, 1205, 32, 32
+BulletAa/BulletAa006
+ bounds: 1901, 1816, 32, 32
+BulletAb/BulletAb000
+ bounds: 628, 1352, 64, 64
+BulletAb/BulletAb001
+ bounds: 703, 1537, 64, 64
+BulletAb/BulletAb002
+ bounds: 940, 1648, 64, 64
+BulletAb/BulletAb003
+ bounds: 916, 1169, 64, 64
+BulletAb/BulletAb004
+ bounds: 1089, 1518, 64, 64
+BulletAb/BulletAb005
+ bounds: 1425, 1343, 64, 64
+BulletAb/BulletAb006
+ bounds: 1489, 1342, 64, 64
+BulletAc/BulletAc000
+ bounds: 1553, 1346, 64, 64
+BulletAc/BulletAc001
+ bounds: 1617, 1346, 64, 64
+BulletAc/BulletAc002
+ bounds: 1681, 1346, 64, 64
+BulletAc/BulletAc003
+ bounds: 1745, 1346, 64, 64
+BulletAc/BulletAc004
+ bounds: 1307, 1607, 64, 64
+BulletAc/BulletAc005
+ bounds: 1245, 1674, 64, 64
+BulletAc/BulletAc006
+ bounds: 1309, 1671, 64, 64
+BulletBa/BulletBa000
+ bounds: 0, 128, 512, 64
+BulletCa/BulletCa000
+ bounds: 256, 1216, 128, 128
+BulletCa/BulletCa001
+ bounds: 384, 960, 128, 128
+BulletCa/BulletCa002
+ bounds: 512, 936, 128, 128
+BulletDa/BulletDa000
+ bounds: 866, 1710, 64, 64
+BulletDa/BulletDa001
+ bounds: 930, 1712, 64, 64
+BulletDb/BulletDb005
+ bounds: 1920, 0, 32, 128
+BulletDb/BulletDb006
+ bounds: 1920, 128, 32, 128
+BulletDb/BulletDb007
+ bounds: 1370, 279, 32, 128
+BulletDb/BulletDb008
+ bounds: 1620, 271, 32, 128
+BulletDb/BulletDb009
+ bounds: 344, 1594, 32, 128
+BulletDb/BulletDb010
+ bounds: 874, 936, 32, 128
+BulletDb/BulletDb011
+ bounds: 1652, 271, 32, 128
+BulletDb/BulletDb012
+ bounds: 628, 1224, 32, 128
+BulletDb/BulletDb013
+ bounds: 1024, 758, 32, 128
+BulletDb/BulletDb014
+ bounds: 1116, 748, 32, 128
+BulletDb/BulletDb015
+ bounds: 1148, 742, 32, 128
+BulletDb/BulletDb016
+ bounds: 1239, 743, 32, 128
+BulletDb/BulletDb017
+ bounds: 1268, 416, 32, 128
+BulletDb/BulletDb018
+ bounds: 1271, 743, 32, 128
+BulletDb/BulletDb019
+ bounds: 1303, 743, 32, 128
+BulletEa/BulletEa000
+ bounds: 640, 680, 128, 128
+BulletEa/BulletEa001
+ bounds: 768, 512, 128, 128
+BulletEa/BulletEa002
+ bounds: 896, 416, 128, 128
+BulletFa/BulletFa000
+ bounds: 512, 1192, 128, 32
+BulletFa/BulletFa001
+ bounds: 1152, 160, 128, 128
+bulletFb/bulletFb000
+ bounds: 768, 872, 128, 64
+bulletFb/bulletFb001
+ bounds: 1408, 98, 128, 64
+bulletFb/bulletFb002
+ bounds: 1536, 98, 128, 64
+bulletFb/bulletFb003
+ bounds: 1664, 64, 128, 64
+bulletFb/bulletFb004
+ bounds: 1792, 64, 128, 64
+bulletFb/bulletFb005
+ bounds: 1664, 128, 128, 64
+bulletFb/bulletFb006
+ bounds: 1664, 192, 128, 64
+bulletFb/bulletFb007
+ bounds: 1792, 128, 128, 64
+bulletFb/bulletFb008
+ bounds: 1792, 192, 128, 64
+bulletFb/bulletFb009
+ bounds: 756, 1110, 128, 64
+bulletFb/bulletFb010
+ bounds: 1492, 271, 128, 64
+bulletFb/bulletFb011
+ bounds: 1492, 335, 128, 64
+bulletFb/bulletFb012
+ bounds: 384, 1435, 128, 64
+bulletFb/bulletFb013
+ bounds: 372, 1499, 128, 64
+bulletFb/bulletFb014
+ bounds: 500, 1224, 128, 64
+bulletFb/bulletFb015
+ bounds: 500, 1288, 128, 64
+bulletFb/bulletFb016
+ bounds: 500, 1352, 128, 64
+bulletGa/bulletGa000
+ bounds: 0, 1728, 256, 32
+bulletGa/bulletGa001
+ bounds: 896, 256, 256, 32
+bulletGa/bulletGa002
+ bounds: 1152, 0, 256, 32
+bulletGa/bulletGa003
+ bounds: 0, 1760, 256, 32
+bulletGa/bulletGa004
+ bounds: 896, 288, 256, 32
+bulletGa/bulletGa005
+ bounds: 1152, 32, 256, 32
+bulletGa/bulletGa006
+ bounds: 1408, 0, 256, 32
+bulletGa/bulletGa007
+ bounds: 0, 1792, 256, 32
+bulletGa/bulletGa008
+ bounds: 896, 320, 256, 32
+bulletGa/bulletGa009
+ bounds: 1152, 64, 256, 32
+bulletGa/bulletGa010
+ bounds: 1408, 32, 256, 32
+bulletGa/bulletGa011
+ bounds: 1664, 0, 256, 32
+bulletGa/bulletGa012
+ bounds: 896, 352, 256, 32
+bulletGa/bulletGa013
+ bounds: 1152, 96, 256, 32
+bulletGa/bulletGa014
+ bounds: 1408, 64, 256, 32
+bulletGb/bulletGb000
+ bounds: 1664, 32, 256, 32
+crash/crash000
+ bounds: 1639, 399, 45, 95
+ offsets: 41, 16, 128, 128
+crash/crash001
+ bounds: 1159, 1113, 56, 93
+ offsets: 33, 17, 128, 128
+crash/crash002
+ bounds: 1101, 1020, 57, 93
+ offsets: 32, 17, 128, 128
+crash/crash003
+ bounds: 1639, 494, 45, 95
+ offsets: 41, 16, 128, 128
+dashBack/dashBack000
+ bounds: 1359, 1159, 55, 85
+ offsets: 33, 26, 128, 128
+dashBack/dashBack001
+ bounds: 401, 1727, 55, 84
+ offsets: 38, 26, 128, 128
+dashBack/dashBack002
+ bounds: 1300, 970, 65, 88
+ offsets: 34, 21, 128, 128
+dashBack/dashBack003
+ bounds: 1796, 674, 66, 88
+ offsets: 33, 21, 128, 128
+dashFront/dashFront000
+ bounds: 821, 1525, 53, 86
+ offsets: 51, 15, 128, 128
+dashFront/dashFront001
+ bounds: 509, 1731, 66, 80
+ offsets: 44, 15, 128, 128
+dashFront/dashFront002
+ bounds: 1862, 882, 72, 70
+ offsets: 42, 15, 128, 128
+dashFront/dashFront003
+ bounds: 799, 1410, 72, 69
+ offsets: 42, 15, 128, 128
+dashFront/dashFront004
+ bounds: 1639, 589, 45, 81
+ offsets: 51, 17, 128, 128
+dashFront/dashFront005
+ bounds: 1200, 1518, 44, 85
+ offsets: 51, 15, 128, 128
+dashFront/dashFront006
+ bounds: 1481, 1407, 41, 89
+ offsets: 49, 15, 128, 128
+dashFrontAir/dashFrontAir000
+ bounds: 1702, 1166, 51, 93
+ offsets: 42, 11, 128, 128
+down/down000
+ bounds: 928, 1323, 48, 85
+ offsets: 40, 8, 128, 128
+down/down001
+ bounds: 694, 1745, 53, 66
+ offsets: 34, 8, 128, 128
+down/down002
+ bounds: 1444, 504, 72, 60
+ offsets: 28, 8, 128, 128
+down/down003
+ bounds: 1414, 1163, 58, 86
+ offsets: 28, 6, 128, 128
+down/down004
+ bounds: 1840, 1044, 51, 90
+ offsets: 36, 21, 128, 128
+down/down005
+ bounds: 874, 1579, 74, 65
+ offsets: 29, 23, 128, 128
+down/down006
+ bounds: 1402, 372, 87, 42
+ offsets: 24, 17, 128, 128
+down/down007
+ bounds: 1152, 517, 97, 30
+ offsets: 19, 14, 128, 128
+down/down008
+ bounds: 920, 860, 96, 30
+ offsets: 19, 15, 128, 128
+emotionAa/emotionAa000
+ bounds: 884, 1073, 65, 94
+ offsets: 7, 1, 72, 100
+emotionAa/emotionAa001
+ bounds: 1862, 698, 63, 94
+ offsets: 7, 1, 72, 100
+emotionBa/emotionBa000
+ bounds: 679, 1811, 44, 97
+ offsets: 20, 15, 64, 128
+face/face000
+ bounds: 512, 1416, 120, 56
+ offsets: 3, 8, 160, 64
+Guard/Guard000
+ bounds: 0, 448, 128, 256
+guardBUnder/guardBUnder000
+ bounds: 814, 1841, 49, 68
+ offsets: 35, 15, 128, 128
+guardBUnder/guardBUnder001
+ bounds: 999, 1579, 47, 69
+ offsets: 37, 15, 128, 128
+guardBUpper/guardBUpper000
+ bounds: 1244, 1516, 48, 91
+ offsets: 31, 15, 128, 128
+guardBUpper/guardBUpper001
+ bounds: 1089, 1582, 49, 89
+ offsets: 30, 15, 128, 128
+guardSit/guardSit000
+ bounds: 376, 1563, 86, 105
+ offsets: 39, 22, 128, 128
+guardSit/guardSit001
+ bounds: 1769, 256, 84, 105
+ offsets: 42, 22, 128, 128
+guardUnder/guardUnder000
+ bounds: 1684, 256, 85, 105
+ offsets: 40, 2, 128, 128
+guardUnder/guardUnder001
+ bounds: 1042, 643, 87, 105
+ offsets: 39, 2, 128, 128
+guardUpper/guardUpper000
+ bounds: 1494, 162, 85, 109
+ offsets: 39, 15, 128, 128
+guardUpper/guardUpper001
+ bounds: 1579, 162, 85, 109
+ offsets: 40, 15, 128, 128
+hitAir/hitAir000
+ bounds: 999, 1075, 44, 94
+ offsets: 40, 19, 128, 128
+hitAir/hitAir001
+ bounds: 1572, 1502, 51, 90
+ offsets: 36, 30, 128, 128
+hitAir/hitAir002
+ bounds: 1208, 1028, 72, 74
+ offsets: 24, 35, 128, 128
+hitAir/hitAir003
+ bounds: 1434, 651, 81, 42
+ offsets: 18, 49, 128, 128
+hitAir/hitAir004
+ bounds: 1835, 436, 77, 67
+ offsets: 26, 36, 128, 128
+hitAir/hitAir005
+ bounds: 575, 1731, 64, 80
+ offsets: 30, 26, 128, 128
+hitAir/hitAir006
+ bounds: 494, 1811, 49, 98
+ offsets: 39, 18, 128, 128
+hitAir/hitAir007
+ bounds: 1258, 544, 43, 99
+ offsets: 46, 15, 128, 128
+hitAir/hitAir008
+ bounds: 1588, 980, 42, 99
+ offsets: 43, 15, 128, 128
+hitSit/hitSit000
+ bounds: 967, 1841, 56, 67
+ offsets: 0, 1, 64, 74
+hitSit/hitSit001
+ bounds: 1192, 1675, 53, 69
+ offsets: 6, 1, 64, 74
+hitSit/hitSit002
+ bounds: 1374, 1832, 45, 72
+ offsets: 15, 1, 64, 74
+hitSpin/hitSpin000
+ bounds: 1036, 1237, 44, 88
+ offsets: 11, 17, 64, 128
+hitSpin/hitSpin001
+ bounds: 1372, 414, 72, 89
+ offsets: 22, 17, 128, 128
+hitSpin/hitSpin002
+ bounds: 864, 1323, 64, 87
+ offsets: 0, 17, 64, 128
+hitSpin/hitSpin003
+ bounds: 1691, 947, 63, 90
+ offsets: 0, 17, 64, 128
+hitSpin/hitSpin004
+ bounds: 1144, 1654, 48, 89
+ offsets: 0, 17, 64, 128
+hitSpin/hitSpin005
+ bounds: 1568, 399, 71, 88
+ offsets: 21, 17, 128, 128
+hitUnder/hitUnder000
+ bounds: 456, 1727, 53, 84
+ offsets: 32, 15, 128, 128
+hitUnder/hitUnder001
+ bounds: 1292, 1516, 48, 91
+ offsets: 37, 16, 128, 128
+hitUnder/hitUnder002
+ bounds: 764, 1601, 45, 96
+ offsets: 41, 15, 128, 128
+hitUpper/hitUpper000
+ bounds: 1684, 500, 69, 90
+ offsets: 24, 17, 128, 128
+hitUpper/hitUpper001
+ bounds: 1797, 1134, 56, 91
+ offsets: 33, 17, 128, 128
+hitUpper/hitUpper002
+ bounds: 1891, 1040, 45, 94
+ offsets: 41, 16, 128, 128
+invin/invin000
+ bounds: 632, 1469, 3, 3
+ offsets: 0, 1, 4, 4
+jump/jump000
+ bounds: 1292, 1290, 49, 95
+ offsets: 39, 14, 128, 128
+jump/jump001
+ bounds: 1765, 1602, 46, 91
+ offsets: 40, 18, 128, 128
+jump/jump002
+ bounds: 1336, 1431, 50, 83
+ offsets: 41, 23, 128, 128
+jump/jump003
+ bounds: 1672, 1689, 45, 72
+ offsets: 40, 32, 128, 128
+jump/jump004
+ bounds: 929, 1408, 47, 74
+ offsets: 42, 33, 128, 128
+jump/jump005
+ bounds: 1288, 1431, 48, 85
+ offsets: 41, 27, 128, 128
+jump/jump006
+ bounds: 1043, 1020, 58, 94
+ offsets: 40, 23, 128, 128
+jump/jump007
+ bounds: 1259, 643, 60, 100
+ offsets: 40, 19, 128, 128
+jump/jump008
+ bounds: 1197, 643, 62, 100
+ offsets: 38, 19, 128, 128
+objectAa/objectAa000
+ bounds: 1881, 1770, 33, 46
+objectAa/objectAa001
+ bounds: 1914, 1769, 33, 46
+objectAa/objectAa002
+ bounds: 1835, 1816, 33, 46
+objectAa/objectAa003
+ bounds: 1868, 1816, 33, 46
+objectAb/objectAb000
+ bounds: 1869, 1589, 38, 37
+objectAb/objectAb001
+ bounds: 1107, 1204, 38, 37
+objectAc/objectAc000
+ bounds: 1847, 1770, 34, 46
+ offsets: 7, 0, 41, 46
+objectAc/objectAc001
+ bounds: 1731, 1848, 33, 46
+ offsets: 8, 0, 41, 46
+objectAc/objectAc002
+ bounds: 1324, 1246, 40, 44
+ offsets: 1, 2, 41, 46
+objectAc/objectAc003
+ bounds: 1724, 1760, 41, 44
+ offsets: 0, 2, 41, 46
+objectAd/objectAd000
+ bounds: 1590, 1873, 40, 36
+objectAd/objectAd001
+ bounds: 1016, 886, 40, 37
+objectAd/objectAd002
+ bounds: 1116, 876, 64, 48
+objectAd/objectAd003
+ bounds: 1481, 1591, 64, 48
+objectAd/objectAd004
+ bounds: 1432, 1583, 49, 43
+objectAd/objectAd005
+ bounds: 1423, 1679, 53, 43
+objectAd/objectAd006
+ bounds: 1636, 1842, 49, 43
+objectAd/objectAd007
+ bounds: 1478, 1639, 53, 43
+objectAe/objectAe000
+ bounds: 799, 1479, 71, 46
+objectAe/objectAe001
+ bounds: 1241, 1385, 71, 46
+objectAe/objectAe002
+ bounds: 1280, 1058, 69, 44
+objectAe/objectAe003
+ bounds: 753, 1697, 69, 44
+objectAe/objectAe004
+ bounds: 991, 1020, 52, 37
+objectAe/objectAe005
+ bounds: 1570, 1742, 52, 37
+objectAf/objectAf000
+ bounds: 1532, 1740, 38, 39
+objectAg/objectAg000
+ bounds: 1364, 1244, 46, 46
+objectAg/objectAg001
+ bounds: 1312, 1385, 46, 46
+objectAg/objectAg002
+ bounds: 1685, 1833, 46, 46
+objectAg/objectAg003
+ bounds: 1801, 1770, 46, 46
+objectAg/objectAg004
+ bounds: 866, 1774, 64, 63
+objectAg/objectAg005
+ bounds: 930, 1776, 64, 62
+objectAh/objectAh000
+ bounds: 1362, 564, 86, 43
+objectAh/objectAh001
+ bounds: 1584, 835, 86, 43
+objectAi/objectAi000
+ bounds: 1765, 1765, 36, 44
+objectAi/objectAi001
+ bounds: 1731, 1804, 34, 44
+objectAj/objectAj000
+ bounds: 1830, 1862, 32, 43
+objectAj/objectAj001
+ bounds: 1764, 1851, 33, 43
+objectAj/objectAj002
+ bounds: 1862, 1862, 32, 43
+objectAj/objectAj003
+ bounds: 1797, 1858, 33, 43
+objectAk/objectAk000
+ bounds: 1765, 1809, 35, 42
+objectAk/objectAk001
+ bounds: 1800, 1816, 35, 42
+objectAl/objectAl000
+ bounds: 706, 1696, 47, 49
+objectAl/objectAl001
+ bounds: 865, 1174, 51, 56
+objectAl/objectAl002
+ bounds: 749, 1414, 50, 55
+objectAl/objectAl003
+ bounds: 1122, 1840, 46, 55
+objectAl/objectAl004
+ bounds: 1897, 1710, 46, 59
+objectAl/objectAl005
+ bounds: 1080, 1841, 42, 59
+objectAm/objectAm000
+ bounds: 1324, 1199, 35, 47
+objectAm/objectAm001
+ bounds: 766, 1469, 33, 48
+objectAn/objectAn000
+ bounds: 1434, 693, 45, 7
+objectBa/objectBa000
+ bounds: 1408, 96, 256, 2
+objectBa/objectBa001
+ bounds: 896, 384, 256, 32
+objectCa/objectCa000
+ bounds: 384, 1337, 116, 98
+objectCa/objectCa001
+ bounds: 1402, 270, 90, 102
+objectCa/objectCa002
+ bounds: 1129, 643, 68, 99
+objectCa/objectCa003
+ bounds: 384, 1811, 55, 98
+objectCa/objectCa004
+ bounds: 1400, 162, 94, 108
+objectCa/objectCa005
+ bounds: 1280, 160, 120, 119
+objectCa/objectCa006
+ bounds: 256, 1472, 116, 122
+objectCa/objectCa007
+ bounds: 384, 1216, 116, 121
+objectCb/objectCb000
+ bounds: 640, 936, 116, 121
+objectCb/objectCb001
+ bounds: 1280, 279, 90, 129
+objectCb/objectCb002
+ bounds: 256, 1594, 88, 130
+objectCb/objectCb003
+ bounds: 1152, 416, 116, 101
+objectCb/objectCb004
+ bounds: 768, 768, 152, 104
+objectCb/objectCb005
+ bounds: 896, 672, 146, 86
+objectCb/objectCb006
+ bounds: 0, 1824, 118, 85
+objectCb/objectCb007
+ bounds: 756, 936, 118, 87
+objectCb/objectCb008
+ bounds: 756, 1023, 118, 87
+objectCb/objectCb009
+ bounds: 1497, 399, 71, 90
+objectCb/objectCb010
+ bounds: 920, 758, 104, 102
+objectCb/objectCb011
+ bounds: 1024, 544, 120, 99
+objectCb/objectCb012
+ bounds: 640, 1057, 116, 98
+redAura/redAura000
+ bounds: 1901, 1848, 32, 32
+shotAa/shotAa000
+ bounds: 1271, 1102, 47, 97
+ offsets: 17, 15, 64, 128
+shotAa/shotAa001
+ bounds: 1318, 1102, 41, 97
+ offsets: 22, 15, 64, 128
+shotAa/shotAa002
+ bounds: 1912, 436, 40, 97
+ offsets: 20, 15, 64, 128
+shotAa/shotAa003
+ bounds: 1686, 1069, 42, 97
+ offsets: 18, 15, 64, 128
+shotAa/shotAa004
+ bounds: 1753, 1138, 44, 97
+ offsets: 18, 15, 64, 128
+shotAa/shotAa005
+ bounds: 924, 1482, 44, 97
+ offsets: 18, 15, 64, 128
+shotAa/shotAa006
+ bounds: 968, 1482, 42, 97
+ offsets: 18, 15, 64, 128
+shotAa/shotAa007
+ bounds: 1010, 1478, 39, 97
+ offsets: 22, 15, 64, 128
+shotAa/shotAa008
+ bounds: 1049, 1478, 40, 97
+ offsets: 22, 15, 64, 128
+shotAa/shotAa009
+ bounds: 1533, 883, 56, 97
+ offsets: 6, 15, 64, 128
+shotAa/shotAa010
+ bounds: 1907, 1134, 45, 97
+ offsets: 18, 15, 64, 128
+shotAb/shotAb000
+ bounds: 1200, 1603, 44, 72
+ offsets: 11, 15, 64, 128
+shotAb/shotAb001
+ bounds: 822, 1697, 44, 72
+ offsets: 11, 15, 64, 128
+shotAb/shotAb002
+ bounds: 822, 1769, 44, 72
+ offsets: 11, 15, 64, 128
+shotAb/shotAb003
+ bounds: 1765, 1693, 44, 72
+ offsets: 11, 15, 64, 128
+shotAb/shotAb004
+ bounds: 1850, 1626, 44, 72
+ offsets: 11, 15, 64, 128
+shotAb/shotAb005
+ bounds: 1809, 1698, 44, 72
+ offsets: 11, 15, 64, 128
+shotAb/shotAb006
+ bounds: 1853, 1698, 44, 72
+ offsets: 11, 15, 64, 128
+shotAb/shotAb007
+ bounds: 1089, 1671, 55, 72
+ offsets: 0, 15, 64, 128
+shotAb/shotAb008
+ bounds: 1636, 1770, 44, 72
+ offsets: 11, 15, 64, 128
+shotAc/shotAc000
+ bounds: 1717, 1693, 48, 67
+ offsets: 14, 3, 64, 103
+shotAc/shotAc001
+ bounds: 1232, 1431, 56, 85
+ offsets: 6, 3, 64, 103
+shotAc/shotAc002
+ bounds: 809, 1611, 57, 86
+ offsets: 1, 6, 64, 103
+shotAc/shotAc003
+ bounds: 1472, 1166, 58, 83
+ offsets: 0, 7, 64, 103
+shotAc/shotAc004
+ bounds: 1271, 1199, 53, 91
+ offsets: 5, 2, 64, 103
+shotAc/shotAc005
+ bounds: 1425, 1407, 56, 83
+ offsets: 1, 7, 64, 103
+shotAd/shotAd000
+ bounds: 1458, 1819, 48, 90
+ offsets: 11, 17, 64, 128
+shotAd/shotAd001
+ bounds: 1539, 980, 49, 99
+ offsets: 10, 8, 64, 128
+shotAd/shotAd002
+ bounds: 1319, 607, 48, 104
+ offsets: 9, 3, 64, 128
+shotAd/shotAd003
+ bounds: 1335, 711, 49, 104
+ offsets: 7, 3, 64, 128
+shotAd/shotAd004
+ bounds: 1433, 700, 48, 104
+ offsets: 9, 3, 64, 128
+shotAd/shotAd005
+ bounds: 1384, 700, 49, 104
+ offsets: 7, 3, 64, 128
+shotAd/shotAd006
+ bounds: 1484, 789, 48, 102
+ offsets: 9, 5, 64, 128
+shotAd/shotAd007
+ bounds: 1089, 1421, 49, 97
+ offsets: 10, 10, 64, 128
+shotAd/shotAd008
+ bounds: 1532, 1079, 58, 89
+ offsets: 0, 18, 64, 128
+shotAd/shotAd009
+ bounds: 767, 1823, 47, 82
+ offsets: 9, 25, 64, 128
+shotBa/shotBa000
+ bounds: 1829, 589, 61, 85
+ offsets: 22, 15, 128, 128
+shotBa/shotBa001
+ bounds: 1239, 967, 61, 61
+ offsets: 22, 15, 128, 128
+shotBa/shotBa002
+ bounds: 632, 1416, 63, 53
+ offsets: 21, 15, 128, 128
+shotBa/shotBa003
+ bounds: 1032, 1421, 57, 57
+ offsets: 21, 15, 128, 128
+shotBa/shotBa004
+ bounds: 1515, 655, 70, 64
+ offsets: 17, 15, 128, 128
+shotBa/shotBa005
+ bounds: 1515, 719, 69, 69
+ offsets: 20, 16, 128, 128
+shotBa/shotBa006
+ bounds: 1585, 665, 54, 79
+ offsets: 30, 16, 128, 128
+shotBa/shotBa007
+ bounds: 1585, 575, 54, 90
+ offsets: 39, 16, 128, 128
+shotBa/shotBa008
+ bounds: 1340, 1514, 49, 93
+ offsets: 43, 15, 128, 128
+shotBa/shotBa009
+ bounds: 1138, 1421, 47, 97
+ offsets: 45, 15, 128, 128
+shotBa/shotBa010
+ bounds: 590, 1811, 45, 98
+ offsets: 45, 15, 128, 128
+shotBa/shotBa011
+ bounds: 1647, 1069, 39, 100
+ offsets: 42, 15, 128, 128
+shotBa/shotBa012
+ bounds: 1341, 1290, 42, 95
+ offsets: 41, 15, 128, 128
+shotBa/shotBa013
+ bounds: 1027, 1325, 43, 96
+ offsets: 41, 15, 128, 128
+shotBa/shotBa014
+ bounds: 1185, 1421, 47, 97
+ offsets: 35, 15, 128, 128
+shotBb/shotBb000
+ bounds: 1327, 1832, 47, 75
+ offsets: 40, 34, 128, 128
+shotBb/shotBb001
+ bounds: 1023, 1841, 57, 64
+ offsets: 32, 39, 128, 128
+shotBb/shotBb002
+ bounds: 1371, 1607, 53, 62
+ offsets: 34, 35, 128, 128
+shotBb/shotBb003
+ bounds: 695, 1416, 54, 53
+ offsets: 35, 43, 128, 128
+shotBb/shotBb004
+ bounds: 1424, 1626, 54, 53
+ offsets: 32, 43, 128, 128
+shotBb/shotBb005
+ bounds: 1545, 1592, 52, 54
+ offsets: 33, 46, 128, 128
+shotBb/shotBb006
+ bounds: 1373, 1669, 50, 62
+ offsets: 36, 41, 128, 128
+shotCa/shotCa000
+ bounds: 1174, 1206, 43, 97
+ offsets: 39, 15, 128, 128
+shotCa/shotCa001
+ bounds: 1196, 1303, 45, 97
+ offsets: 37, 15, 128, 128
+shotCa/shotCa002
+ bounds: 1383, 1290, 42, 97
+ offsets: 38, 15, 128, 128
+shotCa/shotCa003
+ bounds: 1756, 1235, 42, 97
+ offsets: 38, 15, 128, 128
+shotCa/shotCa004
+ bounds: 1728, 1410, 43, 97
+ offsets: 39, 15, 128, 128
+shotCa/shotCa005
+ bounds: 1771, 1410, 43, 97
+ offsets: 39, 15, 128, 128
+shotCb/shotCb000
+ bounds: 866, 1837, 46, 72
+ offsets: 22, 23, 128, 128
+shotCb/shotCb001
+ bounds: 1272, 1835, 55, 73
+ offsets: 17, 23, 128, 128
+shotCb/shotCb002
+ bounds: 912, 1838, 55, 71
+ offsets: 23, 23, 128, 128
+shotCb/shotCb003
+ bounds: 866, 1644, 74, 66
+ offsets: 31, 23, 128, 128
+shotCb/shotCb004
+ bounds: 980, 1169, 63, 68
+ offsets: 31, 23, 128, 128
+shotCb/shotCb005
+ bounds: 1180, 851, 59, 68
+ offsets: 32, 23, 128, 128
+shotCb/shotCb006
+ bounds: 1623, 1689, 49, 70
+ offsets: 31, 23, 128, 128
+shotCb/shotCb007
+ bounds: 1680, 1761, 44, 72
+ offsets: 27, 23, 128, 128
+shotCb/shotCb008
+ bounds: 1046, 1670, 43, 71
+ offsets: 27, 23, 128, 128
+shotDa/shotDa000
+ bounds: 628, 1528, 75, 73
+ offsets: 35, 4, 116, 104
+shotDa/shotDa001
+ bounds: 1756, 589, 73, 76
+ offsets: 34, 4, 116, 104
+shotDa/shotDa002
+ bounds: 1365, 978, 65, 85
+ offsets: 26, 4, 116, 104
+sit/sit000
+ bounds: 1522, 1410, 52, 89
+ offsets: 2, 5, 54, 106
+sit/sit001
+ bounds: 873, 1244, 52, 79
+ offsets: 1, 5, 54, 106
+sit/sit002
+ bounds: 1222, 1839, 50, 70
+ offsets: 1, 6, 54, 106
+sit/sit003
+ bounds: 1178, 1838, 44, 71
+ offsets: 3, 5, 54, 106
+sit/sit004
+ bounds: 1135, 1249, 39, 76
+ offsets: 6, 6, 54, 106
+sit/sit005
+ bounds: 1811, 1602, 39, 87
+ offsets: 6, 5, 54, 106
+sit/sit006
+ bounds: 1070, 1325, 41, 96
+ offsets: 3, 5, 54, 106
+spellAa/spellAa000
+ bounds: 874, 1482, 50, 97
+ offsets: 23, 0, 80, 98
+spellAa/spellAa001
+ bounds: 1215, 1102, 56, 96
+ offsets: 19, 1, 80, 98
+spellAa/spellAa002
+ bounds: 643, 1601, 63, 96
+ offsets: 15, 0, 80, 98
+spellAa/spellAa003
+ bounds: 1239, 871, 61, 96
+ offsets: 16, 0, 80, 98
+spellAa/spellAa004
+ bounds: 543, 1811, 47, 98
+ offsets: 23, 0, 80, 98
+spellAa/spellAa005
+ bounds: 1853, 1134, 54, 91
+ offsets: 14, 0, 80, 98
+spellAa/spellAa006
+ bounds: 1300, 884, 66, 86
+ offsets: 0, 0, 80, 98
+spellAa/spellAa007
+ bounds: 799, 1323, 65, 87
+ offsets: 1, 0, 80, 98
+spellAa/spellAa008
+ bounds: 1430, 984, 61, 91
+ offsets: 7, 0, 80, 98
+spellAa/spellAa009
+ bounds: 1822, 1507, 47, 95
+ offsets: 17, 0, 80, 98
+spellAa/spellAa010
+ bounds: 1814, 1410, 44, 97
+ offsets: 28, 0, 80, 98
+spellAa/spellAa011
+ bounds: 1366, 891, 66, 87
+ offsets: 0, 0, 80, 98
+spellBa/spellBa000
+ bounds: 1111, 1325, 41, 96
+ offsets: 45, 15, 128, 128
+spellBa/spellBa001
+ bounds: 1809, 1318, 49, 92
+ offsets: 39, 16, 128, 128
+spellBa/spellBa002
+ bounds: 1080, 1244, 55, 81
+ offsets: 34, 16, 128, 128
+spellBa/spellBa003
+ bounds: 767, 1525, 54, 76
+ offsets: 40, 16, 128, 128
+spellBa/spellBa004
+ bounds: 1907, 1619, 45, 91
+ offsets: 42, 16, 128, 128
+spellBa/spellBa005
+ bounds: 1300, 408, 62, 99
+ offsets: 34, 16, 128, 128
+spellBa/spellBa006
+ bounds: 266, 1811, 60, 98
+ offsets: 34, 16, 128, 128
+spellBa/spellBa007
+ bounds: 326, 1811, 58, 98
+ offsets: 34, 16, 128, 128
+spellBa/spellBa008
+ bounds: 1477, 1249, 52, 93
+ offsets: 39, 17, 128, 128
+spellBa/spellBa009
+ bounds: 1152, 1325, 44, 96
+ offsets: 41, 15, 128, 128
+spellBulletAa/spellBulletAa000
+ bounds: 512, 0, 256, 168
+spellBulletAa/spellBulletAa001
+ bounds: 256, 1344, 128, 128
+spellBulletAa/spellBulletAa002
+ bounds: 384, 1088, 128, 128
+spellBulletAa/spellBulletAa003
+ bounds: 512, 1064, 128, 128
+spellBulletAa/spellBulletAa004
+ bounds: 640, 808, 128, 128
+spellBulletBa/spellBulletBa000
+ bounds: 768, 640, 128, 128
+spellBulletCa/spellBulletCa000
+ bounds: 256, 192, 128, 256
+spellBulletCa/spellBulletCa001
+ bounds: 0, 704, 128, 256
+spellBulletCa/spellBulletCa002
+ bounds: 128, 448, 128, 256
+spellBulletCa/spellBulletCa003
+ bounds: 384, 192, 128, 256
+spellBulletCa/spellBulletCa004
+ bounds: 512, 168, 128, 256
+spellBulletCa/spellBulletCa005
+ bounds: 0, 960, 128, 256
+spellBulletCa/spellBulletCa006
+ bounds: 128, 704, 128, 256
+spellBulletCa/spellBulletCa007
+ bounds: 256, 448, 128, 256
+spellBulletCa/spellBulletCa008
+ bounds: 640, 168, 128, 256
+spellBulletCa/spellBulletCa009
+ bounds: 768, 0, 128, 256
+spellBulletCa/spellBulletCa010
+ bounds: 0, 1216, 128, 256
+spellBulletCa/spellBulletCa011
+ bounds: 128, 960, 128, 256
+spellBulletCa/spellBulletCa012
+ bounds: 256, 704, 128, 256
+spellBulletCa/spellBulletCa013
+ bounds: 384, 448, 128, 256
+spellBulletCa/spellBulletCa014
+ bounds: 512, 424, 128, 256
+spellBulletCa/spellBulletCa015
+ bounds: 896, 0, 128, 256
+spellBulletCa/spellBulletCa016
+ bounds: 0, 1472, 128, 256
+spellBulletCa/spellBulletCa017
+ bounds: 128, 1216, 128, 256
+spellBulletCa/spellBulletCa018
+ bounds: 256, 960, 128, 256
+spellBulletCa/spellBulletCa019
+ bounds: 384, 704, 128, 256
+spellBulletCa/spellBulletCa020
+ bounds: 512, 680, 128, 256
+spellBulletCa/spellBulletCa021
+ bounds: 640, 424, 128, 256
+spellBulletCa/spellBulletCa022
+ bounds: 768, 256, 128, 256
+spellBulletCa/spellBulletCa023
+ bounds: 1024, 0, 128, 256
+spellBulletCa/spellBulletCa024
+ bounds: 128, 1472, 128, 256
+spellBulletDa/spellBulletDa000
+ bounds: 896, 544, 128, 128
+spellBulletDa/spellBulletDa001
+ bounds: 1024, 416, 128, 128
+spellBulletEa/spellBulletEa000
+ bounds: 1152, 128, 256, 32
+spellBulletFa/spellBulletFa000
+ bounds: 0, 0, 512, 128
+spellBulletFb/spellBulletFb000
+ bounds: 1152, 288, 128, 128
+spellCa/spellCa000
+ bounds: 1626, 1410, 51, 93
+ offsets: 30, 0, 97, 103
+spellCa/spellCa001
+ bounds: 767, 1741, 55, 82
+ offsets: 27, 0, 97, 103
+spellCa/spellCa002
+ bounds: 1244, 1607, 63, 67
+ offsets: 23, 0, 97, 103
+spellCa/spellCa003
+ bounds: 1890, 629, 62, 69
+ offsets: 20, 0, 97, 103
+spellCa/spellCa004
+ bounds: 639, 1731, 55, 80
+ offsets: 24, 0, 97, 103
+spellCa/spellCa005
+ bounds: 1217, 1198, 54, 92
+ offsets: 19, 0, 97, 103
+spellCa/spellCa006
+ bounds: 925, 1233, 54, 90
+ offsets: 18, 1, 97, 103
+spellCa/spellCa007
+ bounds: 1529, 1254, 56, 88
+ offsets: 17, 3, 97, 103
+spellCa/spellCa008
+ bounds: 979, 1237, 57, 88
+ offsets: 17, 3, 97, 103
+spellCall/spellCall000
+ bounds: 1389, 1507, 43, 97
+ offsets: 36, 0, 80, 98
+spellCall/spellCall001
+ bounds: 1226, 1744, 46, 95
+ offsets: 45, 15, 128, 128
+spellCall/spellCall002
+ bounds: 976, 1325, 51, 96
+ offsets: 43, 15, 128, 128
+spellCall/spellCall003
+ bounds: 1144, 547, 69, 96
+ offsets: 24, 15, 128, 128
+spellCall/spellCall004
+ bounds: 1630, 974, 58, 95
+ offsets: 37, 15, 128, 128
+spellCall/spellCall005
+ bounds: 1184, 919, 55, 100
+ offsets: 36, 15, 128, 128
+spellCall/spellCall006
+ bounds: 660, 1215, 60, 108
+ offsets: 32, 15, 128, 128
+spellCall/spellCall007
+ bounds: 1056, 748, 60, 108
+ offsets: 31, 15, 128, 128
+spellCall/spellCall008
+ bounds: 1180, 743, 59, 108
+ offsets: 31, 15, 128, 128
+spellCall/spellCall009
+ bounds: 1671, 1596, 47, 93
+ offsets: 43, 15, 128, 128
+spellCall/spellCall010
+ bounds: 1042, 1745, 45, 96
+ offsets: 50, 15, 128, 128
+spellCall/spellCall011
+ bounds: 1481, 1496, 40, 95
+ offsets: 47, 15, 128, 128
+spellCall/spellCall012
+ bounds: 1386, 1387, 39, 97
+ offsets: 44, 15, 128, 128
+spellDa/spellDa000
+ bounds: 1579, 1646, 44, 96
+ offsets: 16, 1, 72, 100
+spellDa/spellDa001
+ bounds: 1046, 1575, 43, 95
+ offsets: 16, 2, 72, 100
+spellDa/spellDa002
+ bounds: 1532, 1646, 47, 94
+ offsets: 17, 1, 72, 100
+spellDa/spellDa003
+ bounds: 742, 1319, 57, 95
+ offsets: 11, 1, 72, 100
+spellDa/spellDa004
+ bounds: 1687, 669, 66, 94
+ offsets: 3, 1, 72, 100
+spellDa/spellDa005
+ bounds: 1797, 762, 65, 94
+ offsets: 7, 1, 72, 100
+spellDa/spellDa006
+ bounds: 1589, 878, 63, 94
+ offsets: 7, 1, 72, 100
+spellDa/spellDa007
+ bounds: 1532, 788, 52, 95
+ offsets: 15, 2, 72, 100
+spellDa/spellDa008
+ bounds: 723, 1811, 44, 97
+ offsets: 16, 1, 72, 100
+spellEa/spellEa000
+ bounds: 1359, 1063, 55, 96
+ offsets: 5, 3, 85, 103
+spellEa/spellEa001
+ bounds: 1241, 1290, 51, 95
+ offsets: 7, 3, 85, 103
+spellEa/spellEa002
+ bounds: 1858, 1311, 49, 95
+ offsets: 9, 3, 85, 103
+spellEa/spellEa003
+ bounds: 439, 1811, 55, 98
+ offsets: 10, 2, 85, 103
+spellEa/spellEa004
+ bounds: 1301, 507, 61, 100
+ offsets: 13, 2, 85, 103
+spellEa/spellEa005
+ bounds: 1890, 533, 62, 96
+ offsets: 14, 2, 85, 103
+spellEa/spellEa006
+ bounds: 1801, 856, 61, 95
+ offsets: 15, 2, 85, 103
+spellEa/spellEa007
+ bounds: 1862, 952, 65, 88
+ offsets: 14, 2, 85, 103
+spellEa/spellEa008
+ bounds: 1448, 564, 67, 87
+ offsets: 14, 2, 85, 103
+spellEa/spellEa009
+ bounds: 1821, 503, 69, 86
+ offsets: 14, 2, 85, 103
+spellEa/spellEa010
+ bounds: 1575, 487, 64, 88
+ offsets: 14, 2, 85, 103
+spellEa/spellEa011
+ bounds: 1101, 1113, 58, 91
+ offsets: 15, 2, 85, 103
+spellEa/spellEa012
+ bounds: 1677, 1410, 51, 93
+ offsets: 16, 2, 85, 103
+spellFa/spellFa000
+ bounds: 1590, 1779, 46, 94
+ offsets: 15, 2, 61, 98
+spellFa/spellFa001
+ bounds: 1798, 1225, 52, 93
+ offsets: 9, 1, 61, 98
+spellFa/spellFa002
+ bounds: 1585, 1259, 57, 87
+ offsets: 2, 1, 61, 98
+spellFa/spellFa003
+ bounds: 1642, 1259, 57, 87
+ offsets: 1, 1, 61, 98
+spellFa/spellFa004
+ bounds: 1530, 1168, 58, 86
+ offsets: 0, 1, 61, 98
+spellFa/spellFa005
+ bounds: 1850, 1225, 57, 86
+ offsets: 1, 1, 61, 98
+spellFa/spellFa006
+ bounds: 1699, 1259, 57, 87
+ offsets: 2, 1, 61, 98
+spellGa/spellGa000
+ bounds: 1774, 1507, 48, 95
+ offsets: 24, 3, 73, 104
+spellGa/spellGa001
+ bounds: 1425, 1249, 52, 94
+ offsets: 18, 3, 73, 104
+spellGa/spellGa002
+ bounds: 1809, 951, 53, 93
+ offsets: 16, 3, 73, 104
+spellGa/spellGa003
+ bounds: 706, 1601, 58, 95
+ offsets: 9, 3, 73, 104
+spellGa/spellGa004
+ bounds: 906, 925, 66, 94
+ offsets: 3, 3, 73, 104
+spellGa/spellGa005
+ bounds: 1019, 926, 66, 94
+ offsets: 3, 3, 73, 104
+spellGa/spellGa006
+ bounds: 1691, 853, 63, 94
+ offsets: 3, 3, 73, 104
+spellGa/spellGa007
+ bounds: 1728, 1043, 55, 95
+ offsets: 9, 3, 73, 104
+spellGa/spellGa008
+ bounds: 994, 1745, 48, 96
+ offsets: 20, 3, 73, 104
+stand/stand000
+ bounds: 1272, 1738, 44, 97
+ offsets: 2, 15, 54, 128
+stand/stand001
+ bounds: 1907, 1231, 45, 97
+ offsets: 5, 15, 54, 128
+stand/stand002
+ bounds: 1361, 1735, 44, 97
+ offsets: 8, 15, 54, 128
+stand/stand003
+ bounds: 1087, 1743, 46, 97
+ offsets: 8, 15, 54, 128
+stand/stand004
+ bounds: 1907, 1328, 45, 97
+ offsets: 8, 15, 54, 128
+stand/stand005
+ bounds: 1405, 1731, 44, 97
+ offsets: 8, 15, 54, 128
+stand/stand006
+ bounds: 1004, 1648, 42, 97
+ offsets: 7, 15, 54, 128
+stand/stand007
+ bounds: 1449, 1722, 39, 97
+ offsets: 7, 15, 54, 128
+stand/stand008
+ bounds: 462, 1563, 38, 97
+ offsets: 7, 15, 54, 128
+stand/stand009
+ bounds: 1506, 1779, 40, 97
+ offsets: 5, 15, 54, 128
+stand/stand010
+ bounds: 1907, 1425, 45, 97
+ offsets: 0, 15, 54, 128
+stand/stand011
+ bounds: 1907, 1522, 45, 97
+ offsets: 0, 15, 54, 128
+stand/stand012
+ bounds: 1133, 1743, 45, 97
+ offsets: 0, 15, 54, 128
+stand/stand013
+ bounds: 1316, 1735, 45, 97
+ offsets: 0, 15, 54, 128
+stand/stand014
+ bounds: 1488, 1682, 44, 97
+ offsets: 1, 15, 54, 128
+stand/stand015
+ bounds: 1546, 1779, 44, 97
+ offsets: 1, 15, 54, 128
+standUp/standUp000
+ bounds: 896, 890, 95, 35
+ offsets: 19, 14, 128, 128
+standUp/standUp001
+ bounds: 906, 1019, 85, 54
+ offsets: 21, 15, 128, 128
+standUp/standUp002
+ bounds: 1138, 1589, 62, 65
+ offsets: 30, 16, 128, 128
+standUp/standUp003
+ bounds: 1419, 1828, 39, 78
+ offsets: 44, 15, 128, 128
+standUp/standUp004
+ bounds: 1869, 1500, 38, 89
+ offsets: 43, 15, 128, 128
+standUp/standUp005
+ bounds: 1481, 693, 34, 96
+ offsets: 46, 15, 128, 128
+standUpBack/standUpBack000
+ bounds: 512, 1472, 123, 56
+standUpBack/standUpBack001
+ bounds: 500, 1583, 122, 55
+standUpFront/standUpFront000
+ bounds: 737, 1174, 128, 56
+standUpFront/standUpFront001
+ bounds: 500, 1528, 128, 55
+tailAa/tailAa000
+ bounds: 1362, 408, 10, 128
+walkFront/walkFront000
+ bounds: 1724, 1507, 50, 92
+ offsets: 2, 15, 53, 128
+walkFront/walkFront001
+ bounds: 1521, 1499, 51, 92
+ offsets: 1, 16, 53, 128
+walkFront/walkFront002
+ bounds: 1178, 1744, 48, 94
+ offsets: 2, 15, 53, 128
+walkFront/walkFront003
+ bounds: 1623, 1596, 48, 93
+ offsets: 2, 16, 53, 128
+walkFront/walkFront004
+ bounds: 1432, 1490, 49, 93
+ offsets: 2, 15, 53, 128
+walkFront/walkFront005
+ bounds: 1574, 1410, 52, 92
+ offsets: 1, 15, 53, 128
+walkFront/walkFront006
+ bounds: 1674, 1503, 50, 93
+ offsets: 2, 15, 53, 128
+walkFront/walkFront007
+ bounds: 1858, 1406, 49, 94
+ offsets: 2, 15, 53, 128
+walkFront/walkFront008
+ bounds: 1718, 1599, 47, 94
+ offsets: 3, 15, 53, 128
+walkFront/walkFront009
+ bounds: 1623, 1503, 51, 93
+ offsets: 2, 15, 53, 128
diff --git a/src/main/resources/character/alice/alice.png b/src/main/resources/character/alice/alice.png
new file mode 100644
index 0000000..f83f7ab
Binary files /dev/null and b/src/main/resources/character/alice/alice.png differ
diff --git a/src/main/resources/character/alice/精灵1.2-0.png b/src/main/resources/character/alice/精灵1.2-0.png
deleted file mode 100644
index b8b088d..0000000
Binary files a/src/main/resources/character/alice/精灵1.2-0.png and /dev/null differ
diff --git a/src/main/resources/character/alice/精灵1.2.atlas b/src/main/resources/character/alice/精灵1.2.atlas
deleted file mode 100644
index 23cae6a..0000000
--- a/src/main/resources/character/alice/精灵1.2.atlas
+++ /dev/null
@@ -1,1397 +0,0 @@
-精灵1.2-0.png
-size: 1999, 2047
-format: RGBA8888
-filter: Linear, Linear
-repeat: none
-pma: false
-alpha/alpha000
- bounds: 0, 192, 256, 256
-attackAa/attackAa000
- bounds: 851, 1047, 59, 101
- offsets: 30, 13, 128, 128
-attackAa/attackAa001
- bounds: 1481, 877, 61, 98
- offsets: 22, 13, 128, 128
-attackAa/attackAa002
- bounds: 764, 1047, 87, 97
- offsets: 24, 13, 128, 128
-attackAa/attackAa003
- bounds: 1142, 677, 95, 95
- offsets: 26, 13, 128, 128
-attackAa/attackAa004
- bounds: 1304, 372, 91, 96
- offsets: 24, 13, 128, 128
-attackAa/attackAa005
- bounds: 1086, 873, 67, 100
- offsets: 29, 13, 128, 128
-attackAa/attackAa006
- bounds: 1532, 692, 56, 102
- offsets: 36, 13, 128, 128
-attackAb/attackAb000
- bounds: 1655, 769, 57, 77
- offsets: 32, 12, 128, 128
-attackAb/attackAb001
- bounds: 890, 1756, 64, 65
- offsets: 26, 12, 128, 128
-attackAb/attackAb002
- bounds: 1368, 1496, 77, 67
- offsets: 20, 12, 128, 128
-attackAb/attackAb003
- bounds: 1615, 599, 97, 67
- offsets: 22, 11, 128, 128
-attackAb/attackAb004
- bounds: 1279, 1262, 80, 69
- offsets: 17, 12, 128, 128
-attackAb/attackAb005
- bounds: 338, 1865, 70, 76
- offsets: 25, 12, 128, 128
-attackAb/attackAb006
- bounds: 1940, 893, 59, 77
- offsets: 35, 12, 128, 128
-attackAc/attackAc000
- bounds: 471, 1862, 55, 79
- offsets: 35, 34, 128, 128
-attackAc/attackAc001
- bounds: 1422, 1176, 57, 79
- offsets: 32, 31, 128, 128
-attackAc/attackAc002
- bounds: 1712, 774, 66, 80
- offsets: 25, 29, 128, 128
-attackAc/attackAc003
- bounds: 934, 1343, 68, 78
- offsets: 24, 30, 128, 128
-attackAc/attackAc004
- bounds: 1152, 515, 104, 68
- offsets: 24, 36, 128, 128
-attackAc/attackAc005
- bounds: 647, 1469, 101, 71
- offsets: 25, 35, 128, 128
-attackAc/attackAc006
- bounds: 244, 1865, 94, 76
- offsets: 29, 32, 128, 128
-attackAc/attackAc007
- bounds: 1872, 268, 78, 82
- offsets: 32, 29, 128, 128
-attackAc/attackAc008
- bounds: 442, 1599, 66, 92
- offsets: 35, 21, 128, 128
-attackAc/attackAc009
- bounds: 1166, 1069, 59, 95
- offsets: 37, 19, 128, 128
-attackAc/attackAc010
- bounds: 1002, 1343, 57, 100
- offsets: 34, 13, 128, 128
-attackAd/attackAd000
- bounds: 1542, 877, 53, 104
- offsets: 35, 11, 128, 128
-attackAd/attackAd001
- bounds: 1424, 1255, 55, 102
- offsets: 35, 11, 128, 128
-attackAd/attackAd002
- bounds: 1588, 666, 68, 102
- offsets: 41, 11, 128, 128
-attackAd/attackAd003
- bounds: 771, 1241, 82, 101
- offsets: 32, 11, 128, 128
-attackAd/attackAd004
- bounds: 849, 1420, 83, 100
- offsets: 31, 11, 128, 128
-attackAd/attackAd005
- bounds: 1686, 306, 75, 101
- offsets: 33, 11, 128, 128
-attackAd/attackAd006
- bounds: 519, 1442, 58, 104
- offsets: 41, 11, 128, 128
-attackAd/attackAd007
- bounds: 1481, 773, 51, 104
- offsets: 43, 11, 128, 128
-attackAd/attackAd008
- bounds: 618, 1592, 47, 104
- offsets: 41, 11, 128, 128
-attackBc/attackBc009
- bounds: 1086, 973, 68, 96
- offsets: 28, 11, 256, 128
-attackBc/attackBc010
- bounds: 1429, 1076, 56, 100
- offsets: 29, 11, 256, 128
-attackBc/attackBc011
- bounds: 1122, 1339, 49, 103
- offsets: 27, 11, 256, 128
-attackBc/attackBc012
- bounds: 788, 1583, 47, 104
- offsets: 26, 11, 256, 128
-attackBe/attackBe000
- bounds: 1766, 1789, 54, 75
- offsets: 10, 14, 64, 128
-attackBf/attackBf000
- bounds: 835, 1581, 55, 104
- offsets: 18, 11, 256, 128
-attackBf/attackBf001
- bounds: 1063, 1442, 63, 99
- offsets: 21, 13, 256, 128
-attackBf/attackBf002
- bounds: 1000, 1443, 63, 96
- offsets: 28, 13, 256, 128
-attackBf/attackBf003
- bounds: 1304, 468, 88, 93
- offsets: 25, 11, 256, 128
-attackBf/attackBf004
- bounds: 1140, 583, 87, 94
- offsets: 24, 11, 256, 128
-attackBf/attackBf005
- bounds: 1142, 772, 76, 95
- offsets: 25, 11, 256, 128
-attackCa/attackCa000
- bounds: 1941, 616, 58, 99
- offsets: 12, 0, 116, 104
-attackCa/attackCa001
- bounds: 1365, 869, 66, 97
- offsets: 7, 0, 116, 104
-attackCa/attackCa002
- bounds: 1876, 640, 65, 96
- offsets: 6, 0, 116, 104
-attackCa/attackCa003
- bounds: 1359, 1255, 65, 96
- offsets: 6, 0, 116, 104
-attackCa/attackCa004
- bounds: 1541, 1278, 65, 96
- offsets: 6, 0, 116, 104
-attackCa/attackCa005
- bounds: 1541, 1374, 65, 96
- offsets: 6, 0, 116, 104
-attackCa/attackCa006
- bounds: 1358, 966, 71, 96
- offsets: 0, 0, 116, 104
-attackCa/attackCa007
- bounds: 996, 1145, 71, 96
- offsets: 0, 0, 116, 104
-attackCa/attackCa008
- bounds: 1060, 1541, 66, 94
- offsets: 18, 0, 116, 104
-attackCa/attackCa009
- bounds: 1006, 768, 80, 87
- offsets: 20, 0, 116, 104
-attackCa/attackCa010
- bounds: 1218, 785, 83, 81
- offsets: 31, 0, 116, 104
-attackCa/attackCa011
- bounds: 1792, 599, 84, 84
- offsets: 30, 0, 116, 104
-attackCa/attackCa012
- bounds: 851, 1148, 76, 93
- offsets: 22, 0, 116, 104
-attackCa/attackCa013
- bounds: 1291, 1167, 68, 95
- offsets: 24, 0, 116, 104
-attackCa/attackCa014
- bounds: 1941, 516, 58, 100
- offsets: 24, 0, 116, 104
-attackCa/attackCa015
- bounds: 1150, 1848, 51, 101
- offsets: 23, 0, 116, 104
-attackCa/attackCa016
- bounds: 1429, 974, 52, 102
- offsets: 18, 0, 116, 104
-BulletAa/BulletAa000
- bounds: 1844, 396, 32, 32
-BulletAa/BulletAa001
- bounds: 1796, 2015, 32, 32
-BulletAa/BulletAa002
- bounds: 1828, 2015, 32, 32
-BulletAa/BulletAa003
- bounds: 1860, 2015, 32, 32
-BulletAa/BulletAa004
- bounds: 1606, 1145, 32, 32
-BulletAa/BulletAa005
- bounds: 1906, 1931, 32, 32
-BulletAa/BulletAa006
- bounds: 1892, 2009, 32, 32
-BulletAb/BulletAb000
- bounds: 384, 1691, 64, 64
-BulletAb/BulletAb001
- bounds: 1651, 407, 64, 64
-BulletAb/BulletAb002
- bounds: 1715, 407, 64, 64
-BulletAb/BulletAb003
- bounds: 448, 1691, 64, 64
-BulletAb/BulletAb004
- bounds: 512, 1691, 64, 64
-BulletAb/BulletAb005
- bounds: 993, 1983, 64, 64
-BulletAb/BulletAb006
- bounds: 1057, 1983, 64, 64
-BulletAc/BulletAc000
- bounds: 1542, 1983, 64, 64
-BulletAc/BulletAc001
- bounds: 1606, 1983, 64, 64
-BulletAc/BulletAc002
- bounds: 1670, 1979, 64, 64
-BulletAc/BulletAc003
- bounds: 1766, 1725, 64, 64
-BulletAc/BulletAc004
- bounds: 1830, 1725, 64, 64
-BulletAc/BulletAc005
- bounds: 1820, 1789, 64, 64
-BulletAc/BulletAc006
- bounds: 1715, 1874, 64, 64
-BulletBa/BulletBa000
- bounds: 0, 128, 512, 64
-BulletCa/BulletCa000
- bounds: 128, 1472, 128, 128
-BulletCa/BulletCa001
- bounds: 256, 1216, 128, 128
-BulletCa/BulletCa002
- bounds: 384, 960, 128, 128
-BulletDa/BulletDa000
- bounds: 1779, 1864, 64, 64
-BulletDa/BulletDa001
- bounds: 1843, 1853, 64, 64
-BulletDb/BulletDb005
- bounds: 1240, 385, 32, 128
-BulletDb/BulletDb006
- bounds: 730, 936, 32, 128
-BulletDb/BulletDb007
- bounds: 1272, 266, 32, 128
-BulletDb/BulletDb008
- bounds: 1272, 394, 32, 128
-BulletDb/BulletDb009
- bounds: 732, 1064, 32, 128
-BulletDb/BulletDb010
- bounds: 477, 1337, 32, 128
-BulletDb/BulletDb011
- bounds: 372, 1472, 32, 128
-BulletDb/BulletDb012
- bounds: 1654, 279, 32, 128
-BulletDb/BulletDb013
- bounds: 1648, 471, 32, 128
-BulletDb/BulletDb014
- bounds: 1680, 471, 32, 128
-BulletDb/BulletDb015
- bounds: 1712, 471, 32, 128
-BulletDb/BulletDb016
- bounds: 1744, 471, 32, 128
-BulletDb/BulletDb017
- bounds: 1776, 471, 32, 128
-BulletDb/BulletDb018
- bounds: 1808, 471, 32, 128
-BulletDb/BulletDb019
- bounds: 1840, 471, 32, 128
-BulletEa/BulletEa000
- bounds: 512, 936, 128, 128
-BulletEa/BulletEa001
- bounds: 640, 680, 128, 128
-BulletEa/BulletEa002
- bounds: 768, 512, 128, 128
-BulletFa/BulletFa000
- bounds: 512, 1192, 128, 32
-BulletFa/BulletFa001
- bounds: 896, 448, 128, 128
-bulletFb/bulletFb000
- bounds: 896, 704, 128, 64
-bulletFb/bulletFb001
- bounds: 768, 867, 128, 64
-bulletFb/bulletFb002
- bounds: 1408, 214, 128, 64
-bulletFb/bulletFb003
- bounds: 1536, 215, 128, 64
-bulletFb/bulletFb004
- bounds: 896, 855, 128, 64
-bulletFb/bulletFb005
- bounds: 1398, 278, 128, 64
-bulletFb/bulletFb006
- bounds: 1526, 279, 128, 64
-bulletFb/bulletFb007
- bounds: 1398, 342, 128, 64
-bulletFb/bulletFb008
- bounds: 1526, 343, 128, 64
-bulletFb/bulletFb009
- bounds: 256, 1691, 128, 64
-bulletFb/bulletFb010
- bounds: 1395, 406, 128, 64
-bulletFb/bulletFb011
- bounds: 1523, 407, 128, 64
-bulletFb/bulletFb012
- bounds: 1392, 470, 128, 64
-bulletFb/bulletFb013
- bounds: 1520, 471, 128, 64
-bulletFb/bulletFb014
- bounds: 1392, 534, 128, 64
-bulletFb/bulletFb015
- bounds: 1520, 535, 128, 64
-bulletFb/bulletFb016
- bounds: 896, 919, 128, 64
-bulletGa/bulletGa000
- bounds: 896, 256, 256, 32
-bulletGa/bulletGa001
- bounds: 1152, 0, 256, 32
-bulletGa/bulletGa002
- bounds: 896, 288, 256, 32
-bulletGa/bulletGa003
- bounds: 1152, 32, 256, 32
-bulletGa/bulletGa004
- bounds: 1408, 0, 256, 32
-bulletGa/bulletGa005
- bounds: 896, 320, 256, 32
-bulletGa/bulletGa006
- bounds: 1152, 64, 256, 32
-bulletGa/bulletGa007
- bounds: 1408, 32, 256, 32
-bulletGa/bulletGa008
- bounds: 1664, 0, 256, 32
-bulletGa/bulletGa009
- bounds: 896, 352, 256, 32
-bulletGa/bulletGa010
- bounds: 1152, 96, 256, 32
-bulletGa/bulletGa011
- bounds: 1408, 64, 256, 32
-bulletGa/bulletGa012
- bounds: 1664, 32, 256, 32
-bulletGa/bulletGa013
- bounds: 896, 384, 256, 32
-bulletGa/bulletGa014
- bounds: 1152, 128, 256, 32
-bulletGb/bulletGb000
- bounds: 1408, 96, 256, 32
-crash/crash000
- bounds: 837, 1790, 53, 103
- offsets: 37, 12, 128, 128
-crash/crash001
- bounds: 1542, 1078, 64, 101
- offsets: 29, 13, 128, 128
-crash/crash002
- bounds: 1876, 539, 65, 101
- offsets: 28, 13, 128, 128
-crash/crash003
- bounds: 830, 1907, 53, 103
- offsets: 37, 12, 128, 128
-dashBack/dashBack000
- bounds: 1231, 1746, 63, 93
- offsets: 29, 22, 128, 128
-dashBack/dashBack001
- bounds: 1606, 1383, 63, 92
- offsets: 34, 22, 128, 128
-dashBack/dashBack002
- bounds: 1292, 869, 73, 96
- offsets: 30, 17, 128, 128
-dashBack/dashBack003
- bounds: 775, 1414, 74, 96
- offsets: 29, 17, 128, 128
-dashFront/dashFront000
- bounds: 1446, 1841, 61, 94
- offsets: 47, 11, 128, 128
-dashFront/dashFront001
- bounds: 1876, 350, 74, 88
- offsets: 40, 11, 128, 128
-dashFront/dashFront002
- bounds: 1086, 1069, 80, 78
- offsets: 38, 11, 128, 128
-dashFront/dashFront003
- bounds: 1139, 1164, 80, 77
- offsets: 38, 11, 128, 128
-dashFront/dashFront004
- bounds: 1929, 1419, 53, 89
- offsets: 47, 13, 128, 128
-dashFront/dashFront005
- bounds: 1947, 970, 52, 93
- offsets: 47, 11, 128, 128
-dashFront/dashFront006
- bounds: 1445, 1495, 49, 97
- offsets: 45, 11, 128, 128
-dashFrontAir/dashFrontAir000
- bounds: 771, 1907, 59, 101
- offsets: 38, 7, 128, 128
-down/down000
- bounds: 1917, 1143, 56, 93
- offsets: 36, 4, 128, 128
-down/down001
- bounds: 1728, 1643, 61, 74
- offsets: 30, 4, 128, 128
-down/down002
- bounds: 1279, 1331, 80, 68
- offsets: 24, 4, 128, 128
-down/down003
- bounds: 1566, 1565, 66, 94
- offsets: 24, 2, 128, 128
-down/down004
- bounds: 729, 1583, 59, 98
- offsets: 32, 17, 128, 128
-down/down005
- bounds: 1345, 1423, 82, 73
- offsets: 25, 19, 128, 128
-down/down006
- bounds: 1301, 819, 95, 50
- offsets: 20, 13, 128, 128
-down/down007
- bounds: 1370, 654, 105, 38
- offsets: 15, 10, 128, 128
-down/down008
- bounds: 1475, 654, 104, 38
- offsets: 15, 11, 128, 128
-emotionAa/emotionAa000
- bounds: 200, 1948, 69, 99
- offsets: 3, 0, 72, 100
-emotionAa/emotionAa001
- bounds: 1686, 207, 69, 99
- offsets: 3, 0, 72, 100
-emotionBa/emotionBa000
- bounds: 976, 983, 48, 105
- offsets: 16, 11, 64, 128
-face/face000
- bounds: 762, 987, 127, 60
- offsets: 0, 4, 160, 64
-Guard/Guard000
- bounds: 0, 448, 128, 256
-guardBUnder/guardBUnder000
- bounds: 1942, 1673, 57, 76
- offsets: 31, 11, 128, 128
-guardBUnder/guardBUnder001
- bounds: 1892, 970, 55, 77
- offsets: 33, 11, 128, 128
-guardBUpper/guardBUpper000
- bounds: 1602, 1179, 56, 99
- offsets: 27, 11, 128, 128
-guardBUpper/guardBUpper001
- bounds: 1542, 981, 57, 97
- offsets: 26, 11, 128, 128
-guardSit/guardSit000
- bounds: 1857, 96, 93, 110
- offsets: 35, 18, 128, 128
-guardSit/guardSit001
- bounds: 244, 1755, 90, 110
- offsets: 38, 18, 128, 128
-guardUnder/guardUnder000
- bounds: 1765, 96, 92, 111
- offsets: 36, 0, 128, 128
-guardUnder/guardUnder001
- bounds: 1672, 96, 93, 111
- offsets: 35, 0, 128, 128
-guardUpper/guardUpper000
- bounds: 384, 1337, 93, 117
- offsets: 35, 11, 128, 128
-guardUpper/guardUpper001
- bounds: 640, 1065, 92, 117
- offsets: 36, 11, 128, 128
-hitAir/hitAir000
- bounds: 1294, 1739, 52, 102
- offsets: 36, 15, 128, 128
-hitAir/hitAir001
- bounds: 646, 1757, 59, 98
- offsets: 32, 26, 128, 128
-hitAir/hitAir002
- bounds: 1712, 599, 80, 82
- offsets: 20, 31, 128, 128
-hitAir/hitAir003
- bounds: 1279, 1496, 89, 50
- offsets: 14, 45, 128, 128
-hitAir/hitAir004
- bounds: 849, 1345, 85, 75
- offsets: 22, 32, 128, 128
-hitAir/hitAir005
- bounds: 1219, 1165, 72, 88
- offsets: 26, 22, 128, 128
-hitAir/hitAir006
- bounds: 403, 1941, 57, 106
- offsets: 35, 14, 128, 128
-hitAir/hitAir007
- bounds: 447, 1755, 51, 107
- offsets: 42, 11, 128, 128
-hitAir/hitAir008
- bounds: 498, 1755, 50, 107
- offsets: 39, 11, 128, 128
-hitSit/hitSit000
- bounds: 1445, 1592, 60, 72
- offsets: 0, 0, 64, 74
-hitSit/hitSit001
- bounds: 1542, 1909, 61, 74
- offsets: 2, 0, 64, 74
-hitSit/hitSit002
- bounds: 1789, 1651, 53, 74
- offsets: 11, 0, 64, 74
-hitSpin/hitSpin000
- bounds: 1188, 1546, 52, 96
- offsets: 7, 13, 64, 128
-hitSpin/hitSpin001
- bounds: 771, 1144, 80, 97
- offsets: 18, 13, 128, 128
-hitSpin/hitSpin002
- bounds: 890, 1661, 64, 95
- offsets: 0, 13, 64, 128
-hitSpin/hitSpin003
- bounds: 665, 1583, 64, 98
- offsets: 0, 13, 64, 128
-hitSpin/hitSpin004
- bounds: 1866, 1244, 52, 97
- offsets: 0, 13, 64, 128
-hitSpin/hitSpin005
- bounds: 1920, 0, 79, 96
- offsets: 17, 13, 128, 128
-hitUnder/hitUnder000
- bounds: 1505, 1573, 61, 92
- offsets: 28, 11, 128, 128
-hitUnder/hitUnder001
- bounds: 508, 1592, 56, 99
- offsets: 33, 12, 128, 128
-hitUnder/hitUnder002
- bounds: 1231, 1642, 53, 104
- offsets: 37, 11, 128, 128
-hitUpper/hitUpper000
- bounds: 1755, 207, 77, 98
- offsets: 20, 13, 128, 128
-hitUpper/hitUpper001
- bounds: 1538, 1179, 64, 99
- offsets: 29, 13, 128, 128
-hitUpper/hitUpper002
- bounds: 1654, 1042, 53, 102
- offsets: 37, 12, 128, 128
-invin/invin000
- bounds: 1872, 539, 4, 4
-jump/jump000
- bounds: 1485, 1075, 57, 103
- offsets: 35, 10, 128, 128
-jump/jump001
- bounds: 564, 1592, 54, 99
- offsets: 36, 14, 128, 128
-jump/jump002
- bounds: 1310, 1546, 58, 91
- offsets: 37, 19, 128, 128
-jump/jump003
- bounds: 1842, 1645, 53, 80
- offsets: 36, 28, 128, 128
-jump/jump004
- bounds: 1427, 1413, 55, 82
- offsets: 38, 29, 128, 128
-jump/jump005
- bounds: 1918, 1236, 56, 93
- offsets: 37, 23, 128, 128
-jump/jump006
- bounds: 1292, 965, 66, 102
- offsets: 36, 19, 128, 128
-jump/jump007
- bounds: 1237, 677, 68, 108
- offsets: 36, 15, 128, 128
-jump/jump008
- bounds: 577, 1335, 70, 108
- offsets: 34, 15, 128, 128
-objectAa/objectAa000
- bounds: 1907, 1843, 33, 46
-objectAa/objectAa001
- bounds: 1881, 1963, 33, 46
-objectAa/objectAa002
- bounds: 1914, 1963, 33, 46
-objectAa/objectAa003
- bounds: 1966, 1792, 33, 46
-objectAb/objectAb000
- bounds: 1715, 1938, 38, 37
-objectAb/objectAb001
- bounds: 1753, 1938, 38, 37
-objectAc/objectAc000
- bounds: 1834, 304, 38, 46
- offsets: 3, 0, 41, 46
-objectAc/objectAc001
- bounds: 1910, 1047, 37, 46
- offsets: 4, 0, 41, 46
-objectAc/objectAc002
- bounds: 1834, 350, 41, 46
-objectAc/objectAc003
- bounds: 1402, 1640, 41, 46
-objectAd/objectAd000
- bounds: 1832, 268, 40, 36
-objectAd/objectAd001
- bounds: 1011, 1841, 40, 37
-objectAd/objectAd002
- bounds: 590, 1544, 64, 48
-objectAd/objectAd003
- bounds: 913, 1999, 64, 48
-objectAd/objectAd004
- bounds: 1894, 1757, 49, 43
-objectAd/objectAd005
- bounds: 1796, 1972, 53, 43
-objectAd/objectAd006
- bounds: 1884, 1800, 49, 43
-objectAd/objectAd007
- bounds: 1943, 1749, 53, 43
-objectAe/objectAe000
- bounds: 519, 1546, 71, 46
-objectAe/objectAe001
- bounds: 766, 1861, 71, 46
-objectAe/objectAe002
- bounds: 404, 1555, 69, 44
-objectAe/objectAe003
- bounds: 1791, 1928, 69, 44
-objectAe/objectAe004
- bounds: 809, 2010, 52, 37
-objectAe/objectAe005
- bounds: 861, 2010, 52, 37
-objectAf/objectAf000
- bounds: 771, 2008, 38, 39
-objectAg/objectAg000
- bounds: 1402, 1686, 46, 46
-objectAg/objectAg001
- bounds: 1860, 1917, 46, 46
-objectAg/objectAg002
- bounds: 1942, 1881, 46, 46
-objectAg/objectAg003
- bounds: 1841, 811, 46, 46
-objectAg/objectAg004
- bounds: 0, 1984, 64, 63
-objectAg/objectAg005
- bounds: 64, 1984, 64, 62
-objectAh/objectAh000
- bounds: 654, 1540, 86, 43
-objectAh/objectAh001
- bounds: 889, 1520, 86, 43
-objectAi/objectAi000
- bounds: 1556, 1665, 36, 44
-objectAi/objectAi001
- bounds: 1592, 1659, 34, 44
-objectAj/objectAj000
- bounds: 1849, 1972, 32, 43
-objectAj/objectAj001
- bounds: 1933, 1800, 33, 43
-objectAj/objectAj002
- bounds: 1626, 1670, 32, 43
-objectAj/objectAj003
- bounds: 1966, 1838, 33, 43
-objectAk/objectAk000
- bounds: 1907, 1715, 35, 42
-objectAk/objectAk001
- bounds: 1907, 1889, 35, 42
-objectAl/objectAl000
- bounds: 618, 1696, 47, 49
-objectAl/objectAl001
- bounds: 1424, 1357, 51, 56
-objectAl/objectAl002
- bounds: 970, 1088, 50, 55
-objectAl/objectAl003
- bounds: 1448, 1664, 46, 55
-objectAl/objectAl004
- bounds: 1893, 891, 46, 59
-objectAl/objectAl005
- bounds: 576, 1691, 42, 59
-objectAm/objectAm000
- bounds: 1910, 1093, 35, 47
-objectAm/objectAm001
- bounds: 1256, 522, 33, 48
-objectAn/objectAn000
- bounds: 1841, 857, 45, 7
-objectBa/objectBa000
- bounds: 1152, 160, 256, 2
-objectBa/objectBa001
- bounds: 1664, 64, 256, 32
-objectCa/objectCa000
- bounds: 128, 1850, 116, 98
-objectCa/objectCa001
- bounds: 500, 1224, 90, 102
-objectCa/objectCa002
- bounds: 932, 1421, 68, 99
-objectCa/objectCa003
- bounds: 1654, 846, 55, 98
-objectCa/objectCa004
- bounds: 1304, 264, 94, 108
-objectCa/objectCa005
- bounds: 1152, 266, 120, 119
-objectCa/objectCa006
- bounds: 128, 1728, 116, 122
-objectCa/objectCa007
- bounds: 256, 1472, 116, 121
-objectCb/objectCb000
- bounds: 384, 1216, 116, 121
-objectCb/objectCb001
- bounds: 640, 936, 90, 129
-objectCb/objectCb002
- bounds: 1152, 385, 88, 130
-objectCb/objectCb003
- bounds: 1024, 576, 116, 101
-objectCb/objectCb004
- bounds: 1152, 162, 152, 104
-objectCb/objectCb005
- bounds: 1408, 128, 146, 86
-objectCb/objectCb006
- bounds: 1024, 677, 118, 85
-objectCb/objectCb007
- bounds: 1554, 128, 118, 87
-objectCb/objectCb008
- bounds: 888, 768, 118, 87
-objectCb/objectCb009
- bounds: 1358, 1062, 71, 90
-objectCb/objectCb010
- bounds: 1304, 162, 104, 102
-objectCb/objectCb011
- bounds: 768, 768, 120, 99
-objectCb/objectCb012
- bounds: 256, 1593, 116, 98
-redAura/redAura000
- bounds: 1924, 2009, 32, 32
-shotAa/shotAa000
- bounds: 513, 1941, 51, 105
- offsets: 13, 11, 64, 128
-shotAa/shotAa001
- bounds: 1171, 1336, 46, 105
- offsets: 18, 11, 64, 128
-shotAa/shotAa002
- bounds: 548, 1755, 48, 105
- offsets: 16, 11, 64, 128
-shotAa/shotAa003
- bounds: 1431, 869, 50, 105
- offsets: 14, 11, 64, 128
-shotAa/shotAa004
- bounds: 621, 1941, 50, 105
- offsets: 14, 11, 64, 128
-shotAa/shotAa005
- bounds: 596, 1750, 50, 105
- offsets: 14, 11, 64, 128
-shotAa/shotAa006
- bounds: 671, 1941, 50, 105
- offsets: 14, 11, 64, 128
-shotAa/shotAa007
- bounds: 954, 1563, 46, 105
- offsets: 18, 11, 64, 128
-shotAa/shotAa008
- bounds: 1632, 1565, 46, 105
- offsets: 18, 11, 64, 128
-shotAa/shotAa009
- bounds: 1024, 855, 62, 105
- offsets: 2, 11, 64, 128
-shotAa/shotAa010
- bounds: 954, 1668, 50, 105
- offsets: 14, 11, 64, 128
-shotAb/shotAb000
- bounds: 1947, 1063, 52, 80
- offsets: 7, 11, 64, 128
-shotAb/shotAb001
- bounds: 1504, 1749, 52, 80
- offsets: 7, 11, 64, 128
-shotAb/shotAb002
- bounds: 1507, 1829, 52, 80
- offsets: 7, 11, 64, 128
-shotAb/shotAb003
- bounds: 1556, 1749, 52, 80
- offsets: 7, 11, 64, 128
-shotAb/shotAb004
- bounds: 1559, 1829, 52, 80
- offsets: 7, 11, 64, 128
-shotAb/shotAb005
- bounds: 1608, 1749, 52, 80
- offsets: 7, 11, 64, 128
-shotAb/shotAb006
- bounds: 1611, 1829, 52, 80
- offsets: 7, 11, 64, 128
-shotAb/shotAb007
- bounds: 1940, 813, 59, 80
- offsets: 0, 11, 64, 128
-shotAb/shotAb008
- bounds: 1660, 1749, 52, 80
- offsets: 7, 11, 64, 128
-shotAc/shotAc000
- bounds: 1603, 1909, 54, 74
- offsets: 10, 0, 64, 103
-shotAc/shotAc001
- bounds: 1126, 1550, 62, 92
- offsets: 2, 0, 64, 103
-shotAc/shotAc002
- bounds: 1384, 1841, 62, 94
- offsets: 0, 2, 64, 103
-shotAc/shotAc003
- bounds: 1709, 854, 62, 91
- offsets: 0, 3, 64, 103
-shotAc/shotAc004
- bounds: 1341, 1640, 61, 97
- offsets: 1, 0, 64, 103
-shotAc/shotAc005
- bounds: 1770, 956, 61, 91
- offsets: 0, 3, 64, 103
-shotAd/shotAd000
- bounds: 1121, 1949, 56, 98
- offsets: 7, 13, 64, 128
-shotAd/shotAd001
- bounds: 390, 1755, 57, 107
- offsets: 6, 4, 64, 128
-shotAd/shotAd002
- bounds: 590, 1224, 56, 111
- offsets: 5, 0, 64, 128
-shotAd/shotAd003
- bounds: 714, 1192, 57, 111
- offsets: 3, 0, 64, 128
-shotAd/shotAd004
- bounds: 1086, 762, 56, 111
- offsets: 5, 0, 64, 128
-shotAd/shotAd005
- bounds: 714, 1303, 57, 111
- offsets: 3, 0, 64, 128
-shotAd/shotAd006
- bounds: 334, 1755, 56, 110
- offsets: 5, 1, 64, 128
-shotAd/shotAd007
- bounds: 564, 1941, 57, 105
- offsets: 6, 6, 64, 128
-shotAd/shotAd008
- bounds: 1217, 1327, 62, 97
- offsets: 0, 14, 64, 128
-shotAd/shotAd009
- bounds: 1927, 1329, 55, 90
- offsets: 5, 21, 64, 128
-shotBa/shotBa000
- bounds: 927, 1148, 69, 93
- offsets: 18, 11, 128, 128
-shotBa/shotBa001
- bounds: 1872, 736, 69, 69
- offsets: 18, 11, 128, 128
-shotBa/shotBa002
- bounds: 818, 1520, 71, 61
- offsets: 17, 11, 128, 128
-shotBa/shotBa003
- bounds: 1779, 406, 65, 65
- offsets: 17, 11, 128, 128
-shotBa/shotBa004
- bounds: 771, 1342, 78, 72
- offsets: 13, 11, 128, 128
-shotBa/shotBa005
- bounds: 1368, 1563, 77, 77
- offsets: 16, 12, 128, 128
-shotBa/shotBa006
- bounds: 1024, 1058, 62, 87
- offsets: 26, 12, 128, 128
-shotBa/shotBa007
- bounds: 1024, 960, 62, 98
- offsets: 35, 12, 128, 128
-shotBa/shotBa008
- bounds: 1093, 1848, 57, 101
- offsets: 39, 11, 128, 128
-shotBa/shotBa009
- bounds: 1173, 1441, 55, 105
- offsets: 41, 11, 128, 128
-shotBa/shotBa010
- bounds: 460, 1941, 53, 106
- offsets: 41, 11, 128, 128
-shotBa/shotBa011
- bounds: 1126, 1442, 47, 108
- offsets: 38, 11, 128, 128
-shotBa/shotBa012
- bounds: 1678, 1563, 50, 103
- offsets: 37, 11, 128, 128
-shotBa/shotBa013
- bounds: 1399, 1737, 51, 104
- offsets: 37, 11, 128, 128
-shotBa/shotBa014
- bounds: 1606, 1278, 55, 105
- offsets: 31, 11, 128, 128
-shotBb/shotBb000
- bounds: 1532, 794, 55, 83
- offsets: 36, 30, 128, 128
-shotBb/shotBb001
- bounds: 1359, 1351, 65, 72
- offsets: 28, 35, 128, 128
-shotBb/shotBb002
- bounds: 776, 1791, 61, 70
- offsets: 30, 31, 128, 128
-shotBb/shotBb003
- bounds: 1494, 1665, 62, 61
- offsets: 31, 39, 128, 128
-shotBb/shotBb004
- bounds: 1734, 1975, 62, 61
- offsets: 28, 39, 128, 128
-shotBb/shotBb005
- bounds: 910, 1086, 60, 62
- offsets: 29, 42, 128, 128
-shotBb/shotBb006
- bounds: 1657, 1909, 58, 70
- offsets: 32, 37, 128, 128
-shotCa/shotCa000
- bounds: 1228, 1424, 51, 105
- offsets: 35, 11, 128, 128
-shotCa/shotCa001
- bounds: 837, 1685, 53, 105
- offsets: 33, 11, 128, 128
-shotCa/shotCa002
- bounds: 721, 1940, 50, 105
- offsets: 34, 11, 128, 128
-shotCa/shotCa003
- bounds: 943, 1894, 50, 105
- offsets: 34, 11, 128, 128
-shotCa/shotCa004
- bounds: 1057, 1640, 51, 105
- offsets: 35, 11, 128, 128
-shotCa/shotCa005
- bounds: 960, 1773, 51, 105
- offsets: 35, 11, 128, 128
-shotCb/shotCb000
- bounds: 1450, 1749, 54, 80
- offsets: 18, 19, 128, 128
-shotCb/shotCb001
- bounds: 577, 1860, 63, 81
- offsets: 13, 19, 128, 128
-shotCb/shotCb002
- bounds: 408, 1862, 63, 79
- offsets: 19, 19, 128, 128
-shotCb/shotCb003
- bounds: 1197, 1253, 82, 74
- offsets: 27, 19, 128, 128
-shotCb/shotCb004
- bounds: 665, 1681, 71, 76
- offsets: 27, 19, 128, 128
-shotCb/shotCb005
- bounds: 1588, 768, 67, 76
- offsets: 28, 19, 128, 128
-shotCb/shotCb006
- bounds: 1942, 1595, 57, 78
- offsets: 27, 19, 128, 128
-shotCb/shotCb007
- bounds: 1663, 1829, 52, 80
- offsets: 23, 19, 128, 128
-shotCb/shotCb008
- bounds: 526, 1862, 51, 79
- offsets: 23, 19, 128, 128
-shotDa/shotDa000
- bounds: 1449, 692, 83, 81
- offsets: 31, 0, 116, 104
-shotDa/shotDa001
- bounds: 1368, 692, 81, 84
- offsets: 30, 0, 116, 104
-shotDa/shotDa002
- bounds: 1408, 776, 73, 93
- offsets: 22, 0, 116, 104
-sit/sit000
- bounds: 1177, 1737, 54, 97
- offsets: 0, 1, 54, 106
-sit/sit001
- bounds: 1940, 1508, 54, 87
- offsets: 0, 1, 54, 106
-sit/sit002
- bounds: 1712, 1717, 54, 78
- offsets: 0, 2, 54, 106
-sit/sit003
- bounds: 1715, 1795, 51, 79
- offsets: 0, 1, 54, 106
-sit/sit004
- bounds: 1895, 1631, 47, 84
- offsets: 2, 2, 54, 106
-sit/sit005
- bounds: 1893, 1536, 47, 95
- offsets: 2, 1, 54, 106
-sit/sit006
- bounds: 1676, 1459, 48, 104
- offsets: 0, 1, 54, 106
-spellAa/spellAa000
- bounds: 1941, 715, 58, 98
- offsets: 19, 0, 80, 98
-spellAa/spellAa001
- bounds: 890, 1563, 64, 98
- offsets: 15, 0, 80, 98
-spellAa/spellAa002
- bounds: 1059, 1241, 69, 98
- offsets: 11, 0, 80, 98
-spellAa/spellAa003
- bounds: 1225, 1067, 68, 98
- offsets: 12, 0, 80, 98
-spellAa/spellAa004
- bounds: 1654, 944, 55, 98
- offsets: 19, 0, 80, 98
-spellAa/spellAa005
- bounds: 1260, 1841, 62, 95
- offsets: 10, 0, 80, 98
-spellAa/spellAa006
- bounds: 1606, 1475, 70, 90
- offsets: 0, 0, 80, 98
-spellAa/spellAa007
- bounds: 372, 1600, 70, 91
- offsets: 0, 0, 80, 98
-spellAa/spellAa008
- bounds: 1128, 1241, 69, 95
- offsets: 3, 0, 80, 98
-spellAa/spellAa009
- bounds: 1755, 1047, 55, 98
- offsets: 13, 0, 80, 98
-spellAa/spellAa010
- bounds: 1858, 1047, 52, 98
- offsets: 24, 0, 80, 98
-spellAa/spellAa011
- bounds: 1240, 1546, 70, 91
- offsets: 0, 0, 80, 98
-spellBa/spellBa000
- bounds: 788, 1687, 49, 104
- offsets: 41, 11, 128, 128
-spellBa/spellBa001
- bounds: 1283, 1936, 57, 100
- offsets: 35, 12, 128, 128
-spellBa/spellBa002
- bounds: 1778, 775, 63, 89
- offsets: 30, 12, 128, 128
-spellBa/spellBa003
- bounds: 1479, 1282, 62, 84
- offsets: 36, 12, 128, 128
-spellBa/spellBa004
- bounds: 1864, 1145, 53, 99
- offsets: 38, 12, 128, 128
-spellBa/spellBa005
- bounds: 1300, 561, 70, 107
- offsets: 30, 12, 128, 128
-spellBa/spellBa006
- bounds: 269, 1941, 68, 106
- offsets: 30, 12, 128, 128
-spellBa/spellBa007
- bounds: 337, 1941, 66, 106
- offsets: 30, 12, 128, 128
-spellBa/spellBa008
- bounds: 1000, 1539, 60, 101
- offsets: 35, 13, 128, 128
-spellBa/spellBa009
- bounds: 736, 1681, 52, 104
- offsets: 37, 11, 128, 128
-spellBulletAa/spellBulletAa000
- bounds: 512, 0, 256, 168
-spellBulletAa/spellBulletAa001
- bounds: 128, 1600, 128, 128
-spellBulletAa/spellBulletAa002
- bounds: 256, 1344, 128, 128
-spellBulletAa/spellBulletAa003
- bounds: 384, 1088, 128, 128
-spellBulletAa/spellBulletAa004
- bounds: 512, 1064, 128, 128
-spellBulletBa/spellBulletBa000
- bounds: 640, 808, 128, 128
-spellBulletCa/spellBulletCa000
- bounds: 256, 192, 128, 256
-spellBulletCa/spellBulletCa001
- bounds: 0, 704, 128, 256
-spellBulletCa/spellBulletCa002
- bounds: 128, 448, 128, 256
-spellBulletCa/spellBulletCa003
- bounds: 384, 192, 128, 256
-spellBulletCa/spellBulletCa004
- bounds: 512, 168, 128, 256
-spellBulletCa/spellBulletCa005
- bounds: 0, 960, 128, 256
-spellBulletCa/spellBulletCa006
- bounds: 128, 704, 128, 256
-spellBulletCa/spellBulletCa007
- bounds: 256, 448, 128, 256
-spellBulletCa/spellBulletCa008
- bounds: 640, 168, 128, 256
-spellBulletCa/spellBulletCa009
- bounds: 768, 0, 128, 256
-spellBulletCa/spellBulletCa010
- bounds: 0, 1216, 128, 256
-spellBulletCa/spellBulletCa011
- bounds: 128, 960, 128, 256
-spellBulletCa/spellBulletCa012
- bounds: 256, 704, 128, 256
-spellBulletCa/spellBulletCa013
- bounds: 384, 448, 128, 256
-spellBulletCa/spellBulletCa014
- bounds: 512, 424, 128, 256
-spellBulletCa/spellBulletCa015
- bounds: 896, 0, 128, 256
-spellBulletCa/spellBulletCa016
- bounds: 0, 1472, 128, 256
-spellBulletCa/spellBulletCa017
- bounds: 128, 1216, 128, 256
-spellBulletCa/spellBulletCa018
- bounds: 256, 960, 128, 256
-spellBulletCa/spellBulletCa019
- bounds: 384, 704, 128, 256
-spellBulletCa/spellBulletCa020
- bounds: 512, 680, 128, 256
-spellBulletCa/spellBulletCa021
- bounds: 640, 424, 128, 256
-spellBulletCa/spellBulletCa022
- bounds: 768, 256, 128, 256
-spellBulletCa/spellBulletCa023
- bounds: 1024, 0, 128, 256
-spellBulletCa/spellBulletCa024
- bounds: 0, 1728, 128, 256
-spellBulletDa/spellBulletDa000
- bounds: 768, 640, 128, 128
-spellBulletDa/spellBulletDa001
- bounds: 896, 576, 128, 128
-spellBulletEa/spellBulletEa000
- bounds: 896, 416, 256, 32
-spellBulletFa/spellBulletFa000
- bounds: 0, 0, 512, 128
-spellBulletFb/spellBulletFb000
- bounds: 1024, 448, 128, 128
-spellCa/spellCa000
- bounds: 1595, 844, 59, 97
- offsets: 26, 0, 97, 103
-spellCa/spellCa001
- bounds: 640, 1855, 63, 86
- offsets: 23, 0, 97, 103
-spellCa/spellCa002
- bounds: 705, 1785, 71, 71
- offsets: 19, 0, 97, 103
-spellCa/spellCa003
- bounds: 748, 1510, 70, 73
- offsets: 16, 0, 97, 103
-spellCa/spellCa004
- bounds: 703, 1856, 63, 84
- offsets: 20, 0, 97, 103
-spellCa/spellCa005
- bounds: 1011, 1745, 62, 96
- offsets: 15, 0, 97, 103
-spellCa/spellCa006
- bounds: 1322, 1841, 62, 95
- offsets: 14, 0, 97, 103
-spellCa/spellCa007
- bounds: 1167, 1642, 64, 95
- offsets: 13, 0, 97, 103
-spellCa/spellCa008
- bounds: 1541, 1470, 65, 95
- offsets: 13, 0, 97, 103
-spellCall/spellCall000
- bounds: 1810, 1047, 48, 98
- offsets: 32, 0, 80, 98
-spellCall/spellCall001
- bounds: 1073, 1745, 54, 103
- offsets: 41, 11, 128, 128
-spellCall/spellCall002
- bounds: 1479, 1178, 59, 104
- offsets: 39, 11, 128, 128
-spellCall/spellCall003
- bounds: 853, 1241, 77, 104
- offsets: 20, 11, 128, 128
-spellCall/spellCall004
- bounds: 910, 983, 66, 103
- offsets: 33, 11, 128, 128
-spellCall/spellCall005
- bounds: 1305, 668, 63, 108
- offsets: 32, 11, 128, 128
-spellCall/spellCall006
- bounds: 646, 1182, 68, 116
- offsets: 28, 11, 128, 128
-spellCall/spellCall007
- bounds: 509, 1326, 68, 116
- offsets: 27, 11, 128, 128
-spellCall/spellCall008
- bounds: 647, 1298, 67, 116
- offsets: 27, 11, 128, 128
-spellCall/spellCall009
- bounds: 1390, 1935, 55, 101
- offsets: 39, 11, 128, 128
-spellCall/spellCall010
- bounds: 1346, 1737, 53, 104
- offsets: 46, 11, 128, 128
-spellCall/spellCall011
- bounds: 1707, 1042, 48, 103
- offsets: 43, 11, 128, 128
-spellCall/spellCall012
- bounds: 1494, 1468, 47, 105
- offsets: 40, 11, 128, 128
-spellDa/spellDa000
- bounds: 1789, 1551, 52, 100
- offsets: 12, 0, 72, 100
-spellDa/spellDa001
- bounds: 1813, 1145, 51, 100
- offsets: 12, 0, 72, 100
-spellDa/spellDa002
- bounds: 1599, 941, 55, 99
- offsets: 13, 0, 72, 100
-spellDa/spellDa003
- bounds: 1293, 1067, 65, 100
- offsets: 7, 0, 72, 100
-spellDa/spellDa004
- bounds: 128, 1948, 72, 99
- offsets: 0, 0, 72, 100
-spellDa/spellDa005
- bounds: 1154, 970, 69, 99
- offsets: 3, 0, 72, 100
-spellDa/spellDa006
- bounds: 1223, 968, 69, 99
- offsets: 3, 0, 72, 100
-spellDa/spellDa007
- bounds: 883, 1894, 60, 100
- offsets: 11, 0, 72, 100
-spellDa/spellDa008
- bounds: 1841, 1545, 52, 100
- offsets: 12, 0, 72, 100
-spellEa/spellEa000
- bounds: 1059, 1339, 63, 103
- offsets: 1, 0, 85, 103
-spellEa/spellEa001
- bounds: 1482, 1366, 59, 102
- offsets: 3, 0, 85, 103
-spellEa/spellEa002
- bounds: 1284, 1637, 57, 102
- offsets: 5, 0, 85, 103
-spellEa/spellEa003
- bounds: 1359, 1152, 63, 103
- offsets: 6, 0, 85, 103
-spellEa/spellEa004
- bounds: 1153, 867, 69, 103
- offsets: 9, 0, 85, 103
-spellEa/spellEa005
- bounds: 1222, 866, 70, 102
- offsets: 10, 0, 85, 103
-spellEa/spellEa006
- bounds: 1872, 438, 69, 101
- offsets: 11, 0, 85, 103
-spellEa/spellEa007
- bounds: 1227, 583, 73, 94
- offsets: 10, 0, 85, 103
-spellEa/spellEa008
- bounds: 1712, 681, 75, 93
- offsets: 10, 0, 85, 103
-spellEa/spellEa009
- bounds: 1787, 683, 75, 92
- offsets: 10, 0, 85, 103
-spellEa/spellEa010
- bounds: 1067, 1147, 72, 94
- offsets: 10, 0, 85, 103
-spellEa/spellEa011
- bounds: 1279, 1399, 66, 97
- offsets: 11, 0, 85, 103
-spellEa/spellEa012
- bounds: 1201, 1839, 59, 99
- offsets: 12, 0, 85, 103
-spellFa/spellFa000
- bounds: 1877, 1341, 50, 98
- offsets: 11, 0, 61, 98
-spellFa/spellFa001
- bounds: 1177, 1949, 56, 98
- offsets: 5, 0, 61, 98
-spellFa/spellFa002
- bounds: 1771, 864, 61, 92
- offsets: 0, 0, 61, 98
-spellFa/spellFa003
- bounds: 1709, 945, 61, 92
- offsets: 0, 0, 61, 98
-spellFa/spellFa004
- bounds: 1831, 956, 61, 91
- offsets: 0, 0, 61, 98
-spellFa/spellFa005
- bounds: 1832, 864, 61, 91
- offsets: 0, 0, 61, 98
-spellFa/spellFa006
- bounds: 1728, 1551, 61, 92
- offsets: 0, 0, 61, 98
-spellGa/spellGa000
- bounds: 1707, 1145, 53, 102
- offsets: 20, 0, 73, 104
-spellGa/spellGa001
- bounds: 1108, 1642, 59, 101
- offsets: 14, 0, 73, 104
-spellGa/spellGa002
- bounds: 1481, 975, 61, 100
- offsets: 12, 0, 73, 104
-spellGa/spellGa003
- bounds: 930, 1241, 66, 102
- offsets: 5, 0, 73, 104
-spellGa/spellGa004
- bounds: 404, 1454, 73, 101
- offsets: 0, 0, 73, 104
-spellGa/spellGa005
- bounds: 1761, 305, 73, 101
- offsets: 0, 0, 73, 104
-spellGa/spellGa006
- bounds: 577, 1443, 70, 101
- offsets: 0, 0, 73, 104
-spellGa/spellGa007
- bounds: 996, 1241, 63, 102
- offsets: 5, 0, 73, 104
-spellGa/spellGa008
- bounds: 1656, 666, 56, 103
- offsets: 16, 0, 73, 104
-stand/stand000
- bounds: 1127, 1743, 50, 105
- offsets: 0, 11, 54, 128
-stand/stand001
- bounds: 1004, 1640, 53, 105
- offsets: 1, 11, 54, 128
-stand/stand002
- bounds: 993, 1878, 50, 105
- offsets: 4, 11, 54, 128
-stand/stand003
- bounds: 1043, 1878, 50, 105
- offsets: 4, 11, 54, 128
-stand/stand004
- bounds: 1233, 1938, 50, 105
- offsets: 4, 11, 54, 128
-stand/stand005
- bounds: 1340, 1936, 50, 105
- offsets: 4, 11, 54, 128
-stand/stand006
- bounds: 1445, 1935, 50, 105
- offsets: 3, 11, 54, 128
-stand/stand007
- bounds: 1495, 1935, 47, 105
- offsets: 3, 11, 54, 128
-stand/stand008
- bounds: 1661, 1249, 46, 105
- offsets: 3, 11, 54, 128
-stand/stand009
- bounds: 1606, 1040, 48, 105
- offsets: 1, 11, 54, 128
-stand/stand010
- bounds: 1950, 96, 49, 105
- offsets: 0, 11, 54, 128
-stand/stand011
- bounds: 1950, 201, 49, 105
- offsets: 0, 11, 54, 128
-stand/stand012
- bounds: 1950, 306, 49, 105
- offsets: 0, 11, 54, 128
-stand/stand013
- bounds: 1950, 411, 49, 105
- offsets: 0, 11, 54, 128
-stand/stand014
- bounds: 1658, 1144, 49, 105
- offsets: 0, 11, 54, 128
-stand/stand015
- bounds: 1669, 1354, 49, 105
- offsets: 0, 11, 54, 128
-standUp/standUp000
- bounds: 1305, 776, 103, 43
- offsets: 15, 10, 128, 128
-standUp/standUp001
- bounds: 1857, 206, 93, 62
- offsets: 17, 11, 128, 128
-standUp/standUp002
- bounds: 890, 1821, 70, 73
- offsets: 26, 12, 128, 128
-standUp/standUp003
- bounds: 1893, 805, 47, 86
- offsets: 40, 11, 128, 128
-standUp/standUp004
- bounds: 1883, 1439, 46, 97
- offsets: 39, 11, 128, 128
-standUp/standUp005
- bounds: 477, 1465, 42, 104
- offsets: 42, 11, 128, 128
-standUpBack/standUpBack000
- bounds: 1370, 598, 123, 56
-standUpBack/standUpBack001
- bounds: 1493, 599, 122, 55
-standUpFront/standUpFront000
- bounds: 768, 931, 128, 56
-standUpFront/standUpFront001
- bounds: 647, 1414, 128, 55
-tailAa/tailAa000
- bounds: 1862, 683, 10, 128
-walkFront/walkFront000
- bounds: 1813, 1245, 53, 100
- offsets: 0, 11, 53, 128
-walkFront/walkFront001
- bounds: 1824, 1345, 53, 100
- offsets: 0, 12, 53, 128
-walkFront/walkFront002
- bounds: 1707, 1247, 53, 102
- offsets: 0, 11, 53, 128
-walkFront/walkFront003
- bounds: 1718, 1349, 53, 101
- offsets: 0, 12, 53, 128
-walkFront/walkFront004
- bounds: 1771, 1349, 53, 101
- offsets: 0, 11, 53, 128
-walkFront/walkFront005
- bounds: 1830, 1445, 53, 100
- offsets: 0, 11, 53, 128
-walkFront/walkFront006
- bounds: 1724, 1450, 53, 101
- offsets: 0, 11, 53, 128
-walkFront/walkFront007
- bounds: 1760, 1145, 53, 102
- offsets: 0, 11, 53, 128
-walkFront/walkFront008
- bounds: 1760, 1247, 53, 102
- offsets: 0, 11, 53, 128
-walkFront/walkFront009
- bounds: 1777, 1450, 53, 101
- offsets: 0, 11, 53, 128
diff --git a/src/main/resources/character/alice/精灵1.2.png b/src/main/resources/character/alice/精灵1.2.png
deleted file mode 100644
index 0574321..0000000
Binary files a/src/main/resources/character/alice/精灵1.2.png and /dev/null differ
diff --git a/target/classes/character/alice/alice.atlas b/target/classes/character/alice/alice.atlas
new file mode 100644
index 0000000..97a237f
--- /dev/null
+++ b/target/classes/character/alice/alice.atlas
@@ -0,0 +1,1400 @@
+alice.png
+size: 1952, 1909
+format: RGBA8888
+filter: Linear, Linear
+repeat: none
+pma: false
+alpha/alpha000
+ bounds: 0, 192, 256, 256
+attackAa/attackAa000
+ bounds: 592, 1638, 51, 93
+ offsets: 34, 17, 128, 128
+attackAa/attackAa001
+ bounds: 1444, 414, 53, 90
+ offsets: 26, 17, 128, 128
+attackAa/attackAa002
+ bounds: 720, 1230, 79, 89
+ offsets: 28, 17, 128, 128
+attackAa/attackAa003
+ bounds: 256, 1724, 87, 87
+ offsets: 30, 17, 128, 128
+attackAa/attackAa004
+ bounds: 1853, 256, 83, 88
+ offsets: 28, 17, 128, 128
+attackAa/attackAa005
+ bounds: 1516, 489, 59, 92
+ offsets: 33, 17, 128, 128
+attackAa/attackAa006
+ bounds: 1639, 670, 48, 94
+ offsets: 40, 17, 128, 128
+attackAb/attackAb000
+ bounds: 1335, 815, 49, 69
+ offsets: 36, 16, 128, 128
+attackAb/attackAb001
+ bounds: 976, 1421, 56, 57
+ offsets: 30, 16, 128, 128
+attackAb/attackAb002
+ bounds: 635, 1469, 69, 59
+ offsets: 24, 16, 128, 128
+attackAb/attackAb003
+ bounds: 376, 1668, 89, 59
+ offsets: 26, 15, 128, 128
+attackAb/attackAb004
+ bounds: 1372, 503, 72, 61
+ offsets: 21, 16, 128, 128
+attackAb/attackAb005
+ bounds: 704, 1469, 62, 68
+ offsets: 29, 16, 128, 128
+attackAb/attackAb006
+ bounds: 948, 1579, 51, 69
+ offsets: 39, 16, 128, 128
+attackAc/attackAc000
+ bounds: 1153, 1518, 47, 71
+ offsets: 39, 38, 128, 128
+attackAc/attackAc001
+ bounds: 1639, 764, 49, 71
+ offsets: 36, 35, 128, 128
+attackAc/attackAc002
+ bounds: 871, 1410, 58, 72
+ offsets: 29, 33, 128, 128
+attackAc/attackAc003
+ bounds: 1056, 856, 60, 70
+ offsets: 28, 34, 128, 128
+attackAc/attackAc004
+ bounds: 640, 1155, 97, 60
+ offsets: 28, 40, 128, 128
+attackAc/attackAc005
+ bounds: 1684, 361, 93, 63
+ offsets: 29, 39, 128, 128
+attackAc/attackAc006
+ bounds: 1777, 361, 86, 68
+ offsets: 33, 36, 128, 128
+attackAc/attackAc007
+ bounds: 1515, 581, 70, 74
+ offsets: 36, 33, 128, 128
+attackAc/attackAc008
+ bounds: 343, 1727, 58, 84
+ offsets: 39, 25, 128, 128
+attackAc/attackAc009
+ bounds: 1384, 804, 51, 87
+ offsets: 41, 23, 128, 128
+attackAc/attackAc010
+ bounds: 1435, 804, 49, 92
+ offsets: 38, 17, 128, 128
+attackAd/attackAd000
+ bounds: 1213, 547, 45, 96
+ offsets: 39, 15, 128, 128
+attackAd/attackAd001
+ bounds: 972, 925, 47, 94
+ offsets: 39, 15, 128, 128
+attackAd/attackAd002
+ bounds: 1085, 926, 60, 94
+ offsets: 45, 15, 128, 128
+attackAd/attackAd003
+ bounds: 799, 1230, 74, 93
+ offsets: 36, 15, 128, 128
+attackAd/attackAd004
+ bounds: 1863, 344, 75, 92
+ offsets: 35, 15, 128, 128
+attackAd/attackAd005
+ bounds: 1367, 607, 67, 93
+ offsets: 37, 15, 128, 128
+attackAd/attackAd006
+ bounds: 949, 1073, 50, 96
+ offsets: 45, 15, 128, 128
+attackAd/attackAd007
+ bounds: 1754, 763, 43, 96
+ offsets: 47, 15, 128, 128
+attackAd/attackAd008
+ bounds: 1145, 924, 39, 96
+ offsets: 45, 15, 128, 128
+attackBc/attackBc009
+ bounds: 1432, 896, 60, 88
+ offsets: 32, 15, 256, 128
+attackBc/attackBc010
+ bounds: 1491, 986, 48, 92
+ offsets: 33, 15, 256, 128
+attackBc/attackBc011
+ bounds: 1492, 891, 41, 95
+ offsets: 31, 15, 256, 128
+attackBc/attackBc012
+ bounds: 1652, 878, 39, 96
+ offsets: 30, 15, 256, 128
+attackBe/attackBe000
+ bounds: 465, 1660, 48, 67
+ offsets: 14, 18, 64, 128
+attackBf/attackBf000
+ bounds: 1754, 859, 47, 96
+ offsets: 22, 15, 256, 128
+attackBf/attackBf001
+ bounds: 1584, 744, 55, 91
+ offsets: 25, 17, 256, 128
+attackBf/attackBf002
+ bounds: 1754, 955, 55, 88
+ offsets: 32, 17, 256, 128
+attackBf/attackBf003
+ bounds: 118, 1824, 80, 85
+ offsets: 29, 15, 256, 128
+attackBf/attackBf004
+ bounds: 513, 1638, 79, 86
+ offsets: 28, 15, 256, 128
+attackBf/attackBf005
+ bounds: 1753, 502, 68, 87
+ offsets: 29, 15, 256, 128
+attackCa/attackCa000
+ bounds: 692, 1323, 50, 93
+ offsets: 16, 2, 116, 104
+attackCa/attackCa001
+ bounds: 1043, 1114, 58, 91
+ offsets: 11, 2, 116, 104
+attackCa/attackCa002
+ bounds: 1590, 1079, 57, 90
+ offsets: 10, 2, 116, 104
+attackCa/attackCa003
+ bounds: 1588, 1169, 57, 90
+ offsets: 10, 2, 116, 104
+attackCa/attackCa004
+ bounds: 1645, 1169, 57, 90
+ offsets: 10, 2, 116, 104
+attackCa/attackCa005
+ bounds: 1783, 1044, 57, 90
+ offsets: 10, 2, 116, 104
+attackCa/attackCa006
+ bounds: 1688, 763, 66, 90
+ offsets: 1, 2, 116, 104
+attackCa/attackCa007
+ bounds: 1862, 792, 65, 90
+ offsets: 2, 2, 116, 104
+attackCa/attackCa008
+ bounds: 1474, 1078, 58, 88
+ offsets: 22, 2, 116, 104
+attackCa/attackCa009
+ bounds: 1684, 590, 72, 79
+ offsets: 24, 4, 116, 104
+attackCa/attackCa010
+ bounds: 1760, 429, 75, 73
+ offsets: 35, 4, 116, 104
+attackCa/attackCa011
+ bounds: 1684, 424, 76, 76
+ offsets: 34, 4, 116, 104
+attackCa/attackCa012
+ bounds: 198, 1824, 68, 85
+ offsets: 26, 4, 116, 104
+attackCa/attackCa013
+ bounds: 1414, 1075, 60, 88
+ offsets: 28, 3, 116, 104
+attackCa/attackCa014
+ bounds: 1158, 1020, 50, 93
+ offsets: 28, 3, 116, 104
+attackCa/attackCa015
+ bounds: 1753, 669, 43, 94
+ offsets: 27, 3, 116, 104
+attackCa/attackCa016
+ bounds: 635, 1811, 44, 97
+ offsets: 22, 1, 116, 104
+BulletAa/BulletAa000
+ bounds: 1688, 1037, 32, 32
+BulletAa/BulletAa001
+ bounds: 1043, 1205, 32, 32
+BulletAa/BulletAa002
+ bounds: 643, 1697, 32, 32
+BulletAa/BulletAa003
+ bounds: 1506, 1876, 32, 32
+BulletAa/BulletAa004
+ bounds: 1538, 1876, 32, 32
+BulletAa/BulletAa005
+ bounds: 1075, 1205, 32, 32
+BulletAa/BulletAa006
+ bounds: 1901, 1816, 32, 32
+BulletAb/BulletAb000
+ bounds: 628, 1352, 64, 64
+BulletAb/BulletAb001
+ bounds: 703, 1537, 64, 64
+BulletAb/BulletAb002
+ bounds: 940, 1648, 64, 64
+BulletAb/BulletAb003
+ bounds: 916, 1169, 64, 64
+BulletAb/BulletAb004
+ bounds: 1089, 1518, 64, 64
+BulletAb/BulletAb005
+ bounds: 1425, 1343, 64, 64
+BulletAb/BulletAb006
+ bounds: 1489, 1342, 64, 64
+BulletAc/BulletAc000
+ bounds: 1553, 1346, 64, 64
+BulletAc/BulletAc001
+ bounds: 1617, 1346, 64, 64
+BulletAc/BulletAc002
+ bounds: 1681, 1346, 64, 64
+BulletAc/BulletAc003
+ bounds: 1745, 1346, 64, 64
+BulletAc/BulletAc004
+ bounds: 1307, 1607, 64, 64
+BulletAc/BulletAc005
+ bounds: 1245, 1674, 64, 64
+BulletAc/BulletAc006
+ bounds: 1309, 1671, 64, 64
+BulletBa/BulletBa000
+ bounds: 0, 128, 512, 64
+BulletCa/BulletCa000
+ bounds: 256, 1216, 128, 128
+BulletCa/BulletCa001
+ bounds: 384, 960, 128, 128
+BulletCa/BulletCa002
+ bounds: 512, 936, 128, 128
+BulletDa/BulletDa000
+ bounds: 866, 1710, 64, 64
+BulletDa/BulletDa001
+ bounds: 930, 1712, 64, 64
+BulletDb/BulletDb005
+ bounds: 1920, 0, 32, 128
+BulletDb/BulletDb006
+ bounds: 1920, 128, 32, 128
+BulletDb/BulletDb007
+ bounds: 1370, 279, 32, 128
+BulletDb/BulletDb008
+ bounds: 1620, 271, 32, 128
+BulletDb/BulletDb009
+ bounds: 344, 1594, 32, 128
+BulletDb/BulletDb010
+ bounds: 874, 936, 32, 128
+BulletDb/BulletDb011
+ bounds: 1652, 271, 32, 128
+BulletDb/BulletDb012
+ bounds: 628, 1224, 32, 128
+BulletDb/BulletDb013
+ bounds: 1024, 758, 32, 128
+BulletDb/BulletDb014
+ bounds: 1116, 748, 32, 128
+BulletDb/BulletDb015
+ bounds: 1148, 742, 32, 128
+BulletDb/BulletDb016
+ bounds: 1239, 743, 32, 128
+BulletDb/BulletDb017
+ bounds: 1268, 416, 32, 128
+BulletDb/BulletDb018
+ bounds: 1271, 743, 32, 128
+BulletDb/BulletDb019
+ bounds: 1303, 743, 32, 128
+BulletEa/BulletEa000
+ bounds: 640, 680, 128, 128
+BulletEa/BulletEa001
+ bounds: 768, 512, 128, 128
+BulletEa/BulletEa002
+ bounds: 896, 416, 128, 128
+BulletFa/BulletFa000
+ bounds: 512, 1192, 128, 32
+BulletFa/BulletFa001
+ bounds: 1152, 160, 128, 128
+bulletFb/bulletFb000
+ bounds: 768, 872, 128, 64
+bulletFb/bulletFb001
+ bounds: 1408, 98, 128, 64
+bulletFb/bulletFb002
+ bounds: 1536, 98, 128, 64
+bulletFb/bulletFb003
+ bounds: 1664, 64, 128, 64
+bulletFb/bulletFb004
+ bounds: 1792, 64, 128, 64
+bulletFb/bulletFb005
+ bounds: 1664, 128, 128, 64
+bulletFb/bulletFb006
+ bounds: 1664, 192, 128, 64
+bulletFb/bulletFb007
+ bounds: 1792, 128, 128, 64
+bulletFb/bulletFb008
+ bounds: 1792, 192, 128, 64
+bulletFb/bulletFb009
+ bounds: 756, 1110, 128, 64
+bulletFb/bulletFb010
+ bounds: 1492, 271, 128, 64
+bulletFb/bulletFb011
+ bounds: 1492, 335, 128, 64
+bulletFb/bulletFb012
+ bounds: 384, 1435, 128, 64
+bulletFb/bulletFb013
+ bounds: 372, 1499, 128, 64
+bulletFb/bulletFb014
+ bounds: 500, 1224, 128, 64
+bulletFb/bulletFb015
+ bounds: 500, 1288, 128, 64
+bulletFb/bulletFb016
+ bounds: 500, 1352, 128, 64
+bulletGa/bulletGa000
+ bounds: 0, 1728, 256, 32
+bulletGa/bulletGa001
+ bounds: 896, 256, 256, 32
+bulletGa/bulletGa002
+ bounds: 1152, 0, 256, 32
+bulletGa/bulletGa003
+ bounds: 0, 1760, 256, 32
+bulletGa/bulletGa004
+ bounds: 896, 288, 256, 32
+bulletGa/bulletGa005
+ bounds: 1152, 32, 256, 32
+bulletGa/bulletGa006
+ bounds: 1408, 0, 256, 32
+bulletGa/bulletGa007
+ bounds: 0, 1792, 256, 32
+bulletGa/bulletGa008
+ bounds: 896, 320, 256, 32
+bulletGa/bulletGa009
+ bounds: 1152, 64, 256, 32
+bulletGa/bulletGa010
+ bounds: 1408, 32, 256, 32
+bulletGa/bulletGa011
+ bounds: 1664, 0, 256, 32
+bulletGa/bulletGa012
+ bounds: 896, 352, 256, 32
+bulletGa/bulletGa013
+ bounds: 1152, 96, 256, 32
+bulletGa/bulletGa014
+ bounds: 1408, 64, 256, 32
+bulletGb/bulletGb000
+ bounds: 1664, 32, 256, 32
+crash/crash000
+ bounds: 1639, 399, 45, 95
+ offsets: 41, 16, 128, 128
+crash/crash001
+ bounds: 1159, 1113, 56, 93
+ offsets: 33, 17, 128, 128
+crash/crash002
+ bounds: 1101, 1020, 57, 93
+ offsets: 32, 17, 128, 128
+crash/crash003
+ bounds: 1639, 494, 45, 95
+ offsets: 41, 16, 128, 128
+dashBack/dashBack000
+ bounds: 1359, 1159, 55, 85
+ offsets: 33, 26, 128, 128
+dashBack/dashBack001
+ bounds: 401, 1727, 55, 84
+ offsets: 38, 26, 128, 128
+dashBack/dashBack002
+ bounds: 1300, 970, 65, 88
+ offsets: 34, 21, 128, 128
+dashBack/dashBack003
+ bounds: 1796, 674, 66, 88
+ offsets: 33, 21, 128, 128
+dashFront/dashFront000
+ bounds: 821, 1525, 53, 86
+ offsets: 51, 15, 128, 128
+dashFront/dashFront001
+ bounds: 509, 1731, 66, 80
+ offsets: 44, 15, 128, 128
+dashFront/dashFront002
+ bounds: 1862, 882, 72, 70
+ offsets: 42, 15, 128, 128
+dashFront/dashFront003
+ bounds: 799, 1410, 72, 69
+ offsets: 42, 15, 128, 128
+dashFront/dashFront004
+ bounds: 1639, 589, 45, 81
+ offsets: 51, 17, 128, 128
+dashFront/dashFront005
+ bounds: 1200, 1518, 44, 85
+ offsets: 51, 15, 128, 128
+dashFront/dashFront006
+ bounds: 1481, 1407, 41, 89
+ offsets: 49, 15, 128, 128
+dashFrontAir/dashFrontAir000
+ bounds: 1702, 1166, 51, 93
+ offsets: 42, 11, 128, 128
+down/down000
+ bounds: 928, 1323, 48, 85
+ offsets: 40, 8, 128, 128
+down/down001
+ bounds: 694, 1745, 53, 66
+ offsets: 34, 8, 128, 128
+down/down002
+ bounds: 1444, 504, 72, 60
+ offsets: 28, 8, 128, 128
+down/down003
+ bounds: 1414, 1163, 58, 86
+ offsets: 28, 6, 128, 128
+down/down004
+ bounds: 1840, 1044, 51, 90
+ offsets: 36, 21, 128, 128
+down/down005
+ bounds: 874, 1579, 74, 65
+ offsets: 29, 23, 128, 128
+down/down006
+ bounds: 1402, 372, 87, 42
+ offsets: 24, 17, 128, 128
+down/down007
+ bounds: 1152, 517, 97, 30
+ offsets: 19, 14, 128, 128
+down/down008
+ bounds: 920, 860, 96, 30
+ offsets: 19, 15, 128, 128
+emotionAa/emotionAa000
+ bounds: 884, 1073, 65, 94
+ offsets: 7, 1, 72, 100
+emotionAa/emotionAa001
+ bounds: 1862, 698, 63, 94
+ offsets: 7, 1, 72, 100
+emotionBa/emotionBa000
+ bounds: 679, 1811, 44, 97
+ offsets: 20, 15, 64, 128
+face/face000
+ bounds: 512, 1416, 120, 56
+ offsets: 3, 8, 160, 64
+Guard/Guard000
+ bounds: 0, 448, 128, 256
+guardBUnder/guardBUnder000
+ bounds: 814, 1841, 49, 68
+ offsets: 35, 15, 128, 128
+guardBUnder/guardBUnder001
+ bounds: 999, 1579, 47, 69
+ offsets: 37, 15, 128, 128
+guardBUpper/guardBUpper000
+ bounds: 1244, 1516, 48, 91
+ offsets: 31, 15, 128, 128
+guardBUpper/guardBUpper001
+ bounds: 1089, 1582, 49, 89
+ offsets: 30, 15, 128, 128
+guardSit/guardSit000
+ bounds: 376, 1563, 86, 105
+ offsets: 39, 22, 128, 128
+guardSit/guardSit001
+ bounds: 1769, 256, 84, 105
+ offsets: 42, 22, 128, 128
+guardUnder/guardUnder000
+ bounds: 1684, 256, 85, 105
+ offsets: 40, 2, 128, 128
+guardUnder/guardUnder001
+ bounds: 1042, 643, 87, 105
+ offsets: 39, 2, 128, 128
+guardUpper/guardUpper000
+ bounds: 1494, 162, 85, 109
+ offsets: 39, 15, 128, 128
+guardUpper/guardUpper001
+ bounds: 1579, 162, 85, 109
+ offsets: 40, 15, 128, 128
+hitAir/hitAir000
+ bounds: 999, 1075, 44, 94
+ offsets: 40, 19, 128, 128
+hitAir/hitAir001
+ bounds: 1572, 1502, 51, 90
+ offsets: 36, 30, 128, 128
+hitAir/hitAir002
+ bounds: 1208, 1028, 72, 74
+ offsets: 24, 35, 128, 128
+hitAir/hitAir003
+ bounds: 1434, 651, 81, 42
+ offsets: 18, 49, 128, 128
+hitAir/hitAir004
+ bounds: 1835, 436, 77, 67
+ offsets: 26, 36, 128, 128
+hitAir/hitAir005
+ bounds: 575, 1731, 64, 80
+ offsets: 30, 26, 128, 128
+hitAir/hitAir006
+ bounds: 494, 1811, 49, 98
+ offsets: 39, 18, 128, 128
+hitAir/hitAir007
+ bounds: 1258, 544, 43, 99
+ offsets: 46, 15, 128, 128
+hitAir/hitAir008
+ bounds: 1588, 980, 42, 99
+ offsets: 43, 15, 128, 128
+hitSit/hitSit000
+ bounds: 967, 1841, 56, 67
+ offsets: 0, 1, 64, 74
+hitSit/hitSit001
+ bounds: 1192, 1675, 53, 69
+ offsets: 6, 1, 64, 74
+hitSit/hitSit002
+ bounds: 1374, 1832, 45, 72
+ offsets: 15, 1, 64, 74
+hitSpin/hitSpin000
+ bounds: 1036, 1237, 44, 88
+ offsets: 11, 17, 64, 128
+hitSpin/hitSpin001
+ bounds: 1372, 414, 72, 89
+ offsets: 22, 17, 128, 128
+hitSpin/hitSpin002
+ bounds: 864, 1323, 64, 87
+ offsets: 0, 17, 64, 128
+hitSpin/hitSpin003
+ bounds: 1691, 947, 63, 90
+ offsets: 0, 17, 64, 128
+hitSpin/hitSpin004
+ bounds: 1144, 1654, 48, 89
+ offsets: 0, 17, 64, 128
+hitSpin/hitSpin005
+ bounds: 1568, 399, 71, 88
+ offsets: 21, 17, 128, 128
+hitUnder/hitUnder000
+ bounds: 456, 1727, 53, 84
+ offsets: 32, 15, 128, 128
+hitUnder/hitUnder001
+ bounds: 1292, 1516, 48, 91
+ offsets: 37, 16, 128, 128
+hitUnder/hitUnder002
+ bounds: 764, 1601, 45, 96
+ offsets: 41, 15, 128, 128
+hitUpper/hitUpper000
+ bounds: 1684, 500, 69, 90
+ offsets: 24, 17, 128, 128
+hitUpper/hitUpper001
+ bounds: 1797, 1134, 56, 91
+ offsets: 33, 17, 128, 128
+hitUpper/hitUpper002
+ bounds: 1891, 1040, 45, 94
+ offsets: 41, 16, 128, 128
+invin/invin000
+ bounds: 632, 1469, 3, 3
+ offsets: 0, 1, 4, 4
+jump/jump000
+ bounds: 1292, 1290, 49, 95
+ offsets: 39, 14, 128, 128
+jump/jump001
+ bounds: 1765, 1602, 46, 91
+ offsets: 40, 18, 128, 128
+jump/jump002
+ bounds: 1336, 1431, 50, 83
+ offsets: 41, 23, 128, 128
+jump/jump003
+ bounds: 1672, 1689, 45, 72
+ offsets: 40, 32, 128, 128
+jump/jump004
+ bounds: 929, 1408, 47, 74
+ offsets: 42, 33, 128, 128
+jump/jump005
+ bounds: 1288, 1431, 48, 85
+ offsets: 41, 27, 128, 128
+jump/jump006
+ bounds: 1043, 1020, 58, 94
+ offsets: 40, 23, 128, 128
+jump/jump007
+ bounds: 1259, 643, 60, 100
+ offsets: 40, 19, 128, 128
+jump/jump008
+ bounds: 1197, 643, 62, 100
+ offsets: 38, 19, 128, 128
+objectAa/objectAa000
+ bounds: 1881, 1770, 33, 46
+objectAa/objectAa001
+ bounds: 1914, 1769, 33, 46
+objectAa/objectAa002
+ bounds: 1835, 1816, 33, 46
+objectAa/objectAa003
+ bounds: 1868, 1816, 33, 46
+objectAb/objectAb000
+ bounds: 1869, 1589, 38, 37
+objectAb/objectAb001
+ bounds: 1107, 1204, 38, 37
+objectAc/objectAc000
+ bounds: 1847, 1770, 34, 46
+ offsets: 7, 0, 41, 46
+objectAc/objectAc001
+ bounds: 1731, 1848, 33, 46
+ offsets: 8, 0, 41, 46
+objectAc/objectAc002
+ bounds: 1324, 1246, 40, 44
+ offsets: 1, 2, 41, 46
+objectAc/objectAc003
+ bounds: 1724, 1760, 41, 44
+ offsets: 0, 2, 41, 46
+objectAd/objectAd000
+ bounds: 1590, 1873, 40, 36
+objectAd/objectAd001
+ bounds: 1016, 886, 40, 37
+objectAd/objectAd002
+ bounds: 1116, 876, 64, 48
+objectAd/objectAd003
+ bounds: 1481, 1591, 64, 48
+objectAd/objectAd004
+ bounds: 1432, 1583, 49, 43
+objectAd/objectAd005
+ bounds: 1423, 1679, 53, 43
+objectAd/objectAd006
+ bounds: 1636, 1842, 49, 43
+objectAd/objectAd007
+ bounds: 1478, 1639, 53, 43
+objectAe/objectAe000
+ bounds: 799, 1479, 71, 46
+objectAe/objectAe001
+ bounds: 1241, 1385, 71, 46
+objectAe/objectAe002
+ bounds: 1280, 1058, 69, 44
+objectAe/objectAe003
+ bounds: 753, 1697, 69, 44
+objectAe/objectAe004
+ bounds: 991, 1020, 52, 37
+objectAe/objectAe005
+ bounds: 1570, 1742, 52, 37
+objectAf/objectAf000
+ bounds: 1532, 1740, 38, 39
+objectAg/objectAg000
+ bounds: 1364, 1244, 46, 46
+objectAg/objectAg001
+ bounds: 1312, 1385, 46, 46
+objectAg/objectAg002
+ bounds: 1685, 1833, 46, 46
+objectAg/objectAg003
+ bounds: 1801, 1770, 46, 46
+objectAg/objectAg004
+ bounds: 866, 1774, 64, 63
+objectAg/objectAg005
+ bounds: 930, 1776, 64, 62
+objectAh/objectAh000
+ bounds: 1362, 564, 86, 43
+objectAh/objectAh001
+ bounds: 1584, 835, 86, 43
+objectAi/objectAi000
+ bounds: 1765, 1765, 36, 44
+objectAi/objectAi001
+ bounds: 1731, 1804, 34, 44
+objectAj/objectAj000
+ bounds: 1830, 1862, 32, 43
+objectAj/objectAj001
+ bounds: 1764, 1851, 33, 43
+objectAj/objectAj002
+ bounds: 1862, 1862, 32, 43
+objectAj/objectAj003
+ bounds: 1797, 1858, 33, 43
+objectAk/objectAk000
+ bounds: 1765, 1809, 35, 42
+objectAk/objectAk001
+ bounds: 1800, 1816, 35, 42
+objectAl/objectAl000
+ bounds: 706, 1696, 47, 49
+objectAl/objectAl001
+ bounds: 865, 1174, 51, 56
+objectAl/objectAl002
+ bounds: 749, 1414, 50, 55
+objectAl/objectAl003
+ bounds: 1122, 1840, 46, 55
+objectAl/objectAl004
+ bounds: 1897, 1710, 46, 59
+objectAl/objectAl005
+ bounds: 1080, 1841, 42, 59
+objectAm/objectAm000
+ bounds: 1324, 1199, 35, 47
+objectAm/objectAm001
+ bounds: 766, 1469, 33, 48
+objectAn/objectAn000
+ bounds: 1434, 693, 45, 7
+objectBa/objectBa000
+ bounds: 1408, 96, 256, 2
+objectBa/objectBa001
+ bounds: 896, 384, 256, 32
+objectCa/objectCa000
+ bounds: 384, 1337, 116, 98
+objectCa/objectCa001
+ bounds: 1402, 270, 90, 102
+objectCa/objectCa002
+ bounds: 1129, 643, 68, 99
+objectCa/objectCa003
+ bounds: 384, 1811, 55, 98
+objectCa/objectCa004
+ bounds: 1400, 162, 94, 108
+objectCa/objectCa005
+ bounds: 1280, 160, 120, 119
+objectCa/objectCa006
+ bounds: 256, 1472, 116, 122
+objectCa/objectCa007
+ bounds: 384, 1216, 116, 121
+objectCb/objectCb000
+ bounds: 640, 936, 116, 121
+objectCb/objectCb001
+ bounds: 1280, 279, 90, 129
+objectCb/objectCb002
+ bounds: 256, 1594, 88, 130
+objectCb/objectCb003
+ bounds: 1152, 416, 116, 101
+objectCb/objectCb004
+ bounds: 768, 768, 152, 104
+objectCb/objectCb005
+ bounds: 896, 672, 146, 86
+objectCb/objectCb006
+ bounds: 0, 1824, 118, 85
+objectCb/objectCb007
+ bounds: 756, 936, 118, 87
+objectCb/objectCb008
+ bounds: 756, 1023, 118, 87
+objectCb/objectCb009
+ bounds: 1497, 399, 71, 90
+objectCb/objectCb010
+ bounds: 920, 758, 104, 102
+objectCb/objectCb011
+ bounds: 1024, 544, 120, 99
+objectCb/objectCb012
+ bounds: 640, 1057, 116, 98
+redAura/redAura000
+ bounds: 1901, 1848, 32, 32
+shotAa/shotAa000
+ bounds: 1271, 1102, 47, 97
+ offsets: 17, 15, 64, 128
+shotAa/shotAa001
+ bounds: 1318, 1102, 41, 97
+ offsets: 22, 15, 64, 128
+shotAa/shotAa002
+ bounds: 1912, 436, 40, 97
+ offsets: 20, 15, 64, 128
+shotAa/shotAa003
+ bounds: 1686, 1069, 42, 97
+ offsets: 18, 15, 64, 128
+shotAa/shotAa004
+ bounds: 1753, 1138, 44, 97
+ offsets: 18, 15, 64, 128
+shotAa/shotAa005
+ bounds: 924, 1482, 44, 97
+ offsets: 18, 15, 64, 128
+shotAa/shotAa006
+ bounds: 968, 1482, 42, 97
+ offsets: 18, 15, 64, 128
+shotAa/shotAa007
+ bounds: 1010, 1478, 39, 97
+ offsets: 22, 15, 64, 128
+shotAa/shotAa008
+ bounds: 1049, 1478, 40, 97
+ offsets: 22, 15, 64, 128
+shotAa/shotAa009
+ bounds: 1533, 883, 56, 97
+ offsets: 6, 15, 64, 128
+shotAa/shotAa010
+ bounds: 1907, 1134, 45, 97
+ offsets: 18, 15, 64, 128
+shotAb/shotAb000
+ bounds: 1200, 1603, 44, 72
+ offsets: 11, 15, 64, 128
+shotAb/shotAb001
+ bounds: 822, 1697, 44, 72
+ offsets: 11, 15, 64, 128
+shotAb/shotAb002
+ bounds: 822, 1769, 44, 72
+ offsets: 11, 15, 64, 128
+shotAb/shotAb003
+ bounds: 1765, 1693, 44, 72
+ offsets: 11, 15, 64, 128
+shotAb/shotAb004
+ bounds: 1850, 1626, 44, 72
+ offsets: 11, 15, 64, 128
+shotAb/shotAb005
+ bounds: 1809, 1698, 44, 72
+ offsets: 11, 15, 64, 128
+shotAb/shotAb006
+ bounds: 1853, 1698, 44, 72
+ offsets: 11, 15, 64, 128
+shotAb/shotAb007
+ bounds: 1089, 1671, 55, 72
+ offsets: 0, 15, 64, 128
+shotAb/shotAb008
+ bounds: 1636, 1770, 44, 72
+ offsets: 11, 15, 64, 128
+shotAc/shotAc000
+ bounds: 1717, 1693, 48, 67
+ offsets: 14, 3, 64, 103
+shotAc/shotAc001
+ bounds: 1232, 1431, 56, 85
+ offsets: 6, 3, 64, 103
+shotAc/shotAc002
+ bounds: 809, 1611, 57, 86
+ offsets: 1, 6, 64, 103
+shotAc/shotAc003
+ bounds: 1472, 1166, 58, 83
+ offsets: 0, 7, 64, 103
+shotAc/shotAc004
+ bounds: 1271, 1199, 53, 91
+ offsets: 5, 2, 64, 103
+shotAc/shotAc005
+ bounds: 1425, 1407, 56, 83
+ offsets: 1, 7, 64, 103
+shotAd/shotAd000
+ bounds: 1458, 1819, 48, 90
+ offsets: 11, 17, 64, 128
+shotAd/shotAd001
+ bounds: 1539, 980, 49, 99
+ offsets: 10, 8, 64, 128
+shotAd/shotAd002
+ bounds: 1319, 607, 48, 104
+ offsets: 9, 3, 64, 128
+shotAd/shotAd003
+ bounds: 1335, 711, 49, 104
+ offsets: 7, 3, 64, 128
+shotAd/shotAd004
+ bounds: 1433, 700, 48, 104
+ offsets: 9, 3, 64, 128
+shotAd/shotAd005
+ bounds: 1384, 700, 49, 104
+ offsets: 7, 3, 64, 128
+shotAd/shotAd006
+ bounds: 1484, 789, 48, 102
+ offsets: 9, 5, 64, 128
+shotAd/shotAd007
+ bounds: 1089, 1421, 49, 97
+ offsets: 10, 10, 64, 128
+shotAd/shotAd008
+ bounds: 1532, 1079, 58, 89
+ offsets: 0, 18, 64, 128
+shotAd/shotAd009
+ bounds: 767, 1823, 47, 82
+ offsets: 9, 25, 64, 128
+shotBa/shotBa000
+ bounds: 1829, 589, 61, 85
+ offsets: 22, 15, 128, 128
+shotBa/shotBa001
+ bounds: 1239, 967, 61, 61
+ offsets: 22, 15, 128, 128
+shotBa/shotBa002
+ bounds: 632, 1416, 63, 53
+ offsets: 21, 15, 128, 128
+shotBa/shotBa003
+ bounds: 1032, 1421, 57, 57
+ offsets: 21, 15, 128, 128
+shotBa/shotBa004
+ bounds: 1515, 655, 70, 64
+ offsets: 17, 15, 128, 128
+shotBa/shotBa005
+ bounds: 1515, 719, 69, 69
+ offsets: 20, 16, 128, 128
+shotBa/shotBa006
+ bounds: 1585, 665, 54, 79
+ offsets: 30, 16, 128, 128
+shotBa/shotBa007
+ bounds: 1585, 575, 54, 90
+ offsets: 39, 16, 128, 128
+shotBa/shotBa008
+ bounds: 1340, 1514, 49, 93
+ offsets: 43, 15, 128, 128
+shotBa/shotBa009
+ bounds: 1138, 1421, 47, 97
+ offsets: 45, 15, 128, 128
+shotBa/shotBa010
+ bounds: 590, 1811, 45, 98
+ offsets: 45, 15, 128, 128
+shotBa/shotBa011
+ bounds: 1647, 1069, 39, 100
+ offsets: 42, 15, 128, 128
+shotBa/shotBa012
+ bounds: 1341, 1290, 42, 95
+ offsets: 41, 15, 128, 128
+shotBa/shotBa013
+ bounds: 1027, 1325, 43, 96
+ offsets: 41, 15, 128, 128
+shotBa/shotBa014
+ bounds: 1185, 1421, 47, 97
+ offsets: 35, 15, 128, 128
+shotBb/shotBb000
+ bounds: 1327, 1832, 47, 75
+ offsets: 40, 34, 128, 128
+shotBb/shotBb001
+ bounds: 1023, 1841, 57, 64
+ offsets: 32, 39, 128, 128
+shotBb/shotBb002
+ bounds: 1371, 1607, 53, 62
+ offsets: 34, 35, 128, 128
+shotBb/shotBb003
+ bounds: 695, 1416, 54, 53
+ offsets: 35, 43, 128, 128
+shotBb/shotBb004
+ bounds: 1424, 1626, 54, 53
+ offsets: 32, 43, 128, 128
+shotBb/shotBb005
+ bounds: 1545, 1592, 52, 54
+ offsets: 33, 46, 128, 128
+shotBb/shotBb006
+ bounds: 1373, 1669, 50, 62
+ offsets: 36, 41, 128, 128
+shotCa/shotCa000
+ bounds: 1174, 1206, 43, 97
+ offsets: 39, 15, 128, 128
+shotCa/shotCa001
+ bounds: 1196, 1303, 45, 97
+ offsets: 37, 15, 128, 128
+shotCa/shotCa002
+ bounds: 1383, 1290, 42, 97
+ offsets: 38, 15, 128, 128
+shotCa/shotCa003
+ bounds: 1756, 1235, 42, 97
+ offsets: 38, 15, 128, 128
+shotCa/shotCa004
+ bounds: 1728, 1410, 43, 97
+ offsets: 39, 15, 128, 128
+shotCa/shotCa005
+ bounds: 1771, 1410, 43, 97
+ offsets: 39, 15, 128, 128
+shotCb/shotCb000
+ bounds: 866, 1837, 46, 72
+ offsets: 22, 23, 128, 128
+shotCb/shotCb001
+ bounds: 1272, 1835, 55, 73
+ offsets: 17, 23, 128, 128
+shotCb/shotCb002
+ bounds: 912, 1838, 55, 71
+ offsets: 23, 23, 128, 128
+shotCb/shotCb003
+ bounds: 866, 1644, 74, 66
+ offsets: 31, 23, 128, 128
+shotCb/shotCb004
+ bounds: 980, 1169, 63, 68
+ offsets: 31, 23, 128, 128
+shotCb/shotCb005
+ bounds: 1180, 851, 59, 68
+ offsets: 32, 23, 128, 128
+shotCb/shotCb006
+ bounds: 1623, 1689, 49, 70
+ offsets: 31, 23, 128, 128
+shotCb/shotCb007
+ bounds: 1680, 1761, 44, 72
+ offsets: 27, 23, 128, 128
+shotCb/shotCb008
+ bounds: 1046, 1670, 43, 71
+ offsets: 27, 23, 128, 128
+shotDa/shotDa000
+ bounds: 628, 1528, 75, 73
+ offsets: 35, 4, 116, 104
+shotDa/shotDa001
+ bounds: 1756, 589, 73, 76
+ offsets: 34, 4, 116, 104
+shotDa/shotDa002
+ bounds: 1365, 978, 65, 85
+ offsets: 26, 4, 116, 104
+sit/sit000
+ bounds: 1522, 1410, 52, 89
+ offsets: 2, 5, 54, 106
+sit/sit001
+ bounds: 873, 1244, 52, 79
+ offsets: 1, 5, 54, 106
+sit/sit002
+ bounds: 1222, 1839, 50, 70
+ offsets: 1, 6, 54, 106
+sit/sit003
+ bounds: 1178, 1838, 44, 71
+ offsets: 3, 5, 54, 106
+sit/sit004
+ bounds: 1135, 1249, 39, 76
+ offsets: 6, 6, 54, 106
+sit/sit005
+ bounds: 1811, 1602, 39, 87
+ offsets: 6, 5, 54, 106
+sit/sit006
+ bounds: 1070, 1325, 41, 96
+ offsets: 3, 5, 54, 106
+spellAa/spellAa000
+ bounds: 874, 1482, 50, 97
+ offsets: 23, 0, 80, 98
+spellAa/spellAa001
+ bounds: 1215, 1102, 56, 96
+ offsets: 19, 1, 80, 98
+spellAa/spellAa002
+ bounds: 643, 1601, 63, 96
+ offsets: 15, 0, 80, 98
+spellAa/spellAa003
+ bounds: 1239, 871, 61, 96
+ offsets: 16, 0, 80, 98
+spellAa/spellAa004
+ bounds: 543, 1811, 47, 98
+ offsets: 23, 0, 80, 98
+spellAa/spellAa005
+ bounds: 1853, 1134, 54, 91
+ offsets: 14, 0, 80, 98
+spellAa/spellAa006
+ bounds: 1300, 884, 66, 86
+ offsets: 0, 0, 80, 98
+spellAa/spellAa007
+ bounds: 799, 1323, 65, 87
+ offsets: 1, 0, 80, 98
+spellAa/spellAa008
+ bounds: 1430, 984, 61, 91
+ offsets: 7, 0, 80, 98
+spellAa/spellAa009
+ bounds: 1822, 1507, 47, 95
+ offsets: 17, 0, 80, 98
+spellAa/spellAa010
+ bounds: 1814, 1410, 44, 97
+ offsets: 28, 0, 80, 98
+spellAa/spellAa011
+ bounds: 1366, 891, 66, 87
+ offsets: 0, 0, 80, 98
+spellBa/spellBa000
+ bounds: 1111, 1325, 41, 96
+ offsets: 45, 15, 128, 128
+spellBa/spellBa001
+ bounds: 1809, 1318, 49, 92
+ offsets: 39, 16, 128, 128
+spellBa/spellBa002
+ bounds: 1080, 1244, 55, 81
+ offsets: 34, 16, 128, 128
+spellBa/spellBa003
+ bounds: 767, 1525, 54, 76
+ offsets: 40, 16, 128, 128
+spellBa/spellBa004
+ bounds: 1907, 1619, 45, 91
+ offsets: 42, 16, 128, 128
+spellBa/spellBa005
+ bounds: 1300, 408, 62, 99
+ offsets: 34, 16, 128, 128
+spellBa/spellBa006
+ bounds: 266, 1811, 60, 98
+ offsets: 34, 16, 128, 128
+spellBa/spellBa007
+ bounds: 326, 1811, 58, 98
+ offsets: 34, 16, 128, 128
+spellBa/spellBa008
+ bounds: 1477, 1249, 52, 93
+ offsets: 39, 17, 128, 128
+spellBa/spellBa009
+ bounds: 1152, 1325, 44, 96
+ offsets: 41, 15, 128, 128
+spellBulletAa/spellBulletAa000
+ bounds: 512, 0, 256, 168
+spellBulletAa/spellBulletAa001
+ bounds: 256, 1344, 128, 128
+spellBulletAa/spellBulletAa002
+ bounds: 384, 1088, 128, 128
+spellBulletAa/spellBulletAa003
+ bounds: 512, 1064, 128, 128
+spellBulletAa/spellBulletAa004
+ bounds: 640, 808, 128, 128
+spellBulletBa/spellBulletBa000
+ bounds: 768, 640, 128, 128
+spellBulletCa/spellBulletCa000
+ bounds: 256, 192, 128, 256
+spellBulletCa/spellBulletCa001
+ bounds: 0, 704, 128, 256
+spellBulletCa/spellBulletCa002
+ bounds: 128, 448, 128, 256
+spellBulletCa/spellBulletCa003
+ bounds: 384, 192, 128, 256
+spellBulletCa/spellBulletCa004
+ bounds: 512, 168, 128, 256
+spellBulletCa/spellBulletCa005
+ bounds: 0, 960, 128, 256
+spellBulletCa/spellBulletCa006
+ bounds: 128, 704, 128, 256
+spellBulletCa/spellBulletCa007
+ bounds: 256, 448, 128, 256
+spellBulletCa/spellBulletCa008
+ bounds: 640, 168, 128, 256
+spellBulletCa/spellBulletCa009
+ bounds: 768, 0, 128, 256
+spellBulletCa/spellBulletCa010
+ bounds: 0, 1216, 128, 256
+spellBulletCa/spellBulletCa011
+ bounds: 128, 960, 128, 256
+spellBulletCa/spellBulletCa012
+ bounds: 256, 704, 128, 256
+spellBulletCa/spellBulletCa013
+ bounds: 384, 448, 128, 256
+spellBulletCa/spellBulletCa014
+ bounds: 512, 424, 128, 256
+spellBulletCa/spellBulletCa015
+ bounds: 896, 0, 128, 256
+spellBulletCa/spellBulletCa016
+ bounds: 0, 1472, 128, 256
+spellBulletCa/spellBulletCa017
+ bounds: 128, 1216, 128, 256
+spellBulletCa/spellBulletCa018
+ bounds: 256, 960, 128, 256
+spellBulletCa/spellBulletCa019
+ bounds: 384, 704, 128, 256
+spellBulletCa/spellBulletCa020
+ bounds: 512, 680, 128, 256
+spellBulletCa/spellBulletCa021
+ bounds: 640, 424, 128, 256
+spellBulletCa/spellBulletCa022
+ bounds: 768, 256, 128, 256
+spellBulletCa/spellBulletCa023
+ bounds: 1024, 0, 128, 256
+spellBulletCa/spellBulletCa024
+ bounds: 128, 1472, 128, 256
+spellBulletDa/spellBulletDa000
+ bounds: 896, 544, 128, 128
+spellBulletDa/spellBulletDa001
+ bounds: 1024, 416, 128, 128
+spellBulletEa/spellBulletEa000
+ bounds: 1152, 128, 256, 32
+spellBulletFa/spellBulletFa000
+ bounds: 0, 0, 512, 128
+spellBulletFb/spellBulletFb000
+ bounds: 1152, 288, 128, 128
+spellCa/spellCa000
+ bounds: 1626, 1410, 51, 93
+ offsets: 30, 0, 97, 103
+spellCa/spellCa001
+ bounds: 767, 1741, 55, 82
+ offsets: 27, 0, 97, 103
+spellCa/spellCa002
+ bounds: 1244, 1607, 63, 67
+ offsets: 23, 0, 97, 103
+spellCa/spellCa003
+ bounds: 1890, 629, 62, 69
+ offsets: 20, 0, 97, 103
+spellCa/spellCa004
+ bounds: 639, 1731, 55, 80
+ offsets: 24, 0, 97, 103
+spellCa/spellCa005
+ bounds: 1217, 1198, 54, 92
+ offsets: 19, 0, 97, 103
+spellCa/spellCa006
+ bounds: 925, 1233, 54, 90
+ offsets: 18, 1, 97, 103
+spellCa/spellCa007
+ bounds: 1529, 1254, 56, 88
+ offsets: 17, 3, 97, 103
+spellCa/spellCa008
+ bounds: 979, 1237, 57, 88
+ offsets: 17, 3, 97, 103
+spellCall/spellCall000
+ bounds: 1389, 1507, 43, 97
+ offsets: 36, 0, 80, 98
+spellCall/spellCall001
+ bounds: 1226, 1744, 46, 95
+ offsets: 45, 15, 128, 128
+spellCall/spellCall002
+ bounds: 976, 1325, 51, 96
+ offsets: 43, 15, 128, 128
+spellCall/spellCall003
+ bounds: 1144, 547, 69, 96
+ offsets: 24, 15, 128, 128
+spellCall/spellCall004
+ bounds: 1630, 974, 58, 95
+ offsets: 37, 15, 128, 128
+spellCall/spellCall005
+ bounds: 1184, 919, 55, 100
+ offsets: 36, 15, 128, 128
+spellCall/spellCall006
+ bounds: 660, 1215, 60, 108
+ offsets: 32, 15, 128, 128
+spellCall/spellCall007
+ bounds: 1056, 748, 60, 108
+ offsets: 31, 15, 128, 128
+spellCall/spellCall008
+ bounds: 1180, 743, 59, 108
+ offsets: 31, 15, 128, 128
+spellCall/spellCall009
+ bounds: 1671, 1596, 47, 93
+ offsets: 43, 15, 128, 128
+spellCall/spellCall010
+ bounds: 1042, 1745, 45, 96
+ offsets: 50, 15, 128, 128
+spellCall/spellCall011
+ bounds: 1481, 1496, 40, 95
+ offsets: 47, 15, 128, 128
+spellCall/spellCall012
+ bounds: 1386, 1387, 39, 97
+ offsets: 44, 15, 128, 128
+spellDa/spellDa000
+ bounds: 1579, 1646, 44, 96
+ offsets: 16, 1, 72, 100
+spellDa/spellDa001
+ bounds: 1046, 1575, 43, 95
+ offsets: 16, 2, 72, 100
+spellDa/spellDa002
+ bounds: 1532, 1646, 47, 94
+ offsets: 17, 1, 72, 100
+spellDa/spellDa003
+ bounds: 742, 1319, 57, 95
+ offsets: 11, 1, 72, 100
+spellDa/spellDa004
+ bounds: 1687, 669, 66, 94
+ offsets: 3, 1, 72, 100
+spellDa/spellDa005
+ bounds: 1797, 762, 65, 94
+ offsets: 7, 1, 72, 100
+spellDa/spellDa006
+ bounds: 1589, 878, 63, 94
+ offsets: 7, 1, 72, 100
+spellDa/spellDa007
+ bounds: 1532, 788, 52, 95
+ offsets: 15, 2, 72, 100
+spellDa/spellDa008
+ bounds: 723, 1811, 44, 97
+ offsets: 16, 1, 72, 100
+spellEa/spellEa000
+ bounds: 1359, 1063, 55, 96
+ offsets: 5, 3, 85, 103
+spellEa/spellEa001
+ bounds: 1241, 1290, 51, 95
+ offsets: 7, 3, 85, 103
+spellEa/spellEa002
+ bounds: 1858, 1311, 49, 95
+ offsets: 9, 3, 85, 103
+spellEa/spellEa003
+ bounds: 439, 1811, 55, 98
+ offsets: 10, 2, 85, 103
+spellEa/spellEa004
+ bounds: 1301, 507, 61, 100
+ offsets: 13, 2, 85, 103
+spellEa/spellEa005
+ bounds: 1890, 533, 62, 96
+ offsets: 14, 2, 85, 103
+spellEa/spellEa006
+ bounds: 1801, 856, 61, 95
+ offsets: 15, 2, 85, 103
+spellEa/spellEa007
+ bounds: 1862, 952, 65, 88
+ offsets: 14, 2, 85, 103
+spellEa/spellEa008
+ bounds: 1448, 564, 67, 87
+ offsets: 14, 2, 85, 103
+spellEa/spellEa009
+ bounds: 1821, 503, 69, 86
+ offsets: 14, 2, 85, 103
+spellEa/spellEa010
+ bounds: 1575, 487, 64, 88
+ offsets: 14, 2, 85, 103
+spellEa/spellEa011
+ bounds: 1101, 1113, 58, 91
+ offsets: 15, 2, 85, 103
+spellEa/spellEa012
+ bounds: 1677, 1410, 51, 93
+ offsets: 16, 2, 85, 103
+spellFa/spellFa000
+ bounds: 1590, 1779, 46, 94
+ offsets: 15, 2, 61, 98
+spellFa/spellFa001
+ bounds: 1798, 1225, 52, 93
+ offsets: 9, 1, 61, 98
+spellFa/spellFa002
+ bounds: 1585, 1259, 57, 87
+ offsets: 2, 1, 61, 98
+spellFa/spellFa003
+ bounds: 1642, 1259, 57, 87
+ offsets: 1, 1, 61, 98
+spellFa/spellFa004
+ bounds: 1530, 1168, 58, 86
+ offsets: 0, 1, 61, 98
+spellFa/spellFa005
+ bounds: 1850, 1225, 57, 86
+ offsets: 1, 1, 61, 98
+spellFa/spellFa006
+ bounds: 1699, 1259, 57, 87
+ offsets: 2, 1, 61, 98
+spellGa/spellGa000
+ bounds: 1774, 1507, 48, 95
+ offsets: 24, 3, 73, 104
+spellGa/spellGa001
+ bounds: 1425, 1249, 52, 94
+ offsets: 18, 3, 73, 104
+spellGa/spellGa002
+ bounds: 1809, 951, 53, 93
+ offsets: 16, 3, 73, 104
+spellGa/spellGa003
+ bounds: 706, 1601, 58, 95
+ offsets: 9, 3, 73, 104
+spellGa/spellGa004
+ bounds: 906, 925, 66, 94
+ offsets: 3, 3, 73, 104
+spellGa/spellGa005
+ bounds: 1019, 926, 66, 94
+ offsets: 3, 3, 73, 104
+spellGa/spellGa006
+ bounds: 1691, 853, 63, 94
+ offsets: 3, 3, 73, 104
+spellGa/spellGa007
+ bounds: 1728, 1043, 55, 95
+ offsets: 9, 3, 73, 104
+spellGa/spellGa008
+ bounds: 994, 1745, 48, 96
+ offsets: 20, 3, 73, 104
+stand/stand000
+ bounds: 1272, 1738, 44, 97
+ offsets: 2, 15, 54, 128
+stand/stand001
+ bounds: 1907, 1231, 45, 97
+ offsets: 5, 15, 54, 128
+stand/stand002
+ bounds: 1361, 1735, 44, 97
+ offsets: 8, 15, 54, 128
+stand/stand003
+ bounds: 1087, 1743, 46, 97
+ offsets: 8, 15, 54, 128
+stand/stand004
+ bounds: 1907, 1328, 45, 97
+ offsets: 8, 15, 54, 128
+stand/stand005
+ bounds: 1405, 1731, 44, 97
+ offsets: 8, 15, 54, 128
+stand/stand006
+ bounds: 1004, 1648, 42, 97
+ offsets: 7, 15, 54, 128
+stand/stand007
+ bounds: 1449, 1722, 39, 97
+ offsets: 7, 15, 54, 128
+stand/stand008
+ bounds: 462, 1563, 38, 97
+ offsets: 7, 15, 54, 128
+stand/stand009
+ bounds: 1506, 1779, 40, 97
+ offsets: 5, 15, 54, 128
+stand/stand010
+ bounds: 1907, 1425, 45, 97
+ offsets: 0, 15, 54, 128
+stand/stand011
+ bounds: 1907, 1522, 45, 97
+ offsets: 0, 15, 54, 128
+stand/stand012
+ bounds: 1133, 1743, 45, 97
+ offsets: 0, 15, 54, 128
+stand/stand013
+ bounds: 1316, 1735, 45, 97
+ offsets: 0, 15, 54, 128
+stand/stand014
+ bounds: 1488, 1682, 44, 97
+ offsets: 1, 15, 54, 128
+stand/stand015
+ bounds: 1546, 1779, 44, 97
+ offsets: 1, 15, 54, 128
+standUp/standUp000
+ bounds: 896, 890, 95, 35
+ offsets: 19, 14, 128, 128
+standUp/standUp001
+ bounds: 906, 1019, 85, 54
+ offsets: 21, 15, 128, 128
+standUp/standUp002
+ bounds: 1138, 1589, 62, 65
+ offsets: 30, 16, 128, 128
+standUp/standUp003
+ bounds: 1419, 1828, 39, 78
+ offsets: 44, 15, 128, 128
+standUp/standUp004
+ bounds: 1869, 1500, 38, 89
+ offsets: 43, 15, 128, 128
+standUp/standUp005
+ bounds: 1481, 693, 34, 96
+ offsets: 46, 15, 128, 128
+standUpBack/standUpBack000
+ bounds: 512, 1472, 123, 56
+standUpBack/standUpBack001
+ bounds: 500, 1583, 122, 55
+standUpFront/standUpFront000
+ bounds: 737, 1174, 128, 56
+standUpFront/standUpFront001
+ bounds: 500, 1528, 128, 55
+tailAa/tailAa000
+ bounds: 1362, 408, 10, 128
+walkFront/walkFront000
+ bounds: 1724, 1507, 50, 92
+ offsets: 2, 15, 53, 128
+walkFront/walkFront001
+ bounds: 1521, 1499, 51, 92
+ offsets: 1, 16, 53, 128
+walkFront/walkFront002
+ bounds: 1178, 1744, 48, 94
+ offsets: 2, 15, 53, 128
+walkFront/walkFront003
+ bounds: 1623, 1596, 48, 93
+ offsets: 2, 16, 53, 128
+walkFront/walkFront004
+ bounds: 1432, 1490, 49, 93
+ offsets: 2, 15, 53, 128
+walkFront/walkFront005
+ bounds: 1574, 1410, 52, 92
+ offsets: 1, 15, 53, 128
+walkFront/walkFront006
+ bounds: 1674, 1503, 50, 93
+ offsets: 2, 15, 53, 128
+walkFront/walkFront007
+ bounds: 1858, 1406, 49, 94
+ offsets: 2, 15, 53, 128
+walkFront/walkFront008
+ bounds: 1718, 1599, 47, 94
+ offsets: 3, 15, 53, 128
+walkFront/walkFront009
+ bounds: 1623, 1503, 51, 93
+ offsets: 2, 15, 53, 128
diff --git a/target/classes/character/alice/alice.png b/target/classes/character/alice/alice.png
new file mode 100644
index 0000000..f83f7ab
Binary files /dev/null and b/target/classes/character/alice/alice.png differ
diff --git a/target/classes/character/alice/精灵1.2-0.png b/target/classes/character/alice/精灵1.2-0.png
deleted file mode 100644
index b8b088d..0000000
Binary files a/target/classes/character/alice/精灵1.2-0.png and /dev/null differ
diff --git a/target/classes/character/alice/精灵1.2.atlas b/target/classes/character/alice/精灵1.2.atlas
deleted file mode 100644
index 23cae6a..0000000
--- a/target/classes/character/alice/精灵1.2.atlas
+++ /dev/null
@@ -1,1397 +0,0 @@
-精灵1.2-0.png
-size: 1999, 2047
-format: RGBA8888
-filter: Linear, Linear
-repeat: none
-pma: false
-alpha/alpha000
- bounds: 0, 192, 256, 256
-attackAa/attackAa000
- bounds: 851, 1047, 59, 101
- offsets: 30, 13, 128, 128
-attackAa/attackAa001
- bounds: 1481, 877, 61, 98
- offsets: 22, 13, 128, 128
-attackAa/attackAa002
- bounds: 764, 1047, 87, 97
- offsets: 24, 13, 128, 128
-attackAa/attackAa003
- bounds: 1142, 677, 95, 95
- offsets: 26, 13, 128, 128
-attackAa/attackAa004
- bounds: 1304, 372, 91, 96
- offsets: 24, 13, 128, 128
-attackAa/attackAa005
- bounds: 1086, 873, 67, 100
- offsets: 29, 13, 128, 128
-attackAa/attackAa006
- bounds: 1532, 692, 56, 102
- offsets: 36, 13, 128, 128
-attackAb/attackAb000
- bounds: 1655, 769, 57, 77
- offsets: 32, 12, 128, 128
-attackAb/attackAb001
- bounds: 890, 1756, 64, 65
- offsets: 26, 12, 128, 128
-attackAb/attackAb002
- bounds: 1368, 1496, 77, 67
- offsets: 20, 12, 128, 128
-attackAb/attackAb003
- bounds: 1615, 599, 97, 67
- offsets: 22, 11, 128, 128
-attackAb/attackAb004
- bounds: 1279, 1262, 80, 69
- offsets: 17, 12, 128, 128
-attackAb/attackAb005
- bounds: 338, 1865, 70, 76
- offsets: 25, 12, 128, 128
-attackAb/attackAb006
- bounds: 1940, 893, 59, 77
- offsets: 35, 12, 128, 128
-attackAc/attackAc000
- bounds: 471, 1862, 55, 79
- offsets: 35, 34, 128, 128
-attackAc/attackAc001
- bounds: 1422, 1176, 57, 79
- offsets: 32, 31, 128, 128
-attackAc/attackAc002
- bounds: 1712, 774, 66, 80
- offsets: 25, 29, 128, 128
-attackAc/attackAc003
- bounds: 934, 1343, 68, 78
- offsets: 24, 30, 128, 128
-attackAc/attackAc004
- bounds: 1152, 515, 104, 68
- offsets: 24, 36, 128, 128
-attackAc/attackAc005
- bounds: 647, 1469, 101, 71
- offsets: 25, 35, 128, 128
-attackAc/attackAc006
- bounds: 244, 1865, 94, 76
- offsets: 29, 32, 128, 128
-attackAc/attackAc007
- bounds: 1872, 268, 78, 82
- offsets: 32, 29, 128, 128
-attackAc/attackAc008
- bounds: 442, 1599, 66, 92
- offsets: 35, 21, 128, 128
-attackAc/attackAc009
- bounds: 1166, 1069, 59, 95
- offsets: 37, 19, 128, 128
-attackAc/attackAc010
- bounds: 1002, 1343, 57, 100
- offsets: 34, 13, 128, 128
-attackAd/attackAd000
- bounds: 1542, 877, 53, 104
- offsets: 35, 11, 128, 128
-attackAd/attackAd001
- bounds: 1424, 1255, 55, 102
- offsets: 35, 11, 128, 128
-attackAd/attackAd002
- bounds: 1588, 666, 68, 102
- offsets: 41, 11, 128, 128
-attackAd/attackAd003
- bounds: 771, 1241, 82, 101
- offsets: 32, 11, 128, 128
-attackAd/attackAd004
- bounds: 849, 1420, 83, 100
- offsets: 31, 11, 128, 128
-attackAd/attackAd005
- bounds: 1686, 306, 75, 101
- offsets: 33, 11, 128, 128
-attackAd/attackAd006
- bounds: 519, 1442, 58, 104
- offsets: 41, 11, 128, 128
-attackAd/attackAd007
- bounds: 1481, 773, 51, 104
- offsets: 43, 11, 128, 128
-attackAd/attackAd008
- bounds: 618, 1592, 47, 104
- offsets: 41, 11, 128, 128
-attackBc/attackBc009
- bounds: 1086, 973, 68, 96
- offsets: 28, 11, 256, 128
-attackBc/attackBc010
- bounds: 1429, 1076, 56, 100
- offsets: 29, 11, 256, 128
-attackBc/attackBc011
- bounds: 1122, 1339, 49, 103
- offsets: 27, 11, 256, 128
-attackBc/attackBc012
- bounds: 788, 1583, 47, 104
- offsets: 26, 11, 256, 128
-attackBe/attackBe000
- bounds: 1766, 1789, 54, 75
- offsets: 10, 14, 64, 128
-attackBf/attackBf000
- bounds: 835, 1581, 55, 104
- offsets: 18, 11, 256, 128
-attackBf/attackBf001
- bounds: 1063, 1442, 63, 99
- offsets: 21, 13, 256, 128
-attackBf/attackBf002
- bounds: 1000, 1443, 63, 96
- offsets: 28, 13, 256, 128
-attackBf/attackBf003
- bounds: 1304, 468, 88, 93
- offsets: 25, 11, 256, 128
-attackBf/attackBf004
- bounds: 1140, 583, 87, 94
- offsets: 24, 11, 256, 128
-attackBf/attackBf005
- bounds: 1142, 772, 76, 95
- offsets: 25, 11, 256, 128
-attackCa/attackCa000
- bounds: 1941, 616, 58, 99
- offsets: 12, 0, 116, 104
-attackCa/attackCa001
- bounds: 1365, 869, 66, 97
- offsets: 7, 0, 116, 104
-attackCa/attackCa002
- bounds: 1876, 640, 65, 96
- offsets: 6, 0, 116, 104
-attackCa/attackCa003
- bounds: 1359, 1255, 65, 96
- offsets: 6, 0, 116, 104
-attackCa/attackCa004
- bounds: 1541, 1278, 65, 96
- offsets: 6, 0, 116, 104
-attackCa/attackCa005
- bounds: 1541, 1374, 65, 96
- offsets: 6, 0, 116, 104
-attackCa/attackCa006
- bounds: 1358, 966, 71, 96
- offsets: 0, 0, 116, 104
-attackCa/attackCa007
- bounds: 996, 1145, 71, 96
- offsets: 0, 0, 116, 104
-attackCa/attackCa008
- bounds: 1060, 1541, 66, 94
- offsets: 18, 0, 116, 104
-attackCa/attackCa009
- bounds: 1006, 768, 80, 87
- offsets: 20, 0, 116, 104
-attackCa/attackCa010
- bounds: 1218, 785, 83, 81
- offsets: 31, 0, 116, 104
-attackCa/attackCa011
- bounds: 1792, 599, 84, 84
- offsets: 30, 0, 116, 104
-attackCa/attackCa012
- bounds: 851, 1148, 76, 93
- offsets: 22, 0, 116, 104
-attackCa/attackCa013
- bounds: 1291, 1167, 68, 95
- offsets: 24, 0, 116, 104
-attackCa/attackCa014
- bounds: 1941, 516, 58, 100
- offsets: 24, 0, 116, 104
-attackCa/attackCa015
- bounds: 1150, 1848, 51, 101
- offsets: 23, 0, 116, 104
-attackCa/attackCa016
- bounds: 1429, 974, 52, 102
- offsets: 18, 0, 116, 104
-BulletAa/BulletAa000
- bounds: 1844, 396, 32, 32
-BulletAa/BulletAa001
- bounds: 1796, 2015, 32, 32
-BulletAa/BulletAa002
- bounds: 1828, 2015, 32, 32
-BulletAa/BulletAa003
- bounds: 1860, 2015, 32, 32
-BulletAa/BulletAa004
- bounds: 1606, 1145, 32, 32
-BulletAa/BulletAa005
- bounds: 1906, 1931, 32, 32
-BulletAa/BulletAa006
- bounds: 1892, 2009, 32, 32
-BulletAb/BulletAb000
- bounds: 384, 1691, 64, 64
-BulletAb/BulletAb001
- bounds: 1651, 407, 64, 64
-BulletAb/BulletAb002
- bounds: 1715, 407, 64, 64
-BulletAb/BulletAb003
- bounds: 448, 1691, 64, 64
-BulletAb/BulletAb004
- bounds: 512, 1691, 64, 64
-BulletAb/BulletAb005
- bounds: 993, 1983, 64, 64
-BulletAb/BulletAb006
- bounds: 1057, 1983, 64, 64
-BulletAc/BulletAc000
- bounds: 1542, 1983, 64, 64
-BulletAc/BulletAc001
- bounds: 1606, 1983, 64, 64
-BulletAc/BulletAc002
- bounds: 1670, 1979, 64, 64
-BulletAc/BulletAc003
- bounds: 1766, 1725, 64, 64
-BulletAc/BulletAc004
- bounds: 1830, 1725, 64, 64
-BulletAc/BulletAc005
- bounds: 1820, 1789, 64, 64
-BulletAc/BulletAc006
- bounds: 1715, 1874, 64, 64
-BulletBa/BulletBa000
- bounds: 0, 128, 512, 64
-BulletCa/BulletCa000
- bounds: 128, 1472, 128, 128
-BulletCa/BulletCa001
- bounds: 256, 1216, 128, 128
-BulletCa/BulletCa002
- bounds: 384, 960, 128, 128
-BulletDa/BulletDa000
- bounds: 1779, 1864, 64, 64
-BulletDa/BulletDa001
- bounds: 1843, 1853, 64, 64
-BulletDb/BulletDb005
- bounds: 1240, 385, 32, 128
-BulletDb/BulletDb006
- bounds: 730, 936, 32, 128
-BulletDb/BulletDb007
- bounds: 1272, 266, 32, 128
-BulletDb/BulletDb008
- bounds: 1272, 394, 32, 128
-BulletDb/BulletDb009
- bounds: 732, 1064, 32, 128
-BulletDb/BulletDb010
- bounds: 477, 1337, 32, 128
-BulletDb/BulletDb011
- bounds: 372, 1472, 32, 128
-BulletDb/BulletDb012
- bounds: 1654, 279, 32, 128
-BulletDb/BulletDb013
- bounds: 1648, 471, 32, 128
-BulletDb/BulletDb014
- bounds: 1680, 471, 32, 128
-BulletDb/BulletDb015
- bounds: 1712, 471, 32, 128
-BulletDb/BulletDb016
- bounds: 1744, 471, 32, 128
-BulletDb/BulletDb017
- bounds: 1776, 471, 32, 128
-BulletDb/BulletDb018
- bounds: 1808, 471, 32, 128
-BulletDb/BulletDb019
- bounds: 1840, 471, 32, 128
-BulletEa/BulletEa000
- bounds: 512, 936, 128, 128
-BulletEa/BulletEa001
- bounds: 640, 680, 128, 128
-BulletEa/BulletEa002
- bounds: 768, 512, 128, 128
-BulletFa/BulletFa000
- bounds: 512, 1192, 128, 32
-BulletFa/BulletFa001
- bounds: 896, 448, 128, 128
-bulletFb/bulletFb000
- bounds: 896, 704, 128, 64
-bulletFb/bulletFb001
- bounds: 768, 867, 128, 64
-bulletFb/bulletFb002
- bounds: 1408, 214, 128, 64
-bulletFb/bulletFb003
- bounds: 1536, 215, 128, 64
-bulletFb/bulletFb004
- bounds: 896, 855, 128, 64
-bulletFb/bulletFb005
- bounds: 1398, 278, 128, 64
-bulletFb/bulletFb006
- bounds: 1526, 279, 128, 64
-bulletFb/bulletFb007
- bounds: 1398, 342, 128, 64
-bulletFb/bulletFb008
- bounds: 1526, 343, 128, 64
-bulletFb/bulletFb009
- bounds: 256, 1691, 128, 64
-bulletFb/bulletFb010
- bounds: 1395, 406, 128, 64
-bulletFb/bulletFb011
- bounds: 1523, 407, 128, 64
-bulletFb/bulletFb012
- bounds: 1392, 470, 128, 64
-bulletFb/bulletFb013
- bounds: 1520, 471, 128, 64
-bulletFb/bulletFb014
- bounds: 1392, 534, 128, 64
-bulletFb/bulletFb015
- bounds: 1520, 535, 128, 64
-bulletFb/bulletFb016
- bounds: 896, 919, 128, 64
-bulletGa/bulletGa000
- bounds: 896, 256, 256, 32
-bulletGa/bulletGa001
- bounds: 1152, 0, 256, 32
-bulletGa/bulletGa002
- bounds: 896, 288, 256, 32
-bulletGa/bulletGa003
- bounds: 1152, 32, 256, 32
-bulletGa/bulletGa004
- bounds: 1408, 0, 256, 32
-bulletGa/bulletGa005
- bounds: 896, 320, 256, 32
-bulletGa/bulletGa006
- bounds: 1152, 64, 256, 32
-bulletGa/bulletGa007
- bounds: 1408, 32, 256, 32
-bulletGa/bulletGa008
- bounds: 1664, 0, 256, 32
-bulletGa/bulletGa009
- bounds: 896, 352, 256, 32
-bulletGa/bulletGa010
- bounds: 1152, 96, 256, 32
-bulletGa/bulletGa011
- bounds: 1408, 64, 256, 32
-bulletGa/bulletGa012
- bounds: 1664, 32, 256, 32
-bulletGa/bulletGa013
- bounds: 896, 384, 256, 32
-bulletGa/bulletGa014
- bounds: 1152, 128, 256, 32
-bulletGb/bulletGb000
- bounds: 1408, 96, 256, 32
-crash/crash000
- bounds: 837, 1790, 53, 103
- offsets: 37, 12, 128, 128
-crash/crash001
- bounds: 1542, 1078, 64, 101
- offsets: 29, 13, 128, 128
-crash/crash002
- bounds: 1876, 539, 65, 101
- offsets: 28, 13, 128, 128
-crash/crash003
- bounds: 830, 1907, 53, 103
- offsets: 37, 12, 128, 128
-dashBack/dashBack000
- bounds: 1231, 1746, 63, 93
- offsets: 29, 22, 128, 128
-dashBack/dashBack001
- bounds: 1606, 1383, 63, 92
- offsets: 34, 22, 128, 128
-dashBack/dashBack002
- bounds: 1292, 869, 73, 96
- offsets: 30, 17, 128, 128
-dashBack/dashBack003
- bounds: 775, 1414, 74, 96
- offsets: 29, 17, 128, 128
-dashFront/dashFront000
- bounds: 1446, 1841, 61, 94
- offsets: 47, 11, 128, 128
-dashFront/dashFront001
- bounds: 1876, 350, 74, 88
- offsets: 40, 11, 128, 128
-dashFront/dashFront002
- bounds: 1086, 1069, 80, 78
- offsets: 38, 11, 128, 128
-dashFront/dashFront003
- bounds: 1139, 1164, 80, 77
- offsets: 38, 11, 128, 128
-dashFront/dashFront004
- bounds: 1929, 1419, 53, 89
- offsets: 47, 13, 128, 128
-dashFront/dashFront005
- bounds: 1947, 970, 52, 93
- offsets: 47, 11, 128, 128
-dashFront/dashFront006
- bounds: 1445, 1495, 49, 97
- offsets: 45, 11, 128, 128
-dashFrontAir/dashFrontAir000
- bounds: 771, 1907, 59, 101
- offsets: 38, 7, 128, 128
-down/down000
- bounds: 1917, 1143, 56, 93
- offsets: 36, 4, 128, 128
-down/down001
- bounds: 1728, 1643, 61, 74
- offsets: 30, 4, 128, 128
-down/down002
- bounds: 1279, 1331, 80, 68
- offsets: 24, 4, 128, 128
-down/down003
- bounds: 1566, 1565, 66, 94
- offsets: 24, 2, 128, 128
-down/down004
- bounds: 729, 1583, 59, 98
- offsets: 32, 17, 128, 128
-down/down005
- bounds: 1345, 1423, 82, 73
- offsets: 25, 19, 128, 128
-down/down006
- bounds: 1301, 819, 95, 50
- offsets: 20, 13, 128, 128
-down/down007
- bounds: 1370, 654, 105, 38
- offsets: 15, 10, 128, 128
-down/down008
- bounds: 1475, 654, 104, 38
- offsets: 15, 11, 128, 128
-emotionAa/emotionAa000
- bounds: 200, 1948, 69, 99
- offsets: 3, 0, 72, 100
-emotionAa/emotionAa001
- bounds: 1686, 207, 69, 99
- offsets: 3, 0, 72, 100
-emotionBa/emotionBa000
- bounds: 976, 983, 48, 105
- offsets: 16, 11, 64, 128
-face/face000
- bounds: 762, 987, 127, 60
- offsets: 0, 4, 160, 64
-Guard/Guard000
- bounds: 0, 448, 128, 256
-guardBUnder/guardBUnder000
- bounds: 1942, 1673, 57, 76
- offsets: 31, 11, 128, 128
-guardBUnder/guardBUnder001
- bounds: 1892, 970, 55, 77
- offsets: 33, 11, 128, 128
-guardBUpper/guardBUpper000
- bounds: 1602, 1179, 56, 99
- offsets: 27, 11, 128, 128
-guardBUpper/guardBUpper001
- bounds: 1542, 981, 57, 97
- offsets: 26, 11, 128, 128
-guardSit/guardSit000
- bounds: 1857, 96, 93, 110
- offsets: 35, 18, 128, 128
-guardSit/guardSit001
- bounds: 244, 1755, 90, 110
- offsets: 38, 18, 128, 128
-guardUnder/guardUnder000
- bounds: 1765, 96, 92, 111
- offsets: 36, 0, 128, 128
-guardUnder/guardUnder001
- bounds: 1672, 96, 93, 111
- offsets: 35, 0, 128, 128
-guardUpper/guardUpper000
- bounds: 384, 1337, 93, 117
- offsets: 35, 11, 128, 128
-guardUpper/guardUpper001
- bounds: 640, 1065, 92, 117
- offsets: 36, 11, 128, 128
-hitAir/hitAir000
- bounds: 1294, 1739, 52, 102
- offsets: 36, 15, 128, 128
-hitAir/hitAir001
- bounds: 646, 1757, 59, 98
- offsets: 32, 26, 128, 128
-hitAir/hitAir002
- bounds: 1712, 599, 80, 82
- offsets: 20, 31, 128, 128
-hitAir/hitAir003
- bounds: 1279, 1496, 89, 50
- offsets: 14, 45, 128, 128
-hitAir/hitAir004
- bounds: 849, 1345, 85, 75
- offsets: 22, 32, 128, 128
-hitAir/hitAir005
- bounds: 1219, 1165, 72, 88
- offsets: 26, 22, 128, 128
-hitAir/hitAir006
- bounds: 403, 1941, 57, 106
- offsets: 35, 14, 128, 128
-hitAir/hitAir007
- bounds: 447, 1755, 51, 107
- offsets: 42, 11, 128, 128
-hitAir/hitAir008
- bounds: 498, 1755, 50, 107
- offsets: 39, 11, 128, 128
-hitSit/hitSit000
- bounds: 1445, 1592, 60, 72
- offsets: 0, 0, 64, 74
-hitSit/hitSit001
- bounds: 1542, 1909, 61, 74
- offsets: 2, 0, 64, 74
-hitSit/hitSit002
- bounds: 1789, 1651, 53, 74
- offsets: 11, 0, 64, 74
-hitSpin/hitSpin000
- bounds: 1188, 1546, 52, 96
- offsets: 7, 13, 64, 128
-hitSpin/hitSpin001
- bounds: 771, 1144, 80, 97
- offsets: 18, 13, 128, 128
-hitSpin/hitSpin002
- bounds: 890, 1661, 64, 95
- offsets: 0, 13, 64, 128
-hitSpin/hitSpin003
- bounds: 665, 1583, 64, 98
- offsets: 0, 13, 64, 128
-hitSpin/hitSpin004
- bounds: 1866, 1244, 52, 97
- offsets: 0, 13, 64, 128
-hitSpin/hitSpin005
- bounds: 1920, 0, 79, 96
- offsets: 17, 13, 128, 128
-hitUnder/hitUnder000
- bounds: 1505, 1573, 61, 92
- offsets: 28, 11, 128, 128
-hitUnder/hitUnder001
- bounds: 508, 1592, 56, 99
- offsets: 33, 12, 128, 128
-hitUnder/hitUnder002
- bounds: 1231, 1642, 53, 104
- offsets: 37, 11, 128, 128
-hitUpper/hitUpper000
- bounds: 1755, 207, 77, 98
- offsets: 20, 13, 128, 128
-hitUpper/hitUpper001
- bounds: 1538, 1179, 64, 99
- offsets: 29, 13, 128, 128
-hitUpper/hitUpper002
- bounds: 1654, 1042, 53, 102
- offsets: 37, 12, 128, 128
-invin/invin000
- bounds: 1872, 539, 4, 4
-jump/jump000
- bounds: 1485, 1075, 57, 103
- offsets: 35, 10, 128, 128
-jump/jump001
- bounds: 564, 1592, 54, 99
- offsets: 36, 14, 128, 128
-jump/jump002
- bounds: 1310, 1546, 58, 91
- offsets: 37, 19, 128, 128
-jump/jump003
- bounds: 1842, 1645, 53, 80
- offsets: 36, 28, 128, 128
-jump/jump004
- bounds: 1427, 1413, 55, 82
- offsets: 38, 29, 128, 128
-jump/jump005
- bounds: 1918, 1236, 56, 93
- offsets: 37, 23, 128, 128
-jump/jump006
- bounds: 1292, 965, 66, 102
- offsets: 36, 19, 128, 128
-jump/jump007
- bounds: 1237, 677, 68, 108
- offsets: 36, 15, 128, 128
-jump/jump008
- bounds: 577, 1335, 70, 108
- offsets: 34, 15, 128, 128
-objectAa/objectAa000
- bounds: 1907, 1843, 33, 46
-objectAa/objectAa001
- bounds: 1881, 1963, 33, 46
-objectAa/objectAa002
- bounds: 1914, 1963, 33, 46
-objectAa/objectAa003
- bounds: 1966, 1792, 33, 46
-objectAb/objectAb000
- bounds: 1715, 1938, 38, 37
-objectAb/objectAb001
- bounds: 1753, 1938, 38, 37
-objectAc/objectAc000
- bounds: 1834, 304, 38, 46
- offsets: 3, 0, 41, 46
-objectAc/objectAc001
- bounds: 1910, 1047, 37, 46
- offsets: 4, 0, 41, 46
-objectAc/objectAc002
- bounds: 1834, 350, 41, 46
-objectAc/objectAc003
- bounds: 1402, 1640, 41, 46
-objectAd/objectAd000
- bounds: 1832, 268, 40, 36
-objectAd/objectAd001
- bounds: 1011, 1841, 40, 37
-objectAd/objectAd002
- bounds: 590, 1544, 64, 48
-objectAd/objectAd003
- bounds: 913, 1999, 64, 48
-objectAd/objectAd004
- bounds: 1894, 1757, 49, 43
-objectAd/objectAd005
- bounds: 1796, 1972, 53, 43
-objectAd/objectAd006
- bounds: 1884, 1800, 49, 43
-objectAd/objectAd007
- bounds: 1943, 1749, 53, 43
-objectAe/objectAe000
- bounds: 519, 1546, 71, 46
-objectAe/objectAe001
- bounds: 766, 1861, 71, 46
-objectAe/objectAe002
- bounds: 404, 1555, 69, 44
-objectAe/objectAe003
- bounds: 1791, 1928, 69, 44
-objectAe/objectAe004
- bounds: 809, 2010, 52, 37
-objectAe/objectAe005
- bounds: 861, 2010, 52, 37
-objectAf/objectAf000
- bounds: 771, 2008, 38, 39
-objectAg/objectAg000
- bounds: 1402, 1686, 46, 46
-objectAg/objectAg001
- bounds: 1860, 1917, 46, 46
-objectAg/objectAg002
- bounds: 1942, 1881, 46, 46
-objectAg/objectAg003
- bounds: 1841, 811, 46, 46
-objectAg/objectAg004
- bounds: 0, 1984, 64, 63
-objectAg/objectAg005
- bounds: 64, 1984, 64, 62
-objectAh/objectAh000
- bounds: 654, 1540, 86, 43
-objectAh/objectAh001
- bounds: 889, 1520, 86, 43
-objectAi/objectAi000
- bounds: 1556, 1665, 36, 44
-objectAi/objectAi001
- bounds: 1592, 1659, 34, 44
-objectAj/objectAj000
- bounds: 1849, 1972, 32, 43
-objectAj/objectAj001
- bounds: 1933, 1800, 33, 43
-objectAj/objectAj002
- bounds: 1626, 1670, 32, 43
-objectAj/objectAj003
- bounds: 1966, 1838, 33, 43
-objectAk/objectAk000
- bounds: 1907, 1715, 35, 42
-objectAk/objectAk001
- bounds: 1907, 1889, 35, 42
-objectAl/objectAl000
- bounds: 618, 1696, 47, 49
-objectAl/objectAl001
- bounds: 1424, 1357, 51, 56
-objectAl/objectAl002
- bounds: 970, 1088, 50, 55
-objectAl/objectAl003
- bounds: 1448, 1664, 46, 55
-objectAl/objectAl004
- bounds: 1893, 891, 46, 59
-objectAl/objectAl005
- bounds: 576, 1691, 42, 59
-objectAm/objectAm000
- bounds: 1910, 1093, 35, 47
-objectAm/objectAm001
- bounds: 1256, 522, 33, 48
-objectAn/objectAn000
- bounds: 1841, 857, 45, 7
-objectBa/objectBa000
- bounds: 1152, 160, 256, 2
-objectBa/objectBa001
- bounds: 1664, 64, 256, 32
-objectCa/objectCa000
- bounds: 128, 1850, 116, 98
-objectCa/objectCa001
- bounds: 500, 1224, 90, 102
-objectCa/objectCa002
- bounds: 932, 1421, 68, 99
-objectCa/objectCa003
- bounds: 1654, 846, 55, 98
-objectCa/objectCa004
- bounds: 1304, 264, 94, 108
-objectCa/objectCa005
- bounds: 1152, 266, 120, 119
-objectCa/objectCa006
- bounds: 128, 1728, 116, 122
-objectCa/objectCa007
- bounds: 256, 1472, 116, 121
-objectCb/objectCb000
- bounds: 384, 1216, 116, 121
-objectCb/objectCb001
- bounds: 640, 936, 90, 129
-objectCb/objectCb002
- bounds: 1152, 385, 88, 130
-objectCb/objectCb003
- bounds: 1024, 576, 116, 101
-objectCb/objectCb004
- bounds: 1152, 162, 152, 104
-objectCb/objectCb005
- bounds: 1408, 128, 146, 86
-objectCb/objectCb006
- bounds: 1024, 677, 118, 85
-objectCb/objectCb007
- bounds: 1554, 128, 118, 87
-objectCb/objectCb008
- bounds: 888, 768, 118, 87
-objectCb/objectCb009
- bounds: 1358, 1062, 71, 90
-objectCb/objectCb010
- bounds: 1304, 162, 104, 102
-objectCb/objectCb011
- bounds: 768, 768, 120, 99
-objectCb/objectCb012
- bounds: 256, 1593, 116, 98
-redAura/redAura000
- bounds: 1924, 2009, 32, 32
-shotAa/shotAa000
- bounds: 513, 1941, 51, 105
- offsets: 13, 11, 64, 128
-shotAa/shotAa001
- bounds: 1171, 1336, 46, 105
- offsets: 18, 11, 64, 128
-shotAa/shotAa002
- bounds: 548, 1755, 48, 105
- offsets: 16, 11, 64, 128
-shotAa/shotAa003
- bounds: 1431, 869, 50, 105
- offsets: 14, 11, 64, 128
-shotAa/shotAa004
- bounds: 621, 1941, 50, 105
- offsets: 14, 11, 64, 128
-shotAa/shotAa005
- bounds: 596, 1750, 50, 105
- offsets: 14, 11, 64, 128
-shotAa/shotAa006
- bounds: 671, 1941, 50, 105
- offsets: 14, 11, 64, 128
-shotAa/shotAa007
- bounds: 954, 1563, 46, 105
- offsets: 18, 11, 64, 128
-shotAa/shotAa008
- bounds: 1632, 1565, 46, 105
- offsets: 18, 11, 64, 128
-shotAa/shotAa009
- bounds: 1024, 855, 62, 105
- offsets: 2, 11, 64, 128
-shotAa/shotAa010
- bounds: 954, 1668, 50, 105
- offsets: 14, 11, 64, 128
-shotAb/shotAb000
- bounds: 1947, 1063, 52, 80
- offsets: 7, 11, 64, 128
-shotAb/shotAb001
- bounds: 1504, 1749, 52, 80
- offsets: 7, 11, 64, 128
-shotAb/shotAb002
- bounds: 1507, 1829, 52, 80
- offsets: 7, 11, 64, 128
-shotAb/shotAb003
- bounds: 1556, 1749, 52, 80
- offsets: 7, 11, 64, 128
-shotAb/shotAb004
- bounds: 1559, 1829, 52, 80
- offsets: 7, 11, 64, 128
-shotAb/shotAb005
- bounds: 1608, 1749, 52, 80
- offsets: 7, 11, 64, 128
-shotAb/shotAb006
- bounds: 1611, 1829, 52, 80
- offsets: 7, 11, 64, 128
-shotAb/shotAb007
- bounds: 1940, 813, 59, 80
- offsets: 0, 11, 64, 128
-shotAb/shotAb008
- bounds: 1660, 1749, 52, 80
- offsets: 7, 11, 64, 128
-shotAc/shotAc000
- bounds: 1603, 1909, 54, 74
- offsets: 10, 0, 64, 103
-shotAc/shotAc001
- bounds: 1126, 1550, 62, 92
- offsets: 2, 0, 64, 103
-shotAc/shotAc002
- bounds: 1384, 1841, 62, 94
- offsets: 0, 2, 64, 103
-shotAc/shotAc003
- bounds: 1709, 854, 62, 91
- offsets: 0, 3, 64, 103
-shotAc/shotAc004
- bounds: 1341, 1640, 61, 97
- offsets: 1, 0, 64, 103
-shotAc/shotAc005
- bounds: 1770, 956, 61, 91
- offsets: 0, 3, 64, 103
-shotAd/shotAd000
- bounds: 1121, 1949, 56, 98
- offsets: 7, 13, 64, 128
-shotAd/shotAd001
- bounds: 390, 1755, 57, 107
- offsets: 6, 4, 64, 128
-shotAd/shotAd002
- bounds: 590, 1224, 56, 111
- offsets: 5, 0, 64, 128
-shotAd/shotAd003
- bounds: 714, 1192, 57, 111
- offsets: 3, 0, 64, 128
-shotAd/shotAd004
- bounds: 1086, 762, 56, 111
- offsets: 5, 0, 64, 128
-shotAd/shotAd005
- bounds: 714, 1303, 57, 111
- offsets: 3, 0, 64, 128
-shotAd/shotAd006
- bounds: 334, 1755, 56, 110
- offsets: 5, 1, 64, 128
-shotAd/shotAd007
- bounds: 564, 1941, 57, 105
- offsets: 6, 6, 64, 128
-shotAd/shotAd008
- bounds: 1217, 1327, 62, 97
- offsets: 0, 14, 64, 128
-shotAd/shotAd009
- bounds: 1927, 1329, 55, 90
- offsets: 5, 21, 64, 128
-shotBa/shotBa000
- bounds: 927, 1148, 69, 93
- offsets: 18, 11, 128, 128
-shotBa/shotBa001
- bounds: 1872, 736, 69, 69
- offsets: 18, 11, 128, 128
-shotBa/shotBa002
- bounds: 818, 1520, 71, 61
- offsets: 17, 11, 128, 128
-shotBa/shotBa003
- bounds: 1779, 406, 65, 65
- offsets: 17, 11, 128, 128
-shotBa/shotBa004
- bounds: 771, 1342, 78, 72
- offsets: 13, 11, 128, 128
-shotBa/shotBa005
- bounds: 1368, 1563, 77, 77
- offsets: 16, 12, 128, 128
-shotBa/shotBa006
- bounds: 1024, 1058, 62, 87
- offsets: 26, 12, 128, 128
-shotBa/shotBa007
- bounds: 1024, 960, 62, 98
- offsets: 35, 12, 128, 128
-shotBa/shotBa008
- bounds: 1093, 1848, 57, 101
- offsets: 39, 11, 128, 128
-shotBa/shotBa009
- bounds: 1173, 1441, 55, 105
- offsets: 41, 11, 128, 128
-shotBa/shotBa010
- bounds: 460, 1941, 53, 106
- offsets: 41, 11, 128, 128
-shotBa/shotBa011
- bounds: 1126, 1442, 47, 108
- offsets: 38, 11, 128, 128
-shotBa/shotBa012
- bounds: 1678, 1563, 50, 103
- offsets: 37, 11, 128, 128
-shotBa/shotBa013
- bounds: 1399, 1737, 51, 104
- offsets: 37, 11, 128, 128
-shotBa/shotBa014
- bounds: 1606, 1278, 55, 105
- offsets: 31, 11, 128, 128
-shotBb/shotBb000
- bounds: 1532, 794, 55, 83
- offsets: 36, 30, 128, 128
-shotBb/shotBb001
- bounds: 1359, 1351, 65, 72
- offsets: 28, 35, 128, 128
-shotBb/shotBb002
- bounds: 776, 1791, 61, 70
- offsets: 30, 31, 128, 128
-shotBb/shotBb003
- bounds: 1494, 1665, 62, 61
- offsets: 31, 39, 128, 128
-shotBb/shotBb004
- bounds: 1734, 1975, 62, 61
- offsets: 28, 39, 128, 128
-shotBb/shotBb005
- bounds: 910, 1086, 60, 62
- offsets: 29, 42, 128, 128
-shotBb/shotBb006
- bounds: 1657, 1909, 58, 70
- offsets: 32, 37, 128, 128
-shotCa/shotCa000
- bounds: 1228, 1424, 51, 105
- offsets: 35, 11, 128, 128
-shotCa/shotCa001
- bounds: 837, 1685, 53, 105
- offsets: 33, 11, 128, 128
-shotCa/shotCa002
- bounds: 721, 1940, 50, 105
- offsets: 34, 11, 128, 128
-shotCa/shotCa003
- bounds: 943, 1894, 50, 105
- offsets: 34, 11, 128, 128
-shotCa/shotCa004
- bounds: 1057, 1640, 51, 105
- offsets: 35, 11, 128, 128
-shotCa/shotCa005
- bounds: 960, 1773, 51, 105
- offsets: 35, 11, 128, 128
-shotCb/shotCb000
- bounds: 1450, 1749, 54, 80
- offsets: 18, 19, 128, 128
-shotCb/shotCb001
- bounds: 577, 1860, 63, 81
- offsets: 13, 19, 128, 128
-shotCb/shotCb002
- bounds: 408, 1862, 63, 79
- offsets: 19, 19, 128, 128
-shotCb/shotCb003
- bounds: 1197, 1253, 82, 74
- offsets: 27, 19, 128, 128
-shotCb/shotCb004
- bounds: 665, 1681, 71, 76
- offsets: 27, 19, 128, 128
-shotCb/shotCb005
- bounds: 1588, 768, 67, 76
- offsets: 28, 19, 128, 128
-shotCb/shotCb006
- bounds: 1942, 1595, 57, 78
- offsets: 27, 19, 128, 128
-shotCb/shotCb007
- bounds: 1663, 1829, 52, 80
- offsets: 23, 19, 128, 128
-shotCb/shotCb008
- bounds: 526, 1862, 51, 79
- offsets: 23, 19, 128, 128
-shotDa/shotDa000
- bounds: 1449, 692, 83, 81
- offsets: 31, 0, 116, 104
-shotDa/shotDa001
- bounds: 1368, 692, 81, 84
- offsets: 30, 0, 116, 104
-shotDa/shotDa002
- bounds: 1408, 776, 73, 93
- offsets: 22, 0, 116, 104
-sit/sit000
- bounds: 1177, 1737, 54, 97
- offsets: 0, 1, 54, 106
-sit/sit001
- bounds: 1940, 1508, 54, 87
- offsets: 0, 1, 54, 106
-sit/sit002
- bounds: 1712, 1717, 54, 78
- offsets: 0, 2, 54, 106
-sit/sit003
- bounds: 1715, 1795, 51, 79
- offsets: 0, 1, 54, 106
-sit/sit004
- bounds: 1895, 1631, 47, 84
- offsets: 2, 2, 54, 106
-sit/sit005
- bounds: 1893, 1536, 47, 95
- offsets: 2, 1, 54, 106
-sit/sit006
- bounds: 1676, 1459, 48, 104
- offsets: 0, 1, 54, 106
-spellAa/spellAa000
- bounds: 1941, 715, 58, 98
- offsets: 19, 0, 80, 98
-spellAa/spellAa001
- bounds: 890, 1563, 64, 98
- offsets: 15, 0, 80, 98
-spellAa/spellAa002
- bounds: 1059, 1241, 69, 98
- offsets: 11, 0, 80, 98
-spellAa/spellAa003
- bounds: 1225, 1067, 68, 98
- offsets: 12, 0, 80, 98
-spellAa/spellAa004
- bounds: 1654, 944, 55, 98
- offsets: 19, 0, 80, 98
-spellAa/spellAa005
- bounds: 1260, 1841, 62, 95
- offsets: 10, 0, 80, 98
-spellAa/spellAa006
- bounds: 1606, 1475, 70, 90
- offsets: 0, 0, 80, 98
-spellAa/spellAa007
- bounds: 372, 1600, 70, 91
- offsets: 0, 0, 80, 98
-spellAa/spellAa008
- bounds: 1128, 1241, 69, 95
- offsets: 3, 0, 80, 98
-spellAa/spellAa009
- bounds: 1755, 1047, 55, 98
- offsets: 13, 0, 80, 98
-spellAa/spellAa010
- bounds: 1858, 1047, 52, 98
- offsets: 24, 0, 80, 98
-spellAa/spellAa011
- bounds: 1240, 1546, 70, 91
- offsets: 0, 0, 80, 98
-spellBa/spellBa000
- bounds: 788, 1687, 49, 104
- offsets: 41, 11, 128, 128
-spellBa/spellBa001
- bounds: 1283, 1936, 57, 100
- offsets: 35, 12, 128, 128
-spellBa/spellBa002
- bounds: 1778, 775, 63, 89
- offsets: 30, 12, 128, 128
-spellBa/spellBa003
- bounds: 1479, 1282, 62, 84
- offsets: 36, 12, 128, 128
-spellBa/spellBa004
- bounds: 1864, 1145, 53, 99
- offsets: 38, 12, 128, 128
-spellBa/spellBa005
- bounds: 1300, 561, 70, 107
- offsets: 30, 12, 128, 128
-spellBa/spellBa006
- bounds: 269, 1941, 68, 106
- offsets: 30, 12, 128, 128
-spellBa/spellBa007
- bounds: 337, 1941, 66, 106
- offsets: 30, 12, 128, 128
-spellBa/spellBa008
- bounds: 1000, 1539, 60, 101
- offsets: 35, 13, 128, 128
-spellBa/spellBa009
- bounds: 736, 1681, 52, 104
- offsets: 37, 11, 128, 128
-spellBulletAa/spellBulletAa000
- bounds: 512, 0, 256, 168
-spellBulletAa/spellBulletAa001
- bounds: 128, 1600, 128, 128
-spellBulletAa/spellBulletAa002
- bounds: 256, 1344, 128, 128
-spellBulletAa/spellBulletAa003
- bounds: 384, 1088, 128, 128
-spellBulletAa/spellBulletAa004
- bounds: 512, 1064, 128, 128
-spellBulletBa/spellBulletBa000
- bounds: 640, 808, 128, 128
-spellBulletCa/spellBulletCa000
- bounds: 256, 192, 128, 256
-spellBulletCa/spellBulletCa001
- bounds: 0, 704, 128, 256
-spellBulletCa/spellBulletCa002
- bounds: 128, 448, 128, 256
-spellBulletCa/spellBulletCa003
- bounds: 384, 192, 128, 256
-spellBulletCa/spellBulletCa004
- bounds: 512, 168, 128, 256
-spellBulletCa/spellBulletCa005
- bounds: 0, 960, 128, 256
-spellBulletCa/spellBulletCa006
- bounds: 128, 704, 128, 256
-spellBulletCa/spellBulletCa007
- bounds: 256, 448, 128, 256
-spellBulletCa/spellBulletCa008
- bounds: 640, 168, 128, 256
-spellBulletCa/spellBulletCa009
- bounds: 768, 0, 128, 256
-spellBulletCa/spellBulletCa010
- bounds: 0, 1216, 128, 256
-spellBulletCa/spellBulletCa011
- bounds: 128, 960, 128, 256
-spellBulletCa/spellBulletCa012
- bounds: 256, 704, 128, 256
-spellBulletCa/spellBulletCa013
- bounds: 384, 448, 128, 256
-spellBulletCa/spellBulletCa014
- bounds: 512, 424, 128, 256
-spellBulletCa/spellBulletCa015
- bounds: 896, 0, 128, 256
-spellBulletCa/spellBulletCa016
- bounds: 0, 1472, 128, 256
-spellBulletCa/spellBulletCa017
- bounds: 128, 1216, 128, 256
-spellBulletCa/spellBulletCa018
- bounds: 256, 960, 128, 256
-spellBulletCa/spellBulletCa019
- bounds: 384, 704, 128, 256
-spellBulletCa/spellBulletCa020
- bounds: 512, 680, 128, 256
-spellBulletCa/spellBulletCa021
- bounds: 640, 424, 128, 256
-spellBulletCa/spellBulletCa022
- bounds: 768, 256, 128, 256
-spellBulletCa/spellBulletCa023
- bounds: 1024, 0, 128, 256
-spellBulletCa/spellBulletCa024
- bounds: 0, 1728, 128, 256
-spellBulletDa/spellBulletDa000
- bounds: 768, 640, 128, 128
-spellBulletDa/spellBulletDa001
- bounds: 896, 576, 128, 128
-spellBulletEa/spellBulletEa000
- bounds: 896, 416, 256, 32
-spellBulletFa/spellBulletFa000
- bounds: 0, 0, 512, 128
-spellBulletFb/spellBulletFb000
- bounds: 1024, 448, 128, 128
-spellCa/spellCa000
- bounds: 1595, 844, 59, 97
- offsets: 26, 0, 97, 103
-spellCa/spellCa001
- bounds: 640, 1855, 63, 86
- offsets: 23, 0, 97, 103
-spellCa/spellCa002
- bounds: 705, 1785, 71, 71
- offsets: 19, 0, 97, 103
-spellCa/spellCa003
- bounds: 748, 1510, 70, 73
- offsets: 16, 0, 97, 103
-spellCa/spellCa004
- bounds: 703, 1856, 63, 84
- offsets: 20, 0, 97, 103
-spellCa/spellCa005
- bounds: 1011, 1745, 62, 96
- offsets: 15, 0, 97, 103
-spellCa/spellCa006
- bounds: 1322, 1841, 62, 95
- offsets: 14, 0, 97, 103
-spellCa/spellCa007
- bounds: 1167, 1642, 64, 95
- offsets: 13, 0, 97, 103
-spellCa/spellCa008
- bounds: 1541, 1470, 65, 95
- offsets: 13, 0, 97, 103
-spellCall/spellCall000
- bounds: 1810, 1047, 48, 98
- offsets: 32, 0, 80, 98
-spellCall/spellCall001
- bounds: 1073, 1745, 54, 103
- offsets: 41, 11, 128, 128
-spellCall/spellCall002
- bounds: 1479, 1178, 59, 104
- offsets: 39, 11, 128, 128
-spellCall/spellCall003
- bounds: 853, 1241, 77, 104
- offsets: 20, 11, 128, 128
-spellCall/spellCall004
- bounds: 910, 983, 66, 103
- offsets: 33, 11, 128, 128
-spellCall/spellCall005
- bounds: 1305, 668, 63, 108
- offsets: 32, 11, 128, 128
-spellCall/spellCall006
- bounds: 646, 1182, 68, 116
- offsets: 28, 11, 128, 128
-spellCall/spellCall007
- bounds: 509, 1326, 68, 116
- offsets: 27, 11, 128, 128
-spellCall/spellCall008
- bounds: 647, 1298, 67, 116
- offsets: 27, 11, 128, 128
-spellCall/spellCall009
- bounds: 1390, 1935, 55, 101
- offsets: 39, 11, 128, 128
-spellCall/spellCall010
- bounds: 1346, 1737, 53, 104
- offsets: 46, 11, 128, 128
-spellCall/spellCall011
- bounds: 1707, 1042, 48, 103
- offsets: 43, 11, 128, 128
-spellCall/spellCall012
- bounds: 1494, 1468, 47, 105
- offsets: 40, 11, 128, 128
-spellDa/spellDa000
- bounds: 1789, 1551, 52, 100
- offsets: 12, 0, 72, 100
-spellDa/spellDa001
- bounds: 1813, 1145, 51, 100
- offsets: 12, 0, 72, 100
-spellDa/spellDa002
- bounds: 1599, 941, 55, 99
- offsets: 13, 0, 72, 100
-spellDa/spellDa003
- bounds: 1293, 1067, 65, 100
- offsets: 7, 0, 72, 100
-spellDa/spellDa004
- bounds: 128, 1948, 72, 99
- offsets: 0, 0, 72, 100
-spellDa/spellDa005
- bounds: 1154, 970, 69, 99
- offsets: 3, 0, 72, 100
-spellDa/spellDa006
- bounds: 1223, 968, 69, 99
- offsets: 3, 0, 72, 100
-spellDa/spellDa007
- bounds: 883, 1894, 60, 100
- offsets: 11, 0, 72, 100
-spellDa/spellDa008
- bounds: 1841, 1545, 52, 100
- offsets: 12, 0, 72, 100
-spellEa/spellEa000
- bounds: 1059, 1339, 63, 103
- offsets: 1, 0, 85, 103
-spellEa/spellEa001
- bounds: 1482, 1366, 59, 102
- offsets: 3, 0, 85, 103
-spellEa/spellEa002
- bounds: 1284, 1637, 57, 102
- offsets: 5, 0, 85, 103
-spellEa/spellEa003
- bounds: 1359, 1152, 63, 103
- offsets: 6, 0, 85, 103
-spellEa/spellEa004
- bounds: 1153, 867, 69, 103
- offsets: 9, 0, 85, 103
-spellEa/spellEa005
- bounds: 1222, 866, 70, 102
- offsets: 10, 0, 85, 103
-spellEa/spellEa006
- bounds: 1872, 438, 69, 101
- offsets: 11, 0, 85, 103
-spellEa/spellEa007
- bounds: 1227, 583, 73, 94
- offsets: 10, 0, 85, 103
-spellEa/spellEa008
- bounds: 1712, 681, 75, 93
- offsets: 10, 0, 85, 103
-spellEa/spellEa009
- bounds: 1787, 683, 75, 92
- offsets: 10, 0, 85, 103
-spellEa/spellEa010
- bounds: 1067, 1147, 72, 94
- offsets: 10, 0, 85, 103
-spellEa/spellEa011
- bounds: 1279, 1399, 66, 97
- offsets: 11, 0, 85, 103
-spellEa/spellEa012
- bounds: 1201, 1839, 59, 99
- offsets: 12, 0, 85, 103
-spellFa/spellFa000
- bounds: 1877, 1341, 50, 98
- offsets: 11, 0, 61, 98
-spellFa/spellFa001
- bounds: 1177, 1949, 56, 98
- offsets: 5, 0, 61, 98
-spellFa/spellFa002
- bounds: 1771, 864, 61, 92
- offsets: 0, 0, 61, 98
-spellFa/spellFa003
- bounds: 1709, 945, 61, 92
- offsets: 0, 0, 61, 98
-spellFa/spellFa004
- bounds: 1831, 956, 61, 91
- offsets: 0, 0, 61, 98
-spellFa/spellFa005
- bounds: 1832, 864, 61, 91
- offsets: 0, 0, 61, 98
-spellFa/spellFa006
- bounds: 1728, 1551, 61, 92
- offsets: 0, 0, 61, 98
-spellGa/spellGa000
- bounds: 1707, 1145, 53, 102
- offsets: 20, 0, 73, 104
-spellGa/spellGa001
- bounds: 1108, 1642, 59, 101
- offsets: 14, 0, 73, 104
-spellGa/spellGa002
- bounds: 1481, 975, 61, 100
- offsets: 12, 0, 73, 104
-spellGa/spellGa003
- bounds: 930, 1241, 66, 102
- offsets: 5, 0, 73, 104
-spellGa/spellGa004
- bounds: 404, 1454, 73, 101
- offsets: 0, 0, 73, 104
-spellGa/spellGa005
- bounds: 1761, 305, 73, 101
- offsets: 0, 0, 73, 104
-spellGa/spellGa006
- bounds: 577, 1443, 70, 101
- offsets: 0, 0, 73, 104
-spellGa/spellGa007
- bounds: 996, 1241, 63, 102
- offsets: 5, 0, 73, 104
-spellGa/spellGa008
- bounds: 1656, 666, 56, 103
- offsets: 16, 0, 73, 104
-stand/stand000
- bounds: 1127, 1743, 50, 105
- offsets: 0, 11, 54, 128
-stand/stand001
- bounds: 1004, 1640, 53, 105
- offsets: 1, 11, 54, 128
-stand/stand002
- bounds: 993, 1878, 50, 105
- offsets: 4, 11, 54, 128
-stand/stand003
- bounds: 1043, 1878, 50, 105
- offsets: 4, 11, 54, 128
-stand/stand004
- bounds: 1233, 1938, 50, 105
- offsets: 4, 11, 54, 128
-stand/stand005
- bounds: 1340, 1936, 50, 105
- offsets: 4, 11, 54, 128
-stand/stand006
- bounds: 1445, 1935, 50, 105
- offsets: 3, 11, 54, 128
-stand/stand007
- bounds: 1495, 1935, 47, 105
- offsets: 3, 11, 54, 128
-stand/stand008
- bounds: 1661, 1249, 46, 105
- offsets: 3, 11, 54, 128
-stand/stand009
- bounds: 1606, 1040, 48, 105
- offsets: 1, 11, 54, 128
-stand/stand010
- bounds: 1950, 96, 49, 105
- offsets: 0, 11, 54, 128
-stand/stand011
- bounds: 1950, 201, 49, 105
- offsets: 0, 11, 54, 128
-stand/stand012
- bounds: 1950, 306, 49, 105
- offsets: 0, 11, 54, 128
-stand/stand013
- bounds: 1950, 411, 49, 105
- offsets: 0, 11, 54, 128
-stand/stand014
- bounds: 1658, 1144, 49, 105
- offsets: 0, 11, 54, 128
-stand/stand015
- bounds: 1669, 1354, 49, 105
- offsets: 0, 11, 54, 128
-standUp/standUp000
- bounds: 1305, 776, 103, 43
- offsets: 15, 10, 128, 128
-standUp/standUp001
- bounds: 1857, 206, 93, 62
- offsets: 17, 11, 128, 128
-standUp/standUp002
- bounds: 890, 1821, 70, 73
- offsets: 26, 12, 128, 128
-standUp/standUp003
- bounds: 1893, 805, 47, 86
- offsets: 40, 11, 128, 128
-standUp/standUp004
- bounds: 1883, 1439, 46, 97
- offsets: 39, 11, 128, 128
-standUp/standUp005
- bounds: 477, 1465, 42, 104
- offsets: 42, 11, 128, 128
-standUpBack/standUpBack000
- bounds: 1370, 598, 123, 56
-standUpBack/standUpBack001
- bounds: 1493, 599, 122, 55
-standUpFront/standUpFront000
- bounds: 768, 931, 128, 56
-standUpFront/standUpFront001
- bounds: 647, 1414, 128, 55
-tailAa/tailAa000
- bounds: 1862, 683, 10, 128
-walkFront/walkFront000
- bounds: 1813, 1245, 53, 100
- offsets: 0, 11, 53, 128
-walkFront/walkFront001
- bounds: 1824, 1345, 53, 100
- offsets: 0, 12, 53, 128
-walkFront/walkFront002
- bounds: 1707, 1247, 53, 102
- offsets: 0, 11, 53, 128
-walkFront/walkFront003
- bounds: 1718, 1349, 53, 101
- offsets: 0, 12, 53, 128
-walkFront/walkFront004
- bounds: 1771, 1349, 53, 101
- offsets: 0, 11, 53, 128
-walkFront/walkFront005
- bounds: 1830, 1445, 53, 100
- offsets: 0, 11, 53, 128
-walkFront/walkFront006
- bounds: 1724, 1450, 53, 101
- offsets: 0, 11, 53, 128
-walkFront/walkFront007
- bounds: 1760, 1145, 53, 102
- offsets: 0, 11, 53, 128
-walkFront/walkFront008
- bounds: 1760, 1247, 53, 102
- offsets: 0, 11, 53, 128
-walkFront/walkFront009
- bounds: 1777, 1450, 53, 101
- offsets: 0, 11, 53, 128
diff --git a/target/classes/character/alice/精灵1.2.png b/target/classes/character/alice/精灵1.2.png
deleted file mode 100644
index 0574321..0000000
Binary files a/target/classes/character/alice/精灵1.2.png and /dev/null differ
diff --git a/target/classes/uno/mloluyu/characters/AdvancedFighter.class b/target/classes/uno/mloluyu/characters/AdvancedFighter.class
index 5c05aba..102df56 100644
Binary files a/target/classes/uno/mloluyu/characters/AdvancedFighter.class and b/target/classes/uno/mloluyu/characters/AdvancedFighter.class differ
diff --git a/target/classes/uno/mloluyu/characters/SimpleFighter.class b/target/classes/uno/mloluyu/characters/SimpleFighter.class
index 67835e6..783970b 100644
Binary files a/target/classes/uno/mloluyu/characters/SimpleFighter.class and b/target/classes/uno/mloluyu/characters/SimpleFighter.class differ
diff --git a/target/classes/uno/mloluyu/characters/character/Action.class b/target/classes/uno/mloluyu/characters/character/Action.class
deleted file mode 100644
index 7e31320..0000000
Binary files a/target/classes/uno/mloluyu/characters/character/Action.class and /dev/null differ
diff --git a/target/classes/uno/mloluyu/characters/character/Alice.class b/target/classes/uno/mloluyu/characters/character/Alice.class
deleted file mode 100644
index e3073e0..0000000
Binary files a/target/classes/uno/mloluyu/characters/character/Alice.class and /dev/null differ
diff --git a/target/classes/uno/mloluyu/characters/character/Fighter$FrameEventListener.class b/target/classes/uno/mloluyu/characters/character/Fighter$FrameEventListener.class
deleted file mode 100644
index 2ed782f..0000000
Binary files a/target/classes/uno/mloluyu/characters/character/Fighter$FrameEventListener.class and /dev/null differ
diff --git a/target/classes/uno/mloluyu/characters/character/Fighter.class b/target/classes/uno/mloluyu/characters/character/Fighter.class
deleted file mode 100644
index b0f71cd..0000000
Binary files a/target/classes/uno/mloluyu/characters/character/Fighter.class and /dev/null differ
diff --git a/target/classes/uno/mloluyu/characters/character/FighterAnimationManager.class b/target/classes/uno/mloluyu/characters/character/FighterAnimationManager.class
deleted file mode 100644
index 627c230..0000000
Binary files a/target/classes/uno/mloluyu/characters/character/FighterAnimationManager.class and /dev/null differ
diff --git a/target/classes/uno/mloluyu/characters/character/FighterList.class b/target/classes/uno/mloluyu/characters/character/FighterList.class
deleted file mode 100644
index 48dfaa6..0000000
Binary files a/target/classes/uno/mloluyu/characters/character/FighterList.class and /dev/null differ
diff --git a/target/classes/uno/mloluyu/characters/character/Reimu.class b/target/classes/uno/mloluyu/characters/character/Reimu.class
deleted file mode 100644
index dc55e6c..0000000
Binary files a/target/classes/uno/mloluyu/characters/character/Reimu.class and /dev/null differ
diff --git a/target/classes/uno/mloluyu/desktop/CharacterSelectScreen.class b/target/classes/uno/mloluyu/desktop/CharacterSelectScreen.class
index 63af0f7..774f35c 100644
Binary files a/target/classes/uno/mloluyu/desktop/CharacterSelectScreen.class and b/target/classes/uno/mloluyu/desktop/CharacterSelectScreen.class differ
diff --git a/target/classes/uno/mloluyu/desktop/GameScreen.class b/target/classes/uno/mloluyu/desktop/GameScreen.class
index cf1b703..ffa7179 100644
Binary files a/target/classes/uno/mloluyu/desktop/GameScreen.class and b/target/classes/uno/mloluyu/desktop/GameScreen.class differ
diff --git a/target/classes/uno/mloluyu/desktop/MainMenuScreen.class b/target/classes/uno/mloluyu/desktop/MainMenuScreen.class
index 3c3c293..310cbe0 100644
Binary files a/target/classes/uno/mloluyu/desktop/MainMenuScreen.class and b/target/classes/uno/mloluyu/desktop/MainMenuScreen.class differ
diff --git a/target/classes/uno/mloluyu/desktop/NetworkSettingsScreen$1.class b/target/classes/uno/mloluyu/desktop/NetworkSettingsScreen$1.class
index 4e28c53..283b1c0 100644
Binary files a/target/classes/uno/mloluyu/desktop/NetworkSettingsScreen$1.class and b/target/classes/uno/mloluyu/desktop/NetworkSettingsScreen$1.class differ
diff --git a/target/classes/uno/mloluyu/desktop/NetworkSettingsScreen.class b/target/classes/uno/mloluyu/desktop/NetworkSettingsScreen.class
index c15a4d2..b845803 100644
Binary files a/target/classes/uno/mloluyu/desktop/NetworkSettingsScreen.class and b/target/classes/uno/mloluyu/desktop/NetworkSettingsScreen.class differ
diff --git a/target/classes/uno/mloluyu/network/ConnectServer.class b/target/classes/uno/mloluyu/network/ConnectServer.class
index 23e2460..5c99138 100644
Binary files a/target/classes/uno/mloluyu/network/ConnectServer.class and b/target/classes/uno/mloluyu/network/ConnectServer.class differ
diff --git a/target/classes/uno/mloluyu/network/NetworkManager.class b/target/classes/uno/mloluyu/network/NetworkManager.class
index 54abb5a..a9911bf 100644
Binary files a/target/classes/uno/mloluyu/network/NetworkManager.class and b/target/classes/uno/mloluyu/network/NetworkManager.class differ
diff --git a/target/classes/uno/mloluyu/versatile/FighterController.class b/target/classes/uno/mloluyu/versatile/FighterController.class
index 8e8f706..63b3640 100644
Binary files a/target/classes/uno/mloluyu/versatile/FighterController.class and b/target/classes/uno/mloluyu/versatile/FighterController.class differ
diff --git a/target/game-1.0-SNAPSHOT.jar b/target/game-1.0-SNAPSHOT.jar
index 197191f..6e53a9d 100644
Binary files a/target/game-1.0-SNAPSHOT.jar and b/target/game-1.0-SNAPSHOT.jar differ
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index ab0a50d..7b27052 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -1,3 +1,2 @@
uno\mloluyu\network\ConnectServer.class
-uno\mloluyu\characters\character\Fighter$1.class
uno\mloluyu\util\SimpleFormatter.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index d049ed5..1b51486 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1,11 +1,5 @@
C:\Users\www\Documents\Game\Game\src\main\java\uno\mloluyu\characters\Action.java
C:\Users\www\Documents\Game\Game\src\main\java\uno\mloluyu\characters\AdvancedFighter.java
-C:\Users\www\Documents\Game\Game\src\main\java\uno\mloluyu\characters\character\Action.java
-C:\Users\www\Documents\Game\Game\src\main\java\uno\mloluyu\characters\character\Alice.java
-C:\Users\www\Documents\Game\Game\src\main\java\uno\mloluyu\characters\character\Fighter.java
-C:\Users\www\Documents\Game\Game\src\main\java\uno\mloluyu\characters\character\FighterAnimationManager.java
-C:\Users\www\Documents\Game\Game\src\main\java\uno\mloluyu\characters\character\FighterList.java
-C:\Users\www\Documents\Game\Game\src\main\java\uno\mloluyu\characters\character\Reimu.java
C:\Users\www\Documents\Game\Game\src\main\java\uno\mloluyu\characters\SimpleFighter.java
C:\Users\www\Documents\Game\Game\src\main\java\uno\mloluyu\desktop\CharacterSelectScreen.java
C:\Users\www\Documents\Game\Game\src\main\java\uno\mloluyu\desktop\DesktopLauncher.java