FILES ----- behaviors\monsters\modular\actions\fire.behavior behaviors\monsters\modular\actions\windup.behavior behaviors\monsters\modular\movement\flyapproach.behavior behaviors\monsters\modular\movement\flywander.behavior behaviors\npc\reactionchat.behavior behaviors\npc\tenant.behavior biomes\underground\underground1d.biome [NEW] dungeons\microdungeons\underground\underground1d\underground1dmicrodungeons.dungeon [NEW] dungeons\microdungeons\underground\underground1d\underground1d_open1.json [NEW] dungeons\microdungeons\underground\underground1d\underground1d_tunnel1.json [NEW] dungeons\microdungeons\underground\underground1d\underground1d_tunnelbackslope1.json [NEW] dungeons\microdungeons\underground\underground1d\underground1d_tunnelforwardslope1.json [NEW] dungeons\microdungeons\underground\underground1d\underground1d_tunnelweakbackslope1.json [NEW] dungeons\microdungeons\underground\underground1d\underground1d_tunnelweakforwardslope1.json humanoid\emote.frames [NEW] interface\quests\newquest\declineover.png [NEW] interface\quests\newquest\declineup.png interface\windowconfig\newquest.config interface\windowconfig\questlog.config items\active\weapons\ranged\boomerang\chakram.activeitem items\active\weapons\ranged\boomerang\chakram.png items\generic\produce\thornfruit.consumable items\throwables\bomb.thrownitem items\throwables\molotov.thrownitem items\tools\paintergunvariants.frames monsters\dungeon\floki\floki.monstertype monsters\dungeon\glitchknight\glitchknight.monstertype monsters\dungeon\pinfriend\pinfriend.monstertype [NEW] monsters\flyers\bobfae\bobfae.animation [NEW] monsters\flyers\bobfae\bobfae.frames [NEW] monsters\flyers\bobfae\bobfae.monstertype [NEW] monsters\flyers\bobfae\bobfae.png [NEW] monsters\flyers\bobfae\body.monsterpart [NEW] monsters\ghosts\lumoth\body.monsterpart [NEW] monsters\ghosts\lumoth\lumoth.animation [NEW] monsters\ghosts\lumoth\lumoth.frames [NEW] monsters\ghosts\lumoth\lumoth.monstertype [NEW] monsters\ghosts\lumoth\lumoth.png [NEW] monsters\walkers\anglure\anglure.animation [NEW] monsters\walkers\anglure\anglure.frames [NEW] monsters\walkers\anglure\anglure.monstertype [NEW] monsters\walkers\anglure\anglure.png [NEW] monsters\walkers\anglure\body.monsterpart [NEW] monsters\walkers\narfin\body.monsterpart [NEW] monsters\walkers\narfin\narfin.animation [NEW] monsters\walkers\narfin\narfin.frames [NEW] monsters\walkers\narfin\narfin.monstertype [NEW] monsters\walkers\narfin\narfin.png monsters\walkers\oogler\oogler.monstertype [NEW] monsters\walkers\petricub\body.monsterpart [NEW] monsters\walkers\petricub\petricub.animation [NEW] monsters\walkers\petricub\petricub.frames [NEW] monsters\walkers\petricub\petricub.monstertype [NEW] monsters\walkers\petricub\petricub.png [NEW] monsters\walkers\sporgus\body.monsterpart [NEW] monsters\walkers\sporgus\sporgus.animation [NEW] monsters\walkers\sporgus\sporgus.frames [NEW] monsters\walkers\sporgus\sporgus.monstertype [NEW] monsters\walkers\sporgus\sporgus.png [NEW] monsters\walkers\voltip\body.monsterpart [NEW] monsters\walkers\voltip\voltip.animation [NEW] monsters\walkers\voltip\voltip.frames [NEW] monsters\walkers\voltip\voltip.monstertype [NEW] monsters\walkers\voltip\voltip.png npcs\default_reactions.config npcs\merchant.npctype npcs\biome\alpaca.npctype npcs\biome\frogmerchant.npctype npcs\biome\frogvillager.npctype npcs\biome\shroomguard.npctype npcs\biome\shroommerchant.npctype npcs\subbiometenants\hive.npctype projectiles\chakram\chakram.projectile projectiles\chakram\chakramprojectile.lua [NEW] projectiles\npcs\electriclance\electriclance.frames [NEW] projectiles\npcs\electriclance\electriclance.png [NEW] projectiles\npcs\electriclance\electriclance.projectile projectiles\pillar\firepillar.frames projectiles\pillar\firepillar.png projectiles\pillar\firepillar.projectile quests\generated\guard.config quests\generated\normal.config quests\generated\shady.config quests\generated\pools\furnituresets.config quests\scripts\generated\build_home.lua scripts\behavior.lua scripts\tenant.lua scripts\actions\overrides.lua scripts\actions\reaction.lua scripts\actions\sensor.lua scripts\questgen\relations.lua vehicles\hoverbike\default.frames vehicles\hoverbike\hoverbike.lua vehicles\hoverbike\hoverbike.vehicle vehicles\hoverbike\hoverbikebackground.png vehicles\hoverbike\hoverbikeforeground.png DIFFS ----- behaviors\monsters\modular\actions\fire.behavior 29c29,30 < "fireDelay": 0 --- > "fireDelay": 0, > "projectileParameters": {} 319c320 < "projectileConfig": {}, --- > "projectileConfig": "", behaviors\monsters\modular\actions\windup.behavior 3d2 < "description": "", 5d3 < "/scripts/actions/sensor.lua", 7a6 > "/scripts/actions/sensor.lua", 25c24,25 < "wallCollisionCheck": false --- > "wallCollisionCheck": false, > "keepInRange": false 28c28 < "title": "sequence", --- > "title": "parallel", 30c30 < "name": "sequence", --- > "name": "parallel", 32,35c32,33 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" --- > "fail": 1, > "success": 1 39,87c37 < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "optional", < "type": "decorator", < "name": "optional", < "parameters": { < "shouldRun": "" < }, < "child": { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "groundCollision", < "type": "action", < "name": "groundCollision", < "parameters": {} < } < } < } < }, < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "optional", < "type": "decorator", < "name": "optional", < "parameters": { < "shouldRun": "" < }, < "child": { < "title": "wallCollision", < "type": "action", < "name": "wallCollision", < "parameters": { < "direction": "facingDirection" < } < } < } < }, < { < "title": "sequence", --- > "title": "parallel", 89c39 < "name": "sequence", --- > "name": "parallel", 91,94c41,42 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" --- > "fail": 1, > "success": -1 98c46 < "title": "selector", --- > "title": "sequence", 100,101c48,54 < "name": "selector", < "parameters": {}, --- > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, 104,106c57,59 < "title": "inverter", < "type": "decorator", < "name": "inverter", --- > "title": "selector", > "type": "composite", > "name": "selector", 108,114c61,85 < "child": { < "title": "greaterThan", < "type": "action", < "name": "greaterThan", < "parameters": { < "first": "", < "second": 0 --- > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "greaterThan", > "type": "action", > "name": "greaterThan", > "parameters": { > "first": "", > "second": 0 > } > } > }, > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "target", > "yRange": "", > "position": "self" > } 116c87 < } --- > ] 119,135c90,154 < "title": "entityInRange", < "type": "action", < "name": "entityInRange", < "parameters": { < "entity": "target", < "yRange": "", < "position": "self" < } < } < ] < }, < { < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ --- > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "greaterThan", > "type": "action", > "name": "greaterThan", > "parameters": { > "first": "", > "second": 0 > } > } > }, > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "target", > "xRange": "", > "position": "self" > } > } > ] > }, > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "greaterThan", > "type": "action", > "name": "greaterThan", > "parameters": { > "first": "", > "second": 0 > } > } > }, > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "target", > "range": "", > "position": "self" > } > } > ] > }, 142c161 < "title": "greaterThan", --- > "title": "entityInRange", 144c163 < "name": "greaterThan", --- > "name": "entityInRange", 146,147c165,167 < "first": "", < "second": 0 --- > "entity": "target", > "range": "", > "position": "self" 152,159c172,197 < "title": "entityInRange", < "type": "action", < "name": "entityInRange", < "parameters": { < "entity": "target", < "yRange": "", < "position": "self" < } --- > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "optional", > "type": "decorator", > "name": "optional", > "parameters": { > "shouldRun": "" > }, > "child": { > "title": "success", > "type": "action", > "name": "success", > "parameters": {} > } > }, > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} > } > ] 164,166c202,223 < "title": "selector", < "type": "composite", < "name": "selector", --- > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} > } > ] > }, > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", 168,169c225,232 < "children": [ < { --- > "child": { > "title": "optional", > "type": "decorator", > "name": "optional", > "parameters": { > "shouldRun": "" > }, > "child": { 175c238 < "title": "greaterThan", --- > "title": "groundCollision", 177,181c240,241 < "name": "greaterThan", < "parameters": { < "first": "", < "second": 0 < } --- > "name": "groundCollision", > "parameters": {} 182a243,256 > } > } > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "optional", > "type": "decorator", > "name": "optional", > "parameters": { > "shouldRun": "" 184,185c258,259 < { < "title": "entityInRange", --- > "child": { > "title": "wallCollision", 187c261 < "name": "entityInRange", --- > "name": "wallCollision", 189,191c263 < "entity": "target", < "range": "", < "position": "self" --- > "direction": "facingDirection" 194,224c266 < ] < } < ] < }, < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "entityInRange", < "type": "action", < "name": "entityInRange", < "parameters": { < "entity": "target", < "range": "", < "position": "self" < } < } < }, < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "optional", < "type": "decorator", < "name": "optional", < "parameters": { < "shouldRun": "" --- > } 226c268 < "child": { --- > { 232,234c274,276 < "title": "entityInSight", < "type": "action", < "name": "entityInSight", --- > "title": "optional", > "type": "decorator", > "name": "optional", 236c278,292 < "entity": "target" --- > "shouldRun": "" > }, > "child": { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "entityInSight", > "type": "action", > "name": "entityInSight", > "parameters": { > "entity": "target" > } > } 239,265c295 < } < } < }, < { < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "title": "setAnimationState", < "type": "action", < "name": "setAnimationState", < "parameters": { < "state": "", < "type": "body" < } < } < }, < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, < "children": [ --- > }, 272c302 < "title": "controlApproachVelocity", --- > "title": "setAnimationState", 274c304 < "name": "controlApproachVelocity", --- > "name": "setAnimationState", 276,280c306,307 < "velocity": [ < 0, < 0 < ], < "force": "" --- > "state": "", > "type": "body" 285c312 < "title": "selector", --- > "title": "parallel", 287,288c314,318 < "name": "selector", < "parameters": {}, --- > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, 291c321 < "title": "optional", --- > "title": "succeeder", 293,296c323,324 < "name": "optional", < "parameters": { < "shouldRun": "" < }, --- > "name": "succeeder", > "parameters": {}, 298,300c326,328 < "title": "sequence", < "type": "composite", < "name": "sequence", --- > "title": "controlApproachVelocity", > "type": "action", > "name": "controlApproachVelocity", 302,344c330,335 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "entityDirection", < "type": "action", < "name": "entityDirection", < "parameters": { < "entity": "self", < "target": "target" < }, < "output": { < "direction": "facingDirection", < "vector": "aimVector" < } < }, < { < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "title": "optional", < "type": "decorator", < "name": "optional", < "parameters": { < "shouldRun": "" < }, < "child": { < "title": "rotate", < "type": "action", < "name": "rotate", < "parameters": { < "angle": "aimAngle", < "rate": 0 < } < } < } < } < ] --- > "velocity": [ > 0, > 0 > ], > "force": "" > } 348,350c339,341 < "title": "succeeder", < "type": "decorator", < "name": "succeeder", --- > "title": "selector", > "type": "composite", > "name": "selector", 352,362c343,347 < "child": { < "title": "optional", < "type": "decorator", < "name": "optional", < "parameters": { < "shouldRun": "" < }, < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", --- > "children": [ > { > "title": "optional", > "type": "decorator", > "name": "optional", 364,367c349 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" --- > "shouldRun": "" 369,376c351,373 < "children": [ < { < "title": "entityDirection", < "type": "action", < "name": "entityDirection", < "parameters": { < "entity": "self", < "target": "target" --- > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "entityDirection", > "type": "action", > "name": "entityDirection", > "parameters": { > "entity": "self", > "target": "target" > }, > "output": { > "direction": "facingDirection", > "vector": "aimVector" > } 378,379c375,396 < "output": { < "direction": "facingDirection" --- > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "optional", > "type": "decorator", > "name": "optional", > "parameters": { > "shouldRun": "" > }, > "child": { > "title": "rotate", > "type": "action", > "name": "rotate", > "parameters": { > "angle": "aimAngle", > "rate": 0 > } > } > } 380a398,411 > ] > } > }, > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "optional", > "type": "decorator", > "name": "optional", > "parameters": { > "shouldRun": "" 382,385c413,416 < { < "title": "faceDirection", < "type": "action", < "name": "faceDirection", --- > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", 387,388c418,444 < "direction": "facingDirection" < } --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "entityDirection", > "type": "action", > "name": "entityDirection", > "parameters": { > "entity": "self", > "target": "target" > }, > "output": { > "direction": "facingDirection" > } > }, > { > "title": "faceDirection", > "type": "action", > "name": "faceDirection", > "parameters": { > "direction": "facingDirection" > } > } > ] 390c446 < ] --- > } 391a448,455 > ] > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": "" 395,402d458 < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": "" < } behaviors\monsters\modular\movement\flyapproach.behavior 6c6,8 < "/scripts/actions/movement.lua" --- > "/scripts/actions/movement.lua", > "/scripts/actions/math.lua", > "/scripts/actions/time.lua" 11c13,14 < "usePathfinding": true --- > "usePathfinding": true, > "approachTime": 0 54,69c57,97 < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { < "title": "optional", < "type": "decorator", < "name": "optional", < "parameters": { < "shouldRun": "" --- > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 1, > "success": 1 > }, > "children": [ > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "optional", > "type": "decorator", > "name": "optional", > "parameters": { > "shouldRun": "" > }, > "child": { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "moveToPosition", > "type": "action", > "name": "moveToPosition", > "parameters": { > "avoidLiquid": "", > "failFast": false, > "groundPosition": false, > "maxGround": 5, > "minGround": -5, > "position": "targetPosition", > "run": false > } > } > } 71c99 < "child": { --- > { 77c105 < "title": "moveToPosition", --- > "title": "flyToPosition", 79c107 < "name": "moveToPosition", --- > "name": "flyToPosition", 81,85d108 < "avoidLiquid": "", < "failFast": false, < "groundPosition": false, < "maxGround": 5, < "minGround": -5, 87c110 < "run": false --- > "tolerance": 0 91,100c114,125 < }, < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "flyToPosition", < "type": "action", < "name": "flyToPosition", --- > ] > }, > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "sequence", > "type": "composite", > "name": "sequence", 102,104c127,156 < "position": "targetPosition", < "tolerance": 0 < } --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "greaterThan", > "type": "action", > "name": "greaterThan", > "parameters": { > "first": "", > "second": 0 > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": "" > } > } > ] > }, > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} 106,108c158,160 < } < ] < } --- > ] > } > ] behaviors\monsters\modular\movement\flywander.behavior 2a3 > "description": "", 71d71 < "yVelocityVariance": "", behaviors\npc\reactionchat.behavior 30a31,102 > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "entityRelationship", > "type": "action", > "name": "entityRelationship", > "parameters": { > "relationship": "fears", > "converse": false, > "target": "chatfriend" > } > }, > { > "title": "setInfluence", > "type": "action", > "name": "setInfluence", > "parameters": { > "influence": "fearsrelation" > }, > "output": { > "influence": "influence" > } > } > ] > }, > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "entityRelationship", > "type": "action", > "name": "entityRelationship", > "parameters": { > "relationship": "likes", > "converse": false, > "target": "chatfriend" > } > }, > { > "title": "setInfluence", > "type": "action", > "name": "setInfluence", > "parameters": { > "influence": "likesrelation" > }, > "output": { > "influence": "influence" > } > } > ] > } > ] > } > }, > { behaviors\npc\tenant.behavior 20a21,42 > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "receivedNotification", > "type": "action", > "name": "receivedNotification", > "parameters": { > "type": "tenant.evicted" > } > }, > { > "title": "halt", > "type": "action", > "name": "halt", > "parameters": {} > } > ] > }, > { 94c116 < "title": "sequence", --- > "title": "cleanup", 96c118 < "name": "sequence", --- > "name": "cleanup", 100,108c122 < "title": "receivedNotification", < "type": "action", < "name": "receivedNotification", < "parameters": { < "type": "tenant.returnHome.rent" < } < }, < { < "title": "parallel", --- > "title": "sequence", 110,114c124,125 < "name": "parallel", < "parameters": { < "fail": -1, < "success": 1 < }, --- > "name": "sequence", > "parameters": {}, 117,120c128,133 < "title": "Tenant - Return Home", < "type": "module", < "name": "Tenant - Return Home", < "parameters": {} --- > "title": "receivedNotification", > "type": "action", > "name": "receivedNotification", > "parameters": { > "type": "tenant.returnHome.rent" > } 123c136 < "title": "sequence", --- > "title": "parallel", 125,126c138,142 < "name": "sequence", < "parameters": {}, --- > "name": "parallel", > "parameters": { > "fail": -1, > "success": 1 > }, 129,131c145,147 < "title": "wasInteracted", < "type": "action", < "name": "wasInteracted", --- > "title": "Tenant - Return Home", > "type": "module", > "name": "Tenant - Return Home", 135,138c151,196 < "title": "isCarryingRent", < "type": "action", < "name": "isCarryingRent", < "parameters": {} --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "wasInteracted", > "type": "action", > "name": "wasInteracted", > "parameters": {} > }, > { > "title": "isCarryingRent", > "type": "action", > "name": "isCarryingRent", > "parameters": {} > }, > { > "title": "spawnRentTreasure", > "type": "action", > "name": "spawnRentTreasure", > "parameters": { > "position": "self" > } > } > ] > } > ] > }, > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "isCarryingRent", > "type": "action", > "name": "isCarryingRent", > "parameters": {} > } 144c202,204 < "parameters": {} --- > "parameters": { > "position": "self" > } 146a207,251 > }, > { > "title": "queryEntity", > "type": "action", > "name": "queryEntity", > "parameters": { > "entityTypes": [ > "player" > ], > "orderBy": "nearest", > "position": "self", > "range": 20, > "withoutEntity": "self" > }, > "output": { > "entity": "nearestPlayer" > } > }, > { > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "nearestPlayer" > } > }, > { > "title": "sayToEntity", > "type": "action", > "name": "sayToEntity", > "parameters": { > "dialogType": "dialog.tenant.arrivedHome.rent", > "entity": "nearestPlayer" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": [ > 5, > 10 > ] > } 151,153c256,258 < "title": "selector", < "type": "composite", < "name": "selector", --- > "title": "succeeder", > "type": "decorator", > "name": "succeeder", 155,161c260,266 < "children": [ < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { --- > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { 165a271,278 > }, > { > "title": "spawnRentTreasure", > "type": "action", > "name": "spawnRentTreasure", > "parameters": { > "position": "spawn" > } 167,217d279 < }, < { < "title": "spawnRentTreasure", < "type": "action", < "name": "spawnRentTreasure", < "parameters": {} < } < ] < }, < { < "title": "queryEntity", < "type": "action", < "name": "queryEntity", < "parameters": { < "entityTypes": [ < "player" < ], < "orderBy": "nearest", < "position": "self", < "range": 20, < "withoutEntity": "self" < }, < "output": { < "entity": "nearestPlayer" < } < }, < { < "title": "faceEntity", < "type": "action", < "name": "faceEntity", < "parameters": { < "entity": "nearestPlayer" < } < }, < { < "title": "sayToEntity", < "type": "action", < "name": "sayToEntity", < "parameters": { < "dialogType": "dialog.tenant.arrivedHome.rent", < "entity": "nearestPlayer" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": [ < 5, < 10 biomes\underground\underground1d.biome 162c162 < "microdungeons" : [ "undergroundmicrodungeons" ] --- > "microdungeons" : [ "underground1dmicrodungeons" ] humanoid\emote.frames 2d1 < interface\windowconfig\newquest.config 74,78c74,77 < "offset" : [26, 15], < "position" : [220, 57], < "maxSize" : [75, 75], < "minSize" : [75, 75], < "scale" : 1.5 --- > "position" : [235, 72], > "maxSize" : [31, 31], > "minSize" : [31, 31], > "centered" : true 98,99c97,98 < "base" : "/interface/quests/newquest/acceptUp.png", < "hover" : "/interface/quests/newquest/acceptOver.png", --- > "base" : "/interface/quests/newquest/declineUp.png", > "hover" : "/interface/quests/newquest/declineOver.png", interface\windowconfig\questlog.config 79,83c79,82 < "position" : [264, 55], < "scale" : 1.5, < "offset" : [25, 10], < "maxSize" : [75, 75], < "minSize" : [75, 75] --- > "position" : [279, 70], > "maxSize" : [31, 31], > "minSize" : [31, 31], > "centered" : true 87c86,87 < "position" : [265, 46], --- > "position" : [279, 47], > "hAnchor" : "mid", items\active\weapons\ranged\boomerang\chakram.activeitem 29d28 < 31,32d29 < < 35d31 < items\generic\produce\thornfruit.consumable 4c4 < "price" : 160, --- > "price" : 20, items\throwables\bomb.thrownitem 3c3 < "price" : 500, --- > "price" : 50, items\throwables\molotov.thrownitem 3c3 < "price" : 250, --- > "price" : 40, items\tools\paintergunvariants.frames 2,9c2,11 < "grouped" : { < "offset" : [0, 12], < "names" : [ "%s", "%s.red", "%s.blue", "%s.green", "%s.yellow", "%s.orange", "%s.pink", "%s.black", "%s.white" ], < "nested" : { < "frameList" : { < "0" : [0, 0, 13, 12] < } < } --- > "frameList" : { > "0" : [0, 0, 13, 12], > "0.red" : [0, 12, 13, 24], > "0.blue" : [0, 24, 13, 36], > "0.green" : [0, 36, 13, 48], > "0.yellow" : [0, 48, 13, 60], > "0.orange" : [0, 60, 13, 72], > "0.pink" : [0, 72, 13, 84], > "0.black" : [0, 84, 13, 96], > "0.white" : [0, 96, 13, 108] monsters\dungeon\floki\floki.monstertype 17c17 < "/monsters/generated/groundMovement.lua", --- > "/monsters/groundMovement.lua", monsters\dungeon\glitchknight\glitchknight.monstertype 14c14 < "/monsters/generated/groundMovement.lua", --- > "/monsters/groundMovement.lua", monsters\dungeon\pinfriend\pinfriend.monstertype 17c17 < "/monsters/generated/groundMovement.lua", --- > "/monsters/groundMovement.lua", monsters\walkers\oogler\oogler.monstertype 39a40 > "keepInRange" : true, npcs\default_reactions.config 150a151,166 > // Relationship reactions > // Certain quests set 'relationships' between two NPCs (e.g. 'likes', > // 'fears'). Once these relationships have been set, NPCs can react to > // each other differently, according to this config: > "likesrelation" : [ > [1.0, "love"], > [1.0, "smile"], > [1.0, "comfort"] > ], > > "fearsrelation" : [ > [1.0, "panic"], > [1.0, "cry"], > [1.0, "flee"] > ], > npcs\merchant.npctype 236a237 > { "name" : "glasses3eyes", "parameters" : { "colorIndex" : 0 } }, { "name" : "glasses3eyes", "parameters" : { "colorIndex" : 8 } }, npcs\biome\alpaca.npctype 6a7,8 > "questGenerator" : { "pools" : [], "enableParticipation" : false }, > npcs\biome\frogmerchant.npctype 7a8,9 > "questGenerator" : { "pools" : [], "enableParticipation" : false }, > npcs\biome\frogvillager.npctype 11,13c11 < "questGenerator" : { < "enableParticipation" : true < }, --- > "questGenerator" : { "pools" : [], "enableParticipation" : false }, npcs\biome\shroomguard.npctype 9a10,11 > "questGenerator" : { "pools" : [], "enableParticipation" : false }, > npcs\biome\shroommerchant.npctype 7a8,9 > "questGenerator" : { "pools" : [], "enableParticipation" : false }, > npcs\subbiometenants\hive.npctype 5a6,7 > "questGenerator" : { "pools" : [], "enableParticipation" : false }, > projectiles\chakram\chakram.projectile 17c17 < "speed" : 40, --- > "speed" : 70, 20c20 < "bounces" : 4, --- > "bounces" : -1, 28c28 < "controlForce" : 200, --- > "controlForce" : 300, projectiles\chakram\chakramprojectile.lua 15,19c15,18 < local initialPosition = mcontroller.position() < self.hoverPosition = config.configParameter("ownerAimPosition") < if world.magnitude(initialPosition, self.hoverPosition) > self.hoverMaxDistance then < self.hoverPosition = vec2.add(vec2.mul(vec2.norm(vec2.sub(self.hoverPosition, initialPosition)), self.hoverMaxDistance), initialPosition) < end --- > self.initialPosition = mcontroller.position() > local aimPosition = config.configParameter("ownerAimPosition") > self.hoverDistance = math.min(self.hoverMaxDistance, world.magnitude(self.initialPosition, aimPosition)) > self.hoverPosition = vec2.add(vec2.mul(vec2.norm(mcontroller.velocity()), self.hoverDistance), self.initialPosition) 34,35c33,34 < local distanceToHover = world.magnitude(mcontroller.position(), self.hoverPosition) < if distanceToHover < 1 then --- > local distanceToHover = self.hoverDistance - world.magnitude(mcontroller.position(), self.initialPosition) > if distanceToHover < 0.5 then 37,38c36,39 < elseif distanceToHover < 3 then < mcontroller.approachVelocity({0,0}, 500 / (distanceToHover ^ 2)) --- > mcontroller.setVelocity({0,0}) > mcontroller.setPosition(self.hoverPosition) > elseif distanceToHover < 5 then > mcontroller.approachVelocity({0,0}, self.controlForce) projectiles\pillar\firepillar.frames 3c3 < "size" : [16, 12], --- > "size" : [16, 11], projectiles\pillar\firepillar.projectile 5,6c5,6 < "frameNumber" : 3, < "animationCycle" : 0.3, --- > "frameNumber" : 4, > "animationCycle" : 0.4, quests\generated\guard.config 114c114 < "chance" : 0.2, --- > "chance" : 0.1, 147c147 < "chance": 0.5, --- > "chance": 0.1, quests\generated\normal.config 4c4 < [0.3, "build_home"], --- > [0.5, "build_home"], 210a211 > 305c306 < "chance" : 0.2, --- > "chance" : 0.15, 334c335 < "chance" : 0.2, --- > "chance" : 0.15, quests\generated\shady.config 91c91 < "chance" : 0.2, --- > "chance" : 0.15, 121c121 < "chance" : 0.2, --- > "chance" : 0.15, 152a153,154 > "chance": 0.5, > 161c163 < ["!likes", "questGiver", "victim"], --- > 164c166,168 < ["isObject", "objectItem"] --- > ["!isObjectTagged", "objectItem", {"literal":"door"}], > ["isObject", "objectItem"], > ["objectExists", "objectItem"] quests\generated\pools\furnituresets.config 3c3 < ["woodtable", "torch", "woodendoor"], --- > ["woodtable", "torch", "woodendoor"] quests\scripts\generated\build_home.lua 17,20d16 < < function onQuestStart() < player.giveItem({ name = "colonydeed", count = 1 }) < end scripts\behavior.lua 338a339,346 > function success(args) > return true > end > > function failure(args) > return false > end > scripts\tenant.lua 0a1,2 > require("/scripts/actions/overrides.lua") > 19a22 > notify({ type = "tenant.evicted" }) 47c50 < return false --- > return not hasAnyOverride() 77c80,84 < args = parseArgs(args, {}) --- > args = parseArgs(args, { > position = "self" > }) > > local position = BData:getPosition(args.position) 83c90 < world.spawnTreasure(mcontroller.position(), storage.rent.pool, storage.rent.level) --- > world.spawnTreasure(position, storage.rent.pool, storage.rent.level) scripts\actions\overrides.lua 0a1,2 > require("/scripts/util.lua") > 36a39,42 > end > > function hasAnyOverride() > return not isEmpty(getOverrideTypes()) scripts\actions\reaction.lua 1a2 > require "/scripts/relationships.lua" 64a66,81 > end > > -- param relationship > -- param converse > -- param target > function entityRelationship(args, output) > args = parseArgs(args, { > relationship = "", > converse = false, > target = "" > }) > local target = BData:getEntity(args.target) > local uniqueId = world.entityUniqueId(target) > if not uniqueId then return false end > local result = hasRelationship(args.relationship, args.converse, uniqueId) > return result scripts\actions\sensor.lua 78,81c78,92 < local bounds = mcontroller.boundBox() < local angle = math.atan(dirVector[2], dirVector[1]) < local boundsRegion = rect.translate(rect.rotate({bounds[3], bounds[2], bounds[3] + 0.25, bounds[4]}, angle), mcontroller.position()) < util.debugRect(boundsRegion, "yellow") --- > local bounds = rect.translate(mcontroller.boundBox(), mcontroller.position()) > if dirVector[1] > 0 then > bounds[1] = bounds[3] > bounds[3] = bounds[3] + 0.25 > elseif dirVector[1] < 0 then > bounds[3] = bounds[1] > bounds[1] = bounds[1] - 0.25 > elseif dirVector[2] > 0 then > bounds[2] = bounds[4] > bounds[4] = bounds[4] + 0.25 > else > bounds[4] = bounds[2] > bounds[2] = bounds[2] - 0.25 > end > util.debugRect(bounds, "yellow") 83c94 < return world.rectTileCollision(boundsRegion, {"Null","Block","Dynamic"}) --- > return world.rectTileCollision(bounds, {"Null","Block","Dynamic"}) scripts\questgen\relations.lua 328c328 < QuestRelations.criminal = defineRelation("criminal", false) { --- > QuestRelations.criminal = defineRelation("criminal", true) { vehicles\hoverbike\default.frames 3,4c3,4 < "size" : [75, 35], < "dimensions" : [3, 3], --- > "size" : [69, 35], > "dimensions" : [2, 2], 7,9c7,8 < [ "move.1", "move.2", "move.3" ], < [ "fall.1", "fall.2", "idle" ], < [ "jump.1", "jump.2", "broken" ] --- > [ "move", "damaged"], > [ "heavydamaged", "broken" ] vehicles\hoverbike\hoverbike.lua 129,137c129,133 < if self.jumpTimer <= 0 and vehicle.controlHeld("seat", "jump") and nearGround then < mcontroller.setYVelocity(self.jumpVelocity) < self.jumpTimer = self.jumpTimeout < animator.setAnimationState("movement", "jump") < elseif self.jumpTimer > 0 then < self.jumpTimer = self.jumpTimer - script.updateDt() < else < if vehicle.controlHeld("seat", "left") or vehicle.controlHeld("seat", "right") then < animator.setAnimationState("movement", "move") --- > if nearGround then > if self.jumpTimer <= 0 and vehicle.controlHeld("seat", "jump") then > mcontroller.setYVelocity(self.jumpVelocity) > self.jumpTimer = self.jumpTimeout > animator.setAnimationState("movement", "jump") 139c135 < animator.setAnimationState("movement", "idle") --- > self.jumpTimer = self.jumpTimer - script.updateDt() 140a137,138 > else > self.jumpTimer = self.jumpTimeout 159a158,163 > end > > if vehicle.controlHeld("seat", "left") or vehicle.controlHeld("seat", "right") then > animator.setAnimationState("movement", "move") > else > animator.setAnimationState("movement", "idle") vehicles\hoverbike\hoverbike.vehicle 35c35 < "nearGroundDistance" : 5, --- > "nearGroundDistance" : 4, 37c37 < "jumpTimeout" : 1, --- > "jumpTimeout" : 0.25, 42,43c42,43 < "minDamageCollisionAccel" : 40, < "minNotificationCollisionAccel" : 20, --- > "minDamageCollisionAccel" : 60, > "minNotificationCollisionAccel" : 30, 47c47 < "accelerationTrackingCount" : 3, --- > "accelerationTrackingCount" : 2,