FILES ----- collections\actionfigures.collection dungeons\microdungeons\bounty\boat_5.json dungeons\microdungeons\bounty\boat_6.json dungeons\microdungeons\bounty\boat_7.json dungeons\microdungeons\bounty\boat_9.json dungeons\microdungeons\bounty\fueldepot_3.json dungeons\microdungeons\bounty\safehouse_1.json dungeons\microdungeons\bounty\safehouse_10.json dungeons\microdungeons\bounty\safehouse_12.json dungeons\microdungeons\bounty\safehouse_13.json dungeons\microdungeons\bounty\safehouse_14.json dungeons\microdungeons\bounty\safehouse_15.json dungeons\microdungeons\bounty\safehouse_17.json dungeons\microdungeons\bounty\safehouse_18.json dungeons\microdungeons\bounty\safehouse_2.json dungeons\microdungeons\bounty\safehouse_20.json dungeons\microdungeons\bounty\safehouse_3.json dungeons\microdungeons\bounty\safehouse_4.json dungeons\microdungeons\bounty\safehouse_5.json dungeons\microdungeons\bounty\safehouse_6.json dungeons\microdungeons\bounty\safehouse_9.json dungeons\microdungeons\bounty\tutorialbounty.json dungeons\microdungeons\bounty\tutorialclues.json dungeons\microdungeons\bounty\undergroundfueldepot_3.json dungeons\microdungeons\bounty\undergroundsafehouse_1.json dungeons\microdungeons\bounty\undergroundsafehouse_10.json dungeons\microdungeons\bounty\undergroundsafehouse_11.json dungeons\microdungeons\bounty\undergroundsafehouse_14.json dungeons\microdungeons\bounty\undergroundsafehouse_3.json dungeons\microdungeons\bounty\undergroundsafehouse_5.json dungeons\microdungeons\bounty\undergroundtutorialbounty.json dungeons\microdungeons\bounty\undergroundtutorialclues.json interface\scripted\bountyboard\bountyboardgui.lua monsters\boss\swansong\swansong.monstertype monsters\ghosts\peacekeeperdrone\peacekeeperdrone.monstertype monsters\walkers\crabcano\icecrabcano.monstertype objects\outpost\bountyboard\bountyboard.lua quests\bounty\bounty.lua quests\bounty\generator.config quests\bounty\stages.lua radiomessages\missions.radiomessages stagehands\bountymanager.lua treasure\Missions\cultistmission1.treasurepools DIFFS ----- collections\actionfigures.collection 229c229 < "triplod" : { --- > "triplodaf" : { dungeons\microdungeons\bounty\boat_5.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\boat_6.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\boat_7.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\boat_9.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\fueldepot_3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_10.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_12.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_13.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_14.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_15.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_17.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_18.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_20.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_4.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_5.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_6.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_9.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\tutorialbounty.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\tutorialclues.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundfueldepot_3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundsafehouse_1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundsafehouse_10.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundsafehouse_11.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundsafehouse_14.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundsafehouse_3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundsafehouse_5.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundtutorialbounty.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundtutorialclues.json [TMX file differences are left out for huge size.] interface\scripted\bountyboard\bountyboardgui.lua 232c232,233 < local boardAssignment = util.await(world.sendEntityMessage(pane.sourceEntity(), "assignment")):result() --- > local assignmentType = tutorial and "tutorialAssignment" or "assignment" > local boardAssignment = util.await(world.sendEntityMessage(pane.sourceEntity(), assignmentType)):result() 290,304c291,308 < local boardAssignment = util.await(world.sendEntityMessage(pane.sourceEntity(), "assignment")):result() < if self.assignment and not self.assignment.tutorial and boardAssignment and not compare(self.assignment.system, boardAssignment.system) then < local sameRank = self.assignment.rank == boardAssignment.rank < local xorFinal = self.assignment.final == boardAssignment.final < local previousAssignment = contains(self.assignmentLog, boardAssignment.system) < if sameRank and xorFinal and not previousAssignment then < self.assignment = boardAssignment < self.posters = {} < < local boardStationUuid = util.await(world.sendEntityMessage(pane.sourceEntity(), "stationUuid")):result() < self.bountyStation = { < system = self.assignment.system, < uuid = boardStationUuid, < worldId = player.worldId() < } --- > if self.assignment then > local assignmentType = self.assignment.tutorial and "tutorialAssignment" or "assignment" > local boardAssignment = util.await(world.sendEntityMessage(pane.sourceEntity(), assignmentType)):result() > if boardAssignment and not compare(self.assignment.system, boardAssignment.system) then > local sameRank = self.assignment.rank == boardAssignment.rank > local xorFinal = self.assignment.final == boardAssignment.final > local previousAssignment = contains(self.assignmentLog, boardAssignment.system) > if sameRank and xorFinal and not previousAssignment then > self.assignment = boardAssignment > self.posters = {} > > local boardStationUuid = util.await(world.sendEntityMessage(pane.sourceEntity(), "stationUuid")):result() > self.bountyStation = { > system = self.assignment.system, > uuid = boardStationUuid, > worldId = player.worldId() > } > end 459,460c463,468 < if player.worldId() == self.bountyStation.worldId and not self.assignment.tutorial then < world.sendEntityMessage(pane.sourceEntity(), "setAssignment", self.assignment) --- > if player.worldId() == self.bountyStation.worldId then > if self.assignment.tutorial then > world.sendEntityMessage(pane.sourceEntity(), "setTutorialAssignment", self.assignment) > else > world.sendEntityMessage(pane.sourceEntity(), "setAssignment", self.assignment) > end monsters\boss\swansong\swansong.monstertype 38,39c38,39 < "power" : 10, < "rocketCount" : 15, --- > "power" : 15, > "rocketCount" : 20, monsters\ghosts\peacekeeperdrone\peacekeeperdrone.monstertype 168c168 < "baseValue" : 25 --- > "baseValue" : 0.0 monsters\walkers\crabcano\icecrabcano.monstertype 190c190 < "baseValue" : 0.5 --- > "baseValue" : -0.5 193c193 < "baseValue" : 1.0 --- > "baseValue" : 0.0 196c196 < "baseValue" : -0.5 --- > "baseValue" : 0.5 objects\outpost\bountyboard\bountyboard.lua 11a12 > storage.tutorialAssignment = storage.tutorialAssignment or nil 60a62,71 > end > end) > > > message.setHandler("tutorialAssignment", function(_, _) > return storage.tutorialAssignment > end) > message.setHandler("setTutorialAssignment", function(_, _, assignment) > if storage.tutorialAssignment == nil then > storage.tutorialAssignment = assignment quests\bounty\bounty.lua 41a42,44 > message.setHandler(quest.questId()..".fail", function(_, _, text) > quest.fail() > end) 145c148 < sb.logInfo("Find bounty manager") --- > sb.logInfo("Find bounty manager") 149c152 < sb.logInfo("Maybe find bounty manager") --- > sb.logInfo("Maybe find bounty manager") 219a223 > sb.logInfo("Complete message: %s", storage.completeMessage) quests\bounty\generator.config 708,719c708,719 < "scan_planets" : { < "category" : "planet", < "quest" : "scan_planets", < "questParameters" : {}, < "clueTypes" : [ < ], < < "coordinate" : { < "type" : "world", < "questParameter" : "world" < } < }, --- > // "scan_planets" : { > // "category" : "planet", > // "quest" : "scan_planets", > // "questParameters" : {}, > // "clueTypes" : [ > // ], > > // "coordinate" : { > // "type" : "world", > // "questParameter" : "world" > // } > // }, 1547,1650c1547,1650 < { < "prev" : { < "clueType" : "scan" < }, < < "next" : { < "step" : "scan_planets" < } < }, < < { < "prev" : { < "step" : "scan_planets", < < "text" : { < "message" : "We have picked up the target's signature from this planet. Proceed down to and apprehend the criminal." < } < }, < < "next" : { < "step" : "capture_bounty", < < "coordinate" : { < "type" : "previous", < "questParameter" : "world" < } < } < }, < < { < "prev" : { < "step" : "scan_planets", < < "text" : { < "message" : "We have picked up the target's signature from this planet. Proceed down to to investigate further." < } < }, < < "next" : { < "step" : "find_clue_npc", < < "coordinate" : { < "type" : "previous", < "questParameter" : "world" < } < } < }, < < { < "prev" : { < "step" : "scan_planets", < < "text" : { < "message" : "We have picked up the target's signature from this planet. Proceed down to to investigate further." < } < }, < < "next" : { < "step" : "find_clue_bounty", < < "coordinate" : { < "type" : "previous", < "questParameter" : "world" < } < } < }, < < { < "prev" : { < "step" : "scan_planets", < < "text" : { < "message" : "We have picked up the target's signature from this planet. Proceed down to to investigate further." < } < }, < < "next" : { < "step" : "find_clue_object", < < "coordinate" : { < "type" : "previous", < "questParameter" : "world" < } < } < }, < < { < "prev" : { < "step" : "scan_planets", < < "text" : { < "message" : "We've' picked up the target's signature from this planet. Proceed down to to investigate further." < } < }, < < "next" : { < "step" : "find_clue_item", < < "coordinate" : { < "type" : "previous", < "questParameter" : "world" < } < } < }, --- > // { > // "prev" : { > // "clueType" : "scan" > // }, > > // "next" : { > // "step" : "scan_planets" > // } > // }, > > // { > // "prev" : { > // "step" : "scan_planets", > > // "text" : { > // "message" : "We have picked up the target's signature from this planet. Proceed down to and apprehend the criminal." > // } > // }, > > // "next" : { > // "step" : "capture_bounty", > > // "coordinate" : { > // "type" : "previous", > // "questParameter" : "world" > // } > // } > // }, > > // { > // "prev" : { > // "step" : "scan_planets", > > // "text" : { > // "message" : "We have picked up the target's signature from this planet. Proceed down to to investigate further." > // } > // }, > > // "next" : { > // "step" : "find_clue_npc", > > // "coordinate" : { > // "type" : "previous", > // "questParameter" : "world" > // } > // } > // }, > > // { > // "prev" : { > // "step" : "scan_planets", > > // "text" : { > // "message" : "We have picked up the target's signature from this planet. Proceed down to to investigate further." > // } > // }, > > // "next" : { > // "step" : "find_clue_bounty", > > // "coordinate" : { > // "type" : "previous", > // "questParameter" : "world" > // } > // } > // }, > > // { > // "prev" : { > // "step" : "scan_planets", > > // "text" : { > // "message" : "We have picked up the target's signature from this planet. Proceed down to to investigate further." > // } > // }, > > // "next" : { > // "step" : "find_clue_object", > > // "coordinate" : { > // "type" : "previous", > // "questParameter" : "world" > // } > // } > // }, > > // { > // "prev" : { > // "step" : "scan_planets", > > // "text" : { > // "message" : "We've' picked up the target's signature from this planet. Proceed down to to investigate further." > // } > // }, > > // "next" : { > // "step" : "find_clue_item", > > // "coordinate" : { > // "type" : "previous", > // "questParameter" : "world" > // } > // } > // }, quests\bounty\stages.lua 60a61 > local targetWorld = quest.parameters().world.coordinate 75c76,77 < while not compare(celestial.currentSystem(), targetSystem) do --- > local targetWorldId = coordinateWorldId(targetWorld) > while player.worldId() ~= targetWorldId and not compare(celestial.currentSystem(), targetSystem) do 170c172 < if player.worldId() ~= quest.worldId() or player.serverUuid() ~= quest.serverUuid() then --- > if not onQuestWorld() then 192,195c194 < -- target is no longer on the world, or has given the player the clue < return nextStage() < elseif pos == nil then < quest.fail() --- > break 198a198 > return nextStage() 236c236 < if player.worldId() ~= quest.worldId() or player.serverUuid() ~= quest.serverUuid() then --- > if not onQuestWorld() then 307c307 < if player.worldId() ~= quest.worldId() or player.serverUuid() ~= quest.serverUuid() then --- > if not onQuestWorld() then 322a323 > sb.logInfo("%s %s", storage.spawned["clue"], storage.scanIds["clue"]) 387c388,394 < while quest.worldId() == nil or player.worldId() ~= quest.worldId() do --- > while not onQuestWorld() do > if self.managerPosition ~= nil then > -- found the bounty manager for this quest, this is the correct world > quest.setWorldId(player.worldId()) > return nextStage() > end > 415a423,425 > if coordinateWorldId(world) == player.worldId() then > return nextStage() > end radiomessages\missions.radiomessages 400c400 < "text" : "A fridge! I wonder bad guyss eat for breakfast?" --- > "text" : "A fridge! I wonder what bad guyss eat for breakfast?" 432c432 < "text" : "Who's communication channel is this?! Why are you aboard the Dantalion?!" --- > "text" : "Whose communication channel is this?! Why are you aboard the Dantalion?!" stagehands\bountymanager.lua 65c65 < locations = {} --- > locations = {}, 197a198,201 > questStore.completed = true > end > for _, playerId in ipairs(questStore.players) do > self.outbox:sendMessage(playerId, questId..".complete") 206,207c210,221 < < startSpawners(questId) --- > if storage.questStorage[questId].completed then > self.outbox:sendMessage(playerId, questId..".complete") > elseif storage.questStorage[questId].failed then > self.outbox:sendMessage(playerId, questId..".fail") > else > if storage.questStorage[questId].scanIds then > for _, playerId in ipairs(storage.questStorage[questId].players) do > self.outbox:sendMessage(playerId, questId.."scanIds", storage.questStorage[questId].scanIds.name, storage.questStorage[questId].scanIds.uuids) > end > end > startSpawners(questId) > end 211c225 < self.spawners[questId] = {} --- > self.spawners[questId] = self.spawners[questId] or {} 235,236d248 < sb.logInfo("Spawn config: %s", spawnConfig) < 239c251 < if worldId == self.worldId then --- > if self.spawners[questId][spawnName] == nil and worldId == self.worldId then 307,308c319,325 < removeTileProtection() < stagehand.die() --- > local celestialWorld = worldIdCoordinate(self.worldId) ~= nil > if celestialWorld then > -- if this is not a celestial world we don't need to remove tile protection, and the stagehand doesn't need to die > -- it's better to stay around in case other players are on the same quest > removeTileProtection() > stagehand.die() > end 344a362 > storage.questStorage[questId].failed = true 800c818 < local uuids = {} --- > local uuids = jarray() 852a871,874 > storage.questStorage[spawnConfig.questId].scanIds = { > name = spawnConfig.name, > uuids = uuids > } treasure\Missions\cultistmission1.treasurepools 51c51 < {"weight" : 0.1, "item" : [ "valuableTreasure", 1]}, --- > {"weight" : 0.1, "pool" : "valuableTreasure"},