2 Commity 2f2a96678d ... 7c860589c9

Autor SHA1 Wiadomość Data
  181404010226 7c860589c9 10.9号优化 2 miesięcy temu
  181404010226 38957bad55 关卡奖励 2 miesięcy temu
35 zmienionych plików z 390 dodań i 335 usunięć
  1. 28 27
      assets/Scenes/GameLevel.scene
  2. 0 9
      assets/data/backups/levels.meta
  3. 19 19
      assets/data/enemies.json
  4. BIN
      assets/data/excel/__pycache__/enemy_config_manager.cpython-313.pyc
  5. 38 0
      assets/data/excel/enemy_config_manager.py
  6. BIN
      assets/data/excel/~$敌人配置表.xlsx
  7. 12 0
      assets/data/excel/~$敌人配置表.xlsx.meta
  8. BIN
      assets/data/excel/关卡配置/关卡配置表.xlsx
  9. BIN
      assets/data/excel/敌人配置表.xlsx
  10. BIN
      assets/data/excel/方块武器配置/方块武器配置表.xlsx
  11. 1 1
      assets/data/levels/Level1.json
  12. 1 1
      assets/data/levels/Level10.json
  13. 34 34
      assets/data/levels/Level11.json
  14. 1 1
      assets/data/levels/Level13.json
  15. 1 1
      assets/data/levels/Level15.json
  16. 1 1
      assets/data/levels/Level2.json
  17. 1 1
      assets/data/levels/Level3.json
  18. 1 1
      assets/data/levels/Level4.json
  19. 15 15
      assets/data/levels/Level5.json
  20. 37 37
      assets/data/levels/Level6.json
  21. 37 37
      assets/data/levels/Level7.json
  22. 36 36
      assets/data/levels/Level8.json
  23. 27 27
      assets/data/levels/Level9.json
  24. 1 1
      assets/data/levels/level12.json
  25. 1 1
      assets/data/levels/level14.json
  26. 19 19
      assets/data/weapons.json
  27. 16 0
      assets/scripts/Animations/DamageNumberAni.ts
  28. 21 0
      assets/scripts/Animations/MoneyAni.ts
  29. 1 1
      assets/scripts/CombatSystem/BallController.ts
  30. 7 5
      assets/scripts/CombatSystem/BlockManager.ts
  31. 1 1
      assets/scripts/CombatSystem/EnemyInstance.ts
  32. 5 1
      assets/scripts/CombatSystem/SkillSelection/SkillManager.ts
  33. 27 1
      assets/scripts/Core/BundleLoader.ts
  34. 1 1
      assets/scripts/FourUI/MainSystem/MainUIControlller.ts
  35. 0 56
      assets/scripts/LevelSystem/LevelConfigManager.ts

+ 28 - 27
assets/Scenes/GameLevel.scene

@@ -164,7 +164,7 @@
     "_prefab": null,
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": 360,
+      "x": 360.00000000000006,
       "y": 667,
       "z": 0
     },
@@ -373,7 +373,7 @@
     "__prefab": null,
     "_contentSize": {
       "__type__": "cc.Size",
-      "width": 1000,
+      "width": 1000.0000000000001,
       "height": 5
     },
     "_anchorPoint": {
@@ -737,7 +737,7 @@
     "__prefab": null,
     "_contentSize": {
       "__type__": "cc.Size",
-      "width": 720,
+      "width": 720.0000000000001,
       "height": 1334
     },
     "_anchorPoint": {
@@ -852,7 +852,7 @@
     "_prefab": null,
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": 0,
+      "x": -5.684341886080802e-14,
       "y": 0,
       "z": 0
     },
@@ -9782,7 +9782,7 @@
     "_prefab": null,
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": 0,
+      "x": -5.684341886080802e-14,
       "y": 0,
       "z": 0
     },
@@ -13652,7 +13652,7 @@
     "_prefab": null,
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": -310,
+      "x": -310.00000000000006,
       "y": 577.3409999999999,
       "z": 0
     },
@@ -13710,7 +13710,7 @@
     "_prefab": null,
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": 360,
+      "x": 360.00000000000006,
       "y": 667,
       "z": 0
     },
@@ -13840,7 +13840,7 @@
     "__prefab": null,
     "_contentSize": {
       "__type__": "cc.Size",
-      "width": 720,
+      "width": 720.0000000000001,
       "height": 1334
     },
     "_anchorPoint": {
@@ -15887,6 +15887,7 @@
       "__uuid__": "1c849357-c55e-459c-b570-7ecc0c2b6b3d",
       "__expectedType__": "cc.Prefab"
     },
+    "spawnOffsetX": 24,
     "_id": "3dRhnnV/VBSqa26i6VSXSs"
   },
   {
@@ -18596,7 +18597,7 @@
     "__prefab": null,
     "_contentSize": {
       "__type__": "cc.Size",
-      "width": 720,
+      "width": 720.0000000000001,
       "height": 1334
     },
     "_anchorPoint": {
@@ -19036,7 +19037,7 @@
     "_prefab": null,
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": 0,
+      "x": -5.684341886080802e-14,
       "y": 97.5,
       "z": 0
     },
@@ -21120,7 +21121,7 @@
     "__prefab": null,
     "_contentSize": {
       "__type__": "cc.Size",
-      "width": 720,
+      "width": 720.0000000000001,
       "height": 1334
     },
     "_anchorPoint": {
@@ -21254,7 +21255,7 @@
     "_prefab": null,
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": 0.14999999999997726,
+      "x": 0.1500000000000341,
       "y": -588.66,
       "z": 0
     },
@@ -21318,7 +21319,7 @@
     "_prefab": null,
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": -342.65,
+      "x": -342.6500000000001,
       "y": 0,
       "z": 0
     },
@@ -26706,7 +26707,7 @@
     "__prefab": null,
     "_contentSize": {
       "__type__": "cc.Size",
-      "width": 705.3,
+      "width": 705.3000000000002,
       "height": 130
     },
     "_anchorPoint": {
@@ -34088,7 +34089,7 @@
     "_prefab": null,
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": 1,
+      "x": 0.9999999999999432,
       "y": -6,
       "z": 0
     },
