Latest Updates

Stay informed about the latest news and changes in Primal Conquer.

🔄

Primal Launcher Release 1.1.0

•By Uni
launcher @ main
Favorites Bar

- Hovering a favorite card now shrinks it slightly with a drop shadow instead of lifting it (the top border no longer disappears behind the bar)
- A "Select" label appears below the card on hover, showing "✓ Selected" in the accent color when that favorite is the active one
- Favorite cards are now a consistent height and size regardless of whether they have an account attached
- The bar highlight now follows your current server/client/account/proxy selection in the sidebar — you no longer have to click a favorite to see it highlighted

Account Registration

- The registration form now shows a clear error message in the form when registration fails, instead of failing silently
- Pressing **Enter** in any registration field submits the form (when it's valid)
- In release builds, failure messages are user-friendly; detailed errors are only shown in dev builds

Security

- Stored account credentials are now encrypted with AES-256-GCM (authenticated encryption), replacing the previous scheme. The encryption key is randomly generated and protected by your user account, rather than derived from guessable machine details

Under the Hood

- The entire launcher frontend has been migrated to TypeScript, with the IPC boundary between the UI and backend now fully type-checked — fewer silent runtime bugs from typos or drifted data shapes
- The backend was refactored into smaller, focused services, and the automated test suite grew from ~110 to over 500 tests, covering clients, accounts, updates, effects, settings, and the IPC contract
- Various correctness, stability, and security fixes surfaced by a full code audit
🔄

Primal Launcher Release 1.0.1

•By Uni
launcher @ main
Fixes

- Updating from a previous version now properly removes leftover files from the old launcher (e.g. CefGlueBrowserProcess, stale DLLs and debug symbols)
- User data (installed clients, configuration, logs) is preserved during updates
🔄

Primal Launcher Release 1.0.0

•By Uni
launcher @ main
Primal Launcher has been completely rebuilt from the ground up with a modern web-based interface, replacing the previous Avalonia desktop UI. Every feature has been carried over and improved.

 

New Interface
 
- Fully redesigned UI built with Vue 3, Tailwind CSS, and the Outfit font family
- Glass-panel aesthetic with ember particle effects and smooth transitions
- Custom window chrome with frameless title bar and native window controls
- Splash screen with Primal logo on startup
- Window size and position are now remembered between sessions

 

New Themes
- Conquer Classic — a nostalgic redesign inspired by the 2003 conqueronline.com website
- Win95 — authentic Windows 95 look with a classic menu bar
- WinXP Luna — Windows XP Luna theme with the iconic blue title bar
- Theme selector accessible from launcher settings
- Theme-specific UI elements adapt to each style (menu bars, button shapes, fonts)
and more..

 

Tutorial & First Run
 
- Guided first-startup wizard walks new users through initial setup
- 12-step interactive tutorial with spotlight overlay highlighting each UI element
- Clippy makes a cameo in the WinXP theme tutorial

 

System Tray
 
- Minimize to system tray instead of closing
- Quick-launch favorite characters directly from the tray icon
- Tray context menu for common actions

 

Terminal Panel
 
- Persistent terminal panel at the bottom of the window replaces transient progress toasts
- Real-time output for installs, updates, and patching operations
- Parallel progress bars when multiple operations run simultaneously
- Spinning cursor animation during active tasks

 

Client Management
 
- Bulk operations for managing multiple clients and accounts
- Tag-based filtering for organizing game clients
- Confirmation dialogs before destructive actions (uninstall, remove account)
- Native folder picker for selecting client install locations

 

Favorites & Quick Launch
 
- Fire emblem icons for favorited characters
- Proxy server selection per favorite
- Quick-launch favorites from the client combo button or system tray

 

Audio & Notifications
 
- Native alarm sound playback for scheduled events (no more browser audio quirks)
- Desktop notifications for event reminders

 

About & Updates
 
- Release notes viewable directly in the About screen
- Launcher self-update now properly cleans up files from previous versions

 

Under the Hood
 
- Native AOT compiled — faster startup, smaller memory footprint, no .NET runtime dependency
- Single-instance enforcement prevents multiple launcher windows
- Crash handlers with automatic error reporting
- Administrator elevation requested only when needed (Release builds)
- Significantly smaller install size

 

🔄

docs: add whole-codebase modernization plan (14 phases + DI + event bus)

•By Moh
changelog @ dawn

- MODERNIZATION_PLAN: master doc (Parts A-F) — stratified-legacy map, target

modular-monolith, 6 design principles, Managers/partial folder convention,

the 4 proven in-repo templates, 14-phase roadmap, feedback/sacred-cows

- MODERNIZATION_BUS: spec for a source-generated, sync, zero-alloc domain-

event bus (struct messages, [DomainEventHandler] + [Order], Roslyn

generator emitting PublishCore dispatch; full event catalog; async

side-effects via background channels; when-NOT-to-bus discipline)

- MODERNIZATION_FILE_MAP: strict per-file responsibility map for all 1,240

files (becomes / DI lifetime / bus role / owning phase)

- MODERNIZATION_SAFETY: production rollout protocol — baseline stabilization,

dual-crypto-mode test gate (UseTQCrypto drives 18 branch sites), deploy

gate via update-primal-dev, per-phase rollback, no-behavior-change invariant

- PHASE_0..14: per-phase detail (generic host + MS.DI scaffolding, dead-code

purge, clock unification, Pipelines network, MySqlConnector async DB,

AssemblyLoadContext scripts, Kernel split into 5 DI services, WorldClient

partials, ReceiveDamage via the bus, Vision spatial index, combat/inventory/

social/scripting vertical slices, nullable+polish)

🔄

feat: add /stars GM command to test perfection/legendary glow

•By Moh
changelog @ dawn

- Sets the equipped weapon's Stars field (MsgItemInfo offset 72 = CItem+0x1E4,

the client StoredQualityValue / perfection tier) and re-sends item-info

