Author SHA1 Message Date
Nico ba2a4e629c Recover stalled flights locally and fly rejected route approaches
clang PCH / build (push) Waiting to run
GCC PCH / build (push) Waiting to run
2026-11-04 01:14:02 +01:00
Nico f8ee1d0ff6 Preserve instance groups during leader absence and travel 2026-11-04 01:13:53 +01:00
Nico 65e4abb0b9 Fix shared flight trail replacement and safe follower rejoining
Publish replacement landing targets, bound orphaned trail waits, and plan safe connections from the follower position. Support shared-route regroup landings and preserve catch-up flights after the leader lands. Add geometry, lifecycle and group travel regressions.
2026-11-03 19:59:56 +01:00
Nico 768810a82d Record confirmed Wintergrasp fix and scheduled 20:00 raid retest 2026-11-03 19:00:48 +01:00
Nico a6572242c6 Fix flight departure recovery and Wintergrasp mount permissions
Keep takeoff clearance until actual ascent, blacklist rejected dynamic bridges, and diagnose group ground-path rejection. Synchronize native Wintergrasp client mount permission with battle state and fix duplicate Zangarmarsh graveyard ownership. Add regression tests and generic testbot aura inspection.
2026-11-03 18:56:16 +01:00
Nico fe03ea8ca5 Fix VMAP probe handle leaks and tile model ownership
Close the tile stream opened during existence checks and validate parent-map fallback directly. Track each tile's successful model acquisitions so failed or partial loads cannot release references owned by dynamic objects or other tiles.

Add production-method regression tests covering file descriptor stability, transient acquisition failures, shared references, duplicate loads, partial files and parent-map overlaps. Reproduced both original defects on 6f8f59ec6d; build and test-server verification passed.
2026-11-03 13:31:04 +01:00
Nico 6f8f59ec6d Fix short-stop elevator travel and recover stranded passengers
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
Require 500ms remaining dwell to begin elevator boarding, allow exits at stopped docks without a dwell budget, and preserve journeys across interrupted transitions. Recover elevator passengers to their original destination after five minutes.

Add regression coverage and elevator recording documentation. Verified production build and live round trips with a dedicated testbot; Mokrak also completed a natural elevator trip.
2026-11-03 01:21:13 +01:00
Nico ae0b7513d9 Publish validated group flight landings and extend moving trail handoffs 2026-11-02 10:03:52 +01:00
Nico 3056063f12 Allow validated vertical approaches to elevated flight landings
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-11-02 08:32:21 +01:00
Nico 2778cf9bdd Use journey-stable distance costs for clientless travel routes 2026-11-02 06:26:58 +01:00
Nico 3c361e435a Improve AdventureBot instance and flight navigation
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-11-01 17:00:59 +01:00
Nico be049baacc Add deterministic AdventureBot group formation manager
clang PCH / build (push) Waiting to run
GCC PCH / build (push) Canceled after 0s
2026-11-01 01:20:37 +01:00
Nico 856832e7bd Improve free-flight recovery and fallback handling 2026-11-01 01:20:33 +01:00
Nico 7b4994400b Stabilize grouped instance intent transitions
GCC PCH / build (push) Canceled after 0s
clang PCH / build (push) Canceled after 0s
2026-10-31 22:13:39 +01:00
Nico d1ef007cef Improve AdventureBot planning and travel performance 2026-10-31 15:35:46 +01:00
Nico 69b5a1c4a1 Extend clientless bots with browser queues, PvP intents and test automation 2026-10-31 13:36:33 +01:00
Nico 649915e575 Fix AdventureBot travel recovery, area eligibility and safe build logout
clang PCH / build (push) Waiting to run
GCC PCH / build (push) Waiting to run
2026-10-30 12:43:22 +01:00
Nico 60cab950bd Record overnight group and transport test results 2026-10-30 04:09:27 +01:00
Nico 77648c6b53 Preserve navigation fallbacks after early group departure 2026-10-30 02:36:26 +01:00
Nico 373818628d Implement instance modes, full-group departures and mandatory flight regions 2026-10-30 02:15:06 +01:00
Nico bc8f171055 Fix restored bot passengers and add capital Cataclysm portals 2026-10-29 23:07:10 +01:00
Nico 19075b6c75 Fix AdventureBot group travel and add explicit tram rescue routes 2026-10-29 20:48:11 +01:00
Nico 54d77d1e4d Fix AdventureBot group preparation, public portals and flight recovery
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
Add preparation outings and equipment checks with a five-minute return to the meeting point. Correct static portal visitor casting and level conditions, with native interaction diagnostics. Recover suspended flying mounts, walk to verified takeoff sites, and validate landing and return volumes. Include SQL migrations, targeted regression tests and live validation checkpoints.
2026-10-29 18:21:43 +01:00
Nico 2841ee973b Add local deck navigation for AdventureBot transport passengers 2026-10-29 12:02:25 +01:00
Nico 49712aadfe Improve AdventureBot travel recovery and destination eligibility
GCC PCH / build (push) Waiting to run
clang PCH / build (push) Canceled after 0s
2026-10-29 11:10:27 +01:00
Nico 321a28640c Enforce reloadable AdventureBot area and travel access policies 2026-10-29 09:44:49 +01:00
Nico 0173a434f4 Improve AdventureBot recruitment, world presence and performance
Manage Arthoran as a persistent level-60 tank profile, add Worgen forms and mounts, enable PvP and recruit through native LFG with preparation actions and player invitations.

Reduce repeated route and flight-planning work, bound failed-travel retries and add runtime timing diagnostics. Include 86 passing tests and measurements with 110 online bots.
2026-10-29 01:36:35 +01:00
Nico cac4142ec1 Implement safe AdventureBot group travel and formations
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-28 23:30:28 +01:00
Nico a758239da9 Implement AdventureBot class rotations, group roles and instance encounters
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-28 22:37:18 +01:00
Nico d3273c677e Implement AdventureBot profiles, daily planning and population management
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-28 18:22:13 +01:00
Nico d6fea6ee68 Add AdventureBot groups, raid preparation and shared travel
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
Implement native bot recruitment and player admission, leader-owned destinations, intent-specific capacities, preparation scheduling and shared graph and flight travel. Support native group instance visits and separate raid entrances.

Include pending personality-driven faction PvP and solo fleeing, preserving the absolute group fleeing exclusion. Add regression fixtures, migration, documentation and test-server evidence.
2026-10-28 15:00:41 +01:00
Nico 04aa87fcfc Add profile-driven AdventureBot character generation
clang PCH / build (push) Waiting to run
GCC PCH / build (push) Canceled after 0s
2026-10-28 11:30:47 +01:00
Nico e333f2f9fc Add AdventureBot social interactions and player-led groups 2026-10-28 01:11:54 +01:00
Nico 39a515dbd1 Add AdventureBot self-care, supply restocking and secondary professions 2026-10-27 23:56:43 +01:00
Nico c0c799c4b6 Add AdventureBot combat reactions, training and corpse recovery
GCC PCH / build (push) Canceled after 0s
clang PCH / build (push) Canceled after 0s
2026-10-27 23:17:05 +01:00
Nico e18a416bf4 Add persistent instance visits and validate sleeping spaces
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-27 20:10:13 +01:00
Nico 440c53acd7 Validate profession scenes and fix native workstation and area targeting
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-27 18:01:03 +01:00
Nico 722b513ee0 WIP: checkpoint AdventureBot intents and unfinished profession implementation 2026-10-27 17:02:01 +01:00
Nico 119d63ed1c Implement autonomous AdventureBot intents and social micro actions
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
Add profile-driven daily schedules, semantic location import and editable catalogs, flexible intent execution and safe graph handovers. Implement coherent social scenes, native chair use and campfires, frontal conversation approaches and walking. Fix clientless near-teleport observer identity and native flight area queries. Include migrations, regression tests and implementation documentation.
2026-10-26 22:45:38 +01:00
Nico ca656403bb Keep clientless flight moving across spline handoffs
GCC PCH / build (push) Waiting to run
clang PCH / build (push) Canceled after 0s
Replace ordinary flight splines before they finish while retaining collision checks, terminal landing and conservative return behavior. Measure actual travelled distance, cover handoff timing with a production Update regression test, retire Arthoran's automatic ship test and document visual acceptance of the travel milestone.
2026-10-26 18:21:48 +01:00
Nico 8df9591c99 Implement dynamic clientless free-flight travel
Integrate transient flight alternatives with graph routing, native flying mounts, phased terrain and collision checks, bounded avoidance and confirmed landing. Add safe-return recovery, node and location integration, profile settings, diagnostic commands, regression tests and flight documentation.
2026-10-26 17:35:58 +01:00
Nico 4474714c00 Support interactive object portals and document travel route recording
GCC PCH / build (push) Canceled after 0s
clang PCH / build (push) Canceled after 0s
Bind directed portal_use edges to native GameObject spawns and spell destinations. Execute normal clicks and verify completed clientless teleports, with regression coverage. Document live portal tests, mage tower calibration, Badlands portals and transport recording workflows.
2026-10-26 14:01:42 +01:00
Nico 1164a72ea3 Implement clientless transports, Lua reload and same-map portals
Add native transport recording and execution with grid lifecycle handling, clientless teleport acknowledgements, and regression tests. Support targeted same-map portal imports and preserve disabled taxi nodes. Document live transport and portal verification and the remaining portal inventory.
2026-10-26 11:27:56 +01:00
Nico 01a9ba4b0b implemented usage of virtual exit and entry nodes
clang PCH / build (push) Waiting to run
GCC PCH / build (push) Canceled after 0s
2026-10-25 12:09:36 +01:00
Nico 56da0d60cf Patch for the portalnode approach and selection
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-19 23:15:11 +02:00
Nico b37a0ddcc4 implemented temporary entry nodes to be considered using playerless MMAP check
GCC PCH / build (push) Waiting to run
clang PCH / build (push) Canceled after 0s
2026-10-19 17:03:42 +02:00
Nico 366615bcb9 implemented usage of virtual entry points when planning the travleroute
GCC PCH / build (push) Canceled after 0s
clang PCH / build (push) Canceled after 0s
2026-10-18 13:39:31 +00:00
Nico 9d4a862b7d implemented regular mounting check when traveling over ground nodes and stopped travel graph from planning routes through unintentioned teleports
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-17 23:53:48 +00:00
Nico 2bcffa5131 fiexed virtuel entry nodes so they will be considered equal to all other Nodes
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-17 21:10:53 +00:00
Nico ae2a4a0f08 added virtual entry nodes
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-17 16:45:58 +00:00
Nico 6e17dedff2 fix in MMAP navigation when traveling to portal node
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-16 22:28:22 +00:00
Nico fe7b5e0f02 importet Areateleports as Nodes
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-16 09:36:33 +00:00
Nico 93c3df1c95 added visible gryphon when bots using taxi-gryphon
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-14 21:23:04 +00:00
Nico 24fb292cee implemented taxinodes
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-14 16:03:14 +00:00
Nico 4c04cd88de fixed travel to location
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-14 13:07:04 +00:00
Nico b14c864814 Implemented travel graph
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-13 19:39:53 +00:00
Nico 05fd748537 core: add server-side lua runtime for clientless players
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-12 16:12:18 +00:00
Nico 5ac9ed673c core: add clientless player manager and controller API
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-12 14:44:45 +00:00
Nico 0c2e333bb4 core: add clientless player lifecycle state machine
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-12 13:20:37 +00:00
Nico 7013087bcd core: add clientless player GM test adapter
GCC PCH / build (push) Canceled after 0s
clang PCH / build (push) Canceled after 0s
2026-10-12 12:51:09 +00:00
Nico fe96d310d6 core: add clientless player session bootstrap
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-12 10:17:43 +00:00
Nico df55203a96 core: add clientless player login entry point
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
2026-10-12 09:48:45 +00:00
Nico 046cb79b7a core: add clientless session registry and lifecycle 2026-10-11 08:39:16 +00:00
Nico fa8e7d07dd core: add clientless WorldSession mode 2026-10-11 08:23:48 +00:00
Nico 9b4985b5aa Fix player level stats field type reads 2026-10-11 08:01:02 +00:00
759 changed files with 126505 additions and 149 deletions

No files matched your search

+12
View File
@@ -0,0 +1,12 @@
{
"original": {
"graph": "5d632279d7e25748f3bd8e7ffe954482821334bef12088aad885e6a3ef79c6ac",
"executor": "016cdfb51387ab58d3e15a36b91e8fd69381b66962edd62214e4c54868340468",
"header": "61ccbca3b666016a465d8a9a9049dfa5420177e66aa073fdfe927d749ad2b53b"
},
"patched": {
"graph": "a9da61755df58666cfa2c6deb7f5d886760036936bc51b51b91ad4ef0ff76ecd",
"executor": "cbb79474640192c5c853174e219deade3694231060d90163362385db2fd6fb6c",
"header": "64bd460621aa63c3cf7e341173249a5b945091e955e2673523478b0762e89dde"
}
}
+113
View File
@@ -0,0 +1,113 @@
#!/usr/bin/env python3
"""Export the local Cataclysm DBC geography as an editable world-DB catalog.
Does not connect to a database. Existing operator edits survive repeated imports.
"""
import argparse
import struct
from pathlib import Path
def dbc(path, fields):
data = path.read_bytes()
magic, count, actual, size, strings_size = struct.unpack_from('<4s4I', data)
if magic != b'WDBC' or actual != fields or size != fields * 4:
raise ValueError(f'Unexpected Cataclysm DBC layout: {path}')
if len(data) != 20 + count * size + strings_size:
raise ValueError(f'Truncated or unsupported DBC: {path}')
strings = data[20 + count * size:]
rows = [struct.unpack_from('<' + 'I' * fields, data, 20 + i * size)
for i in range(count)]
def name(offset):
if offset >= len(strings):
raise ValueError(f'Invalid string offset in {path}')
return strings[offset:].split(b'\0', 1)[0].decode('utf-8')
return rows, name
def quote(value):
# Hex strings avoid dependence on session SQL backslash escaping modes.
return "CONVERT(X'" + value.encode('utf-8').hex() + "' USING utf8mb4)"
def export(directory):
maps, map_name = dbc(directory / 'Map.dbc', 20)
areas, area_name = dbc(directory / 'AreaTable.dbc', 26)
map_ids = {r[0] for r in maps}
area_ids = {r[0] for r in areas}
if any(r[2] and r[2] not in area_ids for r in areas):
raise ValueError('AreaTable contains missing parent areas')
sql = ["-- Generated from local Cataclysm 4.3.4 DBC; do not overwrite operator edits.",
"-- All access policies are AdventureBot-only; never player restrictions.",
"CREATE TABLE IF NOT EXISTS vcore_adventure_map_catalog (",
" map_id INT UNSIGNED NOT NULL PRIMARY KEY,",
" display_name VARCHAR(255) NOT NULL,",
" map_type TINYINT UNSIGNED NOT NULL,",
" expansion TINYINT UNSIGNED NOT NULL,",
" notes VARCHAR(255) NOT NULL DEFAULT ''",
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;",
"CREATE TABLE IF NOT EXISTS vcore_adventure_area_catalog (",
" area_id INT UNSIGNED NOT NULL PRIMARY KEY,",
" map_id INT UNSIGNED NOT NULL,",
" parent_area_id INT UNSIGNED NOT NULL DEFAULT 0,",
" display_name VARCHAR(255) NOT NULL,",
" allowed_factions TINYINT UNSIGNED DEFAULT NULL COMMENT 'NULL inherit; 0 closed; 1 Alliance; 2 Horde; 3 both',",
" min_level TINYINT UNSIGNED DEFAULT NULL COMMENT 'Recommended level band, NULL inherit/unknown',",
" max_level TINYINT UNSIGNED DEFAULT NULL COMMENT 'Recommended level band, not an upper access limit',",
" max_level_gap TINYINT UNSIGNED DEFAULT NULL COMMENT 'Allowed levels below min_level; NULL inherit, default 5',",
" prefer_flight TINYINT UNSIGNED DEFAULT NULL COMMENT 'NULL inherit; 0 normal; 1 prefer legal flight',",
" notes VARCHAR(255) NOT NULL DEFAULT '',",
" KEY parent_area (parent_area_id), KEY map_area (map_id)",
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;",
"START TRANSACTION;"]
for r in sorted(maps):
sql.append('INSERT IGNORE INTO vcore_adventure_map_catalog '
'(map_id,display_name,map_type,expansion) VALUES '
f'({r[0]},{quote(map_name(r[6]))},{r[2]},{r[16]});')
# Native AreaTable also contains obsolete areas whose Map row is absent.
# Retain their identity explicitly; they must not become usable destinations.
for map_id in sorted({r[1] for r in areas} - map_ids):
sql.append('INSERT IGNORE INTO vcore_adventure_map_catalog '
'(map_id,display_name,map_type,expansion,notes) VALUES '
f"({map_id},'Missing Map.dbc entry',255,0,'Unavailable native map');")
alliance = {1, 12, 141, 3524, 3525, 1519, 1537, 1657, 3557,
4714, 4755, 4774, 4706, 5351}
horde = {14, 85, 215, 3430, 3433, 1497, 1637, 1638, 3487,
4707, 4720, 4737}
outland = {3483, 3521, 3519, 3518, 3522, 3523, 3520, 3703}
cataclysm = {616, 4922, 5034, 5042, 5095, 5389}
# Native city roots still have physical surroundings. These semantic
# catalog parents are editable and never alter the native DBC hierarchy.
city_parents = {1519:12,1537:1,1657:141,1637:14,1638:215,1497:85,
3487:3430,3557:3524,3703:3519,4395:2817}
area_maps = {r[0]:r[1] for r in areas}
for r in sorted(areas):
area, map_id, parent = r[:3]
if not parent and area_maps.get(city_parents.get(area)) == map_id:
parent = city_parents[area]
faction = '1' if area in alliance else '2' if area in horde else 'NULL'
note = 'Racial home region/capital' if faction != 'NULL' else ''
if area == 5146:
faction, note = '0', 'Vashjir closed to all AdventureBots, including child areas'
if map_id not in map_ids:
faction, note = '0', 'Unavailable native map'
flight = '1' if area in outland | cataclysm or (map_id == 571 and parent == 0) else 'NULL'
sql.append('INSERT IGNORE INTO vcore_adventure_area_catalog '
'(area_id,map_id,parent_area_id,display_name,allowed_factions,prefer_flight,notes,min_level,max_level) '
f'SELECT {area},{map_id},{parent},{quote(area_name(r[11]))},{faction},{flight},{quote(note)},'
'z.min_level,z.max_level FROM (SELECT 1) seed '
f'LEFT JOIN vcore_adventure_zone z ON z.zone_id={area} AND z.enabled=1;')
# Level bands are seeded only on INSERT, including deliberately NULL edits.
sql.append('COMMIT;')
return '\n'.join(sql) + '\n'
if __name__ == '__main__':
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('dbc_directory', type=Path)
parser.add_argument('output_sql', type=Path)
args = parser.parse_args()
args.output_sql.write_text(export(args.dbc_directory), encoding='utf-8')
@@ -0,0 +1,17 @@
-- Vcore C8.5: local semantic world points for clientless AdventureBots.
CREATE TABLE IF NOT EXISTS `vcore_clientless_world_point` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`point_key` varchar(100) NOT NULL,
`category` varchar(64) NOT NULL,
`map` smallint(5) unsigned NOT NULL DEFAULT 0,
`position_x` float NOT NULL DEFAULT 0,
`position_y` float NOT NULL DEFAULT 0,
`position_z` float NOT NULL DEFAULT 0,
`orientation` float NOT NULL DEFAULT 0,
`enabled` tinyint(1) unsigned NOT NULL DEFAULT 1,
`comment` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_vcore_clientless_world_point_key` (`point_key`),
KEY `idx_vcore_clientless_world_point_category_map` (`category`,`map`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Vcore AdventureBot semantic local world points';
@@ -0,0 +1,31 @@
-- Vcore C8.6: incremental AdventureBot travel graph.
CREATE TABLE IF NOT EXISTS `vcore_clientless_travel_node` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`node_key` varchar(100) NOT NULL,
`node_type` varchar(32) NOT NULL DEFAULT 'location',
`world_point_key` varchar(100) NOT NULL,
`enabled` tinyint(1) unsigned NOT NULL DEFAULT 1,
`comment` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_vcore_clientless_travel_node_key` (`node_key`),
KEY `idx_vcore_clientless_travel_node_world_point` (`world_point_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Vcore AdventureBot travel graph nodes';
CREATE TABLE IF NOT EXISTS `vcore_clientless_travel_edge` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`from_node_key` varchar(100) NOT NULL,
`to_node_key` varchar(100) NOT NULL,
`edge_type` varchar(32) NOT NULL DEFAULT 'ground',
`cost` float NOT NULL DEFAULT 1,
`bidirectional` tinyint(1) unsigned NOT NULL DEFAULT 0,
`enabled` tinyint(1) unsigned NOT NULL DEFAULT 1,
`comment` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_vcore_clientless_travel_edge`
(`from_node_key`,`to_node_key`,`edge_type`),
KEY `idx_vcore_clientless_travel_edge_from` (`from_node_key`),
KEY `idx_vcore_clientless_travel_edge_to` (`to_node_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Vcore AdventureBot travel graph edges';
@@ -0,0 +1,14 @@
-- Vcore C8.7: recorded geometry for bidirectional ground edges.
CREATE TABLE IF NOT EXISTS `vcore_clientless_travel_edge_point` (
`edge_id` int(10) unsigned NOT NULL,
`point_index` int(10) unsigned NOT NULL,
`map` smallint(5) unsigned NOT NULL DEFAULT 0,
`position_x` float NOT NULL DEFAULT 0,
`position_y` float NOT NULL DEFAULT 0,
`position_z` float NOT NULL DEFAULT 0,
`orientation` float NOT NULL DEFAULT 0,
PRIMARY KEY (`edge_id`,`point_index`),
KEY `idx_vcore_clientless_travel_edge_point_edge` (`edge_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Recorded geometry for Vcore AdventureBot travel graph edges';
@@ -0,0 +1,126 @@
# Gebietskatalog, POI-Zuordnung und sichere Builds
## Befund und Korrektur
Pibwin (GUID88, Stufe18) kündigte ein Abenteuer bei „Dalaran Krasus' Landing“ an.
Der importierte Ort `poi_guard_140` lag tatsächlich auf Karte1 bei5831/508/Z3,55,
Gebiet2078, Zone148 (Dunkelküste). Der Gebietskatalog prüfte deshalb einen
niedrigstufigen Ort, nicht Dalaran. Ursache war die Auswahl des nächsten
`game_tele`-Ankers nach X/Y über verschiedene Kontinente hinweg.
POIs erhalten ihre Karte jetzt über die nativen Gesprächsmenüs der tatsächlich
platzierten NPCs (`creature_template_gossip`, `gossip_menu_option`, `creature`).
Untermenüs werden verfolgt, Zyklen abgefangen. Mehrdeutige oder fehlende native
Zuordnungen werden nicht durch eine Koordinatenvermutung ersetzt. Erst innerhalb
der eindeutigen Karte werden die Bodenhöhe und die Gebietszuordnung bestimmt.
`clientless adventure repairimport` erkennt unveränderte generierte Orte anhand
von Quelle, Name, Position und Geografiemetadaten. Es korrigiert ihre Karte/Höhe/
Gebietsdaten und deaktiviert solche ohne sichere native Zuordnung. Manuell
veränderte Orte sowie Original-POIs und aufgezeichnete Reiserouten bleiben erhalten.
Die Katalogmigration `2026_10_30_00_adventure_city_parents.sql` ordnet native
Stadtwurzeln ihren geografischen Umgebungen zu, insbesondere Dalaran4395 dem
Kristallsangwald2817 und Shattrath3703 Terokkar3519. Auch die acht Volksstädte
bekommen ihre Heimatregion als semantischen Katalog-Elternbereich. Vorhandene
manuelle Elternzuordnungen bleiben bestehen; Karten müssen übereinstimmen.
Neue DBC-Exporte erzeugen dieselben editierbaren Vorgaben. Die native DBC- und
Spielergebietshierarchie wird nicht geändert. Levelminimum, Fraktionssperren und
fehlende Flugvorgaben werden über die vorhandene Katalogvererbung berücksichtigt.
Gruppenpläne prüfen auch das tatsächlich angekündigte nächste Ziel gegen die
Berechtigungen des Bots. Ungültige gespeicherte/manuelle Ziele werden nicht mehr
beworben. Bei Einladungen werden sowohl Anführer als auch Teilnehmer geprüft.
Gespeicherte Tagespläne werden durch die vorhandene Reparatur beim Laden bzw.
Katalogwechsel auf zulässige Ziele umgestellt.
## Verbindlicher Ablauf vor künftigen Builds
1. Den bisherigen Wert von `Clientless.Adventure.Loader.Enabled` sichern, auf0
setzen, `reload config` und `clientless population reload` ausführen. Bei einer
noch laufenden Loader-Operation deren Abschluss abwarten und erneut laden.
2. `clientless logout safe all` ausführen. Der Welt-Thread fordert einmalig einen
sicheren Verhaltensstopp an und lässt die bestehenden Controller weiterlaufen.
Er wartet auf lebende, geladene Bots ohne Kampf, Transportbindung, Taxi, Flug,
Fall, Teleport, Zauber oder aktive Bewegung. Es gibt keinen erzwungenen Logout
nach einer Wartefrist. Menschen und normale Netzwerksitzungen sind ausgenommen.
3. Mit `clientless logout status` warten, bis `pending=0 sessions=0` gemeldet wird.
Erst dann `cmake --build /home/wow_admin/wow_cata_server/build/debug -j10` starten.
Bei blockierten Bots zuerst die Ursache untersuchen; nicht nebenher bauen.
4. Den Loader durch Installation und Neustart hindurch pausiert lassen.
Laufende Binärdateien nicht überschreiben; nach sauberem Serverstopp installieren.
Frischen Ready-Eintrag, Prozess und Listener prüfen.
5. `clientless logout resume` beendet die Sammel-Anforderung, falls derselbe
Weltprozess weiterläuft. Nach Neustart ist sie ohnehin zurückgesetzt.
Bisherige Loader-Konfiguration wiederherstellen, `reload config` und
`clientless population reload` ausführen. Der Loader lädt die Bots wieder
schrittweise. Die Regel ist zusätzlich dauerhaft in `AGENTS.md` festgehalten.
Einzelne Bots können mit `clientless logout safe <guid>` ebenso sicher abgemeldet
werden. Der bisherige unmittelbare Einzel-Logout bleibt als Administrationswerkzeug
bestehen und ist nicht der empfohlene Build-Ablauf.
Beim ersten Übergang auf diesen Ablauf war der sichere Sammel-Befehl noch nicht
installiert. Die vorhandenen sicheren Intent-Stopps dienten zur Abmeldung.
Für zwei im alten Schiffscode festhängende Bots wurde zunächst der bereits fertig
gebaute vorherige Transportfix installiert. Tholgar92 und Lillina118 erreichten
anschließend regulär den Anleger (`Arrived`, `passenger=0`,11:54:06).
Bei den zuletzt stationären Bots Edwin36 und Drakogzug77 wurden vermutete
verwaiste native Kampfzustände separat mit `combatstop` bereinigt; dies ist kein
Bestandteil des neuen automatischen Logout-Verfahrens. Anschließend wurden ihre
sicheren Stopps und Offline-Zustände bestätigt. Vor dem neuen Build waren sämtliche
110 Bots offline, der Loader aus und nur eine normale Spielersitzung aktiv.
## Weltkarte
Der vorhandene GM-Befehl lautet `.cheat explore 1`. Ohne Zielauswahl wird die
eigene Karte aufgedeckt; bei Auswahl eines Spielers dessen Karte. `.cheat explore 0`
löscht die Erkundungsbits wieder. Behoben wurden die bisher falsche Zielperson
und das wirkungslose Löschen per `SetFlag(...,0)`. Der Befehl schreibt jetzt alle
Erkundungsfelder des ausgewählten Spielers korrekt.
## Prüfstand
113 isolierte Clientless-Testprogramme erfolgreich. Neue Prüfungen führen die
produktive POI-Zuordnung, den nativen Logout-Sicherheitscheck und den bestehenden
Kartenbefehl aus. Weitere Prüfungen bestätigen die Katalogmigration einschließlich
Idempotenz und Erhalt manueller Eltern sowie neue DBC-Exporte und Gruppenpläne
mit unzulässigem Folgeziel. Die Integrationsergebnisse nach Installation werden
im Session-Checkpoint und im Abschlussbericht festgehalten.
Build mit bestehender Debug/Ninja-Konfiguration und `-j10` erfolgreich, ohne
parallel eingeloggte Bots. Logs unter `/tmp/vcore-city-safe-logout-*`, Testausgaben
unter `/tmp/vcore-travel-fixes-tests/`. Geografiesnapshots unter
`/tmp/vcore-city-fix-state/` enthalten keine Konfigurationszugangsdaten.
### Bestätigte Integration
- Finaler Testserverstart: PID 446178, frische Ready-Meldung nach 10 Sekunden,
Listener 8085/8087. Beide Builds mit `-j10` bei 0 Bots erfolgreich, ohne OOM-Abbruch.
- Reparatur: 437 native Wächter-POIs, 166 nicht nutzbare Koordinaten übersprungen,
2916 aktive Locations einschließlich Instanzvarianten. Die Höhenprüfung nutzt
zunächst NPC-Höhe +3; bei weit entferntem Bodentreffer folgt eine Probe von +35.
Der nähere Treffer gewinnt. Nahe Innenböden werden beibehalten.
- `poi_guard_140`: Karte 571, X 5831, Y 508,617, Z 657,7, Gebiet 4564,
Zone 4395 Dalaran. Pibwin auf Stufe 18: `own=0 invitation=0`. Sein Tagesblock
12 behält Adventure, bekommt `poi_tele_651` (Blutmythosinsel, niedriger Levelbereich).
- Katalogeltern 4395→2817 und 3703→3519 bestätigt. Policytests bestätigen
geerbte Levelminima 77 bzw. 62 und Flugvorgaben.
- Nodes, Kanten und Transportstopps vor/nach Reparatur bytegleich. Alle 17
vorherigen manuellen Ortsdatensätze unverändert. 236 generierte Datensätze
repariert/deaktiviert, 12 semantische Datensätze ergänzt. Snapshots unter
`/tmp/vcore-city-fix-state/`.
- Sammel-Logout mit Arthoran 26 und Pibwin 88 live ausgeführt: erste Rückmeldung
pending=2/sessions=2/flight=1. Arthorans native Taxiverbindung 2221 endete vor
seinem `CLIENTLESS_SAFE_LOGOUT`, danach Pibwins Bewegungsabschluss und Logout.
Abschluss: `pending=0 sessions=0`. Kein zeitgesteuerter Zwangslogout.
- Sammel-Anforderung mit `logout resume` beendet, ursprünglichen Loaderwert 1
wiederhergestellt, Config und Population neu geladen. Bots kehren schrittweise
zurück; keine neuen Sammel-Logouts nach der Wiederaufnahme. Zielkonfiguration
unverändert: 50 persistente + 5 temporäre Bots pro Fraktion. Abschließend alle
110 Bots online, keine ausstehenden Logins, Loader ohne Fehler.
Die Liveprüfung bestätigt Zielberechtigung und Logoutablauf. Sie ersetzt keine
vollständige Abnahme sämtlicher Reisewege oder aller reparierten POIs. Der
Kartenbefehl wurde am produktiven Handler isoliert geprüft; keinem Spieler wurde
ungefragt seine Karte verändert.
@@ -0,0 +1,138 @@
# Gruppentest am 30.10.2026 bis 04:00 Uhr MEZ
Die automatische Beobachtung lief von 02:20:56 bis 04:00:00 Uhr MEZ. Der Server
läuft weiter. Um 04:00 Uhr wurden die ursprünglichen 15 Prozent für die temporäre
Botrotation wiederhergestellt. Der Loader bleibt aktiviert; eingestellt sind
weiterhin je Fraktion 50 persistente und 5 temporäre Bots.
Es gab keinen unbeabsichtigten Laufzeitabsturz. Ein angekündigter Neustart um
02:37 Uhr spielte die während der Beobachtung gefundene Korrektur ein.
## Änderungen und Testaufbau
- `373818628d`: Instanzmodi, vorzeitiger Gruppenaufbruch und Flugvoraussetzungen.
- `77648c6b53`: Navigationsfallbacks nach vorgezogenem Aufbruch erhalten.
- Die Flugvoraussetzung gilt für die im editierbaren Gebietskatalog ausgewiesenen
Flugregionen der Scherbenwelt und von Cataclysm. Nordend verlangt zusätzlich
Stufe 68 und Kaltwetterflug. Die niedrigstufigen Blutelfen- und Draenei-Gebiete
auf Karte 530 bleiben getrennt. Builds mit `-j10`; 69 Tests bestanden. Für die
anschließend gefundene Regression wurden drei Produktionstests erneut geprüft.
- Von 110 Bots nahmen 92 teil. 18 Bots unter Stufe 15 blieben ausgenommen.
- Nur die Blöcke 02:00–03:00 und 03:00–04:00 Uhr wurden geändert: zuerst
Gruppensuche in Sturmwind beziehungsweise Orgrimmar, danach 76 Instanz- und
16 Raid-Intents. Alle gewählten Ziele bestanden den nativen Eligibility-Check.
- Nach sicherem Logout wurden Teilnehmer in ihre Hauptstädte gesetzt und alte
Leichen-, Geist-, Transport-, Taxi-, Besuchs- und Handoff-Reste bereinigt.
Die übrigen Tagesblöcke blieben erhalten.
## Bestätigte Abläufe
Alle 110 Bots waren gleichzeitig online. Es gab maximal 26 Gruppen mit
Testteilnehmern, am Ende 17. Im Beobachtungsfenster wurden 156 Meldungen im
Hauptstadtchat und 220 Bot-Einladungen protokolliert. Vorbereitungsszenen und
Suchgänge wurden tatsächlich ausgeführt. Drei Fünfergruppen wurden vor dem
Stundenwechsel vollständig und begannen ihre Sammelfrist. Auch die feste
Sammelphase ab 02:55 Uhr und der Wechsel um 03:00 Uhr wurden beobachtet.
**Sechs tatsächliche Eintritte und sechs Rückkehren sind bestätigt:**
| Bot | Besuch |
| --- | --- |
| Elaansa, GUID 110 | Verlies, Karte 34, Instanz 1 |
| Hilddis, GUID 56 | Verlies, Karte 34, Instanz 3 |
| Hildda 64, Nimbin 74, Noranda 53 | gemeinsam Festung der Stürme, Karte 550, Instanz 2 |
| Brynli, GUID 84 | Festung der Stürme, Karte 550, Instanz 4 |
Alle sechs Eintritte verwendeten den normalen Modus. Ein heroischer Eintritt
wurde in diesem Lauf nicht bestätigt. Fünf Rückkehren erfolgten in der geplanten
Austrittsphase ab 03:55 Uhr; Brynli kehrte bereits früher zurück. Die Rückkehrlogs
weisen HP-Verluste von 1, 37, 46, 32, 10 und 1 Prozent aus, jeweils innerhalb der
vereinbarten Grenze. Danach folgte die Rastphase.
Elaansas ursprünglicher Folgeslot »Verlies« blieb trotz des zuvor kopierten
Deadmines-Ziels erhalten. Reine Botgruppen besuchten die Instanzen weiterhin
performativ; dies war keine Abnahme von Kampfrollen oder Bossmechaniken.
51 Transportübergänge wurden beendet, davon 43 mit Testteilnehmern. Das sind
Fahrten, nicht 51 unterschiedliche Bots. Die neue Zeppelinverbindung wurde
viermal von Orgrimmar nach Warsong und dreimal zurück vollständig durchlaufen.
Für die Kraken gab es drei erfolgreiche Ausstiege in Valiance sowie Fehlerfälle.
Auch Tiefenbahn und Bravery wurden erfolgreich benutzt.
Eine Stichprobe von elf gespeicherten Bots in den verpflichtenden Flugregionen
zeigte durchgehend Reiten 225, Lizenz 90267, Kaltwetterflug 54197 und drei gelernte
Flugreittiere. Eine unqualifizierte Belegung wurde nicht gefunden.
Die höchste gemessene RSS-Belegung betrug etwa 7,521 GiB. Die CPU-Prozessanzeige
lag meist bei rund einem bis 1,3 Kernen im Zeitmittel. Das ist keine Messung der
maximalen Ticklatenz und keine Prognose für den Produktionsserver.
## Während der Beobachtung behoben
Die frühe Intentkopie wurde nach einem gescheiterten Reiseversuch ständig erneut
angewendet. Dadurch überschrieb sie den normalen Navigationsfallback und plante
das ursprüngliche Instanzziel immer wieder neu. Commit `77648c6b53` wendet die
Kopie nur beim Übergang an. Danach gelten das wirksame Fallbackziel und dessen
Vererbung an die Gruppe. Ein Gruppenaustritt setzt den Bot ebenfalls nicht zurück.
Regressionstests prüfen wiederholte Updates, die Vererbung des Fallbackziels und
das Verlassen der Gruppe. Die 1.693 rohen EARLY-Meldungen stammen aus dieser
Wiederholung vor der Korrektur; sie sind keine 1.693 echten Aufbrüche. Nach dem
Einspielen trat die Schleife nicht erneut auf.
## Offene Befunde
1. **Gruppen verlieren beim Neustart gildenlose Mitglieder.** Der Core lud 25
Gruppendefinitionen und 70 Mitgliedszeilen. `Group::LoadMemberFromDB` deutet
einen fehlgeschlagenen Aufruf von `GetPlayerGuildIdByGUID` als fehlenden
Charakter und löscht das Mitglied. Die Cachefunktion liefert aber auch für
einen vorhandenen Charakter ohne Gilde `false`. Die Gruppen bildeten sich
anschließend neu. Die frühere Aussage, die Mitgliedschaften seien erhalten
geblieben, ist damit korrigiert. Diese native Ursache betrifft auch Spieler
ohne Gilde und wurde während des laufenden Tests nicht umgebaut.
2. **Unterbrochener Schiffsausstieg kann hängen bleiben.** Tholgar 92 und Lillina
118 erzeugten wiederholte Meldungen »unsafe gap over 8 yards«. Tholgar begann
um 03:08:32 Uhr den Ausstieg in Valiance. Um 03:09:36 Uhr fuhr das Schiff mit
ihm auf dem Übergangsweg wieder ab. Die Wiederaufnahme versucht danach den
Endstand, der von seiner Zwischenposition über acht Yards entfernt liegt.
Die Aufnahme selbst ist kontinuierlich: größter Abstand in Sturmwind 4,043,
in Valiance 3,013 Yards. Keine Aufnahme wurde verändert. Die 12.620 Meldungen
sind Wiederholungen dieser zwei Bots, keine 12.620 unterschiedlichen Fahrten.
3. **Die Anreise bleibt die größte Begrenzung.** Nur 6 von 92 Teilnehmern haben
einen bestätigten Eintritt. Viele andere reisen noch oder planen wiederholt
neu. Es gab insgesamt 7.372 Intentfallbacks, teilweise durch den inzwischen
korrigierten Fehler verzerrt. Das Navigationlog enthält 3.884 Recovery-Starts,
558 Recovery-Fehlschläge und 1.276 Edge-Fehlschläge. Das sind keine voneinander
unabhängigen Fehlerfälle. Beispiele sind abgewiesene Flugstarts aus Gasthäusern,
fehlende sichere Landepunkte und unvollständige Bodenanschlüsse.
4. **Die Routenwahl berücksichtigt eine Portalbedingung nicht.** Makuran 141 auf
Stufe 52 versucht das Portal von Orgrimmar zu den Verwüsteten Landen zu nutzen
(Spawn 211298, GO 195142, Spell 65729). Die native Spellbedingung verlangt
Stufe 58; sechs Versuche scheiterten. Das Portal erzwingt seine Bedingung
korrekt. Der Planer muss sie vor der Auswahl berücksichtigen.
5. **Ein Solo-Raidversuch wurde abgewiesen.** Braneven 121 auf Stufe 85 scheiterte
am Thron der Vier Winde, Karte 754, Entry 6672, und rastete anschließend. Er
war nach einem Austritt mit Grund `leader-afk` gruppenlos. Die native
Gruppenzulassung muss genauer geprüft werden. Es wurden keine Bedingungen
entfernt oder pauschalen Freischaltungen vorgenommen.
6. Es gab 21 nichtfatale kurze Spline-Warnungen mit NPC- und Playerbotbezug. Bei
GUID 126 wurden Geistfreigabe und Friedhof-Fallbackbelebung beobachtet, keine
Kettentodserie. 38 Gruppenverlassen-Meldungen hatten den Grund `leader-afk`;
bei Bots kann dies eine Folge steckengebliebener Leadernavigation sein.
## Nachweise und Auswertungsgrenzen
Sichere Messdaten liegen unter `checkpoints/2026-10-30-group-observation/`.
`summary.json` enthält Eintritte, Rückkehren, Transportankünfte, Fehlerbeispiele
und Messwerte; `findings.json` die gezielten Diagnosen. Vollständige Rohdaten
bleiben unter `/tmp/vcore-group-observation-20261030/`. Der Konfigurationsbackup
enthält Zugangsdaten und wurde nicht ins Repository kopiert.
Die Navigationlogs rotieren bei 128 MiB. Die Auswertung umfasst die Archive von
02:32:32 und 03:50:52 Uhr sowie die aktive Datei, jeweils auf den Zeitraum von
02:20:56 bis 04:00 Uhr gefiltert. Transportmeldungen stehen im Navigationlog.
`reload config` um 04:00 Uhr öffnete `Server.log` im Schreibmodus neu. Deshalb
stammen die Eintritts- und Rückkehrnachweise aus dem auf das Beobachtungsende
begrenzten Konsolenmitschnitt. Die Prozesslücke um 02:20:56 Uhr war die anfängliche
Startrace, jene um 02:37 Uhr die angekündigte Wartung, kein ungeplanter Ausfall.
+85
View File
@@ -0,0 +1,85 @@
# Reise- und Gruppenfixes vom 30.10.2026
## Betriebsgrenze
Der Nutzer zeichnet am laufenden Testserver Routen auf. Daher ausschließlich
Quellcode, lokaler Build mit `-j10` und isolierte Tests; **keine Installation,
kein Neustart und keine Änderungen an aufgezeichneten Routen oder Live-Daten**.
Die native Instanz-/Raid-Zulassung bleibt erhalten.
## Änderungen
- Gruppenwiederherstellung: Ein vorhandener Charakter ohne Gilde ist weiterhin
ein gültiges Gruppenmitglied. Nur nicht vorhandene Charaktere werden entfernt;
Rollen, Untergruppe und Mitgliedsflags werden regulär wiederhergestellt.
- Portalplanung: Ein generischer read-only ConditionMgr-Zugriff bewertet die
bereits geladenen Spielerbedingungen für den jeweiligen nativen Portalzauber.
Level, Quests, Gegenstände und weitere Spieleranforderungen einschließlich
AND/OR-Gruppen, Referenzen und negativer Bedingungen werden berücksichtigt.
Die Spielerrolle im nativen Cast bestimmt den geprüften ConditionTarget.
Orts-/Kampf-/Skriptbedingungen bleiben bis zur tatsächlichen Benutzung offen.
Diese dynamische Prüfung erfolgt vor dem Cache der statischen Gebietserlaubnis
und nochmals vor der Benutzung. Keine festen Ersatz-Level, entfernten
Bedingungen oder künstlichen Portalteleports.
- Deckrückkehr: Aufgezeichnete Ausstiege benötigen kein optionales freies Bordnetz.
Auch Kraken und Zeppeline können eine unterbrochene Rampenposition sicher zum
aufgezeichneten Stand korrigieren. Weiterhin nur bei stehendem Transport,
echter Passagierbindung und genügend verbleibender Haltezeit.
- Transportzustand: Ein Fehler bei noch angebundenem Passagier behält die Fahrt
und deren Ziel bei, statt sie pro Tick als neue Fahrt zu übernehmen. Kurze
Wiederholungsverzögerung; sichere Ausstiegsversuche am nächsten passenden Halt.
Die Ausstiegsreserve berücksichtigt auch die aktuelle Steuerungstaktung.
- Verlust beim Ein-/Aussteigen: Der erwartete Passagierzustand wird aus dem
tatsächlichen Fortschritt der aufgezeichneten Übergangspunkte abgeleitet.
Ein beabsichtigtes Erreichen des Landpunkts löst keine Bergung aus; tatsächlicher
Verlust kann die bestehende Rettung zum aufgezeichneten Abfahrtsanleger nutzen.
- Flugstart: Ein unterstützter Bodenstand in einem Gebäude führt zunächst zur
Suche nach einem erreichbaren offenen Abflugpunkt. Bis 200 Yards Suchradius,
vollständiger unverdächtiger MMAP-Bodenweg bis 600 Yards, native Außenbereichs-
und Kollisionsprüfung sowie Gebietskatalog. Erst dort native Flugmount-Auswahl
und Cast. Reitfertigkeit und regionale Flugberechtigungen bleiben erforderlich.
- Landung: Mehrere Ringe bis 180 Yards, vollständiger MMAP-Anschluss bis 600 Yards
zum Ziel. Ein Höhenunterschied allein schließt einen sicheren Bodenanschluss
nicht aus; Wasser-, Kollisions-, Gebiets- und native Pfadprüfungen bleiben.
- Kartengrenzen bleiben echte Portal-/Schiffs-/Zeppelinabschnitte. Flug ersetzt
weder einen Kartenübergang noch eine native Zugangsvoraussetzung.
## Temporäre Diagnose
`ClientlessTravelTelemetry.h` enthält den ausdrücklichen Vermerk
`TEMPORARY_ADVENTURE_TRAVEL_TELEMETRY` / vor Entwicklungsabschluss entfernen.
`TEMP_TRAVEL` protokolliert ausschließlich aktive Instanz-/Raidreisen: Reise-ID,
Bot, Gruppe, Anführer, Ziel, Route/Abschnitte, Transportphasen, Portalankunft,
Flugzustand und Berechtigungen, Start-/Landekandidaten und Ablehnungszähler,
Fortschritt sowie Eingang und das getrennte Ergebnis der nativen Zulassung.
Fortschritt höchstens alle 20 Sekunden, gleiche Ereignisdetails innerhalb einer
Minute unterdrückt, insgesamt höchstens 40 Zeilen je Bot/Minute. Auch wechselnde
Fallback-Ziele setzen dieses Minutenbudget nicht zurück. Offline oder anderer
Intent entfernt die Erfassung. Das Verhalten hängt nicht von der Diagnose ab.
Vor Entwicklungsabschluss diese Instrumentierung und ihre Aufrufstellen entfernen.
## Prüfung
109 Clientless-Testprogramme erfolgreich (vollständiger Lauf), einschließlich
neuer produktiver Methoden-Harnesses für gildenlose Gruppen, Portalbedingungen,
alternative Landeflächen und die begrenzte Telemetrie. Transport-/Abflugtests
wurden um unterbrochene Fahrten, Schiffe ohne Bordnetz, Verluste beim Ein- und
Aussteigen und die Bodenannäherung aus einem Gebäude erweitert.
Die Harnesses verwenden deterministische Welt-/Terrain-Doubles. Sie bestätigen
Entscheidungen und Zustandsübergänge, ersetzen aber keine Prüfung mit echten
VMAP/MMAP-Dateien und fahrenden Schiffen im laufenden Spiel. Durchgängige Reisen
zu allen Instanzzielen und das Verhalten der Gruppenmitglieder müssen nach der
später freigegebenen Installation mit der neuen Telemetrie beobachtet werden.
Build: bestehende Debug/Ninja-Konfiguration und Installationspräfix unverändert.
Erster `-j10`-Lauf durch getöteten Compilerprozess unter Speicherlast abgebrochen;
Wiederholung ebenfalls mit `-j10`. Abschließender `-j10`-Build erfolgreich (exit 0), inklusive der letzten
Bodenstützprüfung; Log `/tmp/vcore-travel-fixes-build-final.log`.
Rohlogs: `/tmp/vcore-travel-fixes-build*.log`, Testlogs und Ergebnisliste unter
`/tmp/vcore-travel-fixes-tests/`. Keine Gameplay-Abnahme behauptet.
Der vorherige Laufzeitabsturz hat keinen erhaltenen vollständigen Stacktrace;
diese Änderungen sind kein Nachweis, dass dessen Ursache behoben ist.
@@ -0,0 +1,132 @@
# Ursachenanalyse: Raidtest 01.11.2026, 22/23 Uhr
Nur Diagnose; kein Produktionscode, Botplan, Loader oder Serverzustand geändert.
Branch feature/clientless-player-core; vorhandene Checkpoints/WIP erhalten.
## 1. Bestätigter Aufbruchblocker: falsche Zielvariante
Vorbereitung verwendete instance_visit_at_6354. BuildInstanceVariants in
AdventureLocationMgr.cpp bevorzugt bei Raids mit vorhandener 25er-Normalvariante
Difficulty1 für den Basisschlüssel. Difficulty0 wird als _d0 erzeugt.
Native MapDifficulty.dbc für Karte671: modes0/1/2/3 haben10/25/10/25 Plätze.
Dies wurde direkt aus der installierten DBC gelesen, nicht aus Namen geraten.
Die passende 10er-Normalvariante ist instance_visit_at_6354_d0; native Eligibility
für Renren bestätigt map671/content1/own1/invitation1 für beide Schlüssel.
Zusätzliche Inkonsistenz: InstanceCapacity=min(20,maxPlayers) begrenzt die 25er-
Variante auf20, während Name und Difficulty bei25 bleiben. GroupPlan übernimmt
InstanceCapacity. Complete verlangt exakt Capacity Mitglieder plus Rollen:
capacity20 benötigt2T/4H/14D; tatsächlich sind10Bots mit2T/2H/6D in Gruppe2.
Complete ist somit false, CheckFullGroup aktiviert keinen frühen Abreisehandoff.
Um23:00 blockiert Begin vor ResolveInstance/Queue(travel_to_node) in WaitingGroup.
Der korrekte Eingangspfad wird folglich gar nicht angefordert. Aktuell alle10
im selben raid-Intent/WaitingGroup. Kein Beleg für ein Problem der Bastionroute.
Der falsche Basisschlüssel war ein Fehler der Testvorbereitung. Die20/25-
Inkonsistenz ist ein separater Implementierungsfehler. Ein bloßer Teleport oder
Reisereset kann beides nicht beheben. Der vorhandene Variantentest erwartet
explizit20 für25er-Modi; Tests decken diese fehlerhafte Semantik daher nicht auf.
Keine Tests/Builds in dieser reinen Diagnose gestartet.
## 2. Bestätigte Zerstreuungskette: Reiseablehnung und ungebundener Fallback
Historisches rotiertes Navigationlog:22:00:02 guid159 bei
(-8864.300,682.378,97.943), ZielAllison(-8867.790,673.673,97.986).
NAV_PLAN calculated1/complete1/type0x1, Weg9.38yd,4Punkte,maxZDelta0.03,
finalDistance0.08 und reason ok. NAV_START trotzdem PathRejected.
Fünf Recoveryversuche zu anderen Graphankern schlagen ebenfalls fehl;
Flugfallback kann den Startplatz nicht erreichen.22:00:04 RECOVERY_FAILED und
INTENT_ARRIVAL_REJECT beim vereinbarten Treffpunkt.
Fallback schützt einen aktiven Instanzbesuch sowie Botgruppenmitglieder mit
GroupOverride, aber nicht den Treffpunkt einer Gruppenbildung beim Leader.
Er durchsucht ALLE Allowed-Locations und priorisiert andere Maps lediglich mit
Distanzaufschlag100000. Es gibt keine Bindung an vereinbarten Treffpunkt,
Sturmwind oder aktuelle Hauptstadt. Logs zeigen Allison->GildedRose->weitere
SW-Orte->Eisenschmiede->andere Hauptstädte, insgesamt37 Ersatzwahlen beim Leader.
AdoptGroup übernimmt jeweils den Laufzeitzustand des Leaders. Mitglieder
beenden laufende Taxi/Flug/Transport-Schritte vor dem Wechsel; deshalb verfolgen
sie zeitversetzt verschiedene alte Ziele und verteilen sich über Kontinente.
Die genaue geometrische Ursache der ERSTEN PathRejected-Ablehnung ist offen.
MMAP hat einen vollständigen Weg geliefert. Nachfolgende Ausführungsprüfungen
umfassen AllowsSegment und den für Gruppen installierten GroundPathValidator
(Höhenprobe/Steigung/LOS). Beide können ohne präzises NAV_REJECT-Log abbrechen.
Die vorhandenen Logs rechtfertigen keine eindeutige Schuldzuweisung an eine
bestimmte Höhen-/LOS-Probe. Zur Behebung diesen Ort gezielt reproduzieren und
Ablehnungszweig/Koordinaten/erwartete und gemessene Höhe diagnostizieren; keine
pauschale Abschaltung von Sicherheitsprüfungen.
## 3. Zwei beim Stundenwechsel verzögerte Mitglieder
Um23:00 warteten164/165 noch auf eine Leaderroute für die alte Gruppenbildung.
Queue hängt Botmitgliedern route_source an; der Executor wartet bis15Sekunden
auf eine geteilte Route, danach erfolgt eigenständige Anschlussplanung.
SetWanted fordert während aktiver Reise StopAtNode an; Switching wartet auf
Busy=false und führt gegebenenfalls einen Graphknoten-Handover aus.
Nachfolgende native Diagnosen: beide travel_to_node stormwind_tradecenter
Completed/Arrived und raid/WaitingGroup. Die anfängliche Aussage eines dauerhaften
Intent-Hängers ist nicht belegt; das beobachtete Warten war vorübergehend.
## Gezielte Korrekturen für einen Folgetest
- Testziel explizit instance_visit_at_6354_d0; Difficulty0/capacity10/2T2H6D
zusammen mit nativer Gruppen-Difficulty und Complete überprüfen.
- 25er-Modi nicht als20er-Gruppe für einen25er-Raid vollständig melden;
konsistente tatsächliche Kapazität oder ausdrückliche Nichtunterstützung.
- Formationstreffpunkt beim Leader stabil halten; Fehlschlag führt zu lokaler
Wiederholung/Diagnose, nicht automatischem Hauptstadtwechsel.
- Anfangsablehnung in GoldenerRose mit genauer Ausführungsdiagnostik reproduzieren.
- Regressionen für vollständige10er-Gruppe/früheAbreise, Treffpunktbindung bei
Reisefehler, Stundenwechsel mit ausstehender geteilter Route und20/25-Konsistenz.
Belege: checkpoints/2026-11-01-raid-2200/initial-navigation-failure.log,
investigation-console.log, reset-console.log und verified-db.tsv. Server.log
enthält die Formation-Fallbacks und Mergefolge. Gameplay/Instanzanreise unbestätigt.
## Zusatz: drei Nutzerfragen zu Portalen und Kolonne, ca.23:17–23:21
1. Eisenschmiede: Portalspawn217855/GO195141/Spell65728 ist gebunden an
edge1827 portal_use, enabled1/cost1, vonportal_go_217855_source nach
portal_go_217855_target (VerwüsteteLande). Renren erreichte Quelle tatsächlich;
23:09:48 folgte laut Log free_flight direkt zurBastion statt portal_use.
Start wurde verworfen: no reachable open takeoff point, outdoor0,
Diagnosecounter surface/indoor/area/column/mmap/movement=0/0/0/1/63/0.
Danach Recovery über virtuelleStraße wird vom safetyAdapter abgelehnt.
Also Portalbenutzung in dieser Folge NICHT ausgeführt, keine nachgewiesene
native Portalzugangsverweigerung. Replan anQuelle: start->free_flight wiederholt.
Plannerportalguard gilt nur isPortalSource && previous enthältCurrentState;
Quellknoten alsStartwurzel fällt dadurch aus demGuard. Ein interaktivesPortal
teleportiert anders als einAreaTrigger nicht beim bloßenAnlaufen.
2. Sturmwind-Schattenhochland: spawn200627/GO207694/Spell85545, edge1801,
Quelle(-8186.15,413.729,116.75), Ziel(-4890.07,-6626.74,10.2846), map0.
Enabled1/cost1. DB zeigt KEINE eingehende festeKante zurQuelle. Zurückliegender
Livebeleg Elanora16:57:17 benutztPortal nativ mit arrivalError0; Voraussetzungen
nicht pauschal alsGrund behaupten. Level80+-AdventureUnlock existiert.
Aktuelle Route zumBastioneingang: SWtradecenter->taxi2->taxi6->IFportalQuelle,
danach freieFlugplanung/Recovery. Nur dynamischerAnschluss kannSWPortal
verbinden (allgemeineBrücken max200yd, Flugkandidaten16/Plan und6/Ursprung).
Offline geometrische Kandidatenrangberechnung OHNEArea/Prereq/FlightFilter:
SWportalQuelle steht vonSWtradecenter sowietaxi2 sogar aufRang1 der
Makrokandidaten. Damit ist reineDistanzsortierung NICHT alsAblehnungsgrund
belegt. Es fehlen personenbezogene Logs zu Kandidatenbudget/Estimate-Ablehnung
und Folgeverbindung abPortalziel. Exakten verlorenenRoutenvergleich erst mit
gezieltemPlantrace behaupten. Keine Runtimeplanung/Teleport zuTest erzwungen.
3. Kolonne: AdventureInteractionMgr kehrt beiBotLed vorGroupTravelMgr::Follow
zurück. Botgruppenmitglieder adoptierenExecutorroute (AdoptRoute), teilen also
Makroziel/Route, nicht automatisch individuellePositionen. Die allgemeine
Formation()/Follow-Steuerung wird dabei nicht verwendet. AdaptRoad läuft
nur imStartRecordedEdgePath, nicht für lokaleMMAP-Zuläufe/local_bridge/start.
AdaptRoad erhält den gemeinsamenEndpunkt; wennSeitversatz unsicher ist, zweiter
Versuch mitside0. Damit kann selbstStraßenadapter aufgleicheLinie zurückfallen.
NativeTaxiflüge haben identischen nativenPfad ohne separateKolonnenversätze.
EigeneFreeFlight hat sharedTrail mit3.5s+slot*0.6s Startverzögerung nur wenn
passenderLeaderflightRecord mit gleichemZiel vorhanden. Kein allgemeiner
Abstandsregler über alleReisemodi; keinePortalWarteaufstellung.
Nutzerbeobachtung desÜbereinanderlaufens passt zu diesen Integrationslücken;
keinBeleg, dass jedeFormationkomponente deaktiviert wäre.
Belege Zusatz: ironforge-portal-route-evidence.log; Sourceprüfung der erwähnten
Methoden und nur lesendeWorldDB-Abfragen. KeineBot-/Codeänderung/Build/Restart.
@@ -0,0 +1,72 @@
# Testauswertung: 02.11.2026, Gruppenbildung 06:00 / Instanzen 07:00
Erstellt: 02.11.2026 08:00:09 CET. Geplanter Auswertungszeitpunkt: 08:00 UTC+01:00.
- Geprüfte Testbots: 92. Unter Stufe 15 ausgenommen: 18.
- Feste Treffpunkte: Allianz Goldene Rose in Sturmwind; Horde Broken Tusk in Orgrimmar.
- Status-Snapshots: 22; ausgewertete eindeutige Logereignisse: 16592.
- Erste erfasste Statusstichprobe: 2026-11-02T06:13:38.615403+01:00; frühere Ereignisse sind nicht vollständig erfasst.
- Bots mit belegter Ankunft am festgelegten Formationstreffpunkt: 40.
- Bots mit protokolliertem tatsächlichem Instanzbeitritt: 0.
- Snapshots ohne laufenden Testserver: 0.
## Bekannte Zehnergruppe: Bastion des Zwielichts, normal
- Maximal gemeinsam in einer nativen Gruppe beobachtet: 9/10.
- Alle zehn gemeinsam nachgewiesen: nein; durch die Stichproben nicht nachgewiesen.
- Bots mit Instanzplanung: 9/10; mit tatsächlichem Beitritt zu Karte 671 im Modus 0: 0/10.
| GUID | Name | Rolle | Bastion betreten | Letzter nativer Status |
|---:|---|---|---|---|
| 159 | Renren | damage | nicht nachgewiesen | raid / instance_visit_at_6354_d0 / instance visit waiting for safe native state |
| 160 | Marndra | damage | nicht nachgewiesen | raid / instance_visit_at_6354_d0 / travelling to instance_visit_at_6354_d0 |
| 161 | Marnda | healer | nicht nachgewiesen | raid / instance_visit_at_6354_d0 / travelling to instance_visit_at_6354_d0 |
| 162 | Aruendas | healer | nicht nachgewiesen | raid / instance_visit_at_6354_d0 / travelling to instance_visit_at_6354_d0 |
| 163 | Winienwi | damage | nicht nachgewiesen | raid / instance_visit_at_6354_d0 / travelling to instance_visit_at_6354_d0 |
| 164 | Taliaarnora | damage | nicht nachgewiesen | raid / instance_visit_at_6354_d0 / travelling to instance_visit_at_6354_d0 |
| 165 | Brynda | damage | nicht nachgewiesen | raid / instance_visit_at_6354_d0 / travelling to instance_visit_at_6354_d0 |
| 166 | Corric | damage | nicht nachgewiesen | raid / instance_visit_at_6354_d0 / waiting for a suitable group / native browser queue |
| 167 | Ragnorli | tank | nicht nachgewiesen | raid / instance_visit_at_6354_d0 / travelling to instance_visit_at_6354_d0 |
| 176 | Ashaelri | tank | nicht nachgewiesen | raid / instance_visit_at_6354_d0 / travelling to instance_visit_at_6354_d0 |
## Übernahme der Anführerroute
- Protokollierte Routenübernahmen mit Journey-Seed: 78.
- Gleicher zuletzt beobachteter Anführer-Seed: 72; abweichend: 4; Anführer-Seed im Beobachtungsfenster nicht bekannt: 2.
- Ein abweichender letzter Seed erfordert Prüfung der konkreten Reise und des Zeitpunkts; diese Zählung allein beweist keinen Fehler.
## Fehler und Reiseereignisse
- GROUP_MERGE: 28.
- GROUP_MANAGER_RUN: 9.
- GROUP_EARLY_DEPART: 15.
- PORTAL_USE_START: 36.
- RECOVERY_FAILED: 117.
- INSTANCE_TRAVEL_RETRY: 11.
- INSTANCE_ENTRY_DENIED: 0.
Häufigste protokollierte Fehler:
- RECOVERY_FAILED: route-local-PathRejected (26 Ereignisse).
- RECOVERY_FAILED: free-flight-unavailable: safely returned after abort: no safe bounded flight corridor; holding position mounted (15 Ereignisse).
- RECOVERY_FAILED: free-flight-unavailable: departure-unavailable: ground approach interrupted (12 Ereignisse).
- RECOVERY_FAILED: free-flight-unavailable: no free solid landing with a validated target approach (12 Ereignisse).
- INSTANCE_TRAVEL_RETRY: siehe Rohlog (11 Ereignisse).
- RECOVERY_FAILED: deferred-start-movement-failed (9 Ereignisse).
- RECOVERY_FAILED: deferred-start-no-progress (7 Ereignisse).
- RECOVERY_FAILED: final-local-PathRejected (6 Ereignisse).
- RECOVERY_FAILED: deferred-start-endpoint-replan (6 Ereignisse).
- RECOVERY_FAILED: wander-ended-Arrived (4 Ereignisse).
- RECOVERY_FAILED: deferred-start-attempts-exhausted (4 Ereignisse).
- RECOVERY_FAILED: recorded group road rejected by safety adapter (4 Ereignisse).
## Grenzen der Auswertung
- Ausgewertet werden technische Zustände und native Logereignisse; keine visuelle Gameplay-Abnahme und keine Bestätigung von Bosskämpfen.
- Ein Reiseplan ist kein Ankunftsnachweis. Fehlende Ereignisse werden als nicht nachgewiesen ausgewiesen.
- Die Gruppenmitgliedschaft und Zustände werden alle fünf Minuten stichprobenartig gelesen; kurzlebige Zwischenzustände können fehlen.
- Charakterpositionen aus DB-Snapshots sind zuletzt gespeicherte Positionen. Live-Reisepositionen stehen in den TEMP_TRAVEL-Ereignissen.
- Der Beobachter repariert, teleportiert oder startet den Server nicht. Ausfälle werden dokumentiert.
- Letzter Snapshot: 2026-11-02T07:59:25.206244+01:00.
Rohdaten: doc/clientless/checkpoints/2026-11-02-0600-group-test/ (manifest.json, snapshots.jsonl, events.jsonl, snapshot-*.log).
File diff suppressed because it is too large. Load diff
+109
View File
@@ -0,0 +1,109 @@
# Abenteuer: Erkundung und Untersuchung
Technischer Intent: `adventure`. Diese Ausbaustufe ergänzt den bisherigen
Aufenthalt durch zusammenhängende Erkundungswege und beobachtende Szenen.
Echte Monsterjagd, Flucht und Todesbewältigung bleiben spätere Ausbaustufen.
Vorhaben, Ortsauswahl und tatsächliche Mikroaktion bleiben getrennt: Die
Location-/Intent-Zuordnung entscheidet, ob ein Ort zum Abenteuer passt;
Umgebung und Erreichbarkeit bestimmen die dort möglichen Aktionen.
Migration: `sql/custom/world/2026_10_27_04_adventure_exploration.sql`.
## Aktionen
| Schlüssel | Darstellung |
|---|---|
| `adventure_explore` | Einen zusammenhängenden nativen MMAP-Weg erkunden und zurückkehren. |
| `adventure_patrol` | Einen kürzeren Wegabschnitt abschreiten; dieselbe geprüfte Routenfähigkeit. |
| `adventure_view` | Im Außenbereich die Umgebung von der aktuellen Position aus betrachten. |
| `adventure_inspect` | Ein tatsächlich vorhandenes erreichbares Objekt aufsuchen und betrachten. |
| `adventure_inspect_detail` | Nach der Ankunft genauer betrachten, eine Fragegeste zeigen und auf das Objekt weisen. |
| `adventure_point` | Zu einem passenden Objekt gehen und darauf zeigen. |
| `adventure_scout` | Innehalten, nach links und rechts Ausschau halten. |
| `adventure_equipment` | Eine kurze Ausrüstungsprüfung mit nativer Benutzungs-/Vorbereitungsgeste darstellen. Keine Inventaränderung. |
| `adventure_entrance` | Am gewählten Ruinen-, Höhlen-/Minen- oder Dungeon-Ort umsehen und Vorbereitung darstellen. Kein Instanzeintritt. |
| `adventure_comment` | Selten einem tatsächlich anwesenden freundlichen Gegenüber eine Entdeckung kommentieren. |
Bestehende Fähigkeiten liefern Gespräche mit freundlichen NPCs, native
Sitzplätze, Essen, Trinken und Feuerrast. Nach einem Erkundungsweg erhalten
verfügbare Rastaktionen bei der folgenden Auswahl mehr Gewicht. Die
bestehenden Verbote für neue Feuer in Gebäuden und Städten gelten weiter.
## Ausführung und Grenzen
Die Fußwege verwenden den bereits für Spaziergänge geprüften lokalen
Routenplaner und Bewegungsexecutor: genau einen vollständigen MMAP-Korridor
wählen, Kontrollpunkte folgen, am Wendepunkt pausieren und dieselben Punkte
zurückverfolgen. Es gibt keine zufälligen einzelnen Nahziele und keine neuen
Reit-/Flugtests. Der Standard der alten winzigen Zufallsbewegung `explore`
wird nur für Abenteuer deaktiviert; angepasste Gewichte und ihre Verwendungen
bei anderen Intents bleiben erhalten.
Wegpunkte bleiben innerhalb des Aufenthaltsgebiets beziehungsweise der Zone.
Es gelten native vollständige Pfade, plausible Bodenhöhen und der begrenzte
Aufenthaltsradius. Zeitende veranlasst einen Rückweg entlang bereits erreichter
Punkte. Fehlgeschlagene Ankünfte werden niemals als Erfolg ausgegeben.
Objekte werden im tatsächlich geladenen Umfeld gesucht (60 Yards), nicht aus
festen Objekt-IDs oder durch erzeugte Test-Spawns. Sichtbare generische Props,
Schilder, Bücher und Goober-Objekte sind zulässig. Kisten/Ressourcen, Fallen,
Türen, Knöpfe, Transportmittel und Möbel werden hierfür nicht gewählt.
Spawnzustand, Phase, Sichtbarkeit, Sichtlinie und erreichbarer Gesprächs-/
Betrachtungspunkt werden geprüft. Ein nicht erreichbares Objekt wird durch
einen weiteren echten Kandidaten ersetzt; gibt es keinen, startet die Szene
nicht. Verschwundene oder nicht mehr sichtbare Ziele beenden den Ablauf.
Diese Fähigkeit ruft **keine Objektbenutzung, keine Beuteerzeugung und keine
Quest-/Gegenstandsinteraktion** auf. Die verwendeten Gesten erzeugen weder
Objekte noch Zauberwirkungen. Ausrüstungsprüfung ist eine Darstellung.
Umsehen verwendet zwei feste Blickrichtungen relativ zur Startausrichtung,
statt den Bot bei jedem Planungsschritt weiterzudrehen. Vorbereitung wird
über die vorhandene Kategorie des Aufenthaltsorts freigegeben; eine genaue
geometrische Erkennung einzelner Höhleneingänge ist nicht enthalten.
Aussichtsszenen garantieren keine besondere Landschaftsqualität. Objekte,
die nur Teil von WMO-/Karten-Geometrie sind, haben keine separate GO-GUID;
sie werden durch ortsbezogenes Umsehen statt Objektinteraktion dargestellt.
Kampf unterbricht die Tätigkeit über die bestehende Sicherheitsbehandlung.
## Location-Zuordnung
Die editierbaren `vcore_adventure_location_intent`-Einträge sind maßgeblich.
Der bisherige Wirtschaften-Fallback im Code wird in ausdrückliche bestehende
Kategorie-Zuordnungen überführt. Bearbeitete Gewichte einschließlich Null
werden erhalten. Neue Kategorien benötigen ihre eigene Zuordnung. Tavernen
erhalten eine geringe Freizeitgewichtung; Sitzaktionen sind weiterhin nur
bei einer tatsächlich geeigneten erreichbaren Sitzgelegenheit verfügbar.
Der Tagesplan wählt Intents weiterhin unabhängig vom vorhandenen Ortskatalog.
## Prüfung
Automatisierte Tests führen produktive Objektfilter, Verfügbarkeitsprüfungen
und Gestensequenzen aus: Ankunft vor Gesten, verschwundene/unsichtbare Ziele,
keine Objektbenutzung, zwei feste Blickrichtungen sowie korrekte Wiederverwendung
der Bodenrouten. Der SQL-Test prüft Referenzen, ausdrückliche Kategoriezuordnung,
Default-Upgrade und Erhalt bearbeiteter Gewichte bei Wiederholung.
Eine erfolgreiche Kompilierung ersetzt die visuelle Ingame-Abnahme nicht.
## Technische Live-Prüfung am 27.10.2026
Build mit `-j10`, Installation und frischer Testserver-Neustart mit Ready-
Meldung und Port 8085 erfolgreich. Alle 32 Clientless-Testskripte bestanden.
Die temporäre Login-Vorgabe wurde nach dem Laden exakt zurückgesetzt.
Am gewöhnlichen importierten Sturmwind-Ort `poi_tele_954` wurden geprüft:
- Automatisch ausgewählte Untersuchung des tatsächlichen Apothekenschilds
`Pestle's Apothecary` (GO 197117), native Ankunft und alle Betrachtungsgesten.
- Detaillierte Untersuchung des Schilds `Weller's Arsenal` (GO 197121),
native Ankunft sowie Blick-, Frage-, Zeige- und Wartephase. Ein anfangs
manuell unterbrochener Durchlauf zählt nicht als Abschluss; der danach
neu gestartete Durchlauf endete nach sämtlichen Gesten regulär.
- Zusammenhängender Erkundungsweg: Ursprung `(-8802.90, 628.57, 94.46)`,
Wendepunkt `(-8843.31, 559.53, 95.62)`, Abstand 80,01 Yards. Alle zehn
Hin-/Rückwegankünfte und die tatsächliche Rückkehr wurden bestätigt.
- Danach automatisch ausgewählte Trinkpause und Ausschauhalten.
Das ist eine technische Live-Prüfung in Sturmwind. Eine visuelle Abnahme
durch den Nutzer, Erkundung in gefährlichen offenen Gebieten und die
Vorbereitung an einem tatsächlichen Höhlen-/Dungeonort stehen noch aus.
+158
View File
@@ -0,0 +1,158 @@
# Veränderbarer Gebietskatalog der AdventureBots
Der Katalog liegt in der **World-Datenbank**, nicht in C++ oder in den Nodes.
Migration: `sql/custom/world/2026_10_29_02_adventure_area_catalog.sql`.
Sie setzt die bestehende Migration `2026_10_29_00_adventure_population.sql`
mit `vcore_adventure_zone` voraus. Erneutes Einspielen erhält vorhandene Einträge.
## Stand und Geltungsbereich
Die Regeln sind in Tagesplanung, TravelGraph und Bewegungsausführung angebunden.
`clientless adventure reload` lädt Gebiets- und Nodefreigaben sowie Location- und
TravelGraph-Kataloge im laufenden Betrieb neu. Spätere Änderungen benötigen
keinen Build, keine Installation und keinen Neustart. Ungültige Gebietskataloge
(z.B. Elternzyklen oder unzulässige Masken) werden vor Austausch des aktiven
Snapshots abgewiesen.
Neue Tagespläne wählen nur zulässige Locations. Bestehende Tagespläne werden
beim Einloggen und nach erfolgreichem Reload geprüft: Unzulässige Ziele werden
ersetzt und gespeichert; Intents und Stunden bleiben erhalten. Sind keine
zulässigen Ziele vorhanden, bleibt das Ziel leer, statt eine Sperre zu umgehen.
Die aktuelle Mikroaktion oder ein bereits gestarteter nativer Transport wird
nicht mitten in einer Bewegung gewaltsam abgebrochen. Neue Reiseabschnitte
werden erneut geprüft. Ein bereits in einem gesperrten Gebiet stehender Bot wird
nicht automatisch teleportiert; diese Regeln ersetzen keine eigene Bergungslogik.
Die Regeln betreffen ausschließlich autonome AdventureBots. Sie sperren keine
Gebiete für menschliche Spieler und verändern weder DBC noch NPC-Fraktionen.
## Inhalt
`vcore_adventure_map_catalog` enthält Karten-ID, Anzeigename, Kartentyp und
Erweiterung. Kartentyp 255 markiert alte Gebiete ohne vorhandenen Map.dbc-Eintrag.
Solche Gebiete sind ausdrücklich gesperrt. Dungeon-/Raid-/Schlachtfeldkarten
bleiben gekennzeichnet und werden nicht als normale offene Welt behandelt.
`vcore_adventure_area_catalog` enthält alle Gebiete und Untergebiete aus der
lokalen Cataclysm-4.3.4-AreaTable.dbc, mit Namen, Karten-ID und Elterngebiet.
Die Namen sind hier deutsch; die stabile Referenz ist immer die numerische ID.
| Spalte | Bedeutung |
| --- | --- |
| `area_id` | Native AreaTable-ID, auch für übergeordnete Zonen |
| `parent_area_id` | Übergeordnetes Gebiet; 0 bedeutet Wurzelgebiet |
| `allowed_factions` | NULL: erben; 0: gesperrt; 1: Allianz; 2: Horde; 3: beide |
| `min_level`, `max_level` | Empfohlener Levelbereich; NULL: erben/unbekannt |
| `max_level_gap` | Erlaubter Abstand unter der Mindeststufe; NULL: erben, Standard 5 |
| `prefer_flight` | NULL: erben; 0: normale Reisegewichtung; 1: erlaubte Flüge bevorzugen |
| `notes` | Frei bearbeitbare Begründung/Notiz |
Die Mindeststufe ist eine untere Zugangsgrenze mit der angegebenen Toleranz.
`max_level` sperrt höherstufige Bots nicht aus ihren Heimatgebieten aus.
Die vorhandenen, manuell gepflegten Levelbereiche aus `vcore_adventure_zone`
werden beim Import übernommen. Unbekannte Bereiche bleiben NULL, statt einen
nicht belegten sicheren Levelbereich vorzutäuschen. Unbekannte Freilandbereiche sind unter Stufe85 gesperrt.
## Verbindliche Hierarchie
Alle Vorfahren eines Gebiets sind zu berücksichtigen. Fraktionsfreigaben werden
geschnitten: Ein Kind mit Freigabe 3 kann einen gesperrten Elternbereich nicht
freigeben. Dasselbe gilt anschließend für einen neutralen Node in einem
fraktionsgesperrten Gebiet. Ein Node darf zusätzliche Einschränkungen besitzen,
aber die Gebietsfreigabe nicht erweitern. Die geltende Reihenfolge ist
**Karte vorhanden → Gebiet samt Vorfahren → Node → Verbindung/Transport**.
NULL bedeutet Vererbung, ausdrücklich 0 bedeutet bei Fraktionen Sperre und bei
Flugpräferenz normale Gewichtung. Flugpräferenzen ersetzen keine Reitfähigkeit,
Fluglizenzen, nativen Flugverbote oder Kollisionsprüfung. Sichere Endpunkte
allein reichen nicht für sichere Wege: Zwischengebiete müssen ebenfalls geprüft
werden. Ein bereits in einem gesperrten Gebiet stehender Bot braucht einen
gesonderten sicheren Ausweg, statt die Sperre für reguläre Reisen aufzuheben.
## Voreinstellungen
- Rassische Startregionen und Hauptstädte haben Fraktionsfreigaben. Darunter
Dun Morogh/Elwynn/Teldrassil/Azur- und Blutmythosinseln/Gilneas für Allianz
sowie Durotar/Tirisfal/Mulgore/Immersangwald/Geisterlande/Kezan/Verlorene Inseln
für Horde. Die zugehörigen Hauptstädte sind ebenfalls eingetragen.
- Vashj'ir (5146) ist für alle gesperrt. Tang'tharwald (4815), Schimmernde Weiten
(5144) und Abyssische Tiefen (5145) erben diese Sperre über die echte DBC-Hierarchie.
- Die Scherbenweltgebiete einschließlich Shattrath, Nordend sowie Hyjal,
Tiefenheim, Uldum, Schattenhochland und Tol Barad bevorzugen erlaubtes Fliegen.
Native Flugverbote haben stets Vorrang. Karte 530 wird bewusst nicht pauschal
als Scherbenwelt behandelt: Sie enthält auch die Blutelfen-/Draenei-Startgebiete.
Tiefenbahn und Schiff Sturmwind–Rut'theran haben explizite Allianz-Nodefreigaben.
Hauptstadtportale werden über ihre Zielgebiete gesperrt; auch neutrale Quellnodes
können diese Sperre nicht umgehen.
## Nodefreigaben
Migration: `sql/custom/world/2026_10_29_03_adventure_node_access.sql`.
`vcore_clientless_node_access` erlaubt für jeden Node eine zusätzliche
`allowed_factions`-Maske mit gleicher Bedeutung wie bei Gebieten. NULL bedeutet
keine manuelle Einschränkung. Neue Nodes können über INSERT ergänzt werden.
Die Tabelle enthält initial alle vorhandenen Nodekeys.
Flugknoten werden bei jedem Reload automatisch einem Flugmeister im Umkreis von
100 Yards zugeordnet. Maßgeblich sind die Fraktionsvorlagen der NPCs und ihre
Feindseligkeit gegenüber Allianz/Horde; neutrale Flugmeister erlauben beide.
Unklare Zuordnungen bleiben gesperrt. `flightmaster_spawn_id` ermöglicht eine
explizite Zuordnung zu einem bestimmten NPC-Spawn innerhalb dieses Umkreises.
Manuelle Masken können native NPC-Freigaben weiter einschränken, nicht erweitern.
Die tatsächlich berechnete Maske ist im Diagnosebefehl als `nodeMask` sichtbar.
```sql
UPDATE vcore_clientless_node_access SET allowed_factions=1
WHERE node_key='mein_node';
```
Nach einer Änderung an Gebieten oder Nodes in der Serverkonsole:
```text
clientless adventure reload
clientless adventure area 26 taxi_11
```
Die Diagnose zeigt für den angegebenen Online-Bot das aufgelöste Gebiet,
Fraktionsmaske, Levelgrenze, Flugpräferenz, Nodefreigabe und Gesamterlaubnis.
Ohne Nodekey wird die aktuelle Position geprüft. Die Zahl26 ist hier nur ein
Beispiel für Arthoran; der Befehl funktioniert mit jedem Online-AdventureBot.
Gespeicherte Bodenwege und lokale MMAP-Wege werden an ihren Wegpunkten und
zusätzlich mit maximal40Yards Abstand geprüft. Flugtaxiwege berücksichtigen ihre
nativen Wegpunkte, freie Flüge ihre geplanten und tatsächlich gestarteten
Abschnitte. Virtuelle Graphverbindungen verwenden dieselben Prüfungen, auch bei
zwischengespeicherter Weggeometrie. Diese räumliche Abtastung ist keine mathematisch
lückenlose Prüfung jedes einzelnen Grenzpunkts. Schiffs-/Tiefenbahnfahrten prüfen
beide Haltestellen und Nodefreigaben statt einen Bodenweg quer durch das Meer.
## Bearbeitung ohne Neukompilierung
Beispiel: Gebiet und seine unmittelbar untergeordneten Gebiete ansehen:
```sql
SELECT * FROM vcore_adventure_area_catalog
WHERE area_id=5146 OR parent_area_id=5146;
```
Beispiel: Flugpräferenz und Leveltoleranz eines Gebiets bearbeiten:
```sql
UPDATE vcore_adventure_area_catalog
SET prefer_flight=1, max_level_gap=5, notes='Flugreisen bevorzugen'
WHERE area_id=616;
```
Nicht die generierte SQL-Datei erneut einspielen, um vorhandene Zeilen zu ändern:
`INSERT IGNORE` bewahrt absichtlich Betreiberanpassungen. Stattdessen gezielte
UPDATEs verwenden. Die alte Leveltabelle dient nur noch als Importquelle; der laufende Server
verwendet die Levelbereiche dieses Katalogs. Änderungen der alten Tabelle
werden nicht automatisch in diesen Katalog kopiert.
Die Ausgangsdaten lassen sich ohne DB-Verbindung reproduzieren:
```bash
python3 contrib/clientless/export_area_catalog.py /pfad/zu/dbc/deDE /tmp/area-catalog.sql
```
+305
View File
@@ -0,0 +1,305 @@
# Autonomes Verhalten: Implementierungsplan und Vertrag
Konzeptfortschreibung vom 27.10.2026: Der vereinbarte Umfang umfasst
[sieben Grundintents](intent-katalog.md). Die folgende Implementierungsbeschreibung
beschreibt vorwiegend die ursprünglichen drei technischen Intents; der neue
[Ruhe-Intent `rest`](rest-intent.md), der [Freizeit-Intent `leisure`](leisure-intent.md)
der [Wirtschaften-Intent `economy`](economy-intent.md) und der
[Abenteuer-Ausbau](adventure-intent.md) sind separat dokumentiert. Die zuvor
ausstehende visuelle Prüfung der Stuhlsitzposition hat der Nutzer inzwischen
erfolgreich abgeschlossen.
Dieser Stand ersetzt die Lua-Tagesroutinen-Annahme aus `mikroaction.md`.
Lua beschreibt Profile; der C++-Planer erzeugt daraus einen Tagesplan.
- 24 Stundenplätze nach lokaler Serverzeit, Reisezeit eingeschlossen. Ein Intent
belegt 1–4 zusammenhängende Stunden; Ziele dürfen stündlich wechseln oder bleiben.
Aufenthalte verlängern die festen Zeitfenster nicht.
- Gewichtete Auswahl berücksichtigt Persönlichkeit, Aktivitäten und Regionen.
- Locationtypen und Botaktionen werden in bearbeitbaren Katalogen mehreren Intents
zugeordnet. Unklare Orte bleiben `landmark`, erkennbare Namen werden großzügig
klassifiziert. Importierte Definitionen und manuelle Korrekturen werden erhalten.
- Der Reiseexecutor nähert sich unerreichbaren Zielen bestmöglich über den Graphen;
anschließend wird die nächste passende Ersatzlocation gesucht, ohne Entfernungsgrenze.
- Ein Gebietsintent benötigt einen erreichbaren Graphnode innerhalb des Gebiets.
Die lokale Erkundung darf das Gebiet nicht verlassen.
- Bei einem Planwechsel wird eine laufende Fernreise bis zum nächsten sicheren
regulären Graphnode beendet; Taxi, Portal, Schiff und Flug werden nicht gewaltsam
unterbrochen. Danach wird das neue Ziel geplant.
- Mikroaktionen: umsehen, erkunden, sitzen/rasten, trinken, essen, Emote, sprechen,
Arbeit darstellen. Aktions- und Variantenhistorien senken Wiederholungsgewichte.
Arbeit verändert weder Ressourcen noch Inventar. Echte Kampf-KI bleibt später.
- Der erste Test ist `social` in `goldshire_tavern`; Arthorans Tagesplan bleibt aus.
## Umsetzungsschritte
1. Ortsimport und Katalogmigration mit Herkunft, Gebiets-/Zonenmetadaten.
2. Profilgesteuerter Tagesplan, gespeicherte Stundenplätze und autonome Intent-Steuerung.
3. Sichere Reiseübergabe, Ersatzziele, kontextabhängige Mikroaktionen und Diagnose.
4. Automatisierte Prüfungen, Build, Installation und gezielter Tavernen-Servertest.
Visuelle Abnahme erfolgt durch den Nutzer.
## Bedienung
Einmalig die additive Migration auf der Test-Weltdatenbank ausführen:
`sql/custom/world/2026_10_26_03_adventure_behavior.sql`.
Nach Installation des Builds in der Serverkonsole (ingame mit führendem Punkt):
```text
clientless adventure import
clientless adventure reload
clientless adventure status 26
clientless adventure plan 26
clientless adventure intent 26 social goldshire_tavern 3600
clientless adventure schedule 26 on
clientless adventure schedule 26 off
clientless adventure stop 26
```
`plan` erzeugt beziehungsweise zeigt den Tagesplan, aktiviert ihn aber nicht.
`intent` fordert selbstständige Reise und anschließende Mikroaktionen an;
seine Dauer dient gezielten Tests und startet mit dem Auftrag. Die normale
Tagesplanung verwendet dagegen feste Stundenfenster. `stop` und Planwechsel
warten sichere Reisegrenzen ab. Weder Ressourcen noch Inventar werden für
Mikroaktionen verändert. Arbeit wird nur an sichtbaren passenden Objekten mit
geprüftem lokalen Anlauf dargestellt. Echte Kämpfe sind noch kein Teil des Katalogs.
Lua-Profile erhalten zusätzlich:
```lua
behavior = {
enabled = true,
daily_schedule = false,
initial_intent = "social",
initial_location = "goldshire_tavern",
initial_duration_seconds = 3600,
locale = "deDE",
},
micro_action_affinity = { drink = 1.5, rest = 1.2 },
```
`daily_schedule = true` startet stattdessen den Profilplaner. Ohne explizites
`behavior.enabled` bleiben bisherige Clientless-Controller unverändert.
`intend("social", {location="goldshire_tavern"})` bleibt als semantischer
manueller Auftrag möglich; Lua berechnet weder Tagesplan noch Mikroaktionen.
## Daten und Korrekturen
- `vcore_clientless_world_point`: Kategorie, Position, enabled wie bisher.
- `vcore_adventure_location`: Herkunft, Anzeigename, Gebiet, Zone, Region,
Gebietsmarkierung und optionaler Fraktionsfilter (0 beliebig, 1 Allianz, 2 Horde).
- `vcore_adventure_location_intent`: mehrere Intents mit Gewichten je Kategorie.
- `vcore_adventure_action` und `vcore_adventure_action_intent`: Dauer,
Umgebungsbedingung, Darstellung und mehrere passende Intents.
- `vcore_adventure_dialog`: gemeinsam verwendete Textvarianten pro Sprache und Intent.
- `vcore_adventure_day`: 24 gespeicherte Stundenplätze je Charakter und lokalem Datum.
Importer und Migration verwenden für Kataloge und Ortsdefinitionen `INSERT IGNORE`.
Damit bleiben manuelle Positions-, Typ-, Gewichts- und enabled-Korrekturen erhalten.
Anschließend `clientless adventure reload` ausführen; bei geänderten Worldpoints
zusätzlich deren bestehende Reload-Funktion verwenden oder den Import wiederholen.
Die Quellen sind `game_tele`, Wachposten-POIs und Gasthaus-/Berufsausbilder-Spawns.
Wachposten-POIs besitzen nur X/Y: Ihre Karte wird aus dem räumlich nächsten
Teleport-Ort geschätzt, ihre Höhe stammt aus der nativen Terrain-/VMAP-Abfrage.
Diese Einträge sind als `guard_poi_inferred` gekennzeichnet und dürfen später
korrigiert werden. Benannte Gesamtgebiete werden über native Gebietsmetadaten
erkannt. Ziele in Instanzkarten werden importiert, jedoch nicht als autonome
Aufenthaltsorte gewählt. Bekannte Instanzeingänge auf Außenweltkarten bleiben
gewöhnliche Reiseziele; eine vollständige Dungeon-Aktivität ist ein späterer Schritt.
## Prüfung
```bash
python3 tests/clientless/test_adventure_behavior_policy.py
python3 tests/clientless/test_adventure_intent_state.py
python3 tests/clientless/test_flight_area_query.py
```
Weitere Regressionen prüfen Lua-Reload, Graphplanung, Flug, Portale und Transporte.
Neue Logereignisse: `ADVENTURE_CATALOG`, `DAY_PLAN`, `INTENT_TRAVEL`,
`INTENT_FALLBACK`, `INTENT_ARRIVED`, `MICRO_START`.
Der erste Live-Test aktiviert ausschließlich Arthorans Geselligkeit in Goldhain.
Die sichtbare Abnahme sowie die weiteren Intent-/Tagesplan-Tests folgen mit dem Nutzer.
## Bisherige Servertests am 26.10.2026
- Import: 2.631 Definitionen (1.531 Teleport-Orte, 372 rekonstruierte
Wachposten-POIs, 728 Gasthaus-/Berufsausbilder-Spawns). Zusammen mit neun
bestehenden semantischen Locations stehen 2.640 Locations im Katalog.
Darunter 33 Gesamtgebietsziele. 231 POIs ohne brauchbare Koordinaten/Höhe
wurden übersprungen. Ein Wiederholungsimport erzeugte keine Duplikate.
- Bestehende Goldhainer Taverne unverändert; native Zone 12, Region `elwynn`.
- Arthoran reiste eigenständig von Goldhains Startpunkt in die Taverne.
Reiseabschluss, `INTENT_ARRIVED` und wiederholte `MICRO_START` bestätigt.
Beobachtete Aktionen im Log: sprechen, sitzen, winken, trinken, erkunden,
essen, lachen und nicken. Dies bestätigt serverseitige Ausführung, keine
visuelle Abnahme der Animationen.
- Tagesplan-Vorschau: genau 24 persistierte Stundenplätze mit mehrstündigen
Aufenthalten und wechselnden Zielen. `daily_schedule` bleibt für Arthoran aus.
- Die native Gebietsanfrage der Fluglogik verwendete die Argumentreihenfolge
des TerrainMgr statt TerrainInfo. Korrigiert und mit einer eigenen
Produktionsmethoden-Regression für Karte/Phase, Gebiet/Zone und Cache geprüft.
Weitere Reise-/Ersatzziel-, Gebiets-, Arbeitsdarstellungs- und Stundenwechseltests
bleiben für die nächsten gemeinsamen Testschritte vorgesehen. Automatisierte
Tests decken die Zustandsübergänge und Auswahlregeln bereits ab.
Zusätzliche Regressionen für Reisewechsel und Mikroaktionsbereinigung:
```bash
python3 tests/clientless/test_adventure_graph_handover.py
python3 tests/clientless/test_adventure_micro_reset.py
```
Die Bereinigung stoppt die tatsächliche lokale Spline, statt nur ihren
Navigationsdatensatz zu entfernen. Laufende Schiffsfahrten, Taxiflüge,
freie Flüge und Portaltransfers werden dabei weiterhin nicht abgebrochen.
## Vollständiger Geselligkeitskatalog
Migration nach der Grundmigration:
`sql/custom/world/2026_10_26_04_adventure_social.sql`.
Die neuen `social_*`-Szenen ergänzen Essen, Trinken, Umsehen, Platzwechsel und
kurze Emotes: NPC- und Botgespräch, Sitzplatzsuche, Tresen, Bestellung,
Begrüßung, Zuhören, Gesprächsreaktion, Anstoßen, Abschied, Kommentar,
seltenes Tanzen und Lagerfeuer mit Rast. Gesprächspartner werden selbstständig
angelaufen und anvisiert; `/reden`, Zuhören und Abschied bilden einen Ablauf.
NPCs und andere Bots werden dabei nicht künstlich zu Antworten gezwungen.
Menschliche Spieler sind keine gezielt ausgewählten Gesprächspartner.
Aktionsart, Variante, Dialogzeile und Ziel-GUID erhalten Wiederholungsdämpfung.
Sitzplätze werden mit der nativen GameObject-Benutzung verwendet; der Bot läuft
zuerst heran und wartet danach auf bestätigtes Sitzen. Möbel mit ausgelösten
Events werden nicht verwendet. Essen, Trinken und Rasten versuchen ebenfalls,
einen verfügbaren echten Stuhl zu nutzen; sonst bleibt die bisherige Darstellung.
Alle AdventureBots erhalten bei ihrem normalen Controller-Login den Spielerzauber
**818 – Cooking Fire**, unabhängig von Berufsprofil oder Kochkunstprüfung.
Ein eigenes Feuer wird ausschließlich über den normalen Zauber erzeugt und erst
nach Auftauchen des nativen Feuerobjekts bestätigt. Native Castbedingungen und
Cooldown gelten. Neue Feuer werden nur draußen, an einer kleinen ebenen Stelle
und außerhalb von Wasser erzeugt; vorhandene geeignete Feuer können auch ohne
neuen Cast genutzt werden. Die normale Lebensdauer des Feuerobjekts bleibt erhalten.
Gezielter Szenentest bei einem bereits am Ziel angekommenen AdventureBot:
```text
clientless adventure micro 26 social_npc
clientless adventure micro 26 social_order
clientless adventure micro 26 social_seat
clientless adventure micro 26 social_make_fire
clientless adventure status 26
```
Der Testbefehl verwendet dieselben Umgebungs-, Ziel-, Navigations- und nativen
Interaktionsprüfungen wie die automatische Auswahl. Ungeeignete oder fehlende
Ziele werden abgelehnt. Die automatische Tagesplanung wird dadurch nicht aktiviert.
Neue Diagnoseereignisse: `SOCIAL_START`, `SOCIAL_CUE`, `SOCIAL_SEATED`,
`SOCIAL_FIRE_CAST`, `SOCIAL_FIRE_CONFIRMED`, `SOCIAL_END`.
```bash
python3 tests/clientless/test_adventure_social.py
```
Die Regression führt die produktive Szenensteuerung aus: kein Reden während
des Anlaufs, vollständige Gesprächsfolge, Abbruch bei verschwundenen/feindlichen
Zielen, native Stuhlbenutzung mit Sitzbestätigung und Lagerfeuer-Cast ohne
erfundene Erfolgsmeldung bei fehlendem Feuerobjekt.
Die Möbel-Suche verlangt noch keine freie Sicht vom ursprünglichen Standpunkt:
Stühle in angrenzenden Räumen dürfen über einen vollständigen lokalen Laufweg
gefunden werden. Am gewählten Anlaufpunkt und unmittelbar vor der Benutzung
wird die native Sichtlinie geprüft. Gesprächspartner dürfen beim Umrunden von
Hindernissen kurz aus dem Blick geraten; Gesten beginnen erst nach Ankunft.
Dynamische Lagerfeuer werden zusätzlich über die native erzeugende Zauber-ID
818 erkannt, unabhängig vom lokalisierten Objektnamen.
Zusätzliche Prüfung:
```bash
python3 tests/clientless/test_adventure_social_fire.py
```
## Servertest Geselligkeitsausbau am 26.10.2026
- Nativer NPC-Gesprächsanlauf und vollständige Folge aus Begrüßung, `/reden`,
Zuhören, Reaktion, erneutem Reden und Abschied bestätigt.
- Bestellung und Tresenaufenthalt beim tatsächlichen Goldhainer Gastwirt
(Creature-Entry 295) bestätigt.
- Echte Stuhlbenutzung mit `SOCIAL_SEATED` bestätigt, unter anderem
GameObject-Entries 22812 und 177498. Trinken auf dem nativen Stuhl ebenfalls
serverseitig ausgeführt. Keine künstliche Sitzposition gesetzt.
- Gemeinsamer Lagerfeuerzauber 818 bei Arthoran als gelernt gespeichert.
- Außenversuch: `SOCIAL_FIRE_CAST` und `SOCIAL_FIRE_CONFIRMED`, natives
GameObject-Entry 29784. Kein direkter GameObject-Spawn durch die Botsteuerung,
keine Kochkunstprüfung und keine Umgehung des normalen Cooldowns.
- Der temporäre Außen-Testpunkt ist kein Graphnode und wird nach dem Test
entfernt; Arthoran kehrt zur Goldhainer Taverne zurück.
Die visuelle Abnahme der neuen Szenen erfolgt durch den Nutzer. Ein tatsächlicher
Dialog zwischen mehreren AdventureBots wurde mit dem einzelnen Testbot noch
nicht im Spiel geprüft; die Auswahl und einseitige Ansprache sind implementiert.
Abschließender Teststand: Rasten am bereits vorhandenen Feuer während des
normalen Zaubercooldowns bestätigt (`social_fire`, Rast-Cue 14). Arthoran ist
über normale Navigation zur Goldhainer Taverne zurückgekehrt. Der temporäre
Außenpunkt wurde entfernt und die Ortsdaten erneut abgeglichen. Der Tagesplan
bleibt deaktiviert; der neue Geselligkeitskatalog läuft zur Sichtprüfung.
## Gesprächsposition und Gehmodus
Gesprächsplätze liegen vor der tatsächlichen Orientierung des Gegenübers.
Bevorzugt werden 2,2 Yards Abstand, bei Hindernissen auch 3,2 Yards und
leicht schräge Positionen (etwa ±16 beziehungsweise ±32 Grad). Ein naher Platz
seitlich oder hinter dem NPC gilt nicht als fertiger Gesprächsanlauf. Dreht sich
der NPC, wird die Position vor den nächsten Gesten erneut geprüft und bei Bedarf
begrenzt nachgeführt. Ist kein frontaler Platz erreichbar, wird die Szene beendet,
statt von hinten weiterzureden. NPCs werden dabei nicht künstlich gedreht.
Lokale Bewegungen während eines Geselligkeits-Intents verwenden den nativen
Gehmodus. Er bleibt bei Neuplanung und mehreren lokalen Splineabschnitten erhalten;
für diese Bewegungen wird kein Bodenmount verwendet. Andere Reiseaufträge behalten
ihre bisherige Fortbewegungswahl. Das Navigationslog zeigt `walk=1`, das Soziallog
mit `SOCIAL_FRONT` den Winkel und Abstand zum Gegenüber.
```bash
python3 tests/clientless/test_adventure_walk.py
python3 tests/clientless/test_adventure_social.py
```
Servertest der Korrektur: Ein NPC-Gespräch wurde mit frontalem Winkelversatz
0,000 und 2,20 Yards Abstand ausgeführt. Sowohl der Weg zum Stuhl als auch der
Gesprächsanlauf wurden als `walk=1` über die native Spline ausgeführt. Build mit
`-j10` und die zugehörigen Regressionen bestanden. Visuelle Bestätigung erfolgt
anschließend durch den Nutzer.
## Sitzposition für beobachtende Spieler
Ein clientloser Spieler sendet keine normalen Client-Bewegungspakete. Dadurch
konnte seine `MovementInfo.guid` leer bleiben. Die native Nahteleport-Bestätigung
benutzte diese Struktur für die Nachricht an Beobachter: Die Sitzpose konnte
sichtbar werden, während die kleine Versetzung auf den Stuhl beim Beobachter
fehlte. `CompleteNearTeleport` setzt deshalb die tatsächliche Mover-GUID vor
dem Senden ausdrücklich; clientlose Sessions erhalten einen frischen Zeitstempel.
Normale Clients behalten ihren Bewegungszeitstempel.
`SOCIAL_SEATED` erfordert nun den tatsächlichen Stuhl- beziehungsweise Bankslot
(maximal 0,15 Yards horizontaler Fehler), passende Höhe, Ausrichtung und die
zur Stuhlhöhe gehörende native Sitzanimation. Bodensitzen oder eine Sitzpose
neben dem Stuhl gelten nicht als Erfolg. Die Prüfung bleibt während der
Stuhlszene aktiv. Das Log enthält Sitzposition, Slotfehler, Sitzstatus und
Bewegungs-GUID.
```bash
python3 tests/clientless/test_clientless_near_teleport_observer.py
python3 tests/clientless/test_adventure_social.py
```
Erneuter Servertest: Stuhl-Entry 22812, Sitzposition
`(-9475.510, 29.792, 56.343)`, Slotabweichung `0.000`, native Sitzhaltung `5`,
Bewegungs-GUID `26`. Die Beobachternachricht und die genaue Sitzprüfung sind
installiert; die visuelle Bestätigung erfolgt durch den Nutzer.
+59
View File
@@ -0,0 +1,59 @@
# Ödland: Anleger ↔ Klippe, Trigger 6321/6322
Stand 26.10.2026. Laut Nutzer soll der Anleger ein erreichbares Bot-Reiseziel
sein; diese Verbindung ist dafür wichtig. Beide gleichkartigen Übergänge sind
im lokalen Testgraph aktiviert. Native Trigger und Ziele bleiben unverändert.
## Native Daten und Import
Beide Trigger liegen auf Karte 0, haben Radius 1.78776 und keine DBC-
Phasenflags. Die lokale DB enthält keine eigenen AreaTrigger-Skripte und
keine direkten Questzuordnungen über `areatrigger_involvedrelation` für diese
IDs; in den untersuchten Core-/Skriptdateien gibt es keine Sonderbehandlung
der IDs. Das ist keine pauschale Aussage über jede denkbare Zugangsbedingung.
Reproduktion über die Testserver-Konsole:
```text
clientless portal import 6321
clientless portal import 6322
```
Der Import legt vier Nodes und zwei gerichtete Kanten an und lädt den Graph
neu. Keine Höhenkalibrierung oder zusätzliche Migration erforderlich.
| Node | X | Y | Z | Funktion |
| --- | --- | --- | --- | --- |
| portal_at_6321_source | -6518.680 | -4604.420 | 29.2335 | Anleger, hinauf |
| portal_at_6321_target | -6547.880 | -4443.240 | 332.079 | Ankunft an der Klippe |
| portal_at_6322_source | -6551.280 | -4446.460 | 332.829 | Klippe, hinunter |
| portal_at_6322_target | -6519.820 | -4608.520 | 28.4842 | Ankunft am Anleger |
Portal-Kanten 1750 (6321_source → 6321_target) und 1751
(6322_source → 6322_target), Kosten jeweils 1, unidirektional.
## Live-Test
Arthoran wurde nach Sicherung seiner Ausgangsdaten ausgeloggt am unteren
Source-Node positioniert. Danach reguläre Reiseaufträge ohne weitere
Positionsmanipulation während der Fahrt:
- 12:05:54: Trigger 6321, Anleger → Klippe, `EDGE_COMPLETE`,
`arrivalError=0.00`, `recovery=0`.
- Oben vollständig validierte MMAP-Brücke vom Ankunftspunkt zum Rücktrigger:
4.75 Yards Pfadlänge, tatsächliche Bewegung, ohne Recovery.
- 12:05:55: Trigger 6322, Klippe → Anleger, `EDGE_COMPLETE`,
`arrivalError=0.00`, `recovery=0`.
Der zweite erfolgreiche Umlauf (12:06:18–12:06:19) ab der natürlichen unteren
Ankunft bestätigte außerdem den Anlauf von `portal_at_6322_target` zu
`portal_at_6321_source`. Alle vier Portalabschlüsse hatten Ankunftsfehler 0
und Recovery 0. Arthoran wurde anschließend ausgeloggt; Ausgangsposition, Zone
und Lua-Skript wurden wiederhergestellt.
Die Portalreisen verwenden den normalen AreaTrigger-Handler mit
Clientless-Near-ACK und Zielprüfung.
Es wurden keine Groundanschlüsse an das übrige Ödlandnetz aufgenommen oder
getestet. Keine Coreänderung, kein Build und kein Serverneustart erforderlich.
Finale Ingame-Abnahme durch den Nutzer steht aus.
Sicherungen und Logs: `/tmp/vcore-badlands-test.0lkimsmi`.
+14
View File
@@ -0,0 +1,14 @@
# Portals to the Blasted Lands
Enabled on the test world database on 2026-10-29 using the existing native importer:
```text
clientless portal object import 219963
clientless portal object import 211359
clientless portal object import 211298
clientless adventure reload
```
Stormwind spawn 219963 (entry 195141, spell 65728); Orgrimmar spawns 211359 and 211298 (entry 195142, spell 65729). The coincident Orgrimmar spawn 218904 is intentionally not duplicated in the graph. Source node ACLs are 1 (Alliance) and 2 (Horde), respectively, in `vcore_clientless_node_access`. Destination nodes retain the shared Blasted Lands area policy. Native spell destinations are used, with one-way click edges and no invented teleport. Existing graph enabled flags are preserved by repeated imports.
Bindings verified in the database (edges 1758–1760); native importer confirms active graph bindings. End-to-end traversal is pending gameplay verification. No C++ changes or binary installation. The server was already stopped when activation began; recovered with a fresh startup, ready marker and both 8085/8087 listeners verified. Console: `/tmp/vcore-portal-enable-start-20261029.log`.
+143
View File
@@ -0,0 +1,143 @@
# Autonomous AdventureBot groups
Bot groups use native invitations, party membership, leadership, raid conversion,
instance bindings and persistence. The first inviter becomes leader. Human-led
groups retain the existing interaction/follow behavior. A human invitation to an
already grouped bot acts as a join request: a bounded GUID-only CPC notification
lets the bot leader offer a reverse native invitation, subject to personality,
faction and capacity. Once the player joins, native leadership is transferred to
the human and bots switch to the existing player-led behavior. This does not
parse player chat or forcibly remove any member. Role assignment, healer
or tank AI, and replacement of absent players remain separate work.
## Recruitment and preparation
Adventure, compatible professions, social, instance and raid intents recruit.
Local encounters require phase, visibility, LOS and25-yard proximity. A lone bot
may request admission to an existing matching group; its leader sends the native
invitation. A leader may recruit individual bots. Recruitment and acceptance are
personality dependent, with20–40 seconds between searches,2–4 seconds for native
invite responses (provisional native leaders never answer their own invite) and a10-minute pair cooldown. Dead/combat/fleeing/transit bots do
not recruit. Same faction and an inclusive five-level spread are required.
Profession groups need a common primary profession.
`groupformation` prepares the next hour's intent in a capital. During this phase,
matching NEXT intents are required, not matching original destinations. The
leader's existing formation location becomes the meeting point; members inherit
it and subsequently inherit the leader's activity target and deadline. Their own
stored day plans remain intact and are restored on departure. Departure decisions
track the personal plan, so inheriting a different group destination is not
misinterpreted as an intent change. Unexpired manual
activities are restored too; expired manual activities end. New day generation inserts
preparation before instance/raid blocks, and probabilistically before other
eligible blocks; backwards processing prevents preparations preparing another
preparation. Existing stored days are preserved.
The faction-separated native custom channel `sucheNachGruppe` carries bounded
recruitment and response messages across capitals. The manager pairs structured
bot plans; it never interprets player chat. Opposite-faction channel traffic is
not used. Capital zones include racial capitals, Shattrath and Dalaran.
Announcements currently use German RP text.
Recruitment capacity includes the leader and pending invitations: instance5,
raid20, social10, adventure/profession3. Groups larger than five use native raid
membership. Full groups stop searching. These are intent-specific recruitment
limits; when the leader chooses a smaller activity, excess bot members depart
at a safe point before recruitment continues. Native map admission limits and existing/permanent lockouts remain
in force. Raid preparation requests the native25-player normal difficulty; the catalog
uses native downscaling and requires capacity for at least20 members, excluding
ten-player-only raid maps. Legacy20/40-player raids remain possible.
No role guarantees are implied.
Preparation never waits for a full group or for members to arrive. The leader's
next intent starts on its ordinary deadline. Late members catch up. Formation
suppresses the AFK/inactivity departure timer and refreshes its baseline; the
planned formation-to-activity transition is exempt from intent-change departure.
Later changes retain the existing loyalty-based departure behavior, deferred in
combat/instances/transit. Native removal handles leadership and party dissolution.
### Final formation manager
During the final ten minutes of `groupformation`, a deterministic fallback runs
every 30 seconds. It prefers the largest compatible bot-led group, fills only its
currently missing roles, and may move a bot out of a smaller incomplete bot-led
group. Human-led and browser/LFG groups are never reorganized. Every transfer is
revalidated against faction, the inclusive five-level range, profession rules,
the leader's chosen destination, that destination's level/access restrictions,
area policy and native capacity. Level 85 is an isolated matching category: a
level-85 bot is only consolidated with other level-85 bots. This is a greedy
fallback intended to maximize complete groups without replacing normal social
formation; it does not claim a globally optimal partition.
The ordinary five-minute gathering/departure rule remains authoritative. A
complete group can therefore finish consolidation by minute 50 and gather from
minute 55. At the block boundary, groups still incomplete use the configured
browser behavior and do not begin an overland dungeon or raid journey. The
manager never changes stored day-plan slots or a group's leader target.
GM diagnostics and explicit test fallback are available as
`clientless groupmanager preview`, `clientless groupmanager run`, and
`clientless groupmanager status`. `run` uses the same access, role, faction and
transfer checks but deliberately ignores the ten-minute time gate; it does not
override human leadership or native admission rules.
## Shared travel and instances
Followers run their AdventureBehavior controller with the leader's effective
intent/location/deadline, keeping their personal daily schedule. After arrival,
non-instance followers use native checked local following instead of independently
performing unrelated micro-actions. Leaders continue their own activities.
Generic CPC travel actions accept `route_source=<native-group-leader-guid>`.
The executor copies the leader's route edges and final local destination, keeping
execution/transport state separate. Late arrivals plan a native approach to the
shared route's previous reached node and replay the remaining edges. A bounded
15-second wait handles follower actions processed before the leader plans. If no
matching macro snapshot exists (including a local-only leader leg), the ordinary
native catch-up planner runs; this is not a synthetic transfer or an absolute
formation guarantee. Individual permissions/path failures still use native
travel recovery. `TRAVEL_SHARED_ROUTE` provides evidence of actual copying.
Free-flight members with the same target consume the leader's published flight
segments. Each member mounts normally and rechecks its own collision corridor.
A shared trail survives leader arrival/new planning through shared ownership.
Waiting for additional published points holds flight position; an aborted or
blocked trail uses existing checked breadcrumb return. No position, speed or
flight-license cheat is introduced. `FLIGHT_SHARED_TRAIL` marks attachment.
`raid` selects only native raid-map entrances; `instance` excludes them. These
are verified from native map data through the existing entrance catalog rather
than name matching. Both use the existing remainder-of-block visit and final
five-minute outside rest, individual0–50% maximum-health loss, save/restart and
native portal return. Native group binding supplies the shared instance copy;
unrelated shared solo bindings remain rejected. Members do not use separate
synthetic private copies.
Only the group leader initiates personality/intent-driven PvP. Other bots assist
through the existing damage executor. All group members retain the absolute rule against tactical fleeing,
regardless of health or level.
## Operations and verification
Apply `sql/custom/world/2026_10_28_01_adventure_groups.sql`; it is idempotent and
preserves edited weights/current day plans. No character migration is needed.
`clientless adventure reload` reloads catalog data.
Diagnostics: `clientless interaction <guid> leave` performs a safe native
departure/cancels a pending invite for test cleanup. `clientless interaction <guid>` includes next intent, formation,
capacity, bot leadership and own plan location. `clientless adventure plan <guid>`
shows stored day slots. `clientless adventure prepare <guid> <next-intent>
<capital-location> [seconds]` stages a manual preparation, with a chosen normal
next destination, lasting30–3600 seconds and followed by a one-hour activity.
It uses normal navigation, invitations and execution, and can start incomplete.
Manual preparations are runtime test state, not restart-persisted day plans.
Automated fixtures execute production recruitment, provisional-leader invite
handling, full world-tick behavior clocks in bot groups, player admission and
leadership, inheritance, instance
lifecycle, map-type filtering, route adoption and flight-trail geometry. They
cover different original destinations, singleton admission, native inviter
leadership, caps/pending reservations, raid conversion, protected transition,
unchanged personal plans, preparation deadlines, shared edges/free flight,
collision and abort behavior. Full native live group trips,20-member raids,
real AFK duration and visual gameplay remain acceptance tests for the user.
+139
View File
@@ -0,0 +1,139 @@
# AdventureBot-Gruppen, Browser und PvP
Stand: Implementierung gebaut (-j10), alle120Clientless-Tests erfolgreich; noch nicht installiert/live abgenommen.
Dungeon-, Raid- und PvP-Intents verwenden die bestehenden Tagespläne. `pvp` ist
neu und wird bei der Profilerzeugung als gewichtete Aktivitätspräferenz angeboten.
Bestehende Profile können `activity_affinity.pvp` ausdrücklich setzen; sonst gilt
im Planer ein kleiner, durch Aggression gewichteter Standardwert.
## Abreise und Rollen
Dungeon-/Raidbesuche starten selbstständig erst mit vollständiger geeigneter
Gruppe. Dungeonrollen:1Tank,1Heiler,3DD. Raidrollen richten sich nach der
bestehenden Zielkapazität: bis10Mitglieder2/2/6,20Mitglieder2/4/14,
25Mitglieder2/6/17. Die bereits vorhandenen Kapazitätsgrenzen der Locations
bleiben maßgeblich. Profile legen Botrollen fest, Spielerrollen werden aus
vorhandenen Gruppenrollen beziehungsweise ihrer Spezialisierung ermittelt.
Die erste tatsächliche Abreise gibt die gesamte Botgruppe für den laufenden
Intent frei. Spätere Austritte und Rollenlücken stoppen diese Reise nicht und
lösen keinen Browserwechsel aus. Gespeicherte laufende Instanzbesuche werden
weiterhin wiederaufgenommen. Spielergeführte Gruppen folgen ihrem Spieler;
Bots melden diese Gruppen nicht eigenmächtig an.
Unvollständige Botgruppen und einzelne Bots warten am aktuellen Ort und melden
sich bei zulässigem Browser an. Native Prüfungen für Level, Erweiterung,
Gegenstandsstufe, Zugänge, Sperren, Rollen und Accountrechte bleiben erhalten.
Die lokalen Cataclysm-DBC-Daten enthalten die Drachenseele-Flügel416/417 als
Stufe85-Angebote mit2Tanks,6Heilern und17DDs. Ihr TypeID ist1 (Dungeon), die Karte
ist jedoch ein Raid. Die Botregeln unterscheiden deshalb anhand der tatsächlichen
Karte; sie behandeln diese Angebote nicht versehentlich als Fünfer-Dungeons.
Die native Anmeldung dieser Type1-Flügel nutzt die vorhandene Dungeonfinder-
Berechtigung, nicht den separaten Legacy-Raidbrowser-Schalter. Der Bot-Schalter
für Raidbeitritt bleibt trotzdem anhand der tatsächlichen Raidkarte wirksam.
`DungeonFinder.OptionsMask` wurde nicht verändert.
Die Browserwahl verwendet zugängliche Angebote, nicht zwangsläufig das vorher
im Tagesplan ausgewählte Reiseziel. Rolle und Angebot werden nativ bestätigt;
Vermittlung und Teleport bleiben Aufgaben des vorhandenen Cores.
## Schalter
| Konfiguration | Standard |
|---|---:|
|Clientless.Browser.Dungeon.QueueEnabled|1|
|Clientless.Browser.Dungeon.JoinEnabled|1|
|Clientless.Browser.Raid.QueueEnabled|1|
|Clientless.Browser.Raid.JoinEnabled|0|
|Clientless.Browser.Battleground.QueueEnabled|1|
|Clientless.Browser.Battleground.JoinEnabled|0|
|Clientless.Browser.AllowBotOnlyTests|0|
`QueueEnabled` erlaubt das Anmelden. `JoinEnabled` erlaubt es, Bots tatsächlich
in eine vermittelte Besetzung aufzunehmen. Bei abgeschaltetem Beitritt bleiben
sie in der Suche, werden aber nicht in Angebote für Spieler eingerechnet und
reservieren keine Plätze in startenden Partien.
Im Normalbetrieb braucht jede vermittelte Besetzung mindestens einen echten,
verbundenen Spieler. Ein nach Verbindungsabbruch noch vorhandener Registereintrag
reicht nicht: Die Realm-Verbindung muss offen sein. Die zweite Verbindung darf
beim regulären Instanztransfer wechseln. Eine beliebige Person in einer anderen Warteschlange zählt
nicht. Prüfung erfolgt vor dem Angebot und vor dem Beitritt erneut. LFG-Gruppen
mit Bots erhalten einen echten Spieler als Anführer. Reine Botbesetzungen sind
nur mit `AllowBotOnlyTests=1` möglich; zusätzlich müssen Queue und Join für den
jeweiligen Browser aktiviert sein. Diese Testausnahme ersetzt weder Mindestgrößen
noch native Zugangsvoraussetzungen. Vorhandene Low-Population-Regeln des Servers
bleiben davon getrennt. Gruppen ohne Clientless-Teilnehmer behalten ihren Ablauf.
Die Regeln sind generische CPC-Admission-Regeln. DungeonFinding und Battlegrounds
hängen dafür nicht vom AdventureBot-System ab. Die Adventure-KI wählt lediglich
Anmeldungen und Rollen. Keine zusätzlichen externen Dienste oder Netzwerkschnittstellen.
## PvP
Ein PvP-Block mit Hauptstadtslocation bedeutet direkte Schlachtfeldsuche.
Welt-PvP-Ziele kommen aus zulässigen Gebietslocations von TolBarad/TolBarad-Halbinsel,
Höllenfeuerhalbinsel, Zangarmarschen, Nagrand und den Wäldern von Terokkar.
Gebietskatalog, Fraktion, tatsächliches Mindestlevel und Fluganforderungen gelten
auch hier. Für Welt-PvP genügt eine geeignete Gruppe ab zwei Mitgliedern; fehlen
Mitglieder, geht der Bot stattdessen in die Schlachtfeldsuche. Diese läuft über
die nativen normalen Schlachtfelder, nicht über Arena oder gewertetes PvP.
UnterStufe45 wird Kriegshymnenschlucht angefragt, danach ein zufälliges Schlachtfeld;
unterStufe10 erfolgt keine Anmeldung und kein neu generierter PvP-Block.
Bei Schlachtfeld-Gruppensuche werden die nativen Levelbereiche der gewünschten
Schlachtfeldvorlage verglichen, einschließlich der Mindeststufe für Zufallssuche. Die nativen Prüfungen entscheiden endgültig.
Derzeit geht es um Anmeldung und Beitritt. Spezifische Quest-, Flaggenträger-,
Basen- und Bossmechaniken sind damit nicht implementiert. Welt-PvP benutzt zunächst
vorhandene Erkundungsaktionen und die bisherigen persönlichkeitsabhängigen
PvP-Angriffsregeln. Schlachtfeld-/Raidbeitritt ist daher standardmäßig gesperrt.
## Gruppen zusammenführen
Während der Gruppenbildung steigt die Wechselbereitschaft mit der verstrichenen
Zeit. Größere passende Botgruppen werden bevorzugt. Auch Mitglieder kleinerer
unvollständiger Botgruppen können wechseln, insbesondere um einen offenen
Rollenplatz zu besetzen. Offene Einladungen reservieren bereits Rollenplätze;
die eigene Reservierung verhindert nicht die Annahme. Überzählige Rollen aus
falsch besetzten Gruppen dürfen auch in kleinere passende Gruppen wechseln,
und das Vervollständigen einer zulässigen Gruppe hat Vorrang. Bereits abgereiste
Anführer schützen auch Mitglieder, deren persönlicher Plan noch Gruppenbildung
anzeigt. Ziel und Voraussetzungen der aufnehmenden Gruppe gelten.
Die native Einladung/Annahme erfolgt im Worldthread; bei Ablehnung wird die
ursprüngliche Gruppe soweit möglich wiederhergestellt.120Sekunden Wechselpause
und eine eindeutige Rangfolge gleich großer Gruppen verhindern Pendeln.
Spielergeführte Gruppen, volle passende Gruppen, laufende Reisen und bereits
laufende Browsergruppen werden nicht automatisch umverteilt. Die feste
Sammelfrist am Stundenende wird nicht verlängert.
## Validierung und Betrieb
Vor jedem Build Loader/Testannahme pausieren und sicheren Logout abwarten.
Während der laufenden Schiffsaufzeichnung darf bei verbleibenden Bots auch nach
fünfMinuten kein Shutdown erzwungen werden: Build dann zurückstellen. Installation
und Neustart erst nach Freigabe für die Aufzeichnung. Zugehörige Tests:
`test_browser_admission.py`, `test_group_role_composition.py`,
`test_adventure_instance_begin.py`, `test_adventure_groups.py`,
`test_browser_participants.py`, `test_browser_match_order.py`,
`test_browser_bg_brackets.py`. Rollenabfragen werden außerhalb der Versorgungs-
und Kampfaktionen beantwortet, nur solange die native Abfrage noch offen ist.
Alle120Clientless-Testskripte wurden ausgeführt und bestanden. Sechs ältere
Adapter benötigten die neuen Zustandsfelder/Schnittstellen; zusätzliche Assertions
prüfen PvP-Persistenz, Browser-Wartephasen, Wiederaufnahme begonnener Reisen und
AFK-Schutz während der Suche. Der vollständige CMake-Build und der abschließende
inkrementelle Build liefen mit-j10 erfolgreich durch. Beide Config-Dateien wurden
auf die vereinbarten Browserwerte geprüft. Details und Logs:
`doc/clientless/checkpoints/2026-10-31-browser/validation-status.json` und
`regression/final-summary.json`. Der vorherige114/120-Lauf samt Fehlerlogs ist
als Diagnose erhalten; die behobenen Fälle wurden gezielt erneut ausgeführt.
Der Testserver war nach dem externen Umgebungsneustart bereits offline. Es wurden
keine Bots für den Build zwangsausgeloggt, keine laufenden Transporte unterbrochen
und kein Server durch diesen Arbeitslauf gestoppt. Loader und TestBot-Ausführung
bleiben pausiert (Config0/0); ursprünglicher TestBot-Wert1 ist in
`resumed-build-state.json` gespeichert. Installation/Start erst nach Freigabe.
Vor dem nächsten zulässigen Start die sieben zuletzt verbliebenen Bots anhand
`restart-recovery-needed.json` für Zustandsprüfungen vorsehen.
Diese Tests prüfen Regeln und echte extrahierte Produktionsfunktionen mit
Adaptern. Ein tatsächlicher Browser-Beitritt mit echten Spielern und die visuelle
Abnahme stehen aus. Es wurde weder installiert noch ein Worldserver gestartet.
@@ -0,0 +1,42 @@
# Build-Bergung am 30.10.2026
Loader seit etwa15:44 pausiert, sicherer Logout seit derselben Phase angefordert.
Snapshot nach17:09; Fünf-Minuten-Frist damit deutlich überschritten.
Regulärer Server-Shutdown vor dem Build; keine Einzel-Logouts erzwungen.
| GUID | Bot | Fraktion | Karte | Position X/Y/Z | Flugstatus vor Shutdown |
|---:|---|---|---:|---|---|
| 43 | Fizzira | Allianz | 530 | -267.066 / 3215.06 / 66.1018 | Failed |
| 46 | Selthas | Horde | 571 | 3975.16 / 6846.42 / 204.755 | Failed |
| 53 | Noranda | Allianz | 530 | -3103 / 2595 / 62.9246 | Arrived |
| 84 | Brynli | Allianz | 530 | 3471.56 / 5253.22 / 150.785 | Failed |
| 91 | Norara | Horde | 0 | 1805 / 327 / 94.8042 | Failed |
| 101 | Korutam | Horde | 1 | 1655.55 / -4313.52 / 78.9182 | Failed |
| 104 | Lillini | Allianz | 0 | -8893.24 / 691.307 / 127.343 | Failed |
| 118 | Lillina | Allianz | 1 | 5391.2 / -3378.67 / 1649.72 | Failed |
Sieben Failed-Flugzustände, Noranda mit Arrived. Letzter Sammelstatus:
8Sessions,1Kampf,7Flug,0Transport,0Ladevorgänge. Kein Bot mit gespeichertem
Transportpassagier oder Taxipfad. Details/Positionen sind unter
`/tmp/vcore-recorder-5yd-recovery/` gesichert.
## Nachprüfung
Build mit `-j10`, Installation und Transport-Regressionstest bestanden.
Neustart PID471677; frische Ready-Meldung, Prozess und Ports8085/8087 geprüft.
Alle8Bots nach Login geprüft, einschließlich tatsächlicher Fuß-/Bodenhöhe.
Fizzira, Selthas, Brynli, Norara, Korutam und Lillini schwebten nach Neustart
weiter über dem Boden, obwohl das Flugkennzeichen teilweise verschwunden war.
Native Teleports nach Sturmwind bzw.Orgrimmar bestätigt. Noranda stand auf
festem Boden, blieb aber im Kampf und blockierte weiter den sicheren Logout;
ebenfalls nativ nach Sturmwind zurückgesetzt. Lillina stand auf gültigem Boden
und konnte ohne Bergung sicher ausloggen.
Endstand: alle8offline, keine gespeicherten Transportbindungen oder Taxipfade.
Sieben Hauptstadtpositionen in `final.tsv` bestätigt. Temporäre reine
Prüfprofile entfernt; ursprüngliche generierte Profile unverändert erhalten.
Loader bleibt0 wegen laufender Routenaufzeichnung; Originalwert1 liegt unter
`/tmp/vcore-elunes-recording-loader.json`. Sicherer Logout bleibt angefordert,
bis die Aufzeichnung beendet ist. Recorder-Startentfernung5Yards jetzt live.
Kein neuer Commit oder Push.
@@ -0,0 +1,64 @@
# Capital Cataclysm portals and Tol Barad
World migration `2026_10_29_07_capital_cataclysm_portals.sql` adds twelve native
GameObject portal graph bindings, six for each capital. Source faction ACL is
Alliance1 or Horde2; destination area rules retain precedence. Imports and SQL
seed only: existing enabled flags and manually adjusted positions survive.
| Destination | Stormwind spawn | Orgrimmar spawn |
| --- | --- | --- |
| Hyjal | 200624 | 219028 |
| Deepholm | 200625 | 211258 |
| Uldum | 200626 | 211259 |
| Twilight Highlands | 200627 | 211260 |
| Tol Barad Peninsula | 220365 | 211264 |
| Vashj'ir | 220366 | 211257 |
Orgrimmar Tol Barad duplicate219035 is coincident with211264 and deliberately
has no second graph edge. Its shared template receives the same repair.
Nine existing portal templates worked in native tests without caster changes.
Orgrimmar Tol Barad206595 accepted clicks but failed to transfer Edwin85 in two
attempts; changing only this template to native visitor-cast mode made its
88341 teleport work. Native target coordinates and conditions remain unchanged.
An early Hyjal failure inference was corrected: first save/read was too early,
final save showed successful arrival. No blanket caster change was retained.
Vashj'ir server-only spells90244/90245 had neither effects nor target positions.
The migration supplies direct native teleport effects160117/160118 and visitor
casting for207690/207691. The fixed landing comes from the existing project
SmugglersScar game_tele1514 at map0(-4570.29,3478.06,-101.809). This is a deliberate
fixed cave destination, not reconstructed retail quest-progress destination
selection. No quest completion is granted or visibility condition bypassed.
Vashj'ir and children remain closed by unchanged area5146 faction mask0. Both
source and destination nodes and the portal edges exist/enabled. Native area
queries for Alliance35 and Horde36 resolve the landing to5057 with inherited
factionMask0 and allowed0. Actual hard travel_to_node attempts are rejected with
`destination node denied by area/node catalog` for both factions. Diagnostic
native-click tests intentionally exercise the underlying portal, outside
ordinary autonomous planning; the ban was never disabled.
## Verification and cleanup
Twelve native CMSG_GAMEOBJ_USE clicks with level85 Karggan35 and Edwin36 reached
their expected spell_target_position destinations. Full position snapshots are
in checkpoints/2026-10-29-capital-cata-portals/probes.json. Before-Tol-fix output
is retained separately. An initial post-restart retest attempted a click before
Edwin finished login and was rejected; the successful retest waited for online
state and native interaction-range validation. Do not count that login race as
a portal failure or an unverified success.
Migration replay preserved binding/effect/target results. Existing native portal
use, transfer/ACK and area-node regressions passed. No new C++ changes/build were
required; two restarts loaded server spell/template DB changes. Final server
PID362937 under gdb/tmux vcore-worldserver, console
/tmp/vcore-cata-portals-final-start-20261029.log; freshready11s,8085/8087 verified.
Known OutdoorPvP shutdown fault traces retained in earlier consoles.
The two temporary specific profiles were removed and generated profiles plus
daily schedules restored. Testbots returned to their own capitals. Twelve
vcore_cata_probe_* game_tele fixtures were deleted and cache reloaded (count0).
No human character modified. Prior uncommitted transport fixes preserved.
Native transfers are verified; final client-side visual acceptance remains with
the user. No commit or push requested for this task.
+92
View File
@@ -0,0 +1,92 @@
# Hauptstadt-Portale: Untersuchung vom 30.10.2026
Vorherige abgeschlossene Änderungen lokal als `649915e575` committed, kein Push.
## Direkt ergänzte Verbindungen im laufenden Graphen
Über den vorhandenen nativen Import erfolgreich registriert:
| Ort | Spawn | Verbindung |
|---|---:|---|
| Eisenschmiede |217855|Verwüstete Lande|
| Darnassus |219119|Verwüstete Lande|
| Exodar |151163|Verwüstete Lande|
| Darnassus |219120|Exodar|
| Unterstadt |203251|Verwüstete Lande|
| Donnerfels |214456|Verwüstete Lande|
| Silbermond |151162|Verwüstete Lande|
| Dalaran |56568|Orgrimmar|
| Dalaran |61217|Sturmwind|
| Dalaran |57634|Höhlen der Zeit|
| Dalaran |60709|Purpursalon|
| Dalaran |151243|Violette Zitadelle|
Sturmwind und Orgrimmar besitzen bereits ihre Cata-Portale und Verbindungen zu den
Verwüsteten Landen. Doppelte vorhandene Spawnpositionen werden getrennt geprüft;
keine vorhandenen Koordinaten oder manuell deaktivierten Kanten überschrieben.
Vashj'ir bleibt durch den Gebietskatalog gesperrt.
## Installierte Unterstützung nativer Klickportale
Die Translokationskugeln Silbermond12608/Unterstadt203457 sind GOOBER(type10),
keine SPELLCASTER(type22). Native Spellskripte35376→25649 bzw35727→35730
lassen den Besucher den eigentlichen Teleport auf sich selbst wirken. Shattraths
Portal zur Insel Quel'Danas47196 hat eine entsprechende Skriptkette44876→44870.
Dalarans Wintergrasp-Portal61496 nutzt einen festen nativen Skript-Teleport.
Der Resolver akzeptiert deshalb zusätzlich harmlose Goober ohne Quest, Event,
Gossip, Schloss, Verbrauch oder gekoppelte Falle. Aufgelöst werden ausschließlich
feste native DB-Ziele, einzelne Besucher-Selbstcasts oder einzelne feste native
Teleportaktionen; keine beliebigen Skripte oder geratenen Zielpositionen.
Zyklen, mehrere Aktionen, andere Zielrollen und zu lange Verzögerungen bleiben
abgewiesen. Tatsächliche Benutzung weiterhin über normalen GameObject-Click,
native Bedingungen, Sichtbarkeit, Phase, Reichweite und Teleport-ACK.
Voraussetzungen aller aufgelösten Zauber werden vor der Routenplanung geprüft.
Neue reproduzierbare Migration:
`sql/custom/world/2026_10_30_01_capital_click_portals.sql` (angewendet und auf Idempotenz geprüft).
Sie erhält vorhandene Positionen, Kosten, Sperren und manuelle Fraktionsmasken.
Maelstrom-Questportale erhalten sichtbare Nodes, aber keine aktive gewöhnliche
Transitkante. Nicht gespawnte Exodar→Darnassus- und Shattrath→Orgrimmar-Templates
werden nicht als künstliche Portale erzeugt.
Shattraths Sturmwind-Kante1752 wurde nach erfolgreichem nativen Klicktest von
ihrer überholten LOS-Testsperre befreit. Die Migration trifft ausschließlich die
Kante mit genau diesem alten Diagnosekommentar. Sonstige Sperren bleiben erhalten.
Das Rückportal Purpursalon→Violette Zitadelle benötigte ebenfalls den öffentlichen
Player-Cast-Modus; ausschließlich Template194012/Spell61420 wurde korrigiert.
Zusätzlich ergänzt: Dalarans Brunnen-Portal (AreaTrigger5273), dessen Position
aus den lokalen Cataclysm-DBC und dessen Ziel aus der nativen DB stammen.
## Prüfung
Build mit `-j10` erfolgreich; nach sauberem Herunterfahren installiert. Beide
Neustarts erreichten frisch `(worldserver-daemon) ready...`; Prozess und Ports
8085/8087 geprüft. Alle114 Clientless-Tests bestanden. Resolver-/Executor-/ACK-
Tests und SQL-Fixtures nach den letzten SQL-Anpassungen erneut bestanden.
`git diff --check` sauber. Die SQL-Fixtures prüfen unter anderem native direkte
und Skriptziele, Fraktionsmasken, Spawn-Entry-Zuordnung, Quest-Sperren, Idempotenz,
den gezielten Player-Cast-Fix und Erhalt manueller Positionen/Kosten/Sperren.
Alle17 untersuchten Portalspawns wurden mit normalen, passend gelevelten Bots
über den nativen GameObject-Klick erfolgreich benutzt:
217855,203251,219119,151163,214456,151162,219120,12608,203457,56568,61217,
57634,60709,151243,61496,83,47196.
Prüfung erfolgte durch Vergleich des tatsächlich gespeicherten Karten-/XYZ-Ziels
mit dem nativen Portalziel. Adminteleports dienten nur dem Aufstellen an der
Quelle. Drei erste Horde-Versuche schlugen bei zu frühem Klick nach dem
Aufstellen fehl; Wiederholungen nach Abschluss des Transfers waren erfolgreich.
Das Purpursalon-Rückportal bestand nach dem gezielten Player-Cast-Fix.
Nachweise unter `/tmp/vcore-capital-portals-state/probe-*.json`.
Dies bestätigt einzelne native Portalbenutzungen, keine vollständige Langzeit-
Abnahme sämtlicher AdventureBot-Reisen durch die neuen Kanten.
Die14 zuvor blockierten Bots wurden mit expliziter einmaliger Nutzerfreigabe
geborgen und anschließend nativ sicher ausgeloggt. Vor dem Build waren
pending=0/sessions=0 bestätigt. Daraus folgt keine weitere Ausnahme von der
Build-Regel. Temporäre Testprofile und19Teleportmarken wurden entfernt, ursprüngliche
Positionen wiederhergestellt und beide Testbots sicher ausgeloggt. Loaderwert1
ist wiederhergestellt; alle vier Zielpools50/5/50/5 werden schrittweise geladen.
Letzte Statusprüfung: known110,12online (3jePool), kein Loaderfehler; beide
Testbots verwenden wieder ihre ursprünglichen generierten Profile.
@@ -0,0 +1,60 @@
TrinityCore rev. e18a416bf445+ 2026-10-27 20:10:13 +0100 (feature/clientless-player-core branch) (Unix, Debug, Static) (worldserver-daemon) ready...
COMBAT_START guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' training=1 defending=0 until=1793138792
COMBAT_CAST guid=26 target='GUID Full: 0x000000000000001a Type: Player Low: 26' spell=6673
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=78
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=772
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=12294
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=1464
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=1464
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=1464
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=12294
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=78
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=772
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=7384
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=1464
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=7384
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=12294
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=1464
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=772
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=78
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=7384
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=12294
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=78
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=7384
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=772
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=78
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=7384
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=12294
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=7384
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=1464
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=772
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=78
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=12294
COMBAT_CAST guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' spell=78
COMBAT_END guid=26 target='GUID Full: 0xf1307f9a0000050b Type: Creature Entry: 32666 Low: 1291' training=1
COMBAT_START guid=26 target='GUID Full: 0xf130a56000000b17 Type: Creature Entry: 42336 Low: 2839' training=0 defending=0 until=0
COMBAT_END guid=26 target='GUID Full: 0xf130a56000000b17 Type: Creature Entry: 42336 Low: 2839' training=0
COMBAT_START guid=26 target='GUID Full: 0xf130a56000000b17 Type: Creature Entry: 42336 Low: 2839' training=0 defending=1 until=0
COMBAT_CAST guid=26 target='GUID Full: 0xf130a56000000b17 Type: Creature Entry: 42336 Low: 2839' spell=12294
COMBAT_CAST guid=26 target='GUID Full: 0xf130a56000000b17 Type: Creature Entry: 42336 Low: 2839' spell=78
COMBAT_CAST guid=26 target='GUID Full: 0xf130a56000000b17 Type: Creature Entry: 42336 Low: 2839' spell=772
COMBAT_END guid=26 target='GUID Full: 0xf130a56000000b17 Type: Creature Entry: 42336 Low: 2839' training=0
DEATH_TEST_REQUEST guid=26
DEATH_RELEASE guid=26
DEATH_CEMETERY_REVIVE guid=26
COMBAT_START guid=26 target='GUID Full: 0xf130b03f00000ae8 Type: Creature Entry: 45119 Low: 2792' training=0 defending=1 until=0
COMBAT_CAST guid=26 target='GUID Full: 0x000000000000001a Type: Player Low: 26' spell=6673
COMBAT_CAST guid=26 target='GUID Full: 0xf130b03f00000ae8 Type: Creature Entry: 45119 Low: 2792' spell=78
COMBAT_CAST guid=26 target='GUID Full: 0xf130b03f00000ae8 Type: Creature Entry: 45119 Low: 2792' spell=772
COMBAT_CAST guid=26 target='GUID Full: 0xf130b03f00000ae8 Type: Creature Entry: 45119 Low: 2792' spell=7384
COMBAT_CAST guid=26 target='GUID Full: 0xf130b03f00000ae8 Type: Creature Entry: 45119 Low: 2792' spell=12294
COMBAT_END guid=26 target='GUID Full: 0xf130b03f00000ae8 Type: Creature Entry: 45119 Low: 2792' training=0
COMBAT_START guid=26 target='GUID Full: 0xf130b03f00000ae7 Type: Creature Entry: 45119 Low: 2791' training=0 defending=1 until=0
COMBAT_CAST guid=26 target='GUID Full: 0xf130b03f00000ae7 Type: Creature Entry: 45119 Low: 2791' spell=12294
COMBAT_CAST guid=26 target='GUID Full: 0xf130b03f00000ae7 Type: Creature Entry: 45119 Low: 2791' spell=772
COMBAT_CAST guid=26 target='GUID Full: 0xf130b03f00000ae7 Type: Creature Entry: 45119 Low: 2791' spell=7384
COMBAT_END guid=26 target='GUID Full: 0xf130b03f00000ae7 Type: Creature Entry: 45119 Low: 2791' training=0
DEATH_TEST_REQUEST guid=26
DEATH_RELEASE guid=26
DEATH_CORPSE_RUN guid=26 path=37.40
DEATH_RECLAIM guid=26
@@ -0,0 +1,16 @@
2026-10-27_23:05:32 INFO [server.adventurebot.navigation] NAV_PLAN seq=1 guid=26 name='Arthoran' map=0 segment=0 start=(-8744.788 319.742 100.549) target=(-8745.762 312.810 100.206) type=0x1 calculated=1 complete=1 suspicious=0 points=3 direct=7.01 path=7.02 maxSegment=4.00 maxZDelta=0.31 finalDistance=0.00 repaths=0 reason='ok'
2026-10-27_23:05:32 INFO [server.adventurebot.navigation] NAV_EXEC seq=1 guid=26 name='Arthoran' segment=1 splinePoints=3 splineLength=7.07 segmentEnd=(-8745.762 312.810 100.206) target=(-8745.762 312.810 100.206) walk=0
2026-10-27_23:05:32 INFO [server.adventurebot.navigation] NAV_START guid=26 name='Arthoran' map=0 target=(-8745.762 312.810 100.206) remaining=5.51 state=Moving
2026-10-27_23:05:33 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=1 guid=26 segment=1 pos=(-8745.745 312.927 100.193) remaining=0.00 deviation=0.00 splineActive=1 repaths=0
2026-10-27_23:06:54 INFO [server.adventurebot.navigation] NAV_PLAN seq=2 guid=26 name='Arthoran' map=0 segment=0 start=(-11831.100 -2510.480 -20.070) target=(-11841.850 -2510.480 -20.025) type=0x1 calculated=1 complete=1 suspicious=0 points=4 direct=10.75 path=10.79 maxSegment=4.03 maxZDelta=0.46 finalDistance=0.00 repaths=0 reason='ok'
2026-10-27_23:06:54 INFO [server.adventurebot.navigation] NAV_EXEC seq=2 guid=26 name='Arthoran' segment=1 splinePoints=4 splineLength=10.85 segmentEnd=(-11841.850 -2510.480 -20.025) target=(-11841.850 -2510.480 -20.025) walk=0
2026-10-27_23:06:54 INFO [server.adventurebot.navigation] NAV_START guid=26 name='Arthoran' map=0 target=(-11841.850 -2510.480 -20.025) remaining=9.25 state=Moving
2026-10-27_23:06:55 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=2 guid=26 segment=1 pos=(-11838.028 -2510.480 -19.686) remaining=2.34 deviation=0.00 splineActive=1 repaths=0
2026-10-27_23:13:16 INFO [server.adventurebot.navigation] NAV_PLAN seq=3 guid=26 name='Arthoran' map=0 segment=0 start=(-12186.000 -2566.580 3.966) target=(-12187.900 -2603.740 1.578) type=0x1 calculated=1 complete=1 suspicious=0 points=11 direct=37.29 path=37.40 maxSegment=4.06 maxZDelta=0.68 finalDistance=0.00 repaths=0 reason='ok'
2026-10-27_23:13:16 INFO [server.adventurebot.navigation] NAV_EXEC seq=3 guid=26 name='Arthoran' segment=1 splinePoints=11 splineLength=37.40 segmentEnd=(-12187.900 -2603.740 1.578) target=(-12187.900 -2603.740 1.578) walk=0
2026-10-27_23:13:16 INFO [server.adventurebot.navigation] NAV_START guid=26 name='Arthoran' map=0 target=(-12187.900 -2603.740 1.578) remaining=35.79 state=Moving
2026-10-27_23:13:17 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=3 guid=26 segment=1 pos=(-12186.536 -2577.073 3.698) remaining=25.29 deviation=0.00 splineActive=1 repaths=0
2026-10-27_23:13:18 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=3 guid=26 segment=1 pos=(-12187.064 -2587.424 2.146) remaining=14.85 deviation=0.00 splineActive=1 repaths=0
2026-10-27_23:13:19 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=3 guid=26 segment=1 pos=(-12187.603 -2597.920 1.355) remaining=4.33 deviation=0.00 splineActive=1 repaths=0
2026-10-27_23:13:20 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=3 guid=26 segment=1 pos=(-12187.900 -2603.740 1.578) remaining=0.00 deviation=0.00 splineActive=0 repaths=0
2026-10-27_23:13:20 INFO [server.adventurebot.navigation] NAV_COMPLETE seq=3 guid=26 name='Arthoran' remaining=0.00 repaths=0 segments=1 maxDeviation=0.00
@@ -0,0 +1,8 @@
Final Debug build -j10 and installation succeeded.
51 tests/clientless/test_*.py scripts passed.
Live native training: 60 seconds, valid real dummy, normal MMAP approach and regular end.
Real combat: spawn300425 entry42336 level58; native hostile/LOS/phase/strength/path checks; creature killed with native respawn record.
Death fixture1: explicit native testdeath, normal release at1793138872; no acceptable MMAP route; no accelerated clock; cemetery resurrection after1793139172 without sickness.
Death fixture2: explicit native testdeath at nearby native ground point; ghost path37.40 yards; native reclaim; saved aliveHP4340, no corpse or sickness.
Administrative offline positioning used for isolated tests, not evidence of long-distance travel.
Native restarts during a ghost run and multi-attacker focus were exercised by production adapter tests, not live multi-actor gameplay.
@@ -0,0 +1,339 @@
# Vcore Development Environment
## Project
Vcore is a custom World of Warcraft Cataclysm 4.3.4 server based on TrinityCore.
This environment is a dedicated development and test server.
The current development focus is the Clientless Player Core and AdventureBot infrastructure.
## Repository and Git Rules
Repository:
`/home/wow_admin/wow_cata_server/source/TrinityCore`
Authorized development branch:
`feature/clientless-player-core`
Rules:
- Work exclusively on the authorized development branch.
- Never switch to, modify, reset, rebase, or merge `master`.
- Never push to `master`.
- Never push any branch without explicit user approval.
- Local commits are permitted.
- Never discard existing changes without approval.
- Never force-push.
- Check the current branch and working tree before making changes.
- Stop and request clarification if the working tree contains unexpected changes.
## Development Permissions
Codex is authorized to:
- Read and modify Vcore source code.
- Implement new features and fix bugs.
- Run CMake and compile Vcore.
- Investigate and resolve compilation errors.
- Install compiled binaries into the testserver installation.
- Start, stop, and restart the test worldserver.
- Inspect logs and server output.
- Modify test databases when required for an authorized task.
- Execute local tests and create local commits.
Codex must never:
- Modify the production server.
- Deploy changes to production.
- Push changes without explicit approval.
- Modify or merge the protected `master` branch.
- Discard user changes without approval.
## Read-only Diagnostics
- Reading the development/test server logs and project files is already authorized.
- Use direct read-only commands such as `rg`, `tail`, `sed`, `cat`, and `stat` inside the sandbox for ordinary file inspection. Do not request elevated execution preemptively for these reads.
- Keep file inspection separate from tmux access, database queries, writes, and lifecycle actions so those actions do not unnecessarily escalate log reading.
- Do not request blanket approval for Python, other interpreters, or shell execution to read logs.
- If a read actually fails because of a technical sandbox restriction, follow the execution environment's escalation rules and request only the narrow access needed. Project authorization does not override the sandbox.
## Directory Structure
Source:
`/home/wow_admin/wow_cata_server/source/TrinityCore`
Build directory:
`/home/wow_admin/wow_cata_server/build/debug`
Server installation:
`/home/wow_admin/wow_cata_server/server/debug`
Worldserver executable:
`/home/wow_admin/wow_cata_server/server/debug/bin/worldserver`
## Build and Installation
Use the existing CMake build configuration.
Inspect the build configuration before changing it.
Build directory:
`/home/wow_admin/wow_cata_server/build/debug`
Install directory:
`/home/wow_admin/wow_cata_server/server/debug`
After successful compilation, install the resulting binaries using the existing CMake installation configuration.
Do not overwrite running executables.
Stop the test worldserver cleanly before installing updated binaries.
Do not delete existing server configuration, logs, databases, or data files.
## Worldserver Management
The test worldserver runs inside a dedicated tmux session.
Session name:
`vcore-worldserver`
Working directory:
`/home/wow_admin/wow_cata_server/server/debug/bin`
Executable:
`./worldserver`
Codex is authorized to start, stop, restart, and recover the test worldserver autonomously.
### Starting the Worldserver
Before starting:
1. Check whether a worldserver instance is already running.
2. Check whether the `vcore-worldserver` tmux session already exists.
3. Never start a second worldserver instance while another instance is active.
4. Remove stale tmux sessions only after verifying their state.
Start command:
```bash
tmux new-session -d -s vcore-worldserver \
-c /home/wow_admin/wow_cata_server/server/debug/bin \
'./worldserver'
```
### Startup Verification
A successfully created tmux session does not indicate successful worldserver startup.
The Vcore worldserver reports successful initialization with a final console message similar to:
```text
World initialized in 0 minutes 10 seconds
TrinityCore rev. <revision> (...) (worldserver-daemon) ready...
```
The authoritative startup indicator is:
`(worldserver-daemon) ready...`
The revision, branch, build configuration, and initialization time may vary.
After starting the worldserver:
1. Monitor the worldserver process and console output.
2. Wait for the `(worldserver-daemon) ready...` message.
3. Verify that the worldserver process remains running.
4. Check for critical startup errors.
5. Verify that the configured worldserver port is listening.
Only report successful startup when these checks pass.
Capture console output from the beginning of the current startup attempt to avoid mistaking messages from an earlier run for current startup success.
If the worldserver exits, hangs, or fails to reach the ready state within a reasonable timeout, follow the startup failure recovery procedure.
### Startup Failure Recovery
The test worldserver may occasionally fail to start because the remote authentication database on the VPS is temporarily unreachable.
When startup fails:
1. Capture relevant console output and logs.
2. Determine whether the worldserver process is still running.
3. Check whether the tmux session is still active.
4. If the TrinityCore console is responsive, attempt a graceful shutdown.
5. If the console is unavailable or unresponsive, terminate the failed worldserver process and its dedicated tmux session.
6. Verify that the previous worldserver process has terminated.
7. Ensure that no stale process remains before restarting.
8. Wait briefly before retrying.
9. Create a fresh tmux session and start the worldserver again.
10. Repeat startup verification.
For startup recovery, Codex may terminate the dedicated test worldserver process and tmux session when graceful shutdown is impossible.
Do not terminate unrelated processes or tmux sessions.
### Retry Policy
Use a maximum of three startup attempts per restart operation.
Wait approximately 10 seconds between attempts.
If startup fails repeatedly:
- Stop retrying.
- Preserve the relevant logs.
- Report the observed errors.
- Explain whether the failure appears related to database connectivity, configuration, compilation, or another cause.
- Do not claim that the testserver is operational.
Do not attempt to repair the remote VPS authentication database or production infrastructure.
### TrinityCore Console Commands
Codex may execute TrinityCore console commands through tmux.
Example:
```bash
tmux send-keys -t vcore-worldserver '.server shutdown 10' Enter
```
Read console output:
```bash
tmux capture-pane -p -t vcore-worldserver -S -100
```
### Graceful Shutdown
For a normally running worldserver, use:
`.server shutdown 10`
Send the command through tmux:
```bash
tmux send-keys -t vcore-worldserver '.server shutdown 10' Enter
```
After issuing the command:
1. Wait for the worldserver to terminate.
2. Verify that the process has stopped.
3. Verify that the tmux session has ended.
4. Only then install new binaries or start another worldserver instance.
If the console is unresponsive, Codex may terminate the dedicated test worldserver process.
Prefer SIGTERM before SIGKILL.
Use SIGKILL only when the process cannot be stopped normally.
### Restart Procedure
1. Verify the current worldserver state.
2. If running normally, initiate graceful shutdown.
3. If the console is unavailable, use the recovery shutdown procedure.
4. Wait for complete process termination.
5. Install successfully compiled binaries if required.
6. Start a fresh tmux session.
7. Verify successful worldserver initialization.
8. If startup fails, follow the startup recovery procedure.
9. Report the final server state.
### Safety
This is a dedicated development and test environment.
Codex is authorized to manage the test worldserver autonomously, including recovery from failed startup attempts.
Never terminate unrelated services or processes.
Never execute worldserver management commands on production infrastructure.
## AdventureBot Architecture
Preserve the existing Clientless Player Core architecture.
Important components include:
- ClientlessTravelMgr
- ClientlessTravelGraphMgr
- ClientlessActionExecutorMgr
- Lua-based bot control
- MMAP navigation
- TravelGraph routing
Architecture principles:
- Clientless Player Core provides generic clientless player functionality.
- AdventureBots are built on top of this infrastructure.
- TravelGraph handles long-distance travel.
- MMAP navigation handles local movement.
- DungeonBots remain independent from AdventureBots.
- AdventureBots must not become infrastructure dependencies for unrelated game systems.
Prefer extending the existing implementation over replacing it.
## Development Workflow
For each development task:
1. Verify the current Git branch and working tree.
2. Inspect the relevant existing implementation.
3. Plan nontrivial changes before implementation.
4. Implement the requested functionality.
5. Compile the affected components.
6. Resolve compilation errors.
7. Install the new build when appropriate.
8. Restart the test worldserver when necessary.
9. Inspect logs and available test results.
10. Report what changed, what was tested, and what remains unverified.
11. Wait for user feedback before pushing changes.
Do not claim that gameplay functionality is verified solely because compilation succeeded.
The user performs final in-game acceptance testing.
## Rollback
When requested, restore the previous implementation without modifying `master`.
Prefer targeted reversions of the relevant development changes.
Never use destructive Git commands without checking whether unrelated work would be lost.
Database rollbacks must be limited to the changes associated with the development task.
## General Principles
- Preserve existing Vcore functionality.
- Avoid unnecessary architectural rewrites.
- Prefer targeted, maintainable changes.
- Investigate root causes instead of masking symptoms.
- Keep the test environment reproducible.
- Clearly distinguish successful builds, automated tests, and verified gameplay behavior.
## Saved session / Wiederaufnahme
Before starting new work, read `doc/clientless/SESSION-RESUME.md`. It records the
user-requested checkpoint, unfinished profession intent, agreed Lua professions,
build/test state and exact next steps. Preserve the saved WIP; do not restart or
revert it. All development/server/branch rules above remain in force.
@@ -0,0 +1,14 @@
TrinityCore rev. 722b513ee01b+ 2026-10-27 17:02:01 +0100 (feature/clientless-player-core branch) (Unix, Debug, Static) (worldserver-daemon) ready...
PROFILE_PROFESSIONS guid=26 primary=2
ClientlessLua[26]: Arthoran ready; no automatic test journey queued
INTENT_TRAVEL guid=26 intent='profession' location='poi_tele_338' area=1
INTENT_ARRIVED guid=26 intent='profession' location='poi_tele_338'
PROFESSION_WORK_COMPLETE guid=26 kind='profession_tools' target=''
LEISURE_WALK_PLAN guid=26 kind='work_search' span=103.64 outbound=6 origin=(-8888.98 -0.54 94.39) goal=(-8978.85 -52.09 91.55)
LEISURE_WAYPOINT guid=26 kind='work_search' reached=1/6
LEISURE_WAYPOINT guid=26 kind='work_search' reached=2/6
LEISURE_WAYPOINT guid=26 kind='work_search' reached=3/6
LEISURE_WAYPOINT guid=26 kind='work_search' reached=4/6
LEISURE_WAYPOINT guid=26 kind='work_search' reached=5/6
LEISURE_WAYPOINT guid=26 kind='work_search' reached=6/6
LEISURE_COMPLETE guid=26 kind='work_search' legs=6
@@ -0,0 +1,44 @@
from pathlib import Path
import os,re,subprocess,sys
config=Path('/home/wow_admin/wow_cata_server/server/debug/etc/worldserver.conf').read_text()
h,port,u,password,db=re.search(r'^WorldDatabaseInfo\s*=\s*"([^"]+)"',config,re.M).group(1).split(';')
args=['mysql','--protocol=TCP','--host='+h,'--port='+port,'--user='+u,'--database='+db,'--batch','--default-character-set=utf8mb4','--connect-timeout=10']
env=os.environ.copy();env['MYSQL_PWD']=password
op=sys.argv[1] if len(sys.argv)>1 else ''
if op=='state':
h,port,u,password,db=re.search(r'^CharacterDatabaseInfo\s*=\s*"([^"]+)"',config,re.M).group(1).split(';')
args=['mysql','--protocol=TCP','--host='+h,'--port='+port,'--user='+u,'--database='+db,'--batch','--default-character-set=utf8mb4','--connect-timeout=10']
env['MYSQL_PWD']=password
if op=='state':
query="SELECT guid,money FROM characters WHERE guid=26; SELECT item,bag,slot FROM character_inventory WHERE guid=26 ORDER BY bag,slot,item; SELECT guid,itemEntry,count FROM item_instance WHERE owner_guid=26 ORDER BY guid;"
elif op=='workstation_inspect':
query="""SELECT data0 AS focus_id,COUNT(*) AS n,LEFT(GROUP_CONCAT(DISTINCT name ORDER BY name SEPARATOR ', '),600) AS examples FROM gameobject_template WHERE type=8 GROUP BY data0 ORDER BY data0; SELECT entry,name,type,data0 FROM gameobject_template WHERE name REGEXP 'Alchemy|Alchemist|Workbench|Loom|Tanning|Sewing|Enchanter|Runeforge|Cooking Fire|Campfire' AND type IN (5,8,10) ORDER BY entry LIMIT 65; SHOW CREATE TABLE npc_trainer; SHOW CREATE TABLE trainer; SHOW CREATE TABLE creature_trainer;"""
elif op=='profession_inspect':
query="""SELECT t.entry,t.name,t.type,t.data0,t.data1 FROM gameobject_template t WHERE (t.type=8 AND (t.name REGEXP 'Anvil|Forge|Alchemy|Loom|Workbench|Enchant|Tanning|Cooking')) OR (t.type=3 AND t.name IN ('Copper Vein','Silverleaf','Peacebloom')) ORDER BY t.type,t.data0,t.entry LIMIT 90; SELECT w.point_key,a.display_name,w.category,w.map,w.position_x,w.position_y,w.position_z,a.is_area,a.area_id,a.zone_id FROM vcore_clientless_world_point w JOIN vcore_adventure_location a USING(point_key) WHERE w.enabled=1 AND (a.is_area=1 AND a.zone_id=12 OR w.category='workshop' AND a.zone_id=1519) ORDER BY w.point_key LIMIT 25;"""
elif op=='exploration_inspect':
query="""SELECT g.guid,g.id,t.name,t.type,g.position_x,g.position_y,g.position_z FROM gameobject g JOIN gameobject_template t ON t.entry=g.id WHERE g.map=0 AND g.position_x BETWEEN -9000 AND -8750 AND g.position_y BETWEEN 500 AND 750 AND t.type IN (5,9,10) ORDER BY g.id; SELECT w.point_key,a.display_name,w.category,w.map,w.position_x,w.position_y,w.position_z FROM vcore_clientless_world_point w JOIN vcore_adventure_location a USING(point_key) WHERE w.enabled=1 AND w.map=0 AND (a.display_name LIKE '%Northshire%' OR a.display_name LIKE '%Goldshire%' OR a.display_name LIKE '%Stonecairn%') ORDER BY a.display_name;"""
elif op=='exploration_apply':
query='START TRANSACTION;\n'+Path('/home/wow_admin/wow_cata_server/source/TrinityCore/sql/custom/world/2026_10_27_04_adventure_exploration.sql').read_text()+"\nSELECT a.action_key,a.kind,a.requirement,i.weight FROM vcore_adventure_action a JOIN vcore_adventure_action_intent i USING(action_key) WHERE a.action_key LIKE 'adventure_%' OR (a.action_key='explore' AND i.intent='adventure'); COMMIT;"
elif op=='catalog':
query="""SELECT w.point_key,w.category,w.map,w.position_x,w.position_y,w.position_z,w.orientation,w.enabled,COALESCE(w.comment,''),a.display_name,a.source_type,a.source_id,a.area_id,a.zone_id,a.region_key,a.is_area,a.faction FROM vcore_clientless_world_point w JOIN vcore_adventure_location a USING(point_key) ORDER BY w.point_key;"""
elif op=='source_audit':
query="""SELECT id,name,map,position_x,position_y,position_z FROM game_tele WHERE name IN ('Orgrimmar','ThunderBluff','Thunder Bluff','Undercity','SilvermoonCity','Darnassus','TheExodar','Ironforge','Stormwind'); SHOW COLUMNS FROM game_tele; SHOW COLUMNS FROM creature; SELECT c.id,t.name,c.map,c.position_x,c.position_y,c.position_z,COALESCE(NULLIF(c.npcflag,0),t.npcflag) AS flags,t.faction FROM creature c JOIN creature_template t ON t.entry=c.id WHERE t.name IN ('Innkeeper Gryshka','Innkeeper Pala','Innkeeper Allison','Auctioneer Thathung','Auctioneer Chilton') ORDER BY c.map,c.id;"""
elif op=='audit':
query="""SELECT COUNT(*) AS active_locations FROM vcore_clientless_world_point w JOIN vcore_adventure_location a USING(point_key) WHERE w.enabled=1 AND w.category NOT LIKE 'travel%'; SELECT a.source_type,w.category,a.faction,COUNT(*) AS n FROM vcore_adventure_location a JOIN vcore_clientless_world_point w USING(point_key) WHERE w.enabled=1 GROUP BY a.source_type,w.category,a.faction ORDER BY n DESC; SELECT w.point_key,a.display_name,w.category,a.region_key,a.area_id,a.zone_id,a.is_area,a.faction,w.map,w.position_x,w.position_y,w.position_z FROM vcore_adventure_location a JOIN vcore_clientless_world_point w USING(point_key) WHERE w.enabled=1 AND (a.display_name REGEXP 'Orgrimmar|Thunder Bluff|Undercity|Silvermoon|Darnassus|Exodar|Ironforge|Stormwind' OR (a.is_area=1 AND a.zone_id IN (1519,1637,1638,1497,1537,1657,3430,3487,3557))) ORDER BY a.is_area DESC,a.zone_id,w.point_key;"""
elif op=='inspect':
query="""SELECT c.guid,c.id,t.name,t.npcflag,c.position_x,c.position_y,c.position_z,c.orientation FROM creature c JOIN creature_template t ON t.entry=c.id WHERE c.map=0 AND c.position_x BETWEEN -9000 AND -8750 AND c.position_y BETWEEN 450 AND 850 AND (t.npcflag & (128|131072|2097152))<>0 ORDER BY c.id,c.guid; SHOW CREATE TABLE vcore_adventure_location; SHOW CREATE TABLE vcore_clientless_world_point; SELECT category,intent,weight FROM vcore_adventure_location_intent ORDER BY category,intent;"""
elif op=='apply':
query='START TRANSACTION;\n'+Path('/home/wow_admin/wow_cata_server/source/TrinityCore/sql/custom/world/2026_10_27_03_adventure_economy.sql').read_text()+"\nSELECT w.point_key,w.category,w.position_x,w.position_y,w.position_z FROM vcore_clientless_world_point w WHERE w.point_key LIKE 'stormwind_economy_%'; SELECT a.action_key,a.requirement,i.weight FROM vcore_adventure_action a JOIN vcore_adventure_action_intent i USING(action_key) WHERE i.intent='economy'; COMMIT;"
else:raise SystemExit('inspect or apply only')
r=subprocess.run(args,input=query,text=True,capture_output=True,env=env)
if op=='catalog' and not r.returncode:
import hashlib
Path('/tmp/vcore-import-catalog-current.tsv').write_text(r.stdout)
print('Catalog snapshot:',len(r.stdout.splitlines())-1,'records; SHA256',hashlib.sha256(r.stdout.encode()).hexdigest())
elif op=='state' and not r.returncode:
import hashlib
snapshot=Path('/tmp/vcore-economy-state-current.txt');snapshot.write_text(r.stdout)
print('Arthoran persisted money/inventory SHA256:',hashlib.sha256(r.stdout.encode()).hexdigest())
else:print(r.stdout,end='')
if r.stderr:print(r.stderr.replace(password,'[redacted]'),file=sys.stderr,end='')
raise SystemExit(r.returncode)
@@ -0,0 +1,97 @@
2026-10-27_14:10:11 INFO [server.adventurebot.navigation] NAV_PLAN seq=4 guid=26 name='Arthoran' map=0 segment=0 start=(-8848.844 607.931 92.673) target=(-8864.850 595.939 92.645) type=0x1 calculated=1 complete=1 suspicious=0 points=6 direct=20.00 path=20.00 maxSegment=4.00 maxZDelta=0.08 finalDistance=0.00 repaths=0 reason='ok'
2026-10-27_14:10:11 INFO [server.adventurebot.navigation] NAV_EXEC seq=4 guid=26 name='Arthoran' segment=1 splinePoints=6 splineLength=20.00 segmentEnd=(-8864.850 595.939 92.645) target=(-8864.850 595.939 92.645) walk=1
2026-10-27_14:10:11 INFO [server.adventurebot.navigation] NAV_START guid=26 name='Arthoran' map=0 target=(-8864.850 595.939 92.645) remaining=18.50 state=Moving
2026-10-27_14:10:12 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=4 guid=26 segment=1 pos=(-8850.817 606.453 92.631) remaining=16.03 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:13 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=4 guid=26 segment=1 pos=(-8852.901 604.891 92.583) remaining=13.43 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:14 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=4 guid=26 segment=1 pos=(-8854.906 603.389 92.532) remaining=10.93 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:15 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=4 guid=26 segment=1 pos=(-8856.899 601.895 92.520) remaining=8.43 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:16 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=4 guid=26 segment=1 pos=(-8858.903 600.394 92.525) remaining=5.93 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:17 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=4 guid=26 segment=1 pos=(-8860.908 598.892 92.562) remaining=3.43 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:18 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=4 guid=26 segment=1 pos=(-8862.903 597.398 92.603) remaining=0.93 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:19 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=4 guid=26 segment=1 pos=(-8864.850 595.939 92.645) remaining=0.00 deviation=0.00 splineActive=0 repaths=0
2026-10-27_14:10:19 INFO [server.adventurebot.navigation] NAV_COMPLETE seq=4 guid=26 name='Arthoran' remaining=0.00 repaths=0 segments=1 maxDeviation=0.00
2026-10-27_14:10:19 INFO [server.adventurebot.navigation] NAV_PLAN seq=5 guid=26 name='Arthoran' map=0 segment=0 start=(-8864.850 595.939 92.645) target=(-8880.855 583.947 93.233) type=0x1 calculated=1 complete=1 suspicious=0 points=6 direct=20.01 path=20.01 maxSegment=4.00 maxZDelta=0.16 finalDistance=0.00 repaths=0 reason='ok'
2026-10-27_14:10:19 INFO [server.adventurebot.navigation] NAV_EXEC seq=5 guid=26 name='Arthoran' segment=1 splinePoints=6 splineLength=20.01 segmentEnd=(-8880.855 583.947 93.233) target=(-8880.855 583.947 93.233) walk=1
2026-10-27_14:10:19 INFO [server.adventurebot.navigation] NAV_START guid=26 name='Arthoran' map=0 target=(-8880.855 583.947 93.233) remaining=18.51 state=Moving
2026-10-27_14:10:20 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=5 guid=26 segment=1 pos=(-8866.855 594.436 92.748) remaining=16.00 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:21 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=5 guid=26 segment=1 pos=(-8868.860 592.934 92.850) remaining=13.49 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:22 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=5 guid=26 segment=1 pos=(-8870.868 591.430 92.949) remaining=10.98 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:23 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=5 guid=26 segment=1 pos=(-8872.858 589.939 93.033) remaining=8.49 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:24 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=5 guid=26 segment=1 pos=(-8874.869 588.432 93.109) remaining=5.98 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:25 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=5 guid=26 segment=1 pos=(-8876.986 586.846 93.171) remaining=3.34 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:26 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=5 guid=26 segment=1 pos=(-8879.001 585.337 93.208) remaining=0.82 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:27 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=5 guid=26 segment=1 pos=(-8880.855 583.947 93.233) remaining=0.00 deviation=0.00 splineActive=0 repaths=0
2026-10-27_14:10:27 INFO [server.adventurebot.navigation] NAV_COMPLETE seq=5 guid=26 name='Arthoran' remaining=0.00 repaths=0 segments=1 maxDeviation=0.00
2026-10-27_14:10:27 INFO [server.adventurebot.navigation] NAV_PLAN seq=6 guid=26 name='Arthoran' map=0 segment=0 start=(-8880.855 583.947 93.233) target=(-8896.861 571.956 93.007) type=0x1 calculated=1 complete=1 suspicious=0 points=6 direct=20.00 path=20.01 maxSegment=4.01 maxZDelta=0.24 finalDistance=0.00 repaths=0 reason='ok'
2026-10-27_14:10:27 INFO [server.adventurebot.navigation] NAV_EXEC seq=6 guid=26 name='Arthoran' segment=1 splinePoints=6 splineLength=20.01 segmentEnd=(-8896.861 571.956 93.007) target=(-8896.861 571.956 93.007) walk=1
2026-10-27_14:10:27 INFO [server.adventurebot.navigation] NAV_START guid=26 name='Arthoran' map=0 target=(-8896.861 571.956 93.007) remaining=18.50 state=Moving
2026-10-27_14:10:28 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=6 guid=26 segment=1 pos=(-8882.869 582.439 93.283) remaining=15.99 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:29 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=6 guid=26 segment=1 pos=(-8884.861 580.946 93.305) remaining=13.50 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:30 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=6 guid=26 segment=1 pos=(-8886.878 579.435 93.286) remaining=10.98 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:31 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=6 guid=26 segment=1 pos=(-8888.862 577.948 93.161) remaining=8.50 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:32 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=6 guid=26 segment=1 pos=(-8890.875 576.440 93.029) remaining=5.98 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:33 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=6 guid=26 segment=1 pos=(-8892.880 574.939 92.978) remaining=3.47 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:34 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=6 guid=26 segment=1 pos=(-8894.883 573.438 92.976) remaining=0.97 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:35 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=6 guid=26 segment=1 pos=(-8896.861 571.956 93.007) remaining=0.00 deviation=0.00 splineActive=0 repaths=0
2026-10-27_14:10:35 INFO [server.adventurebot.navigation] NAV_COMPLETE seq=6 guid=26 name='Arthoran' remaining=0.00 repaths=0 segments=1 maxDeviation=0.00
2026-10-27_14:10:35 INFO [server.adventurebot.navigation] NAV_PLAN seq=7 guid=26 name='Arthoran' map=0 segment=0 start=(-8896.861 571.956 93.007) target=(-8912.868 559.964 94.237) type=0x1 calculated=1 complete=1 suspicious=0 points=6 direct=20.04 path=20.04 maxSegment=4.02 maxZDelta=0.35 finalDistance=0.00 repaths=0 reason='ok'
2026-10-27_14:10:35 INFO [server.adventurebot.navigation] NAV_EXEC seq=7 guid=26 name='Arthoran' segment=1 splinePoints=6 splineLength=20.04 segmentEnd=(-8912.868 559.964 94.237) target=(-8912.868 559.964 94.237) walk=1
2026-10-27_14:10:35 INFO [server.adventurebot.navigation] NAV_START guid=26 name='Arthoran' map=0 target=(-8912.868 559.964 94.237) remaining=18.54 state=Moving
2026-10-27_14:10:36 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=7 guid=26 segment=1 pos=(-8898.871 570.450 93.132) remaining=16.02 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:37 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=7 guid=26 segment=1 pos=(-8900.871 568.951 93.277) remaining=13.52 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:38 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=7 guid=26 segment=1 pos=(-8902.853 567.467 93.451) remaining=11.04 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:39 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=7 guid=26 segment=1 pos=(-8904.854 565.968 93.614) remaining=8.53 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:40 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=7 guid=26 segment=1 pos=(-8906.861 564.464 93.785) remaining=6.02 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:41 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=7 guid=26 segment=1 pos=(-8908.854 562.970 94.006) remaining=3.52 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:42 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=7 guid=26 segment=1 pos=(-8910.836 561.486 94.147) remaining=1.04 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:43 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=7 guid=26 segment=1 pos=(-8912.854 559.974 94.236) remaining=0.00 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:44 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=7 guid=26 segment=1 pos=(-8912.868 559.964 94.237) remaining=0.00 deviation=0.00 splineActive=0 repaths=0
2026-10-27_14:10:44 INFO [server.adventurebot.navigation] NAV_COMPLETE seq=7 guid=26 name='Arthoran' remaining=0.00 repaths=0 segments=1 maxDeviation=0.00
2026-10-27_14:10:48 INFO [server.adventurebot.navigation] NAV_PLAN seq=8 guid=26 name='Arthoran' map=0 segment=0 start=(-8912.868 559.964 94.237) target=(-8896.861 571.956 93.007) type=0x1 calculated=1 complete=1 suspicious=0 points=6 direct=20.04 path=20.04 maxSegment=4.02 maxZDelta=0.35 finalDistance=0.00 repaths=0 reason='ok'
2026-10-27_14:10:48 INFO [server.adventurebot.navigation] NAV_EXEC seq=8 guid=26 name='Arthoran' segment=1 splinePoints=6 splineLength=20.04 segmentEnd=(-8896.861 571.956 93.007) target=(-8896.861 571.956 93.007) walk=1
2026-10-27_14:10:48 INFO [server.adventurebot.navigation] NAV_START guid=26 name='Arthoran' map=0 target=(-8896.861 571.956 93.007) remaining=18.54 state=Moving
2026-10-27_14:10:49 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=8 guid=26 segment=1 pos=(-8910.871 561.460 94.149) remaining=16.04 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:50 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=8 guid=26 segment=1 pos=(-8908.852 562.973 94.006) remaining=13.52 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:51 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=8 guid=26 segment=1 pos=(-8906.845 564.476 93.783) remaining=11.00 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:52 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=8 guid=26 segment=1 pos=(-8904.964 565.885 93.622) remaining=8.64 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:53 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=8 guid=26 segment=1 pos=(-8902.808 567.501 93.447) remaining=5.94 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:54 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=8 guid=26 segment=1 pos=(-8900.805 569.002 93.271) remaining=3.43 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:55 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=8 guid=26 segment=1 pos=(-8898.807 570.499 93.128) remaining=0.93 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:56 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=8 guid=26 segment=1 pos=(-8896.861 571.956 93.007) remaining=0.00 deviation=0.00 splineActive=0 repaths=0
2026-10-27_14:10:56 INFO [server.adventurebot.navigation] NAV_COMPLETE seq=8 guid=26 name='Arthoran' remaining=0.00 repaths=0 segments=1 maxDeviation=0.00
2026-10-27_14:10:56 INFO [server.adventurebot.navigation] NAV_PLAN seq=9 guid=26 name='Arthoran' map=0 segment=0 start=(-8896.861 571.956 93.007) target=(-8880.855 583.947 93.233) type=0x1 calculated=1 complete=1 suspicious=0 points=6 direct=20.00 path=20.01 maxSegment=4.01 maxZDelta=0.24 finalDistance=0.00 repaths=0 reason='ok'
2026-10-27_14:10:56 INFO [server.adventurebot.navigation] NAV_EXEC seq=9 guid=26 name='Arthoran' segment=1 splinePoints=6 splineLength=20.01 segmentEnd=(-8880.855 583.947 93.233) target=(-8880.855 583.947 93.233) walk=1
2026-10-27_14:10:56 INFO [server.adventurebot.navigation] NAV_START guid=26 name='Arthoran' map=0 target=(-8880.855 583.947 93.233) remaining=18.50 state=Moving
2026-10-27_14:10:57 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=9 guid=26 segment=1 pos=(-8894.864 573.452 92.976) remaining=16.01 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:58 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=9 guid=26 segment=1 pos=(-8892.857 574.955 92.978) remaining=13.50 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:10:59 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=9 guid=26 segment=1 pos=(-8890.867 576.447 93.030) remaining=11.01 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:00 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=9 guid=26 segment=1 pos=(-8888.864 577.947 93.161) remaining=8.51 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:01 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=9 guid=26 segment=1 pos=(-8886.867 579.443 93.286) remaining=6.01 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:02 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=9 guid=26 segment=1 pos=(-8884.851 580.954 93.305) remaining=3.49 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:03 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=9 guid=26 segment=1 pos=(-8882.849 582.454 93.283) remaining=0.99 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:04 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=9 guid=26 segment=1 pos=(-8880.855 583.947 93.233) remaining=0.00 deviation=0.00 splineActive=0 repaths=0
2026-10-27_14:11:04 INFO [server.adventurebot.navigation] NAV_COMPLETE seq=9 guid=26 name='Arthoran' remaining=0.00 repaths=0 segments=1 maxDeviation=0.00
2026-10-27_14:11:04 INFO [server.adventurebot.navigation] NAV_PLAN seq=10 guid=26 name='Arthoran' map=0 segment=0 start=(-8880.855 583.947 93.233) target=(-8864.850 595.939 92.645) type=0x1 calculated=1 complete=1 suspicious=0 points=6 direct=20.01 path=20.01 maxSegment=4.00 maxZDelta=0.16 finalDistance=0.00 repaths=0 reason='ok'
2026-10-27_14:11:04 INFO [server.adventurebot.navigation] NAV_EXEC seq=10 guid=26 name='Arthoran' segment=1 splinePoints=6 splineLength=20.01 segmentEnd=(-8864.850 595.939 92.645) target=(-8864.850 595.939 92.645) walk=1
2026-10-27_14:11:04 INFO [server.adventurebot.navigation] NAV_START guid=26 name='Arthoran' map=0 target=(-8864.850 595.939 92.645) remaining=18.51 state=Moving
2026-10-27_14:11:05 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=10 guid=26 segment=1 pos=(-8878.854 585.447 93.206) remaining=16.01 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:06 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=10 guid=26 segment=1 pos=(-8876.860 586.941 93.167) remaining=13.52 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:07 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=10 guid=26 segment=1 pos=(-8874.861 588.438 93.109) remaining=11.02 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:08 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=10 guid=26 segment=1 pos=(-8872.847 589.948 93.033) remaining=8.50 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:09 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=10 guid=26 segment=1 pos=(-8870.844 591.448 92.948) remaining=6.00 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:10 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=10 guid=26 segment=1 pos=(-8868.862 592.933 92.850) remaining=3.52 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:11 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=10 guid=26 segment=1 pos=(-8866.839 594.449 92.748) remaining=0.99 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:12 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=10 guid=26 segment=1 pos=(-8864.850 595.939 92.645) remaining=0.00 deviation=0.00 splineActive=0 repaths=0
2026-10-27_14:11:12 INFO [server.adventurebot.navigation] NAV_COMPLETE seq=10 guid=26 name='Arthoran' remaining=0.00 repaths=0 segments=1 maxDeviation=0.00
2026-10-27_14:11:12 INFO [server.adventurebot.navigation] NAV_PLAN seq=11 guid=26 name='Arthoran' map=0 segment=0 start=(-8864.850 595.939 92.645) target=(-8848.844 607.931 92.673) type=0x1 calculated=1 complete=1 suspicious=0 points=6 direct=20.00 path=20.00 maxSegment=4.00 maxZDelta=0.08 finalDistance=0.03 repaths=0 reason='ok'
2026-10-27_14:11:12 INFO [server.adventurebot.navigation] NAV_EXEC seq=11 guid=26 name='Arthoran' segment=1 splinePoints=6 splineLength=20.00 segmentEnd=(-8848.844 607.931 92.642) target=(-8848.844 607.931 92.673) walk=1
2026-10-27_14:11:12 INFO [server.adventurebot.navigation] NAV_START guid=26 name='Arthoran' map=0 target=(-8848.844 607.931 92.673) remaining=18.50 state=Moving
2026-10-27_14:11:13 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=11 guid=26 segment=1 pos=(-8862.856 597.433 92.602) remaining=16.01 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:14 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=11 guid=26 segment=1 pos=(-8860.846 598.939 92.561) remaining=13.50 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:15 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=11 guid=26 segment=1 pos=(-8858.829 600.450 92.524) remaining=10.98 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:16 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=11 guid=26 segment=1 pos=(-8856.846 601.936 92.520) remaining=8.50 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:17 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=11 guid=26 segment=1 pos=(-8854.824 603.451 92.534) remaining=5.97 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:18 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=11 guid=26 segment=1 pos=(-8852.815 604.956 92.585) remaining=3.46 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:19 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=11 guid=26 segment=1 pos=(-8850.809 606.459 92.619) remaining=0.96 deviation=0.00 splineActive=1 repaths=0
2026-10-27_14:11:20 DEBUG [server.adventurebot.navigation] NAV_SAMPLE seq=11 guid=26 segment=1 pos=(-8848.844 607.931 92.642) remaining=0.00 deviation=0.00 splineActive=0 repaths=0
2026-10-27_14:11:20 INFO [server.adventurebot.navigation] NAV_COMPLETE seq=11 guid=26 name='Arthoran' remaining=0.00 repaths=0 segments=1 maxDeviation=0.00
@@ -0,0 +1,34 @@
LEISURE_WALK_PLAN guid=26 kind='pet_walk' span=80.02 outbound=4 origin=(-8848.84 607.93 92.67) goal=(-8912.87 559.96 94.24)
COMPANION_START guid=26 spell=10673 summoned=1
LEISURE_START guid=26 kind='pet_walk' waypoints=8
COMPANION_CONFIRMED guid=26 pet='GUID Full: 0xf1301cd900000961 Type: Creature Entry: 7385 Low: 2401' entry=7385
COMPANION_LEASH_REQUEST guid=26 item=37460 spell=48722
CreatureAI::EngagementOver called even though creature is not currently engaged.
COMPANION_LEASH_CONFIRMED guid=26 spell=48722
COMPANION_WALK_SAMPLE guid=26 owner=(-8864.85 595.94 92.65) pet=(-8862.91 597.40 92.59) distance=2.43 leashed=1
LEISURE_WAYPOINT guid=26 kind='pet_walk' reached=1/8
CreatureAI::EngagementOver called even though creature is not currently engaged.
COMPANION_WALK_SAMPLE guid=26 owner=(-8880.86 583.95 93.23) pet=(-8879.00 585.34 93.21) distance=2.32 leashed=1
LEISURE_WAYPOINT guid=26 kind='pet_walk' reached=2/8
CreatureAI::EngagementOver called even though creature is not currently engaged.
COMPANION_WALK_SAMPLE guid=26 owner=(-8896.86 571.96 93.01) pet=(-8894.87 573.45 92.98) distance=2.48 leashed=1
LEISURE_WAYPOINT guid=26 kind='pet_walk' reached=3/8
CreatureAI::EngagementOver called even though creature is not currently engaged.
COMPANION_WALK_SAMPLE guid=26 owner=(-8912.87 559.96 94.24) pet=(-8910.87 561.46 94.17) distance=2.50 leashed=1
LEISURE_WAYPOINT guid=26 kind='pet_walk' reached=4/8
CreatureAI::EngagementOver called even though creature is not currently engaged.
COMPANION_WALK_SAMPLE guid=26 owner=(-8896.86 571.96 93.01) pet=(-8898.80 570.51 93.12) distance=2.42 leashed=1
LEISURE_WAYPOINT guid=26 kind='pet_walk' reached=5/8
CreatureAI::EngagementOver called even though creature is not currently engaged.
COMPANION_WALK_SAMPLE guid=26 owner=(-8880.86 583.95 93.23) pet=(-8882.85 582.46 93.26) distance=2.49 leashed=1
LEISURE_WAYPOINT guid=26 kind='pet_walk' reached=6/8
Player::_LoadSkills: Player 'Allitester' (GUID Full: 0x0000000000000015 Type: Player Low: 21, Race: 1, Class: 1) has forbidden skill 118 for his race/class combination
CreatureAI::EngagementOver called even though creature is not currently engaged.
COMPANION_WALK_SAMPLE guid=26 owner=(-8864.85 595.94 92.65) pet=(-8866.87 594.43 92.75) distance=2.52 leashed=1
LEISURE_WAYPOINT guid=26 kind='pet_walk' reached=7/8
COMPANION_WALK_SAMPLE guid=26 owner=(-8848.84 607.93 92.64) pet=(-8850.84 606.44 92.59) distance=2.49 leashed=1
LEISURE_WAYPOINT guid=26 kind='pet_walk' reached=8/8
LEISURE_COMPLETE guid=26 kind='pet_walk' legs=8
COMPANION_END guid=26
MICRO_START guid=26 intent='leisure' location='stormwind_leisure_trade' action='leisure_view' durationMs=36000
Received not handled opcode [CMSG_USED_FOLLOW 0x7912 (30994)] from [Player: Allitester GUID Full: 0x0000000000000015 Type: Player Low: 21, Account: 1]
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,10 @@
from pathlib import Path
import os,re,subprocess,sys
c=Path('/home/wow_admin/wow_cata_server/server/debug/etc/worldserver.conf').read_text();v=re.search(r'^WorldDatabaseInfo\s*=\s*"([^"]+)"',c,re.M).group(1).split(';');h,port,u,p,d=v
a=['mysql','--protocol=TCP','--host='+h,'--port='+port,'--user='+u,'--database='+d,'--batch','--default-character-set=utf8mb4','--connect-timeout=10'];env=os.environ.copy();env['MYSQL_PWD']=p
q="SELECT entry,name FROM creature_template WHERE entry IN (7385,7386); SELECT name,map,position_x,position_y,position_z,orientation FROM game_tele WHERE name IN ('TradeDistrict','CathedralSquare'); SELECT action_key,kind,requirement FROM vcore_adventure_action WHERE action_key LIKE 'social%';"
if sys.argv[1:]==['apply']:
q='START TRANSACTION;\n'+Path('/home/wow_admin/wow_cata_server/source/TrinityCore/sql/custom/world/2026_10_27_02_adventure_leisure.sql').read_text()+"\nSELECT a.action_key,a.kind,a.requirement,i.weight FROM vcore_adventure_action a JOIN vcore_adventure_action_intent i USING(action_key) WHERE i.intent='leisure'; SELECT w.point_key,w.position_x,w.position_y,w.position_z FROM vcore_clientless_world_point w WHERE w.point_key='stormwind_leisure_trade'; COMMIT;"
elif sys.argv[1:]!=['inspect']:raise SystemExit('inspect or apply only')
r=subprocess.run(a,input=q,text=True,capture_output=True,env=env);print(r.stdout,end='');print(r.stderr.replace(p,'[redacted]'),file=sys.stderr,end='') if r.returncode else None
raise SystemExit(r.returncode)
@@ -0,0 +1,777 @@
[1/751] cd /home/wow_admin/wow_cata_server/source/TrinityCore && /usr/bin/cmake -DBUILDDIR="/home/wow_admin/wow_cata_server/build/debug" -P /home/wow_admin/wow_cata_server/source/TrinityCore/cmake/genrev.cmake /home/wow_admin/wow_cata_server/build/debug
[2/751] Building CXX object src/server/game/CMakeFiles/game.dir/World/ClientlessPerceptionMgr.cpp.o
[3/751] Building CXX object src/server/game/CMakeFiles/game.dir/World/AdventureProfessionTargets.cpp.o
[4/751] Building CXX object src/server/game/CMakeFiles/game.dir/World/ClientlessRouteRecorderMgr.cpp.o
[5/751] Building CXX object src/server/game/CMakeFiles/game.dir/World/ClientlessPlayerMgr.cpp.o
[6/751] Building CXX object src/server/game/CMakeFiles/game.dir/World/ClientlessCompanionMgr.cpp.o
[7/751] Building CXX object src/server/game/CMakeFiles/game.dir/World/ClientlessLuaEngine.cpp.o
[8/751] Building CXX object src/server/game/CMakeFiles/game.dir/World/ClientlessFlightMgr.cpp.o
[9/751] Building CXX object src/server/game/CMakeFiles/game.dir/World/ClientlessTransportMgr.cpp.o
[10/751] Building CXX object src/server/game/CMakeFiles/game.dir/World/ClientlessActionExecutorMgr.cpp.o
[11/751] Building CXX object src/server/game/CMakeFiles/game.dir/World/ClientlessWorldPointMgr.cpp.o
[12/751] Building CXX object src/server/game/CMakeFiles/game.dir/World/ClientlessTravelMgr.cpp.o
[13/751] Building CXX object src/server/game/CMakeFiles/game.dir/World/ClientlessTravelGraphMgr.cpp.o
[14/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/gen_scriptloader/static/ScriptLoader.cpp.o
[15/751] Building CXX object src/server/game/CMakeFiles/game.dir/World/WorldStates/WorldStateMgr.cpp.o
[16/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Battlefield/battlefield_script_loader.cpp.o
[17/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Battlefield/BattlefieldTB.cpp.o
[18/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_achievement.cpp.o
[19/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_ahbot.cpp.o
[20/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Battlefield/BattlefieldWG.cpp.o
[21/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_arena.cpp.o
[22/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_bf.cpp.o
[23/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_account.cpp.o
[24/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_ban.cpp.o
[25/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_cast.cpp.o
[26/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_cheat.cpp.o
[27/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_deserter.cpp.o
[28/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_character.cpp.o
[29/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_event.cpp.o
[30/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_disable.cpp.o
[31/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_gm.cpp.o
[32/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_honor.cpp.o
[33/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_group.cpp.o
[34/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_debug.cpp.o
[35/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_guild.cpp.o
[36/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_gobject.cpp.o
[37/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_go.cpp.o
[38/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_instance.cpp.o
[39/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_learn.cpp.o
[40/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_lfg.cpp.o
[41/751] Building CXX object src/server/game/CMakeFiles/game.dir/World/World.cpp.o
[42/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_message.cpp.o
[43/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_list.cpp.o
[44/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_mmaps.cpp.o
[45/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_lookup.cpp.o
[46/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_modify.cpp.o
[47/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_pet.cpp.o
[48/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_script_loader.cpp.o
[49/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_misc.cpp.o
[50/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_quest.cpp.o
[51/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_rbac.cpp.o
[52/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_npc.cpp.o
[53/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_reset.cpp.o
[54/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_send.cpp.o
[55/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Custom/custom_script_loader.cpp.o
[56/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_server.cpp.o
[57/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_titles.cpp.o
[58/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_reload.cpp.o
[59/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_ticket.cpp.o
[60/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_tele.cpp.o
[61/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Commands/cs_wp.cpp.o
[62/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/arathi_highlands.cpp.o
[63/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Custom/vcore_diagnostics.cpp.o
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/vcore_diagnostics.cpp:236:39: warning: ‘std::optional<std::__cxx11::basic_string<char> > VCoreDiagnostics::DisplayTextColumn(const std::string&, const std::string&)’ defined but not used [-Wunused-function]
236 | static std::optional<std::string> DisplayTextColumn(
| ^~~~~~~~~~~~~~~~~
[64/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/eastern_kingdoms_script_loader.cpp.o
[65/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_dun_morogh.cpp.o
[66/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_blasted_lands.cpp.o
[67/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp.o
[68/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Custom/viano_adventurers.cpp.o
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_adventurers.cpp: In member function ‘void VianoAdventurers::npc_horde_adventurer_melee::npc_horde_adventurer_meleeAI::HandleOutOfCombatRecovery(uint32)’:
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_adventurers.cpp:310:49: warning: comparison of integer expressions of different signedness: ‘int32’ {aka ‘int’} and ‘uint32’ {aka ‘unsigned int’} [-Wsign-compare]
310 | if (maxMana > 0 && me->GetPower(POWER_MANA) < maxMana)
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_adventurers.cpp: In member function ‘void VianoAdventurers::npc_horde_adventurer_tank::npc_horde_adventurer_tankAI::HandleOutOfCombatRecovery(uint32)’:
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_adventurers.cpp:861:57: warning: comparison of integer expressions of different signedness: ‘int32’ {aka ‘int’} and ‘uint32’ {aka ‘unsigned int’} [-Wsign-compare]
861 | if (maxMana && me->GetPower(POWER_MANA) < maxMana)
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_adventurers.cpp: In member function ‘void VianoAdventurers::npc_horde_adventurer_healer::npc_horde_adventurer_healerAI::HandleOutOfCombatRecovery(uint32, Player*)’:
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_adventurers.cpp:1518:57: warning: comparison of integer expressions of different signedness: ‘int32’ {aka ‘int’} and ‘uint32’ {aka ‘unsigned int’} [-Wsign-compare]
1518 | if (maxMana && me->GetPower(POWER_MANA) < maxMana)
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
[69/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_duskwood.cpp.o
[70/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_ghostlands.cpp.o
[71/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_elwynn_forest.cpp.o
[72/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_hinterlands.cpp.o
[73/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_ironforge.cpp.o
[74/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Custom/viano_bot_commands.cpp.o
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_bot_commands.cpp: In function ‘bool VianoBotCommands::HandleClientlessLocationAdd(ChatHandler*, const char*)’:
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_bot_commands.cpp:2062:20: warning: unused variable ‘loaded’ [-Wunused-variable]
2062 | bool const loaded = sClientlessWorldPointMgr->Reload();
| ^~~~~~
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_bot_commands.cpp: In function ‘bool VianoBotCommands::HandleClientlessLocationMove(ChatHandler*, const char*)’:
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_bot_commands.cpp:2099:20: warning: unused variable ‘loaded’ [-Wunused-variable]
2099 | bool const loaded = sClientlessWorldPointMgr->Reload();
| ^~~~~~
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_bot_commands.cpp: In function ‘bool VianoBotCommands::HandleClientlessLocationRemove(ChatHandler*, const char*)’:
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_bot_commands.cpp:2123:20: warning: unused variable ‘loaded’ [-Wunused-variable]
2123 | bool const loaded = sClientlessWorldPointMgr->Reload();
| ^~~~~~
[75/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_redridge_mountains.cpp.o
[76/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_silverpine_forest.cpp.o
[77/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_swamp_of_sorrows.cpp.o
[78/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_stormwind_city.cpp.o
[79/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_hillsbrad_foothills.cpp.o
[80/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_tirisfal_glades.cpp.o
[81/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_tol_barad.cpp.o
[82/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_undercity.cpp.o
[83/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_western_plaguelands.cpp.o
[84/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/AlteracValley/alterac_valley.cpp.o
[85/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/AlteracValley/boss_balinda.cpp.o
[86/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_wetlands.cpp.o
[87/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/AlteracValley/boss_drekthar.cpp.o
[88/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_twilight_highlands.cpp.o
[89/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/AlteracValley/boss_galvangar.cpp.o
[90/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/zone_westfall.cpp.o
[91/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/AlteracValley/boss_vanndar.cpp.o
[92/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BaradinHold/instance_baradin_hold.cpp.o
[93/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BaradinHold/boss_alizabal.cpp.o
[94/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BaradinHold/boss_occuthar.cpp.o
[95/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp.o
[96/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BastionOfTwilight/bastion_of_twilight.cpp.o
[97/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BastionOfTwilight/instance_bastion_of_twilight.cpp.o
[98/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BastionOfTwilight/boss_halfus_wyrmbreaker.cpp.o
[99/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BastionOfTwilight/boss_chogall.cpp.o
[100/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_beauty.cpp.o
[101/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp.o
[102/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_ascendant_lord_obsidius.cpp.o
[103/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BastionOfTwilight/boss_ascendant_council.cpp.o
[104/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla_herald_of_twilight.cpp.o
[105/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BastionOfTwilight/boss_theralion_and_valiona.cpp.o
[106/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_karsh_steelbender.cpp.o
[107/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockCaverns/instance_blackrock_caverns.cpp.o
[108/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_romogg_bonecrusher.cpp.o
[109/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp.o
[110/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_ambassador_flamelash.cpp.o
[111/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_general_angerforge.cpp.o
[112/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp.o
[113/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_magmus.cpp.o
[114/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_moira_bronzebeard.cpp.o
[115/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_high_interrogator_gerstahn.cpp.o
[116/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp.o
[117/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp.o
[118/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_drakkisath.cpp.o
[119/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gizrul_the_slavener.cpp.o
[120/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp.o
[121/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_halycon.cpp.o
[122/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp.o
[123/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_highlord_omokk.cpp.o
[124/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_lord_valthalak.cpp.o
[125/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_mother_smolderweb.cpp.o
[126/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_overlord_wyrmthalak.cpp.o
[127/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp.o
[128/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_quartermaster_zigris.cpp.o
[129/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp.o
[130/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp.o
[131/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp.o
[132/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_urok_doomhowl.cpp.o
[133/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_warmaster_voone.cpp.o
[134/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp.o
[135/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingDescent/blackwing_descent.cpp.o
[136/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingDescent/instance_blackwing_descent.cpp.o
[137/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp.o
[138/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_atramedes.cpp.o
[139/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp.o
[140/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_chimaeron.cpp.o
[141/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_magmaw.cpp.o
[142/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_maloriak.cpp.o
[143/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp.o
[144/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_omnotron_defense_system.cpp.o
[145/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_firemaw.cpp.o
[146/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_flamegor.cpp.o
[147/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_nefarians_end.cpp.o
[148/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp.o
[149/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp.o
[150/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp.o
[151/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp.o
[152/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/MoltenCore/boss_garr.cpp.o
[153/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp.o
[154/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/MoltenCore/boss_gehennas.cpp.o
[155/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/MoltenCore/boss_lucifron.cpp.o
[156/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/MoltenCore/boss_golemagg.cpp.o
[157/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/MoltenCore/boss_magmadar.cpp.o
[158/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp.o
[159/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp.o
[160/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/MoltenCore/boss_sulfuron_harbinger.cpp.o
[161/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/MoltenCore/instance_molten_core.cpp.o
[162/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/BlackrockMountain/MoltenCore/boss_shazzrah.cpp.o
[163/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Deadmines/boss_admiral_ripsnarl.cpp.o
[164/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Deadmines/boss_captain_cookie.cpp.o
[165/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Deadmines/boss_glubtok.cpp.o
[166/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Deadmines/boss_foe_reaper_5000.cpp.o
[167/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Deadmines/boss_vanessa_van_cleef.cpp.o
[168/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Deadmines/deadmines.cpp.o
[169/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Gilneas/gilneas_chapter_1.cpp.o
[170/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Deadmines/instance_deadmines.cpp.o
[171/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Deadmines/boss_helix_gearbreaker.cpp.o
[172/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Gilneas/gilneas_chapter_2.cpp.o
[173/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Gnomeregan/gnomeregan.cpp.o
[174/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp.o
[175/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/GrimBatol/boss_drahga_shadowburner.cpp.o
[176/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/GrimBatol/boss_erudax.cpp.o
[177/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/GrimBatol/grim_batol.cpp.o
[178/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/GrimBatol/instance_grim_batol.cpp.o
[179/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Karazhan/boss_curator.cpp.o
[180/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/GrimBatol/boss_general_umbriss.cpp.o
[181/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp.o
[182/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/GrimBatol/boss_forgemaster_throngus.cpp.o
[183/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Karazhan/boss_midnight.cpp.o
[184/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Karazhan/boss_moroes.cpp.o
[185/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Karazhan/boss_netherspite.cpp.o
[186/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp.o
[187/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp.o
[188/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Karazhan/boss_nightbane.cpp.o
[189/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Karazhan/instance_karazhan.cpp.o
[190/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp.o
[191/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Karazhan/bosses_opera.cpp.o
[192/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Karazhan/karazhan.cpp.o
[193/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp.o
[194/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp.o
[195/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp.o
[196/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp.o
[197/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp.o
[198/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ScarletEnclave/the_scarlet_enclave_chapter_2.cpp.o
[199/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp.o
[200/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp.o
[201/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ScarletEnclave/the_scarlet_enclave_chapter_5.cpp.o
[202/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp.o
[203/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp.o
[204/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ScarletEnclave/the_scarlet_enclave_chapter_1.cpp.o
[205/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp.o
[206/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ScarletMonastery/boss_herod.cpp.o
[207/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ScarletMonastery/boss_high_inquisitor_fairbanks.cpp.o
[208/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ScarletMonastery/boss_houndmaster_loksey.cpp.o
[209/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp.o
[210/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp.o
[211/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ScarletMonastery/boss_scorn.cpp.o
[212/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp.o
[213/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp.o
[214/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Scholomance/boss_death_knight_darkreaver.cpp.o
[215/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp.o
[216/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp.o
[217/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Scholomance/boss_illucia_barov.cpp.o
[218/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp.o
[219/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Scholomance/boss_jandice_barov.cpp.o
[220/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp.o
[221/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp.o
[222/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Scholomance/boss_kormok.cpp.o
[223/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Scholomance/boss_ras_frostwhisper.cpp.o
[224/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp.o
[225/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Scholomance/boss_the_ravenian.cpp.o
[226/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Scholomance/boss_vectus.cpp.o
[227/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Scholomance/instance_scholomance.cpp.o
[228/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ShadowfangKeep/boss_baron_ashbury.cpp.o
[229/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ShadowfangKeep/boss_baron_silverlaine.cpp.o
[230/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp.o
[231/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp.o
[232/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ShadowfangKeep/boss_commander_springvale.cpp.o
[233/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp.o
[234/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ShadowfangKeep/boss_lord_godfrey.cpp.o
[235/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ShadowfangKeep/boss_lord_walden.cpp.o
[236/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Stratholme/boss_balnazzar.cpp.o
[237/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Stratholme/boss_baron_rivendare.cpp.o
[238/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Stratholme/boss_baroness_anastari.cpp.o
[239/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Stratholme/boss_cannon_master_willey.cpp.o
[240/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Stratholme/boss_magistrate_barthilas.cpp.o
[241/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Stratholme/boss_nerubenkan.cpp.o
[242/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Stratholme/boss_maleki_the_pallid.cpp.o
[243/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp.o
[244/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Stratholme/boss_ramstein_the_gorger.cpp.o
[245/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Stratholme/boss_postmaster_malown.cpp.o
[246/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Stratholme/boss_timmy_the_cruel.cpp.o
[247/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Stratholme/instance_stratholme.cpp.o
[248/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp.o
[249/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/SunkenTemple/sunken_temple.cpp.o
[250/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Stratholme/stratholme.cpp.o
[251/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp.o
[252/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp.o
[253/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp.o
[254/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp.o
[255/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp.o
[256/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/SunwellPlateau/sunwell_plateau.cpp.o
[257/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/SunwellPlateau/boss_muru.cpp.o
[258/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/TheStockade/boss_hogger.cpp.o
[259/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/TheStockade/boss_lord_overheat.cpp.o
[260/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/TheStockade/boss_randolph_moloch.cpp.o
[261/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp.o
[262/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/TheStockade/instance_the_stockade.cpp.o
[263/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ThroneOfTheTides/boss_commander_ulthok.cpp.o
[264/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ThroneOfTheTides/boss_mindbender_gursha.cpp.o
[265/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ThroneOfTheTides/boss_lady_nazjar.cpp.o
[266/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ThroneOfTheTides/instance_throne_of_the_tides.cpp.o
[267/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Uldaman/boss_ironaya.cpp.o
[268/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Uldaman/boss_archaedas.cpp.o
[269/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ThroneOfTheTides/throne_of_the_tides.cpp.o
[270/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Uldaman/uldaman.cpp.o
[271/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ThroneOfTheTides/boss_ozumat.cpp.o
[272/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/Uldaman/instance_uldaman.cpp.o
[273/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulAman/boss_daakara.cpp.o
[274/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulAman/boss_halazzi.cpp.o
[275/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulAman/boss_hexlord.cpp.o
[276/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulAman/boss_nalorakk.cpp.o
[277/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulAman/boss_akilzon.cpp.o
[278/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulAman/instance_zulaman.cpp.o
[279/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulAman/zulaman.cpp.o
[280/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulAman/boss_janalai.cpp.o
[281/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulGurub/boss_grilek.cpp.o
[282/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulGurub/boss_hazzarah.cpp.o
[283/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulGurub/boss_bloodlord_mandokir.cpp.o
[284/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulGurub/boss_renataki.cpp.o
[285/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulGurub/boss_jindo_the_godbreaker.cpp.o
[286/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulGurub/boss_wushoolay.cpp.o
[287/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulGurub/boss_high_priestess_kilnara.cpp.o
[288/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulGurub/boss_high_priest_venoxis.cpp.o
[289/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulGurub/instance_zulgurub.cpp.o
[290/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Events/childrens_week.cpp.o
[291/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Events/events_script_loader.cpp.o
[292/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulGurub/boss_zanzil.cpp.o
[293/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/EasternKingdoms/ZulGurub/zulgurub.cpp.o
[294/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Events/fireworks_show.cpp.o
[295/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/kalimdor_script_loader.cpp.o
[296/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_ashenvale.cpp.o
[297/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_azuremyst_isle.cpp.o
[298/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_desolace.cpp.o
[299/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_bloodmyst_isle.cpp.o
[300/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_durotar.cpp.o
[301/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_moonglade.cpp.o
[302/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_felwood.cpp.o
[303/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_mulgore.cpp.o
[304/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_northern_barrens.cpp.o
[305/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_southern_barrens.cpp.o
[306/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_mount_hyjal.cpp.o
[307/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_silithus.cpp.o
[308/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_tanaris.cpp.o
[309/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_thunder_bluff.cpp.o
[310/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_ungoro_crater.cpp.o
[311/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_uldum.cpp.o
[312/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/zone_winterspring.cpp.o
[313/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp.o
[314/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp.o
[315/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp.o
[316/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/BlackfathomDeeps/boss_kelris.cpp.o
[317/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp.o
[318/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp.o
[319/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp.o
[320/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp.o
[321/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp.o
[322/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp.o
[323/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp.o
[324/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp.o
[325/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp.o
[326/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp.o
[327/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp.o
[328/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp.o
[329/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp.o
[330/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp.o
[331/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm_the_fleshcrafter.cpp.o
[332/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp.o
[333/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/DragonSoul/instance_dragon_soul.cpp.o
[334/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/EndTime/end_time.cpp.o
[335/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/EndTime/instance_end_time.cpp.o
[336/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp.o
[337/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/EndTime/boss_murozond.cpp.o
[338/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp.o
[339/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp.o
[340/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/EndTime/boss_echo_of_jaina.cpp.o
[341/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp.o
[342/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_leutenant_drake.cpp.o
[343/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp.o
[344/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/DragonSoul/boss_madness_of_deathwing.cpp.o
[345/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/TheBlackMorass/boss_aeonus.cpp.o
[346/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/HourOfTwilight/instance_hour_of_twilight.cpp.o
[347/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp.o
[348/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/TheBlackMorass/boss_temporus.cpp.o
[349/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp.o
[350/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/WellOfEternity/instance_well_of_eternity.cpp.o
[351/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp.o
[352/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp.o
[353/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/DireMaul/instance_dire_maul.cpp.o
[354/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/Firelands/firelands.cpp.o
[355/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/Firelands/boss_alysrazor.cpp.o
[356/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/Firelands/boss_baleroc.cpp.o
[357/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/Firelands/instance_firelands.cpp.o
[358/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/HallsOfOrigination/boss_ammunae.cpp.o
[359/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/Firelands/boss_majordomo_staghelm.cpp.o
[360/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/HallsOfOrigination/boss_anraphet.cpp.o
[361/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/Firelands/boss_lord_rhyolith.cpp.o
[362/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp.o
[363/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/HallsOfOrigination/boss_isiset.cpp.o
[364/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/HallsOfOrigination/boss_rajh.cpp.o
[365/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/HallsOfOrigination/boss_setesh.cpp.o
[366/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/HallsOfOrigination/instance_halls_of_origination.cpp.o
[367/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/Firelands/boss_ragnaros_firelands.cpp.o
[368/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp.o
[369/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/HallsOfOrigination/halls_of_origination.cpp.o
[370/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/LostCityOfTheTolvir/boss_lockmaw_and_augh.cpp.o
[371/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/LostCityOfTheTolvir/boss_general_husam.cpp.o
[372/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/LostCityOfTheTolvir/boss_high_prophet_barim.cpp.o
[373/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/LostCityOfTheTolvir/instance_lost_city_of_the_tolvir.cpp.o
[374/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/LostCityOfTheTolvir/lost_city_of_the_tolvir.cpp.o
[375/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/Maraudon/boss_celebras_the_cursed.cpp.o
[376/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/Maraudon/boss_landslide.cpp.o
[377/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/LostCityOfTheTolvir/boss_siamat.cpp.o
[378/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/Maraudon/boss_noxxion.cpp.o
[379/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/Maraudon/boss_princess_theradras.cpp.o
[380/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/Maraudon/instance_maraudon.cpp.o
[381/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/OnyxiasLair/boss_onyxia.cpp.o
[382/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp.o
[383/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp.o
[384/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp.o
[385/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RazorfenDowns/boss_glutton.cpp.o
[386/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RazorfenDowns/boss_mordresh_fire_eye.cpp.o
[387/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RazorfenDowns/boss_tuten_kash.cpp.o
[388/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp.o
[389/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RazorfenDowns/razorfen_downs.cpp.o
[390/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp.o
[391/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RazorfenKraul/razorfen_kraul.cpp.o
[392/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp.o
[393/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp.o
[394/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp.o
[395/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp.o
[396/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp.o
[397/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp.o
[398/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp.o
[399/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp.o
[400/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp.o
[401/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp.o
[402/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp.o
[403/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp.o
[404/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp.o
[405/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp.o
[406/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp.o
[407/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp.o
[408/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp.o
[409/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/TempleOfAhnQiraj/mob_anubisath_sentinel.cpp.o
[410/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/ThroneOfTheFourWinds/instance_throne_of_the_four_winds.cpp.o
[411/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/ThroneOfTheFourWinds/throne_of_the_four_winds.cpp.o
[412/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/VortexPinnacle/boss_grand_vizier_ertan.cpp.o
[413/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/VortexPinnacle/instance_vortex_pinnacle.cpp.o
[414/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/VortexPinnacle/boss_altairus.cpp.o
[415/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/ThroneOfTheFourWinds/boss_conclave_of_wind.cpp.o
[416/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/ThroneOfTheFourWinds/boss_alakir.cpp.o
[417/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/WailingCaverns/boss_kresh.cpp.o
[418/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/VortexPinnacle/boss_asaad.cpp.o
[419/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/WailingCaverns/boss_lady_anacondra.cpp.o
[420/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/WailingCaverns/boss_lord_cobrahn.cpp.o
[421/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/VortexPinnacle/vortex_pinnacle.cpp.o
[422/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/WailingCaverns/boss_lord_pythas.cpp.o
[423/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/WailingCaverns/boss_lord_serpentis.cpp.o
[424/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/WailingCaverns/boss_skum.cpp.o
[425/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/WailingCaverns/boss_verdan_the_everliving.cpp.o
[426/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp.o
[427/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/WailingCaverns/wailing_caverns.cpp.o
[428/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/ZulFarrak/boss_zum_rah.cpp.o
[429/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Maelstrom/kezan.cpp.o
[430/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/ZulFarrak/instance_zulfarrak.cpp.o
[431/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Kalimdor/ZulFarrak/zulfarrak.cpp.o
[432/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Maelstrom/maelstrom_script_loader.cpp.o
[433/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Maelstrom/zone_deepholm.cpp.o
[434/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Maelstrom/Stonecore/instance_stonecore.cpp.o
[435/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Maelstrom/Stonecore/boss_corborus.cpp.o
[436/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Maelstrom/Stonecore/boss_slabhide.cpp.o
[437/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Maelstrom/Stonecore/boss_ozruk.cpp.o
[438/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/northrend_script_loader.cpp.o
[439/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Maelstrom/Stonecore/boss_high_priestess_azil.cpp.o
[440/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/zone_crystalsong_forest.cpp.o
[441/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Maelstrom/Stonecore/stonecore.cpp.o
[442/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/zone_dalaran.cpp.o
[443/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/zone_borean_tundra.cpp.o
[444/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/zone_icecrown.cpp.o
[445/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/zone_howling_fjord.cpp.o
[446/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/zone_dragonblight.cpp.o
[447/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/zone_grizzly_hills.cpp.o
[448/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/zone_sholazar_basin.cpp.o
[449/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/zone_wintergrasp.cpp.o
[450/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp.o
[451/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/zone_storm_peaks.cpp.o
[452/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/zone_zuldrak.cpp.o
[453/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp.o
[454/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp.o
[455/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp.o
[456/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp.o
[457/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp.o
[458/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp.o
[459/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp.o
[460/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp.o
[461/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp.o
[462/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp.o
[463/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp.o
[464/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp.o
[465/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp.o
[466/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp.o
[467/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp.o
[468/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp.o
[469/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp.o
[470/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp.o
[471/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp.o
[472/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp.o
[473/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp.o
[474/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp.o
[475/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp.o
[476/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp.o
[477/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp.o
[478/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/DraktharonKeep/boss_king_dred.cpp.o
[479/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/DraktharonKeep/boss_novos.cpp.o
[480/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp.o
[481/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp.o
[482/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp.o
[483/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp.o
[484/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp.o
[485/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/DraktharonKeep/boss_tharon_ja.cpp.o
[486/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/DraktharonKeep/boss_trollgore.cpp.o
[487/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp.o
[488/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp.o
[489/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/FrozenHalls/HallsOfReflection/boss_horAI.cpp.o
[490/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp.o
[491/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp.o
[492/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp.o
[493/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp.o
[494/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp.o
[495/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp.o
[496/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp.o
[497/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp.o
[498/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp.o
[499/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Gundrak/boss_drakkari_colossus.cpp.o
[500/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Gundrak/boss_eck.cpp.o
[501/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp.o
[502/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp.o
[503/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp.o
[504/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Gundrak/boss_gal_darah.cpp.o
[505/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Gundrak/boss_moorabi.cpp.o
[506/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Gundrak/boss_slad_ran.cpp.o
[507/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Gundrak/instance_gundrak.cpp.o
[508/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IcecrownCitadel/boss_festergut.cpp.o
[509/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp.o
[510/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp.o
[511/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp.o
[512/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp.o
[513/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp.o
[514/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IcecrownCitadel/boss_rotface.cpp.o
[515/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp.o
[516/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IcecrownCitadel/boss_professor_putricide.cpp.o
[517/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp.o
[518/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp.o
[519/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IcecrownCitadel/boss_sindragosa.cpp.o
[520/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp.o
[521/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IcecrownCitadel/icecrown_citadel.cpp.o
[522/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/boss_anubrekhan.cpp.o
[523/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp.o
[524/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IsleOfConquest/isle_of_conquest.cpp.o
[525/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/boss_faerlina.cpp.o
[526/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/IcecrownCitadel/boss_the_lich_king.cpp.o
[527/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/boss_gluth.cpp.o
[528/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/boss_grobbulus.cpp.o
[529/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/boss_four_horsemen.cpp.o
[530/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/boss_heigan.cpp.o
[531/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/boss_gothik.cpp.o
[532/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/boss_loatheb.cpp.o
[533/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/boss_maexxna.cpp.o
[534/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/boss_noth.cpp.o
[535/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/boss_kelthuzad.cpp.o
[536/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/boss_patchwerk.cpp.o
[537/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/boss_razuvious.cpp.o
[538/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/instance_naxxramas.cpp.o
[539/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/naxxramas.cpp.o
[540/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/boss_thaddius.cpp.o
[541/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Nexus/Nexus/boss_anomalus.cpp.o
[542/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Nexus/Nexus/boss_commander_stoutbeard.cpp.o
[543/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp.o
[544/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Naxxramas/boss_sapphiron.cpp.o
[545/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Nexus/Nexus/boss_keristrasza.cpp.o
[546/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Nexus/Nexus/boss_magus_telestra.cpp.o
[547/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp.o
[548/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Nexus/Nexus/boss_nexus_commanders.cpp.o
[549/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Nexus/Nexus/instance_nexus.cpp.o
[550/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Nexus/Nexus/boss_ormorok.cpp.o
[551/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Nexus/Oculus/boss_drakos.cpp.o
[552/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Nexus/Oculus/boss_urom.cpp.o
[553/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Nexus/Oculus/boss_eregos.cpp.o
[554/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Nexus/Oculus/boss_varos.cpp.o
[555/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Nexus/Oculus/instance_oculus.cpp.o
[556/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp.o
[557/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Nexus/Oculus/oculus.cpp.o
[558/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp.o
[559/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp.o
[560/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/HallsOfLightning/boss_general_bjarngrim.cpp.o
[561/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp.o
[562/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp.o
[563/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp.o
[564/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp.o
[565/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp.o
[566/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp.o
[567/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/Ulduar/boss_auriaya.cpp.o
[568/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/Ulduar/boss_freya.cpp.o
[569/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp.o
[570/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp.o
[571/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/Ulduar/boss_ignis.cpp.o
[572/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp.o
[573/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/Ulduar/boss_hodir.cpp.o
[574/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp.o
[575/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/Ulduar/boss_kologarn.cpp.o
[576/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/Ulduar/boss_razorscale.cpp.o
[577/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp.o
[578/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/Ulduar/instance_ulduar.cpp.o
[579/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp.o
[580/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp.o
[581/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp.o
[582/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/Ulduar/boss_mimiron.cpp.o
[583/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/Ulduar/boss_xt002.cpp.o
[584/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/Ulduar/boss_thorim.cpp.o
[585/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp.o
[586/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp.o
[587/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp.o
[588/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp.o
[589/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp.o
[590/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp.o
[591/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/VaultOfArchavon/boss_emalon.cpp.o
[592/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/VaultOfArchavon/boss_archavon.cpp.o
[593/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp.o
[594/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/VaultOfArchavon/boss_koralon.cpp.o
[595/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/VaultOfArchavon/boss_toravon.cpp.o
[596/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp.o
[597/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/VioletHold/boss_lavanthor.cpp.o
[598/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/VioletHold/boss_erekem.cpp.o
[599/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/VioletHold/boss_cyanigosa.cpp.o
[600/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/VioletHold/boss_ichoron.cpp.o
[601/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/VioletHold/boss_moragg.cpp.o
[602/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/VioletHold/boss_xevozz.cpp.o
[603/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/VioletHold/boss_zuramat.cpp.o
[604/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/VioletHold/instance_violet_hold.cpp.o
[605/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/OutdoorPvP/OutdoorPvPHP.cpp.o
[606/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/OutdoorPvP/OutdoorPvPScriptLoader.cpp.o
[607/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/OutdoorPvP/OutdoorPvPTF.cpp.o
[608/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Northrend/VioletHold/violet_hold.cpp.o
[609/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/OutdoorPvP/OutdoorPvPNA.cpp.o
[610/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/boss_doomwalker.cpp.o
[611/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/OutdoorPvP/OutdoorPvPSI.cpp.o
[612/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/boss_doomlord_kazzak.cpp.o
[613/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/OutdoorPvP/OutdoorPvPZM.cpp.o
[614/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/outland_script_loader.cpp.o
[615/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/zone_blades_edge_mountains.cpp.o
[616/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/zone_nagrand.cpp.o
[617/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/zone_shattrath_city.cpp.o
[618/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/zone_hellfire_peninsula.cpp.o
[619/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/zone_zangarmarsh.cpp.o
[620/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp.o
[621/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/zone_terokkar_forest.cpp.o
[622/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp.o
[623/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/zone_shadowmoon_valley.cpp.o
[624/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/zone_netherstorm.cpp.o
[625/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/AuchenaiCrypts/instance_auchenai_crypts.cpp.o
[626/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp.o
[627/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp.o
[628/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/ManaTombs/instance_mana_tombs.cpp.o
[629/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp.o
[630/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp.o
[631/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp.o
[632/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp.o
[633/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp.o
[634/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp.o
[635/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp.o
[636/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/ShadowLabyrinth/instance_shadow_labyrinth.cpp.o
[637/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp.o
[638/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.cpp.o
[639/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp.o
[640/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/BlackTemple/black_temple.cpp.o
[641/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/BlackTemple/boss_mother_shahraz.cpp.o
[642/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/BlackTemple/boss_illidari_council.cpp.o
[643/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/BlackTemple/boss_reliquary_of_souls.cpp.o
[644/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/BlackTemple/boss_supremus.cpp.o
[645/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/BlackTemple/boss_shade_of_akama.cpp.o
[646/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/BlackTemple/boss_illidan.cpp.o
[647/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/BlackTemple/boss_warlord_najentus.cpp.o
[648/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/BlackTemple/instance_black_temple.cpp.o
[649/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp.o
[650/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/BlackTemple/boss_teron_gorefiend.cpp.o
[651/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp.o
[652/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp.o
[653/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp.o
[654/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp.o
[655/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp.o
[656/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp.o
[657/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp.o
[658/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp.o
[659/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp.o
[660/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp.o
[661/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/TheSlavePens/boss_mennu_the_betrayer.cpp.o
[662/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/TheSlavePens/boss_quagmirran.cpp.o
[663/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp.o
[664/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/TheSlavePens/instance_the_slave_pens.cpp.o
[665/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp.o
[666/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp.o
[667/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/TheUnderbog/instance_the_underbog.cpp.o
[668/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp.o
[669/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/GruulsLair/boss_gruul.cpp.o
[670/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/GruulsLair/boss_high_king_maulgar.cpp.o
[671/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/GruulsLair/instance_gruuls_lair.cpp.o
[672/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp.o
[673/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp.o
[674/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp.o
[675/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp.o
[676/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp.o
[677/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp.o
[678/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp.o
[679/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp.o
[680/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp.o
[681/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp.o
[682/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp.o
[683/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp.o
[684/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp.o
[685/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp.o
[686/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/Eye/boss_alar.cpp.o
[687/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp.o
[688/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/Eye/boss_astromancer.cpp.o
[689/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/Eye/boss_kaelthas.cpp.o
[690/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/Eye/boss_void_reaver.cpp.o
[691/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/Eye/the_eye.cpp.o
[692/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/Eye/instance_the_eye.cpp.o
[693/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp.o
[694/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp.o
[695/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp.o
[696/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp.o
[697/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp.o
[698/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/Mechanar/instance_mechanar.cpp.o
[699/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/arcatraz/arcatraz.cpp.o
[700/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp.o
[701/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp.o
[702/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp.o
[703/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/arcatraz/boss_zereketh_the_unbound.cpp.o
[704/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp.o
[705/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp.o
[706/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/botanica/boss_commander_sarannis.cpp.o
[707/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/botanica/boss_laj.cpp.o
[708/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp.o
[709/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/botanica/instance_the_botanica.cpp.o
[710/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Outland/TempestKeep/botanica/boss_warp_splinter.cpp.o
[711/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Pet/pet_generic.cpp.o
[712/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Pet/pet_mage.cpp.o
[713/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Pet/pet_dk.cpp.o
[714/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Pet/pet_hunter.cpp.o
[715/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Pet/pet_paladin.cpp.o
[716/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Pet/pet_script_loader.cpp.o
[717/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Pet/pet_priest.cpp.o
[718/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Pet/pet_shaman.cpp.o
[719/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_pet.cpp.o
[720/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_holiday.cpp.o
[721/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_dk.cpp.o
[722/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_hunter.cpp.o
[723/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_druid.cpp.o
[724/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_mage.cpp.o
[725/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_priest.cpp.o
[726/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_paladin.cpp.o
[727/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_script_loader.cpp.o
[728/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/World/achievement_scripts.cpp.o
[729/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/World/action_ip_logger.cpp.o
[730/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_quest.cpp.o
[731/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_rogue.cpp.o
[732/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/World/areatrigger_scripts.cpp.o
[733/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_item.cpp.o
[734/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_warrior.cpp.o
[735/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_shaman.cpp.o
[736/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/World/duel_reset.cpp.o
[737/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_generic.cpp.o
[738/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/World/guards.cpp.o
[739/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/World/chat_log.cpp.o
[740/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Spells/spell_warlock.cpp.o
[741/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/World/mob_generic_creature.cpp.o
[742/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/World/go_scripts.cpp.o
[743/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/World/item_scripts.cpp.o
[744/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/World/npc_innkeeper.cpp.o
[745/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/World/world_map_scripts.cpp.o
[746/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/World/world_script_loader.cpp.o
[747/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/World/npc_professions.cpp.o
[748/751] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/World/npcs_special.cpp.o
[749/751] Linking CXX static library src/server/game/libgame.a
ninja: build stopped: interrupted by user.
@@ -0,0 +1,61 @@
-- Detected 64-bit platform
-- UNIX: Using default configuration directory
-- UNIX: Configuring uninstall target
-- UNIX: Created uninstall target
-- UNIX: Detected compiler: /usr/bin/cc
-- GCC: Minimum version required is 10.0.0, found 15.2.0 - ok!
-- GCC: SFMT enabled, SSE2 flags forced
-- GCC: All warnings enabled
-- GCC: Debug-flags set (-g3)
-- Found MySQL:
-- Found MySQL: found components: binary
-- Found MySQL executable: /usr/bin/mysql
* TrinityCore revision : 119d63ed1c37+ 2026-10-26 22:45:38 +0100 (feature/clientless-player-core branch)
* TrinityCore buildtype : Debug
* Install core to : /home/wow_admin/wow_cata_server/server/debug
* Build world/auth : Yes (default)
* Build with scripts : Yes (static)
* Build map/vmap tools : No
* Build unit tests : No (default)
* Unity build enabled : No (default)
* Build core w/PCH : Yes (default)
* Build scripts w/PCH : Yes (default)
* Show all warnings : Yes
*** WITH_COREDEBUG - WARNING!
*** additional core debug logs have been enabled!
*** this setting doesn't help to get better crash logs!
*** in case you are searching for better crash logs use
*** -DCMAKE_BUILD_TYPE=RelWithDebug
*** DO NOT ENABLE IT UNLESS YOU KNOW WHAT YOU'RE DOING!
* Use coreside debug : Yes
* Show source tree : Yes (hierarchical)
* Use GIT revision hash : Yes (default)
-- Found Readline library: /usr/lib/x86_64-linux-gnu/libreadline.so
-- Include dir is: /usr/include
* Script configuration (static):
|
+- worldserver
| +- Battlefield
| +- Commands
| +- Custom
| +- EasternKingdoms
| +- Events
| +- Kalimdor
| +- Maelstrom
| +- Northrend
| +- OutdoorPvP
| +- Outland
| +- Pet
| +- Spells
| +- World
|
-- Configuring done (0.4s)
-- Generating done (0.1s)
-- Build files have been written to: /home/wow_admin/wow_cata_server/build/debug
@@ -0,0 +1,12 @@
/tmp/vcore-economy-t0vuw0w2/test.cpp: In function ‘bool TargetVisible(Player*, WorldObject*, const std::string&)’:
/tmp/vcore-economy-t0vuw0w2/test.cpp:61:57: error: ‘AdventureProfessionPolicy’ has not been declared
61 | if (!AdventureEconomyPolicy::Economic(kind) && !AdventureProfessionPolicy::Recognized(kind)) return player->IsWithinLOSInMap(target);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
Traceback (most recent call last):
File "/home/wow_admin/wow_cata_server/source/TrinityCore/tests/clientless/test_adventure_economy.py", line 101, in <module>
subprocess.run(['c++','-std=c++17','-I',str(root/'src/server/game/World'),str(cpp),'-o',str(binary)],check=True)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.14/subprocess.py", line 578, in run
raise CalledProcessError(retcode, process.args,
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['c++', '-std=c++17', '-I', '/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/World', '/tmp/vcore-economy-t0vuw0w2/test.cpp', '-o', '/tmp/vcore-economy-t0vuw0w2/test']' returned non-zero exit status 1.
@@ -0,0 +1,30 @@
/tmp/vcore-exploration-adul8yl4/test.cpp: In static member function ‘static bool AdventureSocialActions::Available(Player*, const AdventureMicroAction&, AdventureSocialContext&)’:
/tmp/vcore-exploration-adul8yl4/test.cpp:50:9: error: ‘AdventureProfessionPolicy’ has not been declared
50 | if (AdventureProfessionPolicy::Recognized(kind)) return c.Intent=="profession" &&
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-exploration-adul8yl4/test.cpp:51:9: error: ‘AdventureProfessionPolicy’ has not been declared
51 | AdventureProfessionPolicy::Allowed(kind,c.PrimaryProfessions) &&
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-exploration-adul8yl4/test.cpp:51:51: error: ‘struct AdventureSocialContext’ has no member named ‘PrimaryProfessions’
51 | AdventureProfessionPolicy::Allowed(kind,c.PrimaryProfessions) &&
| ^~~~~~~~~~~~~~~~~~
/tmp/vcore-exploration-adul8yl4/test.cpp:52:10: error: ‘AdventureProfessionPolicy’ has not been declared
52 | (AdventureProfessionPolicy::Untargeted(kind)?!p->IsInWater() && !p->IsFalling():!AdventureProfessionTargets::Find(p,kind,c).empty());
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-exploration-adul8yl4/test.cpp:52:58: error: ‘struct Player’ has no member named ‘IsInWater’
52 | (AdventureProfessionPolicy::Untargeted(kind)?!p->IsInWater() && !p->IsFalling():!AdventureProfessionTargets::Find(p,kind,c).empty());
| ^~~~~~~~~
/tmp/vcore-exploration-adul8yl4/test.cpp:52:77: error: ‘struct Player’ has no member named ‘IsFalling’
52 | (AdventureProfessionPolicy::Untargeted(kind)?!p->IsInWater() && !p->IsFalling():!AdventureProfessionTargets::Find(p,kind,c).empty());
| ^~~~~~~~~
/tmp/vcore-exploration-adul8yl4/test.cpp:52:90: error: ‘AdventureProfessionTargets’ has not been declared
52 | (AdventureProfessionPolicy::Untargeted(kind)?!p->IsInWater() && !p->IsFalling():!AdventureProfessionTargets::Find(p,kind,c).empty());
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
Traceback (most recent call last):
File "/home/wow_admin/wow_cata_server/source/TrinityCore/tests/clientless/test_adventure_exploration.py", line 60, in <module>
subprocess.run(['c++','-std=c++17','-I',str(root/'src/server/game/World'),str(cpp),'-o',str(binary)],check=True)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.14/subprocess.py", line 578, in run
raise CalledProcessError(retcode, process.args,
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['c++', '-std=c++17', '-I', '/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/World', '/tmp/vcore-exploration-adul8yl4/test.cpp', '-o', '/tmp/vcore-exploration-adul8yl4/test']' returned non-zero exit status 1.
@@ -0,0 +1,24 @@
/tmp/vcore-adventure-state-4s9vbnjn/test.cpp: In lambda function:
/tmp/vcore-adventure-state-4s9vbnjn/test.cpp:82:22: error: ‘struct AdventureBehaviorMgr::Record::<unnamed>’ has no member named ‘Progressive’
82 | if(r.Leisure.Progressive && !r.Leisure.Route.empty() && r.Leisure.Step>=r.Leisure.Route.size() &&
| ^~~~~~~~~~~
/tmp/vcore-adventure-state-4s9vbnjn/test.cpp:82:48: error: ‘struct AdventureBehaviorMgr::Record::<unnamed>’ has no member named ‘Route’
82 | if(r.Leisure.Progressive && !r.Leisure.Route.empty() && r.Leisure.Step>=r.Leisure.Route.size() &&
| ^~~~~
/tmp/vcore-adventure-state-4s9vbnjn/test.cpp:82:75: error: ‘struct AdventureBehaviorMgr::Record::<unnamed>’ has no member named ‘Step’
82 | if(r.Leisure.Progressive && !r.Leisure.Route.empty() && r.Leisure.Step>=r.Leisure.Route.size() &&
| ^~~~
/tmp/vcore-adventure-state-4s9vbnjn/test.cpp:82:91: error: ‘struct AdventureBehaviorMgr::Record::<unnamed>’ has no member named ‘Route’
82 | if(r.Leisure.Progressive && !r.Leisure.Route.empty() && r.Leisure.Step>=r.Leisure.Route.size() &&
| ^~~~~
/tmp/vcore-adventure-state-4s9vbnjn/test.cpp:83:44: error: ‘struct AdventureBehaviorMgr::Record::<unnamed>’ has no member named ‘Route’
83 | player->GetExactDist(r.Leisure.Route.back())<=2)
| ^~~~~
Traceback (most recent call last):
File "/home/wow_admin/wow_cata_server/source/TrinityCore/tests/clientless/test_adventure_intent_state.py", line 108, in <module>
subprocess.run(['c++','-std=c++17','-I',str(root/'src/server/game/World'),str(cpp),'-o',str(binary)],check=True)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.14/subprocess.py", line 578, in run
raise CalledProcessError(retcode, process.args,
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['c++', '-std=c++17', '-I', '/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/World', '/tmp/vcore-adventure-state-4s9vbnjn/test.cpp', '-o', '/tmp/vcore-adventure-state-4s9vbnjn/test']' returned non-zero exit status 1.
@@ -0,0 +1,32 @@
/tmp/vcore-leisure-l3qqdidj/test.cpp: In member function ‘bool AdventureBehaviorMgr::LeisureAvailable(Player*, const Record&, const AdventureMicroAction&) const’:
/tmp/vcore-leisure-l3qqdidj/test.cpp:166:95: error: ‘FishingDirection’ was not declared in this scope
166 | return rod && rod->GetTemplate()->GetSubClass()==ITEM_SUBCLASS_WEAPON_FISHING_POLE && FishingDirection(p,direction);
| ^~~~~~~~~~~~~~~~
/tmp/vcore-leisure-l3qqdidj/test.cpp: In member function ‘bool AdventureBehaviorMgr::StartLeisure(Player*, Record&, const AdventureMicroAction&)’:
/tmp/vcore-leisure-l3qqdidj/test.cpp:199:17: error: ‘FishingDirection’ was not declared in this scope
199 | if(!FishingDirection(p,direction))return false;
| ^~~~~~~~~~~~~~~~
/tmp/vcore-leisure-l3qqdidj/test.cpp:216:7: error: ‘struct AdventureBehaviorMgr::Record::LeisureScene’ has no member named ‘Progressive’
216 | s.Progressive=s.Kind=="work_search" || (r.Intent=="adventure" && site->IsArea && foot);
| ^~~~~~~~~~~
/tmp/vcore-leisure-l3qqdidj/test.cpp:217:10: error: ‘struct AdventureBehaviorMgr::Record::LeisureScene’ has no member named ‘Progressive’
217 | if(s.Progressive)s.Route.resize(s.OutboundSteps);
| ^~~~~~~~~~~
/tmp/vcore-leisure-l3qqdidj/test.cpp: In member function ‘bool AdventureBehaviorMgr::UpdateLeisure(Player*, Record&, uint32)’:
/tmp/vcore-leisure-l3qqdidj/test.cpp:356:37: error: ‘ProfessionWorkAvailable’ was not declared in this scope
356 | if(s.Kind=="work_search" && ProfessionWorkAvailable(p,r))
| ^~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-leisure-l3qqdidj/test.cpp:367:20: error: ‘struct AdventureBehaviorMgr::Record::LeisureScene’ has no member named ‘Progressive’
367 | r.Detail=s.Progressive?"area search reached next observation point":"leisure outing completed at starting point";
| ^~~~~~~~~~~
/tmp/vcore-leisure-l3qqdidj/test.cpp:373:14: error: ‘struct AdventureBehaviorMgr::Record::LeisureScene’ has no member named ‘Progressive’
373 | if(s.Progressive) {s.Route.resize(s.Step);return false;}
| ^~~~~~~~~~~
Traceback (most recent call last):
File "/home/wow_admin/wow_cata_server/source/TrinityCore/tests/clientless/test_adventure_leisure.py", line 196, in <module>
subprocess.run(['c++','-std=c++17',str(cpp),'-o',str(binary)],check=True)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.14/subprocess.py", line 578, in run
raise CalledProcessError(retcode, process.args,
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['c++', '-std=c++17', '/tmp/vcore-leisure-l3qqdidj/test.cpp', '-o', '/tmp/vcore-leisure-l3qqdidj/test']' returned non-zero exit status 1.
@@ -0,0 +1,29 @@
/tmp/vcore-rest-fire-policy-he3ktm09/test.cpp: In member function ‘AdventureSocialContext AdventureBehaviorMgr::SocialContext(Player*, Record&)’:
/tmp/vcore-rest-fire-policy-he3ktm09/test.cpp:38:63: error: ‘struct Profile’ has no member named ‘PrimaryProfessions’
38 | location?location->Point.Category:"",profile?profile->PrimaryProfessions:AdventureProfessionPolicy::Professions{}};
| ^~~~~~~~~~~~~~~~~~
/tmp/vcore-rest-fire-policy-he3ktm09/test.cpp:38:82: error: ‘AdventureProfessionPolicy’ has not been declared
38 | location?location->Point.Category:"",profile?profile->PrimaryProfessions:AdventureProfessionPolicy::Professions{}};
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-rest-fire-policy-he3ktm09/test.cpp:38:120: error: expected ‘}’ before ‘{’ token
38 | location?location->Point.Category:"",profile?profile->PrimaryProfessions:AdventureProfessionPolicy::Professions{}};
| ^
/tmp/vcore-rest-fire-policy-he3ktm09/test.cpp:33:12: note: to match this ‘{’
33 | return {r.Anchor,r.AnchorMap,location&&location->Point.Category=="festival",
| ^
/tmp/vcore-rest-fire-policy-he3ktm09/test.cpp:38:120: note: probably missing a comma or an operator before
38 | location?location->Point.Category:"",profile?profile->PrimaryProfessions:AdventureProfessionPolicy::Professions{}};
| ^
/tmp/vcore-rest-fire-policy-he3ktm09/test.cpp:38:122: error: could not convert ‘{r.AdventureBehaviorMgr::Record::Anchor, r.AdventureBehaviorMgr::Record::AnchorMap, ((location != 0) && std::operator==<char, char_traits<char>, allocator<char> >(location->Location::Point.Location::<unnamed struct>::Category, ((const char*)"festival"))), ((profile != 0) ? std::__cxx11::basic_string<char>(profile->Profile::Locale) : std::__cxx11::basic_string<char>(((const char*)"enUS"), std::allocator<char>())), r.AdventureBehaviorMgr::Record::Intent, r.AdventureBehaviorMgr::Record::Random, r.AdventureBehaviorMgr::Record::TargetHistory, r.AdventureBehaviorMgr::Record::VariantHistory, <lambda closure object>AdventureBehaviorMgr::SocialContext(Player*, Record&)::<lambda(const Position&, float)>{((AdventureBehaviorMgr*)this), player, (* & r)}, (std::operator!=<char, char_traits<char>, allocator<char> >(r.AdventureBehaviorMgr::Record::Intent, ((const char*)"rest")) || ((location != 0) && std::operator==<char, char_traits<char>, allocator<char> >(location->Location::Point.Location::<unnamed struct>::Category, ((const char*)"rest_ground")))), (((location != 0) && std::operator==<char, char_traits<char>, allocator<char> >(r.AdventureBehaviorMgr::Record::Intent, ((const char*)"economy"))) ? AdventureEconomyPolicy::LocationRequirement(location->Location::Point.Location::<unnamed struct>::Category) : std::__cxx11::basic_string<char>(((const char*)""), std::allocator<char>())), ((location != 0) ? std::__cxx11::basic_string<char>(location->Location::Point.Location::<unnamed struct>::Category) : std::__cxx11::basic_string<char>(((const char*)""), std::allocator<char>())), <expression error>}’ from ‘<brace-enclosed initializer list>’ to ‘AdventureSocialContext’
38 | location?location->Point.Category:"",profile?profile->PrimaryProfessions:AdventureProfessionPolicy::Professions{}};
| ^
| |
| <brace-enclosed initializer list>
Traceback (most recent call last):
File "/home/wow_admin/wow_cata_server/source/TrinityCore/tests/clientless/test_adventure_rest_fire.py", line 74, in <module>
subprocess.run(['c++','-std=c++17','-I',str(root/'src/server/game/World'),str(cpp),'-o',str(binary)],check=True)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.14/subprocess.py", line 578, in run
raise CalledProcessError(retcode, process.args,
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['c++', '-std=c++17', '-I', '/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/World', '/tmp/vcore-rest-fire-policy-he3ktm09/test.cpp', '-o', '/tmp/vcore-rest-fire-policy-he3ktm09/test']' returned non-zero exit status 1.
@@ -0,0 +1,107 @@
/tmp/vcore-social-test-cy2ndyrb/test.cpp: In function ‘std::vector<AdventureSocialFlow::Step> Steps(const std::string&, uint32)’:
/tmp/vcore-social-test-cy2ndyrb/test.cpp:100:13: error: ‘AdventureProfessionPolicy’ has not been declared
100 | if (AdventureProfessionPolicy::Recognized(kind)) return AdventureProfessionPolicy::Steps(kind,duration);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:100:65: error: ‘AdventureProfessionPolicy’ has not been declared
100 | if (AdventureProfessionPolicy::Recognized(kind)) return AdventureProfessionPolicy::Steps(kind,duration);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp: In static member function ‘static bool AdventureSocialActions::Update(Player*, AdventureSocialScene&, uint32, AdventureSocialContext&)’:
/tmp/vcore-social-test-cy2ndyrb/test.cpp:256:8: error: ‘AdventureProfessionPolicy’ has not been declared
256 | if(AdventureProfessionPolicy::Recognized(s.Kind) && (c.Intent!="profession" || !AdventureProfessionPolicy::Allowed(s.Kind,c.PrimaryProfessions)))return false;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:256:60: error: ‘struct AdventureSocialContext’ has no member named ‘Intent’
256 | if(AdventureProfessionPolicy::Recognized(s.Kind) && (c.Intent!="profession" || !AdventureProfessionPolicy::Allowed(s.Kind,c.PrimaryProfessions)))return false;
| ^~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:256:85: error: ‘AdventureProfessionPolicy’ has not been declared
256 | if(AdventureProfessionPolicy::Recognized(s.Kind) && (c.Intent!="profession" || !AdventureProfessionPolicy::Allowed(s.Kind,c.PrimaryProfessions)))return false;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:256:129: error: ‘struct AdventureSocialContext’ has no member named ‘PrimaryProfessions’
256 | if(AdventureProfessionPolicy::Recognized(s.Kind) && (c.Intent!="profession" || !AdventureProfessionPolicy::Allowed(s.Kind,c.PrimaryProfessions)))return false;
| ^~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:272:12: error: ‘AdventureProfessionPolicy’ has not been declared
272 | if(AdventureProfessionPolicy::Recognized(s.Kind) && !AdventureProfessionTargets::Valid(p,target,s.Kind,c))return false;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:272:62: error: ‘AdventureProfessionTargets’ has not been declared
272 | if(AdventureProfessionPolicy::Recognized(s.Kind) && !AdventureProfessionTargets::Valid(p,target,s.Kind,c))return false;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:363:27: error: ‘AdventureProfessionPolicy’ has not been declared
363 | auto task=AdventureProfessionPolicy::Find(s.Kind);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:364:30: error: ‘AdventureProfessionPolicy’ has not been declared
364 | if(!task || !AdventureProfessionPolicy::Allowed(s.Kind,c.PrimaryProfessions))return false;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:364:74: error: ‘struct AdventureSocialContext’ has no member named ‘PrimaryProfessions’
364 | if(!task || !AdventureProfessionPolicy::Allowed(s.Kind,c.PrimaryProfessions))return false;
| ^~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:365:30: error: ‘EMOTE_STATE_USE_STANDING’ was not declared in this scope; did you mean ‘EMOTE_ONESHOT_USE_STANDING’?
365 | uint32 emote=EMOTE_STATE_USE_STANDING;
| ^~~~~~~~~~~~~~~~~~~~~~~~
| EMOTE_ONESHOT_USE_STANDING
/tmp/vcore-social-test-cy2ndyrb/test.cpp:368:26: error: ‘AdventureProfessionPolicy’ has not been declared
368 | case AdventureProfessionPolicy::Motion::Mine:emote=EMOTE_STATE_WORK_MINING;break;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:368:72: error: ‘EMOTE_STATE_WORK_MINING’ was not declared in this scope
368 | case AdventureProfessionPolicy::Motion::Mine:emote=EMOTE_STATE_WORK_MINING;break;
| ^~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:369:26: error: ‘AdventureProfessionPolicy’ has not been declared
369 | case AdventureProfessionPolicy::Motion::Chop:emote=EMOTE_STATE_WORK_CHOPWOOD;break;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:369:72: error: ‘EMOTE_STATE_WORK_CHOPWOOD’ was not declared in this scope
369 | case AdventureProfessionPolicy::Motion::Chop:emote=EMOTE_STATE_WORK_CHOPWOOD;break;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:370:26: error: ‘AdventureProfessionPolicy’ has not been declared
370 | case AdventureProfessionPolicy::Motion::Kneel:emote=EMOTE_STATE_KNEEL;break;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:370:73: error: ‘EMOTE_STATE_KNEEL’ was not declared in this scope; did you mean ‘EMOTE_STATE_DANCE’?
370 | case AdventureProfessionPolicy::Motion::Kneel:emote=EMOTE_STATE_KNEEL;break;
| ^~~~~~~~~~~~~~~~~
| EMOTE_STATE_DANCE
/tmp/vcore-social-test-cy2ndyrb/test.cpp:433:8: error: ‘AdventureProfessionPolicy’ has not been declared
433 | if(AdventureProfessionPolicy::Recognized(s.Kind))
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:435:22: error: ‘AdventureProfessionPolicy’ has not been declared
435 | if(auto task=AdventureProfessionPolicy::Find(s.Kind))
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:439:38: error: ‘struct Position’ has no member named ‘Relocate’
439 | Position departure;departure.Relocate(p);
| ^~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:440:29: error: ‘struct WorldObject’ has no member named ‘GetAngle’
440 | float angle=target->GetAngle(p);
| ^~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:441:19: error: ‘struct Position’ has no member named ‘m_positionX’; did you mean ‘Position’?
441 | departure.m_positionX+=std::cos(angle)*2;departure.m_positionY+=std::sin(angle)*2;
| ^~~~~~~~~~~
| Position
/tmp/vcore-social-test-cy2ndyrb/test.cpp:441:60: error: ‘struct Position’ has no member named ‘m_positionY’; did you mean ‘Position’?
441 | departure.m_positionX+=std::cos(angle)*2;departure.m_positionY+=std::sin(angle)*2;
| ^~~~~~~~~~~
| Position
/tmp/vcore-social-test-cy2ndyrb/test.cpp:442:25: error: ‘struct Player’ has no member named ‘GetMap’
442 | float height=p->GetMap()->GetHeight(p->GetPhaseShift(),departure.GetPositionX(),departure.GetPositionY(),p->GetPositionZ()+3,true,8);
| ^~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:442:48: error: ‘struct Player’ has no member named ‘GetPhaseShift’
442 | float height=p->GetMap()->GetHeight(p->GetPhaseShift(),departure.GetPositionX(),departure.GetPositionY(),p->GetPositionZ()+3,true,8);
| ^~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:442:74: error: ‘struct Position’ has no member named ‘GetPositionX’; did you mean ‘Position’?
442 | float height=p->GetMap()->GetHeight(p->GetPhaseShift(),departure.GetPositionX(),departure.GetPositionY(),p->GetPositionZ()+3,true,8);
| ^~~~~~~~~~~~
| Position
/tmp/vcore-social-test-cy2ndyrb/test.cpp:442:99: error: ‘struct Position’ has no member named ‘GetPositionY’; did you mean ‘Position’?
442 | float height=p->GetMap()->GetHeight(p->GetPhaseShift(),departure.GetPositionX(),departure.GetPositionY(),p->GetPositionZ()+3,true,8);
| ^~~~~~~~~~~~
| Position
/tmp/vcore-social-test-cy2ndyrb/test.cpp:443:19: error: ‘INVALID_HEIGHT’ was not declared in this scope
443 | if(height>INVALID_HEIGHT+1 && std::fabs(height-p->GetPositionZ())<=2)
| ^~~~~~~~~~~~~~
/tmp/vcore-social-test-cy2ndyrb/test.cpp:445:23: error: ‘struct Position’ has no member named ‘m_positionZ’; did you mean ‘Position’?
445 | departure.m_positionZ=height;
| ^~~~~~~~~~~
| Position
Traceback (most recent call last):
File "/home/wow_admin/wow_cata_server/source/TrinityCore/tests/clientless/test_adventure_social.py", line 190, in <module>
subprocess.run(['c++','-std=c++17','-I',str(root/'src/server/game/World'),str(cpp),'-o',str(binary)],check=True)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.14/subprocess.py", line 578, in run
raise CalledProcessError(retcode, process.args,
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['c++', '-std=c++17', '-I', '/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/World', '/tmp/vcore-social-test-cy2ndyrb/test.cpp', '-o', '/tmp/vcore-social-test-cy2ndyrb/test']' returned non-zero exit status 1.
@@ -0,0 +1,24 @@
/tmp/vcore-social-fire-swu4udr3/test.cpp: In static member function ‘static bool AdventureSocialActions::Available(Player*, const AdventureMicroAction&, AdventureSocialContext&)’:
/tmp/vcore-social-fire-swu4udr3/test.cpp:79:9: error: ‘AdventureProfessionPolicy’ has not been declared
79 | if (AdventureProfessionPolicy::Recognized(kind)) return c.Intent=="profession" &&
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-fire-swu4udr3/test.cpp:80:9: error: ‘AdventureProfessionPolicy’ has not been declared
80 | AdventureProfessionPolicy::Allowed(kind,c.PrimaryProfessions) &&
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-fire-swu4udr3/test.cpp:80:51: error: ‘struct AdventureSocialContext’ has no member named ‘PrimaryProfessions’
80 | AdventureProfessionPolicy::Allowed(kind,c.PrimaryProfessions) &&
| ^~~~~~~~~~~~~~~~~~
/tmp/vcore-social-fire-swu4udr3/test.cpp:81:10: error: ‘AdventureProfessionPolicy’ has not been declared
81 | (AdventureProfessionPolicy::Untargeted(kind)?!p->IsInWater() && !p->IsFalling():!AdventureProfessionTargets::Find(p,kind,c).empty());
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vcore-social-fire-swu4udr3/test.cpp:81:90: error: ‘AdventureProfessionTargets’ has not been declared
81 | (AdventureProfessionPolicy::Untargeted(kind)?!p->IsInWater() && !p->IsFalling():!AdventureProfessionTargets::Find(p,kind,c).empty());
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
Traceback (most recent call last):
File "/home/wow_admin/wow_cata_server/source/TrinityCore/tests/clientless/test_adventure_social_fire.py", line 86, in <module>
subprocess.run(['c++','-std=c++17','-I',str(root/'src/server/game/World'),str(cpp),'-o',str(binary)],check=True)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.14/subprocess.py", line 578, in run
raise CalledProcessError(retcode, process.args,
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['c++', '-std=c++17', '-I', '/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/World', '/tmp/vcore-social-fire-swu4udr3/test.cpp', '-o', '/tmp/vcore-social-fire-swu4udr3/test']' returned non-zero exit status 1.
@@ -0,0 +1,18 @@
from pathlib import Path
import os,re,subprocess,sys
config=Path('/home/wow_admin/wow_cata_server/server/debug/etc/worldserver.conf').read_text()
match=re.search(r'^WorldDatabaseInfo\s*=\s*"([^"]+)"',config,re.M)
if not match:raise SystemExit('Test world database configuration not found')
host,port,user,password,database=match.group(1).split(';')
args=['mysql','--protocol=TCP','--host='+host,'--port='+port,'--user='+user,'--database='+database,'--default-character-set=utf8mb4','--batch','--connect-timeout=10']
env=os.environ.copy();env['MYSQL_PWD']=password
query="SELECT a.action_key,a.kind,a.min_seconds,a.max_seconds,a.requirement,i.intent,i.weight FROM vcore_adventure_action a JOIN vcore_adventure_action_intent i USING(action_key) WHERE a.action_key IN ('rest_fire','campfire_rest','social_fire'); SELECT point_key,category,map,position_x,position_y,position_z FROM vcore_clientless_world_point WHERE enabled=1 AND category='rest_ground' LIMIT 10;"
if sys.argv[1:] == ['apply']:
migration=Path('/home/wow_admin/wow_cata_server/source/TrinityCore/sql/custom/world/2026_10_27_01_adventure_rest_fire.sql').read_text()
query='START TRANSACTION;\n'+migration+'\n'+query+'\nCOMMIT;'
elif sys.argv[1:] != ['inspect']:raise SystemExit('Use inspect or apply')
result=subprocess.run(args,input=query,text=True,capture_output=True,env=env)
print(result.stdout,end='')
if result.returncode:
print(result.stderr.replace(password,'[redacted]'),file=sys.stderr,end='')
raise SystemExit(result.returncode)
@@ -0,0 +1,26 @@
TrinityCore rev. c0c799c4b686+ 2026-10-27 23:17:05 +0100 (feature/clientless-player-core branch) (Unix, Debug, Static) (worldserver-daemon) ready...
SUPPLY_SECONDARY guid=26 skill=356 value=525 max=525
SUPPLY_SECONDARY guid=26 skill=794 value=375 max=375
SUPPLY_SECONDARY guid=26 skill=129 value=375 max=375
SUPPLY_SECONDARY guid=26 skill=185 value=525 max=525
SUPPLY_TEST_INJURY guid=26 missingPercent=8
SUPPLY_TEST_INJURY guid=26 missingPercent=80
SUPPLY_USE_REQUEST guid=26 role='bandage' item=21991 spell=27031 combat=0
SUPPLY_USED guid=26 role='bandage' item=21991
SUPPLY_RECOVERY_END guid=26 health=4961
SUPPLY_TEST_INJURY guid=26 missingPercent=30
SUPPLY_USE_REQUEST guid=26 role='bandage' item=21991 spell=27031 combat=0
SUPPLY_USE_REQUEST guid=26 role='food' item=27854 spell=27094 combat=0
SUPPLY_USED guid=26 role='food' item=27854
SUPPLY_RECOVERY_END guid=26 health=5249
SUPPLY_TEST_INJURY guid=26 missingPercent=30
COMBAT_START guid=26 target='GUID Full: 0xf130a56000000b1c Type: Creature Entry: 42336 Low: 2844' training=0 defending=0 until=0
COMBAT_END guid=26 target='GUID Full: 0xf130a56000000b1c Type: Creature Entry: 42336 Low: 2844' training=0
COMBAT_START guid=26 target='GUID Full: 0xf130a56000000b1c Type: Creature Entry: 42336 Low: 2844' training=0 defending=1 until=0
SUPPLY_USE_REQUEST guid=26 role='healing_potion' item=22829 spell=28495 combat=1
SUPPLY_USED guid=26 role='healing_potion' item=22829
COMBAT_END guid=26 target='GUID Full: 0xf130a56000000b1c Type: Creature Entry: 42336 Low: 2844' training=0
SUPPLY_TOPUP guid=26 role='bandage' item=21991 added=1 stack=20
SUPPLY_TOPUP guid=26 role='healing_potion' item=22829 added=1 stack=20
SUPPLY_TOPUP guid=26 role='food' item=27854 added=1 stack=20
SUPPLY_RESTOCK guid=26 day=20261027 daily=0 afterCombat=1
@@ -0,0 +1,11 @@
Debug build -j10 installed;55 tests/clientless scripts passed.
Native skill getter corrected and regression-tested.
Arthoran native skill values: FirstAid375/375, Cooking525/525, Fishing525/525, Archaeology375/375. Trainer requirements permit these ranks at level60.
Four new EmbersilkBags54443,22 slots each. Existing equipment/items preserved.
Each supply role initially20; bandage21991, healing22829, mana22832, food27854, drink28399. Money0 unchanged.
Marked8% injury: no supply use. Marked80% injury: real heavy netherweave bandage consumed; remainingHP4961/5249, no food because deficit<10%.
Marked30% injury with native bandage lockout: food consumed, HP5249/5249.
Same-day relog: bandage19/food19 remained; no daily topup.
Real bear fight with marked initial30% deficit: healing potion consumed in combat. After native combat exit, exactly1 bandage,1 healing potion,1 food replenished to20 each; no duplicate stacks.
Mana-specific behavior tested with production adapters, not a live mana-using character.
Isolated test positions set administratively offline; no long-distance travel claim.
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,6 @@
TrinityCore rev. 04aa87fcfc13+ 2026-10-28 11:30:47 +0100 (feature/clientless-player-core branch) (Unix, Debug, Static) (worldserver-daemon) ready...
GROUP_BOT_INVITE leader=31 target=29 intent='social' forming=0
INTERACTION_INVITE guid=29 leader=31 accepted=1
INTERACTION_GROUP_LEAVE guid=31 reason='intent-change'
Interactions guid=29 grouped=1 leader=31 partner=0 intent='social' schedule='soc
Interactions guid=31 grouped=1 leader=31 partner=0 intent='social' schedule='soc
@@ -0,0 +1,3 @@
66 clientless test scripts passed; final interaction-manager regression rechecked. Native Lenara31 -> Aelion29 invitation accepted, native grouped1/leader31 observed, later normal intent-change departure. Timer defect discovered during smoke and fixed before final deployment. Full group route/raid/visual acceptance remains open.
Latest production plan-signature regression rechecked: different inherited destinations do not trigger personal intent-change departure; restoration returns to the original manual destination.
Final corrected Debug build installed; worldserver122595 fresh ready and port8085 verified. All four bots online;29/31 confirmed enabled0/grouped0 in Goldshire,30/32 original social intents,26offline. No temporary profile changes or overrides.
@@ -0,0 +1,204 @@
TEST tests/clientless/test_adventure_area_node.py
Production area destination excludes outside and unreachable graph nodes.
TEST tests/clientless/test_adventure_behavior_policy.py
24-hour generation, shared intents with changing destinations, broad location classification and repetition penalties passed.
TEST tests/clientless/test_adventure_combat_exercise.py
Production exercise: stance/charge/melee/casts, native validation delegation, bounded lifetime, invalid targets and unchanged native phases passed.
TEST tests/clientless/test_adventure_combat_preparation.py
Production talent learner: native tiers/dependencies/class gates, all 26 legal level60 points, no capstone bypass and repeat safety passed.
TEST tests/clientless/test_adventure_combat_reactions.py
Production combat focus, damage ordering, risk filters, corpse radius/delay, flight/group override, blocked escape, danger avoidance and malus-free persisted fallback passed.
TEST tests/clientless/test_adventure_economy.py
Economy: native service roles, friendly/phase/LOS/bounds gates, no bot service targets and coherent performative cues passed.
TEST tests/clientless/test_adventure_economy_catalog.py
Economy catalog: eleven actions, three faction-bound service anchors, native flag gates and idempotent preservation passed.
TEST tests/clientless/test_adventure_exploration.py
Exploration: visible native props only, no chests/traps/furniture, phase/map/LOS/range gates and contextual preparation passed.
TEST tests/clientless/test_adventure_exploration_catalog.py
Exploration catalog: ten actions, shared scenes, default wander replacement, explicit category eligibility and preserved edits passed.
TEST tests/clientless/test_adventure_generator_equipment.py
Production equipment affinity: mana-only/direct/triggered procs, caster/physical stat effects and bounded cycles passed
TEST tests/clientless/test_adventure_generator_ownership.py
Production generator commands: batch bounds, dedicated ownership, persistent/online/removing retirement protection and retired login refusal passed
TEST tests/clientless/test_adventure_generator_policy.py
Production generator: 6144 cultural names and 61440 real Lua profiles, profession coherence, personality ranges, escaping and equipment/armor gates passed
TEST tests/clientless/test_adventure_graph_handover.py
Production graph handover waits for ship/taxi/flight/teleport and stops at safe road/node boundaries.
TEST tests/clientless/test_adventure_group_plan.py
Production group plans: leader meeting/goal/deadline inheritance, untouched personal day, manual preparation and instance-state guards passed.
TEST tests/clientless/test_adventure_groups.py
Production recruitment: capitals, different goals, native inviter leadership, joining existing groups, capacity/reservations, raid conversion, planned transition and local contact passed.
TEST tests/clientless/test_adventure_instance.py
Production instance lifecycle: time budget, true entry, denied/shared entry, native rear exit, restart, expired copy, late arrival, HP and return replay passed.
TEST tests/clientless/test_adventure_instance_autoresume.py
Instance startup script: no schema/no visits stays idle; saved visitors resume with the Adventure controller and native accounts.
TEST tests/clientless/test_adventure_instance_begin.py
Production entrance travel uses the existing location planner, requires mapping and retains normal social/area travel.
TEST tests/clientless/test_adventure_instance_catalog.py
Instance migrations: outside entrances only, native graph preserved, disabled/missing transitions excluded, edits and saved visits preserved.
TEST tests/clientless/test_adventure_instance_persistence.py
Production instance persistence: phases, original deadline, instance ID, transactional HP marker, failed commit and intent release passed.
TEST tests/clientless/test_adventure_intent_state.py
Production intent arrival, failed/partial travel, deadlines and safe schedule handover passed.
TEST tests/clientless/test_adventure_interactions.py
/tmp/tmp_vzcr4vj/test.cpp: In member function ‘void AdventureInteractionMgr::Leave(Player*, Record&, const char*)’:
/tmp/tmp_vzcr4vj/test.cpp:142:69: warning: unused parameter ‘reason’ [-Wunused-parameter]
142 | void AdventureInteractionMgr::Leave(Player* p,Record& r,char const* reason)
| ~~~~~~~~~~~~^~~~~~
production interaction manager: invitations, factions, reservations, follow, AFK and deferred departure passed
TEST tests/clientless/test_adventure_leisure.py
Leisure: substantial curved MMAP routes, mirrored return, interrupted return, rejected corridors, actual arrival, companion follow, riding, flight and fishing passed.
TEST tests/clientless/test_adventure_leisure_catalog.py
Leisure migration: native city anchor, shared scene references, pet-walk mapping and preservation of edited weights passed.
TEST tests/clientless/test_adventure_location_import.py
Locations: actual Debug SMALLINT reads retain continent IDs; explicit location eligibility and edited weight overrides passed.
TEST tests/clientless/test_adventure_micro_reset.py
Micro cleanup ends physical local movement, preserves transit and does not stand up dead players.
TEST tests/clientless/test_adventure_profession_catalog.py
Profession catalog: native workstation roles, no workshop/resource inference, idempotence and preserved edits passed.
TEST tests/clientless/test_adventure_profession_profile.py
Production profession parser, real Lua profiles, primary restrictions and secondary permissions passed.
TEST tests/clientless/test_adventure_profession_sightline.py
Native workstation working-surface sightline and blocked geometry rejection passed.
TEST tests/clientless/test_adventure_profession_targets.py
Production profession targets: native locks, phase/spawn/loot, stations, corpses, history and trainers passed.
TEST tests/clientless/test_adventure_pvp.py
Production PvP selector: level boundaries, radius, factions, native legality, navigation, intent, personality and resources passed.
TEST tests/clientless/test_adventure_repair_catalog.py
Repair action catalog: proper native service requirement, economy-only intent and preserved administrator weights passed.
TEST tests/clientless/test_adventure_rest.py
Recovery: authored places, bounds, arrival, occupancy, full rest duration, failure, reload and interruption passed.
TEST tests/clientless/test_adventure_rest_fire.py
Rest fire: shared scene mapping, additive migration, preserved weights and authored creation-place policy passed.
TEST tests/clientless/test_adventure_rest_space.py
Sleep footprint: furniture, body extent, overhead collision, ledges, stairs, missing heights, rotation and scale passed.
TEST tests/clientless/test_adventure_rest_targets.py
Native sleep targets: chair exclusion, phase, despawn, floor search, indoors, water, storey, occupancy, bed/surface preference passed.
TEST tests/clientless/test_adventure_social.py
Production social flow: approach before talk, coherent greeting/talk/listen/farewell, lost targets, native chair confirmation and real fire confirmation passed.
TEST tests/clientless/test_adventure_social_fire.py
Shared fire: native detection/provisioning, buildings/city/parent/zone restrictions, existing fires and outdoor/water checks passed.
TEST tests/clientless/test_adventure_supplies.py
Production supplies: exact10% boundary, bandage-before-food, native lockout fallback, recovery completion, combat potions, mana-only drinking and daily/post-combat top-ups passed.
TEST tests/clientless/test_adventure_supply_catalog.py
Supply migrations: all five roles, level60 netherweave tier, editable/disabled catalog preservation and persistent daily stamp passed.
TEST tests/clientless/test_adventure_supply_items.py
Production native-item delegation: usable bandage tiers, native cooldown/lockout gates, real inventory consumption, self targeting and level60 secondary caps passed.
TEST tests/clientless/test_adventure_training_catalog.py
Training catalog: real dummy requirement, leisure-only intent, bounded duration and preserved administrator weights passed.
TEST tests/clientless/test_adventure_walk.py
Production travel gait reaches native spline, survives repaths, prevents mounting and preserves legacy running defaults.
TEST tests/clientless/test_clientless_character_factory.py
Production native factory: character/profile atomicity, failed preparation/commit, cache publication order, account/security/name/cap gates passed
TEST tests/clientless/test_clientless_companion.py
Native companion: provisioning, delayed summon, ownership, real item target, leash confirmation/timeout, reuse and cleanup passed.
TEST tests/clientless/test_clientless_damage_notifications.py
Production damage handoff: 16 concurrent map-worker writers, ordered GUID-only events, clientless-only/positive damage gates and post-health notification passed.
TEST tests/clientless/test_clientless_near_teleport_observer.py
Production near-teleport observer packet includes actual mover GUID and destination; clientless timestamp refreshed, regular client timestamp preserved.
TEST tests/clientless/test_clientless_skill_preparation.py
Production offline skill preparation: native tier caps, no downgrading, rank/level/race/tier gates and no modification of online players passed
TEST tests/clientless/test_clientless_social_notifications.py
Production social/helper queues: concurrent GUID-only delivery, bounded queues, human/self/zero-damage gates, pet attribution and lethal-cleanup ordering passed
TEST tests/clientless/test_default_phase.py
Native PhaseShift: implicit/default 169 visibility, genuine custom-phase separation and reference updates passed.
TEST tests/clientless/test_flight_area_query.py
Native terrain query map/phase, area/zone ordering and cache passed.
TEST tests/clientless/test_flight_handoff.py
Flight handoff before spline end, terminal landing, return corners, collision stop and actual distance passed.
TEST tests/clientless/test_flight_policy.py
Flight native eligibility, license/profile/zone policy, RP costs and fail-safe return decisions passed.
TEST tests/clientless/test_follow_spline_velocity.py
Native follow: actual player/creature spline velocity, client gait and independent follower speeds passed.
TEST tests/clientless/test_free_flight.py
Flight geometry passed: takeoff/landing, smoothed peak, ceiling, lateral/climbing avoidance, missing terrain and blocked corridors.
TEST tests/clientless/test_free_flight_planner.py
ground planner regressions and dynamic flight/node/location/virtual-exit integration passed
TEST tests/clientless/test_ground_exit_continuation.py
optional exits: repeated probes, retained route, delayed success, forward resume, flight fallback passed
TEST tests/clientless/test_local_spline_segments.py
Production local spline clipping passes native path-length validation, tiny remainders and 1000 sampled paths.
TEST tests/clientless/test_lua_reload.py
Lua reload regression tests passed (production reload/bindings, real Lua 5.4).
TEST tests/clientless/test_player_pure_max_skill.py
Native pure skill cap: learned skills return stored cap; missing/deleted/zero-rank skills return0.
TEST tests/clientless/test_portal_transfer.py
Portal near/far ACK and denied same-map transfer regressions passed.
TEST tests/clientless/test_portal_use.py
Interactive portal native click, near/far/global ACK, denial, timeout and target checks passed.
Native portal destination discovery and unsupported/ambiguous spell rejection passed.
Production clientless ACK completion sequence increments only after completed near/far transfers.
TEST tests/clientless/test_shared_group_route.py
Production generic shared routes: same edges/taxi/free flight, independent execution state, final local goal, late catch-up, permissions and stale-goal rejection passed.
TEST tests/clientless/test_taxi_import_disabled.py
Taxi importer preserves disabled rows and their reasons.
TEST tests/clientless/test_transport.py
Transport dock, frame, recorder, cross-map copy and ride regressions passed
TEST tests/clientless/test_transport_grid_loading.py
Core transport grid initialization regressions passed (no CPC dependency).
@@ -0,0 +1,19 @@
from pathlib import Path
import os,re,subprocess,sys
root=Path('/home/wow_admin/wow_cata_server/source/TrinityCore')
conf=Path('/home/wow_admin/wow_cata_server/server/debug/etc/worldserver.conf').read_text()
def query(kind,sql):
h,port,u,p,db=re.search(r'^'+kind+r'DatabaseInfo\s*=\s*"([^"]+)"',conf,re.M).group(1).split(';')
env=os.environ.copy();env['MYSQL_PWD']=p
r=subprocess.run(['mysql','--protocol=TCP','--host='+h,'--port='+port,'--user='+u,'--database='+db,'--batch','--connect-timeout=10'],input=sql,text=True,capture_output=True,env=env)
if r.returncode:raise SystemExit(r.stderr.replace(p,'[redacted]'))
return r.stdout
mode=sys.argv[1]
if mode=='inspect':
print(query('World',"SHOW CREATE TABLE vcore_adventure_day; SELECT zone_id,area_id,COUNT(*) n FROM vcore_adventure_location GROUP BY zone_id,area_id ORDER BY n DESC LIMIT 20;"))
elif mode=='apply':
print(query('World',(root/'sql/custom/world/2026_10_28_01_adventure_groups.sql').read_text()))
elif mode=='state':
print(query('Character',"SELECT guid,name,online,map,instance_id FROM characters WHERE guid IN(26,29,30,31,32); SELECT guid,leaderGuid,groupType FROM groups; SELECT guid,memberGuid FROM group_member ORDER BY guid,memberGuid;"))
else:raise SystemExit('unknown mode')
@@ -0,0 +1,5 @@
TC> Adventure loader enabled=1 schema=1 busy=0 pools=10/2/10/2 known=25 rotations=0 manager=24 error=''
pool=0 faction=alliance persistent=1 target=10 online=10 pending=0 saved=10
pool=1 faction=alliance persistent=0 target=2 online=2 pending=0 saved=3
pool=2 faction=horde persistent=1 target=10 online=10 pending=0 saved=10
pool=3 faction=horde persistent=0 target=2 online=2 pending=0 saved=2
@@ -0,0 +1,13 @@
Thread 1 (Thread 0x7ffff7e22380 (LWP 160076) "worldserver"):
#0 SpellEffectInfo::CalcBaseValue (this=0x7fffdff27230, caster=0x7fffaa8bd000, target=0x0) at /home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/Spells/SpellInfo.cpp:550
#1 0x0000555557ebd906 in SpellValue::SpellValue (this=0x7fff12f6a520, proto=0x7fffdff26f00, caster=0x7fffaa8bd000) at /home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/Spells/Spell.cpp:539
#2 0x0000555557ebdaa1 in Spell::Spell (this=0x7fff4c696000, caster=0x7fffaa8bd000, info=0x7fffdff26f00, triggerFlags=TRIGGERED_FULL_MASK, originalCasterGUID=...) at /home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/Spells/Spell.cpp:566
#3 0x00005555575d8d49 in WorldObject::CastSpell (this=0x7fffaa8bd000, targets=..., spellId=56342, args=...) at /home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/Entities/Object/Object.cpp:2959
#4 0x000055555761a312 in Player::AddSpell (this=0x7fffaa8bd000, spellId=56342, active=true, learning=true, dependent=false, disabled=false, loading=false, fromSkill=0) at /home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/Entities/Player/Player.cpp:2918
#5 0x000055555761b9d5 in Player::LearnSpell (this=0x7fffaa8bd000, spell_id=56342, dependent=false, fromSkill=0) at /home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/Entities/Player/Player.cpp:3109
#6 0x00005555576a6ccd in Player::LearnTalent (this=0x7fffaa8bd000, talentId=9452, talentRank=0) at /home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/Entities/Player/Player.cpp:25810
#7 0x00005555580b2532 in operator() (__closure=0x7fffffffba80, id=9452, rank=0) at /home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/World/AdventureGeneratorMgr.cpp:117
#8 0x00005555580bca94 in AdventureTalentPolicy::Spend<(anonymous namespace)::Talents(Player*, const AdventureGeneratorPolicy::Archetype&)::<lambda(uint32, unsigned int)>, (anonymous namespace)::Talents(Player*, const AdventureGeneratorPolicy::Archetype&)::<lambda()> >(const std::vector<AdventureTalentPolicy::Talent, std::allocator<AdventureTalentPolicy::Talent> > &, struct {...}, struct {...}) (build=std::vector of length 19, capacity 19 = {...}, learn=..., remaining=...) at /home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/World/AdventureTalentPolicy.h:18
#9 0x00005555580b28fc in (anonymous namespace)::Talents (p=0x7fffaa8bd000, a=...) at /home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/World/AdventureGeneratorMgr.cpp:117
#10 0x00005555580b7385 in AdventureGeneratorMgr::Prepare (this=0x55555a18ff00 <AdventureGeneratorMgr::instance()::mgr>, p=0x7fffaa8bd000, a=..., error="") at /home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/World/AdventureGeneratorMgr.cpp:419
#11 0x00005555580bad71 in AdventureGeneratorMgr::Reconcile (this=0x55555a18ff00 <AdventureGeneratorMgr::instance()::mgr>, player=0x7fffaa8bd000, error="") at /home/wow_admin/wow_cata_server/source/TrinityCore/src/server/game/World/AdventureGeneratorMgr.cpp:601
@@ -0,0 +1,11 @@
Build: Debug, existing CMake configuration, -j10. Full1046-step rebuild
for SpellInfo header fix plus final9-step class refinements succeeded.
Installed with cmake --install after verifying no worldserver/authserver active.
Third fresh startup: /tmp/vcore-class-combat-20261028-start3.log.
Fresh ready marker, persistent worldserver PID167319 and port8085 LISTEN verified.
Loader enabled, pools online10/2/10/2, pending0, manager24, error empty.
Initial native Hunter44 talent preparation warning recovered: saved level63
Survival tree809 with28 talent points, matching NumTalentsAtLevel.dbc.
Original inventories21/26 unchanged against pre-task hashes.
No in-game tank/healer/player-party acceptance or raid completion claimed.
Existing missing-map719 and Into the Wilderness84729 misc9 warnings remain.
@@ -0,0 +1,257 @@
TEST tests/clientless/test_adventure_area_node.py
Production area destination excludes outside and unreachable graph nodes.
TEST tests/clientless/test_adventure_async_database.py
Async creation DB contracts: prepared connection masks, native security column names, no future waits, successful-save cache publication and world-update-only loader hook passed
TEST tests/clientless/test_adventure_behavior_policy.py
24-hour generation, shared intents with changing destinations, broad location classification and repetition penalties passed.
TEST tests/clientless/test_adventure_class_rotation.py
Production class rotations: persistent PvE solo pools, native rank aura IDs, combo/holy power/proc/execute/resource gates, Eclipse and healer coverage passed
TEST tests/clientless/test_adventure_combat_exercise.py
Production exercise: stance/charge/melee/casts, native validation delegation, bounded lifetime, invalid targets and unchanged native phases passed.
TEST tests/clientless/test_adventure_combat_preparation.py
Production talent learner: native tiers/dependencies/class gates, all 26 legal level60 points, no capstone bypass and repeat safety passed.
TEST tests/clientless/test_adventure_combat_reactions.py
Production combat focus, damage ordering, risk filters, corpse radius/delay, flight/group override, blocked escape, danger avoidance and malus-free persisted fallback passed.
TEST tests/clientless/test_adventure_day_persistence.py
Production day planner: all 24 TINYINT slots restored across logins, incomplete/old-day replacement, full transaction and curiosity/level weighting passed
TEST tests/clientless/test_adventure_economy.py
Economy: native service roles, friendly/phase/LOS/bounds gates, no bot service targets and coherent performative cues passed.
TEST tests/clientless/test_adventure_economy_catalog.py
Economy catalog: eleven actions, three faction-bound service anchors, native flag gates and idempotent preservation passed.
TEST tests/clientless/test_adventure_encounter.py
Production encounters: bot-only exclusion, mixed mode, extension hook, wait/revive, wipe fallback/reentry/gather/return, living-player priority, kick exit and offline cleanup passed
TEST tests/clientless/test_adventure_equipment_maintenance.py
Production gear maintenance: same birth/retention gate rejects wrong armor/stats, malformed effects, level, temporary, reputation, map, holiday, native-use and slot mismatches passed
TEST tests/clientless/test_adventure_exploration.py
Exploration: visible native props only, no chests/traps/furniture, phase/map/LOS/range gates and contextual preparation passed.
TEST tests/clientless/test_adventure_exploration_catalog.py
Exploration catalog: ten actions, shared scenes, default wander replacement, explicit category eligibility and preserved edits passed.
TEST tests/clientless/test_adventure_generator_equipment.py
Production equipment affinity: mana-only/direct/triggered procs, caster/physical stat effects and bounded cycles passed
TEST tests/clientless/test_adventure_generator_ownership.py
Production generator commands: batch bounds, dedicated ownership, persistent/online/removing retirement protection and retired login refusal passed
TEST tests/clientless/test_adventure_generator_policy.py
Production generator: 6144 cultural names and 61440 real Lua profiles, profession coherence, personality ranges, escaping and equipment/armor gates passed
TEST tests/clientless/test_adventure_graph_handover.py
Production graph handover waits for ship/taxi/flight/teleport and stops at safe road/node boundaries.
TEST tests/clientless/test_adventure_ground_avoidance.py
Production ground avoidance: harmful/friendly, phase169, height, reachable safe endpoint, rejected paths and reuse without cast/movement thrashing passed
TEST tests/clientless/test_adventure_group_plan.py
Production group plans: leader meeting/goal/deadline inheritance, untouched personal day, manual preparation and instance-state guards passed.
TEST tests/clientless/test_adventure_groups.py
Production recruitment: capitals, different goals, native inviter leadership, joining existing groups, capacity/reservations, raid conversion, planned transition and local contact passed.
TEST tests/clientless/test_adventure_instance.py
Production instance lifecycle: time budget, true entry, denied/shared entry, native rear exit, restart, expired copy, late arrival, HP and return replay passed.
TEST tests/clientless/test_adventure_instance_autoresume.py
Deferred instance script: missing schema/visits stays idle; no login work on startup; saved visitors resume with Adventure controllers and native accounts.
TEST tests/clientless/test_adventure_instance_begin.py
Production entrance travel uses the existing location planner, requires mapping and retains normal social/area travel.
TEST tests/clientless/test_adventure_instance_catalog.py
Instance migrations: outside entrances only, native graph preserved, disabled/missing transitions excluded, edits and saved visits preserved.
TEST tests/clientless/test_adventure_instance_loader.py
Production instance recovery: no startup DB/login work, asynchronous delayed/paced manual recovery, generated-bot quota ownership, absent-schema compatibility and existing preparation ticks passed
TEST tests/clientless/test_adventure_instance_persistence.py
Production instance persistence: phases, original deadline, instance ID, transactional HP marker, failed commit and intent release passed.
TEST tests/clientless/test_adventure_intent_state.py
Production intent arrival, failed/partial travel, deadlines and safe schedule handover passed.
TEST tests/clientless/test_adventure_interactions.py
/tmp/tmpefb2v_zu/test.cpp: In member function ‘void AdventureInteractionMgr::Leave(Player*, Record&, const char*)’:
/tmp/tmpefb2v_zu/test.cpp:142:69: warning: unused parameter ‘reason’ [-Wunused-parameter]
142 | void AdventureInteractionMgr::Leave(Player* p,Record& r,char const* reason)
| ~~~~~~~~~~~~^~~~~~
production interaction manager: invitations, factions, reservations, follow, AFK and deferred departure passed
TEST tests/clientless/test_adventure_leisure.py
Leisure: substantial curved MMAP routes, mirrored return, interrupted return, rejected corridors, actual arrival, companion follow, riding, flight and fishing passed.
TEST tests/clientless/test_adventure_leisure_catalog.py
Leisure migration: native city anchor, shared scene references, pet-walk mapping and preservation of edited weights passed.
TEST tests/clientless/test_adventure_location_import.py
Locations: actual Debug SMALLINT reads retain continent IDs; explicit location eligibility and edited weight overrides passed.
TEST tests/clientless/test_adventure_manager_inventory.py
Production inventory maintenance: only full backpacks, native stack trimming, level-appropriate supplies, tools, leash, fishing pole, containers and untouched equipped slots passed
TEST tests/clientless/test_adventure_micro_reset.py
Micro cleanup ends physical local movement, preserves transit and does not stand up dead players.
TEST tests/clientless/test_adventure_population.py
Production population: four independent faction/persistence targets, fair selection, pending reservations, retries, existing inventory, once-per-boot rotation and connected/persistent protection passed
TEST tests/clientless/test_adventure_profession_catalog.py
Profession catalog: native workstation roles, no workshop/resource inference, idempotence and preserved edits passed.
TEST tests/clientless/test_adventure_profession_profile.py
Production profession parser, real Lua profiles, primary restrictions and secondary permissions passed.
TEST tests/clientless/test_adventure_profession_sightline.py
Native workstation working-surface sightline and blocked geometry rejection passed.
TEST tests/clientless/test_adventure_profession_targets.py
Production profession targets: native locks, phase/spawn/loot, stations, corpses, history and trainers passed.
TEST tests/clientless/test_adventure_profile_selection.py
Production profile selection: real Lua ID dictionaries, exact 9:1 companion weighting, zero/negative/infinite/NaN/oversized weights rejected and legacy companion fallback passed
TEST tests/clientless/test_adventure_pvp.py
Production PvP selector: level boundaries, radius, factions, native legality, navigation, intent, personality and resources passed.
TEST tests/clientless/test_adventure_repair_catalog.py
Repair action catalog: proper native service requirement, economy-only intent and preserved administrator weights passed.
TEST tests/clientless/test_adventure_rest.py
Recovery: authored places, bounds, arrival, occupancy, full rest duration, failure, reload and interruption passed.
TEST tests/clientless/test_adventure_rest_fire.py
Rest fire: shared scene mapping, additive migration, preserved weights and authored creation-place policy passed.
TEST tests/clientless/test_adventure_rest_space.py
Sleep footprint: furniture, body extent, overhead collision, ledges, stairs, missing heights, rotation and scale passed.
TEST tests/clientless/test_adventure_rest_targets.py
Native sleep targets: chair exclusion, phase, despawn, floor search, indoors, water, storey, occupancy, bed/surface preference passed.
TEST tests/clientless/test_adventure_rotation.py
/tmp/tmpk5e83d51/test.cpp: In instantiation of ‘std::string Trinity::StringFormat(const char*, A ...) [with A = {}; std::string = std::__cxx11::basic_string<char>]’:
/tmp/tmpk5e83d51/test.cpp:22:126: required from ‘void Tx::PAppend(const char*, A ...) [with A = {}]’
22 | struct Tx{std::vector<std::string>sql;template<class...A>void PAppend(char const*f,A...a){sql.push_back(Trinity::StringFormat(f,a...));}};
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
/tmp/tmpk5e83d51/test.cpp:51:75: required from here
51 | auto barrier=CharacterDatabase.BeginTransaction();barrier->PAppend("DO 0");
| ~~~~~~~~~~~~~~~~^~~~~~~~
/tmp/tmpk5e83d51/test.cpp:11:113: warning: format not a string literal and no format arguments [-Wformat-security]
11 | namespace Trinity{template<class...A>std::string StringFormat(char const* f,A...args){char b[4096];std::snprintf(b,sizeof(b),f,args...);return b;}}
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
Production rotation: connected/native-online protection, ownership refusal, native delete failure, world cleanup failure and journal-retained retry before successful profile/plan/state removal passed
TEST tests/clientless/test_adventure_social.py
Production social flow: approach before talk, coherent greeting/talk/listen/farewell, lost targets, native chair confirmation and real fire confirmation passed.
TEST tests/clientless/test_adventure_social_fire.py
Shared fire: native detection/provisioning, buildings/city/parent/zone restrictions, existing fires and outdoor/water checks passed.
TEST tests/clientless/test_adventure_supplies.py
Production supplies: exact10% boundary, bandage-before-food, native lockout fallback, recovery completion, combat potions, mana-only drinking and daily/post-combat top-ups passed.
TEST tests/clientless/test_adventure_supply_catalog.py
Supply migrations: all five roles, level60 netherweave tier, editable/disabled catalog preservation and persistent daily stamp passed.
TEST tests/clientless/test_adventure_supply_items.py
Production native-item delegation: usable bandage tiers, native cooldown/lockout gates, real inventory consumption, self targeting and level60 secondary caps passed.
TEST tests/clientless/test_adventure_talent_templates.py
Canonical Cata PvE builds: 4.3.4 class/tree/rank/prerequisite gates, all 1..41 point budgets, solo selection coverage passed
TEST tests/clientless/test_adventure_training_catalog.py
Training catalog: real dummy requirement, leisure-only intent, bounded duration and preserved administrator weights passed.
TEST tests/clientless/test_adventure_walk.py
Production travel gait reaches native spline, survives repaths, prevents mounting and preserves legacy running defaults.
TEST tests/clientless/test_clientless_character_factory.py
Production native factory: character/profile atomicity, failed preparation/commit, cache publication order, account/security/name/cap gates passed
TEST tests/clientless/test_clientless_companion.py
Native companion: provisioning, delayed summon, ownership, real item target, leash confirmation/timeout, reuse and cleanup passed.
TEST tests/clientless/test_clientless_damage_notifications.py
Production damage handoff: 16 concurrent map-worker writers, ordered GUID-only events, clientless-only/positive damage gates and post-health notification passed.
TEST tests/clientless/test_clientless_near_teleport_observer.py
Production near-teleport observer packet includes actual mover GUID and destination; clientless timestamp refreshed, regular client timestamp preserved.
TEST tests/clientless/test_clientless_skill_preparation.py
Production offline skill preparation: native tier caps, no downgrading, rank/level/race/tier gates and no modification of online players passed
TEST tests/clientless/test_clientless_social_notifications.py
Production social/helper queues: concurrent GUID-only delivery, bounded queues, human/self/zero-damage gates, pet attribution and lethal-cleanup ordering passed
TEST tests/clientless/test_default_phase.py
Native PhaseShift: implicit/default 169 visibility, genuine custom-phase separation and reference updates passed.
TEST tests/clientless/test_empty_spell_effect.py
Native empty spell effects: poisoned-memory scaling initialization, Lock and Load cleared slot, active effect values and all-empty spell values passed
TEST tests/clientless/test_flight_area_query.py
Native terrain query map/phase, area/zone ordering and cache passed.
TEST tests/clientless/test_flight_handoff.py
Flight handoff before spline end, terminal landing, return corners, collision stop and actual distance passed.
TEST tests/clientless/test_flight_policy.py
Flight native eligibility, license/profile/zone policy, RP costs and fail-safe return decisions passed.
TEST tests/clientless/test_follow_spline_velocity.py
Native follow: actual player/creature spline velocity, client gait and independent follower speeds passed.
TEST tests/clientless/test_free_flight.py
Flight geometry passed: takeoff/landing, smoothed peak, ceiling, lateral/climbing avoidance, missing terrain and blocked corridors.
TEST tests/clientless/test_free_flight_planner.py
ground planner regressions and dynamic flight/node/location/virtual-exit integration passed
TEST tests/clientless/test_ground_exit_continuation.py
optional exits: repeated probes, retained route, delayed success, forward resume, flight fallback passed
TEST tests/clientless/test_item_equip_cooldown.py
Native item equip cooldown: zero/sentinel/missing spells safely skipped, valid use cooldown preserved and longer/disabled cooldowns untouched passed
TEST tests/clientless/test_local_spline_segments.py
Production local spline clipping passes native path-length validation, tiny remainders and 1000 sampled paths.
TEST tests/clientless/test_lua_reload.py
Lua reload regression tests passed (production reload/bindings, real Lua 5.4).
TEST tests/clientless/test_player_pure_max_skill.py
Native pure skill cap: learned skills return stored cap; missing/deleted/zero-rank skills return0.
TEST tests/clientless/test_portal_transfer.py
Portal near/far ACK and denied same-map transfer regressions passed.
TEST tests/clientless/test_portal_use.py
Interactive portal native click, near/far/global ACK, denial, timeout and target checks passed.
Native portal destination discovery and unsupported/ambiguous spell rejection passed.
Production clientless ACK completion sequence increments only after completed near/far transfers.
TEST tests/clientless/test_shared_group_route.py
Production generic shared routes: same edges/taxi/free flight, independent execution state, final local goal, late catch-up, permissions and stale-goal rejection passed.
TEST tests/clientless/test_taxi_import_disabled.py
Taxi importer preserves disabled rows and their reasons.
TEST tests/clientless/test_transport.py
Transport dock, frame, recorder, cross-map copy and ride regressions passed
TEST tests/clientless/test_transport_grid_loading.py
Core transport grid initialization regressions passed (no CPC dependency).
TOTAL 80 FAILED []
@@ -0,0 +1,4 @@
[1/4] cd /home/wow_admin/wow_cata_server/source/TrinityCore && /usr/bin/cmake -DBUILDDIR="/home/wow_admin/wow_cata_server/build/debug" -P /home/wow_admin/wow_cata_server/source/TrinityCore/cmake/genrev.cmake /home/wow_admin/wow_cata_server/build/debug
[2/4] Building CXX object src/server/game/CMakeFiles/game.dir/World/AdventureGeneratorMgr.cpp.o
[3/4] Linking CXX static library src/server/game/libgame.a
[4/4] Linking CXX executable src/server/worldserver/worldserver
@@ -0,0 +1 @@
Production equipment affinity: mana-only/direct/triggered procs, caster/physical stat effects and bounded cycles passed
@@ -0,0 +1 @@
Production native factory: character/profile atomicity, failed preparation/commit, cache publication order, account/security/name/cap gates passed
@@ -0,0 +1,30 @@
from pathlib import Path
import os,re,subprocess,sys
root=Path('/home/wow_admin/wow_cata_server/source/TrinityCore')
conf=Path('/home/wow_admin/wow_cata_server/server/debug/etc/worldserver.conf').read_text()
def query(kind,sql):
h,port,u,p,db=re.search(r'^'+kind+r'DatabaseInfo\s*=\s*"([^"]+)"',conf,re.M).group(1).split(';')
env=os.environ.copy();env['MYSQL_PWD']=p
r=subprocess.run(['mysql','--protocol=TCP','--host='+h,'--port='+port,'--user='+u,'--database='+db,'--batch','--connect-timeout=10'],input=sql,text=True,capture_output=True,env=env)
if r.returncode:raise SystemExit(r.stderr.replace(p,'[redacted]'))
return r.stdout
mode=sys.argv[1]
if mode=='inspect':
print(query('World',"SHOW COLUMNS FROM trainer; SHOW COLUMNS FROM trainer_spell; SHOW COLUMNS FROM vcore_clientless_world_point; SELECT l.point_key,l.display_name,l.faction,w.map,w.position_x,w.position_y,w.position_z,w.category FROM vcore_adventure_location l JOIN vcore_clientless_world_point w ON w.point_key=l.point_key WHERE w.enabled=1 AND w.category='city' ORDER BY l.point_key LIMIT 25;"))
print(query('Character','SELECT account,COUNT(*) AS characters FROM characters WHERE account=6 GROUP BY account;'))
elif mode=='migrate':
print(query('Character',(root/'sql/custom/characters/2026_10_28_00_adventure_generator.sql').read_text()))
elif mode=='baseline':
import hashlib
text=query('Character',"SELECT ci.guid,ci.bag,ci.slot,ci.item,i.itemEntry FROM character_inventory ci JOIN item_instance i ON i.guid=ci.item WHERE ci.guid IN (21,26) ORDER BY ci.guid,ci.bag,ci.slot,ci.item;")
Path('/tmp/vcore-generator-existing-items.tsv').write_text(text)
print('Existing item ownership baseline',hashlib.sha256(text.encode()).hexdigest())
elif mode=='compare':
import hashlib
text=query('Character',"SELECT ci.guid,ci.bag,ci.slot,ci.item,i.itemEntry FROM character_inventory ci JOIN item_instance i ON i.guid=ci.item WHERE ci.guid IN (21,26) ORDER BY ci.guid,ci.bag,ci.slot,ci.item;")
print('Existing item ownership unchanged:',text==Path('/tmp/vcore-generator-existing-items.tsv').read_text(),hashlib.sha256(text.encode()).hexdigest())
elif mode=='details':
print(query('Character',"SELECT c.guid,c.name,c.level,c.talentTree,c.map,c.instance_id,c.position_x,c.position_y,c.position_z,c.health,c.power1,g.state,g.persistent FROM characters c JOIN vcore_adventure_generated_bot g ON g.character_guid=c.guid ORDER BY c.guid; SELECT ci.guid,ci.slot,i.itemEntry FROM character_inventory ci JOIN item_instance i ON i.guid=ci.item JOIN vcore_adventure_generated_bot g ON g.character_guid=ci.guid WHERE g.state='ready' AND ci.bag=0 AND ci.slot IN (12,13) ORDER BY ci.guid,ci.slot; SELECT ci.guid,i.itemEntry,SUM(i.count) AS count FROM character_inventory ci JOIN item_instance i ON i.guid=ci.item JOIN vcore_adventure_generated_bot g ON g.character_guid=ci.guid WHERE g.state='ready' AND i.itemEntry IN (21991,22829,22832,27854,28399) GROUP BY ci.guid,i.itemEntry ORDER BY ci.guid,i.itemEntry; SELECT g.character_guid,LENGTH(g.profile_lua) AS profile_bytes,c.name,CONCAT('identity name matches: ',g.profile_lua LIKE CONCAT('%name = ',CHAR(34),c.name,CHAR(34),'%')) AS identity_check FROM vcore_adventure_generated_bot g JOIN characters c ON c.guid=g.character_guid WHERE g.state='ready' ORDER BY g.character_guid;"))
elif mode=='audit':
print(query('Character',"SELECT g.character_guid,c.name,c.race,c.class,c.gender,c.level,c.online,g.archetype,g.persistent,g.state,g.seed,c.health FROM vcore_adventure_generated_bot g JOIN characters c ON c.guid=g.character_guid ORDER BY g.character_guid; SELECT ci.guid,ci.slot,i.itemEntry,i.durability FROM character_inventory ci JOIN item_instance i ON i.guid=ci.item JOIN vcore_adventure_generated_bot g ON g.character_guid=ci.guid WHERE ci.bag=0 AND ci.slot<23 ORDER BY ci.guid,ci.slot; SELECT s.guid,s.skill,s.value,s.max FROM character_skills s JOIN vcore_adventure_generated_bot g ON g.character_guid=s.guid WHERE s.skill IN (129,185,356,794,164,186,182,171,197,333,165,393) ORDER BY s.guid,s.skill; SELECT t.guid,COUNT(*) AS talent_spells FROM character_talent t JOIN vcore_adventure_generated_bot g ON g.character_guid=t.guid GROUP BY t.guid; SELECT s.guid,COUNT(*) AS spells FROM character_spell s JOIN vcore_adventure_generated_bot g ON g.character_guid=s.guid GROUP BY s.guid;"))
else:raise SystemExit('Unknown mode')
@@ -0,0 +1,27 @@
TrinityCore rev. e333f2f9fc8b+ 2026-10-28 01:11:54 +0100 (feature/clientless-pla
yer-core branch) (Unix, Debug, Static) (worldserver-daemon)
<Ctrl-C> to stop.
______ __
/\__ _\ __ __/\ \__
\/_/\ \/ _ __ /\_\ ___ /\_\ \, _\ __ __
\ \ \/\`'__\/\ \ /' _ `\/\ \ \ \/ /\ \/\ \
\ \ \ \ \/ \ \ \/\ \/\ \ \ \ \ \_\ \ \_\ \
\ \_\ \_\ \ \_\ \_\ \_\ \_\ \__\\/`____ \
\/_/\/_/ \/_/\/_/\/_/\/_/\/__/ `/___/> \
C O R E /\___/
http://TrinityCore.org \/__/
Using configuration file /home/wow_admin/wow_cata_server/server/debug/etc/worlds
erver.conf.
Using SSL version: OpenSSL 3.5.5 27 Jan 2026 (library: OpenSSL 3.5.5 27 Jan 2026
)
Using Boost version: 1.90.0
Automatic database updates are disabled for all databases!
Could not connect to MySQL database at 10.0.0.1: Can't connect to server on '10.
0.0.1' (115)
DatabasePool Login NOT opened. There were errors opening the MySQL connections.
Check your SQLDriverLogFile for specific errors. Read wiki at http://www.trinity
core.info/display/tc/TrinityCore+Home
server shutdown 0
@@ -0,0 +1,176 @@
character_guid name race class gender level online archetype persistent state seed health
27 Dagri 3 1 1 60 0 warrior 0 retired 20261028 5049
28 Jarana 8 1 1 60 0 warrior 0 retired 20261029 5309
29 Aelion 4 1 0 60 1 warrior 0 ready 20261101 5189
30 Zanzan 8 1 0 60 1 warrior 0 ready 20261102 5409
31 Lenara 22 8 1 60 1 mage 0 ready 20261103 3600
32 Aldren 5 6 0 60 1 death_knight 0 ready 20261104 5259
guid slot itemEntry durability
27 0 23314 80
27 1 24073 0
27 2 21805 80
27 4 23300 135
27 5 22197 45
27 6 13498 100
27 7 31125 65
27 8 18754 45
27 9 22714 45
27 10 19873 0
27 11 24151 0
27 12 19930 0
27 13 19930 0
27 14 34659 0
27 15 31134 100
27 19 54443 0
27 20 54443 0
27 21 54443 0
27 22 54443 0
28 0 23244 80
28 1 24073 0
28 2 77868 80
28 4 22872 135
28 5 22197 45
28 6 21495 100
28 7 31125 65
28 8 22205 45
28 9 22868 45
28 10 27832 0
28 11 24151 0
28 12 19930 0
28 13 19930 0
28 14 22337 0
28 15 24044 100
28 17 25861 25
28 19 54443 0
28 20 54443 0
28 21 54443 0
28 22 54443 0
29 0 77867 80
29 1 24073 0
29 2 23315 80
29 4 77858 135
29 5 21503 45
29 6 13498 100
29 7 24064 65
29 8 12936 45
29 9 22714 45
29 10 27834 0
29 11 21477 0
29 12 13213 0
29 13 22321 0
29 14 34659 0
29 15 31134 100
29 19 54443 0
29 20 54443 0
29 21 54443 0
29 22 54443 0
30 0 23244 80
30 1 24073 0
30 2 23243 80
30 4 34650 115
30 5 19051 45
30 6 21475 100
30 7 24064 65
30 8 77861 45
30 9 22868 45
30 10 12058 0
30 11 24151 0
30 12 20072 0
30 13 11810 0
30 14 22337 0
30 15 31134 100
30 17 25861 25
30 19 54443 0
30 20 54443 0
30 21 54443 0
30 22 54443 0
31 0 22720 80
31 1 23125 0
31 2 21468 80
31 4 16700 135
31 5 16696 45
31 6 19683 100
31 7 21489 65
31 8 13107 45
31 9 16391 45
31 10 24045 0
31 11 19905 0
31 12 11819 0
31 13 21473 0
31 14 21470 0
31 15 20654 100
31 17 21801 65
31 19 54443 0
31 20 54443 0
31 21 54443 0
31 22 54443 0
32 0 22223 80
32 1 24073 0
32 2 21805 80
32 4 10845 135
32 5 21503 45
32 6 21475 100
32 7 24064 65
32 8 12936 45
32 9 22714 45
32 10 11934 0
32 11 19510 0
32 12 13164 0
32 13 1973 0
32 14 22337 0
32 15 31134 100
32 19 54443 0
32 20 54443 0
32 21 54443 0
32 22 54443 0
guid skill value max
27 129 375 375
27 164 375 375
27 185 525 525
27 186 450 450
27 356 525 525
27 794 375 375
28 129 375 375
28 164 375 375
28 185 525 525
28 186 450 450
28 356 525 525
28 794 375 375
29 129 375 375
29 164 375 375
29 185 525 525
29 186 450 450
29 356 525 525
29 794 375 375
30 129 375 375
30 164 375 375
30 185 525 525
30 186 450 450
30 356 525 525
30 794 375 375
31 129 375 375
31 185 525 525
31 197 375 375
31 333 375 375
31 356 525 525
31 794 375 375
32 129 375 375
32 164 375 375
32 185 525 525
32 186 450 450
32 356 525 525
32 794 375 375
guid talent_spells
27 13
28 13
29 13
30 13
31 14
32 12
guid spells
27 80
28 80
29 80
30 80
31 87
32 64
@@ -0,0 +1,42 @@
guid name level talentTree map instance_id position_x position_y position_z health power1 state persistent
27 Dagri 60 746 0 0 0 -5385.04 310.278 394.151 5049 0 retired 0
28 Jarana 60 746 0 1 0 -813.097 -4880.08 18.995 5309 0 retired 0
29 Aelion 60 746 0 1 0 9808.68 969.19 1309.75 5189 0 ready 0
30 Zanzan 60 746 0 1 0 -826.364 -4879.64 19.5037 5409 0 ready 0
31 Lenara 60 851 0 0 0 -9470.25 25.9936 56.3394 3600 6813 ready 0
32 Aldren 60 400 0 0 0 1095.38 1587.06 28.5303 5259 0 ready 0
guid slot itemEntry
29 12 13213
29 13 22321
30 12 20072
30 13 11810
31 12 11819
31 13 21473
32 12 13164
32 13 1973
guid itemEntry count
29 21991 20
29 22829 20
29 22832 20
29 27854 20
29 28399 20
30 21991 20
30 22829 20
30 22832 20
30 27854 20
30 28399 20
31 21991 20
31 22829 20
31 22832 20
31 27854 20
31 28399 20
32 21991 20
32 22829 20
32 22832 20
32 27854 20
32 28399 20
character_guid profile_bytes name identity_check
29 873 Aelion identity name matches: 1
30 870 Zanzan identity name matches: 1
31 858 Lenara identity name matches: 1
32 886 Aldren identity name matches: 1
@@ -0,0 +1 @@
Production generator commands: batch bounds, dedicated ownership, persistent/online/removing retirement protection and retired login refusal passed
@@ -0,0 +1 @@
Production generator: 6144 cultural names and 61440 real Lua profiles, profession coherence, personality ranges, escaping and equipment/armor gates passed
@@ -0,0 +1 @@
Production offline skill preparation: native tier caps, no downgrading, rank/level/race/tier gates and no modification of online players passed
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,63 @@
test_adventure_area_node.py: PASS
test_adventure_behavior_policy.py: PASS
test_adventure_combat_exercise.py: PASS
test_adventure_combat_preparation.py: PASS
test_adventure_combat_reactions.py: PASS
test_adventure_economy.py: PASS
test_adventure_economy_catalog.py: PASS
test_adventure_exploration.py: PASS
test_adventure_exploration_catalog.py: PASS
test_adventure_generator_equipment.py: PASS
test_adventure_generator_ownership.py: PASS
test_adventure_generator_policy.py: PASS
test_adventure_graph_handover.py: PASS
test_adventure_instance.py: PASS
test_adventure_instance_autoresume.py: PASS
test_adventure_instance_begin.py: PASS
test_adventure_instance_catalog.py: PASS
test_adventure_instance_persistence.py: PASS
test_adventure_intent_state.py: PASS
test_adventure_interactions.py: PASS
test_adventure_leisure.py: PASS
test_adventure_leisure_catalog.py: PASS
test_adventure_location_import.py: PASS
test_adventure_micro_reset.py: PASS
test_adventure_profession_catalog.py: PASS
test_adventure_profession_profile.py: PASS
test_adventure_profession_sightline.py: PASS
test_adventure_profession_targets.py: PASS
test_adventure_repair_catalog.py: PASS
test_adventure_rest.py: PASS
test_adventure_rest_fire.py: PASS
test_adventure_rest_space.py: PASS
test_adventure_rest_targets.py: PASS
test_adventure_social.py: PASS
test_adventure_social_fire.py: PASS
test_adventure_supplies.py: PASS
test_adventure_supply_catalog.py: PASS
test_adventure_supply_items.py: PASS
test_adventure_training_catalog.py: PASS
test_adventure_walk.py: PASS
test_clientless_character_factory.py: PASS
test_clientless_companion.py: PASS
test_clientless_damage_notifications.py: PASS
test_clientless_near_teleport_observer.py: PASS
test_clientless_skill_preparation.py: PASS
test_clientless_social_notifications.py: PASS
test_default_phase.py: PASS
test_flight_area_query.py: PASS
test_flight_handoff.py: PASS
test_flight_policy.py: PASS
test_follow_spline_velocity.py: PASS
test_free_flight.py: PASS
test_free_flight_planner.py: PASS
test_ground_exit_continuation.py: PASS
test_local_spline_segments.py: PASS
test_lua_reload.py: PASS
test_player_pure_max_skill.py: PASS
test_portal_transfer.py: PASS
test_portal_use.py: PASS
test_taxi_import_disabled.py: PASS
test_transport.py: PASS
test_transport_grid_loading.py: PASS
62/62 passed; failures: []
@@ -0,0 +1,17 @@
Generator implemented on feature/clientless-player-core, local commit requested by user; no push.
Final Debug-j10 build and installation succeeded. Native test worldserver88947 freshly ready, port8085 verified.
62/62 test scripts passed.
Character migration applied twice successfully (additive/idempotent).
Initial offline profession preparation failed without saving a partial character; fixed with validated native DBC skill tier initialization before world insertion.
Generated four active temporary level60 characters:29 Aelion night elf warrior;30 Zanzan troll warrior;31 Lenara worgen mage;32 Aldren forsaken death knight.
Their profiles load as generated:29..32 after native logout/restart/login. All four online and running local social actions.
Native talent trees:746/746/851/400. Stored talent row counts13/13/14/12; spell counts80/80/87/64.
All four have FirstAid375, Cooking525, Fishing525, Archaeology375 using current native data. Warriors/DK:Mining450+Blacksmithing375. Mage:Tailoring375+Enchanting375.
All four have four22-slot Embersilk Bags and one full20-stack of each of the five supply roles.
Equipment affinity checks include stats, native legality, mana/physical/spell-only procs and duplicate avoidance. Native online equipment refresh29..32 saved; all replaced items retained.
Own earlier fixture characters27/28 were archived, not deleted. Their inventories/profiles retained.
Live generator retirement of Arthoran26 refused (not owned); generator login27 refused (retired).
Existing item ownership/entry/slot snapshot for21 and26 unchanged:sha256 dd5869ffb3f10aa7d25dfc93b8de61d0b982715ab27b28e7d6311f562a6d066c.
First server start in this task hit transient remote Login DB error10.0.0.1; failed process76094 did not respond to console and was terminated with SIGTERM. Second attempt succeeded. No remote DB configuration modified.
Arthoran was logged out for maintenance and remains offline. No temporary profile/source overrides were used. His source profile and Allitester's equipment were not changed.
Rotation/deletion/population targets/restart autologin are not enabled. Non-warrior combat/support AI limitations remain. Final visible gameplay acceptance is user-owned.
@@ -0,0 +1,6 @@
[1/6] cd /home/wow_admin/wow_cata_server/source/TrinityCore && /usr/bin/cmake -DBUILDDIR="/home/wow_admin/wow_cata_server/build/debug" -P /home/wow_admin/wow_cata_server/source/TrinityCore/cmake/genrev.cmake /home/wow_admin/wow_cata_server/build/debug
[2/6] Building CXX object src/server/game/CMakeFiles/game.dir/World/ClientlessLuaEngine.cpp.o
[3/6] Building CXX object src/server/game/CMakeFiles/game.dir/World/AdventureGroupTravelMgr.cpp.o
[4/6] Building CXX object src/server/game/CMakeFiles/game.dir/World/ClientlessActionExecutorMgr.cpp.o
[5/6] Linking CXX static library src/server/game/libgame.a
[6/6] Linking CXX executable src/server/worldserver/worldserver
@@ -0,0 +1,26 @@
TrinityCore rev. a758239da956+ 2026-10-28 22:37:18 +0100 (feature/clientless-player-core branch) (Unix, Debug, Static) (worldserver-daemon)
World initialized in 0 minutes 15 seconds
TrinityCore rev. a758239da956+ 2026-10-28 22:37:18 +0100 (feature/clientless-player-core branch) (Unix, Debug, Static) (worldserver-daemon) ready...
TC>Adventure loader enabled=1 schema=1 busy=0 pools=10/2/10/2 known=25 rotations=0 manager=5 error=''
pool=0 faction=alliance persistent=1 target=10 online=2 pending=0 saved=10
pool=1 faction=alliance persistent=0 target=2 online=1 pending=0 saved=3
pool=2 faction=horde persistent=1 target=10 online=1 pending=0 saved=10
pool=3 faction=horde persistent=0 target=2 online=1 pending=0 saved=2
No group travel state.
Interactions guid=29 grouped=0 leader=0 partner=0 intent='rest' schedule=''
TC>Adventure loader enabled=1 schema=1 busy=0 pools=10/2/10/2 known=25 rotations=0 manager=17 error=''
pool=0 faction=alliance persistent=1 target=10 online=7 pending=0 saved=10
pool=1 faction=alliance persistent=0 target=2 online=2 pending=0 saved=3
pool=2 faction=horde persistent=1 target=10 online=6 pending=0 saved=10
pool=3 faction=horde persistent=0 target=2 online=2 pending=0 saved=2
No group travel state.
Interactions guid=31 grouped=0 leader=0 partner=0 intent='economy' schedule=''
TC>Adventure loader enabled=1 schema=1 busy=0 pools=10/2/10/2 known=25 rotations=0 manager=24 error=''
pool=0 faction=alliance persistent=1 target=10 online=10 pending=0 saved=10
pool=1 faction=alliance persistent=0 target=2 online=2 pending=0 saved=3
pool=2 faction=horde persistent=1 target=10 online=10 pending=0 saved=10
pool=3 faction=horde persistent=0 target=2 online=2 pending=0 saved=2
Final: PID183811 remains running; TCP8085 LISTEN.
Native ungrouped interaction diagnostics work. No human-led travel acceptance performed.
Existing terrain719/config/script warnings remain; no fatal/assertion observed in this startup.
@@ -0,0 +1,263 @@
TEST tests/clientless/test_adventure_area_node.py
Production area destination excludes outside and unreachable graph nodes.
TEST tests/clientless/test_adventure_async_database.py
Async creation DB contracts: prepared connection masks, native security column names, no future waits, successful-save cache publication and world-update-only loader hook passed
TEST tests/clientless/test_adventure_behavior_policy.py
24-hour generation, shared intents with changing destinations, broad location classification and repetition penalties passed.
TEST tests/clientless/test_adventure_class_rotation.py
Production class rotations: persistent PvE solo pools, native rank aura IDs, combo/holy power/proc/execute/resource gates, Eclipse and healer coverage passed
TEST tests/clientless/test_adventure_combat_exercise.py
Production exercise: stance/charge/melee/casts, native validation delegation, bounded lifetime, invalid targets and unchanged native phases passed.
TEST tests/clientless/test_adventure_combat_preparation.py
Production talent learner: native tiers/dependencies/class gates, all 26 legal level60 points, no capstone bypass and repeat safety passed.
TEST tests/clientless/test_adventure_combat_reactions.py
Production combat focus, damage ordering, risk filters, corpse radius/delay, flight/group override, blocked escape, danger avoidance and malus-free persisted fallback passed.
TEST tests/clientless/test_adventure_day_persistence.py
Production day planner: all 24 TINYINT slots restored across logins, incomplete/old-day replacement, full transaction and curiosity/level weighting passed
TEST tests/clientless/test_adventure_economy.py
Economy: native service roles, friendly/phase/LOS/bounds gates, no bot service targets and coherent performative cues passed.
TEST tests/clientless/test_adventure_economy_catalog.py
Economy catalog: eleven actions, three faction-bound service anchors, native flag gates and idempotent preservation passed.
TEST tests/clientless/test_adventure_encounter.py
Production encounters: bot-only exclusion, mixed mode, extension hook, wait/revive, wipe fallback/reentry/gather/return, living-player priority, kick exit and offline cleanup passed
TEST tests/clientless/test_adventure_equipment_maintenance.py
Production gear maintenance: same birth/retention gate rejects wrong armor/stats, malformed effects, level, temporary, reputation, map, holiday, native-use and slot mismatches passed
TEST tests/clientless/test_adventure_exploration.py
Exploration: visible native props only, no chests/traps/furniture, phase/map/LOS/range gates and contextual preparation passed.
TEST tests/clientless/test_adventure_exploration_catalog.py
Exploration catalog: ten actions, shared scenes, default wander replacement, explicit category eligibility and preserved edits passed.
TEST tests/clientless/test_adventure_generator_equipment.py
Production equipment affinity: mana-only/direct/triggered procs, caster/physical stat effects and bounded cycles passed
TEST tests/clientless/test_adventure_generator_ownership.py
Production generator commands: batch bounds, dedicated ownership, persistent/online/removing retirement protection and retired login refusal passed
TEST tests/clientless/test_adventure_generator_policy.py
Production generator: 6144 cultural names and 61440 real Lua profiles, profession coherence, personality ranges, escaping and equipment/armor gates passed
TEST tests/clientless/test_adventure_graph_handover.py
Production graph handover waits for ship/taxi/flight/teleport and stops at safe road/node boundaries.
TEST tests/clientless/test_adventure_ground_avoidance.py
Production ground avoidance: harmful/friendly, phase169, height, reachable safe endpoint, rejected paths and reuse without cast/movement thrashing passed
TEST tests/clientless/test_adventure_group_plan.py
Production group plans: leader meeting/goal/deadline inheritance, untouched personal day, manual preparation and instance-state guards passed.
TEST tests/clientless/test_adventure_group_travel.py
Production group travel: distinct slots, phase169 cliff safety, width, mounts, flight/kick landing, taxi grace, portal queue, bounded separation and recorded-road validation passed
TEST tests/clientless/test_adventure_groups.py
Production recruitment: capitals, different goals, native inviter leadership, joining existing groups, capacity/reservations, raid conversion, planned transition and local contact passed.
TEST tests/clientless/test_adventure_instance.py
Production instance lifecycle: time budget, true entry, denied/shared entry, native rear exit, restart, expired copy, late arrival, HP and return replay passed.
TEST tests/clientless/test_adventure_instance_autoresume.py
Deferred instance script: missing schema/visits stays idle; no login work on startup; saved visitors resume with Adventure controllers and native accounts.
TEST tests/clientless/test_adventure_instance_begin.py
Production entrance travel uses the existing location planner, requires mapping and retains normal social/area travel.
TEST tests/clientless/test_adventure_instance_catalog.py
Instance migrations: outside entrances only, native graph preserved, disabled/missing transitions excluded, edits and saved visits preserved.
TEST tests/clientless/test_adventure_instance_loader.py
Production instance recovery: no startup DB/login work, asynchronous delayed/paced manual recovery, generated-bot quota ownership, absent-schema compatibility and existing preparation ticks passed
TEST tests/clientless/test_adventure_instance_persistence.py
Production instance persistence: phases, original deadline, instance ID, transactional HP marker, failed commit and intent release passed.
TEST tests/clientless/test_adventure_intent_state.py
Production intent arrival, failed/partial travel, deadlines and safe schedule handover passed.
TEST tests/clientless/test_adventure_interactions.py
production interaction manager: invitations, factions, reservations, follow, AFK and deferred departure passed
/tmp/tmp4c3prj7a/test.cpp: In member function ‘void AdventureInteractionMgr::Leave(Player*, Record&, const char*)’:
/tmp/tmp4c3prj7a/test.cpp:143:69: warning: unused parameter ‘reason’ [-Wunused-parameter]
143 | void AdventureInteractionMgr::Leave(Player* p,Record& r,char const* reason)
| ~~~~~~~~~~~~^~~~~~
TEST tests/clientless/test_adventure_leisure.py
Leisure: substantial curved MMAP routes, mirrored return, interrupted return, rejected corridors, actual arrival, companion follow, riding, flight and fishing passed.
TEST tests/clientless/test_adventure_leisure_catalog.py
Leisure migration: native city anchor, shared scene references, pet-walk mapping and preservation of edited weights passed.
TEST tests/clientless/test_adventure_location_import.py
Locations: actual Debug SMALLINT reads retain continent IDs; explicit location eligibility and edited weight overrides passed.
TEST tests/clientless/test_adventure_manager_inventory.py
Production inventory maintenance: only full backpacks, native stack trimming, level-appropriate supplies, tools, leash, fishing pole, containers and untouched equipped slots passed
TEST tests/clientless/test_adventure_micro_reset.py
Micro cleanup ends physical local movement, preserves transit and does not stand up dead players.
TEST tests/clientless/test_adventure_population.py
Production population: four independent faction/persistence targets, fair selection, pending reservations, retries, existing inventory, once-per-boot rotation and connected/persistent protection passed
TEST tests/clientless/test_adventure_profession_catalog.py
Profession catalog: native workstation roles, no workshop/resource inference, idempotence and preserved edits passed.
TEST tests/clientless/test_adventure_profession_profile.py
Production profession parser, real Lua profiles, primary restrictions and secondary permissions passed.
TEST tests/clientless/test_adventure_profession_sightline.py
Native workstation working-surface sightline and blocked geometry rejection passed.
TEST tests/clientless/test_adventure_profession_targets.py
Production profession targets: native locks, phase/spawn/loot, stations, corpses, history and trainers passed.
TEST tests/clientless/test_adventure_profile_selection.py
Production profile selection: real Lua ID dictionaries, exact 9:1 companion weighting, zero/negative/infinite/NaN/oversized weights rejected and legacy companion fallback passed
TEST tests/clientless/test_adventure_pvp.py
Production PvP selector: level boundaries, radius, factions, native legality, navigation, intent, personality and resources passed.
TEST tests/clientless/test_adventure_repair_catalog.py
Repair action catalog: proper native service requirement, economy-only intent and preserved administrator weights passed.
TEST tests/clientless/test_adventure_rest.py
Recovery: authored places, bounds, arrival, occupancy, full rest duration, failure, reload and interruption passed.
TEST tests/clientless/test_adventure_rest_fire.py
Rest fire: shared scene mapping, additive migration, preserved weights and authored creation-place policy passed.
TEST tests/clientless/test_adventure_rest_space.py
Sleep footprint: furniture, body extent, overhead collision, ledges, stairs, missing heights, rotation and scale passed.
TEST tests/clientless/test_adventure_rest_targets.py
Native sleep targets: chair exclusion, phase, despawn, floor search, indoors, water, storey, occupancy, bed/surface preference passed.
TEST tests/clientless/test_adventure_rotation.py
Production rotation: connected/native-online protection, ownership refusal, native delete failure, world cleanup failure and journal-retained retry before successful profile/plan/state removal passed
/tmp/tmpthw2w5iq/test.cpp: In instantiation of ‘std::string Trinity::StringFormat(const char*, A ...) [with A = {}; std::string = std::__cxx11::basic_string<char>]’:
/tmp/tmpthw2w5iq/test.cpp:22:126: required from ‘void Tx::PAppend(const char*, A ...) [with A = {}]’
22 | struct Tx{std::vector<std::string>sql;template<class...A>void PAppend(char const*f,A...a){sql.push_back(Trinity::StringFormat(f,a...));}};
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
/tmp/tmpthw2w5iq/test.cpp:51:75: required from here
51 | auto barrier=CharacterDatabase.BeginTransaction();barrier->PAppend("DO 0");
| ~~~~~~~~~~~~~~~~^~~~~~~~
/tmp/tmpthw2w5iq/test.cpp:11:113: warning: format not a string literal and no format arguments [-Wformat-security]
11 | namespace Trinity{template<class...A>std::string StringFormat(char const* f,A...args){char b[4096];std::snprintf(b,sizeof(b),f,args...);return b;}}
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
TEST tests/clientless/test_adventure_social.py
Production social flow: approach before talk, coherent greeting/talk/listen/farewell, lost targets, native chair confirmation and real fire confirmation passed.
TEST tests/clientless/test_adventure_social_fire.py
Shared fire: native detection/provisioning, buildings/city/parent/zone restrictions, existing fires and outdoor/water checks passed.
TEST tests/clientless/test_adventure_supplies.py
Production supplies: exact10% boundary, bandage-before-food, native lockout fallback, recovery completion, combat potions, mana-only drinking and daily/post-combat top-ups passed.
TEST tests/clientless/test_adventure_supply_catalog.py
Supply migrations: all five roles, level60 netherweave tier, editable/disabled catalog preservation and persistent daily stamp passed.
TEST tests/clientless/test_adventure_supply_items.py
Production native-item delegation: usable bandage tiers, native cooldown/lockout gates, real inventory consumption, self targeting and level60 secondary caps passed.
TEST tests/clientless/test_adventure_talent_templates.py
Canonical Cata PvE builds: 4.3.4 class/tree/rank/prerequisite gates, all 1..41 point budgets, solo selection coverage passed
TEST tests/clientless/test_adventure_training_catalog.py
Training catalog: real dummy requirement, leisure-only intent, bounded duration and preserved administrator weights passed.
TEST tests/clientless/test_adventure_walk.py
Production travel gait reaches native spline, survives repaths, prevents mounting and preserves legacy running defaults.
TEST tests/clientless/test_clientless_character_factory.py
Production native factory: character/profile atomicity, failed preparation/commit, cache publication order, account/security/name/cap gates passed
TEST tests/clientless/test_clientless_companion.py
Native companion: provisioning, delayed summon, ownership, real item target, leash confirmation/timeout, reuse and cleanup passed.
TEST tests/clientless/test_clientless_damage_notifications.py
Production damage handoff: 16 concurrent map-worker writers, ordered GUID-only events, clientless-only/positive damage gates and post-health notification passed.
TEST tests/clientless/test_clientless_near_teleport_observer.py
Production near-teleport observer packet includes actual mover GUID and destination; clientless timestamp refreshed, regular client timestamp preserved.
TEST tests/clientless/test_clientless_skill_preparation.py
Production offline skill preparation: native tier caps, no downgrading, rank/level/race/tier gates and no modification of online players passed
TEST tests/clientless/test_clientless_social_notifications.py
Production social/helper queues: concurrent GUID-only delivery, bounded queues, human/self/zero-damage gates, pet attribution and lethal-cleanup ordering passed
TEST tests/clientless/test_default_phase.py
Native PhaseShift: implicit/default 169 visibility, genuine custom-phase separation and reference updates passed.
TEST tests/clientless/test_empty_spell_effect.py
Native empty spell effects: poisoned-memory scaling initialization, Lock and Load cleared slot, active effect values and all-empty spell values passed
TEST tests/clientless/test_flight_area_query.py
Native terrain query map/phase, area/zone ordering and cache passed.
TEST tests/clientless/test_flight_handoff.py
Flight handoff before spline end, terminal landing, return corners, collision stop and actual distance passed.
TEST tests/clientless/test_flight_policy.py
Flight native eligibility, license/profile/zone policy, RP costs and fail-safe return decisions passed.
TEST tests/clientless/test_follow_spline_velocity.py
Native follow: actual player/creature spline velocity, client gait and independent follower speeds passed.
TEST tests/clientless/test_free_flight.py
Flight geometry passed: takeoff/landing, smoothed peak, ceiling, lateral/climbing avoidance, missing terrain and blocked corridors.
TEST tests/clientless/test_free_flight_planner.py
ground planner regressions and dynamic flight/node/location/virtual-exit integration passed
TEST tests/clientless/test_ground_exit_continuation.py
optional exits: repeated probes, retained route, delayed success, forward resume, flight fallback passed
TEST tests/clientless/test_group_flight_follow.py
Moving-target flight: bounded phased corridors, obstacle hold, ceiling rejection, aerial formation hold, safe landing and return fallback passed
TEST tests/clientless/test_item_equip_cooldown.py
Native item equip cooldown: zero/sentinel/missing spells safely skipped, valid use cooldown preserved and longer/disabled cooldowns untouched passed
TEST tests/clientless/test_local_spline_segments.py
Production local spline clipping passes native path-length validation, tiny remainders and 1000 sampled paths.
TEST tests/clientless/test_lua_reload.py
Lua reload regression tests passed (production reload/bindings, real Lua 5.4).
TEST tests/clientless/test_player_pure_max_skill.py
Native pure skill cap: learned skills return stored cap; missing/deleted/zero-rank skills return0.
TEST tests/clientless/test_portal_transfer.py
Portal near/far ACK and denied same-map transfer regressions passed.
TEST tests/clientless/test_portal_use.py
Interactive portal native click, near/far/global ACK, denial, timeout and target checks passed.
Native portal destination discovery and unsupported/ambiguous spell rejection passed.
Production clientless ACK completion sequence increments only after completed near/far transfers.
TEST tests/clientless/test_shared_group_route.py
Production generic shared routes: same edges/taxi/free flight, independent execution state, final local goal, late catch-up, permissions and stale-goal rejection passed.
TEST tests/clientless/test_taxi_import_disabled.py
Taxi importer preserves disabled rows and their reasons.
TEST tests/clientless/test_transport.py
Transport dock, frame, recorder, cross-map copy and ride regressions passed
TEST tests/clientless/test_transport_grid_loading.py
Core transport grid initialization regressions passed (no CPC dependency).
TOTAL 82 FAILED []
@@ -0,0 +1,22 @@
[1/10] cd /home/wow_admin/wow_cata_server/source/TrinityCore && /usr/bin/cmake -DBUILDDIR="/home/wow_admin/wow_cata_server/build/debug" -P /home/wow_admin/wow_cata_server/source/TrinityCore/cmake/genrev.cmake /home/wow_admin/wow_cata_server/build/debug
[2/10] Building CXX object src/server/game/CMakeFiles/game.dir/World/AdventureCombatMgr.cpp.o
[3/10] Building CXX object src/server/game/CMakeFiles/game.dir/World/ClientlessLuaEngine.cpp.o
[4/10] Building CXX object src/server/game/CMakeFiles/game.dir/World/AdventureInteractionMgr.cpp.o
[5/10] Building CXX object src/server/game/CMakeFiles/game.dir/World/AdventureSupplyMgr.cpp.o
[6/10] Building CXX object src/server/scripts/CMakeFiles/scripts.dir/Custom/viano_bot_commands.cpp.o
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_bot_commands.cpp: In function ‘bool VianoBotCommands::HandleClientlessLocationAdd(ChatHandler*, const char*)’:
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_bot_commands.cpp:2341:20: warning: unused variable ‘loaded’ [-Wunused-variable]
2341 | bool const loaded = sClientlessWorldPointMgr->Reload();
| ^~~~~~
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_bot_commands.cpp: In function ‘bool VianoBotCommands::HandleClientlessLocationMove(ChatHandler*, const char*)’:
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_bot_commands.cpp:2378:20: warning: unused variable ‘loaded’ [-Wunused-variable]
2378 | bool const loaded = sClientlessWorldPointMgr->Reload();
| ^~~~~~
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_bot_commands.cpp: In function ‘bool VianoBotCommands::HandleClientlessLocationRemove(ChatHandler*, const char*)’:
/home/wow_admin/wow_cata_server/source/TrinityCore/src/server/scripts/Custom/viano_bot_commands.cpp:2402:20: warning: unused variable ‘loaded’ [-Wunused-variable]
2402 | bool const loaded = sClientlessWorldPointMgr->Reload();
| ^~~~~~
[7/10] Building CXX object src/server/game/CMakeFiles/game.dir/World/AdventureBehaviorMgr.cpp.o
[8/10] Linking CXX static library src/server/game/libgame.a
[9/10] Linking CXX static library src/server/scripts/libscripts.a
[10/10] Linking CXX executable src/server/worldserver/worldserver
@@ -0,0 +1 @@
Production combat focus, damage ordering, risk filters, corpse radius/delay, alternate paths and malus-free persisted fallback passed.
@@ -0,0 +1,5 @@
/tmp/tmp2j7tsqhj/test.cpp: In member function ‘void AdventureInteractionMgr::Leave(Player*, Record&, const char*)’:
/tmp/tmp2j7tsqhj/test.cpp:140:69: warning: unused parameter ‘reason’ [-Wunused-parameter]
140 | void AdventureInteractionMgr::Leave(Player* p,Record& r,char const* reason)
| ~~~~~~~~~~~~^~~~~~
production interaction manager: invitations, factions, reservations, follow, AFK and deferred departure passed
@@ -0,0 +1 @@
Production social/helper queues: concurrent GUID-only delivery, bounded queues, human/self/zero-damage gates, pet attribution and lethal-cleanup ordering passed
@@ -0,0 +1,114 @@
Validating spell scripts...
Spell `85123` Effect `Index: EFFECT_0 Target: 7` of script `spell_siege_cannon`
did not match dbc effect data - handler bound to hook `OnObjectAreaTargetSelect`
of SpellScript won't be executed
>> Validated 3470 scripts in 12 ms
Loading SmartAI scripts...
>> Loaded SmartAIMgr Helpers in 16 ms
>> Loaded 13506 SmartAI scripts in 167 ms
Loading Calendar data...
>> Loaded 0 calendar events in 1 ms
>> Loaded 0 calendar invites in 0 ms
Loading Petitions...
>> Loaded 0 petitions.
Loading Signatures...
>> Loaded 0 Petition signs!
Loading Summon Properties parameter data...
>> Loaded 78 summon properties parameters in 1 ms
Loading Item loot...
>> Loaded 0 stored item loots
>> Loaded 0 stored item money
Initialize query data...
>> Initialized query cache data in 1019 ms
Initialize commands...
Initialize game time and timers
Mail timer set to: 1260, mail return is called every 1440 minutes
Starting Map System
Starting Game Event system...
Initialize AuctionHouseBot...
Initializing Opcodes...
Starting Arena Season...
Starting Battleground System
>> Loaded 15 battlegrounds in 0 ms
Starting Outdoor PvP System
>> Loaded 5 outdoor PvP definitions in 1 ms
Starting Battlefield System
>> Loaded 2 battlefields in 0 ms
Loading Warden Checks...
Loading Warden Action Overrides...
Deleting expired bans...
Initializing quest reset times...
Calculate random battleground reset time...
Calculate guild limitation(s) reset time...
Calculate next currency reset time...
World initialized in 0 minutes 13 seconds
TC>TC>TrinityCore rev. 39a515dbd13e+ 2026-10-27 23:56:43 +0100 (feature/clientle
ss-player-core branch) (Unix, Debug, Static) (worldserver-daemon) ready...
clientless login 26
TC>Registered clientless session for character GUID 26 (account 6), state=Loadin
g.
Created clientless player session for character GUID 26 (account 6).
ClientlessPlayerMgr started character GUID 26 (account 6).
Clientless login started for 'Arthoran' (GUID 26, account 6).
TC> Loading saved respawn time of 1790175804 for spawnid (0,323981) - spawn does
not exist, ignoring
Loading saved respawn time of 1790090644 for spawnid (0,396680) - spawn does not
exist, ignoring
Loading saved respawn time of 1790019808 for spawnid (0,396681) - spawn does not
exist, ignoring
Loading saved respawn time of 1790019853 for spawnid (0,396682) - spawn does not
exist, ignoring
Initialized transport GameObject grids: map=0 instance=0 grids=4 candidates=15
Clientless player character GUID 26 (account 6) reached state=Online.
ClientlessLua initialized, script root '/home/wow_admin/wow_cata_server/source/T
rinityCore/src/server/scripts/Custom/clientless'.
[AdventureBot][Profile] loaded guid=26 name='Arthoran' source='/home/wow_admin/w
ow_cata_server/source/TrinityCore/src/server/scripts/Custom/clientless/adventure
/profiles/arthoran.lua' home='elwynn' canGroundMount=1 mounts=1 mountMinDistance
=45.0 mountSpeedRate=1.60 personality=8 regionAffinity=4 activityAffinity=7
PROFILE_PROFESSIONS guid=26 primary=2
ClientlessLua[26]: Arthoran ready; no automatic test journey queued
ClientlessLua[26]: executed adventure override script '/home/wow_admin/wow_cata_
server/source/TrinityCore/src/server/scripts/Custom/clientless/adventure/overrid
es/arthoran.lua'.
ADVENTURE_CATALOG locations=2973 actions=84 lines=76
INTENT_TRAVEL guid=26 intent='social' location='goldshire_tavern' area=0
[AdventureBot] loaded 3966 clientless world points.
[AdventureBot] loaded travel graph: 993 node(s), 1765 directed edge(s).
clientless interaction 26
TC>Interactions guid=26 grouped=0 leader=0 partner=0 intent='social' schedule=''
leaderIdleSeconds=0 afkSeconds=0 sociability=0.65 loyalty=0.35
TC> SUPPLY_RESTOCK guid=26 day=20261028 daily=0 afterCombat=1
COMBAT_START guid=26 target='GUID Full: 0xf130a1fe000006ce Type: Creature Entry:
41470 Low: 1742' training=0 defending=1 until=0
COMBAT_CAST guid=26 target='GUID Full: 0x000000000000001a Type: Player Low: 26'
spell=6673
COMBAT_CAST guid=26 target='GUID Full: 0xf130a1fe000006ce Type: Creature Entry:
41470 Low: 1742' spell=78
COMBAT_CAST guid=26 target='GUID Full: 0xf130a1fe000006ce Type: Creature Entry:
41470 Low: 1742' spell=12294
COMBAT_CAST guid=26 target='GUID Full: 0xf130a1fe000006ce Type: Creature Entry:
41470 Low: 1742' spell=772
COMBAT_END guid=26 target='GUID Full: 0xf130a1fe000006ce Type: Creature Entry: 4
1470 Low: 1742' training=0
INTENT_TRAVEL guid=26 intent='social' location='goldshire_tavern' area=0
SUPPLY_RESTOCK guid=26 day=20261028 daily=0 afterCombat=1
COMBAT_START guid=26 target='GUID Full: 0xf130a1ff000006d0 Type: Creature Entry:
41471 Low: 1744' training=0 defending=1 until=0
COMBAT_CAST guid=26 target='GUID Full: 0xf130a1ff000006d0 Type: Creature Entry:
41471 Low: 1744' spell=12294
COMBAT_END guid=26 target='GUID Full: 0xf130a1ff000006d0 Type: Creature Entry: 4
1471 Low: 1744' training=0
SUPPLY_RESTOCK guid=26 day=20261028 daily=0 afterCombat=1
INTENT_TRAVEL guid=26 intent='social' location='goldshire_tavern' area=0
clientless adventure stop 26
TC>Behavior stop requested at a safe point.
TC> clientless adventure status 26
TC>clientless interaction 26
TC>Adventure GUID 26: enabled=1 schedule=0 phase=3 intent='social' location='gol
dshire_tavern' micro='' deadline=0 detail='waiting for safe player/transport sta
te'
TC> Interactions guid=26 grouped=0 leader=0 partner=0 intent='social' schedule='
'
leaderIdleSeconds=0 afkSeconds=0 sociability=0.65 loyalty=0.35
TC>
@@ -0,0 +1,968 @@
TrinityCore rev. 39a515dbd13e+ 2026-10-27 23:56:43 +0100 (feature/clientless-pla
yer-core branch) (Unix, Debug, Static) (worldserver-daemon)
<Ctrl-C> to stop.
______ __
/\__ _\ __ __/\ \__
\/_/\ \/ _ __ /\_\ ___ /\_\ \, _\ __ __
\ \ \/\`'__\/\ \ /' _ `\/\ \ \ \/ /\ \/\ \
\ \ \ \ \/ \ \ \/\ \/\ \ \ \ \ \_\ \ \_\ \
\ \_\ \_\ \ \_\ \_\ \_\ \_\ \__\\/`____ \
\/_/\/_/ \/_/\/_/\/_/\/_/\/__/ `/___/> \
C O R E /\___/
http://TrinityCore.org \/__/
Using configuration file /home/wow_admin/wow_cata_server/server/debug/etc/worlds
erver.conf.
Using SSL version: OpenSSL 3.5.5 27 Jan 2026 (library: OpenSSL 3.5.5 27 Jan 2026
)
Using Boost version: 1.90.0
Automatic database updates are disabled for all databases!
Realm running as realm ID 2 region 2 battlegroup 1
Using World DB: TDB 434.22011
Using enUS DBC Locale
Will clear `logs` table of entries older than 1209600 seconds every 10 minutes.
Client cache version set to: 22011
Using DataDir /home/wow_admin/wow_cata_server/data/
WORLD: MMap data directory is: /home/wow_admin/wow_cata_server/data/mmaps
VMap support included. LineOfSight: 1, getHeight: 1, indoorCheck: 1
VMap data directory is: /home/wow_admin/wow_cata_server/data/vmaps
Missing name DungeonFinder.LowPopulation.Enable in config file /home/wow_admin/w
ow_cata_server/server/debug/etc/worldserver.conf, add "DungeonFinder.LowPopulati
on.Enable = 0" to this file
Missing name DungeonFinder.LowPopulation.FallbackDelay in config file /home/wow_
admin/wow_cata_server/server/debug/etc/worldserver.conf, add "DungeonFinder.LowP
opulation.FallbackDelay = 60" to this file
Missing name DungeonFinder.LowPopulation.MinPlayers in config file /home/wow_adm
in/wow_cata_server/server/debug/etc/worldserver.conf, add "DungeonFinder.LowPopu
lation.MinPlayers = 1" to this file
Missing name DungeonFinder.LowPopulation.SoloGroupOutsideTimeout in config file
/home/wow_admin/wow_cata_server/server/debug/etc/worldserver.conf, add "DungeonF
inder.LowPopulation.SoloGroupOutsideTimeout = 300" to this file
Loading Trinity strings...
>> Loaded 991 trinity strings in 7 ms
Initialize data stores...
>> Initialized 167 DBC data stores in 857 ms
>> Initialized 5 DB2 data stores in 200 ms
>> Loading Cinematic Camera files
>> Loaded 0 cinematic waypoint sets in 0 ms
Loading IP Location Database...
Initializing PlayerDump tables...
>> Initialized tables for PlayerDump in 14 ms.
Loading SpellInfo store...
>> Loaded SpellInfo store in 110 ms
Loading SpellInfo corrections...
>> Loaded SpellInfo corrections in 22 ms
Loading SkillLineAbilityMultiMap Data...
>> Loaded 8384 SkillLineAbility MultiMap Data in 3 ms
Loading SpellInfo custom attributes...
>> Loaded 195 spell custom attributes from DB in 2 ms
>> Loaded SpellInfo custom attributes in 76 ms
Loading SpellInfo diminishing infos...
>> Loaded SpellInfo diminishing infos in 5 ms
Loading SpellInfo immunity infos...
>> Loaded SpellInfo immunity infos in 16 ms
Loading GameObject models...
>> Loaded 3255 GameObject models in 3 ms
Loading Script Names...
>> Loaded 4057 ScriptNames in 1376 ms
Loading Instance Template...
>> Loaded 91 instance templates in 0 ms
Loading instances...
>> Loaded instances in 6 ms
Loading character cache store...
Loaded character infos for 13 characters in 0 ms
Loading Broadcast texts...
>> Loaded 73039 broadcast texts in 360 ms
>> Loaded 73039 broadcast text locales in 1637 ms
Loading Localization strings...
>> Loaded 29790 creature locale strings in 405 ms
>> Loaded 19670 gameobject_template_locale strings in 226 ms
>> Loaded 14986 Quest locale strings in 999 ms
>> Loaded 1946 PageText locale strings in 109 ms
>> Loaded 453 points_of_interest locale strings in 4 ms
>> Loaded 0 quest_greeting locales. DB table `quest_greeting_locale` is empty.
>> Localization strings loaded in 1758 ms
Loading Account Roles and Permissions...
>> Loaded 666 permission definitions, 650 linked permissions and 4 default permi
ssions in 343 ms
Loading Page Texts...
>> Loaded 1962 page texts in 13 ms
Loading Game Object Templates...
>> Loaded 29501 game object templates in 156 ms
Loading Game Object template addons...
>> Loaded 29495 game object template addons in 41 ms
Loading Transport templates...
>> Loaded 43 transport templates in 9 ms
Loading Transport animations and rotations...
Loading Transport spawns...
>> Spawned 0 continent transports in 0 ms
Loading Spell Rank Data...
>> Loaded 174 spell rank records in 1 ms
Loading Spell Required Data...
>> Loaded 22 spell required records in 1 ms
Loading Spell Group types...
>> Loaded 550 spell group definitions in 2 ms
Loading Spell Learn Skills...
>> Loaded 137 Spell Learn Skills from DBC in 5 ms
Loading SpellInfo SpellSpecific and AuraState...
>> Loaded SpellInfo SpellSpecific and AuraState in 10 ms
Loading Spell Learn Spells...
The spell 17002 listed in `spell_learn_spell` attempts learning talent spell 248
67, skipped.
The spell 24866 listed in `spell_learn_spell` attempts learning talent spell 248
64, skipped.
The spell 33872 listed in `spell_learn_spell` attempts learning talent spell 471
79, skipped.
The spell 33873 listed in `spell_learn_spell` attempts learning talent spell 471
80, skipped.
>> Loaded 24 spell learn spells, 512 found in Spell.dbc and 31 from TalentTab.db
c in 7 ms
Loading Spell Proc conditions and data...
>> Loaded 1556 spell proc conditions and data in 5 ms
Generating spell proc data from SpellMap...
Spell Id 36488 has SPELL_ATTR3_CAN_PROC_FROM_PROCS attribute and no restriction
on what spells can cause it to proc and no cooldown. This spell can cause infini
te proc loops. Proc data for this spell was not generated, data in `spell_proc`
table is required for it to function!
Spell Id 39440 has SPELL_ATTR3_CAN_PROC_FROM_PROCS attribute and no restriction
on what spells can cause it to proc and no cooldown. This spell can cause infini
te proc loops. Proc data for this spell was not generated, data in `spell_proc`
table is required for it to function!
Spell Id 47261 has SPELL_ATTR3_CAN_PROC_FROM_PROCS attribute and no restriction
on what spells can cause it to proc and no cooldown. This spell can cause infini
te proc loops. Proc data for this spell was not generated, data in `spell_proc`
table is required for it to function!
Spell Id 47262 has SPELL_ATTR3_CAN_PROC_FROM_PROCS attribute and no restriction
on what spells can cause it to proc and no cooldown. This spell can cause infini
te proc loops. Proc data for this spell was not generated, data in `spell_proc`
table is required for it to function!
Spell Id 67726 has SPELL_ATTR3_CAN_PROC_FROM_PROCS attribute and no restriction
on what spells can cause it to proc and no cooldown. This spell can cause infini
te proc loops. Proc data for this spell was not generated, data in `spell_proc`
table is required for it to function!
Spell Id 67736 has SPELL_ATTR3_CAN_PROC_FROM_PROCS attribute and no restriction
on what spells can cause it to proc and no cooldown. This spell can cause infini
te proc loops. Proc data for this spell was not generated, data in `spell_proc`
table is required for it to function!
Spell Id 67740 has SPELL_ATTR3_CAN_PROC_FROM_PROCS attribute and no restriction
on what spells can cause it to proc and no cooldown. This spell can cause infini
te proc loops. Proc data for this spell was not generated, data in `spell_proc`
table is required for it to function!
Spell Id 67744 has SPELL_ATTR3_CAN_PROC_FROM_PROCS attribute and no restriction
on what spells can cause it to proc and no cooldown. This spell can cause infini
te proc loops. Proc data for this spell was not generated, data in `spell_proc`
table is required for it to function!
Spell Id 85556 has SPELL_ATTR3_CAN_PROC_FROM_PROCS attribute and no restriction
on what spells can cause it to proc and no cooldown. This spell can cause infini
te proc loops. Proc data for this spell was not generated, data in `spell_proc`
table is required for it to function!
>> Generated spell proc data for 1620 spells in 8 ms
Loading Aggro Spells Definitions...
>> Loaded 44 SpellThreatEntries in 2 ms
Loading Spell Group Stack Rules...
>> Loaded 41 spell group stack rules in 2 ms
>> Parsing SPELL_GROUP_STACK_RULE_EXCLUSIVE_SAME_EFFECT stack rules...
>> Parsed 23 SPELL_GROUP_STACK_RULE_EXCLUSIVE_SAME_EFFECT stack rules in 0 ms
Loading NPC Texts...
>> Loaded 8406 npc texts in 92 ms
Loading Enchant Spells Proc datas...
>> Loaded 45 enchant proc data definitions in 1 ms
Loading Item Random Enchantments Table...
>> Loaded 29217 Item Enchantment definitions in 25 ms
Loading Disables
>> Loaded 5211 disables in 10 ms
Loading Items...
>> Loaded 54296 item templates in 39 ms
Loading Item set names...
>> Loaded 622 item addon templates in 2 ms
>> Loaded 21 item script names in 0 ms
Loading Creature Model Based Info Data...
>> Loaded 31775 creature model based info in 33 ms
Loading Creature templates...
>> Loaded 64891 creature template models in 77 ms
>> Loaded 46633 creature definitions in 580 ms
Loading Equipment templates...
>> Loaded 16167 equipment templates in 23 ms
Loading Creature template addons...
Creature (Entry: 47203) has SPELL_AURA_CONTROL_VEHICLE aura 87978 defined in `au
ras` field in `creature_template_addon`.
>> Loaded 46613 creature template addons in 73 ms
Loading Reputation Reward Rates...
>> Loaded 16 reputation_reward_rate in 0 ms
Loading Creature Reward OnKill Data...
>> Loaded 2343 creature award reputation definitions in 7 ms
Loading Reputation Spillover Data...
>> Loaded 28 reputation_spillover_template in 2 ms
Loading Points Of Interest Data...
>> Loaded 603 Points of Interest definitions in 2 ms
Loading Database Game Tables...
>> Loaded 0 npc total health game table entries in 5 ms
>> Loaded 0 npc damage by class game table entries in 4 ms
Loading Creature Base Stats...
>> Loaded 400 creature base stats in 8 ms
Loading Spawn Group Templates...
>> Loaded 98 spawn group templates in 1 ms
Loading Creature Data...
Table `creature` has creature (GUID: 396679 Entry: 32491) with disallowed `unit_
flags` 32768, removing incorrect flag.
>> Loaded 221565 creatures in 1182 ms
Loading Temporary Summon Data...
>> Loaded 869 temp summons in 4 ms
Loading pet levelup spells...
>> Loaded 263 pet levelup and default spells for 50 families in 8 ms
Loading pet default spells additional to levelup spells...
>> Loaded addition spells for 0 pet spell data entries in 2 ms
Loading summonable creature templates...
>> Loaded 427 summonable creature templates in 10 ms
Loading Creature Addon Data...
>> Loaded 52002 creature addons in 93 ms
Loading Creature Movement Overrides...
>> Loaded 0 creature movement overrides. DB table `creature_movement_override` i
s empty!
Loading Creature Movement Info...
>> Loaded 270 creature movement info override entries in 1 ms
Loading Gameobject Data...
>> Loaded 78938 gameobjects in 392 ms
Loading Spawn Group Data...
>> Loaded 94612 spawn group members in 58 ms
Loading instance spawn groups...
>> Loaded 27 instance spawn groups in 2 ms
Loading GameObject Addon Data...
>> Loaded 24493 gameobject addons in 38 ms
Loading GameObject Quest Items...
>> Loaded 1352 gameobject quest items in 3 ms
Loading Creature Quest Items...
>> Loaded 5361 creature quest items in 8 ms
Loading Creature Sparring Data...
>> Loaded 0 creature sparring templates in 1 ms
Loading Creature Linked Respawn...
>> Loaded 5239 linked respawns in 7 ms
Loading Weather Data...
>> Loaded 36 weather definitions in 0 ms
Loading Quests...
Quest 29507 has `RequiredCurrencyId1` = 393 but `RequiredCurrencyCount1` = 0, qu
est can't be done.
Quest 29283 has `RequiredCurrencyId1` = 416 but `RequiredCurrencyCount1` = 0, qu
est can't be done.
Quest 29281 has `RequiredCurrencyId1` = 416 but `RequiredCurrencyCount1` = 0, qu
est can't be done.
Quest 29279 has `RequiredCurrencyId1` = 416 but `RequiredCurrencyCount1` = 0, qu
est can't be done.
Quest 29214 has `RequiredCurrencyId1` = 416 but `RequiredCurrencyCount1` = 0, qu
est can't be done.
Quest 29199 has `RequiredCurrencyId1` = 416 but `RequiredCurrencyCount1` = 0, qu
est can't be done.
Quest 29181 has `RequiredCurrencyId1` = 416 but `RequiredCurrencyCount1` = 0, qu
est can't be done.
Quest 13478 has `RequiredCurrencyId1` = 392 but `RequiredCurrencyCount1` = 0, qu
est can't be done.
Quest 13476 has `RequiredCurrencyId1` = 392 but `RequiredCurrencyCount1` = 0, qu
est can't be done.
Quest 8371 has `RequiredCurrencyId1` = 392 but `RequiredCurrencyCount1` = 0, que
st can't be done.
Quest 8368 has `RequiredCurrencyId1` = 392 but `RequiredCurrencyCount1` = 0, que
st can't be done.
Quest 8367 has `RequiredCurrencyId1` = 392 but `RequiredCurrencyCount1` = 0, que
st can't be done.
>> Loaded 14991 quests definitions in 347 ms
Checking Quest Disables
>> Checked 5124 quest disables in 0 ms
Loading Quest POI
>> Loaded 13941 quest POI definitions in 189 ms
Loading Quest Money Rewards
>> Loaded 100 quest money reward entries in 1 ms
Loading Quests Starters and Enders...
Loading GO Start Quest Data...
>> Loaded 618 quest relations from gameobject_queststarter in 2 ms
Loading GO End Quest Data...
>> Loaded 517 quest relations from gameobject_questender in 2 ms
Loading Creature Start Quest Data...
>> Loaded 8725 quest relations from creature_queststarter in 10 ms
Loading Creature End Quest Data...
>> Loaded 9136 quest relations from creature_questender in 12 ms
Loading Quests Greetings...
>> Loaded 0 quest greetings. DB table `quest_greeting` is empty.
Loading Objects Pooling Data...
>> Loaded 1721 objects pools in 3 ms
Loading Creatures Pooling Data...
>> Loaded 835 creatures in pools in 2 ms
Loading Gameobject Pooling Data...
>> Loaded 7404 gameobject in pools in 10 ms
Loading Mother Pooling Data...
>> Loaded 1218 pools in mother pools in 3 ms
Starting objects pooling system...
Loading Quest Pooling Data...
>> Loaded 56 daily, 5 weekly and 0 monthly quest pools in 2 ms
Loading Game Event Data...
>> Loaded 156 holiday dates in 1 ms
>> Loaded 78 game events in 1 ms.
Loading Game Event Saves Data...
>> Loaded 0 game event saves in game events. DB table `game_event_save` is empty
.
Loading Game Event Prerequisite Data...
>> Loaded 0 game event prerequisites in game events. DB table `game_event_prereq
uisite` is empty.
Loading Game Event Creature Data...
>> Loaded 2790 creatures in game events in 2 ms.
Loading Game Event GO Data...
>> Loaded 21863 gameobjects in game events in 10 ms.
Loading Game Event Model/Equipment Change Data...
>> Loaded 22 model/equipment changes in game events in 2 ms.
Loading Game Event Quest Data...
>> Loaded 327 quests additions in game events in 1 ms.
Loading Game Event GO Quest Data...
>> Loaded 189 quests additions in game events in 1 ms.
Loading Game Event Quest Condition Data...
>> Loaded 0 quest event conditions in game events. DB table `game_event_quest_co
ndition` is empty.
Loading Game Event Condition Data...
>> Loaded 0 conditions in game events. DB table `game_event_condition` is empty.
Loading Game Event Condition Save Data...
>> Loaded 0 condition saves in game events. DB table `game_event_condition_save`
is empty.
Loading Game Event NPCflag Data...
>> Loaded 0 npcflags in game events. DB table `game_event_npcflag` is empty.
Loading Game Event Seasonal Quest Relations...
>> Loaded 690 quests additions in game events in 1 ms.
Loading Game Event Vendor Additions Data...
>> Loaded 2 vendor additions in game events in 1 ms.
Loading Game Event Battleground Holiday Data...
>> Loaded 8 battleground holidays in game events in 1 ms.
Loading Game Event Pool Data...
>> Loaded 2 pools for game events in 0 ms.
Loading UNIT_NPC_FLAG_SPELLCLICK Data...
>> Loaded 702 spellclick definitions in 3 ms
Loading Vehicle Template Accessories...
>> Loaded 431 Vehicle Template Accessories in 2 ms
Loading Vehicle Accessories...
>> Loaded 0 Vehicle Accessories in 0 ms
Loading Vehicle Seat Addon Data...
>> Loaded 15 Vehicle Seat Addon entries in 1 ms
Loading SpellArea Data...
>> Loaded 872 spell area requirements in 4 ms
Loading AreaTrigger definitions...
>> Loaded 316 area trigger teleport definitions in 2 ms
Loading Access Requirements...
>> Loaded 152 access requirement definitions in 1 ms
Loading Quest Area Triggers...
>> Loaded 49 quest trigger points in 1 ms
Loading Tavern Area Triggers...
>> Loaded 175 tavern triggers in 1 ms
Loading AreaTrigger script names...
>> Loaded 229 areatrigger scripts in 0 ms
Loading LFG entrance positions...
>> Loaded 68 lfg dungeon templates in 2 ms
Loading Dungeon boss data...
>> Loaded 617 instance encounters in 2 ms
Loading LFG rewards...
>> Loaded 20 lfg dungeon rewards in 1 ms
Loading Graveyard-zone links...
>> Loaded 855 graveyard-zone links in 2 ms
Loading Graveyard Orientations...
>> Loaded 1016 graveyard orientations in 2 ms
Loading spell pet auras...
>> Loaded 34 spell pet auras in 1 ms
Loading Spell target coordinates...
>> Loaded 1438 spell teleport coordinates in 4 ms
Loading linked spells...
>> Loaded 413 linked spells in 1 ms
Loading Player Create Data...
>> Loaded 91 player create definitions in 1 ms
Loading Player Create Items Data...
>> Loaded 1 custom player create items in 1 ms
Loading Player Create Skill Data...
>> Loaded player create skills in 1 ms
Loading Player Create Custom Spell Data...
>> Loaded 4507 custom player create spells in 1 ms
Loading Player Create Cast Spell Data...
>> Loaded 63 player create cast spells in 1 ms
Loading Player Create Action Data...
>> Loaded 352 player create actions in 1 ms
Loading Player Create Level Stats Data...
>> Loaded 850 level stats definitions in 5 ms
Loading Player Create XP Data...
>> Loaded 84 xp for level definitions in 1 ms
Loading Exploration BaseXP Data...
>> Loaded 80 BaseXP definitions in 1 ms
Loading Pet Name Parts...
>> Loaded 313 pet name parts in 1 ms
Loading the max pet number...
>> Loaded the max pet number: 28 in 0 ms
Loading pet level stats...
>> Loaded 2720 level pet stats definitions in 5 ms
Loading Player level dependent mail rewards...
>> Loaded 24 level dependent mail rewards in 1 ms
Loading creature loot templates...
>> Loaded 528193 creature loot templates in 634 ms
Loading fishing loot templates...
>> Loaded 266 fishing loot templates in 2 ms
Loading gameobject loot templates...
>> Loaded 19834 gameobject loot templates in 32 ms
Loading item loot templates...
>> Loaded 5031 item loot templates in 16 ms
Loading mail loot templates...
>> Loaded 90 mail loot templates in 0 ms
Loading milling loot templates...
>> Loaded 51 milling loot templates in 4 ms
Loading pickpocketing loot templates...
>> Loaded 10981 pickpocketing loot templates in 20 ms
Loading skinning loot templates...
>> Loaded 3390 skinning loot templates in 10 ms
Loading disenchanting loot templates...
>> Loaded 180 disenchanting loot templates in 1 ms
Loading prospecting loot templates...
>> Loaded 43 prospecting loot templates in 4 ms
Loading spell loot templates...
>> Loaded 292 spell loot templates in 3 ms
Loading reference loot templates...
>> Loaded refence loot templates in 48 ms
Loading Skill Discovery Table...
>> Loaded 347 skill discovery definitions in 3 ms.
Loading Skill Extra Item Table...
>> Loaded 225 spell specialization definitions in 1 ms
Loading Skill Perfection Data Table...
>> Loaded 72 spell perfection definitions in 0 ms.
Loading Skill Fishing base level requirements...
>> Loaded 95 areas for fishing base skill level in 0 ms
Loading Archaeology store...
>> Loaded 180 archaeology sites in 1 ms
>> Loaded 180 archaeology site polygons in 157 ms
>> Loaded 9 archaeology branches in 0 ms
>> Loaded 139 archaeology projects in 1 ms
>> Calculated 9 archaeology branch chances in 0 ms
Loading Achievements...
>> Loaded 47 achievement references in 0 ms.
Loading Achievement Criteria Lists...
>> Loaded 9803 achievement criteria and 952 guild achievement crieteria in 5 ms.
Loading Achievement Criteria Data...
>> Loaded 1291 additional achievement criteria data in 2 ms
Loading Achievement Rewards...
>> Loaded 120 achievement rewards in 1 ms.
Loading Achievement Reward Locales...
>> Loaded 0 achievement reward locale strings. DB table `achievement_reward_loc
ale` is empty.
Loading Completed Achievements...
>> Loaded 77 realm first completed achievements in 1 ms.
Loading Item Auctions...
>> Loaded 0 auction items. DB table `auctionhouse` or `item_instance` is empty!
Loading Auctions...
>> Loaded 0 auctions. DB table `auctionhouse` is empty.
Loading Guild XP for level...
>> Loaded 24 xp for guild level definitions in 1 ms
Loading Guild rewards...
>> Loaded 42 guild reward definitions in 0 ms
Initializing Guild Profession Data Store...
Loading Guild Challenges...
>> Loaded 4 guild challenge definitions in 1 ms
Loading Guilds...
Loading guilds definitions...
>> Loaded 1 guild definitions in 2 ms
Loading guild ranks...
>> Loaded 5 guild ranks in 0 ms
Loading guild members...
>> Loaded 4 guild members in 5 ms
Loading bank tab rights...
>> Loaded 30 bank tab rights in 1 ms
Loading guild event logs...
>> Loaded 8 guild event logs in 2 ms
Loading guild bank event logs...
>> Loaded 22 guild bank event logs in 0 ms
Loading Guild News...
>> Loaded 0 guild event logs. DB table `guild_newslog` is empty.
Loading guild bank tabs...
>> Loaded 6 guild bank tabs in 0 ms
>> Loaded 22 guild bank tab items in 1 ms
>> Validated data of loaded guilds in 0 ms
Loading guild finder guild-related settings...
>> Loaded 0 guild finder guild-related settings. Table `guild_finder_guild_setti
ngs` is empty.
Loading guild finder membership requests...
>> Loaded 0 guild finder membership requests. Table `guild_finder_applicant` is
empty.
Loading ArenaTeams...
>> Loaded 0 arena teams. DB table `arena_team` is empty!
Loading Groups...
>> Loaded 0 group definitions. DB table `groups` is empty!
Loading ReservedNames...
>> Loaded 0 reserved player names. DB table `reserved_name` is empty!
Loading GameObjects for quests...
>> Loaded 2750 GameObjects for quests in 5 ms
Loading BattleMasters...
>> Loaded 171 battlemaster entries in 3 ms
Loading GameTeleports...
>> Loaded 1531 GameTeleports in 5 ms
Loading Trainers...
>> Loaded 88 Trainers in 10 ms
Loading Gossip menu...
>> Loaded 8225 gossip_menu IDs in 10 ms
Loading Gossip menu options...
>> Loaded 5837 gossip_menu_option entries in 18 ms
Loading Creature Template Gossip...
creature_template_gossip has gossip definitions for menu id 55002 but this menu
doesn't exist
creature_template_gossip has gossip definitions for menu id 55002 but this menu
doesn't exist
creature_template_gossip has gossip definitions for menu id 6268 but this menu d
oesn't exist
creature_template_gossip has gossip definitions for menu id 9856 but this menu d
oesn't exist
creature_template_gossip has gossip definitions for menu id 10844 but this menu
doesn't exist
creature_template_gossip has gossip definitions for menu id 10852 but this menu
doesn't exist
creature_template_gossip has gossip definitions for menu id 2522 but this menu d
oesn't exist
creature_template_gossip has gossip definitions for menu id 12720 but this menu
doesn't exist
creature_template_gossip has gossip definitions for menu id 12718 but this menu
doesn't exist
creature_template_gossip has gossip definitions for menu id 13160 but this menu
doesn't exist
>> Loaded 5435 creature template gossip menus in 8 ms
Loading Creature trainers...
>> Loaded 1187 default trainers in 4 ms
Loading Vendors...
Table `(game_event_)npc_vendor` for Vendor (Entry: 44972) have in item list non-
existed item (60822, type 1), ignore
>> Loaded 48278 Vendors in 71 ms
Loading Waypoints...
>> Loaded 110626 waypoints in 177 ms
Loading Waypoint Addons...
>> Loaded 639 waypoint addon data in 2 ms
Loading SmartAI Waypoints...
>> Loaded 586 SmartAI waypoint paths (total 7064 waypoints) in 10 ms
Loading Creature Formations...
>> Loaded 2517 creatures in formations in 5 ms
Loading World State templates...
Table `world_state` contains a world state 3490 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3490 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3491 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3491 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3600 with invalid MapID (1134), map i
gnored
Table `world_state` contains a world state 3600 with invalid MapID (1504), map i
gnored
Table `world_state` contains a world state 3600 with invalid MapID (1505), map i
gnored
Table `world_state` contains a world state 3600 with invalid MapID (1552), map i
gnored
Table `world_state` contains a world state 3600 with invalid MapID (1672), map i
gnored
Table `world_state` contains a world state 3600 with invalid MapID (1825), map i
gnored
Table `world_state` contains a world state 3600 with invalid MapID (1911), map i
gnored
Table `world_state` contains a world state 3600 with invalid MapID (2167), map i
gnored
Table `world_state` contains a world state 3600 with invalid MapID (2373), map i
gnored
Table `world_state` contains a world state 3600 with invalid MapID (2509), map i
gnored
Table `world_state` contains a world state 3600 with invalid MapID (2511), map i
gnored
Table `world_state` contains a world state 3600 with invalid MapID (2547), map i
gnored
Table `world_state` contains a world state 3601 with invalid MapID (1134), map i
gnored
Table `world_state` contains a world state 3601 with invalid MapID (1504), map i
gnored
Table `world_state` contains a world state 3601 with invalid MapID (1505), map i
gnored
Table `world_state` contains a world state 3601 with invalid MapID (1552), map i
gnored
Table `world_state` contains a world state 3601 with invalid MapID (1672), map i
gnored
Table `world_state` contains a world state 3601 with invalid MapID (1825), map i
gnored
Table `world_state` contains a world state 3601 with invalid MapID (1911), map i
gnored
Table `world_state` contains a world state 3601 with invalid MapID (2167), map i
gnored
Table `world_state` contains a world state 3601 with invalid MapID (2373), map i
gnored
Table `world_state` contains a world state 3601 with invalid MapID (2509), map i
gnored
Table `world_state` contains a world state 3601 with invalid MapID (2511), map i
gnored
Table `world_state` contains a world state 3601 with invalid MapID (2547), map i
gnored
Table `world_state` contains a world state 3610 with invalid MapID (1134), map i
gnored
Table `world_state` contains a world state 3610 with invalid MapID (1504), map i
gnored
Table `world_state` contains a world state 3610 with invalid MapID (1505), map i
gnored
Table `world_state` contains a world state 3610 with invalid MapID (1552), map i
gnored
Table `world_state` contains a world state 3610 with invalid MapID (1672), map i
gnored
Table `world_state` contains a world state 3610 with invalid MapID (1825), map i
gnored
Table `world_state` contains a world state 3610 with invalid MapID (1911), map i
gnored
Table `world_state` contains a world state 3610 with invalid MapID (2167), map i
gnored
Table `world_state` contains a world state 3610 with invalid MapID (2373), map i
gnored
Table `world_state` contains a world state 3610 with invalid MapID (2509), map i
gnored
Table `world_state` contains a world state 3610 with invalid MapID (2511), map i
gnored
Table `world_state` contains a world state 3610 with invalid MapID (2547), map i
gnored
Table `world_state` contains a world state 3680 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3680 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3681 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3681 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3698 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3698 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3699 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3699 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3700 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3700 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3701 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3701 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3702 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3702 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3703 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3703 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3704 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3704 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3705 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3705 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3706 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3706 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3710 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3710 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3711 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3711 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3712 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3712 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3713 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3713 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3714 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3714 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3749 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3749 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3750 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3750 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3751 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3751 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3752 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3752 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3753 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3753 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3754 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3754 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3755 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3755 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3756 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3756 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3757 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3757 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3758 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3758 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3759 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3759 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3760 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3760 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3761 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3761 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3762 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3762 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3763 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3763 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3764 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3764 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3765 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3765 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3766 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3766 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3767 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3767 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3768 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3768 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3769 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3769 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3770 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3770 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3771 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3771 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3772 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3772 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3773 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3773 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3781 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3781 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3801 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3801 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3802 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3802 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3803 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 3803 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 3815 with invalid MapID (1544), map i
gnored
Table `world_state` contains a world state 3816 with invalid MapID (1544), map i
gnored
Table `world_state` contains a world state 4022 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 4022 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 4023 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 4023 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 4024 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 4024 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 4025 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 4025 with invalid AreaID (10176), are
a ignored
Table `world_state` contains a world state 4354 with invalid MapID (2118), map i
gnored
Table `world_state` contains a world state 4354 with invalid AreaID (10176), are
a ignored
>> Loaded 526 world state templates 4 ms
>> Loaded 41 saved world state values 24 ms
Loading Persistend World Variables...
>> Loaded 9 world variables in 4 ms
Loading Terrain World Map definitions...
>> Loaded 4 terrain world maps in 0 ms.
Loading Terrain Swap Default definitions...
>> Loaded 4 terrain swap defaults in 1 ms.
Loading Phase Area definitions...
>> Loaded 25 phase areas in 1 ms.
Loading Conditions...
>> Loaded 15912 conditions in 45 ms
Loading faction change achievement pairs...
>> Loaded 124 faction change achievement pairs in 2 ms
Loading faction change spell pairs...
>> Loaded 113 faction change spell pairs in 1 ms
Loading faction change quest pairs...
>> Loaded 250 faction change quest pairs in 1 ms
Loading faction change item pairs...
>> Loaded 752 faction change item pairs in 2 ms
Loading faction change reputation pairs...
>> Loaded 17 faction change reputation pairs in 1 ms
Loading faction change title pairs...
>> Loaded 22 faction change title pairs in 1 ms
Loading GM tickets...
>> Loaded 2 GM tickets in 0 ms
Loading GM surveys...
>> Loaded GM Survey count from database in 1 ms
Loading client addons...
>> Loaded 35 known addons in 0 ms
Returning old mails...
>> No expired mails found.
Loading Autobroadcasts...
>> Loaded 0 autobroadcasts definitions. DB table `autobroadcast` is empty for th
is realm!
Loading spell_scripts...
>> Loaded 143 script definitions in 1 ms
Loading event_scripts...
>> Loaded 461 script definitions in 2 ms
Loading waypoint_scripts...
>> Loaded 422 script definitions in 2 ms
Loading spell script names...
Scriptname: `spell_vcore_dungeon_horn` spell (Id: 120000) does not exist.
Scriptname: `spell_vcore_dungeon_horn` spell (Id: 120001) does not exist.
Scriptname: `spell_vcore_dungeon_horn` spell (Id: 120002) does not exist.
Scriptname: `spell_vcore_dungeon_horn` spell (Id: 120003) does not exist.
>> Loaded 3282 spell script names in 7 ms
Loading Creature Texts...
>> Loaded 16797 creature texts for 3997 creatures in 53 ms
Loading Creature Text Locales...
Loading creature StaticFlags overrides...
>> Loaded 133 creature static flag overrides in 1 ms
Loading Taxi node level definitions...
>> Loaded 274 taxi node level definitions in 1 ms
Initializing Scripts...
Loading Script Waypoints for 54 creature(s)...
>> Loaded 1377 Script Waypoint nodes in 4 ms
>> Loaded spline chain data for 85 chains, consisting of 272 splines with 1414 w
aypoints in 4 ms
Loading C++ scripts
Script named 'world_map_set_faction_worldstates_609' does not have a script name
assigned in database.
Script named 'item_gor_dreks_ointment' does not have a script name assigned in d
atabase.
>> Loaded 4106 C++ scripts in 146 ms
Validating spell scripts...
Spell `85123` Effect `Index: EFFECT_0 Target: 7` of script `spell_siege_cannon`
did not match dbc effect data - handler bound to hook `OnObjectAreaTargetSelect`
of SpellScript won't be executed
>> Validated 3470 scripts in 12 ms
Loading SmartAI scripts...
>> Loaded SmartAIMgr Helpers in 16 ms
>> Loaded 13506 SmartAI scripts in 167 ms
Loading Calendar data...
>> Loaded 0 calendar events in 1 ms
>> Loaded 0 calendar invites in 0 ms
Loading Petitions...
>> Loaded 0 petitions.
Loading Signatures...
>> Loaded 0 Petition signs!
Loading Summon Properties parameter data...
>> Loaded 78 summon properties parameters in 1 ms
Loading Item loot...
>> Loaded 0 stored item loots
>> Loaded 0 stored item money
Initialize query data...
>> Initialized query cache data in 1019 ms
Initialize commands...
Initialize game time and timers
Mail timer set to: 1260, mail return is called every 1440 minutes
Starting Map System
Starting Game Event system...
Initialize AuctionHouseBot...
Initializing Opcodes...
Starting Arena Season...
Starting Battleground System
>> Loaded 15 battlegrounds in 0 ms
Starting Outdoor PvP System
>> Loaded 5 outdoor PvP definitions in 1 ms
Starting Battlefield System
>> Loaded 2 battlefields in 0 ms
Loading Warden Checks...
Loading Warden Action Overrides...
Deleting expired bans...
Initializing quest reset times...
Calculate random battleground reset time...
Calculate guild limitation(s) reset time...
Calculate next currency reset time...
World initialized in 0 minutes 13 seconds
TC>TC>TrinityCore rev. 39a515dbd13e+ 2026-10-27 23:56:43 +0100 (feature/clientle
ss-player-core branch) (Unix, Debug, Static) (worldserver-daemon) ready...
clientless login 26
TC>Registered clientless session for character GUID 26 (account 6), state=Loadin
g.
Created clientless player session for character GUID 26 (account 6).
ClientlessPlayerMgr started character GUID 26 (account 6).
Clientless login started for 'Arthoran' (GUID 26, account 6).
TC> Loading saved respawn time of 1790175804 for spawnid (0,323981) - spawn does
not exist, ignoring
Loading saved respawn time of 1790090644 for spawnid (0,396680) - spawn does not
exist, ignoring
Loading saved respawn time of 1790019808 for spawnid (0,396681) - spawn does not
exist, ignoring
Loading saved respawn time of 1790019853 for spawnid (0,396682) - spawn does not
exist, ignoring
Initialized transport GameObject grids: map=0 instance=0 grids=4 candidates=15
Clientless player character GUID 26 (account 6) reached state=Online.
ClientlessLua initialized, script root '/home/wow_admin/wow_cata_server/source/T
rinityCore/src/server/scripts/Custom/clientless'.
[AdventureBot][Profile] loaded guid=26 name='Arthoran' source='/home/wow_admin/w
ow_cata_server/source/TrinityCore/src/server/scripts/Custom/clientless/adventure
/profiles/arthoran.lua' home='elwynn' canGroundMount=1 mounts=1 mountMinDistance
=45.0 mountSpeedRate=1.60 personality=8 regionAffinity=4 activityAffinity=7
PROFILE_PROFESSIONS guid=26 primary=2
ClientlessLua[26]: Arthoran ready; no automatic test journey queued
ClientlessLua[26]: executed adventure override script '/home/wow_admin/wow_cata_
server/source/TrinityCore/src/server/scripts/Custom/clientless/adventure/overrid
es/arthoran.lua'.
ADVENTURE_CATALOG locations=2973 actions=84 lines=76
INTENT_TRAVEL guid=26 intent='social' location='goldshire_tavern' area=0
[AdventureBot] loaded 3966 clientless world points.
[AdventureBot] loaded travel graph: 993 node(s), 1765 directed edge(s).
clientless interaction 26
TC>Interactions guid=26 grouped=0 leader=0 partner=0 intent='social' schedule=''
leaderIdleSeconds=0 afkSeconds=0 sociability=0.65 loyalty=0.35
TC> SUPPLY_RESTOCK guid=26 day=20261028 daily=0 afterCombat=1
@@ -0,0 +1,57 @@
test_adventure_area_node.py: PASS
test_adventure_behavior_policy.py: PASS
test_adventure_combat_exercise.py: PASS
test_adventure_combat_preparation.py: PASS
test_adventure_combat_reactions.py: PASS
test_adventure_economy.py: PASS
test_adventure_economy_catalog.py: PASS
test_adventure_exploration.py: PASS
test_adventure_exploration_catalog.py: PASS
test_adventure_graph_handover.py: PASS
test_adventure_instance.py: PASS
test_adventure_instance_autoresume.py: PASS
test_adventure_instance_begin.py: PASS
test_adventure_instance_catalog.py: PASS
test_adventure_instance_persistence.py: PASS
test_adventure_intent_state.py: PASS
test_adventure_interactions.py: PASS
test_adventure_leisure.py: PASS
test_adventure_leisure_catalog.py: PASS
test_adventure_location_import.py: PASS
test_adventure_micro_reset.py: PASS
test_adventure_profession_catalog.py: PASS
test_adventure_profession_profile.py: PASS
test_adventure_profession_sightline.py: PASS
test_adventure_profession_targets.py: PASS
test_adventure_repair_catalog.py: PASS
test_adventure_rest.py: PASS
test_adventure_rest_fire.py: PASS
test_adventure_rest_space.py: PASS
test_adventure_rest_targets.py: PASS
test_adventure_social.py: PASS
test_adventure_social_fire.py: PASS
test_adventure_supplies.py: PASS
test_adventure_supply_catalog.py: PASS
test_adventure_supply_items.py: PASS
test_adventure_training_catalog.py: PASS
test_adventure_walk.py: PASS
test_clientless_companion.py: PASS
test_clientless_damage_notifications.py: PASS
test_clientless_near_teleport_observer.py: PASS
test_default_phase.py: PASS
test_flight_area_query.py: PASS
test_flight_handoff.py: PASS
test_flight_policy.py: PASS
test_follow_spline_velocity.py: PASS
test_free_flight.py: PASS
test_free_flight_planner.py: PASS
test_ground_exit_continuation.py: PASS
test_local_spline_segments.py: PASS
test_lua_reload.py: PASS
test_player_pure_max_skill.py: PASS
test_portal_transfer.py: PASS
test_portal_use.py: PASS
test_taxi_import_disabled.py: PASS
test_transport.py: PASS
test_transport_grid_loading.py: PASS
56/56 passed; failures: []
@@ -0,0 +1,8 @@
Debug build -j10 and installation succeeded. Test worldserver59086 freshly ready, port8085 listening.
56/56 full suite passed; additional new social notification concurrency test passed (57 scripts total).
Final expanded combat test with player focus also passed.
Native login26 and interaction diagnostic succeeded; sociability0.65 loyalty0.35.
Real creature defense after restart observed. No live player invitation/PvP/pet/portal/ten-minute AFK claim.
Normal initial Goldshire trip started on login; behavior stop requested at safe point, last observed switching/waiting for safe state.
OLD executable shutdown observed Object.h:448 GetMap ASSERTION FAILED m_currMap; process49765 exited before installation. Cause not investigated; new startup succeeded.
Local commit requested by user; no push. No DB migrations. No temporary profile overrides.
@@ -0,0 +1,11 @@
Clientless.Adventure.Loader.Enabled = 0
Clientless.Adventure.Loader.Alliance.Persistent = 0
Clientless.Adventure.Loader.Alliance.Temporary = 0
Clientless.Adventure.Loader.Horde.Persistent = 0
Clientless.Adventure.Loader.Horde.Temporary = 0
Clientless.Adventure.Loader.IntervalMs = 2000
Clientless.Adventure.Loader.MinLevel = 1
Clientless.Adventure.Loader.MaxLevel = 85
Clientless.Adventure.Loader.RotationPercent = 15
Clientless.Adventure.Loader.RotationMinAgeHours = 24
Clientless.Adventure.Manager.IntervalSeconds = 300
@@ -0,0 +1,20 @@
zones
78
Table Create Table
vcore_adventure_day CREATE TABLE `vcore_adventure_day` (\n `character_guid` int(10) unsigned NOT NULL,\n `local_date` int(10) unsigned NOT NULL,\n `hour_slot` tinyint(3) unsigned NOT NULL,\n `intent` varchar(32) NOT NULL,\n `location_key` varchar(100) NOT NULL,\n PRIMARY KEY (`character_guid`,`local_date`,`hour_slot`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
character_guid name level race class online persistent state profile_bytes
27 Dagri 60 3 1 0 0 retired 871
28 Jarana 60 8 1 0 0 retired 870
29 Aelion 60 4 1 1 0 ready 1761
30 Zanzan 60 8 1 1 0 ready 1749
31 Lenara 60 22 8 1 0 ready 1740
32 Aldren 60 5 6 1 0 ready 1765
33 Tinkbin 1 7 1 0 1 ready 1456
34 Sylaria 1 10 4 0 1 ready 1478
35 Karggan 85 3 5 0 1 ready 1530
36 Edwin 85 5 1 0 1 ready 1543
38 Renaarna 85 22 5 0 0 ready 1497
account_id faction
7 1
8 2
@@ -0,0 +1,4 @@
TrinityCore rev. d6fea6ee6831+ 2026-10-28 15:00:41 +0100 (feature/clientless-player-core branch) (Unix, Debug, Static) (worldserver-daemon)
World initialized in 0 minutes 11 seconds
TrinityCore rev. d6fea6ee6831+ 2026-10-28 15:00:41 +0100 (feature/clientless-player-core branch) (Unix, Debug, Static) (worldserver-daemon) ready...
No clientless sessions auto-started with all four targets zero, despite saved generated instance visit36.
@@ -0,0 +1,25 @@
World initialized in 0 minutes 11 seconds
Adventure GUID 29: enabled=0 schedule=0 phase=0 intent='' location='' micro='' deadline=0 detail='stopped'
TC> Adventure GUID 31: enabled=0 schedule=0 phase=0 intent='' location='' micro='' deadline=0 detail='stopped'
Interactions guid=29 grouped=0 leader=0 partner=0 intent='' schedule=''
Interactions guid=31 grouped=0 leader=0 partner=0 intent='' schedule=''
TC> Adventure GUID 30: enabled=1 schedule=0 phase=1 intent='social' location='poi_npc_300050' micro='' deadline=1793208319 detail='travelling to poi_npc_300050'
TC> Adventure GUID 32: enabled=1 schedule=0 phase=1 intent='social' location='poi_npc_321922' micro='' deadline=1793208319 detail='waiting for safe player/transport state'
TC> Adventure loader enabled=0 schema=0 busy=0 pools=0/0/0/0 known=0 rotations=0 manager=4 error=''
pool=0 faction=alliance persistent=1 target=0 online=0 pending=0 saved=0
pool=1 faction=alliance persistent=0 target=0 online=0 pending=0 saved=0
pool=2 faction=horde persistent=1 target=0 online=0 pending=0 saved=0
pool=3 faction=horde persistent=0 target=0 online=0 pending=0 saved=0
TC> All players saved.
TC>Adventure GUID 29: enabled=0 schedule=0 phase=0 intent='' location='' micro='' deadline=0 detail='stopped'
TC> Adventure GUID 31: enabled=0 schedule=0 phase=0 intent='' location='' micro='' deadline=0 detail='stopped'
Interactions guid=29 grouped=0 leader=0 partner=0 intent='' schedule=''
Interactions guid=31 grouped=0 leader=0 partner=0 intent='' schedule=''
TC> Adventure GUID 30: enabled=1 schedule=0 phase=2 intent='social' location='poi_tele_823' micro='social_comment' deadline=1793208765 detail='social scene: comment'
TC>Adventure GUID 32: enabled=1 schedule=0 phase=2 intent='social' location='poi_npc_321922' micro='social_listen' deadline=1793208766 detail='social scene: listen'
TC> Adventure loader enabled=0 schema=0 busy=0 pools=0/0/0/0 known=0 rotations=0 manager=4 error=''
pool=0 faction=alliance persistent=1 target=0 online=0 pending=0 saved=0
pool=1 faction=alliance persistent=0 target=0 online=0 pending=0 saved=0
pool=2 faction=horde persistent=1 target=0 online=0 pending=0 saved=0
pool=3 faction=horde persistent=0 target=0 online=0 pending=0 saved=0
TC> All players saved.
@@ -0,0 +1,5 @@
TC>Adventure loader enabled=1 schema=1 busy=0 pools=10/2/10/2 known=25 rotations=0 manager=24 error=''
pool=0 faction=alliance persistent=1 target=10 online=10 pending=0 saved=10
pool=1 faction=alliance persistent=0 target=2 online=2 pending=0 saved=3
pool=2 faction=horde persistent=1 target=10 online=10 pending=0 saved=10
pool=3 faction=horde persistent=0 target=2 online=2 pending=0 saved=2
@@ -0,0 +1,117 @@
guid name level talentTree persistent state
33 Tinkbin 1 0 0 1 ready
34 Sylaria 1 0 0 1 ready
35 Karggan 85 795 0 1 ready
36 Edwin 85 746 0 1 ready
37 Elaisia 60 845 0 0 ready
guid slot itemEntry
33 0 63278
33 1 27945
33 2 59113
33 4 3733
33 5 65705
33 6 6087
33 7 57417
33 8 60907
33 9 15463
33 10 56714
33 11 59116
33 12 12846
33 13 40483
33 14 60927
33 15 65687
33 16 56691
33 19 54443
33 20 54443
33 21 54443
33 22 54443
34 0 9978
34 1 27945
34 2 59112
34 4 61050
34 5 59091
34 6 56699
34 7 2033
34 8 60929
34 9 60939
34 10 57717
34 11 59114
34 12 12846
34 13 40483
34 14 65721
34 15 56679
34 16 6504
34 17 28979
34 19 54443
34 20 54443
34 21 54443
34 22 54443
35 0 75073
35 1 58699
35 2 75091
35 4 75088
35 5 75086
35 6 75072
35 7 75095
35 8 75098
35 9 75063
35 10 75068
35 11 56432
35 12 58614
35 13 56351
35 14 75065
35 15 63461
35 17 65172
35 19 54443
35 20 54443
35 21 54443
35 22 54443
36 0 75126
36 1 75078
36 2 75119
36 4 75135
36 5 75123
36 6 75136
36 7 75120
36 8 75124
36 9 75122
36 10 58648
36 11 75071
36 12 56132
36 13 73164
36 14 75077
36 15 56342
36 19 54443
36 20 54443
36 21 54443
36 22 54443
37 0 77867
37 1 21809
37 2 21805
37 4 23300
37 5 22197
37 6 13498
37 7 31125
37 8 22205
37 9 77734
37 10 12058
37 11 19873
37 12 19947
37 13 21488
37 14 22337
37 15 19104
37 16 18756
37 19 54443
37 20 54443
37 21 54443
37 22 54443
guid spells
33 24
34 15
35 109
36 110
37 85
guid talent_spells
35 22
36 21
37 13
@@ -0,0 +1,3 @@
guid items inventory_hash
21 26 c684ea37abcbdce68e151d144c823fb43abd94f0ec860e03e35738845e37172a
26 24 e1094ed84b20084243dac5338d88814eb54c3bc4ddd3ed64a1a4bca455013a93
@@ -0,0 +1,3 @@
guid items inventory_hash
21 26 c684ea37abcbdce68e151d144c823fb43abd94f0ec860e03e35738845e37172a
26 24 e1094ed84b20084243dac5338d88814eb54c3bc4ddd3ed64a1a4bca455013a93
@@ -0,0 +1,11 @@
guid name online map position_x position_y position_z
26 Arthoran 0 0 -11683.5 -2317.07 25.1635
29 Aelion 1 0 -9448.55 68.236 56.3225
30 Zanzan 1 1 -826.364 -4879.64 19.5037
31 Lenara 1 0 -9448.55 68.236 56.3225
32 Aldren 1 0 1082.5 1578.14 27.8342
33 Tinkbin 0 0 -5144.9 453.528 393.232
34 Sylaria 0 530 8713 -6649.58 72.7513
35 Karggan 0 0 -8622.47 407.783 102.924
36 Edwin 0 0 -7065.2 -2602.84 256.074
38 Renaarna 0 0 -8733.04 543.374 101.123
@@ -0,0 +1,6 @@
character_guid local_date slots day_hash
33 20261028 24 ae72eb55c08e2d19c7de777e50778181a1ec37e7a7ca26aeb576b1255bcd0571
34 20261028 24 ba3246dc3dbffed593e26672ec4d15dace181d2bd8b121fa9b34e2a96b60a964
35 20261028 24 5fe768de3439ffc9adf00b9694f9bcdd5e91f1a2d1aa46724d04173300203536
36 20261028 24 81c6f2da21e74edda3ff32e25cb3af0764f8ec13461e8a40d6efcf816a749cd0
37 20261028 24 5d0052af0910553f70e9ccf411da0386b58e8911a63d2ff540358cb1fe8d1f3f
@@ -0,0 +1,6 @@
character_guid local_date slots day_hash
33 20261028 24 ae72eb55c08e2d19c7de777e50778181a1ec37e7a7ca26aeb576b1255bcd0571
34 20261028 24 ba3246dc3dbffed593e26672ec4d15dace181d2bd8b121fa9b34e2a96b60a964
35 20261028 24 5fe768de3439ffc9adf00b9694f9bcdd5e91f1a2d1aa46724d04173300203536
36 20261028 24 81c6f2da21e74edda3ff32e25cb3af0764f8ec13461e8a40d6efcf816a749cd0
37 20261028 24 5d0052af0910553f70e9ccf411da0386b58e8911a63d2ff540358cb1fe8d1f3f
@@ -0,0 +1,13 @@
Profile/planner/population implementation complete on feature/clientless-player-core.
75/75 production-code regression scripts passed; final Debug j10 built and installed.
Worldserver139425 ready after11s, port8085 listening. No push/commit of this WIP.
Loader disabled; four targets0, level1..85, rotation15%, minimum age24h.
Aelion29 and Lenara31 manually online/stopped/ungrouped in Goldshire.
Zanzan30 and Aldren32 restored to native Durotar/Silverpine home anchors/social goals.
New33..36 persistent and38 temporary offline. Dedicated37 rotated/deleted.
Native level1/85 both factions, protection60, profile-level repair, day relog/restart,
expired-day replacement and native rotation/profile+day cleanup verified.
Generated saved instance visitor36 does not auto-start under disabled/zero quotas;
legacy unowned recovery remains asynchronous and paced. Existing21/26 inventory hashes match.
Large populations, visual gameplay, complete role AI and navigation improvements await acceptance.
See population.md and SESSION-RESUME.md for contracts, caveats and exact state.
@@ -0,0 +1,167 @@
TEST tests/clientless/test_adventure_area_node.py
Production area destination excludes outside and unreachable graph nodes.
TEST tests/clientless/test_adventure_async_database.py
Async creation DB contracts: prepared connection masks, native security column names, no future waits, successful-save cache publication and world-update-only loader hook passed
TEST tests/clientless/test_adventure_behavior_policy.py
24-hour generation, shared intents with changing destinations, broad location classification and repetition penalties passed.
TEST tests/clientless/test_adventure_combat_exercise.py
Production exercise: stance/charge/melee/casts, native validation delegation, bounded lifetime, invalid targets and unchanged native phases passed.
TEST tests/clientless/test_adventure_combat_preparation.py
Production talent learner: native tiers/dependencies/class gates, all 26 legal level60 points, no capstone bypass and repeat safety passed.
TEST tests/clientless/test_adventure_combat_reactions.py
Production combat focus, damage ordering, risk filters, corpse radius/delay, flight/group override, blocked escape, danger avoidance and malus-free persisted fallback passed.
TEST tests/clientless/test_adventure_day_persistence.py
Production day planner: all 24 TINYINT slots restored across logins, incomplete/old-day replacement, full transaction and curiosity/level weighting passed
TEST tests/clientless/test_adventure_economy.py
Economy: native service roles, friendly/phase/LOS/bounds gates, no bot service targets and coherent performative cues passed.
TEST tests/clientless/test_adventure_economy_catalog.py
Economy catalog: eleven actions, three faction-bound service anchors, native flag gates and idempotent preservation passed.
TEST tests/clientless/test_adventure_equipment_maintenance.py
Production gear maintenance: same birth/retention gate rejects wrong armor/stats, malformed effects, level, temporary, reputation, map, holiday, native-use and slot mismatches passed
TEST tests/clientless/test_adventure_exploration.py
Exploration: visible native props only, no chests/traps/furniture, phase/map/LOS/range gates and contextual preparation passed.
TEST tests/clientless/test_adventure_exploration_catalog.py
Exploration catalog: ten actions, shared scenes, default wander replacement, explicit category eligibility and preserved edits passed.
TEST tests/clientless/test_adventure_generator_equipment.py
Production equipment affinity: mana-only/direct/triggered procs, caster/physical stat effects and bounded cycles passed
TEST tests/clientless/test_adventure_generator_ownership.py
Production generator commands: batch bounds, dedicated ownership, persistent/online/removing retirement protection and retired login refusal passed
TEST tests/clientless/test_adventure_generator_policy.py
Production generator: 6144 cultural names and 61440 real Lua profiles, profession coherence, personality ranges, escaping and equipment/armor gates passed
TEST tests/clientless/test_adventure_graph_handover.py
Production graph handover waits for ship/taxi/flight/teleport and stops at safe road/node boundaries.
TEST tests/clientless/test_adventure_group_plan.py
Production group plans: leader meeting/goal/deadline inheritance, untouched personal day, manual preparation and instance-state guards passed.
TEST tests/clientless/test_adventure_groups.py
Production recruitment: capitals, different goals, native inviter leadership, joining existing groups, capacity/reservations, raid conversion, planned transition and local contact passed.
TEST tests/clientless/test_adventure_instance.py
Production instance lifecycle: time budget, true entry, denied/shared entry, native rear exit, restart, expired copy, late arrival, HP and return replay passed.
TEST tests/clientless/test_adventure_instance_autoresume.py
Deferred instance script: missing schema/visits stays idle; no login work on startup; saved visitors resume with Adventure controllers and native accounts.
TEST tests/clientless/test_adventure_instance_begin.py
Production entrance travel uses the existing location planner, requires mapping and retains normal social/area travel.
TEST tests/clientless/test_adventure_instance_catalog.py
Instance migrations: outside entrances only, native graph preserved, disabled/missing transitions excluded, edits and saved visits preserved.
TEST tests/clientless/test_adventure_instance_loader.py
Production instance recovery: no startup DB/login work, asynchronous delayed/paced manual recovery, generated-bot quota ownership, absent-schema compatibility and existing preparation ticks passed
TEST tests/clientless/test_adventure_instance_persistence.py
Production instance persistence: phases, original deadline, instance ID, transactional HP marker, failed commit and intent release passed.
TEST tests/clientless/test_adventure_intent_state.py
Production intent arrival, failed/partial travel, deadlines and safe schedule handover passed.
TEST tests/clientless/test_adventure_interactions.py
/tmp/tmpwuo364tp/test.cpp: In member function ‘void AdventureInteractionMgr::Leave(Player*, Record&, const char*)’:
/tmp/tmpwuo364tp/test.cpp:142:69: warning: unused parameter ‘reason’ [-Wunused-parameter]
142 | void AdventureInteractionMgr::Leave(Player* p,Record& r,char const* reason)
| ~~~~~~~~~~~~^~~~~~
production interaction manager: invitations, factions, reservations, follow, AFK and deferred departure passed
TEST tests/clientless/test_adventure_leisure.py
Leisure: substantial curved MMAP routes, mirrored return, interrupted return, rejected corridors, actual arrival, companion follow, riding, flight and fishing passed.
TEST tests/clientless/test_adventure_leisure_catalog.py
Leisure migration: native city anchor, shared scene references, pet-walk mapping and preservation of edited weights passed.
TEST tests/clientless/test_adventure_location_import.py
Locations: actual Debug SMALLINT reads retain continent IDs; explicit location eligibility and edited weight overrides passed.
TEST tests/clientless/test_adventure_manager_inventory.py
Production inventory maintenance: only full backpacks, native stack trimming, level-appropriate supplies, tools, leash, fishing pole, containers and untouched equipped slots passed
TEST tests/clientless/test_adventure_micro_reset.py
Micro cleanup ends physical local movement, preserves transit and does not stand up dead players.
TEST tests/clientless/test_adventure_population.py
Production population: four independent faction/persistence targets, fair selection, pending reservations, retries, existing inventory, once-per-boot rotation and connected/persistent protection passed
TEST tests/clientless/test_adventure_profession_catalog.py
Profession catalog: native workstation roles, no workshop/resource inference, idempotence and preserved edits passed.
TEST tests/clientless/test_adventure_profession_profile.py
Production profession parser, real Lua profiles, primary restrictions and secondary permissions passed.
TEST tests/clientless/test_adventure_profession_sightline.py
Native workstation working-surface sightline and blocked geometry rejection passed.
TEST tests/clientless/test_adventure_profession_targets.py
Production profession targets: native locks, phase/spawn/loot, stations, corpses, history and trainers passed.
TEST tests/clientless/test_adventure_profile_selection.py
Production profile selection: real Lua ID dictionaries, exact 9:1 companion weighting, zero/negative/infinite/NaN/oversized weights rejected and legacy companion fallback passed
TEST tests/clientless/test_adventure_pvp.py
Production PvP selector: level boundaries, radius, factions, native legality, navigation, intent, personality and resources passed.
TEST tests/clientless/test_adventure_repair_catalog.py
Repair action catalog: proper native service requirement, economy-only intent and preserved administrator weights passed.
TEST tests/clientless/test_adventure_rest.py
Recovery: authored places, bounds, arrival, occupancy, full rest duration, failure, reload and interruption passed.
TEST tests/clientless/test_adventure_rest_fire.py
Rest fire: shared scene mapping, additive migration, preserved weights and authored creation-place policy passed.
TEST tests/clientless/test_adventure_rest_space.py
Sleep footprint: furniture, body extent, overhead collision, ledges, stairs, missing heights, rotation and scale passed.
TEST tests/clientless/test_adventure_rest_targets.py
Native sleep targets: chair exclusion, phase, despawn, floor search, indoors, water, storey, occupancy, bed/surface preference passed.
TEST tests/clientless/test_adventure_rotation.py
/tmp/tmpn8583ajg/test.cpp: In instantiation of ‘std::string Trinity::StringFormat(const char*, A ...) [with A = {}; std::string = std::__cxx11::basic_string<char>]’:
/tmp/tmpn8583ajg/test.cpp:22:126: required from ‘void Tx::PAppend(const char*, A ...) [with A = {}]’
22 | struct Tx{std::vector<std::string>sql;template<class...A>void PAppend(char const*f,A...a){sql.push_back(Trinity::StringFormat(f,a...));}};
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
/tmp/tmpn8583ajg/test.cpp:51:75: required from here
51 | auto barrier=CharacterDatabase.BeginTransaction();barrier->PAppend("DO 0");
| ~~~~~~~~~~~~~~~~^~~~~~~~
/tmp/tmpn8583ajg/test.cpp:11:113: warning: format not a string literal and no format arguments [-Wformat-security]
11 | namespace Trinity{template<class...A>std::string StringFormat(char const* f,A...args){char b[4096];std::snprintf(b,sizeof(b),f,args...);return b;}}
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
Production rotation: connected/native-online protection, ownership refusal, native delete failure, world cleanup failure and journal-retained retry before successful profile/plan/state removal passed
TEST tests/clientless/test_adventure_social.py
Production social flow: approach before talk, coherent greeting/talk/listen/farewell, lost targets, native chair confirmation and real fire confirmation passed.
TEST tests/clientless/test_adventure_social_fire.py
Shared fire: native detection/provisioning, buildings/city/parent/zone restrictions, existing fires and outdoor/water checks passed.
TEST tests/clientless/test_adventure_supplies.py
Production supplies: exact10% boundary, bandage-before-food, native lockout fallback, recovery completion, combat potions, mana-only drinking and daily/post-combat top-ups passed.
TEST tests/clientless/test_adventure_supply_catalog.py
Supply migrations: all five roles, level60 netherweave tier, editable/disabled catalog preservation and persistent daily stamp passed.
TEST tests/clientless/test_adventure_supply_items.py
Production native-item delegation: usable bandage tiers, native cooldown/lockout gates, real inventory consumption, self targeting and level60 secondary caps passed.
TEST tests/clientless/test_adventure_training_catalog.py
Training catalog: real dummy requirement, leisure-only intent, bounded duration and preserved administrator weights passed.
TEST tests/clientless/test_adventure_walk.py
Production travel gait reaches native spline, survives repaths, prevents mounting and preserves legacy running defaults.
TEST tests/clientless/test_clientless_character_factory.py
Production native factory: character/profile atomicity, failed preparation/commit, cache publication order, account/security/name/cap gates passed
TEST tests/clientless/test_clientless_companion.py
Native companion: provisioning, delayed summon, ownership, real item target, leash confirmation/timeout, reuse and cleanup passed.
TEST tests/clientless/test_clientless_damage_notifications.py
Production damage handoff: 16 concurrent map-worker writers, ordered GUID-only events, clientless-only/positive damage gates and post-health notification passed.
TEST tests/clientless/test_clientless_near_teleport_observer.py
Production near-teleport observer packet includes actual mover GUID and destination; clientless timestamp refreshed, regular client timestamp preserved.
TEST tests/clientless/test_clientless_skill_preparation.py
Production offline skill preparation: native tier caps, no downgrading, rank/level/race/tier gates and no modification of online players passed
TEST tests/clientless/test_clientless_social_notifications.py
Production social/helper queues: concurrent GUID-only delivery, bounded queues, human/self/zero-damage gates, pet attribution and lethal-cleanup ordering passed
TEST tests/clientless/test_default_phase.py
Native PhaseShift: implicit/default 169 visibility, genuine custom-phase separation and reference updates passed.
TEST tests/clientless/test_flight_area_query.py
Native terrain query map/phase, area/zone ordering and cache passed.
TEST tests/clientless/test_flight_handoff.py
Flight handoff before spline end, terminal landing, return corners, collision stop and actual distance passed.
TEST tests/clientless/test_flight_policy.py
Flight native eligibility, license/profile/zone policy, RP costs and fail-safe return decisions passed.
TEST tests/clientless/test_follow_spline_velocity.py
Native follow: actual player/creature spline velocity, client gait and independent follower speeds passed.
TEST tests/clientless/test_free_flight.py
Flight geometry passed: takeoff/landing, smoothed peak, ceiling, lateral/climbing avoidance, missing terrain and blocked corridors.
TEST tests/clientless/test_free_flight_planner.py
ground planner regressions and dynamic flight/node/location/virtual-exit integration passed
TEST tests/clientless/test_ground_exit_continuation.py
optional exits: repeated probes, retained route, delayed success, forward resume, flight fallback passed
TEST tests/clientless/test_item_equip_cooldown.py
Native item equip cooldown: zero/sentinel/missing spells safely skipped, valid use cooldown preserved and longer/disabled cooldowns untouched passed
TEST tests/clientless/test_local_spline_segments.py
Production local spline clipping passes native path-length validation, tiny remainders and 1000 sampled paths.
TEST tests/clientless/test_lua_reload.py
Lua reload regression tests passed (production reload/bindings, real Lua 5.4).
TEST tests/clientless/test_player_pure_max_skill.py
Native pure skill cap: learned skills return stored cap; missing/deleted/zero-rank skills return0.
TEST tests/clientless/test_portal_transfer.py
Portal near/far ACK and denied same-map transfer regressions passed.
TEST tests/clientless/test_portal_use.py
Interactive portal native click, near/far/global ACK, denial, timeout and target checks passed.
Native portal destination discovery and unsupported/ambiguous spell rejection passed.
Production clientless ACK completion sequence increments only after completed near/far transfers.
TEST tests/clientless/test_shared_group_route.py
Production generic shared routes: same edges/taxi/free flight, independent execution state, final local goal, late catch-up, permissions and stale-goal rejection passed.
TEST tests/clientless/test_taxi_import_disabled.py
Taxi importer preserves disabled rows and their reasons.
TEST tests/clientless/test_transport.py
Transport dock, frame, recorder, cross-map copy and ride regressions passed
TEST tests/clientless/test_transport_grid_loading.py
Core transport grid initialization regressions passed (no CPC dependency).
TOTAL 75 FAILED []
@@ -0,0 +1,41 @@
from pathlib import Path
import os,re,subprocess,sys
root=Path('/home/wow_admin/wow_cata_server/source/TrinityCore')
conf=Path('/home/wow_admin/wow_cata_server/server/debug/etc/worldserver.conf').read_text()
def query(kind,sql):
h,port,u,p,db=re.search(r'^'+kind+r'DatabaseInfo\s*=\s*"([^"]+)"',conf,re.M).group(1).split(';')
env=os.environ.copy();env['MYSQL_PWD']=p
r=subprocess.run(['mysql','--protocol=TCP','--host='+h,'--port='+port,'--user='+u,'--database='+db,'--batch','--connect-timeout=10'],input=sql,text=True,capture_output=True,env=env)
if r.returncode:raise SystemExit(r.stderr.replace(p,'[redacted]'))
return r.stdout
mode=sys.argv[1]
if mode=='apply':
for kind,name in [('World','sql/custom/world/2026_10_29_00_adventure_population.sql'),('Character','sql/custom/characters/2026_10_29_00_adventure_population.sql')]:
print(query(kind,(root/name).read_text()))
elif mode=='audit':
print(query('World',"SELECT COUNT(*) AS zones FROM vcore_adventure_zone; SHOW CREATE TABLE vcore_adventure_day;"))
print(query('Character',"SELECT g.character_guid,c.name,c.level,c.race,c.class,c.online,g.persistent,g.state,LENGTH(g.profile_lua) profile_bytes FROM vcore_adventure_generated_bot g JOIN characters c ON c.guid=g.character_guid ORDER BY c.guid; SELECT * FROM vcore_adventure_rotation; SELECT * FROM vcore_adventure_bot_account;"))
elif mode=='originals':
print(query('Character',"SELECT ci.guid,COUNT(*) items,SHA2(GROUP_CONCAT(CONCAT(ci.item,':',ii.itemEntry) ORDER BY ci.item SEPARATOR ','),256) inventory_hash FROM character_inventory ci JOIN item_instance ii ON ii.guid=ci.item WHERE ci.guid IN(21,26) GROUP BY ci.guid;"))
elif mode=='dayhash':
print(query('World',"SELECT character_guid,local_date,COUNT(*) slots,SHA2(GROUP_CONCAT(CONCAT(hour_slot,':',intent,':',location_key) ORDER BY hour_slot SEPARATOR '|'),256) day_hash FROM vcore_adventure_day WHERE character_guid BETWEEN 33 AND 50 GROUP BY character_guid,local_date;"))
elif mode=='details':
print(query('Character',"SELECT c.guid,c.name,c.level,c.talentTree,g.persistent,g.state FROM characters c JOIN vcore_adventure_generated_bot g ON g.character_guid=c.guid WHERE c.guid>=33; SELECT ci.guid,ci.slot,i.itemEntry FROM character_inventory ci JOIN item_instance i ON i.guid=ci.item WHERE ci.guid>=33 AND ci.bag=0 AND ci.slot<23 ORDER BY ci.guid,ci.slot; SELECT s.guid,COUNT(*) spells FROM character_spell s WHERE s.guid>=33 GROUP BY s.guid; SELECT t.guid,COUNT(*) talent_spells FROM character_talent t WHERE t.guid>=33 GROUP BY t.guid;"))
elif mode=='expire37':
row=query('Character',"SELECT c.online FROM characters c JOIN vcore_adventure_generated_bot g ON c.guid=g.character_guid WHERE c.guid=37 AND g.persistent=0 AND g.state='ready';")
if row.strip().splitlines()!=['online','0']:raise SystemExit('Test bot37 must be offline and temporary')
print(query('World',"UPDATE vcore_adventure_day SET local_date=20261027 WHERE character_guid=37; SELECT character_guid,local_date,COUNT(*) slots FROM vcore_adventure_day WHERE character_guid=37 GROUP BY character_guid,local_date;"))
elif mode=='positions':
print(query('Character',"SELECT guid,name,online,map,position_x,position_y,position_z FROM characters WHERE guid IN(26,29,30,31,32,33,34,35,36,38);"))
elif mode=='visits':
print(query('Character',"SELECT character_guid,phase,block_end,location_key FROM vcore_adventure_instance_visit ORDER BY character_guid;"))
elif mode=='homes':
print(query('World',"SELECT id,name,map,position_x,position_y,position_z FROM game_tele WHERE id=823 OR name LIKE '%sepul%' OR name='Brill'; SELECT point_key,map,position_x,position_y,position_z FROM vcore_clientless_world_point WHERE point_key='poi_npc_321922';"))
elif mode=='near_home':
print(query('World',"SELECT id,name,map,position_x,position_y,position_z FROM game_tele WHERE map=0 ORDER BY POW(position_x-1097.57,2)+POW(position_y-1587.29,2) LIMIT 3;"))
elif mode=='zone_names':
print(query('World',"SELECT DISTINCT zone_id,region_key FROM vcore_adventure_location WHERE zone_id IN(210,33,5287,5288,616,4709,493,2817,4755,5144,5145,4815,11,51,3) ORDER BY zone_id;"))
elif mode=='plans':
print(query('World',"SELECT character_guid,local_date,COUNT(*) slots,MIN(hour_slot),MAX(hour_slot),COUNT(DISTINCT location_key) locations FROM vcore_adventure_day GROUP BY character_guid,local_date;"))
else:raise SystemExit('unknown mode')
@@ -0,0 +1,58 @@
BOT_LOADER_LOGIN guid=33 pool=0
Clientless player character GUID 33 (account 7) reached state=Online.
DAY_PLAN guid=33 date=20261028 slots=24
BOT_LOADER_LOGIN guid=34 pool=2
Clientless player character GUID 34 (account 8) reached state=Online.
DAY_PLAN guid=34 date=20261028 slots=24
TC>Adventure loader enabled=1 schema=1 busy=0 pools=1/0/1/0 known=6 rotations=0 manager=2 error=''
pool=0 faction=alliance persistent=1 target=1 online=1 pending=0 saved=1
pool=1 faction=alliance persistent=0 target=0 online=0 pending=0 saved=2
pool=2 faction=horde persistent=1 target=1 online=1 pending=0 saved=1
pool=3 faction=horde persistent=0 target=0 online=0 pending=0 saved=2
TC> Adventure loader enabled=1 schema=1 busy=1 pools=2/0/2/0 known=6 rotations=0 manager=2 error=''
pool=0 faction=alliance persistent=1 target=2 online=1 pending=0 saved=1
pool=1 faction=alliance persistent=0 target=0 online=0 pending=0 saved=2
pool=2 faction=horde persistent=1 target=2 online=1 pending=0 saved=1
pool=3 faction=horde persistent=0 target=0 online=0 pending=0 saved=2
BOT_LOADER_LOGIN guid=35 pool=0
Clientless player character GUID 35 (account 7) reached state=Online.
DAY_PLAN guid=35 date=20261028 slots=24
BOT_LOADER_LOGIN guid=36 pool=2
Clientless player character GUID 36 (account 8) reached state=Online.
DAY_PLAN guid=36 date=20261028 slots=24
TC>Adventure loader enabled=1 schema=1 busy=0 pools=2/0/2/0 known=8 rotations=0 manager=4 error=''
pool=0 faction=alliance persistent=1 target=2 online=2 pending=0 saved=2
pool=1 faction=alliance persistent=0 target=0 online=0 pending=0 saved=2
pool=2 faction=horde persistent=1 target=2 online=2 pending=0 saved=2
pool=3 faction=horde persistent=0 target=0 online=0 pending=0 saved=2
TC>You changed level of Tinkbin to 5.
BOT_LOADER_LOGIN guid=33 pool=0
Clientless player character GUID 33 (account 7) reached state=Online.
TC> Adventure loader enabled=1 schema=1 busy=1 pools=2/2/2/2 known=8 rotations=0 manager=4 error=''
pool=0 faction=alliance persistent=1 target=2 online=2 pending=0 saved=2
pool=1 faction=alliance persistent=0 target=2 online=0 pending=0 saved=2
pool=2 faction=horde persistent=1 target=2 online=2 pending=0 saved=2
pool=3 faction=horde persistent=0 target=2 online=0 pending=0 saved=2
BOT_LOADER_LOGIN guid=29 pool=1
Clientless player character GUID 29 (account 6) reached state=Online.
DAY_PLAN guid=29 date=20261028 slots=24
BOT_LOADER_LOGIN guid=30 pool=3
Clientless player character GUID 30 (account 6) reached state=Online.
DAY_PLAN guid=30 date=20261028 slots=24
BOT_LOADER_LOGIN guid=31 pool=1
Clientless player character GUID 31 (account 6) reached state=Online.
DAY_PLAN guid=31 date=20261028 slots=24
BOT_LOADER_LOGIN guid=32 pool=3
Clientless player character GUID 32 (account 6) reached state=Online.
DAY_PLAN guid=32 date=20261028 slots=24
Generated Elaisia guid=37 race=1 class=1 level=60 archetype=warrior persistent=0 seed=2 home=poi_npc_280710 (offline).
TC>return { identity = { name = "Elaisia", home_region = "elwynn", profile_version = 2, level = 60, class = 1, specialization = 2, role = "tank", seed = 2, home_zone = 12, home_capital = 1519, favorite_zone = 1377, favorite_region = "silithus", vocation = "Wandernder Waffenschmied", background = "Herkunft: Elwynn. Sucht auf Reisen Arbeit, neue Wege und Begegnungen." }, behavior = { enabled = true, daily_schedule = true, initial_intent = 'social', initial_location = "poi_npc_280710", initial_duration_seconds = 3600, locale = 'deDE' }, professions = { primary = { "mining", "blacksmithing" } }, personality = { sociability = 0.786, adventurousness = 0.328, aggression = 0.575, home_attachment = 0.418, wanderlust = 0.713, group_loyalty = 0.603, tavern_affinity = 0.311, wilderness_affinity = 0.457, city_affinity = 0.593, danger_tolerance = 0.496 }, region_affinity = { ["elwynn"] = 2.5 }, zone_affinity = { [12] = 4.0, [1377] = 5.0, [1519] = 4.0, }, activity_affinity = { social = 0.589, adventure = 0.761, profession = 0.483, leisure = 0.267, economy = 0.351, rest = 0.513, instance = 0.643, raid = 0.180 }, inventory = { keep_items = {37460,6256,5956,2901,7005,6217} }, movement = { can_ground_mount = true, ground_mount_speed_rate = 2, ground_mounts = {[2404]=1,[2402]=2,[2409]=1,}, ground_mount_count = 3, can_free_fly = true, flight_mounts = {[32235]=2,[32239]=10,[32240]=6,}, flight_mount_count = 3, companions = {[10673]=1,}, companion_count = 1, companion_leash_item = 37460 } }
Clientless player character GUID 37 (account 7) reached state=Online.
DAY_PLAN guid=37 date=20261028 slots=24
Clientless player character GUID 37 (account 7) reached state=Online.
DAY_PLAN guid=37 date=20261028 slots=24
TC> Adventure loader enabled=0 schema=1 busy=0 pools=2/2/2/2 known=9 rotations=0 manager=8 error=''
pool=0 faction=alliance persistent=1 target=2 online=2 pending=0 saved=2
pool=1 faction=alliance persistent=0 target=2 online=2 pending=0 saved=3
pool=2 faction=horde persistent=1 target=2 online=2 pending=0 saved=2
pool=3 faction=horde persistent=0 target=2 online=2 pending=0 saved=2
@@ -0,0 +1,41 @@
Clientless player character GUID 36 (account 8) reached state=Online.
BOT_LOADER_LOGIN guid=33 pool=0
Clientless player character GUID 33 (account 7) reached state=Online.
BOT_LOADER_LOGIN guid=29 pool=1
Clientless player character GUID 29 (account 6) reached state=Online.
BOT_LOADER_LOGIN guid=34 pool=2
Clientless player character GUID 34 (account 8) reached state=Online.
BOT_LOADER_LOGIN guid=30 pool=3
Clientless player character GUID 30 (account 6) reached state=Online.
BOT_LOADER_LOGIN guid=35 pool=0
Clientless player character GUID 35 (account 7) reached state=Online.
BOT_LOADER_LOGIN guid=31 pool=1
Clientless player character GUID 31 (account 6) reached state=Online.
BOT_LOADER_LOGIN guid=32 pool=3
Clientless player character GUID 32 (account 6) reached state=Online.
TC>Adventure loader enabled=1 schema=1 busy=0 pools=2/2/2/2 known=9 rotations=0 manager=8 error=''
pool=0 faction=alliance persistent=1 target=2 online=2 pending=0 saved=2
pool=1 faction=alliance persistent=0 target=2 online=2 pending=0 saved=3
pool=2 faction=horde persistent=1 target=2 online=2 pending=0 saved=2
pool=3 faction=horde persistent=0 target=2 online=2 pending=0 saved=2
TC> Adventure loader enabled=1 schema=0 busy=1 pools=2/3/2/2 known=9 rotations=0 manager=8 error=''
pool=0 faction=alliance persistent=1 target=2 online=2 pending=0 saved=2
pool=1 faction=alliance persistent=0 target=3 online=2 pending=0 saved=3
pool=2 faction=horde persistent=1 target=2 online=2 pending=0 saved=2
pool=3 faction=horde persistent=0 target=2 online=2 pending=0 saved=2
BOT_ROTATED_REMOVED guid=37
BOT_LOADER_LOGIN guid=38 pool=1
Clientless player character GUID 38 (account 7) reached state=Online.
DAY_PLAN guid=38 date=20261028 slots=24
TC> Adventure loader enabled=0 schema=1 busy=0 pools=0/0/0/0 known=9 rotations=0 manager=9 error=''
pool=0 faction=alliance persistent=1 target=0 online=2 pending=0 saved=2
pool=1 faction=alliance persistent=0 target=0 online=3 pending=0 saved=3
pool=2 faction=horde persistent=1 target=0 online=2 pending=0 saved=2
pool=3 faction=horde persistent=0 target=0 online=2 pending=0 saved=2
TC> Clientless player character GUID 29 (account 6) reached state=Online.
TC>Clientless player character GUID 31 (account 6) reached state=Online.
TC>Adventure loader enabled=0 schema=1 busy=0 pools=0/0/0/0 known=9 rotations=0 manager=4 error=''
pool=0 faction=alliance persistent=1 target=0 online=0 pending=0 saved=2
pool=1 faction=alliance persistent=0 target=0 online=2 pending=0 saved=3
pool=2 faction=horde persistent=1 target=0 online=0 pending=0 saved=2
pool=3 faction=horde persistent=0 target=0 online=2 pending=0 saved=2
@@ -0,0 +1,10 @@
TrinityCore rev. 0173a434f49d+ 2026-10-29 01:36:35 +0100 (feature/clientless-player-core branch) (Unix, Debug, Static) (worldserver-daemon) ready...
pool=1 faction=alliance persistent=0 target=5 online=5 pending=0 saved=5
pool=2 faction=horde persistent=1 target=50 online=48 pending=0 saved=50
pool=3 faction=horde persistent=0 target=5 online=5 pending=0 saved=5
[?2004hTC>Adventure loader enabled=1 schema=1 busy=0 pools=50/5/50/5 known=110 rotations=0 manager=110 error=''
pool=0 faction=alliance persistent=1 target=50 online=50 pending=0 saved=50
pool=1 faction=alliance persistent=0 target=5 online=5 pending=0 saved=5
pool=2 faction=horde persistent=1 target=50 online=50 pending=0 saved=50
pool=3 faction=horde persistent=0 target=5 online=5 pending=0 saved=5
PID247021; TCP8085 listening; no ADVENTURE_DISABLED, assertion or SQL collation error in this startup.
@@ -0,0 +1,16 @@
[
"Area access GUID 26: revision=1 map=0 area=1497 factionMask=2 minLevel=1 maxLevel=85 gap=5 knownLevel=1 preferFlight=0 nodeMask=2 allowed=0",
"Area access GUID 26: revision=1 map=0 area=5342 factionMask=1 minLevel=1 maxLevel=85 gap=5 knownLevel=1 preferFlight=0 nodeMask=1 allowed=1",
"Area access GUID 26: revision=1 map=0 area=5144 factionMask=0 minLevel=80 maxLevel=82 gap=5 knownLevel=1 preferFlight=0 nodeMask=2 allowed=0",
"Area access GUID 32: revision=1 map=369 area=2257 factionMask=1 minLevel=1 maxLevel=85 gap=5 knownLevel=1 preferFlight=0 nodeMask=1 allowed=0",
"Area access GUID 32: revision=1 map=0 area=4411 factionMask=1 minLevel=1 maxLevel=85 gap=5 knownLevel=1 preferFlight=0 nodeMask=1 allowed=0",
"Area access GUID 32: revision=1 map=0 area=1519 factionMask=1 minLevel=1 maxLevel=85 gap=5 knownLevel=1 preferFlight=0 nodeMask=3 allowed=0",
"Area access GUID 26: revision=1 map=530 area=3703 factionMask=3 minLevel=60 maxLevel=85 gap=5 knownLevel=1 preferFlight=1 nodeMask=3 allowed=1",
"Area access GUID 32: revision=1 map=530 area=3703 factionMask=3 minLevel=60 maxLevel=85 gap=5 knownLevel=1 preferFlight=1 nodeMask=3 allowed=1",
"Area access GUID 26: revision=1 map=571 area=4564 factionMask=3 minLevel=68 maxLevel=85 gap=5 knownLevel=1 preferFlight=1 nodeMask=3 allowed=0",
"Adventure catalogs reloaded.",
"Area access GUID 26: revision=2 map=0 area=5342 factionMask=1 minLevel=1 maxLevel=85 gap=5 knownLevel=1 preferFlight=0 nodeMask=0 allowed=0",
"Area access GUID 26: revision=3 map=0 area=5342 factionMask=1 minLevel=1 maxLevel=85 gap=5 knownLevel=1 preferFlight=0 nodeMask=1 allowed=1",
"Adventure catalog reload failed; check migration.",
"Area access GUID 26: revision=3 map=0 area=5342 factionMask=1 minLevel=1 maxLevel=85 gap=5 knownLevel=1 preferFlight=0 nodeMask=1 allowed=1"
]
@@ -0,0 +1,7 @@
{
"online_generated_bots": 110,
"checked_day_slots": 2640,
"empty_locations": 0,
"positions_without_declared_area": 298,
"violations": []
}
@@ -0,0 +1,29 @@
test_adventure_area_policy.py
Area inheritance, faction intersection, level limits, flight overrides and invalid data passed.
test_adventure_area_segment.py
Segment geography cache, faction isolation, reload permissions, lazy completion and terrain swaps passed.
test_adventure_behavior_policy.py
24-hour generation, shared intents with changing destinations, broad location classification and repetition penalties passed.
test_adventure_day_persistence.py
Production day planner: all 24 TINYINT slots restored across logins, incomplete/old-day replacement, full transaction and curiosity/level weighting passed
test_adventure_intent_state.py
Production intent arrival, failed/partial travel, deadlines and safe schedule handover passed.
test_graph_probe_cache.py
Graph probe cache: exact directed/map/instance keys, successful geometry only, invalidation and bounded storage passed
test_free_flight_planner.py
ground planner regressions and dynamic flight/node/location/virtual-exit integration passed
test_flight_policy.py
Flight native eligibility, license/profile/zone policy, RP costs and fail-safe return decisions passed.
test_adventure_group_plan.py
Production group plans: leader meeting/goal/deadline inheritance, untouched personal day, manual preparation and instance-state guards passed.
Production group travel: distinct slots, phase169 cliff safety, width, mounts, flight/kick landing, taxi grace, portal queue, bounded separation and recorded-road validation passed
ground planner regressions and dynamic flight/node/location/virtual-exit integration passed
@@ -0,0 +1,88 @@
# Gebietskatalog: technische Abnahme vom 29.10.2026
Branch `feature/clientless-player-core`, Basiscommit `0173a434f4`, Änderungen
noch nicht committet. Ausschließlich dedizierter Testserver und dessen Datenbank.
## Implementierung
- Gebietskatalog und Vorfahren: Fraktionsschnittmenge, Mindestlevel mit
konfigurierbarer Toleranz, ererbte Flugpräferenz; unbekannte Freiland-Levelbereiche
unter Stufe85 gesperrt. Keine obere Sperre für Heimkehrer über dem Gebietslevel.
- Tagesplanung prüft Metadaten und native Gebietsauflösung der Zielkoordinaten.
Beim Laden/Reload nur illegale Ziele ersetzen; Intents/Stunden bleiben bestehen.
Die neuen Levelbereiche ersetzen die alte Tabelle als Laufzeitquelle.
- Nodefreigaben für sämtliche Nodearten, automatische Flugmeisterzuordnung aus
nativen NPC-Fraktionsvorlagen einschließlich Spawn-NPCflag-Overrides. Neutrale
Meister bleiben beidseitig erreichbar; ungeklärte Zuordnungen werden gesperrt.
- TravelGraph, virtuelle Brücken/Ein-/Ausstiege, tatsächliche MMAP-/aufgezeichnete
Bodenwege, Flugtaxiabschnitte und freie Flüge berücksichtigen Zugangsregeln.
Tiefenbahn und Sturmwind–Rut'theran-Schiff explizit Allianz. Hauptstadtportale
prüfen ihr Zielgebiet, einschließlich direkter Portalfolge bei Spielergruppen.
- `clientless adventure reload` übernimmt Regeln ohne Build/Installation/Restart.
Ein ungültiger Gebietssnapshot ersetzt den bisherigen nicht.
- Geometrieproben werden zwischen Bots wiederverwendet, inklusive nativer
Terrain-Swaps. Berechtigungen bleiben von Fraktion/Level/aktuellem Katalog
abhängig. Die Fluggraphsuche verwirft vor Terrainproben mathematisch sicher
Verbindungen, die eine schon gefundene Route nicht verbessern können.
## Nachweise
Build mit unveränderter Debug-CMake-Konfiguration erfolgreich. Letztes Buildlog
`/tmp/vcore-area-build-verified.log`; Installation jeweils erst nach beendetem
Worldserver. Zehn Testprogramme bestanden (siehe `tests.log`), darunter echte
Produktionsfunktionen für Planwiederherstellung, verbotene virtuelle Routen trotz
Geometriecache, Segmentcache/Fraktionswechsel/Reload, Flugpolitik und Gruppenreise.
`live-access.json` dokumentiert native Serverdiagnosen:
- Arthoran: Unterstadt verboten, Eisenschmiede erlaubt, Vashj'ir verboten.
- Aldren: Tiefenbahn und Allianzschiff verboten.
- Neutraler Portalnode nach Sturmwind: nodeMask3, dennoch Horde verboten.
- Neutraler Shattrath-Flugknoten: beide Fraktionen erlaubt.
- Dalaran: Arthoran mit Stufe60 wegen Mindestlevel68/Toleranz5 ausgeschlossen.
- Taxi6 im laufenden Betrieb gesperrt, per Reload wirksam, Originalwert wieder
hergestellt und erneut erlaubt. Kein Build/Restart zwischen diesen Schritten.
- Absichtlich ungültige Flugpräferenz2: Reload abgewiesen, gültiger Snapshot
weiter verwendet; DB-Originalwert anschließend wiederhergestellt.
`plans-110.json`: Alle110 Bots geladen, 2640 persistierte Tagesplanblöcke geprüft,
keine leeren Ziele und keine Verstöße in den hinterlegten Gebietszuordnungen.
298Slots hatten keine explizite Gebiets-ID; diese Zahl umfasst Mehrfachnutzung
derselben Location. Ihre Koordinaten prüft der Produktionsplaner nativ, sie sind
nicht Teil der zusätzlichen Metadatenprüfung dieses SQL-Audits. Instanzeingänge
können als Metadatum die Instanz-Area führen, obwohl ihr tatsächlicher Worldpoint
außerhalb liegt; Kartentypen sind deshalb im Audit berücksichtigt.
## Grenzen und aufgetretene Probleme
Keine visuelle Gameplay-Abnahme. Wegpunkte werden mit höchstens40Yards Abstand
geprüft, nicht jeder mathematische Punkt einer Gebietsgrenze. Bereits laufende
native Flüge/Transporte werden bei Reload nicht gewaltsam abgebrochen. Bereits
gestrandete Bots werden nicht teleportiert. Die früher beobachteten Taxi-Hänger
und Todesschleifen sind damit nicht als generell behoben nachgewiesen.
141der455 aktiven Taxinodes konnten keinem benutzbaren statischen Flugmeister
zugeordnet werden und bleiben zunächst geschlossen;314 wurden zugeordnet.
Explizite NPC-Spawn-Bindungen sind über die Nodezugangstabelle möglich.
Ein anfänglicher SQL-Kollationskonflikt wurde durch die zur bestehenden
Nodetabelle passende `utf8mb4_unicode_ci`-Kollation behoben. In einem frühen
Testshutdown mit zuvor deaktivierten Botkatalogen erschien ein `GetMap`-Assert
nach `Halting process`; bei den nachfolgenden Shutdowns nicht reproduziert.
Rohlog dafür: `/tmp/vcore-area-start-20261029.log`. Kein solcher Assert während
des anschließenden Laufs mit110Bots beobachtet.
Kalte und große Routenprüfungen verursachen im Debug-Build weiterhin einzelne
mehrsekündige Pausen. Die Caches und Kostenuntergrenze begrenzen Zusatzarbeit,
ersetzen aber keine gesonderte weitere Performancearbeit. Bekannte fehlende
Mapdateien719/736 und Worlddatenfehler bleiben unabhängig davon vorhanden.
## Letzter installierter Stand
Nach dem abschließenden Gruppenportal-Guard und der nativen NPCflag-Override-
Korrektur erneut gebaut und installiert. Frischer Start in
`/tmp/vcore-area-start-verified-20261029.log`, PID247021. Ready-Meldung, Prozess,
Port8085 und native Population110/0pending/errorleer geprüft. Alle vier Pools
50/5/50/5 vollständig online. Erneuter Audit2640Slots ohne leere Ziele oder
Metadatenverstöße. Frische Zugriffsproben siehe `final-server-smoke.log`.
Keine ADVENTURE_DISABLED-, Assertion- oder SQL-Kollationsmeldung in diesem Start.
@@ -0,0 +1,13 @@
gameobject_spawn_id gameobject_entry spell_id id enabled from_node_key to_node_key allowed_factions
200624 207692 94565 1798 1 portal_go_200624_source portal_go_200624_target 1
200625 207693 84515 1799 1 portal_go_200625_source portal_go_200625_target 1
200626 207695 94564 1800 1 portal_go_200626_source portal_go_200626_target 1
200627 207694 85545 1801 1 portal_go_200627_source portal_go_200627_target 1
211257 207690 90244 1808 1 portal_go_211257_source portal_go_211257_target 2
211258 207689 84513 1803 1 portal_go_211258_source portal_go_211258_target 2
211259 207687 94564 1804 1 portal_go_211259_source portal_go_211259_target 2
211260 207686 82621 1805 1 portal_go_211260_source portal_go_211260_target 2
211264 206595 88341 1806 1 portal_go_211264_source portal_go_211264_target 2
219028 207688 94565 1807 1 portal_go_219028_source portal_go_219028_target 2
220365 206594 88339 1802 1 portal_go_220365_source portal_go_220365_target 1
220366 207691 90245 1809 1 portal_go_220366_source portal_go_220366_target 1
1 gameobject_spawn_id gameobject_entry spell_id id enabled from_node_key to_node_key allowed_factions
2 200624 207692 94565 1798 1 portal_go_200624_source portal_go_200624_target 1
3 200625 207693 84515 1799 1 portal_go_200625_source portal_go_200625_target 1
4 200626 207695 94564 1800 1 portal_go_200626_source portal_go_200626_target 1
5 200627 207694 85545 1801 1 portal_go_200627_source portal_go_200627_target 1
6 211257 207690 90244 1808 1 portal_go_211257_source portal_go_211257_target 2
7 211258 207689 84513 1803 1 portal_go_211258_source portal_go_211258_target 2
8 211259 207687 94564 1804 1 portal_go_211259_source portal_go_211259_target 2
9 211260 207686 82621 1805 1 portal_go_211260_source portal_go_211260_target 2
10 211264 206595 88341 1806 1 portal_go_211264_source portal_go_211264_target 2
11 219028 207688 94565 1807 1 portal_go_219028_source portal_go_219028_target 2
12 220365 206594 88339 1802 1 portal_go_220365_source portal_go_220365_target 1
13 220366 207691 90245 1809 1 portal_go_220366_source portal_go_220366_target 1
@@ -0,0 +1,20 @@
Native portal click sent: bot=35 spawn=200624 entry=207692. Check teleport completion and cast diagnostics.
Native portal click sent: bot=35 spawn=200625 entry=207693. Check teleport completion and cast diagnostics.
[?2004hTC>Native portal click sent: bot=35 spawn=200626 entry=207695. Check teleport completion and cast diagnostics.
Native portal click sent: bot=35 spawn=200627 entry=207694. Check teleport completion and cast diagnostics.
[?2004hTC>Native portal click sent: bot=35 spawn=220365 entry=206594. Check teleport completion and cast diagnostics.
Native portal click sent: bot=35 spawn=220366 entry=207691. Check teleport completion and cast diagnostics.
Native portal click sent: bot=36 spawn=219028 entry=207688. Check teleport completion and cast diagnostics.
Native portal click sent: bot=36 spawn=211258 entry=207689. Check teleport completion and cast diagnostics.
Native portal click sent: bot=36 spawn=211259 entry=207687. Check teleport completion and cast diagnostics.
[?2004hTC>Native portal click sent: bot=36 spawn=211260 entry=207686. Check teleport completion and cast diagnostics.
TC> Area access GUID 35: revision=1 map=0 area=5057 factionMask=0 minLevel=80 maxLevel=82 gap=5 knownLevel=1 preferFlight=0 nodeMask=-1 allowed=0
TC> Area access GUID 35: revision=1 map=0 area=5057 factionMask=0 minLevel=80 maxLevel=82 gap=5 knownLevel=1 preferFlight=0 nodeMask=-1 allowed=0
Native portal click sent: bot=36 spawn=211264 entry=206595. Check teleport completion and cast diagnostics.
Native portal click sent: bot=36 spawn=211257 entry=207690. Check teleport completion and cast diagnostics.
TC> Action GUID 35: state=Failed action='travel_to_node' target='' targetGuid=0 entry=0 detail='destination node denied by area/node catalog'
[?2004hTC>Native portal click sent: bot=36 spawn=211264 entry=206595. Check teleport completion and cast diagnostics.
[?2004hTC>Native portal click sent: bot=36 spawn=211264 entry=206595. Check teleport completion and cast diagnostics.
Area access GUID 36: revision=1 map=0 area=5057 factionMask=0 minLevel=80 maxLevel=82 gap=5 knownLevel=1 preferFlight=0 nodeMask=3 allowed=0
TC> Area access GUID 36: revision=1 map=0 area=5057 factionMask=0 minLevel=80 maxLevel=82 gap=5 knownLevel=1 preferFlight=0 nodeMask=3 allowed=0
Action GUID 36: state=Failed action='travel_to_node' target='' targetGuid=0 entry=0 detail='destination node denied by area/node catalog'
Loaded 100 of 759 files, more files were not shown because too many files have changed in this diff. Show more