FILES ----- [NEW] cinematics\artifacts\apexartifact.cinematic [NEW] cinematics\artifacts\apexartifact.frames [NEW] cinematics\artifacts\apexartifact.png [NEW] cinematics\artifacts\apexartifact_name.png cinematics\artifacts\avianartifact.png [NEW] dungeons\avian\avianvillage\19b-objects-clue5.png [NEW] dungeons\avian\avianvillage\5-objects-clue3.png [NEW] dungeons\avian\avianvillage\8-objects-clue4.png [NEW] dungeons\avian\avianvillage\9-objects-clue1.png dungeons\avian\avianvillage\avianvillage.dungeon dungeons\glitch\glitchsewer\entrance-objects.png dungeons\glitch\glitchsewer\entrance.png dungeons\glitch\glitchsewer\glitchsewer.dungeon dungeons\missions\apexmissions\apexmission1.json dungeons\missions\avianmissions\avianmission1.json dungeons\missions\floranmissions\floranmission1-objects.png dungeons\missions\floranmissions\floranmission1.dungeon dungeons\missions\glitchmissions\glitchmission1.json dungeons\missions\hylotlmissions\hylotlmission1.json dungeons\other\outpost\outpost.json interface\messages\textcontainer.png [NEW] interface\quests\questlog\toggletrackingover.png [NEW] interface\quests\questlog\toggletrackingup.png interface\warping\arkteleporter.config interface\windowconfig\questlog.config items\active\weapons\melee\broadsword\timepierce.animation items\armors\apex\apexcommander\apexcommander.chest items\armors\apex\apexcommander\apexcommander.legs items\armors\apex\apexnavy\apexnavy.chest items\armors\apex\apexnavy\apexnavy.legs items\armors\apex\apexofficer\apexofficer.chest items\armors\apex\apexofficer\apexofficer.legs items\armors\apex\apexspecialist\apexspecialist.chest items\armors\apex\apexspecialist\apexspecialist.legs items\armors\avian\avian-adventurer\avianadventurer.chest items\armors\avian\avian-adventurer\avianadventurer.legs items\armors\avian\avian-commoner\aviancommoner.chest items\armors\avian\avian-commoner\aviancommoner.legs items\armors\avian\avian-fancy\avianfancy.chest items\armors\avian\avian-fancy\avianfancy.legs items\armors\avian\avian-worker\avianworker.chest items\armors\avian\avian-worker\avianworker.legs items\armors\backerhats\demonhorns\head.png items\armors\backerhats\demonhorns\headicon.png items\armors\floran\floran-furnivour\floranfurnivor.chest items\armors\floran\floran-furnivour\floranfurnivor.legs items\armors\floran\floran-hunter\floranhunter.chest items\armors\floran\floran-hunter\floranhunter.legs items\armors\floran\floran-leaf\floranleaf.chest items\armors\floran\floran-leaf\floranleaf.legs items\armors\floran\floran-pelt\floranpelt.chest items\armors\floran\floran-pelt\floranpelt.legs items\armors\floran\floran-survivalist\floransurvivalist.chest items\armors\floran\floran-survivalist\floransurvivalist.legs items\armors\glitch\glitch-craftsmen\craftsmen.chest items\armors\glitch\glitch-craftsmen\craftsmen.legs items\armors\glitch\glitch-merchant\merchant.chest items\armors\glitch\glitch-merchant\merchant.legs items\armors\glitch\glitch-noble\noble.chest items\armors\glitch\glitch-noble\noble.legs items\armors\glitch\glitch-peasant\peasant.chest items\armors\glitch\glitch-peasant\peasant.legs items\armors\human\human-concept\concept.chest items\armors\human\human-concept\concept.legs items\armors\human\human-cool\cool.chest items\armors\human\human-cool\cool.legs items\armors\human\human-sweatervest\sweatervest.chest items\armors\human\human-sweatervest\sweatervest.legs items\armors\human\human-workout\workout.chest items\armors\human\human-workout\workout.legs items\armors\hylotl\hylotl-kimono\kimono.chest items\armors\hylotl\hylotl-kimono\kimono.legs items\armors\hylotl\hylotl-monk\monk.chest items\armors\hylotl\hylotl-monk\monk.legs items\armors\hylotl\hylotl-traditional\traditional.chest items\armors\hylotl\hylotl-traditional\traditional.legs items\armors\hylotl\hylotl-trainee\trainee.chest items\armors\hylotl\hylotl-trainee\trainee.legs items\armors\novakid\novakidfancy\novakidfancy.chest items\armors\novakid\novakidfancy\novakidfancy.legs items\armors\novakid\novakidjacket\novakidjacket.chest items\armors\novakid\novakidjacket\novakidjacket.legs items\armors\novakid\novakidsuspenders\novakidsuspenders.chest items\armors\novakid\novakidsuspenders\novakidsuspenders.legs items\armors\novakid\novakidwaistcoat\novakidwaistcoat.chest items\armors\novakid\novakidwaistcoat\novakidwaistcoat.legs npcs\story\esther.npctype objects\clues\floran\floranspinneret\floranspinneret.object objects\clues\floran\floranwebbing\floranwebbing.object [NEW] objects\clues\hylotl\hylotlmusicbox\hylotlmusicbox.animation objects\clues\hylotl\hylotlmusicbox\hylotlmusicbox.frames objects\clues\hylotl\hylotlmusicbox\hylotlmusicbox.object objects\clues\hylotl\librarycodex\librarycodex.object objects\mission\lunarquestturnin\drillmachine.lua [NEW] objects\outpost\shipyardcaptain\shipyardcaptain.lua objects\outpost\shipyardcaptain\shipyardcaptain.object objects\protectorate\objects\protectorateamp\protectorateamp.object objects\protectorate\objects\protectoratebeamaxe\protectoratebeamaxe.object objects\protectorate\objects\protectoratebench\protectoratebench.object objects\protectorate\objects\protectoratebookcabinet\protectoratebookcabinet.object objects\protectorate\objects\protectoratebooks\protectoratebooks.object objects\protectorate\objects\protectoratebooks2\protectoratebooks2.object objects\protectorate\objects\protectoratebrokendisplay1\protectoratebrokendisplay1.object objects\protectorate\objects\protectoratebrokendisplay2\protectoratebrokendisplay2.object objects\protectorate\objects\protectoratebrokenlight\protectoratebrokenlight.object objects\protectorate\objects\protectoratebrokenportrait1\protectoratebrokenportrait1.object objects\protectorate\objects\protectoratebrokenportrait2\protectoratebrokenportrait2.object objects\protectorate\objects\protectoratebrokenportrait3\protectoratebrokenportrait3.object objects\protectorate\objects\protectoratebrokenportrait4\protectoratebrokenportrait4.object objects\protectorate\objects\protectoratebrokenportrait5\protectoratebrokenportrait5.object objects\protectorate\objects\protectoratebrokenvending\protectoratebrokenvending.object objects\protectorate\objects\protectoratecactiflowerpot\protectoratecactiflowerpot.object objects\protectorate\objects\protectorateclock\protectorateclock.object objects\protectorate\objects\protectoratedoor\protectoratedoor.object objects\protectorate\objects\protectoratedormbed\protectoratedormbed.object objects\protectorate\objects\protectoratedormmirror\protectoratedormmirror.object objects\protectorate\objects\protectoratedormtoilet\protectoratedormtoilet.object objects\protectorate\objects\protectoratedormtoiletroll\protectoratedormtoiletroll.object objects\protectorate\objects\protectorateextinguisher\protectorateextinguisher.object objects\protectorate\objects\protectoratefallenrope\protectoratefallenrope.object objects\protectorate\objects\protectoratefbannertorn1\protectoratefbannertorn1.object objects\protectorate\objects\protectoratefbannertorn2\protectoratefbannertorn2.object objects\protectorate\objects\protectoratefigures\protectoratefigures.object objects\protectorate\objects\protectorategamesconsole\protectorategamesconsole.object objects\protectorate\objects\protectorategardenbench\protectorategardenbench.object objects\protectorate\objects\protectorategardentree\protectorategardentree.object objects\protectorate\objects\protectorateguidelines\protectorateguidelines.object objects\protectorate\objects\protectorateguitar\protectorateguitar.object objects\protectorate\objects\protectoratehallcurtain\protectoratehallcurtain.object objects\protectorate\objects\protectoratehallcurtain2\protectoratehallcurtain2.object objects\protectorate\objects\protectoratehalllight\protectoratehalllight.object objects\protectorate\objects\protectoratehologlobe\protectoratehologlobe.object objects\protectorate\objects\protectoratehulagirl\protectoratehulagirl.object objects\protectorate\objects\protectorateincap1\protectorateincap1.object objects\protectorate\objects\protectorateincap2\protectorateincap2.object objects\protectorate\objects\protectorateincap3\protectorateincap3.object objects\protectorate\objects\protectorateincap4\protectorateincap4.object objects\protectorate\objects\protectorateincap5\protectorateincap5.object objects\protectorate\objects\protectorateincap6\protectorateincap6.object objects\protectorate\objects\protectoratelavalamp\protectoratelavalamp.object objects\protectorate\objects\protectoratelight\protectoratelight.object objects\protectorate\objects\protectoratelightrays\protectoratelightrays.object objects\protectorate\objects\protectoratelobbybin\protectoratelobbybin.object objects\protectorate\objects\protectoratelobbychair\protectoratelobbychair.object objects\protectorate\objects\protectoratelobbylockers\protectoratelobbylockers.object objects\protectorate\objects\protectoratelobbylockers\protectoratelobbylockers2.object objects\protectorate\objects\protectoratelobbyplant\protectoratelobbyplant.object objects\protectorate\objects\protectoratelobbyracebanners\protectoratelobbyracebanners.object objects\protectorate\objects\protectoratelobbytable\protectoratelobbytable.object objects\protectorate\objects\protectoratelobbytv\protectoratelobbytv.object objects\protectorate\objects\protectoratelobbyvending\protectoratelobbyvending.object objects\protectorate\objects\protectoratemanipulator\protectoratemanipulator.object objects\protectorate\objects\protectorateportrait1\protectorateportrait1.object objects\protectorate\objects\protectorateportrait2\protectorateportrait2.object objects\protectorate\objects\protectorateportrait3\protectorateportrait3.object objects\protectorate\objects\protectorateportrait4\protectorateportrait4.object objects\protectorate\objects\protectorateportrait5\protectorateportrait5.object objects\protectorate\objects\protectorateposter1\protectorateposter1.object objects\protectorate\objects\protectorateposter2\protectorateposter2.object objects\protectorate\objects\protectorateradio\protectorateradio.object objects\protectorate\objects\protectoraterobe\protectoraterobe.object objects\protectorate\objects\protectorateroofdetail01\protectorateroofdetail01.object objects\protectorate\objects\protectorateroofdetail02\protectorateroofdetail02.object objects\protectorate\objects\protectorateroofdetail03\protectorateroofdetail03.object objects\protectorate\objects\protectorateroofdetail04\protectorateroofdetail04.object objects\protectorate\objects\protectorateroofdetail05\protectorateroofdetail05.object objects\protectorate\objects\protectoraterooftopprop1\protectoraterooftopprop1.object objects\protectorate\objects\protectoraterooftopprop2\protectoraterooftopprop2.object objects\protectorate\objects\protectoraterooftopprop3\protectoraterooftopprop3.object objects\protectorate\objects\protectoraterooftopprop4\protectoraterooftopprop4.object objects\protectorate\objects\protectoraterope\protectoraterope.object objects\protectorate\objects\protectoraterubble\protectoraterubble.object objects\protectorate\objects\protectoratesecuritystation\protectoratesecuritystation.object objects\protectorate\objects\protectorateship\protectorateship.object objects\protectorate\objects\protectoratestorage1\protectoratestorage1.object objects\protectorate\objects\protectoratestorage2\protectoratestorage2.object objects\protectorate\objects\protectoratestorage3\protectoratestorage3.object objects\protectorate\objects\protectoratestorage4\protectoratestorage4.object objects\protectorate\objects\protectoratestorage5\protectoratestorage5.object objects\protectorate\objects\protectoratestorage6\protectoratestorage6.object objects\protectorate\objects\protectoratestorageempty\protectoratestorageempty.object objects\protectorate\objects\protectoratetoolbox\protectoratetoolbox.object objects\protectorate\objects\protectoratewallbanner\protectoratewallbanner.object objects\protectorate\objects\protectoratewastebin\protectoratewastebin.object objects\protectorate\objects\protectoratewaterdispenser\protectoratewaterdispenser.object objects\protectorate\objects\protectoratewatertank\protectoratewatertank.object objects\ship\avianteleporter\avianteleporter.frames objects\ship\avianteleporter\avianteleporter.object objects\ship\avianteleporter\avianteleporter.png objects\ship\avianteleporter\avianteleporterlit.frames objects\ship\avianteleporter\avianteleporterlit.png objects\ship\avianteleportertier0\avianteleportertier0.frames objects\ship\avianteleportertier0\avianteleportertier0.object objects\ship\avianteleportertier0\avianteleportertier0.png objects\ship\floranteleporter\floranteleporter.frames objects\ship\floranteleporter\floranteleporter.object objects\ship\floranteleporter\floranteleporter.png objects\ship\floranteleporter\floranteleporterlit.frames objects\ship\floranteleporter\floranteleporterlit.png objects\ship\floranteleportertier0\floranteleportertier0.frames objects\ship\floranteleportertier0\floranteleportertier0.object objects\ship\floranteleportertier0\floranteleportertier0.png objects\ship\glitchteleporter\glitchteleporter.frames objects\ship\glitchteleporter\glitchteleporter.object objects\ship\glitchteleporter\glitchteleporter.png objects\ship\glitchteleporter\glitchteleporterlit.frames objects\ship\glitchteleporter\glitchteleporterlit.png objects\ship\glitchteleportertier0\glitchteleportertier0.frames objects\ship\glitchteleportertier0\glitchteleportertier0.object objects\ship\glitchteleportertier0\glitchteleportertier0.png objects\ship\humanteleporter\humanteleporter.frames objects\ship\humanteleporter\humanteleporter.object objects\ship\humanteleporter\humanteleporter.png objects\ship\humanteleporter\humanteleporterlit.frames objects\ship\humanteleporter\humanteleporterlit.png objects\ship\humanteleportertier0\humanteleportertier0.frames objects\ship\humanteleportertier0\humanteleportertier0.object objects\ship\humanteleportertier0\humanteleportertier0.png objects\ship\hylotlteleporter\hylotlteleporter.frames objects\ship\hylotlteleporter\hylotlteleporter.object objects\ship\hylotlteleporter\hylotlteleporter.png objects\ship\hylotlteleporter\hylotlteleporterlit.frames objects\ship\hylotlteleporter\hylotlteleporterlit.png objects\ship\hylotlteleportertier0\hylotlteleportertier0.frames objects\ship\hylotlteleportertier0\hylotlteleportertier0.object objects\ship\hylotlteleportertier0\hylotlteleportertier0.png objects\ship\novakidteleporter\novakidteleporter.frames objects\ship\novakidteleporter\novakidteleporter.object objects\ship\novakidteleporter\novakidteleporter.png objects\ship\novakidteleporter\novakidteleporterlit.frames objects\ship\novakidteleporter\novakidteleporterlit.png objects\ship\novakidteleportertier0\novakidteleportertier0.frames objects\ship\novakidteleportertier0\novakidteleportertier0.object objects\ship\novakidteleportertier0\novakidteleportertier0.png objects\ship\teleporter\teleporter.frames objects\ship\teleporter\teleporter.object objects\ship\teleporter\teleporter.png objects\ship\teleporter\teleporterlit.frames objects\ship\teleporter\teleporterlit.png objects\ship\teleportertier0\teleportertier0.frames objects\ship\teleportertier0\teleportertier0.object objects\ship\teleportertier0\teleportertier0.png particles\numerals\numerals2.particle particles\numerals\numerals4.particle particles\numerals\numerals6.particle quests\generated\guard.config quests\generated\merchant.config quests\generated\normal.config quests\generated\villager.config quests\generated\pools\monsterthreats.config quests\generated\pools\pools.config quests\generated\templates\kill_monster.questtemplate quests\generated\templates\new_stock1.questtemplate quests\generated\templates\new_stock2.questtemplate quests\generated\templates\protect.questtemplate quests\outpost\old\outpostmission1.questtemplate quests\scripts\generated\text_generation.lua [NEW] quests\scripts\story\human_mission1.lua quests\story\apex_mission1.questtemplate quests\story\apex_mission2.questtemplate quests\story\avian_mission1.questtemplate quests\story\avian_mission2.questtemplate quests\story\floran_mission1.questtemplate quests\story\floran_mission2.questtemplate quests\story\gateway1.questtemplate quests\story\glitch_mission1.questtemplate quests\story\glitch_mission2.questtemplate quests\story\human_mission1.questtemplate quests\story\human_mission2.questtemplate quests\story\human_mission3.questtemplate quests\story\hylotl_mission1.questtemplate quests\story\hylotl_mission2.questtemplate radiomessages\missions.radiomessages rendering\xboxone.config scripts\spawnpoint.lua scripts\quest\location.lua scripts\quest\manager\spawn_entities.lua scripts\questgen\context.lua scripts\questgen\predicands.lua scripts\questgen\relations.lua [NEW] sfx\objects\musicbox1.ogg [NEW] sfx\objects\musicbox2.ogg [NEW] sfx\objects\musicbox_close.ogg [NEW] sfx\objects\musicbox_open.ogg ships\apex\apext0blocks.png ships\apex\apext1blocks.png ships\avian\aviant0blocks.png ships\avian\aviant1blocks.png ships\floran\florant0blocks.png ships\floran\florant1blocks.png ships\glitch\glitcht0blocks.png ships\glitch\glitcht1blocks.png ships\human\humant0blocks.png ships\human\humant1blocks.png ships\hylotl\hylotlt0blocks.png ships\hylotl\hylotlt1blocks.png ships\novakid\novakidt0blocks.png ships\novakid\novakidt1blocks.png stats\effects\timefreeze\timefreeze.animation DIFFS ----- dungeons\avian\avianvillage\avianvillage.dungeon 2170a2171,2214 > // CLUE OBJECTS > > { > "value" : [10, 10, 0, 255], > "comment" : "kluexmap1", > "brush" : [ [ "clear" ], [ "object", "kluexmap1" ] ] > }, > > { > "value" : [0, 10, 10, 255], > "comment" : "kluexmural1", > "brush" : [ [ "clear" ], [ "object", "kluexmural1" ] ] > }, > > { > "value" : [10, 0, 10, 255], > "comment" : "kluexmural2", > "brush" : [ [ "clear" ], [ "object", "kluexmural2" ] ] > }, > > { > "value" : [20, 20, 0, 255], > "comment" : "kluexstatue1 facing left", > "brush" : [ [ "clear" ], [ "object", "kluexstatue1", { "direction" : "left" } ] ] > }, > > { > "value" : [25, 25, 0, 255], > "comment" : "kluexstatue1 facing right", > "brush" : [ [ "clear" ], [ "object", "kluexstatue1", { "direction" : "right" } ] ] > }, > > { > "value" : [0, 20, 20, 255], > "comment" : "kluexstatue2 facing left", > "brush" : [ [ "clear" ], [ "object", "kluexstatue2", { "direction" : "left" } ] ] > }, > > { > "value" : [0, 25, 25, 255], > "comment" : "kluexstatue2 facing right", > "brush" : [ [ "clear" ], [ "object", "kluexstatue2", { "direction" : "right" } ] ] > }, > 2435c2479 < [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "7a", "7b", "8", "9", "19a", "19b", "20a", "20b" ] ], --- > [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ], 2438c2482,2483 < "def" : [ "image", [ "1.png", "1a-objects.png" ] ] --- > "def" : [ "image", [ "1.png", "1a-objects.png" ] ], > "chance" : 1 2443c2488 < [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "7a", "7b", "8", "9", "19a", "19b", "20a", "20b" ] ], --- > [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ], 2446c2491,2492 < "def" : [ "image", [ "1.png", "1b-objects.png" ] ] --- > "def" : [ "image", [ "1.png", "1b-objects.png" ] ], > "chance" : 1 2451c2497 < [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "7a", "7b", "8", "9", "19a", "19b", "20a", "20b" ] ], --- > [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ], 2454c2500,2501 < "def" : [ "image", [ "2.png", "2a-objects.png" ] ] --- > "def" : [ "image", [ "2.png", "2a-objects.png" ] ], > "chance" : 1 2459c2506 < [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "7a", "7b", "8", "9", "19a", "19b", "20a", "20b" ] ], --- > [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ], 2462c2509,2510 < "def" : [ "image", [ "2.png", "2b-objects.png" ] ] --- > "def" : [ "image", [ "2.png", "2b-objects.png" ] ], > "chance" : 1 2467c2515 < [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "7a", "7b", "8", "9", "19a", "19b", "20a", "20b" ] ], --- > [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ], 2470c2518,2519 < "def" : [ "image", [ "3.png", "3a-objects.png" ] ] --- > "def" : [ "image", [ "3.png", "3a-objects.png" ] ], > "chance" : 1 2475c2524 < [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "7a", "7b", "8", "9", "19a", "19b", "20a", "20b" ] ], --- > [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ], 2478c2527,2528 < "def" : [ "image", [ "3.png", "3b-objects.png" ] ] --- > "def" : [ "image", [ "3.png", "3b-objects.png" ] ], > "chance" : 1 2486c2536,2537 < "def" : [ "image", [ "4.png", "4-objects.png" ] ] --- > "def" : [ "image", [ "4.png", "4-objects.png" ] ], > "chance" : 1 2491,2492c2542,2552 < [ "maxSpawnCount", [1] ], < [ "doNotConnectToPart", [ "villagecenter1", "1a", "1b", "2a", "2b", "3a", "3b", "5", "6", "7a", "7b", "8", "9", "19a", "19b", "20a", "20b" ] ] --- > [ "doNotCombineWith", [ "5", "5-clue3" ] ], > [ "doNotConnectToPart", [ "villagecenter1", "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "6", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ] > ], > "def" : [ "image", [ "5.png", "5-objects.png" ] ], > "chance" : 0.2 > }, > { > "name" : "5-clue3", > "rules" : [ > [ "doNotCombineWith", [ "5", "5-clue3", "8-clue4", "9-clue1", "19b-clue5" ] ], > [ "doNotConnectToPart", [ "villagecenter1", "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "6", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ] 2494c2554,2555 < "def" : [ "image", [ "5.png", "5-objects.png" ] ] --- > "def" : [ "image", [ "5.png", "5-objects-clue3.png" ] ], > "chance" : 1 2500c2561 < [ "doNotConnectToPart", [ "villagecenter1", "4", "5", "6", "10", "11", "12", "13", "14", "15", "16", "17", "18", "stairs1", "stairs2" ] ] --- > [ "doNotConnectToPart", [ "villagecenter1", "4", "5", "5-clue3", "6", "10", "11", "12", "13", "14", "15", "16", "17", "18", "stairs1", "stairs2" ] ] 2502c2563,2564 < "def" : [ "image", [ "6.png", "6-objects.png" ] ] --- > "def" : [ "image", [ "6.png", "6-objects.png" ] ], > "chance" : 1 2507c2569 < [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "7a", "7b", "8", "9", "19a", "19b", "20a", "20b" ] ], --- > [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ], 2510c2572,2573 < "def" : [ "image", [ "7.png", "7a-objects.png" ] ] --- > "def" : [ "image", [ "7.png", "7a-objects.png" ] ], > "chance" : 1 2515c2578 < [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "7a", "7b", "8", "9", "19a", "19b", "20a", "20b" ] ], --- > [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ], 2518c2581,2582 < "def" : [ "image", [ "7.png", "7b-objects.png" ] ] --- > "def" : [ "image", [ "7.png", "7b-objects.png" ] ], > "chance" : 1 2523,2524c2587,2597 < [ "maxSpawnCount", [1] ], < [ "doNotConnectToPart", [ "villagecenter1", "1a", "1b", "2a", "2b", "3a", "3b", "5", "7a", "7b", "8", "9", "19a", "19b", "20a", "20b" ] ] --- > [ "doNotCombineWith", [ "8", "8-clue4" ] ], > [ "doNotConnectToPart", [ "villagecenter1", "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ] > ], > "def" : [ "image", [ "8.png", "8-objects.png" ] ], > "chance" : 0.2 > }, > { > "name" : "8-clue4", > "rules" : [ > [ "doNotCombineWith", [ "8", "5-clue3", "8-clue4", "9-clue1", "19b-clue5" ] ], > [ "doNotConnectToPart", [ "villagecenter1", "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ] 2526c2599,2600 < "def" : [ "image", [ "8.png", "8-objects.png" ] ] --- > "def" : [ "image", [ "8.png", "8-objects-clue4.png" ] ], > "chance" : 1 2531,2532c2605,2615 < [ "maxSpawnCount", [1] ], < [ "doNotConnectToPart", [ "villagecenter1", "1a", "1b", "2a", "2b", "3a", "3b", "5", "7a", "7b", "8", "9", "19a", "19b", "20a", "20b" ] ] --- > [ "doNotCombineWith", [ "9", "9-clue1" ] ], > [ "doNotConnectToPart", [ "villagecenter1", "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ] > ], > "def" : [ "image", [ "9.png", "9-objects.png" ] ], > "chance" : 0.2 > }, > { > "name" : "9-clue1", > "rules" : [ > [ "doNotCombineWith", [ "9", "5-clue3", "8-clue4", "9-clue1", "19b-clue5" ] ], > [ "doNotConnectToPart", [ "villagecenter1", "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ] 2534c2617,2618 < "def" : [ "image", [ "9.png", "9-objects.png" ] ] --- > "def" : [ "image", [ "9.png", "9-objects-clue1.png" ] ], > "chance" : 1 2542c2626,2627 < "def" : [ "image", [ "10.png", "10-objects.png" ] ] --- > "def" : [ "image", [ "10.png", "10-objects.png" ] ], > "chance" : 1 2550c2635,2636 < "def" : [ "image", [ "11.png", "11-objects.png" ] ] --- > "def" : [ "image", [ "11.png", "11-objects.png" ] ], > "chance" : 1 2558c2644,2645 < "def" : [ "image", [ "12.png", "12-objects.png" ] ] --- > "def" : [ "image", [ "12.png", "12-objects.png" ] ], > "chance" : 1 2566c2653,2654 < "def" : [ "image", [ "12.png", "13-objects.png" ] ] --- > "def" : [ "image", [ "12.png", "13-objects.png" ] ], > "chance" : 1 2574c2662,2663 < "def" : [ "image", [ "14.png", "14-objects.png" ] ] --- > "def" : [ "image", [ "14.png", "14-objects.png" ] ], > "chance" : 1 2582c2671,2672 < "def" : [ "image", [ "15.png", "15-objects.png" ] ] --- > "def" : [ "image", [ "15.png", "15-objects.png" ] ], > "chance" : 1 2590c2680,2681 < "def" : [ "image", [ "15.png", "16-objects.png" ] ] --- > "def" : [ "image", [ "15.png", "16-objects.png" ] ], > "chance" : 1 2598c2689,2690 < "def" : [ "image", [ "15.png", "17-objects.png" ] ] --- > "def" : [ "image", [ "15.png", "17-objects.png" ] ], > "chance" : 1 2606c2698,2699 < "def" : [ "image", [ "12.png", "18-objects.png" ] ] --- > "def" : [ "image", [ "12.png", "18-objects.png" ] ], > "chance" : 1 2611,2612c2704,2705 < [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "7a", "7b", "8", "9", "19a", "19b", "20a", "20b" ] ], < [ "doNotCombineWith", [ "19a", "19b" ] ] --- > [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ], > [ "doNotCombineWith", [ "19a", "19b", "19b-clue5" ] ] 2614c2707,2708 < "def" : [ "image", [ "19.png", "19a-objects.png" ] ] --- > "def" : [ "image", [ "19.png", "19a-objects.png" ] ], > "chance" : 0.2 2619,2620c2713,2723 < [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "7a", "7b", "8", "9", "19a", "19b", "20a", "20b" ] ], < [ "doNotCombineWith", [ "19a", "19b" ] ] --- > [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ], > [ "doNotCombineWith", [ "19a", "19b", "19b-clue5" ] ] > ], > "def" : [ "image", [ "19.png", "19b-objects.png" ] ], > "chance" : 0.2 > }, > { > "name" : "19b-clue5", > "rules" : [ > [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ], > [ "doNotCombineWith", [ "19a", "19b", "5-clue3", "8-clue4", "9-clue1", "19b-clue5" ] ] 2622c2725,2726 < "def" : [ "image", [ "19.png", "19b-objects.png" ] ] --- > "def" : [ "image", [ "19.png", "19b-objects-clue5.png" ] ], > "chance" : 1 2627c2731 < [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "7a", "7b", "8", "9", "19a", "19b", "20a", "20b" ] ], --- > [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ], 2630c2734,2735 < "def" : [ "image", [ "20.png", "20a-objects.png" ] ] --- > "def" : [ "image", [ "20.png", "20a-objects.png" ] ], > "chance" : 1 2635c2740 < [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "7a", "7b", "8", "9", "19a", "19b", "20a", "20b" ] ], --- > [ "doNotConnectToPart", [ "1a", "1b", "2a", "2b", "3a", "3b", "5", "5-clue3", "7a", "7b", "8", "8-clue4", "9", "9-clue1", "19a", "19b", "19b-clue5", "20a", "20b" ] ], 2638c2743,2744 < "def" : [ "image", [ "20.png", "20b-objects.png" ] ] --- > "def" : [ "image", [ "20.png", "20b-objects.png" ] ], > "chance" : 1 2646c2752,2753 < "def" : [ "image", [ "stairs1.png", "stairs1-objects.png" ] ] --- > "def" : [ "image", [ "stairs1.png", "stairs1-objects.png" ] ], > "chance" : 1 2654c2761,2762 < "def" : [ "image", [ "stairs2.png", "stairs2-objects.png" ] ] --- > "def" : [ "image", [ "stairs2.png", "stairs2-objects.png" ] ], > "chance" : 1 dungeons\glitch\glitchsewer\glitchsewer.dungeon 2432c2432 < "comment" : "glitchspider npc", --- > "comment" : "oculob npc", 2436c2436 < "typeName" : "glitchspider" --- > "typeName" : "oculob" 2443c2443 < "comment" : "sewerfly npc", --- > "comment" : "agrobat npc", 2447c2447 < "typeName" : "sewerfly" --- > "typeName" : "agrobat" dungeons\missions\apexmissions\apexmission1.json [TMX file differences are left out for huge size.] dungeons\missions\avianmissions\avianmission1.json [TMX file differences are left out for huge size.] dungeons\missions\floranmissions\floranmission1.dungeon 1185a1186,1191 > "value" : [252, 140, 132, 255], > "comment" : "arkteleporter", > "brush" : [ [ "clear" ], [ "object", "arkteleporter" ] ] > }, > > { dungeons\missions\glitchmissions\glitchmission1.json [TMX file differences are left out for huge size.] dungeons\missions\hylotlmissions\hylotlmission1.json [TMX file differences are left out for huge size.] dungeons\other\outpost\outpost.json [TMX file differences are left out for huge size.] interface\warping\arkteleporter.config 7c7 < "name" : "Back to Ark", --- > "name" : "Back to the Ark", interface\windowconfig\questlog.config 1a2,4 > "trackLabel" : "Track Quest", > "untrackLabel" : "Stop Tracking", > 42c45 < "btnSetAsCurrent" : { --- > "btnToggleTracking" : { 44,45c47,48 < "base" : "/interface/quests/questlog/setAsCurrentUp.png", < "hover" : "/interface/quests/questlog/setAsCurrentOver.png", --- > "base" : "/interface/quests/questlog/toggleTrackingUp.png", > "hover" : "/interface/quests/questlog/toggleTrackingOver.png", 47c50 < "caption" : "Set as current" --- > "caption" : "Toggle Tracking" 122,155c125,222 < "questList" : { < "type" : "list", < "schema" : { < "selectedBG" : "/interface/quests/questlog/entry_selected.png", < "unselectedBG" : "/interface/quests/questlog/entry_bg.png", < "spacing" : [0, 1], < "memberSize" : [150, 19], < "listTemplate" : { < "background" : { < "type" : "image", < "file" : "/interface/quests/questlog/entry_bg.png", < "position" : [1, 0], < "zlevel" : -1 < }, < "imageNew" : { < "type" : "image", < "file" : "/interface/quests/questlog/new.png", < "position" : [142, 0] < }, < "labelQuestEntry" : { < "type" : "label", < "position" : [82, 9], < "hAnchor" : "mid", < "vAnchor" : "mid", < "wrapWidth" : 100, < "lineSpacing" : 1.0, < "value" : " Secret of the Avian Troll Master", < "color" : "white" < }, < "imagePortrait" : { < "type" : "image", < "scale" : 1.0, < "offset" : [25, 10], < "position" : [1, 0] --- > "verticalLayout" : { > "type" : "layout", > "layoutType" : "vertical", > "vAnchor" : "top", > "hAnchor" : "mid", > "fillDown" : true, > "spacing" : 3, > "children" : { > "mainQuestHeader" : { > "type" : "label", > "hAnchor" : "left", > "vAnchor" : "mid", > "size" : [100, 15], > "fontSize" : 9, > "value" : "MAIN QUESTS" > }, > "mainQuestList" : { > "type" : "list", > "schema" : { > "selectedBG" : "/interface/quests/questlog/entry_selected.png", > "unselectedBG" : "/interface/quests/questlog/entry_bg.png", > "spacing" : [0, 1], > "memberSize" : [150, 19], > "listTemplate" : { > "background" : { > "type" : "image", > "file" : "/interface/quests/questlog/entry_bg.png", > "position" : [1, 0], > "zlevel" : -1 > }, > "imageNew" : { > "type" : "image", > "file" : "/interface/quests/questlog/new.png", > "position" : [142, 0] > }, > "labelQuestEntry" : { > "type" : "label", > "position" : [82, 9], > "hAnchor" : "mid", > "vAnchor" : "mid", > "wrapWidth" : 100, > "lineSpacing" : 1.0, > "value" : " Secret of the Avian Troll Master", > "color" : "white" > }, > "imagePortrait" : { > "type" : "image", > "scale" : 1.0, > "offset" : [25, 10], > "position" : [1, 0] > } > } > } > }, > "sideQuestHeader" : { > "type" : "label", > "hAnchor" : "left", > "vAnchor" : "mid", > "size" : [100, 15], > "fontSize" : 9, > "value" : "SIDE QUESTS" > }, > "sideQuestList" : { > "type" : "list", > "schema" : { > "selectedBG" : "/interface/quests/questlog/entry_selected.png", > "unselectedBG" : "/interface/quests/questlog/entry_bg.png", > "spacing" : [0, 1], > "memberSize" : [150, 19], > "listTemplate" : { > "background" : { > "type" : "image", > "file" : "/interface/quests/questlog/entry_bg.png", > "position" : [1, 0], > "zlevel" : -1 > }, > "imageNew" : { > "type" : "image", > "file" : "/interface/quests/questlog/new.png", > "position" : [142, 0] > }, > "labelQuestEntry" : { > "type" : "label", > "position" : [82, 9], > "hAnchor" : "mid", > "vAnchor" : "mid", > "wrapWidth" : 100, > "lineSpacing" : 1.0, > "value" : " Secret of the Avian Troll Master", > "color" : "white" > }, > "imagePortrait" : { > "type" : "image", > "scale" : 1.0, > "offset" : [25, 10], > "position" : [1, 0] > } > } items\active\weapons\melee\broadsword\timepierce.animation 107c107 < "emissionRate" : 50, --- > "emissionRate" : 20, 110d109 < { "particle" : "numerals1"}, 112d110 < { "particle" : "numerals3"}, 114d111 < { "particle" : "numerals5"}, 116,121c113 < { "particle" : "numerals7"}, < { "particle" : "numerals8"}, < { "particle" : "numerals9"}, < { "particle" : "numerals10"}, < { "particle" : "numerals11"}, < { "particle" : "numerals12"} --- > { "particle" : "numerals8"} items\armors\apex\apexcommander\apexcommander.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\apex\apexcommander\apexcommander.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\apex\apexnavy\apexnavy.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\apex\apexnavy\apexnavy.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\apex\apexofficer\apexofficer.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\apex\apexofficer\apexofficer.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\apex\apexspecialist\apexspecialist.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\apex\apexspecialist\apexspecialist.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\avian\avian-adventurer\avianadventurer.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\avian\avian-adventurer\avianadventurer.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\avian\avian-commoner\aviancommoner.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\avian\avian-commoner\aviancommoner.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\avian\avian-fancy\avianfancy.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\avian\avian-fancy\avianfancy.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\avian\avian-worker\avianworker.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\avian\avian-worker\avianworker.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\floran\floran-furnivour\floranfurnivor.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\floran\floran-furnivour\floranfurnivor.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\floran\floran-hunter\floranhunter.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\floran\floran-hunter\floranhunter.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\floran\floran-leaf\floranleaf.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\floran\floran-leaf\floranleaf.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\floran\floran-pelt\floranpelt.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\floran\floran-pelt\floranpelt.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\floran\floran-survivalist\floransurvivalist.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\floran\floran-survivalist\floransurvivalist.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\glitch\glitch-craftsmen\craftsmen.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\glitch\glitch-craftsmen\craftsmen.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\glitch\glitch-merchant\merchant.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\glitch\glitch-merchant\merchant.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\glitch\glitch-noble\noble.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\glitch\glitch-noble\noble.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\glitch\glitch-peasant\peasant.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\glitch\glitch-peasant\peasant.legs 15,30c15 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\human\human-concept\concept.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\human\human-concept\concept.legs 15,30c15 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\human\human-cool\cool.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\human\human-cool\cool.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\human\human-sweatervest\sweatervest.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\human\human-sweatervest\sweatervest.legs 15,30c15 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\human\human-workout\workout.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\human\human-workout\workout.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\hylotl\hylotl-kimono\kimono.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\hylotl\hylotl-kimono\kimono.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\hylotl\hylotl-monk\monk.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\hylotl\hylotl-monk\monk.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\hylotl\hylotl-traditional\traditional.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\hylotl\hylotl-traditional\traditional.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\hylotl\hylotl-trainee\trainee.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\hylotl\hylotl-trainee\trainee.legs 14,29c14 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\novakid\novakidfancy\novakidfancy.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\novakid\novakidfancy\novakidfancy.legs 15,30c15 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\novakid\novakidjacket\novakidjacket.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\novakid\novakidjacket\novakidjacket.legs 15,30c15 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\novakid\novakidsuspenders\novakidsuspenders.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\novakid\novakidsuspenders\novakidsuspenders.legs 15,30c15 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], items\armors\novakid\novakidwaistcoat\novakidwaistcoat.chest 23,38c23 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.35 < }, < < { < "stat" : "protection", < "amount" : 2 < }, < < { < "stat" : "maxHealth", < "amount" : 3 < } < ], --- > "statusEffects" : [], items\armors\novakid\novakidwaistcoat\novakidwaistcoat.legs 15,30c15 < "statusEffects" : [ < { < "stat" : "powerMultiplier", < "baseMultiplier" : 1.15 < }, < < { < "stat" : "protection", < "amount" : 1 < }, < < { < "stat" : "maxHealth", < "amount" : 2 < } < ], --- > "statusEffects" : [], npcs\story\esther.npctype 28c28 < "turnInQuests" : [ "gateway1", "human_mission3", "floran_mission1", "hylotl_mission1", "avian_mission1", "apex_mission1", "glitch_mission1" ], --- > "turnInQuests" : [ "gateway1", "human_mission1", "floran_mission1", "hylotl_mission1", "avian_mission1", "apex_mission1", "glitch_mission1" ], objects\clues\floran\floranspinneret\floranspinneret.object 23a24,25 > "imagePosition" : [-16, 0], > 25a28,33 > > "spaces" : [ [-2,0], [-1,0], [0,0], [1,0], [-2,1], [-1,1], [0,1], [1,1], [-1,2], [0,2], [-1,3], [0,3] ], > "anchors" : [ "bottom" ] > }, > { > "image" : "floranspinneret.png:", 26a35,36 > > "direction" : "right", 28c38 < "spaceScan" : 0.1, --- > "spaces" : [ [-2,0], [-1,0], [0,0], [1,0], [-2,1], [-1,1], [0,1], [1,1], [-1,2], [0,2], [-1,3], [0,3] ], objects\clues\floran\floranwebbing\floranwebbing.object 4c4 < "rarity" : "Common", --- > "rarity" : "Rare", 6,7c6,7 < "price" : 70, < --- > "price" : 200, > "printable" : false, 23c23 < "dualImage" : "floranwebbing.png:", --- > "image" : "floranwebbing.png:", 25,26c25,27 < "frames" : 1, < "animationCycle" : 0.5, --- > > "direction" : "left", > "flipImages" : true, 31d31 < 33c33 < "dualImage" : "floranwebbing.png:", --- > "image" : "floranwebbing.png:", 35,36c35,36 < "frames" : 1, < "animationCycle" : 0.5, --- > > "direction" : "right", objects\clues\hylotl\hylotlmusicbox\hylotlmusicbox.frames 7c7 < [ "default.0", "default.1", "default.2", "default.3", "default.4" ] --- > [ "default.off", "default.1", "default.2", "default.3", "default.4" ] 12c12,13 < "default.default" : "default.0" --- > "default.default" : "default.1", > "default.on" : "default.1" objects\clues\hylotl\hylotlmusicbox\hylotlmusicbox.object 11a12,13 > "lightColor" : [0, 0, 0], > 25c27 < "image" : "hylotlmusicbox.png:.", --- > "image" : "hylotlmusicbox.png:.off", 27,28d28 < "frames" : 5, < "animationCycle" : 0.5, 37c37 < "image" : "hylotlmusicbox.png:.", --- > "image" : "hylotlmusicbox.png:.off", 39,40d38 < "frames" : 5, < "animationCycle" : 0.5, 47c45,65 < ] --- > ], > > "scripts" : [ > "/objects/wired/light/light.lua" > ], > > "animation" : "hylotlmusicbox.animation", > "animationPosition" : [-8, 0], > "animationParts" : { > "musicbox" : "hylotlmusicbox.png" > }, > "animationCustom" : { > "sounds" : { > "on" : [ "/sfx/objects/musicbox_open.ogg" ], > "off" : [ "/sfx/objects/musicbox_close.ogg" ] > } > }, > > "defaultLightState" : false, > > "soundEffect" : "/sfx/objects/musicbox2.ogg" objects\clues\hylotl\librarycodex\librarycodex.object 3c3 < "colonyTags" : ["hylotl","hylotlvillage","pretty"], --- > "colonyTags" : ["hylotl","hylotlvillage"], 24c24 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-8, 0], 29c29 < "spaceScan" : 0.1, --- > "spaces" : [ [-1,0], [0,0], [1,0], [-1,1], [0,1], [1,1], [-1,2], [0,2], [1,2] ], 34c34 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-8, 0], 38c38 < "spaceScan" : 0.1, --- > "spaces" : [ [-1,0], [0,0], [1,0], [-1,1], [0,1], [1,1], [-1,2], [0,2], [1,2] ], objects\mission\lunarquestturnin\drillmachine.lua 4c4 < output(true) --- > output(false) 11,14d10 < function state() < return storage.state < end < 17,18d12 < < world.sendEntityMessage(args.sourceId, "drillInteract") objects\outpost\shipyardcaptain\shipyardcaptain.object 41,44d40 < < "offeredQuests" : [ < "human_mission2" < ], 50,52c46 < "shipupgrade5", < "human_mission1", < "human_mission2" --- > "shipupgrade5" 73c67,72 < } --- > }, > > "scripts" : [ > "shipyardcaptain.lua" > ], > "scriptDelta" : 0, 75c74,76 < } --- > "startErchiusMission" : "I can repair that ship, but I'm going to need some materials. It's gonna take 20 ^orange;erchius crystals^white; to get it running. You better get yourself to the ^green;Erchius Mining Facility.^white;", > "turnInErchius" : "Perfect! These'll do the job. I'll go ahead and fix up your ship now." > } \ No newline at end of file objects\protectorate\objects\protectorateamp\protectorateamp.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratebeamaxe\protectoratebeamaxe.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratebench\protectoratebench.object 8a9 > "printable" : false, objects\protectorate\objects\protectoratebookcabinet\protectoratebookcabinet.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratebooks\protectoratebooks.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratebooks2\protectoratebooks2.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratebrokendisplay1\protectoratebrokendisplay1.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratebrokendisplay2\protectoratebrokendisplay2.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratebrokenlight\protectoratebrokenlight.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratebrokenportrait1\protectoratebrokenportrait1.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratebrokenportrait2\protectoratebrokenportrait2.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratebrokenportrait3\protectoratebrokenportrait3.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratebrokenportrait4\protectoratebrokenportrait4.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratebrokenportrait5\protectoratebrokenportrait5.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratebrokenvending\protectoratebrokenvending.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratecactiflowerpot\protectoratecactiflowerpot.object 4a5 > "printable" : false, objects\protectorate\objects\protectorateclock\protectorateclock.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratedoor\protectoratedoor.object 3a4 > "printable" : false, objects\protectorate\objects\protectoratedormbed\protectoratedormbed.object 8a9 > "printable" : false, objects\protectorate\objects\protectoratedormmirror\protectoratedormmirror.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratedormtoilet\protectoratedormtoilet.object 8a9 > "printable" : false, objects\protectorate\objects\protectoratedormtoiletroll\protectoratedormtoiletroll.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateextinguisher\protectorateextinguisher.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratefallenrope\protectoratefallenrope.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratefbannertorn1\protectoratefbannertorn1.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratefbannertorn2\protectoratefbannertorn2.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratefigures\protectoratefigures.object 6a7 > "printable" : false, objects\protectorate\objects\protectorategamesconsole\protectorategamesconsole.object 5a6 > "printable" : false, objects\protectorate\objects\protectorategardenbench\protectorategardenbench.object 8a9 > "printable" : false, objects\protectorate\objects\protectorategardentree\protectorategardentree.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateguidelines\protectorateguidelines.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateguitar\protectorateguitar.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratehallcurtain\protectoratehallcurtain.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratehallcurtain2\protectoratehallcurtain2.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratehalllight\protectoratehalllight.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratehologlobe\protectoratehologlobe.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratehulagirl\protectoratehulagirl.object 4a5 > "printable" : false, objects\protectorate\objects\protectorateincap1\protectorateincap1.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateincap2\protectorateincap2.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateincap3\protectorateincap3.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateincap4\protectorateincap4.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateincap5\protectorateincap5.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateincap6\protectorateincap6.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratelavalamp\protectoratelavalamp.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratelight\protectoratelight.object 6a7 > "printable" : false, objects\protectorate\objects\protectoratelightrays\protectoratelightrays.object 6a7 > "printable" : false, objects\protectorate\objects\protectoratelobbybin\protectoratelobbybin.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratelobbychair\protectoratelobbychair.object 8a9 > "printable" : false, objects\protectorate\objects\protectoratelobbylockers\protectoratelobbylockers.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratelobbylockers\protectoratelobbylockers2.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratelobbyplant\protectoratelobbyplant.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratelobbyracebanners\protectoratelobbyracebanners.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratelobbytable\protectoratelobbytable.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratelobbytv\protectoratelobbytv.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratelobbyvending\protectoratelobbyvending.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratemanipulator\protectoratemanipulator.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateportrait1\protectorateportrait1.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateportrait2\protectorateportrait2.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateportrait3\protectorateportrait3.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateportrait4\protectorateportrait4.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateportrait5\protectorateportrait5.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateposter1\protectorateposter1.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateposter2\protectorateposter2.object 6a7 > "printable" : false, objects\protectorate\objects\protectorateradio\protectorateradio.object 5a6 > "printable" : false, objects\protectorate\objects\protectoraterobe\protectoraterobe.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateroofdetail01\protectorateroofdetail01.object 6a7 > "printable" : false, objects\protectorate\objects\protectorateroofdetail02\protectorateroofdetail02.object 6a7 > "printable" : false, objects\protectorate\objects\protectorateroofdetail03\protectorateroofdetail03.object 6a7 > "printable" : false, objects\protectorate\objects\protectorateroofdetail04\protectorateroofdetail04.object 6a7 > "printable" : false, objects\protectorate\objects\protectorateroofdetail05\protectorateroofdetail05.object 6a7 > "printable" : false, objects\protectorate\objects\protectoraterooftopprop1\protectoraterooftopprop1.object 6a7 > "printable" : false, objects\protectorate\objects\protectoraterooftopprop2\protectoraterooftopprop2.object 6a7 > "printable" : false, objects\protectorate\objects\protectoraterooftopprop3\protectoraterooftopprop3.object 6a7 > "printable" : false, objects\protectorate\objects\protectoraterooftopprop4\protectoraterooftopprop4.object 6a7 > "printable" : false, objects\protectorate\objects\protectoraterope\protectoraterope.object 5a6 > "printable" : false, objects\protectorate\objects\protectoraterubble\protectoraterubble.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratesecuritystation\protectoratesecuritystation.object 5a6 > "printable" : false, objects\protectorate\objects\protectorateship\protectorateship.object 6a7 > "printable" : false, objects\protectorate\objects\protectoratestorage1\protectoratestorage1.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratestorage2\protectoratestorage2.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratestorage3\protectoratestorage3.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratestorage4\protectoratestorage4.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratestorage5\protectoratestorage5.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratestorage6\protectoratestorage6.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratestorageempty\protectoratestorageempty.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratetoolbox\protectoratetoolbox.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratewallbanner\protectoratewallbanner.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratewastebin\protectoratewastebin.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratewaterdispenser\protectoratewaterdispenser.object 5a6 > "printable" : false, objects\protectorate\objects\protectoratewatertank\protectoratewatertank.object 6a7 > "printable" : false, objects\ship\avianteleporter\avianteleporter.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\avianteleporter\avianteleporter.object 23a24,51 > "particleEmitter" : { > "emissionRate" : 3, > "emissionVariance" : 0.5, > > "particle" : { > "type" : "ember", > "position" : [-0.5, 5], > "size" : 1.0, > "color" : [64, 190, 255, 255], > "light" : [50, 50, 150], > "fade" : 0.9, > "destructionAction" : "shrink", > "destructionTime" : 0.5, > "initialVelocity" : [0.0, 0.0], > "finalVelocity" : [0.0, 0.0], > "approach" : [0, 1], > "timeToLive" : 1.5, > "layer" : "middle" > }, > > "particleVariance" : { > "initialVelocity" : [0, 5], > "finalVelocity" : [0, 1], > "position" : [1.5, 0], > "size" : 0.5 > } > }, > 32c60 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-32, 0], 38c66,67 < "collision" : "solid" --- > "collision" : "solid", > "collisionSpaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0], [-2, 9], [-1, 9], [0, 9], [1, 9] ] objects\ship\avianteleporter\avianteleporterlit.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\avianteleportertier0\avianteleportertier0.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\avianteleportertier0\avianteleportertier0.object 24c24 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-32, 0], 30c30,31 < "collision" : "solid" --- > "collision" : "solid", > "collisionSpaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0], [-2, 9], [-1, 9], [0, 9], [1, 9] ] objects\ship\floranteleporter\floranteleporter.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\floranteleporter\floranteleporter.object 23a24,51 > "particleEmitter" : { > "emissionRate" : 3, > "emissionVariance" : 0.5, > > "particle" : { > "type" : "ember", > "position" : [-0.5, 5], > "size" : 1.0, > "color" : [64, 190, 255, 255], > "light" : [50, 50, 150], > "fade" : 0.9, > "destructionAction" : "shrink", > "destructionTime" : 0.5, > "initialVelocity" : [0.0, 0.0], > "finalVelocity" : [0.0, 0.0], > "approach" : [0, 1], > "timeToLive" : 1.5, > "layer" : "middle" > }, > > "particleVariance" : { > "initialVelocity" : [0, 5], > "finalVelocity" : [0, 1], > "position" : [1.5, 0], > "size" : 0.5 > } > }, > 32c60 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-32, 0], 38c66,67 < "collision" : "solid" --- > "collision" : "solid", > "collisionSpaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0], [-2, 9], [-1, 9], [0, 9], [1, 9] ] objects\ship\floranteleporter\floranteleporterlit.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\floranteleportertier0\floranteleportertier0.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\floranteleportertier0\floranteleportertier0.object 24c24 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-32, 0], 30c30,31 < "collision" : "solid" --- > "collision" : "solid", > "collisionSpaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0], [-2, 9], [-1, 9], [0, 9], [1, 9] ] objects\ship\glitchteleporter\glitchteleporter.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\glitchteleporter\glitchteleporter.object 23a24,51 > "particleEmitter" : { > "emissionRate" : 3, > "emissionVariance" : 0.5, > > "particle" : { > "type" : "ember", > "position" : [-0.5, 5], > "size" : 1.0, > "color" : [64, 190, 255, 255], > "light" : [50, 50, 150], > "fade" : 0.9, > "destructionAction" : "shrink", > "destructionTime" : 0.5, > "initialVelocity" : [0.0, 0.0], > "finalVelocity" : [0.0, 0.0], > "approach" : [0, 1], > "timeToLive" : 1.5, > "layer" : "middle" > }, > > "particleVariance" : { > "initialVelocity" : [0, 5], > "finalVelocity" : [0, 1], > "position" : [1.5, 0], > "size" : 0.5 > } > }, > 32c60 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-32, 0], 38c66,67 < "collision" : "solid" --- > "collision" : "solid", > "collisionSpaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0], [-2, 9], [-1, 9], [0, 9], [1, 9] ] objects\ship\glitchteleporter\glitchteleporterlit.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\glitchteleportertier0\glitchteleportertier0.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\glitchteleportertier0\glitchteleportertier0.object 24c24 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-32, 0], 30c30,31 < "collision" : "solid" --- > "collision" : "solid", > "collisionSpaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0], [-2, 9], [-1, 9], [0, 9], [1, 9] ] objects\ship\humanteleporter\humanteleporter.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\humanteleporter\humanteleporter.object 23a24,51 > "particleEmitter" : { > "emissionRate" : 3, > "emissionVariance" : 0.5, > > "particle" : { > "type" : "ember", > "position" : [-0.5, 5], > "size" : 1.0, > "color" : [64, 190, 255, 255], > "light" : [50, 50, 150], > "fade" : 0.9, > "destructionAction" : "shrink", > "destructionTime" : 0.5, > "initialVelocity" : [0.0, 0.0], > "finalVelocity" : [0.0, 0.0], > "approach" : [0, 1], > "timeToLive" : 1.5, > "layer" : "middle" > }, > > "particleVariance" : { > "initialVelocity" : [0, 5], > "finalVelocity" : [0, 1], > "position" : [1.5, 0], > "size" : 0.5 > } > }, > 32c60 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-32, 0], 38c66,67 < "collision" : "solid" --- > "collision" : "solid", > "collisionSpaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0] ] objects\ship\humanteleporter\humanteleporterlit.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\humanteleportertier0\humanteleportertier0.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\humanteleportertier0\humanteleportertier0.object 24c24 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-32, 0], 30c30,31 < "collision" : "solid" --- > "collision" : "solid", > "collisionSpaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0], [-2, 9], [-1, 9], [0, 9], [1, 9] ] objects\ship\hylotlteleporter\hylotlteleporter.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\hylotlteleporter\hylotlteleporter.object 23a24,51 > "particleEmitter" : { > "emissionRate" : 3, > "emissionVariance" : 0.5, > > "particle" : { > "type" : "ember", > "position" : [-0.5, 5], > "size" : 1.0, > "color" : [64, 190, 255, 255], > "light" : [50, 50, 150], > "fade" : 0.9, > "destructionAction" : "shrink", > "destructionTime" : 0.5, > "initialVelocity" : [0.0, 0.0], > "finalVelocity" : [0.0, 0.0], > "approach" : [0, 1], > "timeToLive" : 1.5, > "layer" : "middle" > }, > > "particleVariance" : { > "initialVelocity" : [0, 5], > "finalVelocity" : [0, 1], > "position" : [1.5, 0], > "size" : 0.5 > } > }, > 32c60 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-32, 0], 38c66,67 < "collision" : "solid" --- > "collision" : "solid", > "collisionSpaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0], [-2, 9], [-1, 9], [0, 9], [1, 9] ] objects\ship\hylotlteleporter\hylotlteleporterlit.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\hylotlteleportertier0\hylotlteleportertier0.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\hylotlteleportertier0\hylotlteleportertier0.object 24c24 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-32, 0], 30c30,31 < "collision" : "solid" --- > "collision" : "solid", > "collisionSpaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0], [-2, 9], [-1, 9], [0, 9], [1, 9] ] objects\ship\novakidteleporter\novakidteleporter.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\novakidteleporter\novakidteleporter.object 23a24,51 > "particleEmitter" : { > "emissionRate" : 3, > "emissionVariance" : 0.5, > > "particle" : { > "type" : "ember", > "position" : [-0.5, 5], > "size" : 1.0, > "color" : [64, 190, 255, 255], > "light" : [50, 50, 150], > "fade" : 0.9, > "destructionAction" : "shrink", > "destructionTime" : 0.5, > "initialVelocity" : [0.0, 0.0], > "finalVelocity" : [0.0, 0.0], > "approach" : [0, 1], > "timeToLive" : 1.5, > "layer" : "middle" > }, > > "particleVariance" : { > "initialVelocity" : [0, 5], > "finalVelocity" : [0, 1], > "position" : [1.5, 0], > "size" : 0.5 > } > }, > 32c60 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-32, 0], 38c66,67 < "collision" : "solid" --- > "collision" : "solid", > "collisionSpaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0], [-2, 9], [-1, 9], [0, 9], [1, 9] ] objects\ship\novakidteleporter\novakidteleporterlit.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\novakidteleportertier0\novakidteleportertier0.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\novakidteleportertier0\novakidteleportertier0.object 24c24 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-32, 0], 30c30,31 < "collision" : "solid" --- > "collision" : "solid", > "collisionSpaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0], [-2, 9], [-1, 9], [0, 9], [1, 9] ] objects\ship\teleporter\teleporter.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\teleporter\teleporter.object 23a24,51 > "particleEmitter" : { > "emissionRate" : 3, > "emissionVariance" : 0.5, > > "particle" : { > "type" : "ember", > "position" : [-0.5, 5], > "size" : 1.0, > "color" : [64, 190, 255, 255], > "light" : [50, 50, 150], > "fade" : 0.9, > "destructionAction" : "shrink", > "destructionTime" : 0.5, > "initialVelocity" : [0.0, 0.0], > "finalVelocity" : [0.0, 0.0], > "approach" : [0, 1], > "timeToLive" : 1.5, > "layer" : "middle" > }, > > "particleVariance" : { > "initialVelocity" : [0, 5], > "finalVelocity" : [0, 1], > "position" : [1.5, 0], > "size" : 0.5 > } > }, > 32c60 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-32, 0], 38c66,67 < "collision" : "solid" --- > "collision" : "solid", > "collisionSpaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0], [-2, 9], [-1, 9], [0, 9], [1, 9] ] objects\ship\teleporter\teleporterlit.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\teleportertier0\teleportertier0.frames 4c4 < "size" : [32, 8], --- > "size" : [64, 80], objects\ship\teleportertier0\teleportertier0.object 25c25 < "imagePosition" : [-16, 0], --- > "imagePosition" : [-32, 0], 31c31,32 < "collision" : "solid" --- > "collision" : "solid", > "collisionSpaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0], [-2, 9], [-1, 9], [0, 9], [1, 9] ] particles\numerals\numerals2.particle 13c13 < "size" : 0.4, --- > "size" : 1.0, particles\numerals\numerals4.particle 13c13 < "size" : 0.4, --- > "size" : 1.0, particles\numerals\numerals6.particle 13c13 < "size" : 0.5, --- > "size" : 1.0, quests\generated\guard.config 76,81d75 < "positionSearch" : { < "rectWidth" : 4.0, < "rectHeight" : 4.0, < "awayFromNpc" : "target", < "xDelta" : 40 < }, 87,93c81 < ["nearbySpawnPoint", "spawnPoint", { < "rectWidth" : 4.0, < "rectHeight" : 4.0, < "xDelta" : 40, < "maxYDelta" : 16 < }], < ["tagSet", "locationTags", ["generic"]], --- > ["findLocation", "spawnPoint", "locationTags", 50, 200], quests\generated\merchant.config 38,44c38,39 < ["nearbySpawnPoint", "spawnPoint", { < "rectWidth" : 4.0, < "rectHeight" : 4.0, < "xDelta" : 10, < "minLightLevel" : 0.2 < }], < ["temporaryNpc", "target", "species", {"literal":"wanderingmerchant"}, "spawnPoint", {"literal":[0, 4]}], --- > ["findLocation", "spawnPoint", "locationTags", 0, -1], > ["temporaryNpc", "target", "species", {"literal":"wanderingmerchant"}, "spawnPoint"], 83,89c78,79 < ["nearbySpawnPoint", "spawnPoint", { < "rectWidth" : 4.0, < "rectHeight" : 4.0, < "xDelta" : 10, < "minLightLevel" : 0.2 < }], < ["temporaryNpc", "target", "species", {"literal":"wanderingmerchant"}, "spawnPoint", {"literal":[0, 4]}], --- > ["findLocation", "spawnPoint", "locationTags", 0, -1], > ["temporaryNpc", "target", "species", {"literal":"wanderingmerchant"}, "spawnPoint"], quests\generated\normal.config 62,66d61 < "positionSearch" : { < "rectWidth" : 4.0, < "rectHeight" : 4.0, < "xDelta" : 40 < }, 79,85c74,75 < ["nearbySpawnPoint", "spawnPoint", { < "rectWidth" : 4.0, < "rectHeight" : 4.0, < "xDelta" : 40, < "maxYDelta" : 16 < }], < ["isMonster", "monster"], --- > ["findLocation", "spawnPoint", "locationTags", 50, -1], > ["isMonsterThreat", "locationTags", "monster"], 152,156d141 < "positionSearch" : { < "rectWidth" : 4.0, < "rectHeight" : 4.0, < "xDelta" : 40 < }, 169,175c154,155 < ["nearbySpawnPoint", "spawnPoint", { < "rectWidth" : 4.0, < "rectHeight" : 4.0, < "xDelta" : 40, < "maxYDelta" : 16 < }], < ["isMonster", "monster"], --- > ["findLocation", "spawnPoint", "locationTags", 50, -1], > ["isMonsterThreat", "locationTags", "monster"], quests\generated\villager.config 30c30 < ["findLocation", "spawnPoint", "locationTags"], --- > ["findLocation", "spawnPoint", "locationTags", 50, 200], 64c64 < ["findLocation", "spawnPoint", "locationTags"], --- > ["findLocation", "spawnPoint", "locationTags", 50, -1], 154c154 < ["findLocation", "spawnPoint", "locationTags"], --- > ["findLocation", "spawnPoint", "locationTags", 50, -1], quests\generated\pools\monsterthreats.config 15c15 < "name" : "gleaps", --- > "name" : "Gleap", 23c23 < "name" : "nutmidges", --- > "name" : "Nutmidge", 31c31 < "name" : "scaveran", --- > "name" : "Scaveran", 39c39 < "name" : "snaunts", --- > "name" : "Snaunt", 47c47 < "name" : "lilodons", --- > "name" : "Lilodon", 55c55 < "name" : "poptops", --- > "name" : "Poptop", 63c63 < "name" : "fennix", --- > "name" : "Fennix", quests\generated\pools\pools.config 42,46d41 < "isMonster" : { < "relation" : "UnaryPool", < "type" : "MonsterType", < "poolFile" : "/quests/generated/pools/monsters.config" < }, quests\generated\templates\kill_monster.questtemplate 47,48c47,48 < "Firsst, we need ^orange;^white;. Not hard to find, Floran ssaw lone keep ssafe in belly. ^green;Hunt the ^orange; ^green;and bring Floran's thingsss back!", < "Firsst sstep, Floran need you to go on a little hunt. Floran sssaw ^orange; ^white;nearby swallow ^orange;. ^white;Greedy ! ^green;Hunt it and bring Floran the stuff from inssside." --- > "Firsst, we need ^orange;^white;. Not hard to find, Floran ssaw lone near ^orange;^white; keep ssafe in belly. ^green;Hunt the ^orange; ^green;and bring Floran's thingsss back!", > "Firsst sstep, Floran need you to go on a little hunt. Floran sssaw ^orange; ^white;nearby swallow ^orange; near ^orange;^white;. ^white;Greedy ! ^green;Hunt it and bring Floran the stuff from inssside." 51,52c51,52 < "Bewildered. I had just finished gathering ^orange;^white; when a lone ^orange; swallowed them whole! ^white;Could you go ^green;hunt the beast and retrieve my belongings^white; for me?", < "Nervous. A lone ^orange; ^white;ambushed me and took ^orange;! Can you ^green;hunt the creature and retrieve my possessions for me?" --- > "Bewildered. I had just finished gathering ^orange;^white; when a lone ^orange; at the swallowed them whole! ^white;Could you go ^green;hunt the beast and retrieve my belongings^white; for me?", > "Nervous. A lone ^orange; ^white;ambushed me at the ^orange;^white; and took ^orange;! Can you ^green;hunt the creature and retrieve my possessions for me?" 55,56c55,56 < "The first step is ^green;finding the ^orange;^white; that's been giving me trouble. It ran off with ^orange;,^white; which I need back. ^green;You don't mind hunting it down do you?", < "The first thing we'll need is ^orange;.^white; Unfortunately, an oversized ate my supplies. It should be lurking around nearby. Could you ^green;kill that ^orange;^green; and bring them back?" --- > "The first step is ^green;finding the ^orange;^white; that's been giving me trouble. It ran off with ^orange;,^white; towards the ^orange;^white;. ^green;You don't mind hunting it down do you?", > "The first thing we'll need is ^orange;.^white; Unfortunately, an oversized ate my supplies. It should be lurking around near the ^orange;^white;. Could you ^green;kill that ^orange;^green; and bring them back?" 61,62c61,62 < "Next sstep not tricky. ^orange; ^white;nearby ate Floran's ^orange;. ^green;Hunt ^orange; ^white;for Floran and ^green;get stuff back.", < "Okay, now Floran needss ^orange;. ^white;Floran sssaw ^orange; ^white;nearby swallow the stuff we need! ^green;Hunt the ^orange; ^white;for Floran and ^green;bring back the thingsss." --- > "Next sstep not tricky. ^orange; ^white;near the ^orange;^white; ate Floran's ^orange;. ^green;Hunt ^orange; ^white;for Floran and ^green;get stuff back.", > "Okay, now Floran needss ^orange;. ^white;Floran sssaw ^orange; ^white;near the ^orange;^white; swallow the stuff we need! ^green;Hunt the ^orange; ^white;for Floran and ^green;bring back the thingsss." 65,66c65,66 < "Shocked. I was recently attacked by a fierce ^orange;, ^whitel;which made off with my ^orange;. Could you ^green;hunt the creature down for me?^white; It couldn't have gotten far.", < "Ashamed. I was attacked by a fierce ^orange;, ^white;and it swallowed my possessions in the struggle. It took ^orange;, ^white;could you ^green;hunt it down and retrieve my things^white; for me?" --- > "Shocked. I was recently attacked by a fierce ^orange;, ^white;which made off towards the ^orange;^white; with my ^orange;. Could you ^green;hunt the creature down for me?^white; It couldn't have gotten far.", > "Ashamed. I was attacked by a fierce ^orange; at the ^white;, and it swallowed my possessions in the struggle. It took ^orange;, ^white;could you ^green;hunt it down and retrieve my things^white; for me?" 69,70c69,70 < "Next, ^green;I'll need you to hunt down a ^orange;.^white; It swallowed ^orange;^white; and ran off the other day -- I need my stuff back. That ^orange;^white; should be nearby.", < "Next you'll need to hunt down a ^orange;.^white; I was out walking earlier and it ambushed me and took ^orange;. Would you ^green;locate the creature and return what it's taken?" --- > "Next, ^green;I'll need you to hunt down a ^orange;.^white; It swallowed ^orange;^white; and ran off the other day -- I need my stuff back. That ^orange;^white; should be near the ^orange;^white;.", > "Next you'll need to hunt down a ^orange;.^white; I was out walking by the ^orange;^white; earlier. It ambushed me and took ^orange;. Would you ^green;locate the creature and return what it's taken?" quests\generated\templates\new_stock1.questtemplate 27a28,33 > }, > "spawnPoint" : { > "type" : "location", > "example" : { > "name" : "dark, scary cave" > } 67,68c73,74 < "Floran has heard that ^orange; ^white;is a travelling merchant and ^green;will trade desssirable goods in exchange for ^orange;. ^white;Please will you ^green;take these to ^white; to boossst popularity of Floran's sssshop.", < "A travelling merchant hasss arrived in our town! ^orange;^white; is known for trading valuable suppliess in exchange for ^orange;. ^white;Pleasse ^green;take these thingsss to ^white;so Floran can improve ssstock of shop." --- > "Floran has heard that ^orange; ^white;is a travelling merchant and ^green;will trade desssirable goods in exchange for ^orange;. ^white;Please will you ^green;take these to ^white; at the ^orange;^white; to boossst popularity of Floran's sssshop.", > "A travelling merchant hasss arrived at the ^orange;^white;! ^orange;^white; is known for trading valuable suppliess in exchange for ^orange;. ^white;Pleasse ^green;take these thingsss to ^white;so Floran can improve ssstock of shop." 71,72c77,78 < "Excited. My old friend and fellow merchant ^orange;^white; is in town. is always in need of extra stock, you will be able to ^green;trade the ^orange;^green; with for the goods I need.", < "Worried. I've heard my rival in business ^orange;^white; has the supplies I need, but I do not wish to speak to . Please trade the ^orange;^white; with ^white; for the goods I need." --- > "Excited. My old friend and fellow merchant ^orange;^white; is at the ^orange;^white;. is always in need of extra stock, you will be able to ^green;trade the ^orange;^green; with for the goods I need.", > "Worried. I've heard my rival in business ^orange;^white; has the supplies I need, but I do not wish to speak to . Please trade the ^orange;^white; with ^white; at the ^orange;^white; for the goods I need." 75,76c81,82 < "Finally, travelling merchant arrived in our settlement a short time ago. has agreed to provide me with the new stock I require in exchange for the ^orange;^white;. Could you ^green;take the goods to ^orange;^white;?", < "Perfect timing! , a travelling merchant, has just arrived to deliver the new stock. Can you ^green;find ^orange;^green; and give our ^orange;^green; in return?" --- > "Finally, travelling merchant arrived at the ^orange;^white; a short time ago. has agreed to provide me with the new stock I require in exchange for the ^orange;^white;. Could you ^green;take the goods to ^orange;^white;?", > "Perfect timing! , a travelling merchant, has just arrived at the ^orange;^white; to deliver the new stock. Can you ^green;find ^orange;^green; and give our ^orange;^green; in return?" 88c94 < "Grateful. Thanks to you, my customers can now purchase a new from me anytime." --- > "Grateful. Thanks to you, my customers can now purchase themselves a new from me anytime." quests\generated\templates\new_stock2.questtemplate 27a28,33 > }, > "spawnPoint" : { > "type" : "location", > "example" : { > "name" : "dark, scary cave" > } 67,68c73,74 < "Now isss our time. Travelling merchant ^orange; ^white;is in town, and has promisssed that ^green; will trade special goods for ^orange;. ^white;Please do Floran massssive favour and ^green;make thissss deal!", < "Floran is excited to hear that travelling merchant ^orange;^white; is currently visssiting our town. Pleassse ^green;bring these ^white;so that will help Floran sssstock a new product, it isss all the rage!" --- > "Now isss our time. Travelling merchant ^orange; ^white;is at the ^orange;^white;, and has promisssed that ^green; will trade special goods for ^orange;. ^white;Please do Floran massssive favour and ^green;make thissss deal!", > "Floran is excited to hear that travelling merchant ^orange;^white; is currently visssiting the ^orange;^white;. Pleassse ^green;bring these ^white;so that will help Floran sssstock a new product, it isss all the rage!" 71,72c77,78 < "Jealous. The merchant known as ^orange;target^white; is a popular fellow. Please ^green;deliver ^orange;^green; to in exchange for the supplies I need. ", < "Hopeful. If you speak to ^orange;^white; might have the materials I need to create a new item of stock. Please ^green;see if will accept ^orange; ^white;in exchange. " --- > "Jealous. The merchant known as ^orange;target^white; is a popular fellow. Please ^green;deliver ^orange;^green; to at the ^orange;^white; in exchange for the supplies I need. ", > "Hopeful. If you speak to ^orange;^white; at the ^orange;^white; might have the materials I need to create a new item of stock. Please ^green;see if will accept ^orange; ^white;in exchange. " 75,76c81,82 < "Just in time! Travelling merchant arrived in our settlement a short time ago. has agreed to provide me with the new stock I require in exchange for the ^orange;^white;. Could you ^green;take the goods to ^orange;^white;?", < "Now to finish the task! , a travelling merchant, has just arrived to deliver the new stock. Can you ^green;find ^orange;^green; and give our ^orange;^green; in return?" --- > "Just in time! Travelling merchant arrived at the ^orange;^white; a short time ago. has agreed to provide me with the new stock I require in exchange for the ^orange;^white;. Could you ^green;take the goods to ^orange;^white;?", > "Now to finish the task! , a travelling merchant, has just arrived at the ^orange;^white; to deliver the new stock. Can you ^green;find ^orange;^green; and give our ^orange;^green; in return?" quests\generated\templates\protect.questtemplate 22c22,25 < "type" : "location" --- > "type" : "location", > "example" : { > "name" : "dark, scary cave" > } 60,61c63,64 < "Floran knowss that ^orange;^green; are looking for ^orange;. ^white;Floran needss alive for plan to work, so make sssure you ^green;protect .", < "Floran heard that ^orange; ^green;upssset , and they're coming here! ^white;Floran wantss you to ^green;protect ." --- > "Floran knowss that ^orange;^green; near the ^orange;^white; are looking for ^orange;. ^white;Floran needss alive for plan to work, so make sssure you ^green;protect .", > "Floran heard that ^orange; ^green;upssset , and they're coming here from the ^orange;^white;! ^white;Floran wantss you to ^green;protect ." 64,65c67,68 < "Tense. I heard talk of approaching ^orange;^white; and believe 's here to get ^orange;. ^green;Can you help protect ?", < "Distressed. I have reason to believe ^orange;^white; are coming for ^orange;. ^green;You must help protect !" --- > "Tense. I heard talk of ^orange;^white; apporaching from the ^orange;^white; and believe 's here to get ^orange;. ^green;Can you help protect ?", > "Distressed. I have reason to believe ^orange;^white; at the ^orange;^white; are coming for ^orange;. ^green;You must help protect !" 68,69c71,72 < "The first concern are the reports that ^orange;^white; are on way here. I hear they're after ^orange;! ^green;Do whatever you can to fend them off.^white; needs our protection!", < "The first task is simple; head over to ^orange^white; and make sure those ^orange^white; don't succeed in their attack! ^green;Protect ^orange^green; at all costs!" --- > "The first concern is the report that ^orange;^white; are on their way here from the ^orange;^white;. I hear they're after ^orange;! ^green;Do whatever you can to fend them off.^white; needs our protection!", > "The first task is simple; head over to the ^orange^white; and make sure those ^orange^white; don't succeed in their attack! ^green;Protect ^orange^green; at all costs!" 74,75c77,78 < "Next part not sso eassy. Floran hearss that ^orange; ^green;are coming for ^orange;.^white; Floran needss you to ^green;stop them.", < "Next part iss good timing. Floran hear on grapevine that ^orange; ^green;are coming to messs with ^orange;. ^white;Floran wantss you to ^green;protect ^orange; ^green;from ^orange;." --- > "Next part not sso eassy. Floran hearss that ^orange; at the ^white; ^green;are coming for ^orange;.^white; Floran needss you to ^green;stop them.", > "Next part iss good timing. Floran hear on grapevine that ^orange; from the ^white; ^green;are coming to messs with ^orange;. ^white;Floran wantss you to ^green;protect ^orange; ^green;from ^orange;." 78,79c81,82 < "Alerted. I have recieved a tip-off that ^orange;^white; are coming to attack, and are after ^orange;. ^green;If you can help me protect ,^white; I would be pleased!", < "Agitated. I have recieved information that ^orange;^white; are incoming, and are here to get to ^orange;. ^green;If you can help me save ,^white; I may win gratitude. Can you assist?" --- > "Alerted. I have recieved a tip-off that ^orange;^white; are coming via the ^orange;^white; to attack, and are after ^orange;. ^green;If you can help me protect ,^white; I would be pleased!", > "Agitated. I have recieved information that ^orange;^white; are incoming, via the ^orange;^white;, and are here to get to ^orange;. ^green;If you can help me save ,^white; I may win gratitude. Can you assist?" 82,83c85,86 < "Next ^green;we'll need to defend against incoming ^orange;^white;. I've heard that their target is ^orange;^white;. If we show that we're willing to risk life and limb to ^green;protect , will know can trust us.", < "Next, we'll need to protect ^orange;^white;. There's a group of ^orange;^white; on their way here to attack . ^green;Do whatever you can to keep safe from harm!" --- > "Next ^green;we'll need to defend against incoming ^orange;^white; from the ^orange;^white;. I've heard that their target is ^orange;^white;. If we show that we're willing to risk life and limb to ^green;protect , will know can trust us.", > "Next, we'll need to protect ^orange;^white;. There's a group of ^orange;^white; on their way here through the ^orange;^white; to attack . ^green;Do whatever you can to keep safe from harm!" 88,89c91,92 < "Floran might have told ^orange;^white; that wass hiding here. Floran knowss they been looking for a while. ^green;Keep ^orange; ^green;ssafe^white; and everyone winsss.", < "Floran knowss ^orange;^white; got on the wrong side of ^orange;^white;, and they'll be here sshortly! if Floran helpss then 'll have to owe Floran a favour. ^green;Will you help protect ?" --- > "Floran might have told ^orange;^white; that wass hiding here. Floran knowss they been looking for a while, around the ^orange;^white;. ^green;Keep ^orange; ^green;ssafe^white; and everyone winsss.", > "Floran knowss ^orange;^white; got on the wrong side of ^orange;^white;, and they'll be here from the ^orange;^white; sshortly! If Floran helpss then 'll have to owe Floran a favour. ^green;Will you help protect ?" 92,93c95,96 < "Tense. I've been informed that ^orange;^white; are approaching - and ^orange;^white; is their target! ^green;Can you help me protect life?", < "Distressed. I've recieved word that ^orange;^white; are coming for ^orange;! ^green;You must help me protect ,^white; before it is too late!" --- > "Tense. I've been informed that ^orange;^white; are approaching from the ^orange;^white; - and ^orange;^white; is their target! ^green;Can you help me protect life?", > "Distressed. I've recieved word that the ^orange;^white; at the ^orange;^white; are coming for ^orange;! ^green;You must help me protect ,^white; before it is too late!" 96,97c99,100 < "Word is that ^orange;^white; are on their way here to capture ^orange;^white;. We can't allow this, ^green;please help protect ^white; however you can!", < " is in danger! It seems there's a gang of ^orange;^white; on their way with hostile intentions. ^green;Make sure they don't harm ^orange;^white;. Do whatever it takes!" --- > "Word is that ^orange;^white; are on their way here to capture ^orange;^white; and take back to the ^orange;^white;. We can't allow this, ^green;please help protect ^white; however you can!", > " is in danger! It seems there's a gang of ^orange;^white; on their way from the ^orange;^white; with hostile intentions. ^green;Make sure they don't harm ^orange;^white;. Do whatever it takes!" quests\outpost\old\outpostmission1.questtemplate 2a3 > "mainQuest" : true, quests\scripts\generated\text_generation.lua 130a131 > if not variants then return "" end 133a135 > if not variants then return "" end 136a139 > if not variants then return "" end quests\story\apex_mission1.questtemplate 2a3 > "mainQuest" : true, quests\story\apex_mission2.questtemplate 2a3 > "mainQuest" : true, 9c10 < "completionCinema" : "/cinematics/artifacts/avianartifact.cinematic", --- > "completionCinema" : "/cinematics/artifacts/apexartifact.cinematic", quests\story\avian_mission1.questtemplate 2a3 > "mainQuest" : true, quests\story\avian_mission2.questtemplate 2a3 > "mainQuest" : true, quests\story\floran_mission1.questtemplate 3c3,4 < "prerequisites" : [ "human_mission3" ], --- > "mainQuest" : true, > "prerequisites" : [ "human_mission1" ], 47c48,50 < "ixolingpike" : 20 --- > "ixolingpike" : 20, > "floranspinneret" : 20, > "floranwebbing" : 20 72a76,91 > "portraitImage" : "/interface/chatbubbles/esthertalk.png:" > }, > "floranspinneret" : { > "messageId" : "floran_mission1_up4", > "type" : "quest", > "unique" : false, > "senderName" : "Esther", > "text" : "What kind of creature is this from? I'll see if my research brings up anything. Nice find, dear!", > "portraitImage" : "/interface/chatbubbles/esthertalk.png:" > }, > "floranwebbing" : { > "messageId" : "floran_mission1_up5", > "type" : "quest", > "unique" : false, > "senderName" : "Esther", > "text" : "This appears to be some sort of web. I've never seen anything like this before! Perhaps I can research where something like this might come from...", quests\story\floran_mission2.questtemplate 2a3 > "mainQuest" : true, quests\story\gateway1.questtemplate 2a3 > "mainQuest" : true, quests\story\glitch_mission1.questtemplate 2a3 > "mainQuest" : true, quests\story\glitch_mission2.questtemplate 2a3 > "mainQuest" : true, quests\story\human_mission1.questtemplate 3c3,4 < "title" : "^green;Is there an engineer around here?", --- > "mainQuest" : true, > "title" : "Become Space-worthy", 5,6c6,7 < "text" : "If you're going to save the universe, you're going to need a working FTL Drive. I'm sure there's a ^orange;ship mechanic^white; somewhere in the settlement you saw on the way here.", < "completionText" : "Sure I can help you fix up your ship, if I only had the right materials.", --- > "text" : "First thing first though, dear; you need a ship in good working order. Who knows how far you'll have to travel before we're done. I think you should return to the Outpost and speak to the mechanic.", > "completionText" : "Now that your ship is in full working condition we can get started on the real task at hand.", 11c12 < "script" : "/quests/scripts/turnin.lua", --- > "script" : "/quests/scripts/story/human_mission1.lua", 17,18c18,36 < < "description" : "Find ^green;Mickey Mack^white; the ^orange;Marvelous Machinist^white;" --- > > "descriptions" : { > "findMechanic" : "find ^orange;Mickey Mack^white; at the ^green;outpost^white;", > "findCrystals" : "find ^orange;Erchius Crystals^white; in the ^green;Erchius Mining Facility^white;", > "turnInCrystals" : "return to ^orange;Mickey Mack^white; at the ^green;outpost^white;", > "findEsther" : "talk to ^orange;Esther Bright^white; at the ^green;outpost^white;" > }, > > "associatedMission" : "missionhuman1", > > "missionUnlockedCinema" : "/cinematics/coordinates.cinematic", > "acquireCrystalsCinema" : "/cinematics/coordinates.cinematic", > "shipUpgradeCinema" : "/cinematics/repair/apex/ftlrepair.cinematic", > > "shipUpgrade" : { "shipLevel" : 3 }, > > "mechanicUid" : "shipyardcaptain", > "drillUid" : "erchiusdrillmachine", > "estherUid" : "estheroutpost" quests\story\human_mission2.questtemplate 2a3 > "mainQuest" : true, quests\story\human_mission3.questtemplate 2a3 > "mainQuest" : true, 17c18 < --- > quests\story\hylotl_mission1.questtemplate 2a3 > "mainQuest" : true, 66c67,68 < "pagodaaquarium" : 20 --- > "pagodaaquarium" : 20, > "hylotlmusicbox" : 20 99a102,109 > "portraitImage" : "/interface/chatbubbles/esthertalk.png:" > }, > "hylotlmusicbox" : { > "messageId" : "hylotl_mission1_up5", > "type" : "quest", > "unique" : false, > "senderName" : "Esther", > "text" : "This music box seems to be a souvenir. Perhaps it came from somewhere important. I'll do further research, dear.", quests\story\hylotl_mission2.questtemplate 2a3 > "mainQuest" : true, radiomessages\missions.radiomessages 217,223d216 < "hylotlmission01a" : { < "type" : "mission", < "senderName" : "Esther Bright", < "portraitImage" : "/interface/chatbubbles/esthertalk.png:", < "text" : "Ah yes, the Hylotl always have valued their literature." < }, < rendering\xboxone.config 2,3c2,4 < "vertexShaderMainTransformPos" : 0, < "vertexShaderConstantBufferSize" : 64, --- > "vertexShaderMainTransformPos" : 16, > "vertexShaderMainTextureSlot" : 0, > "vertexShaderConstantBufferSize" : 80, 7c8 < "pixelShaderConstantBufferSize" : 32, --- > "pixelShaderConstantBufferSize" : 16, 13c14 < "pixelShaderConstantBufferPos" : 0 --- > "vertexShaderConstantBufferPos" : 0 18c19 < "pixelShaderConstantBufferPos" : 8 --- > "vertexShaderConstantBufferPos" : 8 23c24 < "pixelShaderConstantBufferPos" : 16 --- > "pixelShaderConstantBufferPos" : 0 28c29 < "pixelShaderConstantBufferPos" : 20 --- > "pixelShaderConstantBufferPos" : 4 35a37 > "vertexShaderTextureSlot" : 1, 42a45,46 > float2 lightMapScale; > float2 lightMapOffset; 45a50,52 > Texture2D mainTexture; > Texture2D lightMapTexture; > 54c61 < float2 textureCoord : TEXCOORD; --- > float2 textureCoord : TEXCOORD0; 55a63 > float2 lightMapCoord : TEXCOORD1; 58a67,75 > float2 mainTextureSize; > mainTexture.GetDimensions(mainTextureSize.x, mainTextureSize.y); > > float2 lightMapSize; > lightMapTexture.GetDimensions(lightMapSize.x, lightMapSize.y); > > float2 screenSize = float2(1920.0, 1080.0); > float2 screenPos = mul(vertexTransform, float3(In.position, 1.0)).xy; > 60,62c77,78 < float2 pos = mul(vertexTransform, float3(In.position, 1.0)).xy; < Out.position = float4(2 * float2(pos.x / 1920.0, pos.y / 1080.0) - 1.0, 0.0, 1.0); < Out.textureCoord = In.textureCoord; --- > Out.position = float4(2 * screenPos / float2(1920.0, 1080.0) - 1.0, 0.0, 1.0); > Out.textureCoord = In.textureCoord / mainTextureSize; 63a80 > Out.lightMapCoord = screenPos / (lightMapSize * lightMapScale) - lightMapOffset / screenSize; 70,71d86 < float2 lightMapScale; < float2 lightMapOffset; 84c99 < float2 textureCoord : TEXCOORD; --- > float2 textureCoord : TEXCOORD0; 85a101 > float2 lightMapCoord : TEXCOORD1; 93,103c109,111 < float2 mainTextureSize; < mainTexture.GetDimensions(mainTextureSize.x, mainTextureSize.y); < float4 finalColor = mainTexture.Sample(mainTextureSampler, In.textureCoord / mainTextureSize) * In.color; < < if (lightMapEnabled) { < float2 lightMapSize; < lightMapTexture.GetDimensions(lightMapSize.x, lightMapSize.y); < < float2 lightMapCoord = float2(In.position.x, 1080.0 - In.position.y) / lightMapSize / lightMapScale - lightMapOffset / float2(1920.0, 1080.0); < finalColor.xyz *= lightMapTexture.Sample(lightMapSampler, lightMapCoord).xyz * lightMapMultiplier; < } --- > float4 finalColor = mainTexture.Sample(mainTextureSampler, In.textureCoord) * In.color; > if (lightMapEnabled) > finalColor.xyz *= lightMapTexture.Sample(lightMapSampler, In.lightMapCoord).xyz * lightMapMultiplier; scripts\spawnpoint.lua 4,8d3 < function makeSpawnRect(x, y, rectWidth, rectHeight) < assert(rectWidth and rectHeight) < return {x-rectWidth/2, y, x+rectWidth/2, y+rectHeight} < end < 15,44d9 < local function canSpawnAt(x, y, rectWidth, rectHeight, options) < -- Only choose spawn points underground if we're already underground < local underground = world.underground(entity.position()) < if underground ~= world.underground({x,y}) then < return false < end < < -- If requested, only spawn in well-lit areas < if options.minLightLevel and world.lightLevel({x,y}) < options.minLightLevel then < return false < end < < -- Check the spawn rect does not collide with anything, and is supported underneath < local boundBox = makeSpawnRect(x, y, rectWidth, rectHeight) < return canStandAt(boundBox) < end < < local function findSpawnPointNear(x, approximateY, rectWidth, rectHeight, options) < local maxTries = options.maxYDelta or 16 < for dy = 0, maxTries do < if canSpawnAt(x, approximateY+dy, rectWidth, rectHeight, options) then < return {x, approximateY+dy} < end < if canSpawnAt(x, approximateY-dy, rectWidth, rectHeight, options) then < return {x, approximateY-dy} < end < end < return nil < end < 84,148d48 < end < < function randomPositionInRect(region, offset) < local rangeX = region[3] - region[1] - offset[1] * 2 < assert(rangeX >= 0) < local x = math.random() * rangeX + region[1] + offset[1] < local y = region[2] + offset[2] < return {x, y} < end < < function findSpawnPoint(centerPosition, npcs, options) < -- Return a list of nearby position ideally outside of the town/colony that < -- we could spawn monsters or enemy NPCs at. < -- The bounds of the town/colony are approximated by the bound box of all the < -- npcs given. < -- If options.awayFromNpc is given, it returns only the spawn points that are < -- farthest from the entity with entityId options.awayFromNpc. < < local rectWidth = options.rectWidth < local rectHeight = options.rectHeight < < local minDistance = 0 < local maxDistance = 0 < local minPosition = nil < local maxPosition = nil < for _,npc in pairs(npcs) do < local position = world.entityPosition(npc) < local diff = world.distance(position, centerPosition) < if diff[1] < minDistance then < minDistance = diff[1] < minPosition = position < end < if diff[1] > maxDistance then < maxDistance = diff[1] < maxPosition = position < end < end < < local spawnDistance = options.xDelta or 16 < < if minPosition and maxPosition and options.awayFromNpc then < -- Choose the position farthest from awayFromNpc < local npcPosition = world.entityPosition(options.awayFromNpc) < if world.magnitude(npcPosition, minPosition) < world.magnitude(npcPosition, maxPosition) then < minPosition = nil < elseif world.magnitude(npcPosition, maxPosition) < world.magnitude(npcPosition, minPosition) then < maxPosition = nil < end < end < < local results = {} < if minPosition then < local spawnPoint = findSpawnPointNear(minPosition[1] - spawnDistance, minPosition[2], rectWidth, rectHeight, options) < if spawnPoint then < results[#results+1] = spawnPoint < end < end < if maxPosition then < local spawnPoint = findSpawnPointNear(maxPosition[1] + spawnDistance, maxPosition[2], rectWidth, rectHeight, options) < if spawnPoint then < results[#results+1] = spawnPoint < end < end < < return results scripts\quest\location.lua 73c73 < function Location.search(position, optionalTags, optionalRange) --- > function Location.search(position, optionalTags, optionalMinDistance, optionalMaxDistance) 94,95c94,95 < local locationPos = world.findUniqueEntity(location.uniqueId):result() < if not locationPos then --- > local entityExists = world.findUniqueEntity(location.uniqueId):result() > if not entityExists then 99a100 > local locationPos = rect.center(location.region) 102,104c103,105 < local range = location.range or optionalRange < if optionalRange and optionalRange < range then < range = optionalRange --- > local range = location.range or optionalMaxDistance > if optionalMaxDistance and optionalMaxDistance < range then > range = optionalMaxDistance 107c108 < return not range or distance <= range --- > return (not range or distance <= range) and distance >= (optionalMinDistance or 0) scripts\quest\manager\spawn_entities.lua 110,129d109 < if self.config.positionSearch then < local position = entity.position() < local radius = self.config.positionSearch.radius or 50 < local npcs = world.npcQuery(position, radius) < local options = self.config.positionSearch < if options.awayFromNpc and type(options.awayFromNpc) == "string" then < local npcParam = self.questParameters[options.awayFromNpc] < options.awayFromNpc = nil < if npcParam.uniqueId then < options.awayFromNpc = world.loadUniqueEntity(npcParam.uniqueId) < end < end < options.rectWidth = boundBox[3] - boundBox[1] < options.rectHeight = boundBox[4] - boundBox[2] < local positions = findSpawnPoint(position, npcs, options) < if #positions > 0 then < return vec2.sub(positions[math.random(#positions)], {boundBox[1], boundBox[2]}) < end < end < scripts\questgen\context.lua 22,41d21 < function QuestContext:spawnPoints(options) < -- Return a list of nearby position ideally outside of the town/colony that < -- we could spawn monsters or enemy NPCs at. Or nil if none could be found. < -- The bounds of the town/colony are approximated by the bound box of all the < -- npcs we found in our entity query. < < local npcs = util.map(self:entitiesByType()["npc"], function (npc) < return npc:entityId() < end) < local rectWidth = options.rectWidth < local rectHeight = options.rectHeight < < local results = findSpawnPoint(self._queryPosition, npcs, options) < < return util.map(results, function (position) < local region = makeSpawnRect(position[1], position[2], rectWidth, rectHeight) < return QuestPredicands.Location.new(region) < end) < end < scripts\questgen\predicands.lua 122c122 < function QuestPredicands.TemporaryNpc:init(species, typeName, spawnPoint) --- > function QuestPredicands.TemporaryNpc:init(species, typeName, spawnRegion) 125c125 < self.spawnPoint = spawnPoint --- > self.spawnRegion = spawnRegion 131c131 < damageTeamType = "friendly", --- > damageTeamType = "assistant", 142c142,144 < local entityId = world.spawnNpc(self.spawnPoint, self.species, self.typeName, world.threatLevel(), seed, overrides) --- > local entityId = world.spawnNpc(entity.position(), self.species, self.typeName, world.threatLevel(), seed, overrides) > local boundBox = world.callScriptedEntity(entityId, "mcontroller.boundBox") > world.callScriptedEntity(entityId, "mcontroller.setPosition", findSpaceInRect(self.spawnRegion, boundBox)) scripts\questgen\relations.lua 551c551 < [case(1, TemporaryNpc, NonNil, NonNil, QuestPredicands.Location, NonNil)] = function (self, npc, species, typeName, spawnLocation, spawnOffset) --- > [case(1, TemporaryNpc, NonNil, NonNil, QuestPredicands.Location)] = function (self, npc, species, typeName, spawnLocation) 553c553 < return {{npc, species, typeName, spawnLocation, spawnOffset}} --- > return {{npc, species, typeName, spawnLocation}} 558c558 < [case(2, Nil, NonNil, NonNil, QuestPredicands.Location, NonNil)] = function (self, _, species, typeName, spawnLocation, spawnOffset) --- > [case(2, Nil, NonNil, NonNil, QuestPredicands.Location)] = function (self, _, species, typeName, spawnLocation) 560,561c560 < local spawnPoint = randomPositionInRect(spawnLocation.region, spawnOffset) < return {{TemporaryNpc.new(species, typeName, spawnPoint), species, typeName, spawnLocation, spawnOffset}} --- > return {{TemporaryNpc.new(species, typeName, spawnLocation.region), species, typeName, spawnLocation}} 971,991d969 < QuestRelations.nearbySpawnPoint = defineQueryRelation("nearbySpawnPoint", true) { < [case(1, QuestPredicands.Location, NonNil)] = function (self, location, options) < if xor(self.negated, not world.rectCollision(location.region, {"Block", "Null"})) then < return {{location, options}} < end < return Relation.empty < end, < < [case(2, Nil, NonNil)] = function (self, _, options) < if self.negated then < return Relation.some < end < < return util.map(self.context:spawnPoints(options), function (spawnPoint) < return {spawnPoint, options} < end) < end, < < default = Relation.empty < } < 1016,1018c994,1001 < [case(1, QuestPredicands.Location, TagSet)] = function (self, location, tags) < if xor(self.negated, set.containsAll(set.new(location.tags), tags.tags)) then < return {{location, tags}} --- > [case(1, QuestPredicands.Location, TagSet, NonNil, NonNil)] = function (self, location, tags, minDistance, maxDistance) > local locationPos = rect.center(location.region) > local distance = world.magnitude(locationPos, entity.position()) > local farEnoughAway = distance >= minDistance > local inRange = maxDistance < 0 or distance <= maxDistance > local tagsMatch = set.containsAll(set.new(location.tags), tags.tags) > if xor(self.negated, tagsMatch and inRange) then > return {{location, tags, minDistance, maxDistance}} 1023c1006 < [case(2, QuestPredicands.Location, Nil)] = function (self, location) --- > [case(2, QuestPredicands.Location, Nil, NonNil, NonNil)] = function (self, location, tags, minDistance, maxDistance) 1025c1008 < return {{location, TagSet.new(location.tags)}} --- > return {{location, TagSet.new(location.tags), minDistance, maxDistance}} 1028c1011 < [case(3, Nil, TagSet)] = function (self, _, tags) --- > [case(3, Nil, TagSet, NonNil, NonNil)] = function (self, _, tags, minDistance, maxDistance) 1030c1013,1014 < local results = util.map(Location.search(entity.position(), tags:values()), function (location) --- > local range = maxDistance >= 0 and maxDistance or nil > local results = util.map(Location.search(entity.position(), tags:values(), minDistance, range), function (location) 1033c1017,1019 < tags --- > tags, > minDistance, > maxDistance 1039c1025 < [case(4, Nil, Nil)] = function (self) --- > [case(4, Nil, Nil, NonNil, NonNil)] = function (self, _, _, minDistance, maxDistance) 1041c1027,1028 < return util.map(Location.search(entity.position()), function (location) --- > local range = maxDistance >= 0 and maxDistance or nil > return util.map(Location.search(entity.position(), nil, minDistance, range), function (location) 1044c1031,1033 < TagSet.new(location.tags) --- > TagSet.new(location.tags), > minDistance, > maxDistance stats\effects\timefreeze\timefreeze.animation 7d6 < { "particle" : "numerals1" }, 9d7 < { "particle" : "numerals3" }, 11d8 < { "particle" : "numerals5" }, 13,18c10 < { "particle" : "numerals7" }, < { "particle" : "numerals8" }, < { "particle" : "numerals9" }, < { "particle" : "numerals10" }, < { "particle" : "numerals11" }, < { "particle" : "numerals12" } --- > { "particle" : "numerals8" }