Explanation for why this occurs:
Like many things in the Moonstorm, Wagstaff's tools cannot spawn on the Grub or Memory Cawnival games. This is achieved by picking an initial location for these entities then applying an offset that is calculated using the FindWalkableOffset function, then teleporting the entities to this location. In moonstormManager.lua, the FindWalkableOffset function always takes in the customcheckfn as an input. The customcheckfn is what actually prevents the entities from spawning within 1 turf tile of these two specific Cawnival games. HOWEVER, the FindWalkableOffset function has a default return value of nil. So if that function doesn't find any offsets based on its inputs, then it will output nil. This is normally not an issue, as moonstormManager.lua usually has checks to make sure this value isn't nil before using it. However, when spawning Wagstaff's tools, this check is not performed. Below are lines 657-659 of moonstormManager.lua. These lines are from the spawnTool() function. Notice that "pos" is set to the output of the FindWalkableOffset function; however, no check is performed to make sure that "pos" does not equal nil before the game attempts to add it to "currentpos".
At the end of this post, I have included the error and stack traceback from the server log. The error occurs in line 10 of vector3.lua (this line is the "__add( rhs )" function). The error occurs when a vector3 instance goes to add "rhs" to itself. It tries to index "rhs", but you can't index a nil value. The traceback reveals that this function was called from line 659 of the spawnTool() function in moonstormmanager.lua. This line is shown above to be the line where the offset is added to Wagstaff's position. The rest of the traceback isn't really useful, but I included it anyways.
Here is a simple fix. Just check that "pos" isn't nil before adding it to "currentpos", then have the Transform set the position to "currentpos" (instead of "newpos"). This may not be the fix you want to implement, but I figured I throw it in here.
Error and Traceback:
[00:03:02]: [string "scripts/vector3.lua"]:10: attempt to index local 'rhs' (a nil value)
LUA ERROR stack traceback:
scripts/vector3.lua:10 in () ? (Lua) <9-11>
self =
y = 6.7687944138584e-009
x = 406.54754638672
z = -45.137607574463
rhs = nil
scripts/components/moonstormmanager.lua:659 in (method) spawnTool (Lua) <634-673>
self =
tools_need = PERIODIC 100026: 10.154455
TestMoonAltarLinkPositionValid = function - scripts/components/moonstormmanager.lua:734
AdvanceWagstaff = function - scripts/components/moonstormmanager.lua:506
beginWagstaffDefence = function - scripts/components/moonstormmanager.lua:562
DoTestForSparks = function - scripts/components/moonstormmanager.lua:697
startNeedTool = function - scripts/components/moonstormmanager.lua:541
FindUnmetCharacter = function - scripts/components/moonstormmanager.lua:516
foundTool = function - scripts/components/moonstormmanager.lua:548
moonstorm_lightning_task = PERIODIC 100026: 27.420275
StartMoonstorm = function - scripts/components/moonstormmanager.lua:302
FailExperiment = function - scripts/components/moonstormmanager.lua:442
CalcNewMoonstormBaseNodeIndex = function - scripts/components/moonstormmanager.lua:272
DoTestForLightning = function - scripts/components/moonstormmanager.lua:713
moonstorm_spark_task = PERIODIC 100026: 30.000000
StopExperiment = function - scripts/components/moonstormmanager.lua:425
defence_task = PERIODIC 100026: 7.000000
AddMetplayer = function - scripts/components/moonstormmanager.lua:558
GetNewWagstaffLocation = function - scripts/components/moonstormmanager.lua:535
DoTestForWagstaff = function - scripts/components/moonstormmanager.lua:675
StopExperimentTasks = function - scripts/components/moonstormmanager.lua:400
MoonStorm_Ending = true
wagstaff_tools_original = table: 0CCFD8D0
spawnTool = function - scripts/components/moonstormmanager.lua:634
inst = 100026 - world (valid:true)
stormdays = 0
spawnGestaltWave = function - scripts/components/moonstormmanager.lua:607
TestAltarTriangleValid = function - scripts/components/moonstormmanager.lua:755
OnSave = function - scripts/components/moonstormmanager.lua:797
OnLoad = function - scripts/components/moonstormmanager.lua:810
tools_task = PERIODIC 100026: 8.000000
SpawnGestalt = function - scripts/components/moonstormmanager.lua:586
wagstaff_tools = table: 0CCFDBA0
wagstaff = 117850 - wagstaff_npc (valid:true)
GetDebugString = function - scripts/components/moonstormmanager.lua:856
spawn_wagstaff_test_task = PERIODIC 100026: 10.000000
lastnodes = table: 11AF1038
StopCurrentMoonstorm = function - scripts/components/moonstormmanager.lua:375
metplayers = table: 0A33D2F0
EndExperiment = function - scripts/components/moonstormmanager.lua:462
beginWagstaffHunt = function - scripts/components/moonstormmanager.lua:490
idx = 2
toolname = wagstaff_tool_5
tool = 118212 - wagstaff_tool_5 (valid:true)
currentpos = (406.55, 0.00, -45.14)
pos = nil
scripts/components/moonstormmanager.lua:672 in (field) fn (Lua) <672-672>
scripts/scheduler.lua:177 in (method) OnTick (Lua) <155-207>
self =
running = table: 0B2EC4B0
waitingfortick = table: 0B2EC230
tasks = table: 0B2EC410
waking = table: 25A64C00
attime = table: 0B2EC2F8
hibernating = table: 0B2EC528
tick = 3693
k = PERIODIC 100026: 8.000000
v = true
already_dead = false
scripts/scheduler.lua:371 in (global) RunScheduler (Lua) <369-377>
tick = 3693
scripts/update.lua:185 in () ? (Lua) <164-243>
dt = 0.033333335071802
tick = 3693
i = 3693
[00:03:02]: [string "scripts/vector3.lua"]:10: attempt to index local 'rhs' (a nil value)
LUA ERROR stack traceback:
scripts/vector3.lua:10 in () ? (Lua) <9-11>
scripts/components/moonstormmanager.lua:659 in (method) spawnTool (Lua) <634-673>
scripts/components/moonstormmanager.lua:672 in (field) fn (Lua) <672-672>
scripts/scheduler.lua:177 in (method) OnTick (Lua) <155-207>
scripts/scheduler.lua:371 in (global) RunScheduler (Lua) <369-377>
scripts/update.lua:185 in () ? (Lua) <164-243>
[00:03:02]: Warning: Widget:SetFocusFromChild is happening on a widget outside of the screen/widget hierachy. This will cause focus moves to fail. Is ScriptErrorWidget not a screen?
[00:03:02]: stack traceback:
scripts/widgets/widget.lua:604 in (method) SetFocusFromChild (Lua) <601-626>
scripts/widgets/widget.lua:623 in (method) SetFocusFromChild (Lua) <601-626>
scripts/widgets/widget.lua:623 in (method) SetFocusFromChild (Lua) <601-626>
scripts/widgets/widget.lua:648 in (method) SetFocus (Lua) <628-657>
scripts/widgets/menu.lua:83 in (method) SetFocus (Lua) <74-85>
scripts/widgets/scripterrorwidget.lua:109 in (method) OnUpdate (Lua) <102-119>
scripts/update.lua:95 in () ? (Lua) <33-134>
1. Start the Wagstaff minigame
2. Place the "Hubbub for Grub" or "Eggs in a Basket" Cawnival game near Wagstaff (I would recommend spamming them to increase the chance of the crash occurring, but you only need one)
3. If one of Wagstaff's tools tries to spawn too close (within 1 turf tile) to a Cawnival game, then the game will crash
- 1
A developer has marked this issue as fixed. This means that the issue has been addressed in the current development build and will likely be in the next update.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now