FILES ----- behaviors\monsters\modular\movement\flyapproach.behavior behaviors\monsters\modular\movement\spawnmonster.behavior behaviors\monsters\modular\movement\walkapproach.behavior behaviors\npc\quests\quest-bribe-notification.behavior behaviors\npc\quests\quest-gift-notification.behavior biomes\underground\underground3a.biome dialog\quest.config [NEW] dungeons\microdungeons\underground\underground3a\underground3amicrodungeons.dungeon [NEW] dungeons\microdungeons\underground\underground3a\underground3a_open1.json [NEW] dungeons\microdungeons\underground\underground3a\underground3a_tunnel1.json [NEW] dungeons\microdungeons\underground\underground3a\underground3a_tunnelbackslope1.json [NEW] dungeons\microdungeons\underground\underground3a\underground3a_tunnelforwardslope1.json [NEW] dungeons\microdungeons\underground\underground3a\underground3a_tunnelweakbackslope1.json [NEW] dungeons\microdungeons\underground\underground3a\underground3a_tunnelweakforwardslope1.json interface\windowconfig\chatbubbles.config [NEW] items\active\unsorted\wateringcan\wateringcan.activeitem [NEW] items\active\unsorted\wateringcan\wateringcan.animation [NEW] items\active\unsorted\wateringcan\wateringcan.lua [NEW] items\active\unsorted\wateringcan\wateringcan.png [NEW] items\active\unsorted\wateringcan\woodenwateringcan.activeitem [NEW] items\active\unsorted\wateringcan\woodenwateringcan.png items\active\weapons\melee\altabilities\hammer\elementalaura\elementalaura.altability [NEW] items\generic\crafting\monsterdrops\cryonicextract.item [NEW] items\generic\crafting\monsterdrops\cryonicextract.png [NEW] items\generic\crafting\monsterdrops\hardenedcarapace.item [NEW] items\generic\crafting\monsterdrops\hardenedcarapace.png [NEW] items\generic\crafting\monsterdrops\livingroot.item [NEW] items\generic\crafting\monsterdrops\livingroot.png [NEW] items\generic\crafting\monsterdrops\phasematter.item [NEW] items\generic\crafting\monsterdrops\phasematter.png [NEW] items\generic\crafting\monsterdrops\scorchedcore.item [NEW] items\generic\crafting\monsterdrops\scorchedcore.png [NEW] items\generic\crafting\monsterdrops\sharpenedclaw.item [NEW] items\generic\crafting\monsterdrops\sharpenedclaw.png [NEW] items\generic\crafting\monsterdrops\staticcell.item [NEW] items\generic\crafting\monsterdrops\staticcell.png [NEW] items\generic\crafting\monsterdrops\stickofram.item [NEW] items\generic\crafting\monsterdrops\stickofram.png [NEW] items\generic\crafting\monsterdrops\venomsample.item [NEW] items\generic\crafting\monsterdrops\venomsample.png monsters\monster.lua monsters\flyers\bobfae\bobfae.animation monsters\ghosts\spookit\spookit.animation monsters\ghosts\spookit\spookit.monstertype monsters\walkers\anglure\anglure.animation monsters\walkers\crabcano\crabcano.animation [NEW] monsters\walkers\crutter\body.monsterpart [NEW] monsters\walkers\crutter\crutter.animation [NEW] monsters\walkers\crutter\crutter.frames [NEW] monsters\walkers\crutter\crutter.monstertype [NEW] monsters\walkers\crutter\crutter.png [NEW] monsters\walkers\hemogoblin\body.monsterpart [NEW] monsters\walkers\hemogoblin\hemogoblin.animation [NEW] monsters\walkers\hemogoblin\hemogoblin.frames [NEW] monsters\walkers\hemogoblin\hemogoblin.monstertype [NEW] monsters\walkers\hemogoblin\hemogoblin.png [NEW] monsters\walkers\hemogoblinbutt\body.monsterpart [NEW] monsters\walkers\hemogoblinbutt\hemogoblinbutt.animation [NEW] monsters\walkers\hemogoblinbutt\hemogoblinbutt.frames [NEW] monsters\walkers\hemogoblinbutt\hemogoblinbutt.monstertype [NEW] monsters\walkers\hemogoblinbutt\hemogoblinbutt.png [NEW] monsters\walkers\hemogoblinhead\body.monsterpart [NEW] monsters\walkers\hemogoblinhead\hemogoblinhead.animation [NEW] monsters\walkers\hemogoblinhead\hemogoblinhead.frames [NEW] monsters\walkers\hemogoblinhead\hemogoblinhead.monstertype [NEW] monsters\walkers\hemogoblinhead\hemogoblinhead.png monsters\walkers\lilodon\lilodon.animation monsters\walkers\mandraflora\mandraflora.animation monsters\walkers\oogler\oogler.animation monsters\walkers\petricub\petricub.animation monsters\walkers\sporgus\sporgus.monstertype [NEW] monsters\walkers\toumingo\body.monsterpart [NEW] monsters\walkers\toumingo\toumingo.animation [NEW] monsters\walkers\toumingo\toumingo.frames [NEW] monsters\walkers\toumingo\toumingo.monstertype [NEW] monsters\walkers\toumingo\toumingo.png monsters\walkers\voltip\voltip.animation monsters\walkers\voltip\voltip.monstertype monsters\walkers\yokat\yokat.animation monsters\walkers\yokat\yokat.png npcs\biome\alpacatenant.npctype objects\outpost\infinityexpress\infinityexpress.object [NEW] particles\darkredphaseparticle.particle [NEW] particles\lightredphaseparticle.particle plants\trees\forest\foliage\pinefoliage\crown5.png projectiles\npcs\flame\flame.projectile [NEW] projectiles\npcs\puffsporeshot\sporepuff.frames [NEW] projectiles\npcs\puffsporeshot\sporepuff.png [NEW] projectiles\npcs\puffsporeshot\sporepuff.projectile [NEW] projectiles\npcs\puffsporeshot\sporeseed.frames [NEW] projectiles\npcs\puffsporeshot\sporeseed.png [NEW] projectiles\npcs\puffsporeshot\sporeseed.projectile [NEW] projectiles\pillar\electricpillar.frames projectiles\pillar\electricpillar.png projectiles\pillar\electricpillar.projectile quests\generated\guard.config quests\generated\normal.config quests\generated\shady.config quests\generated\templates\bribe.questtemplate quests\generated\templates\build_home.questtemplate quests\generated\templates\extort.questtemplate quests\generated\templates\gift.questtemplate quests\generated\templates\share_secret.questtemplate quests\scripts\generated\gift.lua scripts\actions\crawling.lua [NEW] scripts\actions\items.lua scripts\actions\quests.lua scripts\quest\manager.lua scripts\questgen\generator.lua scripts\questgen\predicands.lua scripts\questgen\relations.lua [NEW] sfx\npc\monsters\anglure_windup.ogg [NEW] sfx\npc\monsters\bobfae_fly.ogg [NEW] sfx\npc\monsters\crabcano_fire1.ogg [NEW] sfx\npc\monsters\crabcano_fire2.ogg [NEW] sfx\npc\monsters\crabcano_fire3.ogg [NEW] sfx\npc\monsters\crabcano_windup3.ogg [NEW] sfx\npc\monsters\lilodon_step1.ogg [NEW] sfx\npc\monsters\lilodon_step2.ogg sfx\npc\monsters\mandraflora_spinning.ogg sfx\npc\monsters\mandraflora_winddown.ogg sfx\npc\monsters\mandraflora_windup.ogg [NEW] sfx\npc\monsters\oogler_charge.ogg [NEW] sfx\npc\monsters\oogler_hop.ogg [NEW] sfx\npc\monsters\oogler_step.ogg [NEW] sfx\npc\monsters\oogler_windup.ogg [NEW] sfx\npc\monsters\petricub_pant.ogg [NEW] sfx\npc\monsters\toumingo_attack.ogg [NEW] sfx\npc\monsters\yokat_aggro.ogg [NEW] sfx\npc\monsters\yokat_creep.ogg [NEW] sfx\npc\monsters\yokat_deaggro.ogg sfx\weather\blizzard.ogg sfx\weather\rain_heavy.ogg sfx\weather\rain_light.ogg sfx\weather\rain_medium.ogg sfx\weather\sandstorm.ogg treasure\common.treasurepools DIFFS ----- behaviors\monsters\modular\movement\flyapproach.behavior 14c14,15 < "approachTime": 0 --- > "approachTime": 0, > "flyState": "fly" 28,33c29,40 < "title": "setAnimationState", < "type": "action", < "name": "setAnimationState", < "parameters": { < "state": "fly", < "type": "body" --- > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "setAnimationState", > "type": "action", > "name": "setAnimationState", > "parameters": { > "state": "", > "type": "body" > } behaviors\monsters\modular\movement\spawnmonster.behavior 2a3 > "description": "", 3a5 > "/scripts/actions/math.lua", 26a29,43 > "title": "vecMultiply", > "type": "action", > "name": "vecMultiply", > "parameters": { > "first": "", > "second": [ > "facingDirection", > 1 > ] > }, > "output": { > "vector": "spawnOffset" > } > }, > { 31c48 < "offset": "", --- > "offset": "spawnOffset", behaviors\monsters\modular\movement\walkapproach.behavior 2a3 > "description": "", 56,72c57,69 < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "entityInSight", < "type": "action", < "name": "entityInSight", < "parameters": { < "entity": "target" < } --- > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 74,80c71,78 < { < "title": "entityDirection", < "type": "action", < "name": "entityDirection", < "parameters": { < "entity": "self", < "target": "target" --- > "children": [ > { > "title": "entityInSight", > "type": "action", > "name": "entityInSight", > "parameters": { > "entity": "target" > } 82,83c80,90 < "output": { < "direction": "targetDirection" --- > { > "title": "entityDirection", > "type": "action", > "name": "entityDirection", > "parameters": { > "entity": "self", > "target": "target" > }, > "output": { > "direction": "targetDirection" > } 85,86c92,93 < } < ] --- > ] > } behaviors\npc\quests\quest-bribe-notification.behavior 2a3 > "description": "", 5d5 < "/scripts/actions/movement.lua", 6a7,8 > "/scripts/actions/time.lua", > "/scripts/actions/movement.lua", 8c10 < "/scripts/actions/time.lua" --- > "/scripts/actions/items.lua" 12c14 < "title": "sequence", --- > "title": "selector", 14,20c16,17 < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, --- > "name": "selector", > "parameters": {}, 23,25c20,22 < "title": "receivedNotification", < "type": "action", < "name": "receivedNotification", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 27c24,27 < "type": "provideBribe" --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 29,59c29,94 < "output": { < "source": "player" < } < }, < { < "title": "faceEntity", < "type": "action", < "name": "faceEntity", < "parameters": { < "entity": "player" < } < }, < { < "title": "sayQuestDialog", < "type": "action", < "name": "sayQuestDialog", < "parameters": { < "dialogType": "bribe.giftAccepted", < "entity": "player", < "extraTags": {}, < "quest": "override" < } < }, < { < "title": "fireQuestEvent", < "type": "action", < "name": "fireQuestEvent", < "parameters": { < "eventName": "bribeAccepted", < "source": "player" < } --- > "children": [ > { > "title": "receivedNotification", > "type": "action", > "name": "receivedNotification", > "parameters": { > "type": "bribeObjectAdded" > }, > "output": { > "source": "player" > } > }, > { > "title": "Tenant - Return Home", > "type": "module", > "name": "Tenant - Return Home", > "parameters": {} > }, > { > "title": "sayQuestDialog", > "type": "action", > "name": "sayQuestDialog", > "parameters": { > "dialogType": "bribe.giftAccepted", > "entity": "player", > "extraTags": {}, > "quest": "override" > } > }, > { > "title": "fireQuestEvent", > "type": "action", > "name": "fireQuestEvent", > "parameters": { > "eventName": "bribeAccepted", > "source": "player" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 2 > } > }, > { > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "player" > } > }, > { > "title": "sayQuestDialog", > "type": "action", > "name": "sayQuestDialog", > "parameters": { > "dialogType": "bribe.giftAccepted2", > "entity": "player", > "extraTags": {}, > "quest": "override" > } > } > ] 62,64c97,99 < "title": "emote", < "type": "action", < "name": "emote", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 66,94c101,298 < "emote": "wink" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 3 < } < }, < { < "title": "faceEntity", < "type": "action", < "name": "faceEntity", < "parameters": { < "entity": "player" < } < }, < { < "title": "sayQuestDialog", < "type": "action", < "name": "sayQuestDialog", < "parameters": { < "dialogType": "bribe.giftAccepted2", < "entity": "player", < "extraTags": {}, < "quest": "override" < } --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "receivedNotification", > "type": "action", > "name": "receivedNotification", > "parameters": { > "type": "provideBribe" > }, > "output": { > "source": "player" > } > }, > { > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "player" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "wink" > } > }, > { > "title": "questItem", > "type": "action", > "name": "questItem", > "parameters": { > "quest": "override", > "parameterName": "gift" > }, > "output": { > "table": "gift" > } > }, > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "itemIsObject", > "type": "action", > "name": "itemIsObject", > "parameters": { > "item": "gift" > } > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "itemHasObjectTag", > "type": "action", > "name": "itemHasObjectTag", > "parameters": { > "item": "gift", > "tag": "door" > } > } > }, > { > "title": "questEntity", > "type": "action", > "name": "questEntity", > "parameters": { > "quest": "override", > "parameterName": "recipientDeed" > }, > "output": { > "entity": "" > } > }, > { > "title": "fireQuestEvent", > "type": "action", > "name": "fireQuestEvent", > "parameters": { > "eventName": "requestBribeAddedToHouse", > "source": "player" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 0.5 > } > }, > { > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "player" > } > }, > { > "title": "sayQuestDialog", > "type": "action", > "name": "sayQuestDialog", > "parameters": { > "dialogType": "bribe.requestAdditionToHouse", > "entity": "player", > "extraTags": {}, > "quest": "override" > } > } > ] > }, > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "sayQuestDialog", > "type": "action", > "name": "sayQuestDialog", > "parameters": { > "dialogType": "bribe.giftAccepted", > "entity": "player", > "extraTags": {}, > "quest": "override" > } > }, > { > "title": "fireQuestEvent", > "type": "action", > "name": "fireQuestEvent", > "parameters": { > "eventName": "bribeAccepted", > "source": "player" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 3 > } > }, > { > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "player" > } > }, > { > "title": "sayQuestDialog", > "type": "action", > "name": "sayQuestDialog", > "parameters": { > "dialogType": "bribe.giftAccepted2", > "entity": "player", > "extraTags": {}, > "quest": "override" > } > } > ] > } > ] > } > ] behaviors\npc\quests\quest-gift-notification.behavior 2a3 > "description": "", 5d5 < "/scripts/actions/movement.lua", 6a7,8 > "/scripts/actions/time.lua", > "/scripts/actions/movement.lua", 8c10 < "/scripts/actions/time.lua" --- > "/scripts/actions/items.lua" 12c14 < "title": "sequence", --- > "title": "selector", 14,20c16,17 < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, --- > "name": "selector", > "parameters": {}, 23,25c20,22 < "title": "receivedNotification", < "type": "action", < "name": "receivedNotification", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 27c24,27 < "type": "provideGift" --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 29,59c29,94 < "output": { < "source": "player" < } < }, < { < "title": "faceEntity", < "type": "action", < "name": "faceEntity", < "parameters": { < "entity": "player" < } < }, < { < "title": "sayQuestDialog", < "type": "action", < "name": "sayQuestDialog", < "parameters": { < "dialogType": "gift.giftAccepted", < "entity": "player", < "extraTags": {}, < "quest": "override" < } < }, < { < "title": "fireQuestEvent", < "type": "action", < "name": "fireQuestEvent", < "parameters": { < "eventName": "giftAccepted", < "source": "player" < } --- > "children": [ > { > "title": "receivedNotification", > "type": "action", > "name": "receivedNotification", > "parameters": { > "type": "giftObjectAdded" > }, > "output": { > "source": "player" > } > }, > { > "title": "Tenant - Return Home", > "type": "module", > "name": "Tenant - Return Home", > "parameters": {} > }, > { > "title": "sayQuestDialog", > "type": "action", > "name": "sayQuestDialog", > "parameters": { > "dialogType": "gift.giftAccepted", > "entity": "player", > "extraTags": {}, > "quest": "override" > } > }, > { > "title": "fireQuestEvent", > "type": "action", > "name": "fireQuestEvent", > "parameters": { > "eventName": "giftAccepted", > "source": "player" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 2 > } > }, > { > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "player" > } > }, > { > "title": "sayQuestDialog", > "type": "action", > "name": "sayQuestDialog", > "parameters": { > "dialogType": "gift.giftAccepted2", > "entity": "player", > "extraTags": {}, > "quest": "override" > } > } > ] 62,64c97,99 < "title": "emote", < "type": "action", < "name": "emote", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 66,94c101,295 < "emote": "happy" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 3 < } < }, < { < "title": "faceEntity", < "type": "action", < "name": "faceEntity", < "parameters": { < "entity": "player" < } < }, < { < "title": "sayQuestDialog", < "type": "action", < "name": "sayQuestDialog", < "parameters": { < "dialogType": "gift.giftAccepted2", < "entity": "player", < "extraTags": {}, < "quest": "override" < } --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "receivedNotification", > "type": "action", > "name": "receivedNotification", > "parameters": { > "type": "provideGift" > }, > "output": { > "source": "player" > } > }, > { > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "player" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "happy" > } > }, > { > "title": "questItem", > "type": "action", > "name": "questItem", > "parameters": { > "quest": "override", > "parameterName": "gift" > }, > "output": { > "table": "gift" > } > }, > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "itemIsObject", > "type": "action", > "name": "itemIsObject", > "parameters": { > "item": "gift" > } > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "itemHasObjectTag", > "type": "action", > "name": "itemHasObjectTag", > "parameters": { > "item": "gift", > "tag": "door" > } > } > }, > { > "title": "questEntity", > "type": "action", > "name": "questEntity", > "parameters": { > "quest": "override", > "parameterName": "recipientDeed" > } > }, > { > "title": "fireQuestEvent", > "type": "action", > "name": "fireQuestEvent", > "parameters": { > "eventName": "requestGiftAddedToHouse", > "source": "player" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 0.5 > } > }, > { > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "player" > } > }, > { > "title": "sayQuestDialog", > "type": "action", > "name": "sayQuestDialog", > "parameters": { > "dialogType": "gift.requestAdditionToHouse", > "entity": "player", > "extraTags": {}, > "quest": "override" > } > } > ] > }, > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "sayQuestDialog", > "type": "action", > "name": "sayQuestDialog", > "parameters": { > "dialogType": "gift.giftAccepted", > "entity": "player", > "extraTags": {}, > "quest": "override" > } > }, > { > "title": "fireQuestEvent", > "type": "action", > "name": "fireQuestEvent", > "parameters": { > "eventName": "giftAccepted", > "source": "player" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 2 > } > }, > { > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "player" > } > }, > { > "title": "sayQuestDialog", > "type": "action", > "name": "sayQuestDialog", > "parameters": { > "dialogType": "gift.giftAccepted2", > "entity": "player", > "extraTags": {}, > "quest": "override" > } > } > ] > } > ] > } > ] biomes\underground\underground3a.biome 162c162 < "microdungeons" : [ "undergroundmicrodungeons" ] --- > "microdungeons" : [ "underground3amicrodungeons" ] dialog\quest.config 209a210,216 > }, > "requestAdditionToHouse" : { > "default" : { > "default" : [ > "Hey, this is an object. Could you put it in my house?" > ] > } 296a304,310 > ] > } > }, > "requestAdditionToHouse" : { > "default" : { > "default" : [ > "Hey, this is an object. Could you put it in my house?" interface\windowconfig\chatbubbles.config 9a10 > "tweenFactor" : 0.2, items\active\weapons\melee\altabilities\hammer\elementalaura\elementalaura.altability 65c65 < "firedeactivate" : [ "/sfx/melee/elemental_aura_deactivate1.ogg" ], --- > "firedeactivate" : [ "/sfx/gun/impact_plasma.ogg" ], 70c70 < "electricdeactivate" : [ "/sfx/melee/elemental_aura_deactivate1.ogg" ], --- > "electricdeactivate" : [ "/sfx/gun/impact_plasma.ogg" ], 75c75 < "icedeactivate" : [ "/sfx/melee/elemental_aura_deactivate1.ogg" ], --- > "icedeactivate" : [ "/sfx/gun/impact_plasma.ogg" ], 80c80 < "poisondeactivate" : [ "/sfx/melee/elemental_aura_deactivate1.ogg" ] --- > "poisondeactivate" : [ "/sfx/gun/impact_plasma.ogg" ] monsters\monster.lua 66a67,69 > setDamageSources() > overrideCollisionPoly() > 75a79,105 > end > > function setDamageSources() > local damageSources = {} > > local partSources = entity.configParameter("damageParts", {}) > for part,ds in pairs(partSources) do > local damageArea = entity.partPoly(part, "damageArea") > if damageArea then > ds.poly = damageArea > table.insert(damageSources, ds) > end > end > > entity.setDamageSources(damageSources) > end > > function overrideCollisionPoly() > local collisionParts = entity.configParameter("collisionParts", {}) > > for _,part in pairs(collisionParts) do > local collisionPoly = entity.partPoly(part, "collisionPoly") > if collisionPoly then > mcontroller.controlParameters({collisionPoly = collisionPoly, standingPoly = collisionPoly, crouchingPoly = collisionPoly}) > break > end > end monsters\flyers\bobfae\bobfae.animation 21c21,23 < "particleEmittersOff" : [ "drips" ] --- > "particleEmittersOff" : [ "drips" ], > "persistentSound" : "/sfx/npc/monsters/bobfae_fly.ogg", > "persistentSoundStopTime" : 0.15 monsters\ghosts\spookit\spookit.animation 27c27,29 < "persistentSound" : "/sfx/npc/monsters/spookit_fly_loop.ogg" --- > "properties" : { > "persistentSound" : "/sfx/npc/monsters/spookit_fly_loop.ogg" > } monsters\ghosts\spookit\spookit.monstertype 54c54,55 < "usePathfinding" : false --- > "usePathfinding" : false, > "flyState" : "" monsters\walkers\anglure\anglure.animation 19,20c19,20 < "frameProperties" : { < "immediateSound" : [ "/sfx/objects/fleshdoor_close.ogg", "/sfx/npc/quadruped/lion_pain1.ogg", "", "", "", "" ] --- > "properties" : { > "immediateSound" : "/sfx/npc/monsters/anglure_windup.ogg" monsters\walkers\crabcano\crabcano.animation 21c21 < "persistentSound" : "/sfx/npc/monsters/crabcano_windup2.ogg", --- > "persistentSound" : "/sfx/npc/monsters/crabcano_windup3.ogg", 29c29,30 < "persistentSound" : "/sfx/npc/monsters/crabcano_fire.ogg" --- > "persistentSound" : "/sfx/npc/monsters/crabcano_fire3.ogg", > "persistentSoundStopTime" : 0.2 monsters\walkers\lilodon\lilodon.animation 15c15,18 < "mode" : "loop" --- > "mode" : "loop", > "frameProperties" : { > "immediateSound" : [ "", "/sfx/npc/monsters/lilodon_step1.ogg", "", "", "", "/sfx/npc/monsters/lilodon_step2.ogg", "", "" ] > } 19c22,25 < "cycle" : 0.5 --- > "cycle" : 0.5, > "properties" : { > "immediateSound" : "/sfx/npc/monsters/monster_hop.ogg" > } monsters\walkers\mandraflora\mandraflora.animation 23c23,26 < "mode" : "loop" --- > "mode" : "loop", > "properties" : { > "immediateSound" : "/sfx/npc/monsters/monster_hop.ogg" > } monsters\walkers\oogler\oogler.animation 22c22,25 < "cycle" : 0.25 --- > "cycle" : 0.25, > "properties" : { > "immediateSound" : "/sfx/npc/monsters/oogler_hop.ogg" > } 29c32,34 < "particleEmittersOn" : [ "mouthwater" ] --- > "particleEmittersOn" : [ "mouthwater" ], > "persistentSound" : "/sfx/npc/monsters/oogler_windup.ogg", > "persistentSoundStopTime" : 0.5 46c51,56 < "particleEmittersOff" : [ "mouthwater" ] --- > "particleEmittersOff" : [ "mouthwater" ], > "persistentSound" : "/sfx/npc/monsters/oogler_charge.ogg", > "persistentSoundStopTime" : 1 > }, > "frameProperties" : { > "immediateSound" : [ "", "", "/sfx/npc/monsters/oogler_step.ogg", "", "", "", "" ] monsters\walkers\petricub\petricub.animation 15a16,20 > /* > "frameProperties" : { > "immediateSound" : [ "", "", "/sfx/npc/monsters/lilodon_step1.ogg", "", "", "", "/sfx/npc/monsters/lilodon_step2.ogg", "" ] > } > */ 19c24,27 < "cycle" : 0.2 --- > "cycle" : 0.2, > "properties" : { > "immediateSound" : "/sfx/npc/monsters/monster_hop.ogg" > } 27c35,38 < "cycle" : 0.2 --- > "cycle" : 0.2, > "properties" : { > "immediateSound" : "/sfx/npc/monsters/monster_hop.ogg" > } 36c47,51 < "mode" : "loop" --- > "mode" : "loop", > "properties" : { > "persistentSound" : "/sfx/npc/monsters/petricub_pant.ogg", > "persistentSoundStopTime" : 0.15 > } monsters\walkers\sporgus\sporgus.monstertype 39c39 < "maximumRange" : 6, --- > "maximumRange" : 8, 44c44 < "projectileType" : "largepoisoncloud", --- > "projectileType" : "sporeseed", 46,47d45 < "speed" : 10, < "timeToLive" : 1.0 53,55c51,53 < "inaccuracy" : 2.0, < "projectileCount" : 5, < "projectileInterval" : 0.00, --- > "inaccuracy" : 0.5, > "projectileCount" : 10, > "projectileInterval" : 0.01, monsters\walkers\voltip\voltip.animation 26c26,29 < "cycle" : 0.2 --- > "cycle" : 0.2, > "properties" : { > "immediateSound" : "/sfx/npc/monsters/monster_hop.ogg" > } monsters\walkers\voltip\voltip.monstertype 117c117 < "bodyMaterialKind" : "organic", --- > "bodyMaterialKind" : "robotic", 128c128 < "targetMaterialKind" : "organic" --- > "targetMaterialKind" : "robotic" 147a148,150 > }, > "electricImmunity" : { > "baseValue" : 1.0 monsters\walkers\yokat\yokat.animation 17c17,20 < "frames" : 1 --- > "frames" : 1, > "properties" : { > "immediateSound" : "/sfx/npc/monsters/monster_hop.ogg" > } 33c36,39 < "cycle" : 0.5 --- > "cycle" : 0.5, > "properties" : { > "immediateSound" : "/sfx/npc/monsters/yokat_deaggro.ogg" > } 37c43,50 < "cycle" : 0.5 --- > "cycle" : 0.5, > "frameProperties" : { > "immediateSound" : [ "/sfx/npc/monsters/yokat_aggro.ogg", "", "", "", "" ] > }, > "properties" : { > "persistentSound" : "/sfx/npc/monsters/spookit_invulnerable_loop.ogg", > "persistentSoundStopTime" : 0.5 > } npcs\biome\alpacatenant.npctype 6a7,8 > "questGenerator" : { "pools" : [], "enableParticipation" : false }, > objects\outpost\infinityexpress\infinityexpress.object 28,29c28,29 < { "item" : "supermatter", "conditions" : [ { "type" : "prerequisite", "quest" : "outpostMission1.gearup" } ] }, < { "item" : "processor", "conditions" : [ { "type" : "prerequisite", "quest" : "penguinmission3.gearup" } ] } --- > { "item" : "supermatter", "prerequisiteQuest" : "outpostMission1.gearup" }, > { "item" : "processor", "prerequisiteQuest" : "penguinmission3.gearup" } projectiles\npcs\flame\flame.projectile 5a6 > "animationLoops" : false, projectiles\pillar\electricpillar.projectile 5,6c5,6 < "frameNumber" : 3, < "animationCycle" : 0.3, --- > "frameNumber" : 4, > "animationCycle" : 0.2, quests\generated\guard.config 63c63 < "diffculty" : 1.0, --- > "difficulty" : 1.0, quests\generated\normal.config 6,7c6 < [1.0, "gift"], < [0.3, "share_secret"] --- > [1.0, "gift"] 234a234,236 > }, > "recipientDeed" : { > "critical" : true 247a250 > ["optionalDeed", "target", "recipientDeed"], quests\generated\shady.config 47a48,50 > }, > "recipientDeed" : { > "critical" : true 60a64 > ["optionalDeed", "target", "recipientDeed"], quests\generated\templates\bribe.questtemplate 12a13,15 > "recipientDeed" : { > "type" : "entity" > }, 122d124 < "indicators" : ["target", "gift"], 123a126 > // Messages from NPC to Player 125c128,132 < "provideGiftNotification" : "provideBribe" --- > "requestAdditionToHouseEventName" : "requestBribeAddedToHouse", > > // Notifications from Player to NPC > "provideGiftNotification" : "provideBribe", > "objectAddedNotification" : "bribeObjectAdded" quests\generated\templates\build_home.questtemplate 52,53c52,53 < "I think we've gathered all the furnishings we need. Now we just need the house itself! ^green;Build a home and set ^orange;^green; inside.^white; Along with the ^green;Colony Deed^white; I gave you earlier we should be able to attract a good tenant.", < "The last thing is to ^green;place ^orange;^green; inside a house.^white; I'll let you ^green;handle the construction ^white;since I'm not much of a builder. ^green;Remember to place the Colony Deed^white; to announce the unit's available to rent!" --- > "I think we've gathered all the furnishings we need. Now we just need the house itself! ^green;Build a home and set ^orange;^green; inside.^white; Don't forget to place a Colony Deed!", > "The last thing is to ^green;place ^orange;^green; inside a house.^white; I'll let you handle the construction since I'm not much of a builder. Remember to ^green;place a ^orange;Colony Deed^white; to announce the unit's available to rent!" quests\generated\templates\extort.questtemplate 42c42 < "Antagonistic. Now we can have a bit of fun! Go find ^orange; ^white;and ^green;pressure them into handing over their ^orange;.^white; It shouldn?ÇÖt be too difficult, just mention that ^orange^white; sent you personally." --- > "Antagonistic. Now we can have a bit of fun! Go find ^orange; ^white;and ^green;pressure them into handing over their ^orange;.^white; It shouldn't be too difficult, just mention that ^orange;^white; sent you personally." quests\generated\templates\gift.questtemplate 12a13,15 > "recipientDeed" : { > "type" : "entity" > }, 121d123 < "indicators" : ["target", "gift"], 122a125 > // Messages from NPC to Player 124c127,131 < "provideGiftNotification" : "provideGift" --- > "requestAdditionToHouseEventName" : "requestGiftAddedToHouse", > > // Notifications from Player to NPC > "provideGiftNotification" : "provideGift", > "objectAddedNotification" : "giftObjectAdded" quests\generated\templates\share_secret.questtemplate 191,192c191 < "love", < "forget about" --- > "love" 206,207c205 < "loves", < "forgets about" --- > "loves" quests\scripts\generated\gift.lua 5a6 > self.questClient:setEventHandler({"target", quest.configParameter("requestAdditionToHouseEventName")}, onRequestAdditionToHouse) 11c12 < if hasGift() then --- > if hasGift() and not storage.giftAccepted then 21,25c22 < if gift.item then < player.consumeItem(gift.item, 1) < elseif gift.tag then < player.consumeTaggedItem(gift.tag, 1) < end --- > player.consumeItem(gift.item, 1) 28c25,39 < setIndicators({}) --- > end > > function onRequestAdditionToHouse(target, interactor) > if interactor ~= entity.id() then return end > if not hasGift() then return end > > self.questClient:setEventHandler({"recipientDeed", "objectAdded"}, onObjectAdded) > storage.addingToHouse = true > end > > function onObjectAdded(deedUniqueId, objectName) > if storage.addingToHouse and objectName == quest.parameters().gift.item then > storage.giftAccepted = true > notifyNpc("target", quest.configParameter("objectAddedNotification")) > end 35,39c46 < if gift.item then < return (player.inventory()[gift.item] or 0) > 0 < elseif gift.tag then < return (player.inventoryTags()[gift.tag] or 0) > 0 < end --- > return (player.inventory()[gift.item] or 0) > 0 43a51,66 > end > > function onUpdate() > if conditionsMet() then > setIndicators({}) > return > else > local indicators = {"target"} > if storage.addingToHouse then > indicators[#indicators+1] = "recipientDeed" > end > if not hasGift() then > indicators[#indicators+1] = "gift" > end > setIndicators(indicators) > end scripts\actions\crawling.lua 37c37 < if not world.rectTileCollision(rect.translate(rect.pad(bounds, 0.25), mcontroller.position()), {"Null", "Block", "Dynamic"}) then break end --- > if not findGroundDirection() then break end 85c85 < if not world.rectTileCollision(rect.translate(rect.pad(bounds, 0.25), mcontroller.position()), {"Null", "Block", "Dynamic"}) then break end --- > if not findGroundDirection() then break end 139c139 < local groundRect = {bounds[1], bounds[2] - 0.25, bounds[3], bounds[2]} --- > local groundRect = {bounds[1], bounds[2] - entity.configParameter("crawlMaxGroundDistance", 0.5), bounds[3], bounds[2]} scripts\actions\quests.lua 11c11,12 < source = "" --- > source = "", > table = "" 15c16,17 < self.quest:fireEvent(args.eventName, source) --- > local table = BData:getTable(args.table) > self.quest:fireEvent(args.eventName, source, table) 39a42,84 > end > > function questItem(args, output) > args = parseArgs(args, { > parameterName = "", > quest = "" > }) > local quest = BData:getTable(args.quest) > if not quest or not quest.questId then return false end > > local paramValue = self.quest:questParameter(quest.questId, args.parameterName) > if paramValue.type ~= "item" then > return false > end > > if output.table then > BData:setTable(output.table, paramValue.item) > end > return true > end > > function questEntity(args, output) > args = parseArgs(args, { > parameterName = "", > quest = "" > }) > local quest = BData:getTable(args.quest) > if not quest or not quest.questId then return false end > > local paramValue = self.quest:questParameter(quest.questId, args.parameterName) > if paramValue.type ~= "entity" or not paramValue.uniqueId then > return false > end > > local entityId = world.loadUniqueEntity(paramValue.uniqueId) > if not world.entityExists(entityId) then > return false > end > > if output.entity then > BData:setEntity(output.entity, entityId) > end > return true scripts\quest\manager.lua 194,196c194,202 < if not uniqueId then < error("Participant "..name.." in quest "..questId.." ("..questDesc.templateId..") does not have a uniqueId") < end --- > if uniqueId then > self.data.participants[uniqueId] = self.data.participants[uniqueId] or { > roles = {}, > turnInQuests = {}, > offerQuest = nil, > behaviorOverrides = {}, > participateIn = {}, > stateDeltas = {} > } 198,205c204,215 < self.data.participants[uniqueId] = self.data.participants[uniqueId] or { < roles = {}, < turnInQuests = {}, < offerQuest = nil, < behaviorOverrides = {}, < participateIn = {}, < stateDeltas = {} < } --- > local participant = self.data.participants[uniqueId] > > participant.roles[questId] = name > if participantDef.turnInQuest then > participant.turnInQuests[#participant.turnInQuests+1] = questId > end > if participantDef.offerQuest then > participant.offerQuest = self.data.arc > end > participant.behaviorOverrides[questId] = participantDef.behaviorOverrides or {} > participant.participateIn[questId] = true > participant.stateDeltas[questId] = participantDef.stateDeltas or {} 207,221c217,219 < local participant = self.data.participants[uniqueId] < < participant.roles[questId] = name < if participantDef.turnInQuest then < participant.turnInQuests[#participant.turnInQuests+1] = questId < end < if participantDef.offerQuest then < participant.offerQuest = self.data.arc < end < participant.behaviorOverrides[questId] = participantDef.behaviorOverrides or {} < participant.participateIn[questId] = true < participant.stateDeltas[questId] = participantDef.stateDeltas or {} < < if participantDef.critical then < criticalSet[uniqueId] = true --- > if participantDef.critical then > criticalSet[uniqueId] = true > end scripts\questgen\generator.lua 328a329,334 > [QuestPredicands.NullEntity] = function () > return { > type = "entity" > } > end, > scripts\questgen\predicands.lua 3d2 < QuestPredicands.Location = createClass("Location") 4a4 > QuestPredicands.NullEntity = createClass("NullEntity") scripts\questgen\relations.lua 8a9 > local NullEntity = QuestPredicands.NullEntity 211a213,249 > } > > local function optionalDeed(context, tenant) > if not tenant:uniqueId() then > return nil > end > return context:parentDeeds()[tenant:uniqueId()] > end > > QuestRelations.optionalDeed = defineQueryRelation("optionalDeed", true) { > [case(1, Entity, NullEntity)] = function (self, tenant, deed) > local actualDeed = optionalDeed(self.context, tenant) > if xor(self.negated, not actualDeed) then > return {{tenant, NullEntity.new()}} > end > return Relation.empty > end, > > [case(2, Entity, Entity)] = function (self, tenant, deed) > local actualDeed = optionalDeed(self.context, tenant) > if xor(self.negated, deed == actualDeed) then > return {{tenant, deed}} > end > return Relation.empty > end, > > [case(3, Entity, Nil)] = function (self, tenant) > if self.negated then return Relation.some end > local actualDeed = optionalDeed(self.context, tenant) > if actualDeed then > return {{tenant, actualDeed}} > else > return {{tenant, NullEntity.new()}} > end > end, > > default = Relation.some treasure\common.treasurepools 816c816,820 < {"weight" : 0.0003, "item" : [ "pirateback", 1]}, --- > {"weight" : 0.0003, "item" : [ "neoback", 1]}, > {"weight" : 0.0003, "item" : [ "neolegs", 1]}, > {"weight" : 0.0003, "item" : [ "neohead", 1]}, > {"weight" : 0.0003, "item" : [ "neochest", 1]}, > {"weight" : 0.0003, "item" : [ "neoback", 1]},