Skip to content

Commit

Permalink
Ensure deployable, frame, and NPC class sizes are reasonable
Browse files Browse the repository at this point in the history
Closes #730
Minimum size is 0.5, every other size is a positive integer
  • Loading branch information
Eranziel committed Jul 21, 2024
1 parent 24eaeb5 commit b159e58
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/module/models/actors/deployable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,15 @@ export class DeployableModel extends LancerDataModel<"DeployableModel"> {
// correctly later.
delete data.hp;
}
if (data.stats?.size !== undefined) {
// Sizes of 1 and up must be integer values
if (data.stats?.size >= 1.0) {
data.stats.size = Math.floor(data.stats.size);
} else {
// If size is less than 1, it must be 1/2.
data.stats.size = 0.5;
}
}

// @ts-expect-error v11
return super.migrateData(data);
Expand Down
9 changes: 9 additions & 0 deletions src/module/models/items/frame.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,15 @@ export class FrameModel extends LancerDataModel<"FrameModel"> {
if (data.source) {
data.manufacturer = migrateManufacturer(data.source);
}
if (data.stats?.size !== undefined) {
// Size of 1 and higher must be integer values
if (data.stats.size >= 1.0) {
data.stats.size = Math.floor(data.stats.size);
} else {
// Sizes below 1 must be 1/2
data.stats.size = 0.5;
}
}

// @ts-expect-error v11
return super.migrateData(data);
Expand Down
14 changes: 14 additions & 0 deletions src/module/models/items/npc_class.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,20 @@ export class NpcClassModel extends LancerDataModel<"NpcClassModel"> {
if (typeof data.base_stats == "object" && !Array.isArray(data.base_stats)) {
data.base_stats = convertNpcStats(data.base_stats);
}
if (data.base_stats) {
// Ensure sizes are reasonable values
for (let i = 0; i < data.base_stats.length; i++) {
if (data.base_stats[i].size !== undefined) {
// Size of 1 and higher must be integer values
if (data.base_stats[i].size >= 1.0) {
data.base_stats[i].size = Math.floor(data.base_stats[i].size);
} else {
// Sizes below 1 must be 1/2
data.base_stats[i].size = 0.5;
}
}
}
}

// @ts-expect-error
return super.migrateData(data);
Expand Down

0 comments on commit b159e58

Please sign in to comment.