- Client renders the glow client-side: >=9 Sacred, >=27 Legendary, plus the

Star->King tier plate; no client patch or asset needed

- Transient test only (not persisted) to confirm the legendary-glow mechanism

🔄

feat: add Fire of Hell legendary hidden attribute (Effect 205)

•By Moh
changelog @ dawn

- Add ItemEffect.FireOfHell = 205 plus Equipment.HasEquippedEffect, a

deterministic all-slots check (this passive attribute can sit on any item,

unlike the weapon-only chance-based GetItemEffect)

- Gate Fire of Hell's wide monster-only AoE behind an equipped 205 item:

radius reads from magictype 10205 (in-memory Kernel.Spells), falls back to

12, and non-legendary casts fall through to the normal spell.Range path

- Finish the Shield/Stigma split: the Shield reborn case now casts 10203

(MagicShield) in both MeleeHandler and MagicHandler instead of the Stigma

spell 10204, so the two effects no longer collide

🔄

refactor: drop Stigma-to-Shield reborn-effect workaround

•By Moh
changelog @ dawn

- Remove the Stigma->Shield Effect swap and the +1 spell bump in both

EquipItem paths so Shield(203) injects spell 10203 and Stigma(204) injects

spell 10204 cleanly, instead of being conflated onto 10204

- Remove the matching 10203->10204 bump in GetItemEffect's spell lookup

- The client tooltip now maps each effect value to its own hidden-attribute

string, so 204 no longer needs to masquerade as 203 to render a line

🔄

fix: default seasonal master gates to false so they don't auto-start on boot

•By Moh
changelog @ dawn

- Halloween/Xmas/ThanksGiving/Valentine/Anniversary/Easter Enabled flags were true,

and seasonals are flag-gated ONLY (no date schedule), so ProcessWorldWide started

all six WorldWide instances immediately on every boot — regressing the legacy

dormant-by-default behaviour where a GM had to /createpve to turn one on

- Flip all six to false; seasonals now stay dormant until a GM runs /createpve

(ForceStartScheduled ignores the gate) or sets the flag true at runtime

- The scheduled wars (GWEnabled/CWEnabled/CPKEnabled) stay true: they have a weekly

schedule window too, so a true flag is harmlessly inert until the window opens —

the two-layer (flag AND window) gating the comment now documents

- Updated the comment to record the flag-only-vs-flag-and-window distinction

🔄

docs: refresh event_framework.md for the north-star refactor

•By Moh
changelog @ dawn

- Status banner: Phases 0-5 done, Phase 6 N/A (Arena aligned-by-design)

- Phase 5 section: seasonals + all 4 wars moved fully out of World (Map.ActiveEvent dispatch, Seasonal/War seams, state on Tag)

- Roadmap table updated

🔄

refactor: route Item non-droppable check through Seasonal

•By Moh
changelog @ dawn

- Valentine.Items.Contains -> Seasonal.Config("valentine")?.Items for the non-droppable quest-item check

🔄

refactor: make EventEngine the sole driver of all events in WorldTask

•By Moh
changelog @ dawn

- Remove the direct Anniversary/Easter/Xmas/Halloween/ThanksGiving OnTick calls (engine drives them via ProcessWorldWide)

- TournamentOfPower keeps its direct tick (left dormant, not an engine citizen)

🔄

refactor: route ArenaGuard through War

•By Moh
changelog @ dawn

- ClassPKs.Active/StartDate -> War.ClassPkActive/War.ClassPkStartDate (reload-safe ClassPkState)

🔄

refactor: route City War TCCaptain through War

•By Moh
changelog @ dawn

- CityWars.Active/Captain roster -> War.CityWarActive + War.CityWarHasClient(1505, CPUHash)

🔄

refactor: read GuildWar gate SOBs directly in MsgAction gate-walk

•By Moh
changelog @ dawn

- Fetch LeftGate/RightGate SOBs by UID and read their Lookface/HP instead of the GuildWar static gate handles

- Keeps the anti-cheat gate-walk block working with no GuildWar class reference

🔄

feat: add reload-safe war state containers (PoleWarState/DisCityState/ClassPkState)

•By Moh
changelog @ dawn

- PoleWarState: GuildWar/CityWar runtime state (Scores/Stats/Winner/gates/round flags/CityWar client roster) parked on EventInstance.Tag

- DisCityState: 4-stage raid state (sign-up/Pluto/stage counts/PlutoSlayer)

- ClassPkState + ClassPkArena: per-profession arena battle-royale state

- Declared in World (not a script) so the TYPE identity survives a ruleset hot-reload — live state isn't orphaned when the war script recompiles mid-siege

1/124