Skip to content

Implement Book Soothsaying for dummies + Profession fixes + Trainer overhaul#1705

Closed
FlagFlayer wants to merge 180 commits intovmangos:developmentfrom
FlagFlayer:soothsaying
Closed

Implement Book Soothsaying for dummies + Profession fixes + Trainer overhaul#1705
FlagFlayer wants to merge 180 commits intovmangos:developmentfrom
FlagFlayer:soothsaying

Conversation

@FlagFlayer
Copy link
Contributor

@FlagFlayer FlagFlayer commented Nov 21, 2022

🍰 Pullrequest

This pull request implements the intended ways to change profession specialisations, as well as generally reworking profession handling to use cmangos implementation.

Server hosts be warned: merging this PR will cause respecialisation to be broken on old characters

The blizz-like implementation uses hidden "specialisation reputation" (details below) that would not have been rewarded to characters that have previously completed specialisation quests. Once this PR is ready for merge there will be another PR linked here that uses quest completion instead of the reputation to prevent any bugs.

Changes

Remove QUEST STATUS NONE update for abandoned professions

Implement Book Soothsaying for dummies for Engineering and Leatherworking specialisations

Professions
Players that unlearn Engineering or Leatherworking may now respecialize if they decide to relearn the professions.

Video from original WotLK

Remove profession specialisation ranks in spell_chain

Implied by SkillLineAbility.dbc: There's no previous rank for profession specialisations. They are not part of the profession spell chain.

From Thottbot By naiad on 2005/10/27 (Patch 1.8.1)
Subject: "225->300 (artisan)"
there is NO correlation between tribal (or any of the three specs) and getting your artisan (225 to 300 max) leatherworking. to learn artisan lwing, you will need to go to the master leatherworking trainer. for the alliance he is in aerie peak, in the inn downstairs. you must be level 35 and have 200+ lwing. it will cost you 5 gold.

for the horde, i believe you have to go to feralas (camp mojache).

ireburu on 2006/04/16 (Patch 1.9.4)
Subject: "actually"
you don't have to be artisan to get and complete the dragonscale leatherworking quest.

From Thottbot By ayu129 on 2006/02/27 (Patch 1.9.4)
Subject: "255 enginering"
i beat quest and my max skill says 225 and theres a blue q mark over him head the quest is card renewal and wen i try to renew it it says duplicate idem not found i dont kno how to max ur skill to 300 but if u kno repond plz

Forum post:

In order to raise your Engineering skill past Expert (225) you must speak with the Master Engineer in Gadetzan and learn Artisan Engineering. Specializing in Goblin or Gnome does NOT let you raise your skill to 300, it simply allows you to access their schemata.

Implement vanilla mechanics and scripts for Blacksmithing specialisation quests

Blacksmithing quests are unlocked by a gossip option by either Myolor Sunderfury (Alliance) or Krathok Moltenfist (Horde) that gives the player reputation for the hidden "Armorsmithing" or "Weaponsmithing" factions. There is a small gossip script that fires where the respective faction's "guide" points at the relevant NPC that starts the quest for the specialisation you chose and says a short line of text.

From ThottbotBy dynamite2k on 2004/10/07 (Patch ?????)
Subject: "Gives quests for advanced blacksmithing"
[Krathok Moltenfist] presents a choice to follow the path of the armorsmith or weaponsmith.
Can only choose one..

From AllakhazamBy iamDaMan on 2006/03/28 (Patch 1.9.4)
Subject: "got to be done"
be sure to talk to the guy right next to [Borgosh Corebender] to tell him whether u want to be a weapon smith or an amorsmith

Armorsmithing/Weaponsmithing gossip script:

Example for Horde Weaponsmith: Video

Example for Horde Armorsmith: Video

Example for Alliance Armorsmith: Video

For Alliance there is additional gossip given by the relevant Blacksmith trainers in Ironforge and Stormwind that guides you toward Myolor to choose a specialisation:

Example for Bengus Deepforge: Video

Therum Deepforge: Relevant Wiki article

This gossip remains available as long as you have the required 200 blacksmithing (and level 40+) but do not have a blacksmithing specialisation.

Bengus Deepforge gossip

The wiki article for Therum Deepforge also reveals missing gossip. From looking at the PTR I have concluded this gossip was bugged during vanilla due to being incorrectly displayed at a Blackmsmithing skill of 1:

"Ye have the look of a Blacksmith to ye. Soot under the nails, steel in yer bones. Aye, very much the blood of a Blacksmith in yer veins. Which means ye've come to me looking to learn a thing or two, well $g lad : lass; grab a hammer. Let's see what I can teach ye."

This gossip would be given before Therum Deepforge can train you. However, currently on the Classic PTR when you have trained blacksmithing but your skill is under 50 he says the following:

