Wow. A 30% decrease in cpu usage is pretty impressive. I've never had many performance issues with SB with my system, other than frame drops from time to time in busier areas. But for folks that experience a lot of lag, this could really help out.
A optimization of the code? Good news! I know we can't judge from the nightly but the last time I had play one I was more laggy then before... so, that's a good news! Keep working hard. We all wait impatiently the next patch.
Sounds brilliant! My favourite kind of updates are performance improvements. And, uh, new vegetables. Keep up the good work, guys; I'm really looking forward to playing this on completion - so much has changed since I last played a few months ago; the changes are going to hit me like a brick wall.
As a builder, I'm more hyped for this than a good deal of the other changes. That's not to say I'm not hyped for the other stuff, like outposts and big birds and such, but, still. Finally, I might probably be able to use lots of cool looking things without those cool looking things causing my framerate to drop to a crawl! Even better, it sounds like it's happening far earlier than I thought it would! So, yay! And stuff!
Yeah, I used to experience quite a bit of lag myself, even on a really good computer. Not sure if the BF ever really did though, I never really paid attention to his screen, too busy paying attention to mine. This is awesome though, keep up the great work guys!
Yay! I can actually play starbound on my laptop without it overheating to a pile of slag(should prolly get a new fan for it )! I hate having to play on the desktop, as I still find their keyboards clunky. When does this update actually come out?
Does this fix the whole "can't place objects in both foreground and background in the same visual location" issue or is that something that will curse us forever?
Great news!I was waiting for optimization this whole time.I hope you patch it up and release the update soon.
Today's diffs! I would've generated and posted these earlier but my internet was being ass and prevented me from downloading the update. Code: FILES ----- celestial\system\terrestrial\dynamics\outpost\0.png celestial\system\terrestrial\dynamics\outpost\1.png celestial\system\terrestrial\dynamics\outpost\2.png interface\ai\ai.config monsters\capturepod.lua monsters\flocking.lua monsters\boss\missile\behavior.lua monsters\boss\penguinminiufo\behavior.lua monsters\boss\penguinufo\behavior.lua monsters\flying\wanderstate.lua monsters\ground\groundmonster.lua monsters\ground\herdfleestate.lua monsters\ground\socializestate.lua monsters\ground\largequadruped\largequadruped.monstertype monsters\ground\smallbiped\smallbiped.monstertype monsters\ground\smallquadruped\smallquadruped.monstertype monsters\swimming\investigatestate.lua monsters\unique\heckblob\behavior.lua monsters\unique\po\behavior.lua monsters\unique\repairbot\behavior.lua monsters\unique\tentaclecomet\behavior.lua npcs\chatstate.lua npcs\fleestate.lua npcs\main.lua npcs\meleeattackstate.lua npcs\rangedattackstate.lua npcs\wanderstate.lua npcs\workstate.lua npcs\guard\houndstate.lua objects\apex\securitycamera\securitycamera.lua objects\apex\turret\turret.lua objects\floran\floranlight\floranlight.object objects\floran\floranlight\floranlightback1.frames objects\floran\floranlight\floranlightback2.frames objects\floran\floranlight\floranlightceiling1.frames objects\floran\floranlight\floranlightceiling2.frames objects\floran\floranlight\floranlightleft1.frames objects\floran\floranlight\floranlightleft2.frames objects\floran\floranlight\floranlightright1.frames objects\floran\floranlight\floranlightright2.frames objects\generic\fluorescentlight\fluorescentlight.frames objects\generic\fluorescentlight\fluorescentlight.object objects\generic\fluorescentlight\fluorescentlight.png objects\generic\fluorescentlight\fluorescentlightbottom.frames objects\generic\fluorescentlight\fluorescentlightleft.frames objects\generic\fluorescentlight\fluorescentlightright.frames objects\generic\fluorescentlight\fluorescentlighttop.frames [NEW] objects\human\miningchest\miningchest.png [NEW] objects\human\miningchest\miningchesticon.png objects\human\miningcrusher\miningcrushericon.png objects\ship\apexshiplight\apexshiplight.frames objects\ship\apexshiplight\apexshiplight.object objects\wired\landmine\landmine.lua objects\wired\standingturret\standingturret.lua scripts\entityproxy.lua DIFFS ----- interface\ai\ai.config 224c224 < "text" : "The thrusters and FTL drive are offline. I can repair the thrusters with the ships auto repair module but I'll need pixels and core fragments from the planet below.", --- > "text" : "The thrusters and FTL drive are offline. I can repair the thrusters with the ships auto repair module but I'll need pixels and core fragments from the core of the planet below.", 231c231 < "text" : "We've repaired the ships thrusters. Travel within this system is now available. Next we need to fix the ship's FTL drive.", --- > "text" : "We've repaired the ships thrusters. Travel within this system is now available, did you investigate that gate yet? Next we need to fix the ship's FTL drive.", 251c251 < "text" : "The thrusters and FTL drive are offline. I can repair the thrusters with the ships auto repair module but I'll need pixels and core fragments from the planet below.", --- > "text" : "The thrusters and FTL drive are offline. I can repair the thrusters with the ships auto repair module but I'll need pixels and core fragments from the core of the planet below.", 258c258 < "text" : "We've repaired the ships thrusters. Travel within this system is now available. Next we need to fix the ship's FTL drive.", --- > "text" : "We've repaired the ships thrusters. Travel within this system is now available, did you investigate that gate yet? Next we need to fix the ship's FTL drive.", 278c278 < "text" : "The thrusters and FTL drive are offline. I can repair the thrusters with the ships auto repair module but I'll need pixels and core fragments from the planet below.", --- > "text" : "The thrusters and FTL drive are offline. I can repair the thrusters with the ships auto repair module but I'll need pixels and core fragments from the core of the planet below.", 285c285 < "text" : "We've repaired the ships thrusters. Travel within this system is now available. Next we need to fix the ship's FTL drive.", --- > "text" : "We've repaired the ships thrusters. Travel within this system is now available, did you investigate that gate yet? Next we need to fix the ship's FTL drive.", 305c305 < "text" : "The thrusters and FTL drive are offline. I can repair the thrusters with the ships auto repair module but I'll need pixels and core fragments from the planet below.", --- > "text" : "The thrusters and FTL drive are offline. I can repair the thrusters with the ships auto repair module but I'll need pixels and core fragments from the core of the planet below.", 312c312 < "text" : "We've repaired the ships thrusters. Travel within this system is now available. Next we need to fix the ship's FTL drive.", --- > "text" : "We've repaired the ships thrusters. Travel within this system is now available, did you investigate that gate yet? Next we need to fix the ship's FTL drive.", 332c332 < "text" : "The thrusters and FTL drive are offline. I can repair the thrusters with the ships auto repair module but I'll need pixels and core fragments from the planet below.", --- > "text" : "The thrusters and FTL drive are offline. I can repair the thrusters with the ships auto repair module but I'll need pixels and core fragments from the core of the planet below.", 339c339 < "text" : "We've repaired the ships thrusters. Travel within this system is now available. Next we need to fix the ship's FTL drive.", --- > "text" : "We've repaired the ships thrusters. Travel within this system is now available, did you investigate that gate yet? Next we need to fix the ship's FTL drive.", 359c359 < "text" : "The thrusters and FTL drive are offline. I can repair the thrusters with the ships auto repair module but I'll need pixels and core fragments from the planet below.", --- > "text" : "The thrusters and FTL drive are offline. I can repair the thrusters with the ships auto repair module but I'll need pixels and core fragments from the core of the planet below.", 366c366 < "text" : "We've repaired the ships thrusters. Travel within this system is now available. Next we need to fix the ship's FTL drive.", --- > "text" : "We've repaired the ships thrusters. Travel within this system is now available, did you investigate that gate yet? Next we need to fix the ship's FTL drive.", monsters\capturepod.lua 131c131 < local playerIds = world.playerQuery(entity.position(), 50) --- > local playerIds = world.entityQuery(entity.position(), 50, {includedTypes={"player"}}) monsters\flocking.lua 23c23 < for i, entityId in ipairs(world.monsterQuery(flockRegionMin, flockRegionMax)) do --- > for i, entityId in ipairs(world.entityQuery(flockRegionMin, flockRegionMax, {includedTypes={"monster"}})) do monsters\boss\missile\behavior.lua 19c19 < local nearbyPlayers = world.playerQuery(entity.position(), 50) --- > local nearbyPlayers = world.entityQuery(entity.position(), 50, {includedTypes={"player"}}) monsters\boss\penguinminiufo\behavior.lua 53c53 < for i, entityId in ipairs(world.monsterQuery(regionMin, regionMax, { callScript = "isPenguinMaster" })) do --- > for i, entityId in ipairs(world.entityQuery(regionMin, regionMax, { callScript = "isPenguinMaster", includedTypes = {"monster"} })) do monsters\boss\penguinufo\behavior.lua 99c99 < return world.monsterQuery(min, max, { callScript = "isPenguinReinforcement" }) --- > return world.entityQuery(min, max, { callScript = "isPenguinReinforcement", includedTypes = {"monster"} }) monsters\flying\wanderstate.lua 77c77 < local entityIds = world.monsterQuery(entity.position(), 3.0, { callScript = "isFlyer" }) --- > local entityIds = world.entityQuery(entity.position(), 3.0, { callScript = "isFlyer", includedTypes = {"monster"} }) monsters\ground\groundmonster.lua 201c201 < world.monsterQuery( --- > world.entityQuery( 204a205 > includedTypes = {"monster"}, 206d206 < inSightOf = entityId, 380c380 < local entityIds = world.monsterQuery(self.position, 0.5, { withoutEntityId = entity.id(), order = "nearest" }) --- > local entityIds = world.entityQuery(self.position, 0.5, { includedTypes = {"monster"}, withoutEntityId = entity.id(), order = "nearest" }) monsters\ground\herdfleestate.lua 42c42,43 < local familyMemberEntityIds = world.monsterQuery(self.position, herdFleeState.notificationRadius, { --- > local familyMemberEntityIds = world.entityQuery(self.position, herdFleeState.notificationRadius, { > includedTypes = {"monster"}, 44d44 < inSightOf = entityId, monsters\ground\socializestate.lua 95c95 < local entityIds = world.monsterQuery(min, max, { withoutEntityId = entity.id(), callScript = "canSocialize" }) --- > local entityIds = world.entityQuery(min, max, { includedTypes = {"monster"}, withoutEntityId = entity.id(), callScript = "canSocialize" }) monsters\ground\largequadruped\largequadruped.monstertype 23,24d22 < "/monsters/ground/grazeState.lua", < "/monsters/ground/herdFleeState.lua", monsters\ground\smallbiped\smallbiped.monstertype 109,120d108 < }, < { < "baseSkills" : [ "pounceAttack" ], < "specialSkills" : [ ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ ] monsters\ground\smallquadruped\smallquadruped.monstertype 25,26d24 < "/monsters/ground/grazeState.lua", < "/monsters/ground/herdFleeState.lua", 112,123d109 < "baseSkills" : [ "rushAttack" ], < "specialSkills" : [ ] < }, < { < "baseSkills" : [ "pounceAttack" ], < "specialSkills" : [ ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ ] < }, < { 125c111 < "specialSkills" : [ ] --- > "specialSkills" : [ "chargeAttack" ] monsters\swimming\investigatestate.lua 4,10c4,12 < local targetIds = world.itemDropQuery(entity.position(), entity.configParameter("investigateTriggerDistance"), { inSightOf = entity.id(), order = "nearest" }) < if #targetIds > 0 then < return { < target = targetIds[1], < maxDistance = entity.randomizeParameterRange("investigateLoseInterestRange"), < timer = entity.randomizeParameterRange("investigateTimeRange") < } --- > local targetIds = world.entityQuery(entity.position(), entity.configParameter("investigateTriggerDistance"), { includedTypes = {"itemDrop"}, inSightOf = entity.id(), order = "nearest" }) > for k,targetId in pairs(targetIds) do > if entity.entityInSight(targetId) then > return { > target = targetId, > maxDistance = entity.randomizeParameterRange("investigateLoseInterestRange"), > timer = entity.randomizeParameterRange("investigateTimeRange") > } > end monsters\unique\heckblob\behavior.lua 170c170 < local playerIds = world.playerQuery(entity.position(), 50) --- > local playerIds = world.entityQuery(entity.position(), 50, {includedTypes = {"player"}}) monsters\unique\po\behavior.lua 192c192 < local playerIds = world.playerQuery(entity.position(), 50) --- > local playerIds = world.entityQuery(entity.position(), 50, {includedTypes = {"player"}}) monsters\unique\repairbot\behavior.lua 147c147 < local entityIds = world.monsterQuery(entity.position(), entity.configParameter("repairResponseMaxDistance")) --- > local entityIds = world.entityQuery(entity.position(), entity.configParameter("repairResponseMaxDistance"), {includedTypes = {"monster"}}) monsters\unique\tentaclecomet\behavior.lua 84c84 < notAnObject = true, --- > includedTypes = {"creature"}, npcs\chatstate.lua 5c5 < local chatTargetIds = world.npcLineQuery(startPoint, endPoint) --- > local chatTargetIds = world.entityLineQuery(startPoint, endPoint, {includedTypes = {"npc"}}) npcs\fleestate.lua 82c82 < local attackerIds = world.npcQuery(entity.position(), 25.0, { callScript = "isAttacking" }) --- > local attackerIds = world.entityQuery(entity.position(), 25.0, { includedTypes = {"npc"}, callScript = "isAttacking" }) npcs\main.lua 204c204 < local attackerIds = world.npcQuery(position, radius, { callScript = "attackTargetId", callScriptResult = targetId }) --- > local attackerIds = world.entityQuery(position, radius, { includedTypes = {"npc"}, callScript = "attackTargetId", callScriptResult = targetId }) 271,272c271,274 < for _, entityId in pairs(world.npcQuery(entity.position(), radius, { inSightOf = selfId, withoutEntityId = selfId })) do < notification.handled = world.callScriptedEntity(entityId, "receiveNotification", notification) or notification.handled --- > for _, entityId in pairs(world.entityQuery(entity.position(), radius, { includedTypes = {"npc"}, withoutEntityId = selfId })) do > if entity.entityInSight(entityId) then > notification.handled = world.callScriptedEntity(entityId, "receiveNotification", notification) or notification.handled > end 371c373 < local playerIds = world.playerQuery(entity.position(), self.noticePlayersRadius, { inSightOf = entity.id() }) --- > local playerIds = world.entityQuery(entity.position(), self.noticePlayersRadius, { includedTypes = {"player"} }) 373,382c375,386 < if storage.noticedPlayerIds[playerId] == nil then < if not changedState then < changedState = self.state.pickState({ noticedPlayerId = playerId }) < < if not changedState and shouldAttackOnSight(playerId) then < changedState = attack(playerId) < end < < if changedState then < storage.noticedPlayerIds[playerId] = time + self.forgetPlayerTime --- > if entity.entityInSight(playerId) then > if storage.noticedPlayerIds[playerId] == nil then > if not changedState then > changedState = self.state.pickState({ noticedPlayerId = playerId }) > > if not changedState and shouldAttackOnSight(playerId) then > changedState = attack(playerId) > end > > if changedState then > storage.noticedPlayerIds[playerId] = time + self.forgetPlayerTime > end 383a388,389 > else > storage.noticedPlayerIds[playerId] = time + self.forgetPlayerTime 385,386d390 < else < storage.noticedPlayerIds[playerId] = time + self.forgetPlayerTime 504c508 < local closedDoorIds = world.objectLineQuery(position, { position[1] + util.clamp(delta[1], -2, 2), position[2] }, { callScript = "hasCapability", callScriptArgs = { "closedDoor" } }) --- > local closedDoorIds = world.entityLineQuery(position, { position[1] + util.clamp(delta[1], -2, 2), position[2] }, { includedTypes = {"object"}, callScript = "hasCapability", callScriptArgs = { "closedDoor" } }) npcs\meleeattackstate.lua 196c196 < local npcIds = world.npcLineQuery(stateData.targetPosition, position, { callScript = "attackTargetId", callScriptResult = stateData.targetId }) --- > local npcIds = world.entityLineQuery(stateData.targetPosition, position, { includedTypes = {"npc"}, callScript = "attackTargetId", callScriptResult = stateData.targetId }) 230c230 < local npcIds = world.npcLineQuery(stateData.targetPosition, otherSidePosition, { callScript = "attackTargetId", callScriptResult = stateData.targetId }) --- > local npcIds = world.entityLineQuery(stateData.targetPosition, otherSidePosition, { includedTypes = {"npc"}, callScript = "attackTargetId", callScriptResult = stateData.targetId }) npcs\rangedattackstate.lua 158c158 < local entityIds = world.npcLineQuery(position, stateData.targetPosition, { callScript = "attackTargetId", callScriptResult = stateData.targetId }) --- > local entityIds = world.entityLineQuery(position, stateData.targetPosition, { includedTypes = {"npc"}, callScript = "attackTargetId", callScriptResult = stateData.targetId }) npcs\wanderstate.lua 57c57 < local doorIds = world.objectLineQuery(position, lookaheadPosition, { callScript = "hasCapability", callScriptArgs = { "door" } }) --- > local doorIds = world.entityLineQuery(position, lookaheadPosition, { includedTypes = {"object"}, callScript = "hasCapability", callScriptArgs = { "door" } }) 147c147,148 < local doorIds = world.objectQuery(basePosition, entity.configParameter("wander.indoorSearchRadius", wanderState.defaultIndoorSearchRadius), { --- > local doorIds = world.entityQuery(basePosition, entity.configParameter("wander.indoorSearchRadius", wanderState.defaultIndoorSearchRadius), { > includedTypes = {"object"}, 172c173,174 < local entityIds = world.objectQuery(position, entity.configParameter("wander.indoorSearchRadius", wanderState.defaultIndoorSearchRadius), { --- > local entityIds = world.entityQuery(position, entity.configParameter("wander.indoorSearchRadius", wanderState.defaultIndoorSearchRadius), { > includedTypes = {"object"}, npcs\workstate.lua 123c123 < local objectIds = world.objectQuery(position, entity.configParameter("work.searchDistance"), { name = "anvil" }) --- > local objectIds = world.entityQuery(position, entity.configParameter("work.searchDistance"), { includedTypes = {"object"}, name = "anvil" }) npcs\guard\houndstate.lua 17,18c17,18 < local hounderIds = world.npcQuery(targetPosition, houndState.hounderCheckRadius, { < callScript = "stateName", callScriptResult = "houndState" --- > local hounderIds = world.entityQuery(targetPosition, houndState.hounderCheckRadius, { > includedTypes = {"npc"}, callScript = "stateName", callScriptResult = "houndState" objects\apex\securitycamera\securitycamera.lua 133c133 < local entityIds = world.entityLineQuery(startPosition, endPosition, { validTargetOf = selfId }) --- > local entityIds = world.entityLineQuery(startPosition, endPosition, { includedTypes = {"creature"}, withoutEntityId = selfId }) 135c135 < if entityId ~= selfId then --- > if entity.isValidTarget(entityId) then 189c189 < local entityIds = world.entityLineQuery(startPosition, endPosition) --- > local entityIds = world.entityLineQuery(startPosition, endPosition, {includedTypes = {"creature"}}) objects\apex\turret\turret.lua 147c147 < local entityIds = world.entityLineQuery(startPosition, endPosition, { validTargetOf = selfId }) --- > local entityIds = world.entityLineQuery(startPosition, endPosition, { includedTypes = {"creature"}, withoutEntityId = selfId }) 223c223 < local entityIds = world.entityLineQuery(startPosition, endPosition) --- > local entityIds = world.entityLineQuery(startPosition, endPosition, {includedTypes = {"creature"}}) objects\floran\floranlight\floranlight.object 22c22 < "imageLayers" : [ { "image" : "floranlightback1.png:<color>.<frame>", "fullbright" : true }, { "image" : "floranlightback2.png:<color>.<frame>" } ], --- > "image" : "floranlightback1.png:<color>.<frame>", 29c29,35 < "anchors" : [ "background" ] --- > "anchors" : [ "background" ], > > "animationParts" : { > "bg" : "floranlightback1.png", > "fg" : "floranlightback2.png" > }, > "animationPosition" : [-8, 0] 32c38 < "imageLayers" : [ { "image" : "floranlightback1.png:<color>.<frame>", "fullbright" : true }, { "image" : "floranlightback2.png:<color>.<frame>" } ], --- > "image" : "floranlightback1.png:<color>.<frame>", 38c44,50 < "anchors" : [ "background" ] --- > "anchors" : [ "background" ], > > "animationParts" : { > "bg" : "floranlightback1.png", > "fg" : "floranlightback2.png" > }, > "animationPosition" : [0, 0] 41c53 < "imageLayers" : [ { "image" : "floranlightceiling1.png:<color>.<frame>", "fullbright" : true }, { "image" : "floranlightceiling2.png:<color>.<frame>" } ], --- > "image" : "floranlightceiling1.png:<color>.<frame>", 48c60,66 < "anchors" : [ "top" ] --- > "anchors" : [ "top" ], > > "animationParts" : { > "bg" : "floranlightceiling1.png", > "fg" : "floranlightceiling2.png" > }, > "animationPosition" : [-8, 0] 51c69 < "imageLayers" : [ { "image" : "floranlightceiling1.png:<color>.<frame>", "fullbright" : true }, { "image" : "floranlightceiling2.png:<color>.<frame>" } ], --- > "image" : "floranlightceiling1.png:<color>.<frame>", 57c75,81 < "anchors" : [ "top" ] --- > "anchors" : [ "top" ], > > "animationParts" : { > "bg" : "floranlightceiling1.png", > "fg" : "floranlightceiling2.png" > }, > "animationPosition" : [0, 0] 60c84 < "imageLayers" : [ { "image" : "floranlightleft1.png:<color>.<frame>", "fullbright" : true }, { "image" : "floranlightleft2.png:<color>.<frame>" } ], --- > "image" : "floranlightleft1.png:<color>.<frame>", 66c90,96 < "anchors" : [ "left" ] --- > "anchors" : [ "left" ], > > "animationParts" : { > "bg" : "floranlightright1.png", > "fg" : "floranlightright2.png" > }, > "animationPosition" : [0, 0] 69c99 < "imageLayers" : [ { "image" : "floranlightright1.png:<color>.<frame>", "fullbright" : true }, { "image" : "floranlightright2.png:<color>.<frame>" } ], --- > "image" : "floranlightright1.png:<color>.<frame>", 71,72c101 < "frames" : 1, < "animationCycle" : 0.3, --- > 75c104,110 < "anchors" : [ "right" ] --- > "anchors" : [ "right" ], > > "animationParts" : { > "bg" : "floranlightright1.png", > "fg" : "floranlightright2.png" > }, > "animationPosition" : [0, 0] 77c112,121 < ] --- > ], > > "animation" : "/objects/wired/light/lighttogglebgfullbright.animation", > > "scripts" : [ "/objects/wired/light/light.lua" ], > "scriptDelta" : 60, > > "inboundNodes" : [ [0, 0] ], > > "interactive" : false objects\floran\floranlight\floranlightback1.frames 7c7 < [ "default.0", "default.off" ] --- > [ "default.1", "default.off" ] 12c12,13 < "default.default" : "default.0" --- > "default.default" : "default.off", > "default.on" : "default.1" objects\floran\floranlight\floranlightback2.frames 7c7 < [ "default.0", "default.off" ] --- > [ "default.1", "default.off" ] 12c12,13 < "default.default" : "default.0" --- > "default.default" : "default.off", > "default.on" : "default.1" objects\floran\floranlight\floranlightceiling1.frames 7c7 < [ "default.0", "default.off" ] --- > [ "default.1", "default.off" ] 12c12,13 < "default.default" : "default.0" --- > "default.default" : "default.off", > "default.on" : "default.1" objects\floran\floranlight\floranlightceiling2.frames 7c7 < [ "default.0", "default.off" ] --- > [ "default.1", "default.off" ] 12c12,13 < "default.default" : "default.0" --- > "default.default" : "default.off", > "default.on" : "default.1" objects\floran\floranlight\floranlightleft1.frames 7c7 < [ "default.0", "default.off" ] --- > [ "default.1", "default.off" ] 12c12,13 < "default.default" : "default.0" --- > "default.default" : "default.off", > "default.on" : "default.1" objects\floran\floranlight\floranlightleft2.frames 7c7 < [ "default.0", "default.off" ] --- > [ "default.1", "default.off" ] 12c12,13 < "default.default" : "default.0" --- > "default.default" : "default.off", > "default.on" : "default.1" objects\floran\floranlight\floranlightright1.frames 7c7 < [ "default.0", "default.off" ] --- > [ "default.1", "default.off" ] 12c12,13 < "default.default" : "default.0" --- > "default.default" : "default.off", > "default.on" : "default.1" objects\floran\floranlight\floranlightright2.frames 7c7 < [ "default.0", "default.off" ] --- > [ "default.1", "default.off" ] 12c12,13 < "default.default" : "default.0" --- > "default.default" : "default.off", > "default.on" : "default.1" objects\generic\fluorescentlight\fluorescentlight.frames 7,15c7,15 < [ "default.0", "default.off" ], < [ "red.0", "red.off" ], < [ "blue.0", "blue.off" ], < [ "green.0", "green.off" ], < [ "yellow.0", "yellow.off" ], < [ "orange.0", "orange.off" ], < [ "pink.0", "pink.off" ], < [ "black.0", "black.off" ], < [ "white.0", "white.off" ] --- > [ "default.on", "default.off" ], > [ "red.on", "red.off" ], > [ "blue.on", "blue.off" ], > [ "green.on", "green.off" ], > [ "yellow.on", "yellow.off" ], > [ "orange.on", "orange.off" ], > [ "pink.on", "pink.off" ], > [ "black.on", "black.off" ], > [ "white.on", "white.off" ] 20,28c20,28 < "default.default" : "default.off", < "red.default" : "red.off", < "blue.default" : "blue.off", < "green.default" : "green.off", < "yellow.default" : "yellow.off", < "orange.default" : "orange.off", < "pink.default" : "pink.off", < "black.default" : "black.off", < "white.default" : "white.off" --- > "default.default" : "default.on", > "red.default" : "red.on", > "blue.default" : "blue.on", > "green.default" : "green.on", > "yellow.default" : "yellow.on", > "orange.default" : "orange.on", > "pink.default" : "pink.on", > "black.default" : "black.on", > "white.default" : "white.on" objects\generic\fluorescentlight\fluorescentlight.object 20a21 > "fullbright" : true, 27,28c28,33 < "frames" : 1, < "animationCycle" : 0.3, --- > > "animationParts" : { > "light" : "fluorescentlighttop.png" > }, > "animationPosition" : [-8, 4], > "direction" : "right", 32d36 < 38,39c42,47 < "frames" : 1, < "animationCycle" : 0.3, --- > > "animationParts" : { > "light" : "fluorescentlightbottom.png" > }, > "animationPosition" : [-8, 0], > "direction" : "right", 43d50 < 49,51c56,62 < "frames" : 1, < "animationCycle" : 0.3, < --- > > "animationParts" : { > "light" : "fluorescentlightleft.png" > }, > "animationPosition" : [0, -8], > "direction" : "right", > 54a66,93 > > { > "image" : "fluorescentlightleft.png:<color>.<frame>", > "imagePosition" : [0, -8], > > "animationParts" : { > "light" : "fluorescentlightright.png" > }, > "animationPosition" : [-4, -8], > "direction" : "left", > > "spaceScan" : 0.1, > "anchors" : [ "left" ] > }, > > { > "image" : "fluorescentlightright.png:<color>.<frame>", > "imagePosition" : [4, -8], > > "animationParts" : { > "light" : "fluorescentlightleft.png" > }, > "animationPosition" : [0, -8], > "direction" : "left", > > "spaceScan" : 0.1, > "anchors" : [ "right" ] > }, 59,60c98,103 < "frames" : 1, < "animationCycle" : 0.3, --- > > "animationParts" : { > "light" : "fluorescentlightright.png" > }, > "animationPosition" : [4, -8], > "direction" : "right", 65c108 < --- > 68,70c111,117 < "imagePosition" : [-8, 4], < "frames" : 1, < "animationCycle" : 0.3, --- > "imagePosition" : [-8, 1], > > "animationParts" : { > "light" : "fluorescentlight.png" > }, > "animationPosition" : [-8, 1], > "direction" : "right", 74d120 < 78c124,133 < "soundEffect" : "/sfx/objects/fluorescent_light_quiet.wav" --- > "soundEffect" : "/sfx/objects/fluorescent_light_quiet.wav", > > "animation" : "/objects/wired/light/lighttoggle.animation", > > "scripts" : [ "/objects/wired/light/light.lua" ], > "scriptDelta" : 60, > > "interactive" : false, > > "inboundNodes" : [ [0, 0] ] objects\generic\fluorescentlight\fluorescentlightbottom.frames 7,15c7,15 < [ "default.0", "default.off" ], < [ "red.0", "red.off" ], < [ "blue.0", "blue.off" ], < [ "green.0", "green.off" ], < [ "yellow.0", "yellow.off" ], < [ "orange.0", "orange.off" ], < [ "pink.0", "pink.off" ], < [ "black.0", "black.off" ], < [ "white.0", "white.off" ] --- > [ "default.on", "default.off" ], > [ "red.on", "red.off" ], > [ "blue.on", "blue.off" ], > [ "green.on", "green.off" ], > [ "yellow.on", "yellow.off" ], > [ "orange.on", "orange.off" ], > [ "pink.on", "pink.off" ], > [ "black.on", "black.off" ], > [ "white.on", "white.off" ] 20,28c20,28 < "default.default" : "default.off", < "red.default" : "red.off", < "blue.default" : "blue.off", < "green.default" : "green.off", < "yellow.default" : "yellow.off", < "orange.default" : "orange.off", < "pink.default" : "pink.off", < "black.default" : "black.off", < "white.default" : "white.off" --- > "default.default" : "default.on", > "red.default" : "red.on", > "blue.default" : "blue.on", > "green.default" : "green.on", > "yellow.default" : "yellow.on", > "orange.default" : "orange.on", > "pink.default" : "pink.on", > "black.default" : "black.on", > "white.default" : "white.on" objects\generic\fluorescentlight\fluorescentlightleft.frames 7,15c7,15 < [ "default.0", "default.off" ], < [ "red.0", "red.off" ], < [ "blue.0", "blue.off" ], < [ "green.0", "green.off" ], < [ "yellow.0", "yellow.off" ], < [ "orange.0", "orange.off" ], < [ "pink.0", "pink.off" ], < [ "black.0", "black.off" ], < [ "white.0", "white.off" ] --- > [ "default.on", "default.off" ], > [ "red.on", "red.off" ], > [ "blue.on", "blue.off" ], > [ "green.on", "green.off" ], > [ "yellow.on", "yellow.off" ], > [ "orange.on", "orange.off" ], > [ "pink.on", "pink.off" ], > [ "black.on", "black.off" ], > [ "white.on", "white.off" ] 20,28c20,28 < "default.default" : "default.off", < "red.default" : "red.off", < "blue.default" : "blue.off", < "green.default" : "green.off", < "yellow.default" : "yellow.off", < "orange.default" : "orange.off", < "pink.default" : "pink.off", < "black.default" : "black.off", < "white.default" : "white.off" --- > "default.default" : "default.on", > "red.default" : "red.on", > "blue.default" : "blue.on", > "green.default" : "green.on", > "yellow.default" : "yellow.on", > "orange.default" : "orange.on", > "pink.default" : "pink.on", > "black.default" : "black.on", > "white.default" : "white.on" objects\generic\fluorescentlight\fluorescentlightright.frames 7,15c7,15 < [ "default.0", "default.off" ], < [ "red.0", "red.off" ], < [ "blue.0", "blue.off" ], < [ "green.0", "green.off" ], < [ "yellow.0", "yellow.off" ], < [ "orange.0", "orange.off" ], < [ "pink.0", "pink.off" ], < [ "black.0", "black.off" ], < [ "white.0", "white.off" ] --- > [ "default.on", "default.off" ], > [ "red.on", "red.off" ], > [ "blue.on", "blue.off" ], > [ "green.on", "green.off" ], > [ "yellow.on", "yellow.off" ], > [ "orange.on", "orange.off" ], > [ "pink.on", "pink.off" ], > [ "black.on", "black.off" ], > [ "white.on", "white.off" ] 20,28c20,28 < "default.default" : "default.off", < "red.default" : "red.off", < "blue.default" : "blue.off", < "green.default" : "green.off", < "yellow.default" : "yellow.off", < "orange.default" : "orange.off", < "pink.default" : "pink.off", < "black.default" : "black.off", < "white.default" : "white.off" --- > "default.default" : "default.on", > "red.default" : "red.on", > "blue.default" : "blue.on", > "green.default" : "green.on", > "yellow.default" : "yellow.on", > "orange.default" : "orange.on", > "pink.default" : "pink.on", > "black.default" : "black.on", > "white.default" : "white.on" objects\generic\fluorescentlight\fluorescentlighttop.frames 7,15c7,15 < [ "default.0", "default.off" ], < [ "red.0", "red.off" ], < [ "blue.0", "blue.off" ], < [ "green.0", "green.off" ], < [ "yellow.0", "yellow.off" ], < [ "orange.0", "orange.off" ], < [ "pink.0", "pink.off" ], < [ "black.0", "black.off" ], < [ "white.0", "white.off" ] --- > [ "default.on", "default.off" ], > [ "red.on", "red.off" ], > [ "blue.on", "blue.off" ], > [ "green.on", "green.off" ], > [ "yellow.on", "yellow.off" ], > [ "orange.on", "orange.off" ], > [ "pink.on", "pink.off" ], > [ "black.on", "black.off" ], > [ "white.on", "white.off" ] 20,28c20,28 < "default.default" : "default.off", < "red.default" : "red.off", < "blue.default" : "blue.off", < "green.default" : "green.off", < "yellow.default" : "yellow.off", < "orange.default" : "orange.off", < "pink.default" : "pink.off", < "black.default" : "black.off", < "white.default" : "white.off" --- > "default.default" : "default.on", > "red.default" : "red.on", > "blue.default" : "blue.on", > "green.default" : "green.on", > "yellow.default" : "yellow.on", > "orange.default" : "orange.on", > "pink.default" : "pink.on", > "black.default" : "black.on", > "white.default" : "white.on" objects\ship\apexshiplight\apexshiplight.frames 2d1 < 6c5,7 < "names" : [ [ "0", "off" ] ] --- > "names" : [ > [ "default.on", "default.off" ] > ] 10c11 < "default" : "off" --- > "default.default" : "default.on" 12d12 < objects\ship\apexshiplight\apexshiplight.object 24,25c24,25 < { < "image" : "apexshiplight.png:<frame>", --- > { > "image" : "apexshiplight.png:<color>.<frame>", 27c27,33 < "animationCycle" : 0.5, --- > > "animationParts" : { > "light" : "apexshiplight.png" > }, > "animationPosition" : [-8, 0], > > "direction" : "right", 33c39,51 < ] --- > ], > > "soundEffect" : "/sfx/objects/fluorescent_light_quiet.wav", > > "animation" : "/objects/wired/light/lighttoggle.animation", > > "scripts" : [ "/objects/wired/light/light.lua" ], > "scriptDelta" : 60, > > "interactive" : false, > > "inboundNodes" : [ [0, 0] ] > objects\wired\landmine\landmine.lua 32c32 < local entityIds = world.entityQuery(entity.position(), radius, { creature = true }) --- > local entityIds = world.entityQuery(entity.position(), radius, { includedTypes = {"creature"} }) objects\wired\standingturret\standingturret.lua 167,169c167,169 < --Gets all valid targets + all monsters < local validTargetIds = world.entityQuery(getBasePosition(), self.targetRange, { validTargetOf = entity.id() }) < local monsterIds = world.monsterQuery(getBasePosition(), self.targetRange, { notAnObject = true }) --- > --Gets all valid npc targets + all monsters > local npcIds = world.entityQuery(getBasePosition(), self.targetRange, { includedTypes = {"npc"} }) > local monsterIds = world.entityQuery(getBasePosition(), self.targetRange, { includedTypes = {"monster"} }) 171,172c171,174 < for key,validTargetId in ipairs(validTargetIds) do < monsterIds[#monsterIds+1] = validTargetId --- > for i,npcId in ipairs(npcIds) do > if entity.isValidTarget(npcId) then > monsterIds[#monsterIds+1] = npcId > end scripts\entityproxy.lua 5c5 < -- local npcIds = world.npcQuery(entity.position(), 100) --- > -- local npcIds = world.entityQuery(entity.position(), 100, {includedTypes = {"npc"}}) Something about that quest line looks off to me... ah! "Travel within this system is now available; did you investigate that gate yet?" At least, according to Word.
Great news! Now when I get and use the bubble boost tech I should be able to fly around planets quickly and with less (maybe even none) unloaded chunks of blocks appearing invisibly in front of me.