85 lines
3.1 KiB
Plaintext
85 lines
3.1 KiB
Plaintext
meta {
|
|
name: GET npc behavior definitions
|
|
type: http
|
|
seq: 1
|
|
}
|
|
|
|
get {
|
|
url: {{baseUrl}}/game/world/npc-behavior-definitions
|
|
body: none
|
|
auth: none
|
|
}
|
|
|
|
tests {
|
|
test("returns 200 JSON with schema v1 and npcBehaviors array", function () {
|
|
expect(res.getStatus()).to.equal(200);
|
|
expect(res.getHeader("content-type")).to.contain("application/json");
|
|
const body = res.getBody();
|
|
expect(body.schemaVersion).to.equal(1);
|
|
expect(body.npcBehaviors).to.be.an("array");
|
|
expect(body.npcBehaviors.length).to.equal(3);
|
|
});
|
|
|
|
test("npcBehaviors are ascending by id (ordinal)", function () {
|
|
const body = res.getBody();
|
|
const ids = body.npcBehaviors.map((x) => x.id);
|
|
const sorted = [...ids].sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
|
|
expect(ids).to.eql(sorted);
|
|
});
|
|
|
|
test("frozen prototype three matches registry id order", function () {
|
|
const body = res.getBody();
|
|
const ids = body.npcBehaviors.map((x) => x.id);
|
|
expect(ids).to.eql([
|
|
"prototype_elite_mini_boss",
|
|
"prototype_melee_pressure",
|
|
"prototype_ranged_control",
|
|
]);
|
|
});
|
|
|
|
test("prototype_melee_pressure row matches catalog", function () {
|
|
const body = res.getBody();
|
|
const row = body.npcBehaviors.find((x) => x.id === "prototype_melee_pressure");
|
|
expect(row).to.be.an("object");
|
|
expect(row.displayName).to.equal("Melee Pressure");
|
|
expect(row.archetypeKind).to.equal("melee_pressure");
|
|
expect(row.maxHp).to.equal(100);
|
|
expect(row.aggroRadius).to.equal(8);
|
|
expect(row.leashRadius).to.equal(16);
|
|
expect(row.telegraphWindupSeconds).to.equal(1.5);
|
|
expect(row.attackDamage).to.equal(15);
|
|
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 () {
|
|
const body = res.getBody();
|
|
const row = body.npcBehaviors.find((x) => x.id === "prototype_elite_mini_boss");
|
|
expect(row).to.be.an("object");
|
|
expect(row.displayName).to.equal("Elite Mini-Boss");
|
|
expect(row.archetypeKind).to.equal("elite_mini_boss");
|
|
expect(row.maxHp).to.equal(200);
|
|
expect(row.aggroRadius).to.equal(8);
|
|
expect(row.leashRadius).to.equal(18);
|
|
expect(row.telegraphWindupSeconds).to.equal(2.5);
|
|
expect(row.attackDamage).to.equal(25);
|
|
expect(row.attackCooldownSeconds).to.equal(5);
|
|
expect(row.attackAbilityId).to.equal("prototype_npc_elite_slam");
|
|
});
|
|
}
|