Windrose+ uses windrose_plus.json for everyday settings and optional .ini files for advanced game-balance overrides. Start with windrose_plus.json unless you specifically need one of the advanced tuning tables below.
| File | Purpose |
|---|---|
windrose_plus.json |
Basic settings: multipliers, RCON, admins |
windrose_plus.ini |
Advanced settings: player stats, talents, combat |
windrose_plus.weapons.ini |
Per-weapon damage, crit, posture, special effects |
windrose_plus.food.ini |
Food buffs, consumables, alchemy items |
windrose_plus.gear.ini |
Armor sets, set bonuses, jewelry |
windrose_plus.entities.ini |
Land and naval entity base stats |
windrose_plus.harvest.ini |
Per-resource harvest yield overrides (wood, stone, ore, etc.) |
This file is created automatically on first start. Edit it for common server-owner changes.
Global server multipliers. 1.0 = default, 2.0 = double, 0.5 = half. These are baked into WindrosePlus_Multipliers_P.pak by the PAK builder, so an edit needs a rebuild before the next launch — StartWindrosePlusServer.bat does that for you.
Multipliers belong in this file, not in windrose_plus.ini. A [Multipliers] section in the INI is ignored with a warning so the in-game wp.config output cannot disagree with what was actually applied.
| Key | Default | Description |
|---|---|---|
loot |
1 |
Loot drop quantity from chests / containers / enemies. Equipment drops are excluded so gear can't be duplicated. Use harvest_yield for resource nodes. |
xp |
1 |
Experience gain. Faster leveling means more talent/stat point payouts; that's the natural game progression, not a separate multiplier. |
craft_efficiency |
1 |
Crafting efficiency. Higher = cheaper recipes (2.0 = half cost, 0.5 = double cost). The legacy key craft_cost is still accepted with identical semantics for backward compatibility. |
cooking_speed |
1 |
Cooking / fermentation / smelting speed (2.0 = twice as fast). |
harvest_yield |
1 |
Resource node yield (berries, ore, wood, herbs, etc.). Scales Amount.Min/Max per node; minimum stays at 1 after rounding. For per-resource overrides (e.g. wood-only), see the windrose_plus.harvest.ini section below. |
stack_size |
1 |
Disabled/no-op. Kept only so old configs still parse; changing it does not change item stacks. |
crop_speed |
1 |
Disabled/no-op. Kept only so old configs still parse; changing it does not change crop timing. |
weight |
1 |
Disabled/no-op. Kept only so old configs still parse; changing it does not change item weight. |
inventory_size |
1 |
Disabled/no-op. Kept only so old configs still parse; changing it does not change slot counts. |
points_per_level |
1 |
Disabled/no-op. Kept only so old configs still parse; changing it does not grant points. |
Save-safety notes:
inventory_size,stack_size, andweightare disabled because inventory-affecting changes can become part of player save state after login/save and can crash Windrose's inventory validator.crop_speedis disabled because non-default crop timing can crash Windrose's crop validator.points_per_levelis disabled because changing progression rewards can createRewardLevel < CurrentLevelcharacter-save crashes. The dashboard Character Repair page can repair the known no-spend drift case from a zipped localSaveProfilesfolder.- Disabled keys are ignored by the PAK builder and dashboard PAK-status check. They do not trigger generated multiplier PAK output.
xpis ratcheted: once a value above1has been built, lowering it is refused because the shrunken reward curve can lock existing characters out on next login. Back upSaveProfiles, then either deletewindrose_plus_data\.windroseplus_multiplier_history.jsonor setWINDROSEPLUS_ALLOW_DOWNGRADE=1for one build.- To keep Windrose+ runtime features but disable generated multiplier PAKs, set
WINDROSEPLUS_DISABLE_MULTIPLIER_PAK=1beforeStartWindrosePlusServer.bat. This removes/skipsR5\Content\Paks\WindrosePlus_Multipliers_P.pakandwindrose_plus_data\.windroseplus_multiplier_history.json. JSON and harvest multipliers will not apply while the switch is set. - To fully disable Windrose+ during recovery testing, stop the server, rename
R5\Binaries\Win64\dwmapi.dll, delete or moveR5\Content\Paks\WindrosePlus_Multipliers_P.pakand all three parts of the CurveTable container (WindrosePlus_CurveTables_P.pak,.utoc,.ucas), then deletewindrose_plus_data\.windroseplus_build.hash.
Example:
{
"multipliers": {
"loot": 2.0,
"xp": 3.0,
"craft_efficiency": 2.0,
"cooking_speed": 2.0,
"harvest_yield": 2.0
}
}Remote console listener. Read live — changes take effect on wp.reload without a PAK rebuild.
| Key | Default | Description |
|---|---|---|
enabled |
false |
Enable the RCON listener. |
port |
27320 |
RCON TCP port. |
password |
"" |
RCON password. Blank (or changeme) disables RCON and the dashboard login. |
Server-query responder, so server browsers and monitoring tools can read your player count.
| Key | Default | Description |
|---|---|---|
enabled |
true |
Enable query responses. |
interval_ms |
5000 |
Poll interval while players are online. |
idle_interval_ms |
30000 |
Poll interval while the server is empty. |
| Key | Default | Description |
|---|---|---|
steam_ids |
[] |
JSON array of Steam IDs treated as admins. |
Background scan that builds your own point-of-interest overlay for the Sea Chart.
| Key | Default | Description |
|---|---|---|
enabled |
true |
Enable the POI scan. |
refresh_seconds |
14400 |
Seconds between rescans (default 4 hours). |
Dashboard listener settings.
| Key | Default | Description |
|---|---|---|
http_port |
8780 |
Dashboard/API HTTP port. You can also pass -Port to start_dashboard.bat. |
bind_ip |
"" |
Optional IP address to bind the dashboard to on multi-IP hosts. Empty means all interfaces when elevated, with localhost fallback. You can also pass -BindIp to start_dashboard.bat. |
layout_runtime_url |
"" |
Optional compatible layout-runtime provider URL for curated POI, quest, biome, marker, and item-source overlays. The WINDROSEPLUS_LAYOUT_RUNTIME_URL environment variable can also set this. |
Example:
{
"server": {
"http_port": 8780,
"bind_ip": "192.0.2.10",
"layout_runtime_url": ""
}
}Live map writer and public Sea Chart settings.
| Key | Default | Description |
|---|---|---|
enabled |
true |
Write live player and world-position data for the Sea Chart. |
player_interval_ms |
5000 |
Player position write interval. |
entity_interval_ms |
30000 |
Creature/resource position write interval. |
public.enabled |
false |
Enable the map-only public route at /public-map. |
public.token |
"" |
Optional share token. If set, visitors must use /public-map?token=<token>. |
overlay_transform.enabled |
false |
Enable calibration for curated Sea Chart overlays. Terrain tiles and live player positions stay unchanged. |
overlay_transform.offset_x / offset_y |
0 |
Shift curated overlay markers and polygons in world units. |
overlay_transform.scale / scale_x / scale_y |
1.0 |
Scale curated overlay coordinates around origin_x / origin_y. |
overlay_transform.rotate_degrees |
0 |
Rotate curated overlay coordinates around origin_x / origin_y. |
overlay_transform.flip_x / flip_y / swap_xy |
false |
Optional curated-overlay orientation correction for mismatched provider coordinates. |
Example:
{
"livemap": {
"enabled": true,
"public": {
"enabled": true,
"token": "change-this-or-leave-blank"
},
"overlay_transform": {
"enabled": false,
"offset_x": 0,
"offset_y": 0,
"scale": 1.0,
"scale_x": 1.0,
"scale_y": 1.0,
"origin_x": 0,
"origin_y": 0,
"rotate_degrees": 0,
"flip_x": false,
"flip_y": false,
"swap_xy": false
}
}
}overlay_transform applies only to curated layout/runtime overlay data: markers, manual POIs, layout graph lines, biome polygons, resource hints derived from those markers, and item-source search hits. It does not move the generated terrain tiles, live players, live mobs, live resource nodes, teleport clicks, or raw runtime save overlays.
Windrose+ can render curated POI, quest, biome, marker, and item-source overlays on the Sea Chart when a compatible layout-runtime provider is reachable. The provider is optional and intentionally external — the dashboard, RCON, multipliers, terrain map, your own POIScan output, and item catalog all work without one. If layout_runtime_url (or WINDROSEPLUS_LAYOUT_RUNTIME_URL) is empty, the Layers panel reports "Curated overlay not configured" and you get the base map only.
Set the URL via either:
{
"server": {
"layout_runtime_url": "https://your.provider.example/api/layout/runtime"
}
}WINDROSEPLUS_LAYOUT_RUNTIME_URL=https://your.provider.example/api/layout/runtime
The dashboard expects two endpoints at that URL.
GET <url>?layout=<fingerprint> — returns the curated runtime payload for a known layout fingerprint. The dashboard caches the response in windrose_plus_data\layout_runtime.json keyed by fingerprint, so repeat map loads do not re-hit the provider. A 200 with JSON body populates the layers; a 4xx triggers the seeding POST below; a 5xx / 429 / timeout serves the stale cache if one exists, otherwise leaves the layers empty.
POST <url> with Content-Type: application/json and body:
{
"layoutFingerprint": "<sha256>",
"seed": 12345678,
"worldPreset": "DA_CommonIsland_Personal",
"terrainPlacements": [ /* array of placement objects from the local scan */ ]
}Used once per new fingerprint to let the provider build/store its curated overlay. A 200 / 201 response can either return the runtime payload directly or be empty, in which case the dashboard immediately re-GETs.
Response payload shape (the dashboard reads these fields):
{
"ok": true,
"layoutFingerprint": "<sha256>",
"runtime": {
"markers": [
{ "type": "main_quest", "name": "...", "worldX": 12345, "worldY": -67890, "popup": { "items": [], "rewards": [] } }
],
"layout": {
"nodes": [
{
"nodeId": "...",
"worldX": 12345,
"worldY": -67890,
"tag": "biome.tag",
"manualPoiMarkers": [
{ "name": "...", "worldX": 12345, "worldY": -67890, "iconAssetPath": "..." }
],
"polygons": [
[ { "x": 12345, "y": -67890 }, { "x": 12350, "y": -67895 } ]
]
}
],
"edges": [
{ "sourceNodeId": "...", "targetNodeId": "..." }
]
}
}
}markers, layout.nodes, layout.edges, layout.nodes[*].manualPoiMarkers, and layout.nodes[*].polygons are all optional — the dashboard renders whichever are present. Coordinates are world-space integers.
The provider is plain HTTP and stateless from the dashboard's perspective; you can run one centrally for a community of self-hosted servers, or stand one up for a single server.
Optional file. Adds per-resource multipliers for harvest yield, stacking
multiplicatively on top of multipliers.harvest_yield from windrose_plus.json:
final_yield = harvest_yield * <per-resource value>
Default 1.0 for every key means "use harvest_yield only, no override".
Drop a value to scale only that resource family. Wood-only example
(everything else stays at vanilla, wood drops 5x):
[Resources]
Wood = 5.0Combined example (harvest_yield = 2.0 in windrose_plus.json + this file):
[Resources]
Wood = 3.0 ; wood drops 2.0 * 3.0 = 6x
Stone = 1.0 ; stone drops 2.0 * 1.0 = 2x (just harvest_yield)
CopperOre = 0.5 ; copper drops 2.0 * 0.5 = 1x (back to vanilla)Keys are UE asset family names. The matcher reads the
Resource_<Name>_T<digit> token from each loot entry's path
(e.g. DA_DID_Resource_Wood_T01 -> Wood). Case-insensitive — Wood,
wood, and WOOD all match.
| Key | Default | Where it applies |
|---|---|---|
Wood |
1.0 |
Tree drops, resource-spawner tree collections, and SegmentTreesAndMineralDestroy contextual scores |
Bark |
1.0 |
Higher-tier tree drops |
FiberPlant |
1.0 |
Grasses, agave, hemp, flax bushes |
Stone |
1.0 |
Stone outcrops |
Clay |
1.0 |
Clay deposits |
Ash |
1.0 |
Ash deposits |
Sulfur |
1.0 |
Sulfur outcrops |
CopperOre |
1.0 |
Surface copper nodes + CopperCaves_DigVolumesDestroy |
Iron |
1.0 |
IronCaverns_DigVolumesDestroy |
Charcoal |
1.0 |
Coal nodes |
Feather, Fat, Leather, GoatHorn, Bezoar |
1.0 |
Animal-derived. Mostly creature drops (not affected); foliage tables that include them are scaled here. |
Unknown family names in the INI are silently ignored. Unknown families on
in-game loot entries fall through to harvest_yield only.
Edits to this file trigger a PAK rebuild on the next launch via
StartWindrosePlusServer.bat, the same way the other type-specific INIs
do.
Everything in this file and in the type-specific INIs (.weapons, .food, .gear, .entities) is applied by patching the game's CurveTable assets and shipping them back as an override. This requires Windrose+ v1.3.16 or newer. Up to v1.3.15 the override was written as a legacy .pak; Windrose ships those assets in an IoStore container and UE5 resolves them from the container, so the patch was built and byte-verified but never reached the running game. On v1.3.16+ the override is written as an IoStore container (WindrosePlus_CurveTables_P.utoc / .ucas / .pak), which does take precedence.
The container is rebuilt by StartWindrosePlusServer.bat and cannot be replaced while the server is running, so INI changes need a full stop and start — not a wp.reload.
Server network and admin settings.
| Key | Default | Description |
|---|---|---|
http_port |
8780 |
WindrosePlus HTTP API port |
game_port |
(blank) | Game port (auto-detected if blank) |
server_dir |
(blank) | Path to server directory (auto-detected if blank) |
rcon_enabled |
false |
Enable RCON remote console |
rcon_password |
(blank) | RCON password (leave blank to disable) |
query_enabled |
true |
Enable server query responses |
query_interval_ms |
5000 |
Query polling interval in milliseconds |
admin_steam_ids |
(blank) | Admin Steam IDs (comma-separated) |
Ignored. The PAK builder warns and skips this section so the in-game wp.config output cannot disagree with what was actually applied. Put multipliers in windrose_plus.json — see multipliers.
Player base attributes. Values are absolute, not multipliers. CurveTable: CT_CharactersAttributes.
| Key | Default | Raw Name | Description |
|---|---|---|---|
MaxHealth |
320 |
Hero_MaxHealth | Maximum health points |
MaxStamina |
150 |
Hero_MaxStamina | Maximum stamina |
StaminaRegRate |
40 |
Hero_StaminaRegRate | Stamina regeneration rate |
MaxPosture |
40 |
Hero_MaxPosture | Maximum posture (stagger bar) |
PostureRegRate |
20 |
Hero_PostureRegRate | Posture regeneration rate |
Armor |
0 |
Hero_Armor | Base armor value |
DefencePwr |
90 |
Hero_DefencePwr | Base defence power |
StaggerDefence |
3 |
Hero_StaggerDefence | Stagger defence |
MaxWeight |
99999 |
Hero_MaxWeight | Maximum carry weight |
PassHPReg |
0 |
Hero_PassHPReg | Passive health regen per tick |
CorruptionStatusBuildupResistMax |
0.65 |
Hero_CorruptionStatusBuildupResistMax | Max corruption resistance (0-1) |
Talent tree values for all 4 specializations. DmgMod values are percentages as decimals (0.03 = 3%). CurveTable: CT_TalentData.
| Key | Default | Description |
|---|---|---|
Crusher_Berserk_DmgMod |
0.03 |
Berserk damage modifier per stack |
Crusher_Berserk_HPRatioForOneStack |
0.15 |
HP ratio threshold for one berserk stack |
Crusher_Berserk_LowerHPRatioLimit |
0 |
Lower HP ratio limit for berserk |
Crusher_Berserk_ModForOneStack |
1 |
Modifier value for one berserk stack |
Crusher_Berserk_UpperHPRatioLimit |
1 |
Upper HP ratio limit for berserk |
Crusher_ChargedAttackDamage_DmgMod |
0.04 |
Charged attack damage bonus |
Crusher_CrudeDamage_DmgMod |
0.03 |
Crude damage bonus |
Crusher_DamageForDeathNearby_DmgMod |
0.06 |
Damage bonus when enemies die nearby |
Crusher_DamageForDeathNearby_Duration |
60 |
Duration of death-nearby buff (seconds) |
Crusher_DamageForDeathNearby_RadiusInMeters_UI |
8 |
Radius for death detection (meters) |
Crusher_DamageForMultipleTargets_Duration |
30 |
Multi-target buff duration (seconds) |
Crusher_DamageForMultipleTargets_MaxStack_UI |
3 |
Max stacks for multi-target buff |
Crusher_DamageForMultipleTargets_ModPerStack |
0.05 |
Damage bonus per stack |
Crusher_DamageForMultipleTargets_RequiredTargets_UI |
2 |
Targets needed to trigger |
Crusher_DamageResistInAttack_DmgResist |
0.1 |
Damage resistance while attacking |
Crusher_DamageResistWithTwoHandedWpn |
0.05 |
Damage resistance with two-handed weapons |
Crusher_HeavyAttackPostureDmgBuff_PostDmgMod |
0.1 |
Heavy attack posture damage bonus |
Crusher_InterruptResistInAttack_DmgResist |
0.1 |
Interrupt resistance while attacking |
Crusher_TemporalHPHealBuff_DmgDealConvMod |
0.4 |
Damage-to-temp-HP conversion rate |
Crusher_TwoHandedDamage_DmgMod |
0.05 |
Two-handed weapon damage bonus |
Crusher_TwoHandedMeleeCritChance |
0.04 |
Two-handed melee crit chance |
Crusher_TwoHandedStaminaReduced_StamMod |
-0.1 |
Two-handed stamina cost reduction |
| Key | Default | Description |
|---|---|---|
Fencer_ConsecutiveMeleeHitsBonus_DamageMod |
0.03 |
Damage bonus per consecutive hit |
Fencer_ConsecutiveMeleeHitsBonus_Duration |
10 |
Consecutive hits buff duration (seconds) |
Fencer_ConsecutiveMeleeHitsBonus_MaxStack_UI |
5 |
Max stacks for consecutive hits |
Fencer_CritChanceForPerfectBlock_CritChanceAdd |
0.05 |
Crit chance bonus after perfect block |
Fencer_CritChanceForPerfectBlock_Duration |
12 |
Perfect block crit buff duration (seconds) |
Fencer_DamageForBlock_DmgMod |
0.01 |
Damage bonus per block |
Fencer_DamageForSoloEnemy_DmgMod |
0.06 |
Damage bonus vs single enemy |
Fencer_HealForKill_Duration |
20 |
Heal-on-kill buff duration (seconds) |
Fencer_HealForKill_HealPerTick |
10 |
HP healed per tick on kill |
Fencer_HealForKill_TickPeriod |
1 |
Seconds between heal ticks |
Fencer_LessStaminaForDash_StamMod |
-0.15 |
Dash stamina cost reduction |
Fencer_OneHandedDamage_DmgMod |
0.04 |
One-handed weapon damage bonus |
Fencer_OneHandedMeleeCritChance |
0.03 |
One-handed melee crit chance |
Fencer_ParryWindowBonus_AddTime |
0.02 |
Extra parry window time (seconds) |
Fencer_PassiveReloadBoostForPerfectBlock_TimeRatio |
0.15 |
Passive reload boost after perfect block |
Fencer_PassiveReloadBoostForPerfectDodge_TimeRatio |
0.25 |
Passive reload boost after perfect dodge |
Fencer_RestoreForKill_PostureRestored |
20 |
Posture restored on kill |
Fencer_RestoreForKill_StaminaRestored |
0.2 |
Stamina restored on kill (ratio) |
| Key | Default | Description |
|---|---|---|
Marksman_ActiveReloadSpeedBonus_PlayRateMod |
0.1 |
Active reload speed bonus |
Marksman_ConsecutiveRangeHitsBonus_DamageMod |
0.05 |
Damage bonus per consecutive ranged hit |
Marksman_ConsecutiveRangeHitsBonus_Duration |
25 |
Consecutive ranged hits buff duration (seconds) |
Marksman_ConsecutiveRangeHitsBonus_MaxStack_UI |
4 |
Max stacks for consecutive ranged hits |
Marksman_DamageForAimingState_DmgModPerStack |
0.03 |
Damage bonus per aiming stack |
Marksman_DamageForAimingState_MaxStack_UI |
4 |
Max stacks while aiming |
Marksman_DamageForAimingState_TickTime_UI |
2 |
Seconds per aiming stack |
Marksman_DamageForDistance_DmgModPer10m |
0.01 |
Damage bonus per 10m distance |
Marksman_DamageForPointBlank_DmgMod |
0.04 |
Point-blank damage bonus |
Marksman_Overpenetration_DmgDecreasePerHit |
0.5 |
Damage falloff per target penetrated |
Marksman_PassiveReloadBonus_TimeMod |
-0.05 |
Passive reload time reduction |
Marksman_PierceDamage |
0.03 |
Pierce damage bonus |
Marksman_RangeArmorPenBonus_AddPen |
8 |
Armor penetration bonus |
Marksman_RangeCritDamageBonus_CritDmgMod |
0.05 |
Ranged crit damage bonus |
Marksman_RangeDamageBonus_DmgMod |
0.05 |
Ranged damage bonus |
Marksman_RangeDamageToOutOfPosture_DmgMod |
0.03 |
Damage bonus vs posture-broken targets |
Marksman_ReloadForKill_ChanceTo |
0.15 |
Chance to instant-reload on kill |
Marksman_ScatterReductionBonus_ScatMod |
-0.08 |
Scatter/spread reduction |
Marksman_TempHPRestoreBonusForRange_ConvRateMod |
0.1 |
Ranged damage to temp HP conversion |
| Key | Default | Description |
|---|---|---|
ToughGuy_DamageResistForHP_HPRatioForOneStack |
0.15 |
HP ratio per damage resist stack |
ToughGuy_DamageResistForHP_LowerHPRatioLimit |
0 |
Lower HP limit for resist scaling |
ToughGuy_DamageResistForHP_Mod |
0.04 |
Damage resist modifier per stack |
ToughGuy_DamageResistForHP_ModForOneStack |
1 |
Modifier for one stack |
ToughGuy_DamageResistForHP_UpperHPRatioLimit |
1 |
Upper HP limit for resist scaling |
ToughGuy_HealEffectivness_HealMod |
0.1 |
Healing effectiveness bonus |
Toughguy_BlockPostureConsumptionBonus_Mod |
-0.15 |
Block posture cost reduction |
Toughguy_DamageForManyEnemies_Mod |
0.04 |
Damage bonus vs multiple enemies |
Toughguy_ElementalDamageResist_Mod |
0.02 |
Elemental damage resistance |
Toughguy_ExtraHP_Add |
120 |
Flat bonus HP |
Toughguy_GlobalDamageResist_Mod |
0.06 |
Global damage resistance |
Toughguy_PhysicalMeleeDamageResist_Mod |
0.02 |
Physical melee damage resistance |
Toughguy_PhysicalRangeDamageResist_Mod |
0.04 |
Physical ranged damage resistance |
Toughguy_ResistForManyEnemies_Mod |
0.08 |
Resistance bonus vs multiple enemies |
Toughguy_SaveOnLowHP_Cooldown |
960 |
Low HP save cooldown (seconds) |
Toughguy_SaveOnLowHP_HpPercentRestored |
0.3 |
HP restored on low-HP save (30%) |
Toughguy_SaveOnLowHP_HpPercentTrigger |
0.1 |
HP threshold to trigger save (10%) |
Toughguy_StaminaBonus_Add |
20 |
Flat bonus stamina |
Toughguy_TempHPForDamageRecivedBonus_Mod |
0.25 |
Damage-taken to temp HP conversion |
Note: The game uses mixed casing (ToughGuy_ vs Toughguy_). Both prefixes are in the same [Talents] section. Use the exact casing shown.
Difficulty scaling per additional player. 0.0 = no scaling. CurveTable: CT_Mob_StatCorrection_CoopBased.
| Key | Default | Description |
|---|---|---|
HealthModifier |
0 |
Enemy health bonus per extra player |
ShipHealthModifier |
0 |
Ship enemy health bonus per extra player |
Bonuses while resting at campfire or bed. CurveTable: CT_RestGameplayEffectCurves.
| Key | Default | Description |
|---|---|---|
PassiveHealthRegen |
3 |
HP regen per tick while resting |
StaminaRegen |
1 |
Stamina regen multiplier while resting |
StaminaRegenFlat |
80 |
Flat stamina regen while resting |
ExtraStamina |
0 |
Bonus stamina while resting |
Swimming damage and stamina drain. CurveTable: CT_OtherGEValues.
| Key | Default | Description |
|---|---|---|
Swimming_HealthDamage_Amount_Flat |
12 |
Flat HP loss per tick |
Swimming_HealthDamage_Amount_Percent |
0.02 |
% of max HP lost per tick |
Swimming_HealthDamage_TickPeriod |
1 |
Seconds between HP drain ticks |
Swimming_StaminaConsumption_Amount |
-1.5 |
Stamina drain per tick |
Swimming_StaminaConsumption_TickPeriod |
0.2 |
Seconds between stamina drain ticks |
Bleed and weakness effects shared across all weapons. CurveTable: CT_OtherGEValues.
| Key | Default | Description |
|---|---|---|
Weapon_Shared_Bleed_DPS |
25 |
Bleed damage per tick |
Weapon_Shared_Bleed_Duration |
14 |
Bleed duration (seconds) |
Weapon_Shared_Bleed_Period |
1.5 |
Seconds between bleed ticks |
Weapon_Shared_Bleed_TotalDamage_UI |
350 |
Total bleed damage (UI display) |
Weapon_Shared_Weakness_Duration |
14 |
Weakness duration (seconds) |
Weapon_Shared_Weakness_Value |
0.15 |
Weakness effect strength |
Hearth/campfire proximity effects. CurveTable: CT_OtherGEValues.
| Key | Default | Description |
|---|---|---|
Hearth_PassiveHealthRegen |
20 |
HP regen per tick near hearth |
Hero_PassiveHealthRegen_TickPeriod |
0.5 |
Seconds between HP regen ticks |
Type-specific .ini files can be used without creating a root windrose_plus.ini. The PAK builder reads windrose_plus.weapons.ini, windrose_plus.food.ini, windrose_plus.gear.ini, and windrose_plus.entities.ini independently and includes them in the rebuild hash.
Per-weapon damage, crit, posture, and special effect values. CurveTable: CT_Weapon_GE_Values.
25 sections, 297 keys total.
Ammo, Axe, Blunderbuss, Club, Greatsword, Halberd, MainHand_Axe1h, MainHand_Club, MainHand_Fistis, MainHand_Pickaxe, MainHand_Rapier, MainHand_Saber, Musket, OffHand_Pistol, Pickaxe, Pistol, Rapier, Saber, Shovel, Torch, TwoHand_Axe2h, TwoHand_Halberd, TwoHand_Machete, TwoHand_Musket, TwoHand_Shovel
{WeaponType}_{Variant}_{Stat} where variant includes tier (T00-T03) or named variants (e.g., Dragonbreath, Reliable, Blank).
BaseDamage-- base damage value (typical range: 100-400)MaxPostureAdd-- posture damage bonusPostureDmgMod-- posture damage modifierCritDmgModAdd-- critical damage modifierArmorPenAdd-- armor penetrationAttackPwrMod-- attack power modifier- UI effect values (
UI_Effect1,UI_Effect2) for special procs
[Axe]
Axe_T00_BaseDamage = 240
Axe_T01_BaseDamage = 255
Axe_T02_BaseDamage = 255
Axe_T03_BaseDamage = 255
[Blunderbuss]
Blunderbuss_Blank_BaseDamage = 150
Blunderbuss_Dragonbreath_BaseDamage = 160
Blunderbuss_Dragonbreath_FireBlastProcChance = 0.6
Blunderbuss_Reliable_BaseDamage = 180Food, consumable, and alchemy stats. Durations in seconds, attribute buffs are absolute values.
16 sections, 522 keys total.
After editing food values, fully restart the Windrose server process through
StartWindrosePlusServer.bat. The builder output should include
CT_Food_GE_Values and Patched ... values (verified). If the generated PAK
needs host-side verification, check
windrose_plus_data\.windroseplus_curvetables_manifest.json or /api/pak-status
for the exact patched rows. To list the container contents, run
windrose_plus\tools\bin\retoc.exe list R5\Content\Paks\WindrosePlus_CurveTables_P.utoc | findstr /i CT_Food_GE_Values.
Cooked Food (CurveTable: CT_Food_GE_Values): Food_Dough, Food_Drink, Food_Raw, Food_RumBottle, Food_Second, Food_Skewer, Food_Soup, Food_Sweet
Consumables (CurveTable: CT_Consumable_GE_Values): Consumables_FoodTier1, Consumables_FoodTier2, Consumables_FoodTier3, Consumables_Other
Alchemy (CurveTable: CT_Alchemy_GE_Values): Alchemy_Bandages, Alchemy_Elixirs, Alchemy_Oils, Alchemy_Potions
{Category}_{ItemName}_{Tier}_{Stat} -- e.g., Food_Dough_BurritoBeans_T03_Duration.
Duration-- buff duration in seconds (typical: 900-1800)MaxHealth-- max health buff (typical: 80-160)MaxStamina-- max stamina buffStaminaRegenRate-- stamina regen buffFortitude-- fortitude attribute buff (typical: 5-20)Mastery-- mastery attribute buff (typical: 5-20)
[Food_Dough]
Food_Dough_BurritoBeans_T03_Duration = 1800
Food_Dough_BurritoBeans_T03_Fortitude = 20
Food_Dough_BurritoBeans_T03_MaxHealth = 160
Food_Dough_BurritoMeat_T02_Duration = 1800
Food_Dough_BurritoMeat_T02_Mastery = 10
Food_Dough_CornCasabe_T02_Duration = 900Armor sets, set bonuses, and jewelry effects. CurveTable: CT_Armor_GE_Values.
18 sections, 113 keys total.
Armor Sets: Armor_Bandit, Armor_Brigant, Armor_Conquistador, Armor_ConquistadorLegacy, Armor_Flibustier, Armor_Mercenary, Armor_Pikeman, Armor_Starter, Armor_Vanilla
Set Bonuses: Bandit_SetBonus, Conquistador_SetBonus, Flibustier_SetBonus, Mercenary_SetBonus, Pikeman_SetBonus, Vanilla_SetBonus
Jewelry: Jewelry, Necklaces, Rings
Armor: {Set}_{Slot}_Armor where slot is Feet, Hands, Head, Legs, Torso.
[Armor_Bandit]
Armor_Bandit_Feet_Armor = 0
Armor_Bandit_Hands_Armor = 0
Armor_Bandit_Head_Armor = 0
Armor_Bandit_Legs_Armor = 0
Armor_Bandit_Torso_Armor = 0Land and naval entity base stats (creatures, NPCs, bosses). CurveTable: CT_CharactersAttributes. Values are absolute.
91 sections (73 land + 18 naval), 1406 keys total.
Creatures: AlphaWolf, Boar, BoarCharger, BoarF, BoarFriendLvl2, BoarMega, Crab, Crab_Drowned, Crocodile, CrocodileCorrupted, CrocodileFriend, CrocodileWhite, Deer, Dodo, DodoF, GoatBig, GoatF, GoatM, Heron, Jaguar, Wolf, Wolf_Ashen, Wolf_Ashen_Alpha
NPCs: BlackBeard_Heavy_Hooker, BlackBeard_Heavy_Marauder, BlackBeard_Regular_* (5 types), EnglishOfficer, EnglishSoldier_* (2 types), SenkamatiCorrupted_* (6 types)
Bosses: BossIsrael_{1-3}pl_{Easy,Normal,Hard} (9 variants), BossToad_{1-3}pl_{Easy,Normal,Hard} (9 variants), Boss_Boatswain_{1-3}pl_{Easy,Normal,Hard} (9 variants)
Other: Boneman, Boneman_Range, Drowned_Armored, Drowned_Naked, Drowned_Spitter, Dummy, Zombie
Naval_Boar, Naval_Crab, Naval_Crocodile, Naval_CrocodileWhite, Naval_Deer, Naval_Dodo, Naval_DodoF, Naval_Dummy, Naval_EnglishOfficer, Naval_EnglishSoldier_Halberd, Naval_EnglishSoldier_Saber, Naval_FeralFist, Naval_FeralMace, Naval_FeralMachete, Naval_FeralSaber, Naval_Hero, Naval_Jaguar, Naval_Mosquitos
Every entity has the same attribute set (key names are unqualified within each section):
| Key | Example (AlphaWolf) | Description |
|---|---|---|
Armor |
25 |
Armor value |
AttackPwr |
240 |
Attack power |
DefencePwr |
240 |
Defence power |
Health |
2240 |
Current health |
MaxHealth |
2240 |
Maximum health |
MaxPosture |
80 |
Maximum posture |
MaxStamina |
100 |
Maximum stamina |
Posture |
0 |
Starting posture |
PostureRegRate |
10 |
Posture regen rate |
Stagger |
0 |
Starting stagger |
StaggerDefence |
3 |
Stagger defence |
Stamina |
100 |
Current stamina |
StaminaRegRate |
75 |
Stamina regen rate |
The raw CurveTable key for each is {EntityName}_{Stat} (e.g., AlphaWolf_Armor).
Bosses have separate sections per player count and difficulty: Boss{Name}_{1-3}pl_{Easy,Normal,Hard}. Each variant has independent stats, allowing fine-grained difficulty tuning.