Skip to content

Latest commit

 

History

History
670 lines (512 loc) · 32.5 KB

File metadata and controls

670 lines (512 loc) · 32.5 KB

Windrose+ Configuration Reference

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.)

windrose_plus.json (Basic Config)

This file is created automatically on first start. Edit it for common server-owner changes.

multipliers

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, and weight are disabled because inventory-affecting changes can become part of player save state after login/save and can crash Windrose's inventory validator.
  • crop_speed is disabled because non-default crop timing can crash Windrose's crop validator.
  • points_per_level is disabled because changing progression rewards can create RewardLevel < CurrentLevel character-save crashes. The dashboard Character Repair page can repair the known no-spend drift case from a zipped local SaveProfiles folder.
  • Disabled keys are ignored by the PAK builder and dashboard PAK-status check. They do not trigger generated multiplier PAK output.
  • xp is ratcheted: once a value above 1 has been built, lowering it is refused because the shrunken reward curve can lock existing characters out on next login. Back up SaveProfiles, then either delete windrose_plus_data\.windroseplus_multiplier_history.json or set WINDROSEPLUS_ALLOW_DOWNGRADE=1 for one build.
  • To keep Windrose+ runtime features but disable generated multiplier PAKs, set WINDROSEPLUS_DISABLE_MULTIPLIER_PAK=1 before StartWindrosePlusServer.bat. This removes/skips R5\Content\Paks\WindrosePlus_Multipliers_P.pak and windrose_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 move R5\Content\Paks\WindrosePlus_Multipliers_P.pak and all three parts of the CurveTable container (WindrosePlus_CurveTables_P.pak, .utoc, .ucas), then delete windrose_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
    }
}

rcon

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.

query

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.

admin

Key Default Description
steam_ids [] JSON array of Steam IDs treated as admins.

poiscan

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).

server

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": ""
    }
}

livemap

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.

Layout Runtime Provider (Optional)

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.


windrose_plus.harvest.ini (Per-Resource Yield)

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.0

Combined 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)

[Resources]

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.


windrose_plus.ini (Main Config)

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]

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)

[Multipliers]

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.

[PlayerStats]

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)

[Talents]

Talent tree values for all 4 specializations. DmgMod values are percentages as decimals (0.03 = 3%). CurveTable: CT_TalentData.

Crusher (Heavy Melee)

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

Fencer (Light Melee)

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)

Marksman (Ranged)

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

ToughGuy (Tank/Survival)

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.

[CoopScaling]

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

[RestEffects]

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]

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

[SharedCombatEffects]

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]

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

windrose_plus.weapons.ini

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.

Sections

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

Key naming pattern

{WeaponType}_{Variant}_{Stat} where variant includes tier (T00-T03) or named variants (e.g., Dragonbreath, Reliable, Blank).

Common stats per weapon

  • BaseDamage -- base damage value (typical range: 100-400)
  • MaxPostureAdd -- posture damage bonus
  • PostureDmgMod -- posture damage modifier
  • CritDmgModAdd -- critical damage modifier
  • ArmorPenAdd -- armor penetration
  • AttackPwrMod -- attack power modifier
  • UI effect values (UI_Effect1, UI_Effect2) for special procs

Example entries

[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 = 180

windrose_plus.food.ini

Food, 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.

Sections

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

Key naming pattern

{Category}_{ItemName}_{Tier}_{Stat} -- e.g., Food_Dough_BurritoBeans_T03_Duration.

Common stats per food item

  • Duration -- buff duration in seconds (typical: 900-1800)
  • MaxHealth -- max health buff (typical: 80-160)
  • MaxStamina -- max stamina buff
  • StaminaRegenRate -- stamina regen buff
  • Fortitude -- fortitude attribute buff (typical: 5-20)
  • Mastery -- mastery attribute buff (typical: 5-20)

Example entries

[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 = 900

windrose_plus.gear.ini

Armor sets, set bonuses, and jewelry effects. CurveTable: CT_Armor_GE_Values.

18 sections, 113 keys total.

Sections

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

Key naming pattern

Armor: {Set}_{Slot}_Armor where slot is Feet, Hands, Head, Legs, Torso.

Example entries

[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 = 0

windrose_plus.entities.ini

Land and naval entity base stats (creatures, NPCs, bosses). CurveTable: CT_CharactersAttributes. Values are absolute.

91 sections (73 land + 18 naval), 1406 keys total.

Land entities (73)

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 entities (18)

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

Common stats per entity

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).

Boss scaling pattern

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.