@@ -35826,7 +35827,7 @@
     "__prefab": null,
     "_contentSize": {
       "__type__": "cc.Size",
-      "width": 720,
+      "width": 720.0000000000001,
       "height": 1334
     },
     "_anchorPoint": {
@@ -35878,7 +35879,7 @@
     "__prefab": null,
     "_contentSize": {
       "__type__": "cc.Size",
-      "width": 720,
+      "width": 720.0000000000001,
       "height": 1334
     },
     "_anchorPoint": {
@@ -36004,7 +36005,7 @@
     "_prefab": null,
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": -216,
+      "x": -216.00000000000003,
       "y": 138.5,
       "z": 0
     },
@@ -37792,7 +37793,7 @@
     "_prefab": null,
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": 216,
+      "x": 216.00000000000003,
       "y": 138.5,
       "z": 0
     },
@@ -38989,7 +38990,7 @@
     "__prefab": null,
     "_contentSize": {
       "__type__": "cc.Size",
-      "width": 720,
+      "width": 720.0000000000001,
       "height": 469
     },
     "_anchorPoint": {
@@ -39131,7 +39132,7 @@
     "__prefab": null,
     "_contentSize": {
       "__type__": "cc.Size",
-      "width": 1000,
+      "width": 1000.0000000000001,
       "height": 5
     },
     "_anchorPoint": {
@@ -39505,7 +39506,7 @@
     "_prefab": null,
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": 1604.706,
+      "x": 1604.7060000000001,
       "y": 0,
       "z": 0
     },
@@ -39668,7 +39669,7 @@
     "_prefab": null,
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": 257,
+      "x": 257.0000000000002,
       "y": 175.274,
       "z": 0
     },
@@ -43536,7 +43537,7 @@
     "__prefab": null,
     "_contentSize": {
       "__type__": "cc.Size",
-      "width": 609,
+      "width": 609.0000000000005,
       "height": 428
     },
     "_anchorPoint": {
@@ -43718,7 +43719,7 @@
     "_prefab": null,
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": 281.9,
+      "x": 281.90000000000003,
       "y": 553.12,
       "z": 0
     },
@@ -43915,7 +43916,7 @@
     "_prefab": null,
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": 281.5,
+      "x": 281.50000000000006,
       "y": 485.124,
       "z": 0
     },
@@ -45034,7 +45035,7 @@
     "__prefab": null,
     "_contentSize": {
       "__type__": "cc.Size",
-      "width": 720,
+      "width": 720.0000000000001,
       "height": 1334
     },
     "_anchorPoint": {

+ 0 - 9
assets/data/backups/levels.meta

@@ -1,9 +0,0 @@
-{
-  "ver": "1.2.0",
-  "importer": "directory",
-  "imported": true,
-  "uuid": "401feb1a-dfb0-42b6-82c7-9392998e29ce",
-  "files": [],
-  "subMetas": {},
-  "userData": {}
-}

+ 19 - 19
assets/data/enemies.json

@@ -193,13 +193,13 @@
       "health": 40,
       "maxHealth": 9999,
       "defense": 0,
-      "speed": 12.0,
+      "speed": 15.0,
       "dropEnergy": 1,
       "dropCoins": 2
     },
     "movement": {
       "pattern": "direct",
-      "speed": 12.0,
+      "speed": 15.0,
       "patrolRange": 100,
       "rotationSpeed": 180.0,
       "moveType": "sway",
@@ -222,7 +222,7 @@
       "projectileSpeed": 100.0
     },
     "visualConfig": {
-      "spritePath": "Animation/EnemyAni/003",
+      "spritePath": "Animation/EnemyAni/004",
       "scale": 1.0,
       "animationSpeed": 1.0,
       "flipX": false,
@@ -315,7 +315,7 @@
       "projectileSpeed": 50.0
     },
     "visualConfig": {
-      "spritePath": "Animation/EnemyAni/004",
+      "spritePath": "Animation/EnemyAni/003",
       "scale": 1.0,
       "animationSpeed": 1.0,
       "flipX": false,
@@ -326,7 +326,7 @@
         "attack": "attack",
         "death": "dead"
       },
-      "weaponProp": ""
+      "weaponProp": "props/bow"
     },
     "audioConfig": {
       "attackSound": "enemy_attack",
@@ -419,7 +419,7 @@
         "attack": "attack",
         "death": "dead"
       },
-      "weaponProp": ""
+      "weaponProp": "nan"
     },
     "audioConfig": {
       "attackSound": "enemy_attack",
@@ -501,7 +501,7 @@
       "projectileSpeed": 100.0
     },
     "visualConfig": {
-      "spritePath": "Animation/EnemyAni/006",
+      "spritePath": "Animation/EnemyAni/008",
       "scale": 1.0,
       "animationSpeed": 1.0,
       "flipX": false,
@@ -512,7 +512,7 @@
         "attack": "attack",
         "death": "dead"
       },
-      "weaponProp": ""
+      "weaponProp": "props/tombstone"
     },
     "audioConfig": {
       "attackSound": "enemy_attack",
@@ -594,7 +594,7 @@
       "projectileSpeed": 100.0
     },
     "visualConfig": {
-      "spritePath": "Animation/EnemyAni/007",
+      "spritePath": "Animation/EnemyAni/006",
       "scale": 1.0,
       "animationSpeed": 1.0,
       "flipX": false,
@@ -687,7 +687,7 @@
       "projectileSpeed": 100.0
     },
     "visualConfig": {
-      "spritePath": "Animation/EnemyAni/008",
+      "spritePath": "Animation/EnemyAni/007",
       "scale": 1.0,
       "animationSpeed": 1.0,
       "flipX": false,
@@ -698,7 +698,7 @@
         "attack": "attack",
         "death": "dead"
       },
-      "weaponProp": "props/tombstone"
+      "weaponProp": "props/iron_gate"
     },
     "audioConfig": {
       "attackSound": "enemy_attack",
@@ -751,13 +751,13 @@
       "health": 200,
       "maxHealth": 9999,
       "defense": 0,
-      "speed": 7.0,
+      "speed": 10.0,
       "dropEnergy": 1,
       "dropCoins": 2
     },
     "movement": {
       "pattern": "direct",
-      "speed": 7.0,
+      "speed": 10.0,
       "patrolRange": 100,
       "rotationSpeed": 180.0,
       "moveType": "straight",
@@ -878,13 +878,13 @@
       "health": 300,
       "maxHealth": 9999,
       "defense": 0,
-      "speed": 7.0,
+      "speed": 10.0,
       "dropEnergy": 1,
       "dropCoins": 2
     },
     "movement": {
       "pattern": "direct",
-      "speed": 7.0,
+      "speed": 10.0,
       "patrolRange": 100,
       "rotationSpeed": 180.0,
       "moveType": "straight",
@@ -918,7 +918,7 @@
         "attack": "attack",
         "death": "dead"
       },
