Closed skyleo closed 4 months ago
I think there is some missing packet (at least for "newer" clients), on 2019-12-24 main, when a new skill is copied by Plagiarism (Rogue one) the old one stays in the tree as "unlearned":
Did you test this on a rogue / stalker and a character that doesn't own skills outside of his skill tree (such as GMs with all skills)
Cause this new logic should not touch these skills that you copied unless you are using this artificial case o-o
Hmm I did use @allskills
(using default herc configs, where only my class skill tree gets filled -- so no extra skill in my character).
My test was more or less like that:
@job Shadow Chaser T.
@allskills
then, on a pvp map, use another character to hit me with Magnum Break, which got copied. Then hit by Bash, which got copied but did not erase Magnum Break there.
Hmm I did use
@allskills
(using default herc configs, where only my class skill tree gets filled -- so no extra skill in my character).My test was more or less like that:
* `@job Shadow Chaser T.` * `@allskills`
then, on a pvp map, use another character to hit me with Magnum Break, which got copied. Then hit by Bash, which got copied but did not erase Magnum Break there.
Please don't test stuff like this with @allskills
, try to test it on a somewhat realistic character. @job
and @jlvl
should be enough.
If you can reproduce that way I'll try to research.
Problem discovered, fixed and accordingly rebased the commits. Introducing a new function pc->is_own_skill
now as first commit.
Pull Request Prelude
Changes Proposed
We address this by implementing logic to use SKILL_FLAG_REPLACED_LV_0 in SC_REPRODUCE and RG_PLAGIARISM. We also reduced some code-duplication shared with pc_jobchange and skill_attack logic of those two skills. SKILL_FLAG_PERM_GRANTED skills are no longer copyable as there's no clearly defined implementation for those when copied.
Note: A skill that one has the prerequisites for but one didn't level will appear as SKILL_FLAG_PERMANENT and have it's .id entry set in an
sd
's status.skill[] entry. Note: Well skills that you didn't learn, nor can learn, will also appear as SKILL_FLAG_PERMANENT, but can be distinguished via unset id.Vaguely inspired by https://github.com/HeraclesHub/Heracles/pull/14
Issues addressed: #3289
List of commits in my private-fork that this PR is based on: