Commit Graph
558 Commits
Author SHA1 Message Date
luis 4e9c29d59e Housing: Remove 3 DB2 stores dropped before 12.0 2026-02-16 20:08:21 -03:00
luis db5cac7e66 comment unused old db2 2026-02-16 12:45:40 -03:00
luis c10780fc1e Housing: Fix wire formats and budget values from captured packet data 2026-02-16 12:43:53 -03:00
luis fbd66c676e Db error fix and playerhousing creature spawn fix flags and level 2026-02-16 11:34:15 -03:00
luis 995d977506 fix response 2026-02-16 10:53:57 -03:00
luis c0d2340edb fix dbs 2026-02-16 10:46:00 -03:00
luis 0bc24db851 Housing update part 1 2026-02-16 10:38:09 -03:00
luis 67fc4afaaa improve handler 2026-02-16 10:35:09 -03:00
luis f82a13d428 Fix packets 2026-02-16 10:33:30 -03:00
luis 43fc752c93 Housing: Wire neighborhood initialization into server lifecycle
Route housing maps (2735/2736) to per-neighborhood instances instead of
falling through to shared world map path. This connects the existing
HousingMgr/NeighborhoodMgr backend to the actual map creation pipeline.

- Add MapEntry::IsNeighborhood() for MAP_HOUSE_NEIGHBORHOOD detection
- Add MapManager::CreateHousing() factory and housing branch in
  CreateMap()/FindInstanceIdForPlayer() with auto-assignment via
  FindOrCreateTutorialNeighborhood()
- Fix HousingMap GUID mismatch (HighGuid::Uniq -> HighGuid::Housing)
  so LoadNeighborhoodData() resolves the neighborhood pointer correctly
- Make housing maps persistent (m_unloadTimer=0)
- Add AddPlayerToMap/RemovePlayerFromMap overrides for resident tracking
- Implement LoadGridObjects to dynamically spawn For Sale Sign (417487)
  on empty plots and Cornerstone (457142) on owned plots
- Fix HandleNeighborhoodOpenCornerstoneUI stub with real neighborhood/
  plot data lookup by matching cornerstone GO position to plot index
- Add 50% occupation expansion: auto-create new public neighborhoods
  when all existing ones for a faction reach 28/55 plots occupied
- Replace hardcoded neighborhood names with GenerateNeighborhoodName()
- Remove static cornerstone SQL spawns (now dynamic per-neighborhood)
2026-02-16 10:25:39 -03:00
luis c57252bfe5 Quest: Add quest session packet structures, handlers, and enable feature flag 2026-02-16 10:17:19 -03:00
agathoandClaude Opus 4.6 f33729555d Core/GameObject: Use PlayerInteractionType field for UILink GameObjects
The GAMEOBJECT_TYPE_UI_LINK handler only mapped UILinkType values 0-3
to PlayerInteractionType via a hardcoded switch. UILinkType is deprecated
in favor of the PlayerInteractionType field (Data[7]) which allows
direct mapping to any PlayerInteractionType enum value.

When PlayerInteractionType (Data[7]) is set, send
SMSG_NPC_INTERACTION_OPEN_RESULT with the GO's GUID and the specified
interaction type. Also cast UILink.spell (Data[8]) when present, which
is required for interactions like Cornerstones that need a placement
spell to trigger the client UI.