-      "weaponProp": ""
+      "weaponProp": "nan"
     },
     "audioConfig": {
       "attackSound": "enemy_attack",
@@ -1005,13 +1005,13 @@
       "health": 500,
       "maxHealth": 9999,
       "defense": 0,
-      "speed": 5.0,
+      "speed": 10.0,
       "dropEnergy": 1,
       "dropCoins": 2
     },
     "movement": {
       "pattern": "direct",
-      "speed": 5.0,
+      "speed": 10.0,
       "patrolRange": 100,
       "rotationSpeed": 180.0,
       "moveType": "straight",
@@ -1045,7 +1045,7 @@
         "attack": "attack",
         "death": "dead"
       },
-      "weaponProp": ""
+      "weaponProp": "nan"
     },
     "audioConfig": {
       "attackSound": "enemy_attack",

BIN
assets/data/excel/__pycache__/enemy_config_manager.cpython-313.pyc


+ 38 - 0
assets/data/excel/enemy_config_manager.py

@@ -210,6 +210,12 @@ class EnemyConfigManager:
                 weapon_prop = str(row.iloc[9]).strip()
                 if weapon_prop:
                     config['weapon_prop'] = weapon_prop
+
+            # 色调(可选),第10列
+            if len(row) > 10 and not pd.isna(row.iloc[10]):
+                tint_val = str(row.iloc[10]).strip()
+                if tint_val:
+                    config['tint'] = tint_val
                 
             visual_config[enemy_id] = config
             
@@ -426,6 +432,38 @@ class EnemyConfigManager:
             # 直接映射视觉配置
             for key, value in visual_data.items():
                 enemy_config['visual'][key] = value
+
+            # 同步到 visualConfig(供引擎使用的驼峰命名结构)
+            if 'visualConfig' not in enemy_config:
+                enemy_config['visualConfig'] = {}
+            vc = enemy_config['visualConfig']
+            v = enemy_config['visual']
+
+            # 基础字段映射:下划线 -> 驼峰
+            vc['spritePath'] = v.get('sprite_path', vc.get('spritePath', ''))
+            vc['scale'] = v.get('scale', vc.get('scale', 1.0))
+            vc['animationSpeed'] = v.get('animation_speed', vc.get('animationSpeed', 1.0))
+            vc['flipX'] = v.get('flip_horizontal', vc.get('flipX', False))
+
+            # animations 映射,保留已有值作为默认
+            v_anims = v.get('animations', {})
+            if 'animations' not in vc:
+                vc['animations'] = {}
+            for key in ['idle', 'walk', 'attack', 'death']:
+                if key in v_anims:
+                    vc['animations'][key] = v_anims[key]
+                else:
+                    vc['animations'].setdefault(key, vc['animations'].get(key, key))
+
+            # weaponProp 映射(可选)
+            if 'weapon_prop' in v:
+                vc['weaponProp'] = v['weapon_prop']
+
+            # tint 保留已有 JSON 值,若无则设为默认白色
+            if 'tint' in v:
+                vc['tint'] = v['tint']
+            else:
+                vc['tint'] = vc.get('tint', '#FFFFFF')
         
         # 更新音频配置
         if 'audio' in self.excel_data and enemy_id in self.excel_data['audio']:

BIN
assets/data/excel/~$敌人配置表.xlsx


+ 12 - 0
assets/data/excel/~$敌人配置表.xlsx.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.0.0",
+  "importer": "*",
+  "imported": true,
+  "uuid": "25f3ab0d-335d-4caf-b89b-57b751336a0a",
+  "files": [
+    ".json",
+    ".xlsx"
+  ],
+  "subMetas": {},
+  "userData": {}
+}

BIN
assets/data/excel/关卡配置/关卡配置表.xlsx


BIN
assets/data/excel/敌人配置表.xlsx


BIN
assets/data/excel/方块武器配置/方块武器配置表.xlsx


+ 1 - 1
assets/data/levels/Level1.json

@@ -9,7 +9,7 @@
   ],
   "coinReward": 100,
   "diamondReward": 10,
-  "initialCoins": 100,
+  "initialCoins": 45,
   "timeLimit": 300,
   "difficulty": "normal",
   "healthMultiplier": 1.0,

+ 1 - 1
assets/data/levels/Level10.json

@@ -14,7 +14,7 @@
   ],
   "coinReward": 550,
   "diamondReward": 55,
-  "initialCoins": 100,
+  "initialCoins": 45,
   "timeLimit": 300,
   "difficulty": "normal",
   "healthMultiplier": 1.2,

+ 34 - 34
assets/data/levels/Level11.json

@@ -14,7 +14,7 @@
   ],
   "coinReward": 600,
   "diamondReward": 60,
-  "initialCoins": 100,
+  "initialCoins": 45,
   "timeLimit": 300,
   "difficulty": "normal",
   "healthMultiplier": 1.2,
@@ -51,16 +51,16 @@
         {
           "enemyType": "stealth_zombie",
           "count": 3,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 1.0
         },
         {
           "enemyType": "bucket_zombie",
           "count": 2,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 1.0
         }
@@ -89,8 +89,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 2,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 1.3
         }
@@ -119,8 +119,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 3,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 1.6
         }
@@ -141,8 +141,8 @@
         {
           "enemyType": "bucket_zombie",
           "count": 3,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 1.9
         },
@@ -150,7 +150,7 @@
           "enemyType": "barrel_zombie",
           "count": 3,
           "spawnInterval": 3.0,
-          "spawnDelay": 0.0,
+          "spawnDelay": 2.0,
           "characteristics": "爆炸伤害, 自爆攻击",
           "healthMultiplier": 1.9
         }
@@ -163,16 +163,16 @@
         {
           "enemyType": "stealth_zombie",
           "count": 6,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 2.2
         },
         {
           "enemyType": "bucket_zombie",
           "count": 6,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 2.2
         },
