diff --git a/static/suitbuilder.css b/static/suitbuilder.css
index ef6bb4d2..a3bef448 100644
--- a/static/suitbuilder.css
+++ b/static/suitbuilder.css
@@ -1529,4 +1529,14 @@ body {
color: #95a5a6;
font-size: 10px;
margin-left: auto;
-}
\ No newline at end of file
+}
+
+.cd-toggle {
+ display: inline-flex;
+ align-items: center;
+ gap: 4px;
+ margin-right: 10px;
+ font-weight: normal;
+ cursor: pointer;
+}
+.cd-toggle input { margin: 0; }
\ No newline at end of file
diff --git a/static/suitbuilder.html b/static/suitbuilder.html
index 5ede36cc..9868ad4e 100644
--- a/static/suitbuilder.html
+++ b/static/suitbuilder.html
@@ -51,10 +51,10 @@
-
-
- -
-
+
+
+
+
diff --git a/static/suitbuilder.js b/static/suitbuilder.js
index f523134b..066ea81e 100644
--- a/static/suitbuilder.js
+++ b/static/suitbuilder.js
@@ -307,8 +307,11 @@ function gatherConstraints() {
characters: selectedCharacters,
min_armor: document.getElementById('minArmor').value || null,
max_armor: document.getElementById('maxArmor').value || null,
- min_crit_damage: document.getElementById('minCritDmg').value || null,
- max_crit_damage: document.getElementById('maxCritDmg').value || null,
+ allowed_crit_damage: [
+ document.getElementById('allowCD0').checked ? 0 : null,
+ document.getElementById('allowCD1').checked ? 1 : null,
+ document.getElementById('allowCD2').checked ? 2 : null,
+ ].filter(v => v !== null),
min_damage_rating: document.getElementById('minDmgRating').value || null,
max_damage_rating: document.getElementById('maxDmgRating').value || null,
@@ -357,7 +360,7 @@ function validateConstraints(constraints) {
if (!constraints.primary_set && !constraints.secondary_set &&
constraints.legendary_cantrips.length === 0 &&
constraints.protection_spells.length === 0 &&
- !constraints.min_armor && !constraints.min_crit_damage && !constraints.min_damage_rating) {
+ !constraints.min_armor && !constraints.min_damage_rating) {
alert('Please specify at least one constraint (equipment sets, cantrips, legendary wards, or rating minimums).');
return false;
}
@@ -383,8 +386,7 @@ async function streamOptimalSuits(constraints) {
include_inventory: constraints.include_inventory,
min_armor: constraints.min_armor ? parseInt(constraints.min_armor) : null,
max_armor: constraints.max_armor ? parseInt(constraints.max_armor) : null,
- min_crit_damage: constraints.min_crit_damage ? parseInt(constraints.min_crit_damage) : null,
- max_crit_damage: constraints.max_crit_damage ? parseInt(constraints.max_crit_damage) : null,
+ allowed_crit_damage: constraints.allowed_crit_damage,
min_damage_rating: constraints.min_damage_rating ? parseInt(constraints.min_damage_rating) : null,
max_damage_rating: constraints.max_damage_rating ? parseInt(constraints.max_damage_rating) : null,
max_results: 10,