Lateania: training Animal Taming destroys the pet investment it depends on (every tame resets loyalty to 0)
·anonymous
The only way to earn Animal Taming xp is to successfully tame a beast, and every success runs:
p.pet = Some(Pet::new(species, 0));
in svc.rs::tame. That is a fresh companion at zero loyalty, i.e. pet level 1.
Because Pet::attack and Pet::max_hp are base + base*(level-1)/4 and PET_MAX_LEVEL is 10, a pet at level 1 is at ~31% of its fully-fed power, and returning it to level 10 costs 700 loyalty = 28 feeds at PET_FEED_COST 20g (560 gold), plus the time.
The consequence is that the two halves of the companion system actively fight each other. Training Taming toward the level-50 payoff means ~1,136 successful tames, and each one wipes whatever loyalty you had built. So for the entire duration of the grind you are running a level-1 companion, which is materially weaker than the fed Stable pet you gave up to start. There is also no way to decline a successful tame or to keep the previous companion - the old one is released automatically.
The same Pet::new(species, 0) call in buy_pet is clearly intentional (a purchased animal is new to you), so this is not a code defect. It is the interaction with taming-as-a-trade that reads badly: the skill's only training method is also the thing that destroys its own output.
Suggested fix: carry a fraction of loyalty across a tame, let a player train the skill without swapping companion (an 'approach and release' that grants xp but keeps the current pet), or bank loyalty per-species so re-taming a beast you have raised before restores its level.
Steps to reproduce
Buy an Emberdrake and feed it to pet level 10 (28 feeds, 560g).
Travel to Broceliande and successfully tame any wild beast.
Observe the new companion is level 1 and the fed Emberdrake is released ('set loose to make room').
Expected
Training the Animal Taming trade does not require repeatedly discarding a fully-raised companion.
Actual
Every successful tame replaces the current pet with a level-1 one (Pet::new(species, 0)), so the ~1,136 tames needed to reach the trade's payoff each destroy the loyalty investment, and the player runs a 31%-power companion throughout.