@@ -194,23 +194,23 @@
           "enemyType": "barrel_zombie",
           "count": 5,
           "spawnInterval": 3.0,
-          "spawnDelay": 0.0,
+          "spawnDelay": 2.0,
           "characteristics": "爆炸伤害, 自爆攻击",
           "healthMultiplier": 2.5
         },
         {
           "enemyType": "stealth_zombie",
           "count": 5,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 2.5
         },
         {
           "enemyType": "bucket_zombie",
           "count": 5,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 2.5
         }
@@ -231,8 +231,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 6,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 2.8
         },
@@ -240,7 +240,7 @@
           "enemyType": "barrel_zombie",
           "count": 6,
           "spawnInterval": 3.0,
-          "spawnDelay": 0.0,
+          "spawnDelay": 2.0,
           "characteristics": "爆炸伤害, 自爆攻击",
           "healthMultiplier": 2.8
         }
@@ -262,7 +262,7 @@
           "enemyType": "barrel_zombie",
           "count": 8,
           "spawnInterval": 3.0,
-          "spawnDelay": 0.0,
+          "spawnDelay": 2.0,
           "characteristics": "爆炸伤害, 自爆攻击",
           "healthMultiplier": 3.1
         },
@@ -284,23 +284,23 @@
           "enemyType": "barrel_zombie",
           "count": 5,
           "spawnInterval": 3.0,
-          "spawnDelay": 0.0,
+          "spawnDelay": 2.0,
           "characteristics": "爆炸伤害, 自爆攻击",
           "healthMultiplier": 3.4
         },
         {
           "enemyType": "stealth_zombie",
           "count": 10,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 3.4
         },
         {
           "enemyType": "bucket_zombie",
           "count": 10,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 3.4
         }
@@ -321,16 +321,16 @@
         {
           "enemyType": "stealth_zombie",
           "count": 10,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 3.7
         },
         {
           "enemyType": "bucket_zombie",
           "count": 10,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 3.7
         },

+ 1 - 1
assets/data/levels/Level13.json

@@ -15,7 +15,7 @@
   ],
   "coinReward": 700,
   "diamondReward": 70,
-  "initialCoins": 100,
+  "initialCoins": 45,
   "timeLimit": 300,
   "difficulty": "normal",
   "healthMultiplier": 1.25,

+ 1 - 1
assets/data/levels/Level15.json

@@ -16,7 +16,7 @@
   ],
   "coinReward": 800,
   "diamondReward": 80,
-  "initialCoins": 100,
+  "initialCoins": 45,
   "timeLimit": 300,
   "difficulty": "normal",
   "healthMultiplier": 1.25,

+ 1 - 1
assets/data/levels/Level2.json

@@ -10,7 +10,7 @@
   ],
   "coinReward": 150,
   "diamondReward": 15,
-  "initialCoins": 100,
+  "initialCoins": 45,
   "timeLimit": 300,
   "difficulty": "normal",
   "healthMultiplier": 1.0,

+ 1 - 1
assets/data/levels/Level3.json

@@ -10,7 +10,7 @@
   ],
   "coinReward": 200,
   "diamondReward": 20,
-  "initialCoins": 100,
+  "initialCoins": 45,
   "timeLimit": 300,
   "difficulty": "normal",
   "healthMultiplier": 1.0,

+ 1 - 1
assets/data/levels/Level4.json

@@ -11,7 +11,7 @@
   ],
   "coinReward": 250,
   "diamondReward": 25,
-  "initialCoins": 100,
+  "initialCoins": 45,
   "timeLimit": 300,
   "difficulty": "normal",
   "healthMultiplier": 1.0,

+ 15 - 15
assets/data/levels/Level5.json

@@ -11,7 +11,7 @@
   ],
   "coinReward": 300,
   "diamondReward": 30,
-  "initialCoins": 100,
+  "initialCoins": 45,
   "timeLimit": 300,
   "difficulty": "normal",
   "healthMultiplier": 1.1,
@@ -31,8 +31,8 @@
         {
           "enemyType": "archer_zombie",
           "count": 3,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 1.0
         }
@@ -61,8 +61,8 @@
         {
           "enemyType": "archer_zombie",
           "count": 2,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 1.3
         }
@@ -143,8 +143,8 @@
         {
           "enemyType": "archer_zombie",
           "count": 6,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 2.2
         },
@@ -181,8 +181,8 @@
         {
           "enemyType": "archer_zombie",
           "count": 5,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 2.5
         }
@@ -241,8 +241,8 @@
         {
           "enemyType": "archer_zombie",
           "count": 8,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 3.1
         }
@@ -271,8 +271,8 @@
         {
           "enemyType": "archer_zombie",
           "count": 6,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 3.4
         }
@@ -309,8 +309,8 @@
         {
           "enemyType": "archer_zombie",
           "count": 4,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 3.7
         },

+ 37 - 37
assets/data/levels/Level6.json

@@ -12,7 +12,7 @@
   ],
   "coinReward": 350,
   "diamondReward": 35,
-  "initialCoins": 100,
+  "initialCoins": 45,
   "timeLimit": 300,
   "difficulty": "normal",
   "healthMultiplier": 1.1,
@@ -32,8 +32,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 2,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 1.0
         }
@@ -46,16 +46,16 @@
         {
           "enemyType": "archer_zombie",
           "count": 5,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 1.3
         },
         {
           "enemyType": "stealth_zombie",
           "count": 3,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 1.3
         }
@@ -68,16 +68,16 @@
         {
           "enemyType": "bucket_zombie",
           "count": 4,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 1.6
         },
         {
           "enemyType": "stealth_zombie",
           "count": 4,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 1.6
         }
@@ -98,16 +98,16 @@
         {
           "enemyType": "bucket_zombie",
           "count": 3,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 1.9
         },
         {
           "enemyType": "stealth_zombie",
           "count": 2,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 1.9
         }
@@ -128,8 +128,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 6,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 2.2
         },
@@ -150,16 +150,16 @@
         {
           "enemyType": "bucket_zombie",
           "count": 7,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 2.5
         },
         {
           "enemyType": "archer_zombie",
           "count": 8,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 2.5
         }
@@ -172,8 +172,8 @@
         {
           "enemyType": "bucket_zombie",
           "count": 6,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 2.8
         },
