mysterymagination / ryddelmyst

cutethulhu meets Castlevania on the battlefields of Final Fantasy Tactics!
GNU General Public License v3.0
2 stars 0 forks source link

Add lasers to clockworkbeauty! #88

Closed mysterymagination closed 3 months ago

mysterymagination commented 10 months ago
mysterymagination commented 10 months ago

todo: what's involved with detecting collision and handling it in Niagara particle FX? Could we detect it quick in the unpleasant Niagara module script and then hand the event off to cpp?

mysterymagination commented 9 months ago

~todo~: ask on forums about material vs material instance and how to set up a class to take a material in the editor but have a default on standby in the cpp. ~todo~: ask on forums about why UMagicWeapon and UAttack fields aren't settable in the editor. As usual, no one is replying on the forums, but whatever I somewhat figured out the material situation so whatever

mysterymagination commented 9 months ago

~todo:~ create a function for clockworkbeauty to fire blaster bolt. todo: add to clockworkbeauty behavior tree so that she fires blaster bolt in certain conditions e.g. player is mid range and/or close to death. Ideally something about how little maneuverability the player has would be taken into account, but that could get very tricky; would need to be able to perceive player distance to nearby obstacles which could be brute forced with a physics sweep or could short cut to actors with obstacle tags or something, maybe something involving the navmesh? There may be prebuilt BT tasks for this sort of thing.

mysterymagination commented 9 months ago

~todo:~ in order for the blaster bolt pierce effect to matter, it shouldn't despawn on collision with a hitbox; rather, it should only despawn when it hits a world static collision object. Ideally it would despawn on anything with a sufficient density or hardness or whatever, but that could be tricky to make happen. The player collision cylinder will cause problems stopping it too soon if we allow world dynamics, unless maybe we add hitbox collision profile to character collision cylinders... EDIT: I went ahead and made it overlap everything except World Static objects (which it blocks) and then added an overlap event that procs HitBoxerComponent::OnHit() but not the Actor::Destroy() call.

mysterymagination commented 9 months ago

todo: she doesn't actually aim the blaster bolt at us; we leaned on the existing face player AI behavior which gets her aiming at us iff we're on about the same XY plane. The sniper on the roof just fires over Maya's head.

mysterymagination commented 9 months ago

todo: for the bullet spray, https://docs.unrealengine.com/4.27/en-US/API/Runtime/Engine/Components/USplineComponent/ looks very promising. Maybe do like an algo art thing where we try to make graph curves by playing with exponents and the delta T or something.

mysterymagination commented 8 months ago

todo: the blaster bolt velocity doesn't respond to my setter in the BP; setting it to right, forward, up vector all does the same thing as does setting it to all zeroes. I discovered this when I tried rotating the capsule by 90 CC or CCW to see if I could get it nicely lying on its side as intended. For some reason the editor won't let me rotate its static mesh, so instead I added a pitch rotation to its spawning transform; this resulted in the bullet going straight up for 90, presumably CCW, and straight down for -90*, presumably CW.

mysterymagination commented 6 months ago

~todo~: I have the flamebead splineguidecomponent stuff set up for the way-too-complicated bullet spray, but I'm never seeing any of my SplineGuideComponent logs print. Presumably it isn't actually getting created? I do see the print string right before it should be spawned and added to ClockworkBeauty. EDIT: nm I forgot I added a requirement to call StartSplineBullets() after Component creation so you can configure it with a bullet template.

mysterymagination commented 6 months ago

~todo~: crash in StartSplineBullets() because I never actually created the Spline object before calling AddPoint().

mysterymagination commented 6 months ago

~todo~: weird not quite crash but basically an assert fail (?) in SplineComponent:

