Files
josh b853b3ae06 PlayerbotV2 module with core-hooks patches and full SQL migrations
Shipped patches:
  playerbotv2_core_hooks.patch    — stock TrinityCore master
  playerbotv2_core_hooks.thordekk.patch — ThordekkCore

SQL applied at module init by PlayerbotMigrationMgr:
  sql/playerbot_v2/0000_playerbot_shared_bootstrap.sql  — creates playerbot
    shared DB + tables (handcrafted_road, playerbots_names,
    playerbot_dungeon_routes, playerbot_nav_links,
    playerbot_v2_world_metadata)
  sql/playerbot_v2/0001..0016*.sql  — character DB tables

SQL auto-applied by TC DBUpdater:
  sql/updates/auth/master/
  sql/updates/characters/master/

Manual fallback:
  sql/playerbot/playerbot_bootstrap.sql

Static data (manual):
  src/modules/PlayerbotV2/sql/shared/
  src/modules/PlayerbotV2/sql/world/

Includes: Log.h, SpellAuras.h (PlayerbotAPI), Position.h (PlayerbotHooks)
2026-08-11 16:42:02 +10:00

85 lines
3.8 KiB
SQL

-- Migration: 0001_init
-- Date: 2026-05-01
-- Purpose: Bootstrap V2 schema. Creates the version table and the minimal
-- set of bot-specific tables documented in v2/SCHEMA.md.
-- Reverts: yes (all DROP TABLE).
-- Per v2/SCHEMA.md: bot character data lives in TrinityCore's `characters`
-- table. V2 owns ONLY what TrinityCore doesn't already store. No mirror
-- tables are permitted.
CREATE TABLE IF NOT EXISTS playerbot_v2_schema_version (
version INT UNSIGNED NOT NULL PRIMARY KEY,
applied_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
sha256 CHAR(64) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS playerbot_v2_account (
account_id INT UNSIGNED NOT NULL PRIMARY KEY,
pseudo_account_idx INT UNSIGNED NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
last_used_at DATETIME NULL,
KEY idx_pseudo (pseudo_account_idx)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS playerbot_v2_character (
character_guid_low BIGINT UNSIGNED NOT NULL PRIMARY KEY,
spawned_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
last_active_at DATETIME NULL,
rng_seed BIGINT UNSIGNED NOT NULL,
spawn_state TINYINT UNSIGNED NOT NULL,
KEY idx_active (last_active_at),
KEY idx_state (spawn_state)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS playerbot_v2_personality (
character_guid_low BIGINT UNSIGNED NOT NULL PRIMARY KEY,
skill_tier TINYINT UNSIGNED NOT NULL,
verbosity TINYINT UNSIGNED NOT NULL,
aggression TINYINT UNSIGNED NOT NULL,
risk_tolerance TINYINT UNSIGNED NOT NULL,
politeness TINYINT UNSIGNED NOT NULL,
loyalty TINYINT UNSIGNED NOT NULL,
activity_pref TINYINT UNSIGNED NOT NULL,
response_delay_ms SMALLINT UNSIGNED NOT NULL,
response_jitter_ms SMALLINT UNSIGNED NOT NULL,
mistake_rate TINYINT UNSIGNED NOT NULL,
CONSTRAINT fk_pers_char FOREIGN KEY (character_guid_low)
REFERENCES playerbot_v2_character (character_guid_low)
ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS playerbot_v2_preferences (
character_guid_low BIGINT UNSIGNED NOT NULL PRIMARY KEY,
preferred_neighborhood INT UNSIGNED NULL,
preferred_house_template INT UNSIGNED NULL,
opt_in_dungeons BOOLEAN NOT NULL DEFAULT TRUE,
opt_in_raids BOOLEAN NOT NULL DEFAULT TRUE,
opt_in_pvp BOOLEAN NOT NULL DEFAULT TRUE,
opt_in_arena BOOLEAN NOT NULL DEFAULT TRUE,
opt_in_delves BOOLEAN NOT NULL DEFAULT TRUE,
opt_in_professions BOOLEAN NOT NULL DEFAULT TRUE,
opt_in_housing BOOLEAN NOT NULL DEFAULT TRUE,
accept_player_invites TINYINT UNSIGNED NOT NULL DEFAULT 1,
follow_distance_yd FLOAT NOT NULL DEFAULT 5.0,
CONSTRAINT fk_prefs_char FOREIGN KEY (character_guid_low)
REFERENCES playerbot_v2_character (character_guid_low)
ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS playerbot_v2_population_target (
target_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
realm_id INT UNSIGNED NOT NULL,
effective_at DATETIME NOT NULL,
total_target INT UNSIGNED NOT NULL,
floor INT UNSIGNED NOT NULL,
ceiling INT UNSIGNED NOT NULL,
horde_pct TINYINT UNSIGNED NOT NULL,
payload_json TEXT NOT NULL,
KEY idx_realm_effective (realm_id, effective_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Record this migration as applied.
INSERT INTO playerbot_v2_schema_version (version, sha256)
VALUES (1, 'pending-fill-at-release-time-with-actual-sha256-of-this-file');