Skip to content

Commit 16701e2

Browse files
committed
fix: custom Weapons accounts for ranged martial proficiency requirements
1 parent cb619d9 commit 16701e2

4 files changed

Lines changed: 58 additions & 6 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,6 @@
7373
"author": "Fultimator <fultimator@gmail.com>",
7474
"buildcounter": {
7575
"version": "1.0.5",
76-
"count": 72
76+
"count": 74
7777
}
7878
}

src/components/player/equipment/customWeapons/PlayerCustomWeapons.jsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,29 @@ export default function PlayerCustomWeapons({
3232

3333
// Check if any customizations make this weapon martial
3434
const martialCustomizations = ['weapon_customization_quick', 'weapon_customization_magicdefenseboost', 'weapon_customization_powerful'];
35-
const isMartial = customWeapon.customizations && customWeapon.customizations.some(c => martialCustomizations.includes(c.name));
36-
35+
const isMartialFromCustomization = customWeapon.customizations && customWeapon.customizations.some(c => martialCustomizations.includes(c.name));
36+
const isMartial = customWeapon.martial || isMartialFromCustomization;
37+
3738
// If the weapon is not martial, it is always equippable
3839
if (!isMartial) {
3940
return true;
4041
}
4142

43+
const isRanged = customWeapon.range === "weapon_range_ranged";
44+
const isMelee =
45+
customWeapon.range === "weapon_range_melee" ||
46+
customWeapon.range === "weapon_range_reach";
47+
4248
// Iterate through each class to check if the weapon is equippable based on their benefits
4349
for (const playerClass of classes) {
4450
const { benefits } = playerClass;
4551

46-
// Check if the class benefits allow equipping martial weapons
52+
// Check if the class benefits allow equipping armor, shields, melee, or ranged weapons
4753
if (benefits.martials) {
48-
if (isMartial && benefits.martials.melee) {
54+
if (
55+
(isMelee && benefits.martials.melee) ||
56+
(isRanged && benefits.martials.ranged)
57+
) {
4958
return true;
5059
}
5160
}

src/routes/equip/customWeapons/CustomWeapons.jsx

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ function CustomWeapons() {
4747
const [weaponName, setWeaponName] = useState("");
4848
const [selectedCategory, setSelectedCategory] = useState(categories[0]);
4949
const [selectedRange, setSelectedRange] = useState(range[0]);
50+
const [martial, setMartial] = useState(false);
5051
const [selectedAccuracyCheck, setSelectedAccuracyCheck] = useState(accuracyChecks[0]);
5152
const [selectedType, setSelectedType] = useState(types[0]);
5253
const [currentCustomizations, setCurrentCustomizations] = useState([]);
@@ -59,6 +60,7 @@ function CustomWeapons() {
5960
const [secondWeaponName, setSecondWeaponName] = useState("");
6061
const [secondSelectedCategory, setSecondSelectedCategory] = useState(categories[0]);
6162
const [secondSelectedRange, setSecondSelectedRange] = useState(range[0]);
63+
const [secondMartial, setSecondMartial] = useState(false);
6264
const [secondSelectedAccuracyCheck, setSecondSelectedAccuracyCheck] = useState(accuracyChecks[0]);
6365
const [secondSelectedType, setSecondSelectedType] = useState(types[0]);
6466
const [secondCurrentCustomizations, setSecondCurrentCustomizations] = useState([]);
@@ -202,6 +204,7 @@ function CustomWeapons() {
202204
setWeaponName("");
203205
setSelectedCategory(categories[0]);
204206
setSelectedRange(range[0]);
207+
setMartial(false);
205208
setSelectedAccuracyCheck(accuracyChecks[0]);
206209
setSelectedType(types[0]);
207210
setCurrentCustomizations([]);
@@ -213,6 +216,7 @@ function CustomWeapons() {
213216
setSecondWeaponName("");
214217
setSecondSelectedCategory(categories[0]);
215218
setSecondSelectedRange(range[0]);
219+
setSecondMartial(false);
216220
setSecondSelectedAccuracyCheck(accuracyChecks[0]);
217221
setSecondSelectedType(types[0]);
218222
setSecondCurrentCustomizations([]);
@@ -254,6 +258,7 @@ function CustomWeapons() {
254258
setWeaponName("");
255259
setSelectedCategory("");
256260
setSelectedRange("");
261+
setMartial(false);
257262
setSelectedAccuracyCheck(accuracyChecks[0]);
258263
setSelectedType("");
259264
setCurrentCustomizations([]);
@@ -270,6 +275,9 @@ function CustomWeapons() {
270275
if (data.range && range.includes(data.range)) {
271276
setSelectedRange(data.range);
272277
}
278+
if (data.martial) {
279+
setMartial(data.martial);
280+
}
273281
if (data.accuracyCheck && data.accuracyCheck.att1 && data.accuracyCheck.att2) {
274282
const matchingCheck = accuracyChecks.find(
275283
check => check.att1 === data.accuracyCheck.att1 && check.att2 === data.accuracyCheck.att2
@@ -336,6 +344,9 @@ function CustomWeapons() {
336344
if (data.secondSelectedRange && range.includes(data.secondSelectedRange)) {
337345
setSecondSelectedRange(data.secondSelectedRange);
338346
}
347+
if (data.secondMartial) {
348+
setSecondMartial(data.secondMartial);
349+
}
339350
if (data.secondSelectedAccuracyCheck) {
340351
const matchingCheck = accuracyChecks.find(
341352
check => check.att1 === data.secondSelectedAccuracyCheck.att1 && check.att2 === data.secondSelectedAccuracyCheck.att2
@@ -495,6 +506,20 @@ function CustomWeapons() {
495506
/>
496507
</Grid>
497508

509+
{selectedRange === "weapon_range_ranged" && (
510+
<Grid item xs={12} sm={6}>
511+
<FormControlLabel
512+
control={
513+
<Checkbox
514+
checked={martial}
515+
onChange={(e) => setMartial(e.target.checked)}
516+
/>
517+
}
518+
label={t("Requires Martial Proficiency")}
519+
/>
520+
</Grid>
521+
)}
522+
498523
<Grid item xs={12} sm={6}>
499524
<ChangeAccuracyCheck
500525
value={selectedAccuracyCheck}
@@ -717,6 +742,20 @@ function CustomWeapons() {
717742
/>
718743
</Grid>
719744

745+
{secondSelectedRange === "weapon_range_ranged" && (
746+
<Grid item xs={12} sm={6}>
747+
<FormControlLabel
748+
control={
749+
<Checkbox
750+
checked={secondMartial}
751+
onChange={(e) => setSecondMartial(e.target.checked)}
752+
/>
753+
}
754+
label={t("Requires Martial Proficiency")}
755+
/>
756+
</Grid>
757+
)}
758+
720759
<Grid item xs={12} sm={6}>
721760
<ChangeAccuracyCheck
722761
value={secondSelectedAccuracyCheck}
@@ -922,6 +961,7 @@ function CustomWeapons() {
922961
name: weaponName,
923962
category: selectedCategory,
924963
range: selectedRange,
964+
martial: martial,
925965
accuracyCheck: selectedAccuracyCheck,
926966
type: selectedType,
927967
customizations: currentCustomizations,
@@ -948,6 +988,7 @@ function CustomWeapons() {
948988
name: secondWeaponName,
949989
category: secondSelectedCategory,
950990
range: secondSelectedRange,
991+
martial: secondMartial,
951992
accuracyCheck: secondSelectedAccuracyCheck,
952993
type: secondSelectedType,
953994
customizations: secondCurrentCustomizations,
@@ -983,6 +1024,7 @@ function CustomWeapons() {
9831024
name: weaponName,
9841025
category: selectedCategory,
9851026
range: selectedRange,
1027+
martial: martial,
9861028
accuracyCheck: selectedAccuracyCheck,
9871029
type: selectedType,
9881030
customizations: currentCustomizations,
@@ -993,6 +1035,7 @@ function CustomWeapons() {
9931035
name: secondWeaponName,
9941036
category: secondSelectedCategory,
9951037
range: secondSelectedRange,
1038+
martial: secondMartial,
9961039
accuracyCheck: secondSelectedAccuracyCheck,
9971040
type: secondSelectedType,
9981041
customizations: secondCurrentCustomizations,

src/routes/equip/customWeapons/PrettyCustomWeapon.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ function PrettyCustomWeapon({ weaponData, showActions = true }) {
7070
let totalCost = baseCost;
7171
let damage = 5;
7272
let precision = 0;
73-
let isMartial = false;
73+
let isMartial = weaponData.martial || false;
7474
let damageType = weaponData.type || "physical";
7575

7676
weaponData.customizations?.forEach((customization) => {

0 commit comments

Comments
 (0)