-- Get objects from orxonox thisscript:addObject("FPSPlayer", "Player") thisscript:addObject("CameraMan", "cameraManager") thisscript:addObject("QuestGUI", "energyQuest") thisscript:addObject("NPC", "triggeredDoor") thisscript:addObjectAsName("GameWorld", "Moon Station", "gameWorld") -- =gameTitle --get first Quest triggerGetEnergyQuest = ScriptTrigger() triggerGetEnergyQuest:setScript("quest.lua") triggerGetEnergyQuest:setFunction("getEnergyQuest") triggerGetEnergyQuest:setAbsCoor(229.492569, 38.417606, -363.788483) triggerGetEnergyQuest:setTarget("Player") triggerGetEnergyQuest:setRadius(160) triggerGetEnergyQuest:setDebugDraw(true) --activate energy - finish energyQuest triggerFinishEnergyQuest = ScriptTrigger() triggerFinishEnergyQuest:setScript("quest.lua") triggerFinishEnergyQuest:setFunction("finishEnergyQuest") triggerFinishEnergyQuest:setAbsCoor(346.239166, 482.885010, -160.825775) triggerFinishEnergyQuest:setTarget("Player") triggerFinishEnergyQuest:setRadius(30) triggerFinishEnergyQuest:setDebugDraw(true) --HINT Broken station -> find another way --HINT find action button --Tick: HINT need to open the door and stop the player trigger = ScriptTrigger() trigger:setName("doorClosedTick") trigger:setScript("quest.lua") trigger:setFunction("tick") trigger:setActiveOnCreation(true) --gloabals--------------------------------------------------------------------- questEnergyDone = false lastPlayerZ = 0 lastDoorY = 47.2 doorSequenceTime = 7 --duration time sec function getEnergyQuest(timestep) energyQuest:startGUI() return true end function finishEnergyQuest(timestep) gameWorld:showText("Good work: the emergency energy system seems to be up again.") cameraManager:setCam("CameraDoor") cameraManager:changeCurrTarget("NPC", "triggeredDoor") energyQuest:stopGUI() questEnergyDone = true return true end function tick(timestep) --io.write("tick called \n") if not questEnergyDone then if Player:getAbsCoorZ() < -454 then --gameWorld:showText("The door can't open without energy."); Player:setAbsCoor(Player:getAbsCoorX(),Player:getAbsCoorY(),lastPlayerZ) --set player back else lastPlayerZ = Player:getAbsCoorZ() --store last position end else --quest finished if doorSequenceTime > 0 then --sequence running --triggeredDoor:walkTo(222, 47.2+92.5, -472) --lastDoorY = lastDoorY+92.5/7*timestep --triggeredDoor:setAbsDir(0,0,1,0) --triggeredDoor:setAbsDir(triggeredDoor:getAbsCoorX(), lastDoorY, triggeredDoor:getAbsCoorZ()) --BUG triggeredDoor:setVisibility(false) io.write("visibility off \n") doorSequenceTime = doorSequenceTime - timestep else cameraManager:setCam("GameWorldCamera") gameWorld:showText("You should hurry as long as there is still energy.") return true --quest&sequence finished: kill trigger end end return false end