FILES ----- spawner.config versioning.config world_template.config behaviors\npc\finalreact.behavior behaviors\npc\hostileguard.behavior [NEW] behaviors\npc\reactions\crouch.behavior [NEW] behaviors\npc\reactions\crouchcollect.behavior behaviors\tenant\returnhome.behavior biomes\surface\snow.biome biomes\surface_detached\alpine.biome [NEW] dungeons\microdungeons\biomes\snow\snowarch2.json [NEW] dungeons\microdungeons\biomes\snow\snowbunker1.json [NEW] dungeons\microdungeons\biomes\snow\snowhut1.json [NEW] dungeons\microdungeons\biomes\snow\snowhut2.json dungeons\microdungeons\biomes\snow\snowmicrodungeons.dungeon [NEW] dungeons\undergroundmaze\mazeglitch1\endleft1.json dungeons\undergroundmaze\mazeglitch1\endleft1a.json dungeons\undergroundmaze\mazeglitch1\endleft1achest.json [NEW] dungeons\undergroundmaze\mazeglitch1\endleft2.json dungeons\undergroundmaze\mazeglitch1\endleft2b.json [NEW] dungeons\undergroundmaze\mazeglitch1\endleft2bchest.json dungeons\undergroundmaze\mazeglitch1\endleft2c.json [NEW] dungeons\undergroundmaze\mazeglitch1\endleft2cchest.json dungeons\undergroundmaze\mazeglitch1\endleft2d.json [NEW] dungeons\undergroundmaze\mazeglitch1\endleft2dchest.json dungeons\undergroundmaze\mazeglitch1\endleft2e.json [NEW] dungeons\undergroundmaze\mazeglitch1\endleft2echest.json dungeons\undergroundmaze\mazeglitch1\endright1a.json dungeons\undergroundmaze\mazeglitch1\endright1achest.json dungeons\undergroundmaze\mazeglitch1\endright2b.json [NEW] dungeons\undergroundmaze\mazeglitch1\endright2bchest.json dungeons\undergroundmaze\mazeglitch1\endright2c.json [NEW] dungeons\undergroundmaze\mazeglitch1\endright2cchest.json dungeons\undergroundmaze\mazeglitch1\endright2d.json [NEW] dungeons\undergroundmaze\mazeglitch1\endright2dchest.json dungeons\undergroundmaze\mazeglitch1\endright2e.json [NEW] dungeons\undergroundmaze\mazeglitch1\endright2echest.json dungeons\undergroundmaze\mazeglitch1\entryleft.json dungeons\undergroundmaze\mazeglitch1\entryright.json dungeons\undergroundmaze\mazeglitch1\entrytop.json dungeons\undergroundmaze\mazeglitch1\hall1a.json dungeons\undergroundmaze\mazeglitch1\hall1b.json dungeons\undergroundmaze\mazeglitch1\hall1c.json dungeons\undergroundmaze\mazeglitch1\hall1d.json dungeons\undergroundmaze\mazeglitch1\hall1e.json dungeons\undergroundmaze\mazeglitch1\hall1f.json dungeons\undergroundmaze\mazeglitch1\hall1g.json dungeons\undergroundmaze\mazeglitch1\hall1h.json dungeons\undergroundmaze\mazeglitch1\hall1i.json dungeons\undergroundmaze\mazeglitch1\hall2a.json dungeons\undergroundmaze\mazeglitch1\hall2b.json dungeons\undergroundmaze\mazeglitch1\hall2c.json dungeons\undergroundmaze\mazeglitch1\hall2d.json dungeons\undergroundmaze\mazeglitch1\hall2e.json dungeons\undergroundmaze\mazeglitch1\hall2f.json dungeons\undergroundmaze\mazeglitch1\hall2g.json dungeons\undergroundmaze\mazeglitch1\hall2h.json dungeons\undergroundmaze\mazeglitch1\hall2i.json dungeons\undergroundmaze\mazeglitch1\mazeglitch1.dungeon [NEW] humanoid\dances\armswingdance.dance [NEW] humanoid\dances\crouchcollect.dance [NEW] humanoid\dances\drink.dance [NEW] humanoid\dances\hylotldance.dance humanoid\dances\posedance.dance [NEW] humanoid\dances\wiggledance.dance [NEW] monsters\critter\cliffcritter\body.frames [NEW] monsters\critter\cliffcritter\body.monsterpart [NEW] monsters\critter\cliffcritter\body.png [NEW] monsters\critter\cliffcritter\cliffcritter.animation [NEW] monsters\critter\cliffcritter\cliffcritter.monstertype [NEW] monsters\critter\yeticritter\body.frames [NEW] monsters\critter\yeticritter\body.monsterpart [NEW] monsters\critter\yeticritter\body.png [NEW] monsters\critter\yeticritter\yeticritter.animation [NEW] monsters\critter\yeticritter\yeticritter.monstertype npcs\default_reactions.config [NEW] objects\generic\seismograph\seismograph.frames [NEW] objects\generic\seismograph\seismograph.object [NEW] objects\generic\seismograph\seismograph.png [NEW] objects\generic\seismograph\seismographicon.png [NEW] objects\generic\seismograph\seismographlit.frames [NEW] objects\generic\seismograph\seismographlit.png objects\generic\wreckvendingmachine\wreckvendingmachine.object objects\human\jukebox\jukebox.object objects\human\vendingmachine\vendingmachine.object objects\human\watermachine\watermachine.object objects\hylotl\arcadeblue\arcadeblue.object objects\hylotl\arcadegreen\arcadegreen.object objects\hylotl\arcadeorange\arcadeorange.object objects\hylotl\arcadered\arcadered.object objects\hylotl\arcadestarbound\arcadestarbound.object objects\hylotl\arcadeyellow\arcadeyellow.object objects\hylotl\hylotlspeaker\hylotlradio.object [NEW] objects\minibiome\snow\beaconsnow\beaconsnow.frames [NEW] objects\minibiome\snow\beaconsnow\beaconsnow.object [NEW] objects\minibiome\snow\beaconsnow\beaconsnow.png [NEW] objects\minibiome\snow\beaconsnow\beaconsnowicon.png objects\outpost\watercooler\watercooler.object scripts\pathing.lua scripts\versioningutils.lua terrain\solid.terrain terrain\cave\corecaves.terrain terrain\cave\densecaves.terrain terrain\cave\mooncaves.terrain terrain\cave\normalcaves.terrain terrain\cave\surfacecaves.terrain [NEW] versioning\worldmetadata_9_10.lua DIFFS ----- spawner.config 1210c1210,1238 < }, --- > }, > > "yeticritter" : { > "spawnParameters" : { > "area" : "surface", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.02, > "monsterType" : "yeticritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "cliffcritter" : { > "spawnParameters" : { > "area" : "surface", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.02, > "monsterType" : "cliffcritter", > "monsterParameters" : { > "aggressive" : false > } > }, versioning.config 3c3 < "WorldMetadata" : 9, --- > "WorldMetadata" : 10, world_template.config 10c10,13 < "playerStartFreeBlocksHeight" : 3 --- > "playerStartFreeBlocksHeight" : 3, > > "surfaceCaveAttenuationDist" : 16, > "surfaceCaveAttenuationFactor" : 0.2 behaviors\npc\finalreact.behavior 23a24,31 > "title": "playSimpleReaction", > "type": "action", > "name": "playSimpleReaction", > "parameters": { > "reaction": "reaction" > } > }, > { behaviors\npc\hostileguard.behavior 2c2 < "name": "hostile guard", --- > "name": "hostileguard", behaviors\tenant\returnhome.behavior 53,54c53,54 < "name": "returnHome.minDistance", < "default": 3 --- > "default": 3, > "path": "returnHome.minDistance" biomes\surface\snow.biome 8c8 < "extraSpawns" : [ "frostfly", "icetip", "bunnycommon", "reasonablecritter", "redbreastcritter", "wintercritter" ], --- > "extraSpawns" : [ "frostfly", "icetip", "bunnycommon", "reasonablecritter", "redbreastcritter", "yeticritter", "wintercritter" ], 15c15 < "extraSpawns" : [ "frostfly", "frostfleck", "bunnycommon", "reasonablecritter", "redbreastcritter", "wintercritter" ], --- > "extraSpawns" : [ "frostfly", "frostfleck", "bunnycommon", "reasonablecritter", "redbreastcritter", "yeticritter", "wintercritter" ], biomes\surface_detached\alpine.biome 8c8 < "extraSpawns" : [ ], --- > "extraSpawns" : [ "cliffcritter" ], 15c15 < "extraSpawns" : [ ], --- > "extraSpawns" : [ "cliffcritter" ], dungeons\microdungeons\biomes\snow\snowmicrodungeons.dungeon 8c8 < "anchor" : [ "icespikepit1", "icespikepit2", "frozenlake1", "snowarch1", "snowpitfall1" ], --- > "anchor" : [ "icespikepit1", "icespikepit2", "frozenlake1", "snowarch1", "snowarch2", "snowbunker1", "snowhut1", "snowhut2", "snowpitfall1" ], 44a45,72 > }, > { > "name" : "snowarch2", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowarch2.json" ] > }, > { > "name" : "snowbunker1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowbunker1.json" ] > }, > { > "name" : "snowhut1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowhut1.json" ] > }, > { > "name" : "snowhut2", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowhut2.json" ] dungeons\undergroundmaze\mazeglitch1\endleft1a.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\endleft1achest.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\endleft2b.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\endleft2c.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\endleft2d.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\endleft2e.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\endright1a.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\endright1achest.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\endright2b.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\endright2c.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\endright2d.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\endright2e.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\entryleft.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\entryright.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\entrytop.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall1a.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall1b.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall1c.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall1d.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall1e.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall1f.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall1g.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall1h.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall1i.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall2a.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall2b.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall2c.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall2d.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall2e.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall2f.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall2g.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall2h.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\hall2i.json [TMX file differences are left out for huge size.] dungeons\undergroundmaze\mazeglitch1\mazeglitch1.dungeon 571c571 < "chance" : 0.5 --- > "chance" : 1 588c588 < "chance" : 0.5 --- > "chance" : 1 605c605 < "chance" : 0.5 --- > "chance" : 1 622c622 < "chance" : 0.5 --- > "chance" : 1 688c688 < "chance" : 0.5 --- > "chance" : 1 705c705 < "chance" : 0.5 --- > "chance" : 1 722c722 < "chance" : 0.5 --- > "chance" : 1 739c739 < "chance" : 0.5 --- > "chance" : 1 775a776,784 > "name" : "endright2bChest", > "rules" : [ > [ "ignorePartMaximumRule" ], > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "endright2bChest.json" ], > "chance" : 0.25 > }, > { 783a793,801 > "name" : "endright2cChest", > "rules" : [ > [ "ignorePartMaximumRule" ], > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "endright2cChest.json" ], > "chance" : 0.25 > }, > { 791a810,818 > "name" : "endright2dChest", > "rules" : [ > [ "ignorePartMaximumRule" ], > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "endright2dChest.json" ], > "chance" : 0.25 > }, > { 797a825,833 > }, > { > "name" : "endright2eChest", > "rules" : [ > [ "ignorePartMaximumRule" ], > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "endright2eChest.json" ], > "chance" : 0.25 humanoid\dances\posedance.dance 4c4 < "cycle" : 2.0, --- > "cycle" : 1.0, 12,18c12 < [ "idle.4", "idle.4", "idle.4", [-1, 0], [0, 0], [0, 0] ], < [ "idle.5", "idle.5", "idle.5", [0, 0], [0, 0], [0, 0] ], < [ "idle.2", "idle.5", "idle.5", [-1, 0], [0, 0], [0, 0] ], < [ "idle.4", "idle.3", "idle.3", [-1, 0], [1, 0], [1, 0] ], < [ "idle.5", "idle.2", "idle.2", [0, 0], [0, 0], [0, 0] ], < [ "idle.4", "idle.1", "idle.1", [0, 0], [0, 0], [0, 0] ], < [ "idle.5", "idle.3", "idle.3", [0, 0], [2, 0], [2, 0] ] --- > [ "idle.4", "idle.4", "idle.4", [-1, 0], [0, 0], [0, 0] ] npcs\default_reactions.config 71a72,76 > "music" : [ > [1.0, "posedance"], > [1.0, "wiggledance"], > [1.0, "armswingdance"] > ], 157,160d161 < "posedance" : { < "emote" : "happy", < "dance" : "posedance" < }, 167a169,188 > }, > "drink" : { > "emote" : "oh", > "dance" : "drink" > }, > "hylotldance" : { > "emote" : "happy", > "dance" : "hylotldance" > }, > "posedance" : { > "emote" : "happy", > "dance" : "posedance" > }, > "wiggledance" : { > "emote" : "happy", > "dance" : "wiggledance" > }, > "armswingdance" : { > "emote" : "wink", > "dance" : "armswingdance" 215,217d235 < "posedance" : { < "behavior" : "reaction-posedance" < }, 222a241,246 > }, > "crouch" : { > "behavior" : "reaction-crouch" > }, > "crouchcollect" : { > "behavior" : "reaction-crouchcollect" objects\generic\wreckvendingmachine\wreckvendingmachine.object 32c32,55 < ] --- > ], > > "scripts" : [ "/scripts/npcToyObject.lua" ], > "npcToy" : { > "influence" : [ > "vendingmachineActivate", > "vendingmachineCollect", > "vendingmachineBroken" > ], > "defaultReactions" : { > "vendingmachineActivate" : [ > [1.0, "pressbutton"] > ], > "vendingmachineCollect" : [ > [1.0, "crouchcollect"] > ], > "vendingmachineBroken" : [ > [1.0, "punch"] > ] > }, > "preciseStandPositionLeft" : [-0.5, 0.0], > "preciseStandPositionRight" : [2.0, 0.0], > "maxNpcs" : 1 > } objects\human\jukebox\jukebox.object 66a67 > "music", 70,72d70 < "music" : [ < [1.0, "posedance"] < ], 74d71 < [1.0, "posedance"], objects\human\vendingmachine\vendingmachine.object 56c56,59 < "scripts" : [ "/objects/wired/light/light.lua" ], --- > "scripts" : [ > "/objects/wired/light/light.lua", > "/scripts/npcToyObject.lua" > ], 64c67,92 < "npcToy" : {} --- > "npcToy" : { > "influence" : [ > "vendingmachineActivate", > "vendingmachineCollect", > "vendingmachineConsume", > "vendingmachineComplete" > ], > "defaultReactions" : { > "vendingmachineActivate" : [ > [1.0, "pressbutton"] > ], > "vendingmachineCollect" : [ > [1.0, "crouchcollect"] > ], > "vendingmachineConsume" : [ > [1.0, "drink"] > ], > "vendingmachineComplete" : [ > [1.0, "smile"], > [0.1, "vomit"] > ] > }, > "preciseStandPositionLeft" : [-0.5, 0.0], > "preciseStandPositionRight" : [2.0, 0.0], > "maxNpcs" : 1 > } objects\human\watermachine\watermachine.object 33c33,55 < "npcToy" : {} --- > "scripts" : [ "/scripts/npcToyObject.lua" ], > "npcToy" : { > "influence" : [ > "watercoolerCollect", > "watercoolerConsume", > "watercoolerComplete" > ], > "defaultReactions" : { > "watercoolerCollect" : [ > [1.0, "crouchcollect"] > ], > "watercoolerConsume" : [ > [1.0, "drink"] > ], > "watercoolerComplete" : [ > [1.0, "smile"], > [0.1, "vomit"] > ] > }, > "preciseStandPositionLeft" : [-1.0, 0.0], > "preciseStandPositionRight" : [1.0, 0.0], > "maxNpcs" : 1 > } objects\hylotl\arcadeblue\arcadeblue.object 35c35,55 < "npcToy" : {} --- > "scripts" : [ "/scripts/npcToyObject.lua"], > "npcToy" : { > "influence" : [ > "videogame", > "videogame", > "videogameComplete" > ], > "defaultReactions" : { > "videogame" : [ > [1.0, "typing"] > ], > "videogameComplete" : [ > [1.0, "smile"], > [1.0, "annoyed"], > [1.0, "punch"] > ] > }, > "preciseStandPositionLeft" : [-0.5, 0.0], > "preciseStandPositionRight" : [2.0, 0.0], > "maxNpcs" : 1 > } objects\hylotl\arcadegreen\arcadegreen.object 35c35,55 < "npcToy" : {} --- > "scripts" : [ "/scripts/npcToyObject.lua"], > "npcToy" : { > "influence" : [ > "videogame", > "videogame", > "videogameComplete" > ], > "defaultReactions" : { > "videogame" : [ > [1.0, "typing"] > ], > "videogameComplete" : [ > [1.0, "smile"], > [1.0, "annoyed"], > [1.0, "punch"] > ] > }, > "preciseStandPositionLeft" : [-0.5, 0.0], > "preciseStandPositionRight" : [2.0, 0.0], > "maxNpcs" : 1 > } objects\hylotl\arcadeorange\arcadeorange.object 35c35,55 < "npcToy" : {} --- > "scripts" : [ "/scripts/npcToyObject.lua"], > "npcToy" : { > "influence" : [ > "videogame", > "videogame", > "videogameComplete" > ], > "defaultReactions" : { > "videogame" : [ > [1.0, "typing"] > ], > "videogameComplete" : [ > [1.0, "smile"], > [1.0, "annoyed"], > [1.0, "punch"] > ] > }, > "preciseStandPositionLeft" : [-0.5, 0.0], > "preciseStandPositionRight" : [2.0, 0.0], > "maxNpcs" : 1 > } objects\hylotl\arcadered\arcadered.object 35c35,55 < "npcToy" : {} --- > "scripts" : [ "/scripts/npcToyObject.lua"], > "npcToy" : { > "influence" : [ > "videogame", > "videogame", > "videogameComplete" > ], > "defaultReactions" : { > "videogame" : [ > [1.0, "typing"] > ], > "videogameComplete" : [ > [1.0, "smile"], > [1.0, "annoyed"], > [1.0, "punch"] > ] > }, > "preciseStandPositionLeft" : [-0.5, 0.0], > "preciseStandPositionRight" : [2.0, 0.0], > "maxNpcs" : 1 > } objects\hylotl\arcadestarbound\arcadestarbound.object 35c35,57 < "npcToy" : {} --- > "scripts" : [ "/scripts/npcToyObject.lua"], > "npcToy" : { > "influence" : [ > "videogame", > "videogame", > "videogameComplete" > ], > "defaultReactions" : { > "videogame" : [ > [1.0, "typing"] > ], > "videogameComplete" : [ > [1.0, "smile"], > [1.0, "annoyed"], > [1.0, "punch"] > ] > }, > "preciseStandPositionLeft" : [-0.5, 0.0], > "preciseStandPositionRight" : [2.0, 0.0], > "maxNpcs" : 1 > }, > > "soundEffect" : "/sfx/objects/arcademachine.wav" objects\hylotl\arcadeyellow\arcadeyellow.object 35c35,55 < "npcToy" : {} --- > "scripts" : [ "/scripts/npcToyObject.lua"], > "npcToy" : { > "influence" : [ > "videogame", > "videogame", > "videogameComplete" > ], > "defaultReactions" : { > "videogame" : [ > [1.0, "typing"] > ], > "videogameComplete" : [ > [1.0, "smile"], > [1.0, "annoyed"], > [1.0, "punch"] > ] > }, > "preciseStandPositionLeft" : [-0.5, 0.0], > "preciseStandPositionRight" : [2.0, 0.0], > "maxNpcs" : 1 > } objects\hylotl\hylotlspeaker\hylotlradio.object 60c60,63 < "scripts" : [ "/objects/wired/light/light.lua" ], --- > "scripts" : [ > "/objects/wired/light/light.lua", > "/scripts/npcToyObject.lua" > ], 67c70,89 < "npcToy" : {} --- > "npcToy" : { > "influence" : [ > "hylotlmusic", > "hylotlmusic", > "hylotlmusic", > "hylotlmusicFinished" > ], > "defaultReactions" : { > "hylotlmusic" : [ > [1.0, "hylotldance"] > ], > "hylotlmusicFinished" : [ > [1.0, "hylotldance"], > [1.0, "smile"], > [1.0, "laugh"] > ] > }, > "randomStandXRange" : [-4, 4], > "maxNpcs" : 4 > } objects\outpost\watercooler\watercooler.object 33c33,55 < "npcToy" : {} --- > "scripts" : [ "/scripts/npcToyObject.lua" ], > "npcToy" : { > "influence" : [ > "watercoolerCollect", > "watercoolerConsume", > "watercoolerComplete" > ], > "defaultReactions" : { > "watercoolerCollect" : [ > [1.0, "crouchcollect"] > ], > "watercoolerConsume" : [ > [1.0, "drink"] > ], > "watercoolerComplete" : [ > [1.0, "smile"], > [0.1, "vomit"] > ] > }, > "preciseStandPositionLeft" : [-1.0, 0.0], > "preciseStandPositionRight" : [1.0, 0.0], > "maxNpcs" : 1 > } scripts\pathing.lua 418a419 > script.setUpdateDelta(1) 425,430c426 < if (mcontroller.onGround() or mcontroller.liquidMovement()) and math.abs(self.delta[2]) > 1 then < self.finder:reset() < return "running" < end < < if world.magnitude(self.edge.target.position, mcontroller.position()) < 1 then --- > if (mcontroller.onGround() or (mcontroller.liquidMovement() and math.abs(self.delta[2]) < 1)) and math.abs(self.delta[1]) < 1 then scripts\versioningutils.lua 14a15,46 > -- find and transform a value buried in an opaque heap of structure > function transformInData(data, keyname, transformfunction) > if type(data) == "table" then > for k, v in pairs(data) do > if k == keyname then > -- sb.logInfo("Transforming value %s of key %s into value %s", v, k, transformfunction(data[k])) > data[k] = transformfunction(data[k]) > else > transformInData(v, keyname, transformfunction) > end > end > end > end > > -- find and replace a key name buried in an opaque heap of structure > function replaceKeyInData(data, oldkey, newkey) > if type(data) == "table" then > if data[oldkey] ~= nil then > if data[newkey] == nil then > -- sb.logInfo("Renaming key %s to %s (value is %s)", oldkey, newkey, data[oldkey]) > data[oldkey], data[newkey] = nil, data[oldkey] > else > -- sb.logInfo("Cannot rename key %s to %s because it already exists with value %s", oldkey, newkey, data[newkey]) > end > end > > for k, v in pairs(data) do > replaceKeyInData(v, oldkey, newkey) > end > end > end > terrain\solid.terrain 4c4 < "value" : 1 --- > "value" : 100 terrain\cave\corecaves.terrain 106c106 < "radius" : 2, --- > "sectorRadius" : 2, 108c108 < "wormSpeed" : 1.5, --- > "wormSpeed" : 1.0, 110c110 < "wormSizeRange" : [2.5, 4], --- > "wormSizeRange" : [5, 8], terrain\cave\densecaves.terrain 112c112 < "radius" : 2, --- > "sectorRadius" : 2, 114c114 < "wormSpeed" : 1.5, --- > "wormSpeed" : 1.0, 116c116 < "wormSizeRange" : [2.5, 4], --- > "wormSizeRange" : [5, 8], terrain\cave\mooncaves.terrain 156c156 < // "radius" : 2, --- > // "sectorRadius" : 2, 158c158 < // "wormSpeed" : 1.5, --- > // "wormSpeed" : 1.0, 160c160 < // "wormSizeRange" : [3, 5], --- > // "wormSizeRange" : [6, 10], terrain\cave\normalcaves.terrain 106c106 < "radius" : 2, --- > "sectorRadius" : 2, 108c108 < "wormSpeed" : 1.5, --- > "wormSpeed" : 1.0, 110c110 < "wormSizeRange" : [2.5, 4], --- > "wormSizeRange" : [5, 8], terrain\cave\surfacecaves.terrain 65c65 < "radius" : 2, --- > "sectorRadius" : 2, 67c67 < "wormSpeed" : 1.5, --- > "wormSpeed" : 1.0, 69c69 < "wormSizeRange" : [2.5, 4], --- > "wormSizeRange" : [5, 8],