Skip to content

Commit ba62995

Browse files
committed
fix: remove mastery perks by hardcoded ids
This prevents unintended removal of perks such as Bandage Mastery.
1 parent 4e0a38a commit ba62995

2 files changed

Lines changed: 47 additions & 17 deletions

File tree

mod_ptr/hooks/skills/backgrounds/swordmaster_background.nut

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,21 +59,37 @@
5959
local buildPerkTree = ::mods_getMember(o, "buildPerkTree");
6060
o.buildPerkTree <- function()
6161
{
62-
if (this.m.CustomPerkTree == null)
62+
if (this.m.CustomPerkTree != null) return buildPerkTree();
63+
64+
local ret = buildPerkTree();
65+
foreach (row in this.getPerkTree())
6366
{
64-
local ret = buildPerkTree();
65-
local masteryRow = this.getPerkTree()[3];
66-
for (local i = masteryRow.len() - 1; i >= 0; i--)
67+
foreach (perk in row)
6768
{
68-
if (masteryRow[i].ID != "perk.mastery.sword" && masteryRow[i].ID.find("mastery") != null)
69+
for (local i = row.len() - 1; i >= 0; i--)
6970
{
70-
this.removePerk(::Const.Perks.PerkDefs[masteryRow[i].Const]);
71+
switch (row[i].ID)
72+
{
73+
case "perk.mastery.axe":
74+
case "perk.mastery.bow":
75+
case "perk.mastery.cleaver":
76+
case "perk.mastery.crossbow":
77+
case "perk.mastery.dagger":
78+
case "perk.mastery.flail":
79+
case "perk.mastery.hammer":
80+
case "perk.mastery.mace":
81+
case "perk.mastery.polearm":
82+
case "perk.mastery.spear":
83+
case "perk.mastery.throwing":
84+
case "perk.legend_mastery_slings":
85+
case "perk.legend_mastery_staves":
86+
this.removePerk(::Const.Perks.PerkDefs[row[i].Const]);
87+
break;
88+
}
7189
}
7290
}
73-
74-
return ret;
7591
}
7692

77-
return buildPerkTree();
93+
return ret;
7894
}
7995
});

scripts/skills/effects/ptr_swordmaster_scenario_recruit_effect.nut

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -246,15 +246,29 @@ this.ptr_swordmaster_scenario_recruit_effect <- this.inherit("scripts/skills/eff
246246
{
247247
for (local i = row.len() - 1; i >= 0; i--)
248248
{
249-
if (row[i].ID != "perk.mastery.sword" && row[i].ID.find("mastery") != null)
249+
switch (row[i].ID)
250250
{
251-
if (this.getContainer().hasSkill(row[i].ID))
252-
{
253-
this.getContainer().removeByID(row[i].ID);
254-
actor.m.PerkPoints++;
255-
actor.m.PerkPointsSpent--;
256-
}
257-
bg.removePerk(::Const.Perks.PerkDefs[row[i].Const]);
251+
case "perk.mastery.axe":
252+
case "perk.mastery.bow":
253+
case "perk.mastery.cleaver":
254+
case "perk.mastery.crossbow":
255+
case "perk.mastery.dagger":
256+
case "perk.mastery.flail":
257+
case "perk.mastery.hammer":
258+
case "perk.mastery.mace":
259+
case "perk.mastery.polearm":
260+
case "perk.mastery.spear":
261+
case "perk.mastery.throwing":
262+
case "perk.legend_mastery_slings":
263+
case "perk.legend_mastery_staves":
264+
if (this.getContainer().hasSkill(row[i].ID))
265+
{
266+
this.getContainer().removeByID(row[i].ID);
267+
actor.m.PerkPoints++;
268+
actor.m.PerkPointsSpent--;
269+
}
270+
bg.removePerk(::Const.Perks.PerkDefs[row[i].Const]);
271+
break;
258272
}
259273
}
260274
}

0 commit comments

Comments
 (0)