In file player.cpp You have structure like this
C++:
//Skill loss
for (uint8_t i = SKILL_FIRST; i <= SKILL_LAST; ++i) { //for each skill
uint64_t sumSkillTries = 0;
for (uint16_t c = 11; c <= skills[i].level; ++c) { //sum up all required tries for all skill levels
sumSkillTries += vocation->getReqSkillTries(i, c);
}
sumSkillTries += skills[i].tries;
uint32_t lostSkillTries = static_cast<uint32_t>(sumSkillTries * deathLossPercent);
while (lostSkillTries > skills[i].tries) {
lostSkillTries -= skills[i].tries;
if (skills[i].level <= 10) {
skills[i].level = 10;
skills[i].tries = 0;
lostSkillTries = 0;
break;
}
skills[i].tries = vocation->getReqSkillTries(i, skills[i].level);
skills[i].level--;
}
skills[i].tries = std::max<int32_t>(0, skills[i].tries - lostSkillTries);
skills[i].percent = Player::getPercentLevel(skills[i].tries, vocation->getReqSkillTries(i, skills[i].level));
}
Replace this fragment of code
Code:
uint32_t lostSkillTries = static_cast<uint32_t>(sumSkillTries * deathLossPercent);
with
Code:
if (i == SKILL_FISHING) {
uint32_t lostSkillTries = 0;
} else {
uint32_t lostSkillTries = static_cast<uint32_t>(sumSkillTries * deathLossPercent);
}
When skill loss counting loop "targets" fishing skill, instead of calculating lost tries, it will set it to 0, what means that no skill tries will be lost,
No skill tries loss equals no skill loss.