FILES ----- player.config system_objects.config behaviors\npc\bounty\bounty-bribe.behavior dungeons\microdungeons\bounty\safehouse_1.json dungeons\microdungeons\bounty\safehouse_10.json dungeons\microdungeons\bounty\safehouse_11.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_16.json dungeons\microdungeons\bounty\safehouse_17.json dungeons\microdungeons\bounty\safehouse_18.json dungeons\microdungeons\bounty\safehouse_19.json dungeons\microdungeons\bounty\safehouse_2.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_7.json dungeons\microdungeons\bounty\safehouse_8.json dungeons\microdungeons\bounty\safehouse_9.json dungeons\microdungeons\bounty\undergroundsafehouse_1.json dungeons\microdungeons\bounty\undergroundsafehouse_10.json dungeons\microdungeons\bounty\undergroundsafehouse_11.json dungeons\microdungeons\bounty\undergroundsafehouse_12.json dungeons\microdungeons\bounty\undergroundsafehouse_13.json dungeons\microdungeons\bounty\undergroundsafehouse_14.json dungeons\microdungeons\bounty\undergroundsafehouse_15.json dungeons\microdungeons\bounty\undergroundsafehouse_16.json dungeons\microdungeons\bounty\undergroundsafehouse_2.json dungeons\microdungeons\bounty\undergroundsafehouse_3.json dungeons\microdungeons\bounty\undergroundsafehouse_4.json dungeons\microdungeons\bounty\undergroundsafehouse_5.json dungeons\microdungeons\bounty\undergroundsafehouse_6.json dungeons\microdungeons\bounty\undergroundsafehouse_7.json dungeons\microdungeons\bounty\undergroundsafehouse_8.json dungeons\microdungeons\bounty\undergroundsafehouse_9.json dungeons\microdungeons\bounty\undergroundvault_1.json dungeons\microdungeons\bounty\undergroundvault_2.json dungeons\microdungeons\bounty\undergroundvault_3.json dungeons\microdungeons\bounty\vault_1.json dungeons\microdungeons\bounty\vault_2.json dungeons\microdungeons\bounty\vault_3.json interface\cockpit\cockpitutil.lua [NEW] items\active\weapons\ranged\unrand\neolaserlauncher\beam.png [NEW] items\active\weapons\ranged\unrand\neoshotgun\muzzleflash.png quests\bounty\bounty_gen.lua quests\bounty\generator.config scripts\bountygeneration.lua [NEW] scripts\bounty\playerbounty.lua stagehands\bountymanager.lua DIFFS ----- player.config 782c782,783 < //"events" : "/events/events.lua" --- > //"events" : "/events/events.lua", > "bounty" : "/scripts/bounty/playerbounty.lua" system_objects.config 416d415 < "threatLevel" : 1, behaviors\npc\bounty\bounty-bribe.behavior 3c3 < "description": null, --- > "description": "", 5a6 > "/scripts/behavior.lua", 8d8 < "/scripts/behavior.lua", 54a55,65 > "title": "setEntity", > "type": "action", > "name": "setEntity", > "parameters": { > "entity": {"key": "target"} > }, > "output": { > "entity": "arrestingEntity" > } > }, > { 108c119 < "entity": {"key": "interactionSource"} --- > "entity": {"key": "arrestingEntity"} 355a367,375 > "title": "setResource", > "type": "action", > "name": "setResource", > "parameters": { > "amount": {"value": 10}, > "resource": {"value": "health"} > } > }, > { 395c415 < "entity": {"key": "interactionSource"} --- > "entity": {"key": "arrestingEntity"} 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_11.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_16.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_19.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_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_7.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\safehouse_8.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\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_12.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundsafehouse_13.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_15.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundsafehouse_16.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundsafehouse_2.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_4.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\undergroundsafehouse_6.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundsafehouse_7.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundsafehouse_8.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundsafehouse_9.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundvault_1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundvault_2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\undergroundvault_3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\vault_1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\vault_2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\bounty\vault_3.json [TMX file differences are left out for huge size.] interface\cockpit\cockpitutil.lua 20a21 > local objectPositions = {} 28,29c29,31 < objectOrbits[uuid] = orbit < table.insert(locations, {"object", uuid}) --- > objectPositions[uuid] = celestial.orbitPosition(orbit) > else > objectPositions[uuid] = celestial.objectPosition(uuid) 30a33 > table.insert(locations, {"object", uuid}) 61c64 < second = celestial.orbitPosition(objectOrbits[location[2]]) --- > second = objectPositions[location[2]] quests\bounty\bounty_gen.lua 3a4,39 > self.generatedQuests = {} > self.generators = {} > local behaviorNames = { > "bribe" > } > for _,behaviorName in ipairs(behaviorNames) do > table.insert(self.generators, coroutine.create(function() > local generator, target = questGenerator(behaviorName, "capture_bounty", 1) > local arc = generator:generateBountyArc(target) > if arc then > table.insert(self.generatedQuests, arc) > else > error("No arc produced") > end > end)) > end > > -- for _,endStep in ipairs({"capture_space_bounty", "capture_ship_bounty"}) do > -- table.insert(self.generators, coroutine.create(function() > -- local generator = questGenerator(nil, endStep, 2) > -- local arc = generator:generateBountyArc(target) > -- if arc then > -- table.insert(self.generatedQuests, arc) > -- else > -- error("No arc produced") > -- end > -- end)) > -- end > > -- for i = 1, 100 do > -- local gang = generateGang(sb.makeRandomSource():randu64()) > -- sb.logInfo("%s", gang.name) > -- end > end > > function questGenerator(behaviorName, endStep, stepCount) 6a43 > sb.logInfo("Gang: %s", gang) 8,10c45,47 < local generator = BountyGenerator.new(seed, systemPosition(celestial.currentSystem()), {"orangestar", "whitestar"}, categories, "capstone_1") < generator.stepCount = {1, 1} < local target = generator:generateBountyNpc(gang) --- > local generator = BountyGenerator.new(seed, systemPosition(celestial.currentSystem()), {"orangestar", "whitestar"}, categories, endStep) > generator.stepCount = {stepCount, stepCount} > local target = generator:generateBountyNpc(gang, nil, behaviorName) 25d61 < self.generate = coroutine.create(function() return generator:generateBountyArc(target) end) 27,30c63 < -- for i = 1, 100 do < -- local gang = generateGang(sb.makeRandomSource():randu64()) < -- sb.logInfo("%s", gang.name) < -- end --- > return generator, target 34,41c67,75 < if self.generate then < local status, result = coroutine.resume(self.generate) < if not status then < error(result) < end < if result ~= nil then < local arc = result < sb.logInfo("Quest arc: %s", sb.printJson(arc, 1)) --- > if #self.generators > 0 then > self.generators = util.filter(self.generators, function(gen) > local s, res = coroutine.resume(gen) > if not s then error(res) end > > return coroutine.status(gen) ~= "dead" > end) > else > for _,arc in ipairs(self.generatedQuests) do 43,44d76 < quest.complete() < self.generate = nil 45a78 > quest.complete() quests\bounty\generator.config 781a782,785 > }, > "gang" : { > "type" : "stagehand", > "stagehand" : "gangspawn" 793c797 < "useBountyGang" : true, --- > "gangMember" : true, scripts\bountygeneration.lua 350c350 < error(string.format("No options available for finding edge from '%s' to '%s' '%s'", fromStep and (fromStep.step or fromStep.clueType), toStep, toClueType)) --- > error(string.format("No options available for finding edge from '%s' to '%s'. Clue type: '%s'", fromStep and (fromStep.step or fromStep.clueType), toStep or self.endStep, toClueType)) stagehands\bountymanager.lua 434c434 < sb.logInfo("placed bounty dungeonat %s after %s tries", spawnPosition) --- > sb.logInfo("placed bounty dungeon at %s", spawnPosition) 715d714 < sb.logInfo("%s", clueConfigs)