NEO-98: Update Bruno for seven abilities and attackAbilityId.

pull/137/head
VinPropane 2026-05-30 18:06:42 -04:00
parent b77b7f8fbb
commit 04126693e1
3 changed files with 58 additions and 2 deletions

View File

@ -17,7 +17,7 @@ tests {
const body = res.getBody(); const body = res.getBody();
expect(body.schemaVersion).to.equal(1); expect(body.schemaVersion).to.equal(1);
expect(body.abilities).to.be.an("array"); expect(body.abilities).to.be.an("array");
expect(body.abilities.length).to.equal(4); expect(body.abilities.length).to.equal(7);
}); });
test("abilities are ascending by id (ordinal)", function () { test("abilities are ascending by id (ordinal)", function () {
@ -27,13 +27,16 @@ tests {
expect(ids).to.eql(sorted); expect(ids).to.eql(sorted);
}); });
test("frozen prototype four matches registry id order", function () { test("frozen prototype seven matches registry id order", function () {
const body = res.getBody(); const body = res.getBody();
const ids = body.abilities.map((x) => x.id); const ids = body.abilities.map((x) => x.id);
expect(ids).to.eql([ expect(ids).to.eql([
"prototype_burst", "prototype_burst",
"prototype_dash", "prototype_dash",
"prototype_guard", "prototype_guard",
"prototype_npc_elite_slam",
"prototype_npc_melee_strike",
"prototype_npc_ranged_shot",
"prototype_pulse", "prototype_pulse",
]); ]);
}); });
@ -44,6 +47,7 @@ tests {
expect(row).to.be.an("object"); expect(row).to.be.an("object");
expect(row.displayName).to.equal("Prototype Pulse"); expect(row.displayName).to.equal("Prototype Pulse");
expect(row.baseDamage).to.equal(25); expect(row.baseDamage).to.equal(25);
expect(row.maxRange).to.equal(6);
expect(row.cooldownSeconds).to.equal(3); expect(row.cooldownSeconds).to.equal(3);
expect(row.abilityKind).to.equal("attack"); expect(row.abilityKind).to.equal("attack");
}); });
@ -54,6 +58,7 @@ tests {
expect(row).to.be.an("object"); expect(row).to.be.an("object");
expect(row.displayName).to.equal("Prototype Burst"); expect(row.displayName).to.equal("Prototype Burst");
expect(row.baseDamage).to.equal(40); expect(row.baseDamage).to.equal(40);
expect(row.maxRange).to.equal(6);
expect(row.cooldownSeconds).to.equal(5); expect(row.cooldownSeconds).to.equal(5);
expect(row.abilityKind).to.equal("attack"); expect(row.abilityKind).to.equal("attack");
}); });
@ -64,6 +69,7 @@ tests {
expect(row).to.be.an("object"); expect(row).to.be.an("object");
expect(row.abilityKind).to.equal("utility"); expect(row.abilityKind).to.equal("utility");
expect(row.baseDamage).to.equal(0); expect(row.baseDamage).to.equal(0);
expect(row.maxRange).to.equal(6);
expect(row.cooldownSeconds).to.equal(6); expect(row.cooldownSeconds).to.equal(6);
}); });
@ -73,6 +79,37 @@ tests {
expect(row).to.be.an("object"); expect(row).to.be.an("object");
expect(row.abilityKind).to.equal("movement"); expect(row.abilityKind).to.equal("movement");
expect(row.baseDamage).to.equal(0); expect(row.baseDamage).to.equal(0);
expect(row.maxRange).to.equal(6);
expect(row.cooldownSeconds).to.equal(4); expect(row.cooldownSeconds).to.equal(4);
}); });
test("prototype_npc_melee_strike row matches catalog", function () {
const body = res.getBody();
const row = body.abilities.find((x) => x.id === "prototype_npc_melee_strike");
expect(row).to.be.an("object");
expect(row.baseDamage).to.equal(15);
expect(row.maxRange).to.equal(2);
expect(row.cooldownSeconds).to.equal(3);
expect(row.abilityKind).to.equal("attack");
});
test("prototype_npc_ranged_shot row matches catalog", function () {
const body = res.getBody();
const row = body.abilities.find((x) => x.id === "prototype_npc_ranged_shot");
expect(row).to.be.an("object");
expect(row.baseDamage).to.equal(12);
expect(row.maxRange).to.equal(10);
expect(row.cooldownSeconds).to.equal(4);
expect(row.abilityKind).to.equal("attack");
});
test("prototype_npc_elite_slam row matches catalog", function () {
const body = res.getBody();
const row = body.abilities.find((x) => x.id === "prototype_npc_elite_slam");
expect(row).to.be.an("object");
expect(row.baseDamage).to.equal(25);
expect(row.maxRange).to.equal(4);
expect(row.cooldownSeconds).to.equal(5);
expect(row.abilityKind).to.equal("attack");
});
} }

