FILES ----- items\armors\human\human-tier2\chestm.png items\armors\human\human-tier2\fsleeve.png monsters\capturepod.lua objects\farmables\rice\riceseed.object objects\farmables\rice\wildriceseed.object objects\generic\apexdungeonpod\apexdungeonpod.animation objects\generic\apexdungeonpod\apexdungeonpod.object objects\generic\aviandungeonpod\aviandungeonpod.animation objects\generic\aviandungeonpod\aviandungeonpod.object objects\generic\cultistaltar\cultistaltar.object objects\generic\dungeonpod\dungeonpod.animation objects\generic\dungeonpod\dungeonpod.object objects\generic\florandungeonpod\florandungeonpod.animation objects\generic\florandungeonpod\florandungeonpod.object objects\generic\glitchdungeonpod\glitchdungeonpod.animation objects\generic\glitchdungeonpod\glitchdungeonpod.object objects\generic\volcanopod\volcanopod.animation objects\generic\volcanopod\volcanopod.object stats\effects\swimming\swimming.lua tech\blink\blink.lua tech\blink\randblink.tech tech\blink\targetblink.tech DIFFS ----- monsters\capturepod.lua 105c105,106 < arguments = parameters --- > arguments = parameters, > level = parameters.level objects\farmables\rice\riceseed.object 26c26 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1], [1, 2], [0, 2] ], --- > "spaces" : [ [0, 0], [0, 1], [0, 2] ], objects\farmables\rice\wildriceseed.object 26c26 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1], [1, 2], [0, 2] ], --- > "spaces" : [ [0, 0], [0, 1], [0, 2] ], objects\generic\apexdungeonpod\apexdungeonpod.animation 42a43,46 > }, > > "sounds" : { > "use" : [ "/sfx/objects/bardoor_open.wav" ] objects\generic\apexdungeonpod\apexdungeonpod.object 45,46d44 < "useSounds" : [ "/sfx/objects/bardoor_open.wav" ], < objects\generic\aviandungeonpod\aviandungeonpod.animation 42a43,46 > }, > > "sounds" : { > "use" : [ "/sfx/objects/bardoor_open.wav" ] objects\generic\aviandungeonpod\aviandungeonpod.object 45,46d44 < "useSounds" : [ "/sfx/objects/bardoor_open.wav" ], < objects\generic\cultistaltar\cultistaltar.object 38,39d37 < "useSounds" : [ "/sfx/objects/bardoor_open.wav" ], < objects\generic\dungeonpod\dungeonpod.animation 42a43,46 > }, > > "sounds" : { > "use" : [ "/sfx/objects/bardoor_open.wav" ] objects\generic\dungeonpod\dungeonpod.object 45,46d44 < "useSounds" : [ "/sfx/objects/bardoor_open.wav" ], < objects\generic\florandungeonpod\florandungeonpod.animation 42a43,46 > }, > > "sounds" : { > "use" : [ "/sfx/objects/bardoor_open.wav" ] objects\generic\florandungeonpod\florandungeonpod.object 45,46d44 < "useSounds" : [ "/sfx/objects/bardoor_open.wav" ], < objects\generic\glitchdungeonpod\glitchdungeonpod.animation 42a43,46 > }, > > "sounds" : { > "use" : [ "/sfx/objects/bardoor_open.wav" ] objects\generic\glitchdungeonpod\glitchdungeonpod.object 45,46d44 < "useSounds" : [ "/sfx/objects/bardoor_open.wav" ], < objects\generic\volcanopod\volcanopod.animation 42a43,46 > }, > > "sounds" : { > "use" : [ "/sfx/objects/bardoor_open.wav" ] objects\generic\volcanopod\volcanopod.object 45,46d44 < "useSounds" : [ "/sfx/objects/bardoor_open.wav" ], < stats\effects\swimming\swimming.lua 21c21 < if not allowedType then return false end --- > if not allowedType() then return false end tech\blink\blink.lua 14a15 > local blinkHeadOffset = tech.parameter("blinkHeadOffset") 23c24 < position = {collisionBlocks[1][1] - diff[1], collisionBlocks[1][2] - diff[2]} --- > position = {collisionBlocks[1][1] - math.min(diff[1], 0), collisionBlocks[1][2] - math.min(diff[2], 0)} 27,34d27 < if doCollisionCheck and not checkCollision(position) then < local spaceFound = false < for i = 1, blinkCollisionCheckDiameter * 2 do < if checkCollision({position[1] + i / 2, position[2] + i / 2}) then < position = {position[1] + i / 2, position[2] + i / 2} < spaceFound = true < break < end 36,40c29,31 < if checkCollision({position[1] - i / 2, position[2] + i / 2}) then < position = {position[1] - i / 2, position[2] + i / 2} < spaceFound = true < break < end --- > if doCollisionCheck then > local diff = world.distance(position, mcontroller.position()) > local collisionPoly = mcontroller.collisionPoly() 42,45c33,37 < if checkCollision({position[1] + i / 2, position[2] - i / 2}) then < position = {position[1] + i / 2, position[2] - i / 2} < spaceFound = true < break --- > --Add foot offset if there is ground > if diff[2] < 0 then > local groundBlocks = world.collisionBlocksAlongLine(position, {position[1], position[2] + blinkFootOffset}, true, 1) > if #groundBlocks > 0 then > position[2] = groundBlocks[1][2] + 1 - blinkFootOffset 46a39 > end 48,51c41,45 < if checkCollision({position[1] - i / 2, position[2] - i / 2}) then < position = {position[1] - i / 2, position[2] - i / 2} < spaceFound = true < break --- > --Add head offset if there is ceiling > if diff[2] > 0 then > local ceilingBlocks = world.collisionBlocksAlongLine(position, {position[1], position[2] + blinkHeadOffset}, true, 1) > if #ceilingBlocks > 0 then > position[2] = ceilingBlocks[1][2] - blinkHeadOffset 55c49,52 < if not spaceFound then --- > --Resolve position > position = world.resolvePolyCollision(collisionPoly, position, blinkCollisionCheckDiameter) > > if not position then 109a107 > self.inputSpecial = false 117c115,116 < if args.moves["special"] == 1 then --- > if args.moves["special"] == 1 and not self.inputSpecial then > self.inputSpecial = true 118a118,119 > elseif args.moves["special"] == nil or args.moves["special"] ~= 1 then > self.inputSpecial = false tech\blink\randblink.tech 15a16 > "blinkHeadOffset" : 1, tech\blink\targetblink.tech 15a16 > "blinkHeadOffset" : 1,