FILES ----- default_actor_movement.config default_movement.config itemdrop.config player.config [NEW] animations\barriericeaura\barriericeaura.animation [NEW] animations\barriericeaura\barriericeaura.frames [NEW] animations\barriericeaura\barriericeaura.png behaviors\monsters\modular\actions\fire.behavior behaviors\monsters\modular\actions\invulnerable.behavior biomes\distributions.config biomes\surface\alien.biome biomes\surface\desert.biome biomes\surface\forest.biome biomes\surface\jungle.biome biomes\surface\magma.biome biomes\surface\midnight.biome biomes\surface\savannah.biome biomes\surface\scorched.biome biomes\surface\snow.biome biomes\surface\tundra.biome biomes\surface\volcanic.biome biomes\underground_detached\slimecaves\dripslime1\dripslime1.object dungeons\avian\avianairship\avianairship.dungeon dungeons\avian\aviantemple\aviantemple.dungeon dungeons\avian\aviantomb\aviantomb.dungeon dungeons\avian\aviantower\aviantower.dungeon dungeons\avian\avianvillage\avianvillage.dungeon dungeons\microdungeons\biomes\forest\clearing2.json dungeons\microdungeons\biomes\garden\mediumgardenflowers.json dungeons\microdungeons\biomes\garden\mediumgardenruinplain.json dungeons\microdungeons\biomes\garden\smallgardenflowers.json dungeons\microdungeons\biomes\snow\frozenlake2.json dungeons\microdungeons\randomencounter\genericunderground\genericundergroundencounter.dungeon dungeons\missions\missiontest1\missiontest1.dungeon dungeons\other\challengerooms\ambush.json dungeons\other\challengerooms\angerpoint.json dungeons\other\challengerooms\challengerooms.dungeon dungeons\other\challengerooms\choices1.json dungeons\other\challengerooms\collapse.json dungeons\other\challengerooms\doubleteam.json dungeons\other\challengerooms\gauntlet.json dungeons\other\challengerooms\quiqksilver2.json dungeons\other\challengerooms\quiqksilver3.json dungeons\other\challengerooms\runandgun.json dungeons\other\challengerooms\rush.json dungeons\other\challengerooms\shortcircuit.json dungeons\other\challengerooms\spacejump.json dungeons\other\challengerooms\trenches.json dungeons\other\naturalcave\naturalcave.dungeon effects\barrierice.effectsource [NEW] interface\itemdescriptions\fistweapon.itemdescription interface\itemdescriptions\shield.itemdescription [NEW] interface\tooltips\fistweapon.tooltip interface\tooltips\shield.tooltip items\active\shields\commonlargeshield.activeitem items\active\shields\commonsmallshield.activeitem items\active\shields\eyeshield.activeitem items\active\shields\floranshield.activeitem items\active\shields\mushroomshield.activeitem items\active\shields\riotshield.activeitem items\active\shields\seashellshield.activeitem items\active\shields\startershield.activeitem items\active\vehiclecontroller\vehiclecontroller.lua items\active\weapons\ballandchain\ballandchain.activeitem items\active\weapons\ballandchain\ballandchain.lua items\active\weapons\fist\boxingglove.activeitem items\active\weapons\fist\clawglove.activeitem [NEW] items\active\weapons\fist\explosiveglove.png items\active\weapons\fist\fistweapon.animation items\active\weapons\fist\gauntlet.activeitem [NEW] items\active\weapons\fist\stunglove.activeitem [NEW] items\active\weapons\fist\stunglove.png items\active\weapons\fist\combofinishers\dashslash.combofinisher [NEW] items\active\weapons\fist\combofinishers\thunderpunch.combofinisher items\active\weapons\fist\swoosh\dashswoosh.frames items\active\weapons\fist\swoosh\dashswoosh.png [NEW] items\active\weapons\fist\swoosh\electricswoosh.frames [NEW] items\active\weapons\fist\swoosh\electricswoosh.png items\active\weapons\fist\swoosh\powerpunchswoosh.png [NEW] items\active\weapons\fist\swoosh\thunderpunchswoosh.frames [NEW] items\active\weapons\fist\swoosh\thunderpunchswoosh.png items\active\weapons\melee\altabilities\broadsword\downstab\downstab.altability items\active\weapons\melee\altabilities\hammer\groundslam\groundslam.altability items\active\weapons\melee\axe\commonaxe.activeitem items\active\weapons\melee\axe\npcaxe.activeitem items\active\weapons\melee\axe\rareaxe.activeitem items\active\weapons\melee\axe\uncommonaxe.activeitem items\active\weapons\melee\hammer\hammer.lua items\active\weapons\melee\hammer\npchammer.activeitem items\active\weapons\ranged\altabilities\lance\lance.altability items\active\weapons\ranged\boomerang\boomerang.activeitem items\active\weapons\ranged\boomerang\boomerang.lua items\active\weapons\ranged\boomerang\sawchakram.png items\active\weapons\ranged\boomerang\wormerang.activeitem items\active\weapons\ranged\chakram\chakram.activeitem items\active\weapons\ranged\chakram\chakram.png [NEW] items\active\weapons\ranged\chakram\hardchakram.activeitem [NEW] items\active\weapons\ranged\chakram\hardchakram.png [NEW] items\active\weapons\ranged\chakram\neochakram.activeitem [NEW] items\active\weapons\ranged\chakram\neochakram.png items\active\weapons\ranged\chakram\sawchakram.activeitem items\active\weapons\ranged\chakram\sawchakram.png items\buildscripts\buildfist.lua items\buildscripts\buildshield.lua items\buildscripts\buildunrandshield.lua items\materials\crystalblock.png monsters\monster.lua monsters\crawlers\triplod\triplod.animation monsters\dungeon\apexbrainmutant\apexbrainmutant.animation [NEW] monsters\dungeon\apexbrainmutant\apexbrainmutant.frames monsters\dungeon\apexbrainmutant\apexbrainmutant.monstertype monsters\dungeon\apexmutant\apexmutant.animation [NEW] monsters\dungeon\apexmutant\apexmutant.frames monsters\dungeon\apexmutant\apexmutant.monstertype monsters\dungeon\moontant\default.frames monsters\dungeon\moontant\moontant.animation monsters\dungeon\moontant\moontant.monstertype monsters\dungeon\pogolem\pogolem.animation [NEW] monsters\dungeon\pogolem\pogolem.frames monsters\dungeon\pogolem\pogolem.monstertype monsters\dungeon\serpentdroid\serpentdroid.animation [NEW] monsters\dungeon\serpentdroid\serpentdroid.frames monsters\dungeon\serpentdroid\serpentdroid.monstertype monsters\generated\ground\largebiped\largebiped.animation monsters\generated\ground\largebiped\largebiped.monstertype monsters\generated\ground\largequadruped\default.frames monsters\generated\ground\largequadruped\largequadruped.animation monsters\generated\ground\largequadruped\largequadruped.monstertype monsters\generated\ground\skills\chargeattack.monsterskill monsters\generated\ground\skills\pounceattack.monsterskill monsters\generated\ground\smallbiped\smallbiped.animation monsters\generated\ground\smallbiped\smallbiped.monstertype monsters\generated\ground\smallquadruped\smallquadruped.animation monsters\generated\ground\smallquadruped\smallquadruped.monstertype objects\ancient\ancientbigchest\ancientbigchest.object objects\ancient\ancientconsole\returnconsole.object objects\ancient\ancientflametrap\ancientflametrap.object objects\ancient\ancientprop\ancientprop.object objects\ancient\challengedoor\challengereturndoor.object objects\ancient\hologramgalaxy\hologramgalaxy.object objects\ancient\jumpbooster\jumpbooster.object objects\ancient\largetentacleprop\largetentacleprop.object objects\ancient\lightstreaks\lightstreaks.object objects\ancient\monolithgate\monolithgate.object objects\ancient\powerbooster\powerbooster.object objects\ancient\sawblade2\sawblade2.object objects\ancient\speedbooster\speedbooster.object objects\apex\apexapesign\apexapesign.object objects\apex\apexaquarium1\apexaquarium1.object objects\apex\apexaquarium2\apexaquarium2.object objects\apex\apexarmchair\apexarmchair.object objects\apex\apexbananasign\apexbananasign.object objects\apex\apexbed\apexbed.object objects\apex\apexbloodbank\apexbloodbank.object objects\apex\apexbrainjar\apexbrainjar.object objects\apex\apexbustmale\apexbustmale.object objects\apex\apexceilingtv\apexceilingtv.object objects\apex\apexcomfychair\apexcomfychair.object objects\apex\apexconsole1\apexconsole1.object objects\apex\apexconsolekeyboard\apexconsolekeyboard.object objects\apex\apexcoolbookcase\apexcoolbookcase.object objects\apex\apexcoolchair\apexcoolchair.object objects\apex\apexcoolcomputer\apexcoolcomputer.object objects\apex\apexcoolcupboard\apexcoolcupboard.object objects\apex\apexcooldoor\apexcooldoor.object objects\apex\apexcoolserver\apexcoolserver.object objects\apex\apexcoolshelf1\apexcoolshelf1.object objects\apex\apexcoolshelf2\apexcoolshelf2.object objects\apex\apexcooltable\apexcooltable.object objects\apex\apexcouch\apexcouch.object objects\apex\apexcounter1\apexcounter1.object objects\apex\apexcounter2\apexcounter2.object objects\apex\apexcurtain\apexcurtain.object objects\apex\apexdesk\apexdesk.object objects\apex\apexdonotenter\apexdonotenter.object objects\apex\apexflusign\apexflusign.object objects\apex\apexfridge\apexfridge.object objects\apex\apexhdtv\apexhdtv.object objects\apex\apexlamp1\apexlamp1.object objects\apex\apexlamp2\apexlamp2.object objects\apex\apexlamp3\apexlamp3.object objects\apex\apexlevel1sign\apexlevel1sign.object objects\apex\apexlocker\apexlocker.object objects\apex\apexmedsign\apexmedsign.object objects\apex\apexmocksign\apexmocksign.object objects\apex\apexnameplate\apexnameplate.object objects\apex\apexobeysign\apexobeysign.object objects\apex\apexofficechair\apexofficechair.object objects\apex\apexoven\apexoven.object objects\apex\apexpainting1\apexpainting1.object objects\apex\apexpainting2\apexpainting2.object objects\apex\apexpainting3\apexpainting3.object objects\apex\apexpainting4\apexpainting4.object objects\apex\apexpainting5\apexpainting5.object objects\apex\apexpiano\apexpiano.object objects\apex\apexpod\apexpod.object objects\apex\apexpod2\apexpod2.object objects\apex\apexradio\apexradio.object objects\apex\apexrecordplayer\apexrecordplayer.object objects\apex\apexsink\apexsink.object objects\apex\apexslidingdoor1\apexslidingdoor1.object objects\apex\apexslidingdoor2\apexslidingdoor2.object objects\apex\apexspeaker\apexspeaker.object objects\apex\apexstatue\apexstatue.object objects\apex\apexstatue1\apexstatue1.object objects\apex\apexstatue2\apexstatue2.object objects\apex\apexstatue3\apexstatue3.object objects\apex\apexstoragelocker\apexstoragelocker.object objects\apex\apextable\apextable.object objects\apex\apextablelamp\apextablelamp.object objects\apex\apexthoughtreassign\apexthoughtreassign.object objects\apex\apextorturebed\apextorturebed.object objects\apex\apextv\apextv.object objects\apex\apexwallpainting1\apexwallpainting1.object objects\apex\apexwallpainting2\apexwallpainting2.object objects\avian\flametrap\flametrap.object particles\iceswoosh1.particle particles\iceswoosh2.particle [NEW] particles\barriericeaura\barriericeaura.particle projectiles\physics.config projectiles\activeitems\boomerang\boomerang.projectile projectiles\activeitems\boomerang\boomerangprojectile.lua projectiles\activeitems\boomerang\fireboomerang.projectile projectiles\activeitems\boomerang\iceboomerang.projectile projectiles\activeitems\boomerang\spectralboomerang.projectile projectiles\activeitems\boomerang\wormerang.projectile [NEW] projectiles\activeitems\boomerang\wormerangprojectile.lua projectiles\activeitems\chainball\chainball.lua projectiles\activeitems\chakram\chakram.png projectiles\activeitems\chakram\chakram.projectile projectiles\activeitems\chakram\chakramprojectile.lua [NEW] projectiles\activeitems\chakram\default.frames [NEW] projectiles\activeitems\chakram\hardchakram.frames [NEW] projectiles\activeitems\chakram\hardchakram.png [NEW] projectiles\activeitems\chakram\hardchakram.projectile [NEW] projectiles\activeitems\chakram\hoverchakramprojectile.lua [NEW] projectiles\activeitems\chakram\neochakram.png [NEW] projectiles\activeitems\chakram\neochakram.projectile projectiles\activeitems\chakram\sawchakram.png projectiles\activeitems\chakram\sawchakram.projectile projectiles\activeitems\traildash\icetrail.png projectiles\activeitems\traildash\icetrail.projectile projectiles\activeitems\traildash\wormtrail.projectile [NEW] projectiles\explosions\poexplosion\poexplosion.config [NEW] projectiles\explosions\poexplosion\poexplosion.frames [NEW] projectiles\explosions\poexplosion\poexplosion.png [NEW] projectiles\explosions\poexplosion\poexplosion.projectile projectiles\npcs\moontantgoop\moontantgoop.projectile [NEW] projectiles\npcs\poball\poball.frames [NEW] projectiles\npcs\poball\poball.png [NEW] projectiles\npcs\poball\poball.projectile projectiles\throwable\flare\flare.projectile projectiles\traps\trapflame\trapflame.projectile quests\generated\pools\merchantstock1.config quests\generated\pools\merchantstock2.config quests\generated\pools\merchanttrades.config quests\generated\templates\helmet.questtemplate quests\generated\templates\new_stock1.questtemplate quests\generated\templates\new_stock2.questtemplate quests\generated\templates\protect.questtemplate quests\generated\templates\recruit_guard.questtemplate quests\scripts\conditions\gather.lua quests\scripts\generated\add_object_to_house.lua quests\scripts\generated\clothing.lua quests\scripts\generated\collect_fine.lua quests\scripts\generated\collect_gift.lua quests\scripts\generated\fetch.lua quests\scripts\generated\gift.lua quests\scripts\generated\kill_monster.lua quests\scripts\generated\new_stock.lua quests\scripts\generated\return_stolen.lua quests\scripts\generated\steal.lua quests\scripts\generated\text_generation.lua scripts\actions\entities.lua scripts\actions\items.lua scripts\actions\quests.lua scripts\questgen\generator.lua [NEW] scripts\questgen\pools.lua scripts\questgen\predicands.lua scripts\questgen\relations.lua [NEW] sfx\tech\hoverbike_crash1.ogg [NEW] sfx\tech\hoverbike_crash2.ogg [NEW] sfx\tech\hoverbike_crash3.ogg tiles\materials\crystalblock.png treasure\dungeon.treasurepools treasure\monster.treasurepools vehicles\hoverbike\hoverbike.animation vehicles\hoverbike\hoverbike.lua vehicles\hoverbike\hoverbike.vehicle DIFFS ----- default_actor_movement.config 4a5 > "enableSurfaceSlopeCorrection" : true, default_movement.config 6a7 > "enableSurfaceSlopeCorrection" : false, itemdrop.config 11c11,15 < "afterTakenLife" : 2.0 --- > "afterTakenLife" : 2.0, > > "movementParameters" : { > "enableSurfaceSlopeCorrection" : true > } player.config 19c19 < // blueprints available from the start --- > // blueprints available from the start behaviors\monsters\modular\actions\fire.behavior 6d5 < "/scripts/actions/entities.lua", 8a8 > "/scripts/actions/entities.lua", 37c37,41 < "rotateAim": false --- > "rotateAim": false, > "rotatedOffset": [ > 0, > 0 > ] 151,173d154 < "title": "entityPosition", < "type": "action", < "name": "entityPosition", < "parameters": { < "entity": "target" < }, < "output": { < "position": "targetPosition" < } < }, < { < "title": "offsetPosition", < "type": "action", < "name": "offsetPosition", < "parameters": { < "offset": "fireOffset", < "position": "self" < }, < "output": { < "position": "sourcePosition" < } < }, < { 438a420,442 > }, > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" > }, > "output": { > "position": "targetPosition" > } > }, > { > "title": "offsetPosition", > "type": "action", > "name": "offsetPosition", > "parameters": { > "offset": "fireOffset", > "position": "self" > }, > "output": { > "position": "sourcePosition" > } 466,477d469 < "title": "entityDirection", < "type": "action", < "name": "entityDirection", < "parameters": { < "entity": "self", < "target": "target" < }, < "output": { < "direction": "facingDirection" < } < }, < { 536c528 < "position": "self" --- > "position": "sourcePosition" 554a547 > "angle": "entityAngle", 556c549 < "angle": "entityAngle" --- > "rotationCenter": "" 561a555,618 > }, > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "vecRotate", > "type": "action", > "name": "vecRotate", > "parameters": { > "vector": "", > "angle": "entityAngle" > }, > "output": { > "vector": "rotatedOffset" > } > }, > { > "title": "vecMultiply", > "type": "action", > "name": "vecMultiply", > "parameters": { > "first": "rotatedOffset", > "second": [ > "facingDirection", > 1 > ] > }, > "output": { > "vector": "rotatedOffset" > } > }, > { > "title": "vecAdd", > "type": "action", > "name": "vecAdd", > "parameters": { > "first": "fireOffset", > "second": "rotatedOffset" > }, > "output": { > "vector": "fireOffset" > } > }, > { > "title": "offsetPosition", > "type": "action", > "name": "offsetPosition", > "parameters": { > "offset": "fireOffset", > "position": "sourcePosition" > }, > "output": { > "position": "sourcePosition" > } > } > ] 567a625,632 > "title": "action-winddown", > "type": "module", > "name": "action-winddown", > "parameters": { > "winddownState": "" > } > }, > { 587,594d651 < } < }, < { < "title": "action-winddown", < "type": "module", < "name": "action-winddown", < "parameters": { < "winddownState": "" behaviors\monsters\modular\actions\invulnerable.behavior 102,106c102,112 < "title": "damageTakenActions", < "type": "action", < "name": "selectorActions", < "parameters": { < "actions": "" --- > "title": "failer", > "type": "decorator", > "name": "failer", > "parameters": {}, > "child": { > "title": "damageTakenActions", > "type": "action", > "name": "selectorActions", > "parameters": { > "actions": "" > } biomes\distributions.config 343,348d342 < < "minibossoverground" : { < "type" : "random", < < "blockProbability" : 0.0005 < }, biomes\surface\alien.biome 211,220d210 < "priority" : 3.0, < "variants" : 1, < "distribution" : "/biomes/distributions.config:minibossoverground", < < "type" : "microdungeon", < "microdungeons" : [ "minibossoverground" ] < }, < < { < "mode" : "floor", biomes\surface\desert.biome 233,241d232 < "priority" : 3.0, < "variants" : 1, < "distribution" : "/biomes/distributions.config:minibossoverground", < < "type" : "microdungeon", < "microdungeons" : [ "minibossoverground" ] < }, < { < "mode" : "floor", biomes\surface\forest.biome 259,267d258 < "priority" : 3.0, < "variants" : 1, < "distribution" : "/biomes/distributions.config:minibossoverground", < < "type" : "microdungeon", < "microdungeons" : [ "minibossoverground" ] < }, < { < "mode" : "floor", biomes\surface\jungle.biome 261,269d260 < "priority" : 3.0, < "variants" : 1, < "distribution" : "/biomes/distributions.config:minibossoverground", < < "type" : "microdungeon", < "microdungeons" : [ "minibossoverground" ] < }, < { < "mode" : "floor", biomes\surface\magma.biome 233,241d232 < "distribution" : "/biomes/distributions.config:minibossoverground", < < "type" : "microdungeon", < "microdungeons" : [ "minibossoverground" ] < }, < { < "mode" : "floor", < "priority" : 3.0, < "variants" : 1, biomes\surface\midnight.biome 215,223d214 < "distribution" : "/biomes/distributions.config:minibossoverground", < < "type" : "microdungeon", < "microdungeons" : [ "minibossoverground" ] < }, < { < "mode" : "floor", < "priority" : 3.0, < "variants" : 1, biomes\surface\savannah.biome 235,243d234 < "priority" : 3.0, < "variants" : 1, < "distribution" : "/biomes/distributions.config:minibossoverground", < < "type" : "microdungeon", < "microdungeons" : [ "minibossoverground" ] < }, < { < "mode" : "floor", biomes\surface\scorched.biome 200,208d199 < "priority" : 3.0, < "variants" : 1, < "distribution" : "/biomes/distributions.config:minibossoverground", < < "type" : "microdungeon", < "microdungeons" : [ "minibossoverground" ] < }, < { < "mode" : "floor", biomes\surface\snow.biome 261,269d260 < "priority" : 3.0, < "variants" : 1, < "distribution" : "/biomes/distributions.config:minibossoverground", < < "type" : "microdungeon", < "microdungeons" : [ "minibossoverground" ] < }, < { < "mode" : "floor", biomes\surface\tundra.biome 315,323d314 < "distribution" : "/biomes/distributions.config:minibossoverground", < < "type" : "microdungeon", < "microdungeons" : [ "minibossoverground" ] < }, < { < "mode" : "floor", < "priority" : 3.0, < "variants" : 1, biomes\surface\volcanic.biome 191,199d190 < "distribution" : "/biomes/distributions.config:minibossoverground", < < "type" : "microdungeon", < "microdungeons" : [ "minibossoverground" ] < }, < { < "mode" : "floor", < "priority" : 3.0, < "variants" : 1, biomes\underground_detached\slimecaves\dripslime1\dripslime1.object 6c6 < "shortdescription" : "Dripping Slime.", --- > "shortdescription" : "Dripping Slime", 11,12c11,17 < "floranDescription" : "Floran not like dripping ssslime.", < "glitchDescription" : "Statement. What appears to be dripping slime.", --- > "apexDescription" : "Where is this slime coming from?", > "avianDescription" : "I'd rather not get slime on my feathers.", > "floranDescription" : "Floran is not a fan of ssslime.", > "glitchDescription" : "Disgusted. There appears to be dripping slime.", > "humanDescription" : "Better not walk under this dripping slime.", > "hylotlDescription" : "A constant dripping of slime.", > "novakidDescription" : "Slime seems to get everywhere if you let it.", dungeons\avian\avianairship\avianairship.dungeon 1892c1892 < "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] 1898c1898 < "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] 1904c1904 < "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] 1910c1910 < "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] 1916c1916 < "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] 1922c1922 < "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] 1928c1928 < "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] 1934c1934 < "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] dungeons\avian\aviantemple\aviantemple.dungeon 1892c1892 < "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] 1898c1898 < "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] 1904c1904 < "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] 1910c1910 < "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] 1916c1916 < "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] 1922c1922 < "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] 1928c1928 < "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] 1934c1934 < "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] dungeons\avian\aviantomb\aviantomb.dungeon 1802c1802 < "brush" : [ [ "clear" ], [ "object", "tribalwallcabinet", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "tribalwallcabinet", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTombLore" ] } } ] ] 1808c1808 < "brush" : [ [ "clear" ], [ "object", "tribalwallcabinet", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "tribalwallcabinet", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTombLore" ] } } ] ] 1892c1892 < "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "aviantombtreasure" ] } } ] ] 1898c1898 < "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "aviantombtreasure" ] } } ] ] 1904c1904 < "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "aviantombtreasure" ] } } ] ] 1910c1910 < "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "aviantombtreasure" ] } } ] ] 1916c1916 < "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "aviantombtreasure" ] } } ] ] 1922c1922 < "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "aviantombtreasure" ] } } ] ] 1928c1928 < "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "aviantombtreasure" ] } } ] ] 1934c1934 < "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "aviantombtreasure" ] } } ] ] dungeons\avian\aviantower\aviantower.dungeon 1892c1892 < "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] 1898c1898 < "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] 1904c1904 < "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] 1910c1910 < "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] 1916c1916 < "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] 1922c1922 < "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] 1928c1928 < "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] 1934c1934 < "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "aviantempletreasure" ] } } ] ] dungeons\avian\avianvillage\avianvillage.dungeon 1892c1892 < "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] 1898c1898 < "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] 1904c1904 < "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] 1910c1910 < "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] 1916c1916 < "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "left", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] 1922c1922 < "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian1", { "direction" : "right", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] 1928c1928 < "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "left", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] 1934c1934 < "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "avianTempleLore" ] } } ] ] --- > "brush" : [ [ "clear" ], [ "object", "chestmedavian2", { "direction" : "right", "parameters" : { "treasurePools" : [ "basicTreasure" ] } } ] ] dungeons\microdungeons\biomes\forest\clearing2.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\mediumgardenruinplain.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\snow\frozenlake2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\randomencounter\genericunderground\genericundergroundencounter.dungeon 906c906 < "comment" : "miniboss quadruped npc", --- > "comment" : "large quadruped npc", 910c910 < "typeName" : "minibossquadruped", --- > "typeName" : "largequadruped", 986c986 < "comment" : "miniboss biped npc", --- > "comment" : "large biped npc", 990c990 < "typeName" : "minibossbiped", --- > "typeName" : "largebiped", dungeons\missions\missiontest1\missiontest1.dungeon 2352c2352 < "comment" : "large quadruped npc", --- > "comment" : "large biped npc", 2356c2356 < "typeName" : "minibossbiped", --- > "typeName" : "largebiped", dungeons\other\challengerooms\ambush.json [TMX file differences are left out for huge size.] dungeons\other\challengerooms\angerpoint.json [TMX file differences are left out for huge size.] dungeons\other\challengerooms\challengerooms.dungeon 12c12 < "angerpoint", "runandgun", "doubleteam", "swarm", "firebat" --- > "firebat" 29,35d28 < "name" : "angerpoint", < "rules" : [ < [ "maxSpawnCount", [1] ] < ], < "def" : [ "tmx", "angerpoint.json" ] < }, < { 71,77d63 < "name" : "doubleteam", < "rules" : [ < [ "maxSpawnCount", [1] ] < ], < "def" : [ "tmx", "doubleteam.json" ] < }, < { 183,189d168 < "name" : "runandgun", < "rules" : [ < [ "maxSpawnCount", [1] ] < ], < "def" : [ "tmx", "runandgun.json" ] < }, < { 211,217d189 < "name" : "swarm", < "rules" : [ < [ "maxSpawnCount", [1] ] < ], < "def" : [ "tmx", "swarm.json" ] < }, < { 230a203,237 > > > /* THESE CHAMBERS NEED REWORKING FOR NEW MONSTERS > { > "name" : "angerpoint", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "angerpoint.json" ] > }, > > { > "name" : "doubleteam", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "doubleteam.json" ] > }, > > { > "name" : "runandgun", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "runandgun.json" ] > }, > > { > "name" : "swarm", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "swarm.json" ] > }, > */ dungeons\other\challengerooms\choices1.json [TMX file differences are left out for huge size.] dungeons\other\challengerooms\collapse.json [TMX file differences are left out for huge size.] dungeons\other\challengerooms\doubleteam.json [TMX file differences are left out for huge size.] dungeons\other\challengerooms\gauntlet.json [TMX file differences are left out for huge size.] dungeons\other\challengerooms\quiqksilver2.json [TMX file differences are left out for huge size.] dungeons\other\challengerooms\quiqksilver3.json [TMX file differences are left out for huge size.] dungeons\other\challengerooms\runandgun.json [TMX file differences are left out for huge size.] dungeons\other\challengerooms\rush.json [TMX file differences are left out for huge size.] dungeons\other\challengerooms\shortcircuit.json [TMX file differences are left out for huge size.] dungeons\other\challengerooms\spacejump.json [TMX file differences are left out for huge size.] dungeons\other\challengerooms\trenches.json [TMX file differences are left out for huge size.] dungeons\other\naturalcave\naturalcave.dungeon 635c635 < "comment" : "miniboss quadruped npc", --- > "comment" : "large quadruped npc", 639c639 < "typeName" : "minibossquadruped", --- > "typeName" : "largequadruped", 727c727 < "comment" : "miniboss biped npc", --- > "comment" : "large biped npc", 731c731 < "typeName" : "minibossbiped", --- > "typeName" : "largebiped", effects\barrierice.effectsource 8c8 < [ "iceswoosh1", "iceswoosh3", "iceswoosh2", "iceswoosh1", "iceswoosh3", "iceswoosh2", "iceswoosh1", "iceswoosh3", "iceswoosh2" ] --- > [ "iceswoosh1", "iceswoosh3", "barriericeaura", "iceswoosh1", "barriericeaura", "iceswoosh2", "iceswoosh1", "iceswoosh3", "barriericeaura" ] 15c15 < [ "iceswoosh1", "iceswoosh3", "iceswoosh2", "iceswoosh1", "iceswoosh3", "iceswoosh2", "iceswoosh1", "iceswoosh3", "iceswoosh2" ] --- > [ "iceswoosh1", "iceswoosh3", "barriericeaura", "iceswoosh1", "iceaura", "iceswoosh2", "iceswoosh1", "iceswoosh3", "barriericeaura" ] 22c22 < [ "iceswoosh4", "iceswoosh4", "iceswoosh4", "iceswoosh4", "iceswoosh4", "iceswoosh4" ] --- > [ "iceswoosh4", "barriericeaura", "iceshard", "iceswoosh4", "iceshard", "barriericeaura" ] interface\itemdescriptions\shield.itemdescription 25c25 < "value" : "Shield Health:" --- > "value" : "" interface\tooltips\shield.tooltip 18c18 < "position" : [127, 72], --- > "position" : [127, 71], 24c24 < "position" : [12, 72], --- > "position" : [12, 71], 30c30 < "position" : [127, 63], --- > "position" : [127, 62], 36c36 < "position" : [12, 63], --- > "position" : [12, 62], 42c42 < "position" : [12, 59], --- > "position" : [12, 58], items\active\shields\commonlargeshield.activeitem 14a15,17 > "animatedParts" : { "parts" : { "shield" : { "properties" : { > "shieldPoly" : [ [-0.5, -2.0], [-0.5, 1.75], [0.75, 1.0], [0.75, -1.25] ] > }}}}, 16c19 < "raiseShield" : [ "/sfx/melee/swing_axe.ogg" ] --- > "raiseShield" : [ "/sfx/melee/sword_guard.ogg" ] items\active\shields\commonsmallshield.activeitem 16c16 < "raiseShield" : [ "/sfx/melee/swing_dagger.ogg" ] --- > "raiseShield" : [ "/sfx/melee/sword_guard.ogg" ] items\active\shields\eyeshield.activeitem 20c20 < "raiseShield" : [ "/sfx/melee/swing_dagger.ogg" ], --- > "raiseShield" : [ "/sfx/melee/sword_guard.ogg" ], items\active\shields\floranshield.activeitem 20,23c20,23 < "raiseShield" : [ "/sfx/melee/swing_dagger.ogg" ], < "perfectBlock" : [ "/sfx/melee/shield_block_wood_perfect.ogg" ], < "block" : [ "/sfx/melee/shield_block_wood.ogg" ], < "break" : [ "/sfx/melee/shield_break_wood.ogg" ] --- > "raiseShield" : [ "/sfx/melee/sword_guard.ogg" ], > "perfectBlock" : [ "/sfx/melee/shield_block_floran_perfect.ogg" ], > "block" : [ "/sfx/melee/shield_block_floran.ogg" ], > "break" : [ "/sfx/melee/shield_break_floran.ogg" ] items\active\shields\mushroomshield.activeitem 20c20 < "raiseShield" : [ "/sfx/melee/swing_dagger.ogg" ], --- > "raiseShield" : [ "/sfx/melee/sword_guard.ogg" ], items\active\shields\riotshield.activeitem 18a19,21 > "animatedParts" : { "parts" : { "shield" : { "properties" : { > "shieldPoly" : [ [-0.5, -2.5], [-0.5, 2.25], [0.75, 1.5], [0.75, -1.75] ] > }}}}, 20c23 < "raiseShield" : [ "/sfx/melee/swing_dagger.ogg" ], --- > "raiseShield" : [ "/sfx/melee/sword_guard.ogg" ], items\active\shields\seashellshield.activeitem 18a19,21 > "animatedParts" : { "parts" : { "shield" : { "properties" : { > "shieldPoly" : [ [-0.5, -1.75], [-0.5, 2.0], [0.75, 1.25], [0.75, -1.0] ] > }}}}, 20,23c23,26 < "raiseShield" : [ "/sfx/melee/swing_dagger.ogg" ], < "perfectBlock" : [ "/sfx/melee/shield_block_wood_perfect.ogg" ], < "block" : [ "/sfx/melee/shield_block_wood.ogg" ], < "break" : [ "/sfx/melee/shield_break_wood.ogg" ] --- > "raiseShield" : [ "/sfx/melee/sword_guard.ogg" ], > "perfectBlock" : [ "/sfx/melee/shield_block_ice_perfect.ogg" ], > "block" : [ "/sfx/melee/shield_block_ice.ogg" ], > "break" : [ "/sfx/melee/shield_break_ice.ogg" ] items\active\shields\startershield.activeitem 21c21 < "raiseShield" : [ "/sfx/melee/swing_dagger.ogg" ], --- > "raiseShield" : [ "/sfx/melee/sword_guard.ogg" ], items\active\vehiclecontroller\vehiclecontroller.lua 51c51,52 < activeItem.setInstanceValue("filled", vehicleResult.storable) --- > if (vehicleResult) then > activeItem.setInstanceValue("filled", vehicleResult.storable) 53c54 < if vehicleResult.storable then --- > if vehicleResult.storable then 55,56c56,58 < self.vehicleStartHealth = vehicleResult.health < activeItem.setInventoryIcon(item.instanceValue("filledInventoryIcon")) --- > self.vehicleStartHealth = vehicleResult.health > activeItem.setInventoryIcon(item.instanceValue("filledInventoryIcon")) > end 57a60 > items\active\weapons\ballandchain\ballandchain.activeitem 32c32 < "returnSpeed" : 40, --- > "returnSpeed" : 20, items\active\weapons\ballandchain\ballandchain.lua 22c22 < self.maxChainLength = 10 --- > self.maxChainLength = 15 64c64,65 < if fireMode == "primary" then --- > if fireMode == "primary" and mcontroller.onGround() then > mcontroller.controlModifiers({movementSuppressed=true}) 67c68,73 < world.callScriptedEntity(self.projectileId, "pullChain", chainSourcePosition(), vec2.mag(mcontroller.velocity()) + 5, 5000) --- > local pullVector = world.distance(world.entityPosition(self.projectileId), chainSourcePosition()) > local pullAngle = pullVector[1] > 0 and vec2.angle(pullVector) or math.pi - vec2.angle(pullVector) > mcontroller.controlApproachVelocityAlongAngle(pullAngle, world.callScriptedEntity(self.projectileId, "speed"), 5000, true) > if mcontroller.onGround() then > world.callScriptedEntity(self.projectileId, "pullChain", chainSourcePosition(), 3, 500) > end items\active\weapons\fist\boxingglove.activeitem 8c8 < "tooltipKind" : "base", --- > "tooltipKind" : "fistweapon", 32c32 < "comboFinisher" : "/items/active/weapons/fist/combofinishers/uppercut.combofinisher", --- > "comboFinisher" : "/items/active/weapons/fist/combofinishers/powerpunch.combofinisher", items\active\weapons\fist\clawglove.activeitem 6c6 < "description" : "They aren't made of adamantium, but still quite sharp.", --- > "description" : "Not adamantium, but still cool.", 8c8 < "tooltipKind" : "base", --- > "tooltipKind" : "fistweapon", items\active\weapons\fist\fistweapon.animation 7c7,11 < "idle" : {}, --- > "idle" : { > "properties" : { > "particleEmittersOff" : ["swoosh"] > } > }, 12c16,19 < "transition" : "idle" --- > "transition" : "idle", > "properties" : { > "particleEmittersOn" : ["swoosh"] > } 54a62,66 > "particleEmitters" : { > "swoosh" : { > "particles" : [] > } > }, items\active\weapons\fist\gauntlet.activeitem 8c8 < "tooltipKind" : "base", --- > "tooltipKind" : "fistweapon", 32c32 < "comboFinisher" : "/items/active/weapons/fist/combofinishers/powerpunch.combofinisher", --- > "comboFinisher" : "/items/active/weapons/fist/combofinishers/uppercut.combofinisher", items\active\weapons\fist\combofinishers\dashslash.combofinisher 32c32 < "damageArea" : [[-1, -1.25], [3.0, -1.25], [3.0, 1.5], [-1, 1.5]] --- > "damageArea" : [[-1.0, -1.0], [1.0, -1.5], [4.0, -0.75], [4.0, 0.5], [1.0, 1.5], [-1.0, 1.0]] items\active\weapons\fist\swoosh\dashswoosh.frames 3c3 < "size" : [50, 20], --- > "size" : [59, 22], items\active\weapons\melee\altabilities\broadsword\downstab\downstab.altability 23c23 < "energyUsage" : 40.0, --- > "energyUsage" : 30.0, items\active\weapons\melee\altabilities\hammer\groundslam\groundslam.altability 23c23 < "energyUsage" : 160.0, --- > "energyUsage" : 80.0, items\active\weapons\melee\axe\commonaxe.activeitem 27c27 < "baseDps" : [6.5, 7.5], --- > "baseDps" : [6, 7], 32c32 < "knockback" : 30, --- > "knockback" : 15, items\active\weapons\melee\axe\npcaxe.activeitem 27c27 < "baseDps" : [6.5, 7.5], --- > "baseDps" : [6, 7], 32c32 < "knockback" : 30, --- > "knockback" : 15, items\active\weapons\melee\axe\rareaxe.activeitem 27c27 < "baseDps" : [6.5, 7.5], --- > "baseDps" : [6, 7], 32c32 < "knockback" : 30, --- > "knockback" : 15, items\active\weapons\melee\axe\uncommonaxe.activeitem 28c28 < "baseDps" : [6.5, 7.5], --- > "baseDps" : [6, 7], 33c33 < "knockback" : 30, --- > "knockback" : 15, items\active\weapons\melee\hammer\hammer.lua 40c40 < function HammerSmash:windup() --- > function HammerSmash:windup(windupProgress) 43c43 < local windupProgress = 0 --- > local windupProgress = windupProgress or 0 50c50 < if windupProgress > 0.8 then --- > if windupProgress > (self.stances.windup.minWindup / self.stances.windup.duration) then 60a61,65 > if self.fireMode == "primary" then > self:setState(self.windup, windupProgress) > return true > end > items\active\weapons\melee\hammer\npchammer.activeitem 61c61 < "minWindup" : 0.8, --- > "minWindup" : 0.4, items\active\weapons\ranged\altabilities\lance\lance.altability 138c138 < "energyUsage" : 80.0, --- > "energyUsage" : 40.0, items\active\weapons\ranged\boomerang\boomerang.activeitem 33a34,35 > "energyCost" : 10, > items\active\weapons\ranged\boomerang\boomerang.lua 10a11 > self.energyCost = item.instanceValue("energyCost", 0) 26c27 < if fireMode == "primary" then --- > if fireMode == "primary" and status.overConsumeResource("energy", self.energyCost) then items\active\weapons\ranged\boomerang\wormerang.activeitem 21d20 < "fireAngleOffset" : 10, 28,31c27,33 < "ignoreTerrain" : true, < "controlForce" : 15, < "pickupDistance" : 1.0, < "snapDistance" : 1.0 --- > "ignoreTerrain" : false, > "controlForce" : 20, > "pickupDistance" : 1.5, > "snapDistance" : 3.0, > > "wobbleRate" : 3.0, > "wobbleIntensity" : 6.0 items\active\weapons\ranged\chakram\chakram.activeitem 30,31c30,35 < "power" : 0.5, < "damageRepeatTimeout" : 0.2 --- > "power" : 1.0, > "damageRepeatTimeout" : 0.5, > > "pickupDistance" : 1.0, > > "maxDistance" : 10 items\active\weapons\ranged\chakram\sawchakram.activeitem 31c31,36 < "damageRepeatTimeout" : 0.2 --- > "damageRepeatTimeout" : 0.2, > > "pickupDistance" : 1.0, > > "maxDistance" : 13, > "stickTime" : 1.5 items\buildscripts\buildfist.lua 10a11,22 > -- calculate damage level multiplier > config.damageLevelMultiplier = root.evalFunction("weaponDamageLevelMultiplier", parameters.level or config.level or 1) > > config.tooltipFields = {} > config.tooltipFields.subtitle = "Fist Weapon" > config.tooltipFields.speedLabel = util.round(1 / config.primaryAttack.fireTime, 1) > config.tooltipFields.damagePerShotLabel = util.round(config.primaryAttack.baseDps * config.primaryAttack.fireTime * config.damageLevelMultiplier, 1) > if config.comboFinisher then > config.tooltipFields.comboFinisherTitleLabel = "Finisher:" > config.tooltipFields.comboFinisherLabel = config.comboFinisher.name or "unknown" > end > items\buildscripts\buildshield.lua 72c72 < config.tooltipFields.healthLabel = (parameters.baseShieldHealth or config.baseShieldHealth or 0) * root.evalFunction("shieldLevelMultiplier", parameters.level or config.level or 1) --- > config.tooltipFields.healthLabel = util.round((parameters.baseShieldHealth or config.baseShieldHealth or 0) * root.evalFunction("shieldLevelMultiplier", parameters.level or config.level or 1), 0) items\buildscripts\buildunrandshield.lua 14c14 < config.tooltipFields.healthLabel = (parameters.baseShieldHealth or config.baseShieldHealth or 0) * root.evalFunction("shieldLevelMultiplier", parameters.level or config.level or 1) --- > config.tooltipFields.healthLabel = util.round((parameters.baseShieldHealth or config.baseShieldHealth or 0) * root.evalFunction("shieldLevelMultiplier", parameters.level or config.level or 1), 0) monsters\monster.lua 245a246 > -- param rotationCenter 249c250,251 < angle = 0 --- > angle = 0, > rotationCenter = nil 256c258,259 < entity.rotateTransformationGroup(args.transformationGroup, angle) --- > local rotationCenter = BData:getVec2(args.rotationCenter) > entity.rotateTransformationGroup(args.transformationGroup, angle, rotationCenter) monsters\crawlers\triplod\triplod.animation 63c63 < "transformationGroups" : [ "facing", "body", "aim" ], --- > "transformationGroups" : [ "aim", "facing", "body" ], monsters\dungeon\apexbrainmutant\apexbrainmutant.animation 4c4 < "movement" : { --- > "body" : { 13,21d12 < "jump" : { < "frames" : 3, < "cycle" : 0.5, < "mode" : "transition", < "transition" : "fall" < }, < "fall" : { < "frames" : 1 < }, 25,30c16 < "cycle" : 0.25 < }, < "run" : { < "frames" : 4, < "mode" : "loop", < "cycle" : 0.25 --- > "cycle" : 1 32c18 < "chargeWindup" : { --- > "fire" : { 34c20 < "cycle" : 0.4, --- > "cycle" : 0.3, 36,46d21 < }, < "charge" : { < "frames" : 4, < "mode" : "loop", < "cycle" : 0.15 < }, < "knockback" : { < "frames" : 1 < }, < "knockout" : { < "frames" : 1 50,53c25,27 < < "attack" : { < "priority" : 1, < "default" : "idle", --- > "damage" : { > "priority" : 3, > "default" : "none", 55,73c29,30 < "idle" : { < "frames" : 4, < "mode" : "loop", < "cycle" : 1 < }, < "melee" : { < "frames" : 3, < "cycle" : 0.4, < "mode" : "loop" < }, < "charge" : { < "frames" : 3, < "mode" : "loop", < "cycle" : 0.15 < }, < "shooting" : { < "frames" : 3, < "cycle" : 0.4, < "mode" : "loop" --- > "none" : { > "frames" : 1 75,78c32,33 < "chargeAttack" : { < "frames" : 4, < "mode" : "loop", < "cycle" : 0.15 --- > "stunned" : { > "frames" : 1 91c46 < "movement" : { --- > "body" : { 94c49 < "image" : ":idle." --- > "image" : ":idle.?flipx" 99,129c54 < "image" : ":move." < } < }, < "run" : { < "properties" : { < "image" : ":move." < } < }, < "charge" : { < "properties" : { < "image" : ":walk." < } < }, < "jump" : { < "properties" : { < "image" : ":jump." < } < }, < "fall" : { < "properties" : { < "image" : ":fall." < } < }, < "chargeWindup" : { < "properties" : { < "image" : ":attack." < } < }, < "knockback" : { < "properties" : { < "image" : ":idle." --- > "image" : ":walk.?flipx" 132c57 < "knockout" : { --- > "fire" : { 134c59 < "image" : ":idle." --- > "image" : ":fire.?flipx" 138,140c63,64 < < "attack" : { < "melee" : { --- > "damage" : { > "stunned" : { 142,157c66 < "image" : ":attack." < } < }, < "shooting" : { < "properties" : { < "image" : ":attack." < } < }, < "charge" : { < "properties" : { < "image" : ":attack." < } < }, < "chargeAttack" : { < "properties" : { < "image" : ":walk." --- > "image" : ":hurt.?flipx" 166,167c75,76 < "image" : ":arm", < "rotationGroup" : "projectileAim", --- > "image" : ":arm?flipx", > "transformationGroups" : [ "body", "aim" ], 174,178c83,85 < "rotationGroups" : { < "projectileAim" : { < "rotationCenter" : [-0.25, 0], < "angularVelocity" : 3.0 < } --- > "transformationGroups" : { > "body" : { "interpolated" : true }, > "aim" : { "interpolated" : true } 184,359c91,107 < { < "particle" : { < "type" : "animated", < "animation" : "/animations/puff2c/puff2c.animation", < "size" : 1, < "angularVelocity" : 35, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "approach" : [1, 1], < "timeToLive" : 0.4, < "layer" : "middle" < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < } --- > { "particle" : "monstersplosion" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathfizz1left" }, > { "particle" : "deathfizz1right" }, > { "particle" : "deathfizz2left" }, > { "particle" : "deathfizz2right" }, > { "particle" : "deathfizz3left" }, > { "particle" : "deathfizz3right" }, > { "particle" : "deathfizz4left" }, > { "particle" : "deathfizz4right" } 363a112,116 > "sounds" : { > "aggroHop" : [ ], > "deathPuff" : [ "/sfx/npc/enemydeathpuff.ogg" ] > }, > 370,374d122 < }, < < "sounds" : { < "turnHostile" : [ ], < "deathPuff" : [ "/sfx/npc/enemydeathpuff.ogg" ] monsters\dungeon\apexbrainmutant\apexbrainmutant.monstertype 6c6 < "reversed" : true, --- > "reversed" : false, 14,24c14 < "/monsters/generated/ground/groundMonster.lua", < "/scripts/pathing.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/monsters/generated/ground/approachState.lua", < "/monsters/generated/ground/fleeState.lua", < "/monsters/generated/ground/wanderState.lua", < < "/monsters/generated/ground/skills/createGroundRangedAttack.lua" --- > "/monsters/monster.lua" 26a17,83 > "behavior" : "monster", > > "behaviorConfig" : { > "damageOnTouch" : true, > > "queryTargets" : true, > "targetQueryRange" : 20, > "targetOnDamage" : true, > "targetEntityTypes" : [ "player", "npc", "monster" ], > "keepTargetInSight" : true, > "keepTargetInRange" : 30, > "targetOutOfSightTime" : 2.5, > > "foundTargetActions" : [ { "name" : "action-aggrohop" } ], > > "fleeActions" : [], > > "hostileActions" : [ > { > "name" : "action-fire", > "cooldown" : 1.0, > "parameters" : { > "maximumRange" : 15, > "minimumRange" : 2, > "windupState" : "", > "windupTime" : 0.0, > > "projectileType" : "lightning", > "power" : 4, > "fireOffset" : [0.0, 0.0], > "projectileCount" : 20, > "projectileInterval" : 0.1, > "aimAtTarget" : true, > "rotateAim" : true, > "rotatedOffset" : [3.5, 0.25], > "fireState" : "fire", > "fireDelay" : 0.2, > "fireSound" : "", > > "winddownState" : "", > "winddownTime" : 2 > } > } > ], > > "periodicActions" : [], > > "approachActions" : [ > { > "name" : "approach-walk", > "parameters" : { > "canJump" : false > } > } > ], > > "wanderActions" : [ > { > "name" : "wander-walk", > "cooldown" : 6.0, > "parameters" : { > "wanderTime" : [3, 6] > } > } > ] > }, > 66c123 < "mass" : 0.2, --- > "mass" : 1.0, 81c138 < "movement" : "idle" --- > "damage" : "stunned" monsters\dungeon\apexmutant\apexmutant.animation 4c4 < "movement" : { --- > "body" : { 11,19d10 < "jump" : { < "frames" : 4, < "cycle" : 0.5, < "mode" : "transition", < "transition" : "fall" < }, < "fall" : { < "frames" : 4 < }, 22c13 < "cycle" : 2.0, --- > "cycle" : 0.8, 27,32c18 < "cycle" : 0.5, < "mode" : "loop" < }, < "chargeWindup" : { < "frames" : 8, < "cycle" : 0.375, --- > "cycle" : 0.4, 35,38c21,23 < "charge" : { < "frames" : 8, < "cycle" : 0.275, < "mode" : "loop" --- > "attack" : { > "frames" : 4, > "cycle" : 0.2 40,41c25,27 < "knockback" : { < "frames" : 1 --- > "jump" : { > "frames" : 4, > "cycle" : 0.4 43,44c29,31 < "knockout" : { < "frames" : 1 --- > "fall" : { > "frames" : 4, > "cycle" : 0.4 48,51c35,37 < < "attack" : { < "priority" : 1, < "default" : "idle", --- > "damage" : { > "priority" : 3, > "default" : "none", 53c39 < "idle" : { --- > "none" : { 56,68c42 < "melee" : { < "frames" : 4, < "cycle" : 0.4, < "mode" : "transition", < "transition" : "idle" < }, < "shooting" : { < "frames" : 4, < "cycle" : 0.4, < "mode" : "transition", < "transition" : "idle" < }, < "charge" : { --- > "stunned" : { 70,74d43 < }, < "chargeAttack" : { < "frames" : 8, < "cycle" : 0.6, < "mode" : "loop" 81a51,54 > "properties" : { > "transformationGroups" : [ "body" ], > "offset" : [0.0, 0.0] > }, 83c56 < "movement" : { --- > "body" : { 86c59 < "image" : ":idle" --- > "image" : ":idle." 99c72 < "charge" : { --- > "attack" : { 101c74 < "image" : ":walk." --- > "image" : ":attack." 113,127d85 < }, < "chargeWindup" : { < "properties" : { < "image" : ":walk." < } < }, < "knockback" : { < "properties" : { < "image" : ":walk." < } < }, < "knockout" : { < "properties" : { < "image" : ":walk." < } 130,137c88,89 < < "attack" : { < "melee" : { < "properties" : { < "image" : ":attack." < } < }, < "shooting" : { --- > "damage" : { > "stunned" :{ 139,149c91 < "image" : ":attack." < } < }, < "charge" : { < "properties" : { < "image" : ":attack." < } < }, < "chargeAttack" : { < "properties" : { < "image" : ":walk." --- > "image" : ":hurt." 158,161c100,101 < "rotationGroups" : { < "projectileAim" : { < "angularVelocity" : 1.5 < } --- > "transformationGroups" : { > "body" : { "interpolated" : true } 165,170d104 < "damage" : { < "emissionRate" : 0.7, < "particles" : [ < ] < }, < 173,348c107,123 < { < "particle" : { < "type" : "animated", < "animation" : "/animations/puff2c/puff2c.animation", < "size" : 1, < "angularVelocity" : 35, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "approach" : [1, 1], < "timeToLive" : 0.4, < "layer" : "middle" < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < } --- > { "particle" : "monstersplosion" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathfizz1left" }, > { "particle" : "deathfizz1right" }, > { "particle" : "deathfizz2left" }, > { "particle" : "deathfizz2right" }, > { "particle" : "deathfizz3left" }, > { "particle" : "deathfizz3right" }, > { "particle" : "deathfizz4left" }, > { "particle" : "deathfizz4right" } 362c137 < "turnHostile" : [ ], --- > "aggroHop" : [ ], monsters\dungeon\apexmutant\apexmutant.monstertype 13,23c13 < "/monsters/generated/ground/groundMonster.lua", < "/scripts/pathing.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/monsters/generated/ground/approachState.lua", < "/monsters/generated/ground/fleeState.lua", < "/monsters/generated/ground/wanderState.lua", < < "/monsters/generated/ground/skills/createGroundRangedAttack.lua" --- > "/monsters/monster.lua" 26,38c16 < "damageTeam" : 1, < < "blockedSensors" : [ [1.5, -0.8], [1.5, 0.2], [1.5, 0.7] ], < "fallSensors" : [ [0.5, -2.5], [0.5, -3.5], [0.5, -4.5], [2.0, -2.5], [2.0, -3.5], [2.0, -4.5] ], < < "baseSkills" : [ "meleeAttack"], < "specialSkills" : [ "shockBallAttack" ], < < "projectileSourcePosition" : [0.5, 0], < < "attackStartDistance" : 3.5, < "attackTime" : 0.75, < "attackCooldownTime" : 0.5, --- > "behavior" : "monster", 40,45c18,19 < "aggressive" : true, < "territoryDistance" : 10.0, < "territorialTargetRadius" : 20.0, < "minimalTargetRadius" : 6.0, < "targetSearchTime" : 0.5, < "targetHoldTime" : 5.0, --- > "behaviorConfig" : { > "damageOnTouch" : true, 47,56c21,78 < "closeDistance" : 1.5, < < "wanderTime" : [4.0, 6.0], < "wanderMovementTime" : [2.0, 3.0], < < "jumpTargetDistance" : 6, < "jumpTime" : [1.4, 2.0], < < "pathing" : { < "canOpenDoors" : false --- > "queryTargets" : true, > "targetQueryRange" : 20, > "targetOnDamage" : true, > "targetEntityTypes" : [ "player", "npc", "monster" ], > "keepTargetInSight" : true, > "keepTargetInRange" : 30, > "targetOutOfSightTime" : 2.5, > > "foundTargetActions" : [ { "name" : "action-aggrohop" } ], > > "fleeActions" : [], > > "hostileActions" : [ > { > "name" : "action-charge", > "cooldown" : 1.5, > "parameters" : { > "maximumRange" : 5, > "minimumRange" : 1, > "windupTime" : 0.0, > "windupState" : "", > > "aimAtTarget" : false, > "chargeTime" : 0.2, > "chargeSpeed" : 15, > "chargeControlForce" : 200, > "chargeState" : "attack", > "wallCrashSound" : "", > "wallCrashEmitter" : "", > > "winddownState" : "idle", > "winddownTime" : 0.5 > } > } > ], > > "periodicActions" : [], > > "approachActions" : [ > { > "name" : "approach-walk", > "parameters" : { > "canJump" : false, > "run" : true, > "moveState" : "run" > } > } > ], > > "wanderActions" : [ > { > "name" : "wander-walk", > "cooldown" : 6.0, > "parameters" : { > "wanderTime" : [2, 4] > } > } > ] 62,65d83 < "exhaustionTimer" : 3.0, < "exhaustionTimeout" : 3.0, < "exhaustionDistanceLimit" : 1.0, < 69,71c87,89 < "mass" : 0.5, < "walkSpeed" : 1.0, < "runSpeed" : 2.0, --- > "mass" : 1.0, > "walkSpeed" : 2.0, > "runSpeed" : 4.0, 84,85c102 < "movement" : "knockout", < "attack" : "idle" --- > "damage" : "stunned" 91a109 > "knockback" : 15, monsters\dungeon\moontant\default.frames 7,8c7,8 < [ null, "run.1", "run.2", "run.3", "run.4", "run.5", "run.6", "run.7", "run.8" ], < [ null, "idle", null, null, null, null, null, null, null ], --- > [ null, "fly.1", "fly.2", "fly.3", "fly.4", "fly.5", "fly.6", "fly.7", "fly.8" ], > [ null, "idle.1", null, null, null, null, null, null, null ], 13a14,16 > }, > "aliases" : { > "hurt.1" : "jump.2" monsters\dungeon\moontant\moontant.animation 4c4 < "movement" : { --- > "body" : { 12,13c12,13 < "frames" : 1, < "cycle" : 0.3 --- > "frames" : 2, > "cycle" : 0.2 16c16 < "frames" : 1, --- > "frames" : 2, 26,31c26 < "cycle" : 0.75, < "mode" : "loop" < }, < "chargeWindup" : { < "frames" : 8, < "cycle" : 0.5, --- > "cycle" : 0.6, 35,40c30,31 < "frames" : 8, < "cycle" : 0.5, < "mode" : "loop" < }, < "knockback" : { < "frames" : 1 --- > "frames" : 7, > "cycle" : 0.7 42,43c33,35 < "knockout" : { < "frames" : 1 --- > "fire" : { > "frames" : 6, > "cycle" : 0.6 47,50c39,41 < < "attack" : { < "priority" : 1, < "default" : "idle", --- > "damage" : { > "priority" : 3, > "default" : "none", 52c43 < "idle" : { --- > "none" : { 55,61c46 < "melee" : { < "frames" : 7, < "cycle" : 0.6, < "mode" : "transition", < "transition" : "idle" < }, < "charge" : { --- > "stunned" : { 63,71d47 < }, < "chargeAttack" : { < "frames" : 4, < "cycle" : 0.6, < "mode" : "end" < }, < "shooting" : { < "frames" : 6, < "cycle" : 1.0 79a56 > "transformationGroups" : [ "body" ], 84c61 < "movement" : { --- > "body" : { 87c64 < "image" : ":idle" --- > "image" : ":idle." 97,102c74 < "image" : ":run." < } < }, < "charge" : { < "properties" : { < "image" : ":run." --- > "image" : ":walk." 107c79 < "image" : ":jump.2" --- > "image" : ":jump." 112,117c84 < "image" : ":fall.2" < } < }, < "chargeWindup" : { < "properties" : { < "image" : ":idle" --- > "image" : ":fall." 120c87 < "knockback" : { --- > "charge" : { 122c89 < "image" : ":fall.2" --- > "image" : ":melee." 125c92 < "knockout" : { --- > "fire" : { 127c94 < "image" : ":jump.1" --- > "image" : ":ranged." 131,133c98,99 < < "attack" : { < "melee" : { --- > "damage" : { > "stunned" : { 135,150c101 < "image" : ":melee." < } < }, < "charge" : { < "properties" : { < "image" : ":run." < } < }, < "chargeAttack" : { < "properties" : { < "image" : ":run." < } < }, < "shooting" : { < "properties" : { < "image" : ":ranged." --- > "image" : ":hurt." 158a110 > "transformationGroups" : [ "body" ], 163c115 < "movement" : { --- > "body" : { 166c118 < "image" : ":idle" --- > "image" : ":idle." 176,181c128 < "image" : ":run." < } < }, < "charge" : { < "properties" : { < "image" : ":run." --- > "image" : ":walk." 186c133 < "image" : ":jump.2" --- > "image" : ":jump." 191,196c138 < "image" : ":fall.2" < } < }, < "chargeWindup" : { < "properties" : { < "image" : ":idle" --- > "image" : ":fall." 199c141 < "knockback" : { --- > "charge" : { 201c143 < "image" : ":fall.2" --- > "image" : ":melee." 204c146 < "knockout" : { --- > "fire" : { 206c148 < "image" : ":jump.1" --- > "image" : ":ranged." 210,217c152,153 < < "attack" : { < "melee" : { < "properties" : { < "image" : ":melee." < } < }, < "charge" : { --- > "damage" : { > "stunned" : { 219,229c155 < "image" : ":run." < } < }, < "chargeAttack" : { < "properties" : { < "image" : ":run." < } < }, < "shooting" : { < "properties" : { < "image" : ":ranged." --- > "image" : ":hurt." 238,241c164,165 < "rotationGroups" : { < "projectileAim" : { < "angularVelocity" : 1.5 < } --- > "transformationGroups" : { > "body" : { "interpolated" : true } 245,299d168 < "damage" : { < "emissionRate" : 0.7, < "particles" : [ < ] < }, < < "stun" : { < "emissionRate" : 5, < "particles" : [ < { < "particle" : { < "type" : "animated", < "animation" : "/animations/sparkles/sparkle4.animation", < "size" : 1, < "position" : [0, 0.5], < "destructionTime" : 7, < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "timeToLive" : 0.7, < "layer" : "front", < "variance" : { < "position" : [1, 0.7] < } < } < } < ] < }, < < "gust" : { < "emissionRate" : 20, < "particles" : [ < { < "particle" : { < "type" : "ember", < "size" : 1.5, < "color" : [255, 255, 255, 255], < "fade" : 0.25, < "position" : [-1.5, 0], < "destructionAction" : "shrink", < "destructionTime" : 7, < "initialVelocity" : [-20, 0.0], < "finalVelocity" : [-2, 0.0], < "timeToLive" : 0.7, < "light" : [14, 47, 72], < "layer" : "front", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [2, 2], < "position" : [0, 1] < } < } < } < ] < }, < 302,522c171,187 < { < "particle" : { < "type" : "animated", < "animation" : "/animations/moontantdeath/moontantdeath.animation", < "position" : [0, 0], < "initialVelocity" : [0.0, 0.0], < "finalVelocity" : [0, 0], < "approach" : [5, -4], < "destructionAction" : "shrink", < "destructionTime" : 0.5, < "fade" : 1, < "size" : 1, < "layer" : "front", < "timeToLive" : 0.5, < "variance" : { < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/puff2c/puff2c.animation", < "size" : 1, < "angularVelocity" : 35, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "approach" : [1, 1], < "timeToLive" : 0.5, < "layer" : "middle" < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < } < ] < }, < < "captureParticles" : { < "particles" : [ < { < "particle" : { < "type" : "animated", < "animation" : "/animations/energy/energy.animation", < "size" : 1, < "angularVelocity" : 35, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "approach" : [1, 1], < "timeToLive" : 0.4, < "layer" : "middle" < } < } < ] < }, < < "levelUp" : { < "particles" : [ < { "particle" : "monsterlevelup" } --- > { "particle" : "monstersplosion" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathfizz1left" }, > { "particle" : "deathfizz1right" }, > { "particle" : "deathfizz2left" }, > { "particle" : "deathfizz2right" }, > { "particle" : "deathfizz3left" }, > { "particle" : "deathfizz3right" }, > { "particle" : "deathfizz4left" }, > { "particle" : "deathfizz4right" } 528c193 < "turnHostile" : [ "/sfx/npc/monsters/monster_surprise.ogg" ], --- > "aggroHop" : [ "/sfx/npc/monsters/monster_surprise.ogg" ], 530a196 > 536,541d201 < }, < < "recover" : { < "type" : "flash", < "time" : 0.25, < "directives" : "fade=33FF33;0.25" monsters\dungeon\moontant\moontant.monstertype 15,29c15 < "/monsters/generated/ground/groundMonster.lua", < "/scripts/pathing.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/monsters/generated/ground/aggroHopState.lua", < "/monsters/generated/ground/approachState.lua", < "/monsters/generated/ground/fleeState.lua", < "/monsters/generated/ground/stunState.lua", < "/monsters/generated/ground/captiveState.lua", < "/monsters/generated/ground/socializeState.lua", < "/monsters/generated/ground/wanderState.lua", < < "/monsters/generated/ground/skills/createGroundRangedAttack.lua" --- > "/monsters/monster.lua" 32,41c18 < "territoryDistance" : 5.0, < "territorialTargetRadius" : 20.0, < "minimalTargetRadius" : 10.0, < "targetSearchTime" : 0.5, < "targetHoldTime" : 5.0, < < "closeDistance" : 1.5, < < "wanderTime" : [4.0, 6.0], < "wanderMovementTime" : [2.0, 3.0], --- > "behavior" : "monster", 43,44c20,21 < "jumpTargetDistance" : 4, < "jumpTime" : [0.8, 1.4], --- > "behaviorConfig" : { > "damageOnTouch" : true, 46,47c23,91 < "pathing" : { < "canOpenDoors" : false --- > "queryTargets" : true, > "targetQueryRange" : 30, > "targetOnDamage" : true, > "targetEntityTypes" : [ "player", "npc", "monster" ], > "keepTargetInSight" : true, > "keepTargetInRange" : 50, > "targetOutOfSightTime" : 2.5, > > "foundTargetActions" : [ { "name" : "action-aggrohop" } ], > > "fleeActions" : [], > > "hostileActions" : [ > { > "name" : "action-fire", > "cooldown" : 3.0, > "parameters" : { > "requireLineOfSight" : true, > "maximumRange" : 15, > "minimumRange" : 5, > "windupState" : "", > "windupTime" : 0.0, > > "projectileType" : "moontantgoop", > "power" : 10, > "aimAtTarget" : true, > "fireOffset" : [1, -0.5], > "projectileCount" : 4, > "projectileInterval" : 0.066, > "fireState" : "fire", > "fireDelay" : 0.2, > "fireSound" : "", > > "fireArc": true, > "projectileSpeed": 30, > "gravityMultiplier": 0.6, > > "winddownState" : "", > "winddownTime" : 0.5 > } > } > ], > > "periodicActions" : [], > > "approachActions" : [ > { > "name" : "approach-walk", > "parameters" : { > "canJump" : true, > "maxJumps" : 6, > "jumpXVelocity" : 12, > "jumpYVelocity" : 30, > "jumpXControlForce" : 50, > "run" : true, > "moveState" : "run" > } > } > ], > > "wanderActions" : [ > { > "name" : "wander-walk", > "cooldown" : 6.0, > "parameters" : { > "wanderTime" : [5, 15] > } > } > ] 53,54c97 < "movement" : "knockout", < "attack" : "idle" --- > "damage" : "stunned" 57,58d99 < "captureParticles" : "captureParticles", < "levelUpParticles" : "levelUp", 60,69c101,161 < "exhaustionTimer" : 3.0, < "exhaustionTimeout" : 3.0, < "exhaustionDistanceLimit" : 1.0 < }, < < "familyParameters" : [ < [ < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "moontantGoopAttack" ] --- > "metaBoundBox" : [-2.5, -2.5, 2.5, 2.5], > "scale" : 1.0, > > "movementSettings" : { > "collisionPoly" : [ [-0.75, -2.0], [-0.35, -2.5], [0.35, -2.5], [0.75, -2.0], [0.75, 0.65], [0.35, 1.22], [-0.35, 1.22], [-0.75, 0.65] ], > "mass" : 1.0, > "walkSpeed" : 4, > "runSpeed" : 12, > > "airJumpProfile" : { > "jumpSpeed" : 0.0 > } > }, > > "touchDamage" : { > "poly" : [ [-0.75, -2.0], [-0.35, -2.5], [0.35, -2.5], [0.75, -2.0], [0.75, 0.65], [0.35, 1.22], [-0.35, 1.22], [-0.75, 0.65] ], > "damage" : 5, > > "teamType" : "enemy", > "damageSourceKind" : "default", > "statusEffects" : [ ] > }, > > "statusSettings" : { > "statusProperties" : { > "targetMaterialKind" : "organic" > }, > > "appliesEnvironmentStatusEffects" : false, > "minimumLiquidStatusEffectPercentage" : 0.1, > > "primaryScriptSources" : [ > "/stats/monster_primary.lua" > ], > "primaryScriptDelta" : 5, > > "stats" : { > "knockbackStunTime" : { > "baseValue" : 0.25 > }, > "maxHealth" : { > "baseValue" : 60 > }, > "protection" : { > "baseValue" : 0.0 > }, > "healthRegen" : { > "baseValue" : 0.0 > } > }, > > "resources" : { > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, > "health" : { > "maxStat" : "maxHealth", > "deltaStat" : "healthRegen", > "defaultPercentage" : 100 > } 71,72c163 < ] < ], --- > }, 74,149c165,167 < "variantParameters" : [ < [ < [1.0, { < "scale" : 1.0, < < "movementSettings" : { < "collisionPoly" : [ [-0.75, -2.0], [-0.35, -2.5], [0.35, -2.5], [0.75, -2.0], [0.75, 0.65], [0.35, 1.22], [-0.35, 1.22], [-0.75, 0.65] ], < "mass" : 0.6, < "walkSpeed" : 4, < "runSpeed" : 12, < < "airJumpProfile" : { < "jumpSpeed" : 0.0 < } < }, < < "metaBoundBox" : [-2.5, -2.5, 2.5, 2.5], < < "blockedSensors" : [ [1.5, -1.5], [1.5, -1.0], [1.5, -0.2], [1.5, 0.6] ], < "fallSensors" : [ [0.5, -2.5], [0.5, -3.5], [0.5, -4.5], [2.0, -2.5], [2.0, -3.5], [2.0, -4.5] ], < < "touchDamage" : { < "poly" : [ [-0.75, -2.0], [-0.35, -2.5], [0.35, -2.5], [0.75, -2.0], [0.75, 0.65], [0.35, 1.22], [-0.35, 1.22], [-0.75, 0.65] ], < "damage" : 5, < < "teamType" : "enemy", < "damageSourceKind" : "default", < "statusEffects" : [ ] < }, < < "statusSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/monster_primary.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "knockbackStunTime" : { < "baseValue" : 0.25 < }, < "maxHealth" : { < "baseValue" : 60 < }, < "protection" : { < "baseValue" : 0.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "stunned" : { < "deltaValue" : -1.0, < "initialValue" : 0.0 < }, < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 100 < } < } < }, < < "mouthOffset" : [0, 0], < "feetOffset" : [0, -21] < } ] < ] < ] --- > "mouthOffset" : [0, 0], > "feetOffset" : [0, -21] > } monsters\dungeon\pogolem\pogolem.animation 4c4 < "movement" : { --- > "body" : { 20,27c20,22 < "walk" : { < "frames" : 8, < "mode" : "loop" < }, < "run" : { < "frames" : 8, < "cycle" : 0.5, < "mode" : "loop" --- > "fire" : { > "frames" : 4, > "cycle" : 0.4 29c24 < "chargeWindup" : { --- > "walk" : { 31c26 < "cycle" : 0.375, --- > "cycle" : 0.8, 34c29 < "charge" : { --- > "roar" : { 36,43c31 < "cycle" : 0.275, < "mode" : "loop" < }, < "knockback" : { < "frames" : 1 < }, < "knockout" : { < "frames" : 1 --- > "cycle" : 0.8 47,50c35,37 < < "attack" : { < "priority" : 1, < "default" : "idle", --- > "damage" : { > "priority" : 3, > "default" : "none", 52,54c39,40 < "idle" : { < "frames" : 4, < "mode" : "loop" --- > "none" : { > "frames" : 1 56c42 < "melee" : { --- > "stunned" : { 58,72c44 < "mode" : "end" < }, < "shooting" : { < "frames" : 8, < "mode" : "transition", < "transition" : "idle" < }, < "charge" : { < "frames" : 8, < "cycle" : 0.8, < "mode" : "loop" < }, < "chargeAttack" : { < "frames" : 8, < "cycle" : 0.6, --- > "cycle" : 0.4, 80a53,57 > "properties" : { > "centered" : true, > "transformationGroups" : [ "body" ], > "offset" : [0, 0.375] > }, 82c59 < "movement" : { --- > "body" : { 88,102d64 < "walk" : { < "properties" : { < "image" : ":walk." < } < }, < "run" : { < "properties" : { < "image" : ":walk." < } < }, < "charge" : { < "properties" : { < "image" : ":walk." < } < }, 110c72 < "image" : ":jump." --- > "image" : ":idle." 113c75 < "chargeWindup" : { --- > "fire" : { 115c77 < "image" : ":walk." --- > "image" : ":fire." 118c80 < "knockback" : { --- > "walk" : { 120c82 < "image" : ":idle." --- > "image" : ":walk." 123c85 < "knockout" : { --- > "roar" : { 125c87 < "image" : ":idle." --- > "image" : ":roar." 129,131c91,92 < < "attack" : { < "melee" : { --- > "damage" : { > "stunned" : { 133,148c94 < "image" : ":throw." < } < }, < "shooting" : { < "properties" : { < "image" : ":ranged." < } < }, < "charge" : { < "properties" : { < "image" : ":walk." < } < }, < "chargeAttack" : { < "properties" : { < "image" : ":walk." --- > "image" : ":hurt." 157,160c103,104 < "rotationGroups" : { < "projectileAim" : { < "angularVelocity" : 1.5 < } --- > "transformationGroups" : { > "body" : { "interpolated" : true } 164,169d107 < "damage" : { < "emissionRate" : 0.7, < "particles" : [ < ] < }, < 172,347c110,126 < { < "particle" : { < "type" : "animated", < "animation" : "/animations/puff2c/puff2c.animation", < "size" : 1, < "angularVelocity" : 35, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "approach" : [1, 1], < "timeToLive" : 0.4, < "layer" : "middle" < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < } --- > { "particle" : "monstersplosion" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathfizz1left" }, > { "particle" : "deathfizz1right" }, > { "particle" : "deathfizz2left" }, > { "particle" : "deathfizz2right" }, > { "particle" : "deathfizz3left" }, > { "particle" : "deathfizz3right" }, > { "particle" : "deathfizz4left" }, > { "particle" : "deathfizz4right" } 351a131,135 > "sounds" : { > "aggroHop" : [ "/sfx/npc/monsters/monster_surprise.ogg" ], > "deathPuff" : [ "/sfx/npc/enemydeathpuff.ogg" ] > }, > 358,362d141 < }, < < "sounds" : { < "turnHostile" : [ ], < "deathPuff" : [ "/sfx/npc/enemydeathpuff.ogg" ] monsters\dungeon\pogolem\pogolem.monstertype 14,24c14 < "/monsters/generated/ground/groundMonster.lua", < "/scripts/pathing.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/monsters/generated/ground/approachState.lua", < "/monsters/generated/ground/fleeState.lua", < "/monsters/generated/ground/wanderState.lua", < < "/monsters/generated/ground/skills/createGroundRangedAttack.lua" --- > "/monsters/monster.lua" 27,46c17 < "baseSkills" : [ "poopBreathAttack"], < "specialSkills" : [ "throwPoAttack" ], < < "projectileSourcePosition" : [1.875, 1], < < "attackStartDistance" : 3.5, < "attackTime" : 0.75, < "attackCooldownTime" : 0.5, < < "aggressive" : true, < "territoryDistance" : 10.0, < "territorialTargetRadius" : 20.0, < "minimalTargetRadius" : 6.0, < "targetSearchTime" : 0.5, < "targetHoldTime" : 5.0, < < "closeDistance" : 1.5, < < "wanderTime" : [4.0, 6.0], < "wanderMovementTime" : [2.0, 3.0], --- > "behavior" : "monster", 48,49c19,20 < "jumpTargetDistance" : 6, < "jumpTime" : [1.4, 2.0], --- > "behaviorConfig" : { > "damageOnTouch" : true, 51,52c22,110 < "pathing" : { < "canOpenDoors" : false --- > "queryTargets" : true, > "targetQueryRange" : 50, > "targetOnDamage" : true, > "targetEntityTypes" : [ "player", "npc", "monster" ], > "keepTargetInSight" : true, > "keepTargetInRange" : 20, > "targetOutOfSightTime" : 2.5, > > "foundTargetActions" : [ { "name" : "action-aggrohop" } ], > > "fleeActions" : [], > > "hostileActions" : [ > { > "name" : "action-fire", > "cooldown" : 3.0, > "parameters" : { > "maximumRange" : 15, > "minimumRange" : 2, > "windupState" : "", > "windupTime" : 0.0, > > "projectileType" : "poball", > "power" : 4, > "fireOffset" : [1.0, 1], > "aimAtTarget" : true, > "fireState" : "fire", > "fireDelay" : 0.2, > "fireSound" : "", > > "fireArc": true, > "projectileSpeed": 32, > "gravityMultiplier": 0.6, > > "winddownState" : "", > "winddownTime" : 2 > } > }, > { > "name" : "action-fire", > "parameters" : { > "requireLineOfSight" : true, > "maximumRange" : 10, > "minimumRange" : 2, > "maxYRange" : 4, > "windupState" : "", > "windupTime" : 0.0, > > "projectileType" : "poopbreath", > "power" : 2, > "fireOffset" : [1.0, 1], > "projectileCount" : 6, > "projectileInterval" : 0.05, > "aimAtTarget" : false, > "fireState" : "roar", > "fireDelay" : 0.3, > "fireSound" : "", > > "winddownState" : "", > "winddownTime" : 0.5 > } > } > ], > > "periodicActions" : [], > > "approachActions" : [ > { > "name" : "approach-walk", > "parameters" : { > "canJump" : true, > "maxJumps" : 6, > "jumpXVelocity" : 12, > "jumpYVelocity" : 30, > "jumpXControlForce" : 50, > "minXRange" : 10 > } > } > ], > > "wanderActions" : [ > { > "name" : "wander-walk", > "cooldown" : 6.0, > "parameters" : { > "wanderTime" : [3, 6] > } > } > ] 57a116,124 > "touchDamage" : { > "poly" : [ [0.6875, 1.9375], [1.1875, 1.4375], [1.1875, -1.4375], [0.6875, -1.9375], [-0.6875, -1.9375], [-1.1875, -1.4375], [-1.1875, 1.4375], [-0.6875, 1.9375] ], > "damage" : 15, > > "teamType" : "enemy", > "damageSourceKind" : "lash", > "statusEffects" : [ ] > }, > 59c126 < "collisionPoly" : [ [-1.625, -2.375], [1.75, -2.375], [1.75, 2.0], [-1.625, 2.0] ], --- > "collisionPoly" : [ [0.6875, 1.9375], [1.1875, 1.4375], [1.1875, -1.4375], [0.6875, -1.9375], [-0.6875, -1.9375], [-1.1875, -1.4375], [-1.1875, 1.4375], [-0.6875, 1.9375] ], 74c141,144 < "knockoutTime" : 0.1, --- > "knockoutTime" : 0.3, > "knockoutAnimationStates" : { > "damage" : "stunned" > }, 77,85d146 < < "touchDamage" : { < "poly" : [ [-1.625, -2.375], [1.75, -2.375], [1.75, 2.0], [-1.625, 2.0] ], < "damage" : 15, < < "teamType" : "enemy", < "damageSourceKind" : "lash", < "statusEffects" : [ ] < }, monsters\dungeon\serpentdroid\serpentdroid.animation 4c4 < "movement" : { --- > "body" : { 11,19c11 < "cycle" : 1 < }, < "jump" : { < "frames" : 12, < "mode" : "loop", < "cycle" : 1 < }, < "fall" : { < "frames" : 1 --- > "cycle" : 1.2 24c16 < "cycle" : 0.25 --- > "cycle" : 0.4 26,29c18,20 < "run" : { < "frames" : 4, < "mode" : "loop", < "cycle" : 0.15 --- > "windup" : { > "frames" : 9, > "cycle" : 0.9 31,34c22,24 < "chargeWindup" : { < "frames" : 3, < "mode" : "loop", < "cycle" : 0.25 --- > "invulnerable" : { > "frames" : 14, > "cycle" : 1.4 36,42c26,28 < "charge" : { < "frames" : 4, < "mode" : "loop", < "cycle" : 0.15 < }, < "knockback" : { < "frames" : 1 --- > "winddown" : { > "frames" : 5, > "cycle" : 0.5 44,45c30,33 < "knockout" : { < "frames" : 1 --- > "fire" : { > "frames" : 3, > "cycle" : 0.3, > "mode" : "loop" 49,52c37,39 < < "attack" : { < "priority" : 1, < "default" : "idle", --- > "damage" : { > "priority" : 3, > "default" : "none", 54,72c41,42 < "idle" : { < "frames" : 3, < "mode" : "loop", < "cycle" : 0.25 < }, < "melee" : { < "frames" : 3, < "mode" : "loop", < "cycle" : 0.25 < }, < "shooting" : { < "frames" : 3, < "mode" : "loop", < "cycle" : 0.25 < }, < "charge" : { < "frames" : 3, < "mode" : "loop", < "cycle" : 0.25 --- > "none" : { > "frames" : 1 74,77c44,45 < "chargeAttack" : { < "frames" : 3, < "mode" : "loop", < "cycle" : 0.25 --- > "stunned" : { > "frames" : 1 86c54,55 < "zLevel" : 1 --- > "zLevel" : 1, > "transformationGroups" : [ "body" ] 90c59 < "movement" : { --- > "body" : { 93c62 < "image" : ":idle." --- > "image" : ":idle.?flipx" 98,103c67 < "image" : ":move." < } < }, < "run" : { < "properties" : { < "image" : ":move." --- > "image" : ":walk.?flipx" 106c70 < "charge" : { --- > "windup" : { 108c72 < "image" : ":move." --- > "image" : ":windup.?flipx" 111c75 < "jump" : { --- > "invulnerable" : { 113c77 < "image" : ":idle." --- > "image" : ":invulnerable.?flipx" 116c80 < "fall" : { --- > "winddown" : { 118c82 < "image" : ":idle." --- > "image" : ":winddown.?flipx" 121c85 < "chargeWindup" : { --- > "fire" : { 123,133c87 < "image" : ":attack." < } < }, < "knockback" : { < "properties" : { < "image" : ":idle." < } < }, < "knockout" : { < "properties" : { < "image" : ":idle." --- > "image" : ":fire.?flipx" 137,154c91,92 < < "attack" : { < "melee" : { < "properties" : { < "image" : ":attack." < } < }, < "shooting" : { < "properties" : { < "image" : ":attack." < } < }, < "charge" : { < "properties" : { < "image" : ":attack." < } < }, < "chargeAttack" : { --- > "damage" : { > "stunned" : { 156c94 < "image" : ":walk." --- > "image" : ":hurt.?flipx" 162d99 < 165,166c102,104 < "image" : ":arm", < "rotationGroup" : "projectileAim", --- > "image" : ":arm?flipx", > "transformationGroups" : [ "aim", "body" ], > "rotationCenter" : [-1.25, -0.5], 173,177c111,113 < "rotationGroups" : { < "projectileAim" : { < "rotationCenter" : [1.125, -0.5], < "angularVelocity" : 1.5 < } --- > "transformationGroups" : { > "body" : { "interpolated" : true }, > "aim" : { "interpolated" : true } 183,358c119,135 < { < "particle" : { < "type" : "animated", < "animation" : "/animations/puff2c/puff2c.animation", < "size" : 1, < "angularVelocity" : 35, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "approach" : [1, 1], < "timeToLive" : 0.4, < "layer" : "middle" < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < } --- > { "particle" : "monstersplosion" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathfizz1left" }, > { "particle" : "deathfizz1right" }, > { "particle" : "deathfizz2left" }, > { "particle" : "deathfizz2right" }, > { "particle" : "deathfizz3left" }, > { "particle" : "deathfizz3right" }, > { "particle" : "deathfizz4left" }, > { "particle" : "deathfizz4right" } 372c149 < "turnHostile" : [ ], --- > "aggroHop" : [ ], monsters\dungeon\serpentdroid\serpentdroid.monstertype 8c8 < "reversed" : true, --- > "reversed" : false, 14,24c14 < "/monsters/generated/ground/groundMonster.lua", < "/scripts/pathing.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/monsters/generated/ground/wanderState.lua", < "/monsters/generated/ground/approachState.lua", < "/monsters/generated/ground/fleeState.lua", < < "/monsters/generated/ground/skills/createGroundRangedAttack.lua" --- > "/monsters/monster.lua" 27c17 < "damageTeam" : 1, --- > "behavior" : "monster", 29,30c19,20 < "baseSkills" : [ "plasmaBurstAttack"], < "specialSkills" : [ "bubbleShieldSpecial" ], --- > "behaviorConfig" : { > "damageOnTouch" : true, 32,33c22,73 < "projectileSourceOffset" : [1.125, 0], < "projectileSourcePosition" : [-1.125, -0.5], --- > "queryTargets" : true, > "targetQueryRange" : 30, > "targetOnDamage" : true, > "targetEntityTypes" : [ "player", "npc", "monster" ], > "keepTargetInSight" : true, > "keepTargetInRange" : 50, > "targetOutOfSightTime" : 2.5, > > "foundTargetActions" : [ { "name" : "action-aggrohop" } ], > > "fleeActions" : [], > > "hostileActions" : [ > { > "name" : "action-invulnerable", > "cooldown" : 10.0, > "parameters" : { > "windupTime" : 0.5, > "windupState" : "windup", > "winddownTime" : 0.5, > "winddownState" : "winddown", > > "invulnerableEffect" : "highprotection", > "invulnerableTime" : 8 > } > }, > { > "name" : "action-fire", > "cooldown" : 2.5, > "parameters" : { > "maximumRange" : 15, > "minimumRange" : 2, > "windupState" : "", > "windupTime" : 0.0, > > "projectileType" : "blueplasmabullet", > "power" : 4, > "fireOffset" : [-1.0, -0.5], > "projectileCount" : 3, > "projectileInterval" : 0.3, > "aimAtTarget" : true, > "rotateAim" : true, > "rotatedOffset" : [2.125, 0.0], > "fireState" : "fire", > "fireDelay" : 0.2, > "fireSound" : "", > > "winddownState" : "", > "winddownTime" : 0.5 > } > } > ], 35,42c75,100 < "aggressive" : true, < "territoryDistance" : 10.0, < "territorialTargetRadius" : 20.0, < "minimalTargetRadius" : 6.0, < "targetSearchTime" : 0.5, < "targetHoldTime" : 5.0, < < "closeDistance" : 1.5, --- > "invulnerableActions" : [ > { > "name" : "action-fire", > "parameters" : { > "maximumRange" : 15, > "minimumRange" : 2, > "windupState" : "", > "windupTime" : 0.0, > > "projectileType" : "blueplasmabullet", > "power" : 4, > "fireOffset" : [-1.0, -0.5], > "projectileCount" : 3, > "projectileInterval" : 0.3, > "aimAtTarget" : true, > "rotateAim" : true, > "rotatedOffset" : [2.125, 0.0], > "fireState" : "", > "fireDelay" : 0.2, > "fireSound" : "", > > "winddownState" : "", > "winddownTime" : 0.5 > } > } > ], 44,45c102 < "wanderTime" : [4.0, 6.0], < "wanderMovementTime" : [2.0, 3.0], --- > "periodicActions" : [], 47,48c104,111 < "jumpTargetDistance" : 100, < "jumpTime" : [0, 0], --- > "approachActions" : [ > { > "name" : "approach-walk", > "parameters" : { > "canJump" : false > } > } > ], 50,51c113,121 < "pathing" : { < "canOpenDoors" : false --- > "wanderActions" : [ > { > "name" : "wander-walk", > "cooldown" : 6.0, > "parameters" : { > "wanderTime" : [3, 6] > } > } > ] 53a124,125 > "damageTeam" : 1, > 60c132 < "mass" : 0.2, --- > "mass" : 1.0, 142,159c214 < "feetOffset" : [0, -8], < < "collisionSensors" : [ [2.0, -1.75], [2.0, 0.75] ], < < "nearGroundSensor" : [ [0.0, -2.0] ], < "midGroundSensor" : [ [0.0, -5.0] ], < < "moveTimeRange" : [2.5, 5.0], < "moveCooldownTime" : 1.0, < < "targetAcquisitionDistance" : 35.0, < < "attackTargetHoldTime" : 5.0, < "attackDistance" : 20.0, < < "shieldHealthRatio" : 0.25, < < "aimCorrectionOffset" : [0, -1] --- > "feetOffset" : [0, -8] monsters\generated\ground\largebiped\largebiped.animation 4c4 < "movement" : { --- > "body" : { 33,38d32 < }, < "knockback" : { < "frames" : 1 < }, < "knockout" : { < "frames" : 1 42,45c36,38 < < "attack" : { < "priority" : 1, < "default" : "idle", --- > "damage" : { > "priority" : 3, > "default" : "none", 47c40 < "idle" : { --- > "none" : { 50,67c43 < "melee" : { < "frames" : 4, < "cycle" : 0.4, < "mode" : "transition", < "transition" : "idle" < }, < "charge" : { < "frames" : 1, < "properties" : { < "immediateSound" : "/sfx/npc/monsters/skill_chargeup.ogg" < } < }, < "chargeAttack" : { < "frames" : 4, < "cycle" : 0.6, < "mode" : "end" < }, < "shooting" : { --- > "stunned" : { 77,78c53 < "rotationGroup" : "projectileAim", < "rotationCenter" : [0.5, -1], --- > "transformationGroups" : [ "body", "aim" ], 83c58 < "movement" : { --- > "body" : { 91c66 < "image" : ":walk." --- > "image" : ":walk." 96c71 < "image" : ":walk." --- > "image" : ":walk." 101c76 < "image" : ":walk." --- > "image" : ":walk." 113,122d87 < }, < "knockback" : { < "properties" : { < "image" : ":idle" < } < }, < "knockout" : { < "properties" : { < "image" : ":idle" < } 125,132c90,91 < < "attack" : { < "melee" : { < "properties" : { < "image" : ":walk." < } < }, < "charge" : { --- > "damage" : { > "stunned" : { 134,144c93 < "image" : ":walk." < } < }, < "chargeAttack" : { < "properties" : { < "image" : ":walk." < } < }, < "shooting" : { < "properties" : { < "image" : ":idle" --- > "image" : ":jump" 153,154c102 < "rotationGroup" : "projectileAim", < "rotationCenter" : [0.25, -1], --- > "transformationGroups" : [ "body", "aim" ], 159c107 < "movement" : { --- > "body" : { 167c115 < "image" : ":walk." --- > "image" : ":walk." 172c120 < "image" : ":walk." --- > "image" : ":walk." 177c125 < "image" : ":walk." --- > "image" : ":walk." 189,198d136 < }, < "knockback" : { < "properties" : { < "image" : ":idle" < } < }, < "knockout" : { < "properties" : { < "image" : ":idle" < } 201,213c139,140 < < "attack" : { < "melee" : { < "properties" : { < "image" : ":melee." < } < }, < "charge" : { < "properties" : { < "image" : ":melee.1" < } < }, < "chargeAttack" : { --- > "damage" : { > "stunned" : { 215,220c142 < "image" : ":melee." < } < }, < "shooting" : { < "properties" : { < "image" : ":rotation" --- > "image" : ":jump" 228a151 > "transformationGroups" : [ "body" ], 233c156 < "movement" : { --- > "body" : { 241c164 < "image" : ":walk." --- > "image" : ":walk." 246c169 < "image" : ":walk." --- > "image" : ":walk." 251c174 < "image" : ":walk." --- > "image" : ":walk." 261c184 < "image" : ":walk." --- > "image" : ":walk." 263,269c186,189 < }, < "knockback" : { < "properties" : { < "image" : ":jump" < } < }, < "knockout" : { --- > } > }, > "damage" : { > "stunned" : { 279a200 > "transformationGroups" : [ "body" ], 284c205 < "movement" : { --- > "body" : { 292c213 < "image" : ":walk." --- > "image" : ":walk." 297c218 < "image" : ":walk." --- > "image" : ":walk." 302c223 < "image" : ":walk." --- > "image" : ":walk." 312,317c233 < "image" : ":walk." < } < }, < "knockback" : { < "properties" : { < "image" : ":jump" --- > "image" : ":walk." 319,320c235,238 < }, < "knockout" : { --- > } > }, > "damage" : { > "stunned" : { 330a249 > "transformationGroups" : [ "body" ], 335c254 < "movement" : { --- > "body" : { 343c262 < "image" : ":walk." --- > "image" : ":walk." 348c267 < "image" : ":walk." --- > "image" : ":walk." 353c272 < "image" : ":walk." --- > "image" : ":walk." 363,373c282 < "image" : ":walk." < } < }, < "knockback" : { < "properties" : { < "image" : ":jump" < } < }, < "knockout" : { < "properties" : { < "image" : ":jump" --- > "image" : ":walk." 377,379c286,287 < < "attack" : { < "melee" : { --- > "damage" : { > "stunned" : { 381,391c289 < "image" : ":melee." < } < }, < "charge" : { < "properties" : { < "image" : ":melee.1" < } < }, < "chargeAttack" : { < "properties" : { < "image" : ":melee." --- > "image" : ":jump" 400,403c298,300 < "rotationGroups" : { < "projectileAim" : { < "angularVelocity" : 1.5 < } --- > "transformationGroups" : { > "body" : {"interpolated" : true}, > "aim" : {"interpolated" : true} 407,434d303 < "damage" : { < "emissionRate" : 0.7, < "particles" : [ < ] < }, < < "stun" : { < "emissionRate" : 5, < "particles" : [ < { < "particle" : { < "type" : "animated", < "animation" : "/animations/sparkles/sparkle4.animation", < "size" : 1, < "position" : [0, 1.0], < "destructionTime" : 7, < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "timeToLive" : 0.7, < "layer" : "front", < "variance" : { < "position" : [1, 0.7] < } < } < } < ] < }, < 437,800c306,322 < { < "particle" : { < "type" : "animated", < "animation" : "/animations/monstersplosion/monstersplosion.animation", < "size" : 1, < "angularVelocity" : 35, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "approach" : [1, 1], < "timeToLive" : 0.35, < "layer" : "middle" < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < } --- > { "particle" : "monstersplosion" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathfizz1left" }, > { "particle" : "deathfizz1right" }, > { "particle" : "deathfizz2left" }, > { "particle" : "deathfizz2right" }, > { "particle" : "deathfizz3left" }, > { "particle" : "deathfizz3right" }, > { "particle" : "deathfizz4left" }, > { "particle" : "deathfizz4right" } 806c328 < "turnHostile" : [ "/sfx/npc/monsters/monster_surprise.ogg" ], --- > "aggroHop" : [ "/sfx/npc/monsters/monster_surprise.ogg" ], 814,819d335 < }, < < "recover" : { < "type" : "flash", < "time" : 0.25, < "directives" : "fade=33FF33;0.25" monsters\generated\ground\largebiped\largebiped.monstertype 21,33c21 < "/monsters/generated/ground/groundMonster.lua", < "/scripts/pathing.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/monsters/generated/ground/aggroHopState.lua", < "/monsters/generated/ground/approachState.lua", < "/monsters/generated/ground/fleeState.lua", < "/monsters/generated/ground/stunState.lua", < "/monsters/generated/ground/wanderState.lua", < < "/monsters/generated/ground/skills/createGroundRangedAttack.lua" --- > "/monsters/monster.lua" 36,52c24,27 < "territoryDistance" : 40.0, < "territorialTargetRadius" : 20.0, < "minimalTargetRadius" : 6.0, < "targetSearchTime" : 0.5, < "targetHoldTime" : 5.0, < "meleeProjectileOffset" : [1, -1], < < "closeDistance" : 1.5, < < "wanderTime" : [4.0, 6.0], < "wanderMovementTime" : [2.0, 3.0], < "wanderJumpProbability" : 0.1, < < "jumpTargetDistance" : 4, < "jumpTime" : [0.4, 0.7], < < "approachTime" : 10, --- > "behavior" : "monster", > > "behaviorConfig" : { > "damageOnTouch" : true, 54,55c29,63 < "pathing" : { < "canOpenDoors" : false --- > "queryTargets" : true, > "targetQueryRange" : 30, > "targetOnDamage" : true, > "targetEntityTypes" : [ "player", "npc", "monster" ], > "keepTargetInSight" : true, > "keepTargetInRange" : 50, > "targetOutOfSightTime" : 2.5, > > "foundTargetActions" : [ { "name" : "action-aggrohop" } ], > > "approachActions" : [ > { > "name" : "approach-walk", > "parameters" : { > "canJump" : true, > "maxJumps" : 6, > "jumpXVelocity" : 12, > "jumpYVelocity" : 30, > "jumpXControlForce" : 50, > "fallState" : "jump", > "moveState" : "run", > "run" : true > } > } > ], > > "wanderActions" : [ > { > "name" : "wander-walk", > "cooldown" : 6.0, > "parameters" : { > "wanderTime" : [3, 9] > } > } > ] 57a66,68 > "baseSkills" : [ "chargeAttack", "pounceAttack" ], > //"specialSkills" : [ "shockingWaveAttack", "staticDischargeAttack", "bubbleBlastAttack", "waterGunAttack", "burninghaloAttack", "gasBelchAttack", "rainbowVomitAttack", "shockingBoltAttack", "plasmaTorpedoAttack", "eyeballSprayAttack", "bloodVomitAttack", "acidicSpitAttack", "fireballAttack", "icerockShotAttack", "doubleBarbSprayAttack", "miniDragonBreathAttack", "acidSprayAttack", "beamBurstAttack", "plasmaSweepAttack", "eyeballShotAttack", "glitterAttack", "darkGravityBallAttack", "fireSwirlAttack", "rockRollAttack", "iceBlastAttack", "snotBubbleAttack", "leafyGustAttack", "mudBallAttack", "lightBallAttack", "shardSprayAttack", "blueFlameAttack", "smokeRingAttack", "putridWaveAttack", "boneRainAttack", "orbOfZotsAttack", "snotShotAttack", "fishBreathAttack", "explosivePhlegmAttack", "cellBlastAttack" ], > 61,62c72 < "movement" : "knockout", < "attack" : "idle" --- > "damage" : "stunned" 66,105c76,144 < "exhaustionTimer" : 3.0, < "exhaustionTimeout" : 3.0, < "exhaustionDistanceLimit" : 1.0 < }, < < "familyParameters" : [ < [ < { < "skillCount" : 2, < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "shockingWaveAttack", "staticDischargeAttack", "bubbleBlastAttack", "waterGunAttack", "burninghaloAttack", "gasBelchAttack", "rainbowVomitAttack", "shockingBoltAttack", "plasmaTorpedoAttack", "eyeballSprayAttack", "bloodVomitAttack", "acidicSpitAttack", "fireballAttack", "icerockShotAttack", "doubleBarbSprayAttack", "miniDragonBreathAttack", "acidSprayAttack", "beamBurstAttack", "plasmaSweepAttack", "eyeballShotAttack", "glitterAttack", "darkGravityBallAttack", "fireSwirlAttack", "rockRollAttack", "iceBlastAttack", "snotBubbleAttack", "leafyGustAttack", "mudBallAttack", "lightBallAttack", "shardSprayAttack", "blueFlameAttack", "smokeRingAttack", "putridWaveAttack", "boneRainAttack", "orbOfZotsAttack", "snotShotAttack", "fishBreathAttack", "explosivePhlegmAttack", "cellBlastAttack" ] < } < /* < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "recoverSpecial" ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "chargeAttack" ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "chargeAttack" ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "chargeAttack" ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "stompAttack" ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "stompAttack" ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "stompAttack" ] --- > "scale" : 1.0, > > "movementSettings" : { > "collisionPoly" : [ [-0.8, -2.2], [-0.4, -2.6], [0.4, -2.6], [0.8, -2.2], [0.8, 0.1], [0.4, 0.5], [-0.4, 0.5], [-0.8, 0.1] ], > "mass" : 1.6, > "walkSpeed" : 3.0, > "runSpeed" : 11.0 > }, > > "metaBoundBox" : [-2.5, -2.5, 2.5, 2.5], > > "touchDamage" : { > "poly" : [ [-1, -2.6], [1, -2.6], [1, 0], [-1, 0] ], > "damage" : 15, > > "teamType" : "enemy", > "damageSourceKind" : "slash", > "statusEffects" : [ ] > }, > > "statusSettings" : { > "statusProperties" : { > "targetMaterialKind" : "organic" > }, > > "appliesEnvironmentStatusEffects" : false, > "minimumLiquidStatusEffectPercentage" : 0.1, > > "primaryScriptSources" : [ > "/stats/monster_primary.lua" > ], > "primaryScriptDelta" : 5, > > "stats" : { > "knockbackStunTime" : { > "baseValue" : 0.25 > }, > "maxHealth" : { > "baseValue" : 60 > }, > "maxShield" : { > "baseValue" : 0.0 > }, > "protection" : { > "baseValue" : 0.0 > }, > "healthRegen" : { > "baseValue" : 0.0 > }, > "shieldRegen" : { > "baseValue" : 0.0 > } > }, > > "resources" : { > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, > "health" : { > "maxStat" : "maxHealth", > "deltaStat" : "healthRegen", > "defaultPercentage" : 100 > }, > "shieldHealth" : { > "maxStat" : "maxShield", > "deltaStat" : "shieldRegen", > "defaultPercentage" : 100 > } 107,193c146,150 < */ < ] < ], < < "variantParameters" : [ < [ < [1.0, { < "scale" : 1.0, < < "movementSettings" : { < "collisionPoly" : [ [-0.8, -2.2], [-0.4, -2.6], [0.4, -2.6], [0.8, -2.2], [0.8, 0.1], [0.4, 0.5], [-0.4, 0.5], [-0.8, 0.1] ], < "mass" : 1.6, < "walkSpeed" : 3.0, < "runSpeed" : 11.0 < }, < < "metaBoundBox" : [-2.5, -2.5, 2.5, 2.5], < < "blockedSensors" : [ [1.5, -1.5], [1.5, -1.3], [1.5, -0.8], [1.5, -0.3], [1.5, 0.2], [1.5, 0.7] ], < "fallSensors" : [ [2.5, -2.5], [2.5, -3.5], [2.5, -4.5], [4.0, -2.5], [4.0, -3.5], [4.0, -4.5] ], < < "touchDamage" : { < "poly" : [ [-1, -2.6], [1, -2.6], [1, 0], [-1, 0] ], < "damage" : 15, < < "teamType" : "enemy", < "damageSourceKind" : "slash", < "statusEffects" : [ ] < }, < < "statusSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/monster_primary.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "knockbackStunTime" : { < "baseValue" : 0.25 < }, < "maxHealth" : { < "baseValue" : 60 < }, < "maxShield" : { < "baseValue" : 0.0 < }, < "protection" : { < "baseValue" : 0.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "shieldRegen" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "stunned" : { < "deltaValue" : -1.0, < "initialValue" : 0.0 < }, < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 100 < }, < "shieldHealth" : { < "maxStat" : "maxShield", < "deltaStat" : "shieldRegen", < "defaultPercentage" : 100 < } < } < }, < < "mouthOffset" : [0.5, 0.5], < "feetOffset" : [0, -21] < } ] < ] < ] --- > }, > > "mouthOffset" : [0.5, 0.5], > "feetOffset" : [0, -21] > } monsters\generated\ground\largequadruped\default.frames 7c7 < [ null, "idle" ], --- > [ null, "idle.1" ], 9c9 < [ null, "jump", null, "melee.1", "melee.2", "melee.3", "melee.4", null, "rotation" ] --- > [ null, "jump.1", null, "melee.1", "melee.2", "melee.3", "melee.4", null, "rotation" ] 13,20c13 < "walkbackwards.1" : "walk.8", < "walkbackwards.2" : "walk.7", < "walkbackwards.3" : "walk.6", < "walkbackwards.4" : "walk.5", < "walkbackwards.5" : "walk.4", < "walkbackwards.6" : "walk.3", < "walkbackwards.7" : "walk.2", < "walkbackwards.8" : "walk.1" --- > "hurt.1" : "jump.1" monsters\generated\ground\largequadruped\largequadruped.animation 4c4 < "movement" : { --- > "body" : { 42,45c42,44 < < "attack" : { < "priority" : 1, < "default" : "idle", --- > "damage" : { > "priority" : 3, > "default" : "none", 47c46 < "idle" : { --- > "none" : { 50,67c49 < "melee" : { < "frames" : 4, < "cycle" : 0.4, < "mode" : "transition", < "transition" : "idle" < }, < "charge" : { < "frames" : 1, < "properties" : { < "immediateSound" : "/sfx/npc/monsters/skill_chargeup.ogg" < } < }, < "chargeAttack" : { < "frames" : 4, < "cycle" : 0.6, < "mode" : "end" < }, < "shooting" : { --- > "stunned" : { 79c61,62 < "offset" : [-0.25, 0] --- > "transformationGroups" : [ "body" ], > "offset" : [-0.75, 0.125] 83c66 < "movement" : { --- > "body" : { 86c69 < "image" : ":idle" --- > "image" : ":idle." 89d71 < 92c74 < "image" : ":walk." --- > "image" : ":walk." 95d76 < 98c79 < "image" : ":walk." --- > "image" : ":walk." 101d81 < 104c84 < "image" : ":walk." --- > "image" : ":walk." 107d86 < 110c89 < "image" : ":jump" --- > "image" : ":jump." 113d91 < 116,122c94 < "image" : ":idle" < } < }, < < "knockback" : { < "properties" : { < "image" : ":jump" --- > "image" : ":walk." 124,126c96,99 < }, < < "knockout" : { --- > } > }, > "damage" : { > "stunned" : { 128,129c101 < "image" : ":jump", < "offset" : [-0.25, -0.25] --- > "image" : ":hurt." 140c112,113 < "offset" : [-0.25, 0] --- > "transformationGroups" : [ "body" ], > "offset" : [-0.75, 0.125] 144c117 < "movement" : { --- > "body" : { 147c120 < "image" : ":idle" --- > "image" : ":idle." 150d122 < 153c125 < "image" : ":walk." --- > "image" : ":walk." 156d127 < 159c130 < "image" : ":walk." --- > "image" : ":walk." 162d132 < 165c135 < "image" : ":walk." --- > "image" : ":walk." 168d137 < 171c140 < "image" : ":jump" --- > "image" : ":jump." 174d142 < 177c145 < "image" : ":idle" --- > "image" : ":walk." 179,187c147,150 < }, < < "knockback" : { < "properties" : { < "image" : ":jump" < } < }, < < "knockout" : { --- > } > }, > "damage" : { > "stunned" : { 189,190c152 < "image" : ":jump", < "offset" : [-0.25, -0.25] --- > "image" : ":hurt." 201c163,164 < "offset" : [-0.25, 0] --- > "transformationGroups" : [ "body" ], > "offset" : [-0.75, 0.125] 205c168 < "movement" : { --- > "body" : { 208c171 < "image" : ":idle" --- > "image" : ":idle." 211d173 < 214c176 < "image" : ":walk." --- > "image" : ":walk." 217d178 < 220c181 < "image" : ":walk." --- > "image" : ":walk." 223d183 < 226c186 < "image" : ":walk." --- > "image" : ":walk." 229d188 < 232c191 < "image" : ":jump" --- > "image" : ":jump." 235d193 < 238,244c196 < "image" : ":idle" < } < }, < < "knockback" : { < "properties" : { < "image" : ":jump" --- > "image" : ":walk." 246,248c198,201 < }, < < "knockout" : { --- > } > }, > "damage" : { > "stunned" : { 250,251c203 < "image" : ":jump", < "offset" : [-0.25, -0.25] --- > "image" : ":hurt." 262,263c214,215 < "rotationGroup" : "projectileAim", < "offset" : [-0.25, 0] --- > "transformationGroups" : [ "body", "aim" ], > "offset" : [-0.75, 0.125] 267c219 < "movement" : { --- > "body" : { 270c222 < "image" : ":idle" --- > "image" : ":idle." 273d224 < 276c227 < "image" : ":walk." --- > "image" : ":walk." 279d229 < 282c232 < "image" : ":walk." --- > "image" : ":walk." 285d234 < 288c237 < "image" : ":walk." --- > "image" : ":walk." 291d239 < 294c242 < "image" : ":jump" --- > "image" : ":jump." 297d244 < 300,313c247 < "image" : ":idle" < } < }, < < "knockback" : { < "properties" : { < "image" : ":jump" < } < }, < < "knockout" : { < "properties" : { < "image" : ":jump", < "offset" : [-0.25, -0.25] --- > "image" : ":walk." 317,319c251,252 < < "attack" : { < "melee" : { --- > "damage" : { > "stunned" : { 321,339c254 < "image" : ":melee." < } < }, < < "charge" : { < "properties" : { < "image" : ":melee.1" < } < }, < < "chargeAttack" : { < "properties" : { < "image" : ":melee." < } < }, < < "shooting" : { < "properties" : { < "image" : ":rotation" --- > "image" : ":hurt." 350c265,266 < "offset" : [-0.25, 0] --- > "transformationGroups" : [ "body" ], > "offset" : [-0.75, 0.125] 354c270 < "movement" : { --- > "body" : { 357c273 < "image" : ":idle" --- > "image" : ":idle." 360d275 < 363c278 < "image" : ":walk." --- > "image" : ":walk." 366d280 < 369c283 < "image" : ":walk." --- > "image" : ":walk." 372d285 < 375c288 < "image" : ":walk." --- > "image" : ":walk." 378d290 < 381c293 < "image" : ":jump" --- > "image" : ":jump." 384d295 < 387c298 < "image" : ":walk." --- > "image" : ":walk." 389,397c300,303 < }, < < "knockback" : { < "properties" : { < "image" : ":jump" < } < }, < < "knockout" : { --- > } > }, > "damage" : { > "stunned" : { 399,400c305 < "image" : ":jump", < "offset" : [-0.25, -0.25] --- > "image" : ":hurt." 409,413c314,316 < "rotationGroups" : { < "projectileAim" : { < "rotationCenter" : [-1, -0.5], < "angularVelocity" : 5 < } --- > "transformationGroups" : { > "body" : {"interpolated" : true}, > "aim" : {"interpolated" : true} 417,471d319 < "damage" : { < "emissionRate" : 0.7, < "particles" : [ < ] < }, < < "stun" : { < "emissionRate" : 5, < "particles" : [ < { < "particle" : { < "type" : "animated", < "animation" : "/animations/sparkles/sparkle4.animation", < "size" : 1, < "position" : [-1.5, 0], < "destructionTime" : 7, < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "timeToLive" : 0.7, < "layer" : "front", < "variance" : { < "position" : [1, 0.7] < } < } < } < ] < }, < < "gust" : { < "emissionRate" : 20, < "particles" : [ < { < "particle" : { < "type" : "ember", < "size" : 1.5, < "color" : [255, 255, 255, 255], < "fade" : 0.25, < "position" : [-1.5, 0], < "destructionAction" : "shrink", < "destructionTime" : 7, < "initialVelocity" : [-20, 0.0], < "finalVelocity" : [-2, 0.0], < "timeToLive" : 0.7, < "light" : [14, 47, 72], < "layer" : "front", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [2, 2], < "position" : [0, 1] < } < } < } < ] < }, < 474,837c322,338 < { < "particle" : { < "type" : "animated", < "animation" : "/animations/monstersplosion/monstersplosion.animation", < "size" : 1, < "angularVelocity" : 35, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "approach" : [1, 1], < "timeToLive" : 0.35, < "layer" : "middle" < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < } --- > { "particle" : "monstersplosion" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathfizz1left" }, > { "particle" : "deathfizz1right" }, > { "particle" : "deathfizz2left" }, > { "particle" : "deathfizz2right" }, > { "particle" : "deathfizz3left" }, > { "particle" : "deathfizz3right" }, > { "particle" : "deathfizz4left" }, > { "particle" : "deathfizz4right" } 843c344 < "turnHostile" : [ "/sfx/npc/monsters/monster_surprise.ogg" ], --- > "aggroHop" : [ "/sfx/npc/monsters/monster_surprise.ogg" ], 852,857d352 < }, < < "recover" : { < "type" : "flash", < "time" : 0.25, < "directives" : "fade=33FF33;0.25" monsters\generated\ground\largequadruped\largequadruped.monstertype 10a11,18 > "dropPools" : [ > { > "default" : "basicMonsterTreasure", > "bow" : "huntingquadruped", > "brain" : "brain" > } > ], > 13,25c21 < "/monsters/generated/ground/groundMonster.lua", < "/scripts/pathing.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/monsters/generated/ground/aggroHopState.lua", < "/monsters/generated/ground/approachState.lua", < "/monsters/generated/ground/fleeState.lua", < "/monsters/generated/ground/stunState.lua", < "/monsters/generated/ground/wanderState.lua", < < "/monsters/generated/ground/skills/createGroundRangedAttack.lua" --- > "/monsters/monster.lua" 28,44c24,27 < "territoryDistance" : 40.0, < "territorialTargetRadius" : 20.0, < "minimalTargetRadius" : 6.0, < "targetSearchTime" : 0.5, < "targetHoldTime" : 5.0, < "meleeProjectileOffset" : [1, 0], < < "closeDistance" : 8.0, < < "wanderTime" : [4.0, 6.0], < "wanderMovementTime" : [2.0, 3.0], < "wanderJumpProbability" : 0.1, < < "jumpTargetDistance" : 4, < "jumpTime" : [0.4, 0.7], < < "approachTime" : 10, --- > "behavior" : "monster", > > "behaviorConfig" : { > "damageOnTouch" : true, 46,47c29,63 < "pathing" : { < "canOpenDoors" : false --- > "queryTargets" : true, > "targetQueryRange" : 30, > "targetOnDamage" : true, > "targetEntityTypes" : [ "player", "npc", "monster" ], > "keepTargetInSight" : true, > "keepTargetInRange" : 50, > "targetOutOfSightTime" : 2.5, > > "foundTargetActions" : [ { "name" : "action-aggrohop" } ], > > "approachActions" : [ > { > "name" : "approach-walk", > "parameters" : { > "canJump" : true, > "maxJumps" : 6, > "jumpXVelocity" : 12, > "jumpYVelocity" : 30, > "jumpXControlForce" : 50, > "fallState" : "jump", > "moveState" : "run", > "run" : true > } > } > ], > > "wanderActions" : [ > { > "name" : "wander-walk", > "cooldown" : 6.0, > "parameters" : { > "wanderTime" : [3, 9] > } > } > ] 49a66,68 > "baseSkills" : [ "chargeAttack", "pounceAttack" ], > //"specialSkills" : [ "shockingWaveAttack", "staticDischargeAttack", "bubbleBlastAttack", "waterGunAttack", "burninghaloAttack", "gasBelchAttack", "rainbowVomitAttack", "shockingBoltAttack", "plasmaTorpedoAttack", "eyeballSprayAttack", "bloodVomitAttack", "acidicSpitAttack", "fireballAttack", "icerockShotAttack", "doubleBarbSprayAttack", "miniDragonBreathAttack", "acidSprayAttack", "beamBurstAttack", "plasmaSweepAttack", "eyeballShotAttack", "glitterAttack", "darkGravityBallAttack", "fireSwirlAttack", "rockRollAttack", "iceBlastAttack", "snotBubbleAttack", "leafyGustAttack", "mudBallAttack", "lightBallAttack", "shardSprayAttack", "blueFlameAttack", "smokeRingAttack", "putridWaveAttack", "boneRainAttack", "orbOfZotsAttack", "snotShotAttack", "fishBreathAttack", "explosivePhlegmAttack", "cellBlastAttack" ], > 53,54c72 < "movement" : "knockout", < "attack" : "idle" --- > "damage" : "stunned" 56d73 < "deathParticles" : "deathPoof", 58,61c75,76 < "exhaustionTimer" : 3.0, < "exhaustionTimeout" : 3.0, < "exhaustionDistanceLimit" : 1.0 < }, --- > "metaBoundBox" : [-2.5, -2.5, 2.5, 2.5], > "scale" : 1.0, 63,69c78,83 < "dropPools" : [ < { < "default" : "basicMonsterTreasure", < "bow" : "huntingquadruped", < "brain" : "brain" < } < ], --- > "movementSettings" : { > "collisionPoly" : [ [-2.25, -1.1], [-1.5, -1.8], [1, -1.8], [1.75, -1.1], [1.75, -0.1], [1, 0.5], [-1.5, 0.5], [-2.25, -0.1] ], > "mass" : 1.6, > "walkSpeed" : 4.0, > "runSpeed" : 12.0 > }, 71,76c85,141 < "familyParameters" : [ < [ < { < "skillCount" : 2, < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "shockingWaveAttack", "staticDischargeAttack", "bubbleBlastAttack", "waterGunAttack", "burninghaloAttack", "gasBelchAttack", "rainbowVomitAttack", "shockingBoltAttack", "plasmaTorpedoAttack", "eyeballSprayAttack", "bloodVomitAttack", "acidicSpitAttack", "fireballAttack", "icerockShotAttack", "doubleBarbSprayAttack", "miniDragonBreathAttack", "acidSprayAttack", "beamBurstAttack", "plasmaSweepAttack", "eyeballShotAttack", "glitterAttack", "darkGravityBallAttack", "fireSwirlAttack", "rockRollAttack", "iceBlastAttack", "snotBubbleAttack", "leafyGustAttack", "mudBallAttack", "lightBallAttack", "shardSprayAttack", "blueFlameAttack", "smokeRingAttack", "putridWaveAttack", "boneRainAttack", "orbOfZotsAttack", "snotShotAttack", "fishBreathAttack", "explosivePhlegmAttack", "cellBlastAttack" ] --- > "touchDamage" : { > "poly" : [ [-2.0, -0.8], [-1.5, -1.5], [1.5, -1.5], [2.0, -0.8], [2.0, -0.4], [1.4, 0.2], [-1.4, 0.2], [-2.0, -0.4] ], > "damage" : 15, > "teamType" : "enemy", > "damageSourceKind" : "default", > "statusEffects" : [ ] > }, > > "statusSettings" : { > "statusProperties" : { > "targetMaterialKind" : "organic" > }, > > "appliesEnvironmentStatusEffects" : false, > "minimumLiquidStatusEffectPercentage" : 0.1, > > "primaryScriptSources" : [ > "/stats/monster_primary.lua" > ], > "primaryScriptDelta" : 5, > > "stats" : { > "knockbackStunTime" : { > "baseValue" : 0.25 > }, > "maxHealth" : { > "baseValue" : 70 > }, > "maxShield" : { > "baseValue" : 0.0 > }, > "protection" : { > "baseValue" : 0.0 > }, > "healthRegen" : { > "baseValue" : 0.0 > }, > "shieldRegen" : { > "baseValue" : 0.0 > } > }, > > "resources" : { > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, > "health" : { > "maxStat" : "maxHealth", > "deltaStat" : "healthRegen", > "defaultPercentage" : 100 > }, > "shieldHealth" : { > "maxStat" : "maxShield", > "deltaStat" : "shieldRegen", > "defaultPercentage" : 100 > } 78,145c143 < /* < { < "skillCount" : 3, < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "shockingWaveAttack", "staticDischargeAttack", "bubbleBlastAttack", "waterGunAttack", "burninghaloAttack", "gasBelchAttack", "rainbowVomitAttack", "shockingBoltAttack", "plasmaTorpedoAttack", "eyeballSprayAttack", "bloodVomitAttack", "acidicSpitAttack", "fireballAttack", "icerockShotAttack", "doubleBarbSprayAttack", "miniDragonBreathAttack", "acidSprayAttack", "beamBurstAttack", "plasmaSweepAttack", "eyeballShotAttack", "glitterAttack", "darkGravityBallAttack", "fireSwirlAttack", "rockRollAttack", "iceBlastAttack", "snotBubbleAttack", "leafyGustAttack", "mudBallAttack", "lightBallAttack", "shardSprayAttack", "blueFlameAttack", "smokeRingAttack", "putridWaveAttack", "boneRainAttack", "orbOfZotsAttack", "snotShotAttack", "fishBreathAttack", "explosivePhlegmAttack", "cellBlastAttack" ] < }, < { < "skillCount" : 3, < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "shieldSpecial" ] < }, < { < "skillCount" : 3, < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "recoverSpecial" ] < }, < { < "skillCount" : 3, < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "chargeAttack" ] < }, < { < "skillCount" : 3, < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "chargeAttack" ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ ] < }, < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ ] < }*/ < ] < ], --- > }, 147,227c145,147 < "variantParameters" : [ < [ < [1, { < "scale" : 1.0, < "metaBoundBox" : [-2.5, -2.5, 2.5, 2.5], < < "movementSettings" : { < "collisionPoly" : [ [-2.25, -1.1], [-1.5, -1.8], [1, -1.8], [1.75, -1.1], [1.75, -0.1], [1, 0.5], [-1.5, 0.5], [-2.25, -0.1] ], < "mass" : 1.6, < "walkSpeed" : 4.0, < "runSpeed" : 12.0 < }, < < "blockedSensors" : [ [2.7, 0], [2.7, 0.2], [2.7, 0.7], [2.7, 1.2] ], < "fallSensors" : [ [0.5, -2.5], [0.5, -3.5], [0.5, -4.5], [2.0, -2.5], [2.0, -3.5], [2.0, -4.5] ], < < "touchDamage" : { < "poly" : [ [-2.0, -0.8], [-1.5, -1.5], [1.5, -1.5], [2.0, -0.8], [2.0, -0.4], [1.4, 0.2], [-1.4, 0.2], [-2.0, -0.4] ], < "damage" : 15, < "teamType" : "enemy", < "damageSourceKind" : "default", < "statusEffects" : [ ] < }, < < "statusSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/monster_primary.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "knockbackStunTime" : { < "baseValue" : 0.25 < }, < "maxHealth" : { < "baseValue" : 70 < }, < "maxShield" : { < "baseValue" : 0.0 < }, < "protection" : { < "baseValue" : 0.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < }, < "shieldRegen" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "stunned" : { < "deltaValue" : -1.0, < "initialValue" : 0.0 < }, < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 100 < }, < "shieldHealth" : { < "maxStat" : "maxShield", < "deltaStat" : "shieldRegen", < "defaultPercentage" : 100 < } < } < }, < < "mouthOffset" : [1.5, 0], < "feetOffset" : [0, -14] < } ] < ] < ] --- > "mouthOffset" : [1.5, 0], > "feetOffset" : [0, -14] > } monsters\generated\ground\skills\chargeattack.monsterskill 4c4 < "image" : "/monsters/generated/flying/skills/default.png", --- > "image" : "/monsters/generated/ground/skills/icon.png", 7,14c7,12 < "scripts" : [ "/monsters/generated/ground/skills/chargeAttack.lua" ], < "chargeAttack" : { < "skillTimeLimit" : 5.0, < "cooldownTime" : 0.0, < "windupTime" : 1.0, < "winddownTime" : 1.2, < "attackDistance" : 5.0, < "projectile" : null, --- > "behaviorConfig" : { > "hostileActions" : [ > { > "name" : "action-charge", > "parameters" : { > "skillName" : "chargeAttack", 16,18c14,16 < "crashDamageAmount" : 5.0, < < "crashStunTime" : 2.0, --- > "maximumRange" : 10, > "windupTime" : 0.6, > "windupState" : "chargeWindup", 20c18,22 < "speedBonus" : 12.0, --- > "chargeTime" : 1.5, > "chargeSpeed" : 30, > "chargeControlForce" : 300, > "wallCrashSound" : "chargeCrash", > "wallCrashEmitter" : "", 22,23c24,28 < "approachPoints" : [ [-15, 0], [15, 0] ], < "startRects" : [ [-16, 2.5, -11, -2.0], [16, 2.5, 11, -2.0] ] --- > "winddownTime" : 0.5, > "winddownState" : "idle" > } > } > ] monsters\generated\ground\skills\pounceattack.monsterskill 7,13c7,13 < "scripts" : [ "/monsters/generated/ground/skills/pounceAttack.lua" ], < "pounceAttack" : { < "skillTimeLimit" : 4.0, < "cooldownTime" : 0.5, < "jumpHoldTime" : 1.5, < "windupTime" : 0.5, < "winddownTime" : 0.5, --- > "behaviorConfig" : { > "hostileActions" : [ > { > "name" : "action-leap", > "cooldown" : 2.0, > "parameters" : { > "skillName" : "pounceAttack", 15,16c15,18 < "jumpSpeedMultiplier" : 1.8, < "jumpSpeedMax" : 50, --- > "minimumRange" : 5, > "maximumRange" : 20, > "windupTime" : 0.5, > "windupState" : "chargeWindup", 18,19c20,30 < "approachPoints" : [ [-9.0, 0], [9.0, 0] ], < "startRects" : [ [-10.0, 2.5, -4.0, -2.0], [10.0, 2.5, 4.0, -2.0] ] --- > "leapVelocity" : 35, > "collisionCheck" : true, > "highArc" : true, > "leapState" : "jump", > "fallState" : "", > > "winddownTime" : 0.5, > "winddownState" : "idle" > } > } > ] monsters\generated\ground\smallbiped\smallbiped.animation 4c4 < "movement" : { --- > "body" : { 34c34 < "knockback" : { --- > "hurt" : { 42,45c42,44 < < "attack" : { < "priority" : 1, < "default" : "idle", --- > "damage" : { > "priority" : 3, > "default" : "none", 47c46 < "idle" : { --- > "none" : { 50,64c49 < "melee" : { < "frames" : 4, < "cycle" : 0.4, < "mode" : "transition", < "transition" : "idle" < }, < "charge" : { < "frames" : 1 < }, < "chargeAttack" : { < "frames" : 4, < "cycle" : 0.6, < "mode" : "end" < }, < "shooting" : { --- > "stunned" : { 74,75c59 < "rotationGroup" : "projectileAim", < "rotationCenter" : [0.5, -1], --- > "transformationGroups" : [ "body", "aim" ], 80c64 < "movement" : { --- > "body" : { 88c72 < "image" : ":walk." --- > "image" : ":walk." 93c77 < "image" : ":walk." --- > "image" : ":walk." 98c82 < "image" : ":walk." --- > "image" : ":walk." 111,116c95 < "knockback" : { < "properties" : { < "image" : ":idle" < } < }, < "knockout" : { --- > "hurt" : { 122,139c101,102 < < "attack" : { < "melee" : { < "properties" : { < "image" : ":walk." < } < }, < "charge" : { < "properties" : { < "image" : ":walk." < } < }, < "chargeAttack" : { < "properties" : { < "image" : ":walk." < } < }, < "shooting" : { --- > "damage" : { > "stunned" : { 141c104 < "image" : ":idle" --- > "image" : ":jump" 150,151c113 < "rotationGroup" : "projectileAim", < "rotationCenter" : [0.25, -1], --- > "transformationGroups" : [ "body", "aim" ], 156c118 < "movement" : { --- > "body" : { 164c126 < "image" : ":walk." --- > "image" : ":walk." 169c131 < "image" : ":walk." --- > "image" : ":walk." 174c136 < "image" : ":walk." --- > "image" : ":walk." 187,192c149 < "knockback" : { < "properties" : { < "image" : ":idle" < } < }, < "knockout" : { --- > "hurt" : { 198,200c155,156 < < "attack" : { < "melee" : { --- > "damage" : { > "stunned" : { 202,217c158 < "image" : ":melee." < } < }, < "charge" : { < "properties" : { < "image" : ":melee.1" < } < }, < "chargeAttack" : { < "properties" : { < "image" : ":melee." < } < }, < "shooting" : { < "properties" : { < "image" : ":rotation" --- > "image" : ":jump" 225a167 > "transformationGroups" : [ "body" ], 230c172 < "movement" : { --- > "body" : { 238c180 < "image" : ":walk." --- > "image" : ":walk." 243c185 < "image" : ":walk." --- > "image" : ":walk." 248c190 < "image" : ":walk." --- > "image" : ":walk." 258c200 < "image" : ":walk." --- > "image" : ":walk." 261c203 < "knockback" : { --- > "hurt" : { 265,266c207,210 < }, < "knockout" : { --- > } > }, > "damage" : { > "stunned" : { 276a221 > "transformationGroups" : [ "body" ], 281c226 < "movement" : { --- > "body" : { 289c234 < "image" : ":walk." --- > "image" : ":walk." 294c239 < "image" : ":walk." --- > "image" : ":walk." 299c244 < "image" : ":walk." --- > "image" : ":walk." 309c254 < "image" : ":walk." --- > "image" : ":walk." 312c257 < "knockback" : { --- > "hurt" : { 316,317c261,264 < }, < "knockout" : { --- > } > }, > "damage" : { > "stunned" : { 327a275 > "transformationGroups" : [ "body" ], 332c280 < "movement" : { --- > "body" : { 340c288 < "image" : ":walk." --- > "image" : ":walk." 345c293 < "image" : ":walk." --- > "image" : ":walk." 350c298 < "image" : ":walk." --- > "image" : ":walk." 360c308 < "image" : ":walk." --- > "image" : ":walk." 363,368c311 < "knockback" : { < "properties" : { < "image" : ":jump" < } < }, < "knockout" : { --- > "hurt" : { 374,376c317,318 < < "attack" : { < "melee" : { --- > "damage" : { > "stunned" : { 378,388c320 < "image" : ":melee." < } < }, < "charge" : { < "properties" : { < "image" : ":melee.1" < } < }, < "chargeAttack" : { < "properties" : { < "image" : ":melee." --- > "image" : ":jump" 397,400c329,331 < "rotationGroups" : { < "projectileAim" : { < "angularVelocity" : 1.5 < } --- > "transformationGroups" : { > "body" : {"interpolated" : true}, > "aim" : {"interpolated" : true} 404,409d334 < "damage" : { < "emissionRate" : 0.7, < "particles" : [ < ] < }, < 412,922c337,353 < { < "particle" : { < "type" : "animated", < "animation" : "/animations/monstersplosion/monstersplosion.animation", < "size" : 1, < "angularVelocity" : 35, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "approach" : [1, 1], < "timeToLive" : 0.35, < "layer" : "middle" < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < } < ] < }, < < "stun" : { < "emissionRate" : 5, < "particles" : [ < { < "particle" : { < "type" : "animated", < "animation" : "/animations/sparkles/sparkle4.animation", < "size" : 1, < "position" : [0, 0], < "destructionTime" : 7, < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "timeToLive" : 0.7, < "layer" : "front", < "variance" : { < "position" : [1, 0.7] < } < } < } < ] < }, < < "gust" : { < "emissionRate" : 20, < "particles" : [ < { < "particle" : { < "type" : "ember", < "size" : 1.5, < "color" : [255, 255, 255, 255], < "fade" : 0.25, < "position" : [-1.5, 0], < "destructionAction" : "shrink", < "destructionTime" : 7, < "initialVelocity" : [-20, 0.0], < "finalVelocity" : [-2, 0.0], < "timeToLive" : 0.7, < "light" : [14, 47, 72], < "layer" : "front", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [2, 2], < "position" : [0, 1] < } < } < } < ] < }, < < "gravitySlamAttackUp" : { < "emissionRate" : 20, < "particles" : [ < { < "particle" : { < "type" : "animated", < "animation" : "/animations/sparkles/sparkle1.animation", < "position" : [0, 1.5], < "initialVelocity" : [0, 4.0], < "finalVelocity" : [0, 4.0], < "approach" : [0, 50], < "fade" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 1, < "size" : 1.0, < "timeToLive" : 0.5, < "variance" : { < "initialVelocity" : [0, 1.0], < "position" : [1, 0] < } < } < } < ] < }, < < "gravitySlamAttackDown" : { < "emissionRate" : 20, < "particles" : [ < { < "particle" : { < "type" : "animated", < "animation" : "/animations/sparkles/sparkle1.animation", < "position" : [0, 3.5], < "initialVelocity" : [0, -10.0], < "finalVelocity" : [0, -10.0], < "approach" : [0, 50], < "fade" : 0.5, < "destructionAction" : "shrink", < "destructionTime" : 1, < "size" : 1.0, < "timeToLive" : 0.25, < "variance" : { < "initialVelocity" : [0, 1.0], < "position" : [1, 0] < } < } < } < ] < }, < < "captureParticles" : { < "particles" : [ < { < "particle" : { < "type" : "animated", < "animation" : "/animations/energy/energy.animation", < "size" : 1, < "angularVelocity" : 35, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "approach" : [1, 1], < "timeToLive" : 0.4, < "layer" : "middle" < } < } < ] < }, < < "levelUp" : { < "particles" : [ < { "particle" : "monsterlevelup" } < ] < }, < < "blinkout" : { < "particles" : [ < { < "particle" : { < "type" : "animated", < "animation" : "/animations/blinkout/blinkout.animation", < "size" : 1, < "angularVelocity" : 35, < "fade" : 1, < "destructionTime" : 5, < "position" : [0, 0], < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "approach" : [1, 1], < "timeToLive" : 0.75, < "layer" : "front" < } < } --- > { "particle" : "monstersplosion" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathfizz1left" }, > { "particle" : "deathfizz1right" }, > { "particle" : "deathfizz2left" }, > { "particle" : "deathfizz2right" }, > { "particle" : "deathfizz3left" }, > { "particle" : "deathfizz3right" }, > { "particle" : "deathfizz4left" }, > { "particle" : "deathfizz4right" } 928c359 < "turnHostile" : [ "/sfx/npc/monsters/monster_surprise.ogg" ], --- > "aggroHop" : [ "/sfx/npc/monsters/monster_surprise.ogg" ], 930a362 > 936,941d367 < }, < < "recover" : { < "type" : "flash", < "time" : 0.25, < "directives" : "fade=33FF33;0.25" monsters\generated\ground\smallbiped\smallbiped.monstertype 21,36c21 < "/monsters/capturepod.lua", < "/monsters/generated/ground/groundMonster.lua", < "/scripts/pathing.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/monsters/generated/ground/aggroHopState.lua", < "/monsters/generated/ground/approachState.lua", < "/monsters/generated/ground/fleeState.lua", < "/monsters/generated/ground/captiveState.lua", < "/monsters/generated/ground/stunState.lua", < "/monsters/generated/ground/socializeState.lua", < "/monsters/generated/ground/wanderState.lua", < < "/monsters/generated/ground/skills/createGroundRangedAttack.lua" --- > "/monsters/monster.lua" 39,58c24,84 < "territoryDistance" : 40.0, < "territorialTargetRadius" : 20.0, < "minimalTargetRadius" : 6.0, < "targetSearchTime" : 0.5, < "targetHoldTime" : 5, < "meleeProjectileOffset" : [1, 0], < < "closeDistance" : 1.5, < < "wanderTime" : [4.0, 6.0], < "wanderMovementTime" : [2.0, 3.0], < "wanderJumpProbability" : 0.1, < < "jumpTargetDistance" : 4, < "jumpTime" : [0.4, 0.7], < < "approachTime" : 10, < < "pathing" : { < "canOpenDoors" : false --- > "behavior" : "monster", > > "behaviorConfig" : { > "damageOnTouch" : true, > > "queryTargets" : true, > "targetQueryRange" : 30, > "targetOnDamage" : true, > "targetEntityTypes" : [ "player", "npc", "monster" ], > "keepTargetInSight" : true, > "keepTargetInRange" : 50, > "targetOutOfSightTime" : 2.5, > > "foundTargetActions" : [ { "name" : "action-aggrohop" } ], > > "approachActions" : [ > { > "name" : "approach-walk", > "parameters" : { > "canJump" : true, > "maxJumps" : 6, > "jumpXVelocity" : 12, > "jumpYVelocity" : 30, > "jumpXControlForce" : 50, > "fallState" : "jump", > "moveState" : "run", > "run" : true > } > } > ], > > "wanderActions" : [ > { > "name" : "wander-walk", > "cooldown" : 6.0, > "parameters" : { > "wanderTime" : [3, 9] > } > } > ] > }, > > "baseSkills" : [ "chargeAttack", "pounceAttack" ], > > "touchDamage" : { > "poly" : [ [-0.8, -2.2], [-0.4, -2.6], [0.4, -2.6], [0.8, -2.2], [0.8, -0.4], [0.4, 0], [-0.4, 0], [-0.8, -0.4] ], > "damage" : 12, > > "teamType" : "enemy", > "damageSourceKind" : "slash", > "statusEffects" : [ ] > }, > > "metaBoundBox" : [-2.5, -2.5, 2.5, 2.5], > "scale" : 1.0, > > "movementSettings" : { > "collisionPoly" : [ [-0.8, -2.2], [-0.4, -2.6], [0.4, -2.6], [0.8, -2.2], [0.8, -0.4], [0.4, 0], [-0.4, 0], [-0.8, -0.4] ], > "mass" : 1.0, > "walkSpeed" : 4, > "runSpeed" : 8 61,62c87 < "knockoutTime" : 0.1, < "knockoutEffect" : "blink", --- > "knockoutTime" : 0.3, 64,65c89 < "movement" : "knockout", < "attack" : "idle" --- > "damage" : "stunned" 68,69c92 < "captureParticles" : "captureParticles", < "levelUpParticles" : "levelUp", --- > "knockoutEffect" : "", 71,83c94,96 < "exhaustionTimer" : 3.0, < "exhaustionTimeout" : 3.0, < "exhaustionDistanceLimit" : 1.0, < < "captureHealthFraction" : 0.5, < "killsPerLevel" : 20 < }, < < "familyParameters" : [ < [ < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "chargeAttack" ] --- > "statusSettings" : { > "statusProperties" : { > "targetMaterialKind" : "organic" 85,87c98,131 < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "pounceAttack" ] --- > > "appliesEnvironmentStatusEffects" : false, > "minimumLiquidStatusEffectPercentage" : 0.1, > > "primaryScriptSources" : [ > "/stats/monster_primary.lua" > ], > "primaryScriptDelta" : 5, > > "stats" : { > "maxHealth" : { > "baseValue" : 48 > }, > "protection" : { > "baseValue" : 0.0 > }, > "knockbackStunTime" : { > "baseValue" : 0.25 > }, > "healthRegen" : { > "baseValue" : 0.0 > } > }, > > "resources" : { > "health" : { > "maxStat" : "maxHealth", > "deltaStat" : "healthRegen", > "defaultPercentage" : 100 > }, > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > } 89,90c133 < ] < ], --- > }, 92,163c135,137 < "variantParameters" : [ < [ < [1.0, { < "scale" : 1.0, < < "movementSettings" : { < "collisionPoly" : [ [-0.8, -2.2], [-0.4, -2.6], [0.4, -2.6], [0.8, -2.2], [0.8, -0.4], [0.4, 0], [-0.4, 0], [-0.8, -0.4] ], < "mass" : 1.0, < "walkSpeed" : 1, < "runSpeed" : 9 < }, < < "metaBoundBox" : [-2.5, -2.5, 2.5, 2.5], < < "blockedSensors" : [ [1.5, -1.5], [1.5, -1.0], [1.5, -0.2], [1.5, 0.6] ], < "fallSensors" : [ [0.5, -2.5], [0.5, -3.5], [0.5, -4.5], [2.0, -2.5], [2.0, -3.5], [2.0, -4.5] ], < < "touchDamage" : { < "poly" : [ [-1, -2.6], [1, -2.6], [1, 0], [-1, 0] ], < "damage" : 12, < < "teamType" : "enemy", < "damageSourceKind" : "slash", < "statusEffects" : [ ] < }, < < "statusSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/monster_primary.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "knockbackStunTime" : { < "baseValue" : 0.25 < }, < "maxHealth" : { < "baseValue" : 48 < }, < "protection" : { < "baseValue" : 0.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "stunned" : { < "deltaValue" : -1.0, < "initialValue" : 0.0 < }, < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 100 < } < } < }, < < "mouthOffset" : [0.5, 0], < "feetOffset" : [0, -21] < } ] < ] < ] --- > "mouthOffset" : [0.5, 0], > "feetOffset" : [0, -21] > } monsters\generated\ground\smallquadruped\smallquadruped.animation 4c4 < "movement" : { --- > "body" : { 33,38d32 < }, < "knockback" : { < "frames" : 1 < }, < "knockout" : { < "frames" : 1 42,45c36,38 < < "attack" : { < "priority" : 1, < "default" : "idle", --- > "damage" : { > "priority" : 3, > "default" : "none", 47c40 < "idle" : { --- > "none" : { 50,67c43 < "melee" : { < "frames" : 4, < "cycle" : 0.4, < "mode" : "transition", < "transition" : "idle" < }, < "charge" : { < "frames" : 1, < "properties" : { < "immediateSound" : "/sfx/npc/monsters/skill_chargeup.ogg" < } < }, < "chargeAttack" : { < "frames" : 4, < "cycle" : 0.6, < "mode" : "end" < }, < "shooting" : { --- > "stunned" : { 78a55 > "transformationGroups" : [ "body" ], 83c60 < "movement" : { --- > "body" : { 89d65 < 92c68 < "image" : ":walk." --- > "image" : ":walk." 95d70 < 98c73 < "image" : ":walk." --- > "image" : ":walk." 101d75 < 104c78 < "image" : ":walk." --- > "image" : ":walk." 107d80 < 113d85 < 118,120c90,93 < }, < < "knockback" : { --- > } > }, > "damage" : { > "stunned" : { 124,130d96 < }, < < "knockout" : { < "properties" : { < "image" : ":jump", < "offset" : [-0.25, -0.25] < } 139a106 > "transformationGroups" : [ "body" ], 144c111 < "movement" : { --- > "body" : { 150d116 < 153c119 < "image" : ":walk." --- > "image" : ":walk." 156d121 < 159c124 < "image" : ":walk." --- > "image" : ":walk." 162d126 < 165c129 < "image" : ":walk." --- > "image" : ":walk." 168d131 < 174d136 < 179,181c141,144 < }, < < "knockback" : { --- > } > }, > "damage" : { > "stunned" : { 185,191d147 < }, < < "knockout" : { < "properties" : { < "image" : ":jump", < "offset" : [-0.25, -0.25] < } 200a157 > "transformationGroups" : [ "body" ], 205c162 < "movement" : { --- > "body" : { 211d167 < 214c170 < "image" : ":walk." --- > "image" : ":walk." 217d172 < 220c175 < "image" : ":walk." --- > "image" : ":walk." 223d177 < 226c180 < "image" : ":walk." --- > "image" : ":walk." 229d182 < 235d187 < 240,242c192,195 < }, < < "knockback" : { --- > } > }, > "damage" : { > "stunned" : { 246,252d198 < }, < < "knockout" : { < "properties" : { < "image" : ":jump", < "offset" : [-0.25, -0.25] < } 262c208 < "rotationGroup" : "projectileAim", --- > "transformationGroups" : [ "body", "aim" ], 267c213 < "movement" : { --- > "body" : { 273d218 < 276c221 < "image" : ":walk." --- > "image" : ":walk." 279d223 < 282c226 < "image" : ":walk." --- > "image" : ":walk." 285d228 < 288c231 < "image" : ":walk." --- > "image" : ":walk." 291d233 < 297d238 < 302,314d242 < }, < < "knockback" : { < "properties" : { < "image" : ":jump" < } < }, < < "knockout" : { < "properties" : { < "image" : ":jump", < "offset" : [-0.25, -0.25] < } 317,325c245,246 < < "attack" : { < "melee" : { < "properties" : { < "image" : ":melee." < } < }, < < "charge" : { --- > "damage" : { > "stunned" : { 327,339c248 < "image" : ":melee.1" < } < }, < < "chargeAttack" : { < "properties" : { < "image" : ":melee." < } < }, < < "shooting" : { < "properties" : { < "image" : ":rotation" --- > "image" : ":jump" 349a259 > "transformationGroups" : [ "body" ], 354c264 < "movement" : { --- > "body" : { 360d269 < 363c272 < "image" : ":walk." --- > "image" : ":walk." 366d274 < 369c277 < "image" : ":walk." --- > "image" : ":walk." 372d279 < 375c282 < "image" : ":walk." --- > "image" : ":walk." 378d284 < 384d289 < 387c292 < "image" : ":walk." --- > "image" : ":walk." 389,391c294,297 < }, < < "knockback" : { --- > } > }, > "damage" : { > "stunned" : { 395,401d300 < }, < < "knockout" : { < "properties" : { < "image" : ":jump", < "offset" : [-0.25, -0.25] < } 409,413c308,310 < "rotationGroups" : { < "projectileAim" : { < "rotationCenter" : [-1, -0.5], < "angularVelocity" : 1.5 < } --- > "transformationGroups" : { > "body" : {"interpolated" : true}, > "aim" : {"interpolated" : true} 423,444d319 < "stun" : { < "emissionRate" : 5, < "particles" : [ < { < "particle" : { < "type" : "animated", < "animation" : "/animations/sparkles/sparkle4.animation", < "size" : 1, < "position" : [-1.0, 0], < "destructionTime" : 7, < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "timeToLive" : 0.7, < "layer" : "front", < "variance" : { < "position" : [1, 0.7] < } < } < } < ] < }, < 447,837c322,338 < { < "particle" : { < "type" : "animated", < "animation" : "/animations/monstersplosion/monstersplosion.animation", < "size" : 1, < "angularVelocity" : 35, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "approach" : [1, 1], < "timeToLive" : 0.35, < "layer" : "middle" < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "ember", < "size" : 1, < "color" : [255, 0, 0, 255], < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 8], < "finalVelocity" : [0, -8], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [4, 3], < "size" : 1.3 < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 1, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < } < ] < }, < < "captured" : { < "particles" : [ < { < "particle" : { < "type" : "animated", < "animation" : "/animations/energy/energy.animation", < "size" : 1, < "angularVelocity" : 35, < "fade" : 1, < "destructionTime" : 7, < "position" : [0, 0], < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "approach" : [1, 1], < "timeToLive" : 0.4, < "layer" : "middle" < } < } < ] < }, < < "levelUp" : { < "particles" : [ < { "particle" : "monsterlevelup" } --- > { "particle" : "monstersplosion" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathfizz1left" }, > { "particle" : "deathfizz1right" }, > { "particle" : "deathfizz2left" }, > { "particle" : "deathfizz2right" }, > { "particle" : "deathfizz3left" }, > { "particle" : "deathfizz3right" }, > { "particle" : "deathfizz4left" }, > { "particle" : "deathfizz4right" } 843c344 < "turnHostile" : [ "/sfx/npc/monsters/monster_surprise.ogg" ], --- > "aggroHop" : [ "/sfx/npc/monsters/monster_surprise.ogg" ], 845a347 > 851,861d352 < }, < < "recover" : { < "type" : "flash", < "time" : 0.25, < "directives" : "fade=33FF33;0.25" < }, < < "shield" : { < "type" : "directive", < "directives" : "border=3;00FFFF99;00000000" monsters\generated\ground\smallquadruped\smallquadruped.monstertype 10a11,18 > "dropPools" : [ > { > "default" : "basicMonsterTreasure", > "bow" : "hunting", > "brain" : "brain" > } > ], > 13,30c21 < "/monsters/capturepod.lua", < "/monsters/generated/ground/groundMonster.lua", < "/scripts/pathing.lua", < "/monsters/tenant.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/monsters/returnHomeState.lua", < "/monsters/grumbleState.lua", < "/monsters/generated/ground/aggroHopState.lua", < "/monsters/generated/ground/approachState.lua", < "/monsters/generated/ground/fleeState.lua", < "/monsters/generated/ground/stunState.lua", < "/monsters/generated/ground/captiveState.lua", < "/monsters/generated/ground/wanderState.lua", < < "/monsters/generated/ground/skills/createGroundRangedAttack.lua" --- > "/monsters/monster.lua" 33,43c24,27 < "territoryDistance" : 40.0, < "territorialTargetRadius" : 20.0, < "minimalTargetRadius" : 6.0, < "targetSearchTime" : 0.5, < "targetHoldTime" : 5.0, < "meleeProjectileOffset" : [1, 0], < "closeDistance" : 6, < < "wanderTime" : [4.0, 6.0], < "wanderMovementTime" : [2.0, 3.0], < "wanderJumpProbability" : 0.1, --- > "behavior" : "monster", > > "behaviorConfig" : { > "damageOnTouch" : true, 45,46c29,66 < "jumpTargetDistance" : 4, < "jumpTime" : [0.8, 1.4], --- > "queryTargets" : true, > "targetQueryRange" : 30, > "targetOnDamage" : true, > "targetEntityTypes" : [ "player", "npc", "monster" ], > "keepTargetInSight" : true, > "keepTargetInRange" : 50, > "targetOutOfSightTime" : 2.5, > > "foundTargetActions" : [ { "name" : "action-aggrohop" } ], > > "approachActions" : [ > { > "name" : "approach-walk", > "parameters" : { > "canJump" : true, > "maxJumps" : 6, > "jumpXVelocity" : 12, > "jumpYVelocity" : 30, > "jumpXControlForce" : 50, > "fallState" : "jump", > "moveState" : "run", > "run" : true > } > } > ], > > "wanderActions" : [ > { > "name" : "wander-walk", > "cooldown" : 6.0, > "parameters" : { > "wanderTime" : [3, 9] > } > } > ] > }, > > "baseSkills" : [ "chargeAttack", "pounceAttack" ], 54,58c74 < "pathing" : { < "canOpenDoors" : false < }, < < "knockoutTime" : 0.1, --- > "knockoutTime" : 0.3, 61,62c77 < "movement" : "knockout", < "attack" : "idle" --- > "damage" : "stunned" 65,66d79 < "captureParticles" : "captured", < "levelUpParticles" : "levelUp", 68,74c81,82 < "exhaustionTimer" : 3.0, < "exhaustionTimeout" : 3.0, < "exhaustionDistanceLimit" : 1.0, < < "captureHealthFraction" : 0.5, < "killsPerLevel" : 20 < }, --- > "scale" : 1.0, > "metaBoundBox" : [-2.5, -2.5, 2.5, 2.5], 76,82c84,97 < "dropPools" : [ < { < "default" : "basicMonsterTreasure", < "bow" : "hunting", < "brain" : "brain" < } < ], --- > "movementSettings" : { > "collisionPoly" : [ [-1.5, -0.3], [-1.0, -1.0], [1.0, -1.0], [1.5, -0.3], [1.5, 0.1], [1.0, 0.6], [-1.0, 0.6], [-1.5, 0.1] ], > "mass" : 1.2, > "walkSpeed" : 2.0, > "runSpeed" : 10.0 > }, > > "touchDamage" : { > "poly" : [ [-1.5, -0.3], [-1.0, -1.0], [1.0, -1.0], [1.5, -0.3], [1.5, 0.1], [1.0, 0.6], [-1.0, 0.6], [-1.5, 0.1] ], > "damage" : 12, > "teamType" : "enemy", > "damageSourceKind" : "bite", > "statusEffects" : [ ] > }, 84,88c99,136 < "familyParameters" : [ < [ < { < "baseSkills" : [ "meleeAttack" ], < "specialSkills" : [ "shockingWaveAttack", "staticDischargeAttack", "bubbleBlastAttack", "waterGunAttack", "burninghaloAttack", "gasBelchAttack", "rainbowVomitAttack", "shockingBoltAttack", "plasmaTorpedoAttack", "eyeballSprayAttack", "bloodVomitAttack", "acidicSpitAttack", "fireballAttack", "icerockShotAttack", "doubleBarbSprayAttack", "miniDragonBreathAttack", "acidSprayAttack", "beamBurstAttack", "plasmaSweepAttack", "eyeballShotAttack", "glitterAttack", "darkGravityBallAttack", "fireSwirlAttack", "rockRollAttack", "iceBlastAttack", "snotBubbleAttack", "leafyGustAttack", "mudBallAttack", "lightBallAttack", "shardSprayAttack", "blueFlameAttack", "smokeRingAttack", "putridWaveAttack", "boneRainAttack", "orbOfZotsAttack", "snotShotAttack", "fishBreathAttack", "explosivePhlegmAttack", "cellBlastAttack" ] --- > "statusSettings" : { > "statusProperties" : { > "targetMaterialKind" : "organic" > }, > > "appliesEnvironmentStatusEffects" : false, > "minimumLiquidStatusEffectPercentage" : 0.1, > > "primaryScriptSources" : [ > "/stats/monster_primary.lua" > ], > "primaryScriptDelta" : 5, > > "stats" : { > "knockbackStunTime" : { > "baseValue" : 0.25 > }, > "maxHealth" : { > "baseValue" : 32 > }, > "protection" : { > "baseValue" : 0.0 > }, > "healthRegen" : { > "baseValue" : 0.0 > } > }, > > "resources" : { > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, > "health" : { > "maxStat" : "maxHealth", > "deltaStat" : "healthRegen", > "defaultPercentage" : 100 > } 90,91c138 < ] < ], --- > }, 93,159c140,142 < "variantParameters" : [ < [ < [1, { < "scale" : 1.0, < "metaBoundBox" : [-2.5, -2.5, 2.5, 2.5], < < "movementSettings" : { < "collisionPoly" : [ [-1.5, -0.3], [-1.0, -1.0], [1.0, -1.0], [1.5, -0.3], [1.5, 0.1], [1.0, 0.6], [-1.0, 0.6], [-1.5, 0.1] ], < "mass" : 1.2, < "walkSpeed" : 2.0, < "runSpeed" : 10.0 < }, < < "touchDamage" : { < "poly" : [ [-1.5, -0.3], [-1.0, -1.0], [1.0, -1.0], [1.5, -0.3], [1.5, 0.1], [1.0, 0.6], [-1.0, 0.6], [-1.5, 0.1] ], < "damage" : 12, < "teamType" : "enemy", < "damageSourceKind" : "bite", < "statusEffects" : [ ] < }, < < "statusSettings" : { < "statusProperties" : { < "targetMaterialKind" : "organic" < }, < < "appliesEnvironmentStatusEffects" : false, < "minimumLiquidStatusEffectPercentage" : 0.1, < < "primaryScriptSources" : [ < "/stats/monster_primary.lua" < ], < "primaryScriptDelta" : 5, < < "stats" : { < "knockbackStunTime" : { < "baseValue" : 0.25 < }, < "maxHealth" : { < "baseValue" : 32 < }, < "protection" : { < "baseValue" : 0.0 < }, < "healthRegen" : { < "baseValue" : 0.0 < } < }, < < "resources" : { < "stunned" : { < "deltaValue" : -1.0, < "initialValue" : 0.0 < }, < "health" : { < "maxStat" : "maxHealth", < "deltaStat" : "healthRegen", < "defaultPercentage" : 100 < } < } < }, < < "mouthOffset" : [8, 0], < "feetOffset" : [0, -8] < } ] < ] < ] --- > "mouthOffset" : [8, 0], > "feetOffset" : [0, -8] > } objects\ancient\ancientbigchest\ancientbigchest.object 14,16c14,16 < "apexDescription" : "A fearsome ancient chest ornamented with a lidless eye.", < "avianDescription" : "A fearsome ancient chest ornamented with a lidless eye.", < "floranDescription" : "Ssscary chessst make Floran nervousss.", --- > "apexDescription" : "This chest looks very old and creepy.", > "avianDescription" : "This chest looks very old and creepy.", > "floranDescription" : "Ssscary chessst makes Floran nervousss.", 18,19c18,20 < "humanDescription" : "A fearsome ancient chest ornamented with a lidless eye.", < "hylotlDescription" : "A fearsome ancient chest ornamented with a lidless eye.", --- > "humanDescription" : "A creepy old chest. Dare I open it?", > "hylotlDescription" : "I was taught to be wary of mysterious chests.", > "novakidDescription" : "I don't care much for the way this chest is lookin' at me.", objects\ancient\ancientconsole\returnconsole.object 13c13 < "shortdescription" : "Return Console", --- > "shortdescription" : "Ancient Console", objects\ancient\ancientflametrap\ancientflametrap.object 152c152 < "power" : 40, --- > "power" : 20, objects\ancient\ancientprop\ancientprop.object 8c8 < "shortdescription" : "Ancient Prop", --- > "shortdescription" : "TODO - Ancient Prop", objects\ancient\challengedoor\challengereturndoor.object 10c10 < "shortdescription" : "Return Door", --- > "shortdescription" : "Challenge Door", objects\ancient\hologramgalaxy\hologramgalaxy.object 15c15 < "avianDescription" : "This depiction of a diety reminds me of Kluex.", --- > "avianDescription" : "Planets orbiting a sun. Which solar system is it?", objects\ancient\jumpbooster\jumpbooster.object 15a16 > "novakidDescription" : "This device boosts my jumps.", objects\ancient\largetentacleprop\largetentacleprop.object 10c10 < "shortdescription" : "Huge Tentacle Prop", --- > "shortdescription" : "Huge Tentacle Statue", 16,17c16,17 < "glitchDescription" : "Surprise. A large stone tentacle emerges.", < "humanDescription" : "A gaint tentacle! Is that connected to anything?", --- > "glitchDescription" : "Surprised. A large stone tentacle emerges.", > "humanDescription" : "A giant tentacle! Is that connected to anything?", 18a19 > "novakidDescription" : "A big ol' tentacle.", objects\ancient\lightstreaks\lightstreaks.object 18c18 < "novakidDescription" : "An old statue, like a ghost of the past, stirrin' memories long gone.", --- > "novakidDescription" : "These light rays are tranquil.", objects\ancient\monolithgate\monolithgate.object 12,18c12,18 < "apexDescription" : "A mysterious gate to somewhere.", < "avianDescription" : "A gate of mysterious origin.", < "floranDescription" : "Floran wonder which ssstrange creature make door.", < "glitchDescription" : "Confusion. I cannot trace the origins of this gate.", < "humanDescription" : "A strange and arcane gate carved in mystery.", < "hylotlDescription" : "Looks like something a Hylotl child would make in arts and crafts.", < "novakidDescription" : "A strange gate that's jus' beggin' me to walk through it.", --- > "apexDescription" : "It's a gate of magnificent proportion. What's on the other side?", > "avianDescription" : "This glorious gate is like nothing I've seen before. But where does it lead?", > "floranDescription" : "Big gate makes Floran feel sssmall. Floran wants to know where it leadsss.", > "glitchDescription" : "Amazed. This is a gate of breathtaking proportion. Who built it? And where does it lead?", > "humanDescription" : "A magestic gate like nothing I've encountered before. Who created this wonder? And what's on the other side?", > "hylotlDescription" : "This is nothing short of a magnificent creation. This gate must have been constructed for a very special purpose.", > "novakidDescription" : "I lack the words to describe this magnificent gate. I will silently admire it...", objects\ancient\powerbooster\powerbooster.object 15a16 > "novakidDescription" : "This gas seems to increase my strength.", objects\ancient\sawblade2\sawblade2.object 14c14 < "glitchDescription" : "Trepidation. This appears to be spinning at four thousand RPM.", --- > "glitchDescription" : "Worried. This appears to be spinning at four thousand RPM.", 16a17 > "novakidDescription" : "That doesn't look friendly.", objects\ancient\speedbooster\speedbooster.object 15a16 > "novakidDescription" : "A green gas. It increases my speed.", objects\apex\apexapesign\apexapesign.object 7a8 > 11c12 < "glitchDescription" : "Curiosity. I would like to examine this life form and investigate its optics.", --- > "glitchDescription" : "Curious. I would like to examine this life form and investigate its optics.", 13a15 > "novakidDescription" : "All seeing? Some things are best unseen.", objects\apex\apexaquarium1\apexaquarium1.object 10a11 > 14c15 < "glitchDescription" : "Pity. This life form is trapped.", --- > "glitchDescription" : "Empathic. This life form is trapped.", 16a18 > "novakidDescription" : "A single fish. Maybe it needs a friend?", objects\apex\apexaquarium2\apexaquarium2.object 10a11 > 14c15 < "glitchDescription" : "Indifference. An empty tank.", --- > "glitchDescription" : "Neutral. An empty tank.", 16a18 > "novakidDescription" : "It's for keepin fish. But there ain't no fish in it.", objects\apex\apexarmchair\apexarmchair.object 9a10 > 13c14 < "glitchDescription" : "Mild disgust. This chair offends my optics.", --- > "glitchDescription" : "Displeased. This chair offends my optics.", 15a17 > "novakidDescription" : "It ain't pretty, but it's comfortable.", objects\apex\apexbananasign\apexbananasign.object 11a12 > 15c16 < "glitchDescription" : "Curiosity. I believe this to be Apex sustenance.", --- > "glitchDescription" : "Curious. I believe this to be Apex sustenance.", 17a19 > "novakidDescription" : "A picture of a banana. It also says 'BANANA', in case we'd miss it.", objects\apex\apexbed\apexbed.object 14c14 < "glitchDescription" : "Comfort. A useful station for recharging one's batteries.", --- > "glitchDescription" : "Observant. A useful station for recharging one's batteries.", 16a17 > "novakidDescription" : "A simple bed. It does the job.", objects\apex\apexbloodbank\apexbloodbank.object 14c14 < "glitchDescription" : "Curiosity. For what purpose is this blood used?", --- > "glitchDescription" : "Curious. For what purpose is this blood used?", 16a17 > "novakidDescription" : "I can't say I've ever seen this much blood before.", objects\apex\apexbrainjar\apexbrainjar.object 9a10 > 13c14 < "glitchDescription" : "Wistful jealousy. A real brain..", --- > "glitchDescription" : "Jealous. A real brain..", 15a17 > "novakidDescription" : "A brain in a jar? I ain't comfortable with that.", objects\apex\apexbustmale\apexbustmale.object 14c14 < "glitchDescription" : "Nostalgia. I am reminded of the statues of our kings.", --- > "glitchDescription" : "Nostalgic. I am reminded of the statues of our kings.", 16a17,18 > "novakidDescription" : "An impressive statue. Who is this Apex?", > objects\apex\apexceilingtv\apexceilingtv.object 22c22 < "apexDescription" : "There is one of these in every Apex home. They're full of 'educational' broadcasts. If you watch long enough you might spot an image of yourself... watching the television.", --- > "apexDescription" : "There is one of these in every Apex home. They're full of 'educational' broadcasts. If you watch long enough you might spot an image of yourself... watching the television.", 25c25 < "glitchDescription" : "Pity. These creatures have less freedom than the Glitch.", --- > "glitchDescription" : "Sympathetic. These creatures have less freedom than the Glitch.", 27a28 > "novakidDescription" : "I don't think it broadcasts entertainment.", objects\apex\apexcomfychair\apexcomfychair.object 12a13 > 16c17 < "glitchDescription" : "Comfort. A throne worthy of a king.", --- > "glitchDescription" : "Impressed. A throne worthy of a king.", 18a20 > "novakidDescription" : "This sure is a comfy chair to sit on.", objects\apex\apexconsole1\apexconsole1.object 15c15 < "glitchDescription" : "Curiosity. A lever. ", --- > "glitchDescription" : "Curious. A lever. ", 17a18 > "novakidDescription" : "A terminal with a big red lever. Should I pull it?", objects\apex\apexconsolekeyboard\apexconsolekeyboard.object 14,15c14,15 < "floranDescription" : "SSSssilly yumyum technology.", < "glitchDescription" : "Aloofness. Only 26 symbols?", --- > "floranDescription" : "SSSssilly technology.", > "glitchDescription" : "Questioning. Only 26 symbols?", 17a18 > "novakidDescription" : "A keyboard. Used for typin'.", objects\apex\apexcoolbookcase\apexcoolbookcase.object 11a12 > 15c16 < "glitchDescription" : "Mild interest. Perhaps there is something to learn from the Apex.", --- > "glitchDescription" : "Curious. Perhaps there is something to learn from the Apex.", 17a19,20 > "novakidDescription" : "It seems to contain mainly science related literature.", > objects\apex\apexcoolchair\apexcoolchair.object 16c16 < "glitchDescription" : "Envy. This chair is most delightful.", --- > "glitchDescription" : "Envious. This chair is most delightful.", 18a19,20 > "novakidDescription" : "An egg shaped chair. It's pretty cool I guess.", > objects\apex\apexcoolcomputer\apexcoolcomputer.object 14c14 < "glitchDescription" : "Seduction. What a beautiful machine.", --- > "glitchDescription" : "Appreciative. What a stunning machine.", 16a17,18 > "novakidDescription" : "It's a computer screen.", > objects\apex\apexcoolcupboard\apexcoolcupboard.object 16c16 < "glitchDescription" : "Interest. Could contain items.", --- > "glitchDescription" : "Curious. Could contain items.", 18a19 > "novakidDescription" : "Let's take a look inside.", objects\apex\apexcooldoor\apexcooldoor.object 15c15 < "glitchDescription" : "Jealousy. Such strong materials.", --- > "glitchDescription" : "Jealous. Such strong materials.", 17a18 > "novakidDescription" : "A very thick door.", objects\apex\apexcoolserver\apexcoolserver.object 9a10 > 13c14 < "glitchDescription" : "Shame. A server protected by security even I can not bypass.", --- > "glitchDescription" : "Ashamed. A server protected by security even I can not bypass.", 15a17 > "novakidDescription" : "This piece of technology stores information.", objects\apex\apexcoolshelf1\apexcoolshelf1.object 9a10 > 13c14 < "glitchDescription" : "Disappointment. Nothing here.", --- > "glitchDescription" : "Disappointed. Nothing here.", 15a17,18 > "novakidDescription" : "Ain't nothing here to see.", > objects\apex\apexcoolshelf2\apexcoolshelf2.object 9a10 > 13c14 < "glitchDescription" : "Morbid curiosity. I would like to drink one.", --- > "glitchDescription" : "Curious. What would happen if I drank one?", 15a17,18 > "novakidDescription" : "I have a feelin' those are not for drinkin'.", > objects\apex\apexcooltable\apexcooltable.object 9a10 > 13c14 < "glitchDescription" : "Sarcasm. A very interesting find.", --- > "glitchDescription" : "Sarcastic. A very interesting find.", 15a17,18 > "novakidDescription" : "A metallic table.", > objects\apex\apexcouch\apexcouch.object 18a19 > "novakidDescription" : "I guess it's for sitting on and not for lookin' at.", objects\apex\apexcounter1\apexcounter1.object 16c16 < "glitchDescription" : "Hunger. The possibility of food excites even the Glitch.", --- > "glitchDescription" : "Eager. The possibility of food excites even the Glitch.", 18a19 > "novakidDescription" : "Just a good ol' kitchen counter.", objects\apex\apexcounter2\apexcounter2.object 18,19c18,19 < "floranDescription" : "Mmm let'ss make tasssty food!", < "glitchDescription" : "Hungry. We can prepare sustenance here.", --- > "floranDescription" : "Mmm let's make tasssty food!", > "glitchDescription" : "Observant. We can prepare sustenance here.", 21a22 > "novakidDescription" : "A surface for preparin' a meal.", objects\apex\apexcurtain\apexcurtain.object 15c15 < "glitchDescription" : "Confusion. Curtains too small for purpose.", --- > "glitchDescription" : "Confused. Curtains too small for purpose.", 17a18 > "novakidDescription" : "Some curtains. They seem to short to cover the window.", objects\apex\apexdesk\apexdesk.object 16c16 < "glitchDescription" : "Amused confusion. Objects fused to desk surface. Can not remove.", --- > "glitchDescription" : "Confused. Objects seem fused to the desk surface. They can't be removed.", 18a19 > "novakidDescription" : "This coffee cup is nailed to the desk. What good is that?", objects\apex\apexdonotenter\apexdonotenter.object 13a14 > "novakidDescription" : "I guess I won't enter. Or will I...?", objects\apex\apexflusign\apexflusign.object 18a19 > "novakidDescription" : "I ain't keen to catch that.", objects\apex\apexfridge\apexfridge.object 16c16 < "glitchDescription" : "Hungry. We must search this food storage device.", --- > "glitchDescription" : "Determined. We must search this food storage device.", 18a19 > "novakidDescription" : "It's chilly on the inside to keep food fresh for longer.", objects\apex\apexhdtv\apexhdtv.object 14,15c14,15 < "floranDescription" : "It'sss a large dinner menu.", < "glitchDescription" : "Caution. Can he see us?", --- > "floranDescription" : "It'sss a large tv.", > "glitchDescription" : "Cautious. Can he see us?", 17a18 > "novakidDescription" : "A big ol' monitor. Displaying nothin' but a big ol' Ape.", objects\apex\apexlamp1\apexlamp1.object 14a15 > "novakidDescription" : "A lamp. Nothin' special about it.", objects\apex\apexlamp2\apexlamp2.object 12c12 < "glitchDescription" : "Comfort. With light comes safety.", --- > "glitchDescription" : "Satisfied. With light comes safety.", 14a15 > "novakidDescription" : "It's a tall, standin' lamp.", objects\apex\apexlamp3\apexlamp3.object 18a19 > "novakidDescription" : "A type of paper lamp hangin' from the ceiling.", objects\apex\apexlevel1sign\apexlevel1sign.object 16c16 < "glitchDescription" : "Nostalgic. I had an old friend that ran a facility like this.", --- > "glitchDescription" : "Neutral. I'm currently on level one.", 18a19,20 > "novakidDescription" : "It seems I've reached level one.", > objects\apex\apexlocker\apexlocker.object 19a20 > "novakidDescription" : "A locker. What does it contain?", objects\apex\apexmedsign\apexmedsign.object 15c15 < "glitchDescription" : "Excitement. An opportunity to learn about Apex physiology.", --- > "glitchDescription" : "Curious. An opportunity to learn about Apex physiology.", 17a18,19 > "novakidDescription" : "Medical equipment is kept here.", > objects\apex\apexmocksign\apexmocksign.object 17a18 > "novakidDescription" : "Defacin' a Big Ape poster is a daring move. I bed someone paid the price.", objects\apex\apexnameplate\apexnameplate.object 13a14 > "novakidDescription" : "Who is this 'Big Ape'? I doubt he's as big as he makes out to be...", objects\apex\apexobeysign\apexobeysign.object 17a18 > "novakidDescription" : "I ain't takin' orders from no picture.", objects\apex\apexofficechair\apexofficechair.object 16c16 < "glitchDescription" : "Critical. Ergonomics unacceptable.", --- > "glitchDescription" : "Unimpressed. Ergonomics unacceptable.", 18a19 > "novakidDescription" : "It's even more uncomfortable than it looks. And it looks pretty uncomfortable.", objects\apex\apexoven\apexoven.object 17c17 < "glitchDescription" : "Hungry. Cooking device identified.", --- > "glitchDescription" : "Observant. Cooking device identified.", 19a20 > "novakidDescription" : "It's for cookin' meals.", objects\apex\apexpainting1\apexpainting1.object 15c15 < "glitchDescription" : "Mistrust. Inaccurate painting suspected.", --- > "glitchDescription" : "Distrusting. Inaccurate painting suspected.", 17a18 > "novakidDescription" : "An Apex against a magnificent sunset.", objects\apex\apexpainting2\apexpainting2.object 15c15 < "glitchDescription" : "Investigative. What is the source of this Apex's happiness?", --- > "glitchDescription" : "Curious. What is the source of this Apex's happiness?", 17a18 > "novakidDescription" : "An apex in high spirits.", objects\apex\apexpainting3\apexpainting3.object 17a18 > "novakidDescription" : "This disc has a subtle pattern.", objects\apex\apexpainting4\apexpainting4.object 15c15 < "glitchDescription" : "Identify. It appears to be a fruit.", --- > "glitchDescription" : "Observant. It appears to be a fruit.", 17a18 > "novakidDescription" : "A fruit shaped like a yellow gun.", objects\apex\apexpainting5\apexpainting5.object 17a18 > "novakidDescription" : "This must've taken time and dedication to make.", objects\apex\apexpiano\apexpiano.object 14c14 < "glitchDescription" : "Discovery. The mathematics behind this machine are relatively simple.", --- > "glitchDescription" : "Observant. The mathematics behind this machine are relatively simple.", 16a17 > "novakidDescription" : "I wouldn't say no to some soothin' piano tunes. Too bad no one is playin'.", objects\apex\apexpod\apexpod.object 22c22 < "glitchDescription" : "Shock. What is going on here!?", --- > "glitchDescription" : "Shocked. What is going on here!?", 24a25 > "novakidDescription" : "This just don't seem right to me.", objects\apex\apexpod2\apexpod2.object 22c22 < "glitchDescription" : "Examination. Machine appears to attempt to alter Apex DNA.", --- > "glitchDescription" : "Attentive. Machine appears to attempt to alter Apex DNA.", 24a25 > "novakidDescription" : "I ain't going near that.", objects\apex\apexradio\apexradio.object 16a17 > "novakidDescription" : "It don't seem to be workin'.", objects\apex\apexrecordplayer\apexrecordplayer.object 16c16 < "glitchDescription" : "Analysing. Music demonstrates a lack of musical theory. Contains messages.", --- > "glitchDescription" : "Focused. Music demonstrates a lack of musical theory. Contains messages.", 18a19 > "novakidDescription" : "A device that plays music.", objects\apex\apexsink\apexsink.object 14c14 < "glitchDescription" : "Scanning. Water purity 13%. It appears the water contains a synthetic element.", --- > "glitchDescription" : "Attentive. Water purity 13%. It appears the water contains a synthetic element.", 16a17 > "novakidDescription" : "It seems safe to drink from.", objects\apex\apexslidingdoor1\apexslidingdoor1.object 17a18 > "novakidDescription" : "An impressive doorway. These don't come cheap.", objects\apex\apexslidingdoor2\apexslidingdoor2.object 17a18 > "novakidDescription" : "An impressive doorway. These don't come cheap.", objects\apex\apexspeaker\apexspeaker.object 14c14 < "floranDescription" : "Perhapsss it iss Apex drive-through. Floran would like one Apex, extra fur. hehehahaha.", --- > "floranDescription" : "Hello...? Floran isss sure someone is listening...", 17a18 > "novakidDescription" : "A device for broadcasting orders, not music. Shame.", objects\apex\apexstatue\apexstatue.object 12c12 < "avianDescription" : "A scientist. tThe Stargazers would often warn us of the dangers inherent to science.", --- > "avianDescription" : "A scientist. The Stargazers would often warn us of the dangers inherent to science.", 16a17,19 > "novakidDescription" : "A statue of someone who sacrificed their life. Was it willingly?", > > objects\apex\apexstatue1\apexstatue1.object 16a17 > "novakidDescription" : "He must've fancied himself, this Big Ape.", objects\apex\apexstatue2\apexstatue2.object 16a17 > "novakidDescription" : "They like fruit, huh?", objects\apex\apexstatue3\apexstatue3.object 12c12 < "avianDescription" : "Something something strange about this statue.", --- > "avianDescription" : "There is something odd about this statue.", 14c14 < "glitchDescription" : "Investigate. There is a device of some kind hidden in this statue.", --- > "glitchDescription" : "Investigative. There is a device of some kind hidden in this statue.", 16a17 > "novakidDescription" : "Is that a button? Discreet.", objects\apex\apexstoragelocker\apexstoragelocker.object 12c12 < "shortdescription" : "Storage Locker", --- > "shortdescription" : "Apex Ship Locker", 13a14,22 > > "apexDescription" : "A locker made from metal.", > "avianDescription" : "A place to keep your things.", > "floranDescription" : "Floran can ssstuff things into locker.", > "glitchDescription" : "Neutral. A metallic ship locker.", > "humanDescription" : "It's an industrial looking ship locker.", > "hylotlDescription" : "Somewhere to store personal belongings.", > "novakidDescription" : "A locker in the wall.", > objects\apex\apextable\apextable.object 16a17 > "novakidDescription" : "It's just a wooden table.", objects\apex\apextablelamp\apextablelamp.object 13c13 < "glitchDescription" : "Tinkering. It appears this object is obtaining biometric data from nearby organic lifeforms.", --- > "glitchDescription" : "Observant. It appears this object is obtaining biometric data from nearby organic lifeforms.", 15a16 > "novakidDescription" : "An eerie green light.", objects\apex\apexthoughtreassign\apexthoughtreassign.object 14,15c14,15 < "floranDescription" : "Sssuch things the Floran detestsss.", < "glitchDescription" : "Understanding. Thought reassignment is common amongst Glitch.", --- > "floranDescription" : "Floran doesn't like this sssign.", > "glitchDescription" : "Sympathetic. Thought reassignment is common amongst Glitch.", 17a18 > "novakidDescription" : "The sign isn't workin' on me. I don't feel any different.", objects\apex\apextorturebed\apextorturebed.object 14c14 < "glitchDescription" : "Disgust. The Glitch make use of such devices to extract secrets from enemies.", --- > "glitchDescription" : "Disgusted. The Glitch make use of such devices to extract secrets from enemies.", 16a17 > "novakidDescription" : "A wicked device.", objects\apex\apextv\apextv.object 15c15 < "glitchDescription" : "Investigate. The device is receiving thousands of different broadcasts, but they all appear to be the same.", --- > "glitchDescription" : "Observant. The device is receiving thousands of different broadcasts, but they all appear to be the same.", 17a18 > "novakidDescription" : "A creature is staring at me from the screen.", objects\apex\apexwallpainting1\apexwallpainting1.object 16c16 < "humanDescription" : "My god, art from the 21st Century.", --- > "humanDescription" : "My god, this art is old fashioned.", 17a18 > "novakidDescription" : "Sunset coloured shapes on a canvas.", objects\apex\apexwallpainting2\apexwallpainting2.object 16c16 < "humanDescription" : "My god, art from the 21st Century.", --- > "humanDescription" : "My god, this art is old fashioned.", 17a18 > "novakidDescription" : "Sunset coloured shapes on a canvas.", objects\avian\flametrap\flametrap.object 152c152 < "power" : 40, --- > "power" : 20, particles\iceswoosh1.particle 5d4 < "looping" : true, 12,13c11,12 < "size" : 0.5, < "layer" : "middle", --- > "size" : 0.7, > "layer" : "back", particles\iceswoosh2.particle 5c5,6 < "animation" : "/animations/frozendust2/frozendust2.animation", --- > "looping" : true, > "animation" : "/animations/elementalaura/iceaura/iceaura.animation", 11,12c12,13 < "size" : 1, < "layer" : "back", --- > "size" : 0.2, > "layer" : "middle", projectiles\physics.config 208a209 > "enableSurfaceSlopeCorrection" : true, 224a226 > "enableSurfaceSlopeCorrection" : true, 410c412 < "gravityMultiplier" : 3.0, --- > "gravityMultiplier" : 5.0, 808a811 > "enableSurfaceSlopeCorrection" : true, projectiles\activeitems\boomerang\boomerang.projectile 8a9 > "orientationLocked" : true, projectiles\activeitems\boomerang\boomerangprojectile.lua 11a12,17 > > if self.ignoreTerrain then mcontroller.applyParameters({collisionEnabled=false}) end > > if specialMovement then > specialMovement:init() > end 16c22,24 < if self.ignoreTerrain then mcontroller.applyParameters({collisionEnabled=false}) end --- > if specialMovement then > specialMovement:update(dt) > end 26c34 < projectile.die() -- TODO: activeItem should pick this up --- > projectile.die() 30c38 < mcontroller.setVelocity(vec2.mul(vec2.norm(toTarget), self.speed)) --- > mcontroller.approachVelocity(vec2.mul(vec2.norm(toTarget), self.speed), 500) projectiles\activeitems\boomerang\fireboomerang.projectile 8a9 > "orientationLocked" : true, projectiles\activeitems\boomerang\iceboomerang.projectile 8a9 > "orientationLocked" : true, 19c20 < "fuzzAngle" : 0 --- > "fuzzAngle" : 360 projectiles\activeitems\boomerang\spectralboomerang.projectile 8a9 > "orientationLocked" : true, projectiles\activeitems\boomerang\wormerang.projectile 29c29 < "timeToLive" : 5, --- > "timeToLive" : 8, 32c32 < "script" : "boomerangprojectile.lua" --- > "script" : "wormerangprojectile.lua" projectiles\activeitems\chainball\chainball.lua 40c40 < self.landed = mcontroller.onGround() --- > self.landed = mcontroller.onGround() and vec2.mag(mcontroller.velocity()) < 0.2 76a77,80 > end > > function speed() > return vec2.mag(mcontroller.velocity()) projectiles\activeitems\chakram\chakram.projectile 4c4 < "animationCycle" : 0.4, --- > "animationCycle" : 0.3, 7,8d6 < "lightColor" : [17, 160, 185], < "pointLight" : true, 10c8 < "emitters" : [ "chakram" ], --- > "orientationLocked" : true, 17c15 < "speed" : 70, --- > "speed" : 40, 26,33c24 < "script" : "chakramprojectile.lua", < < "controlForce" : 300, < "pickupDistance" : 1.0, < "snapDistance" : 4.5, < < "hoverMaxDistance" : 15, < "hoverTime" : 0.8 --- > "script" : "chakramprojectile.lua" projectiles\activeitems\chakram\chakramprojectile.lua 5d4 < self.controlForce = config.configParameter("controlForce") 11,12c10,11 < self.hoverMaxDistance = config.configParameter("hoverMaxDistance") < self.hoverTime = config.configParameter("hoverTime") --- > self.maxDistance = config.configParameter("maxDistance") > self.stickTime = config.configParameter("stickTime", 0) 15,17d13 < local aimPosition = config.configParameter("ownerAimPosition") < self.hoverDistance = math.min(self.hoverMaxDistance, world.magnitude(self.initialPosition, aimPosition)) < self.hoverPosition = vec2.add(vec2.mul(vec2.norm(mcontroller.velocity()), self.hoverDistance), self.initialPosition) 23,27c19,26 < if self.hoverTimer then < self.hoverTimer = math.max(0, self.hoverTimer - dt) < end < < if mcontroller.isColliding() or self.hoverTimer == 0 then --- > if self.stickTimer then > self.stickTimer = math.max(0, self.stickTimer - dt) > if self.stickTimer == 0 then > self.returning = true > end > elseif mcontroller.isSticking() then > self.stickTimer = self.stickTime > elseif mcontroller.isColliding() then 29,30d27 < elseif self.hoverTimer then < mcontroller.approachVelocity({0,0}, 1000) 32,38c29,31 < local distanceToHover = self.hoverDistance - world.magnitude(mcontroller.position(), self.initialPosition) < if distanceToHover < 0.5 then < self.hoverTimer = self.hoverTime < mcontroller.setVelocity({0,0}) < mcontroller.setPosition(self.hoverPosition) < elseif distanceToHover < 5 then < mcontroller.approachVelocity({0,0}, self.controlForce) --- > local distanceTraveled = world.magnitude(mcontroller.position(), self.initialPosition) > if distanceTraveled > self.maxDistance then > self.returning = true projectiles\activeitems\chakram\sawchakram.projectile 7,8d6 < "lightColor" : [17, 160, 185], < "pointLight" : true, 9a8 > "orientationLocked" : true, 16c15 < "speed" : 60, --- > "speed" : 45, 21a21 > "emitters" : [ "sparks", "sparks", "sparks", "sparks" ], 25,32c25 < "script" : "sawchakramprojectile.lua", < < "controlForce" : 300, < "pickupDistance" : 1.0, < "snapDistance" : 4.5, < < "maxDistance" : 10, < "stickTime" : 1.5 --- > "script" : "chakramprojectile.lua" projectiles\activeitems\traildash\icetrail.projectile 22a23,142 > }, > { > "action" : "loop", > "count" : 2, > "body" : [ > { > "action" : "particle", > "specification" : { > "type" : "animated", > "looping" : true, > "animation" : "/animations/statuseffects/frozen/frozen.animation", > "size" : 0.5, > "approach" : [30, 30], > "timeToLive" : 0.5, > "destructionAction" : "shrink", > "destructionTime" : 0.425, > "layer" : "middle", > "variance" : { > "position" : [1.5, 1.0], > "finalVelocity" : [1.5, 1.5], > "timeToLive" : 0.3 > } > } > }, > { > "action" : "particle", > "specification" : { > "type" : "animated", > "looping" : true, > "animation" : "/animations/frozendust2/frozendust2.animation", > "size" : 0.5, > "approach" : [30, 30], > "timeToLive" : 0.5, > "destructionAction" : "shrink", > "destructionTime" : 0.425, > "layer" : "middle", > "variance" : { > "position" : [1.5, 1.0], > "finalVelocity" : [1.5, 1.5], > "timeToLive" : 0.3 > } > } > }, > { > "action" : "particle", > "specification" : { > "type" : "animated", > "looping" : true, > "animation" : "/animations/shards/iceshard.animation", > "size" : 1, > "approach" : [30, 30], > "timeToLive" : 1, > "destructionAction" : "shrink", > "destructionTime" : 1, > "layer" : "middle", > "variance" : { > "position" : [0, 1.0], > "finalVelocity" : [5, 5], > "timeToLive" : 1 > } > } > }, > { > "action" : "particle", > "specification" : { > "type" : "animated", > "looping" : true, > "animation" : "/animations/shards/iceshard.animation", > "size" : 1, > "approach" : [30, 30], > "timeToLive" : 1, > "destructionAction" : "shrink", > "destructionTime" : 1, > "layer" : "middle", > "variance" : { > "position" : [0, 1.0], > "finalVelocity" : [5, 5], > "timeToLive" : 1 > } > } > }, > { > "action" : "particle", > "specification" : { > "type" : "animated", > "animation" : "/animations/elementalaura/iceaura/iceaura.animation", > "initialVelocity" : [0, 1], > "finalVelocity" : [0, 3], > "approach" : [1, 1], > "timeToLive" : 1.0, > "size" : 0.7, > "layer" : "back", > "variance" : { > "initialVelocity" : [4, 1], > "rotation" : 180, > "angularVelocity" : 20 > } > } > }, > { > "action" : "particle", > "specification" : { > "type" : "ember", > "size" : 1.5, > "color" : [99, 216, 232, 255], > "fade" : 0.9, > "approach" : [30, 30], > "light" : [50, 140, 160], > "timeToLive" : 0.5, > "layer" : "middle", > "variance" : { > "position" : [2.0, 1.0], > "finalVelocity" : [1.5, 1.5], > "size" : 0.5, > "timeToLive" : 0.3, > "fade" : 0.3 > } > } > } > ] 25a146 > projectiles\activeitems\traildash\wormtrail.projectile 16c16,19 < "damageKind" : "poisonbarrier" --- > "damageKind" : "poisonbarrier", > "movementSettings" : { > "collisionEnabled" : false > } projectiles\npcs\moontantgoop\moontantgoop.projectile 5a6 > "animationLoops" : false, projectiles\throwable\flare\flare.projectile 16a17 > "onlyHitTerrain" : true, projectiles\traps\trapflame\trapflame.projectile 8c8 < "power" : 40, --- > "power" : 20, quests\generated\pools\merchantstock1.config 4,6c4,38 < ["apex", "banana"], < ["glitch", "sewagebarrel"], < ["human", "copperpickaxe"] --- > ["apex", "apexwallpainting1"], > ["apex", "apexrecordplayer"], > ["apex", "apexpainting1"], > ["apex", "flowerbasket1"], > ["apex", "classicpillarsmall"], > > ["floran", "plantdoor1"], > ["floran", "floranpainting1"], > ["floran", "florandrum2"], > ["floran", "huntinggroundtorch"], > ["floran", "floranstove"], > > ["glitch", "medievalpedestal"], > ["glitch", "medievalsworddisplay"], > ["glitch", "medievalstreetlamp"], > ["glitch", "medievalglobe"], > ["glitch", "medievalarmor"], > > ["avian", "owlclock"], > ["avian", "birdgroundlantern"], > ["avian", "crystaltorch"], > ["avian", "spearrack"], > ["avian", "avianbanner1"], > > ["human", "bunkerposter2"], > ["human", "electriclight"], > ["human", "microwave"], > ["human", "steelchair"], > ["human", "bunkerdesk"], > > ["hylotl", "hylotlsupportbeam"], > ["hylotl", "hylotlshojidoor"], > ["hylotl", "hylotlfloorornament"], > ["hylotl", "hylotllamp"], > ["hylotl", "neonhylotlhead"] quests\generated\pools\merchantstock2.config 4,6c4,44 < ["apex", "pineapple"], < ["glitch", "medievaltorch"], < ["human", "flashlight"] --- > ["apex", "apexpiano"], > ["apex", "classicchina"], > ["apex", "classicchandelier"], > ["apex", "classicfountain"], > ["apex", "classicbookcase"], > ["apex", "copperpickaxe"], > > ["floran", "skullwalltorch"], > ["floran", "plantdoor2"], > ["floran", "florancouch"], > ["floran", "floranchandelier"], > ["floran", "huntinglight1"], > ["floran", "copperpickaxe"], > > ["glitch", "castledoor"], > ["glitch", "largebell"], > ["glitch", "royalthrone"], > ["glitch", "royaldesk"], > ["glitch", "royalbed"], > ["glitch", "copperpickaxe"], > > ["avian", "anchor"], > ["avian", "sacrificialaltar"], > ["avian", "birdgong1"], > ["avian", "birdgong2"], > ["avian", "altar1"], > ["avian", "copperpickaxe"], > > ["human", "arcademachine"], > ["human", "jukebox"], > ["human", "lavalamp1"], > ["human", "vendingmachine"], > ["human", "deathwarningmodern"], > ["human", "copperpickaxe"], > > ["hylotl", "hylotlradio"], > ["hylotl", "hylotlpainting1"], > ["hylotl", "hylotlpainting2"], > ["hylotl", "hockeytable"], > ["hylotl", "hylotlwaterfeature1"] > ["hylotl", "copperpickaxe"] quests\generated\pools\merchanttrades.config 5,6c5,6 < ["banana", [ < { "name" : "wheat", "count" : 3 } --- > ["apexwallpainting1", [ > { "name" : "darkwoodmaterial", "count" : 4 } 8,9c8,9 < ["copperpickaxe", [ < { "name" : "fabric", "count" : 3 } --- > ["apexrecordplayer", [ > { "name" : "darkwoodmaterial", "count" : 4 } 11c11 < ["sewagebarrel", [ --- > ["apexpainting1", [ 14,15c14,15 < ["pineapple", [ < { "name" : "wheat", "count" : 3 } --- > ["flowerbasket1", [ > { "name" : "floweryblock", "count" : 3 } 17,18c17,18 < ["medievaltorch", [ < { "name" : "fabric", "count" : 3 } --- > ["classicpillarsmall", [ > { "name" : "cobblestone", "count" : 6 } 20,21c20,186 < ["flashlight", [ < { "name" : "fabric", "count" : 3 } --- > ["apexpiano", [ > { "name" : "darkwoodmaterial", "count" : 8 } > ]], > ["classicchina", [ > { "name" : "darkwoodmaterial", "count" : 20 } > ]], > ["classicchandelier", [ > { "name" : "glassmaterial", "count" : 12 } > ]], > ["classicfountain", [ > { "name" : "cobblestone", "count" : 20 } > ]], > ["classicbookcase", [ > { "name" : "darkwoodmaterial", "count" : 20 } > ]], > ["plantdoor1", [ > { "name" : "plantfibre", "count" : 8 } > ]], > ["floranpainting1", [ > { "name" : "fabric", "count" : 4 } > ]], > ["florandrum2", [ > { "name" : "leather", "count" : 3 } > ]], > ["huntinggroundtorch", [ > { "name" : "torch", "count" : 4 } > ]], > ["floranstove", [ > { "name" : "ironbar", "count" : 2 } > ]], > ["skullwalltorch", [ > { "name" : "bone", "count" : 8 } > ]], > ["plantdoor2", [ > { "name" : "darkwoodmaterial", "count" : 10 } > ]], > ["florancouch", [ > { "name" : "bone", "count" : 12 } > ]], > ["floranchandelier", [ > { "name" : "torch", "count" : 10 } > ]], > ["huntinglight1", [ > { "name" : "glowfibre", "count" : 6 } > ]], > ["medievalpedestal", [ > { "name" : "darkwoodmaterial", "count" : 6 } > ]], > ["medievalsworddisplay", [ > { "name" : "ironbar", "count" : 4 } > ]], > ["medievalstreetlamp", [ > { "name" : "darkwoodmaterial", "count" : 12 } > ]], > ["medievalglobe", [ > { "name" : "darkwoodmaterial", "count" : 4 } > ]], > ["medievalarmor", [ > { "name" : "ironbar", "count" : 6 } > ]], > ["castledoor", [ > { "name" : "darkwoodmaterial", "count" : 18 } > ]], > ["largebell", [ > { "name" : "ironbar", "count" : 8 } > ]], > ["royalthrone", [ > { "name" : "darkwoodmaterial", "count" : 12 } > ]], > ["royaldesk", [ > { "name" : "darkwoodmaterial", "count" : 12 } > ]], > ["royalbed", [ > { "name" : "darkwoodmaterial", "count" : 18 } > ]], > ["owlclock", [ > { "name" : "darkwoodmaterial", "count" : 4 } > ]], > ["birdgroundlantern", [ > { "name" : "torch", "count" : 4 } > ]], > ["crystaltorch", [ > { "name" : "torch", "count" : 4 } > ]], > ["spearrack", [ > { "name" : "ironbar", "count" : 2 } > ]], > ["avianbanner1", [ > { "name" : "fabric", "count" : 6 } > ]], > ["anchor", [ > { "name" : "ironbar", "count" : 4 } > ]], > ["sacrificialaltar", [ > { "name" : "sandstoneblock", "count" : 8 } > ]], > ["birdgong1", [ > { "name" : "copperbar", "count" : 4 } > ]], > ["birdgong2", [ > { "name" : "copperbar", "count" : 4 } > ]], > ["altar1", [ > { "name" : "sandstoneblock", "count" : 4 } > ]], > ["bunkerposter2", [ > { "name" : "fabric", "count" : 4 } > ]], > ["electriclight", [ > { "name" : "ironbar", "count" : 1 } > ]], > ["microwave", [ > { "name" : "ironbar", "count" : 2 } > ]], > ["steelchair", [ > { "name" : "steelbar", "count" : 1 } > ]], > ["bunkerdesk", [ > { "name" : "ironbar", "count" : 2 } > ]], > ["arcademachine", [ > { "name" : "steelbar", "count" : 2 } > ]], > ["jukebox", [ > { "name" : "ironbar", "count" : 2 } > ]], > ["lavalamp1", [ > { "name" : "glassmaterial", "count" : 2 } > ]], > ["vendingmachine", [ > { "name" : "ironbar", "count" : 2 } > ]], > ["deathwarningmodern", [ > { "name" : "ironbar", "count" : 1 } > ]], > ["hylotlsupportbeam", [ > { "name" : "fabric", "count" : 4 } > ]], > ["hylotlshojidoor", [ > { "name" : "fabric", "count" : 4 } > ]], > ["hylotlfloorornament", [ > { "name" : "fabric", "count" : 4 } > ]], > ["hylotllamp", [ > { "name" : "fabric", "count" : 4 } > ]], > ["neonhylotlhead", [ > { "name" : "fabric", "count" : 4 } > ]], > ["hylotlradio", [ > { "name" : "fabric", "count" : 4 } > ]], > ["hylotlpainting1", [ > { "name" : "fabric", "count" : 4 } > ]], > ["hylotlpainting2", [ > { "name" : "fabric", "count" : 4 } > ]], > ["hockeytable", [ > { "name" : "fabric", "count" : 4 } > ]], > ["hylotlwaterfeature1", [ > { "name" : "fabric", "count" : 4 } > ]], > ["copperpickaxe", [ > { "name" : "copperbar", "count" : 2 } quests\generated\templates\helmet.questtemplate 44c44 < "^cyan;Floran wantsss to be more memorable guard! Can you help Floran look ?", --- > "^cyan;Floran wantsss to be a more recognisable hunter! Can you help Floran look ?", quests\generated\templates\new_stock1.questtemplate 32c32,33 < "'s trade" --- > "'s trade", > "'s plan to restock" 37c38,39 < "^cyan;I wish to acquire new stock for my store." --- > "^cyan;My store might be more popular if I had more things to sell. I have a plan.", > "^cyan;I have a plan to expand my store's range of products. Can you help?" 43c45,46 < "Finally, travelling merchant ^orange;^white; arrived in our settlement a short time ago. They have agreed to provide me with the new stock I require in exchange for the ^orange;^white;. Could you ^green;take the goods to ^orange;^white;." --- > "Finally, travelling merchant arrived in our settlement a short time ago. They have agreed to provide me with the new stock I require in exchange for the ^orange;^white;. Could you ^green;take the goods to ^orange;^white;?", > "Perfect timing! , a travelling merchant, has just arrived to deliver the new stock. Can you ^green;find ^orange;^green; and give them our ^orange;^green; in return?" 50c53,54 < "Thank you! If you ever find yourself in need of , I now have plenty in stock!" --- > "Thank you! If you ever find yourself in need of a new , I now have plenty in stock!", > "Your delivery of a new will definitely help my store - I have plenty of them in stock, too! Thanks for your help." 56c60,61 < "I was unable to help acquire new stock for their store. They probably have enough as they are." --- > "I was unable to help acquire new stock for their store. They probably have enough as they are.", > "I didn't help succeed in acquiring new stock." quests\generated\templates\new_stock2.questtemplate 32c32,33 < "'s second trade" --- > "'s second trade", > "'s booming business" 37c38,39 < "^cyan;I wish to acquire new stock for my store." --- > "^cyan;My store is getting popular! Now is a good time to stock some high quality merchandise in my store....", > "^cyan;Getting new things to sell helped my store last time! Can you help me do it again?" 43c45,46 < "Finally, travelling merchant ^orange;^white; arrived in our settlement a short time ago. They have agreed to provide me with the new stock I require in exchange for the ^orange;^white;. Could you ^green;take the goods to ^orange;^white;." --- > "Just in time! Travelling merchant arrived in our settlement a short time ago. They have agreed to provide me with the new stock I require in exchange for the ^orange;^white;. Could you ^green;take the goods to ^orange;^white;?", > "Now to finish the task! , a travelling merchant, has just arrived to deliver the new stock. Can you ^green;find ^orange;^green; and give them our ^orange;^green; in return?" 50c53,54 < "Thank you! If you ever find yourself in need of , I now have plenty in stock!" --- > "Success! If you need a brand new , my store is the place to come from now on! Thanks for your help.", > "Thanks to your delivery, I'm now able to sell this new ! If you want one, you know where to find me!" 56c60,61 < "I was unable to help acquire new stock for their store. They probably have enough as they are." --- > "I was unable to help acquire new stock for their store. They probably have enough as they are.", > "I didn't help succeed in acquiring new stock. " quests\generated\templates\protect.questtemplate 75c75 < "Floran knowss ^orange; ^white; got on the wrong side of ^orange;^white;, and they'll be here sshortly! if Floran helpss then they'll have to owe Floran a favour. ^green;Will you help protect them?" --- > "Floran knowss ^orange;^white; got on the wrong side of ^orange;^white;, and they'll be here sshortly! if Floran helpss then they'll have to owe Floran a favour. ^green;Will you help protect them?" quests\generated\templates\recruit_guard.questtemplate 21c21,22 < "Securing the colony" --- > "Security for ", > " wants security" 25c26 < "^cyan;I'm feeling a little bit insecure in this colony. Let's recruit a guard!" --- > "^cyan;I would feel safer with some protection around here. Can you help recruit a guard?" quests\scripts\conditions\gather.lua 6d5 < local inventory = player.inventory() 8c7 < if (inventory[itemName] or 0) < itemReq.count then --- > if not player.hasItem({ name = itemName, count = itemReq.count }) then 33c32 < player.consumeItem(itemName, itemReq.count) --- > player.consumeItem({ name = itemName, count = itemReq.count }) quests\scripts\generated\add_object_to_house.lua 8c8 < if objectName == quest.parameters().object.item then --- > if objectName == quest.parameters().object.item.name then quests\scripts\generated\clothing.lua 56d55 < local inventory = player.inventory() 58c57 < if (inventory[ingredient.name] or 0) <= 0 then --- > if not player.hasItem(ingredient) then 68c67 < player.consumeItem(ingredient.name, ingredient.count) --- > player.consumeItem(ingredient) quests\scripts\generated\collect_fine.lua 23c23 < player.giveItem({name = quest.parameters().item.item, count = 1}) --- > player.giveItem(quest.parameters().item.item) 28,29c28 < local item = quest.parameters().item < return (player.inventory()[item.item] or 0) > 0 --- > return player.hasItem(quest.parameters().item.item) quests\scripts\generated\collect_gift.lua 20,21c20,21 < local gift = quest.parameters().item < player.giveItem({name = gift.item, count = 1}) --- > local gift = quest.parameters().item.item > player.giveItem(gift) 29,30c29,30 < local gift = quest.parameters().item < return (player.inventory()[gift.item] or 0) > 0 --- > local gift = quest.parameters().item.item > return player.hasItem(gift) quests\scripts\generated\fetch.lua 32d31 < local inventory = player.inventory() 34c33 < if (inventory[item.name] or 0) < item.count then --- > if not player.hasItem(item) then quests\scripts\generated\gift.lua 21,22c21,22 < local gift = quest.parameters().gift < player.consumeItem(gift.item, 1) --- > local gift = quest.parameters().gift.item > player.consumeItem(gift) 36c36 < if storage.addingToHouse and objectName == quest.parameters().gift.item then --- > if storage.addingToHouse and objectName == quest.parameters().gift.item.name then 45,46c45,46 < local gift = quest.parameters().gift < return (player.inventory()[gift.item] or 0) > 0 --- > local gift = quest.parameters().gift.item > return player.hasItem(gift) quests\scripts\generated\kill_monster.lua 25d24 < local inventory = player.inventory() 27c26 < if (inventory[item.name] or 0) < item.count then --- > if not player.hasItem(item) then quests\scripts\generated\new_stock.lua 56d55 < local inventory = player.inventory() 58c57 < if (inventory[item.name] or 0) <= 0 then --- > if not player.hasItem(item) then 68c67 < player.consumeItem(item.name, item.count) --- > player.consumeItem(item) quests\scripts\generated\return_stolen.lua 9c9 < if quest.parameters().item.item == objectName then --- > if quest.parameters().item.item.name == objectName then 18c18 < if quest.parameters().item.item == objectName then --- > if quest.parameters().item.item.name == objectName then quests\scripts\generated\steal.lua 8c8 < if quest.parameters().objectItem.item == objectName then --- > if quest.parameters().objectItem.item.name == objectName then 14c14 < return {{ name = quest.parameters().objectItem.item, count = 1 }} --- > return {quest.parameters().objectItem.item} 20,21c20 < local count = player.inventory()[item.name] < if not count or count < item.count then --- > if not player.hasItem(item) then quests\scripts\generated\text_generation.lua 9c9 < local itemConfig = root.itemConfig(paramValue.item) --- > local itemConfig = root.itemConfig(paramValue.item.name) scripts\actions\entities.lua 114c114 < BData:setNumber(output.angle, math.atan(facing * toEntity[2], math.abs(toEntity[1]))) --- > BData:setNumber(output.angle, math.atan(toEntity[2], math.abs(toEntity[1]))) scripts\actions\items.lua 2a3 > assert(item.name ~= nil) 4a6 > assert(type(item) == "string") scripts\actions\quests.lua 33c33,39 < local itemConfig = root.itemConfig(param.item) --- > local itemName > if type(param.item) == "string" then > itemName = param.item > else > itemName = param.item.name > end > local itemConfig = root.itemConfig(itemName) 66c72,76 < BData:setTable(output.table, { name = paramValue.item }) --- > local descriptor = paramValue.item > if type(descriptor) == "string" then > descriptor = { name = descriptor } > end > BData:setTable(output.table, descriptor) scripts\questgen\generator.lua 6a7 > require("/scripts/questgen/pools.lua") 318c319,322 < item = item.itemName, --- > item = { > name = item.itemName, > parameters = item.parameters > }, scripts\questgen\predicands.lua 148c148 < function QuestPredicands.Item:init(itemName) --- > function QuestPredicands.Item:init(itemName, parameters) 149a150 > self.parameters = parameters or jobject() 163c164 < return itemConfig.config.tags or {} --- > return itemConfig.config.colonyTags or {} 168c169 < return self.itemName == other.itemName --- > return self.itemName == other.itemName and compare(self.parameters, other.parameters) scripts\questgen\relations.lua 8d7 < local Location = QuestPredicands.Location 14,15d12 < local NpcType = QuestPredicands.NpcType < local MonsterType = QuestPredicands.MonsterType 928,949d924 < QuestRelations.isTaggedObject = defineQueryRelation("isTaggedObject", true) { < [case(1, Item, NonNil)] = function (self, item, tag) < if xor(self.negated, contains(item:objectTags(), tag)) then < return {{item, tag}} < end < return Relation.empty < end, < [case(2, Item, Nil)] = function (self, item) < if self.negated then return Relation.some end < return util.map(item:objectTags(), function (tag) < return {item, tag} < end) < end, < [case(3, Nil, NonNil)] = function (self, _, tag) < if self.negated then return Relation.some end < return util.map(root.taggedObjects(tag), function (objectName) < return {Item.new(objectName), tag} < end) < end, < default = Relation.some < } < 1027,1326d1001 < } < < PoolRelations = {} < < local pools = {} < < local function loadPoolFile(path, addRowFunc) < if not pools[path] then < pools[path] = {} < end < for _,pair in pairs(root.assetJson(path)) do < if pair[1] <= world.threatLevel() then < for _,row in pairs(pair[2]) do < addRowFunc(pools[path], row) < end < else < break < end < end < return pools[path] < end < < PoolRelations.ItemPoolRelation = defineSubclass(Relation, "ItemPoolRelation") { < query = Relation.unpackedQuery { < [case(1, Nil)] = function (self) < if self.negated then return Relation.some end < local results = {} < self:loadPool() < for itemName,_ in pairs(self.itemNames) do < results[#results+1] = {Item.new(itemName)} < end < for itemTag, itemDef in pairs(self.itemTags) do < results[#results+1] = {ItemTag.new(itemDef.tag, itemDef.name, itemDef.type)} < end < return results < end, < < [case(2, NonNil)] = function (self, item) < if xor(self.negated, self:poolContains(item)) then < return {{item}} < end < return Relation.empty < end, < < default = Relation.empty < }, < < loadPool = function (self) < if self.itemNames and self.itemTags then return end < local pool = loadPoolFile(self.poolFile, function (pool, itemDef) < if not pool.itemNames then pool.itemNames = {} end < if not pool.itemTags then pool.itemTags = {} end < if type(itemDef) == "string" then < pool.itemNames[itemDef] = true < elseif type(itemDef) == "table" and itemDef.tag then < pool.itemTags[itemDef.tag] = itemDef < end < end) < self.itemNames = pool.itemNames < self.itemTags = pool.itemTags < end, < < poolContains = function (self, item) < if self.allowAnyFromTypes then < local itemType = item:type() < for _,type in ipairs(self.allowAnyFromTypes) do < if type == itemType then < return true < end < end < end < self:loadPool() < if item.itemName and self.itemNames[item.itemName] then < return true < end < if item.tag and self.itemTags[item.tag] then < return true < end < return false < end < } < < PoolRelations.ItemPoolBinaryRelation = defineSubclass(Relation, "ItemPoolBinaryRelation") { < leftMatcher = Item, < rightMatcher = Item, < < -- Convert left/right predicands to a Lua value that can be used as a table key < leftKey = function (self, left) < return left.itemName < end, < rightKey = function (self, right) < return right.itemName < end, < < -- Convert Json values / table keys to instances of the left/right types < makeLeft = function (self, itemName) < return Item.new(itemName) < end, < makeRight = function (self, itemName) < return Item.new(itemName) < end, < < query = function (self) < self:loadPool() < < return self:unpackPredicands { < [case(0, self.leftMatcher, self.rightMatcher)] = function (self, left, right) < if xor(self.negated, (self.leftToRight[self:leftKey(left)] or {})[self:rightKey(right)]) then < return {{a,b}} < end < return Relation.empty < end, < < [case(1, self.leftMatcher, Nil)] = function (self, left) < local results = {} < for rightKey,_ in pairs(self.leftToRight[self:leftKey(left)] or {}) do < results[#results+1] = {left, self:makeRight(rightKey)} < end < return results < end, < < [case(2, Nil, self.rightMatcher)] = function (self, _, right) < local results = {} < for leftKey,_ in pairs(self.rightToLeft[self:rightKey(right)] or {}) do < results[#results+1] = {self:makeLeft(leftKey), right} < end < return results < end, < < [case(3, Nil, Nil)] = function (self) < return self.both < end, < < default = Relation.empty < } < end, < < loadPool = function (self) < if self.both and self.leftToRight and self.rightToLeft then return end < < local pool = loadPoolFile(self.poolFile, function (pool, row) < if not pool.both then pool.both = {} end < if not pool.leftToRight then pool.leftToRight = {} end < if not pool.rightToLeft then pool.rightToLeft = {} end < local leftJson, rightJson = table.unpack(row) < assert(type(leftJson) == "string" and type(rightJson) == "string") < local left = self:makeLeft(leftJson) < local right = self:makeRight(rightJson) < local leftKey = self:leftKey(left) < local rightKey = self:rightKey(right) < pool.both[#pool.both+1] = {left, right} < pool.leftToRight[leftKey] = pool.leftToRight[leftKey] or {} < pool.leftToRight[leftKey][rightKey] = true < pool.rightToLeft[rightKey] = pool.rightToLeft[rightKey] or {} < pool.rightToLeft[rightKey][leftKey] = true < end) < self.both = pool.both < self.leftToRight = pool.leftToRight < self.rightToLeft = pool.rightToLeft < end < } < < PoolRelations.StringItemPoolRelation = defineSubclass(PoolRelations.ItemPoolBinaryRelation, "StringItemPoolRelation") { < leftMatcher = NonNil, < < leftKey = function (self, str) < return str < end, < < makeLeft = function (self, str) < return str < end < } < < PoolRelations.FurniturePoolRelation = defineSubclass(PoolRelations.StringItemPoolRelation, "FurniturePoolRelation") { < loadPool = function (self) < if self.both and self.leftToRight and self.rightToLeft then return end < PoolRelations.ItemPoolBinaryRelation.loadPool(self) < for objectName,_ in pairs(self.context:objectsUsedAsFurniture()) do < if not self.rightToLeft[objectName] then < local objectItem = Item.new(objectName); < local tags = root.itemConfig(objectName).config.tags or {} < for _,tag in pairs(tags) do < self.both[#self.both+1] = {tag, objectItem} < self.leftToRight[tag] = self.leftToRight[tag] or {} < self.leftToRight[tag][objectName] = true < self.rightToLeft[objectName] = self.rightToLeft[objectName] or {} < self.rightToLeft[objectName][tag] = true < end < end < end < end < } < < local UnaryPoolRelation = defineSubclass(Relation, "UnaryPoolRelation") { < elementMatcher = NonNil, < < makeElement = function (self, json) < return json < end, < < query = function (self) < self:loadPool() < return self:unpackPredicands { < [case(1, self.elementMatcher)] = function (self, element) < if xor(self.negated, self:poolContains(element)) then < return {{element}} < end < return Relation.empty < end, < < [case(2, Nil)] = function (self) < if self.negated then return Relation.some end < return util.map(self.elements, function (element) < return {element} < end) < end, < < default = Relation.empty < } < end, < < loadPool = function (self) < if self.elements then return end < local pool = loadPoolFile(self.poolFile, function (pool, row) < if not pool.elements then pool.elements = {} end < local element = self:makeElement(row) < element.generatedBy = self.name < pool.elements[#pool.elements+1] = element < end) < self.elements = pool.elements < end, < < poolContains = function (self, element) < return element.generatedBy == self.name < end < } < < PoolRelations.ItemListPoolRelation = defineSubclass(UnaryPoolRelation, "ItemListPoolRelation") { < elementMatcher = ItemList, < < makeElement = function (self, json) < local itemList = {} < for _,itemName in ipairs(json) do < itemList[itemName] = (itemList[itemName] or 0) + 1 < end < return ItemList.new(itemList) < end < } < < PoolRelations.NpcTypePoolRelation = defineSubclass(UnaryPoolRelation, "NpcTypePoolRelation") { < elementMatcher = NpcType, < < makeElement = function (self, json) < return NpcType.new(json) < end < } < < PoolRelations.MonsterTypePoolRelation = defineSubclass(UnaryPoolRelation, "MonsterTypePoolRelation") { < elementMatcher = MonsterType, < < makeElement = function (self, json) < return MonsterType.new(json) < end < } < < -- A binary relation, relating a single item to a collection of other items. < -- Can be used for instance to 'pretend' craft an item from a bunch of other < -- items via an NPC who exchanges the items. < PoolRelations.FakeCraftingPoolRelation = defineSubclass(Relation, "FakeCraftingPoolRelation") { < query = Relation.unpackedQuery { < [case(1, Item, ItemList)] = function (self, item, itemList) < if self.negated then < return Relation.empty < end < return {{item,itemList}} < end, < < [case(2, Item, Nil)] = function (self, item) < if self.negated then return Relation.some end < self:loadPool() < return {{item, self.pool[item.itemName]}} < end, < < [case(3, Nil, Nil)] = function (self) < if self.negated then return Relation.some end < self:loadPool() < local items = util.tableKeys(self.pool) < local item = Item.new(items[math.random(#items)]) < return {{item, self.pool[item.itemName]}} < end, < < default = Relation.some < }, < < loadPool = function (self) < self.pool = loadPoolFile(self.poolFile, function (pool, row) < pool[row[1]] = ItemList.fromJson(row[2]) < end) < end treasure\dungeon.treasurepools 92c92 < {"weight" : 0.3, "pool" : "food"}, --- > {"weight" : 0.25, "pool" : "food"}, 94c94,95 < {"weight" : 0.05, "pool" : "weapon"} --- > {"weight" : 0.05, "pool" : "weapon"}, > {"weight" : 0.05, "pool" : "avianTempleLore"} 108c109 < {"weight" : 0.3, "pool" : "food"}, --- > {"weight" : 0.25, "pool" : "food"}, 110c111,112 < {"weight" : 0.05, "pool" : "weapon"} --- > {"weight" : 0.05, "pool" : "weapon"}, > {"weight" : 0.05, "pool" : "avianTombLore"} 289,295c291,295 < {"weight" : 0.10, "item" : [ "bookpiles", 5]}, < {"weight" : 0.10, "item" : [ "bookpiles", 3]}, < {"weight" : 0.10, "item" : [ "bone", 2]}, < {"weight" : 0.10, "item" : [ "bone", 1]}, < {"weight" : 0.10, "item" : [ "bone", 4]}, < {"weight" : 0.10, "item" : [ "silverbar", 4]}, < {"weight" : 0.10, "item" : [ "goldore", 4]} --- > {"weight" : 0.14, "item" : [ "bookpiles", 5]}, > {"weight" : 0.14, "item" : [ "bookpiles", 3]}, > {"weight" : 0.14, "item" : [ "bone", 2]}, > {"weight" : 0.14, "item" : [ "bone", 1]}, > {"weight" : 0.14, "item" : [ "bone", 4]} 310,312c310,311 < {"weight" : 0.34, "pool" : "money"}, < {"weight" : 0.18, "pool" : "healingItem"}, < {"weight" : 0.08, "item" : [ "goldbar", 4]}, --- > {"weight" : 0.38, "pool" : "money"}, > {"weight" : 0.22, "pool" : "healingItem"}, treasure\monster.treasurepools 200,207d199 < "minibosstreasure" : [ < [1, { < "fill" : [ < {"pool" : "goodWeapon"} < ] < }] < ], < vehicles\hoverbike\hoverbike.animation 95a96 > 101c102,103 < "seatPosition" : [0, 1.5] --- > "drivingSeatPosition" : [0, 1.5], > "passengerSeatPosition" : [-2, 1.5] 208a211,214 > "sounds" : { > "collisionNotification" : [ "/sfx/tech/hoverbike_bump1.ogg", > "/sfx/tech/hoverbike_bump2.ogg", > "/sfx/tech/hoverbike_bump3.ogg" ], 209a216 > "collisionDamage" : ["/sfx/melee/bite_robotic1.ogg"], 212,214c219,239 < "sounds" : { < "collisionNotification" : [ "/sfx/tech/hoverbike_bump1.ogg", "/sfx/tech/hoverbike_bump2.ogg", "/sfx/tech/hoverbike_bump3.ogg" ], < "collisionDamage" : ["/sfx/melee/bite_robotic1.ogg"] --- > "changeDamageState" : [ "/sfx/gun/grenadeblast_small_fire1.ogg", > "/sfx/gun/grenadeblast_small_fire2.ogg", > "/sfx/gun/grenadeblast_small_fire3.ogg" ], > > "explode" : [ "/sfx/gun/grenadeblast_small_fire1.ogg", > "/sfx/gun/grenadeblast_small_fire2.ogg", > "/sfx/gun/grenadeblast_small_fire3.ogg" ], > > > "engineStart" : ["/sfx/tools/teleport_up.ogg"], > > "engineLoop" : ["/sfx/tech/hoverbike_drive_loop.ogg"], > > "engineStartDamaged" : ["/sfx/tools/teleport_up.ogg"], > > "engineLoopDamaged" : ["/sfx/tech/hoverbike_idle_loop.ogg"], > > "damageIntermittent" : [ "/sfx/gun/grenadeblast_small_fire1.ogg", > "/sfx/gun/grenadeblast_small_fire2.ogg", > "/sfx/gun/grenadeblast_small_fire3.ogg" ] > vehicles\hoverbike\hoverbike.lua 31a32,36 > self.engineDamageSoundThreshold = vehicle.configParameter("engineDamageSoundThreshold") > self.intermittentDamageSoundThreshold = vehicle.configParameter("intermittentDamageSoundThreshold") > > --this is a range > self.intermittentDamageSoundInterval = vehicle.configParameter("intermittentDamageSoundInterval") 42a48 > 52,56c58 < local entityInSeat = vehicle.entityLoungingIn("seat") < --can't store a vehicle with someone in < --(self.health / self.maxHealth) < self.fireThreshold < < local localStorable = (entityInSeat ==nil) --- > local localStorable = (self.driver ==nil) 61a64,65 > self.driver = nil; > 84a89,111 > > local currentDriver = vehicle.entityLoungingIn("drivingSeat") > > if (currentDriver ~= nil and self.driver == nil) then > local healthFactor = self.health / self.maxHealth > > if (healthFactor > self.engineDamageSoundThreshold) then > animator.playSound("engineStart") --start sound, plays once. > animator.playSound("engineLoop", -1) --engine sound, plays forever. > else > animator.playSound("engineStartDamaged") > animator.playSound("engineLoopDamaged", -1) > end > end > > --shut down sounds when getting out of vehicle > if (currentDriver == nil and self.driver ~= nil) then > animator.stopAllSounds("engineLoop", 1.0) > animator.stopAllSounds("engineLoopDamaged", 1.0) > end > > self.driver = currentDriver > 112a140 > animator.playSound("changeDamageState") 115,116d142 < world.logInfo("damage state index=%s",damageStateIndex) < 185c211 < if vehicle.entityLoungingIn("seat") then --- > if self.driver then 192c218 < if vehicle.controlHeld("seat", "left") then --- > if vehicle.controlHeld("drivingSeat", "left") then 197c223 < if vehicle.controlHeld("seat", "right") then --- > if vehicle.controlHeld("drivingSeat", "right") then 202c228 < if vehicle.controlHeld("seat", "up") then --- > if vehicle.controlHeld("drivingSeat", "up") then 205c231 < elseif vehicle.controlHeld("seat", "down") then --- > elseif vehicle.controlHeld("drivingSeat", "down") then 220c246 < if self.jumpTimer <= 0 and vehicle.controlHeld("seat", "jump") then --- > if self.jumpTimer <= 0 and vehicle.controlHeld("drivingSeat", "jump") then 244,246c270 < < < if vehicle.controlHeld("seat", "left") or vehicle.controlHeld("seat", "right") then --- > if vehicle.controlHeld("drivingSeat", "left") or vehicle.controlHeld("drivingSeat", "right") then 255,258c279,280 < local entityInSeat = vehicle.entityLoungingIn("seat") < < if entityInSeat then < vehicle.setDamageTeam(world.entityDamageTeam(entityInSeat)) --- > if self.driver then > vehicle.setDamageTeam(world.entityDamageTeam(self.driver)) 265c287,288 < --here is where we will add damage to the hoverbike --- > showDamageEffects(self.health,damageThisFrame) > self.health = self.health - damageThisFrame 270a294 > animator.playSound("explode") vehicles\hoverbike\hoverbike.vehicle 17c17 < "seat" : { --- > "drivingSeat" : { 19c19 < "partAnchor" : "seatPosition", --- > "partAnchor" : "drivingSeatPosition", 21c21,23 < "protective" : true, --- > "armourStatusEffect" : "hoverbikeArmour", > "burnStatusEffect" : "hoverbikeBurn", > "crashStatusEffect" : "hoverbikeCrash", 23a26,36 > }, > "passengerSeat" : { > "part" : "foreground", > "partAnchor" : "passengerSeatPosition", > "orientation" : "sit", > "armourStatusEffect" : "hoverbikeArmour", > "burnStatusEffect" : "hoverbikeBurn", > "crashStatusEffect" : "hoverbikeCrash", > "protective" : true, > "emote" : "neutral", > "dance" : "typing" 54a68,74 > > > "engineDamageSoundThreshold" : 0.75, > > "intermittentDamageSoundThreshold" : 0.66, > "intermittentDamageSoundInterval" : [10, 1.0], > 89a110,111 > >