@@ -3690,12 +3690,13 @@ static int skill_attack(int attack_type, struct block_list *src, struct block_li
3690
3690
switch(can_copy(tsd, copy_skill)) {
3691
3691
case 1: // Plagiarism
3692
3692
{
3693
- pc->clear_existing_cloneskill(tsd, false);
3694
-
3695
3693
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);
3697
3696
break; // [Aegis] can't overwrite skill of higher level, but will still remove previously copied skill.
3697
+ }
3698
3698
3699
+ pc->clear_existing_cloneskill(tsd, false);
3699
3700
tsd->cloneskill_id = copy_skill;
3700
3701
pc_setglobalreg(tsd, script->add_variable("CLONE_SKILL"), copy_skill);
3701
3702
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
3712
3713
case 2: // Reproduce
3713
3714
{
3714
3715
lv = sc ? sc->data[SC__REPRODUCE]->val1 : 1;
3715
- pc->clear_existing_reproduceskill(tsd, false);
3716
-
3717
3716
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);
3719
3719
break; // unconfirmed, but probably the same behavior as for RG_PLAGIARISM
3720
+ }
3720
3721
3722
+ pc->clear_existing_reproduceskill(tsd, false);
3721
3723
tsd->reproduceskill_id = copy_skill;
3722
3724
pc_setglobalreg(tsd, script->add_variable("REPRODUCE_SKILL"), copy_skill);
3723
3725
pc_setglobalreg(tsd, script->add_variable("REPRODUCE_SKILL_LV"), lv);
0 commit comments