WoWScrnShot_092624_100911

This gossip does not exist in broadcast_text, meaning it's a later addition to fix a bug relating to this NPCs gossip, which could only have been due to using this second gossip when he shouldn't have.

Although it's worth mentioning that the relevant Wiki article lists the gossip under "Trained" which would imply this behaviour, without other circumstances this would not constitute any sort of proof.

No vanilla system for changing Blacksmithing specialisations

An announcement on new features for TBC all but outright confirms that specialisation change was impossible in vanilla.

Profession specialisation 'dummy' factions

Different profession specialisation quests reward reputations with hidden factions with the corresponding name (e.g. Completing the quest Tribal Leatherworking rewards reputation with a faction called Leatherworking - Tribal). This useful for cutting down on the amount of conditions required for the implementation (no need to seperately check horde and alliance quests).

Pre-1.10 profession specialisation mechanics

Before Patch 1.10, on abandoning and retraining a profession which you specialised in, LearnQuestRewardedSpells would reteach whichever specialisation you had immediately on training the profession.

All relearning methods via gossip (Leatherworking & Engineering via Soothsaying and Blacksmithing & Weaponsmithing sub specialisations via their trainers) were added in 1.10 with the change to LearnQuestRewardedSpells to no longer reteach specialisations immediately on retraining.

Forum post:

If you specialize in a profession and then drop that profession, resuming it will cause a bug to fire on you. You will be in your old specialty, but will be unable to train in anything new or choose the other specialty. A GM Character Specialist can help this, but it is not a quick turnaround. Before you quit a specialized profession, you should really be sure you don't want to do it anymore.

If you do quit Engineering, after having specialized, and then return to the profession later, you will still be a member of your chosen specialty. You will be able to renew your membership card and make and learn schematics from your school, with the following exception: You will be unable to learn any specialty schematics introduced since patch 1.4, on 4/19/2005. You may not be able to learn any additional specialty schematics at all, though this is unconfirmed. Though you may be a card carrying member and a 300+ Engineer, you will be told you cannot learn the schematic as you must have the specialization for it. Which you do. And there's the bug.

This PR does not implement the bugged behaviour mentioned above on being unable to learn specialty schematics (mainly as I lack the knowledge on how to implement it). Feel free to add it in the future...

Deprecate field trainer_... fields in creature template, implement creature_trainer table

Remove old deprecated code and implement creature_trainer table. As per sniffs, all trainer NPCs should have a gossip_menu_id of 0 in creature_template. The trainer gossip menu_id as well as the trainer_id should be assigned in creature_trainer.

How2Test

  • TBA

Todo / Checklist

  • Write implementation for book "Soothsaying for Dummies"
  • Fix automatic quest status none for profession quests
  • Remove profession specialisations from profession chain_spell
  • Implement blacksmith specialisation gossip and script to unlock quest
  • Implement hidden faction reputation for profession quests
  • Implement pre-1.10 automatic relearn mechanic
  • Correct conditions for Membership Card Renewal
  • Complete deprecation of trainer_... fields in creature_template and implement creature_trainer
  • Test that everything works correctly

@ratkosrb
Copy link
Contributor

Editing broadcast_text is not allowed. That table is bruteforced from classic. The text fields are 100% correct.

@ratkosrb
Copy link
Contributor

And the male and female texts are per the gender of the NPC which has the gossip, not the player who talks to them.

@FlagFlayer
Copy link
Contributor Author

Ah sorry for the confusion on my side, I'll fix it right away

Remove changes to `broadcast_text`, and add text to NPCs appropriately.
Not sure what I'm trying to do, but I hope it works
I always forget doing the commas
@FlagFlayer FlagFlayer changed the title Implement Book Soothsaying for Dummies and relevant gossip Import profession implementation from cmangos and implement Book Soothsaying for Dummies and relevant gossip Nov 23, 2022
@FlagFlayer
Copy link
Contributor Author

#1683 and #1686 are also related to the vmangos implementation of professions, so ideally those too would also be fixed by importing the cmangos code.

@0blu 0blu added the CPP A issue / PR which references CPP code label Oct 22, 2024
@FlagFlayer FlagFlayer changed the title Implement Book Soothsaying for dummies + Profession specialisation updates and fixes Implement Book Soothsaying for dummies + Profession fixes + Trainer overhaul Mar 4, 2025
@FlagFlayer
Copy link
Contributor Author

This PR is doing too many things at this point. I think I'll split it into separate PRs: One for Soothsaying for Dummies, one for Misc. fixes and one for removing trainer_... fields from creature_template

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CPP A issue / PR which references CPP code SQL A issue / PR which references SQL code

Projects

None yet

3 participants