valheimPlus / ValheimPlus

A HarmonyX Mod aimed at improving the gameplay and quality of life of the game Valheim.
http://valheim.plus
GNU Affero General Public License v3.0
967 stars 236 forks source link

Fix bug where fishing with PlayerProjectile.enableScaleWithSkillLevel causes inability to save #777

Closed Grantapher closed 2 months ago

Grantapher commented 1 year ago

This fixes #758. I reproduced save not working before this change and working afterwards.

The issue is that __instance.m_weapon.m_shared.m_skillType is None for the fishing rod. Casting the rod triggers ProjectileAttackTriggered, which then calls player.m_skills.GetSkill(skillType) with a skillType of None. When GetSkill doesn't find an existing skill for None, it creates a new one for None with 0 xp and level as well as null m_info. This is added to the list of skills to later be saved. When Skill.Save is called there is a line of code which tries to read skill.m_info.m_skill, which causes the NullReferenceException, since skill.m_info is null.

The fix ensures we skip calling GetSkill when skillType is None.

I also added this check to the other place where GetSkill is called, just in case.