Skip to content

Fix texture flicker in Unicorn Way (WC_Unicorn) - #149

Open
alberto-is wants to merge 3 commits into
Revive101:quality-assurancefrom
alberto-is:feat/dynamod-debug-commands
Open

Fix texture flicker in Unicorn Way (WC_Unicorn) #149
alberto-is wants to merge 3 commits into
Revive101:quality-assurancefrom
alberto-is:feat/dynamod-debug-commands

Conversation

@alberto-is

Copy link
Copy Markdown
Contributor

Fixes (partially): #140

Fixes the "extreme bugginess with textures" reported in Unicorn Way. The static wall foliage was flickering between a green and a withered state. Those two states come from two zone-wide ambient effects that overlap each other: WC_Rattlebones_ButterFlyZone instance (green ivy) and WC_Rattlebones_FogZone instance (withered ivy + fog).

Also adds the new dynamod debug commands (list, set, toggle, remove) used to diagnose and manage character dynamods at runtime.

Root cause

Unicorn Way renders two overlapping zone-wide ambient effects, both spawned by the server as dynamic objects:

  • WC_Rattlebones_ButterFlyZone instance renders the green ivy (butterflies).
  • WC_Rattlebones_FogZone instance renders the withered ivy + fog.

When both flags are active the two textures overlap, which produces the z-fighting/flicker between green and withered as the player moves.

In addition, the missions did not manage these flags correctly:

  • WC-COMMONS-MAIN-001 turns ButterFlyZone to off.
  • WC-UNICORN-MAIN-007 turns FogZone (and WC_Debris) to off.
  • No mission ever turned ButterFlyZone back to on, so after completing the zone both flags ended up off and the "revived" green state never appeared.

Changes

  1. New characters default the WC_Rattlebones_ButterFlyZone instance dynamod to off at creation (Wizard.cs), so the object is not spawned for them until it is turned on.
  2. Default spawn moved to the Headmistress House (WizardCity/Interiors/WC_Headmistress_House), where the first quest is given, so new players pick it up immediately and the problem resolves itself. This also helps with the first mission not appearing for fresh characters.
  3. Added dynamod debug commands (list, set, toggle, remove) for QA to manage dynamods at runtime and isolate similar zone effects.

Dependencies

This fix also depends on another pull request in spiraldb. There, the corresponding mission was fixed so it flips the WC_Rattlebones_ButterFlyZone instance flag to on (before turning the fog off), so the green "revived" state actually appears after completing the zone. Without that quest-side change, ButterFlyZone stays off and no green shows.

Verification

  • The culprit was isolated by toggling the effects off with the new dynamod debug command.
  • With ButterFlyZone = on and FogZone = off, the green ivy appears on its own (the intended revived look) and remains stable.

Notes

  • This PR resolves the texture bugginess in Unicorn Way.
  • It does not yet address the random white flashes that occur when standing in certain spots; that remains an open issue.

Adds the dynamod command group (list, set, toggle, remove) for QA use to manage a character's dynamods at runtime, enabling isolation of objects the server should not spawn (e.g. client-rendered zone effects).
Adds the dynamod command group (list, set, toggle, remove) to the commands reference.
New characters now spawn with the WC_Rattlebones_ButterFlyZone instance dynamod set to off (Wizard.cs), so the client-rendered zone effect is no longer spawned by the server and no longer overlaps the static scene. The default spawn also moves to the Headmistress House (Imlight.ini), where the first quest is given, so players pick it up immediately and the issue resolves itself.
@Jooty
Jooty self-requested a review August 8, 2026 15:11
Comment on lines +159 to +168
// Client-rendered zone effects must not be spawned by the server, as the
// duplicated copy overlaps the static scene and causes texture flicker
// (e.g. the wall foliage in Unicorn Way). Default these off so new
// characters don't need the first quest to fix it.
DynamodSet.AddDynamod(new Dynamod {
ZoneName = "",
ClientTag = "WC_Rattlebones_ButterFlyZone instance",
ModState = "Off"
});

@Jooty Jooty Aug 12, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should stray away from setting dynamods through code, because it's adding a second maintainability layer.

Let the quest results handle dynamod changes. If a player forces a teleport outside the starting zone, assume they know what they're doing and that things WILL be broken.

@Jooty Jooty left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good commands. PR ties with Revive101/spiraldb#1 (good catch).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants