Files
AdamuSw/docs/superpowers/specs/2026-07-19-poison-wings-design.md

2.5 KiB

Add Poison Wing & Poison Cape — Design

Date: 2026-07-19 Status: Approved Scope: Add TWO wing items (basic: render + equippable + base defense). Source pack: C:\Users\efpa\Downloads\asa devilzmu\asa devilzmu\6 (Wing241, Wing242).

Items

Item Slot (group/number) Model Name Classes
Wing241 12 / 240 MODEL_WING+240 Poison Wing Dark Knight
Wing242 12 / 241 MODEL_WING+241 Poison Cape Dark Lord + Rage Fighter

Wings are item group 12; MODEL_WING = MODEL_ITEM + ITEM_WING (12*512), so item (12, N) auto-maps to model MODEL_WING + N. Numbers 240/241 are high/free in standard S6. Model files Wing241.bmd/Wing242.bmd load at MODEL_WING+240/+241 (filename Wing{N} where N=number+1).

Client (vendor/MuMain → D:\AdaMu\AdaMu)

  1. ZzzOpenData.cpp OpenItems(): AccessModel(MODEL_WING+240, L"Data\\Item\\", L"Wing", 241) and +241 → "Wing242". OpenItemTextures(): OpenTexture(MODEL_WING+240/241, L"Item\\").
  2. Copy Wing241.bmd + its texture, Wing242.bmd + its texture → Data\Item\. Extract the BMD's referenced texture names (decrypt) and copy the matching files (the pack ships .ozt/.tga; the engine loads the encrypted .OZT/.OZJ, so provide those; missing effect textures now log instead of blocking).
  3. Item_eng.bmd: add name/stat records at slots 12/240 ("Poison Wing", DK) and 12/241 ("Poison Cape", DL+RF), via the 84-byte-record binary patcher (see android-add-new-weapon-item). Slot field = wing slot.
  4. Rebuild main.exe + deploy.

Server (AdamuSw)

  1. VersionSeasonSix/Items/Wings.cs: new method CreatePoisonWings() with two CreateWing calls — CreateWing(240, W, H, "Poison Wing", ...DK flag...) and CreateWing(241, W, H, "Poison Cape", ...DL+RF flags...), basic defense + level table, minimal options. W/H from the item icon size (default 12x12 or per pack).
  2. Register in Wings.Initialize() (fresh seed) + update-plugin AddPoisonWingsUpdateSeason6.cs (UpdateVersion=98, idempotency guard on 12/240).
  3. docker build + apply via AdminPanel → Updates (existing DB) / auto on fresh seed.

Verify

Give the wings to a character (AdminPanel/inventory edit), equip in the wing slot, confirm: correct name/stats in tooltip (from Item_eng.bmd), 3D model renders on the character's back, class restriction enforced.

Out of scope

Wing options (excellent), flight, per-level ancient/socket bonuses, balance. Just render + equip + base defense.