diff --git a/bruno/neon-sprawl-server/combat-health/Get player combat health.bru b/bruno/neon-sprawl-server/combat-health/Get player combat health.bru
index 9ca6dcd..25c1be3 100644
--- a/bruno/neon-sprawl-server/combat-health/Get player combat health.bru
+++ b/bruno/neon-sprawl-server/combat-health/Get player combat health.bru
@@ -4,6 +4,11 @@ meta {
seq: 1
}
+script:pre-request {
+ const { resetPrototypeCombatTargets } = require("./scripts/combat-targets-reset-helper.js");
+ await resetPrototypeCombatTargets(bru);
+}
+
get {
url: {{baseUrl}}/game/players/dev-local-1/combat-health
body: none
diff --git a/bruno/neon-sprawl-server/encounter-progress/Get encounter progress after defeat spine.bru b/bruno/neon-sprawl-server/encounter-progress/Get encounter progress after defeat spine.bru
index 02e23b5..4bd75a4 100644
--- a/bruno/neon-sprawl-server/encounter-progress/Get encounter progress after defeat spine.bru
+++ b/bruno/neon-sprawl-server/encounter-progress/Get encounter progress after defeat spine.bru
@@ -14,6 +14,7 @@ script:pre-request {
const {
moveNearPrototypeNpc,
PULSE_COOLDOWN_MS,
+ MAX_PULSE_DEFEAT_ATTEMPTS,
sleep,
} = require("./scripts/prototype-npc-bruno-helper.js");
const baseUrl = bru.getEnvVar("baseUrl") || bru.getVar("baseUrl");
@@ -54,7 +55,7 @@ script:pre-request {
abilityId: "prototype_pulse",
targetId,
};
- for (let i = 0; i < 4; i++) {
+ for (let i = 0; i < MAX_PULSE_DEFEAT_ATTEMPTS; i++) {
const response = await axios.post(
`${baseUrl}/game/players/${playerId}/ability-cast`,
castBody,
@@ -69,11 +70,13 @@ script:pre-request {
if (body.combatResolution.targetDefeated) {
return;
}
- if (i < 3) {
+ if (i < MAX_PULSE_DEFEAT_ATTEMPTS - 1) {
await sleep(bru, PULSE_COOLDOWN_MS);
}
}
- throw new Error(`did not defeat ${targetId} within 4 pulses`);
+ throw new Error(
+ `did not defeat ${targetId} within ${MAX_PULSE_DEFEAT_ATTEMPTS} pulses`,
+ );
}
await resetPrototypeCombatTargets(bru);
diff --git a/bruno/neon-sprawl-server/scripts/prototype-npc-bruno-helper.js b/bruno/neon-sprawl-server/scripts/prototype-npc-bruno-helper.js
index a1cd06c..40e4b8e 100644
--- a/bruno/neon-sprawl-server/scripts/prototype-npc-bruno-helper.js
+++ b/bruno/neon-sprawl-server/scripts/prototype-npc-bruno-helper.js
@@ -10,6 +10,9 @@ const PROTOTYPE_NPC_ANCHORS = {
/** prototype_pulse catalog cooldown (seconds) — real-time Bruno waits. */
const PULSE_COOLDOWN_MS = 3200;
+/** Matches AbilityCastApiTests defeat loop (elite 200 HP needs 8×25 damage). */
+const MAX_PULSE_DEFEAT_ATTEMPTS = 12;
+
/** Bruno sandbox has no setTimeout — use bru.sleep. */
async function sleep(bru, ms) {
await bru.sleep(ms);
@@ -34,6 +37,7 @@ async function moveNearPrototypeNpc(baseUrl, playerId, targetId, jsonHeaders) {
module.exports = {
PROTOTYPE_NPC_ANCHORS,
PULSE_COOLDOWN_MS,
+ MAX_PULSE_DEFEAT_ATTEMPTS,
moveNearPrototypeNpc,
sleep,
};