@@ -188,8 +188,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 6,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 2.8
         }
@@ -210,8 +210,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 10,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 3.1
         }
@@ -232,16 +232,16 @@
         {
           "enemyType": "archer_zombie",
           "count": 5,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 3.4
         },
         {
           "enemyType": "stealth_zombie",
           "count": 10,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 3.4
         }
@@ -254,24 +254,24 @@
         {
           "enemyType": "bucket_zombie",
           "count": 10,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 3.7
         },
         {
           "enemyType": "archer_zombie",
           "count": 10,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 3.7
         },
         {
           "enemyType": "stealth_zombie",
           "count": 10,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 3.7
         },

+ 37 - 37
assets/data/levels/Level7.json

@@ -12,7 +12,7 @@
   ],
   "coinReward": 400,
   "diamondReward": 40,
-  "initialCoins": 100,
+  "initialCoins": 45,
   "timeLimit": 300,
   "difficulty": "normal",
   "healthMultiplier": 1.1,
@@ -32,8 +32,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 2,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 1.0
         }
@@ -46,16 +46,16 @@
         {
           "enemyType": "archer_zombie",
           "count": 5,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 1.3
         },
         {
           "enemyType": "stealth_zombie",
           "count": 3,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 1.3
         }
@@ -68,16 +68,16 @@
         {
           "enemyType": "bucket_zombie",
           "count": 4,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 1.6
         },
         {
           "enemyType": "stealth_zombie",
           "count": 4,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 1.6
         }
@@ -98,16 +98,16 @@
         {
           "enemyType": "bucket_zombie",
           "count": 3,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 1.9
         },
         {
           "enemyType": "stealth_zombie",
           "count": 2,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 1.9
         }
@@ -128,8 +128,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 6,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 2.2
         },
@@ -150,16 +150,16 @@
         {
           "enemyType": "bucket_zombie",
           "count": 7,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 2.5
         },
         {
           "enemyType": "archer_zombie",
           "count": 8,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 2.5
         }
@@ -172,8 +172,8 @@
         {
           "enemyType": "bucket_zombie",
           "count": 6,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 2.8
         },
@@ -188,8 +188,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 6,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 2.8
         }
@@ -210,8 +210,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 10,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 3.1
         }
@@ -232,16 +232,16 @@
         {
           "enemyType": "archer_zombie",
           "count": 5,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 3.4
         },
         {
           "enemyType": "stealth_zombie",
           "count": 10,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 3.4
         }
@@ -254,24 +254,24 @@
         {
           "enemyType": "bucket_zombie",
           "count": 10,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 3.7
         },
         {
           "enemyType": "archer_zombie",
           "count": 10,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 3.7
         },
         {
           "enemyType": "stealth_zombie",
           "count": 10,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 3.7
         },

+ 36 - 36
assets/data/levels/Level8.json

@@ -13,7 +13,7 @@
   ],
   "coinReward": 450,
   "diamondReward": 45,
-  "initialCoins": 100,
+  "initialCoins": 45,
   "timeLimit": 300,
   "difficulty": "normal",
   "healthMultiplier": 1.1,
@@ -25,16 +25,16 @@
         {
           "enemyType": "bucket_zombie",
           "count": 3,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 1.0
         },
         {
           "enemyType": "stealth_zombie",
           "count": 2,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 1.0
         }
@@ -47,16 +47,16 @@
         {
           "enemyType": "bucket_zombie",
           "count": 3,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 1.3
         },
         {
           "enemyType": "stealth_zombie",
           "count": 3,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 1.3
         },
@@ -64,7 +64,7 @@
           "enemyType": "barrel_zombie",
           "count": 2,
           "spawnInterval": 3.0,
-          "spawnDelay": 0.0,
+          "spawnDelay": 2.0,
           "characteristics": "爆炸伤害, 自爆攻击",
           "healthMultiplier": 1.3
         }
@@ -85,8 +85,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 2,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 1.6
         },
@@ -94,7 +94,7 @@
           "enemyType": "barrel_zombie",
           "count": 3,
           "spawnInterval": 3.0,
-          "spawnDelay": 0.0,
+          "spawnDelay": 2.0,
           "characteristics": "爆炸伤害, 自爆攻击",
           "healthMultiplier": 1.6
         }
@@ -115,8 +115,8 @@
         {
           "enemyType": "bucket_zombie",
           "count": 3,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 1.9
         },
@@ -124,7 +124,7 @@
           "enemyType": "barrel_zombie",
           "count": 2,
           "spawnInterval": 3.0,
-          "spawnDelay": 0.0,
+          "spawnDelay": 2.0,
           "characteristics": "爆炸伤害, 自爆攻击",
           "healthMultiplier": 1.9
         }
@@ -145,8 +145,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 6,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 2.2
         },
@@ -175,8 +175,8 @@
         {
           "enemyType": "bucket_zombie",
           "count": 5,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 2.5
         },
@@ -184,7 +184,7 @@
           "enemyType": "barrel_zombie",
           "count": 3,
           "spawnInterval": 3.0,
-          "spawnDelay": 0.0,
+          "spawnDelay": 2.0,
           "characteristics": "爆炸伤害, 自爆攻击",
           "healthMultiplier": 2.5
         }
@@ -197,16 +197,16 @@
         {
           "enemyType": "bucket_zombie",
           "count": 6,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 2.8
         },
         {
           "enemyType": "stealth_zombie",
           "count": 6,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 2.8
         },
@@ -214,7 +214,7 @@
           "enemyType": "barrel_zombie",
           "count": 6,
           "spawnInterval": 3.0,
-          "spawnDelay": 0.0,
+          "spawnDelay": 2.0,
           "characteristics": "爆炸伤害, 自爆攻击",
           "healthMultiplier": 2.8
         }
@@ -235,8 +235,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 6,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 3.1
         },
@@ -244,7 +244,7 @@
           "enemyType": "barrel_zombie",
           "count": 6,
           "spawnInterval": 3.0,
-          "spawnDelay": 0.0,
+          "spawnDelay": 2.0,
           "characteristics": "爆炸伤害, 自爆攻击",
           "healthMultiplier": 3.1
         }
