charsheet.swf
The Character Sheet window in Trove, opened from the main HUD. It shows the player's equipped gear slots, class abilities, stats, name/title, patron status, XP/mastery progress, and houses four tabs: Character, Gems, Rewards (Mastery), and PVP.
Document/main class: CharSheet (extends _kiwi.Core.UIComponent)
SWF-specific classes: 17 (excluding asset wrappers and framework files)
Main class: CharSheet
CharSheet is the root document class for the character sheet window. The constructor registers three frame scripts (frames 1, 11, 21), initialises all gear Slot instances with sizes, assigns numeric slot IDs (positive on console, negative for cosmetics on PC), populates the tab array, wires the mastery and PvP reward data sources, and — when running inside Iggy — registers all ExternalInterface callbacks that the game engine calls to push data in.
On console, an ENTER_FRAME listener delays full initialisation until onTargetFrame() is true, then sets up navigation arrays and calls onSlotEnter(1).
Public methods
rewardLevel : Number(get/set) — ReturnsmetaLevelorbattleLeveldepending on which rewards panel is visible; setter routes the value to the appropriate field.onEffectsClick(e:MouseEvent = null) : void— CallsExternalInterface.call("OpenEffectsViewer").ConfirmPressed() : *— Console confirm handler; delegates to Trove/Geode mastery button click ormasteryRewards.ConfirmPressed().setName(name:String) : void— Setsheader.title.addStat(id:int, label:String, value:String, desc:String, dimmed:Boolean = false) : *— Creates aStatRowand appends it tostatList1orstatList2(overflows after 20 rows); tracks it inrowsDictionary by id.updateStat(id:int, value:String, desc:String, dimmed:Boolean = false) : *— Looks up theStatRowinrowsand updates value/description; sets color toREDifdimmed, elseWHITE.setClassInfo(className:String, classLevel:Number, paragon:Number, totalLevel:Number, isTrial:Boolean, shieldFrame:int, wingsFrame:int) : void— Formats$CharSheet_LevelClassstring from the class level, appends$ClassNameTrialSuffixif trial, writestotalLeveltototalLevelTextField, updates power-rank icon frames. The third argument is the class's Paragon total, which the stock screen does not display.setAbility(slot:uint, iconImage:String, displayName:String, description:String, type:String, isActive:Boolean) : void— Populates one of the fiveArtClipability icons; slot 4 (sub-class) also hidesnoSubClassAnim.displayNameis the ability's own name;typeis a label for the slot (SubClasson the sub-class slot, whatever the character), unused by the stock screen.isActivepicks frame 2 ofabilityFrameN.lockSubClassAbility() : void— HidesnoSubClassAnimand disablesabilityFrame5.resetSubClassAbility() : void— ShowsnoSubClassAnimand re-enablesabilityFrame5.addNameColor(label:String, id:int) : void— Adds an item tom_nameColorComboBox.selectNameColor(id:int, color:uint) : *— Selects matching item in combo box; setsheader.winTitleTextField.textColor.HandleDirectionInput(dir:int) : *— Console directional navigation for the name-color combo box.setMetaRewardSection(trackId:int, sectionId:int, label:String, desc:String, expandable:Boolean, collapsed:Boolean) : void— CallsmasteryRewards.rewardsView.addSection(...)and invalidates DATA.ChangeMetaTrack(dir:int) : *— Switches between Trove and Geode mastery tracks; handles both section-selected and top-level highlight states.setSelectedTrack(track:int) : void— Syncsm_TroveMasteryBtn/m_GeodeMasteryBtnchecked state and mastery icon frame ("trove"/"geode"). The engine owns the selection: the buttons sendOnMasteryButton(0|1)and the engine switches the track it reports.clearMastery() : void— ClearsmasteryRewards.rewardsViewand unhighlights both mastery buttons.setupMetaRewards(section:int, row:int) : void— Marks reward view dirty, callsmasteryRewards.setupMetaRewards, then callsExternalInterface.call("ShowMasteryTooltip", ...).setupPvPRewards(count:int, level:int) : void— CallspvpRewards.setupRewards(count)and setsrewardLevel.unlockReward(index:int) : void— Finds theRewardTileatindexin the visible rewards panel and callssetLocked(false).setMetaLevel(isPvP:Boolean, level:Number, xpPercent:Number) : void— UpdateslevelTextFieldusing$CharSheet_BattleHeaderor$CharSheet_MasteryHeader, resizes font, setsxpBar.width.xpPercentis a 0–1 fraction toward the next rank. For mastery the engine reports only the currently selected track (Trove or Geode), and re-sends the current rank on refreshes.enableTab(tabId:int, visible:Boolean) : void— Shows/hides a tab and invalidates STATE so tab Y positions restack.onSlotEnter(slotIndex:int) : void— Console hover highlight: shows tooltip for gear slot or applies glow/label-button/ArtClip highlight for informational items.onSlotLeave(slotIndex:int) : void— ReversesonSlotEnterhighlight.onSelectionActivated(index:int) : void— Console confirm on a selection: callsSLOT.ACTIVATE,OnShowStats,showSubClassSelector, orOpenTitlesSelectorviaExternalInterface.scrollBarTranslate(delta:Number) : void— Scrolls the active reward list (mastery viaHandleStickChange, PvP via direct scrollV increment); also manages console mastery-track highlight.showBoosterLegend(showBoosters:Boolean) : void— SwitchesbuttonLegendframe to "Boosters"/"Gems" (with "Loc" suffix for non-EN/ZH locales).
Key fields
rows : Dictionary— Maps stat id (int) →StatRowinstance forupdateStatlookups.gearSlotArray : Array— Ordered list of all 18 gearSlotinstances used for console navigation. No callback carries gear: the engine fills these slots by writing into the timeline instances by name (gearHat,gearWeapon,skin, …), so the instance names are part of the contract.powerRankTextField,m_totalMastery : TextField— Written by the engine directly, not through a callback: the power-rank figure, and the total mastery rank shown on the Rewards tab (the engine also rewrites its formatting). The stock code only positions, shows and hides them.informationalSelections : Array— Secondary navigation targets (patronBadge, powerRankIcon, totalLevelTextField, stat/effects buttons, ability icons, editNameColor).tabs : Array,tabOrigin : Array— Tab MovieClips and their original Y positions; recompacted when tabs are hidden.masteryRewards : MetaRewards,pvpRewards : PvPRewards— Sub-component MovieClips embedded from_assets/assets.swf.masteryDataSource : MetaRewardRowExternalDataSource,pvpDataSource : PvPRewardRowExternalDataSource— Pull data via Iggy external calls (GetMetaRowData/GetPvPRowData). The engine answers inside the call by writing the row's fields into the source's shared publicrowData, whichgetDatacopies into the view and then clears, one row at a time.patronStatus : Boolean,patronOnTitle/Content : String— Patron badge display and tooltip strings (translated from$CharSheet_PatronActive,$CharSheet_PatronBonuses).level, xpPercent, metaLevel, battleLevel : Number— Track current level display state.m_currentTrack, m_highlightedTrack : int— Active and console-highlighted mastery track (0 = Trove, 1 = Geode).xpBarMaxWidth : Number— Cached full width ofxpBar; used to scale bar byxpPercent.
Frame scripts / timeline
- frame 1 (
frame1, labelPC) —stop(). Default stopped state. - frame 11 (
frame11, labelConsole) —stop(). Second stopped state (console variant). - frame 21 (
frame21, labelConsoleLoc) —stop(); callspatronStatsBubble.gotoAndStop("ConsoleLoc"). Console localised patron bubble.
Runtime dependencies & integration
ExternalInterface callbacks registered (Iggy receives from engine):
addNameColor, selectNameColor, MoveDropdown, addStat, updateStat, setName, setClassInfo, setAbility, lockSubClassAbility, resetSubClassAbility, setTitle, setPatronStatus, showTab, enableTab, setupPvPRewards, setupMetaRewards, setMetaRewardSection, unlockReward, setMetaLevel, clearMastery, setSelectedTrack, ChangeMetaTrack, masteryRewards.CancelPressed, masteryRewards.ConfirmPressed, onSlotEnter, onSlotLeave, onSelectionActivated, onStatsClick, onEffectsClick, scrollBarTranslate, showBoosterLegend, UIComponent.onStageResized
ExternalInterface calls (Flash → engine):
OnMasteryButton (0 = Trove, 1 = Geode), showSubClassSelector, OpenTitlesSelector, OnSelectNameColor, OnShowTab (0 = Character, 1 = Gems, 2 = Rewards, 3 = PvP), POST_SOUND_EVENT, ShowMasteryTooltip, ShowPowerRankTooltip, ShowPowerRankBreakdown, HideTooltip, OpenEffectsViewer, CloseWindow, CheckEmotesCount, OnDropIntoWindow, SLOT.ACTIVATE, OnShowStats, showColorNameComboBox, SetMenuInformation (console init), PositioningButtons (NX only)
Translate keys: $CharSheet_PatronActive, $CharSheet_PatronBonuses, $CharSheet_LevelClass, $ClassNameTrialSuffix, $CharSheet_BattleHeader, $CharSheet_MasteryHeader, $CharSheet_Stats, $CharSheet_Effects, $CharSheet_Trove, $CharSheet_Geode
Drag-and-drop: SlotDragDropHelper.registerDropCallback(onDrop) — hit-tests dropped items against a subset of gear slots (gearCart, gearFace, gearHat, gearMount, gearPet, gearRing, gearWeapon, gearEdible, appearanceWeapon, appearanceHat, appearanceFace, skin, gearPVPBanner, in that order) and calls OnDropIntoWindow(sourceEntityId, sourceComponent, sourceSlotId, slotName, extra), reporting the target by its instance name. The three appearance* slots are declared but not placed on the live timeline.
Locale branching: buttonLegend frame names get "Loc" suffix for non-EN/non-ZH locales. setButtonLegendFrameByTabId uses a 150 ms Timer to trigger NX button repositioning after frame change.
Stage resize: Overrides onStageResized to scale backBanner.height proportionally.
Other game-specific classes
MetaRewards(extendsUIComponent) — [Embed symbol260] Hosts aRowViewfor mastery/PvP reward tiles. Manages two-level console selection (section mode / row mode) viaHandleStickChange;ConfirmPressed/CancelPressedtoggle modes and can callExternalInterface.call("CloseWindow"). Drives scroll position calculation based on section heights.PvPRewards(extendsMetaRewards) — [Embed symbol258] Thin subclass; adds frame 2 stop script.RowView(extendsDynamicRowView) — [Embed symbol259] Virtualised reward tile list.setupRewardsconfigures for mastery (section-based) or PvP (flat single section).UpdateSelectedObjecthighlights tiles and triggersShowMasteryRewardTooltip.onHeadingClickcollapses all other sections when one opens.RewardTile(extendsDynamicRowViewRow) — [Embed symbol109] Single reward row: iconSlot,RewardLevelbadge, descriptionTextField.setLockedappliesGhostedFilter. Tooltip callsShowMasteryRewardTooltip/HideTooltipon hover.RewardLevel(extendsUIComponent) — [Embed symbol106] Tiny badge showing the integer mastery level required.setLevel(n)writes tolevelText.MetaRewardSection(extendsDynamicRowViewSection) — [Embed symbol133] Section header for mastery reward rows; shows/hides alockedIconchild viaexpandablesetter and ahighlightoverlay.MetaRewardRowData— Plain data-transfer object:level,description,textureName,locked,hideReward.MetaRewardRowExternalDataSource(extendsDynamicRowViewExternalDataSource) — Pulls row data via Iggy external functionGetMetaRowData/GetMetaSectionData.PvPRewardRowExternalDataSource(extendsDynamicRowViewExternalDataSource) — Pulls row data via Iggy external functionGetPvPRowData.MasteryBtn(extendsLabelButton) — [Embed symbol212] Multi-state button (9 frame-stop states at frames 10, 20, 30, 40, 50, 60, 70, 80, 90).SubClassAbilityFrame(extendsBaseButton) — [Embed symbol282] Four-state button frame for the sub-class ability slot (frames 1, 11, 21, 31).PvPRowView(extendsRowView) — [Embed symbol250] Thin subclass; re-applies vScrollbar component inspector settings.Image— Thin asset-wrapper clip (not detailed further).dummy— Placeholder class, no logic.
Asset-wrapper skin classes (16 total): CellRenderer_*Skin (7 states), ComboBox_*Skin (4 states), ScrollArrow*_*Skin (8), ScrollThumb_*Skin (3), ScrollTrack_skin, List_skin, focusRectSkin, slot_large, rewardBGPVP, btnArrowLeft, btnGreen_small, btn_console_analog_top_left, btn_pencil.
Rarity-frame bitmap assets (44 total): rarity_frame_<tier>_png and rarity_frame_<tier>_large_png / *_over_png for tiers: common, uncommon, rare, epic, legendary, relic, crystal, mystic, radiant1, resplendent, shadow, stellar (some tiers also have non-png MovieClip variants: rarity_frame_stellar, rarity_frame_stellar_large).
CharSheet_fla timeline symbols (21): bannerTop_2, bannerBottom_5, innerBackground_6, slotFrame_10, equiped_11 (×2 variants), equipped_13, slotFrameLarge_23, equipedLarge_24, abilityFrame_29, btn_legend_41, tabHeader_mastery_72, tabHeader_char_73, tabHeader_pvp_74, tabHeader_gems_75, masteryIconMedium_80, statScreen2_103, patronpassicon_105, statScreen_26, CollapsedIcon_108, subcategoryHeader_107.
Notable logic
- Tab visibility reflow:
enableTabhides/shows tabs and invalidates STATE; thedraw()override re-assigns Y positions fromtabOriginskipping invisible tabs, keeping them visually contiguous. - Dual stat columns:
addStatplaces up to 20 rows instatList1, then overflows tostatList2;statList2.xis pinned tostatList1.xindraw(). - Console vs PC slot IDs: Gear slot
.datavalues differ in sign convention (console uses 1-based positive, PC uses 0 for skin and negative for cosmetics). The engine reads these IDs back viaSLOT.ACTIVATE. - Mastery scroll auto-position:
UpdateScrollBarcomputes pixel offset through section/row heights to keep the selected item visible without a standard scroll event. - Button legend locale branching: NX platforms additionally call
PositioningButtonsafter a 150 ms timer, triggered by tab changes.