Core/Characters: Added allied race creation data, implemented intro scenes & added config option to disable achievement requirements for allied races

Port From (https://github.com/TrinityCore/TrinityCore/commit/71eb30f89dc5abeb33c7aa4a526073f769b5c7d1)
This commit is contained in:
hondacrx
2021-10-05 14:04:44 -04:00
parent cf248ca95a
commit 79ef3161dd
9 changed files with 1192 additions and 17 deletions
+23 -10
View File
@@ -130,7 +130,8 @@ namespace Game
EnumCharactersResult.RaceUnlock raceUnlock = new();
raceUnlock.RaceID = requirement.Key;
raceUnlock.HasExpansion = (byte)GetAccountExpansion() >= requirement.Value.Expansion;
raceUnlock.HasAchievement = requirement.Value.AchievementId != 0 /*|| HasAchievement(requirement.Value.AchievementId)*/;
raceUnlock.HasAchievement = requirement.Value.AchievementId != 0 && (WorldConfig.GetBoolValue(WorldCfg.CharacterCreatingDisableAlliedRaceAchievementRequirement)
/* || HasAccountAchievement(requirement.second.AchievementId)*/);
charResult.RaceUnlockData.Add(raceUnlock);
}
@@ -797,16 +798,28 @@ namespace Game
if (pCurrChar.GetCinematic() == 0)
{
pCurrChar.SetCinematic(1);
ChrClassesRecord cEntry = CliDB.ChrClassesStorage.LookupByKey(pCurrChar.GetClass());
if (cEntry != null)
var playerInfo = Global.ObjectMgr.GetPlayerInfo(pCurrChar.GetRace(), pCurrChar.GetClass());
if (playerInfo != null)
{
ChrRacesRecord rEntry = CliDB.ChrRacesStorage.LookupByKey(pCurrChar.GetRace());
if (pCurrChar.GetClass() == Class.DemonHunter) // @todo: find a more generic solution
pCurrChar.SendMovieStart(469);
else if (cEntry.CinematicSequenceID != 0)
pCurrChar.SendCinematicStart(cEntry.CinematicSequenceID);
else if (rEntry != null)
pCurrChar.SendCinematicStart(rEntry.CinematicSequenceID);
switch (pCurrChar.GetCreateMode())
{
case PlayerCreateMode.Normal:
if (playerInfo.introMovieId.HasValue)
pCurrChar.SendMovieStart(playerInfo.introMovieId.Value);
else if (playerInfo.introSceneId.HasValue)
pCurrChar.GetSceneMgr().PlayScene(playerInfo.introSceneId.Value);
else if (CliDB.ChrClassesStorage.TryGetValue((uint)pCurrChar.GetClass(), out ChrClassesRecord chrClassesRecord) && chrClassesRecord.CinematicSequenceID != 0)
pCurrChar.SendCinematicStart(chrClassesRecord.CinematicSequenceID);
else if (CliDB.ChrRacesStorage.TryGetValue((uint)pCurrChar.GetRace(), out ChrRacesRecord chrRacesRecord) && chrRacesRecord.CinematicSequenceID != 0)
pCurrChar.SendCinematicStart(chrRacesRecord.CinematicSequenceID);
break;
case PlayerCreateMode.NPE:
if (playerInfo.introSceneIdNPE.HasValue)
pCurrChar.GetSceneMgr().PlayScene(playerInfo.introSceneIdNPE.Value);
break;
default:
break;
}
}
}