FILES ----- player.config spawner.config terrestrial_worlds.config universe_server.config behaviors\monsters\critter\flying.behavior behaviors\monsters\critter\swimming.behavior behaviors\npc\combat.behavior [NEW] behaviors\npc\combatvillager.behavior behaviors\npc\converse.behavior behaviors\npc\converseseq.behavior behaviors\npc\finalreact.behavior behaviors\npc\flee.behavior behaviors\npc\floranspectator.behavior behaviors\npc\follower.behavior behaviors\npc\guard.behavior behaviors\npc\hostileguard.behavior behaviors\npc\hound.behavior [NEW] behaviors\npc\idler.behavior behaviors\npc\merchant.behavior [NEW] behaviors\npc\pather.behavior behaviors\npc\play.behavior behaviors\npc\react.behavior behaviors\npc\reactionchat.behavior behaviors\npc\sit.behavior behaviors\npc\tenant.behavior behaviors\npc\tracking.behavior [NEW] behaviors\npc\villageguard.behavior behaviors\npc\wander.behavior behaviors\tenant\grumble.behavior biomes\surface\desert.biome biomes\surface\ocean.biome biomes\surface\oceanfloor.biome biomes\surface_detached\mushroompatch.biome biomes\surface_detached\oasis.biome biomes\surface_detached\tar.biome [NEW] dialog\airship.config [NEW] dialog\arrivedhome.config [NEW] dialog\combat.config [NEW] dialog\converse.config [NEW] dialog\cultist.config [NEW] dialog\flee.config [NEW] dialog\gatherer.config [NEW] dialog\grumble.config [NEW] dialog\guard.config [NEW] dialog\merchant.config [NEW] dialog\outpost.config [NEW] dialog\scientist.config [NEW] dialog\shroom.config [NEW] dialog\sniper.config [NEW] dungeons\microdungeons\biomes\desert\arch1.json [NEW] dungeons\microdungeons\biomes\desert\arch2.json [NEW] dungeons\microdungeons\biomes\desert\arch3.json [NEW] dungeons\microdungeons\biomes\desert\column1.json [NEW] dungeons\microdungeons\biomes\desert\desert1.json [NEW] dungeons\microdungeons\biomes\desert\desert2.json [NEW] dungeons\microdungeons\biomes\desert\desertcabin1.json [NEW] dungeons\microdungeons\biomes\desert\desertcabin2.json [NEW] dungeons\microdungeons\biomes\desert\desertcabin3.json [NEW] dungeons\microdungeons\biomes\desert\deserthouse1.json [NEW] dungeons\microdungeons\biomes\desert\desertmicrodungeons.dungeon [NEW] dungeons\microdungeons\biomes\desert\desertpillar1.json [NEW] dungeons\microdungeons\biomes\desert\desertpillar2.json [NEW] dungeons\microdungeons\biomes\desert\desertpyramid1.json [NEW] dungeons\microdungeons\biomes\desert\desertwell1.json [NEW] dungeons\microdungeons\biomes\desert\desertwell2.json [NEW] dungeons\microdungeons\biomes\desert\desertwell3.json [NEW] dungeons\microdungeons\biomes\desert\oldhouse1.json [NEW] dungeons\microdungeons\biomes\desert\oldhouse2.json [NEW] dungeons\microdungeons\biomes\desert\oldhouse3.json [NEW] dungeons\microdungeons\biomes\desert\spikepit1.json [NEW] dungeons\microdungeons\biomes\desert\spikepit2.json [NEW] dungeons\microdungeons\biomes\desert\spikepit3.json dungeons\microdungeons\biomes\forest\clearing2.json dungeons\microdungeons\biomes\forest\clearing3.json dungeons\microdungeons\biomes\forest\clearing4.json dungeons\microdungeons\biomes\forest\forestmicrodungeons.dungeon dungeons\microdungeons\biomes\forest\forestwell1.json dungeons\microdungeons\biomes\forest\forestwell2.json [NEW] dungeons\microdungeons\biomes\forest\hut1.json [NEW] dungeons\microdungeons\biomes\forest\hut2.json [NEW] dungeons\microdungeons\biomes\forest\hut3.json dungeons\microdungeons\biomes\forest\lake1.json dungeons\microdungeons\biomes\forest\lake2.json dungeons\microdungeons\biomes\forest\lake3.json dungeons\microdungeons\biomes\forest\largepond1.json dungeons\microdungeons\biomes\forest\largepond2.json dungeons\microdungeons\biomes\forest\medpond1.json dungeons\microdungeons\biomes\forest\medpond2.json dungeons\microdungeons\biomes\forest\medpond3.json dungeons\microdungeons\biomes\forest\playerforest1.json dungeons\microdungeons\biomes\forest\playerforest2.json dungeons\microdungeons\biomes\forest\playerforest3.json dungeons\microdungeons\biomes\forest\playerforest4.json dungeons\microdungeons\biomes\forest\pondcamp.json dungeons\microdungeons\biomes\forest\ruinlarge1.json dungeons\microdungeons\biomes\forest\ruinmedium1.json dungeons\microdungeons\biomes\forest\ruinmedium2.json [NEW] dungeons\microdungeons\biomes\forest\ruinssmall1.json [NEW] dungeons\microdungeons\biomes\forest\ruinssmall3.json [NEW] dungeons\microdungeons\biomes\forest\ruinssmall4.json [NEW] dungeons\microdungeons\biomes\forest\ruinssmall5.json [NEW] dungeons\microdungeons\biomes\forest\ruinssmall6.json dungeons\microdungeons\biomes\forest\smallpond1.json dungeons\microdungeons\biomes\forest\smallpond2.json dungeons\microdungeons\biomes\forest\smallpond3.json dungeons\microdungeons\biomes\garden\archway.json dungeons\microdungeons\biomes\garden\archway1.json [NEW] dungeons\microdungeons\biomes\garden\archway2.json dungeons\microdungeons\biomes\garden\gardenbridge1.json dungeons\microdungeons\biomes\garden\gardenbridge2.json dungeons\microdungeons\biomes\garden\gardenhouseruin1.json dungeons\microdungeons\biomes\garden\gardenmicrodungeons.dungeon dungeons\microdungeons\biomes\garden\grave1.json dungeons\microdungeons\biomes\garden\grave2.json dungeons\microdungeons\biomes\garden\graveyard.json dungeons\microdungeons\biomes\garden\graveyardflowers.json dungeons\microdungeons\biomes\garden\large1.json dungeons\microdungeons\biomes\garden\littlecave1.json dungeons\microdungeons\biomes\garden\med1.json dungeons\microdungeons\biomes\garden\mediumburriedruin.json dungeons\microdungeons\biomes\garden\mediumgardenflowers.json dungeons\microdungeons\biomes\garden\mediumgardenruin1.json dungeons\microdungeons\biomes\garden\mediumgardenruincamp.json dungeons\microdungeons\biomes\garden\mediumgardenruinplain.json dungeons\microdungeons\biomes\garden\mediumgardenruintall.json dungeons\microdungeons\biomes\garden\mediumruin.json dungeons\microdungeons\biomes\garden\small1.json dungeons\microdungeons\biomes\garden\smallcamp.json dungeons\microdungeons\biomes\garden\smallgardenflowers.json dungeons\microdungeons\biomes\garden\smallpile.json dungeons\microdungeons\biomes\garden\smallstonehouse.json dungeons\microdungeons\biomes\garden\smalltower.json dungeons\microdungeons\biomes\garden\smalltower2.json dungeons\microdungeons\biomes\garden\tunnelsmall1.json dungeons\microdungeons\biomes\garden\wall1.json dungeons\microdungeons\biomes\garden\wall2.json dungeons\microdungeons\biomes\garden\wall3.json dungeons\microdungeons\biomes\garden\well1.json dungeons\microdungeons\biomes\garden\well2.json dungeons\microdungeons\biomes\garden\well3.json dungeons\microdungeons\biomes\garden\xtra1.json dungeons\microdungeons\biomes\shroom\shroombridge1.json dungeons\microdungeons\biomes\shroom\shroombridge2.json dungeons\microdungeons\biomes\shroom\shroombridge3.json dungeons\microdungeons\biomes\shroom\shroomhouse1.json dungeons\microdungeons\biomes\shroom\shroomhouse10.json dungeons\microdungeons\biomes\shroom\shroomhouse11.json dungeons\microdungeons\biomes\shroom\shroomhouse12.json dungeons\microdungeons\biomes\shroom\shroomhouse13.json dungeons\microdungeons\biomes\shroom\shroomhouse14.json dungeons\microdungeons\biomes\shroom\shroomhouse15.json dungeons\microdungeons\biomes\shroom\shroomhouse2.json dungeons\microdungeons\biomes\shroom\shroomhouse3.json dungeons\microdungeons\biomes\shroom\shroomhouse4.json dungeons\microdungeons\biomes\shroom\shroomhouse5.json dungeons\microdungeons\biomes\shroom\shroomhouse6.json dungeons\microdungeons\biomes\shroom\shroomhouse7.json dungeons\microdungeons\biomes\shroom\shroomhouse8.json dungeons\microdungeons\biomes\shroom\shroomhouse9.json [NEW] dungeons\microdungeons\biomes\shroom\shroommicrodungeons.dungeon dungeons\microdungeons\biomes\shroom\shroomtemplate.json dungeons\microdungeons\biomes\shroom\templatebridge.json dungeons\microdungeons\biomes\shroom\templateignore1.json dungeons\microdungeons\biomes\shroom\templateignore2.json dungeons\microdungeons\biomes\shroom\templateignore3.json dungeons\microdungeons\biomes\spring\crittergroup1.json dungeons\microdungeons\biomes\spring\crittergroup2.json dungeons\microdungeons\biomes\spring\crittergroup3.json dungeons\microdungeons\biomes\spring\hugepool1.json dungeons\microdungeons\biomes\spring\hugepool2.json dungeons\microdungeons\biomes\spring\hugepool3.json dungeons\microdungeons\biomes\spring\largepool1.json dungeons\microdungeons\biomes\spring\largepool2.json dungeons\microdungeons\biomes\spring\largepool3.json dungeons\microdungeons\biomes\spring\largepool4.json dungeons\microdungeons\biomes\spring\largepool5.json dungeons\microdungeons\biomes\spring\largepool6.json dungeons\microdungeons\biomes\spring\largepool7.json dungeons\microdungeons\biomes\spring\medpool1.json dungeons\microdungeons\biomes\spring\medpool10.json dungeons\microdungeons\biomes\spring\medpool2.json dungeons\microdungeons\biomes\spring\medpool3.json dungeons\microdungeons\biomes\spring\medpool4.json dungeons\microdungeons\biomes\spring\medpool5.json dungeons\microdungeons\biomes\spring\medpool6.json dungeons\microdungeons\biomes\spring\medpool7.json dungeons\microdungeons\biomes\spring\medpool8.json dungeons\microdungeons\biomes\spring\medpool9.json dungeons\microdungeons\biomes\spring\smallpool1.json dungeons\microdungeons\biomes\spring\smallpool10.json dungeons\microdungeons\biomes\spring\smallpool2.json dungeons\microdungeons\biomes\spring\smallpool3.json dungeons\microdungeons\biomes\spring\smallpool4.json dungeons\microdungeons\biomes\spring\smallpool5.json dungeons\microdungeons\biomes\spring\smallpool6.json dungeons\microdungeons\biomes\spring\smallpool7.json dungeons\microdungeons\biomes\spring\smallpool8.json dungeons\microdungeons\biomes\spring\smallpool9.json [NEW] dungeons\microdungeons\template\microdungeontemplate.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\chamberendleft.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\chamberendright.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\chamberendtop.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\corner1.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\corner2.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\corner3.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\corner4.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\drop.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\endleft1.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\endleft2.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\endright1.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\endright2.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\entrytop.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall1a.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall1b.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall1c.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall1d.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall1e.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall1f.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall1g.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall1h.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall1i.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall1j.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall2a.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall2b.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall2c.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall2d.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall2e.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall2f.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall2g.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall2h.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall2i.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\hall2j.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\junction1.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\junction2.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\junction3.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\junction4.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\longhall1.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\longhall2.json [NEW] dungeons\microdungeons\undergroundmaze\mazeglitch1\mazeglitch1.dungeon dungeons\missions\floranmissions\floranmission1.dungeon [NEW] dungeons\other\challengerooms\ambush.json dungeons\other\challengerooms\challengerooms.dungeon [NEW] dungeons\other\challengerooms\collapse.json [NEW] dungeons\other\challengerooms\collision.json [NEW] dungeons\other\challengerooms\hotflash.json [NEW] dungeons\other\challengerooms\hydroponics.json [NEW] dungeons\other\challengerooms\panicroom.json [NEW] dungeons\other\challengerooms\shortcircuit.json [NEW] dungeons\other\challengerooms\trenches.json [NEW] items\materials\cabinroofing.matitem [NEW] items\materials\cabinroofingicon.png [NEW] items\materials\log.matitem [NEW] items\materials\logicon.png items\materials\pillarblock.matitem items\materials\sandstoneblock.png monsters\boss\spiderboss\spiderboss.monstertype monsters\critter\birdcritter\birdcritter.monstertype [NEW] monsters\critter\bowbirdcritter\body.frames [NEW] monsters\critter\bowbirdcritter\body.monsterpart [NEW] monsters\critter\bowbirdcritter\body.png [NEW] monsters\critter\bowbirdcritter\bowbirdcritter.animation [NEW] monsters\critter\bowbirdcritter\bowbirdcritter.monstertype [NEW] monsters\critter\crabcritter\body.frames [NEW] monsters\critter\crabcritter\body.monsterpart [NEW] monsters\critter\crabcritter\body.png [NEW] monsters\critter\crabcritter\crabcritter.animation [NEW] monsters\critter\crabcritter\crabcritter.monstertype monsters\critter\fishcritter\fishcritter.monstertype [NEW] monsters\critter\groopcritter\body.frames [NEW] monsters\critter\groopcritter\body.monsterpart [NEW] monsters\critter\groopcritter\body.png [NEW] monsters\critter\groopcritter\groopcritter.animation [NEW] monsters\critter\groopcritter\groopcritter.monstertype monsters\critter\jellycritter\body.png [NEW] monsters\critter\squeekcritter\body.frames [NEW] monsters\critter\squeekcritter\body.monsterpart [NEW] monsters\critter\squeekcritter\body.png [NEW] monsters\critter\squeekcritter\squeekcritter.animation [NEW] monsters\critter\squeekcritter\squeekcritter.monstertype [NEW] monsters\critter\squidcritter\body.frames [NEW] monsters\critter\squidcritter\body.monsterpart [NEW] monsters\critter\squidcritter\body.png [NEW] monsters\critter\squidcritter\squidcritter.animation [NEW] monsters\critter\squidcritter\squidcritter.monstertype [NEW] monsters\critter\vulturecritter\body.frames [NEW] monsters\critter\vulturecritter\body.monsterpart [NEW] monsters\critter\vulturecritter\body.png [NEW] monsters\critter\vulturecritter\vulturecritter.animation [NEW] monsters\critter\vulturecritter\vulturecritter.monstertype [NEW] monsters\critter\wurmcritter\body.frames [NEW] monsters\critter\wurmcritter\body.monsterpart [NEW] monsters\critter\wurmcritter\body.png [NEW] monsters\critter\wurmcritter\wurmcritter.animation [NEW] monsters\critter\wurmcritter\wurmcritter.monstertype monsters\ground\approachstate.lua monsters\pets\groundpet.lua monsters\unique\ixoling\ixoling.monstertype npcs\airshipcaptain.npctype npcs\airshipguard.npctype npcs\airshipquartermaster.npctype npcs\apexslave.npctype npcs\apexslaver.npctype npcs\armoredcultist.npctype npcs\bandit.npctype [NEW] npcs\base.npctype npcs\blacksmith.npctype npcs\bmain.lua npcs\bunkerguard.npctype npcs\bunkerpyro.npctype npcs\castleguard.npctype npcs\castlelord.npctype npcs\castleroyalguard.npctype npcs\chefmerchant.npctype npcs\clanleader.npctype npcs\colourfulvillager.npctype npcs\cultist.npctype npcs\default_reactions.config npcs\doctormerchant.npctype npcs\eyeguard.npctype npcs\follower.npctype npcs\friendlyguard.npctype npcs\friendlypirateguard.npctype npcs\guard.npctype npcs\hellguard.npctype npcs\hellprisoner.npctype [NEW] npcs\hostile.npctype npcs\knight.npctype npcs\labguard.npctype npcs\labscientist.npctype npcs\merchant.npctype npcs\nakedvillager.npctype npcs\outlawsniper.npctype npcs\prisonberserker.npctype npcs\prisonbruiser.npctype npcs\prisongunman.npctype npcs\pyramidguard.npctype npcs\servant.npctype npcs\shroomguard.npctype npcs\shroommerchant.npctype npcs\stimmerchant.npctype npcs\templeguard.npctype npcs\tombzombie.npctype npcs\toolmerchant.npctype npcs\towerascendant.npctype npcs\tutorial.npctype npcs\tutorialtenant.npctype npcs\villageguard.npctype npcs\villageguardcaptain.npctype npcs\villager.npctype npcs\wanderingmerchant.npctype npcs\wildhunter.npctype npcs\wildhunterveteran.npctype npcs\wizardmerchant.npctype npcs\biome\forestvillager.npctype npcs\mission\apexscientist.npctype npcs\mission\apexscout.npctype npcs\mission\florancelebrator.npctype npcs\mission\florangladiator.npctype npcs\mission\floranpredator.npctype npcs\mission\floransniper.npctype npcs\mission\floranspectator.npctype npcs\mission\miner.npctype npcs\mission\minersurvivor.npctype npcs\mission\mutantminer.npctype npcs\mission\penguinscientist.npctype npcs\mission\survivor.npctype npcs\mission\wildling.npctype npcs\outpost\outpostapexmechanic.npctype npcs\outpost\outpostapexrefugee.npctype npcs\outpost\outpostapexscientist.npctype npcs\outpost\outpostavianexplorer.npctype npcs\outpost\outpostavianmercenary.npctype npcs\outpost\outpostavianrefugee.npctype npcs\outpost\outpostbountyhunter.npctype npcs\outpost\outpostcivilian.npctype npcs\outpost\outpostfloranfan.npctype npcs\outpost\outpostfloranhunter.npctype npcs\outpost\outpostfloranscholar.npctype npcs\outpost\outpostglitchmechanic.npctype npcs\outpost\outpostglitchmercenary.npctype npcs\outpost\outpostglitchsilenttype.npctype npcs\outpost\outposthumanexcon.npctype npcs\outpost\outposthumanscientist.npctype npcs\outpost\outposthumansurvivor.npctype npcs\outpost\outposthylotlfloranhater.npctype npcs\outpost\outposthylotlperformer.npctype npcs\outpost\outposthylotlwarrior.npctype npcs\outpost\outpostpenguinpromoter.npctype npcs\outpost\outpostundersideman.npctype npcs\story\nuru.npctype npcs\subbiometenants\spring.npctype npcs\subbiometenants\tar.npctype objects\arttrophies\paintingmonalisa\paintingmonalisa.object objects\farmables\currentcorn\currentcornseed.object objects\farmables\currentcorn\wildcurrentcornseed.object objects\farmables\kiwi\kiwiseed.object objects\farmables\kiwi\wildkiwiseed.object objects\generic\arcademachine\arcademachine.object objects\generic\birdsnest\birdsnest.object objects\generic\travellersbeacon\travellersbeacon.object objects\generic\woodenchair\woodenchair.object objects\generic\woodenchair\woodenchairicon.png objects\human\jukebox\jukebox.object objects\hylotl\thefickletype\tenstudiesplaque.frames objects\hylotl\thefickletype\tenstudiesplaque.object objects\outpost\frogfurnishing\frogfurnishing.object objects\themed\island\islandchair\islandchair.object [NEW] parallax\images\desertforeground\base\1.png [NEW] parallax\images\desertforeground2\base\1.png [NEW] parallax\images\desertforeground3\base\1.png parallax\images\desertrare\base\7.png parallax\images\desertrare\base\8.png parallax\images\desertsmalldunes\base\1.png [NEW] parallax\images\deserttrees\base\1.png [NEW] parallax\images\deserttrees2\base\1.png parallax\surface\desert.parallax plants\trees\forest\foliage\rose\branch1.png plants\trees\forest\foliage\rose\branch2.png plants\trees\forest\foliage\rose\branch3.png plants\trees\forest\foliage\rose\crown1.png plants\trees\forest\foliage\rose\crown2.png plants\trees\forest\foliage\rose\crown3.png plants\trees\forest\foliage\rose\parallax\forestcanopy\base\1.png projectiles\weather\settlingsnow\settlingsnow.projectile [NEW] recipes\plain\logblock.recipe scripts\npctoyobject.lua scripts\pathing.lua [NEW] scripts\actions\dialog.lua scripts\actions\entities.lua scripts\actions\movement.lua scripts\actions\position.lua scripts\actions\reaction.lua scripts\behavior\composite.lua scripts\behavior\decorator.lua stagehands\coordinator\npccombat.lua [NEW] tiles\columntemplate.config [NEW] tiles\rowtemplate.config tiles\materials\alienrock.material tiles\materials\alienstripedblock.material tiles\materials\ancientblock.material tiles\materials\ancientbrick.material tiles\materials\apexshipdetails.material tiles\materials\apexshipsupport.material tiles\materials\apexshipwall.material tiles\materials\ash.material tiles\materials\asphalt.material tiles\materials\aztec.material tiles\materials\aztectech.material tiles\materials\bars.material tiles\materials\blackglass.material tiles\materials\blaststone.material tiles\materials\blueneonsymbolblock.material tiles\materials\bonematerial.material tiles\materials\bookpiles.material tiles\materials\brick.material [NEW] tiles\materials\cabinroofing.material [NEW] tiles\materials\cabinroofing.png tiles\materials\cactiblock.material tiles\materials\candyblock.material tiles\materials\castlewalls1.material tiles\materials\chain.material tiles\materials\cheapwallpaper.material tiles\materials\clay.material tiles\materials\cobblestone.material tiles\materials\cobblestonebrick.material tiles\materials\coconutblock.material tiles\materials\crosshatch.material tiles\materials\crystalblock.material tiles\materials\darksmoothstone.material tiles\materials\darkwood.material tiles\materials\deadcore.material tiles\materials\direstone.material tiles\materials\dirt.material tiles\materials\drydirt.material tiles\materials\drysand.material tiles\materials\eyepiles.material tiles\materials\fadedblocks.material tiles\materials\fence.material tiles\materials\frozenwater.material tiles\materials\fullwood1.material tiles\materials\fullwood2.material tiles\materials\girder.material tiles\materials\glass.material tiles\materials\gravel.material tiles\materials\hazard.material tiles\materials\heavyironbars.material tiles\materials\heavypipe.material tiles\materials\homewalls1.material tiles\materials\ice.material tiles\materials\iceblock.material tiles\materials\junktech.material tiles\materials\limestone.material [NEW] tiles\materials\log.material [NEW] tiles\materials\log.png tiles\materials\lunarbaseblock.material tiles\materials\magmarock.material tiles\materials\matterblock.material tiles\materials\meteoriterock.material tiles\materials\moondust.material tiles\materials\moonrock.material tiles\materials\moonstone.material tiles\materials\mud.material tiles\materials\obsidian.material tiles\materials\ornateroofing.material tiles\materials\ornatetiles.material tiles\materials\ornatewall.material tiles\materials\ornatewood.material tiles\materials\outpostsupport.material tiles\materials\outpostwall1.material tiles\materials\outpostwall2.material tiles\materials\petalblock.material tiles\materials\pillarblock.material tiles\materials\pillarblock.png tiles\materials\plantblock.material tiles\materials\plantmatter.material tiles\materials\pressurizedgirder.material tiles\materials\pressurizedsteel.material tiles\materials\purplecrystal.material tiles\materials\rainbowwoodblock.material tiles\materials\reeds.material tiles\materials\rock01.material tiles\materials\rock02.material tiles\materials\rock03.material tiles\materials\rock04.material tiles\materials\rock12.material tiles\materials\rock14.material tiles\materials\rock15.material tiles\materials\rock17.material tiles\materials\rock19.material tiles\materials\rock20.material tiles\materials\rockbrick.material tiles\materials\rooftiles.material tiles\materials\rustyblock.material tiles\materials\sand.material tiles\materials\sand2.material tiles\materials\sandstone01.material tiles\materials\sewage.material tiles\materials\sewerpipe.material tiles\materials\shojiscreenpanel.material tiles\materials\shroomblock.material tiles\materials\slime.material tiles\materials\slush.material tiles\materials\snow.material tiles\materials\spidersilkblock.material tiles\materials\stonerubble.material tiles\materials\stonetiles.material tiles\materials\supermatter.material tiles\materials\tar.material tiles\materials\techhull1.material tiles\materials\temple1.material tiles\materials\temple3.material tiles\materials\temple4.material tiles\materials\thatch.material tiles\materials\tombbrick.material tiles\materials\tombbrick2.material tiles\materials\tombbrick4.material tiles\materials\treasurehoard.material tiles\materials\vine.material tiles\materials\wallpaper.material tiles\materials\wetdirt.material tiles\materials\wicker.material tiles\materials\woodbridge.material tiles\materials\woodenwindow1.material tiles\materials\woodenwindow2.material tiles\materials\woodpanelling.material DIFFS ----- player.config 18a19 > { "item" : "logblock" }, spawner.config 1056c1056 < }, --- > }, 1057a1058,1182 > "groopcritter" : { > "spawnParameters" : { > "area" : "surface", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.02, > "monsterType" : "groopcritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "squidcritter" : { > "spawnParameters" : { > "area" : "liquid", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.02, > "monsterType" : "squidcritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "jellycritter" : { > "spawnParameters" : { > "area" : "liquid", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.02, > "monsterType" : "jellycritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "ravencritter" : { > "spawnParameters" : { > "area" : "surface", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.02, > "monsterType" : "ravencritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "wurmcritter" : { > "spawnParameters" : { > "area" : "surface", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.02, > "monsterType" : "wurmcritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "vulturecritter" : { > "spawnParameters" : { > "area" : "surface", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.02, > "monsterType" : "vulturecritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "squeekcritter" : { > "spawnParameters" : { > "area" : "surface", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.02, > "monsterType" : "squeekcritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "deserttortoise" : { > "spawnParameters" : { > "area" : "surface", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.02, > "monsterType" : "deserttortoise", > "monsterParameters" : { > "aggressive" : false > } > }, > > "bowbirdcritter" : { > "spawnParameters" : { > "area" : "surface", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.02, > "monsterType" : "bowbirdcritter", > "monsterParameters" : { > "aggressive" : false > } > }, terrestrial_worlds.config 58c58 < "secondaryRegionPeriod" : [800, 1200], --- > "secondaryRegionPeriod" : [1, 1], 116c116,119 < "layerDefaults" : { }, --- > "layerDefaults" : { > "secondaryRegionPeriod" : [2000, 2000], > "secondaryRegionSize" : [1000, 1000] > }, 174c177,180 < "layerDefaults" : { }, --- > "layerDefaults" : { > "secondaryRegionPeriod" : [3000, 3000], > "secondaryRegionSize" : [1000, 1000] > }, 234c240,243 < "layerDefaults" : { }, --- > "layerDefaults" : { > "secondaryRegionPeriod" : [4000, 4000], > "secondaryRegionSize" : [2000, 2000] > }, 299a309 > "secondaryRegion" : [ "forest" ], 311c321 < "secondaryRegion" : [ "spring", "mushroom" ], --- > "secondaryRegion" : [ "garden", "volcanic", "savannah", "alien", "scorched", "moon", "spring", "mushroom" ], 340c350 < "secondaryRegion" : [ "oasis", "tar" ], --- > "secondaryRegion" : [ "forest", "savannah", "jungle", "volcanic", "scorched", "moon", "oasis", "tar" ], 403c413 < "secondaryRegion" : [ "colourful", "bones" ], --- > "secondaryRegion" : [ "garden", "forest", "jungle", "volcanic", "scorched", "moon", "colourful", "bones" ], 432c442 < "secondaryRegion" : [ "alpine", "bioluminescence" ], --- > "secondaryRegion" : [ "garden", "forest", "volcanic", "scorched", "moon", "alpine", "bioluminescence" ], 462c472 < "secondaryRegion" : [ "giantflowers" ], --- > "secondaryRegion" : [ "giantflowers", "garden", "forest", "volcanic", "savannah", "alien", "scorched", "moon" ], 563c573 < "secondaryRegion" : [ "ice" ], --- > "secondaryRegion" : [ "ice", "garden", "forest", "volcanic", "scorched", "moon", "alpine", "bioluminescence" ], 587c597 < "secondaryRegion" : [ "crystalline" ], --- > "secondaryRegion" : [ "crystalline", "moon", "scorched", "forest", "garden" ], 598c608 < "secondaryRegion" : [ "rust" ], --- > "secondaryRegion" : [ "rust", "garden", "forest", "volcanic", "moon", "alpine", "bioluminescence" ], universe_server.config 36c36 < "terrestrialBiome" : "forest", --- > "terrestrialBiome" : "desert", behaviors\monsters\critter\flying.behavior 2a3 > "description": "", 7d7 < "/scripts/actions/math.lua", 9c9 < "/npcs/bmain.lua" --- > "/scripts/actions/math.lua" 140,151d139 < "title": "multiply", < "type": "action", < "name": "multiply", < "parameters": { < "number": "flyDir", < "factor": 15 < }, < "output": { < "result": "flyX" < } < }, < { 203,205c191,193 < "title": "lineTileCollision", < "type": "action", < "name": "lineTileCollision", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 207,217c195,235 < "position": "self", < "offset": [ < "flyDir", < 0 < ], < "collisionType": [ < "Null", < "Block", < "Dynamic" < ] < } --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "lineTileCollision", > "type": "action", > "name": "lineTileCollision", > "parameters": { > "position": "self", > "offset": [ > "flyDir", > 0 > ], > "collisionType": [ > "Null", > "Block", > "Dynamic" > ] > } > }, > { > "title": "failer", > "type": "decorator", > "name": "failer", > "parameters": {}, > "child": { > "title": "reverseDirection", > "type": "action", > "name": "reverseDirection", > "parameters": { > "direction": "flyDir" > }, > "output": { > "direction": "flyDir" > } > } > } > ] 248a267,278 > "title": "multiply", > "type": "action", > "name": "multiply", > "parameters": { > "number": "flyDir", > "factor": 15 > }, > "output": { > "result": "flyX" > } > }, > { 255c285 < 25 --- > 15 behaviors\monsters\critter\swimming.behavior 5,6d4 < "/scripts/actions/movement.lua", < "/scripts/actions/time.lua", 7a6,7 > "/scripts/actions/time.lua", > "/scripts/actions/movement.lua", 12c12 < "title": "dynamic", --- > "title": "sequence", 14,15c14,20 < "name": "dynamic", < "parameters": {}, --- > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, 18c23,61 < "title": "sequence", --- > "title": "setAnimationState", > "type": "action", > "name": "setAnimationState", > "parameters": { > "state": "idle", > "type": "movement" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": [ > 1, > 3 > ] > } > }, > { > "title": "setDirection", > "type": "action", > "name": "setDirection", > "parameters": {}, > "output": { > "direction": "swimDir" > } > }, > { > "title": "setAnimationState", > "type": "action", > "name": "setAnimationState", > "parameters": { > "state": "swimslow", > "type": "movement" > } > }, > { > "title": "parallel", 20c63 < "name": "sequence", --- > "name": "parallel", 22,25c65,66 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" --- > "fail": -1, > "success": 1 29c70 < "title": "inverter", --- > "title": "failer", 31c72 < "name": "inverter", --- > "name": "failer", 34,36c75,77 < "title": "inLiquid", < "type": "action", < "name": "inLiquid", --- > "title": "cooldown", > "type": "decorator", > "name": "cooldown", 38,60c79,80 < "percentage": 0.5 < } < } < }, < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": 1, < "success": 1 < }, < "children": [ < { < "title": "controlParameters", < "type": "action", < "name": "controlParameters", < "parameters": { < "config": { < "gravityEnabled": true, < "liquidFriction": 15 < } < } --- > "cooldown": 0.1, > "onFail": false 62,65c82,85 < { < "title": "timer", < "type": "action", < "name": "timer", --- > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", 67,68c87,121 < "time": 0.2 < } --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "lineTileCollision", > "type": "action", > "name": "lineTileCollision", > "parameters": { > "position": "self", > "offset": [ > "swimDir", > 0 > ], > "collisionType": [ > "Null", > "Block", > "Dynamic" > ] > } > }, > { > "title": "reverseDirection", > "type": "action", > "name": "reverseDirection", > "parameters": { > "direction": "swimDir" > }, > "output": { > "direction": "swimDir" > } > } > ] 70,84c123,124 < ] < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ --- > } > }, 86c126 < "title": "setAnimationState", --- > "title": "move", 88c128 < "name": "setAnimationState", --- > "name": "move", 90,91c130,131 < "state": "idle", < "type": "movement" --- > "direction": "swimDir", > "run": false 101c141 < 3 --- > 1.5 104,208d143 < }, < { < "title": "setDirection", < "type": "action", < "name": "setDirection", < "parameters": {}, < "output": { < "direction": "swimDir" < } < }, < { < "title": "setAnimationState", < "type": "action", < "name": "setAnimationState", < "parameters": { < "state": "swimslow", < "type": "movement" < } < }, < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": -1, < "success": 1 < }, < "children": [ < { < "title": "failer", < "type": "decorator", < "name": "failer", < "parameters": {}, < "child": { < "title": "cooldown", < "type": "decorator", < "name": "cooldown", < "parameters": { < "cooldown": 0.1, < "onFail": false < }, < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "lineTileCollision", < "type": "action", < "name": "lineTileCollision", < "parameters": { < "position": "self", < "offset": [ < "swimDir", < 0 < ], < "collisionType": [ < "Null", < "Block", < "Dynamic" < ] < } < }, < { < "title": "reverseDirection", < "type": "action", < "name": "reverseDirection", < "parameters": { < "direction": "swimDir" < }, < "output": { < "direction": "swimDir" < } < } < ] < } < } < }, < { < "title": "move", < "type": "action", < "name": "move", < "parameters": { < "direction": "swimDir", < "run": false < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": [ < 1, < 1.5 < ] < } < } < ] behaviors\npc\combat.behavior 8c8,10 < "/scripts/actions/time.lua" --- > "/scripts/behavior.lua", > "/scripts/actions/time.lua", > "/scripts/actions/math.lua" 12,14c14,16 < "title": "group", < "type": "decorator", < "name": "group", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 16,21c18,21 < "goal": "target", < "goalType": "entity", < "groupId": "combat", < "maxMembers": 8, < "minMembers": 1, < "behavior": "/behaviors/coordinator/npccombat.behavior" --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 23,30c23,30 < "child": { < "title": "dynamic", < "type": "composite", < "name": "dynamic", < "parameters": {}, < "children": [ < { < "title": "parallel", --- > "children": [ > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "sequence", 32c32 < "name": "parallel", --- > "name": "sequence", 34,35c34,37 < "fail": 1, < "success": -1 --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 39,42c41,50 < "title": "hasMeleePrimary", < "type": "action", < "name": "hasMeleePrimary", < "parameters": {} --- > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "hasMeleePrimary", > "type": "action", > "name": "hasMeleePrimary", > "parameters": {} > } 45c53 < "title": "task", --- > "title": "inverter", 47c55,114 < "name": "task", --- > "name": "inverter", > "parameters": {}, > "child": { > "title": "hasRangedPrimary", > "type": "action", > "name": "hasRangedPrimary", > "parameters": {} > } > }, > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "hasMeleeSheathed", > "type": "action", > "name": "hasMeleeSheathed", > "parameters": {} > }, > { > "title": "hasRangedSheathed", > "type": "action", > "name": "hasRangedSheathed", > "parameters": {} > } > ] > }, > { > "title": "swapItemSlots", > "type": "action", > "name": "swapItemSlots", > "parameters": {} > } > ] > } > }, > { > "title": "group", > "type": "decorator", > "name": "group", > "parameters": { > "goal": "target", > "goalType": "entity", > "groupId": "combat", > "maxMembers": 8, > "minMembers": 1, > "behavior": "/behaviors/coordinator/npccombat.behavior" > }, > "child": { > "title": "dynamic", > "type": "composite", > "name": "dynamic", > "parameters": {}, > "children": [ > { > "title": "parallel", > "type": "composite", > "name": "parallel", 49,52c116,117 < "groupId": "combat", < "taskId": "melee", < "minMembers": 1, < "maxMembers": 4 --- > "fail": 1, > "success": -1 54,60c119,124 < "child": { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": -1, < "success": -1 --- > "children": [ > { > "title": "hasMeleePrimary", > "type": "action", > "name": "hasMeleePrimary", > "parameters": {} 62,63c126,136 < "children": [ < { --- > { > "title": "task", > "type": "decorator", > "name": "task", > "parameters": { > "groupId": "combat", > "taskId": "melee", > "minMembers": 1, > "maxMembers": 4 > }, > "child": { 72a146,168 > "title": "groupResource", > "type": "action", > "name": "groupResource", > "parameters": { > "groupId": "combat", > "name": "movePosition" > }, > "output": { > "position": "meleePosition" > } > }, > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" > }, > "output": { > "position": "targetPosition" > } > }, > { 79c175 < "title": "groupResource", --- > "title": "moveToPosition", 81c177 < "name": "groupResource", --- > "name": "moveToPosition", 83,84c179,185 < "groupId": "combat", < "name": "movePosition" --- > "avoidLiquid": true, > "failFast": false, > "groundPosition": false, > "maxGround": 5, > "minGround": -10, > "position": "meleePosition", > "run": true 87c188,189 < "position": "movePosition" --- > "direction": "direction", > "pathfinding": "meleePathing" 91c193 < "title": "entityPosition", --- > "title": "moveToPosition", 93c195 < "name": "entityPosition", --- > "name": "moveToPosition", 95c197,203 < "entity": "target" --- > "avoidLiquid": true, > "failFast": false, > "groundPosition": true, > "maxGround": 5, > "minGround": -20, > "position": "targetPosition", > "run": true 98c206,207 < "position": "targetPosition" --- > "direction": "direction", > "pathfinding": "meleePathing" 104c213 < "title": "dynamic", --- > "title": "parallel", 106,107c215,219 < "name": "dynamic", < "parameters": {}, --- > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, 110,149c222,227 < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { < "title": "moveToPosition", < "type": "action", < "name": "moveToPosition", < "parameters": { < "avoidLiquid": true, < "groundPosition": false, < "maxGround": 5, < "minGround": -10, < "position": "movePosition", < "run": true, < "failFast": false < }, < "output": { < "direction": "direction" < } < }, < { < "title": "moveToPosition", < "type": "action", < "name": "moveToPosition", < "parameters": { < "avoidLiquid": true, < "groundPosition": true, < "maxGround": 5, < "minGround": -20, < "position": "targetPosition", < "run": true, < "failFast": false < }, < "output": { < "direction": "direction" < } < } < ] --- > "title": "hasFlag", > "type": "action", > "name": "hasFlag", > "parameters": { > "name": "meleePathing" > } 152,154c230,232 < "title": "parallel", < "type": "composite", < "name": "parallel", --- > "title": "entityInSight", > "type": "action", > "name": "entityInSight", 156,166c234,248 < "fail": -1, < "success": -1 < }, < "children": [ < { < "title": "entityInSight", < "type": "action", < "name": "entityInSight", < "parameters": { < "entity": "target" < } --- > "entity": "target" > } > }, > { > "title": "failer", > "type": "decorator", > "name": "failer", > "parameters": {}, > "child": { > "title": "cooldown", > "type": "decorator", > "name": "cooldown", > "parameters": { > "cooldown": 10, > "onFail": false 168,171c250,253 < { < "title": "cooldown", < "type": "decorator", < "name": "cooldown", --- > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", 173,174c255,258 < "cooldown": 20, < "onFail": false --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 176,202c260,266 < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 2 < } < }, < { < "title": "say", < "type": "action", < "name": "say", < "parameters": { < "content": "Get over here, fiend!", < "tags": {} < } --- > "children": [ > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 2 204,220d267 < ] < } < }, < { < "title": "failer", < "type": "decorator", < "name": "failer", < "parameters": {}, < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" 222,267c269,295 < "children": [ < { < "title": "canFire", < "type": "action", < "name": "canFire", < "parameters": {} < }, < { < "title": "hasRangedSheathed", < "type": "action", < "name": "hasRangedSheathed", < "parameters": {} < }, < { < "title": "swapItemSlots", < "type": "action", < "name": "swapItemSlots", < "parameters": {} < } < ] < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "hasRangedSheathed", < "type": "action", < "name": "hasRangedSheathed", < "parameters": {} < }, < { < "title": "swapItemSlots", < "type": "action", < "name": "swapItemSlots", < "parameters": {} --- > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "chance", > "type": "action", > "name": "chance", > "parameters": { > "chance": 0.75 > } > }, > { > "title": "sayToEntity", > "type": "action", > "name": "sayToEntity", > "parameters": { > "dialogType": "dialog.combat.cantReach", > "entity": "target", > "tags": {} > } > } > ] > } > ] 269c297 < ] --- > } 285,287c313,315 < "title": "inverter", < "type": "decorator", < "name": "inverter", --- > "title": "selector", > "type": "composite", > "name": "selector", 289,296c317,359 < "child": { < "title": "entityInRange", < "type": "action", < "name": "entityInRange", < "parameters": { < "entity": "target", < "range": 15, < "position": "self" --- > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "target", > "range": 15, > "position": "self" > } > } > }, > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, > "children": [ > { > "title": "hasFlag", > "type": "action", > "name": "hasFlag", > "parameters": { > "name": "meleePathing" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 1 > } > } > ] 298c361 < } --- > ] 366,374c429 < } < ] < }, < { < "title": "cleanup", < "type": "composite", < "name": "cleanup", < "parameters": {}, < "children": [ --- > }, 376c431 < "title": "parallel", --- > "title": "cleanup", 378,382c433,434 < "name": "parallel", < "parameters": { < "fail": -1, < "success": -1 < }, --- > "name": "cleanup", > "parameters": {}, 385c437 < "title": "selector", --- > "title": "parallel", 387,388c439,443 < "name": "selector", < "parameters": {}, --- > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, 421a477,499 > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" > }, > "output": { > "position": "targetPosition" > } > }, > { > "title": "setAimPosition", > "type": "action", > "name": "setAimPosition", > "parameters": { > "offset": [ > 0, > 0 > ], > "position": "targetPosition" > } > }, > { 430c508 < "title": "endPrimaryFire", --- > "title": "runner", 432c510 < "name": "endPrimaryFire", --- > "name": "runner", 438c516 < "title": "entityPosition", --- > "title": "endPrimaryFire", 440,463c518 < "name": "entityPosition", < "parameters": { < "entity": "target" < }, < "output": { < "position": "targetPosition" < } < }, < { < "title": "setAimPosition", < "type": "action", < "name": "setAimPosition", < "parameters": { < "offset": [ < 0, < 0 < ], < "position": "targetPosition" < } < }, < { < "title": "runner", < "type": "action", < "name": "runner", --- > "name": "endPrimaryFire", 469c524 < "title": "endPrimaryFire", --- > "title": "runner", 471c526 < "name": "endPrimaryFire", --- > "name": "runner", 476,494c531,532 < ] < } < } < ] < }, < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, < "children": [ < { < "title": "hasRangedPrimary", < "type": "action", < "name": "hasRangedPrimary", < "parameters": {} --- > } > ] 497,499c535,537 < "title": "task", < "type": "decorator", < "name": "task", --- > "title": "parallel", > "type": "composite", > "name": "parallel", 501,504c539,540 < "groupId": "combat", < "taskId": "ranged", < "minMembers": 1, < "maxMembers": 8 --- > "fail": 1, > "success": -1 506,512c542,547 < "child": { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 --- > "children": [ > { > "title": "hasRangedPrimary", > "type": "action", > "name": "hasRangedPrimary", > "parameters": {} 514,516c549,560 < "children": [ < { < "title": "selector", --- > { > "title": "task", > "type": "decorator", > "name": "task", > "parameters": { > "groupId": "combat", > "taskId": "ranged", > "minMembers": 1, > "maxMembers": 8 > }, > "child": { > "title": "parallel", 518,519c562,566 < "name": "selector", < "parameters": {}, --- > "name": "parallel", > "parameters": { > "fail": -1, > "success": -1 > }, 522,531c569,597 < "title": "groupResource", < "type": "action", < "name": "groupResource", < "parameters": { < "groupId": "combat", < "name": "movePosition" < }, < "output": { < "position": "movePosition" < } --- > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "groupResource", > "type": "action", > "name": "groupResource", > "parameters": { > "groupId": "combat", > "name": "movePosition" > }, > "output": { > "position": "rangedPosition" > } > }, > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" > }, > "output": { > "position": "movePosition" > } > } > ] 534,552d599 < "title": "entityPosition", < "type": "action", < "name": "entityPosition", < "parameters": { < "entity": "target" < }, < "output": { < "position": "movePosition" < } < } < ] < }, < { < "title": "dynamic", < "type": "composite", < "name": "dynamic", < "parameters": {}, < "children": [ < { 557a605 > "failFast": false, 561,563c609,610 < "position": "movePosition", < "run": true, < "failFast": false --- > "position": "rangedPosition", > "run": true 566c613,614 < "direction": "direction" --- > "direction": "direction", > "pathfinding": "rangedPathing" 570,583d617 < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} < } < ] < }, < { < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { 595c629,659 < "title": "canFire", --- > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "canFire", > "type": "action", > "name": "canFire", > "parameters": {} > } > }, > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "target", > "range": 5, > "position": "self" > } > } > ] > }, > { > "title": "entityInSight", 597c661,669 < "name": "canFire", --- > "name": "entityInSight", > "parameters": { > "entity": "target" > } > }, > { > "title": "hasMeleeSheathed", > "type": "action", > "name": "hasMeleeSheathed", 601,614c673,676 < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "entityInRange", < "type": "action", < "name": "entityInRange", < "parameters": { < "entity": "target", < "range": 5, < "position": "self" < } < } --- > "title": "swapItemSlots", > "type": "action", > "name": "swapItemSlots", > "parameters": {} 619,666c681 < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "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": "hasMeleeSheathed", < "type": "action", < "name": "hasMeleeSheathed", < "parameters": {} < }, < { < "title": "swapItemSlots", < "type": "action", < "name": "swapItemSlots", < "parameters": {} < } < ] < } < } < ] < }, < { < "title": "cleanup", < "type": "composite", < "name": "cleanup", < "parameters": {}, < "children": [ < { < "title": "parallel", --- > "title": "dynamic", 668,672c683,684 < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, --- > "name": "dynamic", > "parameters": {}, 675c687 < "title": "selector", --- > "title": "parallel", 677,678c689,693 < "name": "selector", < "parameters": {}, --- > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, 681c696 < "title": "sequence", --- > "title": "selector", 683,689c698,699 < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, --- > "name": "selector", > "parameters": {}, 697c707 < "range": 40, --- > "range": 10, 707c717 < "title": "entityInRange", --- > "title": "entityInSight", 709c719 < "name": "entityInRange", --- > "name": "entityInSight", 711,713c721 < "entity": "target", < "range": 15, < "position": "self" --- > "entity": "target" 716,752d723 < }, < { < "title": "entityInSight", < "type": "action", < "name": "entityInSight", < "parameters": { < "entity": "target" < } < }, < { < "title": "beginPrimaryFire", < "type": "action", < "name": "beginPrimaryFire", < "parameters": {} < }, < { < "title": "entityPosition", < "type": "action", < "name": "entityPosition", < "parameters": { < "entity": "target" < }, < "output": { < "position": "targetPosition" < } < }, < { < "title": "setAimPosition", < "type": "action", < "name": "setAimPosition", < "parameters": { < "offset": [ < 0, < 0 < ], < "position": "targetPosition" < } 756a728,733 > "title": "endPrimaryFire", > "type": "action", > "name": "endPrimaryFire", > "parameters": {} > }, > { 762a740,745 > }, > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} 767,770c750,820 < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} --- > "title": "cleanup", > "type": "composite", > "name": "cleanup", > "parameters": {}, > "children": [ > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, > "children": [ > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "beginPrimaryFire", > "type": "action", > "name": "beginPrimaryFire", > "parameters": {} > }, > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" > }, > "output": { > "position": "targetPosition" > } > }, > { > "title": "setAimPosition", > "type": "action", > "name": "setAimPosition", > "parameters": { > "offset": [ > 0, > 0 > ], > "position": "targetPosition" > } > } > ] > }, > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} > } > ] > }, > { > "title": "endPrimaryFire", > "type": "action", > "name": "endPrimaryFire", > "parameters": {} > } > ] 775c825 < "title": "endPrimaryFire", --- > "title": "runner", 777c827 < "name": "endPrimaryFire", --- > "name": "runner", 782,783c832,839 < ] < } --- > } > ] > }, > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} 787,788c843,844 < ] < } --- > } > ] behaviors\npc\converse.behavior 40c40 < "dialogType": "converse.dialog" --- > "dialogType": "dialog.converse" behaviors\npc\converseseq.behavior 62c62 < "dialogType": "converse.dialog" --- > "dialogType": "dialog.converse" behaviors\npc\finalreact.behavior 134c134 < "title": "sequence", --- > "title": "selector", 136c136 < "name": "sequence", --- > "name": "selector", 140,148c140,163 < "title": "entityPosition", < "type": "action", < "name": "entityPosition", < "parameters": { < "entity": "reactTarget" < }, < "output": { < "position": "reactTarget" < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "reactTarget", > "range": 4, > "position": "self" > } > }, > { > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "reactTarget" > } > } > ] 151,153c166,168 < "title": "moveToPosition", < "type": "action", < "name": "moveToPosition", --- > "title": "parallel", > "type": "composite", > "name": "parallel", 155,161c170,171 < "avoidLiquid": true, < "groundPosition": true, < "maxGround": 5, < "minGround": -5, < "position": "reactTarget", < "run": false, < "failFast": false --- > "fail": -1, > "success": 2 163,165c173,212 < "output": { < "direction": "direction" < } --- > "children": [ > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "reactTarget" > }, > "output": { > "position": "reactTarget" > } > }, > { > "title": "moveToPosition", > "type": "action", > "name": "moveToPosition", > "parameters": { > "avoidLiquid": true, > "groundPosition": true, > "maxGround": 0, > "minGround": -5, > "position": "reactTarget", > "run": false, > "failFast": false > }, > "output": { > "direction": "direction" > } > }, > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "reactTarget", > "range": 2, > "position": "self" > } > } > ] behaviors\npc\flee.behavior 51c51 < "dialogType": "flee.dialog.helpme" --- > "dialogType": "dialog.flee.helpme" 98c98 < "dialogType": "flee.dialog.helpme" --- > "dialogType": "dialog.flee.helpme" 116c116 < "dialogType": "flee.dialog.safe", --- > "dialogType": "dialog.flee.safe", behaviors\npc\floranspectator.behavior 105c105 < "dialogType": "converse.dialog" --- > "dialogType": "dialog.converse" behaviors\npc\follower.behavior 139c139 < "dialogType": "follower.dialog.join", --- > "dialogType": "dialog.follower.join", 151c151 < "dialogType": "follower.dialog.returnFromWait", --- > "dialogType": "dialog.follower.returnFromWait", 198c198 < "dialogType": "follower.dialog.returnFromCombat", --- > "dialogType": "dialog.follower.returnFromCombat", 221c221 < "dialogType": "follower.dialog.attack", --- > "dialogType": "dialog.follower.attack", 401c401 < "dialogType": "follower.dialog.wait", --- > "dialogType": "dialog.follower.wait", behaviors\npc\guard.behavior 4a5 > "/scripts/actions/math.lua", 57a59,66 > "title": "chance", > "type": "action", > "name": "chance", > "parameters": { > "chance": 0.75 > } > }, > { 124a134,141 > "title": "chance", > "type": "action", > "name": "chance", > "parameters": { > "chance": 0.75 > } > }, > { 212,217d228 < }, < { < "type": "module", < "path": "/behaviors/npc/hound.behavior", < "title": "NPC Hound", < "parameters": {} behaviors\npc\hostileguard.behavior 4a5 > "/scripts/actions/math.lua", 51a53,60 > "title": "chance", > "type": "action", > "name": "chance", > "parameters": { > "chance": 0.75 > } > }, > { 117a127,134 > { > "title": "chance", > "type": "action", > "name": "chance", > "parameters": { > "chance": 0.75 > } > }, behaviors\npc\hound.behavior 330c330 < "dialogType": "dialog.warnings.0.sword", --- > "dialogType": "dialog.swordwarning1", 342c342 < "dialogType": "dialog.warnings.0.gun", --- > "dialogType": "dialog.gunwarning1", 387c387 < "dialogType": "dialog.warnings.1.sword", --- > "dialogType": "dialog.swordwarning2", 399c399 < "dialogType": "dialog.warnings.1.gun", --- > "dialogType": "dialog.gunwarning2", 444c444 < "dialogType": "dialog.warnings.2.sword", --- > "dialogType": "dialog.swordwarning3", 456c456 < "dialogType": "dialog.warnings.2.gun", --- > "dialogType": "dialog.gunwarning3", behaviors\npc\merchant.behavior 211c211 < "dialogType": "merchant.dialog.start", --- > "dialogType": "dialog.merchant.start", 228c228 < "dialogType": "returnToStore.dialog.follow", --- > "dialogType": "dialog.merchant.follow", 264c264 < "dialogType": "returnToStore.dialog.welcome", --- > "dialogType": "dialog.merchant.welcome", 384c384 < "dialogType": "merchant.dialog.end", --- > "dialogType": "dialog.merchant.end", 501c501 < "dialogType": "returnToStore.dialog.tout", --- > "dialogType": "dialog.merchant.tout", behaviors\npc\play.behavior 8,9c8 < "/scripts/actions/movement.lua", < "/npcs/bmain.lua" --- > "/scripts/actions/movement.lua" 379,386d377 < }, < { < "title": "dance", < "type": "action", < "name": "dance", < "parameters": { < "dance": null < } behaviors\npc\react.behavior 15c15 < "title": "sequence", --- > "title": "cleanup", 17c17 < "name": "sequence", --- > "name": "cleanup", 21,43c21,23 < "title": "chooseReaction", < "type": "action", < "name": "chooseReaction", < "parameters": { < "influence": "influence" < }, < "output": { < "reaction": "reaction" < } < }, < { < "title": "sendInfluenceNotification", < "type": "action", < "name": "sendInfluenceNotification", < "parameters": { < "reaction": "reaction", < "target": "reactTarget" < } < }, < { < "title": "succeeder", < "type": "decorator", < "name": "succeeder", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 45,74c25,32 < "child": { < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "smile" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "happy" < } < } < ] --- > "children": [ > { > "title": "chooseReaction", > "type": "action", > "name": "chooseReaction", > "parameters": { > "influence": "influence", > "target": "reactTarget" 76,77c34,53 < { < "title": "sequence", --- > "output": { > "reaction": "reaction" > } > }, > { > "title": "sendInfluenceNotification", > "type": "action", > "name": "sendInfluenceNotification", > "parameters": { > "reaction": "reaction", > "target": "reactTarget" > } > }, > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "selector", 79c55 < "name": "sequence", --- > "name": "selector", 83,89c59,81 < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "cry" < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "smile" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "happy" > } > } > ] 92,114c84,106 < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "sad" < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "computerTyping" < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "cry" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "sad" > } > } > ] 117,252c109,121 < "title": "dance", < "type": "action", < "name": "dance", < "parameters": { < "dance": "typing" < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "bored" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "sleep" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.5 < } < }, < { < "title": "addEphemeralEffect", < "type": "action", < "name": "addEphemeralEffect", < "parameters": { < "name": "bored", < "duration": "2" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 1.5 < } < }, < { < "title": "setVelocity", < "type": "action", < "name": "setVelocity", < "parameters": { < "velocity": [ < 0, < 15 < ] < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "hop" < } < }, < { < "title": "setVelocity", < "type": "action", < "name": "setVelocity", < "parameters": { < "velocity": [ < 0, < 25 < ] < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "jumpforjoy" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "happy" < } < }, < { < "title": "repeater", < "type": "decorator", < "name": "repeater", < "parameters": { < "maxLoops": 3, < "untilSuccess": false < }, < "child": { < "title": "repeater", < "type": "decorator", < "name": "repeater", < "parameters": { < "maxLoops": -1, < "untilSuccess": true --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "computerTyping" > } 254,285c123,129 < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.2 < } < }, < { < "title": "onGround", < "type": "action", < "name": "onGround", < "parameters": {} < }, < { < "title": "setVelocity", < "type": "action", < "name": "setVelocity", < "parameters": { < "velocity": [ < 0, < 15 < ] < } < } < ] --- > { > "title": "dance", > "type": "action", > "name": "dance", > "parameters": { > "dance": "typing" > } 287,304c131 < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "neutral" < } --- > ] 307,329c134,192 < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "neutral" < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "laugh" < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "bored" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "sleep" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 0.5 > } > }, > { > "title": "addEphemeralEffect", > "type": "action", > "name": "addEphemeralEffect", > "parameters": { > "name": "bored", > "duration": "2" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 1.5 > } > }, > { > "title": "setVelocity", > "type": "action", > "name": "setVelocity", > "parameters": { > "velocity": [ > 0, > 15 > ] > } > } > ] 332,354c195,220 < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "laugh" < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "annoyed" < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "hop" > } > }, > { > "title": "setVelocity", > "type": "action", > "name": "setVelocity", > "parameters": { > "velocity": [ > 0, > 25 > ] > } > } > ] 357,379c223,296 < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "annoyed" < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "oh" < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "jumpforjoy" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "happy" > } > }, > { > "title": "repeater", > "type": "decorator", > "name": "repeater", > "parameters": { > "maxLoops": 3, > "untilSuccess": false > }, > "child": { > "title": "repeater", > "type": "decorator", > "name": "repeater", > "parameters": { > "maxLoops": -1, > "untilSuccess": true > }, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 0.2 > } > }, > { > "title": "onGround", > "type": "action", > "name": "onGround", > "parameters": {} > }, > { > "title": "setVelocity", > "type": "action", > "name": "setVelocity", > "parameters": { > "velocity": [ > 0, > 15 > ] > } > } > ] > } > } > } > ] 382,404c299,321 < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "oh" < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "oooh" < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "neutral" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "neutral" > } > } > ] 407,429c324,346 < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "oooh" < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "wink" < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "laugh" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "laugh" > } > } > ] 432,487c349,372 < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "wink" < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "love" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "happy" < } < }, < { < "title": "addEphemeralEffect", < "type": "action", < "name": "addEphemeralEffect", < "parameters": { < "name": "love" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 1.5 < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "annoyed" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "annoyed" > } > } > ] > }, 489,495c374,396 < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "nosebleed" < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "oh" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "oh" > } > } > ] 498,503c399,421 < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "happy" < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "oooh" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "oooh" > } > } > ] 506,511c424,446 < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 1 < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "wink" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "wink" > } > } > ] 514,523c449,487 < "title": "entityDirection", < "type": "action", < "name": "entityDirection", < "parameters": { < "entity": "self", < "target": "reactTarget" < }, < "output": { < "direction": "direction" < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "love" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "happy" > } > }, > { > "title": "addEphemeralEffect", > "type": "action", > "name": "addEphemeralEffect", > "parameters": { > "name": "love" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 1.5 > } > } > ] 526c490 < "title": "selector", --- > "title": "sequence", 528c492 < "name": "selector", --- > "name": "sequence", 532c496,533 < "title": "sequence", --- > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "nosebleed" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "happy" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 1 > } > }, > { > "title": "entityDirection", > "type": "action", > "name": "entityDirection", > "parameters": { > "entity": "self", > "target": "reactTarget" > }, > "output": { > "direction": "direction" > } > }, > { > "title": "selector", 534c535 < "name": "sequence", --- > "name": "selector", 538,544c539,562 < "title": "greaterThan", < "type": "action", < "name": "greaterThan", < "parameters": { < "first": "direction", < "second": 0 < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "greaterThan", > "type": "action", > "name": "greaterThan", > "parameters": { > "first": "direction", > "second": 0 > } > }, > { > "title": "addEphemeralEffect", > "type": "action", > "name": "addEphemeralEffect", > "parameters": { > "name": "nosebleedright", > "duration": 0.2 > } > } > ] 551c569 < "name": "nosebleedright", --- > "name": "nosebleedleft", 556,564d573 < }, < { < "title": "addEphemeralEffect", < "type": "action", < "name": "addEphemeralEffect", < "parameters": { < "name": "nosebleedleft", < "duration": 0.2 < } 567,612d575 < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "vomit" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "oooh" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 1 < } < }, < { < "title": "entityDirection", < "type": "action", < "name": "entityDirection", < "parameters": { < "entity": "self", < "target": "reactTarget" < }, < "output": { < "direction": "direction", < "vector": "" < } 615c578 < "title": "selector", --- > "title": "sequence", 617c580 < "name": "selector", --- > "name": "sequence", 621c584,622 < "title": "sequence", --- > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "vomit" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "oooh" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 1 > } > }, > { > "title": "entityDirection", > "type": "action", > "name": "entityDirection", > "parameters": { > "entity": "self", > "target": "reactTarget" > }, > "output": { > "direction": "direction", > "vector": "" > } > }, > { > "title": "selector", 623c624 < "name": "sequence", --- > "name": "selector", 627,633c628,651 < "title": "greaterThan", < "type": "action", < "name": "greaterThan", < "parameters": { < "first": "direction", < "second": 0 < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "greaterThan", > "type": "action", > "name": "greaterThan", > "parameters": { > "first": "direction", > "second": 0 > } > }, > { > "title": "addEphemeralEffect", > "type": "action", > "name": "addEphemeralEffect", > "parameters": { > "name": "vomitright", > "duration": 0.2 > } > } > ] 640c658 < "name": "vomitright", --- > "name": "vomitleft", 644a663,679 > } > ] > }, > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "punch" > } 647c682 < "title": "addEphemeralEffect", --- > "title": "emote", 649c684,700 < "name": "addEphemeralEffect", --- > "name": "emote", > "parameters": { > "emote": "annoyed" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 0.5 > } > }, > { > "title": "dance", > "type": "action", > "name": "dance", 651,652c702,710 < "name": "vomitleft", < "duration": 0.2 --- > "dance": "punch" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 1.5 656,713c714 < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "punch" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "annoyed" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.5 < } < }, < { < "title": "dance", < "type": "action", < "name": "dance", < "parameters": { < "dance": "punch" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 1.5 < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ --- > }, 715,764c716,773 < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "posedance" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "happy" < } < }, < { < "title": "faceEntity", < "type": "action", < "name": "faceEntity", < "parameters": { < "entity": "reactTarget" < } < }, < { < "title": "dance", < "type": "action", < "name": "dance", < "parameters": { < "dance": "posedance" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 1 < } < }, < { < "title": "reverseDirection", < "type": "action", < "name": "reverseDirection", < "parameters": { < "direction": "direction" < }, < "output": { < "direction": "" < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "posedance" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "happy" > } > }, > { > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "reactTarget" > } > }, > { > "title": "dance", > "type": "action", > "name": "dance", > "parameters": { > "dance": "posedance" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 1 > } > }, > { > "title": "reverseDirection", > "type": "action", > "name": "reverseDirection", > "parameters": { > "direction": "direction" > }, > "output": { > "direction": "" > } > } > ] 768,769c777,786 < ] < } --- > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 2 > } > } > ] 772c789 < "title": "timer", --- > "title": "dance", 774c791 < "name": "timer", --- > "name": "dance", 776c793 < "time": 2 --- > "dance": null behaviors\npc\reactionchat.behavior 14c14 < "title": "cleanup", --- > "title": "sequence", 16c16 < "name": "cleanup", --- > "name": "sequence", 20,22c20,52 < "title": "sequence", < "type": "composite", < "name": "sequence", --- > "title": "getPersonality", > "type": "action", > "name": "getPersonality", > "parameters": { > "target": "chatfriend" > }, > "output": { > "influence": "influence" > } > }, > { > "title": "setEntity", > "type": "action", > "name": "setEntity", > "parameters": { > "entity": "chatfriend" > }, > "output": { > "entity": "reactTarget" > } > }, > { > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "reactTarget" > } > }, > { > "title": "resetReaction", > "type": "action", > "name": "resetReaction", 24,67c54,76 < "children": [ < { < "title": "getPersonality", < "type": "action", < "name": "getPersonality", < "parameters": { < "target": "chatfriend" < }, < "output": { < "influence": "influence" < } < }, < { < "title": "setEntity", < "type": "action", < "name": "setEntity", < "parameters": { < "entity": "chatfriend" < }, < "output": { < "entity": "reactTarget" < } < }, < { < "title": "faceEntity", < "type": "action", < "name": "faceEntity", < "parameters": { < "entity": "reactTarget" < } < }, < { < "title": "resetReaction", < "type": "action", < "name": "resetReaction", < "parameters": {}, < "output": { < "reaction": "reaction" < } < }, < { < "title": "succeeder", < "type": "decorator", < "name": "succeeder", --- > "output": { > "reaction": "reaction" > } > }, > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "task", > "type": "decorator", > "name": "task", > "parameters": { > "groupId": "chat", > "taskId": "first", > "minMembers": 1, > "maxMembers": 1 > }, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", 69,77c78,85 < "child": { < "title": "task", < "type": "decorator", < "name": "task", < "parameters": { < "groupId": "chat", < "taskId": "first", < "minMembers": 1, < "maxMembers": 1 --- > "children": [ > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 1 > } 79c87,130 < "child": { --- > { > "type": "module", > "path": "/behaviors/npc/react.behavior", > "title": "/behaviors/npc/react.behavior", > "parameters": {} > } > ] > } > } > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "isFinalReaction", > "type": "action", > "name": "isFinalReaction", > "parameters": { > "reaction": "reaction" > } > } > }, > { > "title": "repeater", > "type": "decorator", > "name": "repeater", > "parameters": { > "maxLoops": -1, > "untilSuccess": true > }, > "child": { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "dynamic", > "type": "composite", > "name": "dynamic", > "parameters": {}, > "children": [ > { 86c137 < "title": "timer", --- > "title": "receivedInfluenceNotification", 88,90c139,142 < "name": "timer", < "parameters": { < "time": 1 --- > "name": "receivedInfluenceNotification", > "parameters": {}, > "output": { > "influence": "influence" 94,135c146,152 < "type": "module", < "path": "/behaviors/npc/react.behavior", < "title": "/behaviors/npc/react.behavior", < "parameters": {} < } < ] < } < } < }, < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "isFinalReaction", < "type": "action", < "name": "isFinalReaction", < "parameters": { < "reaction": "reaction" < } < } < }, < { < "title": "repeater", < "type": "decorator", < "name": "repeater", < "parameters": { < "maxLoops": -1, < "untilSuccess": true < }, < "child": { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "dynamic", < "type": "composite", < "name": "dynamic", < "parameters": {}, < "children": [ --- > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "reactTarget" > } > }, 137c154 < "title": "sequence", --- > "title": "selector", 139c156 < "name": "sequence", --- > "name": "selector", 143,160c160 < "title": "receivedInfluenceNotification", < "type": "action", < "name": "receivedInfluenceNotification", < "parameters": {}, < "output": { < "influence": "influence" < } < }, < { < "title": "faceEntity", < "type": "action", < "name": "faceEntity", < "parameters": { < "entity": "reactTarget" < } < }, < { < "title": "selector", --- > "title": "sequence", 162c162 < "name": "selector", --- > "name": "sequence", 166,187c166,171 < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isFinalReaction", < "type": "action", < "name": "isFinalReaction", < "parameters": { < "influence": "influence" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 1.5 < } < } < ] --- > "title": "isFinalReaction", > "type": "action", > "name": "isFinalReaction", > "parameters": { > "influence": "influence" > } 194c178 < "time": 4 --- > "time": 1.5 200c184 < "title": "resetReaction", --- > "title": "timer", 202,205c186,188 < "name": "resetReaction", < "parameters": {}, < "output": { < "reaction": "reaction" --- > "name": "timer", > "parameters": { > "time": 4 207,212d189 < }, < { < "type": "module", < "path": "/behaviors/npc/react.behavior", < "title": "/behaviors/npc/react.behavior", < "parameters": {} 217,219c194,196 < "title": "sequence", < "type": "composite", < "name": "sequence", --- > "title": "resetReaction", > "type": "action", > "name": "resetReaction", 221,260c198,226 < "children": [ < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "isFinalReaction", < "type": "action", < "name": "isFinalReaction", < "parameters": { < "reaction": "reaction" < } < } < }, < { < "title": "entityInRange", < "type": "action", < "name": "entityInRange", < "parameters": { < "entity": "reactTarget", < "xRange": 5, < "position": "self" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "blabbering" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 2 < } --- > "output": { > "reaction": "reaction" > } > }, > { > "type": "module", > "path": "/behaviors/npc/react.behavior", > "title": "/behaviors/npc/react.behavior", > "parameters": {} > } > ] > }, > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "isFinalReaction", > "type": "action", > "name": "isFinalReaction", > "parameters": { > "reaction": "reaction" 262c228,254 < ] --- > } > }, > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "reactTarget", > "xRange": 5, > "position": "self" > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "blabbering" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 2 > } 266c258 < } --- > ] 268,275d259 < ] < }, < { < "title": "dance", < "type": "action", < "name": "dance", < "parameters": { < "dance": null behaviors\npc\sit.behavior 35c35 < "orderBy": "random", --- > "orderBy": "nearest", behaviors\npc\tenant.behavior 109c109 < "dialogType": "tenant.dialog.arrivedHome.beacon", --- > "dialogType": "dialog.tenant.arrivedHome.beacon", 239c239 < "dialogType": "tenant.dialog.arrivedHome.rent", --- > "dialogType": "dialog.tenant.arrivedHome.rent", behaviors\npc\tracking.behavior 8,9c8 < "/scripts/actions/time.lua", < "/npcs/bmain.lua" --- > "/scripts/actions/time.lua" 551,577c550 < "time": 3 < } < }, < { < "title": "say", < "type": "action", < "name": "say", < "parameters": { < "content": "Where are you?", < "tags": {} < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 3 < } < }, < { < "title": "say", < "type": "action", < "name": "say", < "parameters": { < "content": "Whatever", < "tags": {} --- > "time": 10 behaviors\npc\wander.behavior 6,7c6,7 < "/scripts/actions/time.lua", < "/scripts/actions/movement.lua" --- > "/scripts/actions/movement.lua", > "/scripts/actions/time.lua" 15a16,129 > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "inRange", > "type": "action", > "name": "inRange", > "parameters": { > "position": "self", > "target": "spawn", > "range": 50 > } > } > }, > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": -1, > "success": 1 > }, > "children": [ > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "", > "type": "action", > "name": "moveToPosition", > "parameters": { > "position": "spawn", > "pathOptions": { > "returnBest": true > } > }, > "output": { > "direction": "direction" > } > }, > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 2, > "success": 2 > }, > "children": [ > { > "title": "distance", > "type": "action", > "name": "distance", > "parameters": { > "from": "self", > "to": "spawn" > }, > "output": { > "x": "spawnX" > } > }, > { > "title": "inRange", > "type": "action", > "name": "inRange", > "parameters": { > "position": "self", > "target": "spawn", > "range": 45 > } > }, > { > "title": "move", > "type": "action", > "name": "move", > "parameters": { > "direction": "spawnX", > "run": false > } > } > ] > } > ] > }, > { > "title": "inRange", > "type": "action", > "name": "inRange", > "parameters": { > "position": "self", > "target": "spawn", > "range": 5 > } > } > ] > } > ] > }, behaviors\tenant\grumble.behavior 130c130 < "dialogType": "tenant.dialog.grumbles.severe", --- > "dialogType": "dialog.tenant.grumbles.severe", 185c185 < "dialogType": "tenant.dialog.grumbles.final", --- > "dialogType": "dialog.tenant.grumbles.final", biomes\surface\desert.biome 8c8 < "extraSpawns" : [ "sunskipper", "goldbuck", "armadillo", "mousecritter" ], --- > "extraSpawns" : [ "sunskipper", "goldbuck", "armadillo", "mousecritter", "groopcritter", "ravencritter", "wurmcritter" ], 15c15 < "extraSpawns" : [ "sunskipper", "sandclown", "armadillo", "mousecritter" ], --- > "extraSpawns" : [ "sunskipper", "sandclown", "armadillo", "mousecritter", "groopcritter", "ravencritter", "wurmcritter" ], 128c128 < "grassMod" : [ "sand" ], --- > "grassMod" : [ "savannahgrass" ], 142a143,151 > "priority" : 1, > "variants" : 1, > "distribution" : "/biomes/distributions.config:mainBiomeMicrodungeon", > > "type" : "microdungeon", > "microdungeons" : [ "desertmicrodungeons" ] > }, > { > "mode" : "floor", 230a240,254 > }, > { > "mode" : "floor", > "priority" : 2.0, > "variants" : 1, > "distribution" : "/biomes/distributions.config:scatteredLarge", > > "type" : "bush", > "bushes" : [ > { > "name" : "savannahbush", > "baseHueShiftMax" : 0, > "modHueShiftMax" : 0 > } > ] biomes\surface\ocean.biome 8c8 < "extraSpawns" : [ "tidefly", "seahornet", "gullcritter" ], --- > "extraSpawns" : [ "tidefly", "seahornet", "gullcritter", "squidcritter", "jellycritter" ], 15c15 < "extraSpawns" : [ "tidefly", "wavebird", "gullcritter" ], --- > "extraSpawns" : [ "tidefly", "wavebird", "gullcritter", "squidcritter", "jellycritter" ], biomes\surface\oceanfloor.biome 8c8 < "extraSpawns" : [ ], --- > "extraSpawns" : [ "squidcritter", "jellycritter" ], biomes\surface_detached\mushroompatch.biome 73c73 < "microdungeons" : [ "shroomencounter" ] --- > "microdungeons" : [ "shroommicrodungeons" ] biomes\surface_detached\oasis.biome 8c8 < "extraSpawns" : [ ], --- > "extraSpawns" : [ "mousecritter", "squeekcritter", "deserttortoise", "bowbirdcritter" ], 15c15 < "extraSpawns" : [ ], --- > "extraSpawns" : [ "mousecritter", "squeekcritter", "deserttortoise", "bowbirdcritter" ], biomes\surface_detached\tar.biome 8c8 < "extraSpawns" : [ ], --- > "extraSpawns" : [ "mousecritter", "ravencritter", "vulturecritter" ], 15c15 < "extraSpawns" : [ ], --- > "extraSpawns" : [ "mousecritter", "ravencritter", "vulturecritter" ], dungeons\microdungeons\biomes\forest\clearing2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\clearing3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\clearing4.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\forestmicrodungeons.dungeon 8c8 < "anchor" : [ "lake1", "lake2", "lake3", "clearing2", "clearing3", "clearing4", "ruinsmall1" ], --- > "anchor" : [ "clearing2", "clearing3", "clearing4", "forestwell1", "forestwell1", "forestwell2", "hut1", "hut2", "hut3", "lake1", "lake2", "lake3", "largepond1", "largepond2", "medpond1", "medpond2", "medpond3", "playerforest1", "playerforest2", "playerforest3", "playerforest4", "pondcamp", "ruinlarge1", "ruinmedium1", "ruinmedium2", "ruinssmall1", "ruinssmall3", "ruinssmall4", "ruinssmall5", "ruinssmall6", "smallpond1", "smallpond2", "smallpond3" ], 17a18,73 > "name" : "clearing2", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "clearing2.json" ] > }, > { > "name" : "clearing3", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "clearing3.json" ] > }, > { > "name" : "clearing4", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "clearing4.json" ] > }, > { > "name" : "forestwell1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "forestwell1.json" ] > }, > { > "name" : "forestwell2", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "forestwell2.json" ] > }, > { > "name" : "hut1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hut1.json" ] > }, > { > "name" : "hut2", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hut2.json" ] > }, > { > "name" : "hut3", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hut3.json" ] > }, > { 39c95 < "name" : "clearing2", --- > "name" : "largepond1", 43c99 < "def" : [ "tmx", "clearing2.json" ] --- > "def" : [ "tmx", "largepond1.json" ] 46c102 < "name" : "clearing3", --- > "name" : "largepond2", 50c106 < "def" : [ "tmx", "clearing3.json" ] --- > "def" : [ "tmx", "largepond2.json" ] 53c109 < "name" : "clearing4", --- > "name" : "medpond1", 57c113,232 < "def" : [ "tmx", "clearing4.json" ] --- > "def" : [ "tmx", "medpond1.json" ] > }, > { > "name" : "medpond2", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "medpond2.json" ] > }, > { > "name" : "medpond3", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "medpond3.json" ] > }, > { > "name" : "playerforest1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "playerforest1.json" ] > }, > { > "name" : "playerforest2", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "playerforest2.json" ] > }, > { > "name" : "playerforest3", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "playerforest3.json" ] > }, > { > "name" : "playerforest4", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "playerforest4.json" ] > }, > { > "name" : "pondcamp", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "pondcamp.json" ] > }, > { > "name" : "ruinlarge1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "ruinlarge1.json" ] > }, > { > "name" : "ruinmedium1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "ruinmedium1.json" ] > }, > { > "name" : "ruinmedium2", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "ruinmedium2.json" ] > }, > { > "name" : "ruinssmall1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "ruinssmall1.json" ] > }, > { > "name" : "ruinssmall3", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "ruinssmall3.json" ] > }, > { > "name" : "ruinssmall4", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "ruinssmall4.json" ] > }, > { > "name" : "ruinssmall5", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "ruinssmall5.json" ] > }, > { > "name" : "ruinssmall6", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "ruinssmall6.json" ] > }, > { > "name" : "smallpond1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "smallpond1.json" ] > }, > { > "name" : "smallpond2", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "smallpond2.json" ] 60c235 < "name" : "ruinsmall1", --- > "name" : "smallpond3", 64,65c239,240 < "def" : [ "tmx", "ruinsmall1.json" ] < } --- > "def" : [ "tmx", "smallpond3.json" ] > } dungeons\microdungeons\biomes\forest\forestwell1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\forestwell2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\lake1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\lake2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\lake3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\largepond1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\largepond2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\medpond1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\medpond2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\medpond3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\playerforest1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\playerforest2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\playerforest3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\playerforest4.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\pondcamp.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\ruinlarge1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\ruinmedium1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\ruinmedium2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\smallpond1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\smallpond2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\smallpond3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\archway.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\archway1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\gardenbridge1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\gardenbridge2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\gardenhouseruin1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\gardenmicrodungeons.dungeon 7c7 < "anchor" : [ "archway", "archway1", "gardenbridge1", "gardenbridge2", "gardenhouseruin1", "grave1", "grave2", "graveyard", "graveyardflowers", "littlecave1", "mediumburriedruin", "mediumgardenflowers", "mediumgardenruin1", "mediumgardenruincamp", "mediumgardenruinplain", "mediumgardenruintall", "mediumruin", "moundmedium", "smallcamp", "smallgardenflowers", "smallpile", "smallstonehouse", "smalltower", "smalltower2", "tunnelsmall1", "wall1", "wall2", "wall3", "well1", "well2", "well3" ], --- > "anchor" : [ "archway", "archway1", "gardenbridge1", "gardenbridge2", "gardenhouseruin1", "grave1", "grave2", "graveyard", "graveyardflowers", "littlecave1", "mediumburriedruin", "mediumgardenflowers", "mediumgardenruin1", "mediumgardenruincamp", "mediumgardenruinplain", "mediumgardenruintall", "mediumruin", "smallcamp", "smallgardenflowers", "smallpile", "smallstonehouse", "smalltower", "smalltower2", "tunnelsmall1", "wall1", "wall2", "wall3", "well1", "well2", "well3" ], 134,140d133 < }, < { < "name" : "moundmedium", < "rules" : [ < [ "maxSpawnCount", [1] ] < ], < "def" : [ "tmx", "moundmedium.json" ] dungeons\microdungeons\biomes\garden\grave1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\grave2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\graveyard.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\graveyardflowers.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\large1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\littlecave1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\med1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\mediumburriedruin.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\mediumgardenflowers.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\mediumgardenruin1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\mediumgardenruincamp.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\mediumgardenruinplain.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\mediumgardenruintall.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\mediumruin.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\small1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\smallcamp.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\smallgardenflowers.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\smallpile.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\smallstonehouse.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\smalltower.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\smalltower2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\tunnelsmall1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\wall1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\wall2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\wall3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\well1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\well2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\well3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\xtra1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroombridge1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroombridge2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroombridge3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse10.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse11.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse12.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse13.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse14.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse15.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse4.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse5.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse6.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse7.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse8.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse9.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomtemplate.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\templatebridge.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\templateignore1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\templateignore2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\templateignore3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\crittergroup1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\crittergroup2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\crittergroup3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\hugepool1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\hugepool2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\hugepool3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\largepool1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\largepool2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\largepool3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\largepool4.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\largepool5.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\largepool6.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\largepool7.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\medpool1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\medpool10.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\medpool2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\medpool3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\medpool4.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\medpool5.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\medpool6.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\medpool7.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\medpool8.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\medpool9.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\smallpool1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\smallpool10.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\smallpool2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\smallpool3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\smallpool4.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\smallpool5.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\smallpool6.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\smallpool7.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\smallpool8.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\smallpool9.json [TMX file differences are left out for huge size.] dungeons\missions\floranmissions\floranmission1.dungeon 2601c2601,2603 < "behavior" : "/behaviors/sequences/floranmission/floranmissionstart.behavior" --- > "scriptConfig" : { > "behavior" : "/behaviors/sequences/floranmission/floranmissionstart.behavior" > } 2616c2618,2620 < "behavior" : "/behaviors/sequences/floranmission/floranmissionswitch.behavior" --- > "scriptConfig" : { > "behavior" : "/behaviors/sequences/floranmission/floranmissionswitch.behavior" > } 2631c2635,2637 < "behavior" : "/behaviors/sequences/floranmission/nurutunnel.behavior" --- > "scriptConfig" : { > "behavior" : "/behaviors/sequences/floranmission/nurutunnel.behavior" > } 2646c2652,2654 < "behavior" : "/behaviors/sequences/floranmission/nuruboss.behavior" --- > "scriptConfig" : { > "behavior" : "/behaviors/sequences/floranmission/nuruboss.behavior" > } dungeons\other\challengerooms\challengerooms.dungeon 10c10,11 < "quiqksilver1", "quiqksilver2", "quiqksilver3", "rush", "spacejump", "temple", "trespasser" --- > "quiqksilver1", "quiqksilver2", "quiqksilver3", "rush", "spacejump", "temple", "trespasser", > "ambush", "collapse", "collision", "hotflash", "hydroponics", "panicroom", "shortcircuit", "trenches" 33a35,41 > "name" : "ambush", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "ambush.json" ] > }, > { 47a56,69 > "name" : "collapse", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "collapse.json" ] > }, > { > "name" : "collision", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "collision.json" ] > }, > { 61a84,104 > "name" : "hotflash", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hotflash.json" ] > }, > { > "name" : "hydroponics", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hydroponics.json" ] > }, > { > "name" : "panicroom", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "panicroom.json" ] > }, > { 138a182,188 > "name" : "shortcircuit", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "shortcircuit.json" ] > }, > { 153c203 < "name" : "trespasser", --- > "name" : "trenches", 157c207 < "def" : [ "tmx", "trespasser.json" ] --- > "def" : [ "tmx", "trenches.json" ] 160c210 < "name" : "quiqksilvertest", --- > "name" : "trespasser", 164c214 < "def" : [ "tmx", "quiqksilvertest.json" ] --- > "def" : [ "tmx", "trespasser.json" ] items\materials\pillarblock.matitem 6c6 < "description" : "Pillar walls.", --- > "description" : "Pillar Block", monsters\boss\spiderboss\spiderboss.monstertype 16,19c16 < "/monsters/bmonster.lua", < "/scripts/behavior.lua", < "/scripts/util.lua", < "/scripts/vec2.lua" --- > "/monsters/bmonster.lua" monsters\critter\birdcritter\birdcritter.monstertype 28c28 < "mass" : 0.5, --- > "mass" : 0.1, 32d31 < "airForce" : 500, 34c33,34 < "gravityEnabled" : false, --- > "airForce" : 12.5, > "gravityEnabled" : true, monsters\critter\fishcritter\fishcritter.monstertype 29c29 < "mass" : 0.5, --- > "mass" : 0.4, 32c32 < "gravityEnabled" : false, --- > "flySpeed" : 15, 34,35c34,37 < "liquidFriction" : 1.0, < "liquidForce" : 15 --- > "liquidBuoyancy" : 1.0, > "liquidFriction" : 0.5, > "liquidForce" : 5 > monsters\ground\approachstate.lua 6c6,14 < return {} --- > return { > firstPather = PathMover:new(), > secondPather = PathMover:new({ > pathOptions = { > returnBest = true, > maxDistance = 15 > } > }) > } 37c45,47 < local moved = moveTo(option.approachPoint, dt, {run = option.approachDistance >= 1.0, mustEndOnGround = true}) --- > > stateData.firstPather.options.run = option.approachDistance >= 1.0 > local moved = stateData.firstPather:move(option.approachPoint, dt) 41c51,52 < moved = moveTo(option.approachPoint, dt, {run = option.approachDistance >= 1.0, returnBest = true, maxDistance = 15, mustEndOnGround = true}) --- > stateData.secondPather.options.run = option.approachDistance >= 1.0 > moved = stateData.secondPather:move(option.approachPoint, dt) monsters\pets\groundpet.lua 338a339,340 > self.pather = self.pather or PathMover:new({run = running}) > self.pather.options.run = running 340c342 < if moveTo(self.approachPosition, dt, {run = running}) then --- > if self.pather:move(self.approachPosition, dt) then monsters\unique\ixoling\ixoling.monstertype 15,19c15 < "/monsters/bmonster.lua", < "/scripts/behavior.lua", < "/scripts/pathing.lua", < "/scripts/util.lua", < "/scripts/vec2.lua" --- > "/monsters/bmonster.lua" npcs\airshipcaptain.npctype 3c3 < "baseType" : "airshipcrew", --- > "baseType" : "guard", 14,96c14,16 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "Welcome aboard!", < "Try not to cause any trouble, okay?", < "Yo ho, yo ho, it's a flyin' life for me.", < "Propeller maintenance is a pain in the tailfeathers!", < "If you're caught sblueing you'll get thrown in the brig!", < "The captain loves compliments.", < "Where do you hail from?", < "Careful - the wind gets a bit strong up on the poop deck.", < "Would you believe some people think we're pirates?" < ], < < "avian" : [ < "You should come drink with us sometime!", < "Interested in joining our crew?", < "You seem a capable sort, ever considered the skyfaring life?", < "I wonder how my family is doing... I miss them.", < "Life on an airship isn't all it's cracked up to be.", < "You a new crew member?", < "One day I hope to be as strong as the captain!", < "You and I don't have wings - this is the next best thing." < ], < < "apex" : [ < "You ever consider getting an eyepatch?", < "I'm new here, but I'm slowly finding my skyfaring legs!", < "Haven't seen you on board before.", < "If supplies are what you want, go see the quartermaster.", < "We got some great supplies from our last stop!", < "I'd think twice if you're looking for a scuffle.", < "For some, it's about the money. For me, it's about the adventure!", < "Any funny business and it'll be the brig for you!" < ], < < "floran" : [ < "You look like you've been in a scrap or two.", < "I'd best not catch you pilfering anything!", < "We're a merchant vessel by trade, but don't think that makes us pushovers.", < "The ship is nice and all, but the food is terrible! Know how to cook?", < "Keep your hands where I can see them!", < "Welcome aboard!", < "Ugh, I'm on cleaning duty today, and a Floran shows up... great.", < "The view from the main deck is quite something!" < ], < < "glitch" : [ < "It has its challenges, but life as an aeronaut is great!", < "One day, I'm gonna be the captain!", < "If you want supplies you should speak to our quartermaster.", < "Every day it's the same old routine.", < "Just once I'd like the captain to use my name instead of calling me a swab.", < "Watch your step on deck, it can get a bit rough in windy conditions.", < "The captain is stern, but fair.", < "How did you get all the way up here?" < < ], < < "human" : [ < "Rumor has it that our captain once fought a great tentacled monstrosity!", < "You should introduce yourself to the captain.", < "Right here in the open skies, this is where I belong!", < "All these propellers require so much upkeep!", < "We see a lot of exciting stuff in our line of work, but it can be dangerous too!", < "You here to trade?", < "Keep your hands to yourself!", < "Watch yourself around the captain." < ], < < "hylotl" : [ < "You lost?", < "You ever consider getting an eyepatch for that third eye of yours?", < "What do you think of our ship? Wait, don't answer that.", < "One whiff of disrespect towards our captain, and I will end you!", < "Don't cause any trouble and none will come to you.", < "Looking for supplies? Go see the quartermaster.", < "You'd best not be eyeing our stuff!", < "Make sure you behave yourself around the captain.", < "Keep your hands off our supplies and we won't have any problems." < ] < } --- > "dialog" : { > "converse" : "/dialog/airship.config:converse", > "hail" : "/dialog/airship.config:hail" 99a20,23 > "movementParameters" : { > "runSpeed" : 15 > }, > 212,278d135 < }, < < "movementParameters" : { < "runSpeed" : 15 < }, < < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 250.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\airshipguard.npctype 3,5c3 < "baseType" : "airshipcrew", < < "damageTeam" : 1, --- > "baseType" : "guard", 9,22c7 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], --- > "dropPools" : [ "airshipguardtreasure" ], 25,54c10,12 < "guard" : { < "patrolDistance" : 4, < "noticeDistance" : 10, < "hailDistance" : 10, < "hailPercent" : 75, < "stopDistance" : -1, < "attackDistance" : -1, < "loseSightTime" : 10, < "loseSightDistance" : 30, < "wallCheckDistance" : 5, < "changeDirectionTimeRange" : [5, 10], < < "dialog" : { < "hail" : { < "default" : [ < "Keep your hands where I can see them!", < "I've got my eyes on you.", < "Don't go getting any funny ideas now.", < "I'm watching you.", < "I'd better not catch you taking anything.", < "If you want some of our supplies, go speak to the quartermaster.", < "You'd best behave yourself while on this ship." < ] < } < } < }, < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 --- > "dialog" : { > "converse" : "/dialog/airship.config:converse", > "hail" : "/dialog/airship.config:hail" 55a14,506 > }, > > "items" : { > "default" : [ > [0, [ > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 4 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 4 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 5 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 5 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 6 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 6 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 7 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 7 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 8 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 8 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 9 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 9 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > } > ] ] > ], > "apex" : [ > [0, [ > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 4 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 4 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 5 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 5 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 6 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 6 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 7 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 7 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 8 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 8 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 9 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 9 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > } > ] ] > ], > "avian" : [ > [0, [ > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 4 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 4 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 5 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 5 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 6 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 6 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 7 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 7 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 8 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 8 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 9 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 9 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > } > ] ] > ], > "floran" : [ > [0, [ > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 4 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 4 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 5 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 5 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 6 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 6 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 7 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 7 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 8 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 8 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 9 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 9 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > } > ] ] > ], > "glitch" : [ > [0, [ > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 4 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 4 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 5 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 5 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 6 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 6 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 7 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 7 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 8 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 8 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 9 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 9 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > } > ] ] > ], > "human" : [ > [0, [ > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 4 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 4 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 5 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 5 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 6 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 6 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 7 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 7 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 8 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 8 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 9 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 9 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > } > ] ] > ], > "hylotl" : [ > [0, [ > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 4 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 4 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 5 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 5 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 6 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 6 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 7 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 7 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 8 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 8 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > }, > { > "head" : [ { "name" : "piratehead", "parameters" : { "colorIndex" : 9 } }, "", "", "", "", "", "", "", "", "" ], > "chest" : [ { "name" : "piratechest" }, { "name" : "buccaneerchest" }, { "name" : "aviancommonershirt" }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } } ], > "legs" : [ { "name" : "piratelegs", "parameters" : { "colorIndex" : 9 } } ], > "primary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } }, > { "name" : "generatedsword", "parameters" : { "definition" : "commondagger" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonmachinepistol" } }, > { "name" : "generatedgun", "parameters" : { "definition" : "commonpistol" } } > ] > } > ] ] > ] npcs\airshipquartermaster.npctype 12,14d11 < < "noticePlayersRadius" : 30.0, < 17a15,21 > "categories" : { > "default" : [ "randomguns", "randomswords" ] > }, > "buyFactorRange" : [ 1.0, 1.0 ], > "sellFactorRange" : [ 0.2, 0.2 ], > "numItems" : 20 > }, 19c23,24 < "dialog" : { --- > "dialog" : { > "merchant" : { 53,67c58 < } < }, < < "categories" : { < "default" : [ "randomguns", "randomswords" ] < }, < "buyFactorRange" : [ 1.0, 1.0 ], < "sellFactorRange" : [ 0.2, 0.2 ], < "numItems" : 20 < }, < < "returnToStore" : { < "waitTime" : 10, < < "dialog" : { --- > }, 89,110d79 < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "runThreshold" : 0, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 179,240d147 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\apexslave.npctype 5,9d4 < "damageTeam" : 1, < "levelVariance" : [-1, -1], < < "disableWornArmor" : true, < 11,18c6,12 < < "noticePlayersRadius" : 30, < < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ "We will never be free." ], < --- > "dialog" : { > "converse" : { > "default" : { > "default": [ > "We will never be free." > ] > }, 44,172d37 < }, < < "flee" : { < "reactionTimeRange" : [0.2, 1.0], < "safeDistance" : 100, < "safeDistanceWithGuards" : 40, < "safeTimer" : 10, < "stuckTime" : 4, < "stuckCooldown" : 10, < "dialogTimeRange" : [4, 10], < < "dialog" : { < "helpme" : { < "default" : [ < "Guards! Help me!", < "Help! Guards! Help!", < "Guards! I've been accosted!" < ], < "glitch" : [ < "Fear. Guards! Help me!", < "Intimidated. Please don't hurt me!", < "Abused. Guards! I've been accosted!", < "Afraid. Get away from me! Guards!", < "Terrified. Save me!", < "Shocked. No! Get away from me!" < ] < }, < "helpthem" : { < "default" : [ < "What have you done!?" < ], < "glitch" : [ < "Fear. Guards!", < "Intimidated. Please don't hurt me!", < "Afraid. Leave me be! Guards!", < "Terrified. Save me!", < "Shocked. What have you done?!" < ], < "floran" : [ < "Ssstabby time for me!", < "Floran being hurted!", < "Floran not ready for hunt!", < "Greenguard help Floran!" < ] < }, < "encourage" : { < "default" : [ < "Get 'em!", < "Avenge me!", < "Stick 'em once for me!", < "Don't let 'em get away!" < ], < "glitch" : [ < "Encourage. Put 'em to the sword!", < "Excitement. Avenge me!", < "Aggressive. Strike him down!", < "Vengeful. Don't let 'em get away!" < ], < "floran" : [ < "Ssstabb the intruders!", < "Floran get revenge now!", < "Ssslice them!", < "Greenguard destroy it!" < ] < }, < "safe" : { < "default" : [ < "Phew, I think I got away.", < "I've escaped with my life!", < "Is this the safe zone?" < ], < "glitch" : [ < "Relieved. Phew, I think I got away.", < "Thankful. I've escaped with my life!", < "Wishful. If only I could afford a keep.", < "Hopeful. Am I safe?", < "Embarrassed. I think I leaked a little oil." < ], < "floran" : [ < "Floran sssafe now.", < "Floran not get ssstabbed after all.", < "Them lucky Floran not have weapon.", < "Sssalvation!" < ] < } < } < }, < < "sit" : { < "timeOfDayRanges" : [ [0.6, 1.0], [0.0, 0.2] ], < "moveTimeLimit" : 30, < "searchRadius" : 10, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [15, 240] < }, < < "sleep" : { < "searchRadius" : 15, < "lieDownRadius" : 3, < "moveToBedTimeLimit" : 10.0, < "timeOfDayRanges" : [ [ [0.7, 0.75], [0.95, 1.0] ] ], < "cooldown" : 30 < }, < < "chat" : { < "distanceRange" : [2.0, 4.0], < "conversations" : [ < [ < [2, "blabbering", "idle" ], < [1, "idle", "laugh" ], < [2, "idle", "blabbering" ], < [1, "sad", "idle" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "happy" ], < [1, "wink", "laugh" ], < [2, "happy", "happy" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "blabbering" ], < [2, "blabbering", "annoyed" ], < [3, "shouting", "shouting" ], < [2, "annoyed", "annoyed" ] < ] < ], < "cooldown" : 10 562,648d426 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\apexslaver.npctype 5,6d4 < "damageTeam" : 1, < 9,26d6 < "disableWornArmor" : true, < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], < 28,44c8,10 < "attackerLimit" : 8, < "attackerLimitCooldown" : 3, < < "guard" : { < "patrolDistance" : 25, < "noticeDistance" : 30, < "hailDistance" : 5, < "hailPercent" : 50, < "stopDistance" : -1, < "attackDistance" : -1, < "loseSightTime" : 10, < "loseSightDistance" : 30, < "wallCheckDistance" : 5, < "changeDirectionTimeRange" : [10, 20], < < "dialog" : { < "hail" : { --- > "dialog" : { > "hail" : { > "default" : { 47,61c13,28 < ], < "apex" : { < "default" : [ < "What is freedom, if not another form of slavery?", < "Servitude awaits us all, stranger.", < "We do this because we must, stranger.", < "Questioning our methods will only get you killed, stranger.", < "Big Ape is watching us all, stranger.", < "You're no Apex, stranger. You're safe if you don't cause trouble.", < "Be on your way, traveller.", < "Free will is a myth.", < "There is no freedom without servitude.", < "Big Ape will free us all, stranger.", < "We're captives too, of a kind.", < "The Miniknog watch over us. Closely." --- > ] > }, > "apex" : { > "default" : [ > "What is freedom, if not another form of slavery?", > "Servitude awaits us all, stranger.", > "We do this because we must, stranger.", > "Questioning our methods will only get you killed, stranger.", > "Big Ape is watching us all, stranger.", > "You're no Apex, stranger. You're safe if you don't cause trouble.", > "Be on your way, traveller.", > "Free will is a myth.", > "There is no freedom without servitude.", > "Big Ape will free us all, stranger.", > "We're captives too, of a kind.", > "The Miniknog watch over us. Closely." 63,75c30,42 < ], < "apex" : [ < "Be gone from here if you value your freedom, sibling.", < "We'll turn a blind eye to you for now, sibling.", < "You surely do not believe you've escaped Big Ape's gaze.", < "The Apex will rise, sibling.", < "You are no more free than I, Resistance fighter.", < "You'd fetch a good price. Luckily you're not on my list.", < "This is not enjoyable work, sibling. Do not be so quick to judge me.", < "Big Ape... I hear him, even now.", < "Beware the Miniknog, sibling. Do not get complacent.", < "Go, sibling, go far from here.", < "Live free, sibling. Live free." --- > ], > "apex" : [ > "Be gone from here if you value your freedom, sibling.", > "We'll turn a blind eye to you for now, sibling.", > "You surely do not believe you've escaped Big Ape's gaze.", > "The Apex will rise, sibling.", > "You are no more free than I, Resistance fighter.", > "You'd fetch a good price. Luckily you're not on my list.", > "This is not enjoyable work, sibling. Do not be so quick to judge me.", > "Big Ape... I hear him, even now.", > "Beware the Miniknog, sibling. Do not get complacent.", > "Go, sibling, go far from here.", > "Live free, sibling. Live free." 77,78c44 < ] < } --- > ] 211,274d176 < }, < < "dropPools" : [ "shroomguardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\armoredcultist.npctype 3,6c3 < < "disableWornArmor" : true, < < "damageTeam" : 2, --- > "baseType" : "hostile", 10,24d6 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua" < ], < "initialScriptDelta" : 5, 26,64c8,9 < "attackerLimit" : 4, < "attackerLimitCooldown" : 3, < < "guard" : { < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < < "wallCheckDistance" : 5, < "changeDirectionTimeRange" : [10, 20], < < "dialog" : { < "attack" : { < "default" : [ "Death to heathens!" ] < } < } < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "runThreshold" : 9, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 --- > "dialog" : { > "attack" : "/dialog/cultist.config:attack" 83,173d27 < }, < < "dropPools" : [ "guardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\bandit.npctype 3,6c3 < < "disableWornArmor" : true, < < "damageTeam" : 2, --- > "baseType" : "hostile", 10,140c7,8 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua" < ], < "initialScriptDelta" : 5, < "scriptConfig" : { < "attackerLimit" : 4, < "attackerLimitCooldown" : 3, < < "guard" : { < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < < "wallCheckDistance" : 5, < "changeDirectionTimeRange" : [10, 20], < < "attackSayingPercent" : 50, < < "dialog" : { < "attack" : { < "default" : [ "Ganking time!" < ], < "apex" : { < "default" : [ < "Spies from the Miniknog! Get them!", < "They're after our loot!", < "You'll never take our freedom!", < "By my beard, it's a trespasser!" < ] < }, < < "avian" : { < "default" : [ < "Kluex has willed that your life is forfeit.", < "Prepare for your sacrifice.", < "Your belongings will be suitable offerings to Kluex.", < "If only I could fly, then you would die faster.", < "Run away, unbeliever!" < ] < }, < < < "floran" : { < "default" : [ < "Sssupper arrivesss!", < "Ssstop the intruder!", < "Gimme the casssh!", < "Ssstay back!", < "Floran will ssslay you!" < ], < < "glitch" : [ < "Floran regretsss this.", < "Nothing persssonal..." < ] < }, < < "glitch" : { < "default" : [ < "Alert. A traveler approaches!", < "Hunting. You have breathed your last!", < "Pursuing. Prepare to lose your life!" < ], < < "floran" : [ < "Regretful. We do what we must to survive.", < "Apology. You must die, Floran." < ] < }, < < "hylotl" : { < "default" : [ < "We aim to apprehend you. I lied. We mean to kill you.", < "Your belongings will shortly be ours.", < "I wonder, will you drop good loot?", < "Your fighting skills cannot save you." < ], < < "floran" : [ < "Your appearance is that of boiled cabbage. I wonder if you taste any better.", < "I will slay you myself, uncultured monster." < ] < }, < < "human" : { < "default" : [ < "Hey! Get back here!", < "You're dead meat!", < "Let's steal their stuff!", < "We'll kill you so hard you won't know what hit you!" < ] < } < } < } < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "runThreshold" : 9, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 < } < }, < --- > "dropPools" : [ "banditTreasure" ], > 167,257d34 < }, < < "dropPools" : [ "banditTreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\blacksmith.npctype 5,28c5 < "disableWornArmor" : true, < < "damageTeam" : 1, < < "levelVariance" : [0, 0], < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/sitState.lua", < "/npcs/sleepState.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/converseState.lua", < "/npcs/wanderState.lua" < ], --- > "dropPools" : [ "mineTreasure" ], 31,163c8,25 < "attackerLimit" : 10, < "attackerLimitCooldown" : 3, < "wander" : { < "timeRange" : [2.0, 10.0], < "chatDistance" : 4, < "indoorTimeOfDayRanges" : [ [0.0, 0.2], [0.5, 1.0] ], < "indoorSearchRadius" : 60, < "indoorLookaheadDistance" : 4, < "moveToTargetTime" : 10.0, < "changeDirectionCooldown" : 2, < "dropDownChance" : 0, < "cooldown" : 10 < }, < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "attack" : { < "default" : [ "Oh, you done started somethin' now!" < ], < "glitch" : { < "default" : [ < "Curmudgeonly. You young'uns are always causin' trouble!", < "World-weary. Here we go again, then.", < "Grizzled. You'll not make a mockery of me!", < "Gruff. Didn't they tell ye, never aggro a smith?", < "Surly. Looks like I'll be messin' up me nice new weapon.", < "Resigned. Sigh. More disruption.", < "Eager. Good chance to test me weapons out.", < "Grumpy. Looks like I'll have to teach yeh a lesson." < ] < } < } < } < }, < < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 < }, < < "sit" : { < "timeOfDayRanges" : [ [0.6, 1.0], [0.0, 0.2] ], < "moveTimeLimit" : 30, < "searchRadius" : 10, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [15, 240] < }, < < "sleep" : { < "searchRadius" : 15, < "lieDownRadius" : 3, < "moveToBedTimeLimit" : 10.0, < "timeOfDayRanges" : [ [ [0.7, 0.75], [0.95, 1.0] ] ], < "cooldown" : 30 < }, < < "items" : { < "glitch" : [ < [0, [ < { < < "chest" : [ { "name" : "merchantchest" } ], < "legs" : [ { "name" : "merchantlegs" } ], < "primary" : [ < [ "generatedsword", 1, { "definition" : "commonhammer" } ] < ] < } < ] ] < ] < }, < < "dropPools" : [ "mineTreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 40.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 0.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 --- > "dialog" : { > "attack" : { > "default" : { > "default" : [ > "Oh, you done started somethin' now!" > ] > }, > "glitch" : { > "default" : [ > "Curmudgeonly. You young'uns are always causin' trouble!", > "World-weary. Here we go again, then.", > "Grizzled. You'll not make a mockery of me!", > "Gruff. Didn't they tell ye, never aggro a smith?", > "Surly. Looks like I'll be messin' up me nice new weapon.", > "Resigned. Sigh. More disruption.", > "Eager. Good chance to test me weapons out.", > "Grumpy. Looks like I'll have to teach yeh a lesson." > ] 166a29,43 > }, > > "items" : { > "glitch" : [ > [0, [ > { > > "chest" : [ { "name" : "merchantchest" } ], > "legs" : [ { "name" : "merchantlegs" } ], > "primary" : [ > [ "generatedsword", 1, { "definition" : "commonhammer" } ] > ] > } > ] ] > ] npcs\bmain.lua 4a5 > require "/scripts/actions/dialog.lua" 9c10 < --- > 17c18,24 < self.behavior = BTree:new(entity.configParameter("behavior")) --- > > setOfferedQuests() > setTurninQuests() > > if entity.configParameter("behavior") then > self.behavior = BTree:new(entity.configParameter("behavior")) > end 36c43 < if self.behavior:run(dt) ~= "running" then --- > if self.behavior and self.behavior:run(dt) ~= "running" then 68a76,89 > function setOfferedQuests() > local offeredQuests = entity.configParameter("offeredQuests") > if type(offeredQuests) == "table" and #offeredQuests > 0 then > entity.setOfferedQuests(offeredQuests) > end > end > > function setTurninQuests() > local turnInQuests = entity.configParameter("turnInQuests") > if type(turnInQuests) == "table" and #turnInQuests > 0 then > entity.setTurnInQuests(turnInQuests) > end > end > 103,180d123 < end < < function getDialogType(dialogType, targetId) < local dialogTypes = {} < < local withSpecies = dialogType .. "." .. entity.species() < < if targetId ~= nil then < local targetSpecies = world.entitySpecies(targetId) < if targetSpecies ~= nil then < table.insert(dialogTypes, withSpecies .. "." .. targetSpecies) < end < end < < table.insert(dialogTypes, withSpecies .. ".default") < table.insert(dialogTypes, withSpecies) < table.insert(dialogTypes, dialogType .. ".default") < < for _,dialogType in pairs(dialogTypes) do < if entity.configParameter(dialogType) ~= nil then < return dialogType < end < end < end < < -- param dialogType < -- param entity < function sayToEntity(args, output) < args = parseArgs(args, { < dialogType = "converse.dialog", < entity = "target", < tags = {} < }) < local entityId = BData:getEntity(args.entity) < local dialog = entity.staticRandomizeParameter(getDialogType(args.dialogType, entityId)) < if entityId == nil or dialog == nil then return false end < < args.tags.selfname = world.entityName(entity.id()) < < entity.say(dialog, args.tags) < return true < end < < -- param dialogType < -- param entity < function getDialog(args, output) < args = parseArgs(args, { < dialogType = "converse.dialog", < entity = nil < }) < local entityId = BData:getEntity(args.entity) < self.dialog = entity.configParameter(getDialogType(args.dialogType, entityId)) < if self.dialog == nil then < return false < end < < return true < end < < function sayNext(args, output) < args = parseArgs(args, { < tags = {} < }) < < if self.dialog == nil or #self.dialog == 0 then return false end < < local portrait = entity.configParameter("chatPortrait") < < args.tags.selfname = world.entityName(entity.id()) < < if portrait == nil then < entity.say(self.dialog[1], args.tags) < else < entity.sayPortrait(self.dialog[1], portrait, args.tags) < end < < table.remove(self.dialog, 1) < return true npcs\bunkerguard.npctype 5,7c5 < "disableWornArmor" : true, < < "damageTeam" : 1, --- > "dropPools" : [ "bunkerguardtreasure" ], 11,75d8 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], < < "scriptConfig" : { < "attackerLimit" : 6, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < < "attackSayingPercent" : 25, < < "dialog" : { < "attack" : { < "default" : [ "Intruder!" < ], < "human" : { < "default" : [ < "Intruder!", < "We've got a hostile!", < "Take 'em down!", < "Open fire!", < "Target acquired!", < "You've trespassed for the last time!", < "I made my bullets extra explodey, just for you!", < "My aim is true! Except for just then.", < "Die faster!", < "Big fish eats little fish! Guess which one you are?", < "How many bullets can you take? Let's find out.", < "There's no escaping for you!", < "I hope you wrote a will!", < "Look behind you! It's your imminent dooooom!", < "Prepare to die, scum!", < "I am your death, stranger.", < "Your expiry date has come!", < "Hostile at twelve o'clock!" < ] < } < } < } < }, < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 < } < }, < 103,166d35 < }, < < "dropPools" : [ "bunkerguardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 75.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\bunkerpyro.npctype 3c3 < "baseType" : "bunkerguard", --- > "baseType" : "guard", 6,38c6,33 < "attackerLimit" : 6, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "attackSayingPercent" : 25, < < "dialog" : { < "attack" : { < "default" : [ "Intruder!" < ], < "human" : { < "default" : [ < "Intruder!", < "We've got a hostile!", < "Take 'em down!", < "Open fire!", < "Target acquired!", < "I'm going to burn you alive!", < "You're going to be delicious!", < "The smell of roasting flesh is a delight!", < "Haaa, the flames are bright!", < "Fire is the most beautiful of weapons!", < "My flames will cleanse the flesh off your bones!", < "Sometimes I get distracted by the fire...", < "Burn, trespasser, BURN!", < "The flames will consume you!", < "Today, stranger, you meet your doom, by way of fire!", < "I'm gonna roast you good!", < "Prepare to melt, trespasser!", < "Hostile at twelve o'clock!" < ] < } --- > "dialog" : { > "attack" : { > "default" : { > "default" : [ > "Intruder!" > ] > }, > "human" : { > "default" : [ > "Intruder!", > "We've got a hostile!", > "Take 'em down!", > "Open fire!", > "Target acquired!", > "I'm going to burn you alive!", > "You're going to be delicious!", > "The smell of roasting flesh is a delight!", > "Haaa, the flames are bright!", > "Fire is the most beautiful of weapons!", > "My flames will cleanse the flesh off your bones!", > "Sometimes I get distracted by the fire...", > "Burn, trespasser, BURN!", > "The flames will consume you!", > "Today, stranger, you meet your doom, by way of fire!", > "I'm gonna roast you good!", > "Prepare to melt, trespasser!", > "Hostile at twelve o'clock!" > ] 41,45d35 < }, < < "rangedAttack" : { < "minDistance" : 5, < "maxDistance" : 15 62,125d51 < }, < < "dropPools" : [ "guardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\castleguard.npctype 5,6d4 < "disableWornArmor" : true, < 9,72d6 < "damageTeam" : 1, < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], < < "scriptConfig" : { < "attackerLimit" : 6, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < < "attackSayingPercent" : 25, < < "dialog" : { < "attack" : { < "default" : [ "Intruder!" < ], < "glitch" : { < "default" : [ < "Hostile. Intruder!", < "Intimidating. Fall to your knees and beg for mercy!", < "Confident. You will die this day!", < "Arrogant. You shall be an easy kill.", < "Bloodthirsty. Don't die too quickly; I want to savour this!", < "Excited. Finally, a worthy adversary!", < "Threatening. You chose the wrong castle to invade!", < "Daring. Come forth and prove your mettle!", < "Malevolent. I will run you through!", < "Furious. Prepare to die, intruder!", < "Contemptuous. What a repulsive specimen you are!" < ] < } < } < } < }, < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 < }, < < "meleeAttack" : { < "runThreshold" : 0 < } < }, < 93,156d26 < }, < < "dropPools" : [ "castleguardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\castlelord.npctype 3c3 < "baseType" : "castleguard", --- > "baseType" : "guard", 5,25c5,9 < "disableWornArmor" : true, < < "damageTeam" : 1, < < "levelVariance" : [0, 0], < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < "/npcs/sitState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], --- > "movementParameters" : { > "runSpeed" : 15 > }, > > "dropPools" : [ "castleguardtreasure" ], 30,58c14,18 < "sit" : { < "timeOfDayRanges" : [ [0.0, 1.0] ], < "moveTimeLimit" : 30, < "searchRadius" : 10, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [30, 240] < }, < < "guard" : { < // Optional - guard will only stand around for a random number of seconds < // within this range before trying to do something else. Omit to stay < // in guard state until attacking. < "timeRange" : [10, 20], < "attackSayingPercent" : 100, < < "dialog" : { < "attack" : { < "default" : [ "Guards! To me!" < ], < "glitch" : [ < "Alarmed. Guards! To me!", < "Afraid. A brigand! Guards!", < "Petrified. I'm too young to be repurposed!", < "Referential. Hark, a vagrant!", < "Defiant. Guards, hack this scoundrel apart!", < "Brave. I'd take you down myself, but I have guards for that!", < "Incensed. You'll rue the day you invaded, rogue!", < "Brazen. You'll leave this place... in pieces!" --- > "dialog" : { > "attack" : { > "default" : { > "default" : [ > "Guards! To me!" 60c20,30 < } --- > }, > "glitch" : [ > "Alarmed. Guards! To me!", > "Afraid. A brigand! Guards!", > "Petrified. I'm too young to be repurposed!", > "Referential. Hark, a vagrant!", > "Defiant. Guards, hack this scoundrel apart!", > "Brave. I'd take you down myself, but I have guards for that!", > "Incensed. You'll rue the day you invaded, rogue!", > "Brazen. You'll leave this place... in pieces!" > ] 62,65d31 < }, < < "meleeAttack" : { < "sayAttackStartDistance" : -1 87,154d52 < }, < < "movementParameters" : { < "runSpeed" : 15 < }, < < "dropPools" : [ "castlelordtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 250.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } 156c54 < } --- > } \ No newline at end of file npcs\castleroyalguard.npctype 3,5c3 < "baseType" : "castleguard", < < "disableWornArmor" : true, --- > "baseType" : "guard", 9,39c7,8 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], < < "scriptConfig" : { < "noticePlayersRadius" : 30, < < "guard" : { < "patrolDistance" : 0, < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < "attackSayingPercent" : -1 < }, < < "meleeAttack" : { < "sayAttackStartDistance" : -1 < } --- > "movementParameters" : { > "runSpeed" : 15 40a10,11 > > "dropPools" : [ "castleguardtreasure" ], 62,129d32 < }, < < "movementParameters" : { < "runSpeed" : 15 < }, < < "dropPools" : [ "castleguardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\chefmerchant.npctype 5,10d4 < "disableWornArmor" : true, < < "damageTeam" : 1, < < "levelVariance" : [0, 0], < 12d5 < 15a9,15 > "categories" : { > "default" : [ "chefmerchant" ] > }, > "buyFactorRange" : [ 1.0, 1.0 ], > "sellFactorRange" : [ 0.2, 0.2 ], > "numItems" : 20 > }, 17c17,18 < "dialog" : { --- > "dialog" : { > "merchant" : { 19,21c20,24 < "default" : [ < "Hungry? I've got plenty of fresh produce right here!" < ], --- > "default" : { > "default" : [ > "Hungry? I've got plenty of fresh produce right here!" > ] > }, 79,81c82,86 < "default" : [ < "Come back anytime!" < ], --- > "default" : { > "default" : [ > "Come back anytime!" > ] > }, 125,185d129 < }, < < "categories" : { < "default" : [ "chefmerchant" ] < }, < "buyFactorRange" : [ 1.0, 1.0 ], < "sellFactorRange" : [ 0.2, 0.2 ], < "numItems" : 20 < }, < < "tenant" : { < "emoteCooldownTimeRange" : [1.0, 2.0], < "complaintCooldownTimeRange" : [5.0, 10.0], < "severeComplaintTime" : 25.0, < "finalComplaintTime" : 35.0, < < "dialog" : { < "grumbles" : { < "tagCriteria" : { < "default" : [ < "This place doesn't feel much like home anymore." < ] < }, < "enclosedArea" : { < "default" : [ < "My home could use some repairs!" < ] < }, < "otherDeed" : { < "default" : [ < "I thought this place was for me..." < ] < }, < "severe" : { < "default" : [ < "I should write to my landlord...", < "I can't live in these conditions!" < ] < }, < "final" : { < "default" : [ < "This is the final straw!", < "I've had enough of this!" < ] < } < }, < "arrivedHome" : { < "beacon" : { < "default" : [ < "Honey! I'm home!", < "You called?", < "Yes, m'lord?" < ] < }, < "rent" : { < "default" : [ < "I hope this paltry payment will suffice.", < "I don't like paying taxes, but if it's for you, I don't mind." < ] < } < } 187,208d130 < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "runThreshold" : 9, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 293,354d214 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\clanleader.npctype 5,332c5,6 < "disableWornArmor" : true, < < "damageTeam" : 1, < < "levelVariance" : [0, 0], < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/sitState.lua", < "/npcs/sleepState.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/converseState.lua", < "/npcs/wanderState.lua" < ], < < "scriptConfig" : { < "attackerLimit" : 10, < "attackerLimitCooldown" : 3, < "wander" : { < "timeRange" : [2.0, 10.0], < "chatDistance" : 4, < "indoorTimeOfDayRanges" : [ [0.0, 0.2], [0.5, 1.0] ], < "indoorSearchRadius" : 60, < "indoorLookaheadDistance" : 4, < "moveToTargetTime" : 10.0, < "changeDirectionCooldown" : 2, < "dropDownChance" : 0, < "cooldown" : 10 < }, < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "floran" : { < "default" : [ < "Ssstrange thing." < ], < "human" : [ < "Meatman!", < "Sssilly human.", < "Floran not like ssstrangers.", < "Sssuspicious thing.", < "Watch yourself meat.", < "Greenguard watch you, human.", < "Leave, maybe.", < "Floran dream of oaken sssoldiers. Floran ssscared.", < "Floran ssstab you if you misbehave.", < "Creature!", < "Sssuspicious. Floran Glitch friend tell Floran to watch human.", < "Floran hear planet eaten by monster. Floran hunt it.", < "Floran find human funny.", < "Floran not underssstand you.", < "GREETINGS AND SSSALUTATIONS. Birdman tell Floran to say this.", < "Floran can read words!", < "Floran restless, not enough ssstabby.", < "Greenfinger say humans sssquishy and weak.", < "Floran teach human art of ssstabbing.", < "Welcome to Floran village, ssskinperson.", < "Floran ssstab, therefore Floran am.", < "Floran never met humans before.", < "Behave, sssilly thing.", < "Human ssspeak words at Floran. Floran sssmile and nod.", < "Floran look after human for now.", < "Skreeeeee!", < "Glitch try to teach Floran advanced mathematics. Floran head hurt.", < "Floran want to pull sssilly human's hair.", < "Floran think human brave for coming here.", < "Floran sssee human ssspace craft, have envy.", < "Floran want human best friend.", < "Floran and cocoon-kin giggle behind human's back.", < "What are you?", < "Human not grow leaves. Floran pity it.", < "Floran want to show human how to use ssspear.", < "Floran cuddle human sssilly.", < "Floran learn rules of etiquette.", < "Floran remember human ssshooty men get mad at Floran.", < "Greenfinger sssay be nice to pitiful ssspecies.", < "Floran want to meet human in dark alley." < ], < "apex" : [ < "Floran want cuddle from monkey man!", < "Floran like monkey man ssscent.", < "Floran tougher than chimp chump.", < "Greenfinger sssay Biggie Ape nice monkey.", < "Floran sssuspicious of travelling monkey.", < "Floran call Greenguard if monkey roar.", < "Monkey man!", < "Monkey man wear sssilly clothes.", < "Floran feel comfortable with monkey man.", < "Monkey man want Floran pet?", < "Ssspace monkey!", < "Floran not ssstab ape for now.", < "Floran sssay hello, be friendly to big monkey.", < "Hopping monkey make Floran laugh.", < "Floran think Apex Floran's favourite.", < "Glitch sssay monkeys are oppressed. Floran not understand.", < "Monkey come see Floran house.", < "Floran proud of village. Sssee it.", < "Floran admit Floran ssscared of monkey men.", < "Floran big tough hunter. Cocoon-kin here soon.", < "Floran sssad, cocoon-sister take drysap.", < "Greenguard put monkey in Dust if monkey bad.", < "Floran once punch a monkey for no reason.", < "Hello. Hi. Hello. Hi. Hello.", < "Floran tell Biggie Ape; ssstabbing can happen.", < "Floran not afraid of anything!", < "Monkey let Floran see ssspace ship.", < "Floran want monkey clothes.", < "Chimpanzeeeeeee!", < "Floran happy with encounter.", < "Floran want to know; what's fleas?", < "Please admire Floran foliage, monkey man!", < "Floran wonder if monkey man like Floran.", < "Floran think monkey funny and nice.", < "Floran never hunt monkey ever.", < "I learning am how speak to properly. Floran.", < "Sssilly monkey, Floran like.", < "Ssstabby ssstabby ssstabby!", < "Floran is hero to cocoon-kin.", < "Floran help monkey man take down mini log." < ], < "avian" : [ < "Birdman!", < "Floran love Avian feathersss.", < "Floran sssad birdman can't fly.", < "Floran dream of hunting Kluex!", < "Floran want to ssstroke birdman.", < "Take Floran to ssstars, bird!", < "Greenfinger say birdthings like gods.", < "Floran wonder if Kluex really that tough.", < "Bird person! Hello.", < "Floran like look of bird.", < "Not even want to ssstab you.", < "Floran reflecting on nature of existence. Floran ssseek ssspiritual guidance.", < "Birdman want to hear Floran read?", < "Are you a big reader? No, I thought not.", < "Floran hear about birdman tombs. Floran like.", < "Floran will defeat birdman Ssstargazers.", < "Floran consider ssstabbing but behave ssself.", < "Welcome in, bird thing!", < "Floran fear nothing!", < "Place here is nice, yes?", < "Feathers make Floran sssneeze.", < "Floran happy to welcome bird in.", < "Floran sssee bird, laugh.", < "Greenfinger sssay bird people nice.", < "Floran pleased to sssee this one.", < "Pretty little bird. Floran not ssstab.", < "Bird bird bird birdy.", < "Floran thrilled to sssee bird person!", < "Floran demand feather as offering!", < "Greenguard want watch bird person, Floran think.", < "Floran want birdman ssspace ssship. Can Floran have?", < "Other birdman sssay Floran not have sssocial ssskills. Floran ssstab.", < "Flap flap flap!", < "Peck peck peck!", < "Floran sssee funny ssside.", < "Floran ssshow birdman ssspear collection.", < "Birdman! Floran say hi!", < "Floran pleased bird ssspeak to it.", < "Welcome in!", < "Not want bird to feel unsettled.", < "Ssspace!", < "Flyyyyyyyy!" < ], < "floran" : [ < "Floran!", < "Greetings Floran.", < "Floran hunt better than Floran. Floran know it!", < "Floran think Floran member of cocoon-kin.", < "What Greenfinger sssay to you Floran?", < "Floran smell Hylotl on you.", < "Strange Floran from ssspace. Floran like.", < "Floran take Floran on ssspace ssship now.", < "Floran not here to cause trouble, right?", < "Greenguard not trust Floran outsiders. Sssad.", < "Floran wonder if Floran really a Floran.", < "Ssstab? Ssstab. Ssstab!", < "Friend!", < "Floran ssshow best ssstabber.", < "Floran sssuggest we hunt together.", < "Floran wonder if Floran meet big prey in ssspace?", < "Floran happy now.", < "Floran confused by new Floran face.", < "A friend!", < "Ssstabbing is fun!", < "The Circle of Thorns is closing in.", < "Floran behave around guest.", < "Nice happy to meet!", < "Floran and Floran adventure go!", < "We become friends?", < "This happy day for Floran.", < "Floran tell cocoon-kin about thisss.", < "Floran wonder if Floran miss cocoon-kin.", < "Floran proud of grand ssspace hunter Floran friend.", < "Floran read Floran Peace. Floran not like.", < "Floran in trouble for eating Apex.", < "Greenfinger sssay ssspace hunter Floran best in business.", < "Floran hear dark rumours.", < "Ssstab all of things!", < "Floran long to punch sssomething.", < "Floran trembling in awe.", < "Floran pleased to be happy.", < "Floran like not being judged.", < "Hello Floran friend!", < "Hunting hunting hunting every daysss.", < "Floran recommend Art of Ssstabbing as good read.", < "Floran meet Sssunflower Tzu once, go weak at knees.", < "Floran wonder if Floran meet Greenfinger ever.", < "Floran big ssshot in village." < ], < "glitch" : [ < "Floran greet metal man!", < "Robo-friend make Floran happy.", < "Floran not ssstab Glitchy.", < "Greenfinger sssay Glitch our kin from another bin.", < "Floran pleased to sssee robot.", < "Floran hope robot teach Floran to maths.", < "Robot make Floran feel fuzzy.", < "Floran love Glitch for ever.", < "Yip!", < "Ssslashy ssstabby Floran protect Glitch.", < "Floran want be on Glitch ssspace ship.", < "Floran tap metal robot head, hear clunk.", < "Floran excited to sssee roboglitch.", < "Robot ssseem nice.", < "Floran love sssound robot make.", < "Floran want visit robot ssspace ssship.", < "Floran wonder if Glitch meet Hylotl lately?", < "Hello robo.", < "Floran want Glitch to ssstay.", < "Floran love warrior robot.", < "Floran ssshow off ssskills to robot.", < "Let's eat!", < "Happy daysss!", < "Floran feel nice today.", < "Floran want Glitch to sssing.", < "Floran giggle at robot.", < "Floran hope Glitch teach many things.", < "Greenfinger love robots!", < "Floran never ssstab Glitch ever.", < "Glitch nice to Floran, Floran respect.", < "Floran want to go ssspace fight!", < "Floran think about many things lately.", < "Floran hope robot like place.", < "Robot and Floran friends.", < "Floran want Glitch clothes.", < "Robot, Floran wonder if robot like Floran foliage?", < "Floran will sssad when robot go.", < "Floran want to dance.", < "Glitchy turn up, make Floran day.", < "Floran pledge Glitchy its ssstabbies." < ], < "hylotl" : [ < "Hsssss!", < "Ssstab!", < "Fish! Away!", < "Floran not ssspeak to fish!", < "Ssslimy one, begone!", < "Floran not know what fish thing expect here.", < "Greenguard watch you, fish.", < "Ssslime creature!", < "Floran keen to ssstab this thing.", < "Graaak!", < "Fissshhhhhhhhhh nooooo!", < "Horrific fish!", < "Ssslimy beast!", < "Hyark!", < "*maniacal laughter*", < "Floran will ssstab you fishface!", < "Floran not like you, thing.", < "Horrifying ssslime!", < "Floran perplexed at brazen fish.", < "Floran think ssspace ssship wasted on fish.", < "Fishface! Away!", < "Floran not responsible for Floran's actions if fish remain here!", < "Floran quivering with rage at sssudden fish.", < "FLORAN HATE YOU FISH!", < "Sssick fish, go away or go ssstabby.", < "Floran not even mind fish really but entrenched rivalry unavoidable.", < "Greenfinger sssay ssslimy fish enemy of Florans!", < "Floran's is the fury!", < "Ssscumfish, what do here?", < "Ssslime fish ssshould fear Floran.", < "Leave, beast of the sssea.", < "Floran call Greenguard sssoon!", < "Filthy ssstinky fish not touch Floran.", < "Floran ssspit on fish peace.", < "Floran know truth, slime. Leave now.", < "Ssstinky sssea creature alert.", < "Floran would ssstab but left sssword at home.", < "Sssound the fish alarm!", < "Floran not want you here, slimefish.", < "Floran displeased with fish appearance." < ] < } < } < }, < < "sit" : { < "timeOfDayRanges" : [ [0.6, 1.0], [0.0, 0.2] ], < "moveTimeLimit" : 30, < "searchRadius" : 10, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [15, 240] < }, < < "sleep" : { < "searchRadius" : 15, < "lieDownRadius" : 3, < "moveToBedTimeLimit" : 10.0, < "timeOfDayRanges" : [ [ [0.7, 0.75], [0.95, 1.0] ] ], < "cooldown" : 30 < }, < < "meleeAttack" : { < "runThreshold" : 0 < } --- > "movementParameters" : { > "runSpeed" : 15 370,436d43 < }, < < "movementParameters" : { < "runSpeed" : 15 < }, < < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 250.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\colourfulvillager.npctype 5,10d4 < "damageTeam" : 1, < < "levelVariance" : [-1, -1], < < "disableWornArmor" : true, < 12,19c6,12 < < "noticePlayersRadius" : 30, < < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ "What... have I become?" ], < --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ > "What... have I become?" > ] > }, 42,170d34 < }, < < "flee" : { < "reactionTimeRange" : [0.2, 1.0], < "safeDistance" : 100, < "safeDistanceWithGuards" : 40, < "safeTimer" : 10, < "stuckTime" : 4, < "stuckCooldown" : 10, < "dialogTimeRange" : [4, 10], < < "dialog" : { < "helpme" : { < "default" : [ < "Guards! Help me!", < "Help! Guards! Help!", < "Guards! I've been accosted!" < ], < "glitch" : [ < "Fear. Guards! Help me!", < "Intimidated. Please don't hurt me!", < "Abused. Guards! I've been accosted!", < "Afraid. Get away from me! Guards!", < "Terrified. Save me!", < "Shocked. No! Get away from me!" < ] < }, < "helpthem" : { < "default" : [ < "What have you done!?" < ], < "glitch" : [ < "Fear. Guards!", < "Intimidated. Please don't hurt me!", < "Afraid. Leave me be! Guards!", < "Terrified. Save me!", < "Shocked. What have you done?!" < ], < "floran" : [ < "Ssstabby time for me!", < "Floran being hurted!", < "Floran not ready for hunt!", < "Greenguard help Floran!" < ] < }, < "encourage" : { < "default" : [ < "Get 'em!", < "Avenge me!", < "Stick 'em once for me!", < "Don't let 'em get away!" < ], < "glitch" : [ < "Encourage. Put 'em to the sword!", < "Excitement. Avenge me!", < "Aggressive. Strike him down!", < "Vengeful. Don't let 'em get away!" < ], < "floran" : [ < "Ssstabb the intruders!", < "Floran get revenge now!", < "Ssslice them!", < "Greenguard destroy it!" < ] < }, < "safe" : { < "default" : [ < "Phew, I think I got away.", < "I've escaped with my life!", < "Is this the safe zone?" < ], < "glitch" : [ < "Relieved. Phew, I think I got away.", < "Thankful. I've escaped with my life!", < "Wishful. If only I could afford a keep.", < "Hopeful. Am I safe?", < "Embarrassed. I think I leaked a little oil." < ], < "floran" : [ < "Floran sssafe now.", < "Floran not get ssstabbed after all.", < "Them lucky Floran not have weapon.", < "Sssalvation!" < ] < } < } < }, < < "sit" : { < "timeOfDayRanges" : [ [0.6, 1.0], [0.0, 0.2] ], < "moveTimeLimit" : 30, < "searchRadius" : 10, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [15, 240] < }, < < "sleep" : { < "searchRadius" : 15, < "lieDownRadius" : 3, < "moveToBedTimeLimit" : 10.0, < "timeOfDayRanges" : [ [ [0.7, 0.75], [0.95, 1.0] ] ], < "cooldown" : 30 < }, < < "chat" : { < "distanceRange" : [2.0, 4.0], < "conversations" : [ < [ < [2, "blabbering", "idle" ], < [1, "idle", "laugh" ], < [2, "idle", "blabbering" ], < [1, "sad", "idle" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "happy" ], < [1, "wink", "laugh" ], < [2, "happy", "happy" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "blabbering" ], < [2, "blabbering", "annoyed" ], < [3, "shouting", "shouting" ], < [2, "annoyed", "annoyed" ] < ] < ], < "cooldown" : 10 562,648d425 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\cultist.npctype 3,6c3 < < "disableWornArmor" : true, < < "damageTeam" : 2, --- > "baseType" : "hostile", 10,20c7 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", --- > "persistent" : true, 22,24d8 < "/npcs/guard/guardState.lua" < ], < "initialScriptDelta" : 5, 26,64c10,11 < "attackerLimit" : 4, < "attackerLimitCooldown" : 3, < < "guard" : { < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < < "wallCheckDistance" : 5, < "changeDirectionTimeRange" : [10, 20], < < "dialog" : { < "attack" : { < "default" : [ "Death to heathens!" ] < } < } < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "runThreshold" : 9, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 --- > "dialog" : { > "attack" : "/dialog/cultist.config:attack" 82,172d28 < }, < < "dropPools" : [ "guardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\default_reactions.config 4,26d3 < // Reacting to objects. Compatible objects contain a list of tags for the < // NPC to react to, e.g. ["computer", "computer", "finishedVideogame"] < "videogame" : [ < [1.0, "computerTyping"] < ], < "videogameComplete" : [ < [1.0, "smile"], < [1.0, "annoyed"], < [1.0, "punch"] < ], < "artwork" : [ < [1.0, "smile"], < [1.0, "love"] < ], < "music" : [ < [1.0, "posedance"] < ], < "musicFinished" : [ < [1.0, "posedance"], < [1.0, "smile"], < [1.0, "laugh"] < ], < 67d43 < [3.0, "follow"], 72,73c48 < [1.0, "gohome"], < [1.0, "flee"] --- > [1.0, "gohome"] 75a51,67 > // NPCs can also react to objects. See arcademachine.object:npcToy for > // an example. > > // All of these reactions can be overridden in npctype files by defining > // scriptConfig.reactions like below: > // "reactions" : { > // "videogameComplete" : [ > // // overriding reactions defined in a .object file > // [1.0, "bored"] > // ], > // "smile" : [ > // // overriding reactions defined in default_reactions.config > // [1.0, "smile"], > // [1.0, "quit"] > // ] > // } > 103a96 > // In NPC-NPC interactions (chatting) these reactions end the chat. npcs\doctormerchant.npctype 5,10d4 < "disableWornArmor" : true, < < "damageTeam" : 1, < < "levelVariance" : [0, 0], < 12d5 < 15a9,15 > "categories" : { > "default" : [ "doctormerchant" ] > }, > "buyFactorRange" : [ 1.0, 1.0 ], > "sellFactorRange" : [ 0.2, 0.2 ], > "numItems" : 4 > }, 17c17,18 < "dialog" : { --- > "dialog" : { > "merchant" : { 19,21c20,24 < "default" : [ < "Always carry some first-aid!" < ], --- > "default" : { > "default" : [ > "Always carry some first-aid!" > ] > }, 78,80c81,85 < "default" : [ < "If you ever need medical supplies, come find me." < ], --- > "default" : { > "default" : [ > "If you ever need medical supplies, come find me." > ] > }, 124,153c129 < }, < < "categories" : { < "default" : [ "doctormerchant" ] < }, < "buyFactorRange" : [ 1.0, 1.0 ], < "sellFactorRange" : [ 0.2, 0.2 ], < "numItems" : 4 < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "runThreshold" : 9, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 --- > } 254,315d229 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\eyeguard.npctype 5,8d4 < "disableWornArmor" : true, < < "damageTeam" : 1, < 11,26d6 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], < 28,65c8,35 < "attackerLimit" : 6, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < < "attackSayingPercent" : 50, < < "dialog" : { < "attack" : { < "default" : [ "Intruder!" < ], < "glitch" : { < "default" : [ < "I... see... you!", < "You can't escape our gaze!", < "Death comes for us all... today it comes for you.", < "Your blood will appease our lords...", < "Something wicked this way comes... me!", < "Abandon hope, pitiable explorer.", < "I will show you the true meaning of fear.", < "We will tear your soul apart!", < "The Universe is a cruel place, as you will see.", < "Birds, fish, monkeys... they're all just meat to us.", < "The dread lords thank you in advance for your sacrifice.", < "We shall reap what you sow!", < "The universe will burn, and we shall watch.", < "Prepare to embrace the darkness.", < "Your soul smells tasty.", < "I am become Death, destroyer of worlds.", < "Your story ends here, little traveller.", < "I don't know who these guys are, I'm just going with the flow, sorry!" < ] < } --- > "dialog" : { > "attack" : { > "default" : { > "default" : [ > "Intruder!" > ] > }, > "glitch" : { > "default" : [ > "I... see... you!", > "You can't escape our gaze!", > "Death comes for us all... today it comes for you.", > "Your blood will appease our lords...", > "Something wicked this way comes... me!", > "Abandon hope, pitiable explorer.", > "I will show you the true meaning of fear.", > "We will tear your soul apart!", > "The Universe is a cruel place, as you will see.", > "Birds, fish, monkeys... they're all just meat to us.", > "The dread lords thank you in advance for your sacrifice.", > "We shall reap what you sow!", > "The universe will burn, and we shall watch.", > "Prepare to embrace the darkness.", > "Your soul smells tasty.", > "I am become Death, destroyer of worlds.", > "Your story ends here, little traveller.", > "I don't know who these guys are, I'm just going with the flow, sorry!" > ] 68,72d37 < }, < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 91,154d55 < }, < < "dropPools" : [ "eyeguardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\follower.npctype 2a3 > "baseType" : "base", 6d6 < "levelVariance" : [0, 0], 8c8,10 < "disableWornArmor" : true, --- > "dropPools" : [ "villagertreasure" ], > > "persistent" : true, 10,13d11 < "scripts" : [ < "/npcs/bmain.lua" < ], < "initialScriptDelta" : 5, 17,40c15,22 < "follower" : { < "dialog" : { < "attack" : { < "default" : [ < "Don't worry, I'll take care of this", < "What kind of monster is this!?" < ] < }, < "join" : { < "default" : [ < "Hello adventurer, mind if I join you?", < "You look strong. We're friends now." < ] < }, < "returnFromCombat" : { < "default" : [ < "Now that was a fight!", < "Phew, you handle yourself quite well." < ] < }, < "wait" : { < "default" : [ < "I'll just wait here." < ] --- > "dialog" : { > "tenant" : { > "grumbles" : { > "tagCriteria" : "/dialog/grumble.config:tagCriteria", > "enclosedArea" : "/dialog/grumble.config:enclosedArea", > "otherDeed" : "/dialog/grumble.config:otherDeed", > "severe" : "/dialog/grumble.config:severe", > "final" : "/dialog/grumble.config:final" 42,45c24,26 < "returnFromWait" : { < "default" : [ < "You came back!" < ] --- > "arrivedHome" : { > "beacon" : "/dialog/arrivedhome.config:beacon", > "rent" : "/dialog/arrivedhome.config:rent" 47,54c28 < } < }, < < "tenant" : { < "emoteCooldownTimeRange" : [1.0, 2.0], < "complaintCooldownTimeRange" : [5.0, 10.0], < "severeComplaintTime" : 25.0, < "finalComplaintTime" : 35.0, --- > }, 56,68c30,32 < "dialog" : { < "grumbles" : { < "tagCriteria" : { < "default" : [ < "This place doesn't feel much like home anymore." < ] < }, < "enclosedArea" : { < "default" : [ < "My home could use some repairs!" < ] < }, < "otherDeed" : { --- > "follower" : { > "attack" : { > "default" : { 70c34,35 < "I thought this place was for me..." --- > "Don't worry, I'll take care of this", > "What kind of monster is this!?" 72,73c37,40 < }, < "severe" : { --- > } > }, > "join" : { > "default" : { 75,76c42,43 < "I should write to my landlord...", < "I can't live in these conditions!" --- > "Hello adventurer, mind if I join you?", > "You look strong. We're friends now." 78,79c45,48 < }, < "final" : { --- > } > }, > "returnFromCombat" : { > "default" : { 81,82c50,51 < "This is the final straw!", < "I've had enough of this!" --- > "Now that was a fight!", > "Phew, you handle yourself quite well." 86,87c55,56 < "arrivedHome" : { < "beacon" : { --- > "wait" : { > "default" : { 89,91c58 < "Honey! I'm home!", < "You called?", < "Yes, m'lord?" --- > "I'll just wait here." 93,94c60,63 < }, < "rent" : { --- > } > }, > "returnFromWait" : { > "default" : { 96,97c65 < "I hope this paltry payment will suffice.", < "I don't like paying taxes, but if it's for you, I don't mind." --- > "You came back!" 102,124d69 < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "switchDistance" : 15, < "runThreshold" : 0, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 144,234d88 < }, < < "dropPools" : [ "villagertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\friendlyguard.npctype 6,26d5 < "damageTeam" : 1, < < "levelVariance" : [0, 0], < < "disableWornArmor" : true, < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/followState.lua", < "/npcs/standingIdleState.lua" < ], 34,47c13,15 < "guard" : { < "patrolDistance" : 25, < "noticeDistance" : 30, < "hailDistance" : 5, < "hailPercent" : 50, < "stopDistance" : -1, < "attackDistance" : -1, < "loseSightTime" : 10, < "loseSightDistance" : 30, < "wallCheckDistance" : 5, < "changeDirectionTimeRange" : [10, 20], < < "dialog" : { < "hail" : { --- > "dialog" : { > "hail" : { > "default" : { 50,113c18,28 < ], < "avian" : { < "default" : [ < "Erk! Uh, you surprised me. Hey, boss.", < "This isn't such a bad job... no Stargazers here, at least.", < "Hey there, boss - what can I do for you?", < "Phew. Long day. How's your day been, boss?" < ] < }, < "apex" : { < "default" : [ < "Hey, boss. Back from adventuring?", < "Argh, food stuck in my beard and the boss is here!", < "Boss is here. Gotta play it cool. Just like with Big Ape.", < "Don't worry, boss, I got this under control." < ] < }, < "floran" : { < "default" : [ < "Floran greetsss the almighty employer.", < "Floran hopesss that boss is trusting...", < "When does Floran'sss shift end?", < "Do not worry, boss, Floran will ssstab intrudersss." < ] < }, < "glitch" : { < "default" : [ < "Subservient. Hello, master.", < "Proud. I have experience guarding things. Like you.", < "Twitchy. I'll shoot at anything that moves.", < "Query. Boss, do you think I can get a day off soon?" < ] < }, < "human" : { < "default" : [ < "Hey, boss! I wasn't slacking off, I swear!", < "Man, look at me, being all guard-y and not sleeping on the job.", < "Sometimes it's hard to tell between Florans and the local wildlife!", < "I love being employed as a guard. Gives me lots of thinking time." < ] < }, < "hylotl" : { < "default" : [ < "Hey, boss. Think we could get a remodel here?", < "The only beautiful thing on this planet is me. Maybe you, also.", < "This gun you gave me is substandard, boss. It'll have to do...", < "I'm doing such a good job here, can I get a payrise?" < ] < } < } < } < }, < < "follower" : { < "playerQueryRadius" : 15, < "follower.maxFollowRange" : 40, < < "attackDistance" : 40, < < "attackSayingPercent" : 25, < "returnSayingPercent" : 25, < < "dialog" : { < "attack" : { --- > ] > }, > "avian" : { > "default" : [ > "Erk! Uh, you surprised me. Hey, boss.", > "This isn't such a bad job... no Stargazers here, at least.", > "Hey there, boss - what can I do for you?", > "Phew. Long day. How's your day been, boss?" > ] > }, > "apex" : { 115,116c30,33 < "Don't worry, I'll take care of this", < "What kind of monster is this!?" --- > "Hey, boss. Back from adventuring?", > "Argh, food stuck in my beard and the boss is here!", > "Boss is here. Gotta play it cool. Just like with Big Ape.", > "Don't worry, boss, I got this under control." 119c36 < "join" : { --- > "floran" : { 121,122c38,41 < "Hello adventurer, mind if I join you?", < "You look strong. We're friends now." --- > "Floran greetsss the almighty employer.", > "Floran hopesss that boss is trusting...", > "When does Floran'sss shift end?", > "Do not worry, boss, Floran will ssstab intrudersss." 125c44 < "returnFromCombat" : { --- > "glitch" : { 127,128c46,49 < "Now that was a fight!", < "Phew, you handle yourself quite well." --- > "Subservient. Hello, master.", > "Proud. I have experience guarding things. Like you.", > "Twitchy. I'll shoot at anything that moves.", > "Query. Boss, do you think I can get a day off soon?" 131c52 < "wait" : { --- > "human" : { 133c54,57 < "I'll just wait here." --- > "Hey, boss! I wasn't slacking off, I swear!", > "Man, look at me, being all guard-y and not sleeping on the job.", > "Sometimes it's hard to tell between Florans and the local wildlife!", > "I love being employed as a guard. Gives me lots of thinking time." 136c60 < "returnFromWait" : { --- > "hylotl" : { 138c62,65 < "You came back!" --- > "Hey, boss. Think we could get a remodel here?", > "The only beautiful thing on this planet is me. Maybe you, also.", > "This gun you gave me is substandard, boss. It'll have to do...", > "I'm doing such a good job here, can I get a payrise?" 142,164d68 < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "switchDistance" : 15, < "runThreshold" : 0, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 357,420d260 < }, < < "dropPools" : [ "guardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\friendlypirateguard.npctype 6d5 < "damageTeam" : 1, 8,26c7,9 < "levelVariance" : [0, 0], < < "disableWornArmor" : true, < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/followState.lua", < "/npcs/standingIdleState.lua" < ], --- > "movementParameters" : { > "runSpeed" : 15 > }, 29,47c12,14 < "attackerLimit" : 8, < "attackerLimitCooldown" : 3, < < "idleTimeRange" : [1, 2], < < "guard" : { < "patrolDistance" : 25, < "noticeDistance" : 30, < "hailDistance" : 5, < "hailPercent" : 50, < "stopDistance" : -1, < "attackDistance" : -1, < "loseSightTime" : 10, < "loseSightDistance" : 30, < "wallCheckDistance" : 5, < "changeDirectionTimeRange" : [10, 20], < < "dialog" : { < "hail" : { --- > "dialog" : { > "hail" : { > "default" : { 53,116c20,22 < ], < "apex" : { < "default" : [ < "Ahoy, matey!", < "I've got food stuck in me beard, matey!", < "I'm just sitting here, watchin'. Don't fret.", < "Don't worry, I'll protect ye from baddies." < ] < }, < "avian" : { < "default" : [ < "Ahoy, matey!", < "How are ye doin'?", < "Yarr, I do like me guardin' job.", < "Have ye ever been on an airship? Fun places, them." < ] < }, < "floran" : { < "default" : [ < "Ahoy. Floran greetsss you.", < "Floran likesss you but will still ssstab if not nice.", < "What doesss friend plan on doing today?", < "Even Floran's leavesss are watching for enemies." < ] < }, < "glitch" : { < "default" : [ < "Welcoming. Ahoy, matey.", < "Hesitant. Can I go polish my joints?", < "Confident. I'll guard against anything that will hurt us.", < "Query. Have you been out adventuring today?" < ] < }, < "human" : { < "default" : [ < "Ahoy, matey!", < "What have ye been up to today?", < "Don't worry, matey, I've got me eyes peeled fer threats!", < "Avast, ye swab! Ahaha. I'm jus' kiddin'." < ] < }, < "hylotl" : { < "default" : [ < "Yarr, it's good to see ye.", < "It's hard work, sitting here all day!", < "By me fins, I think I saw an enemy!", < "Do ye think that I could get a payrise?" < ] < } < } < } < }, < < "follower" : { < "playerQueryRadius" : 15, < "follower.maxFollowRange" : 40, < < "attackDistance" : 40, < < "attackSayingPercent" : 25, < "returnSayingPercent" : 25, < < "dialog" : { < "attack" : { --- > ] > }, > "apex" : { 118,119c24,35 < "Don't worry, I'll take care of this", < "What kind of monster is this!?" --- > "Ahoy, matey!", > "I've got food stuck in me beard, matey!", > "I'm just sitting here, watchin'. Don't fret.", > "Don't worry, I'll protect ye from baddies." > ] > }, > "avian" : { > "default" : [ > "Ahoy, matey!", > "How are ye doin'?", > "Yarr, I do like me guardin' job.", > "Have ye ever been on an airship? Fun places, them." 122c38 < "join" : { --- > "floran" : { 124,125c40,43 < "Hello adventurer, mind if I join you?", < "You look strong. We're friends now." --- > "Ahoy. Floran greetsss you.", > "Floran likesss you but will still ssstab if not nice.", > "What doesss friend plan on doing today?", > "Even Floran's leavesss are watching for enemies." 128c46 < "returnFromCombat" : { --- > "glitch" : { 130,131c48,51 < "Now that was a fight!", < "Phew, you handle yourself quite well." --- > "Welcoming. Ahoy, matey.", > "Hesitant. Can I go polish my joints?", > "Confident. I'll guard against anything that will hurt us.", > "Query. Have you been out adventuring today?" 134c54 < "wait" : { --- > "human" : { 136c56,59 < "I'll just wait here." --- > "Ahoy, matey!", > "What have ye been up to today?", > "Don't worry, matey, I've got me eyes peeled fer threats!", > "Avast, ye swab! Ahaha. I'm jus' kiddin'." 139c62 < "returnFromWait" : { --- > "hylotl" : { 141c64,67 < "You came back!" --- > "Yarr, it's good to see ye.", > "It's hard work, sitting here all day!", > "By me fins, I think I saw an enemy!", > "Do ye think that I could get a payrise?" 145,167d70 < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "switchDistance" : 15, < "runThreshold" : 0, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 255,322d157 < }, < < "movementParameters" : { < "runSpeed" : 15 < }, < < "dropPools" : [ "guardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\guard.npctype 2a3 > "baseType" : "base", 4,6c5 < "disableWornArmor" : true, < < "damageTeam" : 1, --- > "persistent" : true, 8c7 < "levelVariance" : [-0.5, -0.5], --- > "dropPools" : [ "guardtreasure" ], 10,24d8 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua" < ], < "initialScriptDelta" : 5, 26,27c10 < "attackerLimit" : 4, < "attackerLimitCooldown" : 3, --- > "behavior" : "/behaviors/npc/guard.behavior", 29,77c12,20 < "deathNoticed" : { < "chance" : 0.5, < "dialog" : { < "default" : [ < "You killed !", < "! I will avenge you!" < ] < } < }, < < "guard" : { < "noticeDistance" : 25, < "hailDistance" : 20, < "stopDistance" : 10, < "attackDistance" : 5, < "wallCheckDistance" : 5, < "changeDirectionTimeRange" : [10, 20], < < "dialog" : { < "hail" : { < "default" : [ "Halt! Who goes there?" ] < }, < "stop" : { < "default" : [ "You may go no further." ] < } < } < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "switchDistance" : 15, < "runThreshold" : 0, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 --- > "dialog" : { > "converse" : "/dialog/converse.config:converse", > > "attack" : "/dialog/guard.config:attack", > "reattack" : "/dialog/combat.config:reattack", > "killedTarget" : "/dialog/combat.config:killedTarget", > "lostTarget" : "/dialog/combat.config:lostTarget", > "outOfSight" : "/dialog/combat.config:outOfSight", > "cantReach" : "/dialog/guard.config:cantReach" 137,225d79 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\hellguard.npctype 5,8d4 < "disableWornArmor" : true, < < "damageTeam" : 1, < 11,25c7 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], --- > "dropPools" : [ "hellguardtreasure" ], 28,56c10,26 < "attackerLimit" : 8, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "patrolDistance" : 4, < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < "changeDirectionTimeRange" : [5, 10], < < "attackSayingPercent" : 0, < < "dialog" : { < "attack" : { < "default" : [ "Intruder!" < ], < "floran" : { < "default" : [ < "Prisssoner mussst be dealt with!", < "I senssse an essscape!", < "Prisssoner will be ssstabbed to death!", < "Floran know nothing but ssstab and ssssslice...", < "Prisssoner's death is no sssacrifice...", < "There isss no escape!", < "It isss either Floran or ssstarvation which will kill you..." < ] < } --- > "dialog" : { > "attack" : { > "default" : { > "default" : [ > "Intruder!" > ] > }, > "floran" : { > "default" : [ > "Prisssoner mussst be dealt with!", > "I senssse an essscape!", > "Prisssoner will be ssstabbed to death!", > "Floran know nothing but ssstab and ssssslice...", > "Prisssoner's death is no sssacrifice...", > "There isss no escape!", > "It isss either Floran or ssstarvation which will kill you..." > ] 59,68d28 < }, < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 < }, < < "meleeAttack" : { < "swingDistance" : 5, < "runThreshold" : 0 89,152d48 < }, < < "dropPools" : [ "hellguardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\hellprisoner.npctype 3c3 < "baseType" : "guard", --- > "baseType" : "hostile", 7,8d6 < "damageTeam" : 2, < 11,24c9,11 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua" < ], --- > "movementParameters" : { > "runSpeed" : 15 > }, 27,51c14,26 < "attackerLimit" : 8, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "patrolDistance" : 4, < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < "changeDirectionTimeRange" : [5, 10], < < "attackSayingPercent" : 25, < < "dialog" : { < "attack" : { < "default" : [ "Intruder!" < ], < "floran" : { < "default" : [ < "Floran issss hungry!", < "Floran wantsssss!", < "Fleshhhhh!" < ] < } --- > "dialog" : { > "attack" : { > "default" : { > "default" : [ > "Intruder!" > ] > }, > "floran" : { > "default" : [ > "Floran issss hungry!", > "Floran wantsssss!", > "Fleshhhhh!" > ] 54,58d28 < }, < < "meleeAttack" : { < "swingDistance" : 3, < "runThreshold" : 0 74,141d43 < }, < < "movementParameters" : { < "runSpeed" : 15 < }, < < "dropPools" : [ "prisonberserkertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 75.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\knight.npctype 5,8d4 < "disableWornArmor" : true, < < "damageTeam" : 1, < 11,23d6 < "scriptConfig" : { < "guard" : { < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30 < }, < < "meleeAttack" : { < "runThreshold" : 0 < } < }, < 41,104d23 < }, < < "dropPools" : [ "castleguardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\labguard.npctype 5,8d4 < "disableWornArmor" : true, < < "damageTeam" : 1, < 11,25c7 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], --- > "dropPools" : [ "labguardtreasure" ], 28,57c10,15 < "attackerLimit" : 6, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "patrolDistance" : 5, < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < < "attackSayingPercent" : 25, < < "dialog" : { < "hail" : { < "default" : [ "Halt! This is a high security research facility. Lab personnel only!" ] < }, < "stop" : { < "default" : [ "This is your only warning. Leave this place now, or I'll be forced to take action." ] < }, < "attack" : { < "default" : [ "Intruder!" < ], < "apex" : { < "default" : [ < "Intruder!", < "Glory to the Big Ape!", < "Take 'em down!" < ] < } --- > "dialog" : { > "hail" : { > "default" : { > "default" : [ > "Halt! This is a high security research facility. Lab personnel only!" > ] 60,74d17 < }, < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 < }, < < "meleeAttack" : { < "switchDistance" : 10, < "runThreshold" : 0 < }, < < "rangedAttack" : { < "minDistance" : 5, < "maxDistance" : 18 94,157d36 < }, < < "dropPools" : [ "labguardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\labscientist.npctype 5,8d4 < "disableWornArmor" : true, < < "damageTeam" : 1, < 11,82d6 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/sitState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], < < "scriptConfig" : { < "attackerLimit" : 6, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "sit" : { < "timeOfDayRanges" : [ [0.0, 1.0] ], < "moveTimeLimit" : 30, < "searchRadius" : 10, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [30, 60] < }, < < "guard" : { < < "patrolDistance" : 5, < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 20, < < "attackSayingPercent" : 25, < < "dialog" : { < "attack" : { < "default" : [ "Intruder!" < ], < "apex" : { < "default" : [ < "Guards! We have an intruder!", < "Looks like we've got ourselves a new test subject!", < "Intruder!", < "Guards!", < "You'll make a fine specimen!", < "For science!", < "I hope you're not too attached to your brain!", < "Stay away!" < ] < } < } < } < }, < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 < }, < < "meleeAttack" : { < "runThreshold" : 0 < } < }, < 99,162d22 < }, < < "dropPools" : [ "labscientisttreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 75.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\merchant.npctype 2a3 > "baseType" : "base", 4c5,6 < "damageTeam" : 1, --- > "persistent" : true, > 7c9 < "disableWornArmor" : true, --- > "dropPools" : [ "basicMonsterTreasure" ], 15,263d16 < "personality" : "normal", < < "idleTimeRange" : [2.0, 10.0], < < "tenant" : { < "emoteCooldownTimeRange" : [1.0, 2.0], < "complaintCooldownTimeRange" : [5.0, 10.0], < "severeComplaintTime" : 25.0, < "finalComplaintTime" : 35.0, < < "dialog" : { < "grumbles" : { < "tagCriteria" : { < "default" : [ "Something in my place has changed, I don't like it!" ], < "human" : [ < "Has something been stolen from my store?", < "The arrangement of my store has changed, this isn't alright...", < "How can I sell stuff when my store is being changed?" < ], < "floran" : [ < "Have you taken ssstuff from my ssstore?", < "My store hasss changed, I'm not happy with that!", < "Can you help me get my ssstore looking like how it usssed to?" < ], < "glitch" : [ < "Confused. My store is different.", < "Discontent. I liked my store before it was changed.", < "Wishful. I wish my store was how it used to be." < ], < "avian" : [ < "The arrangement of my store is not the same...", < "Something is unsettlingly different in here.", < "Can you restore my store to its original arrangement for me?" < ], < "apex" : [ < "I would appreciate if you could restore my store's original decor.", < "Can you assist in the restoration of my store's original layout?", < "I liked how my store was laid out previously. Can you restore it please?" < ], < "hylotl" : [ < "Something is unbalanced in the flow of my store...", < "This is my store! Why would someone take things from it?", < "I wish my store was how it was before, it is no doubt turning away customers..." < ] < }, < "enclosedArea" : { < "default" : [ "My home could use some repairs!" ], < "human" : [ < "Can you fix the walls? It'll put off new customers like this.", < "No-one is going to shop here with these damages! Can you help?", < "My shop needs to be in top condition! Can you help fix it?" < ], < "floran" : [ < "There's damagesss to the walls here!", < "Could you fix my ssstore?", < "My store could use some fixesss!" < ], < "glitch" : [ < "Unhappy. The damage to my store is going to turn off customers.", < "Concerned. Broken walls might be turning away potential customers.", < "Needy. Can you fix my store before it gets worse?" < ], < "avian" : [ < "The damage to my store is causing much concern to me...", < "The damage to my store is causing much concern to me...", < "I would appreciate if you could repair the damages to my home.", < "Hmm, there appears to be a broken wall in my home. Can you fix it?" < ], < "apex" : [ < "Can you assist in the repairs of my store?", < "There are some damages to my store I wish to report.", < "The damaged structure of my store is no doubt turning away customers." < ], < "hylotl" : [ < "My store has been damaged. This is unpleasant.", < "Do you feel something strange with my store? It feels damaged...", < "I noticed a damaged wall here, perhaps you could assist with repairs?" < ] < }, < "otherDeed" : { < "default" : [ "I thought this place was for me!" ], < "human" : [ < "Wasn't this location for me? I can't share the store!", < "Are you trying to have someone move in to my store?!", < "Why did you place another deed here?!" < ], < "floran" : [ < "Sssomeone else can't move here!", < "Why isss someone else trying to move in?", < "I can't ssshare my store space with someone else!" < ], < "glitch" : [ < "Shocked. Are you trying to move another merchant into my store?", < "Confused. How come someone else is trying to move in?", < "Sad. I thought I had this shop exclusively for myself." < ], < "avian" : [ < "Why is someone else attempting to move into my store?", < "Did you put my shop up for rent? This must be a mistake...", < "There is another deed in my shop - Surely this isn't intentional." < ], < "apex" : [ < "Why is there another deed here? I am meant to have exclusive rights to this store!", < "Was this home not intended for me? Why is it up for rent again?", < "I thought this home was exclusively for me. How upsetting." < ], < "hylotl" : [ < "Is a rival merchant trying to move into my shop?", < "How can I remain calm when another deed is in my shop?", < "There is another deed in my shop? Surely a mistake has been made?" < ] < }, < "severe" : { < "default" : [ "I can't sell my wares in these conditions!" ], < "human" : [ < "I can't sell my wares in these conditions!", < "These are unacceptable conditions for me to work in...", < "It is too difficult to sell my products like this!" < ], < "floran" : [ < "I can't sssell like thisss!", < "These conditionsss aren't okay!", < "You still haven't fixed thingsss in my shop!" < ], < "glitch" : [ < "Annoyed. I wish to sell my wares, but it is difficult under these circumstances.", < "Frustrated. I wish my requests were listened to.", < "Unhappy. The fixes to my store haven't been made yet." < ], < "avian" : [ < "This has gone too far, I am greatly discontent with these conditions.", < "I don't wish to work in these conditions.", < "Why is my store in the state that it is in?!" < ], < "apex" : [ < "My cries for improvements have gone unanswered...", < "This shop is not how it was when I moved in...", < "The condition of my shop is disgraceful, and I feel I am being ignored!" < ], < "hylotl" : [ < "I try to remain calm but it is hard when my requests are left unanswered.", < "The state of this store is not something I feel is acceptable.", < "I cannot remain working in a shop with such imperfections..." < ] < }, < "final" : { < "default" : [ "I've had enough of this!" ], < "human" : [ < "I've had enough of this!", < "That's it, I give up. Time to take my business elsewhere!", < "I give up, I'm going to sell my wares in some other place!" < ], < "floran" : [ < "Thisss has gone on long enough!", < "I am going to sssell somewhere else!", < "Thisss is unprofessional, I'm going to sssell on another planet!" < ], < "glitch" : [ < "Overwhelmed. Time to find a better shop to sell my wares.", < "Outraged. I deserve a better shop to do business with.", < "Upset. With these conditions, it is time that I left to sell somewhere else." < ], < "avian" : [ < "A merchant like myself deserves better. Enough is enough.", < "It is time I found a better shop.", < "This store is not how it was when I moved in. It's time I left to find another." < ], < "apex" : [ < "I moved here for a better life, but I can't work like this anymore.", < "I deserve better working conditions than this!", < "It saddens me to leave, but my complaints are being ignored." < ], < "hylotl" : [ < "It is time I move on, this shop is not to my standards anymore.", < "I wished hard that this shop would be good enough, but it simply is not anymore.", < "Perhaps I shall find another shop that I can sell my beautiful products in." < ] < } < }, < "arrivedHome" : { < "beacon" : { < "default" : [ "I'm home!" ], < "human" : [ < "You called?", < "Is there something you need to buy?", < "Hi! Did you alert because you want to buy something?" < ], < "floran" : [ < "You needsss me to sell me sssomething?", < "Do you need me for sssomething?", < "Were you sssearching for me?" < ], < "glitch" : [ < "Quizzical. Did you need to buy something, or perhaps sell something?", < "Friendly. Did you want to chat or buy things from me?", < "Polite. Did you just come to say hello?" < ], < "avian" : [ < "Did you wish to do business?", < "Hello again, friend! May Kluex hold you in favour.", < "I am always glad to see a friendly face." < ], < "apex" : [ < "Did you alert me for business reasons? Perhaps you wished to buy something?", < "Do you have need of me?", < "Greetings. Do you have something you wanted to buy?" < ], < "hylotl" : [ < "What would you like to discuss?", < "Did you wish to trade with me, friend?", < "Did you need me for my wares?" < ] < }, < "rent" : { < "default" : [ "Here's a gift for all your help with my shop!" ], < "human" : [ < "I thought you might like this, friend!", < "Here's a gift for all your help with my shop!", < "Take this, for your continued patronage!" < ], < "floran" : [ < "Here isss a present for you!", < "Here'sss something I picked up for you!", < "Thanksss for your help with my ssstore!" < ], < "glitch" : [ < "Thankful. Here is a gift for your assistance with my business.", < "Grateful. I got you a gift for helping me with my store.", < "Hopeful. I hope you like the gift I picked up for you whilst trading!" < ], < "avian" : [ < "Here is a token of my gratitude for your help.", < "I have brought you a gift.", < "I hope this offering brings you happiness." < ], < "apex" : [ < "Please accept this gift, for all your assistance.", < "I have a gift for you for all your help with my business.", < "For all you have done for my business, take this." < ], < "hylotl" : [ < "My shop is as peaceful as I could hope for. Here is a gift for all you have done.", < "Accept this as a token of my thanks for your assistance.", < "I hope this humble gift conveys my appreciation for your help." < ] < } < } < } < }, 266,389d18 < "waitTime" : 40, < "storeRadius" : 8, < < "dialog" : { < "start" : { < "default" : [ < "Welcome to my shop!", < "See anything you like?", < "What can I help you with?" < ], < < "apex" : { < "default" : [ < "What can I sell you? Don't take too long.", < "My store accepts pixels and BigCoins.", < "By my beard, a customer!", < "Please don't sell me anything that will get me arrested." < ] < }, < < "avian" : { < "default" : [ < "Welcome, traveller. What can I sell you?", < "You wouldn't happen to have a pair of wings on you, would you?", < "Hey there. See anything you like?" < ] < }, < < "floran" : { < "default" : [ < "Floran welcomesss you to store. Hopes you buy thingsss.", < "You breaksss it, you buysss it.", < "Floran wantsss pixelsss." < ] < }, < < "glitch" : { < "default" : [ < "Friendly. Welcome to my store.", < "Welcoming. You know you want to buy everything!", < "Reminder. Destroying merchandise is discouraged." < ] < }, < < "hylotl" : { < "default" : [ < "Welcome. I hope the goods I sell bring you happiness.", < "May my wares help you find true enlightenment!", < "Perhaps you'll find something you're looking for?" < ] < } < }, < < "end" : { < "default" : [ < "See ya next time!", < "Come again.", < "Your pixels are always good here.", < "Pleasure doing business with you!", < "Thanks for visiting my store.", < "Great to see you!", < "Let's do business again." < ], < < "human" : { < "default" : [ < "See you next time!", < "Come again.", < "Your pixels are always good here.", < "Pleasure doing business with you!", < "Thanks for visiting my store.", < "Great to see you!", < "Let's do business again." < ] < }, < < "avian" : { < "default" : [ < "Fly by again soon!", < "Many thanks for your patronage.", < "Kluex guide you!", < "I'm looking forward to seeing you again." < ] < }, < < "glitch" : { < "default" : [ < "Content. Please come again.", < "Pleased. Thank you for your patronage.", < "Disappointed. You're not going to buy more?", < "Melancholy. Until next time, customer." < ] < }, < < "hylotl" : { < "default" : [ < "I hope our transactions bring you satisfaction.", < "I hope you found what you were searching for.", < "May your path ahead be clear to you, friend!", < "Say strong in heart and in spirit, friend." < ] < }, < < "apex" : { < "default" : [ < "Say safe, ally.", < "Keep your head low, and your sight focused.", < "Stay free, my friend.", < "Come back when you need to." < ] < }, < < "floran" : { < "default" : [ < "Floran want customer to ssspend more!", < "Floran sssay goodbye to moneybags.", < "Floran like buy sssell.", < "Floran pleased with transssaction." < ] < } < } < }, < < 405,595c34,46 < < "returnToStore" : { < "waitTime" : 10, < "waitTargetDistance" : 10, < < "dialog" : { < "follow" : { < "default" : [ < "Come with me, we can do business at my store!", < "Come in, come in and see what I've got!" < ], < "glitch" : [ < "Instructional. Please follow me to my store.", < "Welcoming. Please allow me to lead you to my store." < ], < "avian" : [ < "Allow me to lead you to my shop.", < "We can do business at my store. Please follow me." < ], < "apex" : [ < "I keep my wares at my store, please follow me.", < "My supplies are kept at my store." < ], < "hylotl" : [ < "Allow me to lead you to my store.", < "Would you like me to lead you to my shop?" < ], < "floran" : [ < "Pleassse come with me.", < "My ssstore is thisss way." < ] < }, < < "welcome" : { < "default" : [ < "Welcome to my store!", < "Here we are. Now, how can I help you?" < ], < "human" : [ < "Welcome to my store! Now, would you like to see my merchandise?", < "Here we are. Now, how can I help you?" < ], < "glitch" : [ < "Excited. Now we can do business.", < "Pleased. I prefer to sell my wares at my store." < ], < "avian" : [ < "Now we can trade to our heart's content!", < "Now I can show you my wares!" < ], < "apex" : [ < "Now we are in private, we can talk business.", < "Now there is no-one to spy on us, we can trade wares." < ], < "hylotl" : [ < "Now we are here, would you like to begin trading?", < "Now we are in a calmer environment, would you like to trade?" < ], < "floran" : [ < "Now you can ssspend.", < "Now do you want to ssspend pixels?" < ] < }, < < "tout" : { < "default" : [ < "Get all your goods here!", < "Everything you need, right here.", < "Hey you, come check out my goods!", < "Best deals around!", < "You won't find these goods anywhere else!", < "Cheap buys!" < ], < "apex" : { < "default" : [ < "What can I sell you? Be quick about it.", < "My store accepts pixels and BigCoins.", < "By my beard, a customer!", < "Please don't sell me anything that will get me arrested." < ] < }, < < "avian" : { < "default" : [ < "Welcome, traveller. What can I sell you?", < "Buy or sell!", < "Hey there. See anything you like?" < ] < }, < < "floran" : { < "default" : [ < "Floran welcomesss you to store. Hopes you buy thingsss.", < "You breaksss it, you buysss it.", < "Floran wantsss pixelsss." < ] < }, < < "glitch" : { < "default" : [ < "Friendly. Welcome to my store.", < "Cozening. You know you want to buy everything!", < "Reminder. Destroying merchandise is discouraged." < ] < }, < < "hylotl" : { < "default" : [ < "Welcome, stranger! Marvel at my wares, I hope they'll bring you happiness.", < "My goods are amazing. I'd give you some for free, but I like money.", < "The design of my goods surpasses that of any other race!", < "Look at my merchandise. It's mind-blowing, I know.", < "You can have any of this for just a few small payments of pixels!" < ] < } < } < } < }, < < "flee" : { < "reactionTimeRange" : [0.2, 1.0], < "safeDistance" : 100, < "safeDistanceWithGuards" : 40, < "safeTimer" : 10, < "stuckTime" : 4, < "stuckCooldown" : 10, < "dialogTimeRange" : [4, 10], < < "dialog" : { < "helpme" : { < "default" : [ < "Time to flee!", < "Help! I'm being attacked!", < "I'm under attack!" < ], < "floran" : [ < "Time to ssscram!", < "Floran not have ssspear to fight back!" < ], < "glitch" : [ < "Fear. Help me!", < "Intimidated. Please don't hurt me!", < "Afraid. Get away from me!", < "Terrified. Save me!", < "Shocked. No! Get away from me!" < ] < }, < "helpthem" : { < "default" : [ < "Help!" < ], < "glitch" : [ < "Fear. Guards!", < "Intimidated. Please don't hurt me!", < "Afraid. Leave me be!", < "Terrified. Save me!", < "Shocked. What have you done?!" < ] < }, < "encourage" : { < "default" : [ < "Get 'em!", < "Avenge me!", < "Stick 'em once for me!", < "Don't let 'em get away!" < ], < "glitch" : [ < "Encourage. Put them to the sword!", < "Excitement. Save us!", < "Aggressive. Strike them down!", < "Vengeful. Don't let 'em get away!" < ] < }, < "safe" : { < "default" : [ < "I think I got away.", < "Phew!", < "A close call!", < "That was close..." < ], < "floran" : [ < "Now I can sssell more ssstuff.", < "Now I'm sssafe." < ], < "glitch" : [ < "Relieved. Phew, I think I got away.", < "Thankful. I've escaped with my life!", < "Hopeful. Am I safe?", < "Embarrassed. I think I leaked a little oil." < ] < } --- > "dialog" : { > "merchant" : { > "start" : "/dialog/merchant.config:merchantStart", > "end" : "/dialog/merchang.config:merchantEnd", > "follow" : "/dialog/merchant.config:follow", > "welcome" : "/dialog/merchant.config:welcome", > "tout" : "/dialog/merchant.config:tout" > }, > "flee" : { > "helpme" : "/dialog/merchant.config:helpme", > "helpthem" : "/dialog/merchant.config:helpthem", > "encourage" : "/dialog/merchant.config:encourage", > "safe" : "/dialog/merchant.config:safe" 597,652d47 < }, < < "sit" : { < "timeOfDayRanges" : [ [0.6, 1.0], [0.0, 0.2] ], < "moveTimeLimit" : 30, < "searchRadius" : 25, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [ 15, 240 ] < }, < < "sleep" : { < "searchRadius" : 15, < "lieDownRadius" : 3, < "moveToBedTimeLimit" : 10.0, < "timeOfDayRanges" : [ [ [ 0.7, 0.75 ], [ 0.95, 1.0 ] ] ], < "cooldown" : 30 < }, < < "wander" : { < "timeRange" : [1.0, 3.0], < "chatDistance" : 4, < "indoorTimeOfDayRanges" : [ [0.0, 0.2], [0.5, 1.0] ], < "indoorSearchRadius" : 60, < "indoorLookaheadDistance" : 4, < "moveToTargetTime" : 10.0, < "changeDirectionCooldown" : 2, < "dropDownChance" : 5, < "cooldown" : 10, < "maxDistanceFromSpawnPoint" : 3 < }, < < "chat" : { < "distanceRange" : [ 2.0, 4.0 ], < "conversations" : [ < [ < [ 2, "blabbering", "idle" ], < [ 1, "idle", "laugh" ], < [ 2, "idle", "blabbering" ], < [ 1, "sad", "idle" ] < ], < [ < [ 2, "idle", "blabbering" ], < [ 2, "blabbering", "happy" ], < [ 1, "wink", "laugh" ], < [ 2, "happy", "happy" ] < ], < [ < [ 2, "idle", "blabbering" ], < [ 2, "blabbering", "blabbering" ], < [ 2, "blabbering", "annoyed" ], < [ 3, "shouting", "shouting" ], < [ 2, "annoyed", "annoyed" ] < ] < ], < "cooldown" : 10 841,931d235 < }, < < "dropPools" : [ "basicMonsterTreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\nakedvillager.npctype 3,7c3 < < "damageTeam" : 1, < "levelVariance" : [-1, -1], < < "disableWornArmor" : true, --- > "baseType" : "base", 9,16c5,6 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", --- > "levelVariance" : [-1, -1], > "persistent" : true, 18,27d7 < "/npcs/chatState.lua", < "/npcs/converseState.lua", < "/npcs/fleeState.lua", < "/npcs/sitState.lua", < "/npcs/sleepState.lua", < "/npcs/standingIdleState.lua", < "/npcs/wanderState.lua", < "/npcs/workState.lua" < ], < "initialScriptDelta" : 5, 29,46c9 < "doorHitPoly" : [ [2, -1], [2, 1], [0, 1], [0, -1] ], < "idleTimeRange" : [2.0, 10.0], < "gapSensor" : [ [2.0, -4.5] ], < "gapFarSideSensors" : [ [3.0, -4.5], [4.0, -4.5], [5.0, -4.5], [6.0, -4.5], [7.0, -4.5], [8.0, -4.5] ], < "gapJumpHoldTime" : 0.4, < //testing only < "trading" : { < "config" : "/interface/windowconfig/shop.config", < "filter" : [ ], < "titleFromEntity" : true, < "requiresBlueprint" : false, < "recipes" : [ < { < "input" : [ { "name" : "money", "count" : 10 } ], < "output" : { "name" : "fullwood1" } < } < ] < }, --- > "behavior" : "/behaviors/npc/villager.behavior", 48,1630c11,22 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ "I have nothing to say to you" ], < "apex" : { < "default" : [ < "You don't LOOK like Miniknog..." < ], < "human" : [ < "Ah, lovely to see humans in our midst.", < "You must get cold without much body hair.", < "Welcome to our village, human. We are absolutely not oppressed.", < "It is comforting to know that another species out there looks like us.", < "You look like an Apex... but you don't smell like one.", < "Do you humans enjoy bananas as much as we Apex?", < "Word of warning, human. Do not cross the Miniknog.", < "Don't get too close, human. I currently have fleas.", < "Please don't cause trouble, human. We keep things peaceful here.", < "Welcome to our village, little person.", < "Despite our visual similarities, we are not trying to ape your species.", < "If you see a Miniknog soldier, keep your eyes downwards and your hands still.", < "I am sure our glorious leader would extend his generosity to humanity, if asked.", < "We are sorry to hear of your planet's plight, human.", < "The Miniknog have eyes everywhere, human. Be warned.", < "How about a friendly arm wrestle, human?", < "Settle a bet for me, human. Who would win in a fight between a Floran and a Hylotl?", < "Do you think our two species could ever find love together, human?", < "A human from beyond the stars. How exciting!", < "Tell me human, have you ever adventured with a Hylotl? Are they as uptight as people say?", < "You'll bow to Big Ape if you know what's good for you.", < "I used to be an adventurer like you, but then Big Ape experimented on my family.", < "The Miniknog aren't so bad. They rarely even beat us these days.", < "If you think I'm attractive, human, wait till you see Big Ape!", < "I would join you for a drink tonight human, but I'm washing my hair.", < "Could you lend me some pixels? I can almost afford to escape this place.", < "The Resistance are around us, human. One day they'll rise.", < "I'm not sure if I'm allowed to talk to other species.", < "If you ever meet Big Ape, put in a good word for me, okay?", < "You are smooth and unusual, human.", < "Have you heard about those strange burning men, human?", < "Human, we will tolerate no nonsense here, this is Big Ape's domain.", < "Big Ape is watching. He's behind you. Just kidding.", < "You smell like wet Apex.", < "What is it like amongst the stars, human? I dream of escape.", < "I've always wondered what it would be like to kiss a human...", < "Apex give the best hugs.", < "Big Ape, Big Ape, there is no escape, you'll get crushed like a grape, Big Ape!", < "I'm so hungry I could eat, well, you.", < "Have you heard the one about Big Ape and the Beanstalk? It's a classic." < ], < "apex" : [ < "You take a risk coming back here, pariah.", < "I'm taking a risk talking to you.", < "You never should have come here.", < "You're going to get us BOTH killed.", < "I cannot be seen talking to you.", < "A bold move coming here, outsider.", < "It is great to see you, my liberated friend.", < "Have you taken leave of your senses? What if the Miniknog catch you?", < "Perhaps we can catch up over some bananas later.", < "So you travel the stars, huh? Enviable.", < "Tell me, friend, are there bananas in space?", < "The Miniknog are only getting worse, you know.", < "Big Ape will be delighted to learn of your visit.", < "Perhaps you'd consider taking me with you?", < "You escaped the Miniknog? Big Ape will remember that.", < "If you need to borrow a comb, just ask.", < "Do other species have the equivalent of Big Ape? Big Fish, Big Human?", < "Rumour has it that Big Ape will crush the Resistance any day now.", < "Your freedom fills me with envy, friend.", < "You worked hard to cast off the shackles of oppression. Be sure not to walk back into them.", < "Save us, brave Resistance fighter. Save us all!", < "If you feel like taking down a few Miniknog, I won't stop you.", < "As you can see, our living conditions have not improved.", < "You've let your grooming slip, it seems.", < "Next time you drop by, please smuggle in some bananas.", < "I'm sick of the Miniknog. Sick, I tell you!", < "How do I know you're not a Miniknog spy?", < "You are bold and brave, friend.", < "To defy Big Ape is to defy who you are.", < "Tell me of the sights you've seen, friend.", < "Begone. We'll have no trouble here!", < "If the Miniknog come looking for you, I'm not sure I'll be able to cover for you.", < "Have you visited the Avians? I hear they're very devout.", < "Tell me about the Florans. You must have met some out there.", < "What have you learned of the humans, friend?", < "I am curious to hear what you've learned of the Glitch.", < "I doubt you have anything interesting to say about the Hylotl, right?", < "What's it like, floating in space, free of Big Ape's gaze?", < "Big Ape could be watching us right now. Keep your distance.", < "I'm a Miniknog guard and you're under arrest. Just kidding. Boy, the look on your face!" < ], < "avian" : [ < "Greetings, Avian.", < "Your plumage is simply divine, Avian.", < "Do you suppose that Kluex and Big Ape have ever met?", < "We are sorry to hear of the loss of your wings, Avian.", < "Our species are similar in many ways.", < "Join me for some bananas?", < "I'm in a hurry, I've gotta fly. Oops, sorry, that was insensitive.", < "Did the Stargazers allow you to leave your flock, Avian?", < "Big Ape is fond of Avians, I hear. You'll be safe in this village.", < "Those Miniknog guards... don't get on the wrong side of them.", < "If you ever meet Big Ape, tell him I said hello.", < "Avian, could I possibly have a feather? As a souvenir?", < "One day perhaps our species will live together, Avian.", < "I feel a kinship with you, my feathered friend.", < "If you have the time, could you tell me of your power crystals?", < "I have been thinking of converting to Kluex Worship. Is this feasible for an Apex?", < "I hear that Kluex challenged Big Ape to a cage match. Is there any truth to this?", < "Did you know that some Glitch have become self-aware these days?", < "What about those humans, eh? Still, best not to gossip.", < "We had a Hylotl here recently. Awkward.", < "Do you have any food? I'm so hungry. A banana, perhaps?", < "My family has been kidnapped by the Miniknog. If you see them, tell them I said hello.", < "Could you lend me a rocket launcher? I appear to have lost mine.", < "Big Ape is my brother from another mother.", < "You just missed the most glorious Miniknog parade stroke public execution.", < "Is it true that you can't fly any more? Have you tried flapping your wings?", < "Are feathers harder to keep clean than hair?", < "Is this your first time in an Apex village, Avian?", < "The Miniknog are always watching us. It's a bit intrusive.", < "If I could spend a day with feathers, I would.", < "I used to dream about being able to fly, when I was a child.", < "Do you think perhaps Kluex would consider saving us from the Miniknog?", < "Profess your loyalty to Big Ape, Avian. Just to be on the safe side.", < "Let us make a toast to Big Ape and Kluex, Avian friend.", < "Could I perhaps see your starship? Just a look is all I ask.", < "Good day to you, Avian friend!", < "It's my birthday today. The Miniknog gave me two crusts of stale bread to celebrate.", < "What does an Avian look like without feathers? Asking for a Miniknog.", < "Seeing you has cheered me up on a gloomy day, Avian.", < "I had some seeds, but I lost them.", < "Are you familiar with Thornwing, Avian?", < "Your feathers remind me of a quilt I had as a child." < ], < "floran" : [ < "A Floran. Oh.", < "I didn't know your kind had discovered space travel.", < "For a moment there, I thought you were a bush.", < "I've heard tales of your kind, Floran.", < "I hope you aren't here to hunt.", < "Are you familiar with Big Ape, Floran?", < "Sorry if this is rude, but can you speak?", < "Your kind can be quite scary. Do not be offended if some Apex are wary of you.", < "The Miniknog are eyeing you with suspicion, Floran.", < "A Floran in our midst. This won't end well.", < "I bought a potion from Greenfinger once. It was a dud.", < "Could you teach me to hunt, Floran? I have a certain big, ape-like beast I'd like to take down.", < "You smell like freshly-cut grass.", < "It is great to see your species finally integrating.", < "You don't seem to have killed anyone yet! We're all very proud of you!", < "Miniknog scientists have been known to pit Floran against Apex. We don't hold a grudge.", < "I would love to get to know you better, Floran.", < "If it looks like I'm shaking in fear, I'm not, I'm just cold okay!", < "You really are a remarkable specimen.", < "Glory to Big Ape, Floran! Say it with me!", < "Look behind you! A Hylotl!", < "Your presence here is both inspiring and troubling.", < "Are you lost, Floran?", < "Have you heard the joke about the Floran and the penguin? No?", < "Please don't kill me!", < "Floran Peace is one of my favourite novels of all time!", < "As an amateur botanist, it's a pleasure to meet you.", < "You don't look so scary up close.", < "Are you smiling or snarling?", < "I... I have a bit of a thing for Florans. Oh no, I'm blushing.", < "Perhaps you would give a presentation to us Apex?", < "Tell me, Floran, what's your bodycount?", < "You're far more civilised than Big Ape said you'd be.", < "Make yourself at home, Floran.", < "We would make an amazing crime-fighting duo.", < "Thank you for behaving respectably, Floran.", < "Ooh, a Floran. I'm all a-quiver.", < "What a terrifyingly adorable thing you are.", < "Teach me the art of stabbing, Floran!", < "If you feel like causing trouble, those Miniknog guards over there are particularly aggressive.", < "Perhaps you would engage me in a test of strength, Floran.", < "I don't care what people say, you seem nice to me.", < "Never judge a book by its cover, that's what I say.", < "A living plant! Wait, are all plants living?" < ], < "glitch" : [ < "Hello there, Glitch.", < "You're one smooth robot.", < "Big Ape could be using Glitch to spy on us. Are you a spy?", < "Tell me, what signifies a Glitch outcast?", < "I've always wanted a Glitch sidekick.", < "Hey there robot buddy.", < "You can touch my hair if you'd like.", < "Have you ever heard of Hewlett Deckard?", < "Did it hurt when you were severed from the hivemind?", < "Great to see you, little robot.", < "I've always been fascinated by your kind.", < "Big Ape claims to have an army of weaponised Glitch. Is this true?", < "Try not to fall afoul of the Miniknog, robot.", < "Are you equipped with long-range audio recording software? Just wondering.", < "Do Glitch dream of electric Florans?", < "Are you entirely made of metal?", < "I hear you Glitch are envious of our hair.", < "I'll sell you a hair cutting for just ten pixels.", < "I've always wanted to hear a Glitch sing.", < "Why do you say those words at the beginnings of sentences?", < "Jovial. Hello! Uh, I hope that wasn't offensive.", < "When I was in school, my friend claimed his dad had punched a Glitch's head clean off.", < "Avoid the Miniknog, Glitch. They don't trust your kind.", < "Glory to Big Ape! You robots should think about following him.", < "We're here, we're there, the Glitch envy our hair, go Apex!", < "The Outcast leader is called Platinum Ace, correct? So cool!", < "I met a hivemind Glitch once. Creeped me out. You seem nicer.", < "Any tips on dealing with the Florans? Your two species seem pretty tight.", < "Do Glitch feel pain?", < "How do you people eat?", < "What do you think of bananas, Glitch?", < "We should run away and join the circus together.", < "Do you think love can bloom even on a battlefield?", < "The Miniknog have made me promise to stop teaching Glitch how to twerk.", < "Part of me can't shake the feeling that you're Big Ape in disguise.", < "I got a great price on a bunch of bananas the other day! Then the Miniknog confiscated them.", < "Let's tear down the barriers between our species.", < "It is a joy to meet you, robot pal.", < "Can I stow away on your ship?", < "One day I'm gonna become sheriff of this town!" < ], < "hylotl" : [ < "Hello there, Hylotl.", < "Please try not to judge our little village too harshly.", < "I suppose you are here to spread peace.", < "I'm sure the Miniknog would love to hear a patented Hylotl lecture.", < "Be warned, Hylotl. The Miniknog do not like being talked down to.", < "Have you come to liberate us, Hylotl?", < "Just thought you should know, there have been a number of Florans in the area recently.", < "Would you like to join my band?", < "Glory to Big Ape! Make peace with that!", < "You seem pleasant enough.", < "Please, tell me some more about the delightful Hylotl architecture.", < "Nice fins, little buddy.", < "Will you take me swimming?", < "You guys are pacifists, right?", < "A meat-eating Hylotl? Unusual.", < "Spread your peace, Hylotl. You'll have no trouble here.", < "I think that Miniknog guard is a Floran in disguise.", < "Do you have your own Big Ape? Large Fish, perhaps?", < "Feel free to sample some Apex delicacies. They're in the Miniknog mansion.", < "Did you know the Miniknog perform strange, sinister experiments on our people?", < "Looks like there's a risk of rain. I'm sure that won't bother you.", < "What's it like, under the ocean?", < "You and the Florans should put aside your differences.", < "Don't ever try to ride a cattlesnake, trust me.", < "Is it lonely up in space?", < "Is it true that Hylotl can talk to fish?", < "Why did the Hylotl blush? Wait, no, that's not appropriate.", < "Draw me like one of your Floran girls.", < "Have you ever found sunken treasure?", < "Lend me a Pixel, will you?", < "We use BigCoins here, but Pixels work too.", < "If you ever meet Big Ape, tell him I said hello.", < "I'm sorry if our species appears uncultured to you.", < "I can see you judging me internally.", < "I hear your species are master crafters.", < "Save us from the Miniknog, fish!", < "Big Ape, little fish, cardboard box.", < "Take me with you, Hylotl. Please.", < "Welcome to our humble abode, fish.", < "I'm sorry, I'm too stressed to talk." < ] < }, < "hylotl" : { < "default" : [ < "I'm not sure I want to know what you are." < ], < "human" : [ < "Oh, hello smoothskin.", < "Oh look, a human.", < "Sorry, did you say something?", < "Drink in our marvellous architecture!", < "I suppose we'd better accommodate you.", < "You won't find meat to eat here, human.", < "Prepare to be exposed to true culture.", < "What a quaint starship you have.", < "Life's always better, down where it's wetter.", < "Hi, human.", < "Nice outfit. Yes, I'm being serious.", < "Sorry to hear your planet was destroyed and everyone died, human.", < "If you're lucky, one day you'll evolve.", < "You look somewhat like a pig.", < "Bow in the presence of greatness, human.", < "Peace be with you.", < "Be at peace, human.", < "I'll fight anyone who rejects pacifism.", < "Watch out for the Floran, human. They are scum.", < "Some people say us Hylotl are uptight. That's not true, right?", < "Have you ever seen such wonderful architecture?", < "I have a lot of thoughts on intergalactic politics.", < "Lovers of lily pads, look no further.", < "I am the god of the ocean! I got my hundred metres swimming badge!", < "Have you ever encountered our prodigal child Hiraki Corale?", < "Your kind is rather ugly.", < "Human, please explain to me what a 'goldfish bowl' is.", < "Delighted to make your acquaintance.", < "Please stop running around acting the fool.", < "You are smooth and unusual, human.", < "Do you want to know a secret? Well I can't tell you, it's a secret.", < "Let's go skinny dipping!", < "Is it true that humans often marry Apex?", < "I'll admit, you're a rather impressive specimen.", < "I'm secretly a bounty hunter!", < "Sing me a song, human. Now!", < "Let us take tea on the veranda.", < "When the season changes, I will retire to my country house.", < "Please teach me the rules of croquet.", < "Nice face, buddy." < ], < "apex" : [ < "Don't get too close, ape. You stink.", < "I admire your refusal to bathe, Apex.", < "You appear to have fleas.", < "The School tells us to be kind to the less fortunate.", < "Would you like a cup of herbal tea, monkey?", < "I imagine our architecture has left you speechless.", < "Learn what it is to be a true crafter!", < "I could take down any Big Ape.", < "You smell of bananas.", < "I am amazed an Apex can work a starship.", < "The stars are wasted on you, uncultured ape.", < "The Miniknog... I can see where they're coming from.", < "I am sorry you are oppressed and pathetic.", < "I'm sure Big Ape means well.", < "Let me explain what it's like to know peace.", < "Brush your hair if you're going to stay here.", < "That thing over there is called a bed. You sleep in it.", < "Would you like to play a clapping game?", < "I can't understand why other species don't like us.", < "Let's run away together and become hermits!", < "Have you tried just standing up to the Miniknog?", < "The Hylotl would never let themselves get oppressed.", < "I'd be willing to hire you as a bodyguard.", < "You should sample some fine Hylotl delicacies.", < "Our kind don't get fleas.", < "Let us meditate together.", < "I've been training as a necromancer.", < "One day I'll fly through space like you.", < "If you encounter any Hylotl peace missionaries, try to be nice.", < "What a fearsome visage you have, monkey.", < "The Florans are a blight on our galaxy!", < "If you're thinking of licking me; don't.", < "The Avians make me laugh. Do they make you laugh, Apex?", < "Your fur makes me sneeze.", < "Maybe one day, when you become more cultured, we could be good friends.", < "Let me know if you'd like any tips on how to behave in high society.", < "We Hylotl are a proud species, but you may not have noticed.", < "It is important to remain humble, I find.", < "Perhaps if you reached out to the Hylotl for help, Big Ape would not be a problem.", < "What's wrong with your face, exactly?" < ], < "avian" : [ < "Greetings, Avian.", < "I suppose you'll do.", < "Ah yes, your kind still worships gods.", < "Your Kluex sounds like such a boorish fellow.", < "We are still waiting for your species to apologise for Thornwing.", < "I don't suppose Avians are very adept at swimming.", < "I need some of your feathers. Don't ask why.", < "Your rudimentary power crystals are ever so fascinating.", < "I can teach you how to build furniture, for a hefty price.", < "Nice beak, little bird.", < "I'm actually an Avian, I've just been plucked.", < "Those Apex... what a poor, uncultured species.", < "Our kind has a begrudging respect for yours, Avian.", < "Are you a big reader? No, I thought not.", < "Enjoy our village, Avian.", < "Leave your religious indoctrination at the door, bird.", < "Have you ever seen moonlight ripple off a cerulean lake?", < "Show me how you fly, Avian. Oh wait, sorry, I forgot.", < "Hylotl have a reputation for being unwelcoming to outsiders. I don't see it myself.", < "I wish you people made more of an effort to accommodate us.", < "Try some Hylotl delicacies while you're here.", < "Be careful not to break anything.", < "One day I will have my revenge!", < "I used to study Avian temples, but then I got bored.", < "Tell me about the stars, Avian.", < "One day I'll fly away.", < "Know that we pity you, bird.", < "Perhaps one day the Hylotl will visit your kind.", < "Do you moult?", < "Avian beaks are funny things.", < "What kind of greeting did you expect?", < "Nice to see you, I suppose.", < "Greetings, bird.", < "Settle yourself down, feathered one.", < "Let us gaze at the sky for a while.", < "You look like you've been dragged through a bush backwards.", < "Do I fill you with awe, bird?", < "Where are you on the pecking order?", < "Check out our wonderful surroundings.", < "Our meals may be too exquisite for your tastes.", < "Gosh. An Avian.", < "Don't preen your feathers at me!" < ], < "floran" : [ < "Ghurk!", < "Back off.", < "Keep away, foul plant monster.", < "I have nothing to say to you, scum.", < "Hey! A Floran! Go away!", < "It's better we don't speak, Floran.", < "You're not welcome here, beast.", < "You may seem civilised but I'm not falling for it.", < "Please leave me alone.", < "The guards will make salad out of you, pest.", < "A Floran. As if this day couldn't get any worse.", < "Despicable creature.", < "Why are you here, filthy thing?", < "Go away, you stink of compost.", < "If you hurt me, you'll pay!", < "Martha, take the kids to your sisters. There's a Floran here.", < "Perhaps you and I can put aside our differences.", < "You truly are repulsive, Floran.", < "Look everyone, a Floran wandered in from the swamps!", < "I've got my eye on you, beast.", < "I'm outraged at you being here.", < "Wait, your kind can pilot starships? Laughable.", < "Leave before we make you leave.", < "You have some nerve, coming here.", < "Florans killed my family. Get out.", < "Wonderful. I'm being harassed by a tree.", < "Gulp.", < "I'm shaking? I'm not afraid, just cold.", < "What a grotesque monster you are.", < "We Hylotl believe in tolerance... except when it comes to Florans.", < "Go back to your cocoon-kin, Floran.", < "Ever wondered what it'd feel like to get beat down by a Hylotl?", < "Just being near you is harrowing.", < "I feel utterly sick.", < "I could take you in a fight, I know it.", < "Someone call pest control!", < "Oh great, the plants are talking again.", < "Leave me alone, scum.", < "You terrify me, creature.", < "I'm surprised your kind can even communicate.", < "My nightmares have come to life.", < "I dreamed of the day I'd meet a Floran.", < "Know that I could set you on fire if I wished, creature.", < "What a repugnant specimen." < ], < "glitch" : [ < "Oh, a robot.", < "Oh look, it's a Floran sympathiser.", < "Our kinds do not get on, Glitch.", < "You're an outcast, right? I suppose I can tolerate that.", < "I met Deckard once. Weird fellow.", < "You bore me, robot.", < "I suppose you're pleased with yourself, robot.", < "A shiny metal person. Adorable.", < "Have you people advanced at all in recent years?", < "Your vacant stare unsettles me.", < "A starship pilot? That's nice I guess.", < "A Glitch adventurer. Now I've seen everything.", < "When the Glitch arrive, the Florans are never far behind.", < "Begone, fool. I cannot deal with such trifles today.", < "Peace be with you, clanker.", < "Allow me to direct you to the exit.", < "You must be lost, Glitch. The dangerous wastelands are that way.", < "Thanks for dropping by.", < "Hello Glitch.", < "I suppose you'll be wanting some help?", < "What a wonderful treat. A Glitch.", < "Let's never speak of this meeting again.", < "Do you want me to take you swimming, robot?", < "Explain your presence here, Glitch.", < "Platinum Ace is a fool.", < "I've heard dark tales of the Glitch origins.", < "I challenge you to a game of Lily-Flipper.", < "It's nice to meet you, I suppose.", < "Nice little robot.", < "If I wasn't so peace-loving, I'd beat you with a broom.", < "Don't you have some savages to defend?", < "I've never trusted your kind, Glitch.", < "You're nicer than I expected.", < "Let's have a party! Or not.", < "Feel free to leave at any time.", < "Our kind will never see eye to eye.", < "Stop looking at our furniture with envy, Glitch.", < "Your clanking is giving me a headache.", < "Joyous day! A robot friend!", < "Please calm down, Glitch." < ], < "hylotl" : [ < "Ahh, finally someone who will appreciate me.", < "Blessed be, friend.", < "May you always find peace.", < "It must be good to be back amongst cultured people.", < "Wonderful, let us celebrate your arrival!", < "A starship captain! I am so jealous.", < "Gosh, aren't you a stylish one?", < "Ooh, aren't you a dear?", < "Delightful to meet you, my dear friend.", < "I trust our village is up to standard?", < "Come, tell me of all the uncultured species you've met.", < "You are an inspiration to us all.", < "A peace missionary, here! I'm awestruck.", < "I saw a Floran the other day. Horrible creatures.", < "You are doing glorious work, friend.", < "So delightful to have you here.", < "If you need anything, just ask!", < "I think I have a small crush on you.", < "Did you hear, the Apex rebellion has been crushed!", < "Are Florans really as bad as they say?", < "I don't envy you, having to rub shoulders with other species.", < "I wonder if other species will ever start to accept us.", < "You warm my heart, peace missionary.", < "So wonderful to meet you!", < "How is space treating you, dear?", < "Your starship is truly wonderful, I hear.", < "I'm afraid I have no tribute for you. Please accept my apologies.", < "If you ever feel like settling down and starting a family, let me know.", < "You can relax around me. I know about the directive.", < "Peace and love!", < "If only the Florans would give peace a chance.", < "We should become best friends.", < "Hi there! I've been a big fan of yours ever since you arrived!", < "You peace missionaries are just wonderful.", < "Go forth and spread peace, my child.", < "You're welcome in my ocean any time.", < "I hear Hiraki is up to her old mischief again.", < "If you ever need another crew member, I'm your Hylotl.", < "So nice to meet you!", < "Let's have a jam session one day." < ] < }, < "avian" : { < "default" : [ < "Have a blessed day, stranger." < ], < "human" : [ < "Greetings, human.", < "I bemoan your lack of feathers.", < "Kluex? You won't find him around here.", < "Not all Avians are devout, human.", < "Take me with you to the stars!", < "Come fly with me... if I still had wings.", < "Sorry about your homeworld, human.", < "You have such smooth skin.", < "We should write a novel together!", < "I used to want to become an Ascendant. What a fool I was.", < "Have you got the time, human?", < "If you ask nicely I'll show you my power crystals.", < "I hear your species worships many gods, human.", < "I saw a shaved Apex once. He looked like you.", < "Welcome to our village, human.", < "I would hug you, but Avian hugs tickle.", < "Settle a bet for me, human. Who would win in a fight between a Glitch and a Floran?", < "Do you think our two species could ever find love together, human?", < "A human from beyond the stars. How exciting!", < "Some of my best friends are humans.", < "I don't even believe in Kluex!", < "Defy all gods!", < "One day I'll fly away.", < "What's space like? Is it nice?", < "I would join you for a drink tonight human, but I'm washing my feathers.", < "Do you think Kluex is watching me now, human?", < "We'd make a great team, human.", < "Have you ever eaten an oculemon? Gross.", < "Perhaps we should adopt a Hylotl.", < "Let's dance!", < "Would you like to watch the game with me? What game? I don't know.", < "Do any humans have wings?", < "What if you were Kluex?", < "I'm secretly a Glitch in disguise.", < "Have you seen those penguins? Sick.", < "I met Thornwing before he was famous.", < "Welcome, human. Make yourself at home!", < "It's always nice to see a human.", < "Nice outfit!", < "Let's run off together." < ], < "apex" : [ < "Greetings, ape.", < "Kluex could take Big Ape in a fight. Not that I believe in Kluex.", < "Let's start a rock band; Fur and Feathers.", < "How many bananas can you eat in one go?", < "We're top of the pecking order!", < "I'll protect you from the Miniknog, Apex.", < "Nice to see you, my furry friend.", < "Tell me of Big Ape!", < "What actually is a Miniknog?", < "Down with oppressors, right friend?", < "You're so furry.", < "You have a delightful accent.", < "Such muscles! I'm all a-flutter.", < "I heard our Stargazers are not fans of your Miniknog.", < "Have you ever met Thorngwing, Apex?", < "I would give you one of my feathers, but it is considered inappropriate.", < "Are you a member of the Resistance, Apex?", < "Yeah, I've met Big Ape. Wasn't so big.", < "Perhaps if you throw me high in the sky, I'll fly again.", < "Allow me to take you under my wing, Apex.", < "Our kinds have always been at peace.", < "Would you like to join me for some tag-team wrestling?", < "I would love to give you a haircut.", < "Let's fight, Apex! Just kidding. I'd destroy you.", < "You know, I've never tried a banana.", < "You won't make a monkey out of me!", < "Welcome to our village, Apex friend.", < "You look like you've been in some wars.", < "If you see Kluex, punch him for me.", < "The Clipped Council will fall any day, Apex. You mark my words.", < "Swimming can be fun!", < "Come over here, Apex. Come closer. No, that's too close!", < "You smell of hay.", < "Is my plumage to your liking?", < "We are lucky not to have been born Hylotls.", < "Scratch like no-one's watching.", < "Can Avians catch Apex fleas?", < "Let's go into space together!", < "I've had enough of this weather.", < "Perhaps you would be so kind as to sign my beak." < ], < "avian" : [ < "Greetings, fellow Avian.", < "Let's slander Kluex together!", < "Kluex? More like WHO-ex, right?", < "One day we'll fly together!", < "I'm so jealous of you being up amongst the stars, kin.", < "What about those Stargazers, eh?", < "How did your family take it when you came out as Grounded?", < "Let's take down the Clipped Council!", < "You'll find no Kluex-botherers here, friend.", < "The two of us, we're rare birds, right?", < "A Hylotl called me a chicken the other day. The cheek!", < "We're like birds of a feather. Hey, don't look at me like that!", < "I sure don't miss the threat of being ritually sacrificed.", < "Didn't I see you take a leap off the Celestial Tower once?", < "Nice outfit, buddy.", < "We should do something about Thornwing, one day.", < "Do you miss Avos, kin?", < "You're Kluex, aren't you? Come to take me away?", < "We will not be caged!", < "Lovely to see a fellow Avian traveller.", < "Bring me back a planet, friend.", < "Can spaceships be rigged to explode? Asking for a friend.", < "I chatted to a Glitch the other day. Weird.", < "Pretty sure I was a Sunborn in another life.", < "A human just asked me if I like techno. What's with that?", < "You smell like a Hylotl!", < "We're up all night to get plucky.", < "Tell me some stories about the stars, friend.", < "Do you wanna check out my bug collection?", < "I've been learning the ocarina!", < "I can fly, I just choose not to.", < "I want to be you when I grow up.", < "Are we related? You seem familiar.", < "I narrowly escaped from Kluex's grasp!", < "I'm not really an Avian, I'm a human in a feather suit.", < "The Circle of Thorns is tightening.", < "To good Avian health!", < "Oh no, I've lost my wages. My goose is cooked!", < "I can't tolerate militant atheists.", < "I got some power crystals stashed in my basement.", < "I owe Thornwing a lot of money. Can't relax.", < "Look at you, preening around." < ], < "floran" : [ < "Oh... a Floran.", < "Well, uh, nice to see you.", < "Do you bite?", < "*whistles*", < "Hi. I won't make any sudden movements.", < "Well aren't you an adorable little tree.", < "If you ever feel like hunting Kluex for us, feel free.", < "Are you some kind of malevolent imp?", < "You're so... planty.", < "Living foliage. Adorable.", < "Our kinds share similar weapons, Floran.", < "Let us talk of philosophy.", < "Please don't touch my feathers.", < "Well this is a surprise. A Floran.", < "A non-violent Floran. Can it be true?", < "The Sunborn warned us of you, plant-creature.", < "Careful, I know how to set fires!", < "Can... can I touch you?", < "So I hear you like stabbing.", < "Not now, Floran. It's quiet time.", < "You're a cute little creature, really.", < "You worry me, Floran.", < "Are you lost, Floran?", < "Your Greenfinger is in cahoots with our Thornwing.", < "Please don't kill me!", < "Floran Peace... I wasn't a fan. Sorry.", < "Try not to get pruned.", < "Do you always look so murderous?", < "Will you be my partner in the local line-dancing championships?", < "Avian chicks dig Floran accents.", < "Share with me the secret of home shopping.", < "I'll put a good word in with the guards for you.", < "My grandmother was a Floran. We're basically related.", < "Are you looking to... plant your roots here?", < "Let's become bitter rivals!", < "Thank you for behaving respectably, Floran.", < "Have you ever been sent to jail? You look the type.", < "Let's fight Kluex together.", < "I wonder what the Council would make of you.", < "What kind of plant did you grow from?", < "You remind me of an oculemon I once ate.", < "Try not to take the stares to heart, Floran.", < "So a Floran, an Avian and a Hylotl walk into a bar...", < "Blessed be, Floran menace." < ], < "glitch" : [ < "Hello there, Glitch.", < "Nice to see you, Glitch.", < "Are you self aware?", < "We are both outcasts, friend.", < "Can I become a robot?", < "Do robots have gods?", < "You're so smooth.", < "You Glitch are so cool.", < "Can I tap your head?", < "We admire your friendship with the Florans.", < "What do your databanks tell you about Kluex?", < "I wonder what would happen if a Glitch ate a power crystal.", < "Do the Glitch worship gods?", < "Let's do some painting!", < "I'm sorry, do you want some oil?", < "Are you entirely made of metal?", < "I hear Glitch have beautiful singing voices.", < "I'm lovesick and I don't know what to do!", < "Dazzle me with your science.", < "You should explore our temples and tombs. Remarkable.", < "Let's be penpals.", < "I bet a Glitch could survive the Ascension.", < "What do you make of our Stargazers then, eh?", < "I tried some delicious cakes the other day.", < "I met Platinum Ace once. Nice lady.", < "Let's go to space together.", < "The Circle of Thorns is watching, Glitch.", < "I heard Thornwing is in the area. Beware.", < "Some Hylotl came by earlier. You can imagine how that went.", < "How do you people eat?", < "I have some seeds back at home.", < "Tonight we're hosting a book club. You should come!", < "Let's investigate some crimes.", < "Kluex. What a joke.", < "The Clipped Council have no sway over me.", < "I'm so happy I got to see a Glitch.", < "I have some spare feathers if you'd like to try and fit in.", < "Pleasure to meet you, tinpot.", < "You're masterworks all. You can't go wrong!", < "Check out my feathers." < ], < "hylotl" : [ < "Oh, a Hylotl.", < "Well I guess it's nice you've dropped by.", < "Peace, fishman.", < "You smell of the sea.", < "Your kind would get along with our Stargazers.", < "Are you here to save us from Kluex?", < "Just so you know, my husband's a Floran.", < "We should go fishing together.", < "You make me miss Kluex.", < "Much love, slimy Hylotl.", < "I've heard dark things about your kind, Hylotl.", < "You don't need to keep up the pretence with me. We both know.", < "Between us, we could be unstoppable.", < "Peace. I hate the word.", < "I ate some nice steak the other day. Oh, you eat meat too? Trolling failed.", < "We tolerate your kind, Hylotl.", < "Have you ever tried lamprey pie?", < "I'm curious, Hylotl. What kind of gods do YOU have?", < "You should climb up the Celestial Tower one day. Jump off, see if you ascend.", < "In the past, the Stargazers would ritually sacrifice Hylotl. I wonder why.", < "I can see the way you look at our furniture.", < "How about a spot of fencing?", < "Why do you hate Florans so?", < "I'll trade you a power crystal for your mortal soul.", < "Imagine being stuck on a spaceship with a Hylotl.", < "Have you ever punched a shark?", < "Is your kind edible?", < "Quick, over there, a lily pad!", < "I'd love to go under the sea one day.", < "I don't condone piracy.", < "Hylotl! Let's cuddle!", < "Something fishy is going on here.", < "Kluex told me personally that he's a fan of the Hylotl.", < "If you sniff haughtily one more time, I'm calling the guards.", < "Aww, you're adorable really.", < "A GIANT TALKING FISH!", < "Avians can peck fish from the ocean with their beaks. It's quite a sight.", < "Hah. You're slimy.", < "I love the Hylotl. So cute.", < "Let's come up with a get rich quick scheme!" < ] < }, < "human" : { < "default" : [ < "Have an awesome day!" < ], < "human" : [ < "Yo!", < "Hey, great to see you.", < "The USCM are doing a great job!", < "I sure miss Earth, don't you?", < "Bring back the Eighties, I say!", < "The thing I miss most about Earth is fast food.", < "There are some funny species out here, right?", < "Just think, we weren't alone in the universe after all.", < "It's always nice to see another human.", < "Do you ever get homesick?", < "My husband won't stop talking about the Glitch.", < "Which species is your favourite? Mine is the Florans.", < "Apparently Hylotl don't taste good with chips and vinegar.", < "Where were you from on Earth, then?", < "Tentacles, eh? Who'd have 'em.", < "At ease, soldier!", < "I got a bet on that our species gets wiped out within ten years. You game?", < "I really miss Jim Carrey movies.", < "The universe is a big place.", < "One day I want a spaceship like yours.", < "We really are outcasts, aren't we?", < "Something weird is going on here.", < "Have you noticed anything unusual about the Florans?", < "We should get drunk and reminisce about the olden days.", < "A lot of the food on these planets looks disgusting.", < "An Apex punched me the other day. Don't know why.", < "Greetings, human. Oops. Been around aliens too long.", < "The Glitch have a funny way of talking.", < "You seen those giant bird people yet?", < "Have you heard about some guy called Thornwing? Sounds dangerous.", < "I hear that if you explore a lot of planets, you'll find treasure.", < "I haven't watched a good zombie movie in ages.", < "I could really fancy a roast dinner.", < "What if we're really just shaved Apex?", < "Sometimes it's fun to just yell at monsters.", < "You found any cool weapons lately?", < "We should team up. Solidarity, bro!", < "I'm craving a burger right now.", < "I wonder if we'll ever reclaim Earth.", < "Hail the USCM!" < ], < "apex" : [ < "Hey, ape-dude!", < "A talking monkey. Cool.", < "Are you gonna hurt me?", < "You seem like a nice sort.", < "You remind me of a movie I saw once.", < "Just how big IS Big Ape?", < "Hey there, Apex!", < "Back on Earth we had a movie abou a big ape...", < "Have you ever tried shaving to pass as human?", < "Which came first, the human or the Apex?", < "I'm jealous of you, being an adventurer.", < "The Miniknog sound terrible!", < "You should ask the USCM to help you out with the Miniknog.", < "If you ever need help, just ask.", < "Awesome to see you, Apex!", < "You guys are so cool.", < "I'm glad some of you managed to escape that Big Ape guy.", < "Just let me know if you want a cuddle.", < "Hanging out with you would be neat.", < "You remind me of my ex-husband.", < "I bet you've got a few stories to tell!", < "Did you know our planet was taken over by a monster?", < "Maybe we've been on Earth all along...", < "You reek of wet dog!", < "Talking apes, talking birds, talking plants, what next?", < "The chances of anything coming from Mars were a million to one, they said.", < "If you're free later, we should go bowling.", < "Has your kind heard of vampires?", < "The universe is a big, scary place.", < "I guess we've both lost our homes, Apex.", < "I feel strange and unusual.", < "I've never met a Miniknog soldier. Are they scary?", < "You look pretty strong, like a wrestler.", < "Pleasure to make your acquaintance, ape.", < "I am a person!", < "I might stow away on your spaceship, just so you know.", < "How do you feel about pancakes?", < "The monsters around here can be scary.", < "When I was a child I had a toy monkey that looked like you.", < "Ace meeting you, Apex." < ], < "avian" : [ < "Hey, it's a big bird!", < "Nice feathers there.", < "I still can't get my head around your kind.", < "It's weird that you can't fly!", < "I wish we'd had Avians back on Earth.", < "Hey there, Avian!", < "You look so warm and fluffy.", < "Who's this Kluex I keep hearing about, then?", < "Don't go out on the moors!", < "Being flightless must suck.", < "I've never met an Avian I didn't like.", < "I hear your kind build grand tombs. Fascinating.", < "Take me with you into space, Avian.", < "Feel free to make yourself at home.", < "I find you disconcerting. Sorry.", < "Are you acquainted with Thornwing? He's one of you, right?", < "Another Avian I met told me about the Celestial Towers. Chilling.", < "Can I borrow a feather to make a quill?", < "Ever played Hopscotch?", < "Our planet was taken over by a monster. Woe.", < "Let's have a nice cup of tea and a sit down.", < "The USCM is probably tougher than Kluex.", < "Your power crystals sound fascinating. Tell me more!", < "We look a lot alike, you and I.", < "Look at how pretty the sky is today.", < "I've been into space! When I fled Earth.", < "If an Avian and a snake had a baby, would it be a feather boa?", < "I quite like those Apex, y'know.", < "What's a Hylotl, and why does everyone despise them?", < "I hear Florans are quite scary.", < "Your Clipped Council sounds fascinating.", < "Someone told me to beware the Circle of Thorns. Does this mean anything to you?", < "We could be heroes, if I wasn't so lazy.", < "Sometimes I miss soap operas.", < "Have you ever seen a Segway?", < "One day I'll introduce you to the joys of leading soft drinks brands.", < "You Avians have been very welcoming to us humans. I hope we can extend the same courtesy.", < "Gross, I just swallowed a fly.", < "Let's hang out sometime!", < "I'm sure I've seen you somewhere before.", < "Avians are SO COOL!", < "USCM superiority, brah." < ], < "floran" : [ < "A triffid!", < "Yo there, talking tree.", < "You're pretty cute.", < "Aren't your kind meant to be savage? You don't seem it.", < "Can we be partners?", < "You could do with a pruning.", < "I'm sorry about the weedkiller thing.", < "You people have a reputation for being galactic troublemakers.", < "You'd have made a great pet back on Earth.", < "It's hard to believe you're a lethal killer!", < "Do you wanna check out my Betamax collection?", < "I reckon we'd get on well.", < "The USCM is a bit wary of you, Floran.", < "You're my Venus, I'm your fire.", < "Let's get drunk on chartreuse and discuss art.", < "I think you're probably my favourite.", < "I love the idea of a spaceplant.", < "You have your own spaceship? Mad jelly, yo.", < "I bet we could make fat stacks as a performing arts troupe.", < "Are there any Floran popstars?", < "You'd have loved Kenya.", < "I got my eye on you, Floran.", < "It's pretty exciting to see you!", < "A rose by any other name...", < "You're one funky little dude.", < "I can't wait till our species integrate.", < "If you ever need a lawyer, I know a guy you can call.", < "Back on Earth, I was something of a celebrity.", < "Galactic politics are scary, aren't they?", < "I hear you and the fish people don't get on?", < "See this? It's my poker face.", < "I bet you've killed more monsters than I've had hot dinners.", < "You remind me of Swamp Thing.", < "Make yourself at home, Floran.", < "Thanks for dropping by!", < "Can you read?", < "I had a dream about your kind last night.", < "A Floran whispered something about oaken soldiers to me. What does it mean?", < "The Circle of Thorns is closing in.", < "You're almost as scary as the Helion.", < "I could go for some ice-cream right now.", < "We should have a picnic!", < "Florans are the best!", < "I'd be a great addition to your crew." < ], < "glitch" : [ < "Whoa, nice, a robot.", < "Danger Will Robinson!", < "The future, it's here!", < "I wish we'd had Glitch back on Earth.", < "Did you hear about our planet? Bit rubbish, really.", < "You and the Florans get on well, right?", < "Let's do something cool later.", < "I've always wanted to hang out with a robot.", < "EXTERMINATE! EXTERMINATE!", < "Can your kind... uh... y'know... never mind.", < "My family are on a different planet.", < "I bet you'd make a great DJ.", < "If you ever go to Earth, can you try and analyse that tentacle monster?", < "Who created you guys, then?", < "I am done with taking orders. Done!", < "I want armour like yours.", < "I love the way you guys talk.", < "Welcome to this human settlement, Glitch!", < "So lovely to see you, Glitch!", < "Can I get your autograph?", < "You'd be a big hit in Hollywood.", < "Have you ever thought about becoming a cop?", < "A Glitch invasion would be the coolest thing.", < "I'm sorry in advance for when you find out about Robot Wars.", < "What metal are you made from?", < "Your Hewlett Deckard is a role model of mine.", < "Don't you wish your girlfriend was hot like me?", < "Go ask an Apex to teach you how to twerk. Trust me.", < "Can you go in the water?", < "You're quite small for a killer robot.", < "You have the coolest face.", < "I miss my planet, Glitch.", < "Do your arms transform into guns?", < "Can you turn into any kind of vehicle?", < "This feels like the start of a buddy comedy.", < "You should show me your spaceship sometime.", < "Seen anything of interest lately, Glitch?", < "I'd like to visit your kind one day.", < "Tell Platinum I said hello.", < "The USCM would love to enlist you, Glitch." < ], < "hylotl" : [ < "Oh hey, a giant fish.", < "I've been told to watch out for your kind. Why?", < "Hah, oh my, you smell funny.", < "You remind me of my holidays at the beach.", < "Gotcha hook, line and sinker.", < "A Hylotl, eh?", < "Nice to meet you, fishface.", < "You're pretty awesome for a talking tuna.", < "What's your beef with the Florans, hey?", < "Welcome, Hylotl!", < "Nice to meet you, fish!", < "Let's go swimming.", < "A fish amongst the stars. Cool.", < "Personally I never used to eat fish and chips.", < "Living under the water must be exciting.", < "I hear your architecture is stunning?", < "You seem like a cultured sort.", < "Could you beat a shark in a fight?", < "Talking fish, sharks with legs... man, I love space!", < "Our planet had many oceans. Then a tentacle monster happened.", < "You're one slick fish.", < "I don't care what others say, you Hylotl seem nice to me.", < "Great to see you, pal.", < "The USCM has you on a whitelist, I hear.", < "Are you one of the fabled Hylotl peace missionaries I hear about?", < "If it's not too much trouble, could you give me a lift to Earth?", < "Birds, apes, fish, plants, robots, and humans. We're just squishy and boring.", < "I've lost my favourite pen! Have you seen it?", < "I'll pay you top dollar to blow up my boss.", < "We should hang out more often, fish.", < "I used to go fishing without a license. I'm sorry.", < "I have nothing to say to you right now, I'm having an existential crisis.", < "Gross, you're all slimy.", < "We should all reject our socio-political prejudices.", < "Here fishy fishy fish fish!", < "Nice outfit, flipper!", < "I miss the cool sea breeze.", < "A Floran was looking for you earlier. It seemed mad.", < "The Circle of Thorns will come for you, fish.", < "I am mostly concerned about Christmas right now." < ] < }, < "floran" : { < "default" : [ < "Ssstrange thing." < ], < "human" : [ < "Meatman!", < "Sssilly human.", < "Floran not like ssstrangers.", < "Sssuspicious thing.", < "Watch yourself meat.", < "Greenguard watch you, human.", < "Leave, maybe.", < "Floran dream of oaken sssoldiers. Floran ssscared.", < "Floran ssstab you if you misbehave.", < "Creature!", < "Sssuspicious. Floran Glitch friend tell Floran to watch human.", < "Floran hear planet eaten by monster. Floran hunt it.", < "Floran find human funny.", < "Floran not underssstand you.", < "GREETINGS AND SSSALUTATIONS. Birdman tell Floran to say this.", < "Floran can read words!", < "Floran restless, not enough ssstabby.", < "Greenfinger say humans sssquishy and weak.", < "Floran teach human art of ssstabbing.", < "Welcome to Floran village, ssskinperson.", < "Floran ssstab, therefore Floran am.", < "Floran never met humans before.", < "Behave, sssilly thing.", < "Human ssspeak words at Floran. Floran sssmile and nod.", < "Floran look after human for now.", < "Skreeeeee!", < "Glitch try to teach Floran advanced mathematics. Floran head hurt.", < "Floran want to pull sssilly human's hair.", < "Floran think human brave for coming here.", < "Floran sssee human ssspace craft, have envy.", < "Floran want human best friend.", < "Floran and cocoon-kin giggle behind human's back.", < "What are you?", < "Human not grow leaves. Floran pity it.", < "Floran want to show human how to use ssspear.", < "Floran cuddle human sssilly.", < "Floran learn rules of etiquette.", < "Floran remember human ssshooty men get mad at Floran.", < "Greenfinger sssay be nice to pitiful ssspecies.", < "Floran want to meet human in dark alley." < ], < "apex" : [ < "Floran want cuddle from monkey man!", < "Floran like monkey man ssscent.", < "Floran tougher than chimp chump.", < "Greenfinger sssay Biggie Ape nice monkey.", < "Floran sssuspicious of travelling monkey.", < "Floran call Greenguard if monkey roar.", < "Monkey man!", < "Monkey man wear sssilly clothes.", < "Floran feel comfortable with monkey man.", < "Monkey man want Floran pet?", < "Ssspace monkey!", < "Floran not ssstab ape for now.", < "Floran sssay hello, be friendly to big monkey.", < "Hopping monkey make Floran laugh.", < "Floran think Apex Floran's favourite.", < "Glitch sssay monkeys are oppressed. Floran not understand.", < "Monkey come see Floran house.", < "Floran proud of village. Sssee it.", < "Floran admit Floran ssscared of monkey men.", < "Floran big tough hunter. Cocoon-kin here soon.", < "Floran sssad, cocoon-sister take drysap.", < "Greenguard put monkey in Dust if monkey bad.", < "Floran once punch a monkey for no reason.", < "Hello. Hi. Hello. Hi. Hello.", < "Floran tell Biggie Ape; ssstabbing can happen.", < "Floran not afraid of anything!", < "Monkey let Floran see ssspace ship.", < "Floran want monkey clothes.", < "Chimpanzeeeeeee!", < "Floran happy with encounter.", < "Floran want to know; what's fleas?", < "Please admire Floran foliage, monkey man!", < "Floran wonder if monkey man like Floran.", < "Floran think monkey funny and nice.", < "Floran never hunt monkey ever.", < "I learning am how speak to properly. Floran.", < "Sssilly monkey, Floran like.", < "Ssstabby ssstabby ssstabby!", < "Floran is hero to cocoon-kin.", < "Floran help monkey man take down mini log." < ], < "avian" : [ < "Birdman!", < "Floran love Avian feathersss.", < "Floran sssad birdman can't fly.", < "Floran dream of hunting Kluex!", < "Floran want to ssstroke birdman.", < "Take Floran to ssstars, bird!", < "Greenfinger say birdthings like gods.", < "Floran wonder if Kluex really that tough.", < "Bird person! Hello.", < "Floran like look of bird.", < "Not even want to ssstab you.", < "Floran reflecting on nature of existence. Floran ssseek ssspiritual guidance.", < "Birdman want to hear Floran read?", < "Are you a big reader? No, I thought not.", < "Floran hear about birdman tombs. Floran like.", < "Floran will defeat birdman Ssstargazers.", < "Floran consider ssstabbing but behave ssself.", < "Welcome in, bird thing!", < "Floran fear nothing!", < "Place here is nice, yes?", < "Feathers make Floran sssneeze.", < "Floran happy to welcome bird in.", < "Floran sssee bird, laugh.", < "Greenfinger sssay bird people nice.", < "Floran pleased to sssee this one.", < "Pretty little bird. Floran not ssstab.", < "Bird bird bird birdy.", < "Floran thrilled to sssee bird person!", < "Floran demand feather as offering!", < "Greenguard want watch bird person, Floran think.", < "Floran want birdman ssspace ssship. Can Floran have?", < "Other birdman sssay Floran not have sssocial ssskills. Floran ssstab.", < "Flap flap flap!", < "Peck peck peck!", < "Floran sssee funny ssside.", < "Floran ssshow birdman ssspear collection.", < "Birdman! Floran say hi!", < "Floran pleased bird ssspeak to it.", < "Welcome in!", < "Not want bird to feel unsettled.", < "Ssspace!", < "Flyyyyyyyy!" < ], < "floran" : [ < "Floran!", < "Greetings Floran.", < "Floran hunt better than Floran. Floran know it!", < "Floran think Floran member of cocoon-kin.", < "What Greenfinger sssay to you Floran?", < "Floran smell Hylotl on you.", < "Strange Floran from ssspace. Floran like.", < "Floran take Floran on ssspace ssship now.", < "Floran not here to cause trouble, right?", < "Greenguard not trust Floran outsiders. Sssad.", < "Floran wonder if Floran really a Floran.", < "Ssstab? Ssstab. Ssstab!", < "Friend!", < "Floran ssshow best ssstabber.", < "Floran sssuggest we hunt together.", < "Floran wonder if Floran meet big prey in ssspace?", < "Floran happy now.", < "Floran confused by new Floran face.", < "A friend!", < "Ssstabbing is fun!", < "The Circle of Thorns is closing in.", < "Floran behave around guest.", < "Nice happy to meet!", < "Floran and Floran adventure go!", < "We become friends?", < "This happy day for Floran.", < "Floran tell cocoon-kin about thisss.", < "Floran wonder if Floran miss cocoon-kin.", < "Floran proud of grand ssspace hunter Floran friend.", < "Floran read Floran Peace. Floran not like.", < "Floran in trouble for eating Apex.", < "Greenfinger sssay ssspace hunter Floran best in business.", < "Floran hear dark rumours.", < "Ssstab all of things!", < "Floran long to punch sssomething.", < "Floran trembling in awe.", < "Floran pleased to be happy.", < "Floran like not being judged.", < "Hello Floran friend!", < "Hunting hunting hunting every daysss.", < "Floran recommend Art of Ssstabbing as good read.", < "Floran meet Sssunflower Tzu once, go weak at knees.", < "Floran wonder if Floran meet Greenfinger ever.", < "Floran big ssshot in village." < ], < "glitch" : [ < "Floran greet metal man!", < "Robo-friend make Floran happy.", < "Floran not ssstab Glitchy.", < "Greenfinger sssay Glitch our kin from another bin.", < "Floran pleased to sssee robot.", < "Floran hope robot teach Floran to maths.", < "Robot make Floran feel fuzzy.", < "Floran love Glitch for ever.", < "Yip!", < "Ssslashy ssstabby Floran protect Glitch.", < "Floran want be on Glitch ssspace ship.", < "Floran tap metal robot head, hear clunk.", < "Floran excited to sssee roboglitch.", < "Robot ssseem nice.", < "Floran love sssound robot make.", < "Floran want visit robot ssspace ssship.", < "Floran wonder if Glitch meet Hylotl lately?", < "Hello robo.", < "Floran want Glitch to ssstay.", < "Floran love warrior robot.", < "Floran ssshow off ssskills to robot.", < "Let's eat!", < "Happy daysss!", < "Floran feel nice today.", < "Floran want Glitch to sssing.", < "Floran giggle at robot.", < "Floran hope Glitch teach many things.", < "Greenfinger love robots!", < "Floran never ssstab Glitch ever.", < "Glitch nice to Floran, Floran respect.", < "Floran want to go ssspace fight!", < "Floran think about many things lately.", < "Floran hope robot like place.", < "Robot and Floran friends.", < "Floran want Glitch clothes.", < "Robot, Floran wonder if robot like Floran foliage?", < "Floran will sssad when robot go.", < "Floran want to dance.", < "Glitchy turn up, make Floran day.", < "Floran pledge Glitchy its ssstabbies." < ], < "hylotl" : [ < "Hsssss!", < "Ssstab!", < "Fish! Away!", < "Floran not ssspeak to fish!", < "Ssslimy one, begone!", < "Floran not know what fish thing expect here.", < "Greenguard watch you, fish.", < "Ssslime creature!", < "Floran keen to ssstab this thing.", < "Graaak!", < "Fissshhhhhhhhhh nooooo!", < "Horrific fish!", < "Ssslimy beast!", < "Hyark!", < "*maniacal laughter*", < "Floran will ssstab you fishface!", < "Floran not like you, thing.", < "Horrifying ssslime!", < "Floran perplexed at brazen fish.", < "Floran think ssspace ssship wasted on fish.", < "Fishface! Away!", < "Floran not responsible for Floran's actions if fish remain here!", < "Floran quivering with rage at sssudden fish.", < "FLORAN HATE YOU FISH!", < "Sssick fish, go away or go ssstabby.", < "Floran not even mind fish really but entrenched rivalry unavoidable.", < "Greenfinger sssay ssslimy fish enemy of Florans!", < "Floran's is the fury!", < "Ssscumfish, what do here?", < "Ssslime fish ssshould fear Floran.", < "Leave, beast of the sssea.", < "Floran call Greenguard sssoon!", < "Filthy ssstinky fish not touch Floran.", < "Floran ssspit on fish peace.", < "Floran know truth, slime. Leave now.", < "Ssstinky sssea creature alert.", < "Floran would ssstab but left sssword at home.", < "Sssound the fish alarm!", < "Floran not want you here, slimefish.", < "Floran displeased with fish appearance." < ] < }, < < "glitch" : { < "default" : [ < "Confusion. What manner of being are you?" < ], < "human" : [ < "Superiority. Puny human.", < "Disgust. Fleshy!", < "Interest. Who built you meatman?", < "Greeting. Welcome to our village!", < "Warning. Do not make trouble meatman or I shall call the guards.", < "Trepidation. What is your business here?", < "Kindness. All travellers are welcome here.", < "Kindness. Make sure you rest before leaving town, it's not safe out there.", < "Fascination. I would love to study just how you were assembled.", < "Cheerful. I love this village!", < "Busy. Mmm?", < "Questioning. Are all meatmen so hairy?", < "Confused. My scan suggests there are parts of your body I do not possess.", < "Wistful. I long to travel...", < "Intimidating. Our lives are hard, don't make them any harder.", < "Irritated. Watch where you locate your lumpy meat!", < "Pride. What do you think of our village?", < "Wary. We don't get many of your kind here.", < "Dismayed. You are not the Glitch I'm looking for.", < "Intrigued. Have you seen that new play by Wullum Sparkspear?", < "Condescending. You are not worth my time.", < "Worried. Some Glitch have gone mad.", < "Friendly. Hello friend, can I offer you some nuts, perhaps a change of oil?", < "Inquiry. How can you deal with the sloshing of your squishy parts?", < "Worried. I think I may have a screw loose.", < "Curiosity. Why are you wearing that flesh over your chassis?", < "Worried. Keep your distance, I think I have a virus.", < "Concerned. Your eyes have red rings around them. Are you ok?", < "Cautious. I heard humans often have viruses.", < "Confused. What is love?", < "Innuendo. Do you want to go somewhere private and.. exchange data?", < "Innuendo. I have universal adapters to suit most needs.", < "Disturbed. You wobble when you walk.", < "Snarky. You have such oily skin.", < "Concern. Why is your coating so malleable?", < "Embarrassed. My optics are up here...", < "Flirtation. Nice apparatus.", < "Observation. There is a severe lack of consistency in your race's exteriors.", < "Admiration. For years I've dreamed of being able to grow hair. You are living that dream.", < "Alerted. My olfactory sensors indicate that you could do with some maintenance." < ], < "apex" : [ < "Shocked. Such a hairy creature!", < "Wistful. One day follows the next but time seems to stand still.", < "Inspired. You have enough hair to produce a large number of wigs.", < "Greedy. I could sell all of that hair of yours for you and make us both rich!", < "Trepidation. No monkeying around.", < "Warning. Throwing fecal matter is an offense punishable by death.", < "Frustration. Stop imitating everything I do.", < "Curious. Do you have tail?", < "Enquiry. Have you ever tasted an automato?", < "Curious. Are all those hairs stuck on?", < "Admiration. Your insulation layer is both practical and attractive. Is it for sale?", < "Kindness. Hang around!", < "Critical. Your hair is a rare gift, you should keep it in better condition.", < "Hospitable. Would you care for a banana?", < "Query. Are you perhaps related to the Yetis of legend?", < "Insult. Take your stinking paws off me you damn dirty ape!.", < "Fascination. How do Primates build their progeny? How do you assemble?", < "Query. What is a Miniknog? Define.", < "Query. What function does your pelt serve Apeman?", < "Kindness. You may rest here any time Apeman.", < "Intimidate. Aren't you suppose to be wearing a fez or something?", < "Kindness. Welcome, friend. The tavern just received a banana shipment this morning.", < "Curious. Is it true that Big Ape is ten feet tall, and made of gold?", < "Disgust. What is that stuck in your fur?", < "Uncertainty. How do you differentiate your genders?", < "Apathy. You seem like just another type of meatman.", < "Criticism. Evolution has not been kind to you.", < "Disdain. Deactivating olfactory circuits.", < "Compliment. Your fur looks wonderful in infrared!", < "Alarm. Are you Big Ape? Because I cannot imagine an ape even bigger than you.", < "Tactless. We have heard many things about the Miniknog. We would like to hear more.", < "Scientific. Scans indicate you share biological roots with a number of other species.", < "Wistful. I am sorry. I drifted off for a moment, imagining your hair blowing softly in the wind.", < "Excited. Perhaps your species could be the basis for a new, hairier Glitch model one day.", < "Hesitant. Would you... would you be offended if I ran my appendages through your mane?", < "Cheerful. I am sure you are excited to return home and inform Big Ape of your adventures.", < "Annoyed. The flagrant flaunting of your follicles feels like a kick in the grill.", < "Pleading. Perhaps one day you would explain to the Glitch the secret of the banana split.", < "Kindness. Are you looking for a job stranger? We currently need a librarian.", < "Concerned. You seem jumpy, don't worry, you're safe from the Miniknog here." < ], < "avian" : [ < "Query. Does your plumage self-assemble, or is it constructed by artisans?", < "Query. What purpose do your feather serve if you cannot fly?", < "Disdain. It is said the birdmen believe in a feathered god, is that true?", < "Query. Are you able to fly?", < "Curious. May I buy an egg from you?", < "Fortunate. I need a new quill.", < "Query. What is your maximum airspeed velocity?", < "Confusion. Which of you came first? Your egg or.. ERROR", < "Statement. Though our worship may differ, we hold no ill will to you Birdman.", < "Query. Do you head south for winter?", < "Question. Are Avian bones hollow?", < "Concern. Your rigid supports seem unusually fragile.", < "Deception. Don't worry about the chickens, we don't eat them.", < "Welcoming. How do you like it in our village, feathered friend?", < "Friendly. Good morrow my fine feathered fellow.", < "Interest. You would make a very comfy feathered pillow.", < "Kindness. There's a wonderful place to roost at our Inn.", < "Conviction. Do not blaspheme, or we will provide the tar.", < "Request. Are you willing to provide guano?", < "Irritation. A flock of your kind came through the other day.", < "Threat. Are you familiar with the concept of wishbones?", < "Consternation. Please stop pushing my buttons.", < "Suspicion. Hawk creature, have you seen my hacksaw?", < "Puzzlement. Perhaps His Lordship took up falconry.", < "Admonition. Please attempt to contain your affinity for shiny objects while you are here.", < "Concern. My what a sharp beak you have.", < "Greeting. Welcome to our village birdman.", < "Expectant. You look like you could help with my insect problem.", < "Query. You have beautiful plumage. May I have some?", < "Jealousy. May I stroke your pretty feathers?", < "Proposal. Our smith could make you a wonderful gilded cage.", < "Inquiry. Do you have spare eggs for sale?", < "Inquiry. What brings you here birdman?", < "Query. We're looking for a volunteer for a game of goose pulling, are you interested?", < "Insincerity. Please do not be offended by our livestock. We are well aware that your species is much more evolved.", < "Happy. Good day to you birdman!", < "Friendly. I hope you're feeling well birdman.", < "Friendly. Greetings my Avian friend!", < "Greeting. Well met my feathered friend.", < "Caution. I've never met a birdman before.", < "Excitement. Can you fly?", < "Concerned: Are your wings in need of repair?" < ], < "floran" : [ < "Friendly. Greetings plantman.", < "Friendly. Nice to meet you plantman, we have rich soil here.", < "Curious. Were you born or grown?", < "Fearful. What sharp teeth you have!", < "Anxious. There are guards around you know!", < "Bold. Your teeth won't pierce my shell!", < "Comparative. Physically we couldn't be more different.", < "Honest. You have a frightening appearance plantman.", < "Intimidated. You're friendly, right?", < "Intimidating. Watch yourself plantman, or the guards will give you a pruning.", < "Curious. Do your leaves fall off in the autumn?", < "Shocked. What are you? A fabled Floran?", < "Startled. Hi...", < "Complimentary. You smell like flowers.", < "Statement. It appears there is some stigma attached to being a plantman.", < "Brave. You're not so scary.", < "Worried. Your eyes are insect-like.", < "Terrified. Ahhhh!", < "Amused. Try not to scare anyone plantman.", < "Concerned. The fishmen do not have good things to say about you stranger.", < "Troubled. Are you friendly?", < "Suspicious. What's your business here?", < "Wonder. Are you an ent?", < "Opportunistic. May I have some of your leaves?", < "Curious. Where do you come from?", < "Concerned. The colour of your skin... are you sick?", < "Startled. Oh! I didn't see you there, I thought you were a pot plant.", < "Nervous. Will you eh... be here long?", < "Flirtatious. You have lovely buds.", < "Joking. So you started out as a little nut, so did I.", < "Worried. Please don't eat our livestock.", < "Nervous. You don't really eat people do you?", < "Kind. You look friendly enough, I think people have got you plantmen all wrong!", < "Friendly. Are you thorny or can I have a hug?", < "Friendly. May I smell your flowers?", < "Awe. You're so pretty!", < "Thoughtful. You'd look great in a garden.", < "Query. Are the leaves just for show?", < "Query. How many plantmen are there?", < "Sarcastic. If you sit in the soil do you grow taller?", < "Impressed. I didn't know organic matter could be so strong!", < "Friendly. Would you like some water?", < "Curious. Can plantmen get by on just water and sunlight?", < "Friendly. I think plantmen are cute, despite what everyone says!" < ], < "glitch" : [ < "Friendly. Greetings friend.", < "Friendly. Well met, are you from this village?", < "Friendly. You don't look as if you're from around here.", < "Suspicious. Where did you come from, you're not malfunctioning are you?", < "Flirtatious. Your optics are so well lit!", < "Flirtatious. You're so shiny.", < "Suspicious. Do you feel funny?", < "Hungry. You don't happen to have an automato do you?", < "Happy. Hello fellow metalhead!", < "Curious. Are you a knight?", < "Tired. My feet ache, how is that possible?", < "Sad. My friend was recently disassembled.", < "Surprised. It's so good to see a new face!", < "Curious. Do you own a house here?", < "Helpful. You should probably avoid the inn, they're a loutish lot.", < "Worried. What if I go crazy one day too?", < "Secretive. I think there might be more out there... do you know what I mean?", < "Giggly. Hehehe.", < "Inspired. I want to learn to sword fight! Maybe I'll become a Knight!", < "Meditative. Shhh. I'm having new thoughts.", < "Unsatisfied. Day after day, it's always the same.", < "Confused. What time is it?", < "Friendly. What's your name?", < "Ashamed. I think I've lost a chicken.", < "Excited. Are you thinking of settling here?", < "Happy. This is such a friendly village.", < "Content. I think I'll spend the rest of my days here.", < "Alert. Did you hear a rat?", < "Bored. Time seems to stand still sometimes.", < "Traumatised. Someone stomped on my chicken.", < "Tired. My joints need oiling.", < "Sophisticated. Why hello there.", < "Poetic. Twas brillig!", < "Worried. You don't have a virus do you?", < "Sad. My partner and I got our wires crossed. Now he hates me.", < "Inspirational. I'm learning to play the lute!", < "Tired. I need to recharge.", < "Disappointed. Oh, it's you.", < "Curious. What brings you here friend?", < "Welcoming. I hope you enjoy your stay here!", < "Query. Have you read the latest Vector Squared?" < ], < "hylotl" : [ < "Sceptical. For a species that lives underwater, you don't smell very clean.", < "Charitable. Perhaps you would like to examine some Glitch constructions to advance your own designs. ", < "Envious. It must be liberating to be able to swim through the oceans without a care.", < "Considering. It is nice to see even the lesser species getting out once in a while.", < "Reassured. It appears the Glitch aren't the only species lacking in glorious hair.", < "Annoyed. You are dripping on my circuits.", < "Thoughtful. Perhaps one day you could teach the Glitch to swim...", < "Patronising. We hope you feel at home, despite the shortage of lily pads.", < "Observation. Your biological structure is similar to another species we have encountered recently.", < "Cautious. Please do not get too close. You are splashing water everywhere.", < "Scientific. It is rare for Glitch to encounter aquatic life forms.", < "Shy. I've secretly always been a fan of your species' superior artistic skills.", < "Condemning. Perhaps you could stand to learn a thing or two about other cultures.", < "Curious. Is it correct that your species does not eat meat?", < "Tactless. Is your species descended from fish or frogs?", < "Justifying. Ignore my hivemates. Some of my best friends are Hylotl.", < "Anger. My shoulder is not an appropriate thing in which to check your reflection.", < "Querying. Have you tried jousting? It's truly a wonderful sport.", < "Puzzlement. Pacifism? Sounds impractical.", < "Interested. Do you people listen to music in your underwater homes?", < "Sarcastic. Please, tell me more about Hylotl craftsmanship.", < "Hospitable. I apologise if Glitch furnishings are not to your taste.", < "Nostalgic. Your scent reminds me of my trips to the beach as a young Glitch.", < "Pondering. What do you do when you need to take a bath?", < "Eager. I've been practising my lily pad designs. Perhaps you could take a look.", < "Interested. Do you spend more time on land, or in the water?", < "Analysis. You have a fish in your pocket.", < "Bragging. Glitch furniture lasts up to ten times longer than that of your species.", < "Helpful. If you need any support adjusting to life on land, we Glitch are experts.", < "Amused. Your species seems to be exceptionally colourful.", < "Analysis. Your species' biology is made up of seventy percent salt water.", < "Curious. Do you take shelter from the rain?", < "Reassuring. One day, your species will catch up to the Glitch.", < "Longing. Perhaps, if you are not busy, you could take me sailing one day.", < "Entertained. A Glitch created in your species' image would be amusing indeed.", < "Condescending. A non-violent species? How adorable.", < "Critical. There's no accounting for taste in fashion, one supposes.", < "Alarmed. Reconsider any plans to take the Glitch underwater, stranger.", < "Paranoid. I would shake your hand, but I am concerned about my circuits.", < "Hostile. Take your peace-loving ways elsewhere, water-dweller." < ] --- > "dialog" : { > "tenant" : { > "grumbles" : { > "tagCriteria" : "/dialog/grumble.config:tagCriteria", > "enclosedArea" : "/dialog/grumble.config:enclosedArea", > "otherDeed" : "/dialog/grumble.config:otherDeed", > "severe" : "/dialog/grumble.config:severe", > "final" : "/dialog/grumble.config:final" > }, > "arrivedHome" : { > "beacon" : "/dialog/arrivedhome.config:beacon", > "rent" : "/dialog/arrivedhome.config:rent" 1632,1820d23 < } < }, < < "flee" : { < "reactionTimeRange" : [0.2, 1.0], < "safeDistance" : 100, < "safeDistanceWithGuards" : 40, < "safeTimer" : 10, < "stuckTime" : 4, < "stuckCooldown" : 10, < "dialogTimeRange" : [4, 10], < < "dialog" : { < "helpme" : { < "default" : [ < "Guards! Help me!", < "Help! Guards! Help!", < "Guards! I've been accosted!" < ], < "glitch" : [ < "Fear. Guards! Help me!", < "Intimidated. Please don't hurt me!", < "Abused. Guards! I've been accosted!", < "Afraid. Get away from me! Guards!", < "Terrified. Save me!", < "Shocked. No! Get away from me!" < ], < "floran" : [ < "Ssstabby time for me!", < "Floran being hurted!", < "Floran not ready for hunt!", < "Greenguard help Floran!" < ] < }, < "helpthem" : { < "default" : [ < "What have you done!?" < ], < "glitch" : [ < "Fear. Guards!", < "Intimidated. Please don't hurt me!", < "Afraid. Leave me be! Guards!", < "Terrified. Save me!", < "Shocked. What have you done?!", < "Righteous. I will write an electronic letter in protest!" < ], < "floran" : [ < "Ssstabby time for me!", < "Floran being hurted!", < "Floran not ready for hunt!", < "Greenguard help Floran!" < ] < }, < "encourage" : { < "default" : [ < "Get 'em!", < "Avenge me!", < "Stick 'em once for me!", < "Don't let 'em get away!" < ], < "glitch" : [ < "Encourage. Put 'em to the sword!", < "Excitement. Avenge me!", < "Aggressive. Strike him down!", < "Vengeful. Don't let 'em get away!" < ], < "floran" : [ < "Ssstabb the intruders!", < "Floran get revenge now!", < "Ssslice them!", < "Greenguard destroy it!" < ] < }, < "safe" : { < "default" : [ < "Phew, I think I got away.", < "I've escaped with my life!", < "Is this the safe zone?" < ], < "glitch" : [ < "Relieved. Phew, I think I got away.", < "Thankful. I've escaped with my life!", < "Wishful. If only I could afford a keep.", < "Hopeful. Am I safe?", < "Embarrassed. I think I leaked a little oil." < ], < "floran" : [ < "Floran sssafe now.", < "Floran not get ssstabbed after all.", < "Them lucky Floran not have weapon.", < "Sssalvation!" < ] < } < } < }, < < "sit" : { < "timeOfDayRanges" : [ [0.6, 1.0], [0.0, 0.2] ], < "moveTimeLimit" : 30, < "searchRadius" : 25, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [15, 240] < }, < < "sleep" : { < "searchRadius" : 15, < "lieDownRadius" : 3, < "moveToBedTimeLimit" : 10.0, < "timeOfDayRanges" : [ [ [0.7, 0.75], [0.95, 1.0] ] ], < "cooldown" : 30 < }, < < "wander" : { < "timeRange" : [2.0, 10.0], < "chatDistance" : 4, < "indoorTimeOfDayRanges" : [ [0.0, 0.2], [0.5, 1.0] ], < "indoorSearchRadius" : 60, < "indoorLookaheadDistance" : 4, < "moveToTargetTime" : 10.0, < "changeDirectionCooldown" : 2, < "dropDownChance" : 5, < "cooldown" : 10 < }, < < "work" : { < "timeOfDayRanges" : [ [0.2, 0.6] ], < "tools" : [ [ "hoe", 0.5, 2.0] ], < "toolRange" : 3.0, < "searchDistance" : 10.0, < "timeRange" : [4.0, 6.0], < "cooldown" : 10.0 < }, < < "chat" : { < "distanceRange" : [2.0, 4.0], < "conversations" : [ < [ < [2, "blabbering", "idle" ], < [1, "idle", "laugh" ], < [2, "idle", "blabbering" ], < [1, "sad", "idle" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "happy" ], < [1, "wink", "laugh" ], < [2, "happy", "happy" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "blabbering" ], < [2, "blabbering", "annoyed" ], < [3, "shouting", "shouting" ], < [2, "annoyed", "annoyed" ] < ] < ], < "cooldown" : 10 < } < }, < < "dropPools" : [ "villagertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 1822,1823c25,29 < "healthRegen" : { < "baseValue" : 0.0 --- > "flee" : { > "helpme" : "/dialog/flee.config:helpme", > "helpthem" : "/dialog/flee.config:helpthem", > "encourage" : "/dialog/flee.config:encourage", > "safe" : "/dialog/flee.config:safe" 1825,1853c31 < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } --- > "converse" : "/dialog/converse.config:converse" 1856,1865d33 < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, 1867,1882c35 < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } < } --- > "items" : {} npcs\outlawsniper.npctype 3,7c3 < "baseType" : "guard", < < "disableWornArmor" : true, < < "damageTeam" : 2, --- > "baseType" : "hostile", 11,25c7 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], --- > "dropPools" : [ "prisongunmantreasure" ], 28,76c10,11 < "attackerLimit" : 8, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "patrolDistance" : 4, < "noticeDistance" : 40, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 40, < "changeDirectionTimeRange" : [5, 10], < < "attackSayingPercent" : 25, < < "dialog" : { < "attack" : { < "default" : [ "Intruder!" < ], < "human" : { < "default" : [ < "Target practice!", < "I'm gonna pop you fulla holes!", < "Eat lead!", < "Why can't my gun hold more bullets?", < "Pew pew pew!", < "I want a bigger gun!", < "Get back here, scum! I want to shoot you!", < "Travellers are perfect for target practice!", < "Die faster, I'm getting bored.", < "My pistol brings the pain!", < "I can't hear you screaming!", < "Argh! I want a bigger gun!", < "I'm gonna explode you!", < "Point gun at... enemy? Instructions unclear.", < "Life just ain't the same without a gun at your side!", < "Finally, something to shoot!" < ] < } < } < } < }, < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 < }, < < "rangedAttack" : { < "maxDistance" : 40 --- > "dialog" : { > "attack" : "/dialog/sniper.config:attack" 92,94c27 < }, < < "dropPools" : [ "prisongunmantreasure" ] --- > } npcs\prisonberserker.npctype 3,7c3 < "baseType" : "guard", < < "disableWornArmor" : true, < < "damageTeam" : 2, --- > "baseType" : "hostile", 11,25c7 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], --- > "dropPools" : [ "prisonberserkertreasure" ], 28,65c10,35 < "attackerLimit" : 8, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "patrolDistance" : 7, < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < "changeDirectionTimeRange" : [5, 10], < < "attackSayingPercent" : 25, < < "dialog" : { < "attack" : { < "default" : [ "Intruder!" < ], < "human" : { < "default" : [ < "I'm gonna tear you a new one!", < "I'm going to rip you apart!", < "Wanna see a knife disappear?!", < "I'll murder you good!", < "Heeyah! Don't run from me!", < "I'm gonna stab out all your blood!", < "Another pukey traveller for my head collection!", < "You've trespassed for the last time!", < "I'm gonna fire you into the sun!", < "You're dead, you just don't know it yet!", < "Stab, slash, murder, tenderize!", < "I like my trespassers beaten to a pulp!", < "Run away if you want, wimp - I love the hunt!", < "You think you can beat US? Ha! My blade says otherwise!", < "Prepare to die... slowly.", < "Ohohoho! This is gonna be fun!" < ] < } --- > "dialog" : { > "attack" : { > "default" : { > "default" : [ > "Intruder!" > ] > }, > "human" : { > "default" : [ > "I'm gonna tear you a new one!", > "I'm going to rip you apart!", > "Wanna see a knife disappear?!", > "I'll murder you good!", > "Heeyah! Don't run from me!", > "I'm gonna stab out all your blood!", > "Another pukey traveller for my head collection!", > "You've trespassed for the last time!", > "I'm gonna fire you into the sun!", > "You're dead, you just don't know it yet!", > "Stab, slash, murder, tenderize!", > "I like my trespassers beaten to a pulp!", > "Run away if you want, wimp - I love the hunt!", > "You think you can beat US? Ha! My blade says otherwise!", > "Prepare to die... slowly.", > "Ohohoho! This is gonna be fun!" > ] 68,73c38,39 < }, < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 < }, --- > } > }, 75,77c41,44 < "meleeAttack" : { < "swingDistance" : 3, < "runThreshold" : 0 --- > "movementParameters" : { > "runSpeed" : 16, > "airJumpProfile" : { > "jumpSpeed" : 50.0 93,163d59 < }, < < "movementParameters" : { < "runSpeed" : 16, < "airJumpProfile" : { < "jumpSpeed" : 50.0 < } < }, < < "dropPools" : [ "prisonberserkertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 75.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\prisonbruiser.npctype 3,7c3 < "baseType" : "guard", < < "disableWornArmor" : true, < < "damageTeam" : 2, --- > "baseType" : "hostile", 11,25c7 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], --- > "dropPools" : [ "prisonbruisertreasure" ], 28,64c10,34 < "attackerLimit" : 8, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "patrolDistance" : 4, < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < "changeDirectionTimeRange" : [5, 10], < < "attackSayingPercent" : 25, < < "dialog" : { < "attack" : { < "default" : [ "Intruder!" < ], < "human" : { < "default" : [ < "Fresh meat!", < "I'm gonna enjoy this!", < "Oi! Get over 'ere.", < "Yer' cruisin' for a bruisin'!", < "I'm going to stab you, then I'm going to punch you!", < "Pointy end towards enemy... right, that's you!", < "Drop yer weapons and we'll brutalize you slightly less!", < "You've messed with the wrong biped!", < "There's no escaping, stranger!", < "Get closer so I can punch you!", < "Why can't I hold more smashy sticks?", < "Grr! You're dead meat!", < "I hate strangers!", < "We're gonna fry you up!", < "C'mere!" < ] < } --- > "dialog" : { > "attack" : { > "default" : { > "default" : [ > "Intruder!" > ] > }, > "human" : { > "default" : [ > "Fresh meat!", > "I'm gonna enjoy this!", > "Oi! Get over 'ere.", > "Yer' cruisin' for a bruisin'!", > "I'm going to stab you, then I'm going to punch you!", > "Pointy end towards enemy... right, that's you!", > "Drop yer weapons and we'll brutalize you slightly less!", > "You've messed with the wrong biped!", > "There's no escaping, stranger!", > "Get closer so I can punch you!", > "Why can't I hold more smashy sticks?", > "Grr! You're dead meat!", > "I hate strangers!", > "We're gonna fry you up!", > "C'mere!" > ] 67,76d36 < }, < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 < }, < < "meleeAttack" : { < "swingDistance" : 5, < "runThreshold" : 0 92,155d51 < }, < < "dropPools" : [ "prisonbruisertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 125.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\prisongunman.npctype 3,7c3 < "baseType" : "guard", < < "disableWornArmor" : true, < < "damageTeam" : 2, --- > "baseType" : "hostile", 11,25c7 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], --- > "dropPools" : [ "prisongunmantreasure" ], 28,76c10,11 < "attackerLimit" : 8, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "patrolDistance" : 4, < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < "changeDirectionTimeRange" : [5, 10], < < "attackSayingPercent" : 25, < < "dialog" : { < "attack" : { < "default" : [ "Intruder!" < ], < "human" : { < "default" : [ < "Target practice!", < "I'm gonna pop you fulla holes!", < "Eat lead!", < "Why can't my gun hold more bullets?", < "Pew pew pew!", < "I want a bigger gun!", < "Get back here, scum! I want to shoot you!", < "Travellers are perfect for target practice!", < "Die faster, I'm getting bored.", < "My pistol brings the pain!", < "I can't hear you screaming!", < "Argh! I want a bigger gun!", < "I'm gonna explode you!", < "Point gun at... enemy? Instructions unclear.", < "Life just ain't the same without a gun at your side!", < "Finally, something to shoot!" < ] < } < } < } < }, < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 < }, < < "rangedAttack" : { < "maxDistance" : 30 --- > "dialog" : { > "attack" : "/dialog/sniper.config:attack" 93,156d27 < }, < < "dropPools" : [ "prisongunmantreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 75.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\pyramidguard.npctype 3,7c3 < "baseType" : "guard", < < "disableWornArmor" : true, < < "damageTeam" : 1, --- > "baseType" : "hostile", 11,21c7,9 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", --- > "movementParameters" : { > "walkSpeed" : 6, > "runningSuppressed" : true, 23,24c11,14 < "/npcs/guard/guardState.lua" < ], --- > "airJumpProfile": { > "jumpSpeed" : 15.0 > } > }, 27,69c17,47 < "attackerLimit" : 50, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "patrolDistance" : 5, < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < "changeDirectionTimeRange" : [10, 20], < < "attackSayingPercent" : 25, < < "dialog" : { < "attack" : { < "default" : [ "Die, fiend!" ], < < "avian" : { < "default" : [ < "You... desecrate... this place...", < "I must... defend. I am compelled...", < "You will never leave...", < "You dishonor this tomb...", < "They... they want you gone...", < "Trespass... and you die...", < "Thief... Kluex will strike you down...", < "You will be buried... with the rest...", < "Please, release me from my bonds...", < "Die by my sword..." < ], < "avian" : [ < "You will... join me... in the ground...", < "Desecrator... I must destroy you...", < "Unbeliever... I have no choice...", < "You spat upon Kluex... now you will die...", < "Turn back, heretic...", < "Get out... you are forbidden...", < "They... compel me... run while you still can...", < "Heresy...", < "I... I remember Avos..." < ] < } --- > "dialog" : { > "attack" : { > "default" : { > "default" : [ > "Die, fiend!" > ] > }, > "avian" : { > "default" : [ > "You... desecrate... this place...", > "I must... defend. I am compelled...", > "You will never leave...", > "You dishonor this tomb...", > "They... they want you gone...", > "Trespass... and you die...", > "Thief... Kluex will strike you down...", > "You will be buried... with the rest...", > "Please, release me from my bonds...", > "Die by my sword..." > ], > "avian" : [ > "You will... join me... in the ground...", > "Desecrator... I must destroy you...", > "Unbeliever... I have no choice...", > "You spat upon Kluex... now you will die...", > "Turn back, heretic...", > "Get out... you are forbidden...", > "They... compel me... run while you still can...", > "Heresy...", > "I... I remember Avos..." > ] 72,79d49 < }, < < "meleeAttack" : { < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "backoffDistanceRange" : [6.0, 12.0], < "repositionCooldownTimeRange" : [0.0, 0.0], < "runThreshold" : 100 96,168d65 < }, < < "movementParameters" : { < "walkSpeed" : 6, < "runningSuppressed" : true, < < "airJumpProfile": { < "jumpSpeed" : 15.0 < } < }, < < "dropPools" : [ "guardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\servant.npctype 5,9d4 < "damageTeam" : 1, < "levelVariance" : [-1, -1], < < "disableWornArmor" : true, < 11,18c6,12 < < "noticePlayersRadius" : 30, < < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ "I have nothing to say to you" ], < --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ > "I have nothing to say to you" > ] > }, 73,201d66 < }, < < "flee" : { < "reactionTimeRange" : [0.2, 1.0], < "safeDistance" : 100, < "safeDistanceWithGuards" : 40, < "safeTimer" : 10, < "stuckTime" : 4, < "stuckCooldown" : 10, < "dialogTimeRange" : [4, 10], < < "dialog" : { < "helpme" : { < "default" : [ < "Guards! Help me!", < "Help! Guards! Help!", < "Guards! I've been accosted!" < ], < "glitch" : [ < "Fear. Guards! Help me!", < "Intimidated. Please don't hurt me!", < "Abused. Guards! I've been accosted!", < "Afraid. Get away from me! Guards!", < "Terrified. Save me!", < "Shocked. No! Get away from me!" < ] < }, < "helpthem" : { < "default" : [ < "What have you done!?" < ], < "glitch" : [ < "Fear. Guards!", < "Intimidated. Please don't hurt me!", < "Afraid. Leave me be! Guards!", < "Terrified. Save me!", < "Shocked. What have you done?!" < ], < "floran" : [ < "Ssstabby time for me!", < "Floran being hurted!", < "Floran not ready for hunt!", < "Greenguard help Floran!" < ] < }, < "encourage" : { < "default" : [ < "Get 'em!", < "Avenge me!", < "Stick 'em once for me!", < "Don't let 'em get away!" < ], < "glitch" : [ < "Encourage. Put 'em to the sword!", < "Excitement. Avenge me!", < "Aggressive. Strike him down!", < "Vengeful. Don't let 'em get away!" < ], < "floran" : [ < "Ssstabb the intruders!", < "Floran get revenge now!", < "Ssslice them!", < "Greenguard destroy it!" < ] < }, < "safe" : { < "default" : [ < "Phew, I think I got away.", < "I've escaped with my life!", < "Is this the safe zone?" < ], < "glitch" : [ < "Relieved. Phew, I think I got away.", < "Thankful. I've escaped with my life!", < "Wishful. If only I could afford a keep.", < "Hopeful. Am I safe?", < "Embarrassed. I think I leaked a little oil." < ], < "floran" : [ < "Floran sssafe now.", < "Floran not get ssstabbed after all.", < "Them lucky Floran not have weapon.", < "Sssalvation!" < ] < } < } < }, < < "sit" : { < "timeOfDayRanges" : [ [0.6, 1.0], [0.0, 0.2] ], < "moveTimeLimit" : 30, < "searchRadius" : 10, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [15, 240] < }, < < "sleep" : { < "searchRadius" : 15, < "lieDownRadius" : 3, < "moveToBedTimeLimit" : 10.0, < "timeOfDayRanges" : [ [ [0.7, 0.75], [0.95, 1.0] ] ], < "cooldown" : 30 < }, < < "chat" : { < "distanceRange" : [2.0, 4.0], < "conversations" : [ < [ < [2, "blabbering", "idle" ], < [1, "idle", "laugh" ], < [2, "idle", "blabbering" ], < [1, "sad", "idle" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "happy" ], < [1, "wink", "laugh" ], < [2, "happy", "happy" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "blabbering" ], < [2, "blabbering", "annoyed" ], < [3, "shouting", "shouting" ], < [2, "annoyed", "annoyed" ] < ] < ], < "cooldown" : 10 632,718d496 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\shroomguard.npctype 5,6d4 < "damageTeam" : 1, < 9,25c7 < "disableWornArmor" : true, < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], --- > "dropPools" : [ "shroomguardtreasure" ], 28,41c10,11 < "attackerLimit" : 8, < "attackerLimitCooldown" : 3, < < "guard" : { < "patrolDistance" : 25, < "noticeDistance" : 30, < "hailDistance" : 5, < "hailPercent" : 80, < "stopDistance" : -1, < "attackDistance" : -1, < "loseSightTime" : 10, < "loseSightDistance" : 30, < "wallCheckDistance" : 5, < "changeDirectionTimeRange" : [10, 20], --- > "dialog" : { > "converse" : "/dialog/shroom.config:hail", 43,114c13,28 < "dialog" : { < "hail" : { < "default" : [ < "Hoom! Feesle the mushroom habito!" < ], < "floran" : { < "default" : [ < "Hoom! Feesle the mushroom habito!" < ], < "human" : [ < "Hoom! Meat habble person nab fry!", < "Hoom meat. Seemo bizarra stamper!", < "Halhoom smooth! Chop deka halberdeen cartography!", < "Hoomah! Mesti hop smashroom danger!", < "Hoom! Halhoom!", < "Halmarr, spike circular deka bizarra!", < "Meat hoom! Enjoy house choka smashroom?", < "Halhalhoom! Tentacrush weepa no meat." < ], < "avian" : [ < "Hoom flap! Bizarra no Kluex fry!", < "Halhoom sillypeck. Choka smashroom nab house.", < "Halhalhoom, weepa cantara swoop nab cloudchaser.", < "Hoomay, flap! Halberdeen habble fluffy peck. Shree!", < "Haba hoom, sillyflap! swoop bizarra!", < "Hoom! Hoom hoom! Chop smashroom nab peace kisser!", < "Hoom habba flap flap, deka nab peck?", < "Hoom? Scratchy mesti cuddle?" < ], < "floran" : [ < "Hoom! Hoom hoom shroom! Plant naturra kissface!", < "Halhoom! Nab feara deka plant!", < "Hoom. Halb weepa nab smashroom.", < "Kissface plant! Nab halb squishfish! ", < "Halhalhalhoom, carpa house fry plant! Seemingly.", < "Habahoom squishfish, nab oaken smashroom cantaloupe!", < "Plant hoom! Kissface chop growa, halb!?", < "Hoom. Hoom plant. Nabi spike cutshroom, plesta?" < ], < "apex" : [ < "Hoom. Plesta mesti hairthing.", < "Humfah. Hairthing chop nab feara.", < "Hoom! Nab chop Giant Hairthing. Weepa?", < "Halhoom, hairthing. Nab smashroom, plesta.", < "Hoom. Hairthing hairface carpa woodshroom.", < "Plesti cantara, shroomy workest!", < "Hoom. Mesti nab chop hairthing. Halhoom!", < "Hoom! Hop chop, hairthing! Halb squishfish?" < ], < "hylotl" : [ < "Huh huh hoom? Squishfish...", < "Nab! ", < "Nab halb smashroom, squishfish! Cantara nab house, chop!", < "Kissface plant nab cutshroom, squishfish. Threaten!", < "Squeak. Hoom nab.", < "Hoom. Mesti nab disbravada, squishfish.", < "", < "Nab house, squishfish! Nab nab nab." < ], < "glitch" : [ < "Hoom, clankbeast. Habba nab cartography spaceshroom.", < "Halhoom, okay. Nab chop weepa, deka hairthing? Flap?", < "Halhalhoom. Smashroom nab plant?", < "Hurm. Hoom. Clankbeast house fry, shroomy halb.", < "Clankbeast! Chop carpa, cantara.", < "Hoom clankbeast. Halb plesti cantara, nab?", < "Hoom. Shroomy nab clankbeast feara. Mesti bravada!", < "Hoom. Clankbeast halb mesti, deka plant?" < ] < } < } < } --- > "attack" : "/dialog/shroom.config:hail", > "reattack" : "/dialog/shroom.config:hail", > "killedTarget" : "/dialog/shroom.config:hail", > "lostTarget" : "/dialog/shroom.config:hail", > "outOfSight" : "/dialog/combat.config:outOfSight", > "cantReach" : "/dialog/guard.config:cantReach", > > "hail" : "/dialog/shroom.config:hail", > "swordwarning1" : "/dialog/shroom.config:hail", > "gunwarning1" : "/dialog/shroom.config:hail", > "swordwarning2" : "/dialog/shroom.config:hail", > "gunwarning2" : "/dialog/shroom.config:hail", > "swordwarning3" : "/dialog/shroom.config:hail", > "gunwarning3" : "/dialog/shroom.config:hail", > "weaponSheathed" : "/dialog/shroom.config:hail", > "comeBack" : "/dialog/shroom.config:hail" 250,313d163 < }, < < "dropPools" : [ "shroomguardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\shroommerchant.npctype 2a3 > "baseType" : "merchant", 4d4 < "damageTeam" : 1, 7,12d6 < "disableWornArmor" : true, < < "scripts" : [ < "/npcs/bmain.lua" < ], < "initialScriptDelta" : 5, 14,67d7 < "behavior" : "/behaviors/npc/merchant.behavior", < "personality" : "normal", < < "idleTimeRange" : [2.0, 10.0], < < "tenant" : { < "emoteCooldownTimeRange" : [1.0, 2.0], < "complaintCooldownTimeRange" : [5.0, 10.0], < "severeComplaintTime" : 25.0, < "finalComplaintTime" : 35.0, < < "dialog" : { < "grumbles" : { < "tagCriteria" : { < "default" : [ < "No shroom habba homshroom?" < ] < }, < "enclosedArea" : { < "default" : [ < "Nay homshroom fix!" < ] < }, < "otherDeed" : { < "default" : [ < "Nay shropshroom mesta shropshroom!" < ] < }, < "severe" : { < "default" : [ < "Nay clink! Nay plesta!" < ] < }, < "final" : { < "default" : [ < "Nay foom, nuva shropshroom nay!" < ] < } < }, < "arrivedHome" : { < "beacon" : { < "default" : [ < "Clink?" < ] < }, < "rent" : { < "default" : [ < "Foomfoom plesta shropshroom!" < ] < } < } < } < }, < 71,103d10 < < "dialog" : { < "start" : { < "default" : { < "default" : [ < "Hoom! Exchanga habble pixels! Clink clink!", < "Hoom clinker. Habba shopshroom deka plesta?", < "Halhoom megaclinker. Habba chop chop workest!" < ], < "floran" : [ < "Halhalhoom, plant! Exchanga habble pixels! Chop clink!", < "Hoom, nab feara plant! Habble pixels, mesta clink clink.", < "Hoom. Plant clinker habba shopshroom plesta?" < ], < "hylotl" : [ < "Hum. Hoom. Squishfish nab feara halb clink.", < "Squishfish. Mesta nab tetrana chop clinker.", < "Hoom, squishfish. Nab smashroom habba clinker house. Okay?" < ] < } < }, < < "end" : { < "default" : [ < "Foom. Clink remore!", < "Fanfoom! Habba clink okay.", < "Foomfoom. Clink nab feara pixels!", < "Foom! Clink mesta plesta!" < ] < } < }, < < 113,164c20,27 < "returnToStore" : { < "waitTime" : 10, < "waitTargetDistance" : 10, < < "dialog" : { < "follow" : { < "default" : [ < "Nay halhoom clink! Come!", < "Nab clink, come hoom shropshroom!" < ] < }, < < "welcome" : { < "default" : [ < "Halhalhoom, clinker! Exchanga habble pixels! Chop clink!", < "Halhoom megaclinker. Habba chop chop workest!" < ] < }, < < "tout" : { < "default" : [ < "Clink!", < "Chop workest!" < ] < } < } < }, < < "flee" : { < "reactionTimeRange" : [0.2, 1.0], < "safeDistance" : 100, < "safeDistanceWithGuards" : 40, < "safeTimer" : 10, < "stuckTime" : 4, < "stuckCooldown" : 10, < "dialogTimeRange" : [4, 10], < < "dialog" : { < "helpme" : { < "default" : [ < "No shopshroom chop!" < ] < }, < "helpthem" : { < "default" : [ < "Chop!" < ] < }, < "encourage" : { < "default" : [ < "Chop no shopshroom! Chop!" < ] --- > "dialog" : { > "tenant" : { > "grumbles" : { > "tagCriteria" : "/dialog/shroom.config:tagCriteria", > "enclosedArea" : "/dialog/shroom.config:enclosedArea", > "otherDeed" : "/dialog/shroom.config:otherDeed", > "severe" : "/dialog/shroom.config:severe", > "final" : "/dialog/shroom.config:final" 166,170c29,31 < "safe" : { < "default" : [ < "Halhoom megaclinker!", < "Halhalhoom!" < ] --- > "arrivedHome" : { > "beacon" : "/dialog/shroom.config:beacon", > "rent" : "/dialog/shroom.config:rent" 172,182c33 < } < }, < < "sit" : { < "timeOfDayRanges" : [ [0.6, 1.0], [0.0, 0.2] ], < "moveTimeLimit" : 30, < "searchRadius" : 25, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [ 15, 240 ] < }, --- > }, 184,190c35 < "sleep" : { < "searchRadius" : 15, < "lieDownRadius" : 3, < "moveToBedTimeLimit" : 10.0, < "timeOfDayRanges" : [ [ [ 0.7, 0.75 ], [ 0.95, 1.0 ] ] ], < "cooldown" : 30 < }, --- > "converse" : "/dialog/shroom.config:hail", 192,203c37,43 < "wander" : { < "timeRange" : [1.0, 3.0], < "chatDistance" : 4, < "indoorTimeOfDayRanges" : [ [0.0, 0.2], [0.5, 1.0] ], < "indoorSearchRadius" : 60, < "indoorLookaheadDistance" : 4, < "moveToTargetTime" : 10.0, < "changeDirectionCooldown" : 2, < "dropDownChance" : 5, < "cooldown" : 10, < "maxDistanceFromSpawnPoint" : 3 < }, --- > "merchant" : { > "start" : "/dialog/shroom.config:start", > "end" : "/dialog/shroom.config:end", > "follow" : "/dialog/shroom.config:follow", > "welcome" : "/dialog/shroom.config:welcome", > "tout" : "/dialog/shroom.config:tout" > }, 205,228c45,50 < "chat" : { < "distanceRange" : [ 2.0, 4.0 ], < "conversations" : [ < [ < [ 2, "blabbering", "idle" ], < [ 1, "idle", "laugh" ], < [ 2, "idle", "blabbering" ], < [ 1, "sad", "idle" ] < ], < [ < [ 2, "idle", "blabbering" ], < [ 2, "blabbering", "happy" ], < [ 1, "wink", "laugh" ], < [ 2, "happy", "happy" ] < ], < [ < [ 2, "idle", "blabbering" ], < [ 2, "blabbering", "blabbering" ], < [ 2, "blabbering", "annoyed" ], < [ 3, "shouting", "shouting" ], < [ 2, "annoyed", "annoyed" ] < ] < ], < "cooldown" : 10 --- > "flee" : { > "helpme" : "/dialog/shroom.config:helpme", > "helpthem" : "/dialog/shroom.config:helpthem", > "encourage" : "/dialog/shroom.config:encourage", > "safe" : "/dialog/shroom.config:safe" > } 251,341d72 < }, < < "dropPools" : [ "basicMonsterTreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\stimmerchant.npctype 5,9d4 < "disableWornArmor" : true, < < "damageTeam" : 1, < "levelVariance" : [0, 0], < 11d5 < 16c10,19 < "dialog" : { --- > "categories" : { > "default" : [ "stimmerchant" ] > }, > "buyFactorRange" : [ 1.0, 1.0 ], > "sellFactorRange" : [ 0.2, 0.2 ], > "numItems" : 4 > }, > > "dialog" : { > "merchant" : { 18,20c21,25 < "default" : [ < "Need a little pick-me-up?" < ], --- > "default" : { > "default" : [ > "Need a little pick-me-up?" > ] > }, 79,81c84,88 < "default" : [ < "Just to be clear; I'm not responsible for any side-effects!" < ], --- > "default" : { > "default" : [ > "Just to be clear; I'm not responsible for any side-effects!" > ] > }, 125,154c132 < }, < < "categories" : { < "default" : [ "stimmerchant" ] < }, < "buyFactorRange" : [ 1.0, 1.0 ], < "sellFactorRange" : [ 0.2, 0.2 ], < "numItems" : 4 < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "runThreshold" : 9, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 --- > } 247,308d224 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\templeguard.npctype 5,8d4 < "disableWornArmor" : true, < < "damageTeam" : 1, < 11,25c7 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], --- > "dropPools" : [ "templeguardtreasure" ], 28,43c10,12 < "attackerLimit" : 8, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "patrolDistance" : 5, < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < "changeDirectionTimeRange" : [5, 10], < < "attackSayingPercent" : 25, < < "dialog" : { < "attack" : { --- > "dialog" : { > "attack" : { > "default" : { 52,63c21,32 < ], < "avian" : { < "default" : [ < "Filthy Grounded scum! Today, you die!", < "Rend the unbeliever limb from limb!", < "Your disbelief will be your undoing!", < "I?ÇÖll kill you myself, scum!", < "Your disregard towards our mighty Kluex is despicable!", < "We?ÇÖll throw you off the tower and see if you can fly!", < "I... I must destroy you, heretic! I have no choice!" < ] < } --- > ] > }, > "avian" : { > "default" : [ > "Filthy Grounded scum! Today, you die!", > "Rend the unbeliever limb from limb!", > "Your disbelief will be your undoing!", > "I?ÇÖll kill you myself, scum!", > "Your disregard towards our mighty Kluex is despicable!", > "We?ÇÖll throw you off the tower and see if you can fly!", > "I... I must destroy you, heretic! I have no choice!" > ] 66,75d34 < }, < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 < }, < < "meleeAttack" : { < "switchDistance" : 15, < "runThreshold" : 0 95,158d53 < }, < < "dropPools" : [ "templeguardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\tombzombie.npctype 3,7c3 < "baseType" : "guard", < < "disableWornArmor" : true, < < "damageTeam" : 1, --- > "baseType" : "hostile", 11,21c7,9 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", --- > "movementParameters" : { > "walkSpeed" : 6, > "runningSuppressed" : true, 23,24c11,14 < "/npcs/guard/guardState.lua" < ], --- > "airJumpProfile": { > "jumpSpeed" : 15.0 > } > }, 31,55c21,37 < "guard" : { < "patrolDistance" : 5, < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < "changeDirectionTimeRange" : [10, 20], < < "attackSayingPercent" : 25, < < "dialog" : { < "attack" : { < "default" : [ "Intruder!" < ], < "avian" : { < "default" : [ < "Leave this place...", < "Interloper...", < "Desecrator...", < "Protect...", < "Get out...", < "Filth...", < "Cleanse..." < ] < } --- > "dialog" : { > "attack" : { > "default" : { > "default" : [ > "Intruder!" > ] > }, > "avian" : { > "default" : [ > "Leave this place...", > "Interloper...", > "Desecrator...", > "Protect...", > "Get out...", > "Filth...", > "Cleanse..." > ] 58,65d39 < }, < < "meleeAttack" : { < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "backoffDistanceRange" : [6.0, 12.0], < "repositionCooldownTimeRange" : [0.0, 0.0], < "runThreshold" : 100 82,154d55 < }, < < "movementParameters" : { < "walkSpeed" : 6, < "runningSuppressed" : true, < < "airJumpProfile": { < "jumpSpeed" : 15.0 < } < }, < < "dropPools" : [ "guardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\toolmerchant.npctype 5,9d4 < "disableWornArmor" : true, < < "damageTeam" : 1, < "levelVariance" : [0, 0], < 11d5 < 14a9,15 > "categories" : { > "default" : [ "toolmerchant" ] > }, > "buyFactorRange" : [ 1.0, 1.0 ], > "sellFactorRange" : [ 0.2, 0.2 ], > "numItems" : 3 > }, 16c17,18 < "dialog" : { --- > "dialog" : { > "merchant" : { 18,22c20,26 < "default" : [ < "Going spelunking? I've got just the thing!", < "You'll want some of my supplies if you're going mining.", < "This stuff is useful for any adventurous cave explorer!" < ], --- > "default" : { > "default" : [ > "Going spelunking? I've got just the thing!", > "You'll want some of my supplies if you're going mining.", > "This stuff is useful for any adventurous cave explorer!" > ] > }, 79,83c83,89 < "default" : [ < "Come on back if you need anything else!", < "If you need more, you know where to find me!", < "Be careful now." < ], --- > "default" : { > "default" : [ > "Come on back if you need anything else!", > "If you need more, you know where to find me!", > "Be careful now." > ] > }, 127,156c133 < }, < < "categories" : { < "default" : [ "toolmerchant" ] < }, < "buyFactorRange" : [ 1.0, 1.0 ], < "sellFactorRange" : [ 0.2, 0.2 ], < "numItems" : 3 < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "runThreshold" : 9, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 --- > } 241,302d217 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\towerascendant.npctype 2a3 > "baseType" : "base", 4,22d4 < "damageTeam" : 1, < "levelVariance" : [-1, -1], < < "disableWornArmor" : true, < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/converseState.lua", < "/npcs/fleeState.lua", < "/npcs/standingIdleState.lua" < ], < "initialScriptDelta" : 5, 24,42c6 < "doorHitPoly" : [ [2, -1], [2, 1], [0, 1], [0, -1] ], < "idleTimeRange" : [2.0, 10.0], < "gapSensor" : [ [2.0, -4.5] ], < "gapFarSideSensors" : [ [3.0, -4.5], [4.0, -4.5], [5.0, -4.5], [6.0, -4.5], [7.0, -4.5], [8.0, -4.5] ], < "gapJumpHoldTime" : 0.4, < //testing only < "trading" : { < "config" : "/interface/windowconfig/shop.config", < "filter" : [ ], < "titleFromEntity" : true, < "requiresBlueprint" : false, < "recipes" : [ < { < "input" : [ { "name" : "money", "count" : 10 } ], < "output" : { "name" : "fullwood1" } < } < ] < }, < //--- --- > "behavior" : "/behaviors/npc/idler.behavior", 44,46c8,9 < "converse" : { < "waitTime" : 0.5, < "dialog" : { --- > "dialog" : { > "converse" : { 63,75c26,27 < } < }, < < "flee" : { < "reactionTimeRange" : [0.2, 1.0], < "safeDistance" : 100, < "safeDistanceWithGuards" : 40, < "safeTimer" : 10, < "stuckTime" : 4, < "stuckCooldown" : 10, < "dialogTimeRange" : [4, 10], < < "dialog" : { --- > }, > "flee" : { 77c29,30 < "default" : [ --- > "default" : { > "default" : [ 81c34,35 < ] --- > ] > } 84c38,39 < "default" : [ --- > "default" : { > "default" : [ 87c42,43 < ] --- > ] > } 90c46,47 < "default" : [ --- > "default" : { > "default" : [ 92c49,50 < ] --- > ] > } 95c53,54 < "default" : [ --- > "default" : { > "default" : [ 99c58,59 < ] --- > ] > } 166,252d125 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 0.75 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\tutorial.npctype 3,12c3,7 < < "damageTeam" : 1, < "levelVariance" : [-1, -1], < < "disableWornArmor" : true, < < "scripts" : [ < "/npcs/bmain.lua" < ], < "initialScriptDelta" : 5, --- > "baseType" : "base", > > "dropPools" : [ "villagertreasure" ], > > "persistent" : true, 17,31c12,23 < "doorHitPoly" : [ [2, -1], [2, 1], [0, 1], [0, -1] ], < "idleTimeRange" : [2.0, 10.0], < "gapSensor" : [ [2.0, -4.5] ], < "gapFarSideSensors" : [ [3.0, -4.5], [4.0, -4.5], [5.0, -4.5], [6.0, -4.5], [7.0, -4.5], [8.0, -4.5] ], < "gapJumpHoldTime" : 0.4, < //testing only < "trading" : { < "config" : "/interface/windowconfig/shop.config", < "filter" : [ ], < "titleFromEntity" : true, < "requiresBlueprint" : false, < "recipes" : [ < { < "input" : [ { "name" : "money", "count" : 10 } ], < "output" : { "name" : "fullwood1" } --- > "dialog" : { > "tenant" : { > "grumbles" : { > "tagCriteria" : "/dialog/grumble.config:tagCriteria", > "enclosedArea" : "/dialog/grumble.config:enclosedArea", > "otherDeed" : "/dialog/grumble.config:otherDeed", > "severe" : "/dialog/grumble.config:severe", > "final" : "/dialog/grumble.config:final" > }, > "arrivedHome" : { > "beacon" : "/dialog/arrivedhome.config:beacon", > "rent" : "/dialog/arrivedhome.config:rent" 33,40c25 < ] < }, < < "tenant" : { < "emoteCooldownTimeRange" : [1.0, 2.0], < "complaintCooldownTimeRange" : [5.0, 10.0], < "severeComplaintTime" : 25.0, < "finalComplaintTime" : 35.0, --- > }, 42,81c27,33 < "dialog" : { < "grumbles" : { < "tagCriteria" : { < "default" : [ "Something in my place has changed, I don't like it!" ], < "human" : [ < "Something feels off in my home...", < "The arrangement has changed, this isn't alright...", < "Has something moved in here? It feels off..." < ] < }, < "enclosedArea" : { < "default" : [ "My home could use some repairs!" ], < "human" : [ < "My home could use some repairs...", < "There's damages in here, can you sort it out?", < "I have a need for repairs here!" < ] < }, < "otherDeed" : { < "default" : [ "I thought this place was for me!" ], < "human" : [ < "Wasn't this place for me?", < "Are you trying to have someone move in to my home?!", < "Why did you place another deed here?!" < ] < }, < "severe" : { < "default" : [ "I can't live in these conditions!" ], < "human" : [ < "I can't live in these conditions!", < "These are unacceptable conditions...", < "I won't stand for these conditions much longer!" < ] < }, < "final" : { < "default" : [ "I've had enough of this!" ], < "human" : [ < "I've had enough of this!", < "That's it, I give up. Time to leave!", < "I give up, I'm moving out!" --- > "flee" : { > "helpme" : { > "default" : { > "default" : [ > "Time to scram!", > "Don't kill me! I'm more useful alive!", > "I don't deserve to meet my end here!" 85,91c37,40 < "arrivedHome" : { < "beacon" : { < "default" : [ "I'm home!" ], < "human" : [ < "You called?", < "Is there something you need me for?", < "You have need of me?" --- > "helpthem" : { > "default" : { > "default" : [ > "What have you done!?" 93,99c42,59 < }, < "rent" : { < "default" : [ "Here's a gift for all your help!" ], < "human" : [ < "I thought you might like this!", < "Here's something for your troubles!", < "Here's a little thank you gift!" --- > } > }, > "encourage" : { > "default" : { > "default" : [ > "Get 'em!", > "Avenge me!", > "Stick 'em once for me!", > "Don't let 'em get away!" > ] > } > }, > "safe" : { > "default" : { > "default" : [ > "I survived another close shave!", > "I should probably be more careful in future. That was close.", > "I need a break!" 103,104c63 < } < }, --- > }, 106,109c65,70 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ "I'm just on my travels, doing my own thing." ], --- > "converse" : { > "default" : { > "default" : [ > "I'm just on my travels, doing my own thing." > ] > }, 130,233d90 < }, < < "flee" : { < "reactionTimeRange" : [0.2, 1.0], < "safeDistance" : 100, < "safeDistanceWithGuards" : 40, < "safeTimer" : 10, < "stuckTime" : 4, < "stuckCooldown" : 10, < "dialogTimeRange" : [4, 10], < < "dialog" : { < "helpme" : { < "default" : [ < "Time to scram!", < "Don't kill me! I'm more useful alive!", < "I don't deserve to meet my end here!" < ] < }, < "helpthem" : { < "default" : [ < "What have you done!?" < ] < }, < "encourage" : { < "default" : [ < "Get 'em!", < "Avenge me!", < "Stick 'em once for me!", < "Don't let 'em get away!" < ] < }, < "safe" : { < "default" : [ < "I survived another close shave!", < "I should probably be more careful in future. That was close.", < "I need a break!" < ] < } < } < }, < < "sit" : { < "timeOfDayRanges" : [ [0.6, 1.0], [0.0, 0.2] ], < "moveTimeLimit" : 30, < "searchRadius" : 25, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [15, 240] < }, < < "sleep" : { < "searchRadius" : 15, < "lieDownRadius" : 3, < "moveToBedTimeLimit" : 10.0, < "timeOfDayRanges" : [ [ [0.7, 0.75], [0.95, 1.0] ] ], < "cooldown" : 30 < }, < < "wander" : { < "timeRange" : [2.0, 10.0], < "chatDistance" : 4, < "indoorTimeOfDayRanges" : [ [0.0, 0.2], [0.5, 1.0] ], < "indoorSearchRadius" : 60, < "indoorLookaheadDistance" : 4, < "moveToTargetTime" : 10.0, < "changeDirectionCooldown" : 2, < "dropDownChance" : 5, < "cooldown" : 10 < }, < < "work" : { < "timeOfDayRanges" : [ [0.2, 0.6] ], < "tools" : [ [ "hoe", 0.5, 2.0] ], < "toolRange" : 3.0, < "searchDistance" : 10.0, < "timeRange" : [4.0, 6.0], < "cooldown" : 10.0 < }, < < "chat" : { < "distanceRange" : [2.0, 4.0], < "conversations" : [ < [ < [2, "blabbering", "idle" ], < [1, "idle", "laugh" ], < [2, "idle", "blabbering" ], < [1, "sad", "idle" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "happy" ], < [1, "wink", "laugh" ], < [2, "happy", "happy" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "blabbering" ], < [2, "blabbering", "annoyed" ], < [3, "shouting", "shouting" ], < [2, "annoyed", "annoyed" ] < ] < ], < "cooldown" : 10 533,623d389 < }, < < "dropPools" : [ "villagertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 80 < }, < "healthRegen" : { < "baseValue" : 15.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\tutorialtenant.npctype 3,12c3 < < "damageTeam" : 1, < "levelVariance" : [-1, -1], < < "disableWornArmor" : true, < < "scripts" : [ < "/npcs/bmain.lua" < ], < "initialScriptDelta" : 5, --- > "baseType" : "base", 14,15c5 < "scriptConfig" : { < "behavior" : "/behaviors/npc/tutorialtenant.behavior", --- > "dropPools" : [ "villagertreasure" ], 17,34c7 < "doorHitPoly" : [ [2, -1], [2, 1], [0, 1], [0, -1] ], < "idleTimeRange" : [2.0, 10.0], < "gapSensor" : [ [2.0, -4.5] ], < "gapFarSideSensors" : [ [3.0, -4.5], [4.0, -4.5], [5.0, -4.5], [6.0, -4.5], [7.0, -4.5], [8.0, -4.5] ], < "gapJumpHoldTime" : 0.4, < //testing only < "trading" : { < "config" : "/interface/windowconfig/shop.config", < "filter" : [ ], < "titleFromEntity" : true, < "requiresBlueprint" : false, < "recipes" : [ < { < "input" : [ { "name" : "money", "count" : 10 } ], < "output" : { "name" : "fullwood1" } < } < ] < }, --- > "persistent" : true, 36,40c9,10 < "tenant" : { < "emoteCooldownTimeRange" : [1.0, 2.0], < "complaintCooldownTimeRange" : [5.0, 10.0], < "severeComplaintTime" : 25.0, < "finalComplaintTime" : 35.0, --- > "scriptConfig" : { > "behavior" : "/behaviors/npc/tutorialtenant.behavior", 42c12,13 < "dialog" : { --- > "dialog" : { > "tenant" : { 44,83c15,19 < "tagCriteria" : { < "default" : [ "Something in my place has changed, I don't like it!" ], < "human" : [ < "Something feels off in my home...", < "The arrangement has changed, this isn't alright...", < "Has something moved in here? It feels off..." < ] < }, < "enclosedArea" : { < "default" : [ "My home could use some repairs!" ], < "human" : [ < "My home could use some repairs...", < "There's damages in here, can you sort it out?", < "I have a need for repairs here!" < ] < }, < "otherDeed" : { < "default" : [ "I thought this place was for me!" ], < "human" : [ < "Wasn't this place for me?", < "Are you trying to have someone move in to my home?!", < "Why did you place another deed here?!" < ] < }, < "severe" : { < "default" : [ "I can't live in these conditions!" ], < "human" : [ < "I can't live in these conditions!", < "These are unacceptable conditions...", < "I won't stand for these conditions much longer!" < ] < }, < "final" : { < "default" : [ "I've had enough of this!" ], < "human" : [ < "I've had enough of this!", < "That's it, I give up. Time to leave!", < "I give up, I'm moving out!" < ] < } --- > "tagCriteria" : "/dialog/grumble.config:tagCriteria", > "enclosedArea" : "/dialog/grumble.config:enclosedArea", > "otherDeed" : "/dialog/grumble.config:otherDeed", > "severe" : "/dialog/grumble.config:severe", > "final" : "/dialog/grumble.config:final" 87,88c23,29 < "default" : [ "I'm home!" ], < "human" : [ --- > "default" : { > "default" : [ > "I'm home!" > ] > }, > "human" : { > "default" : [ 92c33,34 < ] --- > ] > } 95,96c37,43 < "default" : [ "Here's a gift for all your help!" ], < "human" : [ --- > "default" : { > "default" : [ > "Here's a gift for all your help!" > ] > }, > "human" : { > "default" : [ 100c47,48 < ] --- > ] > } 103,104c51 < } < }, --- > }, 106,109c53,58 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ "I'm just on my travels, doing my own thing." ], --- > "converse" : { > "default" : { > "default" : [ > "I'm just on my travels, doing my own thing." > ] > }, 131,141c80 < } < }, < < "flee" : { < "reactionTimeRange" : [0.2, 1.0], < "safeDistance" : 100, < "safeDistanceWithGuards" : 40, < "safeTimer" : 10, < "stuckTime" : 4, < "stuckCooldown" : 10, < "dialogTimeRange" : [4, 10], --- > }, 145,149c84,90 < "default" : [ < "Time to scram!", < "Don't kill me! I'm more useful alive!", < "I don't deserve to meet my end here!" < ] --- > "default" : { > "default" : [ > "Time to scram!", > "Don't kill me! I'm more useful alive!", > "I don't deserve to meet my end here!" > ] > } 152,154c93,97 < "default" : [ < "What have you done!?" < ] --- > "default" : { > "default" : [ > "What have you done!?" > ] > } 157,162c100,107 < "default" : [ < "Get 'em!", < "Avenge me!", < "Stick 'em once for me!", < "Don't let 'em get away!" < ] --- > "default" : { > "default" : [ > "Get 'em!", > "Avenge me!", > "Stick 'em once for me!", > "Don't let 'em get away!" > ] > } 165,169c110,116 < "default" : [ < "I survived another close shave!", < "I should probably be more careful in future. That was close.", < "I need a break!" < ] --- > "default" : { > "default" : [ > "I survived another close shave!", > "I should probably be more careful in future. That was close.", > "I need a break!" > ] > } 172,235d118 < }, < < "sit" : { < "timeOfDayRanges" : [ [0.6, 1.0], [0.0, 0.2] ], < "moveTimeLimit" : 30, < "searchRadius" : 25, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [15, 240] < }, < < "sleep" : { < "searchRadius" : 15, < "lieDownRadius" : 3, < "moveToBedTimeLimit" : 10.0, < "timeOfDayRanges" : [ [ [0.7, 0.75], [0.95, 1.0] ] ], < "cooldown" : 30 < }, < < "wander" : { < "timeRange" : [2.0, 10.0], < "chatDistance" : 4, < "indoorTimeOfDayRanges" : [ [0.0, 0.2], [0.5, 1.0] ], < "indoorSearchRadius" : 60, < "indoorLookaheadDistance" : 4, < "moveToTargetTime" : 10.0, < "changeDirectionCooldown" : 2, < "dropDownChance" : 5, < "cooldown" : 10 < }, < < "work" : { < "timeOfDayRanges" : [ [0.2, 0.6] ], < "tools" : [ [ "hoe", 0.5, 2.0] ], < "toolRange" : 3.0, < "searchDistance" : 10.0, < "timeRange" : [4.0, 6.0], < "cooldown" : 10.0 < }, < < "chat" : { < "distanceRange" : [2.0, 4.0], < "conversations" : [ < [ < [2, "blabbering", "idle" ], < [1, "idle", "laugh" ], < [2, "idle", "blabbering" ], < [1, "sad", "idle" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "happy" ], < [1, "wink", "laugh" ], < [2, "happy", "happy" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "blabbering" ], < [2, "blabbering", "annoyed" ], < [3, "shouting", "shouting" ], < [2, "annoyed", "annoyed" ] < ] < ], < "cooldown" : 10 535,625d417 < }, < < "dropPools" : [ "villagertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 80 < }, < "healthRegen" : { < "baseValue" : 15.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\villageguard.npctype 2a3 > "baseType" : "base", 4,17c5 < "damageTeam" : 1, < < "disableWornArmor" : true, < < "levelVariance" : [0, 0], < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", --- > "persistent" : true, 19,20c7 < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", --- > "dropPools" : [ "guardtreasure" ], 22,26d8 < "/npcs/guard/guardState.lua", < "/npcs/guard/houndState.lua", < "/npcs/guard/returnToPostState.lua" < ], < "initialScriptDelta" : 5, 28,460c10 < "attackerLimit" : 4, < "attackerLimitCooldown" : 3, < < "guard" : { < "patrolDistance" : 4, < "noticeDistance" : 5, < "hailDistance" : 5, < "hailPercent" : 50, < "stopDistance" : -1, < "attackDistance" : -1, < "loseSightTime" : 10, < "loseSightDistance" : 30, < "wallCheckDistance" : 5, < "changeDirectionTimeRange" : [10, 20], < < "dialog" : { < "reattack" : { < "default" : [ < "You again!" < ] < }, < "hail" : { < "default" : [ < "I've got my eyes on you.", < "Keep on the straight and narrow, you.", < "We don't tolerate miscreants here.", < "Move along." < ], < "glitch" : { < "default" : [ < "Stern. Keep your olfactory device clean." < ], < "human" : [ < "Cautious. Behave yourself, meat man.", < "Polite. So very nice to see you, human.", < "Jovial. Have a wonderful time, human.", < "Suspicious. Are you here for a purpose, human?", < "Insincere. It is adorable to see you.", < "Inexperienced. Eep, a fleshy monster!" < < ], < "avian" : [ < "Unsure. May Big Bird guide you...?", < "Polite. Greetings, Avian.", < "Welcoming. Peace be with you, feathered one.", < "Cheerful. Hail, bird friend!", < "Hesitant. We don't normally see Avians here.", < "Relaxed. Catch you on the flipside, birdy." < ], < "floran" : [ < "Alert. Welcome, our stabby Floran friend.", < "Optimistic. I'm sure you won't be any trouble.", < "Awestruck. A civilised Floran! Welcome!", < "Reticent. You won't be a problem... right?", < "Stern. You behave yourself, plant creature.", < "Enthusiastic. I always love it when a Floran drops in." < ], < "apex" : [ < "Supportive. Hello there, large ape.", < "Firm. You and your hair stay out of trouble, now.", < "Conspiratorial. You are safe here, Apex.", < "Warm. You are welcome here any time, Apex.", < "Paranoid. I hope you have not brought the Miniknog upon us, ape.", < "Positive. I'm sure your days of oppression are far behind you!" < ], < "hylotl" : [ < "Insincerity. Have an absolutely wonderful day, Hylotl friend!", < "Dismissive. Try not to get yourself killed, Hylotl.", < "Contemptuous. I can see you're about to cause trouble.", < "Bored. I would absolutely love to hear more about your culture.", < "Disinterest. Just pipe down, fish.", < "Condemning. I'm sure you're here just to be awkward." < ], < "glitch" : [ < "Concerned. Watch yourself here, outcast.", < "Menacing. You do not have friends in our midst, outcast.", < "Kind. Not all are unsympathetic to your cause, outcast.", < "Concerned. Should you be here, outsider?", < "Alert. Your free will might get you into trouble here, outcast.", < "Apprehensive. I hope your newfound freedom still encourages you to behave." < < ] < }, < "human" : { < "default" : [ < "Watch yourself, stranger.", < "Welcome, traveller." < ], < "apex" : [ < "Stay out of trouble, stranger.", < "Don't worry, friend. You're safe from the Miniknog here." < ], < "avian" : [ < "Whoa! An Avian! Hi there.", < "I hope you Avians know how to follow human laws." < ], < "floran" : [ < "A Floran! Wow! Please don't eat me! Ha ha.", < "Hey there, friend. Try not to stab or eat anyone.", < "I wonder if you'd taste nice with ranch dressing..." < ], < "glitch" : [ < "Whoa, it's a Glitch! Can I get you an oilcan?", < "Do Glitch find wrenches and spanners offensive?" < ], < "hylotl" : [ < "Hail, Hylotl. Welcome." < ], < "human" : [ < "Hi, friend! Which colony do you hail from?", < "Hey! Welcome, traveller." < ] < }, < "floran" : { < "default" : [ < "Ssstay out of trouble, or Floran will eat you." < ], < "apex" : [ < "Floran does not understand your beardsss." < ], < "avian" : [ < "Floran wondersss if Avian bird god tastes like chicken.", < "Avianss should ssstay out of trouble, or they will be eaten." < ], < "human" : [ < "Behave yourssself, human..." < ], < "hylotl" : [ < "Floran wantsss to stab something...", < "Floran is hungry for Hylotl flesh...", < "Hylotl will behave, or be eaten.", < "Hylotl eyesss are especially tasty..." < ], < "glitch" : [ < "Floran tried to eat a Glitch once, would not recommend.", < "Glitch are lucky that they is untasty.", < "Glitch will stay out of trouble or be disassembled." < ], < "floran" : [ < "Floran will stay out of trouble, or Floran will eat... Floran? Floran is confused.", < "Weakling troublemaker Floransss are tasty." < ] < }, < "apex" : { < "default" : [ < "Are you a spy? Wait, no, don't answer that.", < "Stay silent, traveller, and don't cause trouble.", < "*psst* The Miniknog is watching. Take care.", < "Welcome, traveller. Hail Big Ape!", < "Behave yourself, stranger.", < "*psst* Behind every clock is a camera. Careful.", < "Please don't cause any trouble, the Miniknog will take my family if you do.", < "Make trouble and you'll find yourself on a one-way trip to Miniknog Leisure Resort.", < "All hail Big Ape! Right, stranger?", < "Big Ape will find a way to punish you if you make trouble, traveller.", < "Big Ape loves us all, except the ones he doesn't.", < "Hail, traveller! Remember: mouth shut, eyes forward.", < "Welcome, stranger. The Miniknog is here to protect us." < ] < }, < "hylotl" : { < "default" : [ < "Welcome, traveller. Please marvel at our exquisite building designs.", < "Hey. Stranger. Try not to cause any trouble.", < "Phew. For a second I thought you were a Floran, sneaking up on me.", < "Hail, stranger. We're friendly, but keep your nose clean.", < "If you know any Florans, please try not to lead them here.", < "Please be careful not to break any of our beautiful chairs and tables.", < "If you're intending to cause trouble while you're here, think twice. Or three times, even.", < "Welcome, stranger. Are you here to admire our culture?" < ], < "floran" : [ < "Oh, look. It's a Floran. Ugh. Just behave, alright?", < "Just be warned, we don't like your type around these parts.", < "My parents told me stories about your race. They weren't nice ones.", < "Oh noooo, it's a Floran. Please don't stab or eat me, I wouldn't like that.", < "Try not to ruin anything while you're here, would you?", < "A civilized Floran? Doubt it. Don't cause any trouble, or you'll regret it.", < "Plant people? Yuck. More like dirt people. We'll be watching you.", < "Do you Florans even have chairs on your home planet? Ours are better anyway.", < "Look, it's a Floran, here to offend our sensibilities. Boooo." < ] < }, < "avian" : { < "default" : [ < "Welcome, traveller! I'll have to warn you - we don't worship Kluex here.", < "Hail! Do you come with any news of Avos?", < "Watch yourself, stranger, our spears are freshly sharpened.", < "Oh, it's a traveller. I hope your time here is pleasant.", < "Hello, stranger. Try not to break anything while you're here.", < "Welcome! Be sure to visit our market if you have a chance.", < "I hope you're not a spy from the priesthood. We don't take kindly to that...", < "Welcome to our humble settlement, stranger.", < "As long as you don't break anything or kill anyone, you are welcome here.", < "We are a peaceful people, so long as you don't try to spread the light of Kluex." < ] < } < } < } < }, < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 < }, < < "hound" : { < "followDistance" : 4, < "warningTime" : 10, < "loseSightTime" : 10, < "loseSightDistance" : 20, < "sayComeBackCooldown" : 10, < < "dialog" : { < "warnings" : [ < { < "sword" : { < "default" : [ < "You better put that away before you hurt yourself.", < "Put that blade away before you trip and poke your eye out.", < "Don't make me take that weapon from you.", < "No need to be threatening.", < "A drawn weapon is a sign of intent." < ], < "floran" : { < "default" : [ < "Floran ssstab quicker, faster. Put weapon away.", < "Floran not like ssstabbing when others do it." < ] < }, < "glitch" : { < "default" : [ < "Anger. Stow your blade." < ], < "human" : [ < "Threatening. Stow your weapon, flesh sack.", < "Menacing. Sheath that weapon before you do yourself an injury." < ], < "avian" : [ < "Cautious. For what reason have you drawn this weapon, bird?", < "Alert. An Avian with a weapon drawn is a feather away from injury." < ], < "floran" : [ < "Sympathy. It may be an alien concept for you, but please put your weapon away.", < "Nervous. You'll have no trouble here. No need for the weapon." < ], < "apex" : [ < "Reassuring. You're safe from the Miniknog here. Stow your weapon.", < "Anger. Put that weapon away before we mistake you for a Miniknog agent." < ], < "hylotl" : [ < "Scorn. What are you going to do with that weapon, exactly? Put it away.", < "Derision. There are no lily pads to carve around here. Put that weapon away." < ], < "glitch" : [ < "Outcast, a weapon sword is considered an act of aggression. Comply.", < "Have you been outcast so long that you've forgotten our rules? No drawn weapons." < ] < } < }, < "gun" : { < "default" : [ < "Put that gun away before you shoot your eye out.", < "This isn't the wild west - put your gun away.", < "Don't wave that thing around.", < "Holster that gun. Now.", < "Please put that away." < ], < "floran" : { < "default" : [ < "Floran not like ssshooty thing. Put away.", < "Ssshooty thing make Floran go hissss. Away." < ] < }, < "glitch" : { < "default" : [ < "Anger. Holster your weapon." < ], < "human" : [ < "Threatening. Holster your gun, meat.", < "Menacing. Trigger-happy humans should holster their guns in our village." < ], < "avian" : [ < "Informing. It's not duck-hunting season. Holster your weapon.", < "Unsure. For what purpose would an Avian need a gun here? Put it away, please." < ], < "floran" : [ < "Surprise. A Floran with a gun? Unusual. Nevertheless, holster it.", < "Terrified. Are you aware that you're holding a firearm? It goes bang, not stab. Put it away." < ], < "apex" : [ < "Reassuring. You're safe from the Miniknog here. Holster your gun.", < "Edgy. I assure you we are not spies for A Large Ape. Put the gun away." < ], < "hylotl" : [ < "Amused. That's a gun, not a toy. Put it away.", < "Suspicious. A Hylotl with a gun is like a Glitch sunscreen. Useless. Holster it." < ], < "glitch" : [ < "Outcast, a drawn gun is considered an act of aggression. Comply.", < "Have you been outcast so long that you've forgotten our rules? No guns." < ] < } < } < }, < { < "sword" : { < "default" : [ < "I told you to put that weapon away!", < "This is your second warning - don't make me tell you to put that weapon away again.", < "You are beginning to test my patience. Put the weapon away.", < "Don't bring that weapon to... a swordfight... Put it away.", < "Your blade is sharp. Mine's sharper." < ], < "floran" : { < "default" : [ < "Floran sssay put weapon away now.", < "Floran frustrated with guest. Hissss." < ] < }, < "glitch" : { < "default" : [ < "Furious. Sheathe it now, I said!" < ], < "human" : [ < "Cross. Are your aural sensors malfunctioning? Put the weapon away!", < "Apoplectic. You seek to anger me, human. Sheathe the weapon now!" < ], < "avian" : [ < "Concerned. Perhaps you did not hear. Weapon goes away.", < "Nervous. I do not want to attack you, but if you do not put the weapon away I'll have no choice." < ], < "floran" : [ < "Frightened. We mean you no harm. We simply wish for you not to engage in stabbing.", < "Mortified. A Floran with a weapon sends the wrong impression. We ask again, put it away." < ], < "apex" : [ < "Frustration. Paranoia will only eat away at you. Put the weapon away and settle down.", < "Annoyance. If you don't put the weapon away immediately, we'll call the Miniknog!" < ], < "hylotl" : [ < "Gleeful. That's it, keep the weapon out, give us an excuse...", < "Enraged. I said put that weapon away before we start suspecting you know how to use it." < ], < "glitch" : [ < "You are pushing your luck, outcast. Sheathe the weapon NOW.", < "If I see that weapon for much longer, you'll be needing a repair bay." < ] < } < }, < "gun" : { < "default" : [ < "This is your second warning - don't make me tell you to put that weapon away again.", < "Let's not have any accidents with that gun, now.", < "Please holster the gun. You're making us nervous.", < "You're scaring everyone. Put it away, I said." < ], < "floran" : { < "default" : [ < "Floran not like guns, but quicker on draw than you. Put away.", < "Floran ssshoot first, ask questions later. Put gun away." < ] < }, < "glitch" : { < "default" : [ < "Anger. Holster your weapon I said." < ], < "human" : [ < "Twitchy. We have heard about your 'friendly fire incidents'. Holster it now!", < "Cross. Is your holster broken, or are you just failing to comply with our customs?" < ], < "avian" : [ < "Perplexed. If you don't need that gun, then please put it away.", < "Suspicious. You're no gunslinger, Avian. As we said, holster the weapon." < ], < "floran" : [ < "Hesitant. If you don't holster that gun, we'll have to remove it forcibly.", < "Mortified. You're going to use it, aren't you? Please holster it before someone gets hurt." < ], < "apex" : [ < "Stern. In the name of A Large Ape, put that gun away!", < "Alert. Perhaps YOU are a spy for A Large Ape. Holster the gun and we'll let you walk." < ], < "hylotl" : [ < "Mirthful. Holster it now before you shoot your scales off.", < "Furious. We say again, holster the gun Hylotl, or you'll be sleeping with the fishes." < ], < "glitch" : [ < "We won't tell you again, outcast. Put the gun away.", < "Defiance is exactly why you outcasts are outcast. Put the gun away NOW!" < ] < } < } < }, < { < "sword" : { < "default" : [ < "This is the last time I'm going to tell you. Put that weapon away!", < "Don't make me kill you!", < "You are on thin ice now!" < ], < "floran" : { < "default" : [ < "Now Floran angry. You not like Floran when angry.", < "Floran preparing to ssstab. Had warning." < ] < }, < "glitch" : { < "default" : [ < "Explosive. Final warning, sheathe it now or die!" < ] < } < }, < "gun" : { < "default" : [ < "This is the last time I'm going to tell you. Put that weapon away!", < "Don't make me kill you!", < "You are on thin ice now!" < ], < "floran" : { < "default" : [ < "Now Floran angry. You not like Floran when angry.", < "Floran preparing to ssstab. Had warning." < ] < }, < "glitch" : { < "default" : [ < "Explosive. Final warning, holster it now or die!" < ] < } < } < } < ], --- > "behavior" : "/behaviors/npc/villageguard.behavior", 462,476c12,13 < "weaponSheathed" : { < "default" : [ < "Thanks. Now move along." < ], < "floran" : { < "default" : [ < "Floran sssatisfied." < ] < }, < "glitch" : { < "default" : [ < "Grateful. Thank you." < ] < } < }, --- > "dialog" : { > "converse" : "/dialog/converse.config:converse", 478,521c15,30 < "comeBack" : { < "default" : [ < "Come back here you!", < "Get back here!", < "I'm talking to you, don't make me come after you!" < ], < "floran" : { < "default" : [ < "Ssstabby time!", < "Floran will make you sssuffer!" < ] < }, < "glitch" : { < "default" : [ < "Enthusiastic. No comply, time to die!", < "Over-eager. Do you feel lucky, punk?", < "Soulless. Exterminate. Exterminate." < ] < } < } < } < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "switchDistance" : 15, < "runThreshold" : 0, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 --- > "attack" : "/dialog/guard.config:attack", > "reattack" : "/dialog/combat.config:reattack", > "killedTarget" : "/dialog/combat.config:killedTarget", > "lostTarget" : "/dialog/combat.config:lostTarget", > "outOfSight" : "/dialog/combat.config:outOfSight", > "cantReach" : "/dialog/guard.config:cantReach", > > "hail" : "/dialog/guard.config:hail", > "swordwarning1" : "/dialog/guard.config:swordwarning1", > "gunwarning1" : "/dialog/guard.config:gunwarning1", > "swordwarning2" : "/dialog/guard.config:swordwarning2", > "gunwarning2" : "/dialog/guard.config:gunwarning2", > "swordwarning3" : "/dialog/guard.config:swordwarning3", > "gunwarning3" : "/dialog/guard.config:gunwarning3", > "weaponSheathed" : "/dialog/guard.config:weaponSheathed", > "comeBack" : "/dialog/guard.config:comeBack" 1143,1233d651 < }, < < "dropPools" : [ "guardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } 1235c653 < } --- > } \ No newline at end of file npcs\villageguardcaptain.npctype 7c7,17 < "disableWornArmor" : true, --- > "movementParameters" : { > "runSpeed" : 15 > }, > > "statusControllerSettings" : { > "stats" : { > "maxHealth" : { > "baseValue" : 250.0 > } > } > }, 653,720d662 < }, < < "movementParameters" : { < "runSpeed" : 15 < }, < < "dropPools" : [ "guardtreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 250.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\villager.npctype 3,7c3 < < "damageTeam" : 1, < "levelVariance" : [-1, -1], < < "disableWornArmor" : true, --- > "baseType" : "base", 9,12c5,6 < "scripts" : [ < "/npcs/bmain.lua" < ], < "initialScriptDelta" : 5, --- > "levelVariance" : [-1, -1], > "persistent" : true, 16,41d9 < "personality" : "normal", < < "doorHitPoly" : [ [2, -1], [2, 1], [0, 1], [0, -1] ], < "idleTimeRange" : [2.0, 10.0], < "gapSensor" : [ [2.0, -4.5] ], < "gapFarSideSensors" : [ [3.0, -4.5], [4.0, -4.5], [5.0, -4.5], [6.0, -4.5], [7.0, -4.5], [8.0, -4.5] ], < "gapJumpHoldTime" : 0.4, < //testing only < "trading" : { < "config" : "/interface/windowconfig/shop.config", < "filter" : [ ], < "titleFromEntity" : true, < "requiresBlueprint" : false, < "recipes" : [ < { < "input" : [ { "name" : "money", "count" : 10 } ], < "output" : { "name" : "fullwood1" } < } < ] < }, < < "tenant" : { < "emoteCooldownTimeRange" : [1.0, 2.0], < "complaintCooldownTimeRange" : [5.0, 10.0], < "severeComplaintTime" : 25.0, < "finalComplaintTime" : 35.0, 43c11,12 < "dialog" : { --- > "dialog" : { > "tenant" : { 45,209c14,18 < "tagCriteria" : { < "default" : [ "Something in my place has changed, I don't like it!" ], < "human" : [ < "Something feels off in my home...", < "The arrangement has changed, this isn't alright...", < "Has something moved in here? It feels off..." < ], < "floran" : [ < "My ssstuff has changed, I don't like it!", < "My home hasss changed, I'm not happy with that!", < "Can you help me get my home looking like how it usssed to?" < ], < "glitch" : [ < "Confused. Something in here has changed.", < "Discontent. I liked my home before it was changed.", < "Wishful. I wish my home was how it used to be." < ], < "avian" : [ < "The arrangement of my home is not the same...", < "Something is unsettlingly different in here.", < "Can you restore my home to its original arrangement for me?" < ], < "apex" : [ < "I would appreciate if you could restore my home's original decor.", < "Can you assist in the restoration of my home's original layout?", < "Something about my home feels off. Can you help fix it?" < ], < "hylotl" : [ < "Something is unbalanced in the flow of my home...", < "Has something been taken from my home? This is upsetting...", < "There is something disquieting about the current layout of my home..." < ] < }, < "enclosedArea" : { < "default" : [ "My home could use some repairs!" ], < "human" : [ < "My home could use some repairs...", < "There's damages in here, can you sort it out?", < "I have a need for repairs here!" < ], < "floran" : [ < "There's damagesss to the walls here!", < "Could you fix my home pleassse?", < "My home could use some fixesss!" < ], < "glitch" : [ < "Unhappy. There are damages to my home.", < "Concerned. There is a need for repairs here.", < "Needy. Can you fix my home before the damage worsens?" < ], < "avian" : [ < "The damage to my home is causing much concern to me...", < "I would appreciate if you could repair the damages to my home.", < "Hmm, there appears to be a broken wall in my home. Can you fix it?" < ], < "apex" : [ < "I have spotted a damaged wall in my home. Can you help?", < "There are some damages to my home I wish to report.", < "My home has some structural damages that I would prefer to be fixed." < ], < "hylotl" : [ < "My home has been damaged. This is unpleasant.", < "Do you feel something strange with my home? It feels damaged...", < "I noticed a damaged wall here, perhaps you could assist with repairs?" < ] < }, < "otherDeed" : { < "default" : [ "I thought this place was for me!" ], < "human" : [ < "Wasn't this place for me?", < "Are you trying to have someone move in to my home?!", < "Why did you place another deed here?!" < ], < "floran" : [ < "Sssomeone else can't move here!", < "Why isss someone else trying to move in?", < "I can't live with sssomeone else!" < ], < "glitch" : [ < "Shocked. Are you trying to move another tenant in?", < "Confused. How come someone else is trying to move in?", < "Sad. I thought this place was my own." < ], < "avian" : [ < "Why is someone else attempting to move into my home?", < "Did you put my home up for rent? This must be a mistake...", < "There is another deed in my home, this is most upsetting." < ], < "apex" : [ < "There's another deed in my home, surely this is a mistake?", < "Was this home not intended for me? Why is it up for rent again?", < "I thought this home was exclusively for me. How upsetting." < ], < "hylotl" : [ < "How can someone else move in here? This is my personal space!", < "How can I remain calm when my home is up for rent for someone else?", < "Why is there another deed here? Perhaps this home was not for me?" < ] < }, < "severe" : { < "default" : [ "I can't live in these conditions!" ], < "human" : [ < "I can't live in these conditions!", < "These are unacceptable conditions...", < "I won't stand for these conditions much longer!" < ], < "floran" : [ < "I can't live like thisss!", < "These conditionsss aren't okay!", < "You still haven't fixed thingsss!" < ], < "glitch" : [ < "Annoyed. These conditions are tiring.", < "Frustrated. I wish my requests were listened to.", < "Unhappy. The fixes to my home haven't been made yet." < ], < "avian" : [ < "This has gone too far, I am greatly discontent with these conditions.", < "I don't wish to live in these conditions.", < "Why is my home in the state that it is in?!" < ], < "apex" : [ < "My cries for improvements have gone unanswered...", < "This home is not how it was when I moved in...", < "The condition of my home is disgraceful, and I feel I am being ignored!" < ], < "hylotl" : [ < "I try to remain calm but it is hard when my requests are left unanswered.", < "The state of this home is not something I feel is acceptable.", < "I cannot remain living in a place with such imperfections..." < ] < }, < "final" : { < "default" : [ "I've had enough of this!" ], < "human" : [ < "I've had enough of this!", < "That's it, I give up. Time to leave!", < "I give up, I'm moving out!" < ], < "floran" : [ < "Thisss has gone on long enough!", < "I am going to leave thisss place!", < "I can't live like thisss anymore!" < ], < "glitch" : [ < "Overwhelmed. I am going to leave with things like this.", < "Outraged. I am fed up with being ignored.", < "Upset. With these conditions, it is time that I left." < ], < "avian" : [ < "I am going to depart and find another home. Enough is enough.", < "It is time I found a better home.", < "This home is not how it was when I moved in. It's time I left." < ], < "apex" : [ < "I moved here for a better life, but I can't live like this anymore.", < "I am going to move if this home of mine isn't restored to how it was!", < "It saddens me to leave, but my complaints are being ignored." < ], < "hylotl" : [ < "It is time I move on, this home is not to my standards anymore.", < "I once called this place home, but I don't feel that way any longer.", < "Perhaps I shall find another place that I can call my home." < ] < } --- > "tagCriteria" : "/dialog/grumble.config:tagCriteria", > "enclosedArea" : "/dialog/grumble.config:enclosedArea", > "otherDeed" : "/dialog/grumble.config:otherDeed", > "severe" : "/dialog/grumble.config:severe", > "final" : "/dialog/grumble.config:final" 212,1921c21,22 < "beacon" : { < "default" : [ "I'm home!" ], < "human" : [ < "You called?", < "Is there something you need me for?", < "You have need of me?" < ], < "floran" : [ < "You needsss me?", < "Do you need me for sssomething?", < "Were you sssearching for me?" < ], < "glitch" : [ < "Quizzical. Did you need me for something?", < "Friendly. Did you want to chat?", < "Polite. Did you just come to say hello?" < ], < "avian" : [ < "Did you wish to converse?", < "Hello again, friend! May Kluex hold you in favour.", < "I am always glad to see a friendly face." < ], < "apex" : [ < "What have you called me for?", < "Do you have need of me?", < "Greetings. Do you have matters you wish to discuss?" < ], < "hylotl" : [ < "What would you like to discuss?", < "Did you wish to speak to me, friend?", < "Did you need me for anything in particular?" < ] < }, < "rent" : { < "default" : [ "Here's a gift for all your help!" ], < "human" : [ < "I thought you might like this!", < "Here's something for your troubles!", < "Here's a little thank you gift!" < ], < "floran" : [ < "Here isss a present for you!", < "I gotsss you a thing!", < "Thanksss for your help!" < ], < "glitch" : [ < "Thankful. Here is a gift for all you've helped me with.", < "Grateful. I got you a present for all you've done for me.", < "Hopeful. I hope you like the gift I got for you!" < ], < "avian" : [ < "Here is a token of my gratitude.", < "I have brought you a gift.", < "I hope this offering brings you happiness." < ], < "apex" : [ < "Please accept this gift, for all your assistance.", < "The condition of my home is pleasing, take this.", < "For all you have done, take this." < ], < "hylotl" : [ < "My home is as peaceful as I could hope for. Here is a gift for all you have done.", < "My zen has been maintained with your beautiful home. Please accept this.", < "I hope this humble gift conveys my appreciation for your help." < ] < } < } < } < }, < < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ "I have nothing to say to you" ], < "apex" : { < "default" : [ < "You don't LOOK like Miniknog..." < ], < "human" : [ < "Ah, lovely to see humans in our midst.", < "You must get cold without much body hair.", < "Welcome to our village, human. We are absolutely not oppressed.", < "It is comforting to know that another species out there looks like us.", < "You look like an Apex... but you don't smell like one.", < "Do you humans enjoy bananas as much as we Apex?", < "Word of warning, human. Do not cross the Miniknog.", < "Don't get too close, human. I currently have fleas.", < "Please don't cause trouble, human. We keep things peaceful here.", < "Welcome to our village, little person.", < "Despite our visual similarities, we are not trying to ape your species.", < "If you see a Miniknog soldier, keep your eyes downwards and your hands still.", < "I am sure our glorious leader would extend his generosity to humanity, if asked.", < "We are sorry to hear of your planet's plight, human.", < "The Miniknog have eyes everywhere, human. Be warned.", < "How about a friendly arm wrestle, human?", < "Settle a bet for me, human. Who would win in a fight between a Floran and a Hylotl?", < "Do you think our two species could ever find love together, human?", < "A human from beyond the stars. How exciting!", < "Tell me human, have you ever adventured with a Hylotl? Are they as uptight as people say?", < "You'll bow to Big Ape if you know what's good for you.", < "I used to be an adventurer like you, but then Big Ape experimented on my family.", < "The Miniknog aren't so bad. They rarely even beat us these days.", < "If you think I'm attractive, human, wait till you see Big Ape!", < "I would join you for a drink tonight human, but I'm washing my hair.", < "Could you lend me some pixels? I can almost afford to escape this place.", < "The Resistance are around us, human. One day they'll rise.", < "I'm not sure if I'm allowed to talk to other species.", < "If you ever meet Big Ape, put in a good word for me, okay?", < "You are smooth and unusual, human.", < "Have you heard about those strange burning men, human?", < "Human, we will tolerate no nonsense here, this is Big Ape's domain.", < "Big Ape is watching. He's behind you. Just kidding.", < "You smell like wet Apex.", < "What is it like amongst the stars, human? I dream of escape.", < "I've always wondered what it would be like to kiss a human...", < "Apex give the best hugs.", < "Big Ape, Big Ape, there is no escape, you'll get crushed like a grape, Big Ape!", < "I'm so hungry I could eat, well, you.", < "Have you heard the one about Big Ape and the Beanstalk? It's a classic." < ], < "apex" : [ < "You take a risk coming back here, pariah.", < "I'm taking a risk talking to you.", < "You never should have come here.", < "You're going to get us BOTH killed.", < "I cannot be seen talking to you.", < "A bold move coming here, outsider.", < "It is great to see you, my liberated friend.", < "Have you taken leave of your senses? What if the Miniknog catch you?", < "Perhaps we can catch up over some bananas later.", < "So you travel the stars, huh? Enviable.", < "Tell me, friend, are there bananas in space?", < "The Miniknog are only getting worse, you know.", < "Big Ape will be delighted to learn of your visit.", < "Perhaps you'd consider taking me with you?", < "You escaped the Miniknog? Big Ape will remember that.", < "If you need to borrow a comb, just ask.", < "Do other species have the equivalent of Big Ape? Big Fish, Big Human?", < "Rumour has it that Big Ape will crush the Resistance any day now.", < "Your freedom fills me with envy, friend.", < "You worked hard to cast off the shackles of oppression. Be sure not to walk back into them.", < "Save us, brave Resistance fighter. Save us all!", < "If you feel like taking down a few Miniknog, I won't stop you.", < "As you can see, our living conditions have not improved.", < "You've let your grooming slip, it seems.", < "Next time you drop by, please smuggle in some bananas.", < "I'm sick of the Miniknog. Sick, I tell you!", < "How do I know you're not a Miniknog spy?", < "You are bold and brave, friend.", < "To defy Big Ape is to defy who you are.", < "Tell me of the sights you've seen, friend.", < "Begone. We'll have no trouble here!", < "If the Miniknog come looking for you, I'm not sure I'll be able to cover for you.", < "Have you visited the Avians? I hear they're very devout.", < "Tell me about the Florans. You must have met some out there.", < "What have you learned of the humans, friend?", < "I am curious to hear what you've learned of the Glitch.", < "I doubt you have anything interesting to say about the Hylotl, right?", < "What's it like, floating in space, free of Big Ape's gaze?", < "Big Ape could be watching us right now. Keep your distance.", < "I'm a Miniknog guard and you're under arrest. Just kidding. Boy, the look on your face!" < ], < "avian" : [ < "Greetings, Avian.", < "Your plumage is simply divine, Avian.", < "Do you suppose that Kluex and Big Ape have ever met?", < "We are sorry to hear of the loss of your wings, Avian.", < "Our species are similar in many ways.", < "Join me for some bananas?", < "I'm in a hurry, I've gotta fly. Oops, sorry, that was insensitive.", < "Did the Stargazers allow you to leave your flock, Avian?", < "Big Ape is fond of Avians, I hear. You'll be safe in this village.", < "Those Miniknog guards... don't get on the wrong side of them.", < "If you ever meet Big Ape, tell him I said hello.", < "Avian, could I possibly have a feather? As a souvenir?", < "One day perhaps our species will live together, Avian.", < "I feel a kinship with you, my feathered friend.", < "If you have the time, could you tell me of your power crystals?", < "I have been thinking of converting to Kluex Worship. Is this feasible for an Apex?", < "I hear that Kluex challenged Big Ape to a cage match. Is there any truth to this?", < "Did you know that some Glitch have become self-aware these days?", < "What about those humans, eh? Still, best not to gossip.", < "We had a Hylotl here recently. Awkward.", < "Do you have any food? I'm so hungry. A banana, perhaps?", < "My family has been kidnapped by the Miniknog. If you see them, tell them I said hello.", < "Could you lend me a rocket launcher? I appear to have lost mine.", < "Big Ape is my brother from another mother.", < "You just missed the most glorious Miniknog parade stroke public execution.", < "Is it true that you can't fly any more? Have you tried flapping your wings?", < "Are feathers harder to keep clean than hair?", < "Is this your first time in an Apex village, Avian?", < "The Miniknog are always watching us. It's a bit intrusive.", < "If I could spend a day with feathers, I would.", < "I used to dream about being able to fly, when I was a child.", < "Do you think perhaps Kluex would consider saving us from the Miniknog?", < "Profess your loyalty to Big Ape, Avian. Just to be on the safe side.", < "Let us make a toast to Big Ape and Kluex, Avian friend.", < "Could I perhaps see your starship? Just a look is all I ask.", < "Good day to you, Avian friend!", < "It's my birthday today. The Miniknog gave me two crusts of stale bread to celebrate.", < "What does an Avian look like without feathers? Asking for a Miniknog.", < "Seeing you has cheered me up on a gloomy day, Avian.", < "I had some seeds, but I lost them.", < "Are you familiar with Thornwing, Avian?", < "Your feathers remind me of a quilt I had as a child." < ], < "floran" : [ < "A Floran. Oh.", < "I didn't know your kind had discovered space travel.", < "For a moment there, I thought you were a bush.", < "I've heard tales of your kind, Floran.", < "I hope you aren't here to hunt.", < "Are you familiar with Big Ape, Floran?", < "Sorry if this is rude, but can you speak?", < "Your kind can be quite scary. Do not be offended if some Apex are wary of you.", < "The Miniknog are eyeing you with suspicion, Floran.", < "A Floran in our midst. This won't end well.", < "I bought a potion from Greenfinger once. It was a dud.", < "Could you teach me to hunt, Floran? I have a certain big, ape-like beast I'd like to take down.", < "You smell like freshly-cut grass.", < "It is great to see your species finally integrating.", < "You don't seem to have killed anyone yet! We're all very proud of you!", < "Miniknog scientists have been known to pit Floran against Apex. We don't hold a grudge.", < "I would love to get to know you better, Floran.", < "If it looks like I'm shaking in fear, I'm not, I'm just cold okay!", < "You really are a remarkable specimen.", < "Glory to Big Ape, Floran! Say it with me!", < "Look behind you! A Hylotl!", < "Your presence here is both inspiring and troubling.", < "Are you lost, Floran?", < "Have you heard the joke about the Floran and the penguin? No?", < "Please don't kill me!", < "Floran Peace is one of my favourite novels of all time!", < "As an amateur botanist, it's a pleasure to meet you.", < "You don't look so scary up close.", < "Are you smiling or snarling?", < "I... I have a bit of a thing for Florans. Oh no, I'm blushing.", < "Perhaps you would give a presentation to us Apex?", < "Tell me, Floran, what's your bodycount?", < "You're far more civilised than Big Ape said you'd be.", < "Make yourself at home, Floran.", < "We would make an amazing crime-fighting duo.", < "Thank you for behaving respectably, Floran.", < "Ooh, a Floran. I'm all a-quiver.", < "What a terrifyingly adorable thing you are.", < "Teach me the art of stabbing, Floran!", < "Perhaps you would engage me in a test of strength, Floran.", < "I don't care what people say, you seem nice to me.", < "Never judge a book by its cover, that's what I say.", < "A living plant! Wait, are all plants living?" < ], < "glitch" : [ < "Hello there, Glitch.", < "You're one smooth robot.", < "Big Ape could be using Glitch to spy on us. Are you a spy?", < "Tell me, what signifies a Glitch outcast?", < "I've always wanted a Glitch sidekick.", < "Hey there robot buddy.", < "You can touch my hair if you'd like.", < "Have you ever heard of Hewlett Deckard?", < "Did it hurt when you were severed from the hivemind?", < "Great to see you, little robot.", < "I've always been fascinated by your kind.", < "Big Ape claims to have an army of weaponised Glitch. Is this true?", < "Try not to fall afoul of the Miniknog, robot.", < "Are you equipped with long-range audio recording software? Just wondering.", < "Do Glitch dream of electric Florans?", < "Are you entirely made of metal?", < "I hear you Glitch are envious of our hair.", < "I'll sell you a hair cutting for just ten pixels.", < "I've always wanted to hear a Glitch sing.", < "Why do you say those words at the beginnings of sentences?", < "Jovial. Hello! Uh, I hope that wasn't offensive.", < "When I was in school, my friend claimed his dad had punched a Glitch's head clean off.", < "Avoid the Miniknog, Glitch. They don't trust your kind.", < "Glory to Big Ape! You robots should think about following him.", < "We're here, we're there, the Glitch envy our hair, go Apex!", < "The Outcast leader is called Platinum Ace, correct? So cool!", < "I met a hivemind Glitch once. Creeped me out. You seem nicer.", < "Any tips on dealing with the Florans? Your two species seem pretty tight.", < "Do Glitch feel pain?", < "How do you people eat?", < "What do you think of bananas, Glitch?", < "We should run away and join the circus together.", < "Do you think love can bloom even on a battlefield?", < "The Miniknog have made me promise to stop teaching Glitch how to twerk.", < "Part of me can't shake the feeling that you're Big Ape in disguise.", < "I got a great price on a bunch of bananas the other day! Then the Miniknog confiscated them.", < "Let's tear down the barriers between our species.", < "It is a joy to meet you, robot pal.", < "Can I stow away on your ship?", < "One day I'm gonna become sheriff of this town!" < ], < "hylotl" : [ < "Hello there, Hylotl.", < "Please try not to judge our little village too harshly.", < "I suppose you are here to spread peace.", < "I'm sure the Miniknog would love to hear a patented Hylotl lecture.", < "Be warned, Hylotl. The Miniknog do not like being talked down to.", < "Have you come to liberate us, Hylotl?", < "Just thought you should know, there have been a number of Florans in the area recently.", < "Would you like to join my band?", < "Glory to Big Ape! Make peace with that!", < "You seem pleasant enough.", < "Please, tell me some more about the delightful Hylotl architecture.", < "Nice fins, little buddy.", < "Will you take me swimming?", < "You guys are pacifists, right?", < "A meat-eating Hylotl? Unusual.", < "Spread your peace, Hylotl. You'll have no trouble here.", < "I think that Miniknog guard is a Floran in disguise.", < "Do you have your own Big Ape? Large Fish, perhaps?", < "Feel free to sample some Apex delicacies. They're in the Miniknog mansion.", < "Did you know the Miniknog perform strange, sinister experiments on our people?", < "Looks like there's a risk of rain. I'm sure that won't bother you.", < "What's it like, under the ocean?", < "You and the Florans should put aside your differences.", < "Don't ever try to ride a cattlesnake, trust me.", < "Is it lonely up in space?", < "Is it true that Hylotl can talk to fish?", < "Why did the Hylotl blush? Wait, no, that's not appropriate.", < "Draw me like one of your Floran girls.", < "Have you ever found sunken treasure?", < "Lend me a Pixel, will you?", < "We use BigCoins here, but Pixels work too.", < "If you ever meet Big Ape, tell him I said hello.", < "I'm sorry if our species appears uncultured to you.", < "I can see you judging me internally.", < "I hear your species are master crafters.", < "Save us from the Miniknog, fish!", < "Big Ape, little fish, cardboard box.", < "Take me with you, Hylotl. Please.", < "Welcome to our humble abode, fish.", < "I'm sorry, I'm too stressed to talk." < ] < }, < "hylotl" : { < "default" : [ < "I'm not sure I want to know what you are." < ], < "human" : [ < "Oh, hello smoothskin.", < "Oh look, a human.", < "Sorry, did you say something?", < "Drink in our marvellous architecture!", < "I suppose we'd better accommodate you.", < "You won't find meat to eat here, human.", < "Prepare to be exposed to true culture.", < "What a quaint starship you have.", < "Life's always better, down where it's wetter.", < "Hi, human.", < "Nice outfit. Yes, I'm being serious.", < "Sorry to hear your planet was destroyed and everyone died, human.", < "If you're lucky, one day you'll evolve.", < "You look somewhat like a pig.", < "Bow in the presence of greatness, human.", < "Peace be with you.", < "Be at peace, human.", < "I'll fight anyone who rejects pacifism.", < "Watch out for the Floran, human. They are scum.", < "Some people say us Hylotl are uptight. That's not true, right?", < "Have you ever seen such wonderful architecture?", < "I have a lot of thoughts on intergalactic politics.", < "Lovers of lily pads, look no further.", < "I am the god of the ocean! I got my hundred metres swimming badge!", < "Have you ever encountered our prodigal child Hiraki Corale?", < "Your kind is rather ugly.", < "Human, please explain to me what a 'goldfish bowl' is.", < "Delighted to make your acquaintance.", < "Please stop running around acting the fool.", < "You are smooth and unusual, human.", < "Do you want to know a secret? Well I can't tell you, it's a secret.", < "Let's go skinny dipping!", < "Is it true that humans often marry Apex?", < "I'll admit, you're a rather impressive specimen.", < "I'm secretly a bounty hunter!", < "Sing me a song, human. Now!", < "Let us take tea on the veranda.", < "When the season changes, I will retire to my country house.", < "Please teach me the rules of croquet.", < "Nice face, buddy." < ], < "apex" : [ < "Don't get too close, ape. You stink.", < "I admire your refusal to bathe, Apex.", < "You appear to have fleas.", < "The School tells us to be kind to the less fortunate.", < "Would you like a cup of herbal tea, monkey?", < "I imagine our architecture has left you speechless.", < "Learn what it is to be a true crafter!", < "I could take down any Big Ape.", < "You smell of bananas.", < "I am amazed an Apex can work a starship.", < "The stars are wasted on you, uncultured ape.", < "The Miniknog... I can see where they're coming from.", < "I am sorry you are oppressed and pathetic.", < "I'm sure Big Ape means well.", < "Let me explain what it's like to know peace.", < "Brush your hair if you're going to stay here.", < "That thing over there is called a bed. You sleep in it.", < "Would you like to play a clapping game?", < "I can't understand why other species don't like us.", < "Let's run away together and become hermits!", < "Have you tried just standing up to the Miniknog?", < "The Hylotl would never let themselves get oppressed.", < "I'd be willing to hire you as a bodyguard.", < "You should sample some fine Hylotl delicacies.", < "Our kind don't get fleas.", < "Let us meditate together.", < "I've been training as a necromancer.", < "One day I'll fly through space like you.", < "If you encounter any Hylotl peace missionaries, try to be nice.", < "What a fearsome visage you have, monkey.", < "The Florans are a blight on our galaxy!", < "If you're thinking of licking me; don't.", < "The Avians make me laugh. Do they make you laugh, Apex?", < "Your fur makes me sneeze.", < "Maybe one day, when you become more cultured, we could be good friends.", < "Let me know if you'd like any tips on how to behave in high society.", < "We Hylotl are a proud species, but you may not have noticed.", < "It is important to remain humble, I find.", < "Perhaps if you reached out to the Hylotl for help, Big Ape would not be a problem.", < "What's wrong with your face, exactly?" < ], < "avian" : [ < "Greetings, Avian.", < "I suppose you'll do.", < "Ah yes, your kind still worships gods.", < "Your Kluex sounds like such a boorish fellow.", < "We are still waiting for your species to apologise for Thornwing.", < "I don't suppose Avians are very adept at swimming.", < "I need some of your feathers. Don't ask why.", < "Your rudimentary power crystals are ever so fascinating.", < "I can teach you how to build furniture, for a hefty price.", < "Nice beak, little bird.", < "I'm actually an Avian, I've just been plucked.", < "Those Apex... what a poor, uncultured species.", < "Our kind has a begrudging respect for yours, Avian.", < "Are you a big reader? No, I thought not.", < "Enjoy our village, Avian.", < "Leave your religious indoctrination at the door, bird.", < "Have you ever seen moonlight ripple off a cerulean lake?", < "Show me how you fly, Avian. Oh wait, sorry, I forgot.", < "Hylotl have a reputation for being unwelcoming to outsiders. I don't see it myself.", < "I wish you people made more of an effort to accommodate us.", < "Try some Hylotl delicacies while you're here.", < "Be careful not to break anything.", < "One day I will have my revenge!", < "I used to study Avian temples, but then I got bored.", < "Tell me about the stars, Avian.", < "One day I'll fly away.", < "Know that we pity you, bird.", < "Perhaps one day the Hylotl will visit your kind.", < "Do you moult?", < "Avian beaks are funny things.", < "What kind of greeting did you expect?", < "Nice to see you, I suppose.", < "Greetings, bird.", < "Settle yourself down, feathered one.", < "Let us gaze at the sky for a while.", < "You look like you've been dragged through a bush backwards.", < "Do I fill you with awe, bird?", < "Where are you on the pecking order?", < "Check out our wonderful surroundings.", < "Our meals may be too exquisite for your tastes.", < "Gosh. An Avian.", < "Don't preen your feathers at me!" < ], < "floran" : [ < "I'll try to be polite to you, despite the obvious...", < "The less civilised members of your kind scare me.", < "I have nothing to say to you, scum.", < "I'm... Okay with Florans. At least you don't seem feral.", < "It's better we don't speak too much, Floran.", < "My people have... History with your kind.", < "You may seem civilised but I'm still uneasy around your kind...", < "Please don't make too many sudden movements.", < "Your eyes say you're civilised, but my gut feeling still says otherwise.", < "My people can be quick to judge your kind, but I know better.", < "As long as you aren't here to eat me, I'm okay with you.", < "I'll try to be civil with you.", < "If you hurt me, you'll pay!", < "You might not know just how much my people fear the Floran.", < "Perhaps you and I can put aside our differences.", < "I know you aren't as feral as you look. Don't worry.", < "Your people may spread like weeds, but I sense intelligence in you.", < "I've got my eye on you, Floran.", < "Don't sneak up on my kind, that's all I'm saying.", < "Perhaps one day, ALL Floran will be civilised like you.", < "How many Floran are capable of intelligent conversation? Just you?", < "You haven't immediately attacked me? That's good.", < "I'm not used to being around your kind, but I'll try to be polite.", < "Oh, um, hello there Floran.", < "I'm shaking? I'm not afraid, just cold.", < "Your gaze suggests you aren't a wild animal. That's good.", < "We Hylotl believe in tolerance, so I'll try to extend that to your kind.", < "The Hylotl have warriors exist to make sure your kind never hunts us down again.", < "Our people were once at war, but that was in the past now.", < "Before you get any ideas, I don't taste very nice!", < "You are civil. That is a relief.", < "I'll admit that my people don't have much experience with civil Floran...", < "Are there many more like you? By that I mean Floran who don't act like wild beasts?", < "Your kind aren't so scary up close.", < "You seem clever for a Floran. Do you appreciate art as well?", < "An intelligent Floran? Maybe your people have SOME culture after all!", < "I've heard rumours of Floran who abandoned their barbaric upbringing, but never met one before!", < "I've had nightmares about your kind! But I'll be nice, I know it's not your fault.", < "A Floran who can operate tools? Can you paint as well?", < "What big eyes you have! Your kind aren't so scary, I don't think.", < "No matter what I've been told, I think there is beauty to be found in all living things." < ], < "glitch" : [ < "Oh, a robot.", < "Oh look, it's a Floran sympathiser.", < "Our kinds do not get on, Glitch.", < "You're an outcast, right? I suppose I can tolerate that.", < "You bore me, robot.", < "I suppose you're pleased with yourself, robot.", < "A shiny metal person. Adorable.", < "Have you people advanced at all in recent years?", < "Your vacant stare unsettles me.", < "A starship pilot? That's nice I guess.", < "A Glitch adventurer. Now I've seen everything.", < "When the Glitch arrive, the Florans are never far behind.", < "Begone, fool. I cannot deal with such trifles today.", < "Peace be with you, clanker.", < "Allow me to direct you to the exit.", < "You must be lost, Glitch. The dangerous wastelands are that way.", < "Thanks for dropping by.", < "Hello Glitch.", < "I suppose you'll be wanting some help?", < "What a wonderful treat. A Glitch.", < "Let's never speak of this meeting again.", < "Do you want me to take you swimming, robot?", < "Explain your presence here, Glitch.", < "Platinum Ace is a fool.", < "I've heard dark tales of the Glitch origins.", < "I challenge you to a game of Lily-Flipper.", < "It's nice to meet you, I suppose.", < "Nice little robot.", < "If I wasn't so peace-loving, I'd beat you with a broom.", < "Don't you have some savages to defend?", < "I've never trusted your kind, Glitch.", < "You're nicer than I expected.", < "Let's have a party! Or not.", < "Feel free to leave at any time.", < "Our kind will never see eye to eye.", < "Stop looking at our furniture with envy, Glitch.", < "Your clanking is giving me a headache.", < "Joyous day! A robot friend!", < "Please calm down, Glitch." < ], < "hylotl" : [ < "Ahh, finally someone who will appreciate me.", < "Blessed be, friend.", < "May you always find peace.", < "It must be good to be back amongst cultured people.", < "Wonderful, let us celebrate your arrival!", < "A starship captain! I am so jealous.", < "Gosh, aren't you a stylish one?", < "Ooh, aren't you a dear?", < "Delightful to meet you, my dear friend.", < "I trust our village is up to standard?", < "Come, tell me of all the uncultured species you've met.", < "You are an inspiration to us all.", < "A peace missionary, here! I'm awestruck.", < "I saw a Floran the other day. Horrible creatures.", < "You are doing glorious work, friend.", < "So delightful to have you here.", < "If you need anything, just ask!", < "I think I have a small crush on you.", < "Did you hear, the Apex rebellion has been crushed!", < "Are Florans really as bad as they say?", < "I don't envy you, having to rub shoulders with other species.", < "I wonder if other species will ever start to accept us.", < "You warm my heart, peace missionary.", < "So wonderful to meet you!", < "How is space treating you, dear?", < "Your starship is truly wonderful, I hear.", < "I'm afraid I have no tribute for you. Please accept my apologies.", < "If you ever feel like settling down and starting a family, let me know.", < "You can relax around me. I know about the directive.", < "Peace and love!", < "If only the Florans would give peace a chance.", < "We should become best friends.", < "Hi there! I've been a big fan of yours ever since you arrived!", < "You peace missionaries are just wonderful.", < "Go forth and spread peace, my child.", < "You're welcome in my ocean any time.", < "I hear Hiraki is up to her old mischief again.", < "If you ever need another crew member, I'm your Hylotl.", < "So nice to meet you!", < "Let's have a jam session one day." < ] < }, < "avian" : { < "default" : [ < "Have a blessed day, stranger." < ], < "human" : [ < "Greetings, human.", < "I bemoan your lack of feathers.", < "Kluex? You won't find him around here.", < "Not all Avians are devout, human.", < "Take me with you to the stars!", < "Come fly with me... if I still had wings.", < "Sorry about your homeworld, human.", < "You have such smooth skin.", < "We should write a novel together!", < "I used to want to become an Ascendant. What a fool I was.", < "Have you got the time, human?", < "If you ask nicely I'll show you my power crystals.", < "I hear your species worships many gods, human.", < "I saw a shaved Apex once. He looked like you.", < "Welcome to our village, human.", < "I would hug you, but Avian hugs tickle.", < "Settle a bet for me, human. Who would win in a fight between a Glitch and a Floran?", < "Do you think our two species could ever find love together, human?", < "A human from beyond the stars. How exciting!", < "Some of my best friends are humans.", < "I don't even believe in Kluex!", < "Defy all gods!", < "One day I'll fly away.", < "What's space like? Is it nice?", < "I would join you for a drink tonight human, but I'm washing my feathers.", < "Do you think Kluex is watching me now, human?", < "We'd make a great team, human.", < "Have you ever eaten an oculemon? Gross.", < "Perhaps we should adopt a Hylotl.", < "Let's dance!", < "Would you like to watch the game with me? What game? I don't know.", < "Do any humans have wings?", < "What if you were Kluex?", < "I'm secretly a Glitch in disguise.", < "Have you seen those penguins? Sick.", < "I met Thornwing before he was famous.", < "Welcome, human. Make yourself at home!", < "It's always nice to see a human.", < "Nice outfit!", < "Let's run off together." < ], < "apex" : [ < "Greetings, ape.", < "Kluex could take Big Ape in a fight. Not that I believe in Kluex.", < "Let's start a rock band; Fur and Feathers.", < "How many bananas can you eat in one go?", < "We're top of the pecking order!", < "I'll protect you from the Miniknog, Apex.", < "Nice to see you, my furry friend.", < "Tell me of Big Ape!", < "What actually is a Miniknog?", < "Down with oppressors, right friend?", < "You're so furry.", < "You have a delightful accent.", < "Such muscles! I'm all a-flutter.", < "I heard our Stargazers are not fans of your Miniknog.", < "Have you ever met Thorngwing, Apex?", < "I would give you one of my feathers, but it is considered inappropriate.", < "Are you a member of the Resistance, Apex?", < "Yeah, I've met Big Ape. Wasn't so big.", < "Perhaps if you throw me high in the sky, I'll fly again.", < "Allow me to take you under my wing, Apex.", < "Our kinds have always been at peace.", < "Would you like to join me for some tag-team wrestling?", < "I would love to give you a haircut.", < "Let's fight, Apex! Just kidding. I'd destroy you.", < "You know, I've never tried a banana.", < "You won't make a monkey out of me!", < "Welcome to our village, Apex friend.", < "You look like you've been in some wars.", < "If you see Kluex, punch him for me.", < "The Clipped Council will fall any day, Apex. You mark my words.", < "Swimming can be fun!", < "Come over here, Apex. Come closer. No, that's too close!", < "You smell of hay.", < "Is my plumage to your liking?", < "We are lucky not to have been born Hylotls.", < "Scratch like no-one's watching.", < "Can Avians catch Apex fleas?", < "Let's go into space together!", < "I've had enough of this weather.", < "Perhaps you would be so kind as to sign my beak." < ], < "avian" : [ < "Greetings, fellow Avian.", < "Let's slander Kluex together!", < "Kluex? More like WHO-ex, right?", < "One day we'll fly together!", < "I'm so jealous of you being up amongst the stars, kin.", < "What about those Stargazers, eh?", < "How did your family take it when you came out as Grounded?", < "Let's take down the Clipped Council!", < "You'll find no Kluex-botherers here, friend.", < "The two of us, we're rare birds, right?", < "A Hylotl called me a chicken the other day. The cheek!", < "We're like birds of a feather. Hey, don't look at me like that!", < "I sure don't miss the threat of being ritually sacrificed.", < "Didn't I see you take a leap off the Celestial Tower once?", < "Nice outfit, buddy.", < "We should do something about Thornwing, one day.", < "Do you miss Avos, kin?", < "You're Kluex, aren't you? Come to take me away?", < "We will not be caged!", < "Lovely to see a fellow Avian traveller.", < "Bring me back a planet, friend.", < "Can spaceships be rigged to explode? Asking for a friend.", < "I chatted to a Glitch the other day. Weird.", < "Pretty sure I was a Sunborn in another life.", < "A human just asked me if I like techno. What's with that?", < "You smell like a Hylotl!", < "We're up all night to get plucky.", < "Tell me some stories about the stars, friend.", < "Do you wanna check out my bug collection?", < "I've been learning the ocarina!", < "I can fly, I just choose not to.", < "I want to be you when I grow up.", < "Are we related? You seem familiar.", < "I narrowly escaped from Kluex's grasp!", < "I'm not really an Avian, I'm a human in a feather suit.", < "To good Avian health!", < "Oh no, I've lost my wages. My goose is cooked!", < "I can't tolerate militant atheists.", < "I got some power crystals stashed in my basement.", < "I owe Thornwing a lot of money. Can't relax.", < "Look at you, preening around." < ], < "floran" : [ < "Oh... a Floran.", < "Well, uh, nice to see you.", < "Do you bite?", < "*whistles*", < "Hi. I won't make any sudden movements.", < "Well aren't you an adorable little tree.", < "If you ever feel like hunting Kluex for us, feel free.", < "Are you some kind of malevolent imp?", < "You're so... planty.", < "Living foliage. Adorable.", < "Our kinds share similar weapons, Floran.", < "Let us talk of philosophy.", < "Please don't touch my feathers.", < "Well this is a surprise. A Floran.", < "A non-violent Floran. Can it be true?", < "The Sunborn warned us of you, plant-creature.", < "Careful, I know how to set fires!", < "Can... can I touch you?", < "So I hear you like stabbing.", < "Not now, Floran. It's quiet time.", < "You're a cute little creature, really.", < "You worry me, Floran.", < "Are you lost, Floran?", < "Your Greenfinger is in cahoots with our Thornwing.", < "Please don't kill me!", < "Floran Peace... I wasn't a fan. Sorry.", < "Try not to get pruned.", < "Do you always look so murderous?", < "Will you be my partner in the local line-dancing championships?", < "Avian chicks dig Floran accents.", < "Share with me the secret of home shopping.", < "My grandmother was a Floran. We're basically related.", < "Are you looking to... plant your roots here?", < "Let's become bitter rivals!", < "Thank you for behaving respectably, Floran.", < "Have you ever been sent to jail? You look the type.", < "Let's fight Kluex together.", < "I wonder what the Council would make of you.", < "What kind of plant did you grow from?", < "You remind me of an oculemon I once ate.", < "Try not to take the stares to heart, Floran.", < "So a Floran, an Avian and a Hylotl walk into a bar...", < "Blessed be, Floran menace." < ], < "glitch" : [ < "Hello there, Glitch.", < "Nice to see you, Glitch.", < "Are you self aware?", < "We are both outcasts, friend.", < "Can I become a robot?", < "Do robots have gods?", < "You're so smooth.", < "You Glitch are so cool.", < "Can I tap your head?", < "We admire your friendship with the Florans.", < "What do your databanks tell you about Kluex?", < "I wonder what would happen if a Glitch ate a power crystal.", < "Do the Glitch worship gods?", < "Let's do some painting!", < "I'm sorry, do you want some oil?", < "Are you entirely made of metal?", < "I hear Glitch have beautiful singing voices.", < "I'm lovesick and I don't know what to do!", < "Dazzle me with your science.", < "You should explore our temples and tombs. Remarkable.", < "Let's be penpals.", < "I bet a Glitch could survive the Ascension.", < "What do you make of our Stargazers then, eh?", < "I tried some delicious cakes the other day.", < "Let's go to space together.", < "I heard Thornwing is in the area. Beware.", < "Some Hylotl came by earlier. You can imagine how that went.", < "How do you people eat?", < "I have some seeds back at home.", < "Tonight we're hosting a book club. You should come!", < "Let's investigate some crimes.", < "Kluex. What a joke.", < "The Clipped Council have no sway over me.", < "I'm so happy I got to see a Glitch.", < "I have some spare feathers if you'd like to try and fit in.", < "Pleasure to meet you, tinpot.", < "You're masterworks all. You can't go wrong!", < "Check out my feathers." < ], < "hylotl" : [ < "Oh, a Hylotl.", < "Well I guess it's nice you've dropped by.", < "Peace, fishman.", < "You smell of the sea.", < "Your kind would get along with our Stargazers.", < "Are you here to save us from Kluex?", < "Just so you know, my husband's a Floran.", < "We should go fishing together.", < "You make me miss Kluex.", < "Much love, slimy Hylotl.", < "I've heard dark things about your kind, Hylotl.", < "You don't need to keep up the pretence with me. We both know.", < "Between us, we could be unstoppable.", < "Peace. I hate the word.", < "I ate some nice steak the other day. Oh, you eat meat too? Trolling failed.", < "We tolerate your kind, Hylotl.", < "Have you ever tried lamprey pie?", < "I'm curious, Hylotl. What kind of gods do YOU have?", < "You should climb up the Celestial Tower one day. Jump off, see if you ascend.", < "In the past, the Stargazers would ritually sacrifice Hylotl. I wonder why.", < "I can see the way you look at our furniture.", < "How about a spot of fencing?", < "Why do you hate Florans so?", < "I'll trade you a power crystal for your mortal soul.", < "Imagine being stuck on a spaceship with a Hylotl.", < "Have you ever punched a shark?", < "Is your kind edible?", < "Quick, over there, a lily pad!", < "I'd love to go under the sea one day.", < "I don't condone piracy.", < "Hylotl! Let's cuddle!", < "Something fishy is going on here.", < "Kluex told me personally that he's a fan of the Hylotl.", < "If you sniff haughtily one more time, I'm calling the guards.", < "Aww, you're adorable really.", < "A GIANT TALKING FISH!", < "Avians can peck fish from the ocean with their beaks. It's quite a sight.", < "Hah. You're slimy.", < "I love the Hylotl. So cute.", < "Let's come up with a get rich quick scheme!" < ] < }, < "human" : { < "default" : [ < "Have an awesome day!" < ], < "human" : [ < "Yo!", < "Hey, great to see you.", < "The USCM are doing a great job!", < "I sure miss Earth, don't you?", < "The thing I miss most about Earth is fast food.", < "There are some funny species out here, right?", < "Just think, we weren't alone in the universe after all.", < "It's always nice to see another human.", < "Do you ever get homesick?", < "My husband won't stop talking about the Glitch.", < "Which species is your favourite? Mine is the Florans.", < "Apparently Hylotl don't taste good with chips and vinegar.", < "Where were you from on Earth, then?", < "Tentacles, eh? Who'd have 'em.", < "At ease, soldier!", < "I got a bet on that our species gets wiped out within ten years. You game?", < "The universe is a big place.", < "One day I want a spaceship like yours.", < "We really are outcasts, aren't we?", < "Something weird is going on here.", < "Have you noticed anything unusual about the Florans?", < "A lot of the food on these planets looks disgusting.", < "An Apex punched me the other day. Don't know why.", < "Greetings, human. Oops. Been around aliens too long.", < "The Glitch have a funny way of talking.", < "You seen those giant bird people yet?", < "I hear that if you explore a lot of planets, you'll find treasure.", < "I haven't watched a good zombie movie in ages.", < "I could really fancy a roast dinner.", < "What if we're really just shaved Apex?", < "Sometimes it's fun to just yell at monsters.", < "You found any cool weapons lately?", < "We should team up. Solidarity, bro!", < "I'm craving a burger right now.", < "I wonder if we'll ever rebuild Earth.", < "Hail the USCM!" < ], < "apex" : [ < "Hey, ape-dude!", < "A talking monkey. Cool.", < "Are you gonna hurt me?", < "You seem like a nice sort.", < "You remind me of a movie I saw once.", < "Just how big IS Big Ape?", < "Hey there, Apex!", < "Have you ever tried shaving to pass as human?", < "Which came first, the human or the Apex?", < "I'm jealous of you, being an adventurer.", < "The Miniknog sound terrible!", < "You should ask the USCM to help you out with the Miniknog.", < "If you ever need help, just ask.", < "Awesome to see you, Apex!", < "You guys are so cool.", < "I'm glad some of you managed to escape that Big Ape guy.", < "Just let me know if you want a cuddle.", < "Hanging out with you would be neat.", < "You remind me of my ex-husband.", < "I bet you've got a few stories to tell!", < "Did you know our planet was taken over by a monster?", < "Maybe we've been on Earth all along...", < "You reek of wet dog!", < "Talking apes, talking birds, talking plants, what next?", < "The chances of anything coming from Mars were a million to one, they said.", < "If you're free later, we should go bowling.", < "Has your kind heard of vampires?", < "The universe is a big, scary place.", < "I guess we've both lost our homes, Apex.", < "I feel strange and unusual.", < "I've never met a Miniknog soldier. Are they scary?", < "You look pretty strong, like a wrestler.", < "Pleasure to make your acquaintance, ape.", < "I am a person!", < "I might stow away on your spaceship, just so you know.", < "How do you feel about pancakes?", < "The monsters around here can be scary.", < "When I was a child I had a toy monkey that looked like you.", < "Ace meeting you, Apex." < ], < "avian" : [ < "Hey, it's a big bird!", < "Nice feathers there.", < "I still can't get my head around your kind.", < "It's weird that you can't fly!", < "I wish we'd had Avians back on Earth.", < "Hey there, Avian!", < "You look so warm and fluffy.", < "Who's this Kluex I keep hearing about, then?", < "Don't go out on the moors!", < "Being flightless must suck.", < "I've never met an Avian I didn't like.", < "I hear your kind build grand tombs. Fascinating.", < "Take me with you into space, Avian.", < "Feel free to make yourself at home.", < "I find you disconcerting. Sorry.", < "Are you acquainted with Thornwing? He's one of you, right?", < "Another Avian I met told me about the Celestial Towers. Chilling.", < "Can I borrow a feather to make a quill?", < "Ever played Hopscotch?", < "Our planet was taken over by a monster. Woe.", < "Let's have a nice cup of tea and a sit down.", < "The USCM is probably tougher than Kluex.", < "Your power crystals sound fascinating. Tell me more!", < "We look a lot alike, you and I.", < "Look at how pretty the sky is today.", < "I've been into space! When I fled Earth.", < "If an Avian and a snake had a baby, would it be a feather boa?", < "I quite like those Apex, y'know.", < "What's a Hylotl, and why does everyone despise them?", < "I hear Florans are quite scary.", < "Your Clipped Council sounds fascinating.", < "We could be heroes, if I wasn't so lazy.", < "Sometimes I miss soap operas.", < "Have you ever seen a Segway?", < "One day I'll introduce you to the joys of leading soft drinks brands.", < "You Avians have been very welcoming to us humans. I hope we can extend the same courtesy.", < "Gross, I just swallowed a fly.", < "Let's hang out sometime!", < "I'm sure I've seen you somewhere before.", < "Avians are SO COOL!", < "USCM superiority, brah." < ], < "floran" : [ < "A triffid!", < "Yo there, talking tree.", < "You're pretty cute.", < "Aren't your kind meant to be savage? You don't seem it.", < "Can we be partners?", < "You could do with a pruning.", < "I'm sorry about the weedkiller thing.", < "You people have a reputation for being galactic troublemakers.", < "You'd have made a great pet back on Earth.", < "It's hard to believe you're a lethal killer!", < "Do you wanna check out my Betamax collection?", < "I reckon we'd get on well.", < "The USCM is a bit wary of you, Floran.", < "I think you're probably my favourite.", < "I love the idea of a spaceplant.", < "I bet we could make fat stacks as a performing arts troupe.", < "Are there any Floran popstars?", < "You'd have loved Kenya.", < "I got my eye on you, Floran.", < "It's pretty exciting to see you!", < "A rose by any other name...", < "You're one funky little dude.", < "I can't wait till our species integrate.", < "If you ever need a lawyer, I know a guy you can call.", < "Back on Earth, I was something of a celebrity.", < "Galactic politics are scary, aren't they?", < "I hear you and the fish people don't get on?", < "See this? It's my poker face.", < "I bet you've killed more monsters than I've had hot dinners.", < "Make yourself at home, Floran.", < "Thanks for dropping by!", < "Can you read?", < "I had a dream about your kind last night.", < "A Floran whispered something about oaken soldiers to me. What does it mean?", < "I could go for some ice-cream right now.", < "We should have a picnic!", < "Florans are the best!", < "I'd be a great addition to your crew." < ], < "glitch" : [ < "Whoa, nice, a robot.", < "Danger Will Robinson!", < "The future, it's here!", < "Did you hear about our planet? Tragic.", < "You and the Florans get on well, right?", < "Let's do something cool later.", < "I've always wanted to hang out with a robot.", < "EXTERMINATE! EXTERMINATE!", < "Can your kind... uh... y'know... never mind.", < "My family are on a different planet.", < "I bet you'd make a great DJ.", < "Who created you guys, then?", < "I am done with taking orders. Done!", < "I want armour like yours.", < "I love the way you guys talk.", < "Welcome to this human settlement, Glitch!", < "So lovely to see you, Glitch!", < "Can I get your autograph?", < "You'd be a big hit in Hollywood.", < "Have you ever thought about becoming a cop?", < "A Glitch invasion would be the coolest thing.", < "What metal are you made from?", < "Your Hewlett Deckard is a role model of mine.", < "Can you go in the water?", < "You're quite small for a killer robot.", < "You have the coolest face.", < "I miss my planet, Glitch.", < "Do your arms transform into guns?", < "Can you turn into any kind of vehicle?", < "This feels like the start of a buddy comedy.", < "You should show me your spaceship sometime.", < "Seen anything of interest lately, Glitch?", < "I'd like to visit your kind one day.", < "The USCM would love to enlist you, Glitch." < ], < "hylotl" : [ < "Oh hey, a giant fish.", < "I've been told to watch out for your kind. Why?", < "Hah, oh my, you smell funny.", < "You remind me of my holidays at the beach.", < "Gotcha hook, line and sinker.", < "A Hylotl, eh?", < "Nice to meet you, fishface.", < "You're pretty awesome for a talking tuna.", < "What's your beef with the Florans, hey?", < "Welcome, Hylotl!", < "Nice to meet you, fish!", < "Let's go swimming.", < "A fish amongst the stars. Cool.", < "Personally I never used to eat fish and chips.", < "Living under the water must be exciting.", < "I hear your architecture is stunning?", < "You seem like a cultured sort.", < "Could you beat a shark in a fight?", < "Talking fish, sharks with legs... man, I love space!", < "Our planet had many oceans. Then a tentacle monster happened.", < "You're one slick fish.", < "I don't care what others say, you Hylotl seem nice to me.", < "Great to see you, pal.", < "The USCM has you on a whitelist, I hear.", < "Are you one of the fabled Hylotl peace missionaries I hear about?", < "If it's not too much trouble, could you give me a lift to Earth?", < "Birds, apes, fish, plants, robots, and humans. We're just squishy and boring.", < "I've lost my favourite pen! Have you seen it?", < "I'll pay you top dollar to blow up my boss.", < "We should hang out more often, fish.", < "I used to go fishing without a license. I'm sorry.", < "I have nothing to say to you right now, I'm having an existential crisis.", < "Gross, you're all slimy.", < "We should all reject our socio-political prejudices.", < "Here fishy fishy fish fish!", < "Nice outfit, flipper!", < "I miss the cool sea breeze.", < "A Floran was looking for you earlier. It seemed mad.", < "I am mostly concerned about Christmas right now." < ] < }, < "floran" : { < "default" : [ < "Ssstrange thing." < ], < "human" : [ < "Meatman!", < "Sssilly human.", < "Floran not like ssstrangers.", < "Sssuspicious thing.", < "Watch yourself meat.", < "Greenguard watch you, human.", < "Leave, maybe.", < "Floran dream of oaken sssoldiers. Floran ssscared.", < "Floran ssstab you if you misbehave.", < "Creature!", < "Sssuspicious. Floran Glitch friend tell Floran to watch human.", < "Floran hear planet eaten by monster. Floran hunt it.", < "Floran find human funny.", < "Floran not underssstand you.", < "GREETINGS AND SSSALUTATIONS. Birdman tell Floran to say this.", < "Floran can read words!", < "Floran restless, not enough ssstabby.", < "Greenfinger say humans sssquishy and weak.", < "Floran teach human art of ssstabbing.", < "Welcome to Floran village, ssskinperson.", < "Floran ssstab, therefore Floran am.", < "Floran never met humans before.", < "Behave, sssilly thing.", < "Human ssspeak words at Floran. Floran sssmile and nod.", < "Floran look after human for now.", < "Skreeeeee!", < "Glitch try to teach Floran advanced mathematics. Floran head hurt.", < "Floran want to pull sssilly human's hair.", < "Floran think human brave for coming here.", < "Floran sssee human ssspace craft, have envy.", < "Floran want human best friend.", < "Floran and cocoon-kin giggle behind human's back.", < "What are you?", < "Human not grow leaves. Floran pity it.", < "Floran want to show human how to use ssspear.", < "Floran cuddle human sssilly.", < "Floran learn rules of etiquette.", < "Floran remember human ssshooty men get mad at Floran.", < "Greenfinger sssay be nice to pitiful ssspecies.", < "Floran want to meet human in dark alley." < ], < "apex" : [ < "Floran want cuddle from monkey man!", < "Floran like monkey man ssscent.", < "Floran tougher than chimp chump.", < "Greenfinger sssay Biggie Ape nice monkey.", < "Floran sssuspicious of travelling monkey.", < "Floran call Greenguard if monkey roar.", < "Monkey man!", < "Monkey man wear sssilly clothes.", < "Floran feel comfortable with monkey man.", < "Monkey man want Floran pet?", < "Ssspace monkey!", < "Floran not ssstab ape for now.", < "Floran sssay hello, be friendly to big monkey.", < "Hopping monkey make Floran laugh.", < "Floran think Apex Floran's favourite.", < "Glitch sssay monkeys are oppressed. Floran not understand.", < "Monkey come see Floran house.", < "Floran proud of village. Sssee it.", < "Floran admit Floran ssscared of monkey men.", < "Floran big tough hunter. Cocoon-kin here soon.", < "Floran sssad, cocoon-sister take drysap.", < "Greenguard put monkey in Dust if monkey bad.", < "Floran once punch a monkey for no reason.", < "Hello. Hi. Hello. Hi. Hello.", < "Floran tell Biggie Ape; ssstabbing can happen.", < "Floran not afraid of anything!", < "Monkey let Floran see ssspace ship.", < "Floran want monkey clothes.", < "Chimpanzeeeeeee!", < "Floran happy with encounter.", < "Floran want to know; what's fleas?", < "Please admire Floran foliage, monkey man!", < "Floran wonder if monkey man like Floran.", < "Floran think monkey funny and nice.", < "Floran never hunt monkey ever.", < "I learning am how speak to properly. Floran.", < "Sssilly monkey, Floran like.", < "Ssstabby ssstabby ssstabby!", < "Floran is hero to cocoon-kin.", < "Floran help monkey man take down mini log." < ], < "avian" : [ < "Birdman!", < "Floran love Avian feathersss.", < "Floran sssad birdman can't fly.", < "Floran dream of hunting Kluex!", < "Floran want to ssstroke birdman.", < "Take Floran to ssstars, bird!", < "Greenfinger say birdthings like gods.", < "Floran wonder if Kluex really that tough.", < "Bird person! Hello.", < "Floran like look of bird.", < "Not even want to ssstab you.", < "Floran reflecting on nature of existence. Floran ssseek ssspiritual guidance.", < "Birdman want to hear Floran read?", < "Are you a big reader? No, I thought not.", < "Floran hear about birdman tombs. Floran like.", < "Floran will defeat birdman Ssstargazers.", < "Floran consider ssstabbing but behave ssself.", < "Welcome in, bird thing!", < "Floran fear nothing!", < "Place here is nice, yes?", < "Feathers make Floran sssneeze.", < "Floran happy to welcome bird in.", < "Floran sssee bird, laugh.", < "Greenfinger sssay bird people nice.", < "Floran pleased to sssee this one.", < "Pretty little bird. Floran not ssstab.", < "Bird bird bird birdy.", < "Floran thrilled to sssee bird person!", < "Floran demand feather as offering!", < "Greenguard want watch bird person, Floran think.", < "Floran want birdman ssspace ssship. Can Floran have?", < "Other birdman sssay Floran not have sssocial ssskills. Floran ssstab.", < "Flap flap flap!", < "Peck peck peck!", < "Floran sssee funny ssside.", < "Floran ssshow birdman ssspear collection.", < "Birdman! Floran say hi!", < "Floran pleased bird ssspeak to it.", < "Welcome in!", < "Not want bird to feel unsettled.", < "Ssspace!", < "Flyyyyyyyy!" < ], < "floran" : [ < "Floran!", < "Greetings Floran.", < "Floran hunt better than Floran. Floran know it!", < "Floran think Floran member of cocoon-kin.", < "What Greenfinger sssay to you Floran?", < "Floran smell Hylotl on you.", < "Strange Floran from ssspace. Floran like.", < "Floran take Floran on ssspace ssship now.", < "Floran not here to cause trouble, right?", < "Greenguard not trust Floran outsiders. Sssad.", < "Floran wonder if Floran really a Floran.", < "Ssstab? Ssstab. Ssstab!", < "Friend!", < "Floran ssshow best ssstabber.", < "Floran sssuggest we hunt together.", < "Floran wonder if Floran meet big prey in ssspace?", < "Floran happy now.", < "Floran confused by new Floran face.", < "A friend!", < "Ssstabbing is fun!", < "Floran behave around guest.", < "Nice happy to meet!", < "Floran and Floran adventure go!", < "We become friends?", < "This happy day for Floran.", < "Floran tell cocoon-kin about thisss.", < "Floran wonder if Floran miss cocoon-kin.", < "Floran proud of grand ssspace hunter Floran friend.", < "Floran read Floran Peace. Floran not like.", < "Floran in trouble for eating Apex.", < "Greenfinger sssay ssspace hunter Floran best in business.", < "Floran hear dark rumours.", < "Ssstab all of things!", < "Floran long to punch sssomething.", < "Floran trembling in awe.", < "Floran pleased to be happy.", < "Floran like not being judged.", < "Hello Floran friend!", < "Hunting hunting hunting every daysss.", < "Floran recommend Art of Ssstabbing as good read.", < "Floran meet Sssunflower Tzu once, go weak at knees.", < "Floran wonder if Floran meet Greenfinger ever.", < "Floran big ssshot in village." < ], < "glitch" : [ < "Floran greet metal man!", < "Robo-friend make Floran happy.", < "Floran not ssstab Glitchy.", < "Greenfinger sssay Glitch our kin from another bin.", < "Floran pleased to sssee robot.", < "Floran hope robot teach Floran to maths.", < "Robot make Floran feel fuzzy.", < "Floran love Glitch for ever.", < "Yip!", < "Ssslashy ssstabby Floran protect Glitch.", < "Floran want be on Glitch ssspace ship.", < "Floran tap metal robot head, hear clunk.", < "Floran excited to sssee roboglitch.", < "Robot ssseem nice.", < "Floran love sssound robot make.", < "Floran want visit robot ssspace ssship.", < "Floran wonder if Glitch meet Hylotl lately?", < "Hello robo.", < "Floran want Glitch to ssstay.", < "Floran love warrior robot.", < "Floran ssshow off ssskills to robot.", < "Let's eat!", < "Happy daysss!", < "Floran feel nice today.", < "Floran want Glitch to sssing.", < "Floran giggle at robot.", < "Floran hope Glitch teach many things.", < "Greenfinger love robots!", < "Floran never ssstab Glitch ever.", < "Glitch nice to Floran, Floran respect.", < "Floran want to go ssspace fight!", < "Floran think about many things lately.", < "Floran hope robot like place.", < "Robot and Floran friends.", < "Floran want Glitch clothes.", < "Robot, Floran wonder if robot like Floran foliage?", < "Floran will sssad when robot go.", < "Floran want to dance.", < "Glitchy turn up, make Floran day.", < "Floran pledge Glitchy its ssstabbies." < ], < "hylotl" : [ < "Fish man sssmells interesting...", < "You look like fun, can I chassse you?", < "Doesss fish man have huntsss too?", < "Do you make ssspears? I might get a new one.", < "I've never hunted with sssomeone like you!", < "Have you met Floransss before?", < "Do you have Floran ssstaying on your home planet?", < "Ssslimy creature!", < "Ssstrange, you are different colours to most meat people.", < "Your ssskin is bright colours like Floran!", < "How many coloursss do you have on you?", < "Fish person sssmell different to other meat people.", < "Three eyes! I could hunt ssso much more prey with three eyes!", < "Why are your eyesss red?", < "Are your teeth as sssharp as Florans?", < "Do fish men see many Floransss?", < "How many prey have you ssstabbed recently, fish?", < "Do you live under water? Ssstrange...", < "Does the sssun give you energy too?", < "Do you have a ssspace ship? Can you hunt in ssspace?!", < "Hi there, fish man!", < "Floran sssmell you from far away! Be careful, makesss your kind easy to hunt!", < "How fassst can you swim, if you're a fish?", < "Are you a fisssh or lizard? It's all meat to me.", < "Does your meat people prefer ssswords or ssspears?", < "Has your kind heard of Floransss before?", < "Do fish people have Greenfingersss?", < "Show me your hunting ssshout, meat people!", < "What'sss your favourite plant type?", < "Does fish man eat meat?", < "Let'sss have a competition. I bet I can huntsss more than you!", < "Are you fassster than me?", < "I wonder if fish man has heard of Floran before.", < "I bet we could be friendsss, fish man!", < "Your eyesss are so much smaller than mine.", < "Isss your middle eye real, or did you paint it on for a hunt?", < "Floran can jump higher than fish man!", < "How man fish people are there? Not more than Floransss I bet!", < "Do you hunt well? That is what I ressspect!", < "I'm sssure we can be friends." < ] < }, < < "glitch" : { < "default" : [ < "Confusion. What manner of being are you?" < ], < "human" : [ < "Superiority. Fleshy human.", < "Disgust. Fleshy!", < "Interest. Who built you meatman?", < "Greeting. I will always welcome new friends!", < "Trepidation. What is your business here?", < "Kindness. All travellers are welcome here.", < "Kindness. Make sure you rest before leaving town, it's not safe out there.", < "Fascination. I would love to study just how you were assembled.", < "Cheerful. I love my home!", < "Busy. Mmm?", < "Questioning. Are all meatmen so hairy?", < "Confused. My scan suggests there are parts of your body I do not possess.", < "Wistful. I long to travel...", < "Intimidating. Our lives are hard, don't make them any harder.", < "Irritated. Watch where you locate your lumpy meat!", < "Pride. What do you think of our village?", < "Dismayed. You are not the Glitch I'm looking for.", < "Intrigued. Have you seen that new play by Wullum Sparkspear?", < "Condescending. You are not worth my time.", < "Worried. Some Glitch have gone mad.", < "Friendly. Hello friend, can I offer you some nuts, perhaps a change of oil?", < "Inquiry. How can you deal with the sloshing of your squishy parts?", < "Worried. I think I may have a screw loose.", < "Curiosity. Why are you wearing that flesh over your chassis?", < "Worried. Keep your distance, I think I have a virus.", < "Concerned. Your eyes have red rings around them. Are you ok?", < "Cautious. I heard humans often have viruses.", < "Confused. What is love?", < "Disturbed. You wobble when you walk.", < "Snarky. You have such oily skin.", < "Concern. Why is your coating so malleable?", < "Observation. There is a severe lack of consistency in your race's exteriors.", < "Admiration. For years I've dreamed of being able to grow hair. You are living that dream.", < "Alerted. My olfactory sensors indicate that you could do with some maintenance." < ], < "apex" : [ < "Shocked. Such a hairy creature!", < "Wistful. One day follows the next but time seems to stand still.", < "Inspired. You have enough hair to produce a large number of wigs.", < "Greedy. I could sell all of that hair of yours for you and make us both rich!", < "Trepidation. No monkeying around.", < "Warning. Throwing fecal matter is an offense punishable by death.", < "Frustration. Stop imitating everything I do.", < "Curious. Do you have tail?", < "Enquiry. Have you ever tasted an automato?", < "Curious. Are all those hairs stuck on?", < "Admiration. Your insulation layer is both practical and attractive. Is it for sale?", < "Kindness. Hang around!", < "Critical. Your hair is a rare gift, you should keep it in better condition.", < "Hospitable. Would you care for a banana?", < "Query. Are you perhaps related to the Yetis of legend?", < "Insult. Take your stinking paws off me you damn dirty ape!.", < "Fascination. How do Primates build their progeny? How do you assemble?", < "Query. What is a Miniknog? Define.", < "Query. What function does your pelt serve Apeman?", < "Kindness. You may rest here any time Apeman.", < "Intimidate. Aren't you suppose to be wearing a fez or something?", < "Kindness. Welcome, friend. The tavern just received a banana shipment this morning.", < "Curious. Is it true that Big Ape is ten feet tall, and made of gold?", < "Disgust. What is that stuck in your fur?", < "Uncertainty. How do you differentiate your genders?", < "Apathy. You seem like just another type of meatman.", < "Criticism. Evolution has not been kind to you.", < "Disdain. Deactivating olfactory circuits.", < "Compliment. Your fur looks wonderful in infrared!", < "Alarm. Are you Big Ape? Because I cannot imagine an ape even bigger than you.", < "Tactless. We have heard many things about the Miniknog. We would like to hear more.", < "Scientific. Scans indicate you share biological roots with a number of other species.", < "Wistful. I am sorry. I drifted off for a moment, imagining your hair blowing softly in the wind.", < "Excited. Perhaps your species could be the basis for a new, hairier Glitch model one day.", < "Hesitant. Would you... would you be offended if I ran my appendages through your mane?", < "Cheerful. I am sure you are excited to return home and inform Big Ape of your adventures.", < "Annoyed. The flagrant flaunting of your follicles feels like a kick in the grill.", < "Pleading. Perhaps one day you would explain to the Glitch the secret of the banana split.", < "Kindness. Are you looking for a job stranger? We currently need a librarian.", < "Concerned. You seem jumpy, don't worry, I don't think the Miniknog are here." < ], < "avian" : [ < "Query. Does your plumage self-assemble, or is it constructed by artisans?", < "Query. What purpose do your feather serve if you cannot fly?", < "Disdain. It is said the birdmen believe in a feathered god, is that true?", < "Query. Are you able to fly?", < "Curious. May I buy an egg from you?", < "Fortunate. I need a new quill.", < "Query. What is your maximum airspeed velocity?", < "Confusion. Which of you came first? Your egg or.. ERROR", < "Statement. Though our worship may differ, we hold no ill will to you Birdman.", < "Query. Do you head south for winter?", < "Question. Are Avian bones hollow?", < "Concern. Your rigid supports seem unusually fragile.", < "Deception. Don't worry about the chickens, we don't eat them.", < "Welcoming. How do you like it in our village, feathered friend?", < "Friendly. Good morrow my fine feathered fellow.", < "Interest. You would make a very comfy feathered pillow.", < "Kindness. There's a wonderful place to roost at our Inn.", < "Conviction. Do not blaspheme, or we will provide the tar.", < "Request. Are you willing to provide guano?", < "Irritation. A flock of your kind came through the other day.", < "Threat. Are you familiar with the concept of wishbones?", < "Consternation. Please stop pushing my buttons.", < "Suspicion. Hawk creature, have you seen my hacksaw?", < "Puzzlement. Perhaps His Lordship took up falconry.", < "Admonition. Please attempt to contain your affinity for shiny objects while you are here.", < "Concern. My what a sharp beak you have.", < "Greeting. Welcome to our village birdman.", < "Expectant. You look like you could help with my insect problem.", < "Query. You have beautiful plumage. May I have some?", < "Jealousy. May I stroke your pretty feathers?", < "Proposal. Our smith could make you a wonderful gilded cage.", < "Inquiry. Do you have spare eggs for sale?", < "Inquiry. What brings you here birdman?", < "Query. We're looking for a volunteer for a game of goose pulling, are you interested?", < "Insincerity. Please do not be offended by our livestock. We are well aware that your species is much more evolved.", < "Happy. Good day to you birdman!", < "Friendly. I hope you're feeling well birdman.", < "Friendly. Greetings my Avian friend!", < "Greeting. Well met my feathered friend.", < "Caution. I've never met a birdman before.", < "Excitement. Can you fly?", < "Concerned: Are your wings in need of repair?" < ], < "floran" : [ < "Friendly. Greetings plantman.", < "Friendly. Nice to meet you plantman, we have rich soil here.", < "Curious. Were you born or grown?", < "Fearful. What sharp teeth you have!", < "Anxious. You seem polite, but I cannot be sure you won't try to eat me.", < "Bold. Your teeth won't pierce my shell!", < "Comparative. Physically we couldn't be more different.", < "Honest. You have a frightening appearance plantman.", < "Intimidated. You're friendly, right?", < "Curious. Do your leaves fall off in the autumn?", < "Shocked. What are you? A fabled Floran?", < "Startled. Hi...", < "Complimentary. You smell like flowers.", < "Statement. It appears there is some stigma attached to being a plantman.", < "Brave. You're not so scary.", < "Worried. Your eyes are insect-like.", < "Terrified. Ahhhh!", < "Amused. Try not to scare anyone plantman.", < "Concerned. The fishmen do not have good things to say about you stranger.", < "Troubled. Are you friendly?", < "Suspicious. What's your business here?", < "Wonder. Are you an ent?", < "Opportunistic. May I have some of your leaves?", < "Curious. Where do you come from?", < "Concerned. The colour of your skin... are you sick?", < "Startled. Oh! I didn't see you there, I thought you were a pot plant.", < "Nervous. Will you eh... be here long?", < "Flirtatious. You have lovely buds.", < "Joking. So you started out as a little nut, so did I.", < "Worried. Please don't eat our livestock.", < "Nervous. You don't really eat people do you?", < "Kind. You look friendly enough, I think people have got you plantmen all wrong!", < "Friendly. Are you thorny or can I have a hug?", < "Friendly. May I smell your flowers?", < "Awe. You're so pretty!", < "Thoughtful. You'd look great in a garden.", < "Query. Are the leaves just for show?", < "Query. How many plantmen are there?", < "Sarcastic. If you sit in the soil do you grow taller?", < "Impressed. I didn't know organic matter could be so strong!", < "Friendly. Would you like some water?", < "Curious. Can plantmen get by on just water and sunlight?", < "Friendly. I think plantmen are cute, despite what everyone says!" < ], < "glitch" : [ < "Friendly. Greetings friend.", < "Friendly. Well met, are you from this village?", < "Friendly. You don't look as if you're from around here.", < "Suspicious. Where did you come from, you're not malfunctioning are you?", < "Flirtatious. Your optics are so well lit!", < "Flirtatious. You're so shiny.", < "Suspicious. Do you feel funny?", < "Hungry. You don't happen to have an automato do you?", < "Happy. Hello fellow metalhead!", < "Curious. Are you a knight?", < "Tired. My feet ache, how is that possible?", < "Sad. My friend was recently disassembled.", < "Surprised. It's so good to see a new face!", < "Curious. Do you own a house here?", < "Helpful. You should probably avoid the inn, they're a loutish lot.", < "Worried. What if I go crazy one day too?", < "Secretive. I think there might be more out there... do you know what I mean?", < "Giggly. Hehehe.", < "Inspired. I want to learn to sword fight! Maybe I'll become a Knight!", < "Meditative. Shhh. I'm having new thoughts.", < "Unsatisfied. Day after day, it's always the same.", < "Confused. What time is it?", < "Friendly. What's your name?", < "Ashamed. I think I've lost a chicken.", < "Excited. Are you thinking of settling here?", < "Happy. This is such a friendly village.", < "Content. I think I'll spend the rest of my days here.", < "Alert. Did you hear a rat?", < "Bored. Time seems to stand still sometimes.", < "Traumatised. Someone stomped on my chicken.", < "Tired. My joints need oiling.", < "Sophisticated. Why hello there.", < "Poetic. Twas brillig!", < "Worried. You don't have a virus do you?", < "Sad. My partner and I got our wires crossed. Now he hates me.", < "Inspirational. I'm learning to play the lute!", < "Tired. I need to recharge.", < "Disappointed. Oh, it's you.", < "Curious. What brings you here friend?", < "Welcoming. I like a friendly face!", < "Query. Have you read the latest Vector Squared?" < ], < "hylotl" : [ < "Sceptical. For a species that lives underwater, you don't smell very clean.", < "Charitable. Perhaps you would like to examine some Glitch constructions to advance your own designs. ", < "Envious. It must be liberating to be able to swim through the oceans without a care.", < "Considering. It is nice to see even the lesser species getting out once in a while.", < "Reassured. It appears the Glitch aren't the only species lacking in glorious hair.", < "Annoyed. You are dripping on my circuits.", < "Thoughtful. Perhaps one day you could teach the Glitch to swim...", < "Patronising. We hope you feel at home, despite the shortage of lily pads.", < "Observation. Your biological structure is similar to another species we have encountered recently.", < "Cautious. Please do not get too close. You are splashing water everywhere.", < "Scientific. It is rare for Glitch to encounter aquatic life forms.", < "Shy. I've secretly always been a fan of your species' superior artistic skills.", < "Condemning. Perhaps you could stand to learn a thing or two about other cultures.", < "Curious. Is it correct that your species does not eat meat?", < "Tactless. Is your species descended from fish or frogs?", < "Justifying. Ignore my hivemates. Some of my best friends are Hylotl.", < "Anger. My shoulder is not an appropriate thing in which to check your reflection.", < "Querying. Have you tried jousting? It's truly a wonderful sport.", < "Puzzlement. Pacifism? Sounds impractical.", < "Interested. Do you people listen to music in your underwater homes?", < "Sarcastic. Please, tell me more about Hylotl craftsmanship.", < "Hospitable. I apologise if Glitch furnishings are not to your taste.", < "Nostalgic. Your scent reminds me of my trips to the beach as a young Glitch.", < "Pondering. What do you do when you need to take a bath?", < "Eager. I've been practising my lily pad designs. Perhaps you could take a look.", < "Interested. Do you spend more time on land, or in the water?", < "Analysis. You have a fish in your pocket.", < "Bragging. Glitch furniture lasts up to ten times longer than that of your species.", < "Helpful. If you need any support adjusting to life on land, we Glitch are experts.", < "Amused. Your species seems to be exceptionally colourful.", < "Analysis. Your species' biology is made up of seventy percent salt water.", < "Curious. Do you take shelter from the rain?", < "Reassuring. One day, your species will catch up to the Glitch.", < "Longing. Perhaps, if you are not busy, you could take me sailing one day.", < "Entertained. A Glitch created in your species' image would be amusing indeed.", < "Condescending. A non-violent species? How adorable.", < "Critical. There's no accounting for taste in fashion, one supposes.", < "Alarmed. Reconsider any plans to take the Glitch underwater, stranger.", < "Paranoid. I would shake your hand, but I am concerned about my circuits.", < "Hostile. Take your peace-loving ways elsewhere, water-dweller." < ] < } < } < }, < < "flee" : { < "reactionTimeRange" : [0.2, 1.0], < "safeDistance" : 100, < "safeDistanceWithGuards" : 40, < "safeTimer" : 10, < "stuckTime" : 4, < "stuckCooldown" : 10, < "dialogTimeRange" : [4, 10], < < "dialog" : { < "helpme" : { < "default" : [ < "Guards! Help me!", < "Help! Guards! Help!", < "Guards! I've been accosted!" < ], < "glitch" : [ < "Fear. Guards! Help me!", < "Intimidated. Please don't hurt me!", < "Abused. Guards! I've been accosted!", < "Afraid. Get away from me! Guards!", < "Terrified. Save me!", < "Shocked. No! Get away from me!" < ], < "floran" : [ < "Ssstabby time for me!", < "Floran being hurted!", < "Floran not ready for hunt!", < "Greenguard help Floran!" < ] < }, < "helpthem" : { < "default" : [ < "What have you done!?" < ], < "glitch" : [ < "Fear. Guards!", < "Intimidated. Please don't hurt me!", < "Afraid. Leave me be! Guards!", < "Terrified. Save me!", < "Shocked. What have you done?!", < "Righteous. I will write an electronic letter in protest!" < ], < "floran" : [ < "Ssstabby time for me!", < "Floran being hurted!", < "Floran not ready for hunt!", < "Greenguard help Floran!" < ] < }, < "encourage" : { < "default" : [ < "Get 'em!", < "Avenge me!", < "Stick 'em once for me!", < "Don't let 'em get away!" < ], < "glitch" : [ < "Encourage. Put 'em to the sword!", < "Excitement. Avenge me!", < "Aggressive. Strike him down!", < "Vengeful. Don't let 'em get away!" < ], < "floran" : [ < "Ssstabb the intruders!", < "Floran get revenge now!", < "Ssslice them!", < "Greenguard destroy it!" < ] < }, < "safe" : { < "default" : [ < "Phew, I think I got away.", < "I've escaped with my life!", < "Is this the safe zone?" < ], < "glitch" : [ < "Relieved. Phew, I think I got away.", < "Thankful. I've escaped with my life!", < "Wishful. If only I could afford a keep.", < "Hopeful. Am I safe?", < "Embarrassed. I think I leaked a little oil." < ], < "floran" : [ < "Floran sssafe now.", < "Floran not get ssstabbed after all.", < "Them lucky Floran not have weapon.", < "Sssalvation!" < ] --- > "beacon" : "/dialog/arrivedhome.config:beacon", > "rent" : "/dialog/arrivedhome.config:rent" 1923,1987c24,31 < } < }, < < "sit" : { < "timeOfDayRanges" : [ [0.6, 1.0], [0.0, 0.2] ], < "moveTimeLimit" : 30, < "searchRadius" : 25, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [15, 240] < }, < < "sleep" : { < "searchRadius" : 15, < "lieDownRadius" : 3, < "moveToBedTimeLimit" : 10.0, < "timeOfDayRanges" : [ [ [0.7, 0.75], [0.95, 1.0] ] ], < "cooldown" : 30 < }, < < "wander" : { < "timeRange" : [2.0, 10.0], < "chatDistance" : 4, < "indoorTimeOfDayRanges" : [ [0.0, 0.2], [0.5, 1.0] ], < "indoorSearchRadius" : 60, < "indoorLookaheadDistance" : 4, < "moveToTargetTime" : 10.0, < "changeDirectionCooldown" : 2, < "dropDownChance" : 5, < "cooldown" : 10 < }, < < "work" : { < "timeOfDayRanges" : [ [0.2, 0.6] ], < "tools" : [ [ "hoe", 0.5, 2.0] ], < "toolRange" : 3.0, < "searchDistance" : 10.0, < "timeRange" : [4.0, 6.0], < "cooldown" : 10.0 < }, < < "chat" : { < "distanceRange" : [2.0, 4.0], < "conversations" : [ < [ < [2, "blabbering", "idle" ], < [1, "idle", "laugh" ], < [2, "idle", "blabbering" ], < [1, "sad", "idle" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "happy" ], < [1, "wink", "laugh" ], < [2, "happy", "happy" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "blabbering" ], < [2, "blabbering", "annoyed" ], < [3, "shouting", "shouting" ], < [2, "annoyed", "annoyed" ] < ] < ], < "cooldown" : 10 --- > }, > "flee" : { > "helpme" : "/dialog/flee.config:helpme", > "helpthem" : "/dialog/flee.config:helpthem", > "encourage" : "/dialog/flee.config:encourage", > "safe" : "/dialog/flee.config:safe" > }, > "converse" : "/dialog/converse.config:converse" 2290,2380d333 < }, < < "dropPools" : [ "villagertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 0.75 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\wanderingmerchant.npctype 5,6d4 < "damageTeam" : 1, < 9,10d6 < "disableWornArmor" : true, < 12,13d7 < "noticePlayersRadius" : 30.0, < 22,43d15 < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "runThreshold" : 9, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 npcs\wildhunter.npctype 5,8d4 < "disableWornArmor" : true, < < "damageTeam" : 1, < 11,63c7,8 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], < < "scriptConfig" : { < "attackerLimit" : 8, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "patrolDistance" : 5, < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < "changeDirectionTimeRange" : [5, 10], < < "attackSayingPercent" : 0, < < "dialog" : { < "attack" : { < "default" : [ "Intruder!" < ], < "floran" : { < "default" : [ < "Freshhhhh prey!" < ] < } < } < } < }, < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 < }, < < "meleeAttack" : { < "swingDistance" : 4, < "runThreshold" : 0 < } --- > "movementParameters" : { > "runSpeed" : 15 90,157d34 < }, < < "movementParameters" : { < "runSpeed" : 15 < }, < < "dropPools" : [ "floranwildhuntertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\wildhunterveteran.npctype 3c3 < "baseType" : "wildhunter", --- > "baseType" : "guard", 4a5 > "dropPools" : [ "floranwildhunterveterantreasure" ], 7,9c8,16 < "scriptConfig" : { < "meleeAttack" : { < "swingDistance" : 6 --- > "movementParameters" : { > "runSpeed" : 15 > }, > > "statusControllerSettings" : { > "stats" : { > "maxHealth" : { > "baseValue" : 125.0 > } 33,100d39 < }, < < "movementParameters" : { < "runSpeed" : 15 < }, < < "dropPools" : [ "floranwildhunterveterantreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 125.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\wizardmerchant.npctype 5,9d4 < "damageTeam" : 1, < "levelVariance" : [0, 0], < < "disableWornArmor" : true, < 13,14d7 < "noticePlayersRadius" : 30.0, < 25,39c18,74 < "start" : { < "default" : [ < "Welcome to my shop.", < "See anything you like?", < "What can I do ya for?" < ], < < "apex" : { < "default" : [ < "I've got things the Miniknog would kill for.", < "You're not Miniknog are you? Goooooood.", < "Got more than just bananas, if you know what I mean.", < "How about a bit of monkey magic, eh?" < ] < }, --- > "merchant" : { > "start" : { > "default" : { > "default" : [ > "Welcome to my shop.", > "See anything you like?", > "What can I do ya for?" > ] > }, > "apex" : { > "default" : [ > "I've got things the Miniknog would kill for.", > "You're not Miniknog are you? Goooooood.", > "Got more than just bananas, if you know what I mean.", > "How about a bit of monkey magic, eh?" > ] > }, > "avian" : { > "default" : [ > "Kluex has blessed my stock.", > "I have items for sale that even the Sunborn envy.", > "Stargazers HATE me. Try this one weird item...", > "I sell to Thornwing himself." > ] > }, > "floran" : { > "default" : [ > "Floran sssell magic thingies, buy it, buy it!", > "Greenfinger sssay Floran ssstock best magic ssstock.", > "Magic everywhere in this ditch!" > ], > "hylotl" : [ > "Even fishman want Floran magic, sssee.", > "Floran sssell to fishman, blow mind.", > "Come closer fish, sssee what Floran can do for you." > ] > }, > "glitch" : { > "default" : [ > "Mystical. Not everything can be explained by science, customer.", > "Mysterious. Traveller, come hither, and browse my magic.", > "Clandestine. Cogs and gears only go so far, young one.", > "Tantalising. Death need not be the end, there are stims for that..." > ] > }, > "hylotl" : { > "default" : [ > "The ocean hides more than just treasure, wanderer. Magic lies beneath the sea.", > "The Hylotl darkness will be swept away by the typhoon.", > "Eternal life is just a shot away...", > "There is nothing fishy about my goods." > ], > "floran" : [ > "Come, Floran friend. Come and be cleansed!", > "Our kinds war, and yet in magic we find peace.", > "May you find Sanctuary, Floran. May my magic help you on your way." > ] 41,47c76 < "avian" : { < "default" : [ < "Kluex has blessed my stock.", < "I have items for sale that even the Sunborn envy.", < "Stargazers HATE me. Try this one weird item...", < "I sell to Thornwing himself." < ] --- > } 48a78,91 > "end" : { > "default" : { > "default" : [ > "Farewell, traveller.", > "Blessed be.", > "Courage to you!" > ] > }, > "glitch" : { > "default" : [ > "Deceptive. May you be forever blessed.", > "Sinister. Goodwill to you, traveller.", > "Insincere. May you have safe travels." > ] 50,99c93 < "floran" : { < "default" : [ < "Floran sssell magic thingies, buy it, buy it!", < "Greenfinger sssay Floran ssstock best magic ssstock.", < "Magic everywhere in this ditch!" < ], < "hylotl" : [ < "Even fishman want Floran magic, sssee.", < "Floran sssell to fishman, blow mind.", < "Come closer fish, sssee what Floran can do for you." < ] < }, < < "glitch" : { < "default" : [ < "Mystical. Not everything can be explained by science, customer.", < "Mysterious. Traveller, come hither, and browse my magic.", < "Clandestine. Cogs and gears only go so far, young one.", < "Tantalising. Death need not be the end, there are stims for that..." < ] < }, < < "hylotl" : { < "default" : [ < "The ocean hides more than just treasure, wanderer. Magic lies beneath the sea.", < "The Hylotl darkness will be swept away by the typhoon.", < "Eternal life is just a shot away...", < "There is nothing fishy about my goods." < ], < "floran" : [ < "Come, Floran friend. Come and be cleansed!", < "Our kinds war, and yet in magic we find peace.", < "May you find Sanctuary, Floran. May my magic help you on your way." < ] < < } < }, < "end" : { < "default" : [ < "Farewell, traveller.", < "Blessed be.", < "Courage to you!" < ], < "glitch" : { < "default" : [ < "Deceptive. May you be forever blessed.", < "Sinister. Goodwill to you, traveller.", < "Insincere. May you have safe travels." < ] < --- > } 102,123d95 < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "runThreshold" : 9, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 126,127d97 < < npcs\biome\forestvillager.npctype 5,8d4 < "disableWornArmor" : true, < < "damageTeam" : 1, < 12,15c8,14 < < "converse" : { < "waitTime" : 0.5, < "dialog" : { --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ > "I have nothing to say to you" > ] > }, npcs\mission\apexscientist.npctype 3c3 < "baseType" : "guard", --- > "baseType" : "hostile", 5,25c5 < "damageTeam" : 2, < < "levelVariance" : [0, 0], < < "disableWornArmor" : true, < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], --- > "dropPools" : [ "money" ], 28,63c8,9 < "attackerLimit" : 8, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "patrolDistance" : 5, < "noticeDistance" : 25, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 25, < "changeDirectionTimeRange" : [5, 10], < < "attackSayingPercent" : 100, < < "dialog" : { < "attack" : { < "default" : [ < "What is freedom, if not another form of slavery?" < ], < "apex" : { < "default" : [ < "Rebel soldiers are infiltrating! Alert!", < "You must work for the rebels!", < "You will meet a swift end, rebels!", < "Your uprising will fall, rebels!", < "Rebels are sneaking in!", < "Insurgents! Do not think you can defeat us!", < "I've seen you, rebel!", < "Perish, rebel!", < "Rebel soldiers, trying to sneak by!", < "You shall not leave this place alive, rebel scum!", < "Alert! Rebels trying to sneak by!" < ] < } < } < } --- > "dialog" : { > "attack" : "/dialog/scientist.config:attack" 86a33,35 > ], > "sheathedprimary" : [ > { "name" : "generatedsword", "parameters" : { "definition" : "commonbroadsword" } } 187,250d135 < }, < < "dropPools" : [ "money" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\mission\apexscout.npctype 3c3 < "baseType" : "guard", --- > "baseType" : "hostile", 5,25c5 < "damageTeam" : 2, < < "levelVariance" : [0, 0], < < "disableWornArmor" : true, < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], --- > "dropPools" : [ "money" ], 28,63c8,9 < "attackerLimit" : 8, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "patrolDistance" : 5, < "noticeDistance" : 25, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 25, < "changeDirectionTimeRange" : [5, 10], < < "attackSayingPercent" : 100, < < "dialog" : { < "attack" : { < "default" : [ < "What is freedom, if not another form of slavery?" < ], < "apex" : { < "default" : [ < "Rebel soldiers are infiltrating! Alert!", < "You must work for the rebels!", < "You will meet a swift end, rebels!", < "Your uprising will fall, rebels!", < "Rebels are sneaking in!", < "Insurgents! Do not think you can defeat us!", < "I've seen you, rebel!", < "Perish, rebel!", < "Rebel soldiers, trying to sneak by!", < "You shall not leave this place alive, rebel scum!", < "Alert! Rebels trying to sneak by!" < ] < } < } < } --- > "dialog" : { > "attack" : "/dialog/scientist.config:attack" 189,252d134 < }, < < "dropPools" : [ "money" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\mission\florancelebrator.npctype 2a3 > "baseType" : "base", 5d5 < "damageTeam" : 1, 8,13c8 < "disableWornArmor" : true, < < "scripts" : [ < "/npcs/bmain.lua" < ], < "initialScriptDelta" : 5, --- > "persistent" : true, 14a10 > "dropPools" : [ "villagertreasure" ], 19,22c15,21 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ "I have nothing to sssay to you" ], --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ > "I have nothing to sssay to you" > ] > }, 51,199d49 < "human" : [ < [0, [ < { < "chest" : [ < { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 1 } }, { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 3 } }, { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 4 } }, { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 5 } }, { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 6 } }, { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 7 } }, { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 8 } }, { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 9 } }, < { "name" : "conceptchest", "parameters" : { "colorIndex" : 1 } }, { "name" : "conceptchest", "parameters" : { "colorIndex" : 3 } }, { "name" : "conceptchest", "parameters" : { "colorIndex" : 4 } }, { "name" : "conceptchest", "parameters" : { "colorIndex" : 5 } }, { "name" : "conceptchest", "parameters" : { "colorIndex" : 6 } }, { "name" : "conceptchest", "parameters" : { "colorIndex" : 7 } }, { "name" : "conceptchest", "parameters" : { "colorIndex" : 8 } }, { "name" : "conceptchest", "parameters" : { "colorIndex" : 9 } }, < { "name" : "coolchest", "parameters" : { "colorIndex" : 1 } }, { "name" : "coolchest", "parameters" : { "colorIndex" : 3 } }, { "name" : "coolchest", "parameters" : { "colorIndex" : 4 } }, { "name" : "coolchest", "parameters" : { "colorIndex" : 5 } }, { "name" : "coolchest", "parameters" : { "colorIndex" : 6 } }, { "name" : "coolchest", "parameters" : { "colorIndex" : 7 } }, { "name" : "coolchest", "parameters" : { "colorIndex" : 8 } }, { "name" : "coolchest", "parameters" : { "colorIndex" : 9 } }, < { "name" : "workoutchest", "parameters" : { "colorIndex" : 1 } }, { "name" : "workoutchest", "parameters" : { "colorIndex" : 3 } }, { "name" : "workoutchest", "parameters" : { "colorIndex" : 4 } }, { "name" : "workoutchest", "parameters" : { "colorIndex" : 5 } }, { "name" : "workoutchest", "parameters" : { "colorIndex" : 6 } }, { "name" : "workoutchest", "parameters" : { "colorIndex" : 7 } }, { "name" : "workoutchest", "parameters" : { "colorIndex" : 8 } }, { "name" : "workoutchest", "parameters" : { "colorIndex" : 9 } } < ], < < "legs" : [ < { "name" : "conceptlegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "conceptlegs", "parameters" : { "colorIndex" : 3 } }, { "name" : "conceptlegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "conceptlegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "conceptlegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "conceptlegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "conceptlegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "conceptlegs", "parameters" : { "colorIndex" : 9 } }, < { "name" : "coollegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "coollegs", "parameters" : { "colorIndex" : 3 } }, { "name" : "coollegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "coollegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "coollegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "coollegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "coollegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "coollegs", "parameters" : { "colorIndex" : 9 } }, < { "name" : "workoutlegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "workoutlegs", "parameters" : { "colorIndex" : 3 } }, { "name" : "workoutlegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "workoutlegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "workoutlegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "workoutlegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "workoutlegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "workoutlegs", "parameters" : { "colorIndex" : 9 } } < ] < } < ] ] < ], < < "avian" : [ < [0, [ < { < "chest" : [ < { "name" : "avianadventurershirt", "parameters" : { "colorIndex" : 1 } }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } }, { "name" : "avianfancyshirt", "parameters" : { "colorIndex" : 1 } }, { "name" : "avianworkershirt", "parameters" : { "colorIndex" : 1 } } < ], < "legs" : [ < { "name" : "avianadventurerpants", "parameters" : { "colorIndex" : 1 } }, { "name" : "aviancommonerlegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "avianfancyskirt", "parameters" : { "colorIndex" : 1 } } < ] < }, < { < "chest" : [ < { "name" : "avianadventurershirt", "parameters" : { "colorIndex" : 4 } }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 4 } }, { "name" : "avianfancyshirt", "parameters" : { "colorIndex" : 4 } }, { "name" : "avianworkershirt", "parameters" : { "colorIndex" : 4 } } < ], < "legs" : [ < { "name" : "avianadventurerpants", "parameters" : { "colorIndex" : 4 } }, { "name" : "aviancommonerlegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "avianfancyskirt", "parameters" : { "colorIndex" : 4 } } < ] < }, < { < "chest" : [ < { "name" : "avianadventurershirt", "parameters" : { "colorIndex" : 5 } }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 5 } }, { "name" : "avianfancyshirt", "parameters" : { "colorIndex" : 5 } }, { "name" : "avianworkershirt", "parameters" : { "colorIndex" : 5 } } < ], < "legs" : [ < { "name" : "avianadventurerpants", "parameters" : { "colorIndex" : 5 } }, { "name" : "aviancommonerlegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "avianfancyskirt", "parameters" : { "colorIndex" : 5 } } < ] < }, < { < "chest" : [ < { "name" : "avianadventurershirt", "parameters" : { "colorIndex" : 6 } }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 6 } }, { "name" : "avianfancyshirt", "parameters" : { "colorIndex" : 6 } }, { "name" : "avianworkershirt", "parameters" : { "colorIndex" : 6 } } < ], < "legs" : [ < { "name" : "avianadventurerpants", "parameters" : { "colorIndex" : 6 } }, { "name" : "aviancommonerlegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "avianfancyskirt", "parameters" : { "colorIndex" : 6 } } < ] < }, < { < "chest" : [ < { "name" : "avianadventurershirt", "parameters" : { "colorIndex" : 7 } }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 7 } }, { "name" : "avianfancyshirt", "parameters" : { "colorIndex" : 7 } }, { "name" : "avianworkershirt", "parameters" : { "colorIndex" : 7 } } < ], < "legs" : [ < { "name" : "avianadventurerpants", "parameters" : { "colorIndex" : 7 } }, { "name" : "aviancommonerlegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "avianfancyskirt", "parameters" : { "colorIndex" : 7 } } < ] < }, < { < "chest" : [ < { "name" : "avianadventurershirt", "parameters" : { "colorIndex" : 8 } }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 8 } }, { "name" : "avianfancyshirt", "parameters" : { "colorIndex" : 8 } }, { "name" : "avianworkershirt", "parameters" : { "colorIndex" : 8 } } < ], < "legs" : [ < { "name" : "avianadventurerpants", "parameters" : { "colorIndex" : 8 } }, { "name" : "aviancommonerlegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "avianfancyskirt", "parameters" : { "colorIndex" : 8 } } < ] < }, < { < "chest" : [ < { "name" : "avianadventurershirt", "parameters" : { "colorIndex" : 9 } }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 9 } }, { "name" : "avianfancyshirt", "parameters" : { "colorIndex" : 9 } }, { "name" : "avianworkershirt", "parameters" : { "colorIndex" : 9 } } < ], < "legs" : [ < { "name" : "avianadventurerpants", "parameters" : { "colorIndex" : 9 } }, { "name" : "aviancommonerlegs", "parameters" : { "colorIndex" : 9 } }, { "name" : "avianfancyskirt", "parameters" : { "colorIndex" : 9 } } < ] < } < ] ] < ], < < "apex" : [ < [0, [ < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 1 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 1 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 1 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 1 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 1 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 1 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 1 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 1 } } < ] < }, < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 3 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 3 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 3 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 3 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 3 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 3 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 3 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 3 } } < ] < }, < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 4 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 4 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 4 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 4 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 4 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 4 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 4 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 4 } } < ] < }, < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 5 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 5 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 5 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 5 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 5 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 5 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 5 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 5 } } < ] < }, < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 6 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 6 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 6 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 6 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 6 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 6 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 6 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 6 } } < ] < }, < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 7 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 7 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 7 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 7 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 7 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 7 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 7 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 7 } } < ] < }, < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 8 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 8 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 8 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 8 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 8 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 8 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 8 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 8 } } < ] < }, < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 9 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 9 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 9 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 9 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 9 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 9 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 9 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 9 } } < ] < } < ] ] < ], < 267,347d116 < ], < < "glitch" : [ < [0, [ < { < "chest" : [ < { "name" : "noblechest", "parameters" : { "colorIndex" : 1 } }, { "name" : "peasantchest", "parameters" : { "colorIndex" : 1 } } < ], < "legs" : [ < { "name" : "noblelegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "peasantlegs", "parameters" : { "colorIndex" : 1 } } < ] < }, < { < "chest" : [ < { "name" : "noblechest", "parameters" : { "colorIndex" : 4 } }, { "name" : "peasantchest", "parameters" : { "colorIndex" : 4 } } < ], < "legs" : [ < { "name" : "noblelegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "peasantlegs", "parameters" : { "colorIndex" : 4 } } < ] < }, < { < "chest" : [ < { "name" : "noblechest", "parameters" : { "colorIndex" : 5 } }, { "name" : "peasantchest", "parameters" : { "colorIndex" : 5 } } < ], < "legs" : [ < { "name" : "noblelegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "peasantlegs", "parameters" : { "colorIndex" : 5 } } < ] < }, < { < "chest" : [ < { "name" : "noblechest", "parameters" : { "colorIndex" : 6 } }, { "name" : "peasantchest", "parameters" : { "colorIndex" : 6 } } < ], < "legs" : [ < { "name" : "noblelegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "peasantlegs", "parameters" : { "colorIndex" : 6 } } < ] < }, < { < "chest" : [ < { "name" : "noblechest", "parameters" : { "colorIndex" : 7 } }, { "name" : "peasantchest", "parameters" : { "colorIndex" : 7 } } < ], < "legs" : [ < { "name" : "noblelegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "peasantlegs", "parameters" : { "colorIndex" : 7 } } < ] < }, < { < "chest" : [ < { "name" : "noblechest", "parameters" : { "colorIndex" : 8 } }, { "name" : "peasantchest", "parameters" : { "colorIndex" : 8 } } < ], < "legs" : [ < { "name" : "noblelegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "peasantlegs", "parameters" : { "colorIndex" : 8 } } < ] < }, < { < "chest" : [ < { "name" : "noblechest", "parameters" : { "colorIndex" : 9 } }, { "name" : "peasantchest", "parameters" : { "colorIndex" : 9 } } < ], < "legs" : [ < { "name" : "noblelegs", "parameters" : { "colorIndex" : 9 } }, { "name" : "peasantlegs", "parameters" : { "colorIndex" : 9 } } < ] < } < ] ] < ], < < "hylotl" : [ < [0, [ < { < "chest" : [ < { "name" : "kimonochest", "parameters" : { "colorIndex" : 1 } }, { "name" : "kimonochest", "parameters" : { "colorIndex" : 3 } }, { "name" : "kimonochest", "parameters" : { "colorIndex" : 4 } }, { "name" : "kimonochest", "parameters" : { "colorIndex" : 5 } }, { "name" : "kimonochest", "parameters" : { "colorIndex" : 6 } }, { "name" : "kimonochest", "parameters" : { "colorIndex" : 7 } }, { "name" : "kimonochest", "parameters" : { "colorIndex" : 8 } }, { "name" : "kimonochest", "parameters" : { "colorIndex" : 9 } }, < { "name" : "monkchest", "parameters" : { "colorIndex" : 1 } }, { "name" : "monkchest", "parameters" : { "colorIndex" : 3 } }, { "name" : "monkchest", "parameters" : { "colorIndex" : 4 } }, { "name" : "monkchest", "parameters" : { "colorIndex" : 5 } }, { "name" : "monkchest", "parameters" : { "colorIndex" : 6 } }, { "name" : "monkchest", "parameters" : { "colorIndex" : 7 } }, { "name" : "monkchest", "parameters" : { "colorIndex" : 8 } }, { "name" : "monkchest", "parameters" : { "colorIndex" : 9 } }, < { "name" : "traditionalchest", "parameters" : { "colorIndex" : 1 } }, { "name" : "traditionalchest", "parameters" : { "colorIndex" : 3 } }, { "name" : "traditionalchest", "parameters" : { "colorIndex" : 4 } }, { "name" : "traditionalchest", "parameters" : { "colorIndex" : 5 } }, { "name" : "traditionalchest", "parameters" : { "colorIndex" : 6 } }, { "name" : "traditionalchest", "parameters" : { "colorIndex" : 7 } }, { "name" : "traditionalchest", "parameters" : { "colorIndex" : 8 } }, { "name" : "traditionalchest", "parameters" : { "colorIndex" : 9 } }, < { "name" : "traineechest", "parameters" : { "colorIndex" : 1 } }, { "name" : "traineechest", "parameters" : { "colorIndex" : 3 } }, { "name" : "traineechest", "parameters" : { "colorIndex" : 4 } }, { "name" : "traineechest", "parameters" : { "colorIndex" : 5 } }, { "name" : "traineechest", "parameters" : { "colorIndex" : 6 } }, { "name" : "traineechest", "parameters" : { "colorIndex" : 7 } }, { "name" : "traineechest", "parameters" : { "colorIndex" : 8 } }, { "name" : "traineechest", "parameters" : { "colorIndex" : 9 } } < ], < < "legs" : [ < { "name" : "kimonolegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "kimonolegs", "parameters" : { "colorIndex" : 3 } }, { "name" : "kimonolegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "kimonolegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "kimonolegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "kimonolegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "kimonolegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "kimonolegs", "parameters" : { "colorIndex" : 9 } }, < { "name" : "monklegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "monklegs", "parameters" : { "colorIndex" : 3 } }, { "name" : "monklegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "monklegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "monklegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "monklegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "monklegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "monklegs", "parameters" : { "colorIndex" : 9 } }, < { "name" : "traditionallegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "traditionallegs", "parameters" : { "colorIndex" : 3 } }, { "name" : "traditionallegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "traditionallegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "traditionallegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "traditionallegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "traditionallegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "traditionallegs", "parameters" : { "colorIndex" : 9 } }, < { "name" : "traineelegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "traineelegs", "parameters" : { "colorIndex" : 3 } }, { "name" : "traineelegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "traineelegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "traineelegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "traineelegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "traineelegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "traineelegs", "parameters" : { "colorIndex" : 9 } } < ] < } < ] ] 349,439d117 < }, < < "dropPools" : [ "villagertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 0.75 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\mission\florangladiator.npctype 3c3 < "baseType" : "guard", --- > "baseType" : "hostile", 5c5 < "disableWornArmor" : true, --- > "dropPools" : [ "florangladiatortreasure" ], 7d6 < "damageTeam" : 2, 10,13d8 < "scripts" : [ < "/npcs/bmain.lua" < ], < 15,16d9 < "behavior" : "/behaviors/npc/hostileguard.behavior", < 19,20c12,16 < "default" : [ "Intruder!" < ], --- > "default" : { > "default" : [ > "Intruder!" > ] > }, 27,37d22 < }, < "reattack" : { < "default" : [ < "You again!" < ] < }, < "killedTarget" : { < "default" : [ "get rekt" ] < }, < "lostTarget" : { < "default" : [ "I will get you one day" ] 41a27,30 > "movementParameters" : { > "runSpeed" : 15 > }, > 55,122d43 < }, < < "movementParameters" : { < "runSpeed" : 15 < }, < < "dropPools" : [ "florangladiatortreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 0.3 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\mission\floranpredator.npctype 3c3 < "baseType" : "guard", --- > "baseType" : "hostile", 5,8c5,7 < "disableWornArmor" : true, < < "damageTeam" : 2, < "levelVariance" : [0, 0], --- > "movementParameters" : { > "runSpeed" : 15 > }, 10,12c9 < "scripts" : [ < "/npcs/bmain.lua" < ], --- > "dropPools" : [ "floranwildhuntertreasure" ], 15,17d11 < "behavior" : "/behaviors/npc/hostileguard.behavior", < < 20,21c14,18 < "default" : [ "Intruder!" < ], --- > "default" : { > "default" : [ > "Intruder!" > ] > }, 50,60d46 < }, < "reattack" : { < "default" : [ < "You again!" < ] < }, < "killedTarget" : { < "default" : [ "get rekt" ] < }, < "lostTarget" : { < "default" : [ "I will get you one day" ] 173,240d158 < }, < < "movementParameters" : { < "runSpeed" : 15 < }, < < "dropPools" : [ "floranwildhuntertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 75.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\mission\floransniper.npctype 3,12c3 < "baseType" : "guard", < < "disableWornArmor" : true, < < "damageTeam" : 2, < "levelVariance" : [0, 0], < < "scripts" : [ < "/npcs/bmain.lua" < ], --- > "baseType" : "hostile", 15,16d5 < "behavior" : "/behaviors/npc/hostileguard.behavior", < 18,44c7 < "attack" : { < "default" : [ "Intruder!" < ], < "floran" : { < "default" : [ < "I'll ssshoot you down!", < "You can't escape my sssights!", < "I'll fill you with holesss, outsider!", < "You aren't fassst enough to outrun my ssshots!", < "You can't hide from me!", < "I have the vantage point, outsssider!", < "I have the better aim, outsssider!", < "You can't ssssurvive in these tunnelsss! You're an outsider!" < ] < } < }, < "reattack" : { < "default" : [ < "You again!" < ] < }, < "killedTarget" : { < "default" : [ "get rekt" ] < }, < "lostTarget" : { < "default" : [ "I will get you one day" ] < } --- > "attack" : "/dialog/sniper.config:attack" 47a11,16 > "movementParameters" : { > "runSpeed" : 15 > }, > > "dropPools" : [ "floranwildhuntertreasure" ], > 62,129d30 < }, < < "movementParameters" : { < "runSpeed" : 15 < }, < < "dropPools" : [ "floranwildhuntertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 40.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 2.5 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\mission\floranspectator.npctype 2a3 > "baseType" : "base", 5d5 < "damageTeam" : 1, 8c8 < "disableWornArmor" : true, --- > "persistent" : true, 10,13c10 < "scripts" : [ < "/npcs/bmain.lua" < ], < "initialScriptDelta" : 5, --- > "dropPools" : [ "villagertreasure" ], 18,21c15,21 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ "I have nothing to sssay to you" ], --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ > "I have nothing to sssay to you" > ] > }, 51,199d50 < "human" : [ < [0, [ < { < "chest" : [ < { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 1 } }, { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 3 } }, { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 4 } }, { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 5 } }, { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 6 } }, { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 7 } }, { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 8 } }, { "name" : "sweatervestchest", "parameters" : { "colorIndex" : 9 } }, < { "name" : "conceptchest", "parameters" : { "colorIndex" : 1 } }, { "name" : "conceptchest", "parameters" : { "colorIndex" : 3 } }, { "name" : "conceptchest", "parameters" : { "colorIndex" : 4 } }, { "name" : "conceptchest", "parameters" : { "colorIndex" : 5 } }, { "name" : "conceptchest", "parameters" : { "colorIndex" : 6 } }, { "name" : "conceptchest", "parameters" : { "colorIndex" : 7 } }, { "name" : "conceptchest", "parameters" : { "colorIndex" : 8 } }, { "name" : "conceptchest", "parameters" : { "colorIndex" : 9 } }, < { "name" : "coolchest", "parameters" : { "colorIndex" : 1 } }, { "name" : "coolchest", "parameters" : { "colorIndex" : 3 } }, { "name" : "coolchest", "parameters" : { "colorIndex" : 4 } }, { "name" : "coolchest", "parameters" : { "colorIndex" : 5 } }, { "name" : "coolchest", "parameters" : { "colorIndex" : 6 } }, { "name" : "coolchest", "parameters" : { "colorIndex" : 7 } }, { "name" : "coolchest", "parameters" : { "colorIndex" : 8 } }, { "name" : "coolchest", "parameters" : { "colorIndex" : 9 } }, < { "name" : "workoutchest", "parameters" : { "colorIndex" : 1 } }, { "name" : "workoutchest", "parameters" : { "colorIndex" : 3 } }, { "name" : "workoutchest", "parameters" : { "colorIndex" : 4 } }, { "name" : "workoutchest", "parameters" : { "colorIndex" : 5 } }, { "name" : "workoutchest", "parameters" : { "colorIndex" : 6 } }, { "name" : "workoutchest", "parameters" : { "colorIndex" : 7 } }, { "name" : "workoutchest", "parameters" : { "colorIndex" : 8 } }, { "name" : "workoutchest", "parameters" : { "colorIndex" : 9 } } < ], < < "legs" : [ < { "name" : "conceptlegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "conceptlegs", "parameters" : { "colorIndex" : 3 } }, { "name" : "conceptlegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "conceptlegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "conceptlegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "conceptlegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "conceptlegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "conceptlegs", "parameters" : { "colorIndex" : 9 } }, < { "name" : "coollegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "coollegs", "parameters" : { "colorIndex" : 3 } }, { "name" : "coollegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "coollegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "coollegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "coollegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "coollegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "coollegs", "parameters" : { "colorIndex" : 9 } }, < { "name" : "workoutlegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "workoutlegs", "parameters" : { "colorIndex" : 3 } }, { "name" : "workoutlegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "workoutlegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "workoutlegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "workoutlegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "workoutlegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "workoutlegs", "parameters" : { "colorIndex" : 9 } } < ] < } < ] ] < ], < < "avian" : [ < [0, [ < { < "chest" : [ < { "name" : "avianadventurershirt", "parameters" : { "colorIndex" : 1 } }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 1 } }, { "name" : "avianfancyshirt", "parameters" : { "colorIndex" : 1 } }, { "name" : "avianworkershirt", "parameters" : { "colorIndex" : 1 } } < ], < "legs" : [ < { "name" : "avianadventurerpants", "parameters" : { "colorIndex" : 1 } }, { "name" : "aviancommonerlegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "avianfancyskirt", "parameters" : { "colorIndex" : 1 } } < ] < }, < { < "chest" : [ < { "name" : "avianadventurershirt", "parameters" : { "colorIndex" : 4 } }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 4 } }, { "name" : "avianfancyshirt", "parameters" : { "colorIndex" : 4 } }, { "name" : "avianworkershirt", "parameters" : { "colorIndex" : 4 } } < ], < "legs" : [ < { "name" : "avianadventurerpants", "parameters" : { "colorIndex" : 4 } }, { "name" : "aviancommonerlegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "avianfancyskirt", "parameters" : { "colorIndex" : 4 } } < ] < }, < { < "chest" : [ < { "name" : "avianadventurershirt", "parameters" : { "colorIndex" : 5 } }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 5 } }, { "name" : "avianfancyshirt", "parameters" : { "colorIndex" : 5 } }, { "name" : "avianworkershirt", "parameters" : { "colorIndex" : 5 } } < ], < "legs" : [ < { "name" : "avianadventurerpants", "parameters" : { "colorIndex" : 5 } }, { "name" : "aviancommonerlegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "avianfancyskirt", "parameters" : { "colorIndex" : 5 } } < ] < }, < { < "chest" : [ < { "name" : "avianadventurershirt", "parameters" : { "colorIndex" : 6 } }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 6 } }, { "name" : "avianfancyshirt", "parameters" : { "colorIndex" : 6 } }, { "name" : "avianworkershirt", "parameters" : { "colorIndex" : 6 } } < ], < "legs" : [ < { "name" : "avianadventurerpants", "parameters" : { "colorIndex" : 6 } }, { "name" : "aviancommonerlegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "avianfancyskirt", "parameters" : { "colorIndex" : 6 } } < ] < }, < { < "chest" : [ < { "name" : "avianadventurershirt", "parameters" : { "colorIndex" : 7 } }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 7 } }, { "name" : "avianfancyshirt", "parameters" : { "colorIndex" : 7 } }, { "name" : "avianworkershirt", "parameters" : { "colorIndex" : 7 } } < ], < "legs" : [ < { "name" : "avianadventurerpants", "parameters" : { "colorIndex" : 7 } }, { "name" : "aviancommonerlegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "avianfancyskirt", "parameters" : { "colorIndex" : 7 } } < ] < }, < { < "chest" : [ < { "name" : "avianadventurershirt", "parameters" : { "colorIndex" : 8 } }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 8 } }, { "name" : "avianfancyshirt", "parameters" : { "colorIndex" : 8 } }, { "name" : "avianworkershirt", "parameters" : { "colorIndex" : 8 } } < ], < "legs" : [ < { "name" : "avianadventurerpants", "parameters" : { "colorIndex" : 8 } }, { "name" : "aviancommonerlegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "avianfancyskirt", "parameters" : { "colorIndex" : 8 } } < ] < }, < { < "chest" : [ < { "name" : "avianadventurershirt", "parameters" : { "colorIndex" : 9 } }, { "name" : "aviancommonershirt", "parameters" : { "colorIndex" : 9 } }, { "name" : "avianfancyshirt", "parameters" : { "colorIndex" : 9 } }, { "name" : "avianworkershirt", "parameters" : { "colorIndex" : 9 } } < ], < "legs" : [ < { "name" : "avianadventurerpants", "parameters" : { "colorIndex" : 9 } }, { "name" : "aviancommonerlegs", "parameters" : { "colorIndex" : 9 } }, { "name" : "avianfancyskirt", "parameters" : { "colorIndex" : 9 } } < ] < } < ] ] < ], < < "apex" : [ < [0, [ < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 1 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 1 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 1 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 1 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 1 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 1 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 1 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 1 } } < ] < }, < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 3 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 3 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 3 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 3 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 3 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 3 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 3 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 3 } } < ] < }, < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 4 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 4 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 4 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 4 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 4 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 4 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 4 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 4 } } < ] < }, < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 5 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 5 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 5 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 5 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 5 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 5 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 5 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 5 } } < ] < }, < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 6 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 6 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 6 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 6 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 6 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 6 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 6 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 6 } } < ] < }, < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 7 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 7 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 7 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 7 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 7 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 7 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 7 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 7 } } < ] < }, < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 8 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 8 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 8 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 8 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 8 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 8 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 8 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 8 } } < ] < }, < { < "chest" : [ < { "name" : "apexcommanderjacket", "parameters" : { "colorIndex" : 9 } }, { "name" : "apexnavyjacket", "parameters" : { "colorIndex" : 9 } }, { "name" : "apexofficerjacket", "parameters" : { "colorIndex" : 9 } }, { "name" : "apexspecialistjacket", "parameters" : { "colorIndex" : 9 } } < ], < "legs" : [ < { "name" : "apexcommanderpants", "parameters" : { "colorIndex" : 9 } }, { "name" : "apexnavypants", "parameters" : { "colorIndex" : 9 } }, { "name" : "apexofficerpants", "parameters" : { "colorIndex" : 9 } }, { "name" : "apexspecialistpants", "parameters" : { "colorIndex" : 9 } } < ] < } < ] ] < ], < 267,347d117 < ], < < "glitch" : [ < [0, [ < { < "chest" : [ < { "name" : "noblechest", "parameters" : { "colorIndex" : 1 } }, { "name" : "peasantchest", "parameters" : { "colorIndex" : 1 } } < ], < "legs" : [ < { "name" : "noblelegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "peasantlegs", "parameters" : { "colorIndex" : 1 } } < ] < }, < { < "chest" : [ < { "name" : "noblechest", "parameters" : { "colorIndex" : 4 } }, { "name" : "peasantchest", "parameters" : { "colorIndex" : 4 } } < ], < "legs" : [ < { "name" : "noblelegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "peasantlegs", "parameters" : { "colorIndex" : 4 } } < ] < }, < { < "chest" : [ < { "name" : "noblechest", "parameters" : { "colorIndex" : 5 } }, { "name" : "peasantchest", "parameters" : { "colorIndex" : 5 } } < ], < "legs" : [ < { "name" : "noblelegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "peasantlegs", "parameters" : { "colorIndex" : 5 } } < ] < }, < { < "chest" : [ < { "name" : "noblechest", "parameters" : { "colorIndex" : 6 } }, { "name" : "peasantchest", "parameters" : { "colorIndex" : 6 } } < ], < "legs" : [ < { "name" : "noblelegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "peasantlegs", "parameters" : { "colorIndex" : 6 } } < ] < }, < { < "chest" : [ < { "name" : "noblechest", "parameters" : { "colorIndex" : 7 } }, { "name" : "peasantchest", "parameters" : { "colorIndex" : 7 } } < ], < "legs" : [ < { "name" : "noblelegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "peasantlegs", "parameters" : { "colorIndex" : 7 } } < ] < }, < { < "chest" : [ < { "name" : "noblechest", "parameters" : { "colorIndex" : 8 } }, { "name" : "peasantchest", "parameters" : { "colorIndex" : 8 } } < ], < "legs" : [ < { "name" : "noblelegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "peasantlegs", "parameters" : { "colorIndex" : 8 } } < ] < }, < { < "chest" : [ < { "name" : "noblechest", "parameters" : { "colorIndex" : 9 } }, { "name" : "peasantchest", "parameters" : { "colorIndex" : 9 } } < ], < "legs" : [ < { "name" : "noblelegs", "parameters" : { "colorIndex" : 9 } }, { "name" : "peasantlegs", "parameters" : { "colorIndex" : 9 } } < ] < } < ] ] < ], < < "hylotl" : [ < [0, [ < { < "chest" : [ < { "name" : "kimonochest", "parameters" : { "colorIndex" : 1 } }, { "name" : "kimonochest", "parameters" : { "colorIndex" : 3 } }, { "name" : "kimonochest", "parameters" : { "colorIndex" : 4 } }, { "name" : "kimonochest", "parameters" : { "colorIndex" : 5 } }, { "name" : "kimonochest", "parameters" : { "colorIndex" : 6 } }, { "name" : "kimonochest", "parameters" : { "colorIndex" : 7 } }, { "name" : "kimonochest", "parameters" : { "colorIndex" : 8 } }, { "name" : "kimonochest", "parameters" : { "colorIndex" : 9 } }, < { "name" : "monkchest", "parameters" : { "colorIndex" : 1 } }, { "name" : "monkchest", "parameters" : { "colorIndex" : 3 } }, { "name" : "monkchest", "parameters" : { "colorIndex" : 4 } }, { "name" : "monkchest", "parameters" : { "colorIndex" : 5 } }, { "name" : "monkchest", "parameters" : { "colorIndex" : 6 } }, { "name" : "monkchest", "parameters" : { "colorIndex" : 7 } }, { "name" : "monkchest", "parameters" : { "colorIndex" : 8 } }, { "name" : "monkchest", "parameters" : { "colorIndex" : 9 } }, < { "name" : "traditionalchest", "parameters" : { "colorIndex" : 1 } }, { "name" : "traditionalchest", "parameters" : { "colorIndex" : 3 } }, { "name" : "traditionalchest", "parameters" : { "colorIndex" : 4 } }, { "name" : "traditionalchest", "parameters" : { "colorIndex" : 5 } }, { "name" : "traditionalchest", "parameters" : { "colorIndex" : 6 } }, { "name" : "traditionalchest", "parameters" : { "colorIndex" : 7 } }, { "name" : "traditionalchest", "parameters" : { "colorIndex" : 8 } }, { "name" : "traditionalchest", "parameters" : { "colorIndex" : 9 } }, < { "name" : "traineechest", "parameters" : { "colorIndex" : 1 } }, { "name" : "traineechest", "parameters" : { "colorIndex" : 3 } }, { "name" : "traineechest", "parameters" : { "colorIndex" : 4 } }, { "name" : "traineechest", "parameters" : { "colorIndex" : 5 } }, { "name" : "traineechest", "parameters" : { "colorIndex" : 6 } }, { "name" : "traineechest", "parameters" : { "colorIndex" : 7 } }, { "name" : "traineechest", "parameters" : { "colorIndex" : 8 } }, { "name" : "traineechest", "parameters" : { "colorIndex" : 9 } } < ], < < "legs" : [ < { "name" : "kimonolegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "kimonolegs", "parameters" : { "colorIndex" : 3 } }, { "name" : "kimonolegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "kimonolegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "kimonolegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "kimonolegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "kimonolegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "kimonolegs", "parameters" : { "colorIndex" : 9 } }, < { "name" : "monklegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "monklegs", "parameters" : { "colorIndex" : 3 } }, { "name" : "monklegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "monklegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "monklegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "monklegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "monklegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "monklegs", "parameters" : { "colorIndex" : 9 } }, < { "name" : "traditionallegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "traditionallegs", "parameters" : { "colorIndex" : 3 } }, { "name" : "traditionallegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "traditionallegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "traditionallegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "traditionallegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "traditionallegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "traditionallegs", "parameters" : { "colorIndex" : 9 } }, < { "name" : "traineelegs", "parameters" : { "colorIndex" : 1 } }, { "name" : "traineelegs", "parameters" : { "colorIndex" : 3 } }, { "name" : "traineelegs", "parameters" : { "colorIndex" : 4 } }, { "name" : "traineelegs", "parameters" : { "colorIndex" : 5 } }, { "name" : "traineelegs", "parameters" : { "colorIndex" : 6 } }, { "name" : "traineelegs", "parameters" : { "colorIndex" : 7 } }, { "name" : "traineelegs", "parameters" : { "colorIndex" : 8 } }, { "name" : "traineelegs", "parameters" : { "colorIndex" : 9 } } < ] < } < ] ] 349,439d118 < }, < < "dropPools" : [ "villagertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 0.75 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\mission\miner.npctype 3,5c3 < "baseType" : "guard", < < "disableWornArmor" : false, --- > "baseType" : "friendlyguard", 8,25c6 < "damageTeam" : 1, < < "levelVariance" : [0, 0], < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/sitState.lua", < "/npcs/sleepState.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", --- > "dropPools" : [ "money" ], 27,29c8,14 < "/npcs/converseState.lua", < "/npcs/wanderState.lua" < ], --- > "statusControllerSettings" : { > "stats" : { > "maxHealth" : { > "baseValue" : 500.0 > } > } > }, 32,132c17,47 < "attackerLimit" : 10, < "attackerLimitCooldown" : 3, < "wander" : { < "timeRange" : [2.0, 10.0], < "chatDistance" : 4, < "indoorTimeOfDayRanges" : [ [0.0, 0.2], [0.5, 1.0] ], < "indoorSearchRadius" : 60, < "indoorLookaheadDistance" : 4, < "moveToTargetTime" : 10.0, < "changeDirectionCooldown" : 2, < "dropDownChance" : 0, < "cooldown" : 10 < }, < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "Hey! You scared me there..." < ], < "apex" : [ < "I'm hiding in here until those monsters disappear.", < "I wonder how I'll get off this moon...", < "If I keep out of the way, those monsters might ignore me...", < "Why would you come to this place? Are you here to mine?", < "I'm hiding in here until those monsters disappear.", < "I'm a Miner, I'm not trained to deal with a situation like this!", < "Those creatures... Where did they come from?", < "Those slimy creatures nearly got me!", < "I can't hide here forever - My supplies will run out eventually!" < ], < "avian" : [ < "I'm hiding in here until those monsters disappear.", < "I wonder how I'll get off this moon...", < "If I keep out of the way, those monsters might ignore me...", < "Why would you come to this place? Are you here to mine?", < "I'm hiding in here until those monsters disappear.", < "I'm a Miner, I'm not trained to deal with a situation like this!", < "Those creatures... Where did they come from?", < "Those slimy creatures nearly got me!", < "I can't hide here forever - My supplies will run out eventually!" < ], < "floran" : [ < "I'm hiding in here until those monsters disappear.", < "I wonder how I'll get off this moon...", < "If I keep out of the way, those monsters might ignore me...", < "Why would you come to this place? Are you here to mine?", < "I'm hiding in here until those monsters disappear.", < "I'm a Miner, I'm not trained to deal with a situation like this!", < "Those creatures... Where did they come from?", < "Those slimy creatures nearly got me!", < "I can't hide here forever - My supplies will run out eventually!" < ], < "glitch" : [ < "I'm hiding in here until those monsters disappear.", < "I wonder how I'll get off this moon...", < "If I keep out of the way, those monsters might ignore me...", < "Why would you come to this place? Are you here to mine?", < "I'm hiding in here until those monsters disappear.", < "I'm a Miner, I'm not trained to deal with a situation like this!", < "Those creatures... Where did they come from?", < "Those slimy creatures nearly got me!", < "I can't hide here forever - My supplies will run out eventually!" < ], < "human" : [ < "I'm hiding here until those monsters disappear.", < "I wonder how I'll get off this moon...", < "If I keep out of the way, those monsters might ignore me...", < "Why would you come to this place? Go before it's too late!", < "We need to get out of here!", < "I'm a Miner, I'm not trained to deal with a situation like this!", < "Are you here to save us?", < "Those pink things, they look almost like people...", < "This gun won't be enough to hold back all of those things!", < "There's no company protocol for something like this!", < "Those things weren't here before... What created them?", < "These creatures... Where did they come from?!", < "This is what happens when you dig too deep!", < "I wish I had never taken this job!", < "Help better be on the way!", < "How many of us are left here?!", < "These creatures appeared so suddenly...", < "I keep hearing noises, like something is deep down below...", < "I won't be able to hold out in this place for long!", < "I knew those glowing crystals weren't safe!", < "These things are like moon mutants... Moontants!", < "Don't let these fleshy monsters take you too!", < "I have this eerie sense that something is watching me...", < "Those slimy creatures nearly got me!", < "We need to get off this moon!" < ], < "hylotl" : [ < "I'm hiding in here until those monsters disappear.", < "I wonder how I'll get off this moon...", < "If I keep out of the way, those monsters might ignore me...", < "Why would you come to this place? Are you here to mine?", < "I'm hiding in here until those monsters disappear.", < "I'm a Miner, I'm not trained to deal with a situation like this!", < "Those creatures... Where did they come from?", < "Those slimy creatures nearly got me!", < "I can't hide here forever - My supplies will run out eventually!" < ] --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ > "I'm hiding here until those monsters disappear.", > "I wonder how I'll get off this moon...", > "If I keep out of the way, those monsters might ignore me...", > "Why would you come to this place? Go before it's too late!", > "We need to get out of here!", > "I'm a Miner, I'm not trained to deal with a situation like this!", > "Are you here to save us?", > "Those pink things, they look almost like people...", > "This gun won't be enough to hold back all of those things!", > "There's no company protocol for something like this!", > "Those things weren't here before... What created them?", > "These creatures... Where did they come from?!", > "This is what happens when you dig too deep!", > "I wish I had never taken this job!", > "Help better be on the way!", > "How many of us are left here?!", > "These creatures appeared so suddenly...", > "I keep hearing noises, like something is deep down below...", > "I won't be able to hold out in this place for long!", > "I knew those glowing crystals weren't safe!", > "These things are like moon mutants... Moontants!", > "Don't let these fleshy monsters take you too!", > "I have this eerie sense that something is watching me...", > "Those slimy creatures nearly got me!", > "We need to get off this moon!" > ] > } 134,154d48 < }, < < "sit" : { < "timeOfDayRanges" : [ [0.6, 1.0], [0.0, 0.2] ], < "moveTimeLimit" : 30, < "searchRadius" : 10, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [15, 240] < }, < < "sleep" : { < "searchRadius" : 15, < "lieDownRadius" : 3, < "moveToBedTimeLimit" : 10.0, < "timeOfDayRanges" : [ [ [0.7, 0.75], [0.95, 1.0] ] ], < "cooldown" : 30 < }, < < "meleeAttack" : { < "runThreshold" : 0 594,657d487 < }, < < "dropPools" : [ "money" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 500.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 0.35 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\mission\minersurvivor.npctype 2a3 > "baseType" : "follower", 4,5d4 < "damageTeamType" : "friendly", < "damageTeam" : 1, 8,25d6 < "disableWornArmor" : true, < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/followState.lua", < "/npcs/standingIdleState.lua" < ], < "initialScriptDelta" : 5, 27,45c8,9 < "attackerLimit" : 4, < "attackerLimitCooldown" : 3, < < "doorHitPoly" : [ [2, -1], [2, 1], [0, 1], [0, -1] ], < "idleTimeRange" : [0.1, 0.2], < "gapSensor" : [ [2.0, -4.5] ], < "gapFarSideSensors" : [ [3.0, -4.5], [4.0, -4.5], [5.0, -4.5], [6.0, -4.5], [7.0, -4.5], [8.0, -4.5] ], < "gapJumpHoldTime" : 0.4, < < "follower" : { < "playerQueryRadius" : 15, < "follower.maxFollowRange" : 40, < < "attackDistance" : 20, < < "attackSayingPercent" : 25, < "returnSayingPercent" : 25, < < "dialog" : { --- > "dialog" : { > "follower" : { 47,50c11,16 < "default" : [ < "Let's teach these things a lesson!", < "I'll live, or die trying!" < ] --- > "default" : { > "default" : [ > "Let's teach these things a lesson!", > "I'll live, or die trying!" > ] > } 53,58c19,26 < "default" : [ < "You saved me! I thought I was done for when that thing captured me. You're my hero!", < "You destroyed the monster! I was trapped inside it, it would have mutated me like the rest...", < "That thing captured me. I'd be a mutant by now if you didn't destroy it! Thanks!", < "I survived?! You've saved me, and this facility! You have my gratitude." < ] --- > "default" : { > "default" : [ > "You saved me! I thought I was done for when that thing captured me. You're my hero!", > "You destroyed the monster! I was trapped inside it, it would have mutated me like the rest...", > "That thing captured me. I'd be a mutant by now if you didn't destroy it! Thanks!", > "I survived?! You've saved me, and this facility! You have my gratitude." > ] > } 61,63c29,33 < "default" : [ < "Phew, you handle yourself quite well." < ] --- > "default" : { > "default" : [ > "Phew, you handle yourself quite well." > ] > } 66,71c36,43 < "default" : [ < "I guess I better start fixing up the mine...", < "Did anyone else in the mine survive this attack?", < "You have the respect of this facility.", < "There's a chest up ahead, you should take the things inside it." < ] --- > "default" : { > "default" : [ > "I guess I better start fixing up the mine...", > "Did anyone else in the mine survive this attack?", > "You have the respect of this facility.", > "There's a chest up ahead, you should take the things inside it." > ] > } 74,78c46,52 < "default" : [ < "Did my friend in the Outpost send you here?", < "Are you an adventurer? Did my scientist friend tell you to come here?", < "I'll never forget you and your help!" < ] --- > "default" : { > "default" : [ > "Did my friend in the Outpost send you here?", > "Are you an adventurer? Did my scientist friend tell you to come here?", > "I'll never forget you and your help!" > ] > } 81,103d54 < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "switchDistance" : 15, < "runThreshold" : 0, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 629,719d579 < }, < < "dropPools" : [ "villagertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\mission\mutantminer.npctype 2a3 > "baseType" : "hostile", 4,98c5 < "disableWornArmor" : true, < < "damageTeam" : 2, < < "levelVariance" : [0, 0], < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua" < ], < "initialScriptDelta" : 5, < "scriptConfig" : { < "attackerLimit" : 4, < "attackerLimitCooldown" : 3, < < "guard" : { < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < < "wallCheckDistance" : 5, < "changeDirectionTimeRange" : [10, 20], < < "attackSayingPercent" : 100, < < "dialog" : { < "attack" : { < "default" : [ "Ganking time!" < ], < "apex" : { < "default" : [ < "Spies from the Miniknog! Get them!", < "They're after our loot!", < "You'll never take our freedom!", < "By my beard, it's a trespasser!" < ] < }, < < "avian" : { < "default" : [ < "Kluex has willed that your life is forfeit.", < "Prepare for your sacrifice.", < "Your belongings will be suitable offerings to Kluex.", < "If only I could fly, then you would die faster.", < "Run away, unbeliever!" < ] < }, < < < "floran" : { < "default" : [ < "Sssupper arrivesss!", < "Ssstop the intruder!", < "Gimme the casssh!", < "Ssstay back!", < "Floran will ssslay you!" < ], < < "glitch" : [ < "Floran regretsss this.", < "Nothing persssonal..." < ] < }, < < "glitch" : { < "default" : [ < "Alert. A traveler approaches!", < "Hunting. You have breathed your last!", < "Pursuing. Prepare to lose your life!" < ], < < "floran" : [ < "Regretful. We do what we must to survive.", < "Apology. You must die, Floran." < ] < }, < < "hylotl" : { < "default" : [ < "We aim to apprehend you. I lied. We mean to kill you.", < "Your belongings will shortly be ours.", < "I wonder, will you drop good loot?", < "Your fighting skills cannot save you." < ], --- > "dropPools" : [ "money" ], 100,104c7,10 < "floran" : [ < "Your appearance is that of boiled cabbage. I wonder if you taste any better.", < "I will slay you myself, uncultured monster." < ] < }, --- > "movementParameters" : { > "crouchingPoly" : [ [-0.75, -2.0], [-0.35, -2.5], [0.35, -2.5], [0.75, -2.0], [0.75, -0.5], [0.35, 0], [-0.35, 0], [-0.75, -0.5] ], > "mass" : 1.1 > }, 106,116c12,15 < "human" : { < "default" : [ < "Blarrgh!", < "Rarrgh!", < "Rrrrrrr....", < "Ack! Ack!", < "Help... Me...", < "Rarggh..." < ] < } < } --- > "statusControllerSettings" : { > "stats" : { > "maxHealth" : { > "baseValue" : 120.0 118,139d16 < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "runThreshold" : 9, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 159,254d35 < }, < < "movementParameters" : { < "crouchingPoly" : [ [-0.75, -2.0], [-0.35, -2.5], [0.35, -2.5], [0.75, -2.0], [0.75, -0.5], [0.35, 0], [-0.35, 0], [-0.75, -0.5] ], < "mass" : 1.1 < }, < < "dropPools" : [ "money" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 120.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } 256c37 < } --- > } \ No newline at end of file npcs\mission\penguinscientist.npctype 9,14d8 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "I think I have a few tweaks for my Mech." < ], 16c10,12 < "penguin" : { --- > "dialog" : { > "converse" : { > "default" : { 19,42d14 < ], < < "avian" : [ < "I think I have a few tweaks for my Mech." < ], < < "apex" : [ < "I think I have a few tweaks for my Mech." < ], < < "floran" : [ < "I think I have a few tweaks for my Mech." < ], < < "glitch" : [ < "I think I have a few tweaks for my Mech." < ], < < "human" : [ < "I think I have a few tweaks for my Mech." < ], < < "hylotl" : [ < "I think I have a few tweaks for my Mech." 52,113d23 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 40.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 100.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 1.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\mission\survivor.npctype 2a3 > "baseType" : "follower", 4,5d4 < "damageTeamType" : "friendly", < "damageTeam" : 1, 8,25d6 < "disableWornArmor" : true, < < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/followState.lua", < "/npcs/standingIdleState.lua" < ], < "initialScriptDelta" : 5, 27,45c8,9 < "attackerLimit" : 4, < "attackerLimitCooldown" : 3, < < "doorHitPoly" : [ [2, -1], [2, 1], [0, 1], [0, -1] ], < "idleTimeRange" : [0.1, 0.2], < "gapSensor" : [ [2.0, -4.5] ], < "gapFarSideSensors" : [ [3.0, -4.5], [4.0, -4.5], [5.0, -4.5], [6.0, -4.5], [7.0, -4.5], [8.0, -4.5] ], < "gapJumpHoldTime" : 0.4, < < "follower" : { < "playerQueryRadius" : 15, < "follower.maxFollowRange" : 40, < < "attackDistance" : 20, < < "attackSayingPercent" : 25, < "returnSayingPercent" : 25, < < "dialog" : { --- > "dialog" : { > "follower" : { 47,63c11,29 < "default" : [ < "I'll take these guys on!", < "Sneak attack!", < "Strike!", < "Attack!", < "Quick, we're under attack!", < "Be careful!", < "Look out!", < "No time for chit-chat, we've been spotted!", < "Uh-oh!", < "We've been spotted!", < "I came prepared!", < "Are we attacking? We're attacking!", < "Let's teach these guys a lesson!", < "They want a hunt? I'll give them a hunt!", < "I'll escape or die trying!" < ] --- > "default" : { > "default" : [ > "I'll take these guys on!", > "Sneak attack!", > "Strike!", > "Attack!", > "Quick, we're under attack!", > "Be careful!", > "Look out!", > "No time for chit-chat, we've been spotted!", > "Uh-oh!", > "We've been spotted!", > "I came prepared!", > "Are we attacking? We're attacking!", > "Let's teach these guys a lesson!", > "They want a hunt? I'll give them a hunt!", > "I'll escape or die trying!" > ] > } 66,70c32,38 < "default" : [ < "Hey, a friendly face! Did they trap you here too? I'll stick with you.", < "Another survivor?! Looks like you can handle yourself - I'll follow you.", < "I didn't expect to see other survivors down here! Let's stick together." < ] --- > "default" : { > "default" : [ > "Hey, a friendly face! Did they trap you here too? I'll stick with you.", > "Another survivor?! Looks like you can handle yourself - I'll follow you.", > "I didn't expect to see other survivors down here! Let's stick together." > ] > } 73,90c41,60 < "default" : [ < "Let's move on.", < "I'm impressed.", < "How did you get here anyway?", < "We're a team worth fearing!", < "I've been here too long to let them stop me.", < "Take that.", < "Phew.", < "Stay alert, there could be more.", < "I hope all these skeletons are just props...", < "That's what you get for messing with US!", < "Hopefully there won't be more to fight down here.", < "Let's go.", < "Even if we don't make it out of here, at least we made them sore.", < "I wonder how many more like us have been hunted down here...", < "I'm hoping to make many more Floran hurt before leaving.", < "Phew, you handle yourself quite well." < ] --- > "default" : { > "default" : [ > "Let's move on.", > "I'm impressed.", > "How did you get here anyway?", > "We're a team worth fearing!", > "I've been here too long to let them stop me.", > "Take that.", > "Phew.", > "Stay alert, there could be more.", > "I hope all these skeletons are just props...", > "That's what you get for messing with US!", > "Hopefully there won't be more to fight down here.", > "Let's go.", > "Even if we don't make it out of here, at least we made them sore.", > "I wonder how many more like us have been hunted down here...", > "I'm hoping to make many more Floran hurt before leaving.", > "Phew, you handle yourself quite well." > ] > } 93,97c63,69 < "default" : [ < "I'll just wait here.", < "I'll stay here, don't leave me alone too long!", < "Do you need a moment?" < ] --- > "default" : { > "default" : [ > "I'll just wait here.", > "I'll stay here, don't leave me alone too long!", > "Do you need a moment?" > ] > } 100,104c72,78 < "default" : [ < "Hello again.", < "Let's head off together.", < "You ready to move on?" < ] --- > "default" : { > "default" : [ > "Hello again.", > "Let's head off together.", > "You ready to move on?" > ] > } 107,129d80 < }, < < "meleeAttack" : { < "swingDistance" : 5, < "swingTime" : 0.4, < "swingCooldownTime" : 0.6, < "switchDistance" : 15, < "runThreshold" : 0, < "searchTime" : 10, < "backoffDistanceRange" : [8.0, 12.0], < "repositionCooldownTimeRange" : [2.0, 3.0] < }, < < "rangedAttack" : { < "minDistance" : 10, < "maxDistance" : 30, < "coverYOffset" : -1.5, < "coverYClearanceOffset" : 0.5, < "coverDistance" : 2.5, < "coverHideTimeRange" : [0.5, 1.0], < "coverFireTimeRange" : [1.0, 3.0], < "attackerSpacing" : 2.5, < "searchTime" : 10 700,790d650 < }, < < "dropPools" : [ "villagertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\mission\wildling.npctype 5,7d4 < "disableWornArmor" : true, < < "damageTeam" : 1, 10,62c7,8 < "scripts" : [ < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" < ], < < "scriptConfig" : { < "attackerLimit" : 8, < "attackerLimitCooldown" : 3, < "noticePlayersRadius" : 30, < < "guard" : { < "patrolDistance" : 5, < "noticeDistance" : 30, < "hailDistance" : -1, < "stopDistance" : -1, < "attackDistance" : 30, < "changeDirectionTimeRange" : [5, 10], < < "attackSayingPercent" : 0, < < "dialog" : { < "attack" : { < "default" : [ "Intruder!" < ], < "floran" : { < "default" : [ < "Freshhhhh prey!" < ] < } < } < } < }, < < "returnToPost" : { < "moveTime" : 20, < "minDistance" : 2 < }, < < "meleeAttack" : { < "swingDistance" : 4, < "runThreshold" : 0 < } --- > "movementParameters" : { > "runSpeed" : 15 114,181d59 < }, < < "movementParameters" : { < "runSpeed" : 15 < }, < < "dropPools" : [ "floranwildhuntertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 40.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 10.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outpostapexmechanic.npctype 8,13d7 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "It is not much, but I do vat I can to 'elp keep ze equipment in zis place running." < ], 15c9,11 < "apex" : { --- > "dialog" : { > "converse" : { > "default" : { 18,20c14,17 < ], < < "avian" : [ --- > ] > }, > "apex" : { > "default" : [ 23d19 < 26,41d21 < ], < < "floran" : [ < "It is not much, but I do vat I can to 'elp keep ze equipment in zis place running." < ], < < "glitch" : [ < "It is not much, but I do vat I can to 'elp keep ze equipment in zis place running." < ], < < "human" : [ < "It is not much, but I do vat I can to 'elp keep ze equipment in zis place running." < ], < < "hylotl" : [ < "It is not much, but I do vat I can to 'elp keep ze equipment in zis place running." 57,118d36 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outpostapexrefugee.npctype 8,13d7 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "Greetings! Always nice to see a friendly face." < ], 15c9,11 < "apex" : { --- > "dialog" : { > "converse" : { > "default" : { 18,20c14,17 < ], < < "avian" : [ --- > ] > }, > "apex" : { > "default" : [ 23d19 < 26,41d21 < ], < < "floran" : [ < "Greetings! Always nice to see a friendly face." < ], < < "glitch" : [ < "Greetings! Always nice to see a friendly face." < ], < < "human" : [ < "Greetings! Always nice to see a friendly face." < ], < < "hylotl" : [ < "Greetings! Always nice to see a friendly face." 57,118d36 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outpostapexscientist.npctype 8,13d7 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "I grew weary of watching my Apex brothers being tormented at the hands of the Miniknog, so I left." < ], 15c9,11 < "apex" : { --- > "dialog" : { > "converse" : { > "default" : { 18,20c14,17 < ], < < "avian" : [ --- > ] > }, > "apex" : { > "default" : [ 23d19 < 26,41d21 < ], < < "floran" : [ < "I grew weary of watching my Apex brothers being tormented at the hands of the Miniknog, so I left." < ], < < "glitch" : [ < "I grew weary of watching my Apex brothers being tormented at the hands of the Miniknog, so I left." < ], < < "human" : [ < "I grew weary of watching my Apex brothers being tormented at the hands of the Miniknog, so I left." < ], < < "hylotl" : [ < "I grew weary of watching my Apex brothers being tormented at the hands of the Miniknog, so I left." 58,119d37 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outpostavianexplorer.npctype 8,14c8,15 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "I've learned there's much more to life than flying. There's a whole universe to explore!" < ], < --- > > "dialog" : { > "converse" : { > "default" : { > "default" : [ > "I've learned there's much more to life than flying. There's a whole universe to explore!" > ] > }, 19d19 < 22,41d21 < ], < < "apex" : [ < "I've learned there's much more to life than flying. There's a whole universe to explore!" < ], < < "floran" : [ < "I've learned there's much more to life than flying. There's a whole universe to explore!" < ], < < "glitch" : [ < "I've learned there's much more to life than flying. There's a whole universe to explore!" < ], < < "human" : [ < "I've learned there's much more to life than flying. There's a whole universe to explore!" < ], < < "hylotl" : [ < "I've learned there's much more to life than flying. There's a whole universe to explore!" 58,119d37 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outpostavianmercenary.npctype 8,14c8,15 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "I once served the Stargazers, until I came to realize that I no longer agreed with their views." < ], < --- > > "dialog" : { > "converse" : { > "default" : { > "default" : [ > "I once served the Stargazers, until I came to realize that I no longer agreed with their views." > ] > }, 19d19 < 22,41d21 < ], < < "apex" : [ < "I once served the Stargazers, until I came to realize that I no longer agreed with their views." < ], < < "floran" : [ < "Many among my people despise your kind, but I think the tenacity of the Floran is worthy of praise." < ], < < "glitch" : [ < "I once served the Stargazers, until I came to realize that I no longer agreed with their views." < ], < < "human" : [ < "I once served the Stargazers, until I came to realize that I no longer agreed with their views." < ], < < "hylotl" : [ < "I once served the Stargazers, until I came to realize that I no longer agreed with their views." 58,119d37 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outpostavianrefugee.npctype 8,14c8,15 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "I almost became a ritual sacrifice to Kluex, but was rescued and brought here. What do I do now?" < ], < --- > > "dialog" : { > "converse" : { > "default" : { > "default" : [ > "I almost became a ritual sacrifice to Kluex, but was rescued and brought here. What do I do now?" > ] > }, 19d19 < 22,41d21 < ], < < "apex" : [ < "I almost became a ritual sacrifice to Kluex, but was rescued and brought here. What do I do now?" < ], < < "floran" : [ < "I almost became a ritual sacrifice to Kluex, but was rescued and brought here. What do I do now?" < ], < < "glitch" : [ < "I almost became a ritual sacrifice to Kluex, but was rescued and brought here. What do I do now?" < ], < < "human" : [ < "I almost became a ritual sacrifice to Kluex, but was rescued and brought here. What do I do now?" < ], < < "hylotl" : [ < "I almost became a ritual sacrifice to Kluex, but was rescued and brought here. What do I do now?" 57,118d36 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outpostbountyhunter.npctype 8,38d7 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "Need a bounty hunter? I could use the pixels." < ], < < "human" : { < "default" : [ < "Need a bounty hunter? I could use the pixels." < ], < < "avian" : [ < "Need a bounty hunter? I could use the pixels." < ], < < "apex" : [ < "Need a bounty hunter? I could use the pixels." < ], < < "floran" : [ < "Need a bounty hunter? I could use the pixels." < ], < < "glitch" : [ < "Need a bounty hunter? I could use the pixels." < ], < < "human" : [ < "Need a bounty hunter? I could use the pixels." < ], 40c9,12 < "hylotl" : [ --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ 59,120d30 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outpostcivilian.npctype 2a3 > "baseType" : "villager", 4d4 < "damageTeam" : 1, 7,12d6 < "disableWornArmor" : true, < < "scripts" : [ < "/npcs/bmain.lua" < ], < "initialScriptDelta" : 5, 14,255c8,14 < "behavior" : "/behaviors/npc/villager.behavior", < < "doorHitPoly" : [ [2, -1], [2, 1], [0, 1], [0, -1] ], < "idleTimeRange" : [2.0, 10.0], < "gapSensor" : [ [2.0, -4.5] ], < "gapFarSideSensors" : [ [3.0, -4.5], [4.0, -4.5], [5.0, -4.5], [6.0, -4.5], [7.0, -4.5], [8.0, -4.5] ], < "gapJumpHoldTime" : 0.4, < < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ "I have nothing to say to you" ], < "apex" : { < "default" : [ < "You don't LOOK like Miniknog..." < ], < "human" : [ < "Ah, lovely to see humans in our midst." < ], < "apex" : [ < "You take a risk coming back here, pariah." < ], < "avian" : [ < "Greetings, Avian." < ], < "floran" : [ < "A Floran. Oh." < ], < "glitch" : [ < "Hello there, Glitch." < ], < "hylotl" : [ < "Hello there, Hylotl." < ] < }, < "hylotl" : { < "default" : [ < "I'm not sure I want to know what you are." < ], < "human" : [ < "Oh, hello smoothskin." < ], < "apex" : [ < "Don't get too close, ape. You stink." < ], < "avian" : [ < "Greetings, Avian." < ], < "floran" : [ < "Ghurk!" < ], < "glitch" : [ < "Oh, a robot." < ], < "hylotl" : [ < "Ahh, finally someone who will appreciate me." < ] < }, < "avian" : { < "default" : [ < "Have a blessed day, stranger." < ], < "human" : [ < "Greetings, human." < ], < "apex" : [ < "Greetings, ape." < ], < "avian" : [ < "Greetings, fellow Avian." < ], < "floran" : [ < "Oh... a Floran." < ], < "glitch" : [ < "Hello there, Glitch." < ], < "hylotl" : [ < "Oh, a Hylotl." < ] < }, < "human" : { < "default" : [ < "Have an awesome day!" < ], < "human" : [ < "Yo!", < "Hey, great to see you." < ], < "apex" : [ < "A talking monkey. Cool." < ], < "avian" : [ < "Hey, it's a big bird!" < ], < "floran" : [ < "A triffid!" < ], < "glitch" : [ < "Whoa, nice, a robot." < ], < "hylotl" : [ < "Oh hey, a giant fish." < ] < }, < "floran" : { < "default" : [ < "Ssstrange thing." < ], < "human" : [ < "Meatman!" < ], < "apex" : [ < "Floran want cuddle from monkey man!" < ], < "avian" : [ < "Birdman!" < ], < "floran" : [ < "Floran!" < ], < "glitch" : [ < "Floran greet metal man!" < ], < "hylotl" : [ < "Hsssss!" < ] < }, < < "glitch" : { < "default" : [ < "Confusion. What manner of being are you?" < ], < "human" : [ < "Superiority. Puny human." < ], < "apex" : [ < "Shocked. Such a hairy creature!" < ], < "avian" : [ < "Query. Does your plumage self-assemble, or is it constructed by artisans?" < ], < "floran" : [ < "Friendly. Greetings plantman." < ], < "glitch" : [ < "Friendly. Greetings friend." < ], < "hylotl" : [ < "Sceptical. For a species that lives underwater, you don't smell very clean." < ] < } < } < }, < < "flee" : { < "reactionTimeRange" : [0.2, 1.0], < "safeDistance" : 100, < "safeDistanceWithGuards" : 40, < "safeTimer" : 10, < "stuckTime" : 4, < "stuckCooldown" : 10, < "dialogTimeRange" : [4, 10], < < "dialog" : { < "helpme" : { < "default" : [ < "Help me!", < "Help!", < "I've been accosted!" < ], < "glitch" : [ < "Fear. Help me!", < "Intimidated. Please don't hurt me!", < "Abused. I've been accosted!", < "Afraid. Get away from me!", < "Terrified. Save me!", < "Shocked. No! Get away from me!" < ], < "floran" : [ < "Ssstabby time for me!", < "Floran being hurted!", < "Floran not ready for hunt!" < ] < }, < "helpthem" : { < "default" : [ < "What have you done!?" < ], < "glitch" : [ < "Fear. Somebody help!", < "Intimidated. Please don't hurt me!", < "Afraid. Leave me be!", < "Terrified. Save me!", < "Shocked. What have you done?!", < "Righteous. I will write an electronic letter in protest!" < ], < "floran" : [ < "Ssstabby time for me!", < "Floran being hurted!", < "Floran not ready for hunt!" < ] < }, < "encourage" : { < "default" : [ < "Get 'em!", < "Avenge me!", < "Stick 'em once for me!", < "Don't let 'em get away!" < ], < "glitch" : [ < "Encourage. Put 'em to the sword!", < "Excitement. Avenge me!", < "Aggressive. Strike him down!", < "Vengeful. Don't let 'em get away!" < ], < "floran" : [ < "Ssstabb the intruders!", < "Floran get revenge now!", < "Ssslice them!" < ] < }, < "safe" : { < "default" : [ < "Phew, I think I got away.", < "I've escaped with my life!", < "Is this the safe zone?" < ], < "glitch" : [ < "Relieved. Phew, I think I got away.", < "Thankful. I've escaped with my life!", < "Wishful. If only I could afford a keep.", < "Hopeful. Am I safe?", < "Embarrassed. I think I leaked a little oil." < ], < "floran" : [ < "Floran sssafe now.", < "Floran not get ssstabbed after all.", < "Them lucky Floran not have weapon.", < "Sssalvation!" < ] < } --- > "dialog" : { > "converse" : "/dialog/outpost.config:converse", > "flee" : { > "helpme" : "/dialog/outpost.config:flee.helpme", > "helpthem" : "/dialog/outpost.config:flee.helpthem", > "encourage" : "/dialog/outpost.config:flee.encourage", > "safe" : "/dialog/outpost.config:flee.safe" 257,403d15 < }, < < "sit" : { < "timeOfDayRanges" : [ [0.0, 1.0] ], < "moveTimeLimit" : 30, < "searchRadius" : 25, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [15, 240] < }, < < "sleep" : { < "searchRadius" : 15, < "lieDownRadius" : 3, < "moveToBedTimeLimit" : 10.0, < "timeOfDayRanges" : [ [ [0.7, 0.75], [0.95, 1.0] ] ], < "cooldown" : 30 < }, < < "wander" : { < "timeRange" : [2.0, 10.0], < "chatDistance" : 4, < "indoorTimeOfDayRanges" : [ [0.0, 1.0] ], < "indoorSearchRadius" : 60, < "indoorLookaheadDistance" : 4, < "moveToTargetTime" : 10.0, < "changeDirectionCooldown" : 2, < "dropDownChance" : 5, < "cooldown" : 10, < "maxDistanceFromSpawnPoint" : 10 < }, < < "chat" : { < "distanceRange" : [2.0, 4.0], < "conversations" : [ < [ < [2, "blabbering", "idle" ], < [1, "idle", "laugh" ], < [2, "idle", "blabbering" ], < [1, "sad", "idle" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "happy" ], < [1, "wink", "laugh" ], < [2, "happy", "happy" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "blabbering" ], < [2, "blabbering", "annoyed" ], < [3, "shouting", "shouting" ], < [2, "annoyed", "annoyed" ] < ] < ], < "cooldown" : 10 < } < }, < < "dropPools" : [ "villagertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] npcs\outpost\outpostfloranfan.npctype 8,18d7 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "Doesss Floran look good in human clothesss?" < ], < < "floran" : { < "default" : [ < "Doesss Floran look good in human clothesss?" < ], 20c9,12 < "avian" : [ --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ 22,24c14,17 < ], < < "apex" : [ --- > ] > }, > "floran" : { > "default" : [ 27d19 < 31,39d22 < < "glitch" : [ < "Doesss Floran look good in human clothesss?" < ], < < "human" : [ < "Doesss Floran look good in human clothesss?" < ], < 57,118d39 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outpostfloranhunter.npctype 8,18d7 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "Floran tire of hunting without reason. Floran leave clan to find greater purpossse." < ], < < "floran" : { < "default" : [ < "Floran tire of hunting without reason. Floran leave clan to find greater purpossse." < ], 20c9,12 < "avian" : [ --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ 22,24c14,17 < ], < < "apex" : [ --- > ] > }, > "floran" : { > "default" : [ 27d19 < 31,39d22 < < "glitch" : [ < "Floran tire of hunting without reason. Floran leave clan to find greater purpossse." < ], < < "human" : [ < "Floran tire of hunting without reason. Floran leave clan to find greater purpossse." < ], < 57,118d39 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outpostfloranscholar.npctype 8,18d7 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "Does my attire surprise you? I try my best to show the others here that not all Floran are savage." < ], < < "floran" : { < "default" : [ < "Does my attire surprise you? I try my best to show the others here that not all Floran are savage." < ], 20c9,12 < "avian" : [ --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ 22,24c14,17 < ], < < "apex" : [ --- > ] > }, > "floran" : { > "default" : [ 27d19 < 31,39d22 < < "glitch" : [ < "Does my attire surprise you? I try my best to show the others here that not all Floran are savage." < ], < < "human" : [ < "Does my attire surprise you? I try my best to show the others here that not all Floran are savage." < ], < 57,118d39 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outpostglitchmechanic.npctype 6,13c6,8 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "Boastful. We Glitch are used to fixing machinery far more complex than the stuff you see here." < ], < < "glitch" : { --- > "dialog" : { > "converse" : { > "default" : { 16,26c11,14 < ], < < "avian" : [ < "Boastful. We Glitch are used to fixing machinery far more complex than the stuff you see here." < ], < < "apex" : [ < "Boastful. We Glitch are used to fixing machinery far more complex than the stuff you see here." < ], < < "floran" : [ --- > ] > }, > "glitch" : { > "default" : [ 29d16 < 32,39d18 < ], < < "human" : [ < "Boastful. We Glitch are used to fixing machinery far more complex than the stuff you see here." < ], < < "hylotl" : [ < "Boastful. We Glitch are used to fixing machinery far more complex than the stuff you see here." 56,117d34 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outpostglitchmercenary.npctype 6,13c6,8 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "Apologetic. Please do not be offended if my comrade in black will not speak to you. He's not much of a talker." < ], < < "glitch" : { --- > "dialog" : { > "converse" : { > "default" : { 16,26c11,14 < ], < < "avian" : [ < "Apologetic. Please do not be offended if my comrade in black will not speak to you. He's not much of a talker." < ], < < "apex" : [ < "Apologetic. Please do not be offended if my comrade in black will not speak to you. He's not much of a talker." < ], < < "floran" : [ --- > ] > }, > "glitch" : { > "default" : [ 29d16 < 32,39d18 < ], < < "human" : [ < "Apologetic. Please do not be offended if my comrade in black will not speak to you. He's not much of a talker." < ], < < "hylotl" : [ < "Apologetic. Please do not be offended if my comrade in black will not speak to you. He's not much of a talker." 56,117d34 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outpostglitchsilenttype.npctype 8,13d7 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "..." < ], 15c9,11 < "glitch" : { --- > "dialog" : { > "converse" : { > "default" : { 18,41d13 < ], < < "avian" : [ < "..." < ], < < "apex" : [ < "..." < ], < < "floran" : [ < "..." < ], < < "glitch" : [ < "..." < ], < < "human" : [ < "..." < ], < < "hylotl" : [ < "..." 59,120d30 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outposthumanexcon.npctype 8,15c8,11 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "Despite knowing I come from one of the USCM prisons, the people here have been very good to me. I owe them a lot." < ], < < "human" : { --- > > "dialog" : { > "converse" : { > "default" : { 18,32c14,17 < ], < < "avian" : [ < "Despite knowing I come from one of the USCM prisons, the people here have been very good to me. I owe them a lot." < ], < < "apex" : [ < "Despite knowing I come from one of the USCM prisons, the people here have been very good to me. I owe them a lot." < ], < < "floran" : [ < "Despite knowing I come from one of the USCM prisons, the people here have been very good to me. I owe them a lot." < ], < < "glitch" : [ --- > ] > }, > "human" : { > "default" : [ 35d19 < 38,41d21 < ], < < "hylotl" : [ < "Despite knowing I come from one of the USCM prisons, the people here have been very good to me. I owe them a lot." 57,118d36 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outposthumanscientist.npctype 8,18d7 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "The entity that destroyed Earth could strike other worlds. We must devise some means of fighting back!" < ], < < "human" : { < "default" : [ < "The entity that destroyed Earth could strike other worlds. We must devise some means of fighting back!" < ], 20,28c9,12 < "avian" : [ < "The entity that destroyed Earth could strike other worlds. We must devise some means of fighting back!" < ], < < "apex" : [ < "The entity that destroyed Earth could strike other worlds. We must devise some means of fighting back!" < ], < < "floran" : [ --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ 30,32c14,17 < ], < < "glitch" : [ --- > ] > }, > "human" : { > "default" : [ 35d19 < 38,41d21 < ], < < "hylotl" : [ < "The entity that destroyed Earth could strike other worlds. We must devise some means of fighting back!" 57,118d36 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outposthumansurvivor.npctype 8,18d7 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "I only just barely escaped from Earth as it was torn apart. I was very lucky to have found this place." < ], < < "human" : { < "default" : [ < "I only just barely escaped from Earth as it was torn apart. I was very lucky to have found this place." < ], 20,28c9,12 < "avian" : [ < "I only just barely escaped from Earth as it was torn apart. I was very lucky to have found this place." < ], < < "apex" : [ < "I only just barely escaped from Earth as it was torn apart. I was very lucky to have found this place." < ], < < "floran" : [ --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ 30,32c14,17 < ], < < "glitch" : [ --- > ] > }, > "human" : { > "default" : [ 35d19 < 38,41d21 < ], < < "hylotl" : [ < "I only just barely escaped from Earth as it was torn apart. I was very lucky to have found this place." 57,118d36 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outposthylotlfloranhater.npctype 8,18d7 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "I don't trust those Floran. Who knows what they're scheming?" < ], < < "hylotl" : { < "default" : [ < "I don't trust those Floran. Who knows what they're scheming?" < ], 20c9,12 < "avian" : [ --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ 22,24c14,17 < ], < < "apex" : [ --- > ] > }, > "hylotl" : { > "default" : [ 27d19 < 31,39d22 < < "glitch" : [ < "I don't trust those Floran. Who knows what they're scheming?" < ], < < "human" : [ < "I don't trust those Floran. Who knows what they're scheming?" < ], < 57,118d39 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outposthylotlperformer.npctype 8,14c8,15 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "Nobody appreciates a good joke anymore! My comic genius is wasted on the cretins here." < ], < --- > > "dialog" : { > "converse" : { > "default" : { > "default" : [ > "Nobody appreciates a good joke anymore! My comic genius is wasted on the cretins here." > ] > }, 19d19 < 23d22 < 27d25 < 31d28 < 35d31 < 39d34 < 57,118d51 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outposthylotlwarrior.npctype 8,18d7 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "We Hylotl are not widely regarded as warriors, but I never back down from a fight." < ], < < "hylotl" : { < "default" : [ < "We Hylotl are not widely regarded as warriors, but I never back down from a fight." < ], 20c9,12 < "avian" : [ --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ 22,24c14,17 < ], < < "apex" : [ --- > ] > }, > "hylotl" : { > "default" : [ 27d19 < 31,39d22 < < "glitch" : [ < "We Hylotl are not widely regarded as warriors, but I never back down from a fight." < ], < < "human" : [ < "We Hylotl are not widely regarded as warriors, but I never back down from a fight." < ], < 59,120d41 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\outpost\outpostpenguinpromoter.npctype 8,38d7 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "Got a ship? You should check out the Penguin Bay out back! We often have useful stuff for travelers such as yourself." < ], < < "penguin" : { < "default" : [ < "Got a ship? You should check out the Penguin Bay out back! We often have useful stuff for travelers such as yourself." < ], < < "avian" : [ < "Got a ship? You should check out the Penguin Bay out back! We often have useful stuff for travelers such as yourself." < ], < < "apex" : [ < "Got a ship? You should check out the Penguin Bay out back! We often have useful stuff for travelers such as yourself." < ], < < "floran" : [ < "Got a ship? You should check out the Penguin Bay out back! We often have useful stuff for travelers such as yourself." < ], < < "glitch" : [ < "Got a ship? You should check out the Penguin Bay out back! We often have useful stuff for travelers such as yourself." < ], < < "human" : [ < "Got a ship? You should check out the Penguin Bay out back! We often have useful stuff for travelers such as yourself." < ], 40c9,12 < "hylotl" : [ --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ 44,105d15 < } < } < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 npcs\outpost\outpostundersideman.npctype 8,38d7 < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ < "I'm hiding here for a good reason..." < ], < < "human" : { < "default" : [ < "I'm hiding here for a good reason..." < ], < < "avian" : [ < "I'm hiding here for a good reason..." < ], < < "apex" : [ < "I'm hiding here for a good reason..." < ], < < "floran" : [ < "I'm hiding here for a good reason..." < ], < < "glitch" : [ < "I'm hiding here for a good reason..." < ], < < "human" : [ < "I'm hiding here for a good reason..." < ], 40c9,12 < "hylotl" : [ --- > "dialog" : { > "converse" : { > "default" : { > "default" : [ 58,119d29 < }, < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } npcs\story\nuru.npctype 2a3 > "baseType" : "base", 15,16d15 < < "levelVariance" : [-0.5, -0.5], 18c17 < "disableWornArmor" : true, --- > "persistent" : true, 20,23c19 < "scripts" : [ < "/npcs/bmain.lua" < ], < "initialScriptDelta" : 5, --- > "dropPools" : [], 30,31c26,27 < "converse" : { < "dialog" : { --- > "dialog" : { > "converse" : { 52,53d47 < "dropPools" : [ ], < 55,67d48 < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < 71,111d51 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 113,139d52 < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] npcs\subbiometenants\spring.npctype 2a3 > "baseType" : "merchant", 14,123d14 < "behavior" : "/behaviors/npc/merchant.behavior", < "personality" : "normal", < < "idleTimeRange" : [2.0, 10.0], < < "tenant" : { < "emoteCooldownTimeRange" : [1.0, 2.0], < "complaintCooldownTimeRange" : [5.0, 10.0], < "severeComplaintTime" : 25.0, < "finalComplaintTime" : 35.0, < < "dialog" : { < "grumbles" : { < "tagCriteria" : { < "default" : [ "Something in my place has changed, I don't like it!" ], < "floran" : [ < "Have you taken ssstuff from my ssstore?", < "My store hasss changed, I'm not happy with that!", < "Can you help me get my ssstore looking like how it usssed to?" < ], < "hylotl" : [ < "Something is unbalanced in the flow of my store...", < "This is my store! Why would someone take things from it?", < "I wish my store was how it was before, it is no doubt turning away customers..." < ] < }, < "enclosedArea" : { < "default" : [ "My home could use some repairs!" ], < "floran" : [ < "There's damagesss to the walls here!", < "Could you fix my ssstore?", < "My store could use some fixesss!" < ], < "hylotl" : [ < "My store has been damaged. This is unpleasant.", < "Do you feel something strange with my store? It feels damaged...", < "I noticed a damaged wall here, perhaps you could assist with repairs?" < ] < }, < "otherDeed" : { < "default" : [ "I thought this place was for me!" ], < "floran" : [ < "Sssomeone else can't move here!", < "Why isss someone else trying to move in?", < "I can't ssshare my store space with someone else!" < ], < "hylotl" : [ < "Is a rival merchant trying to move into my shop?", < "How can I remain calm when another deed is in my shop?", < "There is another deed in my shop? Surely a mistake has been made?" < ] < }, < "severe" : { < "default" : [ "I can't sell my wares in these conditions!" ], < "floran" : [ < "I can't sssell like thisss!", < "These conditionsss aren't okay!", < "You still haven't fixed thingsss in my shop!" < ], < "hylotl" : [ < "I try to remain calm but it is hard when my requests are left unanswered.", < "The state of this store is not something I feel is acceptable.", < "I cannot remain working in a shop with such imperfections..." < ] < }, < "final" : { < "default" : [ "I've had enough of this!" ], < "floran" : [ < "Thisss has gone on long enough!", < "I am going to sssell somewhere else!", < "Thisss is unprofessional, I'm going to sssell on another planet!" < ], < "hylotl" : [ < "It is time I move on, this shop is not to my standards anymore.", < "I wished hard that this shop would be good enough, but it simply is not anymore.", < "Perhaps I shall find another shop that I can sell my beautiful products in." < ] < } < }, < "arrivedHome" : { < "beacon" : { < "default" : [ "I'm home!" ], < "floran" : [ < "You needsss me to sell me sssomething?", < "Do you need me for sssomething?", < "Were you sssearching for me?" < ], < "hylotl" : [ < "What would you like to discuss?", < "Did you wish to trade with me, friend?", < "Did you need me for my wares?" < ] < }, < "rent" : { < "default" : [ "Here's a gift for all your help with my shop!" ], < "floran" : [ < "Here isss a present for you!", < "Here'sss something I picked up for you!", < "Thanksss for your help with my ssstore!" < ], < "hylotl" : [ < "My shop is as peaceful as I could hope for. Here is a gift for all you have done.", < "Accept this as a token of my thanks for your assistance.", < "I hope this humble gift conveys my appreciation for your help." < ] < } < } < } < }, < 127,185d17 < < "dialog" : { < "start" : { < "default" : [ < "I am bringing nature back into the light. Spread the love!", < "Go organic! Spread beauty!", < "Hello, friend! Would you be interested in spreading natural beauty throughout the universe?" < ], < < "floran" : { < "default" : [ < "Floran ssspreading nature. Ssselling plants.", < "You wantsss nature? Floran ssselling seedsss and plants.", < "Floran wantsss pixelsss, can give ssseeds." < ] < }, < < "hylotl" : { < "default" : [ < "I am bringing nature back into the light. Spread the love!", < "Go organic! Spread beauty!", < "Hello, friend! Would you be interested in spreading natural beauty throughout the universe?" < ] < } < }, < < "end" : { < "default" : [ < "See ya next time!", < "Come again.", < "Your pixels are always good here.", < "Pleasure doing business with you!", < "Thanks for visiting my store.", < "Great to see you!", < "Let's do business again." < ], < < "hylotl" : { < "default" : [ < "I hope our transactions bring you satisfaction.", < "I hope you found what you were searching for.", < "May your path ahead be clear to you, friend!", < "Say strong in heart and in spirit, friend." < ] < }, < < "floran" : { < "default" : [ < "Floran want customer to ssspread the love!", < "Come back sssoon to buy more plantsss!", < "Floran like buy sssell.", < "Floran pleased with transssaction." < ] < } < } < }, < < < "poolsFile" : "/npcs/merchantpools.config", 194,304c26,33 < "returnToStore" : { < "waitTime" : 10, < "waitTargetDistance" : 10, < < "dialog" : { < "follow" : { < "default" : [ < "Come with me, we can do business at my store!", < "Come in, come in and see what I've got!" < ], < "hylotl" : [ < "Allow me to lead you to my store.", < "Would you like me to lead you to my shop?" < ], < "floran" : [ < "Pleassse come with me.", < "My ssstore is thisss way." < ] < }, < < "welcome" : { < "default" : [ < "Welcome to my store!", < "Here we are. Now, how can I help you?" < ], < "floran" : [ < "Yesss, now you can buy sssome of my ssseeds.", < "Here we are, now ssspend on some plantsss!" < ], < "hylotl" : [ < "Here we are! Now, would you like to buy some plants and seeds?", < "Welcome to my store! Now would you like to purchase some natural produce?" < ] < }, < < "tout" : { < "default" : [ < "You won't find these goods anywhere else!", < "Cheap buys!" < ], < < "floran" : { < "default" : [ < "Floran welcomesss you to store. Hopes you buy thingsss.", < "You breaksss it, you buysss it.", < "Floran wantsss pixelsss." < ] < }, < < "hylotl" : { < "default" : [ < "Welcome, stranger! Marvel at my wares, I hope they'll bring you happiness.", < "My goods are amazing. I'd give you some for free, but I like money.", < "The design of my goods surpasses that of any other race!", < "Look at my merchandise. It's mind-blowing, I know.", < "You can have any of this for just a few small payments of pixels!" < ] < } < } < } < }, < < "flee" : { < "reactionTimeRange" : [0.2, 1.0], < "safeDistance" : 100, < "safeDistanceWithGuards" : 40, < "safeTimer" : 10, < "stuckTime" : 4, < "stuckCooldown" : 10, < "dialogTimeRange" : [4, 10], < < "dialog" : { < "helpme" : { < "default" : [ < "Time to flee!", < "Help!", < "I'm under attack!" < ], < "floran" : [ < "Help Floran!", < "Sssave me!" < ], < "hylotl" : [ < "I need assistance!" < ] < }, < "helpthem" : { < "default" : [ < "Help!" < ], < "glitch" : [ < "Fear. Guards!", < "Intimidated. Please don't hurt me!", < "Afraid. Leave me be! Guards!", < "Terrified. Save me!", < "Shocked. What have you done?!" < ] < }, < "encourage" : { < "default" : [ < "Get 'em!", < "Avenge me!", < "Stick 'em once for me!", < "Don't let 'em get away!" < ], < "glitch" : [ < "Encourage. Put 'em to the sword!", < "Excitement. Avenge me!", < "Aggressive. Strike him down!", < "Vengeful. Don't let 'em get away!" < ] --- > "dialog" : { > "tenant" : { > "grumbles" : { > "tagCriteria" : "/dialog/merchant.config:tagCriteria", > "enclosedArea" : "/dialog/merchant.config:enclosedArea", > "otherDeed" : "/dialog/merchant.config:otherDeed", > "severe" : "/dialog/merchant.config:severe", > "final" : "/dialog/merchant.config:final" 306,319c35,37 < "safe" : { < "default" : [ < "Phew, I think I got away.", < "I've escaped with my life!", < "Is this the safe zone?" < ], < "floran" : [ < "Now I can sssell more ssseeds.", < "Now I'm sssafe." < ], < "hylotl" : [ < "Am I safe?", < "Now I can sell more of my natural produce." < ] --- > "arrivedHome" : { > "beacon" : "/dialog/merchant.config:beacon", > "rent" : "/dialog/merchant.config:rent" 322,377d39 < }, < < "sit" : { < "timeOfDayRanges" : [ [0.6, 1.0], [0.0, 0.2] ], < "moveTimeLimit" : 30, < "searchRadius" : 25, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [ 15, 240 ] < }, < < "sleep" : { < "searchRadius" : 15, < "lieDownRadius" : 3, < "moveToBedTimeLimit" : 10.0, < "timeOfDayRanges" : [ [ [ 0.7, 0.75 ], [ 0.95, 1.0 ] ] ], < "cooldown" : 30 < }, < < "wander" : { < "timeRange" : [1.0, 3.0], < "chatDistance" : 4, < "indoorTimeOfDayRanges" : [ [0.0, 0.2], [0.5, 1.0] ], < "indoorSearchRadius" : 60, < "indoorLookaheadDistance" : 4, < "moveToTargetTime" : 10.0, < "changeDirectionCooldown" : 2, < "dropDownChance" : 5, < "cooldown" : 10, < "maxDistanceFromSpawnPoint" : 3 < }, < < "chat" : { < "distanceRange" : [ 2.0, 4.0 ], < "conversations" : [ < [ < [ 2, "blabbering", "idle" ], < [ 1, "idle", "laugh" ], < [ 2, "idle", "blabbering" ], < [ 1, "sad", "idle" ] < ], < [ < [ 2, "idle", "blabbering" ], < [ 2, "blabbering", "happy" ], < [ 1, "wink", "laugh" ], < [ 2, "happy", "happy" ] < ], < [ < [ 2, "idle", "blabbering" ], < [ 2, "blabbering", "blabbering" ], < [ 2, "blabbering", "annoyed" ], < [ 3, "shouting", "shouting" ], < [ 2, "annoyed", "annoyed" ] < ] < ], < "cooldown" : 10 418,508d79 < }, < < "dropPools" : [ "basicMonsterTreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 1.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } npcs\subbiometenants\tar.npctype 2a3 > "baseType" : "villager", 4,12d4 < "damageTeam" : 1, < "levelVariance" : [-1, -1], < < "disableWornArmor" : true, < < "scripts" : [ < "/npcs/bmain.lua" < ], < "initialScriptDelta" : 5, 15,43c7,8 < "behavior" : "/behaviors/npc/villager.behavior", < "personality" : "normal", < < "doorHitPoly" : [ [2, -1], [2, 1], [0, 1], [0, -1] ], < "idleTimeRange" : [2.0, 10.0], < "gapSensor" : [ [2.0, -4.5] ], < "gapFarSideSensors" : [ [3.0, -4.5], [4.0, -4.5], [5.0, -4.5], [6.0, -4.5], [7.0, -4.5], [8.0, -4.5] ], < "gapJumpHoldTime" : 0.4, < //testing only < "trading" : { < "config" : "/interface/windowconfig/shop.config", < "filter" : [ ], < "titleFromEntity" : true, < "requiresBlueprint" : false, < "recipes" : [ < { < "input" : [ { "name" : "money", "count" : 10 } ], < "output" : { "name" : "fullwood1" } < } < ] < }, < < "tenant" : { < "emoteCooldownTimeRange" : [1.0, 2.0], < "complaintCooldownTimeRange" : [5.0, 10.0], < "severeComplaintTime" : 25.0, < "finalComplaintTime" : 35.0, < < "dialog" : { --- > "dialog" : { > "tenant" : { 46c11,12 < "default" : [ --- > "default" : { > "default" : [ 50c16,17 < ] --- > ] > } 53c20,21 < "default" : [ --- > "default" : { > "default" : [ 57c25,26 < ] --- > ] > } 60c29,30 < "default" : [ --- > "default" : { > "default" : [ 63c33,34 < ] --- > ] > } 66c37,38 < "default" : [ --- > "default" : { > "default" : [ 69,70c41,43 < "I won't stand for these conditions much longer!" < ] --- > "I won't stand for these conditions much longer!" > ] > } 73c46,47 < "default" : [ --- > "default" : { > "default" : [ 77c51,52 < ] --- > ] > } 81,154c56,57 < "beacon" : { < "default" : [ < "I was gathering! Did you need me?", < "I've been out scavenging - Did you need me for something?", < "You have need of me? I'm currently gathering supplies." < ] < }, < "rent" : { < "default" : [ < "Here's something I found whilst out gathering supplies!", < "I came across this whilst out hunting and gathering!", < "Here's a prize from my recent scavenger trip!" < ] < } < } < } < }, < < "converse" : { < "waitTime" : 0.5, < "dialog" : { < "default" : [ "I'm a hunter-gatherer. I'll bring you some things I find!" ], < "apex" : { < "default" : [ < "I'm a hunter-gatherer. I'll bring you some things I find!", < "Life under the MiniKnog is too restrained, I prefer to live a simpler life!", < "Why live as a slave with the rest of my people when I can be one with nature?" < ] < }, < "human" : { < "default" : [ < "I'm a hunter-gatherer. I'll bring you some things I find!", < "I'm planning my next gathering trip! I'll bring some nice things back for you.", < "Technology is overrated, the life of the hunter-gatherer is the one for me!" < ] < } < } < }, < < "flee" : { < "reactionTimeRange" : [0.2, 1.0], < "safeDistance" : 100, < "safeDistanceWithGuards" : 40, < "safeTimer" : 10, < "stuckTime" : 4, < "stuckCooldown" : 10, < "dialogTimeRange" : [4, 10], < < "dialog" : { < "helpme" : { < "default" : [ < "Flee, like the wolf!", < "I must leap away like a fleeing rabbit!" < ] < }, < "helpthem" : { < "default" : [ < "Oh no!" < ] < }, < "encourage" : { < "default" : [ < "Get 'em!", < "Avenge me!", < "Stick 'em once for me!", < "Don't let 'em get away!" < ] < }, < "safe" : { < "default" : [ < "Phew, I think I got away.", < "I've escaped with my life!", < "Is this the safe zone?" < ] --- > "beacon" : "/dialog/gatherer.config:beacon", > "rent" : "/dialog/gatherer.config:rent" 155a59,65 > }, > "converse" : "/dialog/gatherer.config:converse", > "flee" : { > "helpme" : "/dialog/gatherer.config:helpme", > "helpthem" : "/dialog/gatherer.config:helpthem", > "encourage" : "/dialog/gatherer.config:encourage", > "safe" : "/dialog/gatherer.config:safe" 157,220d66 < }, < < "sit" : { < "timeOfDayRanges" : [ [0.6, 1.0], [0.0, 0.2] ], < "moveTimeLimit" : 30, < "searchRadius" : 25, < "sitRadius" : 3, < "cooldown" : 60, < "timeRange" : [15, 240] < }, < < "sleep" : { < "searchRadius" : 15, < "lieDownRadius" : 3, < "moveToBedTimeLimit" : 10.0, < "timeOfDayRanges" : [ [ [0.7, 0.75], [0.95, 1.0] ] ], < "cooldown" : 30 < }, < < "wander" : { < "timeRange" : [2.0, 10.0], < "chatDistance" : 4, < "indoorTimeOfDayRanges" : [ [0.0, 0.2], [0.5, 1.0] ], < "indoorSearchRadius" : 60, < "indoorLookaheadDistance" : 4, < "moveToTargetTime" : 10.0, < "changeDirectionCooldown" : 2, < "dropDownChance" : 5, < "cooldown" : 10 < }, < < "work" : { < "timeOfDayRanges" : [ [0.2, 0.6] ], < "tools" : [ [ "hoe", 0.5, 2.0] ], < "toolRange" : 3.0, < "searchDistance" : 10.0, < "timeRange" : [4.0, 6.0], < "cooldown" : 10.0 < }, < < "chat" : { < "distanceRange" : [2.0, 4.0], < "conversations" : [ < [ < [2, "blabbering", "idle" ], < [1, "idle", "laugh" ], < [2, "idle", "blabbering" ], < [1, "sad", "idle" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "happy" ], < [1, "wink", "laugh" ], < [2, "happy", "happy" ] < ], < [ < [2, "idle", "blabbering" ], < [2, "blabbering", "blabbering" ], < [2, "blabbering", "annoyed" ], < [3, "shouting", "shouting" ], < [2, "annoyed", "annoyed" ] < ] < ], < "cooldown" : 10 275,365d120 < }, < < "dropPools" : [ "villagertreasure" ], < < "statusControllerSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/npc_primary.lua", < "/scripts/vec2.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "maxHealth" : { < "baseValue" : 100.0 < }, < "maxEnergy" : { < "baseValue" : 80.0 < }, < "powerMultiplier" : { < "baseValue" : 1.0 < }, < "protection" : { < "baseValue" : 0.75 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "energyRegenPercentageRate" : { < "baseValue" : 0.585 < }, < "energyRegenBlockDischarge" : { < "baseValue" : -1.0 < }, < "shieldSuppressed" : { < "baseValue" : 0.0 < }, < "invulnerable" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 1.0 < }, < "energy" : { < "maxStat" : "maxEnergy", < "defaultPercentage" : 1.0 < }, < "energyRegenBlock" : { < "maxValue" : 1.0, < "deltaStat" : "energyRegenBlockDischarge", < "initialPercentage" : 0.0 < } < } < }, < < "persistent" : true, < < "splashConfig" : { < "splashSpeedMin" : 10.0, < "splashMinWaterLevel" : 0.4, < "splashBottomSensor" : [0, -2.0], < "splashTopSensor" : [0, 2.0], < "numSplashParticles" : 8, < "splashYVelocityFactor" : 0.2, < < "splashParticle" : { < "type" : "ember", < "position" : [0, -1], < "finalVelocity" : [0, -20], < "approach" : [0, 50], < "color" : [60, 150, 224, 100], < "size" : 4.0, < "timeToLive" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 0.2 < }, < < "splashParticleVariance" : { < "velocity" : [10, 0] < } objects\arttrophies\paintingmonalisa\paintingmonalisa.object 37a38,43 > "defaultReactions" : { > "artwork" : [ > [1.0, "smile"], > [1.0, "love"] > ] > }, objects\farmables\currentcorn\currentcornseed.object 27c27 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\currentcorn\wildcurrentcornseed.object 28c28 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\kiwi\kiwiseed.object 27c27 < "spaces" : [ [0, 0], [0, 1] ], --- > "spaces" : [ [0, 0] ], objects\farmables\kiwi\wildkiwiseed.object 28c28 < "spaces" : [ [0, 0], [0, 1] ], --- > "spaces" : [ [0, 0] ], objects\generic\arcademachine\arcademachine.object 38a39,48 > "defaultReactions" : { > "videogame" : [ > [1.0, "computerTyping"] > ], > "videogameComplete" : [ > [1.0, "smile"], > [1.0, "annoyed"], > [1.0, "punch"] > ] > }, objects\generic\birdsnest\birdsnest.object 6c6 < "price" : 200, --- > "price" : 0, objects\generic\travellersbeacon\travellersbeacon.object 6c6 < "price" : 700, --- > "price" : 600, objects\generic\woodenchair\woodenchair.object 23c23 < "imagePosition" : [-7, 0], --- > "imagePosition" : [-8, 0], objects\human\jukebox\jukebox.object 68a69,78 > "defaultReactions" : { > "music" : [ > [1.0, "posedance"] > ], > "musicFinished" : [ > [1.0, "posedance"], > [1.0, "smile"], > [1.0, "laugh"] > ] > }, objects\hylotl\thefickletype\tenstudiesplaque.frames 4c4 < "size" : [24, 8], --- > "size" : [40, 8], objects\hylotl\thefickletype\tenstudiesplaque.object 6c6 < "price" : 2000, --- > "price" : 350, 22,25c22,23 < "dualImage" : "tenstudiesplaque.png:", < "imagePosition" : [-12, -0], < "frames" : 1, < "animationCycle" : 0.5, --- > "image" : "tenstudiesplaque.png:", > "imagePosition" : [-20, -0], objects\outpost\frogfurnishing\frogfurnishing.object 36c36 < "input" : [ ["money", 200] ], --- > "input" : [ ["money", 375] ], objects\themed\island\islandchair\islandchair.object 10c10 < "price" : 150, --- > "price" : 375, parallax\surface\desert.parallax 21,22c21,64 < "kind" : "desertback", < "offset" : [0, 500], --- > "kind" : "desertforeground", > "offset" : [0, 380], > "parallax" : 1.08, > "fadePercent" : 0.01 > }, > { > "kind" : "desertforeground", > "offset" : [0, 280], > "parallax" : 1.09, > "fadePercent" : 0.01 > }, > { > "kind" : "desertforeground2", > "offset" : [0, 275], > "parallax" : 1.2, > "fadePercent" : 0.04 > }, > { > "kind" : "deserttrees", > "offset" : [0, 115], > "parallax" : 1.3, > "fadePercent" : 0.06 > }, > { > "kind" : "desertforeground3", > "offset" : [0, 280], > "parallax" : 1.4, > "fadePercent" : 0.09 > }, > { > "kind" : "desertforeground", > "offset" : [0, 285], > "parallax" : 1.9, > "fadePercent" : 0.1 > }, > { > "kind" : "desertforeground", > "offset" : [0, 290], > "parallax" : 2.5, > "fadePercent" : 0.2 > }, > { > "kind" : "deserttrees2", > "offset" : [0, 295], 24c66,72 < "fadePercent" : 0 --- > "fadePercent" : 0.3 > }, > { > "kind" : "desertforeground", > "offset" : [0, 300], > "parallax" : 3.5, > "fadePercent" : 0.3 30c78 < "fadePercent" : 0.1 --- > "fadePercent" : 0.3 36c84 < "fadePercent" : 0.2 --- > "fadePercent" : 0.3 53,56c101,105 < "offset" : [0, -30], < "baseCount" : 8, < "parallax" : 9.00001, < "frequency" : 1, "fadePercent" : 0.1 --- > "offset" : [0, 20], > "baseCount" : 5, > "parallax" : [19, 12.001], > "frequency" : 1, > "fadePercent" : 0.6 projectiles\weather\settlingsnow\settlingsnow.projectile 21c21 < "hydrophobic" : false --- > "hydrophobic" : true scripts\npctoyobject.lua 9a10,13 > function npcToy.getDefaultReactions() > return entity.configParameter("npcToy.defaultReactions") > end > scripts\pathing.lua 8c8,133 < Pather = {} --- > PathFinder = {} > function PathFinder:new(options) > newFinder = { > edges = {}, > options = options > } > setmetatable(newFinder, extend(self)) > return newFinder > end > > function PathFinder:find(targetPosition) > if not mcontroller.onGround() then > return "pathfinding" > end > > if self.options.mustEndOnGround and not validStandingPosition(targetPosition, false) then > return false > end > > if not self:hasPath() and not self.aStar then > self:reset() > self:start(mcontroller.position(), targetPosition) > end > return self:explore() > end > > function PathFinder:start(sourcePosition, targetPosition) > self.target = targetPosition > self.aStar = world.platformerPathStart(sourcePosition, self.target, mcontroller.baseParameters(), self.options) > end > > function PathFinder:explore() > local result = self.aStar:explore(250) > if result == true and mcontroller.onGround() then > self.edges = self.aStar:result() > self.currentEdgeIndex = 1 > self.aStar = nil > return true > elseif result == false then > self.aStar = nil > return false > end > world.debugText("Looking for path", vec2.add(mcontroller.position(), {0, -1}), "yellow") > return "pathfinding" > end > > function PathFinder:reset() > self.edges = {} > self.currentEdgeIndex = 1 > end > > function PathFinder:hasPath() > return #self.edges > 0 > end > > function PathFinder:currentEdge() > return self.edges[self.currentEdgeIndex] > end > > function PathFinder:lookAhead(i) > return self.edges[self.currentEdgeIndex + i] > end > > function PathFinder:update(targetPosition) > --Replace current path > if self.target and world.magnitude(targetPosition, self.target) > 2 then > self:start(mcontroller.position(), targetPosition) > end > > -- Find a new path if none exists > if not self:hasPath() then > return self:find(targetPosition) > end > > if self.aStar then > if self:explore() == false then > return false > end > end > > self:moveAlongPath() > return self:hasPath() > end > > function PathFinder:moveAlongPath() > local edgeIndex = self.currentEdgeIndex > if edgeIndex > #self.edges then > return nil > end > > local currentEdge = self.edges[edgeIndex+1] > for i = edgeIndex, #self.edges - 1 do > local edge = self.edges[i] > local nextEdge = self.edges[i+1] > > --Handled in their respective edge movement functions > if edge.action == "Jump" or edge.action == "Drop" or edge.action == "Arc" or edge.action == "Land" then > break > end > > --Walking of ledges, handled in walk > if edge.action == "Walk" and nextEdge.action == "Arc" then > break > end > > --Close enough to the target node to advance past it > local edgeDistance = world.distance(mcontroller.position(), edge.target.position) > if math.abs(edgeDistance[1]) < 1 and math.abs(edgeDistance[2]) < 1 then > self.currentEdgeIndex = i + 1 > end > end > > --End of path > if self.currentEdgeIndex >= #self.edges then > self:reset() > return > end > > if mcontroller.onGround() and world.magnitude(mcontroller.position(), self:currentEdge().source.position) > 4 then > self:reset() > end > end > > function PathFinder:advance() > self.currentEdgeIndex = self.currentEdgeIndex + 1 > end 10c135,136 < function Pather:new(options) --- > PathMover = {} > function PathMover:new(options) 13c139 < newPather.pathOptions = parseArgs(options.pathOptions or {}, { --- > local pathOptions = parseArgs(options.pathOptions or {}, { 16c142 < maxDistance = 80, --- > maxDistance = 200, 26,27c152,153 < maxFScore = 190, < maxNodesToSearch = 50000, --- > maxFScore = 400, > maxNodesToSearch = 70000, 29a156,157 > newPather.finder = PathFinder:new(pathOptions) > 31c159,160 < run = false --- > run = false, > maxCooldown = 5 45c174 < function Pather:move(targetPosition, dt) --- > function PathMover:move(targetPosition, dt) 59,64c188,190 < if self.pathOptions.mustEndOnGround and not validStandingPosition(self.targetPosition, false) then < return false < end < < if mcontroller.onGround() and not self.onGround then < triggerMovementCooldown(0.15) --- > if self.jumpCooldown then > self.jumpCooldown = self.jumpCooldown - dt > if self.jumpCooldown <= 0 then self.jumpCooldown = nil end 68,71d193 < if not canMove(dt) then < return "running" < end < 81,87c203,205 < self:updatePath() < < if self.path == nil then < local findResult = self:findPath() < if findResult ~= true then < return findResult < end --- > local result = self.finder:update(self.targetPosition) > if result ~= true then > return result 90c208 < debugPath(self.path) --- > debugPath(self.finder) 95c213 < function Pather:approachTargetPosition() --- > function PathMover:approachTargetPosition() 105,142c223 < function Pather:findPath() < if not mcontroller.onGround() then < return "running" < end < self.path = entity.findPath(self.targetPosition, self.pathOptions) < if self.path ~= nil then < self.pathTarget = self.targetPosition < return true < elseif self.lastPosition[1] ~= self.position[1] or self.lastPosition[2] ~= self.position[2] then < return "running" < else < return false < end < end < < function Pather:updatePath() < --Find a new path if the target position has changed < if self.pathTarget then < if world.magnitude(self.targetPosition, self.pathTarget) > 0 and mcontroller.onGround() then < self.path = nil < end < end < < if self.path == nil then return false end < self.path = entity.updatePath(self.path) < < --Find a new path if we don't have one < if self.path == nil or self.path.currentEdge == nil then < self.path = nil < end < end < < function Pather:advancePath() < self.path.currentEdgeIndex = self.path.currentEdgeIndex + 1 < self.path.currentEdge = self.path.path[self.path.currentEdgeIndex+1] < end < < function Pather:edgeMove() --- > function PathMover:edgeMove() 144c225 < self.edge = self.path.currentEdge --- > self.edge = self.finder:currentEdge() 157c238 < local nextEdge = self.path.path[self.path.currentEdgeIndex+2] or {} --- > local nextEdge = self.finder:lookAhead(1) or {} 179c260 < function Pather:openDoors() --- > function PathMover:openDoors() 187d267 < self.pathing.path = nil 201c281 < function Pather:timedDrop(time) --- > function PathMover:timedDrop(time) 209c289 < function Pather:keepDropping(dt) --- > function PathMover:keepDropping(dt) 220c300 < function Pather:moveSwim() --- > function PathMover:moveSwim() 229c309,312 < function Pather:moveJump() --- > function PathMover:moveJump() > if self.jumpCooldown then > return "running" > end 234c317 < moveX(self.delta[1], false) --- > moveX(self.delta[1], self.run) 251c334 < self:advancePath() --- > self.finder:advance() 274c357 < function Pather:moveDrop() --- > function PathMover:moveDrop() 285c368 < self:advancePath() --- > self.finder:advance() 289c372 < function Pather:moveArc() --- > function PathMover:moveArc() 290a374 > self.jumpCooldown = 0.5 293,294c377,383 < if passedTarget(self.edge) then < self:advancePath() --- > for i = 0, 10 do > local edge = self.finder:lookAhead(i) > if edge and edge.action == "Arc" and passedTarget(edge) then > self.finder:advance() > else > break > end 298c387 < local nextEdge = self.path.path[self.path.currentEdgeIndex+2] or {} --- > local nextEdge = self.finder:lookAhead(1) or {} 300c389 < self:advancePath() --- > self.finder:advance() 302c391 < self.path = nil --- > self.finder:reset() 311c400,401 < liquidFriction = 0 --- > liquidFriction = 0, > groundFriction = 0 328c418 < self:advancePath() --- > self.finder:advance() 337c427 < function Pather:moveLand() --- > function PathMover:moveLand() 339c429 < self.path = nil --- > self.finder:reset() 341a432,434 > if mcontroller.onGround() then > self.finder:advance() > end 346c439 < function Pather:moveWalk() --- > function PathMover:moveWalk() 350c443 < self.path = nil --- > self.finder:reset() 355c448 < local nextEdge = self.path.path[self.path.currentEdgeIndex+2] or {} --- > local nextEdge = self.finder:lookAhead(1) or {} 359c452 < self:advancePath() --- > self.finder:advance() 368,391d460 < function moveTo() < require("/scripts/oldpathing.lua") --replaces this moveTo function < self.pathing.deltaX = mcontroller.facingDirection() < return "running" < end < < function triggerMovementCooldown(time) < self.movementCooldown = time < end < < function canMove(dt) < if self.movementCooldown then < self.movementCooldown = self.movementCooldown - dt < if self.movementCooldown <= 0 then < self.movementCooldown = nil < return true < else < return false < end < end < < return true < end < 396c465 < (edgeDistance[1] == 0 and edgeDistance[2] * targetDistance[2] < 0) then --- > (edgeDistance[2] ~= 0 and edgeDistance[2] * targetDistance[2] < 0) then 520c589 < function debugPath(path) --- > function debugPath(finder) 525c594 < local edge = path.path[path.currentEdgeIndex + 1 + step] --- > local edge = finder:lookAhead(step) scripts\actions\entities.lua 107a108,109 > local range = BData:getNumber(args.range) > if range == nil then return false end 114c116 < local nearEntities = world.entityQuery(position, args.range, queryArgs) --- > local nearEntities = world.entityQuery(position, range, queryArgs) 396c398 < end \ No newline at end of file --- > end scripts\actions\movement.lua 50a51,54 > function isMoving(args, output) > return mcontroller.walking() or mcontroller.running() > end > 103a108 > -- output pathfinding 111,112c116 < avoidLiquid = true, < failFast = false --- > avoidLiquid = true 116c120 < local pather = Pather:new({run = args.run}) --- > local pather = PathMover:new({run = args.run}) 127a132 > 128a134,135 > BData:set("bool", output.pathfinding, moved == "pathfinding" or moved == false) > scripts\actions\position.lua 86a87,88 > -- output x > -- output y 96c98,101 < BData:setVec2(output.vector, world.distance(target, position)) --- > local distance = world.distance(target, position) > BData:setVec2(output.vector, distance) > BData:setVec2(output.x, distance[1]) > BData:setVec2(output.y, distance[2]) scripts\actions\reaction.lua 1,4c1,3 < function getReactions() < if self.reactions ~= nil then return self.reactions end < -- merge default_reactions.config with scriptConfig.reactions < self.reactions = root.assetJson("/npcs/default_reactions.config").reactions --- > function getReactions(reactTarget) > local defaultReactions = root.assetJson("/npcs/default_reactions.config").reactions > local objectDefaultReactions = world.callScriptedEntity(reactTarget, "npcToy.getDefaultReactions") 6,8c5,15 < if personalReactions ~= nil then < for influence, reactions in pairs(personalReactions) do < self.reactions[influence] = reactions --- > -- merge default_reactions.config with object's npcToy.defaultReactions and npc's scriptConfig.reactions > return mergeReactions(defaultReactions, objectDefaultReactions, personalReactions) > end > > function mergeReactions(...) > local result = {} > for _,reactionDefs in ipairs({...}) do > if reactionDefs then > for influence, reactions in pairs(reactionDefs) do > result[influence] = reactions > end 11c18 < return self.reactions --- > return result 34a42 > -- param target 37a46 > target = "", 39a49 > 42c52,54 < local reactions = getReactions()[influence] or getReactions()["default"] --- > local target = BData:getEntity(args.target) > > local reactions = getReactions(target) 43a56 > reactions = reactions[influence] or reactions["default"] scripts\behavior\composite.lua 87a88,90 > if self.current and self.children[self.current] then > self.children[self.current]:interrupt() > end scripts\behavior\decorator.lua 115c115 < function BTCooldown.new(cooldown, onFail) --- > function BTCooldown.new(args) 118,119c118,120 < cooldown = cooldown, < onFail = onFail, --- > cooldown = args.cooldown, > onFail = args.onFail, > onSuccess = args.onSuccess, 128,129c129,134 < local args = node.parameters or {} < return BTCooldown.new(args.cooldown, args.onFail) --- > local args = parseArgs(node.parameters, { > cooldown = 1, > onFail = false, > onSuccess = true > }) > return BTCooldown.new(args) 138c143 < if result == true or (self.onFail and result == false) then --- > if (self.onSuccess and result == true) or (self.onFail and result == false) then stagehands\coordinator\npccombat.lua 56,57c56 < local entityPosition = world.entityPosition(self.goal) < local maxRange = 25 --- > local targetPosition = world.entityPosition(self.goal) 59,61d57 < local dirRanges = {} < dirRanges[-1] = maxRange < dirRanges[1] = maxRange 64,66c60,64 < for _,ranged in pairs(self.tasks["ranged"].members) do < local toRanged = world.distance(world.entityPosition(ranged), entityPosition) < local dir = util.toDirection(toRanged[1]) --- > if not self.rangedPositions or world.magnitude(self.targetPosition, targetPosition) > 1 then > self.targetPosition = targetPosition > self.rangedPositions = attackPositionsInRange(30, targetPosition) > end > local picked = {} 68,71c66,78 < local attackPosition, newRange = attackPositionInRange(dirRanges[dir], dir, entityPosition, world.entityPosition(ranged)) < if not attackPosition then < dir = -dir < attackPosition, newRange = attackPositionInRange(dirRanges[dir], dir, entityPosition, world.entityPosition(ranged)) or entityPosition --- > for _,ranged in pairs(self.tasks["ranged"].members) do > local npcPosition = world.entityPosition(ranged) > table.sort(self.rangedPositions, function(a,b) > return world.magnitude(a, npcPosition) < world.magnitude(b, npcPosition) > end) > > local inUse = function(position) > for _,used in ipairs(picked) do > if world.magnitude(position, used) < 2 then > return true > end > end > return false 74,76c81,89 < self.memberResources[ranged]:set("movePosition", attackPosition) < < dirRanges[dir] = newRange and newRange - 2 or maxRange --- > local movePosition > for _,position in ipairs(self.rangedPositions) do > if not inUse(position) then > movePosition = position > table.insert(picked, movePosition) > break > end > end > self.memberResources[ranged]:set("movePosition", movePosition) 123,134c136,137 < function attackPositionInRange(range, direction, center, losPosition) < while range >= 0 do < local attackPosition = findAttackPositionInRange(range, center, direction, self.npcBounds, self.npcPoly) < if attackPosition and not world.lineTileCollision(losPosition, attackPosition) then < return attackPosition, range < end < range = range - 1 < end < end < < function findAttackPositionInRange(range, center, direction, bounds, collisionPoly) < if range == 0 then return center end --- > function attackPositionsInRange(range, center) > local positions = {} 136,144c139,163 < local step = (math.pi / 2) / range < for i = 0, range do < local x = range * math.cos(math.asin(i / range)) < local position = {center[1] + direction * x, center[2] + i} < position[2] = math.ceil(position[2]) - (bounds[2] % 1) < world.debugPoint(position, "yellow") < local validPosition = validAttackPosition(position, bounds, collisionPoly) < if validPosition and not world.lineTileCollision(position, center) then < return validPosition --- > while range > 10 do > local step = (math.pi / 2) / range > local maxSteps = math.min(range, 15) > for i = 0, maxSteps do > local yStep = (range / maxSteps) > local y = i * yStep > local x = range * math.cos(math.asin(i/maxSteps)) > > for _,xDir in ipairs({1, -1}) do > for _,yDir in ipairs({1, -1}) do > local position = {center[1] + xDir * x, center[2] + yDir * y} > position[2] = math.ceil(position[2]) - (self.npcBounds[2] % 1) > if not world.material(position, "foreground") and > not world.lineTileCollision(position, vec2.add(center, {0, -0.5})) and > not world.lineTileCollision(position, vec2.add(center, {0, 0.5})) then > local validPosition = validAttackPosition(position, self.npcBounds, self.npcPoly) > if validPosition then > world.debugPoint(validPosition, "green") > table.insert(positions, validPosition) > else > world.debugPoint(position, "yellow") > end > end > end > end 147,153c166 < position[2] = center[2] - i < position[2] = math.ceil(position[2]) - (bounds[2] % 1) < world.debugPoint(position, "yellow") < validPosition = validAttackPosition(position, bounds, collisionPoly) < if validPosition and not world.lineTileCollision(position, center) then < return validPosition < end --- > range = range - 1 155c168,169 < end \ No newline at end of file --- > return positions > end tiles\materials\alienrock.material 7c7 < "shortdescription" : "Alien Rock", --- > "shortdescription" : "Alien Rock Block", 21c21 < "zLevel" : 0 --- > "zLevel" : 1720 tiles\materials\alienstripedblock.material 7c7 < "shortdescription" : "Alien striped Wood", --- > "shortdescription" : "Alien Striped Wood Block", 22c22 < "zLevel" : 0 --- > "zLevel" : 890 tiles\materials\ancientblock.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1250 tiles\materials\ancientbrick.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1260 tiles\materials\apexshipdetails.material 21c21 < "zLevel" : 50 --- > "zLevel" : 1190 tiles\materials\apexshipsupport.material 24c24 < "zLevel" : 100 --- > "zLevel" : 1340 tiles\materials\apexshipwall.material 21c21 < "zLevel" : 0 --- > "zLevel" : 630 tiles\materials\ash.material 23c23 < "zLevel" : 0 --- > "zLevel" : 400 tiles\materials\asphalt.material 21c21 < "zLevel" : 0 --- > "zLevel" : 880 tiles\materials\aztec.material 21c21 < "zLevel" : 1 --- > "zLevel" : 1170 tiles\materials\aztectech.material 21c21 < "zLevel" : 1 --- > "zLevel" : 1160 tiles\materials\bars.material 22c22 < "zLevel" : 0 --- > "zLevel" : 540 tiles\materials\blackglass.material 21c21 < "zLevel" : 0 --- > "zLevel" : 480 tiles\materials\blaststone.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1660 tiles\materials\blueneonsymbolblock.material 21c21 < "zLevel" : 0 --- > "zLevel" : 870 tiles\materials\bonematerial.material 23c23 < "zLevel" : 0 --- > "zLevel" : 1940 tiles\materials\bookpiles.material 25c25 < "zLevel" : 0 --- > "zLevel" : 460 tiles\materials\brick.material 21c21 < "zLevel" : 0 --- > "zLevel" : 860 tiles\materials\cactiblock.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1760 tiles\materials\candyblock.material 19c19 < "zLevel" : 0 --- > "zLevel" : 1540 tiles\materials\castlewalls1.material 21c21 < "zLevel" : 15 --- > "zLevel" : 1230 tiles\materials\chain.material 21c21 < "zLevel" : 0 --- > "zLevel" : 530 tiles\materials\cheapwallpaper.material 22c22 < "zLevel" : 0 --- > "zLevel" : 650 tiles\materials\clay.material 23c23 < "zLevel" : 0 --- > "zLevel" : 1870 tiles\materials\cobblestone.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1640 tiles\materials\cobblestonebrick.material 21c21 < "zLevel" : 0 --- > "zLevel" : 850 tiles\materials\coconutblock.material 22c22 < "zLevel" : 0 --- > "zLevel" : 1750 tiles\materials\crosshatch.material 22c22 < "zLevel" : 0 --- > "zLevel" : 510 tiles\materials\crystalblock.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1560 tiles\materials\darksmoothstone.material 21c21 < "zLevel" : 5 --- > "zLevel" : 840 tiles\materials\darkwood.material 22c22 < "zLevel" : 50 --- > "zLevel" : 830 tiles\materials\deadcore.material 18c18 < "zLevel" : 0 --- > "zLevel" : 2000 tiles\materials\direstone.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1700 tiles\materials\dirt.material 23c23 < "zLevel" : 0 --- > "zLevel" : 1920 tiles\materials\drydirt.material 23c23 < "zLevel" : 0 --- > "zLevel" : 1900 tiles\materials\drysand.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1840 tiles\materials\eyepiles.material 22c22 < "zLevel" : 0 --- > "zLevel" : 450 tiles\materials\fadedblocks.material 21c21 < "zLevel" : 0 --- > "zLevel" : 610 tiles\materials\fence.material 22c22 < "zLevel" : 0 --- > "zLevel" : 520 tiles\materials\frozenwater.material 22c22 < "zLevel" : 0 --- > "zLevel" : 390 tiles\materials\fullwood1.material 22c22 < "zLevel" : 0 --- > "zLevel" : 810 tiles\materials\fullwood2.material 22c22 < "zLevel" : 0 --- > "zLevel" : 800 tiles\materials\girder.material 23c23 < "zLevel" : 99 --- > "zLevel" : 1320 tiles\materials\glass.material 21c21 < "zLevel" : 0 --- > "zLevel" : 470 tiles\materials\gravel.material 23c23 < "zLevel" : 0 --- > "zLevel" : 440 tiles\materials\hazard.material 21c21 < "zLevel" : 0 --- > "zLevel" : 700 tiles\materials\heavyironbars.material 22c22 < "zLevel" : 0 --- > "zLevel" : 550 tiles\materials\heavypipe.material 22c22 < "zLevel" : 10 --- > "zLevel" : 1380 tiles\materials\homewalls1.material 21c21 < "zLevel" : 0 --- > "zLevel" : 600 tiles\materials\ice.material 22c22 < "zLevel" : 0 --- > "zLevel" : 1880 tiles\materials\iceblock.material 22c22 < "zLevel" : 0 --- > "zLevel" : 1150 tiles\materials\junktech.material 21c21 < "zLevel" : 0 --- > "zLevel" : 570 tiles\materials\limestone.material 23c23 < "zLevel" : 0 --- > "zLevel" : 1590 tiles\materials\lunarbaseblock.material 19c19 < "zLevel" : 0 --- > "zLevel" : 1180 tiles\materials\magmarock.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1680 tiles\materials\matterblock.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1550 tiles\materials\meteoriterock.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1910 tiles\materials\moondust.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1770 tiles\materials\moonrock.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1580 tiles\materials\moonstone.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1890 tiles\materials\mud.material 23c23 < "zLevel" : 0 --- > "zLevel" : 1820 tiles\materials\obsidian.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1500 tiles\materials\ornateroofing.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1460 tiles\materials\ornatetiles.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1240 tiles\materials\ornatewall.material 21c21 < "zLevel" : 0 --- > "zLevel" : 680 tiles\materials\ornatewood.material 22c22 < "zLevel" : 0 --- > "zLevel" : 820 tiles\materials\outpostsupport.material 21c21 < "zLevel" : 100 --- > "zLevel" : 1300 tiles\materials\outpostwall1.material 21c21 < "zLevel" : 0 --- > "zLevel" : 690 tiles\materials\outpostwall2.material 21c21 < "zLevel" : 99 --- > "zLevel" : 790 tiles\materials\petalblock.material 6,11c6,9 < "description" : "-todo-", < "shortdescription" : "Petal Block", < "glitchDescription" : "-todo-", < "floranDescription" : "Block.", < "footstepSound" : "/sfx/blocks/footstep_stone.wav", < "health" : 10, --- > "description" : "A block made of vibrantly flowering plant matter.", > "shortdescription" : "Floral Plant Matter", > "footstepSound" : "/sfx/blocks/footstep_tallgrass.wav", > "health" : 2, 12a11 > "damageTable" : "/tiles/flammableDamage.config", 21c20 < "zLevel" : 0 --- > "zLevel" : 1980 tiles\materials\pillarblock.material 6d5 < "description" : "A pillar style wall.", 7a7 > "description" : "A pillar style wall.", 10,11c10,12 < "footstepSound" : "/sfx/blocks/footstep_lightwood.wav", < "health" : 8, --- > "footstepSound" : "/sfx/blocks/footstep_stone3.wav", > "drawBackground" : true, > "health" : 12, 14c15 < "renderTemplate" : "/tiles/classicmaterialtemplate.config", --- > "renderTemplate" : "/tiles/columntemplate.config", 21c22 < "zLevel" : 0 --- > "zLevel" : 770 tiles\materials\plantblock.material 22c22 < "zLevel" : 0 --- > "zLevel" : 780 tiles\materials\plantmatter.material 22c22 < "zLevel" : 10500 --- > "zLevel" : 1960 tiles\materials\pressurizedgirder.material 23c23 < "zLevel" : 100 --- > "zLevel" : 1280 tiles\materials\pressurizedsteel.material 21c21 < "zLevel" : 0 --- > "zLevel" : 620 tiles\materials\purplecrystal.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1570 tiles\materials\rainbowwoodblock.material 22c22 < "zLevel" : 0 --- > "zLevel" : 760 tiles\materials\reeds.material 22c22 < "zLevel" : 50 --- > "zLevel" : 1480 tiles\materials\rock01.material 23c23 < "zLevel" : 0 --- > "zLevel" : 1600 tiles\materials\rock02.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1600 tiles\materials\rock03.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1600 tiles\materials\rock04.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1600 tiles\materials\rock12.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1600 tiles\materials\rock14.material 20c20 < "zLevel" : 0 --- > "zLevel" : 1600 tiles\materials\rock15.material 20c20 < "zLevel" : 0 --- > "zLevel" : 1600 tiles\materials\rock17.material 20c20 < "zLevel" : 0 --- > "zLevel" : 1600 tiles\materials\rock19.material 20c20 < "zLevel" : 0 --- > "zLevel" : 1600 tiles\materials\rock20.material 20c20 < "zLevel" : 0 --- > "zLevel" : 1600 tiles\materials\rockbrick.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1620 tiles\materials\rooftiles.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1440 tiles\materials\rustyblock.material 21c21 < "zLevel" : 0 --- > "zLevel" : 560 tiles\materials\sand.material 23c23 < "zLevel" : 0 --- > "zLevel" : 430 tiles\materials\sand2.material 22c22 < "zLevel" : 0 --- > "zLevel" : 1830 tiles\materials\sandstone01.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1850 tiles\materials\sewage.material 23c23 < "zLevel" : 0 --- > "zLevel" : 1800 tiles\materials\sewerpipe.material 22c22 < "zLevel" : 10 --- > "zLevel" : 1360 tiles\materials\shojiscreenpanel.material 23c23 < "zLevel" : 0 --- > "zLevel" : 670 tiles\materials\shroomblock.material 22c22 < "zLevel" : 0 --- > "zLevel" : 1400 tiles\materials\slime.material 22c22 < "zLevel" : 0 --- > "zLevel" : 1790 tiles\materials\slush.material 22c22 < "zLevel" : 0 --- > "zLevel" : 1780 tiles\materials\snow.material 23c23 < "zLevel" : 0 --- > "zLevel" : 420 tiles\materials\spidersilkblock.material 24c24 < "zLevel" : 0 --- > "zLevel" : 380 tiles\materials\stonerubble.material 23c23 < "zLevel" : 25 --- > "zLevel" : 1935 tiles\materials\stonetiles.material 21c21 < "zLevel" : 0 --- > "zLevel" : 750 tiles\materials\supermatter.material 19c19 < "zLevel" : 99, --- > "zLevel" : 1930, tiles\materials\tar.material 21c21 < "zLevel" : 0 --- > "zLevel" : 1810 tiles\materials\techhull1.material 21c21 < "zLevel" : 0 --- > "zLevel" : 580 tiles\materials\temple1.material 21c21 < "zLevel" : 2 --- > "zLevel" : 1220 tiles\materials\temple3.material 21c21 < "zLevel" : 0 --- > "zLevel" : 740 tiles\materials\temple4.material 21c21 < "zLevel" : 2 --- > "zLevel" : 1210 tiles\materials\thatch.material 22c22 < "zLevel" : 50 --- > "zLevel" : 1520 tiles\materials\tombbrick.material 21c21 < "zLevel" : 1 --- > "zLevel" : 1200 tiles\materials\tombbrick2.material 21c21 < "zLevel" : 0 --- > "zLevel" : 660 tiles\materials\tombbrick4.material 21c21 < "zLevel" : 0 --- > "zLevel" : 730 tiles\materials\treasurehoard.material 23c23 < "zLevel" : 0 --- > "zLevel" : 410 tiles\materials\vine.material 23c23 < "zLevel" : 0 --- > "zLevel" : 1740 tiles\materials\wallpaper.material 22c22 < "zLevel" : 0 --- > "zLevel" : 640 tiles\materials\wetdirt.material 23c23 < "zLevel" : 0 --- > "zLevel" : 1860 tiles\materials\wicker.material 22c22 < "zLevel" : 0 --- > "zLevel" : 1500 tiles\materials\woodbridge.material 22c22 < "zLevel" : 0 --- > "zLevel" : 720 tiles\materials\woodenwindow1.material 23c23 < "zLevel" : 0 --- > "zLevel" : 500 tiles\materials\woodenwindow2.material 23c23 < "zLevel" : 0 --- > "zLevel" : 490 tiles\materials\woodpanelling.material 22c22 < "zLevel" : 0 --- > "zLevel" : 710