Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
151 commits
Select commit Hold shift + click to select a range
d15a5b1
Fix fleeing NPC speed, training char season exclusion, stale leaderbo…
Sellafield May 16, 2026
33aa734
feat(seasons): add Phase 1 activity type enum values and display names
Sellafield May 16, 2026
d6e453c
feat(seasons): wire Prototyping, ReverseEngineering, Production activ…
Sellafield May 16, 2026
98e3098
feat(seasons): wire ArtifactFound activity hook (scanner and relic pa…
Sellafield May 16, 2026
6f68d8b
feat(seasons): wire EpEarned activity hook (activity boosts and passi…
Sellafield May 16, 2026
55684e6
feat(seasons): add Phase 2 activity type enum values and display names
Sellafield May 16, 2026
8229625
feat(seasons): wire DamageDone and DamageReceived activity hooks
Sellafield May 16, 2026
99471cb
feat(seasons): wire ArmorRestored activity hook (local and remote rep…
Sellafield May 16, 2026
c004fc2
feat(seasons): wire EnergyDrainDealt and EnergyDrainReceived activity…
Sellafield May 16, 2026
36c5ac8
feat(seasons): wire EnergyTransferDealt and EnergyTransferReceived ac…
Sellafield May 16, 2026
3a3f926
docs: mark IMPROVEMENT-005 done, add ISSUE-005 and ISSUE-006 to backlog
Sellafield May 16, 2026
21bb2ee
docs: add IMPROVEMENT-005 spec, plan, and CLAUDE.md update
Sellafield May 16, 2026
85b1fe4
perf(seasons): defer IsInTraining() check until after rate lookup in …
Sellafield May 16, 2026
22965f6
docs: add IMPROVEMENT-001 recurring seasons design spec
Sellafield May 16, 2026
afef266
docs: add IMPROVEMENT-001 recurring seasons implementation plan
Sellafield May 16, 2026
e9a1588
docs: add DB migration and schema docs for recurring seasons (IMPROVE…
Sellafield May 16, 2026
568289c
feat(seasons): extend Season model and existing repository reads for …
Sellafield May 16, 2026
6ef1fc4
feat(seasons): add GetPendingRecurringSeason and CloneSeasonForNextIt…
Sellafield May 16, 2026
ea48bbb
feat(seasons): auto-spawn next iteration on end and auto-activate pen…
Sellafield May 16, 2026
2f8209f
feat(seasons): extend Admin Tool models, repository reads, and SQL bu…
Sellafield May 16, 2026
bb31051
feat(seasons): add recurrence fields, validation, and script generati…
Sellafield May 16, 2026
2363cb4
feat(seasons): add recurring checkbox and gap field to season wizard …
Sellafield May 16, 2026
188be2f
feat(seasons): add recurrence section to season detail General tab
Sellafield May 16, 2026
a3e9665
feat(seasons): show recurrence indicator on season list cards
Sellafield May 16, 2026
947e69f
fix(seasons): guard against null RecurrenceGapDays in CloneSeasonForN…
Sellafield May 16, 2026
59f46b5
docs: track ISSUE-007 - recurring season detail view gap validation gap
Sellafield May 16, 2026
7d9ea90
docs: add game content guide and CLAUDE.md content creation rules
Sellafield May 16, 2026
df64d46
db: add is_daily/package_id to season_objectives, day_window PK to se…
Sellafield May 16, 2026
113efb6
feat(seasons): daily objectives — server model, repository, service
Sellafield May 16, 2026
7fda734
fix(seasons): parameterize packageId in AddObjective; document dateti…
Sellafield May 16, 2026
1502178
feat(admin-tool): daily objectives — objective row, changes, reposito…
Sellafield May 16, 2026
cf26a44
fix(seasons): capture dailyWindow once before objective loop; update …
Sellafield May 16, 2026
7d860d8
docs: spec and backlog for IMPROVEMENT-012 and IMPROVEMENT-016
Sellafield May 16, 2026
17b4a69
docs: implementation plan for IMPROVEMENT-012 tiers Queue Save
Sellafield May 16, 2026
0c8b941
feat(admin-tool): defer tier INSERT to Queue Save; add QueueSaveTierC…
Sellafield May 16, 2026
e3a19d6
feat(admin-tool): add Queue Save column to Tiers DataGrid
Sellafield May 16, 2026
f7ed990
docs: design spec for IMPROVEMENT-003 Item Designer
Sellafield May 16, 2026
721cdba
docs: implementation plan for IMPROVEMENT-003 Item Designer
Sellafield May 16, 2026
2b8eb1b
feat(admin-tool): add NewItem pick items and row models
Sellafield May 16, 2026
7461290
feat(admin-tool): add NewItemLookups, CloneExtendedData, NewItemRepos…
Sellafield May 16, 2026
27506de
feat(admin-tool): add IsMissingFromEnum to AggregateFieldInfo
Sellafield May 16, 2026
3dc266b
feat(admin-tool): add BasicPanelMode and BasicPanelViewModel
Sellafield May 16, 2026
a7b8116
feat(admin-tool): add Stats, PropertyModifiers, Production panel VMs
Sellafield May 16, 2026
7785973
feat(admin-tool): add Research and OptionsVisual panel VMs
Sellafield May 16, 2026
60870fd
feat(admin-tool): add ItemSqlBuilder and NewItemDialogViewModel stub
Sellafield May 16, 2026
0de1ddd
feat(admin-tool): implement NewItemDialogViewModel
Sellafield May 16, 2026
2727280
feat(admin-tool): implement NewItemDialogViewModel with clone load guard
Sellafield May 16, 2026
f422e16
feat(admin-tool): add NewItemDialog XAML and code-behind
Sellafield May 16, 2026
b33cf59
fix(admin-tool): correct DefinitionNameError visibility style in NewI…
Sellafield May 16, 2026
989f81a
feat(admin-tool): wire OpenNewItemDialogCommand into EntitiesViewMode…
Sellafield May 16, 2026
52e4a2a
docs: mark IMPROVEMENT-003 Item Designer as DONE
Sellafield May 16, 2026
109c9df
docs: add ISSUE-008 descriptiontoken strips def_ prefix incorrectly
Sellafield May 16, 2026
aaea845
docs: add ISSUE-009 New Item dialog ignores Apply mode
Sellafield May 16, 2026
f37b256
docs: add ISSUE-010 Stats new-stat value input rejects negative and d…
Sellafield May 16, 2026
dfd1d0b
docs: add ISSUE-011 New Item dialog broken when Entities tab never re…
Sellafield May 16, 2026
db95e08
fix: ISSUE-009 New Item dialog now respects Apply mode
Sellafield May 17, 2026
5ccfd0f
fix: ISSUE-011 New Item dialog auto-reloads entities when not yet loaded
Sellafield May 17, 2026
5717c37
fix: ISSUE-010 new-stat value TextBox accepts negative and decimal input
Sellafield May 17, 2026
2aab1f1
fix: ISSUE-008 SuggestDescriptionToken no longer strips def_ prefix
Sellafield May 17, 2026
9d04b21
docs: add IMPROVEMENT-017 New Item script filename includes definitio…
Sellafield May 17, 2026
8a07f47
docs: add IMPROVEMENT-004 Robot Designer design spec
Sellafield May 17, 2026
07356fa
feat(robot-designer): add RobotPart mode, IsRobot property, expose It…
Sellafield May 17, 2026
b8e6593
feat(robot-designer): add robot template, relation panel VMs and repo…
Sellafield May 17, 2026
79de8d1
fix(robot-designer): itemscoresum int type, nullable column guards, H…
Sellafield May 17, 2026
afe7a57
feat(robot-designer): add RobotSqlBuilder and NewRobotDialogViewModel…
Sellafield May 17, 2026
d0b11a7
fix(robot-designer): use lowercase hex in genxy FORMAT to match Genxy…
Sellafield May 17, 2026
f07b02c
feat(robot-designer): implement NewRobotDialogViewModel
Sellafield May 17, 2026
9dd530f
fix(robot-designer): use TemplatePanelViewModel.HasErrors in Validate…
Sellafield May 17, 2026
45736a4
feat(robot-designer): add NewRobotDialog xaml and code-behind
Sellafield May 17, 2026
c0e75ba
feat(robot-designer): wire entry point and complete dialog
Sellafield May 17, 2026
8b17b42
docs: add design spec for IMPROVEMENT-018 New Robot dialog UX
Sellafield May 17, 2026
f59eb58
docs: add implementation plan for IMPROVEMENT-018 New Robot dialog UX
Sellafield May 17, 2026
63911e0
feat(robot-designer): default IsRobot to true in NewRobotDialog
Sellafield May 17, 2026
602e91c
feat(robot-designer): add per-part clone picker properties and BuildP…
Sellafield May 17, 2026
43aec07
feat(robot-designer): wire per-part clone handlers and populate filte…
Sellafield May 17, 2026
a6e94b8
feat(robot-designer): add category-filtered per-part clone pickers to…
Sellafield May 17, 2026
eb68e9b
style(robot-designer): fix alignment in InitializeAsync BuildPartItem…
Sellafield May 17, 2026
3800a1c
Backlog
Sellafield May 18, 2026
485d771
fix(robot-designer): correct entity filtering in NewRobot clone picke…
Sellafield May 18, 2026
52f394b
docs(backlog): validate and reorganise backlog — mark IMPROVEMENT-018…
Sellafield May 18, 2026
8f904f9
docs(spec): IMPROVEMENT-017 script filename prefix design
Sellafield May 18, 2026
d57e4fe
docs(plan): IMPROVEMENT-017 script filename prefixes implementation plan
Sellafield May 18, 2026
1d7908c
feat(admin-tool): add SqlScriptBuilder.BuildFileName helper
Sellafield May 18, 2026
9438754
feat(admin-tool): prefix SQL script filenames by entity type (IMPROVE…
Sellafield May 18, 2026
f17d054
docs(backlog): mark IMPROVEMENT-017 done
Sellafield May 18, 2026
b7ecf11
docs(spec): correct regex docs to match implementation ([^a-z0-9_] no…
Sellafield May 18, 2026
f548c24
backlog
Sellafield May 18, 2026
26718ee
docs(spec): add IMPROVEMENT-018 season scoring mode design
Sellafield May 18, 2026
5580c1c
docs(plan): IMPROVEMENT-018 season scoring mode implementation plan
Sellafield May 18, 2026
cf98d92
feat(db): add scoring_mode column to seasons table
Sellafield May 18, 2026
ed319d6
docs(db): add scoring_mode to seasons schema documentation
Sellafield May 18, 2026
0cfc9b5
feat(seasons): add ScoringMode enum and RecordActivity branch
Sellafield May 18, 2026
c90471c
feat(admin-tool): add scoring mode to season wizard and detail view
Sellafield May 18, 2026
f613419
docs(backlog): mark IMPROVEMENT-018 done
Sellafield May 18, 2026
df362fb
fix(admin-tool): preserve non-part-ref options when writing robot par…
Sellafield May 19, 2026
376c851
fix(admin-tool): copy and expose options field when cloning robot parts
Sellafield May 19, 2026
8b1dce7
docs(admin-tool): add design spec and implementation plan for IMPROVE…
Sellafield May 19, 2026
1949915
feat(admin-tool): add ChassisBonusRow and LoadChassisBonusesAsync to …
Sellafield May 19, 2026
bfb768f
feat(admin-tool): add NewBonusRow data model for robot bonuses tab
Sellafield May 19, 2026
f42c0a1
feat(admin-tool): add BonusesPanelViewModel for robot bonuses tab
Sellafield May 19, 2026
b4f2c70
feat(admin-tool): wire BonusesPanel into NewRobotDialogViewModel (ini…
Sellafield May 19, 2026
603ed46
feat(admin-tool): load chassis bonuses from clone source in NewRobotD…
Sellafield May 19, 2026
fedca81
feat(admin-tool): emit chassisbonus INSERTs in RobotSqlBuilder (step …
Sellafield May 19, 2026
f797e45
feat(admin-tool): add Robot Bonuses tab to NewRobotDialog (IMPROVEMEN…
Sellafield May 19, 2026
8be4c90
feat(admin-tool): add Robot Bonuses tab to NewRobotDialog (IMPROVEMEN…
Sellafield May 19, 2026
08ab81b
docs(backlog): mark IMPROVEMENT-019 done
Sellafield May 19, 2026
175dc6b
docs(spec): add IMPROVEMENT-020 AdminTool installer design
Sellafield May 19, 2026
e0ff1b9
docs(plan): add IMPROVEMENT-020 AdminTool installer implementation plan
Sellafield May 19, 2026
59ff8af
feat(admintool): enable self-contained publish for Release configuration
Sellafield May 19, 2026
9aea2fd
feat(installer): create WiX installer project files for AdminTool
Sellafield May 19, 2026
e472345
fix(installer): root INSTALLFOLDER under ProgramFiles6432, use [Produ…
Sellafield May 19, 2026
2e3d092
chore(sln): add Perpetuum.AdminToolInstaller project to solution
Sellafield May 19, 2026
66dfe67
ci: add AdminTool installer build job
Sellafield May 19, 2026
e26f8bd
docs(backlog): mark IMPROVEMENT-020 done
Sellafield May 19, 2026
c7d5aa2
docs(spec): add IMPROVEMENT-009 targeted objectives design (mining/ha…
Sellafield May 19, 2026
5bbd59b
docs(plan): add IMPROVEMENT-009 targeted objectives implementation plan
Sellafield May 19, 2026
a03bc2a
feat(seasons): add ActivityEvent record for RecordActivity context
Sellafield May 19, 2026
172c5ed
refactor(seasons): migrate RecordActivity to ActivityEvent parameter
Sellafield May 19, 2026
a4ad2ed
feat(seasons): add PlantHarvested activity type (split from MineralMi…
Sellafield May 19, 2026
cd79745
feat(seasons): pass mineral/plant definition to RecordActivity at min…
Sellafield May 19, 2026
770f5b8
feat(seasons): add TargetDefinitionId to SeasonObjective and filter i…
Sellafield May 19, 2026
1208d48
feat(admin): add MaterialPickItem and target fields to SeasonObjectiv…
Sellafield May 19, 2026
3d4a4c3
feat(admin): build ore/liquid/organic material lists in SeasonDetailV…
Sellafield May 19, 2026
77e309d
feat(admin): read/write target_definition_id in season objectives rep…
Sellafield May 19, 2026
d31322e
feat(admin): add Target Material combobox column to objectives DataGrid
Sellafield May 19, 2026
11c87c3
docs(migration): add p36.1 season_objectives target_definition_id mig…
Sellafield May 19, 2026
e38deed
backlog
Sellafield May 19, 2026
6bb3df8
docs(spec): add IMPROVEMENT-022 randomised daily objective pool design
Sellafield May 19, 2026
165b41b
docs(plan): add IMPROVEMENT-022 randomised daily pool implementation …
Sellafield May 19, 2026
d793b72
feat(db): add daily_objectives_per_day to seasons table
Sellafield May 19, 2026
50fcbc7
feat(seasons): add DailyObjectivesPerDay to Season model and repository
Sellafield May 19, 2026
32d1780
feat(seasons): add daily objective pool selection and midnight announ…
Sellafield May 19, 2026
2e8e227
fix(seasons): use volatile DailyPool record to eliminate torn-read race
Sellafield May 19, 2026
7bd0061
fix(seasons): stable pool seed, suppress empty-pool announcement
Sellafield May 19, 2026
6d5432c
feat(admintool): add DailyObjectivesPerDay to SeasonSnapshot and Seas…
Sellafield May 19, 2026
0e59ae9
feat(admintool): wire DailyObjectivesPerDay through SeasonChanges and…
Sellafield May 19, 2026
837d188
feat(admintool): add Daily Objectives Per Day field to season General…
Sellafield May 19, 2026
b442883
fix(admintool): clamp non-positive DailyObjectivesPerDay to null befo…
Sellafield May 19, 2026
c270c5a
fix(admintool): show target material name in Objectives table cell on…
Sellafield May 20, 2026
ecd2a47
fix(admintool): use ISO 8601 T-separator for datetime literals (ISSUE…
Sellafield May 20, 2026
5576daf
backlog
Sellafield May 20, 2026
c26e44c
feat(seasons): add same-IP gate to RecordActivity via CounterpartyAcc…
Sellafield May 21, 2026
7362b09
fix(seasons): use TOP 1 ORDER BY loggedin DESC in PvpKill IP query; a…
Sellafield May 21, 2026
23d50e8
refactor(seasons): remove marketSell/marketBuy from wallet NIC record…
Sellafield May 21, 2026
a88a188
feat(seasons): move market NicEarned/NicSpent recording to call sites…
Sellafield May 21, 2026
3d599df
feat(seasons): add same-IP gate to transport assignment NIC activity …
Sellafield May 21, 2026
79891a5
fix(seasons): correct TakeCollateral character ID and remove invalid …
Sellafield May 21, 2026
b1fefe2
docs(seasons): add IMPROVEMENT-023 spec/plan and mark backlog DONE
Sellafield May 21, 2026
36871f0
Human-readable labels
Sellafield May 23, 2026
848b6fd
fix(seasons): add missing activity types to objective selectors and f…
Sellafield May 23, 2026
4b22eb4
fix(build): add RuntimeIdentifiers to AdminTool so CI restore populat…
Sellafield May 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 25 additions & 1 deletion .github/workflows/dotnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:

env:
Workspace: ${{ github.workspace }}

steps:
- uses: actions/checkout@v4
- name: Setup .NET
Expand All @@ -33,3 +33,27 @@ jobs:
name: Perpetuum-Server-v2-${{ github.sha }}
path: ${{ env.Workspace }}/bin/x64/Release/net8.0
if: ${{ github.event_name == 'push'}}

build-admintool-installer:

runs-on: windows-latest

env:
Workspace: ${{ github.workspace }}

steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- name: Restore dependencies
run: dotnet restore -p:Platform=x64
- name: Build AdminTool installer
run: dotnet build src/Perpetuum.AdminToolInstaller/Perpetuum.AdminToolInstaller.wixproj --no-restore --configuration Release --verbosity quiet -p:Platform=x64
- name: Upload AdminTool installer
uses: actions/upload-artifact@v4
with:
name: Perpetuum-AdminTool-Installer-${{ github.sha }}
path: ${{ env.Workspace }}/src/Perpetuum.AdminToolInstaller/bin/x64/Release/en-US/*.msi
if: ${{ github.event_name == 'push' }}
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,5 @@ bin/
Releases/
.claude/settings.local.json
.planning/
*.log
*_wpftmp.csproj
31 changes: 30 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,35 @@ Claude MUST:

---

# Game Content Creation

When creating or modifying gameplay entities (items, robots, effects, modules, tech tree nodes), Claude MUST consult:

- `docs/content/claude_game_content_guide.md`

This guide is the authoritative procedural reference for SQL content pipelines and dependency order.

## Content Creation Rules

Claude MUST:

- Read the guide before generating any content SQL.
- Follow the entity lifecycle and dependency order defined in the guide (sections 2 and 24).
- Never hardcode definition or extension IDs — always resolve dynamically via `entitydefaults` / `extensions` lookups.
- Use naming conventions from the guide (section 3): `def_`, `_pr`, `_cprg`, `effect_`, `cf_` prefixes.
- Use idempotent SQL patterns: `MERGE`, `IF NOT EXISTS`, or `DELETE + INSERT` as appropriate per table.
- Generate full-chain content when possible — avoid partial generation.
- Run the validation checklist (section 26) before declaring content complete.
- Ask the user for existing database values when dynamic resolution requires live data not available in docs.

Claude MUST NOT:

- Hardcode IDs for definitions, extensions, aggregate fields, or tech tree nodes.
- Assume table relationships without verifying via `docs/db_structure/`.
- Generate partial content chains that leave items in an unresearchable, uncraftable, or inaccessible state.

---

# Required Workflow

For any non-trivial task:
Expand Down Expand Up @@ -337,7 +366,7 @@ When asked to:
- "implement improvements"

Claude should:
1. review backlog files
1. review backlog files, only check what you've been asked to, (e.g. issues or improvements), unless issues and improvements are depending on each other
2. prioritize unfinished HIGH priority items
3. prefer low-risk/high-impact work unless instructed otherwise
4. produce a short implementation plan
Expand Down
7 changes: 7 additions & 0 deletions PerpetuumServer2.sln
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Perpetuum.RequestHandlers",
EndProject
Project("{B7DD6F7E-DEF8-4E67-B5B7-07EF123DB6F0}") = "Perpetuum.ServerService2Installer", "src\Perpetuum.ServerService2Installer\Perpetuum.ServerService2Installer.wixproj", "{ABBCAAB8-AA31-4705-BDA8-B4EDDFFA7F4E}"
EndProject
Project("{B7DD6F7E-DEF8-4E67-B5B7-07EF123DB6F0}") = "Perpetuum.AdminToolInstaller", "src\Perpetuum.AdminToolInstaller\Perpetuum.AdminToolInstaller.wixproj", "{D3F8A2B1-6C9E-4D7F-A5B8-2E0C4F9A3D6B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Perpetuum.ServerService2", "src\Perpetuum.ServerService2\Perpetuum.ServerService2.csproj", "{A2FCE930-E013-4731-B354-F7DA00322D38}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Perpetuum.AdminTool", "src\Perpetuum.AdminTool\Perpetuum.AdminTool.csproj", "{A7D1E3C5-9F4B-42E8-8A6C-B5D7F1E9C2A0}"
Expand Down Expand Up @@ -51,6 +53,10 @@ Global
{ABBCAAB8-AA31-4705-BDA8-B4EDDFFA7F4E}.Debug|x64.Build.0 = Debug|x64
{ABBCAAB8-AA31-4705-BDA8-B4EDDFFA7F4E}.Release|x64.ActiveCfg = Release|x64
{ABBCAAB8-AA31-4705-BDA8-B4EDDFFA7F4E}.Release|x64.Build.0 = Release|x64
{D3F8A2B1-6C9E-4D7F-A5B8-2E0C4F9A3D6B}.Debug|x64.ActiveCfg = Debug|x64
{D3F8A2B1-6C9E-4D7F-A5B8-2E0C4F9A3D6B}.Debug|x64.Build.0 = Debug|x64
{D3F8A2B1-6C9E-4D7F-A5B8-2E0C4F9A3D6B}.Release|x64.ActiveCfg = Release|x64
{D3F8A2B1-6C9E-4D7F-A5B8-2E0C4F9A3D6B}.Release|x64.Build.0 = Release|x64
{A2FCE930-E013-4731-B354-F7DA00322D38}.Debug|x64.ActiveCfg = Debug|x64
{A2FCE930-E013-4731-B354-F7DA00322D38}.Debug|x64.Build.0 = Debug|x64
{A2FCE930-E013-4731-B354-F7DA00322D38}.Release|x64.ActiveCfg = Release|x64
Expand All @@ -70,6 +76,7 @@ Global
{5992F619-7655-43F1-8A33-21B5877714A5} = {0BC991A1-133C-49ED-A141-80E2A906898B}
{C1F1B228-8286-4207-9C51-09AB3FDFE935} = {0BC991A1-133C-49ED-A141-80E2A906898B}
{ABBCAAB8-AA31-4705-BDA8-B4EDDFFA7F4E} = {0BC991A1-133C-49ED-A141-80E2A906898B}
{D3F8A2B1-6C9E-4D7F-A5B8-2E0C4F9A3D6B} = {0BC991A1-133C-49ED-A141-80E2A906898B}
{A2FCE930-E013-4731-B354-F7DA00322D38} = {0BC991A1-133C-49ED-A141-80E2A906898B}
{A7D1E3C5-9F4B-42E8-8A6C-B5D7F1E9C2A0} = {0BC991A1-133C-49ED-A141-80E2A906898B}
EndGlobalSection
Expand Down
4 changes: 4 additions & 0 deletions docs/Patches/p36.1/Features/Seasons/migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
-- IMPROVEMENT-009: Targeted Objectives (Mining & Harvesting)
-- Run once against the game database before deploying the updated server binary.

ALTER TABLE season_objectives ADD target_definition_id INT NULL;
Loading
Loading