FILES ----- help.config interface.config player.config behaviors\npc\combat.behavior behaviors\npc\protectoratejanitor.behavior behaviors\npc\combat\melee.behavior behaviors\npc\combat\meleeleap.behavior behaviors\npc\combat\ranged.behavior behaviors\npc\unique\castlearcher.behavior behaviors\sequences\floranmission\nurucombat.behavior biomes\surface\forest.biome biomes\surface\jungle.biome biomes\surface_detached\giantflowers.biome biomes\surface_detached\spring.biome biomes\surface_detached\swamp.biome humanoid\penguin\femalebody.frames humanoid\penguin\malebody.frames items\active\grapplinghooks\grapplinghook.lua items\active\grapplinghooks\climbingrope\climbingrope.activeitem items\active\grapplinghooks\climbingrope\climbingrope.animation items\active\grapplinghooks\grapplinghook\grapplinghook.activeitem items\active\grapplinghooks\grapplinghook\grapplinghook.animation items\generic\food\tier3\2kbpotage.consumable items\generic\food\tier3\stuffedautomato.consumable items\generic\food\tier5\16gbpasty.consumable items\generic\food\tier5\16gbpasty.png items\generic\food\tier5\8gbpizzap.consumable items\generic\food\tier5\8gbpizzap.png items\generic\food\tier5\piodia.consumable items\generic\food\tier5\piodia.png items\generic\food\tier5\smash.consumable [NEW] items\generic\meat\emptystomach.consumable [NEW] items\generic\meat\emptystomach.png items\generic\meat\rawbacon.consumable items\generic\meat\rawfish.consumable items\generic\meat\rawham.consumable [NEW] items\generic\meat\rawpoultry.consumable [NEW] items\generic\meat\rawribmeat.consumable [NEW] items\generic\meat\rawtentacle.consumable [NEW] items\generic\produce\cocoa.item [NEW] items\generic\produce\cocoa.png items\generic\produce\wartweed.consumable items\materials\baseboard.matitem items\materials\ornateflooring.matitem items\materials\ornatewood.matitem items\materials\ruinsplatform.matitem monsters\farming\hen\body.png monsters\farming\hen\evolution\chickevolution.frames monsters\farming\hen\evolution\chickevolution.png monsters\farming\hen\evolution\default.frames [NEW] monsters\farming\henchick\body.monsterpart [NEW] monsters\farming\henchick\body.png [NEW] monsters\farming\henchick\default.frames [NEW] monsters\farming\henchick\henchick.animation [NEW] monsters\farming\henchick\henchick.monstertype npcs\bmain.lua npcs\hostile.npctype [NEW] objects\farmables\cocoa\cocoaseed.frames [NEW] objects\farmables\cocoa\cocoaseed.object [NEW] objects\farmables\cocoa\cocoaseed.png [NEW] objects\farmables\cocoa\cocoaseedicon.png [NEW] objects\farmables\cocoa\wildcocoaseed.object objects\farmables\henegg\henegg.object objects\farmables\henegg\henegg.png objects\protectorate\09\09back.png projectiles\physics.config [NEW] projectiles\activeitems\grapplehook\climbingropehook.projectile projectiles\activeitems\grapplehook\grapplehook.projectile quests\outpost\outpostclue.questtemplate [NEW] recipes\cookingtable1\desserts\chocolate.recipe [NEW] recipes\furniture1\materials\baseboard.recipe [NEW] recipes\furniture1\materials\darksmoothmaterial.recipe [NEW] recipes\furniture1\materials\fullwood2.recipe [NEW] recipes\furniture1\materials\ornateflooring.recipe [NEW] recipes\furniture1\materials\ornatewood.recipe [NEW] recipes\furniture1\materials\rockbrickmaterial.recipe [NEW] recipes\furniture1\materials\ruinsplatform.recipe [NEW] recipes\furniture1\materials\woodbridge.recipe [NEW] recipes\furniture1\materials\woodpanelling.recipe scripts\actions\npc.lua stats\effects\foodpoison\foodpoison.animation stats\effects\foodpoison\foodpoison.lua treasure\cropharvest.treasurepools DIFFS ----- help.config 2,5c2,7 < "commandProcessor" : { < "help" : "Available commands are: %s. Use /help commandName to get detailed documentation.", < "reload" : "Usage /reload. Reloads your local, client side assets. Will cause lag as they are reparsed.", < "serverreload" : "Usage /serverreload. Reloads the remote, server side assets. Will cause lag as they are reparsed.", --- > "basicHelpText" : "Basic commands are: %s", > "adminHelpText" : "Admin commands are: %s", > "debugHelpText" : "Debug commands are: %s", > > "basicCommands" : { > "help" : "Use /help commandName to get detailed documentation.", 7,17c9 < "warp" : "Usage /warp warpAction. Valid warp action formats include: OwnShip, OrbitedWorld, CelestialWorld:celestialcoordinates, InstanceWorld:worldid::, ClientShipWorld:playeruuid, Player:playeruuid, Nowhere (current world). Most warp actions can have =xcoordinate.ycoordinate added to specify a position within that world.", < "timewarp" : "Usage /timewarp timeInSeconds. Warp universe time ahead by timeInSeconds.", < "spawnitem" : "Usage /spawnitem itemName [count] [variantParameters]. Spawn the specified item at the mouse cursor. If the item does not exist it will spawn a perfectly generic item. Count expects an integral number. Variant parameters are parameters passed to the item's constructor. They are specified as JSON. Best practice is to surround JSON in single quotes.", < "spawntreasure" : "Usage /spawntreasure poolName [level]. Generates contents of a specified treasurepool at the mouse cursor.", < "spawnmonster" : "Usage /spawnmonster type [level] [variantParameters]. Spawn the specified monster type at the mouse cursor. If level is not specified it takes level 0. Variant parameters are parameters passed to the monster's constructor. They are specified as JSON. Best practice is to surround JSON in single quotes.", < "spawnnpc" : "Usage /spawnnpc species [type] [level]. Spawn an NPC of that specified species. If type is specified it spawns on the specific NPC type (for instance, guard). If level is not specified it takes level 0.", < "spawnstagehand" : "Usage /spawnstagehand type [parameters]. Spawn a Stagehand of the specified type. If parameters are specified (as a JSON object) they will be merged on top of the default configuration.", < "clearstagehand" : "Usage /clearstagehand. Despawns any stagehands with positions close to the current cursor position.", < "spawnliquid" : "Usage /spawnliquid liquidName amount. Spawn a quantity of liquid at the mouse cursor.", < "pvp" : "Usage /pvp. Toggle your Player VS Player mode if possible.", < "serverwhoami" : "Usage /serverwhoami. Display your server username and admin status.", --- > "reload" : "Usage /reload. Reloads your local, client side assets. Will cause lag as they are reparsed.", 18a11 > "serverwhoami" : "Usage /serverwhoami. Display your server username and admin status.", 19a13,35 > "pvp" : "Usage /pvp. Enable or disable your Player vs. Player mode.", > "played" : "Usage /played. Displays the total play time of the current character.", > "deaths" : "Usage /deaths. Displays the total death count of the current character.", > "suicide" : "Usage /suicide. Kills the current character, incurring all normal death penalties (including permadeath!). This can be used as a last resort if you are irreversibly stuck.", > "naked" : "Usage /naked. Remove all gear. Useful in macros to give a character new gear replacing the existing gear, or you know, for fun." > }, > > "adminCommands" : { > "warp" : "Usage /warp warpAction. Warps player to a world and/or position. Valid warp action formats include: OwnShip, OrbitedWorld, CelestialWorld:celestialcoordinates, InstanceWorld:worldid::, ClientShipWorld:playeruuid, Player:playeruuid, Nowhere (current world). Most warp actions can have =xcoordinate.ycoordinate added to specify a position within that world.", > "timewarp" : "Usage /timewarp time. Warp universe time ahead by the specified number of seconds.", > "settileprotection" : "Usage /settileprotection dungeonId isProtected. Set protection for blocks with the specified dungeonId to be true (unbreakable) or false (breakable).", > "setspawnpoint" : "Usage /setspawnpoint. Sets the default spawn point on the current world to your character's position.", > "spawnitem" : "Usage /spawnitem itemName [count] [parameters]. Spawn the specified item at the mouse cursor. If the item does not exist it will spawn a perfectly generic item. Count should be an integer and defaults to 1. Parameters should be specified as a JSON object enclosed by single quotes.", > "spawntreasure" : "Usage /spawntreasure poolName [level]. Spawns all items in a single random generation of the specified treasure pool at the mouse cursor. Level defaults to 1.", > "spawnmonster" : "Usage /spawnmonster type [level] [parameters]. Spawn a monster of the specified type at the mouse cursor. Level defaults to 1. Parameters should be specified as a JSON object enclosed by single quotes.", > "spawnnpc" : "Usage /spawnnpc species type [level] [seed] [overrides]. Spawn an NPC of the specified species and type at the mouse cursor. Level defaults to 1. Overrides should be specified as a JSON object enclosed by single quotes.", > "spawnvehicle" : "Usage /spawnvehicle type [parameters]. Spawn a vehicle of the specified type at the mouse cursor. Parameters should be specified as a JSON object enclosed by single quotes.", > "spawnstagehand" : "Usage /spawnstagehand type [parameters]. Spawn a Stagehand of the specified type. Parameters should be specified as a JSON object enclosed by single quotes.", > "clearstagehand" : "Usage /clearstagehand. Despawns any stagehands with positions close to the current cursor position.", > "spawnliquid" : "Usage /spawnliquid liquidName [quantity]. Spawn a quantity of the specified liquid at the mouse cursor. Quantity defaults to 1.", > "kick" : "Usage /kick playerSpecifier [reason]. Kick the specified player and send the reason to the player. If no reason is specified then the player's server nickname is used as the reason.", > "ban" : "Usage /ban playerSpecifier [reason] [kind] [timeInSeconds]. Kick and ban the specified player and send the reason to the player. If no reason is specified then the player's server nickname is used as the reason. Kind is specified as \"uuid\" or \"ip\" or \"both\" and defaults to \"both\". timeInSeconds defaults to forever. Bans that have a specified duration are not persistent. If you shut down the server or reload configuration, all of your temporarily banned users will be unbanned immediately.", > "list" : "Usage /list. List all clients connected to the server. Format is $clientId : serverNickname : $$playerUuid. If the serverNickname contains unprintable characters the unicode escape sequence for those characters will be displayed instead.", 21,22c37,45 < "itemid" : "Usage /itemid bagSpecifier slotSpecifier. Dumps item information to the command line. bagSpecifier is a number between 1 and 6 or one of (case insensitive) \"bag\", \"tilebag\", \"bar\", \"equipment\", \"wieldable\", \"swap\". slotSpecifier is dependent on the bag type. If type is bag, tilebag, 1 or 2 then slotSpecifier is a number between 0 and 39 inclusive. If type is bar or 3 then slotSpecifier is a number between 0 and 9 inclusive. If type is equipment or 4 then slotSpecifier is a number between 0 and 12 inclusive or one of (case insensitive) \"head\", \"chest\", \"legs\", \"back\", \"headCosmetic\", \"chestCosmetic\", \"legsCosmetic\", \"backCosmetic\", \"tech1\", \"tech2\", \"tech3\", \"tech4\", \"trash\". If type is wieldable then slotSpecifier is either 0 or 1 or (case insensitive) \"lefthand\" or \"righthand\". If type is swap then only 0 is valid.", < "gravity" : "Usage /gravity. Display the gravity at the player's position.", --- > "serverreload" : "Usage /serverreload. Reloads the remote, server side assets. Will cause lag as they are reparsed.", > "enablespawning" : "Usage /enablespawning. Enable automatic monster spawning on the current world.", > "disablespawning" : "Usage /disablespawning. Disable automatic monster spawning on the current world.", > "placedungeon" : "Usage /placedungeon . Place the given dungeon into the world anchored at the cursor position. Ignores anchoring rules.", > "setuniverseflag" : "Usage /setuniverseflag flagName. Sets the current universe flag, triggering any associated world changes.", > "resetuniverseflags" : "Usage /resetuniverseflags. Clears all universe flags, but doesn't directly revert any effects triggered by those flags." > }, > > "debugCommands" : { 24c47 < "togglelogmap" : "Usage /togglelogmap. Toggle the display of debugging text information to the screen if debug mode is enabled.", --- > "gravity" : "Usage /gravity. Display the gravity at the player's position.", 29,30c52 < "setspawnpoint" : "Usage /setspawnpoint. Sets the default spawn point on the current world to your character's position.", < "settileprotection" : "Usage /settileprotection dungeonId isProtected. Set protection for blocks with the specified dungeonId to be true (unbreakable) or false (breakable).", --- > "fixedcamera" : "Usage /fixedcamera. Toggle locking the camera's position; camera will not scroll. Sectors may not load or behave correctly when the camera is distant from the player's position.", 33,42c55,58 < "coordinate" : "Usage /coordinate. Displays the current coordinate of the world you are on or orbiting.", < "kick" : "Usage /kick playerSpecifier [reason]. Kick the specified player and send the reason to the player. If no reason is specified then the player's server nickname is used as the reason (IRC Style).", < "ban" : "Usage /ban playerSpecifier [reason] [kind] [timeInSeconds]. Kick and ban the specified player and send the reason to the player. If no reason is specified then the player's server nickname is used as the reason (IRC Style). Kind is specified as \"uuid\" or \"ip\" or \"both\". Other values are invalid. If kind is not specified or incorrectly specified then \"both\" is used. timeInSeconds defaults to forever. Bans that have a specified duration are not persistent. If you shut down the server or reload configuration, all of your temporarily banned users will be unbanned immediately.", < "list" : "Usage /list. List all clients logged into the server. Format is $clientId : serverNickname : $$playerUuid. If the serverNickname contains unprintable characters the unicode escape sequence for those characters will be displayed instead.", < "snapshot" : "Usage /snapshot xsize ysize. Render the view of the world centered on the player with x and y size, and store to the given sbscene file.", < "eval" : "Usage /eval . Evaluates given lua in script processor context", < "entityeval" : "Usage /entityeval . Evaluates given script in the context of the closest scripted entity to the cursor", < "fixedcamera" : "Usage /fixedcamera. Toggle locking the camera's position; camera will not scroll. (May cause sectors not to spawn and monsters to spawn right next to or on top of you if offscreen. Useful for recorded demonstrations.)", < "radiomessage" : "Usage /radiomessage messageId. Triggers the player to receive the radio message with the specified id", < "clearradiomessages" : "Usage /clearradiomessages. Resets all history of received radio messages, allowing the player to see these messages again.", --- > "eval" : "Usage /eval . Evaluates given lua in script processor context. Only usable locally.", > "entityeval" : "Usage /entityeval . Evaluates given lua in the context of the closest scripted entity to the cursor. Only usable locally.", > "radiomessage" : "Usage /radiomessage messageId. Triggers the player to receive the radio message with the specified id.", > "clearradiomessages" : "Usage /clearradiomessages. Resets all history of received unique radio messages, allowing the player to see these messages again.", 45,50c61,73 < "statistics" : "Usage /statistics. Displays total play time and death count for this character.", < "suicide" : "Usage /suicide. Kills the current character, incurring all normal death penalties (including permadeath!). This can be used as a last resort if you are irreversibly stuck.", < "naked" : "Usage /naked. Remove all gear. Useful in macros to give a character new gear replacing the existing gear, or you know, for fun.", < "enablespawning" : "Usage /enablespawning. Enable automatic monster spawning", < "disablespawning" : "Usage /disablespawning. Disable automatic monster spawning", < "placedungeon" : "Usage /placedungeon . Place the given dungeon into the world anchored at the cursor position. Ignores anchoring rules." --- > "startquest" : "Usage /startquest questArcDescriptor. Give the player a quest with the specified quest arc descriptor, which should be a JSON string or object enclosed by single quotes. To start a quest by quest template ID, enclose the template ID in single and double quotes, e.g. /startquest '\"protectorate\"'", > "completequest" : "Usage /completequest questId. Force completion of a currently active quest with the given quest ID (usually the quest template ID).", > "failquest" : "Usage /failquest questId. Force failure of a currently active quest with the given quest ID (usually the quest template ID).", > "previewnewquest" : "Usage /previewnewquest questTemplateId positionInSequence questGiverSpecies. Displays the New Quest interface for the given quest without altering the player's quest state. Valid positionInSequence options are: first, last, next, solo. May break if the quest doesn't have example data configured.", > "previewquestcomplete" : "Usage /previewquestcomplete questTemplateId positionInSequence questGiverSpecies. Displays the Quest Complete interface for the given quest without altering the player's quest state. Valid positionInSequence options are: first, last, next, solo. May break if the quest doesn't have example data configured.", > "previewquestfailed" : "Usage /previewquestfailed questTemplateId positionInSequence questGiverSpecies. Displays the Quest Failed interface for the given quest without altering the player's quest state. Valid positionInSequence options are: first, last, next, solo. May break if the quest doesn't have example data configured.", > "clearscannedobjects" : "Usage /clearscannedobjects. Resets the player's record of previously scanned objects. Will not reset quest progress for object scanning quests.", > "statistic" : "Usage /statistic statName. Displays the value of the specified achievement statistic.", > "resetachievements" : "Usage /resetachievements. Resets all of the player's achievement statistics.", > "enabletech" : "Usage /enabletech techName. Unlocks the specified tech for use.", > "maketechavailable" : "Usage /maketechavailable techName. Makes the specified tech visible and available for purchase.", > "giveessentialitem" : "Usage /giveessentialitem item slotName. Sets the specified essential slot to the specified item, overwriting the existing contents. Valid slot names are: beamaxe, wiretool, painttool, inspectiontool.", > "upgradeship" : "Usage /upgradeship shipUpgrades. Applies the specified ship upgrades to the current player's ship. shipUpgrades should be specified as a JSON object enclosed by single quotes, e.g. '{\"shipLevel\" : 5}'" interface.config 486,487c486,487 < "fontSize" : 4, < "statusFontSize" : 4, --- > "fontSize" : 8, > "statusFontSize" : 8, player.config 93a94 > { "item" : "rockbrickmaterial" }, 94a96 > { "item" : "darksmoothstonematerial" }, 113a116,118 > { "item" : "fullwood2" }, > { "item" : "woodpanelling" }, > { "item" : "woodbridge" }, behaviors\npc\combat.behavior 5,9c5 < "/scripts/actions/entity.lua", < "/scripts/actions/world.lua", < "/scripts/actions/query.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/npc.lua", --- > "/scripts/actions/npc.lua", 10a7 > "/scripts/actions/entity.lua", 172c169 < "title": "cleanup", --- > "title": "parallel", 174,175c171,175 < "name": "cleanup", < "parameters": {}, --- > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, 178,210c178,187 < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, < "children": [ < { < "title": "hasShield", < "type": "action", < "name": "hasShield", < "parameters": {} < }, < { < "title": "beginAltFire", < "type": "action", < "name": "beginAltFire", < "parameters": {} < }, < { < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} < } < ] < } --- > "title": "hasShield", > "type": "action", > "name": "hasShield", > "parameters": {} > }, > { > "title": "altFire", > "type": "action", > "name": "altFire", > "parameters": {} 213c190 < "title": "endAltFire", --- > "title": "runner", 215c192 < "name": "endAltFire", --- > "name": "runner", behaviors\npc\protectoratejanitor.behavior 6d5 < "/scripts/actions/world.lua", 8,9c7 < "/scripts/actions/entity.lua", < "/scripts/actions/dialog.lua", --- > "/scripts/actions/dialog.lua", 11,15c9 < "/scripts/actions/entity.lua", < "/scripts/actions/world.lua", < "/scripts/actions/query.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/npc.lua" --- > "/scripts/actions/npc.lua" 170c164 < "title": "cleanup", --- > "title": "parallel", 172,173c166,170 < "name": "cleanup", < "parameters": {}, --- > "name": "parallel", > "parameters": { > "fail": -1, > "success": -1 > }, 176c173 < "title": "beginPrimaryFire", --- > "title": "primaryFire", 178c175 < "name": "beginPrimaryFire", --- > "name": "primaryFire", 228,233d224 < }, < { < "title": "endPrimaryFire", < "type": "action", < "name": "endPrimaryFire", < "parameters": {} behaviors\npc\combat\melee.behavior 6,10c6 < "/scripts/actions/entity.lua", < "/scripts/actions/world.lua", < "/scripts/actions/query.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/npc.lua", --- > "/scripts/actions/npc.lua", 13,15c9 < "/scripts/actions/query.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/movement.lua", --- > "/scripts/actions/movement.lua", 113,118d106 < "title": "endPrimaryFire", < "type": "action", < "name": "endPrimaryFire", < "parameters": {} < }, < { 283,308c271,282 < "title": "cleanup", < "type": "composite", < "name": "cleanup", < "parameters": {}, < "children": [ < { < "title": "beginPrimaryFire", < "type": "action", < "name": "beginPrimaryFire", < "parameters": {} < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": "meleeWindup" < } < }, < { < "title": "endPrimaryFire", < "type": "action", < "name": "endPrimaryFire", < "parameters": {} < } < ] --- > "title": "primaryFire", > "type": "action", > "name": "primaryFire", > "parameters": {} > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": "meleeWindup" > } behaviors\npc\combat\meleeleap.behavior 2a3 > "description": "", 5,7c6 < "/scripts/actions/query.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/movement.lua", --- > "/scripts/actions/movement.lua", 9,13c8 < "/scripts/actions/entity.lua", < "/scripts/actions/world.lua", < "/scripts/actions/query.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/npc.lua", --- > "/scripts/actions/npc.lua", 77,109c72,82 < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": -1, < "success": 1 < }, < "children": [ < { < "title": "cleanup", < "type": "composite", < "name": "cleanup", < "parameters": {}, < "children": [ < { < "title": "beginPrimaryFire", < "type": "action", < "name": "beginPrimaryFire", < "parameters": {} < }, < { < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} < }, < { < "title": "endPrimaryFire", < "type": "action", < "name": "endPrimaryFire", < "parameters": {} < } < ] --- > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": -1, > "success": -1 111,117c84,101 < { < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "title": "parallel", --- > "children": [ > { > "title": "setAimPosition", > "type": "action", > "name": "setAimPosition", > "parameters": { > "offset": "aimOffset", > "position": "self" > } > }, > { > "title": "primaryFire", > "type": "action", > "name": "primaryFire", > "parameters": {} > }, > { > "title": "sequence", 119c103 < "name": "parallel", --- > "name": "sequence", 121,122c105,108 < "fail": -1, < "success": -1 --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 126c112 < "title": "setAimPosition", --- > "title": "setFlag", 128c114 < "name": "setAimPosition", --- > "name": "setFlag", 130,131c116 < "offset": "aimOffset", < "position": "self" --- > "name": "run" 135c120,136 < "title": "sequence", --- > "title": "projectileAimVector", > "type": "action", > "name": "projectileAimVector", > "parameters": { > "collisionCheck": true, > "fromPosition": "self", > "gravityMultiplier": 1.5, > "speed": 40, > "toPosition": "meleePosition", > "useHighArc": false > }, > "output": { > "aimVector": "jumpVector" > } > }, > { > "title": "parallel", 137c138 < "name": "sequence", --- > "name": "parallel", 139,142c140,141 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" --- > "fail": -1, > "success": -1 146,198c145,159 < "title": "setFlag", < "type": "action", < "name": "setFlag", < "parameters": { < "name": "run" < } < }, < { < "title": "projectileAimVector", < "type": "action", < "name": "projectileAimVector", < "parameters": { < "collisionCheck": true, < "fromPosition": "self", < "gravityMultiplier": 1.5, < "speed": 40, < "toPosition": "meleePosition", < "useHighArc": false < }, < "output": { < "aimVector": "jumpVector" < } < }, < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": -1, < "success": -1 < }, < "children": [ < { < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "title": "projectileAimVector", < "type": "action", < "name": "projectileAimVector", < "parameters": { < "collisionCheck": true, < "fromPosition": "self", < "gravityMultiplier": 1.5, < "speed": 40, < "toPosition": "meleePosition", < "useHighArc": false < }, < "output": { < "aimVector": "jumpVector" < } < } --- > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "projectileAimVector", > "type": "action", > "name": "projectileAimVector", > "parameters": { > "collisionCheck": true, > "fromPosition": "self", > "gravityMultiplier": 1.5, > "speed": 40, > "toPosition": "meleePosition", > "useHighArc": false 200,206c161,162 < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": "" < } --- > "output": { > "aimVector": "jumpVector" 208,233d163 < ] < }, < { < "title": "onGround", < "type": "action", < "name": "onGround", < "parameters": {} < }, < { < "title": "vecMultiply", < "type": "action", < "name": "vecMultiply", < "parameters": { < "first": "jumpVector", < "second": 40 < }, < "output": { < "vector": "jumpVelocity" < } < }, < { < "title": "setVelocity", < "type": "action", < "name": "setVelocity", < "parameters": { < "velocity": "jumpVelocity" 241c171 < "time": 0.1 --- > "time": "" 244a175,208 > }, > { > "title": "onGround", > "type": "action", > "name": "onGround", > "parameters": {} > }, > { > "title": "vecMultiply", > "type": "action", > "name": "vecMultiply", > "parameters": { > "first": "jumpVector", > "second": 40 > }, > "output": { > "vector": "jumpVelocity" > } > }, > { > "title": "setVelocity", > "type": "action", > "name": "setVelocity", > "parameters": { > "velocity": "jumpVelocity" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 0.1 > } 248,249c212,213 < } < ] --- > ] > } behaviors\npc\combat\ranged.behavior 5,11c5 < "/scripts/actions/query.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/world.lua", < "/scripts/actions/query.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/npc.lua", --- > "/scripts/actions/npc.lua", 13a8 > "/scripts/actions/entity.lua", 202c197 < "success": 1 --- > "success": -1 206,229c201,204 < "title": "cleanup", < "type": "composite", < "name": "cleanup", < "parameters": {}, < "children": [ < { < "title": "beginPrimaryFire", < "type": "action", < "name": "beginPrimaryFire", < "parameters": {} < }, < { < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} < }, < { < "title": "endPrimaryFire", < "type": "action", < "name": "endPrimaryFire", < "parameters": {} < } < ] --- > "title": "primaryFire", > "type": "action", > "name": "primaryFire", > "parameters": {} 481c456 < "success": 1 --- > "success": -1 485,508c460,463 < "title": "cleanup", < "type": "composite", < "name": "cleanup", < "parameters": {}, < "children": [ < { < "title": "beginPrimaryFire", < "type": "action", < "name": "beginPrimaryFire", < "parameters": {} < }, < { < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} < }, < { < "title": "endPrimaryFire", < "type": "action", < "name": "endPrimaryFire", < "parameters": {} < } < ] --- > "title": "primaryFire", > "type": "action", > "name": "primaryFire", > "parameters": {} behaviors\npc\unique\castlearcher.behavior 5,9c5 < "/scripts/actions/entity.lua", < "/scripts/actions/world.lua", < "/scripts/actions/query.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/npc.lua", --- > "/scripts/actions/npc.lua", 182c178 < "title": "sequence", --- > "title": "parallel", 184c180 < "name": "sequence", --- > "name": "parallel", 186,189c182,183 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" --- > "fail": 1, > "success": -1 193c187 < "title": "beginPrimaryFire", --- > "title": "primaryFire", 195c189 < "name": "beginPrimaryFire", --- > "name": "primaryFire", 205,210d198 < }, < { < "title": "endPrimaryFire", < "type": "action", < "name": "endPrimaryFire", < "parameters": {} behaviors\sequences\floranmission\nurucombat.behavior 6,12c6 < "/scripts/actions/query.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/world.lua", < "/scripts/actions/query.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/npc.lua", --- > "/scripts/actions/npc.lua", 17,19c11,13 < "title": "cleanup", < "type": "composite", < "name": "cleanup", --- > "title": "succeeder", > "type": "decorator", > "name": "succeeder", 21,30c15,27 < "children": [ < { < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "title": "parallel", < "type": "composite", < "name": "parallel", --- > "child": { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, > "children": [ > { > "title": "entityExists", > "type": "action", > "name": "entityExists", 32,34c29,36 < "fail": 1, < "success": -1 < }, --- > "entity": "boss" > } > }, > { > "title": "dynamic", > "type": "composite", > "name": "dynamic", > "parameters": {}, 37,45c39 < "title": "entityExists", < "type": "action", < "name": "entityExists", < "parameters": { < "entity": "boss" < } < }, < { < "title": "dynamic", --- > "title": "parallel", 47,48c41,45 < "name": "dynamic", < "parameters": {}, --- > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, 54c51,56 < "parameters": {}, --- > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, 87,92d88 < }, < { < "title": "beginPrimaryFire", < "type": "action", < "name": "beginPrimaryFire", < "parameters": {} 97,139c93,96 < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "entityDirection", < "type": "action", < "name": "entityDirection", < "parameters": { < "target": "boss" < }, < "output": { < "direction": "targetDirection" < } < }, < { < "title": "controlMove", < "type": "action", < "name": "controlMove", < "parameters": { < "direction": "targetDirection" < } < }, < { < "title": "setAimPosition", < "type": "action", < "name": "setAimPosition", < "parameters": { < "offset": [ < "targetDirection", < 0 < ], < "position": "self" < } < }, < { < "title": "endPrimaryFire", < "type": "action", < "name": "endPrimaryFire", < "parameters": {} < } < ] --- > "title": "primaryFire", > "type": "action", > "name": "primaryFire", > "parameters": {} 144,147c101,137 < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "entityDirection", > "type": "action", > "name": "entityDirection", > "parameters": { > "target": "boss" > }, > "output": { > "direction": "targetDirection" > } > }, > { > "title": "controlMove", > "type": "action", > "name": "controlMove", > "parameters": { > "direction": "targetDirection" > } > }, > { > "title": "setAimPosition", > "type": "action", > "name": "setAimPosition", > "parameters": { > "offset": [ > "targetDirection", > 0 > ], > "position": "self" > } > } > ] 149a140,145 > }, > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} 151,158c147,148 < }, < { < "title": "endPrimaryFire", < "type": "action", < "name": "endPrimaryFire", < "parameters": {} < } < ] --- > ] > } biomes\surface\forest.biome 340a341,356 > }, > { > "mode" : "floor", > "priority" : 1.0, > "variants" : 1, > "distribution" : "/biomes/distributions.config:surfaceCrops", > > "type" : "object", > "objectSets" : [ > { > "pool" : [ [1, "wildcocoaseed" ] ], > "parameters" : { > "startingStage" : 4 > } > } > ] biomes\surface\jungle.biome 380a381,396 > "pool" : [ [1, "wildcocoaseed" ] ], > "parameters" : { > "startingStage" : 3 > } > } > ] > }, > { > "mode" : "floor", > "priority" : 1.0, > "variants" : 1, > "distribution" : "/biomes/distributions.config:surfaceCrops", > > "type" : "object", > "objectSets" : [ > { biomes\surface_detached\giantflowers.biome 145a146,164 > }, > > // CROPS > > { > "mode" : "floor", > "priority" : 1.0, > "variants" : 1, > "distribution" : "/biomes/distributions.config:surfaceCrops", > > "type" : "object", > "objectSets" : [ > { > "pool" : [ [1, "wildcocoaseed" ] ], > "parameters" : { > "startingStage" : 3 > } > } > ] biomes\surface_detached\spring.biome 160a161,177 > }, > > { > "mode" : "floor", > "priority" : 0, > "variants" : 1, > "distribution" : "/biomes/distributions.config:rare", > > "type" : "object", > "objectSets" : [ > { > "pool" : [ [1, "wildcocoaseed" ] ], > "parameters" : { > "startingStage" : 3 > } > } > ] biomes\surface_detached\swamp.biome 128a129,147 > }, > > // CROPS > > { > "mode" : "floor", > "priority" : 1.0, > "variants" : 1, > "distribution" : "/biomes/distributions.config:surfaceCrops", > > "type" : "object", > "objectSets" : [ > { > "pool" : [ [1, "wildcocoaseed" ] ], > "parameters" : { > "startingStage" : 3 > } > } > ] humanoid\penguin\femalebody.frames 11d10 < [ null, "climb.1", "climb.2", "climb.3", "climb.4", "climb.5", "climb.6", "climb.7", "climb.8" ], humanoid\penguin\malebody.frames 11d10 < [ null, "climb.1", "climb.2", "climb.3", "climb.4", "climb.5", "climb.6", "climb.7", "climb.8" ], items\active\grapplinghooks\grapplinghook.lua 9a10 > self.reelInDistance = config.getParameter("reelInDistance") 34c35,38 < if fireMode == "primary" and self.previousFireMode ~= "primary" then --- > if fireMode == "primary" and self.previousFireMode ~= "primary" > and not status.statPositive("activeMovementAbilities") > and not world.lineTileCollision(mcontroller.position(), firePosition()) then > 46,47c50,52 < local position = mcontroller.position() < local handPosition = vec2.add(position, activeItem.handPosition(self.ropeOffset)) --- > if world.entityExists(self.projectileId) then > local position = mcontroller.position() > local handPosition = vec2.add(position, activeItem.handPosition(self.ropeOffset)) 49,51c54,64 < local newRope < if #self.rope == 0 then < newRope = {handPosition, self.projectilePosition} --- > local newRope > if #self.rope == 0 then > newRope = {handPosition, self.projectilePosition} > else > newRope = copy(self.rope) > table.insert(newRope, 1, world.nearestTo(newRope[1], handPosition)) > table.insert(newRope, world.nearestTo(newRope[#newRope], self.projectilePosition)) > end > > windRope(newRope) > updateRope(newRope) 53,55c66 < newRope = copy(self.rope) < table.insert(newRope, 1, world.nearestTo(newRope[1], handPosition)) < table.insert(newRope, world.nearestTo(newRope[#newRope], self.projectilePosition)) --- > cancel() 56a68 > end 58,59c70,71 < windRope(newRope) < updateRope(newRope) --- > if self.ropeLength > self.breakLength then > cancel() 98,99d109 < local firePosition = vec2.add(mcontroller.position(), activeItem.handPosition(self.fireOffset)) < 105c115 < firePosition, --- > firePosition(), 110a121,125 > > if self.projectileId then > animator.playSound("fire") > status.setPersistentEffects("movementAbility", {{stat = "activeMovementAbilities", amount = 1}}) > end 123a139 > status.clearPersistentEffects("movementAbility") 128,129c144,148 < local pullDirection = vec2.sub(self.rope[2], self.rope[1]) < activeItem.setArmAngle(vec2.angle({pullDirection[1] * self.facingDirection, pullDirection[2]})) --- > local canReel = self.ropeLength > self.reelInDistance or world.magnitude(self.rope[2], mcontroller.position()) > self.reelInDistance > > local armAngle = activeItem.aimAngle(self.fireOffset[2], self.rope[2]) > local pullDirection = vec2.withAngle(armAngle) > activeItem.setArmAngle(self.facingDirection == 1 and armAngle or math.pi - armAngle) 132c151 < if moves.up or self.ropeLength > self.reelOutLength then --- > if (moves.up and canReel) or self.ropeLength > self.reelOutLength then 135d153 < 139c157 < elseif moves.up then --- > elseif moves.up and canReel then 153,156d170 < if self.ropeLength > self.breakLength then < cancel() < end < 157a172,175 > end > > function firePosition() > return vec2.add(mcontroller.position(), activeItem.handPosition(self.fireOffset)) items\active\grapplinghooks\climbingrope\climbingrope.activeitem 22c22 < "projectileType" : "grapplehook", --- > "projectileType" : "climbingropehook", 24,25c24,25 < "speed" : 100, < "timeToLive" : 0.25 --- > "speed" : 50, > "timeToLive" : 2.5 28,29c28,29 < "ropeWidth" : 1.0, < "ropeColor" : [120, 80, 30, 255], --- > "ropeWidth" : 1.8, > "ropeColor" : [118, 77, 45, 255], 30a31 > "reelInDistance" : 2.5, 35c36 < "controlForce" : 1000, --- > "controlForce" : 2000, items\active\grapplinghooks\climbingrope\climbingrope.animation 11a12,15 > }, > > "sounds" : { > "fire" : ["/sfx/melee/swing_hammer.ogg"] items\active\grapplinghooks\grapplinghook\grapplinghook.activeitem 20c20 < "ropeOffset" : [-0.5, 0.3], --- > "ropeOffset" : [0.75, 0.3], 32a33 > "reelInDistance" : 3.5, items\active\grapplinghooks\grapplinghook\grapplinghook.animation 11a12,15 > }, > > "sounds" : { > "fire" : ["/sfx/gun/grapplegun.ogg"] items\generic\food\tier3\2kbpotage.consumable 8c8 < "shortdescription" : "2KB Potage", --- > "shortdescription" : "Wattage Potage", items\generic\food\tier3\stuffedautomato.consumable 8c8 < "shortdescription" : "Stuffed 4GB Automato", --- > "shortdescription" : "Stuffed Automato", items\generic\food\tier5\16gbpasty.consumable 8c8 < "shortdescription" : "16GB Pasty", --- > "shortdescription" : "Rusty Pasty", items\generic\food\tier5\8gbpizzap.consumable 8c8 < "shortdescription" : " 8GB Pizzap", --- > "shortdescription" : "Pizzap Slice", items\generic\food\tier5\piodia.consumable 8c8 < "shortdescription" : "Piodia", --- > "shortdescription" : "Piodia Slice", items\generic\food\tier5\smash.consumable 8c8 < "shortdescription" : "Smash", --- > "shortdescription" : "Zmash", items\generic\meat\rawbacon.consumable 8c8 < "description" : "A raw slab of weird, stringy alien meat. Dangerous to eat.", --- > "description" : "A raw slab of weird, stringy alien meat. Maybe I should cook it.", items\generic\meat\rawfish.consumable 14,18d13 < "effects" : [ [ < { < "effect" : "foodpoison" < } < ] ], items\generic\meat\rawham.consumable 23,24c23 < ], < "learnBlueprintsOnPickup" : [ "fishdumplings", "fishfingers" ] --- > ] items\generic\produce\wartweed.consumable 15a16,21 > "effects" : [ [ > { > "effect" : "weakpoison", > "duration" : 5 > } > ] ], items\materials\baseboard.matitem 13c13,14 < "materialId" : 98 --- > "materialId" : 98, > "learnBlueprintsOnPickup" : [ "baseboard" ] items\materials\ornateflooring.matitem 13c13,14 < "materialId" : 158 --- > "materialId" : 158, > "learnBlueprintsOnPickup" : [ "ornatewood", "ornateflooring" ] items\materials\ornatewood.matitem 13c13,14 < "materialId" : 155 --- > "materialId" : 155, > "learnBlueprintsOnPickup" : [ "ornatewood", "ornateflooring" ] items\materials\ruinsplatform.matitem 13c13,14 < "materialId" : 275 --- > "materialId" : 275, > "learnBlueprintsOnPickup" : [ "ruinsplatform" ] monsters\farming\hen\evolution\chickevolution.frames 3c3 < "size" : [46, 40], --- > "size" : [18, 18], 7c7 < [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" ] --- > [ "1", "2", "3", "4", "5", "6", "7", "8" ] monsters\farming\hen\evolution\default.frames 3,4c3,4 < "size" : [50, 40], < "dimensions" : [10, 1], --- > "size" : [18, 18], > "dimensions" : [8, 1], 7c7 < [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" ] --- > [ "1", "2", "3", "4", "5", "6", "7", "8" ] npcs\bmain.lua 123,127c123,124 < npc.endPrimaryFire() < return < else < if self.primaryFire then < npc.beginPrimaryFire() --- > if self.primary and root.itemHasTag(self.primary.name, "ranged") then > npc.endPrimaryFire() 129c126 < self.stunned = false --- > return 137a135,136 > self.primaryFire = false > self.altFire = false 147a147,157 > if self.primaryFire then > npc.beginPrimaryFire() > else > npc.endPrimaryFire() > end > if self.altFire then > npc.beginAltFire() > else > npc.endAltFire() > end > 149a160 > self.stunned = false 152a164 > npcs\hostile.npctype 6c6 < --- > 17c17 < "rangedWindupTime" : 0.0 --- > "rangedWindupTime" : 0.01 25c25 < --- > objects\farmables\henegg\henegg.object 9c9 < "description" : "Hatches into a vulnerable fluffalo calf, which needs feeding to grow.-todo-", --- > "description" : "Hatches into a baby chick. Will eventually mature into a hen!-todo-", 13c13 < "apexDescription" : "The egg of a fluffalo beast, commonly kept as livestock for their valuable resources.-todo-", --- > "apexDescription" : "The egg of a hen, commonly kept as livestock for their valuable resources.-todo-", projectiles\physics.config 1059a1060,1074 > "ballisticgrapplehook" : { > "mass" : 1.0, > "gravityMultiplier" : 1.0, > "stickyCollision" : true, > "stickyForce" : 50.0, > "maxMovementPerStep" : 0.4, > > "collisionPoly" : [ [0.25, 0], [0.9, 0.3], [1.1, 0], [0.9, -0.3] ], > "ignorePlatformCollision" : true, > > "airFriction" : 0.0, > "liquidFriction" : 8.0, > "groundFriction" : 15.0 > }, > projectiles\activeitems\grapplehook\grapplehook.projectile 11c11 < "speed" : 60, --- > "speed" : 100, quests\outpost\outpostclue.questtemplate 88c88 < "text" : "The owner of this furniture shop has a large collection of exotic pieces from across the universe. It's worth checking regularly to see the new stock.", --- > "text" : "This furniture shop sells a large selection of exotic pieces from across the universe, and regularly has new stock. It also sells colony deeds, which attract tenants when placed in dwellings.", scripts\actions\npc.lua 122,123c122,123 < function beginAltFire(args, output) < npc.beginAltFire() --- > function altFire(args, output) > self.altFire = true 127,132c127 < function endAltFire(args, output) < npc.endAltFire() < return true < end < < function beginPrimaryFire(args, output) --- > function primaryFire(args, output) 134,140d128 < npc.beginPrimaryFire() < return true < end < < function endPrimaryFire(args, output) < self.primaryFire = false < npc.endPrimaryFire() stats\effects\foodpoison\foodpoison.animation 5c5 < "emissionRate" : 20.0, --- > "emissionRate" : 1.0, 10c10 < "size" : 1.5, --- > "size" : 1.0, stats\effects\foodpoison\foodpoison.lua 7,8c7,8 < self.tickDamagePercentage = 0.075 < self.tickTime = 3.0 --- > self.tickDamagePercentage = 0.010 > self.tickTime = 1.0 18c18 < damage = math.floor(status.resourceMax("health") * self.tickDamagePercentage) + 3, --- > damage = math.floor(status.resourceMax("health") * self.tickDamagePercentage) + 1, treasure\cropharvest.treasurepools 136a137,150 > "cocoaHarvest" : [ > [0, { > "pool" : [ > {"weight" : 0.89, "item" : "cocoa"}, > {"weight" : 0.01, "item" : "cocoaseed"}, > {"weight" : 0.1, "item" : "plantfibre"} > ], > "poolRounds" : [ > [0.6, 1], > [0.4, 2] > ] > } ] > ], >