Skip to content

Commit 58b217e

Browse files
Merge pull request #3325 from skyleo/fix-plagiarize-copy-failure-low-lvl
Fix previously plagiarized skill re-appearing after relog, when removed prior
2 parents f516c57 + c228f3c commit 58b217e

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

src/map/skill.c

+8-6
Original file line numberDiff line numberDiff line change
@@ -3690,12 +3690,13 @@ static int skill_attack(int attack_type, struct block_list *src, struct block_li
36903690
switch(can_copy(tsd, copy_skill)) {
36913691
case 1: // Plagiarism
36923692
{
3693-
pc->clear_existing_cloneskill(tsd, false);
3694-
36953693
lv = min(skill_lv, pc->checkskill(tsd, RG_PLAGIARISM));
3696-
if (learned_lv > lv)
3694+
if (learned_lv > lv) {
3695+
pc->clear_existing_cloneskill(tsd, true);
36973696
break; // [Aegis] can't overwrite skill of higher level, but will still remove previously copied skill.
3697+
}
36983698

3699+
pc->clear_existing_cloneskill(tsd, false);
36993700
tsd->cloneskill_id = copy_skill;
37003701
pc_setglobalreg(tsd, script->add_variable("CLONE_SKILL"), copy_skill);
37013702
pc_setglobalreg(tsd, script->add_variable("CLONE_SKILL_LV"), lv);
@@ -3712,12 +3713,13 @@ static int skill_attack(int attack_type, struct block_list *src, struct block_li
37123713
case 2: // Reproduce
37133714
{
37143715
lv = sc ? sc->data[SC__REPRODUCE]->val1 : 1;
3715-
pc->clear_existing_reproduceskill(tsd, false);
3716-
37173716
lv = min(lv, skill->get_max(copy_skill));
3718-
if (learned_lv > lv)
3717+
if (learned_lv > lv) {
3718+
pc->clear_existing_reproduceskill(tsd, true);
37193719
break; // unconfirmed, but probably the same behavior as for RG_PLAGIARISM
3720+
}
37203721

3722+
pc->clear_existing_reproduceskill(tsd, false);
37213723
tsd->reproduceskill_id = copy_skill;
37223724
pc_setglobalreg(tsd, script->add_variable("REPRODUCE_SKILL"), copy_skill);
37233725
pc_setglobalreg(tsd, script->add_variable("REPRODUCE_SKILL_LV"), lv);

0 commit comments

Comments
 (0)