Commit Graph
17 Commits
Author SHA1 Message Date
devbox 2317f0fe7d Exiles Reach: fix ride-giver Jaina on Darkmaul Plains + respawn on abandon
- The ride-giver the player actually talks to is on the Darkmaul Plains
  (phase 13779), and its phase was removed when the ride was accepted
  (!QuestAccepted) — so Jaina vanished on accept. Show it until the ride is
  rewarded (matches the ogre-ruins GARRICK_CAMP fix).
- OnQuestStatusChange does NOT fire on quest abandon (RemoveActiveQuest
  erases the entry without the hook), so the respawn-on-abandon never ran.
  Detect the active->gone transition in OnPlayerWorldObjectUpdate and force
  the mowed-down undead to respawn (Map::Respawn), while keeping them dead
  on completion.
2026-08-24 14:27:33 +10:00
devbox c354643e47 DB/World: bind Giant Boar Trample script (305557)
Adds the spell_script_names row for spell_giant_boar_trample_305557 so a
fresh DB also has the trample's despawn behavior for the boar ride.
2026-08-24 14:01:58 +10:00
devbox 71e005e10f Exiles Reach: keep Horde ride-giver Shuja visible while the quest is active
Same fix as the Alliance GARRICK_CAMP phase: Shuja's phase was only shown
after QUEST_H_THE_REDEATHER completed, so she vanished when the ride began.
Show it while accepted or completed.
2026-08-24 13:50:29 +10:00
devbox f72d0be912 Exiles Reach: no follower on the boar ride; keep quest-giver Jaina visible
- Remove the 156807 follower summon on ride accept (it reuses Jaina's
  model 88316, so it read as a duplicate Jaina following you). Ride alone.
- GARRICK_CAMP phase was only shown after the ride was rewarded, so Jaina
  phased out the moment she gave the quest. Show it while the ride is
  accepted too.
2026-08-24 13:48:10 +10:00
devbox 0e9b9f7db8 Exiles Reach: despawn the undead by faction, not phase
The mobs' phase desync made IsValidAttackTarget fail, so the despawn loop
skipped them (they stayed alive and killed the rider when the ride ended).
Use IsHostileTo (faction-based, no phase check) in both the trample and the
Big Kill Credit despawning.
2026-08-24 13:30:24 +10:00
devbox 7670e0eb91 Exiles Reach: respawn the mowed-down undead if the ride quest is abandoned
Track the undead spawnIds despawned by the boar (1h respawn delay). On
quest abandon, force their respawn (Map::Respawn sets the pending respawn
time to now) so the ride can be retried; clear tracking on completion.
2026-08-24 13:18:22 +10:00
devbox 48f5b7e124 Exiles Reach: undead stay dead after the trample/credit (1h respawn delay)
The ogre-ruins undead are regular spawns, so DespawnOrUnsummon removed them
briefly then the spawn timer respawned them. Force a 1h respawn delay on
both the trample and the Big Kill Credit despawning so the mowed-down mobs
don't pop back during the ride.
2026-08-24 13:11:00 +10:00
devbox c797c0c576 Exiles Reach: despawn the trampled undead on Big Kill Credit + fix rider immunity
The trample's own grid search didn't reliably despawn the undead (they stayed
alive and attacked the rider). Tie the despawn to the 'Big Kill Credit' scene
event (which reliably fires as the ride progresses): despawn all hostile mobs
within 50y (excluding Torgok). Also apply the rider's UNIT_FLAG_IMMUNE_TO_NPC
on EFFECT_0 (CONTROL_VEHICLE) as well as EFFECT_1 so the mobs can't damage the
player.
2026-08-24 12:16:43 +10:00
devbox 3cfb6d2c99 Exiles Reach: trample despawns the undead outright
Kill+DespawnOrUnsummon left the corpses visible (regular spawns). Just
DespawnOrUnsummon the targets — the scene's 'Big Kill Credit' grants the
quest credit, so the mobs simply vanish when trampled.
2026-08-24 11:52:28 +10:00
devbox 1b15337809 Exiles Reach: trample mows the undead down (kill + despawn)
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
The trample only dealt 120 damage, leaving healthier zombies/ogres alive
and visible. Kill and despawn each hostile target so the trampled army
actually disappears.
2026-08-23 22:27:40 +10:00
devbox 07e78803e2 Exiles Reach: rider immune to NPC damage while on the giant boar
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
Some undead still hit the player during the boar ride (mobs that aggro on
sight, not via the trample). Set UNIT_FLAG_IMMUNE_TO_NPC on the player for
the ride's duration so mob attacks can't reach the rider (IsValidAttackTarget
checks target->IsImmuneToNPC); the boar takes the hits and the trample kills
the cadavers.
2026-08-23 22:18:44 +10:00
devbox 23dc67639f Exiles Reach: trample damage from the boar, not the rider
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
The trample script dealt damage from the player (GetCaster), so the undead
aggro'd the rider and chewed through the player's health during the boar
ride. Attribute the trample damage to the boar vehicle (GetVehicleBase) so
the mobs attack the boar instead.
2026-08-23 22:09:06 +10:00
devbox 371e06dab9 Core: dispatch scene events to PlayerScripts too
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
ScriptMgr::OnSceneTrigger/Cancel/Complete only called the bound SceneScript
(via scene_template.ScriptName). The Thordekk Exiles Reach ride (and other
scene-driven content) registers its handlers as PlayerScript hooks
(OnSceneTriggerEvent/OnSceneComplete/OnSceneCancel), so 'Trampling Time' and
'Big Kill Credit' never fired -> the Giant Boar trample never cast and the
cadaver kill credit never granted. Add the FOREACH_SCRIPT(PlayerScript)
dispatch to all three.
2026-08-23 18:53:22 +10:00
devbox c7a4bf966e Exiles Reach: revert ship sparring leash + fix trample script compile
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
- Revert the Cole/Throg sparring distance-leash (exiles_reach_north_sea.cpp):
  it fought the clone's position/LOS desync on the ship (map 2261), making
  the clone run away and clip; back to the original combat chase while we
  investigate the position/LOS root cause.
