Commit Graph
760 Commits
Author SHA1 Message Date
Shauren 9ee3a615f7 Core/Spells: Fixed spells with SPELL_ATTR6_DO_NOT_CHAIN_TO_CROWD_CONTROLLED_TARGETS ignoring permanently rooted creatures (with static flags)
Signed-off-by: luis <[email protected]>
2026-03-07 00:11:08 -03:00
Cristian Vintila 8bb504b6c4 Scripts/Spells: Implement priest talent Searing Light (#31713)
Signed-off-by: luis <[email protected]>
2026-03-07 00:04:07 -03:00
Cristian Vintila cfeee51dd1 Scripts/Spells: Implement priest talent Archangel (#31710)
Signed-off-by: luis <[email protected]>
2026-03-07 00:01:22 -03:00
Cristian VintilaandShauren 9a816bfc26 Scripts/Spells: Update druid talent Galactic Guardian (#31707)
Co-authored-by: Shauren <[email protected]>
Signed-off-by: luis <[email protected]>
2026-03-06 23:57:27 -03:00
Meji d5db296208 Core/Misc: Replace DEFAULT_MAX_LEVEL with GetMaxLevelForExpansion and update MaxPlayerLevel to 90
Signed-off-by: luis <[email protected]>
2026-03-06 23:56:10 -03:00
luis a7f2871f3a fix 2026-03-06 23:54:40 -03:00
Aqua Deus 8c7f84e992 Core/Spells: Implement SPELL_ATTR11_CAN_ASSIST_UNINTERACTIBLE (#31698)
Signed-off-by: luis <[email protected]>
2026-03-06 23:42:13 -03:00
MoltenCrystal 3533ca93c4 Scripts/Spells: Implement warrior talent Brutal Finish (#31695)
Signed-off-by: luis <[email protected]>
2026-03-06 23:39:05 -03:00
Shauren 21f43c007f Core/Utils: Modernize Types and Tuples utils - use constexpr variables instead of structs
* Also remove unneccessary tuple type list wrapping in packet utilities

Signed-off-by: luis <[email protected]>
2026-03-06 23:35:38 -03:00
luis 3b7b810b4a build fix 2026-03-06 23:33:38 -03:00
luis eb37399cd8 typo fix 2026-03-06 23:24:31 -03:00
luis 57c2104e01 Core/Movement: Remove Force field from inertia packets per 12.0.1 sniff
Raw .pkt binary analysis confirms SMSG_MOVE_APPLY_INERTIA in 12.0.1 is
20 bytes: PackedGUID + SequenceIndex + InertiaID + LifetimeMs with no
Force vector. The client derives force direction from the AreaTrigger
DB2 entry referenced by InertiaID.

Removes the incorrect Force field from MoveApplyInertia (SMSG),
MoveApplyInertiaAck (CMSG), and MoveUpdateApplyInertia (broadcast).
Updates Unit::SendApplyInertia() signature accordingly.
2026-03-06 23:13:00 -03:00
luis 6cc068140e Scripts/Spells: Convert dragonriding spells to periodic aura handlers
Whirling Surge (361584) and Launch Boost (392752) are periodic auras
per Wowhead spell data, not single-shot effects:

- Whirling Surge: Apply Aura: Dummy, 3s duration. Converted from
  single-shot SpellScript to SpellScript+AuraScript pair. The periodic
  handler sends facing+pitch oriented impulses at magnitude 5.0 per
  tick (sniff-verified: 5-6 ticks per activation).

- Launch Boost: Periodic Dummy, period 100ms, duration 2s. Split into
  SpellScript (sends initial Z=45 upward impulse on hit) + AuraScript
  (sends periodic forward impulse at magnitude 5.0 per tick).

Both use RegisterSpellAndAuraScriptPair for combined validation and
periodic handling. Extracted SendFacingImpulse helper to reduce
duplication.
2026-03-06 23:10:30 -03:00
luis 12fd9e6237 db fixes 2026-03-06 23:08:53 -03:00
luis a1ce92c570 Core/Movement: Implement server-side skyriding (dragonriding) system
Add full server-side support for the client's skyriding movement system:

- DB2 infrastructure: DriveCapability (17 fields) and DriveCapabilityTier (5 fields)
  stores with hotfix DB integration and SQL table definitions
- Drive activation: SetDriveCapabilityID() on mount/dismount integrated into
  HandleAuraMounted, with blizzlike packet behavior (SET_CAN_DRIVE only via
  CompoundState at login, UNSET_CAN_DRIVE on dismount)
- Vigor system: POWER_ALTERNATE_MOUNT (25) with velocity-based regen modifier
  using FlightCapability::VigorRegenMaxVelCoefficient
- Impulse delivery: SendApplyInertia(), SendRemoveInertia(), SendAddImpulse()
  helpers sending movement packets to mover only (no broadcast, per sniff)
- Dragonriding spell scripts: Surge Forward (372608), Skyward Ascent (372610),
  Whirling Surge (361584), Launch Boost (392752) with sniff-verified impulse
  values and SPELL_CUSTOM_ERROR_REQUIRES_SKYRIDING validation

Impulse magnitudes verified against raw SMSG_MOVE_ADD_IMPULSE packet data:
  Launch Boost: (0, 0, 45.0), Whirling Surge: 5.0/tick x6,
  Skyward Ascent: horiz 12.25 + Z 49.0
2026-03-06 23:06:25 -03:00
luis 22ff93e245 Add dragonriding inertia, impulse, and drive packet structures 2026-03-06 22:49:43 -03:00
luis b903ba7668 Chromie Time: add CONDITION_CHROMIE_TIME and terrain swap conditions 2026-03-06 22:30:43 -03:00
luis 714df36182 Chromie Time: content tuning redirect, creature scaling, quest XP, and GM command 2026-03-06 22:27:41 -03:00
luis 2800ba06c4 Implement Chromie Time persistence, NPC UI, scaling flags, and level gating
Add complete blizzlike Chromie Time flow: NPC gossip opens expansion picker,
handler sets ConditionalFlags/FactionGroup for content tuning redirection,
selection persists via new characters.chromieTimeExpansionId column, state
restores on login, and auto-clears at max level. Implement SMSG_SET_CTR_OPTIONS
server packet for mid-session state pushes.
2026-03-06 22:16:39 -03:00
luis 44f26b335c Housing: Fix teleport plot resolution, packet wire format, and neighborhood responses
Fix teleport-to-plot using server-side plot resolution instead of trusting
client's PlotIndex (which is a roster index, not the DB2 PlotIndex). Resolve
correct plot via player's Housing object for self-teleport, or OwnerGuid
matching for visiting others.

Additional changes accumulated in this batch:
- Implement housing packet handlers for Phase 5-7-9 opcodes
- Fix neighborhood response wire format to match retail sniffs
- Add housing source tracking and platform cleanup SQL migrations
- Fix AreaTrigger/GameObject/MeshObject housing integration points
- Extend UpdateFields for housing-specific object data
- Add Neighborhood plot management and house finder support
- Fix door script and steward NPC interactions
- Add catalog persistence prepared statement
- Fix HouseInteriorMap Euler-to-quaternion conversion for room components
2026-03-06 22:05:59 -03:00
luis 1dc28b5959 typo 2026-03-06 20:53:10 -03:00
luis 6ac87fa874 missing sql 2026-03-06 20:43:31 -03:00
luis 6915ca5b9d Garrison: Fix 3 sniff-verified issues from 12.0.1.66220 trading post sniff
1. CanStartMission: always send true (sniff shows all 1s regardless of
   mission state, our code incorrectly sent MissionState == 0)

2. NumMissionsStartedToday: track daily mission start count with
   day-boundary reset. Persisted to character_garrison table. This
   controls follower abilities like "Increase success chance of the
   first mission of the day."

3. ArchivedMissions: track completed mission RecIDs per garrison type.
   Persisted to new character_garrison_archived_missions table. Sniff
   shows 12 archived WoD missions and 9 archived Class Hall missions
   for a played character.
2026-03-06 20:42:43 -03:00
Céfiro_Caecias 0179d86793 DB/World: DBErrors Fixes 2026-03-06 18:46:01 -03:00
Céfiro_Caecias 453aca57ad DB/Hotfixes: DBErrors item_sparse 2026-03-06 18:42:34 -03:00
Céfiro_Caecias 50f6bd6534 Update README.md 2026-03-05 21:55:31 -03:00
luis db39fc04c4 SMSG_DISPLAY_PROMOTION 2026-03-05 21:10:57 -03:00
luis 5bd44a49d2 fix sql 2026-03-05 20:03:03 -03:00
Céfiro_Caecias 48165cb17c DB/World: DBErrors Fixes 2026-03-05 19:54:33 -03:00
luis e753d7429d Dup 2026-03-05 19:49:54 -03:00
Jeremy 454d84278d Scripts/Spells: Implement Thunder Blast (Fury Warrior) (#31693)
Signed-off-by: luis <[email protected]>
2026-03-05 19:49:22 -03:00
Jeremy 7a3b47803f Scripts/Spells: Implement Thunder Blast (Fury Warrior) (#31693)
Signed-off-by: luis <[email protected]>
2026-03-05 19:48:56 -03:00
luis aa9430254b Core: Updated allowed build to 12.0.1.66263 2026-03-05 19:47:17 -03:00
Shauren fa3a97199f Core/Players: Fixed crashes happening when player is teleported again while still being teleported to a different map
Signed-off-by: luis <[email protected]>
2026-03-05 19:46:28 -03:00
luis 732f728f8f Housing: Implement initiative handlers, settings persistence, and Phase 5-7-9 polish
- Implement 8 new initiative CMSG handlers (AcceptMilestone, ReportProgress,
  ClaimReward, Leaderboard, OpenChest, TaskAccept, TaskAbandon, TaskProgress)
  with full InitiativeManager integration for neighborhood initiatives
- Upgrade 6 unknown initiative opcodes (0x38000B-0x380010) to STATUS_LOGGEDIN
- Register 5 unnamed housing opcodes (ConfirmPreviewPlacement, CompleteTutorialStep,
  QueryPendingInvites, SetTutorialState, SkipTutorial) as logged stubs
- Add photo sharing authorization state tracking (per-session volatile)
- Add HousingWarningFlag enum with expansion/level eligibility checks
- Wire warning gates into StartTutorial and ReservePlot handlers
- Fix TaggedPosition<XYZ> accessor calls (.Pos.GetPositionX() pattern)
- Fix HOUSING_RESULT_NOT_HOME_OWNER → HOUSING_RESULT_PERMISSION_DENIED
- All 17 initiative opcodes now STATUS_LOGGEDIN (zero UNHANDLED remaining)
- Add house name/description DB persistence (SQL schema + prepared statements)
- Add blizzlike implementation plan documentation
2026-03-05 19:45:56 -03:00
Céfiro_Caecias fb497382f7 Update worldserver.conf.dist 2026-03-05 14:50:21 -03:00
Céfiro_Caecias b8a7a9f84d Update README.md 2026-03-05 13:48:15 -03:00
Céfiro_Caecias b8acf4f91e DB/World: lfg_dungeon_template Rework 2026-03-05 12:32:43 -03:00
Céfiro_Caecias c97640fec8 DB/World: access_requirement Rework 2026-03-05 10:11:10 -03:00
luis 3800bbf482 warnings 2026-03-04 20:39:41 -03:00
Jeremy bc9b1ede63 Scripts/Spells: Add proc check for Keep Your Feet on the Ground (Mountain Thane warrior talent) (#31691)
Signed-off-by: luis <[email protected]>
2026-03-04 20:30:35 -03:00
Shauren 92e3a347f1 Scripts/Exile's Reach: Remove unreachable code that appears to be the result of incorrect merge conflict resolution
Signed-off-by: luis <[email protected]>
2026-03-04 20:29:19 -03:00
Shauren df7dd23efe Core/Misc: Remove unneccessary semicolons
Signed-off-by: luis <[email protected]>
2026-03-04 20:28:34 -03:00
Jeremy 8c6e6a11aa Scripts/Spells: Implement Cleave Damage Reduction from Improved Whirlwind (Fury Warrior Talent) (#31690)
Signed-off-by: luis <[email protected]>
2026-03-04 20:27:25 -03:00
luis ff93708eff 66220 2026-03-04 20:26:16 -03:00
luis 8410236ac6 et Battles: Fix effect routing, multi-turn locks, emote, quest display
Fix the effect dispatch key: use BattlePetEffectPropertiesID (the
actual effect action type) instead of ParamTypeEnum[0] (parameter data
type). This single change fixes healing dealing damage, auras not
applying, state changes, stuns, weather, and multi-turn markers all
routing to the damage case.

Also lock swaps during multi-turn abilities, clear multi-turn state on
pet death, face the player toward the opponent on battle start, restore
NPC trainer movement after battle with a cry emote on loss, and show
quest menu alongside the battle gossip option.
2026-03-04 20:09:17 -03:00
luis 27a6fdbe29 Revert "Pet Battles: Wire up BattlePetNPCTeamMember.db2 hotfix and seed NPC trainer teams"
This reverts commit 90b92371a1.
2026-03-04 20:02:29 -03:00
luis 90b92371a1 Pet Battles: Wire up BattlePetNPCTeamMember.db2 hotfix and seed NPC trainer teams
Register BattlePetNPCTeamMember.db2 in the hotfix pipeline so the
server can populate it at runtime. The client ships this DB2 empty
(0 records) — names resolve via CreatureID in packets instead, but
the infrastructure is now in place for future name overrides.

Add initial seed data for 19 NPC pet battle trainers (57 pets) from
Eastern Kingdoms through Pandaria Grand Masters. All creature IDs
verified against TDB creature_template with exact name matches.
2026-03-04 20:01:03 -03:00
luis 0a0a9d4408 Pet Battles: Fix multi-turn ability visibility and NPC team naming
Multi-turn abilities (Dig, Burrow, etc.) were invisible to the client:
- Handle effectCategory 17/18 (MULTI_TURN_BEGIN/END) in ProcessEffect
  that were falling through to default handler producing no effects
- Fix off-by-one: multi-turn state now clears on last turn instead of
  one round late (>= TotalTurns-1 instead of >= TotalTurns)
- Emit fallback STATUS_CHANGE for empty multi-turn turns so the client
  still shows the ability animation

NPC trainer pet naming and model support:
- Add npcTeamMemberID column to battle_pet_npc_team (maps to
  BattlePetNPCTeamMember.db2 for pet name display on client)
- Add creatureId column for optional model override (0=species default)
- Send NpcTeamMemberID in packet for all teams, not just wild
2026-03-04 19:43:07 -03:00
Céfiro_Caecias 8233eb00fa DB/World: DBErrors Clean 2026-03-04 17:49:39 -03:00