Fixes Cornerstones (Data[7]=70, spell 1266097) and Bulletin Boards
(Data[7]=72) not opening their respective housing UIs.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: luis <[email protected]>
2026-02-16 09:41:54 -03:00
luis c79d2d96fd Fix load of db2 2026-02-15 20:21:56 -03:00
luis 82b4567264 new db tables 2026-02-15 19:45:27 -03:00
luis bc721e58d2 Implement Chromie Time expansion selection system 2026-02-15 18:26:06 -03:00
luis 67203c331d Rework bpet 2026-02-15 18:09:47 -03:00
luis 6486c82d8e Bpet opcodes 2026-02-15 18:02:54 -03:00
luis 1bff3b088f Add load 2026-02-15 17:57:06 -03:00
luis 5b0e859777 initial bpet system part 1 2026-02-15 17:55:28 -03:00
Shauren 3d551cea9b Core/Scripts: Modernize InstanceScript::Load*Some*Data arrays to use std::span instead of requiring a dummy end markers inside the arrays
Signed-off-by: luis <[email protected]>
2026-02-15 17:42:14 -03:00
Shauren aa1722626e Scripts/WanderingIsle: Fix wrong function being used in bec04e62d892b5908382275a1b90442d2e3f6134
Signed-off-by: luis <[email protected]>
2026-02-15 17:41:30 -03:00
ReZaRrandModoX ba2c7b9785 Scripts/WanderingIsle: Implement quest 29421 Only the Worthy Shall Pass (#31624)
Co-authored-by: ModoX <[email protected]>
Signed-off-by: luis <[email protected]>
2026-02-15 17:40:53 -03:00
Shauren 5e826f3fd1 Core/Spells: Prevent attacking friendly targets by SPELL_ATTR7_ATTACK_ON_CHARGE_TO_UNIT
Signed-off-by: luis <[email protected]>
2026-02-15 17:39:49 -03:00
MoltenCrystal 9f5502aa3f DB/Spells: Add proc data for Storm Wall (#31547)
Signed-off-by: luis <[email protected]>
2026-02-15 17:39:19 -03:00
Jeremy bf47d82e1d Scripts/Spells: Rename script for Improved Whirlwind to match other warrior spells (#31683)
Signed-off-by: luis <[email protected]>
2026-02-15 17:36:43 -03:00
MoltenCrystal d683198682 Scripts/Spells: Implement warrior talent Bloodsurge (#31546)
Signed-off-by: luis <[email protected]>
2026-02-15 17:35:48 -03:00
MoltenCrystal 171822f33f Scripts/Spells: Add proc data for Concussive Blows (#31540)
Signed-off-by: luis <[email protected]>
2026-02-15 17:34:51 -03:00
MoltenCrystal b84ebc16ea Scripts/Spells: Implement Intervene (#31536)
Signed-off-by: luis <[email protected]>
2026-02-15 17:33:55 -03:00
luis c61b8a8f2f 65893 2026-02-15 17:33:28 -03:00
Shauren c4d0b7e41f Core/Misc: Update GameError enum for 12.0.1
Signed-off-by: luis <[email protected]>
2026-02-15 17:22:46 -03:00
MoltenCrystal 3f8ef17bc6 Scripts/Spells: Fix warrior talent Pain and Gain proc and heal amount (#31535)
Signed-off-by: luis <[email protected]>
2026-02-15 17:20:53 -03:00
Shauren 4940084c35 Core/Spells: Update targets caps for 12.0.1
Signed-off-by: luis <[email protected]>
2026-02-15 17:12:10 -03:00
Cristian Vintila 3c78d82b10 Scripts/Spells: Implement druid talent Elune's Favored (#31534)
Signed-off-by: luis <[email protected]>
2026-02-15 17:11:34 -03:00
luis aa117f08c3 currency flags 2026-02-15 17:05:56 -03:00
luis 843652242a Full opcodes and spawn map for housing 2026-02-15 17:00:33 -03:00
luis bd2f6535b2 Core fix initial crashes 2026-02-15 16:55:34 -03:00
luis 51b67f6ee0 Playerhousing misc 2026-02-15 16:07:09 -03:00
luis d58362f3a2 Core playerhousing Most complete need change opcode status later 2026-02-15 11:11:11 -03:00
luis d95f86d2df fix sql char table 2026-02-12 21:53:42 -03:00
luis 92feff8094 Initial playerhousing work 2026-02-12 20:28:27 -03:00
Shauren 54c0cebeee Core: Updated to 12.0.1
Signed-off-by: luis <[email protected]>
2026-02-12 20:22:00 -03:00
luis c9b1dc2764 Remove to add full system 2026-02-12 20:12:49 -03:00
agathoandClaude Opus 4.6 ce86384926 Gossip/Vendor: Fix Sell All Junk by deferring vendor inventory to second round-trip
The client's IsSellAllJunkEnabled requires PlayerInteractionManager+48 to be
set to Merchant(5). NIOR(Merchant) case 5 queues a UI event that sets this
field, but it does not set it synchronously during packet processing. When
VendorInventory was sent in the same flush as NIOR, MerchantFrame opened
before the event fired, so PIM+48 was not yet 5 and IsSellAllJunkEnabled
returned false.

Fix: On gossip vendor click, send only NIOR(Merchant) and start the
interaction. The client event handler sets PIM+48, opens MerchantFrame,
which then sends CMSG_LIST_INVENTORY to fetch vendor data in a second
round-trip. Also handle direct CMSG_LIST_INVENTORY (non-gossip vendors)
by sending NIOR first if the interaction is not yet started.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: luis <[email protected]>
2026-02-12 20:11:53 -03:00
agathoandClaude Opus 4.6 50be1cc73f Gossip: Send NPCInteractionOpenResult(Merchant) before vendor inventory
Send SMSG_NPC_INTERACTION_OPEN_RESULT with PlayerInteractionType::Merchant
from the gossip handler instead of from SendListInventory. This sets PIM+48
to the value the client expects for IsSellAllJunkEnabled() without causing
an infinite CMSG_LIST_INVENTORY loop (the client's MerchantFrame OnShow
re-requests the item list, which would re-trigger NIOR if placed inside
SendListInventory).

Also closes the gossip dialog before opening the vendor frame, matching
the PetitionVendor pattern.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: luis <[email protected]>
2026-02-12 20:10:49 -03:00
agathoandClaude Opus 4.6 697cffb0a3 Playerbot/Movement: Add road network pathfinding system
Adds the source code for the road network navigation system:
- RoadNetworkManager: Loads and manages road graph data per map
- RoadGraphPathfinder: A* pathfinding on the road graph with
  spatial index acceleration for nearest-node lookups
- RoadSpatialIndex: Grid-based spatial index for fast node queries
- RoadNetworkTypes: Shared type definitions (nodes, edges, paths)

Companion to 41e62e15a4 which added the road network data files.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: luis <[email protected]>
2026-02-11 21:08:04 -03:00
luis bdd3e31d15 Revert "Fix bot library"
This reverts commit 59972dcbbf.
2026-02-11 21:07:50 -03:00
luis 0c8542a77d Housing initial work 2026-02-11 21:06:37 -03:00
luis 59972dcbbf Fix bot library 2026-02-11 20:42:56 -03:00
agathoandClaude Opus 4.6 8b75ac1a33 Playerbot/Movement: Add road network data for bot pathfinding (337 maps)
Pre-generated road graph data extracted from WoW map ADT terrain
textures. Contains 337 .roadnet binary files covering all maps with
road infrastructure (Eastern Kingdoms, Kalimdor, Draenor, Broken
Isles, etc.).

## Install Instructions

1. Extract `src/modules/Playerbot/conf/roads.zip` into a `roads/`
   folder in your worldserver working directory (same location as
   `maps/`, `vmaps/`, `mmaps/`, `dbc/`, `gt/`):

       cd <server-directory>
       unzip roads.zip -d roads/

   On Windows (PowerShell):

       Expand-Archive -Path roads.zip -DestinationPath roads\

2. Verify the folder contains 337 `.roadnet` files (e.g. 0000.roadnet,
   0001.roadnet, ...).

3. Start worldserver. Confirm loading in the log:

       RoadNetworkManager: Initializing from 'roads'
       RoadNetworkManager: Loaded 337 maps (X nodes, Y edges)

4. If using a custom data directory, set the absolute path in
   playerbots.conf:

       Playerbot.RoadNetwork.DataPath = "C:/path/to/roads"

## Configuration (playerbots.conf)

    Playerbot.RoadNetwork.Enable = true        (default)
    Playerbot.RoadNetwork.DataPath = "roads"   (default, relative to CWD)
    Playerbot.RoadNetwork.MinDistance = 200     (yards, below this use direct navmesh)
    Playerbot.RoadNetwork.MaxDetourRatio = 1.5  (max road/direct distance ratio)
    Playerbot.RoadNetwork.MaxEntryDistance = 200 (max yards to nearest road node)

## Data Summary

    Archive: 3.2 MB (12 MB uncompressed)
    Files:   337 .roadnet binary files
    Format:  RNET v1 (header + nodes + edges + shape points + adjacency)
    Largest: Map 0 (Eastern Kingdoms) - 16,585 nodes, 13,037 edges

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: luis <[email protected]>
2026-02-11 20:36:36 -03:00
luis 6b51f93585 Fixed db errors and spell procs wrong 2026-02-11 20:31:00 -03:00