// MVDataRoot// MVDataAssociatedFile = scripts/heroes.vdata// MVDataOverlayType = 1class CitadelHeroData_t{ void* __vftable;public: CUtlVector<HeroAnimGraphDefaultValueOverride_t> m_vecAnimGraphDefaultValueOverrides;private: uint8 pad_0020[8];public:HeroID_t m_HeroID; CUtlString m_strHeroSortName; CUtlString m_strHeroSearchName; // MPropertyStartGroup = Screen Space Particle FX CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_hDamageTakenParticle; CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_hGroundDamageTakenParticle; CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_hDeathParticle; CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_hLowHealthParticle; // MPropertyStartGroup = Visuals CPanoramaImageName m_strIconImageSmall; CPanoramaImageName m_strIconHeroCard; CPanoramaImageName m_strIconHeroCardCritical; CPanoramaImageName m_strIconHeroCardGloat; CPanoramaImageName m_strMinimapImage; CPanoramaImageName m_strTopBarVertical; CPanoramaImageName m_strLogoImageEnglish; CPanoramaImageName m_strLogoImageLocalized; CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_hRespawnParticle; Color m_colorUI; CResourceNameTyped<CWeakHandle<InfoForResourceTypeCModel>> m_strModelName; int32 m_nModelSkin; // MPropertyDescription = If specified, this model will be used if convar citadel_use_wip_models is true. CResourceNameTyped<CWeakHandle<InfoForResourceTypeCModel>> m_strWIPModelName; // MPropertyDescription = If specified, this model will be used in main instead of 'Model Name'. CResourceNameTyped<CWeakHandle<InfoForResourceTypeCModel>> m_strMainOnlyModelName; // MPropertyDescription = When set, also use the 'Main Only Model Name' in the Experimental branch bool m_bUseMainOnlyModelForExperimental; // MPropertyStartGroup = UI uint64 m_iAddedTime; // MPropertyAttributeEditor = AssetBrowse( vmap ) CUtlString m_strUIPortraitMap; // MPropertyAttributeEditor = AssetBrowse( vmap ) CUtlString m_strUIShoppingMap; // MPropertyAttributeEditor = AssetBrowse( vmap ) CUtlString m_strUITeamRevealMap; // MPropertyAttributeEditor = AssetBrowse( vmap ) CUtlString m_strUIPostgamePortraitMap;HeroStatsUI_t m_heroStatsUI;HeroStatsDisplay_t m_heroStatsDisplay;CitadelStatsDisplay_t m_ShopStatDisplay; // MPropertyStartGroup = Sounds CSoundEventName m_strDeathVOSound; CSoundEventName m_strDeathSound; CSoundEventName m_strLastHitSound; CSoundEventName m_strRosterSelectedSound; CSoundEventName m_strRosterRemovedSound; CSoundEventName m_strVoteRevealSound; CSoundEventName m_strLowHealthSound; CSoundEventName m_strHeroSpecificLowHealthSound; CSoundEventName m_strMovementLoop; CSoundEventName m_strPostGameVictorySound; CSoundEventName m_strPostGameDefeatSound; // MPropertyDescription = Teammate footstep sounds are relative to whoever we're spectating. CResourceNameTyped<CWeakHandle<InfoForResourceTypeCVSoundEventScriptList>> m_hGameSoundEventScript; CResourceNameTyped<CWeakHandle<InfoForResourceTypeCVSoundEventScriptList>> m_hGeneratedVOEventScript; float32 m_flStealthSpeedMetersPerSecond; // MPropertyStartGroup bool m_bInDevelopment; bool m_bAssignedPlayersOnly; bool m_bNewPlayerRecommended; bool m_bLaneTestingRecommended; bool m_bNeedsTesting; bool m_bLimitedTesting; bool m_bDisabled; bool m_bPlayerSelectable; bool m_bPrereleaseOnly; int32 m_nComplexity; // MPropertyDescription = Minimum bot match difficulty for this hero to appear as an ally bot. -1 = never. // MPropertyAttributeRange = -1 4 int32 m_nAllyBotDifficulty; // MPropertyDescription = Minimum bot match difficulty for this hero to appear as an enemy bot. -1 = never. // MPropertyAttributeRange = -1 4 int32 m_nEnemyBotDifficulty; // MPropertyStartGroup = Low Health Settings // MPropertyDescription = Percentage of health to be considered low health // MPropertyAttributeRange = 0 1 float32 m_flMinLowHealthPercentage; // MPropertyDescription = Percentage of health to be considered low health when you have high max health. // MPropertyAttributeRange = 0 1 float32 m_flMaxLowHealthPercentage; // MPropertyDescription = Percentage of health to be considered mid health // MPropertyAttributeRange = 0 1 float32 m_flMinMidHealthPercentage; // MPropertyDescription = Percentage of health to be considered mid health when you have high max health. // MPropertyAttributeRange = 0 1 float32 m_flMaxMidHealthPercentage; // MPropertyDescription = Min Max Health for Remapped Value float32 m_flMinHealthForThreshold; // MPropertyDescription = Max Max Health for remapped value float32 m_flMaxHealthForThreshold; // MPropertyDescription = How long a player is deemed in combat taking or dealing damage to a player float32 m_flInCombatWithHeroDuration; // MPropertyDescription = How long a player is deemed in combat taking or dealing damage to a non-player float32 m_flInCombatWithNonHeroDuration; // MPropertyDescription = How long a player is deemed in combat taking or dealing damage to a neutral trooper float32 m_flInCombatWithNeutralDuration; // MPropertyDescription = Show N/A for falloff numbers in gun panel. bool m_bNAGunFalloffRange; // MPropertyStartGroup CUtlOrderedMap<EStatsType, float32> m_mapStartingStats; CUtlOrderedMap<EStatsType, HeroScalingStat_t> m_mapScalingStats; CPiecewiseCurve m_groundDashPositionCurve; CUtlOrderedMap<EItemSlotTypes_t, CUtlVector<ModCostBonuses_t>> m_mapModCostBonuses;private: uint8 pad_0CD8[24];public: CUtlOrderedMap<EAbilitySlots_t, CSubclassName<4>> m_mapBoundAbilities; CUtlOrderedMap<EAbilitySlots_t, CSubclassName<4>> m_mapWIPAbilities; CUtlOrderedMap<EItemSlotTypes_t, ItemSlotInfo_t> m_mapItemSlotInfo;private: uint8 pad_0D68[80];public:EAbilityResourceType m_eAbilityResourceType; CUtlString m_strGunTag; CUtlVector<CUtlString> m_vecHeroTags;EHeroType m_eHeroType; CUtlString m_strRosterBackgroundLayout; CUtlString m_strHideoutRichPresence; // MPropertyMapKeyLeafChoiceProviderFn = !!UNKNOWN!! CUtlOrderedMap<CUtlString, float32> m_mapItemDraftWeights; // MPropertyMapKeyLeafChoiceProviderFn = !!UNKNOWN!! CUtlOrderedMap<CUtlString, float32> m_mapItemDraftCounterWeights;private: uint8 pad_0E48[24];public: CUtlOrderedMap<EModifierValue, float32> m_mapStandardLevelUpUpgrades; CUtlOrderedMap<int32, HeroLevel_t> m_mapLevelInfo; CUtlOrderedMap<EItemSlotTypes_t, CUtlVector<HeroPurchaseBonus_t>> m_mapPurchaseBonuses;};