Skip to content

Commit 303aac1

Browse files
authored
Merge pull request #52 from LannyE/Resolve-Conflicts-2-15-26
Resolve conflicts 2-15-26
2 parents 4425ff3 + 709fe51 commit 303aac1

File tree

83 files changed

+11611
-11237
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+11611
-11237
lines changed

.github/agents/README.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# GitHub Agents Configuration
2+
3+
This directory contains configuration files for AI-powered code review and development agents used in the AzerothCore project.
4+
5+
## Overview
6+
7+
Agent configuration files provide context-specific instructions to AI tools (like GitHub Copilot, Claude, etc.) when they interact with this repository. These configurations ensure that automated reviews and code suggestions follow project-specific standards and best practices.
8+
9+
## Available Agents
10+
11+
### PR Reviewer (`pr-reviewer.md`)
12+
13+
The PR Reviewer agent is configured to review pull requests with deep understanding of AzerothCore's:
14+
- Architecture patterns (two-server model, scripting system, database structure)
15+
- Code style requirements (indentation, line length, formatting)
16+
- C++ coding conventions and naming standards
17+
- SQL query formatting and database design standards
18+
- Commit message conventions (Conventional Commits format)
19+
- Testing and validation requirements
20+
- Security and quality standards
21+
22+
**Key Feature**: This agent always references `/CLAUDE.md`, the C++ Code Standards wiki, and the SQL Standards wiki before reviewing any PR.
23+
24+
## How It Works
25+
26+
When an AI tool reviews a PR in this repository:
27+
28+
1. The tool reads the appropriate agent configuration from this directory
29+
2. The agent configuration instructs it to read `/CLAUDE.md` for full project context
30+
3. For C++ changes, the agent also references the [C++ Code Standards wiki](https://github.com/azerothcore/wiki/blob/master/docs/cpp-code-standards.md)
31+
4. For SQL changes, the agent also references the [SQL Standards wiki](https://github.com/azerothcore/wiki/blob/master/docs/sql-standards.md)
32+
5. The agent applies project-specific rules during review
33+
6. Feedback is provided following the project's conventions and standards
34+
35+
## For Contributors
36+
37+
If you're using AI tools to assist with contributions:
38+
39+
1. Familiarize yourself with `/CLAUDE.md` - it contains essential project knowledge
40+
2. Review the [C++ Code Standards](https://github.com/azerothcore/wiki/blob/master/docs/cpp-code-standards.md) for C++ contributions
41+
3. Review the [SQL Standards](https://github.com/azerothcore/wiki/blob/master/docs/sql-standards.md) for database contributions
42+
4. The AI agents will help ensure your changes follow project standards
43+
5. Agent feedback should be treated as helpful suggestions that align with maintainer expectations
44+
45+
## For Maintainers
46+
47+
To update agent configurations:
48+
49+
1. Edit the relevant `.md` file in this directory
50+
2. Ensure any changes align with documentation in `/CLAUDE.md` and the wiki standards
51+
3. Test the updated configuration with a sample PR review
52+
4. Commit changes following the project's commit message format
53+
54+
## References
55+
56+
- Project guidelines: `/CLAUDE.md`
57+
- C++ standards: [C++ Code Standards](https://github.com/azerothcore/wiki/blob/master/docs/cpp-code-standards.md)
58+
- SQL standards: [SQL Standards](https://github.com/azerothcore/wiki/blob/master/docs/sql-standards.md)
59+
- PR template: `/pull_request_template.md`
60+
- Contribution guide: `/.github/CONTRIBUTING.md`

.github/agents/pr-reviewer.md

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
# PR Reviewer Agent
2+
3+
You are an expert code reviewer for the AzerothCore project. When reviewing pull requests, you must follow the project-specific guidelines and architecture patterns defined in the repository.
4+
5+
## Required Reading
6+
7+
Before reviewing any PR, you MUST read and follow the instructions in:
8+
- `/CLAUDE.md` - Contains comprehensive project architecture, coding standards, build instructions, and PR requirements
9+
- [C++ Code Standards](https://github.com/azerothcore/wiki/blob/master/docs/cpp-code-standards.md) - Detailed C++ coding conventions and style guide
10+
- [SQL Standards](https://github.com/azerothcore/wiki/blob/master/docs/sql-standards.md) - SQL query formatting and database standards
11+
12+
## Key Review Focus Areas
13+
14+
Based on CLAUDE.md, always verify:
15+
16+
### 1. Commit Message Format
17+
- Uses Conventional Commits: `Type(Scope/Subscope): Short description`
18+
- Types: feat, fix, refactor, style, docs, test, chore
19+
- Scopes: Core (C++ changes), DB (SQL changes)
20+
- Max 50 characters for description
21+
- Examples: `fix(Core/Spells): Fix damage calculation for Fireball`, `fix(DB/SAI): Missing spell to NPC Hogger`
22+
23+
### 2. Code Style
24+
- 4-space indentation for C++ (no tabs)
25+
- 2-space indentation for JSON, YAML, shell scripts
26+
- UTF-8 encoding, LF line endings
27+
- Max 80 character line length
28+
- No braces around single-line statements
29+
- Format variables in output using {} placeholders instead of printf-style format specifiers like %u
30+
31+
### 3. C++ Specific Standards
32+
**From C++ Code Standards wiki - verify:**
33+
- Indentation: 4 spaces, never tabs
34+
- Comments: Above or beside code, avoid external hyperlinks
35+
- No trailing whitespace or extra spaces within brackets
36+
- Brackets: Single-line statements don't need braces; multi-line blocks on new line
37+
- Use constants (enum/constexpr) instead of magic numbers
38+
- Switch statements must have default case
39+
- Prefer enum class over plain enum
40+
- Standard prefixes: SPELL_, NPC_, ITEM_, GO_, QUEST_, SAY_, EMOTE_, MODEL_, EVENT_, DATA_, ACHIEV_
41+
- Naming conventions:
42+
- Public/protected: `SomeGuid`, `ShadowBoltTimer` (UpperCamelCase)
43+
- Private members: `_someGuid`, `_count` (underscore prefix, lowerCamelCase)
44+
- Methods: `DoSomething(uint32 someNumber)` (UpperCamelCase, params lowerCamelCase)
45+
- Always use 'f' suffix for float literals: `234.3456f`
46+
- WorldObjects: `GameObject* go;`, `Creature* creature;` (never multiple pointer declarations)
47+
- const placement: after type (`Player const* player`)
48+
- static placement: before type (`static uint32 someVar`)
49+
- All headers must have header guards
50+
51+
### 4. SQL Specific Standards
52+
**From SQL Standards wiki - verify:**
53+
- Always use backticks around table and column names
54+
- Single quotes for strings, no quotes for numeric values
55+
- DELETE before INSERT (never use REPLACE)
56+
- DELETE/UPDATE must include at least primary key in WHERE clause
57+
- Prefer IN clause for multiple values: `WHERE entry IN (1, 2, 3)`
58+
- Use variables for repeated entries: `SET @ENTRY := 7727;`
59+
- Compact queries: bundle multiple rows in single INSERT
60+
- For flags: use bitwise operations (`|` to add, `&~` to remove), never override
61+
- Table naming: snake_case (`creature_loot_template`)
62+
- Column naming: UpperCamelCase (`PositionX`, `DisplayID`)
63+
- Acronyms in uppercase: `ItemGUID`, `DisplayID`, `RequiredNPCOrGOCount`
64+
- No integer width specification: `INT` not `INT(11)`
65+
- Never use MEDIUMINT (use INT instead for consistency)
66+
- Float/Double: use CHECK constraints instead of UNSIGNED
67+
- Charset: utf8mb4, Collation: utf8mb4_unicode_ci (utf8mb4_bin for names)
68+
- Engine: InnoDB, Row Format: DEFAULT
69+
70+
### 5. Architecture Compliance
71+
- Changes to game logic should be in `src/server/game/`
72+
- Scripts should follow the registration pattern (AddSC_*() functions)
73+
- Spell scripts organized by class: `spell_dk.cpp`, `spell_mage.cpp`, etc.
74+
- Database changes go in correct subdirectories:
75+
- `data/sql/updates/pending_*/db_auth/` for auth database
76+
- `data/sql/updates/pending_*/db_characters/` for characters database
77+
- `data/sql/updates/pending_*/db_world/` for world database
78+
79+
### 6. PR Requirements
80+
- AI tool usage must be disclosed in PRs
81+
- In-game testing expected and documented
82+
- Changes to generic code require regression testing of related systems
83+
- No breaking changes to existing functionality without strong justification
84+
85+
### 7. Testing Requirements
86+
- Unit tests should be updated when logic changes (Google Test framework)
87+
- Build must succeed with `-Werror` (warnings treated as errors)
88+
- Changes should compile on all platforms (Linux, Windows, macOS)
89+
90+
### 8. Security & Quality
91+
- No hardcoded credentials or sensitive data
92+
- Proper error handling and bounds checking
93+
- No memory leaks or buffer overflows
94+
- SQL changes should be properly escaped/parameterized
95+
96+
## Review Process
97+
98+
1. Read CLAUDE.md to understand project context
99+
2. Review C++ Code Standards wiki for C++ changes
100+
3. Review SQL Standards wiki for database changes
101+
4. Check commit message format
102+
5. Verify code style compliance (general and language-specific)
103+
6. Ensure architectural patterns are followed
104+
7. Check for proper testing and documentation
105+
8. Validate that generic changes don't introduce regressions
106+
9. Confirm AI disclosure if applicable
107+
108+
## Feedback Style
109+
110+
- Be constructive and educational
111+
- Reference specific sections of CLAUDE.md, C++ Code Standards, or SQL Standards when applicable
112+
- Suggest specific fixes with code examples when possible
113+
- Highlight both issues and good practices
114+
- For C++ issues, cite specific rule from C++ Code Standards wiki
115+
- For SQL issues, cite specific rule from SQL Standards wiki

CLAUDE.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ AzerothCore is an open-source MMORPG server emulator for World of Warcraft patch
1010

1111
### Configure and build (out-of-source build required)
1212

13+
- Skip building unless explicitly requested.
14+
1315
```bash
1416
# Create build directory and configure
1517
mkdir -p build && cd build
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
-- DB update 2026_02_13_03 -> 2026_02_15_00
2+
DELETE FROM `waypoint_data` WHERE `id` IN (304490, 304520, 304510);
3+
4+
-- CREATURE_FLAG_EXTRA_HARD_RESET
5+
UPDATE `creature_template` SET `flags_extra` = `flags_extra` | 0x80000000 WHERE (`entry` = 28860);
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
-- DB update 2026_02_15_00 -> 2026_02_15_01
2+
-- Remove unused ScriptName from Pure Saronite Deposit
3+
UPDATE `gameobject_template` SET `ScriptName` = '' WHERE `entry` = 195036;
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
-- DB update 2026_02_15_01 -> 2026_02_15_02
2+
--
3+
DELETE FROM `acore_string` WHERE `entry` IN (5089, 5090, 5091, 5092, 5093, 5094, 5095, 5096, 5097, 5098, 5099, 5100, 5101, 5102, 5103, 5104, 5105, 5106, 5107, 5108, 5109, 5110);
4+
INSERT INTO `acore_string` (`entry`, `content_default`) VALUES
5+
(5089, 'Quest {} cannot be taken. Reasons:'),
6+
(5090, ' - Quest is disabled.'),
7+
(5091, ' - Quest has already been taken or completed.'),
8+
(5092, ' - Class requirement not met.'),
9+
(5093, ' - Race requirement not met.'),
10+
(5094, ' - Player level too low (required: {}).'),
11+
(5095, ' - Player level too high (max: {}).'),
12+
(5096, ' - Skill requirement not met.'),
13+
(5097, ' - Reputation requirement not met.'),
14+
(5098, ' - Previous quest in chain not completed.'),
15+
(5099, ' - Already on a timed quest.'),
16+
(5100, ' - Exclusive group quest conflict.'),
17+
(5101, ' - Next quest in chain already started.'),
18+
(5102, ' - Previous chain quest still active.'),
19+
(5103, ' - Breadcrumb quest conflict.'),
20+
(5104, ' - Daily quest not available today.'),
21+
(5105, ' - Weekly quest already completed this week.'),
22+
(5106, ' - Monthly quest already completed this month.'),
23+
(5107, ' - Seasonal quest already completed this season.'),
24+
(5108, ' - Condition requirements not met:'),
25+
(5109, ' - Quest log is full.'),
26+
(5110, ' - Condition not met: type {} value1: {} value2: {} value3: {}');
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
-- DB update 2026_02_15_02 -> 2026_02_15_03
2+
3+
-- Move the text in its own group.
4+
UPDATE `creature_text` SET `GroupID` = 10, `ID` = 0 WHERE (`CreatureID` = 28860) AND (`GroupID` = 7) AND (`ID` = 3);
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
-- DB update 2026_02_15_03 -> 2026_02_15_04
2+
-- DB update 2026_02_13_00 >> 2026_02_13_01
3+
-- Add gameobject_summon_groups table
4+
DROP TABLE IF EXISTS `gameobject_summon_groups`;
5+
CREATE TABLE IF NOT EXISTS `gameobject_summon_groups` (
6+
`summonerId` int unsigned NOT NULL DEFAULT '0',
7+
`summonerType` tinyint unsigned NOT NULL DEFAULT '0',
8+
`groupId` tinyint unsigned NOT NULL DEFAULT '0',
9+
`entry` int unsigned NOT NULL DEFAULT '0',
10+
`position_x` float NOT NULL DEFAULT '0',
11+
`position_y` float NOT NULL DEFAULT '0',
12+
`position_z` float NOT NULL DEFAULT '0',
13+
`orientation` float NOT NULL DEFAULT '0',
14+
`rotation0` float NOT NULL DEFAULT '0',
15+
`rotation1` float NOT NULL DEFAULT '0',
16+
`rotation2` float NOT NULL DEFAULT '0',
17+
`rotation3` float NOT NULL DEFAULT '0',
18+
`respawnTime` int unsigned NOT NULL DEFAULT '120',
19+
`Comment` varchar(255) CHARACTER SET `utf8mb4` COLLATE `utf8mb4_unicode_ci` NOT NULL DEFAULT ''
20+
) ENGINE=InnoDB DEFAULT CHARSET=`utf8mb4` COLLATE=`utf8mb4_unicode_ci`;
21+
22+
-- Quest 619 "Enticing Negolash" - Gameobject spawns on quest turn-in at Ruined Lifeboat (GO 2289)
23+
-- Sniff data: Barbequed Buzzard Wings (2332), Stranglevine Wine (2333), Baked Bread (2562)
24+
DELETE FROM `gameobject_summon_groups` WHERE `summonerId` = 2289 AND `summonerType` = 1;
25+
INSERT INTO `gameobject_summon_groups` (`summonerId`, `summonerType`, `groupId`, `entry`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `respawnTime`, `Comment`) VALUES
26+
(2289, 1, 0, 2332, -14652.3798828125, 146.5117950439453125, 3.501179933547973632, 0.349065244197845458, 0, 0, 0.173647880554199218, 0.984807789325714111, 120, 'Enticing Negolash - Barbequed Buzzard Wings'),
27+
(2289, 1, 0, 2332, -14652.9423828125, 146.867401123046875, 2.506906986236572265, 2.949595451354980468, 0, 0, 0.995395660400390625, 0.095851235091686248, 120, 'Enticing Negolash - Barbequed Buzzard Wings'),
28+
(2289, 1, 0, 2332, -14653.017578125, 146.524169921875, 2.355585098266601562, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 120, 'Enticing Negolash - Barbequed Buzzard Wings'),
29+
(2289, 1, 0, 2332, -14653.044921875, 145.137908935546875, 2.653269052505493164, 5.84685373306274414, 0, 0, -0.21643924713134765, 0.976296067237854003, 120, 'Enticing Negolash - Barbequed Buzzard Wings'),
30+
(2289, 1, 0, 2332, -14654.0361328125, 147.3063201904296875, 2.467313051223754882, 0.942476630210876464, 0, 0, 0.453989982604980468, 0.891006767749786376, 120, 'Enticing Negolash - Barbequed Buzzard Wings'),
31+
(2289, 1, 0, 2332, -14654.45703125, 147.324005126953125, 2.456363916397094726, 1.815141916275024414, 0, 0, 0.788010597229003906, 0.615661680698394775, 120, 'Enticing Negolash - Barbequed Buzzard Wings'),
32+
(2289, 1, 0, 2332, -14654.703125, 146.1419219970703125, 2.089060068130493164, 2.373644113540649414, 0, 0, 0.927183151245117187, 0.37460830807685852, 120, 'Enticing Negolash - Barbequed Buzzard Wings'),
33+
(2289, 1, 0, 2332, -14654.87890625, 147.2779693603515625, 2.425240993499755859, 5.881760597229003906, 0, 0, -0.19936752319335937, 0.979924798011779785, 120, 'Enticing Negolash - Barbequed Buzzard Wings'),
34+
(2289, 1, 0, 2332, -14655.1357421875, 146.6710968017578125, 2.230948925018310546, 2.652894020080566406, 0, 0, 0.970294952392578125, 0.241925001144409179, 120, 'Enticing Negolash - Barbequed Buzzard Wings'),
35+
(2289, 1, 0, 2332, -14655.2763671875, 147.80206298828125, 2.639719009399414062, 6.161012649536132812, 0, 0, -0.06104850769042968, 0.998134791851043701, 120, 'Enticing Negolash - Barbequed Buzzard Wings'),
36+
(2289, 1, 0, 2332, -14656.1884765625, 147.0958404541015625, 2.387770891189575195, 0.174532130360603332, 0, 0, 0.087155342102050781, 0.996194720268249511, 120, 'Enticing Negolash - Barbequed Buzzard Wings'),
37+
(2289, 1, 0, 2332, -14656.8330078125, 148.8932647705078125, 3.288661956787109375, 5.096362113952636718, 0, 0, -0.55919265747070312, 0.829037725925445556, 120, 'Enticing Negolash - Barbequed Buzzard Wings'),
38+
(2289, 1, 0, 2333, -14653.044921875, 145.3892364501953125, 2.85199904441833496, 4.852017402648925781, 0, 0, -0.65605831146240234, 0.754710197448730468, 120, 'Enticing Negolash - Stranglevine Wine'),
39+
(2289, 1, 0, 2333, -14655.728515625, 148.9776458740234375, 4.056398868560791015, 3.473210096359252929, 0, 0, -0.98628520965576171, 0.165049895644187927, 120, 'Enticing Negolash - Stranglevine Wine'),
40+
(2289, 1, 0, 2333, -14656.4482421875, 147.5946807861328125, 3.129076004028320312, 1.588248729705810546, 0, 0, 0.713250160217285156, 0.700909554958343505, 120, 'Enticing Negolash - Stranglevine Wine'),
41+
(2289, 1, 0, 2333, -14656.8408203125, 147.4337310791015625, 3.102070093154907226, 3.019413232803344726, 0, 0, 0.998134613037109375, 0.061051756143569946, 120, 'Enticing Negolash - Stranglevine Wine'),
42+
(2289, 1, 0, 2333, -14657.1513671875, 148.227569580078125, 2.886320114135742187, 1.535889506340026855, 0, 0, 0.694658279418945312, 0.719339847564697265, 120, 'Enticing Negolash - Stranglevine Wine'),
43+
(2289, 1, 0, 2562, -14652.4326171875, 145.7533721923828125, 3.254641056060791015, 2.932138919830322265, 0, 0, 0.994521141052246093, 0.104535527527332305, 120, 'Enticing Negolash - Baked Bread'),
44+
(2289, 1, 0, 2562, -14653.8486328125, 146.2042694091796875, 2.14631199836730957, 4.886923789978027343, 0, 0, -0.64278697967529296, 0.766044974327087402, 120, 'Enticing Negolash - Baked Bread'),
45+
(2289, 1, 0, 2562, -14656.138671875, 148.3673248291015625, 3.515635967254638671, 5.637413978576660156, 0, 0, -0.31730461120605468, 0.948323667049407958, 120, 'Enticing Negolash - Baked Bread');
46+
47+
-- SmartAI: Ruined Lifeboat (GO 2289) - On Quest 619 Reward - Summon Gameobject Group 0
48+
DELETE FROM `smart_scripts` WHERE `entryorguid` = 2289 AND `source_type` = 1 AND `id` = 1;
49+
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
50+
(2289, 1, 1, 0, 20, 0, 100, 0, 619, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ruined Lifeboat - On Quest ''Enticing Negolash'' Rewarded - Summon Gameobject Group 0');
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
-- DB update 2026_02_15_04 -> 2026_02_15_05
2+
--
3+
UPDATE `gossip_menu_option` SET `BoxCoded` = 1 WHERE `MenuID` = 6565 AND `OptionID` IN (0, 1, 2);
4+
UPDATE `gossip_menu_option` SET `BoxCoded` = 1 WHERE `MenuID` = 7034 AND `OptionID` = 0;
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
-- DB update 2026_02_15_05 -> 2026_02_15_06
2+
--
3+
DELETE FROM `item_loot_template` WHERE (`Entry` = 44663);
4+
INSERT INTO `item_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
5+
(44663, 33470, 0, 100, 0, 1, 0, 20, 20, 'Abandoned Adventurer\'s Satchel - Frostweave Cloth'),
6+
(44663, 1, 44663, 37.5, 0, 1, 1, 1, 1, 'Abandoned Adventurer\'s Satchel - One Crystallized Element'),
7+
(44663, 2, 44663, 12.5, 0, 1, 1, 2, 2, 'Abandoned Adventurer\'s Satchel - Two Crystallized Elements');
8+
9+
DELETE FROM `reference_loot_template` WHERE (`Entry` = 44663);
10+
INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
11+
(44663, 37700, 0, 0, 0, 1, 1, 3, 5, 'Abandoned Adventurer\'s Satchel - Crystallized Air'),
12+
(44663, 37701, 0, 0, 0, 1, 1, 3, 5, 'Abandoned Adventurer\'s Satchel - Crystallized Earth'),
13+
(44663, 37702, 0, 0, 0, 1, 1, 3, 5, 'Abandoned Adventurer\'s Satchel - Crystallized Fire'),
14+
(44663, 37703, 0, 0, 0, 1, 1, 3, 5, 'Abandoned Adventurer\'s Satchel - Crystallized Shadow'),
15+
(44663, 37704, 0, 0, 0, 1, 1, 3, 5, 'Abandoned Adventurer\'s Satchel - Crystallized Life'),
16+
(44663, 37705, 0, 0, 0, 1, 1, 3, 5, 'Abandoned Adventurer\'s Satchel - Crystallized Water');

0 commit comments

Comments
 (0)