LogTemp: Warning: SplineGuideComponent::StartSplineBullets; adding spline point at index 0 with position 0.000000, 0.000000, 0.000000
LogOutputDevice: Warning: Script Stack (3 frames) :
/Game/Ryddelmyst_Assets/Blueprints/AI/Bestiary/ClockworkBeauty/BP_ClockworkBeauty.BP_ClockworkBeauty_C.FireBulletSpray
/Game/Ryddelmyst_Assets/Blueprints/AI/Bestiary/ClockworkBeauty/BTTask_ClockworkBeauty_FireBulletSpray.BTTask_ClockworkBeauty_FireBulletSpray_C.ExecuteUbergraph_BTTask_ClockworkBeauty_FireBulletSpray
/Game/Ryddelmyst_Assets/Blueprints/AI/Bestiary/ClockworkBeauty/BTTask_ClockworkBeauty_FireBulletSpray.BTTask_ClockworkBeauty_FireBulletSpray_C.ReceiveExecuteAI
LogStats: FPlatformStackWalk::StackWalkAndDump -  0.038 s
LogOutputDevice: Error: === Handled ensure: ===
LogOutputDevice: Error: Ensure condition failed: Position.Points[Index - 1].InVal < Position.Points[Index].InVal  [File:./Runtime/Engine/Private/Components/SplineComponent.cpp] [Line: 211] 
LogOutputDevice: Error: Stack: 
LogOutputDevice: Error: [Callstack] 0x19b265f6 UnrealEditor-Engine.dylib!FSplineCurves::UpdateSpline(bool, bool, int, bool, float, UE::Math::TVector<double> const&)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x19b27978 UnrealEditor-Engine.dylib!USplineComponent::UpdateSpline()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x19b1f9ae UnrealEditor-Engine.dylib!USplineComponent::AddPoint(FSplinePoint const&, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0xa784b822 UnrealEditor-Ryddelmyst.dylib!USplineGuideComponent::StartSplineBullets()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x062d85fc UnrealEditor-CoreUObject.dylib!UFunction::Invoke(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06653c1c UnrealEditor-CoreUObject.dylib!UObject::CallFunction(FFrame&, void*, UFunction*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06664eea UnrealEditor-CoreUObject.dylib!UObject::execFinalFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06663858 UnrealEditor-CoreUObject.dylib!UObject::ProcessContextOpcode(FFrame&, void*, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x066553fc UnrealEditor-CoreUObject.dylib!ProcessLocalScriptFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06654a20 UnrealEditor-CoreUObject.dylib!void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*))   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06656a39 UnrealEditor-CoreUObject.dylib!ProcessLocalFunction(UObject*, UFunction*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06663858 UnrealEditor-CoreUObject.dylib!UObject::ProcessContextOpcode(FFrame&, void*, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x066553fc UnrealEditor-CoreUObject.dylib!ProcessLocalScriptFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06654a20 UnrealEditor-CoreUObject.dylib!void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*))   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06656a39 UnrealEditor-CoreUObject.dylib!ProcessLocalFunction(UObject*, UFunction*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06664fda UnrealEditor-CoreUObject.dylib!UObject::execLocalFinalFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x066553fc UnrealEditor-CoreUObject.dylib!ProcessLocalScriptFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x062d85fc UnrealEditor-CoreUObject.dylib!UFunction::Invoke(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0665beec UnrealEditor-CoreUObject.dylib!UObject::ProcessEvent(UFunction*, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b622c70 UnrealEditor-AIModule.dylib!UBTTask_BlueprintBase::ExecuteTask(UBehaviorTreeComponent&, unsigned char*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5aee3c UnrealEditor-AIModule.dylib!UBTTaskNode::WrappedExecuteTask(UBehaviorTreeComponent&, unsigned char*) const   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5ad78e UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::ExecuteTask(UBTTaskNode*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5ab4c6 UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::ProcessPendingExecution()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5aaaae UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::ProcessExecutionRequest()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5a6df4 UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::TickComponent(float, ELevelTick, FActorComponentTickFunction*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x197af6d4 UnrealEditor-Engine.dylib!FActorComponentTickFunction::ExecuteTick(float, ELevelTick, ENamedThreads::Type, TRefCountPtr<FGraphEvent> const&)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b4807b3 UnrealEditor-Engine.dylib!FTickFunctionTask::DoTask(ENamedThreads::Type, TRefCountPtr<FGraphEvent> const&)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b4800bb UnrealEditor-Engine.dylib!TGraphTask<FTickFunctionTask>::ExecuteTask(TArray<FBaseGraphTask*, TSizedDefaultAllocator<32>>&, ENamedThreads::Type, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x07ddd581 UnrealEditor-Core.dylib!FNamedTaskThread::ProcessTasksNamedThread(int, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x07ddb8d3 UnrealEditor-Core.dylib!FNamedTaskThread::ProcessTasksUntilIdle(int)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b477cc6 UnrealEditor-Engine.dylib!FTickTaskSequencer::ReleaseTickGroup(ETickingGroup, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b47179d UnrealEditor-Engine.dylib!FTickTaskManager::RunTickGroup(ETickingGroup, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1a2584e3 UnrealEditor-Engine.dylib!UWorld::Tick(ELevelTick, float)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x13d06e17 UnrealEditor-UnrealEd.dylib!UEditorEngine::Tick(float, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x14aa31a8 UnrealEditor-UnrealEd.dylib!UUnrealEdEngine::Tick(float, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x03fb9a59 UnrealEditor!FEngineLoop::Tick()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x03fc7d18 UnrealEditor!GuardedMain(char16_t const*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x03fe4815 UnrealEditor!-[UEAppDelegate runGameThread:]   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x080c9374 UnrealEditor-Core.dylib!-[FCocoaGameThread main]   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0eb3b71c Foundation!__NSThread__start__()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0dacd202 libsystem_pthread.dylib!_pthread_start()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0dac8bab libsystem_pthread.dylib!thread_start()   [UnknownFile]) 
LogStats:             FDebug::EnsureFailed -  0.042 s
LogOutputDevice: Warning: Script Stack (3 frames) :
/Game/Ryddelmyst_Assets/Blueprints/AI/Bestiary/ClockworkBeauty/BP_ClockworkBeauty.BP_ClockworkBeauty_C.FireBulletSpray
/Game/Ryddelmyst_Assets/Blueprints/AI/Bestiary/ClockworkBeauty/BTTask_ClockworkBeauty_FireBulletSpray.BTTask_ClockworkBeauty_FireBulletSpray_C.ExecuteUbergraph_BTTask_ClockworkBeauty_FireBulletSpray
/Game/Ryddelmyst_Assets/Blueprints/AI/Bestiary/ClockworkBeauty/BTTask_ClockworkBeauty_FireBulletSpray.BTTask_ClockworkBeauty_FireBulletSpray_C.ReceiveExecuteAI
LogStats: FPlatformStackWalk::StackWalkAndDump -  0.037 s
LogOutputDevice: Error: === Handled ensure: ===
LogOutputDevice: Error: Ensure condition failed: Position.Points[Index - 1].InVal < Position.Points[Index].InVal  [File:./Runtime/Engine/Private/Components/SplineComponent.cpp] [Line: 211] 
LogOutputDevice: Error: Stack: 
LogOutputDevice: Error: [Callstack] 0x19b265f6 UnrealEditor-Engine.dylib!FSplineCurves::UpdateSpline(bool, bool, int, bool, float, UE::Math::TVector<double> const&)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x19b27978 UnrealEditor-Engine.dylib!USplineComponent::UpdateSpline()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x19b1f9ae UnrealEditor-Engine.dylib!USplineComponent::AddPoint(FSplinePoint const&, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0xa784b822 UnrealEditor-Ryddelmyst.dylib!USplineGuideComponent::StartSplineBullets()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x062d85fc UnrealEditor-CoreUObject.dylib!UFunction::Invoke(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06653c1c UnrealEditor-CoreUObject.dylib!UObject::CallFunction(FFrame&, void*, UFunction*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06664eea UnrealEditor-CoreUObject.dylib!UObject::execFinalFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06663858 UnrealEditor-CoreUObject.dylib!UObject::ProcessContextOpcode(FFrame&, void*, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x066553fc UnrealEditor-CoreUObject.dylib!ProcessLocalScriptFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06654a20 UnrealEditor-CoreUObject.dylib!void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*))   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06656a39 UnrealEditor-CoreUObject.dylib!ProcessLocalFunction(UObject*, UFunction*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06663858 UnrealEditor-CoreUObject.dylib!UObject::ProcessContextOpcode(FFrame&, void*, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x066553fc UnrealEditor-CoreUObject.dylib!ProcessLocalScriptFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06654a20 UnrealEditor-CoreUObject.dylib!void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*))   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06656a39 UnrealEditor-CoreUObject.dylib!ProcessLocalFunction(UObject*, UFunction*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06664fda UnrealEditor-CoreUObject.dylib!UObject::execLocalFinalFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x066553fc UnrealEditor-CoreUObject.dylib!ProcessLocalScriptFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x062d85fc UnrealEditor-CoreUObject.dylib!UFunction::Invoke(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0665beec UnrealEditor-CoreUObject.dylib!UObject::ProcessEvent(UFunction*, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b622c70 UnrealEditor-AIModule.dylib!UBTTask_BlueprintBase::ExecuteTask(UBehaviorTreeComponent&, unsigned char*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5aee3c UnrealEditor-AIModule.dylib!UBTTaskNode::WrappedExecuteTask(UBehaviorTreeComponent&, unsigned char*) const   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5ad78e UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::ExecuteTask(UBTTaskNode*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5ab4c6 UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::ProcessPendingExecution()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5aaaae UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::ProcessExecutionRequest()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5a6df4 UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::TickComponent(float, ELevelTick, FActorComponentTickFunction*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x197af6d4 UnrealEditor-Engine.dylib!FActorComponentTickFunction::ExecuteTick(float, ELevelTick, ENamedThreads::Type, TRefCountPtr<FGraphEvent> const&)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b4807b3 UnrealEditor-Engine.dylib!FTickFunctionTask::DoTask(ENamedThreads::Type, TRefCountPtr<FGraphEvent> const&)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b4800bb UnrealEditor-Engine.dylib!TGraphTask<FTickFunctionTask>::ExecuteTask(TArray<FBaseGraphTask*, TSizedDefaultAllocator<32>>&, ENamedThreads::Type, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x07ddd581 UnrealEditor-Core.dylib!FNamedTaskThread::ProcessTasksNamedThread(int, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x07ddb8d3 UnrealEditor-Core.dylib!FNamedTaskThread::ProcessTasksUntilIdle(int)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b477cc6 UnrealEditor-Engine.dylib!FTickTaskSequencer::ReleaseTickGroup(ETickingGroup, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b47179d UnrealEditor-Engine.dylib!FTickTaskManager::RunTickGroup(ETickingGroup, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1a2584e3 UnrealEditor-Engine.dylib!UWorld::Tick(ELevelTick, float)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x13d06e17 UnrealEditor-UnrealEd.dylib!UEditorEngine::Tick(float, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x14aa31a8 UnrealEditor-UnrealEd.dylib!UUnrealEdEngine::Tick(float, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x03fb9a59 UnrealEditor!FEngineLoop::Tick()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x03fc7d18 UnrealEditor!GuardedMain(char16_t const*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x03fe4815 UnrealEditor!-[UEAppDelegate runGameThread:]   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x080c9374 UnrealEditor-Core.dylib!-[FCocoaGameThread main]   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0eb3b71c Foundation!__NSThread__start__()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0dacd202 libsystem_pthread.dylib!_pthread_start()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0dac8bab libsystem_pthread.dylib!thread_start()   [UnknownFile]) 
LogStats:             FDebug::EnsureFailed -  0.043 s
LogTemp: Warning: SplineGuideComponent::StartSplineBullets; adding spline point at index 1 with position 100.000000, -247.944717, 10000.000000
LogOutputDevice: Warning: Script Stack (3 frames) :
/Game/Ryddelmyst_Assets/Blueprints/AI/Bestiary/ClockworkBeauty/BP_ClockworkBeauty.BP_ClockworkBeauty_C.FireBulletSpray
/Game/Ryddelmyst_Assets/Blueprints/AI/Bestiary/ClockworkBeauty/BTTask_ClockworkBeauty_FireBulletSpray.BTTask_ClockworkBeauty_FireBulletSpray_C.ExecuteUbergraph_BTTask_ClockworkBeauty_FireBulletSpray
/Game/Ryddelmyst_Assets/Blueprints/AI/Bestiary/ClockworkBeauty/BTTask_ClockworkBeauty_FireBulletSpray.BTTask_ClockworkBeauty_FireBulletSpray_C.ReceiveExecuteAI
LogStats: FPlatformStackWalk::StackWalkAndDump -  0.037 s
LogOutputDevice: Error: === Handled ensure: ===
LogOutputDevice: Error: Ensure condition failed: Position.Points[Index - 1].InVal < Position.Points[Index].InVal  [File:./Runtime/Engine/Private/Components/SplineComponent.cpp] [Line: 211] 
LogOutputDevice: Error: Stack: 
LogOutputDevice: Error: [Callstack] 0x19b265f6 UnrealEditor-Engine.dylib!FSplineCurves::UpdateSpline(bool, bool, int, bool, float, UE::Math::TVector<double> const&)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x19b27978 UnrealEditor-Engine.dylib!USplineComponent::UpdateSpline()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x19b1f9ae UnrealEditor-Engine.dylib!USplineComponent::AddPoint(FSplinePoint const&, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0xa784b822 UnrealEditor-Ryddelmyst.dylib!USplineGuideComponent::StartSplineBullets()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x062d85fc UnrealEditor-CoreUObject.dylib!UFunction::Invoke(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06653c1c UnrealEditor-CoreUObject.dylib!UObject::CallFunction(FFrame&, void*, UFunction*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06664eea UnrealEditor-CoreUObject.dylib!UObject::execFinalFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06663858 UnrealEditor-CoreUObject.dylib!UObject::ProcessContextOpcode(FFrame&, void*, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x066553fc UnrealEditor-CoreUObject.dylib!ProcessLocalScriptFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06654a20 UnrealEditor-CoreUObject.dylib!void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*))   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06656a39 UnrealEditor-CoreUObject.dylib!ProcessLocalFunction(UObject*, UFunction*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06663858 UnrealEditor-CoreUObject.dylib!UObject::ProcessContextOpcode(FFrame&, void*, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x066553fc UnrealEditor-CoreUObject.dylib!ProcessLocalScriptFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06654a20 UnrealEditor-CoreUObject.dylib!void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*))   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06656a39 UnrealEditor-CoreUObject.dylib!ProcessLocalFunction(UObject*, UFunction*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06664fda UnrealEditor-CoreUObject.dylib!UObject::execLocalFinalFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x066553fc UnrealEditor-CoreUObject.dylib!ProcessLocalScriptFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x062d85fc UnrealEditor-CoreUObject.dylib!UFunction::Invoke(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0665beec UnrealEditor-CoreUObject.dylib!UObject::ProcessEvent(UFunction*, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b622c70 UnrealEditor-AIModule.dylib!UBTTask_BlueprintBase::ExecuteTask(UBehaviorTreeComponent&, unsigned char*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5aee3c UnrealEditor-AIModule.dylib!UBTTaskNode::WrappedExecuteTask(UBehaviorTreeComponent&, unsigned char*) const   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5ad78e UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::ExecuteTask(UBTTaskNode*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5ab4c6 UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::ProcessPendingExecution()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5aaaae UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::ProcessExecutionRequest()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5a6df4 UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::TickComponent(float, ELevelTick, FActorComponentTickFunction*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x197af6d4 UnrealEditor-Engine.dylib!FActorComponentTickFunction::ExecuteTick(float, ELevelTick, ENamedThreads::Type, TRefCountPtr<FGraphEvent> const&)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b4807b3 UnrealEditor-Engine.dylib!FTickFunctionTask::DoTask(ENamedThreads::Type, TRefCountPtr<FGraphEvent> const&)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b4800bb UnrealEditor-Engine.dylib!TGraphTask<FTickFunctionTask>::ExecuteTask(TArray<FBaseGraphTask*, TSizedDefaultAllocator<32>>&, ENamedThreads::Type, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x07ddd581 UnrealEditor-Core.dylib!FNamedTaskThread::ProcessTasksNamedThread(int, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x07ddb8d3 UnrealEditor-Core.dylib!FNamedTaskThread::ProcessTasksUntilIdle(int)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b477cc6 UnrealEditor-Engine.dylib!FTickTaskSequencer::ReleaseTickGroup(ETickingGroup, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b47179d UnrealEditor-Engine.dylib!FTickTaskManager::RunTickGroup(ETickingGroup, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1a2584e3 UnrealEditor-Engine.dylib!UWorld::Tick(ELevelTick, float)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x13d06e17 UnrealEditor-UnrealEd.dylib!UEditorEngine::Tick(float, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x14aa31a8 UnrealEditor-UnrealEd.dylib!UUnrealEdEngine::Tick(float, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x03fb9a59 UnrealEditor!FEngineLoop::Tick()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x03fc7d18 UnrealEditor!GuardedMain(char16_t const*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x03fe4815 UnrealEditor!-[UEAppDelegate runGameThread:]   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x080c9374 UnrealEditor-Core.dylib!-[FCocoaGameThread main]   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0eb3b71c Foundation!__NSThread__start__()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0dacd202 libsystem_pthread.dylib!_pthread_start()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0dac8bab libsystem_pthread.dylib!thread_start()   [UnknownFile]) 
LogStats:             FDebug::EnsureFailed -  0.043 s
LogOutputDevice: Warning: Script Stack (3 frames) :
/Game/Ryddelmyst_Assets/Blueprints/AI/Bestiary/ClockworkBeauty/BP_ClockworkBeauty.BP_ClockworkBeauty_C.FireBulletSpray
/Game/Ryddelmyst_Assets/Blueprints/AI/Bestiary/ClockworkBeauty/BTTask_ClockworkBeauty_FireBulletSpray.BTTask_ClockworkBeauty_FireBulletSpray_C.ExecuteUbergraph_BTTask_ClockworkBeauty_FireBulletSpray
/Game/Ryddelmyst_Assets/Blueprints/AI/Bestiary/ClockworkBeauty/BTTask_ClockworkBeauty_FireBulletSpray.BTTask_ClockworkBeauty_FireBulletSpray_C.ReceiveExecuteAI
LogStats: FPlatformStackWalk::StackWalkAndDump -  0.038 s
LogOutputDevice: Error: === Handled ensure: ===
LogOutputDevice: Error: Ensure condition failed: Position.Points[Index - 1].InVal < Position.Points[Index].InVal  [File:./Runtime/Engine/Private/Components/SplineComponent.cpp] [Line: 211] 
LogOutputDevice: Error: Stack: 
LogOutputDevice: Error: [Callstack] 0x19b265f6 UnrealEditor-Engine.dylib!FSplineCurves::UpdateSpline(bool, bool, int, bool, float, UE::Math::TVector<double> const&)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x19b27978 UnrealEditor-Engine.dylib!USplineComponent::UpdateSpline()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x19b1f9ae UnrealEditor-Engine.dylib!USplineComponent::AddPoint(FSplinePoint const&, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0xa784b822 UnrealEditor-Ryddelmyst.dylib!USplineGuideComponent::StartSplineBullets()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x062d85fc UnrealEditor-CoreUObject.dylib!UFunction::Invoke(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06653c1c UnrealEditor-CoreUObject.dylib!UObject::CallFunction(FFrame&, void*, UFunction*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06664eea UnrealEditor-CoreUObject.dylib!UObject::execFinalFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06663858 UnrealEditor-CoreUObject.dylib!UObject::ProcessContextOpcode(FFrame&, void*, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x066553fc UnrealEditor-CoreUObject.dylib!ProcessLocalScriptFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06654a20 UnrealEditor-CoreUObject.dylib!void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*))   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06656a39 UnrealEditor-CoreUObject.dylib!ProcessLocalFunction(UObject*, UFunction*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06663858 UnrealEditor-CoreUObject.dylib!UObject::ProcessContextOpcode(FFrame&, void*, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x066553fc UnrealEditor-CoreUObject.dylib!ProcessLocalScriptFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06654a20 UnrealEditor-CoreUObject.dylib!void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*))   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06656a39 UnrealEditor-CoreUObject.dylib!ProcessLocalFunction(UObject*, UFunction*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x06664fda UnrealEditor-CoreUObject.dylib!UObject::execLocalFinalFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x066553fc UnrealEditor-CoreUObject.dylib!ProcessLocalScriptFunction(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x062d85fc UnrealEditor-CoreUObject.dylib!UFunction::Invoke(UObject*, FFrame&, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0665beec UnrealEditor-CoreUObject.dylib!UObject::ProcessEvent(UFunction*, void*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b622c70 UnrealEditor-AIModule.dylib!UBTTask_BlueprintBase::ExecuteTask(UBehaviorTreeComponent&, unsigned char*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5aee3c UnrealEditor-AIModule.dylib!UBTTaskNode::WrappedExecuteTask(UBehaviorTreeComponent&, unsigned char*) const   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5ad78e UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::ExecuteTask(UBTTaskNode*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5ab4c6 UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::ProcessPendingExecution()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5aaaae UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::ProcessExecutionRequest()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x3b5a6df4 UnrealEditor-AIModule.dylib!UBehaviorTreeComponent::TickComponent(float, ELevelTick, FActorComponentTickFunction*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x197af6d4 UnrealEditor-Engine.dylib!FActorComponentTickFunction::ExecuteTick(float, ELevelTick, ENamedThreads::Type, TRefCountPtr<FGraphEvent> const&)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b4807b3 UnrealEditor-Engine.dylib!FTickFunctionTask::DoTask(ENamedThreads::Type, TRefCountPtr<FGraphEvent> const&)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b4800bb UnrealEditor-Engine.dylib!TGraphTask<FTickFunctionTask>::ExecuteTask(TArray<FBaseGraphTask*, TSizedDefaultAllocator<32>>&, ENamedThreads::Type, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x07ddd581 UnrealEditor-Core.dylib!FNamedTaskThread::ProcessTasksNamedThread(int, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x07ddb8d3 UnrealEditor-Core.dylib!FNamedTaskThread::ProcessTasksUntilIdle(int)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b477cc6 UnrealEditor-Engine.dylib!FTickTaskSequencer::ReleaseTickGroup(ETickingGroup, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1b47179d UnrealEditor-Engine.dylib!FTickTaskManager::RunTickGroup(ETickingGroup, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x1a2584e3 UnrealEditor-Engine.dylib!UWorld::Tick(ELevelTick, float)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x13d06e17 UnrealEditor-UnrealEd.dylib!UEditorEngine::Tick(float, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x14aa31a8 UnrealEditor-UnrealEd.dylib!UUnrealEdEngine::Tick(float, bool)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x03fb9a59 UnrealEditor!FEngineLoop::Tick()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x03fc7d18 UnrealEditor!GuardedMain(char16_t const*)   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x03fe4815 UnrealEditor!-[UEAppDelegate runGameThread:]   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x080c9374 UnrealEditor-Core.dylib!-[FCocoaGameThread main]   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0eb3b71c Foundation!__NSThread__start__()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0dacd202 libsystem_pthread.dylib!_pthread_start()   [UnknownFile]) 
LogOutputDevice: Error: [Callstack] 0x0dac8bab libsystem_pthread.dylib!thread_start()   [UnknownFile]) 

...and it goes on like that, two of those stacks per point index. How is it even looking at point[index-1] when I'm adding the 0th point? Is an Ensure like a diet Assert? EDIT: no idea how/why, but https://forums.unrealengine.com/t/packaging-crash-because-of-spline-components/429089/9 suggestion to clear the spline points before adding any seems to have helped. Sure, fine.

mysterymagination commented 6 months ago

~todo~: spline thinks it has 0 bullets max EDIT: logging error todo: spline point Z values are nuts

mysterymagination commented 6 months ago

~todo~: attach the spline to a socket in clockworkbeauty somewhere reasonable for gun fire; I think I may have left the blasterbolt at her origin and it spawns from about her center mass, so that could be fine enough. todo: oddment about USplineComponent that tripped me up for way too long is that the FSplinePoints that define it apparently aren't subject to the USplineComponent's transform hierarchy, such that if you attach the USplineComponent to something the spline itself will report the correct attached location but its points will have whatever world space location they were created with. I guess the only workaround is to update the spline points per frame with the spline's location that does respect transform hierarchy.

mysterymagination commented 5 months ago

~todo~: double free attempt on the splineguidecomponent? Seems to always have this pattern of 4 double free error reports, if that means anything. EDIT: all the beauties were trying to free an instance of spline guide that only existed for one of them; solved by simply having the spline guide call DestroyComponent() when it's done. Why didn't I do that in the first place?

LogTemp: Warning: SplineGuideComponent::TickComponent; spline point at index 1 has world position X=200.000 Y=200.000 Z=200.000 and local position X=200.000 Y=200.000 Z=200.000. Owning actor BP_ClockworkBeauty_C_11's origin is at X=7830.251 Y=932.558 Z=266.658.
LogTemp: Warning: SplineGuideComponent::TickComponent; all bullets have been destroyed. Broadcasting spline guide completion event.
LogScript: Warning: Attempted to access SplineGuideComponent_1 via property K2Node_CustomEvent_InCompletedSplineGuideComponent, but SplineGuideComponent_1 is not valid (pending kill or garbage)
PIE: Error: Blueprint Runtime Error: "Attempted to access SplineGuideComponent_1 via property K2Node_CustomEvent_InCompletedSplineGuideComponent, but SplineGuideComponent_1 is not valid (pending kill or garbage)". Node:  Destroy Component Graph:  EventGraph Function:  Execute Ubergraph BP Clockwork Beauty Blueprint:  BP_ClockworkBeauty
LogScript: Warning: Attempted to access SplineGuideComponent_1 via property K2Node_CustomEvent_InCompletedSplineGuideComponent, but SplineGuideComponent_1 is not valid (pending kill or garbage)
PIE: Error: Blueprint Runtime Error: "Attempted to access SplineGuideComponent_1 via property K2Node_CustomEvent_InCompletedSplineGuideComponent, but SplineGuideComponent_1 is not valid (pending kill or garbage)". Node:  Destroy Component Graph:  EventGraph Function:  Execute Ubergraph BP Clockwork Beauty Blueprint:  BP_ClockworkBeauty
LogScript: Warning: Attempted to access SplineGuideComponent_1 via property K2Node_CustomEvent_InCompletedSplineGuideComponent, but SplineGuideComponent_1 is not valid (pending kill or garbage)
PIE: Error: Blueprint Runtime Error: "Attempted to access SplineGuideComponent_1 via property K2Node_CustomEvent_InCompletedSplineGuideComponent, but SplineGuideComponent_1 is not valid (pending kill or garbage)". Node:  Destroy Component Graph:  EventGraph Function:  Execute Ubergraph BP Clockwork Beauty Blueprint:  BP_ClockworkBeauty
LogScript: Warning: Attempted to access SplineGuideComponent_1 via property K2Node_CustomEvent_InCompletedSplineGuideComponent, but SplineGuideComponent_1 is not valid (pending kill or garbage)
PIE: Error: Blueprint Runtime Error: "Attempted to access SplineGuideComponent_1 via property K2Node_CustomEvent_InCompletedSplineGuideComponent, but SplineGuideComponent_1 is not valid (pending kill or garbage)". Node:  Destroy Component Graph:  EventGraph Function:  Execute Ubergraph BP Clockwork Beauty Blueprint:  BP_ClockworkBeauty
mysterymagination commented 5 months ago

~todo~: I think something is off with the bullet spawn code; I made allowances for 10 spline points and 10 bullets, but I only ever see logs for one bullet spawned and only see one bullet actually spawned.

todo: bullet despawn is also messed up; they never detect being close enough to terminal point to despawn.

mysterymagination commented 5 months ago

~todo~: flamebead attack does negative damage to maya and others... we forgot to clamp the min in damagerx. Also doesn't convey burning status for some reason

mysterymagination commented 5 months ago

~todo~: since debug draw isn't working for my runtime generated splines, a useful debug step could be to make a spline in the editor and pass it to the splineguide (and I guess add a param to splineguide that tells it to skip adding spline points).

mysterymagination commented 4 months ago

~todo~: I removed physics from the flamebead because it can muddy the waters debugging whether the movement driven by the guide is working as expected, but now the projectile doesn't move at all. Some digging on the net suggests that ProjectileMOvementComponent requires physics sim to move, but its own docs suggest otherwise. I really don't want physics sim on for this case, so I guess the options are:

  1. Use a different movementcomponent or write manual one; considering this is pretty custom movement, writing a movement component specifically for spline guide situations would make some sense.

    • Not the easiest thing in the world, unfortunately, because ProjectileMovementComponent is baked into SpellBullet and for most bullets that would be correct.
    • I tried switching to base MovementComponent for giggles, but it turns out that class is abstract and UE exploded a bunch of times before I read the docs and realized why it was crashing. Thanks UE crashreporter for not bubbling up the signal message!
  2. Since the electric snowball w/ crackling violet vial buff spreadshot system had to turn off physics sim prior to spawn and then turn it back on after a few seconds to avoid crazed bouncing at spawn time, it may be possible to use ProjectileMovementComponent without physics if we switch our flamebead's updated component to be a shape like a spellsphere instead of a static mesh. The electric snowball had both a mesh and a shape, and uses the shape for collision and movement.

    • Somebody suggested explicitly setting the static mesh movability prop to moveable, but that didn't help.
    • ~TODO~: try turning the physics sim off at runtime like the electric snowball does? EDIT: nope, just stops moving apparently.
    • ok yeah switching to spellspherecomponent allows me to use projectilemovementcomponent without any physics. weird. Probly we'll want a custom movementcomponent for this anyway, but I'll take this workaround for now.
mysterymagination commented 3 months ago

Done more or less in e4b5f6f29db5e548b966022e0b163e5ad3f0ec8b