@@ -265,16 +265,16 @@
         {
           "enemyType": "stealth_zombie",
           "count": 6,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 3.4
         },
         {
           "enemyType": "bucket_zombie",
           "count": 9,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 3.4
         }
@@ -295,8 +295,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 10,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 3.7
         },
@@ -304,7 +304,7 @@
           "enemyType": "barrel_zombie",
           "count": 10,
           "spawnInterval": 3.0,
-          "spawnDelay": 0.0,
+          "spawnDelay": 2.0,
           "characteristics": "爆炸伤害, 自爆攻击",
           "healthMultiplier": 3.7
         },

+ 27 - 27
assets/data/levels/Level9.json

@@ -13,7 +13,7 @@
   ],
   "coinReward": 500,
   "diamondReward": 50,
-  "initialCoins": 100,
+  "initialCoins": 45,
   "timeLimit": 300,
   "difficulty": "normal",
   "healthMultiplier": 1.2,
@@ -25,8 +25,8 @@
         {
           "enemyType": "bucket_zombie",
           "count": 3,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 1.0
         },
@@ -63,16 +63,16 @@
         {
           "enemyType": "archer_zombie",
           "count": 2,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 1.3
         },
         {
           "enemyType": "bucket_zombie",
           "count": 2,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 1.3
         }
@@ -93,8 +93,8 @@
         {
           "enemyType": "stealth_zombie",
           "count": 2,
-          "spawnInterval": 4.0,
-          "spawnDelay": 20.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 15.0,
           "characteristics": "隐身能力, 快速移动",
           "healthMultiplier": 1.6
         },
@@ -123,16 +123,16 @@
         {
           "enemyType": "archer_zombie",
           "count": 3,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 1.9
         },
         {
           "enemyType": "bucket_zombie",
           "count": 2,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 1.9
         }
@@ -191,8 +191,8 @@
         {
           "enemyType": "bucket_zombie",
           "count": 3,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 2.5
         }
@@ -205,8 +205,8 @@
         {
           "enemyType": "archer_zombie",
           "count": 18,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 2.8
         }
@@ -235,8 +235,8 @@
         {
           "enemyType": "bucket_zombie",
           "count": 5,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 3.1
         },
@@ -273,16 +273,16 @@
         {
           "enemyType": "archer_zombie",
           "count": 5,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 3.4
         },
         {
           "enemyType": "bucket_zombie",
           "count": 5,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 3.4
         }
@@ -303,16 +303,16 @@
         {
           "enemyType": "archer_zombie",
           "count": 10,
-          "spawnInterval": 4.0,
-          "spawnDelay": 18.0,
+          "spawnInterval": 5.0,
+          "spawnDelay": 10.0,
           "characteristics": "远程弓箭攻击",
           "healthMultiplier": 3.7
         },
         {
           "enemyType": "bucket_zombie",
           "count": 10,
-          "spawnInterval": 2.0,
-          "spawnDelay": 0.0,
+          "spawnInterval": 3.0,
+          "spawnDelay": 2.0,
           "characteristics": "超高生命, 慢速移动",
           "healthMultiplier": 3.7
         },

+ 1 - 1
assets/data/levels/level12.json

@@ -15,7 +15,7 @@
   ],
   "coinReward": 650,
   "diamondReward": 65,
-  "initialCoins": 100,
+  "initialCoins": 45,
   "timeLimit": 300,
   "difficulty": "normal",
   "healthMultiplier": 1.2,

+ 1 - 1
assets/data/levels/level14.json

@@ -16,7 +16,7 @@
   ],
   "coinReward": 750,
   "diamondReward": 75,
-  "initialCoins": 100,
+  "initialCoins": 45,
   "timeLimit": 300,
   "difficulty": "normal",
   "healthMultiplier": 1.25,

+ 19 - 19
assets/data/weapons.json