View File

@ -49,6 +49,22 @@ tests {
expect(row.telegraphWindupSeconds).to.equal(1.5); expect(row.telegraphWindupSeconds).to.equal(1.5);
expect(row.attackDamage).to.equal(15); expect(row.attackDamage).to.equal(15);
expect(row.attackCooldownSeconds).to.equal(3); expect(row.attackCooldownSeconds).to.equal(3);
expect(row.attackAbilityId).to.equal("prototype_npc_melee_strike");
});
test("prototype_ranged_control row matches catalog", function () {
const body = res.getBody();
const row = body.npcBehaviors.find((x) => x.id === "prototype_ranged_control");
expect(row).to.be.an("object");
expect(row.displayName).to.equal("Ranged Control");
expect(row.archetypeKind).to.equal("ranged_control");
expect(row.maxHp).to.equal(80);
expect(row.aggroRadius).to.equal(10);
expect(row.leashRadius).to.equal(20);
expect(row.telegraphWindupSeconds).to.equal(2);
expect(row.attackDamage).to.equal(12);
expect(row.attackCooldownSeconds).to.equal(4);
expect(row.attackAbilityId).to.equal("prototype_npc_ranged_shot");
}); });
test("prototype_elite_mini_boss row matches catalog", function () { test("prototype_elite_mini_boss row matches catalog", function () {
@ -63,5 +79,6 @@ tests {
expect(row.telegraphWindupSeconds).to.equal(2.5); expect(row.telegraphWindupSeconds).to.equal(2.5);
expect(row.attackDamage).to.equal(25); expect(row.attackDamage).to.equal(25);
expect(row.attackCooldownSeconds).to.equal(5); expect(row.attackCooldownSeconds).to.equal(5);
expect(row.attackAbilityId).to.equal("prototype_npc_elite_slam");
}); });
} }

View File

@ -43,6 +43,7 @@ public class NpcBehaviorDefinitionsWorldApiTests
Assert.Equal(1.5, melee.TelegraphWindupSeconds); Assert.Equal(1.5, melee.TelegraphWindupSeconds);
Assert.Equal(15, melee.AttackDamage); Assert.Equal(15, melee.AttackDamage);
Assert.Equal(3.0, melee.AttackCooldownSeconds); Assert.Equal(3.0, melee.AttackCooldownSeconds);
Assert.Equal("prototype_npc_melee_strike", melee.AttackAbilityId);
var elite = body.NpcBehaviors.Single(b => b.Id == PrototypeNpcBehaviorRegistry.PrototypeEliteMiniBoss); var elite = body.NpcBehaviors.Single(b => b.Id == PrototypeNpcBehaviorRegistry.PrototypeEliteMiniBoss);
Assert.Equal("Elite Mini-Boss", elite.DisplayName); Assert.Equal("Elite Mini-Boss", elite.DisplayName);
@ -53,5 +54,6 @@ public class NpcBehaviorDefinitionsWorldApiTests
Assert.Equal(2.5, elite.TelegraphWindupSeconds); Assert.Equal(2.5, elite.TelegraphWindupSeconds);
Assert.Equal(25, elite.AttackDamage); Assert.Equal(25, elite.AttackDamage);
Assert.Equal(5.0, elite.AttackCooldownSeconds); Assert.Equal(5.0, elite.AttackCooldownSeconds);
Assert.Equal("prototype_npc_elite_slam", elite.AttackAbilityId);
} }
} }