docs: add plugin setup guide
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BSPointerHandle.h"
|
||||
#include "RE/N/NiColor.h"
|
||||
#include "RE/N/NiMatrix3.h"
|
||||
#include "RE/N/NiPoint3.h"
|
||||
#include "RE/N/NiPointer.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class BGSTextureSet;
|
||||
class NiAVObject;
|
||||
class NiNode;
|
||||
class TESObjectCELL;
|
||||
|
||||
class DECAL_CREATION_DATA
|
||||
{
|
||||
public:
|
||||
// members
|
||||
NiMatrix3 projection; // 00
|
||||
NiPoint3A origin; // 30
|
||||
NiPoint3A direction; // 40
|
||||
NiPoint3A surfaceNormal; // 50
|
||||
ObjectRefHandle objRef; // 60
|
||||
NiPointer<NiAVObject> avObj; // 68
|
||||
NiNode* clone; // 70
|
||||
BGSTextureSet* texSet; // 78
|
||||
BGSTextureSet* texSet2; // 80
|
||||
std::int32_t index; // 88
|
||||
float decalWidth; // 8C
|
||||
float decalHeight; // 90
|
||||
float decalDepth; // 94
|
||||
TESObjectCELL* parentCell; // 98
|
||||
float parallaxOcclusionScale; // A0
|
||||
NiNode* skinnedDecalNode; // A8
|
||||
float specular; // B0
|
||||
float decalEpsilon; // B4
|
||||
float placementRadius; // 0B8
|
||||
NiColor vertexColor; // BC
|
||||
std::uint32_t bodyParts; // C8
|
||||
std::uint8_t subTex; // CC
|
||||
bool permanent; // CD
|
||||
bool parallaxOcclusionShadows; // CE
|
||||
bool alphaTesting; // CF
|
||||
bool alphaBlending; // D0
|
||||
bool multiplicativeBlending; // D1
|
||||
std::uint8_t parallaxOcclusionMaxPasses; // D2
|
||||
bool modelSpace; // D3
|
||||
bool forceFade; // D4
|
||||
bool twoSided; // D5
|
||||
bool preprocessed; // D6
|
||||
bool manualSaveLoad; // D7
|
||||
std::uint32_t sceneGraphIndex; // D8
|
||||
float decalLifetime; // DC
|
||||
bool dynamic; // E0
|
||||
bool useGbufferNormal; // E1
|
||||
};
|
||||
static_assert(sizeof(DECAL_CREATION_DATA) == 0xF0);
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class DECAL_DATA_DATA
|
||||
{
|
||||
public:
|
||||
// members
|
||||
float decalMinWidth; // 00
|
||||
float decalMaxWidth; // 04
|
||||
float decalMinHeight; // 08
|
||||
float decalMaxHeight; // 0C
|
||||
float depth; // 10
|
||||
float shininess; // 14
|
||||
float parallaxScale; // 18
|
||||
std::int8_t parallaxPasses; // 1C
|
||||
std::int8_t flags; // 1D
|
||||
std::uint32_t color; // 20
|
||||
};
|
||||
static_assert(sizeof(DECAL_DATA_DATA) == 0x24);
|
||||
}
|
||||
@@ -0,0 +1,403 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
enum class DEFAULT_OBJECT
|
||||
{
|
||||
kSittingAngleLimit = 0x1,
|
||||
kAllowPlayerShout = 0x2,
|
||||
kGold = 0x3,
|
||||
kLockpick = 0x4,
|
||||
kSkeletonKey = 0x5,
|
||||
kPlayerFaction = 0x6,
|
||||
kGuardFaction = 0x7,
|
||||
kBattleMusic = 0x8,
|
||||
kDeathMusic = 0x9,
|
||||
kDungeonClearedMusic = 0xA,
|
||||
kPlayerVoiceMale = 0xB,
|
||||
kPlayerVoiceMaleChild = 0xC,
|
||||
kPlayerVoiceFemale = 0xD,
|
||||
kPlayerVoiceFemaleChild = 0xE,
|
||||
kEatPackageDefaultFood = 0xF,
|
||||
kVoiceEquip = 0x10,
|
||||
kPotionEquip = 0x11,
|
||||
kEveryActorAbility = 0x12,
|
||||
kCommandedActorAbility = 0x13,
|
||||
kDrugWearsOffImageSpace = 0x14,
|
||||
kFootstepSet = 0x15,
|
||||
kLandscapeMaterial = 0x16,
|
||||
kDragonLandZoneMarker = 0x17,
|
||||
kDragonCrashZoneMarker = 0x18,
|
||||
kCombatStyle = 0x19,
|
||||
kDefaultPackList = 0x1A,
|
||||
kWaitForDialoguePackage = 0x1B,
|
||||
kVirtualLocation = 0x1C,
|
||||
kPersistAllLocation = 0x1D,
|
||||
kPathingTestNPC = 0x1E,
|
||||
kActionSwimStateChange = 0x1F,
|
||||
kActionLook = 0x20,
|
||||
kActionLeftAttack = 0x21,
|
||||
kActionLeftReady = 0x22,
|
||||
kActionLeftRelease = 0x23,
|
||||
kActionLeftInterrupt = 0x24,
|
||||
kActionRightAttack = 0x25,
|
||||
kActionRightReady = 0x26,
|
||||
kActionRightRelease = 0x27,
|
||||
kActionRightInterrupt = 0x28,
|
||||
kActionDualAttack = 0x29,
|
||||
kActionDualRelease = 0x2A,
|
||||
kActionActivate = 0x2B,
|
||||
kActionJump = 0x2C,
|
||||
kActionFall = 0x2D,
|
||||
kActionLand = 0x2E,
|
||||
kActionMantle = 0x2F,
|
||||
kActionSneak = 0x30,
|
||||
kActionVoice = 0x31,
|
||||
kActionVoiceReady = 0x32,
|
||||
kActionVoiceRelease = 0x33,
|
||||
kActionVoiceInterrupt = 0x34,
|
||||
kActionIdle = 0x35,
|
||||
kActionSprintStart = 0x36,
|
||||
kActionSprintStop = 0x37,
|
||||
kActionDraw = 0x38,
|
||||
kActionSheath = 0x39,
|
||||
kActionLeftPowerAttack = 0x3A,
|
||||
kActionRightPowerAttack = 0x3B,
|
||||
kActionDualPowerAttack = 0x3C,
|
||||
kActionLeftSyncAttack = 0x3D,
|
||||
kActionRightSyncAttack = 0x3E,
|
||||
kActionStaggerStart = 0x3F,
|
||||
kActionBlockHit = 0x40,
|
||||
kActionBlockAnticipate = 0x41,
|
||||
kActionRecoil = 0x42,
|
||||
kActionLargeRecoil = 0x43,
|
||||
kActionBleedoutStart = 0x44,
|
||||
kActionBleedoutStop = 0x45,
|
||||
kActionIdleStop = 0x46,
|
||||
kActionWardHit = 0x47,
|
||||
kActionForceEquip = 0x48,
|
||||
kActionShieldChange = 0x49,
|
||||
kActionPathStart = 0x4A,
|
||||
kActionPathEnd = 0x4B,
|
||||
kActionLargeMovementDelta = 0x4C,
|
||||
kActionFlyStart = 0x4D,
|
||||
kActionFlyStop = 0x4E,
|
||||
kActionHoverStart = 0x4F,
|
||||
kActionHoverStop = 0x50,
|
||||
kActionBumpedInto = 0x51,
|
||||
kActionSummonedStart = 0x52,
|
||||
kActionDialogueTalking = 0x53,
|
||||
kActionDialogueListen = 0x54,
|
||||
kActionDialogueListenPositive = 0x55,
|
||||
kActionDialogueListenNegative = 0x56,
|
||||
kActionDialogueListenQuestion = 0x57,
|
||||
kActionDialogueListenNeutral = 0x58,
|
||||
kActionDialogueEnter = 0x59,
|
||||
kActionDialogueExit = 0x5A,
|
||||
kActionDeath = 0x5B,
|
||||
kActionDeathWait = 0x5C,
|
||||
kActionIdleWarn = 0x5D,
|
||||
kActionMoveStart = 0x5E,
|
||||
kActionMoveStop = 0x5F,
|
||||
kActionTurnRight = 0x60,
|
||||
kActionTurnLeft = 0x61,
|
||||
kActionTurnStop = 0x62,
|
||||
kActionMoveForward = 0x63,
|
||||
kActionMoveBackward = 0x64,
|
||||
kActionMoveLeft = 0x65,
|
||||
kActionMoveRight = 0x66,
|
||||
kActionKnockdown = 0x67,
|
||||
kActionGetUp = 0x68,
|
||||
kActionIdleStopInstant = 0x69,
|
||||
kActionRagdollInstant = 0x6A,
|
||||
kActionWaterwalkStart = 0x6B,
|
||||
kActionReload = 0x6C,
|
||||
kActionBoltCharge = 0x6D,
|
||||
kActionSighted = 0x6E,
|
||||
kActionSightedRelease = 0x6F,
|
||||
kActionMelee = 0x70,
|
||||
kActionFireSingle = 0x71,
|
||||
kActionFireCharge = 0x72,
|
||||
kActionFireChargeHold = 0x73,
|
||||
kActionFireAuto = 0x74,
|
||||
kActionFireEmpty = 0x75,
|
||||
kActionThrow = 0x76,
|
||||
kActionEnterCover = 0x77,
|
||||
kActionExitCover = 0x78,
|
||||
kActionCoverSprintStart = 0x79,
|
||||
kActionShuffle = 0x7A,
|
||||
kActionPipboy = 0x7B,
|
||||
kActionPipboyClose = 0x7C,
|
||||
kActionPipboyZoom = 0x7D,
|
||||
kActionPipboyStats = 0x7E,
|
||||
kActionPipboyInventory = 0x7F,
|
||||
kActionPipboyData = 0x80,
|
||||
kActionPipboyMap = 0x81,
|
||||
kActionPipboyTab = 0x82,
|
||||
kActionPipboyTabPrevious = 0x83,
|
||||
kActionPipboySelect = 0x84,
|
||||
kActionPipboyRadioOn = 0x85,
|
||||
kActionPipboyRadioOff = 0x86,
|
||||
kActionPipboyLoadHolotape = 0x87,
|
||||
kActionPipboyInspect = 0x88,
|
||||
kActionNonSupportContact = 0x89,
|
||||
kActionInteractionEnter = 0x8A,
|
||||
kActionInteractionExit = 0x8B,
|
||||
kActionInteractionExitAlternate = 0x8C,
|
||||
kActionInteractionExitQuick = 0x8D,
|
||||
kActionIntimidate = 0x8E,
|
||||
kActionGunChargeStart = 0x8F,
|
||||
kActionGunDown = 0x90,
|
||||
kActionGunRelaxed = 0x91,
|
||||
kActionGunAlert = 0x92,
|
||||
kActionGunReady = 0x93,
|
||||
kActionFlipThrow = 0x94,
|
||||
kActionEnterCombat = 0x95,
|
||||
kActionExitCombat = 0x96,
|
||||
kActionLimbCritical = 0x97,
|
||||
kActionEvade = 0x98,
|
||||
kActionDodge = 0x99,
|
||||
kActionAoEAttack = 0x9A,
|
||||
kActionPanic = 0x9B,
|
||||
kActionCower = 0x9C,
|
||||
kActionTunnel = 0x9D,
|
||||
kActionHide = 0x9E,
|
||||
kPickupSoundGeneric = 0x9F,
|
||||
kPutdownSoundGeneric = 0xA0,
|
||||
kPickupSoundWeapon = 0xA1,
|
||||
kPutdownSoundWeapon = 0xA2,
|
||||
kPickupSoundArmor = 0xA3,
|
||||
kPutdownSoundArmor = 0xA4,
|
||||
kPickupSoundBook = 0xA5,
|
||||
kPutdownSoundBook = 0xA6,
|
||||
kPickupSoundIngredient = 0xA7,
|
||||
kPutdownSoundIngredient = 0xA8,
|
||||
kHarvestSound = 0xA9,
|
||||
kHarvestFailedSound = 0xAA,
|
||||
kWardBreakSound = 0xAB,
|
||||
kWardAbsorbSound = 0xAC,
|
||||
kWardDeflectSound = 0xAD,
|
||||
kMagicFailSound = 0xAE,
|
||||
kShoutFailSound = 0xAF,
|
||||
kHeartbeatSoundFast = 0xB0,
|
||||
kHeartbeatSoundSlow = 0xB1,
|
||||
kImagespaceLowHealth = 0xB2,
|
||||
kSoulCapturedSound = 0xB3,
|
||||
kNoActivationSound = 0xB4,
|
||||
kMapMenuLoopingSound = 0xB5,
|
||||
kDialogueVoiceCategory = 0xB6,
|
||||
kNonDialogueVoiceCategory = 0xB7,
|
||||
kSFXToFadeInDialogueCategory = 0xB8,
|
||||
kPauseDuringMenuCategoryFade = 0xB9,
|
||||
kPauseDuringMenuCategoryImmediate = 0xBA,
|
||||
kPauseDuringLoadingMenuCategory = 0xBB,
|
||||
kMusicSoundCategory = 0xBC,
|
||||
kStatsMuteCategory = 0xBD,
|
||||
kStatsMusic = 0xBE,
|
||||
kMasterSoundCategory = 0xBF,
|
||||
kDialogueOutputModel3D = 0xC0,
|
||||
kDialogueOutputModel2D = 0xC1,
|
||||
kPlayersOutputModel1stPerson = 0xC2,
|
||||
kPlayersOutputModel3rdPerson = 0xC3,
|
||||
kInterfaceOutputModel = 0xC4,
|
||||
kReverbType = 0xC5,
|
||||
kUnderwaterLoopSound = 0xC6,
|
||||
kUnderwaterReverbType = 0xC7,
|
||||
kKeywordHorse = 0xC8,
|
||||
kKeywordUndead = 0xC9,
|
||||
kKeywordNPC = 0xCA,
|
||||
|
||||
kKeywordDummyObject = 0xCC,
|
||||
kKeywordUseGeometryEmitter = 0xCD,
|
||||
kKeywordMustStop = 0xCE,
|
||||
kMaleFaceTextureSetHead = 0xCF,
|
||||
kMaleFaceTextureSetMouth = 0xD0,
|
||||
kMaleFaceTextureSetEyes = 0xD1,
|
||||
kFemaleFaceTextureSetHead = 0xD2,
|
||||
kFemaleFaceTextureSetMouth = 0xD3,
|
||||
kFemaleFaceTextureSetEyes = 0xD4,
|
||||
kImageSpaceModifierForInventoryMenu = 0xD5,
|
||||
kImageSpaceModifierForPipboyMenuInPowerArmor = 0xD6,
|
||||
kPackageTemplate = 0xD7,
|
||||
kMainMenuCell = 0xD8,
|
||||
kDefaultMovementTypeDefault = 0xD9,
|
||||
kDefaultMovementTypeSwim = 0xDA,
|
||||
kDefaultMovementTypeFly = 0xDB,
|
||||
kDefaultMovementTypeSneak = 0xDC,
|
||||
kKeywordSpecialFurniture = 0xDD,
|
||||
kKeywordFurnitureForces1stPerson = 0xDE,
|
||||
kKeywordFurnitureForces3rdPerson = 0xDF,
|
||||
kKeywordActivatorFurnitureNoPlayer = 0xE0,
|
||||
kTelekinesisGrabSound = 0xE1,
|
||||
kTelekinesisThrowSound = 0xE2,
|
||||
kWorldMapWeather = 0xE3,
|
||||
kHelpManualPC = 0xE4,
|
||||
kHelpManualXBox = 0xE5,
|
||||
kKeywordTypeAmmo = 0xE6,
|
||||
kKeywordTypeArmor = 0xE7,
|
||||
kKeywordTypeBook = 0xE8,
|
||||
kKeywordTypeIngredient = 0xE9,
|
||||
kKeywordTypeKey = 0xEA,
|
||||
kKeywordTypeMisc = 0xEB,
|
||||
kKeywordTypeSoulGem = 0xEC,
|
||||
kKeywordTypeWeapon = 0xED,
|
||||
kKeywordTypePotion = 0xEE,
|
||||
kBaseWeaponEnchantment = 0xEF,
|
||||
kBaseArmorEnchantment = 0xF0,
|
||||
kBasePotion = 0xF1,
|
||||
kBasePoison = 0xF2,
|
||||
kKeywordDragon = 0xF3,
|
||||
kKeywordMovable = 0xF4,
|
||||
kArtObjectAbsorbEffect = 0xF5,
|
||||
kWeaponMaterialList = 0xF6,
|
||||
kArmorMaterialList = 0xF7,
|
||||
kKeywordDisallowEnchanting = 0xF8,
|
||||
kFavortravelmarkerlocation = 0xF9,
|
||||
kTeammateReadyWeapon = 0xFA,
|
||||
kKeywordHoldLocation = 0xFB,
|
||||
kKeywordCivilWarOwner = 0xFC,
|
||||
kKeywordCivilWarNeutral = 0xFD,
|
||||
kLocRefTypeCivilWarSoldier = 0xFE,
|
||||
kKeywordClearableLocation = 0xFF,
|
||||
kLocRefTypeResourceDestructible = 0x100,
|
||||
kFormListHairColorList = 0x101,
|
||||
kComplexSceneObject = 0x102,
|
||||
kKeywordReusableSoulGem = 0x103,
|
||||
kKeywordAnimal = 0x104,
|
||||
kKeywordDaedra = 0x105,
|
||||
kKeywordRobot = 0x106,
|
||||
kKeywordNirnroot = 0x107,
|
||||
kFightersGuildFaction = 0x108,
|
||||
kMagesGuildFaction = 0x109,
|
||||
kThievesGuildFaction = 0x10A,
|
||||
kDarkBrotherhoodFaction = 0x10B,
|
||||
kJarlFaction = 0x10C,
|
||||
kBunnyFaction = 0x10D,
|
||||
kPlayerIsVampireVariable = 0x10E,
|
||||
|
||||
kRoadMarker = 0x110,
|
||||
kKeywordScaleActorTo10 = 0x111,
|
||||
kKeywordVampire = 0x112,
|
||||
kKeywordForge = 0x113,
|
||||
kKeywordCookingPot = 0x114,
|
||||
kKeywordSmelter = 0x115,
|
||||
kKeywordTanningRack = 0x116,
|
||||
kHelpBasicLockpickingPC = 0x117,
|
||||
kHelpBasicLockpickingConsole = 0x118,
|
||||
kHelpBasicForging = 0x119,
|
||||
kHelpBasicCooking = 0x11A,
|
||||
kHelpBasicSmelting = 0x11B,
|
||||
kHelpBasicTanning = 0x11C,
|
||||
kHelpBasicObjectCreation = 0x11D,
|
||||
kHelpBasicEnchanting = 0x11E,
|
||||
kHelpBasicSmithingWeapon = 0x11F,
|
||||
kHelpBasicSmithingArmor = 0x120,
|
||||
kHelpBasicAlchemy = 0x121,
|
||||
kHelpBarter = 0x122,
|
||||
kHelpLevelingup = 0x123,
|
||||
kHelpSkillsMenu = 0x124,
|
||||
kHelpMapMenu = 0x125,
|
||||
kHelpJournal = 0x126,
|
||||
kHelpLowHealth = 0x127,
|
||||
kHelpLowMagicka = 0x128,
|
||||
kHelpLowStamina = 0x129,
|
||||
kHelpJail = 0x12A,
|
||||
kHelpTeamateFavor = 0x12B,
|
||||
kHelpWeaponCharge = 0x12C,
|
||||
kHelpFavorites = 0x12D,
|
||||
kKinectHelpFormList = 0x12E,
|
||||
kImagespaceLoadscreen = 0x12F,
|
||||
kKeywordWeaponMaterialDaedric = 0x130,
|
||||
kKeywordWeaponMaterialDraugr = 0x131,
|
||||
kKeywordWeaponMaterialDraugrHoned = 0x132,
|
||||
kKeywordWeaponMaterialDwarven = 0x133,
|
||||
kKeywordWeaponMaterialEbony = 0x134,
|
||||
kKeywordWeaponMaterialElven = 0x135,
|
||||
kKeywordWeaponMaterialFalmer = 0x136,
|
||||
kKeywordWeaponMaterialFalmerHoned = 0x137,
|
||||
kKeywordWeaponMaterialGlass = 0x138,
|
||||
kKeywordWeaponMaterialImperial = 0x139,
|
||||
kKeywordWeaponMaterialIron = 0x13A,
|
||||
kKeywordWeaponMaterialOrcish = 0x13B,
|
||||
kKeywordWeaponMaterialSteel = 0x13C,
|
||||
kKeywordWeaponMaterialWood = 0x13D,
|
||||
kKeywordWeaponTypeBoundArrow = 0x13E,
|
||||
kKeywordArmorMaterialDaedric = 0x13F,
|
||||
kKeywordArmorMaterialDragonplate = 0x140,
|
||||
kKeywordArmorMaterialDragonscale = 0x141,
|
||||
kKeywordArmorMaterialDragonbone = 0x142,
|
||||
kKeywordArmorMaterialDwarven = 0x143,
|
||||
kKeywordArmorMaterialEbony = 0x144,
|
||||
kKeywordArmorMaterialElven = 0x145,
|
||||
kKeywordArmorMaterialElvenSplinted = 0x146,
|
||||
kKeywordArmorMaterialFullLeather = 0x147,
|
||||
kKeywordArmorMaterialGlass = 0x148,
|
||||
kKeywordArmorMaterialHide = 0x149,
|
||||
kKeywordArmorMaterialImperial = 0x14A,
|
||||
kKeywordArmorMaterialImperialHeavy = 0x14B,
|
||||
kKeywordArmorMaterialImperialReinforced = 0x14C,
|
||||
kKeywordArmorMaterialIron = 0x14D,
|
||||
kKeywordArmorMaterialIronBanded = 0x14E,
|
||||
kKeywordArmorMaterialOrcish = 0x14F,
|
||||
kKeywordArmorMaterialScaled = 0x150,
|
||||
kKeywordArmorMaterialSteel = 0x151,
|
||||
kKeywordArmorMaterialSteelPlate = 0x152,
|
||||
kKeywordArmorMaterialStormcloak = 0x153,
|
||||
kKeywordArmorMaterialStudded = 0x154,
|
||||
kKeywordGenericCraftableKeyword01 = 0x155,
|
||||
kKeywordGenericCraftableKeyword02 = 0x156,
|
||||
kKeywordGenericCraftableKeyword03 = 0x157,
|
||||
kKeywordGenericCraftableKeyword04 = 0x158,
|
||||
kKeywordGenericCraftableKeyword05 = 0x159,
|
||||
kKeywordGenericCraftableKeyword06 = 0x15A,
|
||||
kKeywordGenericCraftableKeyword07 = 0x15B,
|
||||
kKeywordGenericCraftableKeyword08 = 0x15C,
|
||||
kKeywordGenericCraftableKeyword09 = 0x15D,
|
||||
kKeywordGenericCraftableKeyword10 = 0x15E,
|
||||
kKeywordnullptrMOD = 0x15F,
|
||||
kKeywordJewelry = 0x160,
|
||||
kKeywordCuirass = 0x161,
|
||||
kLocalMapHidePlane = 0x162,
|
||||
kSnowLODMaterial = 0x163,
|
||||
kSnowLODMaterialHD = 0x164,
|
||||
kDialogueImagespace = 0x165,
|
||||
kDialogueFollowerQuest = 0x166,
|
||||
kPotentialFollowerFaction = 0x167,
|
||||
|
||||
kVampireAvailablePerks = 0x169,
|
||||
|
||||
kVampireRace = 0x16B,
|
||||
kVampireSpells = 0x16C,
|
||||
kKeywordMount = 0x16D,
|
||||
kVerletCape = 0x16E,
|
||||
kFurnitureTestNPC = 0x16F,
|
||||
kKeywordConditionalExplosion = 0x170,
|
||||
kDefaultLight1 = 0x171,
|
||||
kDefaultLight2 = 0x172,
|
||||
kDefaultLight3 = 0x173,
|
||||
kDefaultLight4 = 0x174,
|
||||
kPipboyLight = 0x175,
|
||||
kActionBeginLoopingActivate = 0x176,
|
||||
kActionEndLoopingActivate = 0x177,
|
||||
kWorkshopPlayerOwnership = 0x178,
|
||||
kQuestMarkerFollower = 0x179,
|
||||
kQuestMarkerLocation = 0x17A,
|
||||
kQuestMarkerEnemy = 0x17B,
|
||||
kQuestMarkerEnemyAbove = 0x17C,
|
||||
kQuestMarkerEnemyBelow = 0x17D,
|
||||
kWorkshopMiscItemKeyword = 0x17E,
|
||||
kHeavyWeaponItemKeyword = 0x17F,
|
||||
kMineItemKeyword = 0x180,
|
||||
kGrenadeItemKeyword = 0x181,
|
||||
kChemItemKeyword = 0x182,
|
||||
kAlcoholItemKeyword = 0x183,
|
||||
kFoodItemKeyword = 0x184,
|
||||
kRepairKitItemKeyword = 0x185,
|
||||
kMedbagitemKeyword = 0x186,
|
||||
kGlovesitemKeyword = 0x187,
|
||||
kHelmetitemkeyword = 0x188,
|
||||
kClothesitemkeyword = 0x189,
|
||||
|
||||
kTotal
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/D/DEFAULT_OBJECT_TYPE.h"
|
||||
#include "RE/E/ENUM_FORM_ID.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class DEFAULT_OBJECT_DATA
|
||||
{
|
||||
public:
|
||||
[[nodiscard]] static std::span<DEFAULT_OBJECT_DATA, 394> GetDefaultObjectData()
|
||||
{
|
||||
static REL::Relocation<DEFAULT_OBJECT_DATA(*)[394]> data{ ID::DEFAULT_OBJECT_DATA::GetDefaultObjectData };
|
||||
return { *data };
|
||||
}
|
||||
|
||||
// members
|
||||
const char* name; // 00
|
||||
REX::TEnumSet<ENUM_FORM_ID, std::uint8_t> type; // 08
|
||||
std::uint32_t uniqueID; // 0C
|
||||
REX::TEnumSet<DEFAULT_OBJECT_TYPE, std::int32_t> doType; // 10
|
||||
const char* newObjectName; // 18
|
||||
};
|
||||
static_assert(sizeof(DEFAULT_OBJECT_DATA) == 0x20);
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
enum class DEFAULT_OBJECT_TYPE : std::int32_t
|
||||
{
|
||||
kMisc = 0x0,
|
||||
kFacegen = 0x1,
|
||||
kMovement = 0x2,
|
||||
kActions = 0x3,
|
||||
kItems = 0x4,
|
||||
kSounds = 0x5,
|
||||
kKeywords = 0x6
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
enum class DETECTION_FORMULA_TYPE : std::uint32_t
|
||||
{
|
||||
kFormula = 0x0,
|
||||
kRange = 0x1,
|
||||
kVisual_Range = 0x2,
|
||||
kSound_Range = 0x3,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
enum class DETECTION_PRIORITY
|
||||
{
|
||||
kNone = 0x0,
|
||||
kVeryLow = 0x1,
|
||||
kLow = 0x2,
|
||||
kNormal = 0x3,
|
||||
kHigh = 0x4,
|
||||
kCritical = 0x5,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
enum class DETECTION_TYPE
|
||||
{
|
||||
kNormal = 0,
|
||||
kProjectile = 1,
|
||||
kEvent = 2,
|
||||
kTotal = 3
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class DIALOGUE_DATA
|
||||
{
|
||||
public:
|
||||
// members
|
||||
std::int8_t flags; // 0
|
||||
std::int8_t type; // 1
|
||||
std::uint16_t subtype; // 2
|
||||
};
|
||||
static_assert(sizeof(DIALOGUE_DATA) == 0x4);
|
||||
}
|
||||
@@ -0,0 +1,136 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
enum class DIALOGUE_SUBTYPE : std::int32_t
|
||||
{
|
||||
kPlayerDialogue_Custom = 0x0,
|
||||
kPlayerDialogue_Force_Greet = 0x1,
|
||||
kPlayerDialogue_Player_Rumor = 0x2,
|
||||
kPlayerDialogue_End = 0x3,
|
||||
kCommandDialogue_Custom = 0x3,
|
||||
kCommandDialogue_Call = 0x4,
|
||||
kCommandDialogue_Follow = 0x5,
|
||||
kCommandDialogue_Move = 0x6,
|
||||
kCommandDialogue_Attack = 0x7,
|
||||
kCommandDialogue_Inspect = 0x8,
|
||||
kCommandDialogue_Retrieve = 0x9,
|
||||
kCommandDialogue_Stay = 0xA,
|
||||
kCommandDialogue_Release = 0xB,
|
||||
kCommandDialogue_ShowRelationships = 0xC,
|
||||
kCommandDialogue_Reject = 0xD,
|
||||
kCommandDialogue_Heal = 0xE,
|
||||
kCommandDialogue_Assign = 0xF,
|
||||
kCommandDialogue_Enter = 0x10,
|
||||
kSceneDialogue_Custom = 0x11,
|
||||
kFavor_Show = 0x12,
|
||||
kFavor_Agree = 0x13,
|
||||
kFavor_Refuse = 0x14,
|
||||
kFavor_Exit_State = 0x15,
|
||||
kFavor_Morality_Refuse = 0x16,
|
||||
kFavor_Trade = 0x17,
|
||||
kFavor_Pathing_Reject = 0x18,
|
||||
kCombat_Attack = 0x19,
|
||||
kCombat_Power_Attack = 0x1A,
|
||||
kCombat_Bash = 0x1B,
|
||||
kCombat_Hit = 0x1C,
|
||||
kCombat_Flee = 0x1D,
|
||||
kCombat_Bleed_Out = 0x1E,
|
||||
kCombat_Avoid_Threat = 0x1F,
|
||||
kCombat_Death = 0x20,
|
||||
kCombat_Block = 0x21,
|
||||
kCombat_Taunt = 0x22,
|
||||
kCombat_Throw_Grenade = 0x23,
|
||||
kCombat_Ally_Killed = 0x24,
|
||||
kCombat_Order_Fallback = 0x25,
|
||||
kCombat_Order_Advance = 0x26,
|
||||
kCombat_Order_Flank = 0x27,
|
||||
kCombat_Order_Take_Cover = 0x28,
|
||||
kCombat_Fallback = 0x29,
|
||||
kCombat_Request_Support = 0x2A,
|
||||
kCombat_Provide_Support = 0x2B,
|
||||
kCombat_Crippled_Limb = 0x2C,
|
||||
kCombat_Paired_Attack = 0x2D,
|
||||
kCombat_Steal = 0x2E,
|
||||
kCombat_Yield = 0x2F,
|
||||
kCombat_Accept_Yield = 0x30,
|
||||
kCombat_Pickpocket = 0x31,
|
||||
kCombat_Assault = 0x32,
|
||||
kCombat_Murder = 0x33,
|
||||
kCombat_Assault_NC = 0x34,
|
||||
kCombat_Murder_NC = 0x35,
|
||||
kCombat_Pickpocket_NC = 0x36,
|
||||
kCombat_Steal_NC = 0x37,
|
||||
kCombat_Trespass_NC = 0x38,
|
||||
kCombat_Guard_Trespass = 0x39,
|
||||
kCombat_Unused = 0x3A,
|
||||
kCombat_Voice_Power_Start = 0x3B,
|
||||
kCombat_Voice_Power_Start_Short = 0x3B,
|
||||
kCombat_Voice_Power_Start_Long = 0x3C,
|
||||
kCombat_Voice_Power_End_Short = 0x3D,
|
||||
kCombat_Voice_Power_End_Long = 0x3E,
|
||||
kCombat_Voice_Power_End = 0x3E,
|
||||
kDetection_Alert_Idle = 0x3F,
|
||||
kDetection_Lost_Idle = 0x40,
|
||||
kDetection_Normal_To_Alert = 0x41,
|
||||
kDetection_Normal_To_Combat = 0x42,
|
||||
kDetection_Normal_To_Lost = 0x43,
|
||||
kDetection_Alert_To_Normal = 0x44,
|
||||
kDetection_Alert_To_Combat = 0x45,
|
||||
kDetection_Combat_To_Normal = 0x46,
|
||||
kDetection_Combat_To_Lost = 0x47,
|
||||
kDetection_Lost_To_Normal = 0x48,
|
||||
kDetection_Lost_To_Combat = 0x49,
|
||||
kDetection_Detect_Friend_Die = 0x4A,
|
||||
kService_Refusal = 0x4B,
|
||||
kService_Repair = 0x4C,
|
||||
kService_Travel = 0x4D,
|
||||
kService_Training = 0x4E,
|
||||
kService_Barter_Exit = 0x4F,
|
||||
kService_Repair_Exit = 0x50,
|
||||
kService_Recharge = 0x51,
|
||||
kService_Recharge_Exit = 0x52,
|
||||
kService_Training_Exit = 0x53,
|
||||
kMisc_Observe_Combat = 0x54,
|
||||
kMisc_Corpse = 0x55,
|
||||
kMisc_Time_To_Go = 0x56,
|
||||
kMisc_Goodbye = 0x57,
|
||||
kMisc_Hello = 0x58,
|
||||
kMisc_Player_Action_Swing_Melee_Weapon = 0x59,
|
||||
kMisc_Player_Action_Shoot_Bow = 0x5A,
|
||||
kMisc_Player_Action_Z_Key_Object = 0x5B,
|
||||
kMisc_Player_Action_Jumping = 0x5C,
|
||||
kMisc_Player_Action_Knocking_Over_Objects = 0x5D,
|
||||
kMisc_Player_Action_Destroy_Object = 0x5E,
|
||||
kMisc_Player_Action_Stand_On_Furniture = 0x5F,
|
||||
kMisc_Player_Action_Locked_Object = 0x60,
|
||||
kMisc_Player_Action_Pickpocket = 0x61,
|
||||
kMisc_Pursue_Idle = 0x62,
|
||||
kMisc_InfoData = 0x63,
|
||||
kMisc_SceneChoice = 0x64,
|
||||
kMisc_Player_Action_Cast_Projectile_Spell = 0x65,
|
||||
kMisc_Player_Action_Cast_Self_Spell = 0x66,
|
||||
kMisc_Player_Action_Shout = 0x67,
|
||||
kMisc_Idle = 0x68,
|
||||
kMisc_Breath_Sprint_Sound = 0x69,
|
||||
kMisc_Breath_Enter_Bow_Zoom_Sound = 0x6A,
|
||||
kMisc_Breath_Exit_Bow_Zoom_Sound = 0x6B,
|
||||
kMisc_Actor_Collide_With_Actor = 0x6C,
|
||||
kMisc_Player_Iron_Sights = 0x6D,
|
||||
kMisc_Out_Off_Breath_Sound = 0x6E,
|
||||
kMisc_Combat_Grunt = 0x6F,
|
||||
kMisc_Breath_Leave_Water = 0x70,
|
||||
kMisc_Impatient_Positive = 0x71,
|
||||
kMisc_Impatient_Negative = 0x72,
|
||||
kMisc_Impatient_Neutral = 0x73,
|
||||
kMisc_Impatient_Question = 0x74,
|
||||
kMisc_Waiting_Player_Input = 0x75,
|
||||
kMisc_Greeting = 0x76,
|
||||
kMisc_Player_Activate_Door = 0x77,
|
||||
kMisc_Player_Activate_Terminals = 0x78,
|
||||
kMisc_Player_Activate_Furniture = 0x79,
|
||||
kMisc_Player_Activate_Activators = 0x7A,
|
||||
kMisc_Player_Activate_Container = 0x7B,
|
||||
kMisc_Player_Aquire_Featured_Item = 0x7C,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
enum class DIALOGUE_TYPE : std::int32_t
|
||||
{
|
||||
kPlayerDialogue = 0x0,
|
||||
kCommandDialogue = 0x1,
|
||||
kSceneDialogue = 0x2,
|
||||
kCombat = 0x3,
|
||||
kFavors = 0x4,
|
||||
kDetection = 0x5,
|
||||
kService = 0x6,
|
||||
kMiscellaneous = 0x7,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
enum class DIRECTION_VAL : std::int32_t
|
||||
{
|
||||
kNone = 0x0,
|
||||
kUp = 0x1,
|
||||
kRight = 0x2,
|
||||
kDown = 0x3,
|
||||
kLeft = 0x4
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/N/NiPoint3.h"
|
||||
#include "RE/N/NiPointer.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class bhkNPCollisionObject;
|
||||
|
||||
class DamageImpactData
|
||||
{
|
||||
// members
|
||||
NiPoint3A location; // 00
|
||||
NiPoint3A normal; // 10
|
||||
NiPoint3A velocity; // 20
|
||||
NiPointer<bhkNPCollisionObject> colObj; // 30
|
||||
};
|
||||
static_assert(sizeof(DamageImpactData) == 0x40);
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/D/DECAL_DATA_DATA.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class DecalData
|
||||
{
|
||||
public:
|
||||
// members
|
||||
DECAL_DATA_DATA data; // 00
|
||||
};
|
||||
static_assert(sizeof(DecalData) == 0x24);
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BGSDefaultObject.h"
|
||||
#include "RE/I/IFormFactory.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class DefaultObjectFormFactory :
|
||||
public IFormFactory // 00
|
||||
{
|
||||
public:
|
||||
static constexpr auto RTTI{ RTTI::__DefaultObjectFormFactory };
|
||||
static constexpr auto VTABLE{ VTABLE::__DefaultObjectFormFactory };
|
||||
|
||||
virtual ~DefaultObjectFormFactory(); // 00
|
||||
|
||||
// override
|
||||
[[nodiscard]] TESForm* DoCreate() override // 01
|
||||
{
|
||||
return new BGSDefaultObject("", ENUM_FORM_ID::kNONE, "");
|
||||
}
|
||||
|
||||
[[nodiscard]] const char* GetFormName() const override { return "DefaultObject"; } // 02
|
||||
[[nodiscard]] ENUM_FORM_ID GetFormID() const override { return ENUM_FORM_ID::kDFOB; } // 03
|
||||
[[nodiscard]] const char* GetObjectName() const override { return "DefaultObject"; } // 04
|
||||
[[nodiscard]] OBJECT_TYPE GetObjectType() const override; // 05
|
||||
[[nodiscard]] OBJECT_CATEGORY_TYPE GetObjectCategory() const override; // 06
|
||||
|
||||
[[nodiscard]] static BGSDefaultObject* Create(const char* a_name, const char* a_description, ENUM_FORM_ID a_formType)
|
||||
{
|
||||
auto form = new BGSDefaultObject(a_name, a_formType, a_description);
|
||||
return form;
|
||||
}
|
||||
|
||||
[[nodiscard]] static BGSDefaultObject* Create(const char* a_name, ENUM_FORM_ID a_formType)
|
||||
{
|
||||
return Create(a_name, "", a_formType);
|
||||
}
|
||||
};
|
||||
static_assert(sizeof(DefaultObjectFormFactory) == 0x08);
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BGSBodyPartDefs.h"
|
||||
#include "RE/N/NiPointer.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class NiNode;
|
||||
|
||||
class DeferredHideLimb
|
||||
{
|
||||
public:
|
||||
// members
|
||||
float dismemberTimer; // 00
|
||||
REX::TEnumSet<BGSBodyPartDefs::LIMB_ENUM, std::uint32_t> limbIndex; // 04
|
||||
NiPointer<NiNode> dismemberedLimbRoot; // 08
|
||||
NiPointer<NiNode> replacementLimb; // 10
|
||||
DeferredHideLimb* next; // 18
|
||||
bool explosion; // 20
|
||||
};
|
||||
static_assert(sizeof(DeferredHideLimb) == 0x28);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/N/NiPoint3.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class DesiredMovementData
|
||||
{
|
||||
public:
|
||||
// members
|
||||
NiPoint3A position; // 00
|
||||
NiPoint3A orientation; // 10
|
||||
NiPoint3A movementSpeed; // 20
|
||||
NiPoint3A rotationSpeed; // 30
|
||||
};
|
||||
static_assert(sizeof(DesiredMovementData) == 0x40);
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BGSTypedFormValuePair.h"
|
||||
#include "RE/B/BSTArray.h"
|
||||
#include "RE/B/BSTTuple.h"
|
||||
#include "RE/N/NiPointer.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class DestructibleObjectStage;
|
||||
class QueuedFile;
|
||||
|
||||
class DestructibleObjectData
|
||||
{
|
||||
public:
|
||||
// members
|
||||
std::uint32_t health; // 00
|
||||
std::int8_t numStages; // 04
|
||||
std::int8_t flags; // 05
|
||||
DestructibleObjectStage** stagesArray; // 08
|
||||
BSTArray<BSTTuple<TESForm*, BGSTypedFormValuePair::SharedVal>>* damageTypes; // 10
|
||||
volatile std::int32_t replacementModelRefCount; // 18
|
||||
NiPointer<QueuedFile> preloadedReplacementModels; // 20
|
||||
};
|
||||
static_assert(sizeof(DestructibleObjectData) == 0x28);
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BSFixedString.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class BGSModelMaterialSwap;
|
||||
|
||||
class DestructibleObjectStage
|
||||
{
|
||||
public:
|
||||
// members
|
||||
std::int8_t modelDamageStage; // 00
|
||||
std::int8_t healthPercentage; // 01
|
||||
std::int8_t flags; // 02
|
||||
std::uint32_t selfDamagePerSecond; // 04
|
||||
BGSExplosion* explosion; // 08
|
||||
BGSDebris* debris; // 10
|
||||
std::uint32_t debrisCount; // 18
|
||||
BGSModelMaterialSwap* replacementModel; // 20
|
||||
BSFixedString sequenceName; // 28
|
||||
};
|
||||
static_assert(sizeof(DestructibleObjectStage) == 0x30);
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/D/DetectionFormulaData.h"
|
||||
#include "RE/D/DetectionLevels.h"
|
||||
#include "RE/N/NiPoint3.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
enum class DETECTION_TYPE;
|
||||
|
||||
class DetectionData :
|
||||
public DetectionFormulaData // 00
|
||||
{
|
||||
public:
|
||||
// members
|
||||
NiPoint3 detectedLocation; // 74
|
||||
DetectionLevels detectionLevel; // 80
|
||||
DETECTION_TYPE detectionType; // 84
|
||||
};
|
||||
static_assert(sizeof(DetectionData) == 0x88);
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/A/AITimeStamp.h"
|
||||
#include "RE/B/BSPointerHandle.h"
|
||||
#include "RE/N/NiPoint3.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class DetectionEvent
|
||||
{
|
||||
public:
|
||||
// members
|
||||
std::uint32_t actionValue; // 00
|
||||
NiPoint3 location; // 04
|
||||
AITimeStamp timeStamp; // 10
|
||||
ObjectRefHandle ref; // 14
|
||||
};
|
||||
static_assert(sizeof(DetectionEvent) == 0x18);
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/A/ACTOR_LOS_LOCATION.h"
|
||||
#include "RE/A/AITimeStamp.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class DetectionFormulaData
|
||||
{
|
||||
public:
|
||||
// members
|
||||
ACTOR_LOS_LOCATION losLocation; // 00
|
||||
AITimeStamp timeStamp; // 04
|
||||
std::uint32_t ambush; // 08
|
||||
std::uint32_t targetRaceSize; // 0C
|
||||
std::uint32_t targetActionSound; // 10
|
||||
float lightLevel; // 14
|
||||
float modifiedLightLevel; // 18
|
||||
float visualDetectionDistance; // 1C
|
||||
float soundDetectionDistance; // 20
|
||||
float perception; // 24
|
||||
float basePerception; // 28
|
||||
float blindness; // 2C
|
||||
float deafness; // 30
|
||||
float targetDistance; // 34
|
||||
float targetAngle; // 38
|
||||
float targetVerticalAngle; // 3C
|
||||
float targetAgility; // 40
|
||||
float targetSneakSkill; // 44
|
||||
float targetBaseStealth; // 48
|
||||
float targetEquippedWeight; // 4C
|
||||
float targetMovementNoiseMult; // 50
|
||||
float targetStealth; // 54
|
||||
float targetVisibility; // 58
|
||||
float visualDetectionLevel; // 5C
|
||||
float soundDetectionLevel; // 60
|
||||
bool LOS; // 64
|
||||
bool LOS360; // 65
|
||||
bool exterior; // 66
|
||||
bool alert; // 67
|
||||
bool sleeping; // 68
|
||||
bool nightEye; // 69
|
||||
bool targetMoving; // 6A
|
||||
bool targetRunning; // 6B
|
||||
bool targetSneaking; // 6C
|
||||
bool targetInvisible; // 6D
|
||||
bool targetInCover; // 6E
|
||||
bool targetObserved; // 6F
|
||||
bool combatTarget; // 70
|
||||
bool flying; // 71
|
||||
};
|
||||
static_assert(sizeof(DetectionFormulaData) == 0x74);
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class DetectionLevels
|
||||
{
|
||||
public:
|
||||
// members
|
||||
std::int16_t visualLevel; // 00
|
||||
std::int16_t soundLevel; // 02
|
||||
};
|
||||
static_assert(sizeof(DetectionLevels) == 0x04);
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/I/InputEvent.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class __declspec(novtable) DeviceConnectEvent :
|
||||
public InputEvent // 00
|
||||
{
|
||||
public:
|
||||
static constexpr auto RTTI{ RTTI::DeviceConnectEvent };
|
||||
static constexpr auto VTABLE{ VTABLE::DeviceConnectEvent };
|
||||
static constexpr auto TYPE{ INPUT_EVENT_TYPE::kDeviceConnect };
|
||||
|
||||
// NOLINTNEXTLINE(modernize-use-override)
|
||||
virtual ~DeviceConnectEvent() = default; // 00
|
||||
|
||||
// members
|
||||
bool connected{ true }; // 28
|
||||
};
|
||||
static_assert(sizeof(DeviceConnectEvent) == 0x30);
|
||||
|
||||
extern template DeviceConnectEvent* InputEvent::As() noexcept;
|
||||
extern template const DeviceConnectEvent* InputEvent::As() const noexcept;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BSTArray.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class DialogueResponse;
|
||||
class TESObjectREFR;
|
||||
class TESQuest;
|
||||
class TESTopic;
|
||||
class TESTopicInfo;
|
||||
|
||||
class DialogueItem
|
||||
{
|
||||
public:
|
||||
~DialogueItem();
|
||||
|
||||
DialogueResponse* GetCurrentResponse()
|
||||
{
|
||||
return currentResponse < responses.size() ? responses[currentResponse] : nullptr;
|
||||
}
|
||||
|
||||
// members
|
||||
BSTArray<DialogueResponse*> responses{}; // 00
|
||||
TESTopicInfo* info{}; // 18
|
||||
TESTopic* topic{}; // 20
|
||||
TESQuest* quest{}; // 28
|
||||
TESObjectREFR* speaker{}; // 30
|
||||
std::uint32_t currentResponse{ static_cast<std::uint32_t>(-1) }; // 38
|
||||
bool endResponse{ false }; // 3C
|
||||
bool canSkip{ false }; // 3D
|
||||
bool subtitle{ false }; // 3E
|
||||
};
|
||||
static_assert(sizeof(DialogueItem) == 0x40);
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BSTEvent.h"
|
||||
#include "RE/B/BSTSmartPointer.h"
|
||||
#include "RE/G/GameMenuBase.h"
|
||||
#include "RE/H/HUDPerkVaultBoySwfDisplayEvent.h"
|
||||
#include "RE/S/ShowingDialogueSpeechChallengeAnim.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class BSInputEnableLayer;
|
||||
|
||||
class __declspec(novtable) DialogueMenu :
|
||||
public GameMenuBase // 00
|
||||
{
|
||||
public:
|
||||
static constexpr auto RTTI{ RTTI::DialogueMenu };
|
||||
static constexpr auto VTABLE{ VTABLE::DialogueMenu };
|
||||
static constexpr auto MENU_NAME{ "DialogueMenu"sv };
|
||||
|
||||
// Members
|
||||
std::unique_ptr<BSGFxShaderFXTarget> dialogueButtonOBJs[4];
|
||||
std::unique_ptr<BSGFxShaderFXTarget> speechChallengeAnimObj;
|
||||
BSTValueEventSink<HUDPerkVaultBoySwfDisplayEvent> currentVBPerk;
|
||||
BSTValueEventSource<ShowingDialogueSpeechChallengeAnim> showingSpeechChallenge;
|
||||
BSTSmartPointer<BSInputEnableLayer> inputLayer;
|
||||
UserEvents::INPUT_CONTEXT_ID currentContext;
|
||||
bool isLookingAtPlayer;
|
||||
bool areButtonsShown;
|
||||
};
|
||||
static_assert(sizeof(DialogueMenu) == 0x168);
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
namespace DialogueMenuUtils
|
||||
{
|
||||
inline void OpenMenu()
|
||||
{
|
||||
using func_t = decltype(&DialogueMenuUtils::OpenMenu);
|
||||
static REL::Relocation<func_t> func{ ID::DialogueMenuUtils::OpenMenu };
|
||||
return func();
|
||||
}
|
||||
|
||||
inline void CloseMenu()
|
||||
{
|
||||
using func_t = decltype(&DialogueMenuUtils::CloseMenu);
|
||||
static REL::Relocation<func_t> func{ ID::DialogueMenuUtils::CloseMenu };
|
||||
return func();
|
||||
}
|
||||
|
||||
inline void ShowSpeechChallengeAnim()
|
||||
{
|
||||
using func_t = decltype(&DialogueMenuUtils::ShowSpeechChallengeAnim);
|
||||
static REL::Relocation<func_t> func{ ID::DialogueMenuUtils::ShowSpeechChallengeAnim };
|
||||
return func();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BSPointerHandle.h"
|
||||
#include "RE/T/TESPackage.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class __declspec(novtable) DialoguePackage :
|
||||
public TESPackage // 00
|
||||
{
|
||||
public:
|
||||
static constexpr auto RTTI{ RTTI::DialoguePackage };
|
||||
static constexpr auto VTABLE{ VTABLE::DialoguePackage };
|
||||
static constexpr auto FORM_ID{ ENUM_FORM_ID::kPACK };
|
||||
|
||||
// members
|
||||
ActorHandle talkingActor; // C8
|
||||
ObjectRefHandle genericSecondLoc; // CC
|
||||
ActorHandle actor; // D0
|
||||
ActorHandle targetActor; // D4
|
||||
bool actorHeadTrack; // D8
|
||||
bool createdPack; // D9
|
||||
float eventWaitTimer; // DC
|
||||
float listenTimer; // E0
|
||||
bool sceneGenerated; // E4
|
||||
};
|
||||
static_assert(sizeof(DialoguePackage) == 0xE8);
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BSFixedString.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class BGSKeyword;
|
||||
class BGSSoundDescriptorForm;
|
||||
class TESIdleForm;
|
||||
|
||||
class DialogueResponse
|
||||
{
|
||||
public:
|
||||
// members
|
||||
BSFixedStringCS text; // 00
|
||||
BGSKeyword* animFaceArchType; // 08
|
||||
std::uint16_t percent; // 10
|
||||
BSFixedString voice; // 18
|
||||
TESIdleForm* speakerIdle; // 20
|
||||
TESIdleForm* listenIdle; // 28
|
||||
BGSSoundDescriptorForm* voiceSound; // 30
|
||||
bool useEmotion; // 38
|
||||
bool soundLip; // 39
|
||||
bool endOnSceneEnd; // 3A
|
||||
};
|
||||
static_assert(sizeof(DialogueResponse) == 0x40);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
enum class DifficultyLevel : std::int32_t
|
||||
{
|
||||
kVeryEasy = 0x0,
|
||||
kLow = 0x0,
|
||||
kEasy = 0x1,
|
||||
kNormal = 0x2,
|
||||
kHard = 0x3,
|
||||
kVeryHard = 0x4,
|
||||
kSurvival = 0x5,
|
||||
kTrueSurvival = 0x6,
|
||||
kHigh = 0x6,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class DisableHeavyItemsFunc
|
||||
{
|
||||
public:
|
||||
// members
|
||||
float playerCurrEncumbrance; // 00
|
||||
float playerMaxEncumbrance; // 04
|
||||
float containerCurrEncumbrance; // 08
|
||||
float containerMaxEncumbrance; // 0C
|
||||
};
|
||||
static_assert(sizeof(DisableHeavyItemsFunc) == 0x10);
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BSInputEventUser.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class __declspec(novtable) DisconnectHandler :
|
||||
public BSInputEventUser
|
||||
{
|
||||
public:
|
||||
static constexpr auto RTTI{ RTTI::DisconnectHandler };
|
||||
static constexpr auto VTABLE{ VTABLE::DisconnectHandler };
|
||||
};
|
||||
static_assert(sizeof(DisconnectHandler) == 0x10);
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BaseLoadedInventoryModel.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class DisplayItemModel :
|
||||
public BaseLoadedInventoryModel // 00
|
||||
{
|
||||
public:
|
||||
// members
|
||||
float itemRotation; // 40
|
||||
std::uint32_t uniqueIndex; // 44
|
||||
std::uint16_t column; // 48
|
||||
std::uint16_t index; // 4A
|
||||
std::uint16_t row; // 4C
|
||||
};
|
||||
static_assert(sizeof(DisplayItemModel) == 0x50);
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BSTEvent.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class DoBeforeNewOrLoadCompletedEvent
|
||||
{
|
||||
private:
|
||||
using EventSource_t = BSTGlobalEvent::EventSource<DoBeforeNewOrLoadCompletedEvent>;
|
||||
|
||||
public:
|
||||
[[nodiscard]] static EventSource_t* GetEventSource()
|
||||
{
|
||||
static REL::Relocation<EventSource_t**> singleton{ ID::DoBeforeNewOrLoadCompletedEvent::GetEventSource };
|
||||
if (!*singleton) {
|
||||
*singleton = new EventSource_t(&BSTGlobalEvent::GetSingleton()->eventSourceSDMKiller);
|
||||
}
|
||||
return *singleton;
|
||||
}
|
||||
};
|
||||
static_assert(sizeof(DoBeforeNewOrLoadCompletedEvent) == 0x1);
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BSPointerHandle.h"
|
||||
#include "RE/N/NiPoint3.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class DoorTeleportData
|
||||
{
|
||||
public:
|
||||
enum class TELEPORT_DATA_FLAGS
|
||||
{
|
||||
kNoAlarm = 0x0,
|
||||
kInstant = 0x1,
|
||||
kRelative = 0x4
|
||||
};
|
||||
|
||||
// members
|
||||
TESObjectCELL* transitionCell; // 00
|
||||
ObjectRefHandle linkedDoor; // 08
|
||||
NiPoint3 position; // 0C
|
||||
NiPoint3 rotation; // 18
|
||||
std::uint8_t flags; // 24
|
||||
};
|
||||
static_assert(sizeof(DoorTeleportData) == 0x28);
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
enum class _D3DBLEND
|
||||
{
|
||||
kZero = 0x1,
|
||||
kOne = 0x2,
|
||||
kSrcColor = 0x3,
|
||||
kInvSrcColor = 0x4,
|
||||
kSrcAlpha = 0x5,
|
||||
kInvSrcAlpha = 0x6,
|
||||
kDestAlpha = 0x7,
|
||||
kInvDestAlpha = 0x8,
|
||||
kDestColor = 0x9,
|
||||
kInvDestColor = 0xA,
|
||||
kSrcAlphaSat = 0xB,
|
||||
kBothSrcAlpha = 0xC,
|
||||
kBothInvSrcAlpha = 0xD,
|
||||
kBlendFactor = 0xE,
|
||||
kInvBlendFactor = 0xF,
|
||||
kSrcColor2 = 0x10,
|
||||
kInvSrcColor2 = 0x11,
|
||||
kForce_DWORD = 0x7FFFFFFF
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
enum class _D3DBLENDOP
|
||||
{
|
||||
kAdd = 0x1,
|
||||
kSubtract = 0x2,
|
||||
kRevSubtract = 0x3,
|
||||
kMin = 0x4,
|
||||
kMax = 0x5,
|
||||
kForce_DWORD = 0x7FFFFFFF
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
#pragma once
|
||||
|
||||
namespace RE
|
||||
{
|
||||
enum class _D3DCMPFUNC
|
||||
{
|
||||
kNever = 0x1,
|
||||
kLess = 0x2,
|
||||
kEqual = 0x3,
|
||||
kLessEqual = 0x4,
|
||||
kGreater = 0x5,
|
||||
kNotEqual = 0x6,
|
||||
kGreaterEqual = 0x7,
|
||||
kAlways = 0x8,
|
||||
kForce_DWORD = 0x7FFFFFFF
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user