SirMilkToast

  • Content Count

    4
  • Joined

  • Last visited

Community Reputation

1 Neutral

About SirMilkToast

  • Rank
    Junior Member
...
  1. 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". 657 local currentpos = Vector3(self.wagstaff.Transform:GetWorldPosition()) 658 local pos = FindWalkableOffset(currentpos, math.random()*2*PI, 6+ (math.random()* 4), 16, nil, nil, customcheckfn, nil, nil) 659 local newpos = currentpos + pos 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. 657 local currentpos = Vector3(self.wagstaff.Transform:GetWorldPosition()) 658 local pos = FindWalkableOffset(currentpos, math.random()*2*PI, 6+ (math.random()* 4), 16, nil, nil, customcheckfn, nil, nil) --begin changes 659 if pos then 660 currentpos = currentpos + pos 661 end 662 tool.Transform:SetPosition(currentpos.x,0,currentpos.z) --end changes 663 table.insert(self.wagstaff_tools,tool) 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>
  2. The third phase of the Celestial champion will occasionally fly off the lunar island into the ocean. It will not come back on its own and the only way to get it back to land is to get on a boat, maneuver the boat underneath the Champion, and chase it back onto land.
  3. The darkness that happens as a result of killing the Celestial Champion lasts forever, unless you relog. Relogging will cause the normal day/night cycle to resume (even if less than a day has passed since killing the Celestial Champion).