@rpgjs/action-battle 5.0.0-beta.12 → 5.0.0-beta.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @rpgjs/action-battle
2
2
 
3
+ ## 5.0.0-beta.13
4
+
5
+ ### Patch Changes
6
+
7
+ - Release the next RPGJS beta with client interactions, i18n support, movement and physics improvements, Studio fixes, action battle updates, playground migration, and related runtime documentation.
8
+ - Updated dependencies
9
+ - @rpgjs/client@5.0.0-beta.13
10
+ - @rpgjs/common@5.0.0-beta.13
11
+ - @rpgjs/server@5.0.0-beta.13
12
+ - @rpgjs/vite@5.0.0-beta.13
13
+
3
14
  ## 5.0.0-beta.12
4
15
 
5
16
  ### Patch Changes
@@ -283,6 +283,9 @@ export declare class BattleAi {
283
283
  * Log AI debug message for this event
284
284
  */
285
285
  private debugLog;
286
+ private traceLog;
287
+ private lockActionUntil;
288
+ private lockForAttack;
286
289
  private state;
287
290
  private stateStartTime;
288
291
  private stunnedUntil;
@@ -329,6 +332,11 @@ export declare class BattleAi {
329
332
  private lastMoveToTime;
330
333
  private retreatCooldown;
331
334
  private lastRetreatTime;
335
+ private actionLockedUntil;
336
+ private lastActionLockTraceTime;
337
+ private lastMoveToCooldownTraceTime;
338
+ private lastMoveToCooldownTraceSignature;
339
+ private lastTargetMovementSkipTraceTime;
332
340
  private timers;
333
341
  private behaviorKey?;
334
342
  private behaviorTree?;
@@ -340,6 +348,7 @@ export declare class BattleAi {
340
348
  private visionSetupRetries;
341
349
  private maxVisionSetupRetries;
342
350
  private destroyed;
351
+ private lastNoTargetTraceTime;
343
352
  /**
344
353
  * Create a new Battle AI Controller
345
354
  *
@@ -495,6 +504,7 @@ export declare class BattleAi {
495
504
  */
496
505
  private performDashAttack;
497
506
  private getAttackProfile;
507
+ private playAttackVisual;
498
508
  private telegraphAttack;
499
509
  private scheduleAttackStartup;
500
510
  /**
@@ -587,7 +597,9 @@ export declare class BattleAi {
587
597
  private executeRequestedSkill;
588
598
  private handleTacticalMovement;
589
599
  private handleAssaultMovement;
600
+ private resolveMoveTarget;
590
601
  private requestMoveTo;
602
+ private requestTargetMovement;
591
603
  private schedule;
592
604
  getHealth(): number;
593
605
  getMaxHealth(): number;
@@ -70,7 +70,7 @@ export declare const createDefaultPlayerHitboxResolver: (hitboxes?: {
70
70
  height: number;
71
71
  }[];
72
72
  export declare const defaultRpgjsDamageResolver: (context: ActionBattleDamageContext) => {
73
- damage: any;
73
+ damage: number;
74
74
  defeated: boolean;
75
75
  raw: any;
76
76
  };
@@ -80,9 +80,19 @@ var createDefaultPlayerHitboxResolver = (hitboxes = DEFAULT_ZELDA_PLAYER_HITBOXE
80
80
  };
81
81
  var defaultRpgjsDamageResolver = (context) => {
82
82
  const target = context.target;
83
+ const previousHp = typeof target.hp === "number" && Number.isFinite(target.hp) ? target.hp : void 0;
83
84
  const raw = target.applyDamage(context.attacker, context.skill);
85
+ const resolvedDamage = Number(raw?.damage ?? 0);
86
+ if (!Number.isFinite(resolvedDamage)) {
87
+ if (previousHp !== void 0) target.hp = previousHp;
88
+ return {
89
+ damage: 0,
90
+ defeated: false,
91
+ raw
92
+ };
93
+ }
84
94
  return {
85
- damage: raw?.damage ?? 0,
95
+ damage: resolvedDamage,
86
96
  defeated: target.hp <= 0,
87
97
  raw
88
98
  };
@@ -6,9 +6,10 @@ var ACTION_BATTLE_ENEMY_FACTION = "enemies";
6
6
  var getBattleAi = (entity) => entity?.battleAi;
7
7
  var getActionBattleEntityKind = (entity) => {
8
8
  if (getBattleAi(entity)) return "event";
9
+ if (typeof entity?.isEvent === "function") return entity.isEvent() ? "event" : "player";
9
10
  if (entity instanceof RpgEvent) return "event";
10
- if (typeof entity?.attachShape === "function") return "event";
11
11
  if (entity instanceof RpgPlayer) return "player";
12
+ if (typeof entity?.attachShape === "function") return "event";
12
13
  return "player";
13
14
  };
14
15
  var isActionBattlePlayer = (entity) => getActionBattleEntityKind(entity) === "player";
@@ -62,9 +62,10 @@ var applyDamageEffect = (attacker, target, skill, reaction, metadata) => {
62
62
  });
63
63
  if (!result.cancelled) {
64
64
  emitActionBattleClientVisual({
65
- moment: "hit",
65
+ moment: "hurt",
66
66
  entity: attacker,
67
67
  target,
68
+ attacker,
68
69
  damage: result.damage,
69
70
  result,
70
71
  skill