- Fix spell_giant_boar_trample_305557 compile: CalcRadius returns SpellRange
  (use .Max) and DealDamage is static (Unit::DealDamage, uint32 damage).
2026-08-23 18:41:45 +10:00
devbox ffaac9ece6 Exiles Reach: implement Giant Boar Trample (305557)
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
The trample's Effect 1 is a SPELL_EFFECT_DUMMY (radius 13, targets the
caster) that was never scripted, so it did nothing to the Monstrous
Cadavers (157091) during Ride of the Scientifically Enhanced Boar. Add a
spell script that damages all hostile creatures within the effect radius
(caster->DealDamage, effect value). Registered + spell_script_names row.
2026-08-23 18:36:53 +10:00
devbox b47740c125 Exiles Reach (ship): replace boundary-evade with a distance leash for the sparring clone
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
The SetBoundary approach made the sparring partner evade back to home with a
straight spline, clipping through the boat hull. Use a distance leash in
UpdateAI instead: stop chasing past 15y and walk back on the ship geometry.
2026-08-23 17:40:55 +10:00
devbox 5072ad8f6f Exiles Reach: keep Monstrous Cadavers in-phase during the boar ride
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
The Alliance ride (Ride of the Scientifically Enhanced Boar, 55879) hides
phase 13783 (PHASE_GENERAL_DARKMAUL_PLAINS_ZOMBIES_AND_CADAVERS) while the
player rides (HasAura(SPELL_RIDING_GIANT_BOAR) or quest accepted), so the
Monstrous Cadavers (157091, phase 13783) are server-side out of phase:
visible to the client but not valid attack targets -> the boar trample
deals 0 damage and the ride can't progress to Torgok. Keep the phase
active while the ride is incomplete (hidden only after it's rewarded).
Applied to the identical condition in ogre_ruins, darkmaul_plains and
hruns_barrow.
2026-08-23 17:36:56 +10:00