There is a permanent shapeshifting lock for Worgen characters after completing the Gilneas starting zone. After turning in the final quest "Neither Human Nor Beast" (ID: 24593), players get stuck in Worgen form forever. Clicking the racial ability "Two Forms" (Spell: 68996) yields the server-side error "You cannot transform right now" (Error 128) because the hidden zone-forcing auras are never properly cleaned up by the core. To fix this permanently, the core needs to clean up the temporary starting zone auras (98274, 97709, 69002) and correctly trigger the learning spellcast when the quest is rewarded. 1. Recommended C++ Source Code FixPlease add this cleanup logic to the quest reward system (either in Player::RewardQuest, QuestDef.cpp, or inside the spell_worgen.cpp script handler) when Quest 24593 is completed: cpp // Permanent fix for Worgen transformation lock upon completing Gilneas if (quest->GetId() == 24593) { player->RemoveAurasDueToSpell(98274); // Removes the permanent forced Worgen form player->RemoveAurasDueToSpell(97709); // Cleans up the hidden visual altered form base player->RemoveAurasDueToSpell(69002); // Removes the incomplete starting zone model aura // Ensures the player learns "Two Forms" cleanly without interface bugs if (!player->HasSpell(68996)) player->learnSpell(68996, false); } Accompanying Database (SQL) Fix The database template also requires a minor adjustment to link the correct learning spell to the quest reward, while stripping conflicting script loops: sql-- EmuCoach MoP 5.4.8 Worgen Transformation Quest Fix -- Forces the quest "Endgame" to cast the correct learning spell upon turn-in UPDATE `quest_template` SET `RewardSpellCast` = 72857 WHERE `Id` = 24593; -- Clean up broken or deadlocking spell chains DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (68996, 72857, 98274, 97709); -- Override the problematic hardcoded C++ mechanics by routing them to a dummy script DELETE FROM `spell_script_names` WHERE `spell_id` IN (98274, 97709); INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (98274, 'dummy_worgen_fix'), (97709, 'dummy_worgen_fix');