From 3a467906362db39a3f087130dcc91233377bd528 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sat, 16 Jul 2022 19:41:59 -0400 Subject: [PATCH] Core/Creatures: Implement Ground/FlyingMountDisplayID from creature_summoned_data Port From (https://github.com/TrinityCore/TrinityCore/commit/8cbc3923a18add49dd483e0e6e9d851f1d4d59f7) --- Source/Scripts/Spells/Generic.cs | 38 +++++++++++++++++++ .../world/master/2022_07_16_05_world.sql | 27 +++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 sql/updates/world/master/2022_07_16_05_world.sql diff --git a/Source/Scripts/Spells/Generic.cs b/Source/Scripts/Spells/Generic.cs index 4f8ea4162..16516f443 100644 --- a/Source/Scripts/Spells/Generic.cs +++ b/Source/Scripts/Spells/Generic.cs @@ -4695,6 +4695,44 @@ namespace Scripts.Spells.Generic } } + [Script] // 147066 - (Serverside/Non-DB2) Generic - Mount Check Aura + class spell_gen_mount_check_aura : AuraScript + { + void OnPeriodic(AuraEffect aurEff) + { + Unit target = GetTarget(); + uint mountDisplayId = 0; + + TempSummon tempSummon = target.ToTempSummon(); + if (tempSummon == null) + return; + + Player summoner = tempSummon.GetSummoner()?.ToPlayer(); + if (summoner == null) + return; + + if (summoner.IsMounted() && (!summoner.IsInCombat() || summoner.IsFlying())) + { + CreatureSummonedData summonedData = Global.ObjectMgr.GetCreatureSummonedData(tempSummon.GetEntry()); + if (summonedData != null) + { + if (summoner.IsFlying() && summonedData.FlyingMountDisplayID.HasValue) + mountDisplayId = summonedData.FlyingMountDisplayID.Value; + else if (summonedData.GroundMountDisplayID.HasValue) + mountDisplayId = summonedData.GroundMountDisplayID.Value; + } + } + + if (mountDisplayId != target.GetMountDisplayId()) + target.SetMountDisplayId(mountDisplayId); + } + + public override void Register() + { + OnEffectPeriodic.Add(new EffectPeriodicHandler(OnPeriodic, 0, AuraType.PeriodicDummy)); + } + } + // 40307 - Stasis Field class StasisFieldSearcher : ICheck { diff --git a/sql/updates/world/master/2022_07_16_05_world.sql b/sql/updates/world/master/2022_07_16_05_world.sql new file mode 100644 index 000000000..cf75b9521 --- /dev/null +++ b/sql/updates/world/master/2022_07_16_05_world.sql @@ -0,0 +1,27 @@ +-- Serverside Spell +DELETE FROM `serverside_spell` WHERE `ID` = 147066; +INSERT INTO `serverside_spell` (`Id`, `DifficultyID`, `CategoryId`, `Dispel`, `Mechanic`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`, `AttributesEx11`, `AttributesEx12`, `AttributesEx13`, `AttributesEx14`, `Stances`, `StancesNot`, `Targets`, `TargetCreatureType`, `RequiresSpellFocus`, `FacingCasterFlags`, `CasterAuraState`, `TargetAuraState`, `ExcludeCasterAuraState`, `ExcludeTargetAuraState`, `CasterAuraSpell`, `TargetAuraSpell`, `ExcludeCasterAuraSpell`, `ExcludeTargetAuraSpell`, `CastingTimeIndex`, `RecoveryTime`, `CategoryRecoveryTime`, `StartRecoveryCategory`, `StartRecoveryTime`, `InterruptFlags`, `AuraInterruptFlags1`, `AuraInterruptFlags2`, `ChannelInterruptFlags1`, `ChannelInterruptFlags2`, `ProcFlags`, `ProcFlags2`, `ProcChance`, `ProcCharges`, `ProcCooldown`, `ProcBasePPM`, `MaxLevel`, `BaseLevel`, `SpellLevel`, `DurationIndex`, `RangeIndex`, `Speed`, `LaunchDelay`, `StackAmount`, `EquippedItemClass`, `EquippedItemSubClassMask`, `EquippedItemInventoryTypeMask`, `ContentTuningId`, `SpellName`, `ConeAngle`, `ConeWidth`, `MaxTargetLevel`, `MaxAffectedTargets`, `SpellFamilyName`, `SpellFamilyFlags1`, `SpellFamilyFlags2`, `SpellFamilyFlags3`, `SpellFamilyFlags4`, `DmgClass`, `PreventionType`, `AreaGroupId`, `SchoolMask`, `ChargeCategoryId`) VALUES +(147066, 0, 0, 0, 0, 0x9000080, 0x20, 0x4000, 0x10000000, 0x80, 0x1000008, 0x1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 1, 0, 0, 0, -1, 0, 0, 0, '(Serverside/Non-DB2) Generic - Mount Check Aura', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + +DELETE FROM `serverside_spell_effect` WHERE `SpellID` = 147066; +INSERT INTO `serverside_spell_effect` (`SpellID`, `EffectIndex`, `DifficultyID`, `Effect`, `EffectAura`, `EffectAmplitude`, `EffectAttributes`, `EffectAuraPeriod`, `EffectBonusCoefficient`, `EffectChainAmplitude`, `EffectChainTargets`, `EffectItemType`, `EffectMechanic`, `EffectPointsPerResource`, `EffectPosFacing`, `EffectRealPointsPerLevel`, `EffectTriggerSpell`, `BonusCoefficientFromAP`, `PvpMultiplier`, `Coefficient`, `Variance`, `ResourceCoefficient`, `GroupSizeBasePointsCoefficient`, `EffectBasePoints`, `EffectMiscValue1`, `EffectMiscValue2`, `EffectRadiusIndex1`, `EffectRadiusIndex2`, `EffectSpellClassMask1`, `EffectSpellClassMask2`, `EffectSpellClassMask3`, `EffectSpellClassMask4`, `ImplicitTarget1`, `ImplicitTarget2`) VALUES +(147066, 0, 0, 6, 226, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + +-- Spell Script +DELETE FROM `spell_script_names` WHERE `spell_id`= 147066; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(147066, 'spell_gen_mount_check_aura'); + +-- Creature Summoned +DELETE FROM `creature_summoned_data` WHERE `CreatureID` IN (182084, 182088); +INSERT INTO `creature_summoned_data` (`CreatureID`, `CreatureIDVisibleToSummoner`, `GroundMountDisplayID`, `FlyingMountDisplayID`) VALUES +(182084, 182085, 103104, 103104), +(182088, 182089, 103104, 103104); + +-- Creature Addon +DELETE FROM `creature_template_addon` WHERE `entry` IN (90382, 91911, 182084, 182088); +INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(90382, 0, 0, 0, 1, 0, 0, 0, 0, 0, '147066'), +(91911, 0, 0, 0, 1, 0, 0, 0, 0, 0, '147066'), +(182084, 0, 0, 0, 1, 0, 0, 0, 0, 0, '147066'), +(182088, 0, 0, 0, 1, 0, 0, 0, 0, 0, '147066');