Jump to content

[Partially fix] Headless Horseman's Mount


Recommended Posts

Posted

* What bug does the patch fix? What features does the patch add?

Allow this mount to be summoned, added dependency on riding skill

* For which repository revision was the patch created?

8746

* Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread.

No

* Who has been writing this patch? Please include either forum user names or email addresses.

Me, OPenaz

index 8e60f11..5ae3fe8 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -5200,8 +5200,36 @@ void Spell::EffectScriptEffect(uint32 effIndex)
                    unitTarget->CastSpell(unitTarget, damage, false);
                    break;
                }
+               case 48025:                                 // Headless Horseman Mount
+               {
+                   if(!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
+                       return;
+
+                   // Prevent stacking of mounts
+                   unitTarget->RemoveSpellsCausingAura(SPELL_AURA_MOUNTED);
+
+                   // Triggered spell id dependent of riding skill
+                   uint16 skillval = ((Player*)unitTarget)->GetSkillValue(SKILL_RIDING);
+                   uint32 zone, area;
+                   unitTarget->GetZoneAndAreaId(zone, area);
+                   switch (skillval)
+                   {
+                       case 75:
+                           unitTarget->CastSpell(unitTarget, 51621, true);
+                           return;
+                       case 150:
+                           unitTarget->CastSpell(unitTarget, 48024, true);
+                           return;
+                       case 225:
+                           if ((((Player*)unitTarget)->IsKnowHowFlyIn(((Player*)unitTarget)->GetMapId(), zone) && area != 4395 && ((Player*)unitTarget)->GetMapId() == 571) || ((Player*)unitTarget)->GetMapId() == 530)
+                               unitTarget->CastSpell(unitTarget, 51617, true);
+                           else
+                               unitTarget->CastSpell(unitTarget, 48024, true);
+                           return;
+                       case 300:
+                           if ((((Player*)unitTarget)->IsKnowHowFlyIn(((Player*)unitTarget)->GetMapId(), zone) && area != 4395 && ((Player*)unitTarget)->GetMapId() == 571) || ((Player*)unitTarget)->GetMapId() == 530)
+                               unitTarget->CastSpell(unitTarget, 48023, true);
+                           else
+                               unitTarget->CastSpell(unitTarget, 48024, true);
+                           return;
+                       default:
+                           break;
+                   }
+                   return;
+               }
              // Winged Steed of the Ebon Blade
              case 54729:                                

Known problems:

None

How it works:

Headless Horseman's Mount now scales with your riding with this exceptions:

If u have skill higher than 150, u will summon him as 100% ground mount in Azeroth, Kalimdor and Dalaran (except Krasus Landing)

If u have skill higher than 150 and not learned spell Cold Weather Flying, u will summon him as 100% ground mount in whole Northrend

Posted

You might input some check like:

uint32 zone, area;

unitTarget->GetZoneAndAreaId(zone, area);

if(skill > 150 && !((Player*)unitTarget)->IsKnowHowFlyIn(unitTarget->GetMapId(),zone))

skill = 150;

Posted

unitTarget->GetMapId() this is not working...also (Player*)unitTarget too...

EDIT: My fault, case typo (GetMapId and Getmapid)

EDIT2: compilled, will test in about 10 minutes

Test result: In northrend, it can be summoned as ground mount, without cold weather flying...but forget about old world...will update later (players aren't happy due to restarts :) )

Posted

OK tested...work as expected, exclude dalaran...In non flying maps, u will summon 100% ground mount, in flying maps, u will have flying mount...dalaran can be checked by zoneid, i will add this later

  • 10 months later...
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use