@@ -15,8 +15,8 @@
       ],
       "stats": {
         "damage": 10,
-        "fireRate": 10.0,
-        "range": 450,
+        "fireRate": 4.0,
+        "range": 500,
         "bulletSpeed": 40
       },
       "bulletConfig": {
@@ -131,8 +131,8 @@
       ],
       "stats": {
         "damage": 7,
-        "fireRate": 10.0,
-        "range": 400,
+        "fireRate": 4.0,
+        "range": 500,
         "bulletSpeed": 20
       },
       "bulletConfig": {
@@ -250,8 +250,8 @@
       ],
       "stats": {
         "damage": 5,
-        "fireRate": 10.0,
-        "range": 350,
+        "fireRate": 4.0,
+        "range": 500,
         "bulletSpeed": 30
       },
       "bulletConfig": {
@@ -364,7 +364,7 @@
       "name": "西瓜炸弹",
       "type": "explosive",
       "weight": 15,
-      "unlockLevel": 4,
+      "unlockLevel": 5,
       "rarityDamageMultipliers": [
         1.0,
         2.0,
@@ -374,7 +374,7 @@
       ],
       "stats": {
         "damage": 5,
-        "fireRate": 10.0,
+        "fireRate": 4.0,
         "range": 1000,
         "bulletSpeed": 20
       },
@@ -483,7 +483,7 @@
       "name": "回旋镖盆栽",
       "type": "boomerang",
       "weight": 18,
-      "unlockLevel": 5,
+      "unlockLevel": 7,
       "rarityDamageMultipliers": [
         1.0,
         2.0,
@@ -493,7 +493,7 @@
       ],
       "stats": {
         "damage": 7,
-        "fireRate": 10.0,
+        "fireRate": 4.0,
         "range": 1000,
         "bulletSpeed": 20
       },
@@ -601,7 +601,7 @@
       "name": "炙热辣椒",
       "type": "area_burn",
       "weight": 12,
-      "unlockLevel": 6,
+      "unlockLevel": 9,
       "rarityDamageMultipliers": [
         1.0,
         2.0,
@@ -611,7 +611,7 @@
       ],
       "stats": {
         "damage": 2,
-        "fireRate": 10.0,
+        "fireRate": 4.0,
         "range": 500,
         "bulletSpeed": 20
       },
@@ -726,7 +726,7 @@
       "name": "仙人散弹",
       "type": "shotgun",
       "weight": 22,
-      "unlockLevel": 7,
+      "unlockLevel": 11,
       "rarityDamageMultipliers": [
         1.0,
         2.0,
@@ -736,7 +736,7 @@
       ],
       "stats": {
         "damage": 8,
-        "fireRate": 10.0,
+        "fireRate": 4.0,
         "range": 500,
         "bulletSpeed": 40
       },
@@ -843,7 +843,7 @@
       "name": "秋葵导弹",
       "type": "homing_missile",
       "weight": 8,
-      "unlockLevel": 8,
+      "unlockLevel": 13,
       "rarityDamageMultipliers": [
         1.0,
         2.0,
@@ -853,7 +853,7 @@
       ],
       "stats": {
         "damage": 15,
-        "fireRate": 10.0,
+        "fireRate": 4.0,
         "range": 500,
         "bulletSpeed": 15
       },
@@ -963,7 +963,7 @@
       "name": "狼牙棒",
       "type": "melee",
       "weight": 20,
-      "unlockLevel": 9,
+      "unlockLevel": 15,
       "rarityDamageMultipliers": [
         1.0,
         2.0,
@@ -973,8 +973,8 @@
       ],
       "stats": {
         "damage": 10,
-        "fireRate": 8.0,
-        "range": 400,
+        "fireRate": 4.0,
+        "range": 500,
         "bulletSpeed": 35
       },
       "bulletConfig": {

+ 16 - 0
assets/scripts/Animations/DamageNumberAni.ts

@@ -21,6 +21,11 @@ export class DamageNumberAni extends Component {
     
     @property({ type: Prefab, tooltip: 'EnemyLabel预制体引用' })
     private enemyLabelPrefab: Prefab = null;
+
+    // 为频繁触发的伤害数字提供左右交替的偏移,避免重叠
+    @property({ tooltip: '伤害数字左右偏移距离(像素)' })
+    private spawnOffsetX: number = 24;
+    private alternatingSide: number = 1; // 1: 向右, -1: 向左
     
     onLoad() {
         // 自动获取同节点上的EnemyController组件
@@ -42,6 +47,12 @@ export class DamageNumberAni extends Component {
      * @param isCritical 是否暴击
      */
     public showDamageNumber(damage: number, worldPosition: Vec3, isCritical: boolean = false) {
+        // 如果伤害为0,显示格挡文字而不是数字0
+        if (damage === 0) {
+            this.showBlockText(worldPosition);
+            return;
+        }
+        
         // 检查预制体引用
         if (!this.damageNumberPrefab) {
             console.error('[DamageNumberAni] DamageNumber预制体引用未设置');
@@ -67,6 +78,11 @@ export class DamageNumberAni extends Component {
             const localPos = gameAreaTransform.convertToNodeSpaceAR(worldPosition);
             // 稍微向上偏移,显示在敌人头顶
             localPos.y += 30;
+            // 为频繁伤害提供左右交替偏移,避免重叠在同一点
+            const offset = isCritical ? this.spawnOffsetX * 1.2 : this.spawnOffsetX;
+            localPos.x += this.alternatingSide * offset;
+            // 切换下次生成方向
+            this.alternatingSide = -this.alternatingSide;
             damageNode.position = localPos;
         }
         

+ 21 - 0
assets/scripts/Animations/MoneyAni.ts

@@ -91,6 +91,13 @@ export class MoneyAni extends Component {
     public playRewardAnimation(coinAmount: number, diamondAmount: number, onComplete?: () => void) {
         console.log(`[MoneyAni] 开始播放奖励动画 - 钞票: ${coinAmount}, 钻石: ${diamondAmount}`);
         
+        // 如果奖励为0,直接返回不播放动画
+        if (coinAmount <= 0 && diamondAmount <= 0) {
+            console.log('[MoneyAni] 奖励为0,跳过动画播放');
+            if (onComplete) onComplete();
+            return;
+        }
+        
         if (!this.canvasNode) {
             console.error('[MoneyAni] Canvas节点未设置,请在编辑器中拖拽Canvas节点到canvasNode属性');
             if (onComplete) onComplete();
@@ -136,6 +143,13 @@ export class MoneyAni extends Component {
             return;
         }
         
+        // 如果钞票数量为0或负数,直接返回不播放动画和音效
+        if (amount <= 0) {
+            console.log('[MoneyAni] 钞票数量为0,跳过钞票动画');
+            if (onComplete) onComplete();
+            return;
+        }
+        
         // 使用装饰器引用的钞票目标节点
         if (!this.coinTargetNode) {
             console.error('[MoneyAni] 钞票目标节点未设置,请在编辑器中拖拽TopBar中的钞票标签节点');
@@ -180,6 +194,13 @@ export class MoneyAni extends Component {
             return;
         }
         
+        // 如果钻石数量为0或负数,直接返回不播放动画和音效
+        if (amount <= 0) {
+            console.log('[MoneyAni] 钻石数量为0,跳过钻石动画');
+            if (onComplete) onComplete();
+            return;
+        }
+        
         // 使用装饰器引用的钻石目标节点
         if (!this.diamondTargetNode) {
             console.error('[MoneyAni] 钻石目标节点未设置,请在编辑器中拖拽TopBar中的钻石标签节点');

+ 1 - 1
assets/scripts/CombatSystem/BallController.ts

@@ -972,7 +972,7 @@ export class BallController extends Component {
             }
 
             // 测试模式:显示详细的防围困信息
-            console.log(`[BallController] 测试模式 - 小球撞击统计: 撞击次数=${hitHistory.length}/${this.antiTrapHitThreshold}, 时间窗口=${this.antiTrapTimeWindow}秒, 方块=${otherNode.name}`);
+           // console.log(`[BallController] 测试模式 - 小球撞击统计: 撞击次数=${hitHistory.length}/${this.antiTrapHitThreshold}, 时间窗口=${this.antiTrapTimeWindow}秒, 方块=${otherNode.name}`);
 
             // 检查是否达到防围困条件
             if (hitHistory.length >= this.antiTrapHitThreshold) {

+ 7 - 5
assets/scripts/CombatSystem/BlockManager.ts

@@ -2507,11 +2507,11 @@ export class BlockManager extends Component {
             const worldPos = new Vec3();
             target.getWorldPosition(worldPos);
             
-            // 加载升级特效动画
-            const path = 'Animation/WeaponBurnAni/shengji/skeleton';
-            resources.load(path, sp.SkeletonData, (err, sData: sp.SkeletonData) => {
-                if (err || !sData) {
-                    console.warn('[BlockManager] 加载升级特效动画失败:', err);
+            // 使用BundleLoader加载升级特效动画
+            const path = 'WeaponBurnAni/shengji';
+            BundleLoader.loadSkeletonData(path).then((sData: sp.SkeletonData) => {
+                if (!sData) {
+                    console.warn('[BlockManager] 加载升级特效动画失败: 资源为空');
                     return;
                 }
                 
@@ -2540,6 +2540,8 @@ export class BlockManager extends Component {
                     console.warn('[BlockManager] 未找到Canvas节点,无法播放升级特效');
                     effectNode.destroy();
                 }
+            }).catch((err) => {
+                console.warn('[BlockManager] 加载升级特效动画失败:', err);
             });
             
         } catch (error) {

+ 1 - 1
assets/scripts/CombatSystem/EnemyInstance.ts

@@ -727,7 +727,7 @@ export class EnemyInstance extends Component {
     private updatePatrolMovement(deltaTime: number) {
         // 更新方向变化计时器
         this.changeDirectionTime += deltaTime;
-        
+        console.log(`[EnemyInstance] 摆动 调用,changeDirectionTime=${this.changeDirectionTime}`);
         // 根据巡逻范围决定方向变化
         const enemySprite = this.node.getChildByName('EnemySprite');
         if (enemySprite && this.controller) {

+ 5 - 1
assets/scripts/CombatSystem/SkillSelection/SkillManager.ts

@@ -67,8 +67,12 @@ export class SkillManager extends Component {
     public initSkills(skillsData: SkillData[]) {
         this._skills.clear();
         skillsData.forEach(skill => {
-            this._skills.set(skill.id, { ...skill });
+            // 强制将技能等级重置为0,确保每次开始新关卡时技能等级都是0
+            const skillCopy = { ...skill };
+            skillCopy.currentLevel = 0;
+            this._skills.set(skill.id, skillCopy);
         });
+        console.log('[SkillManager] 技能数据已初始化,所有技能等级重置为0');
     }
 
     /**

+ 27 - 1
assets/scripts/Core/BundleLoader.ts

@@ -141,7 +141,33 @@ export class BundleLoader {
      */
     public static async loadSkeletonData(resourcePath: string): Promise<sp.SkeletonData> {
         const instance = BundleLoader.getInstance();
-        return instance.loadAssetFromBundle('Animation', resourcePath, sp.SkeletonData);
+        
+        // 根据资源类型确定正确的加载路径
+        let finalPath: string;
+        
+        // 如果是敌人动画路径(如 EnemyAni/007/007),直接使用
+        if (resourcePath.includes('EnemyAni/') || resourcePath.includes('WeaponTx/')) {
+            finalPath = resourcePath;
+        } 
+        // 如果是武器燃烧动画路径(如 WeaponBurnAni/shengji),需要添加/skeleton
+        else if (resourcePath.includes('WeaponBurnAni/')) {
+            finalPath = resourcePath.endsWith('/skeleton') || resourcePath.endsWith('skeleton') 
+                ? resourcePath 
+                : resourcePath + '/skeleton';
+        }
+        // 其他情况,先尝试直接路径
+        else {
+            finalPath = resourcePath;
+        }
+        
+        console.log(`[BundleLoader] 加载骨骼动画资源: ${resourcePath} -> ${finalPath}`);
+        
+        try {
+            return await instance.loadAssetFromBundle('Animation', finalPath, sp.SkeletonData);
+        } catch (error) {
+            console.error(`[BundleLoader] 骨骼动画加载失败: ${finalPath}`, error);
+            throw error;
+        }
     }
 
     /**

+ 1 - 1
assets/scripts/FourUI/MainSystem/MainUIControlller.ts

@@ -475,7 +475,7 @@ export class MainUIController extends Component {
           MoneyAni.playReward(rewards.money, rewards.diamonds);
         }
       } else {
-        console.log('当前关卡没有奖励或奖励为0');
+        console.log('当前关卡没有奖励或奖励为0,跳过动画播放');
       }
     } catch (error) {
       console.error('播放奖励动画时出错:', error);

+ 0 - 56
assets/scripts/LevelSystem/LevelConfigManager.ts

@@ -277,62 +277,6 @@ export class LevelConfigManager extends Component {
         this.validateConfigs();
     }
 
-    /**
-     * 创建示例关卡配置(开发辅助)
-     */
-    public generateSampleConfig(levelId: number): LevelConfig {
-        const samples = {
-            1: {
-                name: '新手引导(草地平原)',
-                scene: 'grassland',
-                backgroundImage: 'images/LevelBackground/BG1',
-                weapons: ['毛豆射手', '尖胡萝卜'],
-                waves: [
-                    {
-                        waveId: 1,
-                        enemies: [
-                            { enemyType: '普通僵尸', count: 8, spawnInterval: 5, characteristics: ['中速移动', '无技能'] }
-                        ]
-                    },
-                    {
-                        waveId: 2,
-                        enemies: [
-                            { enemyType: '普通僵尸', count: 10, spawnInterval: 5, characteristics: ['中速移动', '无技能'] }
-                        ]
-                    },
-                    {
-                        waveId: 3,
-                        enemies: [
-                            { enemyType: '路障僵尸', count: 5, spawnInterval: 6, characteristics: ['高生命', '慢速移动'] }
-                        ]
-                    }
-                ]
-            },
-            2: {
-                name: '丛林探险(森林场景)',
-                scene: 'forest',
-                backgroundImage: 'images/LevelBackground/BG2',
-                weapons: ['锯齿草', '西瓜炸弹', '毛豆射手'],
-                waves: [
-                    {
-                        waveId: 1,
-                        enemies: [
-                            { enemyType: '普通僵尸', count: 10, spawnInterval: 4, characteristics: ['中速移动', '无技能'] }
-                        ]
-                    },
-                    {
-                        waveId: 2,
-                        enemies: [
-                            { enemyType: '漫步僵尸', count: 6, spawnInterval: 5, characteristics: ['左右摇摆', '近战范围大'] }
-                        ]
-                    }
-                ]
-            }
-        };
-
-        return samples[levelId] || samples[1];
-    }
-
     /**
      * 调试:打印所有关卡配置信息
      */