#pragma once namespace RE { namespace BGSEntryPoint { enum class ENTRY_POINT : std::uint32_t { kModBreathTimer = 0x0, kCalculateCriticalHitChance = 0x1, kCalculateCriticalHitDamageMult = 0x2, kCalculateMineExplodeChance = 0x3, kModIncomingLimbDamage = 0x4, kAdjustBookActorValueBonus = 0x5, kModifyRecoveredHealth = 0x6, kGetShouldAttack = 0x7, kModBuyPrices = 0x8, kAddLeveledListOnDeath = 0x9, kGetMaxCarryWeight = 0xA, kModifyAddictionChance = 0xB, kModifyAddictionDuration = 0xC, kModifyPositiveChemDuration = 0xD, kActivate = 0xE, kIgnoreRunningDuringDetection = 0xF, kIgnoreBrokenLock = 0x10, kModifyEnemyCriticalHitChance = 0x11, kModifySneakAttackMult = 0x12, kModifyMaxPlaceableMines = 0x13, kModifyBowZoom = 0x14, kModifyRecoverArrowChance = 0x15, kModExperience = 0x16, kModTelekinesisDistance = 0x17, kModTelekinesisDamageMult = 0x18, kModTelekinesisDamage = 0x19, kModBashingDamage = 0x1A, kModPowerAttackActionPoints = 0x1B, kModPowerAttackDamage = 0x1C, kModSpellMagnitude = 0x1D, kModSpellDuration = 0x1E, kModSecondaryValueWeight = 0x1F, kModArmorWeight = 0x20, kModIncomingStagger = 0x21, kModTargetStagger = 0x22, kModAttackDamage = 0x23, kModIncomingDamage = 0x24, kModTargetDamageResistance = 0x25, kModSpellCost = 0x26, kModPercentageBlocked = 0x27, kModShieldDeflectArrowChance = 0x28, kModIncomingSpellMagnitude = 0x29, kModIncomingSpellDuration = 0x2A, kModPlayerIntimidation = 0x2B, kModRicochetChance = 0x2C, kModRicochetDamage = 0x2D, kModBribeAmount = 0x2E, kModDetectionLight = 0x2F, kModDetectionMovement = 0x30, kModScrapRewardMult = 0x31, kSetSweepAttack = 0x32, kApplyCombatHitSpell = 0x33, kApplyBashSpell = 0x34, kApplyReanimateSpell = 0x35, kSetBooleanGraphVariable = 0x36, kModSpellCastingSoundEvent = 0x37, kModPickpocketChance = 0x38, kModDetectionSneakSkill = 0x39, kModFallingDamage = 0x3A, kModLockpickSweetSpot = 0x3B, kModSellPrices = 0x3C, kCanPickpocketEquippedItem = 0x3D, kGetPlayerGateLockpick = 0x3E, kSetLockpickStartingArc = 0x3F, kSetLockpickProgressionPicking = 0x40, kSetLockpickUnbreakable = 0x41, kModAlchemyEffectiveness = 0x42, kApplyWeaponSwingSpell = 0x43, kModCommandedActorLimit = 0x44, kApplySneakingSpell = 0x45, kModPlayerMagicSlowdown = 0x46, kModWardMagickaAbsorptionPercent = 0x47, kModInitialIngredientEffectsLearned = 0x48, kPurifyAlchemyIngredients = 0x49, kFilterActivation = 0x4A, kCanDualCastSpell = 0x4B, kModOutgoingExplosionLimbDamage = 0x4C, kModEnchantmentPower = 0x4D, kModSoulPercentCapturedToWeapon = 0x4E, kModVATSAttackAP = 0x4F, kModReflectDamageChance = 0x50, kSetActivateLabel = 0x51, kModKillExperience = 0x52, kModPoisonDoseCount = 0x53, kShouldApplyItem = 0x54, kModArmorRating = 0x55, kModLockpickingCrimeChance = 0x56, kModIngredientsHarvested = 0x57, kModSpellRange = 0x58, kModRicochetCriticalChargeMult = 0x59, kModLockpickRewardKeyChance = 0x5A, kModAutoLockpickChance = 0x5B, kModAutoHackingChance = 0x5C, kModTypedAttackDamage = 0x5D, kModTypedIncomingDamage = 0x5E, kModCharismaChallengeChance = 0x5F, kModSprintAPDrainRate = 0x60, kModDrawnWeaponWeightSpeedEffect = 0x61, kGetPlayerGateHacking = 0x62, kModPlayerExplosionDamage = 0x63, kModPlayerExplosionScale = 0x64, kSetRadsToHealthMult = 0x65, kModActorScopeStability = 0x66, kModActorGrenadeSpeedMult = 0x67, kModExplosionForce = 0x68, kModVATSPenetrationMinVisibility = 0x69, kModRadsForRadHealthMax = 0x6A, kModVATSPlayerAPKillAwardChance = 0x6B, kSetVATSFillCritOnHit = 0x6C, kModVATSConcentratedFireBonus = 0x6D, kModVATSCriticalCount = 0x6E, kModVATSHoldSteadyBonus = 0x6F, kModTypedSpellMagnitude = 0x70, kModTypedIncomingSpellMagnitude = 0x71, kSetVATSGunFuNumTargetsForCrits = 0x72, kModOutgoingLimbDamage = 0x73, kModRestoreActionCostValue = 0x74, kModVATSReloadAP = 0x75, kModIncomingBatteryDamage = 0x76, kModVATSCriticalCharge = 0x77, kModExperienceLocation = 0x78, kModExperienceSpeech = 0x79, kModVATSHeadShotChance = 0x7A, kModVATSHitChance = 0x7B, kModIncomingExplosionDamage = 0x7C, kModAmmoHealthMult = 0x7D, kModHackingGuesses = 0x7E, kModTerminalLockoutTime = 0x7F, kSetUndetectable = 0x80, kInvestInVendor = 0x81, kModOutgoingLimbBashDamage = 0x82, kSetRunWhileOverEncumbered = 0x83, kGetComponentRadarDistance = 0x84, kShowGrenadeTrajectory = 0x85, kModConeOfFireMult = 0x86, kModVATSConcentratedFireDamageMult = 0x87, kApplyBloodyMessSpell = 0x88, kModVATSCritFillChanceOnBank = 0x89, kModVATSCritFillChanceOnUse = 0x8A, kSetVATSCritFillOnAPReward = 0x8B, kSetVATSCritFillOnStranger = 0x8C, kModGunRangeMult = 0x8D, kModScopeHoldBreathAPDrainMult = 0x8E, kSetForceDecapitate = 0x8F, kModVATSShootExplosiveDamageMult = 0x90, kModScroungerFillAmmoChance = 0x91, kSetCanExplodePants = 0x92, kSetVATSPenetrationFullDamage = 0x93, kModVATSGunFu2ndTargetDmgMult = 0x94, kModVATSGunFu3rdTargetDmgMult = 0x95, kModVATSGunFu4thPlusDmgMult = 0x96, kModVATSBlitzMaxDist = 0x97, kSetVATSBlitzDmgMultAtMaxDist = 0x98, kModVATSBlitzDmgBonusDist = 0x99, kModBashCriticalChance = 0x9A, kVATSApplyParalyzingPalmSpell = 0x9B, kModFatigueForFatigueAPMax = 0x9C, kSetFatigueToAPMult = 0x9D, }; template inline void HandleEntryPoint(ENTRY_POINT a_entryPoint, Actor* a_perkOwner, Args... a_args) { using func_t = decltype(&BGSEntryPoint::HandleEntryPoint); static REL::Relocation func{ ID::BGSEntryPoint::HandleEntryPoint }; return func(a_entryPoint, a_perkOwner, a_args...); } } }