styyx-util 1.0
Utility Header for SKSE Plugin development
Loading...
Searching...
No Matches
st-misc.h
Go to the documentation of this file.
1#pragma once
2
3namespace StyyxUtil
4{
5struct MiscUtil
6{
10 static RE::Setting* GetGameSetting(const char* a_setting)
11 {
12 return RE::GameSettingCollection::GetSingleton()
13 ? RE::GameSettingCollection::GetSingleton()->GetSetting(a_setting)
14 : nullptr;
15 }
16
21 template <class T>
22 static void ChangeGameSetting(RE::Setting* setting, const T& value)
23 {
24 if (!setting)
25 {
26 return;
27 }
28
29 switch (setting->GetType())
30 {
31
32 case RE::Setting::Type::kBool:
33 if constexpr (std::is_same_v<T, bool> || std::is_same_v<T, int> || std::is_same_v<T, uint32_t>)
34 {
35 setting->data.b = static_cast<bool>(value);
36 }
37 break;
38
39 case RE::Setting::Type::kFloat:
40 if constexpr (std::is_floating_point_v<T> || std::is_integral_v<T>)
41 {
42 setting->data.f = static_cast<float>(value);
43 }
44 break;
45
46 case RE::Setting::Type::kSignedInteger:
47 if constexpr (std::is_integral_v<T>)
48 {
49 setting->data.i = static_cast<int32_t>(value);
50 }
51 break;
52
53 case RE::Setting::Type::kUnsignedInteger:
54 if constexpr (std::is_integral_v<T>)
55 {
56 setting->data.u = static_cast<std::uint32_t>(value);
57 }
58 break;
59
60 case RE::Setting::Type::kString:
61 if constexpr (std::is_same_v<T, const char*> || std::is_same_v<T, std::string>)
62 {
63 setting->data.s(value);
64 }
65 break;
66
67 default:
68 break;
69 }
70 };
71
80 template <class T>
81 static void SetGMST(const char* gmst, const T& value)
82 {
84 };
85
95 static bool IsModLoaded(const std::string_view& mod_name)
96 {
97 const auto data_handler = RE::TESDataHandler::GetSingleton();
98
99 if (const auto main_file = data_handler->LookupModByName(mod_name);
100 !main_file || main_file->compileIndex == 0xFF)
101 return false;
102 return true;
103 }
104
108 static RE::TESObjectWEAP* GetUnarmedWeapon()
109 {
110 auto** singleton{reinterpret_cast<RE::TESObjectWEAP**>(REL::ID(401061).address())};
111 return *singleton;
112 }
113
117 static void RunConsoleCommandOnRef(RE::TESObjectREFR* a_target, const std::string_view a_command)
118 {
119 const auto scriptFactory = RE::IFormFactory::GetConcreteFormFactoryByType<RE::Script>();
120 const auto script = scriptFactory ? scriptFactory->Create() : nullptr;
121 if (!script)
122 return;
123 script->SetCommand(a_command);
124 script->CompileAndRun(a_target);
125 }
126
127#pragma region EnumToString
128
131
135 static const char* EntryPointToString(RE::BGSEntryPoint::ENTRY_POINT entryPoint)
136 {
137 using namespace RE;
138 switch (entryPoint)
139 {
140 case BGSEntryPoint::ENTRY_POINTS::kCalculateWeaponDamage:
141 return "kCalculateWeaponDamage";
142 case BGSEntryPoint::ENTRY_POINTS::kCalculateMyCriticalHitChance:
143 return "kCalculateMyCriticalHitChance";
144 case BGSEntryPoint::ENTRY_POINTS::kCalculateMyCriticalHitDamage:
145 return "kCalculateMyCriticalHitDamage";
146 case BGSEntryPoint::ENTRY_POINTS::kCalculateMineExplodeChance:
147 return "kCalculateMineExplodeChance";
148 case BGSEntryPoint::ENTRY_POINTS::kAdjustLimbDamage:
149 return "kAdjustLimbDamage";
150 case BGSEntryPoint::ENTRY_POINTS::kAdjustBookSkillPoints:
151 return "kAdjustBookSkillPoints";
152 case BGSEntryPoint::ENTRY_POINTS::kModRecoveredHealth:
153 return "kModRecoveredHealth";
154 case BGSEntryPoint::ENTRY_POINTS::kGetShouldAttack:
155 return "kGetShouldAttack";
156 case BGSEntryPoint::ENTRY_POINTS::kModBuyPrices:
157 return "kModBuyPrices";
158 case BGSEntryPoint::ENTRY_POINTS::kAddLeveledListOnDeath:
159 return "kAddLeveledListOnDeath";
160 case BGSEntryPoint::ENTRY_POINTS::kGetMaxCarryWeight:
161 return "kGetMaxCarryWeight";
162 case BGSEntryPoint::ENTRY_POINTS::kModAddictionChance:
163 return "kModAddictionChance";
164 case BGSEntryPoint::ENTRY_POINTS::kModAddictionDuration:
165 return "kModAddictionDuration";
166 case BGSEntryPoint::ENTRY_POINTS::kModPositiveChemDuration:
167 return "kModPositiveChemDuration";
168 case BGSEntryPoint::ENTRY_POINTS::kActivate:
169 return "kActivate";
170 case BGSEntryPoint::ENTRY_POINTS::kIgnoreRunningDuringDetection:
171 return "kIgnoreRunningDuringDetection";
172 case BGSEntryPoint::ENTRY_POINTS::kIgnoreBrokenLock:
173 return "kIgnoreBrokenLock";
174 case BGSEntryPoint::ENTRY_POINTS::kModEnemyCriticalHitChance:
175 return "kModEnemyCriticalHitChance";
176 case BGSEntryPoint::ENTRY_POINTS::kModSneakAttackMult:
177 return "kModSneakAttackMult";
178 case BGSEntryPoint::ENTRY_POINTS::kModMaxPlaceableMines:
179 return "kModMaxPlaceableMines";
180 case BGSEntryPoint::ENTRY_POINTS::kModBowZoom:
181 return "kModBowZoom";
182 case BGSEntryPoint::ENTRY_POINTS::kModRecoverArrowChance:
183 return "kModRecoverArrowChance";
184 case BGSEntryPoint::ENTRY_POINTS::kModSkillUse:
185 return "kModSkillUse";
186 case BGSEntryPoint::ENTRY_POINTS::kModTelekinesisDistance:
187 return "kModTelekinesisDistance";
188 case BGSEntryPoint::ENTRY_POINTS::kModTelekinesisDamageMult:
189 return "kModTelekinesisDamageMult";
190 case BGSEntryPoint::ENTRY_POINTS::kModTelekinesisDamage:
191 return "kModTelekinesisDamage";
192 case BGSEntryPoint::ENTRY_POINTS::kModBashingDamage:
193 return "kModBashingDamage";
194 case BGSEntryPoint::ENTRY_POINTS::kModPowerAttackStamina:
195 return "kModPowerAttackStamina";
196 case BGSEntryPoint::ENTRY_POINTS::kModPowerAttackDamage:
197 return "kModPowerAttackDamage";
198 case BGSEntryPoint::ENTRY_POINTS::kModSpellMagnitude:
199 return "kModSpellMagnitude";
200 case BGSEntryPoint::ENTRY_POINTS::kModSpellDuration:
201 return "kModSpellDuration";
202 case BGSEntryPoint::ENTRY_POINTS::kModSecondaryValueWeight:
203 return "kModSecondaryValueWeight";
204 case BGSEntryPoint::ENTRY_POINTS::kModArmorWeight:
205 return "kModArmorWeight";
206 case BGSEntryPoint::ENTRY_POINTS::kModIncomingStagger:
207 return "kModIncomingStagger";
208 case BGSEntryPoint::ENTRY_POINTS::kModTargetStagger:
209 return "kModTargetStagger";
210 case BGSEntryPoint::ENTRY_POINTS::kModAttackDamage:
211 return "kModAttackDamage";
212 case BGSEntryPoint::ENTRY_POINTS::kModIncomingDamage:
213 return "kModIncomingDamage";
214 case BGSEntryPoint::ENTRY_POINTS::kModTargetDamageResistance:
215 return "kModTargetDamageResistance";
216 case BGSEntryPoint::ENTRY_POINTS::kModSpellCost:
217 return "kModSpellCost";
218 case BGSEntryPoint::ENTRY_POINTS::kModPercentBlocked:
219 return "kModPercentBlocked";
220 case BGSEntryPoint::ENTRY_POINTS::kModShieldDeflectArrowChance:
221 return "kModShieldDeflectArrowChance";
222 case BGSEntryPoint::ENTRY_POINTS::kModIncomingSpellMagnitude:
223 return "kModIncomingSpellMagnitude";
224 case BGSEntryPoint::ENTRY_POINTS::kModIncomingSpellDuration:
225 return "kModIncomingSpellDuration";
226 case BGSEntryPoint::ENTRY_POINTS::kModPlayerIntimidation:
227 return "kModPlayerIntimidation";
228 case BGSEntryPoint::ENTRY_POINTS::kModPlayerReputation:
229 return "kModPlayerReputation";
230 case BGSEntryPoint::ENTRY_POINTS::kModFavorPoints:
231 return "kModFavorPoints";
232 case BGSEntryPoint::ENTRY_POINTS::kModBribeAmount:
233 return "kModBribeAmount";
234 case BGSEntryPoint::ENTRY_POINTS::kModDetectionLight:
235 return "kModDetectionLight";
236 case BGSEntryPoint::ENTRY_POINTS::kModDetectionMovement:
237 return "kModDetectionMovement";
238 case BGSEntryPoint::ENTRY_POINTS::kModSoulGemRecharge:
239 return "kModSoulGemRecharge";
240 case BGSEntryPoint::ENTRY_POINTS::kSetSweepAttack:
241 return "kSetSweepAttack";
242 case BGSEntryPoint::ENTRY_POINTS::kApplyCombatHitSpell:
243 return "kApplyCombatHitSpell";
244 case BGSEntryPoint::ENTRY_POINTS::kApplyBashingSpell:
245 return "kApplyBashingSpell";
246 case BGSEntryPoint::ENTRY_POINTS::kApplyReanimateSpell:
247 return "kApplyReanimateSpell";
248 case BGSEntryPoint::ENTRY_POINTS::kSetBooleanGraphVariable:
249 return "kSetBooleanGraphVariable";
250 case BGSEntryPoint::ENTRY_POINTS::kModSpellCastingSoundEvent:
251 return "kModSpellCastingSoundEvent";
252 case BGSEntryPoint::ENTRY_POINTS::kModPickpocketChance:
253 return "kModPickpocketChance";
254 case BGSEntryPoint::ENTRY_POINTS::kModDetectionSneakSkill:
255 return "kModDetectionSneakSkill";
256 case BGSEntryPoint::ENTRY_POINTS::kModFallingDamage:
257 return "kModFallingDamage";
258 case BGSEntryPoint::ENTRY_POINTS::kModLockpickSweetSpot:
259 return "kModLockpickSweetSpot";
260 case BGSEntryPoint::ENTRY_POINTS::kModSellPrices:
261 return "kModSellPrices";
262 case BGSEntryPoint::ENTRY_POINTS::kCanPickpocketEquippedItem:
263 return "kCanPickpocketEquippedItem";
264 case BGSEntryPoint::ENTRY_POINTS::kModLockpickLevelAllowed:
265 return "kModLockpickLevelAllowed";
266 case BGSEntryPoint::ENTRY_POINTS::kSetLockpickStartingArc:
267 return "kSetLockpickStartingArc";
268 case BGSEntryPoint::ENTRY_POINTS::kSetProgressionPicking:
269 return "kSetProgressionPicking";
270 case BGSEntryPoint::ENTRY_POINTS::kMakeLockpicksUnbreakable:
271 return "kMakeLockpicksUnbreakable";
272 case BGSEntryPoint::ENTRY_POINTS::kModAlchemyEffectiveness:
273 return "kModAlchemyEffectiveness";
274 case BGSEntryPoint::ENTRY_POINTS::kApplyWeaponSwingSpell:
275 return "kApplyWeaponSwingSpell";
276 case BGSEntryPoint::ENTRY_POINTS::kModCommandedActorLimit:
277 return "kModCommandedActorLimit";
278 case BGSEntryPoint::ENTRY_POINTS::kApplySneakingSpell:
279 return "kApplySneakingSpell";
280 case BGSEntryPoint::ENTRY_POINTS::kModPlayerMagicSlowdown:
281 return "kModPlayerMagicSlowdown";
282 case BGSEntryPoint::ENTRY_POINTS::kModWardMagickaAbsorptionPct:
283 return "kModWardMagickaAbsorptionPct";
284 case BGSEntryPoint::ENTRY_POINTS::kModInitialIngredientEffectsLearned:
285 return "kModInitialIngredientEffectsLearned";
286 case BGSEntryPoint::ENTRY_POINTS::kPurifyAlchemyIngredients:
287 return "kPurifyAlchemyIngredients";
288 case BGSEntryPoint::ENTRY_POINTS::kFilterActivation:
289 return "kFilterActivation";
290 case BGSEntryPoint::ENTRY_POINTS::kCanDualCastSpell:
291 return "kCanDualCastSpell";
292 case BGSEntryPoint::ENTRY_POINTS::kModTemperingHealth:
293 return "kModTemperingHealth";
294 case BGSEntryPoint::ENTRY_POINTS::kModEnchantmentPower:
295 return "kModEnchantmentPower";
296 case BGSEntryPoint::ENTRY_POINTS::kModSoulPctCapturedToWeapon:
297 return "kModSoulPctCapturedToWeapon";
298 case BGSEntryPoint::ENTRY_POINTS::kModSoulGemEnchanting:
299 return "kModSoulGemEnchanting";
300 case BGSEntryPoint::ENTRY_POINTS::kModNumberAppliedEnchantmentsAllowed:
301 return "kModNumberAppliedEnchantmentsAllowed";
302 case BGSEntryPoint::ENTRY_POINTS::kSetActivateLabel:
303 return "kSetActivateLabel";
304 case BGSEntryPoint::ENTRY_POINTS::kModShoutOK:
305 return "kModShoutOK";
306 case BGSEntryPoint::ENTRY_POINTS::kModPoisonDoseCount:
307 return "kModPoisonDoseCount";
308 case BGSEntryPoint::ENTRY_POINTS::kShouldApplyPlacedItem:
309 return "kShouldApplyPlacedItem";
310 case BGSEntryPoint::ENTRY_POINTS::kModArmorRating:
311 return "kModArmorRating";
312 case BGSEntryPoint::ENTRY_POINTS::kModLockpickingCrimeChance:
313 return "kModLockpickingCrimeChance";
314 case BGSEntryPoint::ENTRY_POINTS::kModIngredientsHarvested:
315 return "kModIngredientsHarvested";
316 case BGSEntryPoint::ENTRY_POINTS::kModSpellRange_TargetLoc:
317 return "kModSpellRange_TargetLoc";
318 case BGSEntryPoint::ENTRY_POINTS::kModPotionsCreated:
319 return "kModPotionsCreated";
320 case BGSEntryPoint::ENTRY_POINTS::kModLockpickingKeyRewardChance:
321 return "kModLockpickingKeyRewardChance";
322 case BGSEntryPoint::ENTRY_POINTS::kAllowMountActor:
323 return "kAllowMountActor";
324 default:
325 return "UnknownEntryPoint";
326 }
327 }
328
332 static const char* WeaponTypeToString(const RE::WEAPON_TYPE a_type)
333 {
334 switch (a_type)
335 {
336 case RE::WEAPON_TYPE::kBow:
337 return "kBow";
338 case RE::WEAPON_TYPE::kHandToHandMelee:
339 return "kHandToHandMelee";
340 case RE::WEAPON_TYPE::kOneHandAxe:
341 return "kOneHandAxe";
342 case RE::WEAPON_TYPE::kOneHandDagger:
343 return "kOneHandDagger";
344 case RE::WEAPON_TYPE::kOneHandMace:
345 return "kOneHandMace";
346 case RE::WEAPON_TYPE::kOneHandSword:
347 return "kOneHandSword";
348 case RE::WEAPON_TYPE::kTwoHandAxe:
349 return "kTwoHandAxe";
350 case RE::WEAPON_TYPE::kTwoHandSword:
351 return "kTwoHandSword";
352 case RE::WEAPON_TYPE::kCrossbow:
353 return "kCrossbow";
354 case RE::WEAPON_TYPE::kStaff:
355 return "kStaff";
356 default:
357 return "Unknown";
358 }
359 }
360
364 static const char* AttackStateToString(RE::ATTACK_STATE_ENUM state)
365 {
366
367 switch (state)
368 {
369 case RE::ATTACK_STATE_ENUM::kNone:
370 return "kNone";
371 case RE::ATTACK_STATE_ENUM::kDraw:
372 return "kDraw";
373 case RE::ATTACK_STATE_ENUM::kSwing:
374 return "kSwing";
375 case RE::ATTACK_STATE_ENUM::kHit:
376 return "kHit";
377 case RE::ATTACK_STATE_ENUM::kNextAttack:
378 return "kNextAttack";
379 case RE::ATTACK_STATE_ENUM::kFollowThrough:
380 return "kFollowThrough";
381 case RE::ATTACK_STATE_ENUM::kBash:
382 return "kBash";
383 case RE::ATTACK_STATE_ENUM::kBowDraw:
384 return "kBowDraw";
385 case RE::ATTACK_STATE_ENUM::kBowAttached:
386 return "kBowAttached";
387 case RE::ATTACK_STATE_ENUM::kBowDrawn:
388 return "kBowDrawn";
389 case RE::ATTACK_STATE_ENUM::kBowReleasing:
390 return "kBowReleasing";
391 case RE::ATTACK_STATE_ENUM::kBowReleased:
392 return "kBowReleased";
393 case RE::ATTACK_STATE_ENUM::kBowNextAttack:
394 return "kBowNextAttack";
395 case RE::ATTACK_STATE_ENUM::kBowFollowThrough:
396 return "kBowFollowThrough";
397 case RE::ATTACK_STATE_ENUM::kFire:
398 return "kFire";
399 case RE::ATTACK_STATE_ENUM::kFiring:
400 return "kFiring";
401 case RE::ATTACK_STATE_ENUM::kFired:
402 return "kFired";
403 default:
404 return "Unknown Attack State";
405 }
406 }
407
411 static const char* ExtraDataTypeToString(RE::ExtraDataType a_type)
412 {
413 switch (a_type)
414 {
415 case RE::ExtraDataType::kNone:
416 return "None";
417 case RE::ExtraDataType::kHavok:
418 return "Havok";
419 case RE::ExtraDataType::kCell3D:
420 return "Cell3D";
421 case RE::ExtraDataType::kCellWaterType:
422 return "CellWaterType";
423 case RE::ExtraDataType::kRegionList:
424 return "RegionList";
425 case RE::ExtraDataType::kSeenData:
426 return "SeenData";
427 case RE::ExtraDataType::kEditorID:
428 return "EditorID";
429 case RE::ExtraDataType::kCellMusicType:
430 return "CellMusicType";
431 case RE::ExtraDataType::kCellSkyRegion:
432 return "CellSkyRegion";
433 case RE::ExtraDataType::kProcessMiddleLow:
434 return "ProcessMiddleLow";
435 case RE::ExtraDataType::kDetachTime:
436 return "DetachTime";
437 case RE::ExtraDataType::kPersistentCell:
438 return "PersistentCell";
439 case RE::ExtraDataType::kAction:
440 return "Action";
441 case RE::ExtraDataType::kStartingPosition:
442 return "StartingPosition";
443 case RE::ExtraDataType::kAnimGraphManager:
444 return "AnimGraphManager";
445 case RE::ExtraDataType::kBiped:
446 return "Biped";
447 case RE::ExtraDataType::kUsedMarkers:
448 return "UsedMarkers";
449 case RE::ExtraDataType::kDistantData:
450 return "DistantData";
451 case RE::ExtraDataType::kRagDollData:
452 return "RagDollData";
453 case RE::ExtraDataType::kContainerChanges:
454 return "ContainerChanges";
455 case RE::ExtraDataType::kWorn:
456 return "Worn";
457 case RE::ExtraDataType::kWornLeft:
458 return "WornLeft";
459 case RE::ExtraDataType::kPackageStartLocation:
460 return "PackageStartLocation";
461 case RE::ExtraDataType::kPackage:
462 return "Package";
463 case RE::ExtraDataType::kTresPassPackage:
464 return "TresPassPackage";
465 case RE::ExtraDataType::kRunOncePacks:
466 return "RunOncePacks";
467 case RE::ExtraDataType::kReferenceHandle:
468 return "ReferenceHandle";
469 case RE::ExtraDataType::kFollower:
470 return "Follower";
471 case RE::ExtraDataType::kLevCreaModifier:
472 return "LevCreaModifier";
473 case RE::ExtraDataType::kGhost:
474 return "Ghost";
475 case RE::ExtraDataType::kOriginalReference:
476 return "OriginalReference";
477 case RE::ExtraDataType::kOwnership:
478 return "Ownership";
479 case RE::ExtraDataType::kGlobal:
480 return "Global";
481 case RE::ExtraDataType::kRank:
482 return "Rank";
483 case RE::ExtraDataType::kCount:
484 return "Count";
485 case RE::ExtraDataType::kHealth:
486 return "Health";
487 case RE::ExtraDataType::kTimeLeft:
488 return "TimeLeft";
489 case RE::ExtraDataType::kCharge:
490 return "Charge";
491 case RE::ExtraDataType::kLight:
492 return "Light";
493 case RE::ExtraDataType::kLock:
494 return "Lock";
495 case RE::ExtraDataType::kTeleport:
496 return "Teleport";
497 case RE::ExtraDataType::kMapMarker:
498 return "MapMarker";
499 case RE::ExtraDataType::kLeveledCreature:
500 return "LeveledCreature";
501 case RE::ExtraDataType::kLeveledItem:
502 return "LeveledItem";
503 case RE::ExtraDataType::kScale:
504 return "Scale";
505 case RE::ExtraDataType::kMissingLinkedRefIDs:
506 return "MissingLinkedRefIDs";
507 case RE::ExtraDataType::kMagicCaster:
508 return "MagicCaster";
509 case RE::ExtraDataType::kNonActorMagicTarget:
510 return "NonActorMagicTarget";
511 case RE::ExtraDataType::kPlayerCrimeList:
512 return "PlayerCrimeList";
513 case RE::ExtraDataType::kEnableStateParent:
514 return "EnableStateParent";
515 case RE::ExtraDataType::kEnableStateChildren:
516 return "EnableStateChildren";
517 case RE::ExtraDataType::kItemDropper:
518 return "ItemDropper";
519 case RE::ExtraDataType::kDroppedItemList:
520 return "DroppedItemList";
521 case RE::ExtraDataType::kRandomTeleportMarker:
522 return "RandomTeleportMarker";
523 case RE::ExtraDataType::kSavedHavokData:
524 return "SavedHavokData";
525 case RE::ExtraDataType::kCannotWear:
526 return "CannotWear";
527 case RE::ExtraDataType::kPoison:
528 return "Poison";
529 case RE::ExtraDataType::kMagicLight:
530 return "MagicLight";
531 case RE::ExtraDataType::kLastFinishedSequence:
532 return "LastFinishedSequence";
533 case RE::ExtraDataType::kSavedAnimation:
534 return "SavedAnimation";
535 case RE::ExtraDataType::kNorthRotation:
536 return "NorthRotation";
537 case RE::ExtraDataType::kSpawnContainer:
538 return "SpawnContainer";
539 case RE::ExtraDataType::kFriendHits:
540 return "FriendHits";
541 case RE::ExtraDataType::kHeadingTarget:
542 return "HeadingTarget";
543 case RE::ExtraDataType::kRefractionProperty:
544 return "RefractionProperty";
545 case RE::ExtraDataType::kStartingWorldOrCell:
546 return "StartingWorldOrCell";
547 case RE::ExtraDataType::kHotkey:
548 return "Hotkey";
549 case RE::ExtraDataType::kEditorRef3DData:
550 return "EditorRef3DData";
551 case RE::ExtraDataType::kEditorRefMoveData:
552 return "EditorRefMoveData";
553 case RE::ExtraDataType::kInfoGeneralTopic:
554 return "InfoGeneralTopic";
555 case RE::ExtraDataType::kHasNoRumors:
556 return "HasNoRumors";
557 case RE::ExtraDataType::kSound:
558 return "Sound";
559 case RE::ExtraDataType::kTerminalState:
560 return "TerminalState";
561 case RE::ExtraDataType::kLinkedRef:
562 return "LinkedRef";
563 case RE::ExtraDataType::kLinkedRefChildren:
564 return "LinkedRefChildren";
565 case RE::ExtraDataType::kActivateRef:
566 return "ActivateRef";
567 case RE::ExtraDataType::kActivateRefChildren:
568 return "ActivateRefChildren";
569 case RE::ExtraDataType::kCanTalkToPlayer:
570 return "CanTalkToPlayer";
571 case RE::ExtraDataType::kObjectHealth:
572 return "ObjectHealth";
573 case RE::ExtraDataType::kCellImageSpace:
574 return "CellImageSpace";
575 case RE::ExtraDataType::kNavMeshPortal:
576 return "NavMeshPortal";
577 case RE::ExtraDataType::kModelSwap:
578 return "ModelSwap";
579 case RE::ExtraDataType::kRadius:
580 return "Radius";
581 case RE::ExtraDataType::kFactionChanges:
582 return "FactionChanges";
583 case RE::ExtraDataType::kDismemberedLimbs:
584 return "DismemberedLimbs";
585 case RE::ExtraDataType::kActorCause:
586 return "ActorCause";
587 case RE::ExtraDataType::kMultiBound:
588 return "MultiBound";
589 case RE::ExtraDataType::kMultiBoundMarkerData:
590 return "MultiBoundMarkerData";
591 case RE::ExtraDataType::kMultiBoundRef:
592 return "MultiBoundRef";
593 case RE::ExtraDataType::kReflectedRefs:
594 return "ReflectedRefs";
595 case RE::ExtraDataType::kReflectorRefs:
596 return "ReflectorRefs";
597 case RE::ExtraDataType::kEmittanceSource:
598 return "EmittanceSource";
599 case RE::ExtraDataType::kCombatStyle:
600 return "CombatStyle";
601 case RE::ExtraDataType::kPrimitive:
602 return "Primitive";
603 case RE::ExtraDataType::kOpenCloseActivateRef:
604 return "OpenCloseActivateRef";
605 case RE::ExtraDataType::kAnimNoteReceiver:
606 return "AnimNoteReceiver";
607 case RE::ExtraDataType::kAmmo:
608 return "Ammo";
609 case RE::ExtraDataType::kPatrolRefData:
610 return "PatrolRefData";
611 case RE::ExtraDataType::kPackageData:
612 return "PackageData";
613 case RE::ExtraDataType::kOcclusionShape:
614 return "OcclusionShape";
615 case RE::ExtraDataType::kCollisionData:
616 return "CollisionData";
617 case RE::ExtraDataType::kSayTopicInfoOnceADay:
618 return "SayTopicInfoOnceADay";
619 case RE::ExtraDataType::kEncounterZone:
620 return "EncounterZone";
621 case RE::ExtraDataType::kSayTopicInfo:
622 return "SayTopicInfo";
623 case RE::ExtraDataType::kOcclusionPlaneRefData:
624 return "OcclusionPlaneRefData";
625 case RE::ExtraDataType::kPortalRefData:
626 return "PortalRefData";
627 case RE::ExtraDataType::kPortal:
628 return "Portal";
629 case RE::ExtraDataType::kRoom:
630 return "Room";
631 case RE::ExtraDataType::kHealthPerc:
632 return "HealthPerc";
633 case RE::ExtraDataType::kRoomRefData:
634 return "RoomRefData";
635 case RE::ExtraDataType::kGuardedRefData:
636 return "GuardedRefData";
637 case RE::ExtraDataType::kCreatureAwakeSound:
638 return "CreatureAwakeSound";
639 case RE::ExtraDataType::kHorse:
640 return "Horse";
641 case RE::ExtraDataType::kIgnoredBySandbox:
642 return "IgnoredBySandbox";
643 case RE::ExtraDataType::kCellAcousticSpace:
644 return "CellAcousticSpace";
645 case RE::ExtraDataType::kReservedMarkers:
646 return "ReservedMarkers";
647 case RE::ExtraDataType::kWeaponIdleSound:
648 return "WeaponIdleSound";
649 case RE::ExtraDataType::kWaterLightRefs:
650 return "WaterLightRefs";
651 case RE::ExtraDataType::kLitWaterRefs:
652 return "LitWaterRefs";
653 case RE::ExtraDataType::kWeaponAttackSound:
654 return "WeaponAttackSound";
655 case RE::ExtraDataType::kActivateLoopSound:
656 return "ActivateLoopSound";
657 case RE::ExtraDataType::kPatrolRefInUseData:
658 return "PatrolRefInUseData";
659 case RE::ExtraDataType::kAshPileRef:
660 return "AshPileRef";
661 case RE::ExtraDataType::kCreatureMovementSound:
662 return "CreatureMovementSound";
663 case RE::ExtraDataType::kFollowerSwimBreadcrumbs:
664 return "FollowerSwimBreadcrumbs";
665 case RE::ExtraDataType::kAliasInstanceArray:
666 return "AliasInstanceArray";
667 case RE::ExtraDataType::kLocation:
668 return "Location";
669 case RE::ExtraDataType::kLocationRefType:
670 return "LocationRefType";
671 case RE::ExtraDataType::kPromotedRef:
672 return "PromotedRef";
673 case RE::ExtraDataType::kAnimationSequencer:
674 return "AnimationSequencer";
675 case RE::ExtraDataType::kOutfitItem:
676 return "OutfitItem";
677 case RE::ExtraDataType::kLeveledItemBase:
678 return "LeveledItemBase";
679 case RE::ExtraDataType::kLightData:
680 return "LightData";
681 case RE::ExtraDataType::kSceneData:
682 return "SceneData";
683 case RE::ExtraDataType::kBadPosition:
684 return "BadPosition";
685 case RE::ExtraDataType::kHeadTrackingWeight:
686 return "HeadTrackingWeight";
687 case RE::ExtraDataType::kFromAlias:
688 return "FromAlias";
689 case RE::ExtraDataType::kShouldWear:
690 return "ShouldWear";
691 case RE::ExtraDataType::kFavorCost:
692 return "FavorCost";
693 case RE::ExtraDataType::kAttachedArrows3D:
694 return "AttachedArrows3D";
695 case RE::ExtraDataType::kTextDisplayData:
696 return "TextDisplayData";
697 case RE::ExtraDataType::kAlphaCutoff:
698 return "AlphaCutoff";
699 case RE::ExtraDataType::kEnchantment:
700 return "Enchantment";
701 case RE::ExtraDataType::kSoul:
702 return "Soul";
703 case RE::ExtraDataType::kForcedTarget:
704 return "ForcedTarget";
705 case RE::ExtraDataType::kUniqueID:
706 return "UniqueID";
707 case RE::ExtraDataType::kFlags:
708 return "Flags";
709 case RE::ExtraDataType::kRefrPath:
710 return "RefrPath";
711 case RE::ExtraDataType::kDecalGroup:
712 return "DecalGroup";
713 case RE::ExtraDataType::kLockList:
714 return "LockList";
715 case RE::ExtraDataType::kForcedLandingMarker:
716 return "ForcedLandingMarker";
717 case RE::ExtraDataType::kLargeRefOwnerCells:
718 return "LargeRefOwnerCells";
719 case RE::ExtraDataType::kCellWaterEnvMap:
720 return "CellWaterEnvMap";
721 case RE::ExtraDataType::kCellGrassData:
722 return "CellGrassData";
723 case RE::ExtraDataType::kTeleportName:
724 return "TeleportName";
725 case RE::ExtraDataType::kInteraction:
726 return "Interaction";
727 case RE::ExtraDataType::kWaterData:
728 return "WaterData";
729 case RE::ExtraDataType::kWaterCurrentZoneData:
730 return "WaterCurrentZoneData";
731 case RE::ExtraDataType::kAttachRef:
732 return "AttachRef";
733 case RE::ExtraDataType::kAttachRefChildren:
734 return "AttachRefChildren";
735 case RE::ExtraDataType::kGroupConstraint:
736 return "GroupConstraint";
737 case RE::ExtraDataType::kScriptedAnimDependence:
738 return "ScriptedAnimDependence";
739 case RE::ExtraDataType::kCachedScale:
740 return "CachedScale";
741 case RE::ExtraDataType::kRaceData:
742 return "RaceData";
743 case RE::ExtraDataType::kGIDBuffer:
744 return "GIDBuffer";
745 case RE::ExtraDataType::kMissingRefIDs:
746 return "MissingRefIDs";
747 case RE::ExtraDataType::kResourcesPreload:
748 return "ResourcesPreload";
749 default:
750 return "Unknown";
751 }
752 }
753
754
755#pragma endregion
756};
757} // namespace StyyxUtil
static const char * WeaponTypeToString(const RE::WEAPON_TYPE a_type)
Get the name of a weapon type.
Definition st-misc.h:332
static const char * ExtraDataTypeToString(RE::ExtraDataType a_type)
Get the name of an extra type.
Definition st-misc.h:411
static const char * EntryPointToString(RE::BGSEntryPoint::ENTRY_POINT entryPoint)
Get the entry point name.
Definition st-misc.h:135
static const char * AttackStateToString(RE::ATTACK_STATE_ENUM state)
Get the name of a specified attack state.
Definition st-misc.h:364
Definition st-actor.h:7
Definition st-misc.h:6
static bool IsModLoaded(const std::string_view &mod_name)
Check if a mod is loaded by its full file name.
Definition st-misc.h:95
static void ChangeGameSetting(RE::Setting *setting, const T &value)
Helper template to easily set a game setting to a value.
Definition st-misc.h:22
static void RunConsoleCommandOnRef(RE::TESObjectREFR *a_target, const std::string_view a_command)
Run console command on reference.
Definition st-misc.h:117
static RE::TESObjectWEAP * GetUnarmedWeapon()
Get the unarmed weapon pointer.
Definition st-misc.h:108
static void SetGMST(const char *gmst, const T &value)
Set a game setting (by name) to a specific value.
Definition st-misc.h:81
static RE::Setting * GetGameSetting(const char *a_setting)
Helper function to get Game settings by name.
Definition st-misc.h:10