FILES ----- [NEW] dungeons\novakid\novakidvillage\blacksmith1.json [NEW] dungeons\novakid\novakidvillage\blacksmith2.json dungeons\novakid\novakidvillage\novakidvillage.dungeon dungeons\novakid\novakidvillage\novakid_template.json dungeons\novakid\novakidvillage\saloonbase1.json dungeons\novakid\novakidvillage\saloonbase2.json dungeons\novakid\novakidvillage\saloon_balcony5.json dungeons\novakid\novakidvillage\saloon_balcony6.json dungeons\novakid\novakidvillage\saloon_balcony7.json dungeons\novakid\novakidvillage\saloon_balcony8.json dungeons\novakid\novakidvillage\saloon_bedroom7.json dungeons\novakid\novakidvillage\saloon_bedroom8.json dungeons\novakid\novakidvillage\saloon_stairwell1.json dungeons\novakid\novakidvillage\saloon_stairwell2.json dungeons\novakid\novakidvillage\saloon_stairwell3.json dungeons\novakid\novakidvillage\saloon_stairwell4.json dungeons\novakid\novakidvillage\saloon_stairwell7.json dungeons\novakid\novakidvillage\saloon_stairwell8.json [NEW] dungeons\novakid\novakidvillage\sheriff1.json [NEW] interface\crafting\frontierfurnace.png [NEW] items\active\effects\renderrope.lua items\active\grapplinghooks\grapplinghook.lua items\active\grapplinghooks\climbingrope\climbingrope.activeitem items\active\grapplinghooks\grapplinghook\grapplinghook.activeitem items\armors\decorative\hats\m1helmet\m1helmet.head [NEW] monsters\fishing\appearState.lua [NEW] monsters\fishing\disappearState.lua [NEW] monsters\fishing\fishingMonster.lua [NEW] monsters\fishing\fleeState.lua [NEW] monsters\fishing\flopState.lua [NEW] monsters\fishing\lookState.lua [NEW] monsters\fishing\wanderState.lua [NEW] monsters\fishing\fishingmed\default.frames [NEW] monsters\fishing\fishingmed\fishingmed.animation [NEW] monsters\fishing\fishingmed\fishingmed.monstertype [NEW] monsters\fishing\fishingmed\body\fishingclown.monsterpart [NEW] monsters\fishing\fishingmed\body\fishingclown.png objects\generic\wflowerpot\wflowerpot.object objects\glitch\haypile\haypile.object [NEW] objects\novakid\frontierchair\default.frames [NEW] objects\novakid\frontierchair\frontierchair.object [NEW] objects\novakid\frontierchair\frontierchair.png [NEW] objects\novakid\frontierchair\frontierchaircover.png [NEW] objects\novakid\frontierchair\frontierchairicon.png [NEW] objects\novakid\frontiercoffin\default.frames [NEW] objects\novakid\frontiercoffin\frontiercoffin.object [NEW] objects\novakid\frontiercoffin\frontiercoffin.png [NEW] objects\novakid\frontiercoffin\frontiercoffinicon.png [NEW] objects\novakid\frontierfurnace\default.frames [NEW] objects\novakid\frontierfurnace\frontierfurnace.object [NEW] objects\novakid\frontierfurnace\frontierfurnace.png [NEW] objects\novakid\frontierfurnace\frontierfurnaceicon.png [NEW] objects\novakid\frontierfurnace\frontierfurnacelit.png objects\themed\cabin\cabinstove\cabinstove.object [NEW] scripts\rope.lua [NEW] stats\noncombat_primary.lua tilesets\packed\objects-by-category\crafting.json tilesets\packed\objects-by-category\decorative.json tilesets\packed\objects-by-category\furniture.json tilesets\packed\objects-by-colonytag\cabin.json tilesets\packed\objects-by-colonytag\cooking.json tilesets\packed\objects-by-colonytag\crafting.json tilesets\packed\objects-by-colonytag\glitch.json tilesets\packed\objects-by-colonytag\glitchvillage.json tilesets\packed\objects-by-colonytag\light.json tilesets\packed\objects-by-colonytag\nature.json tilesets\packed\objects-by-colonytag\novakid.json tilesets\packed\objects-by-colonytag\novakidvillage.json tilesets\packed\objects-by-race\generic.json tilesets\packed\objects-by-race\glitch.json tilesets\packed\objects-by-race\novakid.json tilesets\packed\objects-by-type\container.json tilesets\packed\objects-by-type\loungeable.json treasure\largedungeons.treasurepools DIFFS ----- dungeons\novakid\novakidvillage\novakidvillage.dungeon 10c10 < "maxParts" : 100, --- > "maxParts" : 10, 39c39,40 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 43c44 < "chance" : 1 --- > "chance" : 0 48c49,50 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 52c54 < "chance" : 1 --- > "chance" : 0 57c59,60 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 61c64 < "chance" : 1 --- > "chance" : 0 66c69,70 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 70c74 < "chance" : 1 --- > "chance" : 0 75c79,80 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 79c84 < "chance" : 1 --- > "chance" : 0 84c89,90 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 88c94 < "chance" : 1 --- > "chance" : 0 93c99,100 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 97c104 < "chance" : 1 --- > "chance" : 0 102c109,110 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 106c114 < "chance" : 1 --- > "chance" : 0 111c119,120 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 115c124 < "chance" : 1 --- > "chance" : 0 120c129,130 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 124c134 < "chance" : 1 --- > "chance" : 0 129c139,140 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 133c144 < "chance" : 1 --- > "chance" : 0 138c149,150 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 142c154 < "chance" : 1 --- > "chance" : 0 147c159,160 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 151c164 < "chance" : 1 --- > "chance" : 0 156c169,170 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 160c174 < "chance" : 1 --- > "chance" : 0 165c179,180 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 169c184 < "chance" : 1 --- > "chance" : 0 174c189,190 < "rules" : [ --- > "rules" : [ > [ "ignorePartMaximumRule" ], 178c194 < "chance" : 1 --- > "chance" : 0 184c200,202 < "rules" : [], --- > "rules" : [ > [ "ignorePartMaximumRule" ] > ], 186c204 < "chance" : 1 --- > "chance" : 0 191c209,211 < "rules" : [], --- > "rules" : [ > [ "ignorePartMaximumRule" ] > ], 193c213 < "chance" : 1 --- > "chance" : 0 198c218,220 < "rules" : [], --- > "rules" : [ > [ "ignorePartMaximumRule" ] > ], 200c222 < "chance" : 1 --- > "chance" : 0 205c227,229 < "rules" : [], --- > "rules" : [ > [ "ignorePartMaximumRule" ] > ], 207c231 < "chance" : 1 --- > "chance" : 0 212a237 > [ "ignorePartMaximumRule" ], 217c242 < "chance" : 1 --- > "chance" : 0 222a248 > [ "ignorePartMaximumRule" ], 227c253 < "chance" : 1 --- > "chance" : 0 232a259 > [ "ignorePartMaximumRule" ], 237c264 < "chance" : 1 --- > "chance" : 0 242a270 > [ "ignorePartMaximumRule" ], 247c275 < "chance" : 1 --- > "chance" : 0 253c281,283 < "rules" : [], --- > "rules" : [ > [ "ignorePartMaximumRule" ] > ], 255c285 < "chance" : 1 --- > "chance" : 0 260c290,292 < "rules" : [], --- > "rules" : [ > [ "ignorePartMaximumRule" ] > ], 262c294 < "chance" : 1 --- > "chance" : 0 267c299,301 < "rules" : [], --- > "rules" : [ > [ "ignorePartMaximumRule" ] > ], 269c303 < "chance" : 1 --- > "chance" : 0 274c308,310 < "rules" : [], --- > "rules" : [ > [ "ignorePartMaximumRule" ] > ], 276c312 < "chance" : 1 --- > "chance" : 0 281a318 > [ "ignorePartMaximumRule" ], 285c322 < "chance" : 1 --- > "chance" : 0 290a328 > [ "ignorePartMaximumRule" ], 295c333 < "chance" : 1 --- > "chance" : 0 300a339 > [ "ignorePartMaximumRule" ], 304c343 < "chance" : 1 --- > "chance" : 0 309a349 > [ "ignorePartMaximumRule" ], 313c353 < "chance" : 1 --- > "chance" : 0 319a360 > [ "ignorePartMaximumRule" ], 323c364 < "chance" : 1 --- > "chance" : 0 328a370 > [ "ignorePartMaximumRule" ], 332c374 < "chance" : 1 --- > "chance" : 0 337a380 > [ "ignorePartMaximumRule" ], 341c384 < "chance" : 1 --- > "chance" : 0 346a390 > [ "ignorePartMaximumRule" ], 350c394 < "chance" : 1 --- > "chance" : 0 355a400 > [ "ignorePartMaximumRule" ], 359c404 < "chance" : 1 --- > "chance" : 0 364a410 > [ "ignorePartMaximumRule" ], 368c414 < "chance" : 1 --- > "chance" : 0 373a420 > [ "ignorePartMaximumRule" ], 377c424 < "chance" : 1 --- > "chance" : 0 382a430 > [ "ignorePartMaximumRule" ], 385a434,452 > "chance" : 0 > }, > > // BLACKSMITH > { > "name" : "blacksmith1", > "rules" : [ > [ "doNotCombineWith", [ "blacksmith1", "blacksmith2" ] ] > ], > "def" : [ "tmx", "blacksmith1.json" ], > "chance" : 1 > }, > > { > "name" : "blacksmith2", > "rules" : [ > [ "doNotCombineWith", [ "blacksmith1", "blacksmith2" ] ] > ], > "def" : [ "tmx", "blacksmith2.json" ], 398,399d464 < < // BLACKSMITH dungeons\novakid\novakidvillage\novakid_template.json [TMX file differences are left out for huge size.] dungeons\novakid\novakidvillage\saloonbase1.json [TMX file differences are left out for huge size.] dungeons\novakid\novakidvillage\saloonbase2.json [TMX file differences are left out for huge size.] dungeons\novakid\novakidvillage\saloon_balcony5.json [TMX file differences are left out for huge size.] dungeons\novakid\novakidvillage\saloon_balcony6.json [TMX file differences are left out for huge size.] dungeons\novakid\novakidvillage\saloon_balcony7.json [TMX file differences are left out for huge size.] dungeons\novakid\novakidvillage\saloon_balcony8.json [TMX file differences are left out for huge size.] dungeons\novakid\novakidvillage\saloon_bedroom7.json [TMX file differences are left out for huge size.] dungeons\novakid\novakidvillage\saloon_bedroom8.json [TMX file differences are left out for huge size.] dungeons\novakid\novakidvillage\saloon_stairwell1.json [TMX file differences are left out for huge size.] dungeons\novakid\novakidvillage\saloon_stairwell2.json [TMX file differences are left out for huge size.] dungeons\novakid\novakidvillage\saloon_stairwell3.json [TMX file differences are left out for huge size.] dungeons\novakid\novakidvillage\saloon_stairwell4.json [TMX file differences are left out for huge size.] dungeons\novakid\novakidvillage\saloon_stairwell7.json [TMX file differences are left out for huge size.] dungeons\novakid\novakidvillage\saloon_stairwell8.json [TMX file differences are left out for huge size.] items\active\grapplinghooks\grapplinghook.lua 2a3 > require "/scripts/rope.lua" 149d149 < 208,337d207 < end < end < < -- Pulls the given rope as tightly as possible around the idealized tile < -- geometry without changing the start or end points of the rope < function windRope(ropePoints) < local sqrt2d2 = math.sqrt(2) / 2 < < -- Returns whether the three given points are in a straight line (returns 0), < -- go counter clocwise (returns > 0) or go clockwise (returns < 0) < local function sign(p1, p2, p3) < return (p1[1] - p3[1]) * (p2[2] - p3[2]) - (p2[1] - p3[1]) * (p1[2] - p3[2]) < end < < local i = 2 < while i < #ropePoints do < local before = ropePoints[i - 1] < local current = ropePoints[i] < local after = ropePoints[i + 1] < < local curSign = sign(before, current, after) < if curSign == 0 then < table.remove(ropePoints, i) < else < local backDirection = vec2.norm(vec2.sub(before, current)) < local forwardDirection = vec2.norm(vec2.sub(after, current)) < local windDirection = vec2.norm(vec2.add(backDirection, forwardDirection)) < < local keepCurrentPoint = false < local crossedPoints = {} < < local function testCollisionPoint(point, inward) < -- True if the given point is part of a block that this line is < -- currently winding around < local innerPoint = vec2.dot(windDirection, inward) > sqrt2d2 < < if vec2.eq(before, point) or vec2.eq(after, point) then < -- Don't need to collide with the previous and next points, they will < -- not be removed and don't need to be added again < return < elseif vec2.eq(current, point) then < -- If the current point is a previous collision with a block, keep it < -- only if it is an inner point on the rope < if innerPoint then < keepCurrentPoint = true < end < else < -- Otherwise, test for whether this point is in the triangle formed < -- by the points before, current, after. Test inclusively if this is < -- an inner point, otherwise exclusively. < < local a, b, c < if curSign < 0 then < a, b, c = after, current, before < else < a, b, c = before, current, after < end < < if innerPoint then < if sign(point, a, b) >= 0 and sign(point, b, c) >= 0 and sign(point, c, a) >= 0 then < table.insert(crossedPoints, point) < end < else < if sign(point, a, b) > 0 and sign(point, b, c) > 0 and sign(point, c, a) > 0 then < table.insert(crossedPoints, point) < end < end < end < end < < local xMin = math.ceil(math.min(before[1], current[1], after[1])) - 1 < local xMax = math.floor(math.max(before[1], current[1], after[1])) + 1 < local yMin = math.ceil(math.min(before[2], current[2], after[2])) - 1 < local yMax = math.floor(math.max(before[2], current[2], after[2])) + 1 < < for x = xMin, xMax do < for y = yMin, yMax do < if world.pointTileCollision({x + 0.5, y + 0.5}, {"dynamic", "block"}) then < testCollisionPoint({x, y}, {sqrt2d2, sqrt2d2}) < testCollisionPoint({x + 1, y}, {-sqrt2d2, sqrt2d2}) < testCollisionPoint({x + 1, y + 1}, {-sqrt2d2, -sqrt2d2}) < testCollisionPoint({x, y + 1}, {sqrt2d2, -sqrt2d2}) < end < if keepCurrentPoint then break end < end < if keepCurrentPoint then break end < end < < if keepCurrentPoint then < -- If we have found that the current point is still an inner tile < -- collision point, keep it and move on. < i = i + 1 < elseif #crossedPoints == 0 then < -- Otherwise, if there are no colliding points, then we can tighten the < -- rope by eliminating it entirely. < table.remove(ropePoints, i) < else < -- If the point is no longer an inner tile collision point but there < -- ARE colliding points, add the point that is encountered soonest when < -- winding the rope around. We still keep the current point in the < -- list when adding a new rope point, which generally makes an odd < -- empty space shape, but this is intentional as we will visit the < -- current point a second time on the next time through the loop, and < -- hopefully eliminate the space or possibly cause a second rope < -- collision. < < -- Sort the crossed points by the lowest rotation angle from the before < -- -> current vector to the new before -> crossed vector, so as not to < -- skip any crossed points when adding a new vertex. If several points < -- are along the same angle, then sort with the furthest away one < -- first. This is common on straight edges of geometry, and prevents < -- tons of repeat vertexes for a single frame < table.sort(crossedPoints, function(a, b) < local aBack = vec2.sub(before, a) < local bBack = vec2.sub(before, b) < local lenABack = vec2.mag(aBack) < local lenBBack = vec2.mag(bBack) < local dotABack = vec2.dot(vec2.div(aBack, lenABack), backDirection) < local dotBBack = vec2.dot(vec2.div(bBack, lenBBack), backDirection) < if dotABack == dotBBack then < return lenABack > lenBBack < else < return dotABack > dotBBack < end < end) < < table.insert(ropePoints, i, crossedPoints[1]) < i = i + 1 < end < end items\active\grapplinghooks\climbingrope\climbingrope.activeitem 13c13 < "animationScripts" : ["/items/active/grapplinghooks/grapplinghookanimation.lua"], --- > "animationScripts" : ["/items/active/effects/renderrope.lua"], items\active\grapplinghooks\grapplinghook\grapplinghook.activeitem 15c15 < "animationScripts" : ["/items/active/grapplinghooks/grapplinghookanimation.lua"], --- > "animationScripts" : ["/items/active/effects/renderrope.lua"], items\armors\decorative\hats\m1helmet\m1helmet.head 3c3 < "price" : 0, --- > "price" : 2500, 6c6 < "rarity" : "Common", --- > "rarity" : "Rare", objects\generic\wflowerpot\wflowerpot.object 4a5 > "category" : "decorative", objects\glitch\haypile\haypile.object 22d21 < "sitPosition" : [-8, 8], 35c34,43 < "dualImage" : "haypile.png:", --- > "image" : "haypile.png:", > "imagePosition" : [-16, -0], > > "direction" : "left", > "flipImages" : true, > > "sitPosition" : [-4, 8], > > "spaceScan" : 0.1, > "anchors" : [ "bottom" ] 36a45,47 > }, > { > "dualImage" : "haypile.png:", 38,39c49,52 < "frames" : 1, < "animationCycle" : 1.0, --- > > "direction" : "right", > > "sitPosition" : [-10, 8], objects\themed\cabin\cabinstove\cabinstove.object 51c51 < "imagePosition" : [-8, 0], --- > "imagePosition" : [-9, 0], tilesets\packed\objects-by-category\crafting.json 7c7 < "tilecount" : 76, --- > "tilecount" : 79, 430c430 < "imagePositionX" : "-8", --- > "imagePositionX" : "-16", 590a591,617 > "76" : { > "//description" : "-todo-", > "//name" : "frontierfurnace", > "//shortdescription" : "Frontier Furnace", > "imagePositionX" : "-24", > "imagePositionY" : "0", > "object" : "frontierfurnace", > "tilesetDirection" : "right" > }, > "77" : { > "//description" : "-todo-", > "//name" : "frontierfurnace_orientation1", > "//shortdescription" : "Frontier Furnace", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "frontierfurnace", > "tilesetDirection" : "right" > }, > "78" : { > "//description" : "A quaint metal stove, perfect for cooking.", > "//name" : "cabinstove_orientation1", > "//shortdescription" : "Cabin Stove", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "cabinstove", > "tilesetDirection" : "right" > }, 831a859,867 > }, > "76" : { > "image" : "../../../../../tiled/packed/objects/frontierfurnace.png" > }, > "77" : { > "image" : "../../../../../tiled/packed/objects/frontierfurnace_orientation1.png" > }, > "78" : { > "image" : "../../../../../tiled/packed/objects/cabinstove_orientation1.png" tilesets\packed\objects-by-category\decorative.json 7c7 < "tilecount" : 1329, --- > "tilecount" : 1331, 3150a3151,3159 > "1329" : { > "//description" : "A pile of hay. Probably not a great hiding place.", > "//name" : "haypile_orientation2", > "//shortdescription" : "Hay Pile", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "haypile", > "tilesetDirection" : "right" > }, 3159a3169,3177 > "1330" : { > "//description" : "-todo-", > "//name" : "frontiercoffin", > "//shortdescription" : "Frontier Coffin", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "frontiercoffin", > "tilesetDirection" : "right" > }, 12167a12186,12188 > "1329" : { > "image" : "../../../../../tiled/packed/objects/haypile_orientation2.png" > }, 12169a12191,12193 > }, > "1330" : { > "image" : "../../../../../tiled/packed/objects/frontiercoffin.png" tilesets\packed\objects-by-category\furniture.json 7c7 < "tilecount" : 332, --- > "tilecount" : 333, 2284a2285,2293 > "332" : { > "//description" : "-todo-", > "//name" : "frontierchair", > "//shortdescription" : "Frontier Chair", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "frontierchair", > "tilesetDirection" : "right" > }, 3663a3673,3675 > }, > "332" : { > "image" : "../../../../../tiled/packed/objects/frontierchair.png" tilesets\packed\objects-by-colonytag\cabin.json 7c7 < "tilecount" : 7, --- > "tilecount" : 8, 32c32 < "imagePositionX" : "-8", --- > "imagePositionX" : "-16", 71a72,80 > }, > "7" : { > "//description" : "A quaint metal stove, perfect for cooking.", > "//name" : "cabinstove_orientation1", > "//shortdescription" : "Cabin Stove", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "cabinstove", > "tilesetDirection" : "right" 94a104,106 > }, > "7" : { > "image" : "../../../../../tiled/packed/objects/cabinstove_orientation1.png" tilesets\packed\objects-by-colonytag\cooking.json 7c7 < "tilecount" : 29, --- > "tilecount" : 30, 95c95 < "imagePositionX" : "-8", --- > "imagePositionX" : "-16", 205a206,214 > "29" : { > "//description" : "A quaint metal stove, perfect for cooking.", > "//name" : "cabinstove_orientation1", > "//shortdescription" : "Cabin Stove", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "cabinstove", > "tilesetDirection" : "right" > }, 335a345,347 > }, > "29" : { > "image" : "../../../../../tiled/packed/objects/cabinstove_orientation1.png" tilesets\packed\objects-by-colonytag\crafting.json 7c7 < "tilecount" : 37, --- > "tilecount" : 39, 231a232,249 > "37" : { > "//description" : "-todo-", > "//name" : "frontierfurnace", > "//shortdescription" : "Frontier Furnace", > "imagePositionX" : "-24", > "imagePositionY" : "0", > "object" : "frontierfurnace", > "tilesetDirection" : "right" > }, > "38" : { > "//description" : "-todo-", > "//name" : "frontierfurnace_orientation1", > "//shortdescription" : "Frontier Furnace", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "frontierfurnace", > "tilesetDirection" : "right" > }, 364a383,388 > }, > "37" : { > "image" : "../../../../../tiled/packed/objects/frontierfurnace.png" > }, > "38" : { > "image" : "../../../../../tiled/packed/objects/frontierfurnace_orientation1.png" tilesets\packed\objects-by-colonytag\glitch.json 7c7 < "tilecount" : 181, --- > "tilecount" : 182, 805a806,814 > "181" : { > "//description" : "A pile of hay. Probably not a great hiding place.", > "//name" : "haypile_orientation2", > "//shortdescription" : "Hay Pile", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "haypile", > "tilesetDirection" : "right" > }, 1861a1871,1873 > }, > "181" : { > "image" : "../../../../../tiled/packed/objects/haypile_orientation2.png" tilesets\packed\objects-by-colonytag\glitchvillage.json 7c7 < "tilecount" : 67, --- > "tilecount" : 68, 566a567,575 > "67" : { > "//description" : "A pile of hay. Probably not a great hiding place.", > "//name" : "haypile_orientation2", > "//shortdescription" : "Hay Pile", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "haypile", > "tilesetDirection" : "right" > }, 784a794,796 > }, > "67" : { > "image" : "../../../../../tiled/packed/objects/haypile_orientation2.png" tilesets\packed\objects-by-colonytag\light.json 7c7 < "tilecount" : 351, --- > "tilecount" : 354, 708c708 < "imagePositionX" : "-8", --- > "imagePositionX" : "-16", 2464a2465,2491 > "351" : { > "//description" : "-todo-", > "//name" : "frontierfurnace", > "//shortdescription" : "Frontier Furnace", > "imagePositionX" : "-24", > "imagePositionY" : "0", > "object" : "frontierfurnace", > "tilesetDirection" : "right" > }, > "352" : { > "//description" : "-todo-", > "//name" : "frontierfurnace_orientation1", > "//shortdescription" : "Frontier Furnace", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "frontierfurnace", > "tilesetDirection" : "right" > }, > "353" : { > "//description" : "A quaint metal stove, perfect for cooking.", > "//name" : "cabinstove_orientation1", > "//shortdescription" : "Cabin Stove", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "cabinstove", > "tilesetDirection" : "right" > }, 3921a3949,3957 > }, > "351" : { > "image" : "../../../../../tiled/packed/objects/frontierfurnace.png" > }, > "352" : { > "image" : "../../../../../tiled/packed/objects/frontierfurnace_orientation1.png" > }, > "353" : { > "image" : "../../../../../tiled/packed/objects/cabinstove_orientation1.png" tilesets\packed\objects-by-colonytag\nature.json 7c7 < "tilecount" : 201, --- > "tilecount" : 202, 1040a1041,1049 > "201" : { > "//description" : "A pile of hay. Probably not a great hiding place.", > "//name" : "haypile_orientation2", > "//shortdescription" : "Hay Pile", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "haypile", > "tilesetDirection" : "right" > }, 2154a2164,2166 > }, > "201" : { > "image" : "../../../../../tiled/packed/objects/haypile_orientation2.png" tilesets\packed\objects-by-colonytag\novakid.json 7c7 < "tilecount" : 57, --- > "tilecount" : 61, 473a474,500 > "57" : { > "//description" : "-todo-", > "//name" : "frontierfurnace", > "//shortdescription" : "Frontier Furnace", > "imagePositionX" : "-24", > "imagePositionY" : "0", > "object" : "frontierfurnace", > "tilesetDirection" : "right" > }, > "58" : { > "//description" : "-todo-", > "//name" : "frontierfurnace_orientation1", > "//shortdescription" : "Frontier Furnace", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "frontierfurnace", > "tilesetDirection" : "right" > }, > "59" : { > "//description" : "-todo-", > "//name" : "frontierchair", > "//shortdescription" : "Frontier Chair", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "frontierchair", > "tilesetDirection" : "right" > }, 482a510,518 > "60" : { > "//description" : "-todo-", > "//name" : "frontiercoffin", > "//shortdescription" : "Frontier Coffin", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "frontiercoffin", > "tilesetDirection" : "right" > }, 669a706,714 > "57" : { > "image" : "../../../../../tiled/packed/objects/frontierfurnace.png" > }, > "58" : { > "image" : "../../../../../tiled/packed/objects/frontierfurnace_orientation1.png" > }, > "59" : { > "image" : "../../../../../tiled/packed/objects/frontierchair.png" > }, 671a717,719 > }, > "60" : { > "image" : "../../../../../tiled/packed/objects/frontiercoffin.png" tilesets\packed\objects-by-colonytag\novakidvillage.json 7c7 < "tilecount" : 41, --- > "tilecount" : 45, 333a334,369 > "41" : { > "//description" : "-todo-", > "//name" : "frontierfurnace", > "//shortdescription" : "Frontier Furnace", > "imagePositionX" : "-24", > "imagePositionY" : "0", > "object" : "frontierfurnace", > "tilesetDirection" : "right" > }, > "42" : { > "//description" : "-todo-", > "//name" : "frontierfurnace_orientation1", > "//shortdescription" : "Frontier Furnace", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "frontierfurnace", > "tilesetDirection" : "right" > }, > "43" : { > "//description" : "-todo-", > "//name" : "frontierchair", > "//shortdescription" : "Frontier Chair", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "frontierchair", > "tilesetDirection" : "right" > }, > "44" : { > "//description" : "-todo-", > "//name" : "frontiercoffin", > "//shortdescription" : "Frontier Coffin", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "frontiercoffin", > "tilesetDirection" : "right" > }, 487a524,535 > }, > "41" : { > "image" : "../../../../../tiled/packed/objects/frontierfurnace.png" > }, > "42" : { > "image" : "../../../../../tiled/packed/objects/frontierfurnace_orientation1.png" > }, > "43" : { > "image" : "../../../../../tiled/packed/objects/frontierchair.png" > }, > "44" : { > "image" : "../../../../../tiled/packed/objects/frontiercoffin.png" tilesets\packed\objects-by-race\generic.json 7c7 < "tilecount" : 1775, --- > "tilecount" : 1776, 1023c1023 < "imagePositionX" : "-8", --- > "imagePositionX" : "-16", 7288a7289,7297 > "1775" : { > "//description" : "A quaint metal stove, perfect for cooking.", > "//name" : "cabinstove_orientation1", > "//shortdescription" : "Cabin Stove", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "cabinstove", > "tilesetDirection" : "right" > }, 17523a17533,17535 > }, > "1775" : { > "image" : "../../../../../tiled/packed/objects/cabinstove_orientation1.png" tilesets\packed\objects-by-race\glitch.json 7c7 < "tilecount" : 225, --- > "tilecount" : 226, 1136a1137,1145 > "225" : { > "//description" : "A pile of hay. Probably not a great hiding place.", > "//name" : "haypile_orientation2", > "//shortdescription" : "Hay Pile", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "haypile", > "tilesetDirection" : "right" > }, 2217a2227,2229 > }, > "225" : { > "image" : "../../../../../tiled/packed/objects/haypile_orientation2.png" tilesets\packed\objects-by-race\novakid.json 7c7 < "tilecount" : 57, --- > "tilecount" : 61, 475a476,502 > "57" : { > "//description" : "-todo-", > "//name" : "frontierfurnace", > "//shortdescription" : "Frontier Furnace", > "imagePositionX" : "-24", > "imagePositionY" : "0", > "object" : "frontierfurnace", > "tilesetDirection" : "right" > }, > "58" : { > "//description" : "-todo-", > "//name" : "frontierfurnace_orientation1", > "//shortdescription" : "Frontier Furnace", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "frontierfurnace", > "tilesetDirection" : "right" > }, > "59" : { > "//description" : "-todo-", > "//name" : "frontierchair", > "//shortdescription" : "Frontier Chair", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "frontierchair", > "tilesetDirection" : "right" > }, 484a512,520 > "60" : { > "//description" : "-todo-", > "//name" : "frontiercoffin", > "//shortdescription" : "Frontier Coffin", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "frontiercoffin", > "tilesetDirection" : "right" > }, 669a706,714 > "57" : { > "image" : "../../../../../tiled/packed/objects/frontierfurnace.png" > }, > "58" : { > "image" : "../../../../../tiled/packed/objects/frontierfurnace_orientation1.png" > }, > "59" : { > "image" : "../../../../../tiled/packed/objects/frontierchair.png" > }, 671a717,719 > }, > "60" : { > "image" : "../../../../../tiled/packed/objects/frontiercoffin.png" tilesets\packed\objects-by-type\container.json 1228c1228 < "imagePositionX" : "-8", --- > "imagePositionX" : "-16", tilesets\packed\objects-by-type\loungeable.json 7c7 < "tilecount" : 263, --- > "tilecount" : 265, 1609a1610,1627 > "263" : { > "//description" : "A pile of hay. Probably not a great hiding place.", > "//name" : "haypile_orientation2", > "//shortdescription" : "Hay Pile", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "haypile", > "tilesetDirection" : "right" > }, > "264" : { > "//description" : "-todo-", > "//name" : "frontierchair", > "//shortdescription" : "Frontier Chair", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "frontierchair", > "tilesetDirection" : "right" > }, 2834a2853,2858 > }, > "263" : { > "image" : "../../../../../tiled/packed/objects/haypile_orientation2.png" > }, > "264" : { > "image" : "../../../../../tiled/packed/objects/frontierchair.png" treasure\largedungeons.treasurepools 1705a1706,1724 > "novakidvillageMiningTreasure" : [ > [1, { > "pool" : [ > {"weight" : 0.2, "pool" : "money"}, > {"weight" : 0.2, "pool" : "ore"}, > {"weight" : 0.2, "item" : ["corefragmentore", 1]}, > {"weight" : 0.15, "item" : ["cobblestonematerial", 15]}, > {"weight" : 0.15, "item" : [ "climbingrope", 3]}, > {"weight" : 0.1, "item" : ["darkwoodmaterial", 10]}, > {"weight" : 0.1, "item" : [ "torch", 5]}, > {"weight" : 0.1, "pool" : "tool"}, > {"weight" : 0.08, "item" : [ "oillantern1", 2]}, > {"weight" : 0.05, "item" : [ "bomb", 1]}, > {"weight" : 0.02, "pool" : "weapon"} > ], > "allowDuplication" : true > }] > ], >