FILES ----- player.config [NEW] animations\hoverbikefire\hoverbikefire.animation [NEW] animations\hoverbikefire\hoverbikefire.frames [NEW] animations\hoverbikefire\hoverbikefire.png behaviors\monsters\modular\basemonster.behavior behaviors\monsters\modular\actions\charge.behavior behaviors\monsters\modular\actions\hop.behavior behaviors\monsters\modular\actions\leap.behavior behaviors\monsters\modular\actions\swoop.behavior behaviors\npc\idle.behavior behaviors\npc\merchant.behavior [NEW] behaviors\npc\quests\quest-new_stock-questgiver-notification.behavior [NEW] behaviors\npc\quests\quest-new_stock-target-notification.behavior biomes\surface\midnight.biome biomes\surface_detached\hive.biome dialog\quest.config [NEW] effects\spectralsparkle.effectsource [NEW] interface\bookmarks\icons\midnight.png interface\bookmarks\icons\scorched.png items\active\vehiclecontroller\vehiclecontroller.activeitem items\active\vehiclecontroller\vehiclecontroller.lua items\active\weapons\fist\boxingglove.activeitem [NEW] items\active\weapons\fist\claws.png items\active\weapons\melee\altabilities\broadsword\bladecharge\bladecharge.altability items\active\weapons\melee\altabilities\broadsword\downstab\downstab.altability items\active\weapons\melee\altabilities\broadsword\giantsword\giantsword.altability items\active\weapons\melee\altabilities\broadsword\parry\parry.altability items\active\weapons\melee\altabilities\broadsword\risingslash\risingslash.altability items\active\weapons\melee\altabilities\broadsword\spinslash\spinslash.altability items\active\weapons\melee\altabilities\broadsword\spinslash\spinslash.lua items\active\weapons\melee\altabilities\broadsword\spinslash\superspinslash.altability items\active\weapons\melee\altabilities\broadsword\spinslash\superspinslash.lua items\active\weapons\melee\altabilities\broadsword\traildash\traildash.altability items\active\weapons\melee\altabilities\broadsword\travelingslash\travelingslash.altability items\active\weapons\melee\altabilities\generic\blinkexplosion\blinkexplosion.altability items\active\weapons\melee\altabilities\generic\blinkslash\blinkslash.altability items\active\weapons\melee\altabilities\spear\barrier\barrier.altability items\active\weapons\melee\altabilities\spear\flurry\flurry.altability items\active\weapons\melee\altabilities\spear\flurry\flurry.lua items\active\weapons\melee\altabilities\spear\spin\spin.altability items\active\weapons\melee\altabilities\spear\spin\spin.lua items\active\weapons\melee\broadsword\commonbroadsword.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\chakram.activeitem [NEW] items\active\weapons\ranged\boomerang\fireboomerang.activeitem [NEW] items\active\weapons\ranged\boomerang\fireboomerang.png [NEW] items\active\weapons\ranged\boomerang\iceboomerang.activeitem [NEW] items\active\weapons\ranged\boomerang\iceboomerang.png [NEW] items\active\weapons\ranged\boomerang\spectralboomerang.activeitem [NEW] items\active\weapons\ranged\boomerang\spectralboomerang.png [NEW] items\active\weapons\ranged\boomerang\wormerang.activeitem [NEW] items\active\weapons\ranged\boomerang\wormerang.png [NEW] items\materials\protectorateplatform.matitem [NEW] items\materials\protectorateplatformicon.png leveling\levelingmultipliers.functions monsters\monster.lua monsters\boss\crystalboss\crystalboss.monstertype monsters\boss\dragonboss\dragonboss.monstertype monsters\boss\jellyboss\jellyboss.monstertype monsters\boss\missile\missile.monstertype monsters\boss\penguin\general.monstertype monsters\boss\penguin\rockettrooper.monstertype monsters\boss\penguin\trooper.monstertype monsters\boss\penguinminiufo\penguinminiufo.monstertype monsters\boss\penguintank\penguintank.monstertype monsters\boss\penguinufo\penguinufo.monstertype monsters\boss\robotboss\robotboss.monstertype monsters\boss\skeyejelly\skeyejelly.monstertype monsters\boss\spiderboss\spiderboss.monstertype monsters\boss\tentaclecomet\tentaclecomet.monstertype monsters\boss\tentaclecometspore\tentaclecometspore.monstertype monsters\bugs\ashsprite\ashsprite.monstertype monsters\bugs\aurorabee\aurorabee.monstertype monsters\bugs\beebug\beebug.monstertype monsters\bugs\blueback\blueback.monstertype monsters\bugs\brightstripe\brightstripe.monstertype monsters\bugs\butterbee\butterbee.monstertype monsters\bugs\cinderfly\cinderfly.monstertype monsters\bugs\dewhopper\dewhopper.monstertype monsters\bugs\driftbell\driftbell.monstertype monsters\bugs\dustmoth\dustmoth.monstertype monsters\bugs\fawnfly\fawnfly.monstertype monsters\bugs\fireflyspawner\fireflyspawner.monstertype monsters\bugs\fireygiant\fireygiant.monstertype monsters\bugs\flameroach\flameroach.monstertype monsters\bugs\flyspawner\flyspawner.monstertype monsters\bugs\frostfleck\frostfleck.monstertype monsters\bugs\frostfly\frostfly.monstertype monsters\bugs\gasgiant\gasgiant.monstertype monsters\bugs\glowbug\glowbug.monstertype monsters\bugs\goldbuck\goldbuck.monstertype monsters\bugs\greentip\greentip.monstertype monsters\bugs\heathugger\heathugger.monstertype monsters\bugs\hivehog\hivehog.monstertype monsters\bugs\icetip\icetip.monstertype monsters\bugs\lavahopper\lavahopper.monstertype monsters\bugs\muddancer\muddancer.monstertype monsters\bugs\mudstag\mudstag.monstertype monsters\bugs\orphanfly\orphanfly.monstertype monsters\bugs\phoenixfly\phoenixfly.monstertype monsters\bugs\polarmoth\polarmoth.monstertype monsters\bugs\redwing\redwing.monstertype monsters\bugs\sandclown\sandclown.monstertype monsters\bugs\scuttleploom\scuttleploom.monstertype monsters\bugs\seahornet\seahornet.monstertype monsters\bugs\shadowmoth\shadowmoth.monstertype monsters\bugs\shardwing\shardwing.monstertype monsters\bugs\shellcreep\shellcreep.monstertype monsters\bugs\snowskater\snowskater.monstertype monsters\bugs\stinkjack\stinkjack.monstertype monsters\bugs\sunskipper\sunskipper.monstertype monsters\bugs\testbug\testbug.monstertype monsters\bugs\thornbee\thornbee.monstertype monsters\bugs\tidefly\tidefly.monstertype monsters\bugs\vineclimber\vineclimber.monstertype monsters\bugs\wavebird\wavebird.monstertype monsters\bugs\xenofly\xenofly.monstertype monsters\crawlers\crustoise\crustoise.animation monsters\crawlers\crustoise\crustoise.monstertype monsters\crawlers\iguarmor\iguarmor.animation monsters\crawlers\iguarmor\iguarmor.monstertype monsters\crawlers\oculob\oculob.animation monsters\crawlers\oculob\oculob.monstertype monsters\crawlers\pulpin\pulpin.animation monsters\crawlers\pulpin\pulpin.monstertype monsters\crawlers\snaggler\snaggler.animation monsters\crawlers\snaggler\snaggler.monstertype monsters\crawlers\tintic\tintic.animation monsters\crawlers\tintic\tintic.monstertype monsters\crawlers\triplod\triplod.animation monsters\crawlers\triplod\triplod.monstertype monsters\critter\apexscabcritter\apexscabcritter.monstertype monsters\critter\arcticfishcritter\arcticfishcritter.monstertype monsters\critter\armadillo\armadillo.monstertype monsters\critter\avianscabcritter\avianscabcritter.monstertype monsters\critter\ballooncritter\ballooncritter.monstertype monsters\critter\bigwormcritter\bigwormcritter.monstertype monsters\critter\birdcritter\birdcritter.monstertype monsters\critter\blipcritter\blipcritter.monstertype monsters\critter\bloodtoadcritter\bloodtoadcritter.monstertype monsters\critter\bluebutterflycritter\bluebutterflycritter.monstertype monsters\critter\bouncebagcritter\bouncebagcritter.monstertype monsters\critter\bouncercritter\bouncercritter.monstertype monsters\critter\bowbirdcritter\bowbirdcritter.monstertype monsters\critter\breakercritter\breakercritter.monstertype monsters\critter\breakerfemalecritter\breakerfemalecritter.monstertype monsters\critter\bunny\bunny.monstertype monsters\critter\charfishcritter\charfishcritter.monstertype monsters\critter\chevcritter\chevcritter.monstertype monsters\critter\ciclesnail\ciclesnailcritter.monstertype monsters\critter\cliffcritter\cliffcritter.monstertype monsters\critter\crabcritter\crabcritter.monstertype monsters\critter\crystalbirdcritter\crystalbirdcritter.monstertype monsters\critter\crystaltortoisecritter\crystaltortoisecritter.monstertype monsters\critter\dancercritter\dancercritter.monstertype monsters\critter\darkballcritter\darkballcritter.monstertype monsters\critter\darknessscabcritter\darknessscabcritter.monstertype monsters\critter\darkoneeyecritter\darkoneeyecritter.monstertype monsters\critter\darkthreeeyescritter\darkthreeeyescritter.monstertype monsters\critter\darkwormcritter\darkwormcritter.monstertype monsters\critter\dartcritter\dartcritter.monstertype monsters\critter\deserttortoisecritter\deserttortoisecritter.monstertype monsters\critter\eyefriend\eyefriend.monstertype monsters\critter\eyepodcritter\eyepodcritter.monstertype monsters\critter\fishberrycritter\fishberrycritter.monstertype monsters\critter\fishchilicritter\fishchilicritter.monstertype monsters\critter\fishcritter\fishcritter.monstertype monsters\critter\fishlemoncritter\fishlemoncritter.monstertype monsters\critter\floatbagcritter\floatbagcritter.monstertype monsters\critter\floranscabcritter\floranscabcritter.monstertype monsters\critter\frog\frog.monstertype monsters\critter\froggpolecritter\frogpolecritter.monstertype monsters\critter\frozenowlcritter\frozenowlcritter.monstertype monsters\critter\glitchscabcritter\glitchscabcritter.monstertype monsters\critter\gloopcritter\gloopcritter.monstertype monsters\critter\glowingballcritter\glowingballcritter.monstertype monsters\critter\glowingballcritter2\glowingballcritter2.monstertype monsters\critter\glowingfishcritter\glowingfishcritter.monstertype monsters\critter\groopcritter\groopcritter.monstertype monsters\critter\gullcritter\gullcritter.monstertype monsters\critter\harecritter\harecritter.monstertype monsters\critter\hazmatcritter\hazmatcritter.monstertype monsters\critter\hedgehogcritter\hedgehogcritter.monstertype monsters\critter\hollowcritter\hollowcritter.monstertype monsters\critter\humanscabcritter\humanscabcritter.monstertype monsters\critter\hylotlscabcritter\hylotlscabcritter.monstertype monsters\critter\icescabcritter\icescabcritter.monstertype monsters\critter\jellocritter\jellocritter.monstertype monsters\critter\jellycritter\jellycritter.monstertype monsters\critter\krawlcritter\krawlcritter.monstertype monsters\critter\leafscabcritter\leafscabcritter.monstertype monsters\critter\maggotcritter\maggotcritter.monstertype monsters\critter\mousecritter\mousecritter.monstertype monsters\critter\narfishcritter\narfishcritter.monstertype monsters\critter\owlcritter\owlcritter.monstertype monsters\critter\penguinscabcritter\penguinscabcritter.monstertype monsters\critter\petalcritter\petalcritter.monstertype monsters\critter\poisonfishcritter\poisonfishcritter.monstertype monsters\critter\poofincritter\poofincritter.monstertype monsters\critter\prismelementalcritter\prismelementalcritter.monstertype monsters\critter\prismscabcritter\prismscabcritter.monstertype monsters\critter\pufferfishcritter\pufferfishcritter.monstertype monsters\critter\quibblecritter\quibblecritter.monstertype monsters\critter\ravencritter\ravencritter.monstertype monsters\critter\reasonablecritter\reasonablecritter.monstertype monsters\critter\redbreastcritter\redbreastcritter.monstertype monsters\critter\rolypolycritter\rolypolycritter.monstertype monsters\critter\sackbagcritter\sackbagcritter.monstertype monsters\critter\savybirdcritter\savybirdcritter.monstertype monsters\critter\sealcritter\sealcritter.monstertype monsters\critter\skellyfishcritter\skellyfishcritter.monstertype monsters\critter\skywurmcritter\skywurmcritter.monstertype monsters\critter\slugbluecritter\slugbluecritter.monstertype monsters\critter\slugcritter\slugcritter.monstertype monsters\critter\sluggreencritter\sluggreencritter.monstertype monsters\critter\snail\snail.monstertype monsters\critter\snakecritter\snakecritter.monstertype monsters\critter\snooglecritter\snooglecritter.monstertype monsters\critter\snorecritter\snorecritter.monstertype monsters\critter\snowbcritter\snowbcritter.monstertype monsters\critter\snowflakescritter\snowflakescritter.monstertype monsters\critter\snowymolecritter\snowymolecritter.monstertype monsters\critter\sporelingcritter\sporelingcritter.monstertype monsters\critter\squeekcritter\squeekcritter.monstertype monsters\critter\squidcritter\squidcritter.monstertype monsters\critter\squirrelcritter\squirrelcritter.monstertype monsters\critter\steambirdcritter\steambirdcritter.monstertype monsters\critter\steamfishcritter\steamfishcritter.monstertype monsters\critter\steamspidercritter\steamspidercritter.monstertype monsters\critter\swarmcritter\swarmcritter.monstertype monsters\critter\swarmflyingcritter\swarmflyingcritter.monstertype monsters\critter\symbiotecritter\symbiotecritter.monstertype monsters\critter\tinycrocodilecritter\tinycrocodilecritter.monstertype monsters\critter\tortoise\tortoise.monstertype monsters\critter\toucritter\toucritter.monstertype monsters\critter\toxiccrabcritter\toxiccrabcritter.monstertype monsters\critter\tritrotscritter\tritrotscritter.monstertype monsters\critter\vulturecritter\vulturecritter.monstertype monsters\critter\wintercritter\wintercritter.monstertype monsters\critter\wurmcritter\wurmcritter.monstertype monsters\critter\yeticritter\yeticritter.monstertype monsters\dungeon\allergen\allergen.monstertype monsters\dungeon\apexbrainmutant\apexbrainmutant.monstertype monsters\dungeon\apexmutant\apexmutant.monstertype monsters\dungeon\aviansentry\aviansentry.monstertype monsters\dungeon\chesttrapper\chesttrapper.monstertype monsters\dungeon\chicken\chicken.monstertype monsters\dungeon\cleaningbot\cleaningbot.monstertype monsters\dungeon\floki\floki.monstertype monsters\dungeon\giftmonster\giftmonster.monstertype monsters\dungeon\giftmonster\giftmonstersmall.monstertype monsters\dungeon\glitchknight\glitchknight.monstertype monsters\dungeon\glitchspider\glitchspider.monstertype monsters\dungeon\heckblob\heckblob.monstertype monsters\dungeon\ixoling\ixoling.monstertype monsters\dungeon\moontant\moontant.monstertype monsters\dungeon\pinfriend\pinfriend.monstertype monsters\dungeon\po\megapo.monstertype monsters\dungeon\po\micropo.monstertype monsters\dungeon\po\po.monstertype monsters\dungeon\pogolem\pogolem.monstertype monsters\dungeon\repairbot\repairbot.monstertype monsters\dungeon\robotchicken\robotchicken.monstertype monsters\dungeon\serpentdroid\serpentdroid.monstertype monsters\dungeon\sewerfly\sewerfly.monstertype monsters\dungeon\smallshroom\smallshroom.monstertype monsters\dungeon\swarpion\swarpion.monstertype monsters\dungeon\toxicfly\toxicfly.monstertype monsters\dungeon\toxicgolem\toxicgolem.monstertype monsters\flyers\agrobat\agrobat.animation monsters\flyers\agrobat\agrobat.monstertype monsters\flyers\batong\batong.animation monsters\flyers\batong\batong.monstertype monsters\flyers\bobfae\bobfae.animation monsters\flyers\bobfae\bobfae.monstertype monsters\flyers\monopus\monopus.animation monsters\flyers\monopus\monopus.monstertype monsters\flyers\paratail\paratail.monstertype monsters\flyers\pteropod\pteropod.animation monsters\flyers\pteropod\pteropod.monstertype monsters\flyers\scandroid\scandroid.animation monsters\flyers\scandroid\scandroid.monstertype monsters\generated\flying\bonebird\bonebird.monstertype monsters\generated\flying\largeflying\largeflying.monstertype monsters\generated\flying\minibossflying\minibossflying.monstertype monsters\generated\flying\minidrone\minidrone.monstertype monsters\generated\flying\smallflying\smallflying.monstertype monsters\generated\ground\hugebiped\hugebiped.monstertype monsters\generated\ground\largebiped\largebiped.monstertype monsters\generated\ground\largequadruped\largequadruped.monstertype monsters\generated\ground\minibossbiped\minibossbiped.monstertype monsters\generated\ground\minibossquadruped\minibossquadruped.monstertype monsters\generated\ground\smallbiped\smallbiped.monstertype monsters\generated\ground\smallbiped\testmonster.monstertype monsters\generated\ground\smallquadruped\smallquadruped.monstertype monsters\generated\swimming\largefish\largefish.monstertype monsters\generated\swimming\smallfish\fish.monstertype monsters\ghosts\ignome\ignome.animation monsters\ghosts\ignome\ignome.monstertype monsters\ghosts\lumoth\lumoth.animation monsters\ghosts\lumoth\lumoth.monstertype monsters\ghosts\nautileech\nautileech.animation monsters\ghosts\nautileech\nautileech.monstertype monsters\ghosts\pyromantle\pyromantle.animation monsters\ghosts\pyromantle\pyromantle.monstertype monsters\ghosts\skimbus\skimbus.animation monsters\ghosts\skimbus\skimbus.monstertype monsters\ghosts\spookit\spookit.animation monsters\ghosts\spookit\spookit.monstertype monsters\ghosts\squeem\squeem.animation monsters\ghosts\squeem\squeem.monstertype monsters\ghosts\wisper\wisper.animation monsters\ghosts\wisper\wisper.monstertype monsters\pets\bunny\petbunny.monstertype monsters\pets\cat\petcat.monstertype monsters\pets\crasberry\crasberry.monstertype monsters\pets\orbis\petorbis.monstertype monsters\pets\petball\petball.monstertype monsters\pets\piglett\piglett.monstertype monsters\pets\snake\petsnake.monstertype monsters\pets\snugget\snugget.monstertype monsters\pets\weasel\petweasel.monstertype monsters\walkers\adultpoptop\adultpoptop.animation monsters\walkers\adultpoptop\adultpoptop.monstertype monsters\walkers\anglure\anglure.animation monsters\walkers\anglure\anglure.monstertype monsters\walkers\bobot\bobot.animation monsters\walkers\bobot\bobot.monstertype monsters\walkers\bulbop\bulbop.animation monsters\walkers\bulbop\bulbop.monstertype monsters\walkers\capricoat\capricoat.animation monsters\walkers\capricoat\capricoat.monstertype monsters\walkers\crabcano\crabcano.animation monsters\walkers\crabcano\crabcano.monstertype monsters\walkers\crutter\crutter.animation monsters\walkers\crutter\crutter.monstertype monsters\walkers\fennix\fennix.animation monsters\walkers\fennix\fennix.monstertype monsters\walkers\gleap\gleap.animation monsters\walkers\gleap\gleap.monstertype monsters\walkers\hemogoblin\hemogoblin.animation monsters\walkers\hemogoblin\hemogoblin.monstertype monsters\walkers\hemogoblinbutt\hemogoblinbutt.animation monsters\walkers\hemogoblinbutt\hemogoblinbutt.monstertype monsters\walkers\hemogoblinhead\hemogoblinhead.animation monsters\walkers\hemogoblinhead\hemogoblinhead.monstertype monsters\walkers\hypnare\hypnare.animation monsters\walkers\hypnare\hypnare.monstertype monsters\walkers\kingnutmidgeling\kingnutmidgeling.animation monsters\walkers\kingnutmidgeling\kingnutmidgeling.monstertype monsters\walkers\lilodon\lilodon.animation monsters\walkers\lilodon\lilodon.monstertype monsters\walkers\mandraflora\mandraflora.animation monsters\walkers\mandraflora\mandraflora.monstertype monsters\walkers\miasmop\miasmop.animation monsters\walkers\miasmop\miasmop.monstertype monsters\walkers\narfin\narfin.animation monsters\walkers\narfin\narfin.monstertype monsters\walkers\nutmidge\nutmidge.animation monsters\walkers\nutmidge\nutmidge.monstertype monsters\walkers\nutmidgeling\nutmidgeling.animation monsters\walkers\nutmidgeling\nutmidgeling.monstertype monsters\walkers\oogler\oogler.animation monsters\walkers\oogler\oogler.monstertype monsters\walkers\orbide\orbide.animation monsters\walkers\orbide\orbide.monstertype monsters\walkers\peblit\peblit.animation monsters\walkers\peblit\peblit.monstertype monsters\walkers\petricub\petricub.animation monsters\walkers\petricub\petricub.monstertype monsters\walkers\pipkin\pipkin.animation monsters\walkers\pipkin\pipkin.monstertype monsters\walkers\poptop\poptop.animation monsters\walkers\poptop\poptop.monstertype monsters\walkers\punchy\punchy.animation monsters\walkers\punchy\punchy.monstertype monsters\walkers\quagmutt\quagmutt.animation monsters\walkers\quagmutt\quagmutt.monstertype monsters\walkers\ringram\ringram.animation monsters\walkers\ringram\ringram.monstertype monsters\walkers\scaveran\scaveran.animation monsters\walkers\scaveran\scaveran.monstertype monsters\walkers\smoglin\smoglin.animation monsters\walkers\smoglin\smoglin.monstertype monsters\walkers\snaunt\snaunt.animation monsters\walkers\snaunt\snaunt.monstertype monsters\walkers\sporgus\sporgus.animation monsters\walkers\sporgus\sporgus.monstertype monsters\walkers\taroni\taroni.animation monsters\walkers\taroni\taroni.monstertype monsters\walkers\toumingo\toumingo.animation monsters\walkers\toumingo\toumingo.monstertype monsters\walkers\voltip\voltip.animation monsters\walkers\voltip\voltip.monstertype monsters\walkers\yokat\yokat.animation monsters\walkers\yokat\yokat.monstertype npcs\base.npctype npcs\bmain.lua npcs\merchant.npctype objects\ancient\powerbooster\powerbooster.object objects\ancient\speedbooster\speedbooster.object objects\avian\fireemblem\fireemblem.object objects\biome\alien\alienglowplant1\alienglowplant1.object objects\biome\rainbowwood\rainbowwoodbed\rainbowwoodbed.object objects\biome\rainbowwood\rainbowwoodsafe\rainbowwoodsafe.object objects\biome\rainbowwood\rainbowwoodtable\rainbowwoodtable.object objects\biome\slime\ceilingslime1\ceilingslime1.object objects\biome\slime\ceilingslime2\ceilingslime2.object objects\biome\slime\ceilingslime3\ceilingslime3.object objects\biome\slime\slimechest\slimehide.object objects\biome\spring\springchest\springchest.object [NEW] particles\burningvehicleflamesback.particle [NEW] particles\burningvehicleflamesfront.particle [NEW] particles\burningvehiclesmokeback.particle [NEW] particles\burningvehiclesmokefront.particle [NEW] particles\burningvehiclesmokemiddle.particle [NEW] particles\darkpurplephaseparticle.particle [NEW] particles\lightpurplephaseparticle.particle [NEW] particles\fire\flame.animation projectiles\physics.config projectiles\activeitems\boomerang\boomerang.projectile [NEW] projectiles\activeitems\boomerang\boomerang2.png projectiles\activeitems\boomerang\boomerangprojectile.lua [NEW] projectiles\activeitems\boomerang\fireboomerang.frames [NEW] projectiles\activeitems\boomerang\fireboomerang.png [NEW] projectiles\activeitems\boomerang\fireboomerang.projectile [NEW] projectiles\activeitems\boomerang\iceboomerang.frames [NEW] projectiles\activeitems\boomerang\iceboomerang.png [NEW] projectiles\activeitems\boomerang\iceboomerang.projectile [NEW] projectiles\activeitems\boomerang\spectralboomerang.frames [NEW] projectiles\activeitems\boomerang\spectralboomerang.png [NEW] projectiles\activeitems\boomerang\spectralboomerang.projectile [NEW] projectiles\activeitems\boomerang\wormerang.frames [NEW] projectiles\activeitems\boomerang\wormerang.png [NEW] projectiles\activeitems\boomerang\wormerang.projectile [NEW] projectiles\activeitems\traildash\wormtrail.frames [NEW] projectiles\activeitems\traildash\wormtrail.png [NEW] projectiles\activeitems\traildash\wormtrail.projectile projectiles\explosions\elementalexplosions\electricplasmaexplosion.projectile [NEW] projectiles\explosions\elementalexplosions\electricplasmaexplosionstatus.projectile projectiles\explosions\elementalexplosions\fireplasmaexplosion.projectile [NEW] projectiles\explosions\elementalexplosions\fireplasmaexplosionstatus.projectile projectiles\explosions\elementalexplosions\iceplasmaexplosion.projectile [NEW] projectiles\explosions\elementalexplosions\iceplasmaexplosionstatus.projectile projectiles\explosions\elementalexplosions\poisonplasmaexplosion.projectile [NEW] projectiles\explosions\elementalexplosions\poisonplasmaexplosionstatus.projectile projectiles\explosions\regularexplosion2\electricexplosionfreeze.config projectiles\explosions\regularexplosion2\electricexplosionfreezeuniversal.config projectiles\explosions\regularexplosion2\fireexplosionfreeze.config projectiles\explosions\regularexplosion2\fireexplosionfreezeuniversal.config projectiles\explosions\regularexplosion2\iceexplosionfreeze.config projectiles\explosions\regularexplosion2\iceexplosionfreezeuniversal.config projectiles\explosions\regularexplosion2\poisonexplosionfreeze.config projectiles\explosions\regularexplosion2\poisonexplosionfreezeuniversal.config projectiles\swoosh\broadsword\travelingswoosh\electrictravelingswoosh.projectile projectiles\swoosh\broadsword\travelingswoosh\firetravelingswoosh.projectile projectiles\swoosh\broadsword\travelingswoosh\icetravelingswoosh.projectile projectiles\swoosh\broadsword\travelingswoosh\poisontravelingswoosh.projectile [NEW] quests\generated\merchant.config quests\generated\pools\hatadjectives.config [NEW] quests\generated\pools\merchanttrades.config quests\generated\pools\pools.config quests\generated\templates\bribe.questtemplate quests\generated\templates\hat.questtemplate quests\generated\templates\helmet.questtemplate [NEW] quests\generated\templates\new_stock.questtemplate [NEW] quests\scripts\generated\new_stock.lua [NEW] recipes\spinningwheel\boxingglove.recipe scripts\spawnpoint.lua scripts\tenant.lua scripts\util.lua scripts\actions\merchant.lua scripts\actions\movement.lua scripts\actions\quests.lua scripts\actions\status.lua scripts\quest\manager.lua scripts\quest\participant.lua scripts\quest\manager\spawn_entities.lua scripts\questgen\context.lua scripts\questgen\generator.lua scripts\questgen\predicands.lua scripts\questgen\relations.lua sfx\npc\monsters\lilodon_step1.ogg sfx\npc\monsters\lilodon_step2.ogg stats\monster_primary.lua stats\npc_primary.lua [NEW] tiles\platforms\protectorateplatform.material [NEW] tiles\platforms\protectorateplatform.png [NEW] tiles\platforms\protectoratestairs.png treasure\common.treasurepools vehicles\hoverbike\default.frames vehicles\hoverbike\hoverbike.animation vehicles\hoverbike\hoverbike.lua vehicles\hoverbike\hoverbike.vehicle DIFFS ----- player.config 76a77,78 > { "item" : "boxingglove" }, > behaviors\monsters\modular\basemonster.behavior 8,10c8 < "/scripts/actions/status.lua", < "/scripts/actions/time.lua", < "/scripts/actions/movement.lua" --- > "/scripts/actions/status.lua" 230,315d227 < }, < { < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "title": "setAnimationState", < "type": "action", < "name": "setAnimationState", < "parameters": { < "state": "", < "type": "body" < } < } < }, < { < "title": "setGlobalTag", < "type": "action", < "name": "setGlobalTag", < "parameters": { < "type": "hurt", < "tag": "hurt" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": "" < } < }, < { < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "title": "optional", < "type": "decorator", < "name": "optional", < "parameters": { < "shouldRun": "" < }, < "child": { < "title": "dynamic", < "type": "composite", < "name": "dynamic", < "parameters": {}, < "children": [ < { < "title": "onGround", < "type": "action", < "name": "onGround", < "parameters": {} < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": "" < } < } < ] < } < } < }, < { < "title": "setGlobalTag", < "type": "action", < "name": "setGlobalTag", < "parameters": { < "type": "hurt", < "tag": "hurt" < } < }, < { < "title": "setAnimationState", < "type": "action", < "name": "setAnimationState", < "parameters": { < "state": "", < "type": "body" < } behaviors\monsters\modular\actions\charge.behavior 3d2 < "description": "", 4a4 > "/scripts/actions/status.lua", 28c28,29 < "rotateToTarget": false --- > "rotateToTarget": false, > "knockbackThreshold": 15 56a58,67 > "title": "addStatModifier", > "type": "action", > "name": "addStatModifier", > "parameters": { > "category": "monsterattack", > "stat": "knockbackThreshold", > "amount": "" > } > }, > { 294a306,313 > "title": "clearPersistentEffects", > "type": "action", > "name": "clearPersistentEffects", > "parameters": { > "category": "monsterattack" > } > }, > { 302a322,329 > }, > { > "title": "clearPersistentEffects", > "type": "action", > "name": "clearPersistentEffects", > "parameters": { > "category": "monsterattack" > } behaviors\monsters\modular\actions\hop.behavior 8c8,9 < "/scripts/actions/time.lua" --- > "/scripts/actions/time.lua", > "/scripts/actions/status.lua" 21c22,23 < "hopControlForce": 50 --- > "hopControlForce": 50, > "knockbackThreshold": 15 24c26 < "title": "sequence", --- > "title": "cleanup", 26,32c28,29 < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, --- > "name": "cleanup", > "parameters": {}, 35,46c32,34 < "title": "setDirection", < "type": "action", < "name": "setDirection", < "parameters": {}, < "output": { < "direction": "facingDirection" < } < }, < { < "title": "repeater", < "type": "decorator", < "name": "repeater", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 48,49c36,39 < "maxLoops": "", < "untilSuccess": false --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 51,59c41,49 < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" --- > "children": [ > { > "title": "setDirection", > "type": "action", > "name": "setDirection", > "parameters": {}, > "output": { > "direction": "facingDirection" > } 61,92c51,57 < "children": [ < { < "title": "multiply", < "type": "action", < "name": "multiply", < "parameters": { < "number": 1, < "factor": "" < }, < "output": { < "result": "ySpeed" < } < }, < { < "title": "dynamic", < "type": "composite", < "name": "dynamic", < "parameters": {}, < "children": [ < { < "title": "onGround", < "type": "action", < "name": "onGround", < "parameters": {} < }, < { < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} < } < ] --- > { > "title": "repeater", > "type": "decorator", > "name": "repeater", > "parameters": { > "maxLoops": "", > "untilSuccess": false 94c59 < { --- > "child": { 106,245c71 < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "title": "entityDirection", < "type": "action", < "name": "entityDirection", < "parameters": { < "entity": "self", < "target": "target" < }, < "output": { < "direction": "facingDirection" < } < } < }, < { < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { < "title": "canMove", < "type": "action", < "name": "canMove", < "parameters": { < "direction": "facingDirection" < } < }, < { < "title": "optional", < "type": "decorator", < "name": "optional", < "parameters": { < "shouldRun": "" < }, < "child": { < "title": "multiply", < "type": "action", < "name": "multiply", < "parameters": { < "number": "facingDirection", < "factor": -1 < }, < "output": { < "result": "facingDirection" < } < } < }, < { < "title": "multiply", < "type": "action", < "name": "multiply", < "parameters": { < "number": 1, < "factor": "" < }, < "output": { < "result": "ySpeed" < } < } < ] < } < } < ] < }, < { < "title": "multiply", < "type": "action", < "name": "multiply", < "parameters": { < "number": "facingDirection", < "factor": "" < }, < "output": { < "result": "xSpeed" < } < }, < { < "title": "faceDirection", < "type": "action", < "name": "faceDirection", < "parameters": { < "direction": "facingDirection" < } < }, < { < "title": "setAnimationState", < "type": "action", < "name": "setAnimationState", < "parameters": { < "state": "hop", < "type": "body" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": "" < } < }, < { < "title": "setVelocity", < "type": "action", < "name": "setVelocity", < "parameters": { < "velocity": [ < "xSpeed", < "ySpeed" < ] < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.25 < } < }, < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": -1, < "success": -1 < }, < "children": [ < { < "title": "controlApproachXVelocity", --- > "title": "multiply", 247c73 < "name": "controlApproachXVelocity", --- > "name": "multiply", 249,250c75,79 < "velocity": "xSpeed", < "force": "" --- > "number": 1, > "factor": "" > }, > "output": { > "result": "ySpeed" 260c89,114 < "title": "failer", --- > "title": "onGround", > "type": "action", > "name": "onGround", > "parameters": {} > }, > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} > } > ] > }, > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "succeeder", 262c116 < "name": "failer", --- > "name": "succeeder", 265,267c119,121 < "title": "sequence", < "type": "composite", < "name": "sequence", --- > "title": "entityDirection", > "type": "action", > "name": "entityDirection", 269,272c123,124 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" --- > "entity": "self", > "target": "target" 273a126,140 > "output": { > "direction": "facingDirection" > } > } > }, > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, 276c143 < "title": "velocity", --- > "title": "canMove", 278,282c145,147 < "name": "velocity", < "parameters": {}, < "output": { < "x": "xVelocity", < "y": "yVelocity" --- > "name": "canMove", > "parameters": { > "direction": "facingDirection" 286c151 < "title": "inverter", --- > "title": "optional", 288,289c153,156 < "name": "inverter", < "parameters": {}, --- > "name": "optional", > "parameters": { > "shouldRun": "" > }, 291c158 < "title": "greaterThan", --- > "title": "multiply", 293c160 < "name": "greaterThan", --- > "name": "multiply", 295,296c162,166 < "first": "yVelocity", < "second": 0 --- > "number": "facingDirection", > "factor": -1 > }, > "output": { > "result": "facingDirection" 301c171 < "title": "setAnimationState", --- > "title": "multiply", 303c173 < "name": "setAnimationState", --- > "name": "multiply", 305,306c175,179 < "state": "fall", < "type": "body" --- > "number": 1, > "factor": "" > }, > "output": { > "result": "ySpeed" 311c184,261 < }, --- > } > ] > }, > { > "title": "multiply", > "type": "action", > "name": "multiply", > "parameters": { > "number": "facingDirection", > "factor": "" > }, > "output": { > "result": "xSpeed" > } > }, > { > "title": "faceDirection", > "type": "action", > "name": "faceDirection", > "parameters": { > "direction": "facingDirection" > } > }, > { > "title": "setAnimationState", > "type": "action", > "name": "setAnimationState", > "parameters": { > "state": "hop", > "type": "body" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": "" > } > }, > { > "title": "addStatModifier", > "type": "action", > "name": "addStatModifier", > "parameters": { > "category": "monsterattack", > "stat": "knockbackThreshold", > "amount": "" > } > }, > { > "title": "setVelocity", > "type": "action", > "name": "setVelocity", > "parameters": { > "velocity": [ > "xSpeed", > "ySpeed" > ] > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 0.25 > } > }, > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": -1, > "success": -1 > }, > "children": [ 313c263 < "title": "onGround", --- > "title": "controlApproachXVelocity", 315,316c265,269 < "name": "onGround", < "parameters": {} --- > "name": "controlApproachXVelocity", > "parameters": { > "velocity": "xSpeed", > "force": "" > } 319,322c272,342 < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} --- > "title": "dynamic", > "type": "composite", > "name": "dynamic", > "parameters": {}, > "children": [ > { > "title": "failer", > "type": "decorator", > "name": "failer", > "parameters": {}, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "velocity", > "type": "action", > "name": "velocity", > "parameters": {}, > "output": { > "x": "xVelocity", > "y": "yVelocity" > } > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "greaterThan", > "type": "action", > "name": "greaterThan", > "parameters": { > "first": "yVelocity", > "second": 0 > } > } > }, > { > "title": "setAnimationState", > "type": "action", > "name": "setAnimationState", > "parameters": { > "state": "fall", > "type": "body" > } > } > ] > } > }, > { > "title": "onGround", > "type": "action", > "name": "onGround", > "parameters": {} > }, > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} > } > ] 324a345,377 > }, > { > "title": "clearPersistentEffects", > "type": "action", > "name": "clearPersistentEffects", > "parameters": { > "category": "monsterattack" > } > }, > { > "title": "setAnimationState", > "type": "action", > "name": "setAnimationState", > "parameters": { > "state": "land", > "type": "body" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": "" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": "" > } 327,351d379 < }, < { < "title": "setAnimationState", < "type": "action", < "name": "setAnimationState", < "parameters": { < "state": "land", < "type": "body" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": "" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": "" < } 353c381,389 < ] --- > } > ] > }, > { > "title": "clearPersistentEffects", > "type": "action", > "name": "clearPersistentEffects", > "parameters": { > "category": "monsterattack" behaviors\monsters\modular\actions\leap.behavior 4a5 > "/scripts/actions/status.lua", 20c21,22 < "minLeapTime": 0.1 --- > "minLeapTime": 0.1, > "knockbackThreshold": 15 23c25 < "title": "sequence", --- > "title": "cleanup", 25,31c27,28 < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, --- > "name": "cleanup", > "parameters": {}, 34,60c31 < "title": "entityPosition", < "type": "action", < "name": "entityPosition", < "parameters": { < "entity": "target" < }, < "output": { < "position": "targetPosition" < } < }, < { < "title": "aimVector", < "type": "action", < "name": "aimVector", < "parameters": { < "fromPosition": "self", < "toPosition": "targetPosition", < "speed": "", < "collisionCheck": "", < "useHighArc": "" < }, < "output": { < "aimVector": "aimVector" < } < }, < { < "title": "parallel", --- > "title": "sequence", 62c33 < "name": "parallel", --- > "name": "sequence", 64,65c35,38 < "fail": 1, < "success": -1 --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 69,98c42,84 < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "entityPosition", < "type": "action", < "name": "entityPosition", < "parameters": { < "entity": "target" < }, < "output": { < "position": "targetPosition" < } < }, < { < "title": "aimVector", < "type": "action", < "name": "aimVector", --- > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" > }, > "output": { > "position": "targetPosition" > } > }, > { > "title": "aimVector", > "type": "action", > "name": "aimVector", > "parameters": { > "fromPosition": "self", > "toPosition": "targetPosition", > "speed": "", > "collisionCheck": "", > "useHighArc": "" > }, > "output": { > "aimVector": "aimVector" > } > }, > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, > "children": [ > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", 100,104c86,89 < "fromPosition": "self", < "toPosition": "targetPosition", < "speed": "", < "collisionCheck": "", < "useHighArc": "" --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 106,108c91,118 < "output": { < "aimVector": "aimVector" < } --- > "children": [ > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" > }, > "output": { > "position": "targetPosition" > } > }, > { > "title": "aimVector", > "type": "action", > "name": "aimVector", > "parameters": { > "fromPosition": "self", > "toPosition": "targetPosition", > "speed": "", > "collisionCheck": "", > "useHighArc": "" > }, > "output": { > "aimVector": "aimVector" > } > } > ] 109a120,160 > }, > { > "title": "action-windup", > "type": "module", > "name": "action-windup", > "parameters": { > "windupState": "" > } > } > ] > }, > { > "title": "addStatModifier", > "type": "action", > "name": "addStatModifier", > "parameters": { > "category": "monsterattack", > "stat": "knockbackThreshold", > "amount": "" > } > }, > { > "title": "setNumber", > "type": "action", > "name": "setNumber", > "parameters": { > "number": "" > }, > "output": { > "number": "speed" > } > }, > { > "title": "vecMultiply", > "type": "action", > "name": "vecMultiply", > "parameters": { > "first": "aimVector", > "second": [ > "speed", > "speed" 110a162,164 > }, > "output": { > "vector": "leapVelocity" 114,116c168,170 < "title": "action-windup", < "type": "module", < "name": "action-windup", --- > "title": "logInfo", > "type": "action", > "name": "logInfo", 118c172 < "windupState": "" --- > "text": "LEAP!" 120,193c174 < } < ] < }, < { < "title": "setNumber", < "type": "action", < "name": "setNumber", < "parameters": { < "number": "" < }, < "output": { < "number": "speed" < } < }, < { < "title": "vecMultiply", < "type": "action", < "name": "vecMultiply", < "parameters": { < "first": "aimVector", < "second": [ < "speed", < "speed" < ] < }, < "output": { < "vector": "leapVelocity" < } < }, < { < "title": "logInfo", < "type": "action", < "name": "logInfo", < "parameters": { < "text": "LEAP!" < } < }, < { < "title": "setVelocity", < "type": "action", < "name": "setVelocity", < "parameters": { < "velocity": "leapVelocity" < } < }, < { < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "title": "setAnimationState", < "type": "action", < "name": "setAnimationState", < "parameters": { < "state": "", < "type": "body" < } < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": "" < } < }, < { < "title": "dynamic", < "type": "composite", < "name": "dynamic", < "parameters": {}, < "children": [ --- > }, 195c176 < "title": "groundCollision", --- > "title": "setVelocity", 197,198c178,181 < "name": "groundCollision", < "parameters": {} --- > "name": "setVelocity", > "parameters": { > "velocity": "leapVelocity" > } 201c184 < "title": "failer", --- > "title": "succeeder", 203c186 < "name": "failer", --- > "name": "succeeder", 206,208c189,191 < "title": "sequence", < "type": "composite", < "name": "sequence", --- > "title": "setAnimationState", > "type": "action", > "name": "setAnimationState", 210,213c193,216 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" --- > "state": "", > "type": "body" > } > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": "" > } > }, > { > "title": "dynamic", > "type": "composite", > "name": "dynamic", > "parameters": {}, > "children": [ > { > "title": "groundCollision", > "type": "action", > "name": "groundCollision", > "parameters": {} 215,251c218,271 < "children": [ < { < "title": "velocity", < "type": "action", < "name": "velocity", < "parameters": {}, < "output": { < "y": "yVelocity" < } < }, < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "greaterThan", < "type": "action", < "name": "greaterThan", < "parameters": { < "first": "yVelocity", < "second": 0 < } < } < }, < { < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "title": "setAnimationState", < "type": "action", < "name": "setAnimationState", < "parameters": { < "state": "", < "type": "body" --- > { > "title": "failer", > "type": "decorator", > "name": "failer", > "parameters": {}, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "velocity", > "type": "action", > "name": "velocity", > "parameters": {}, > "output": { > "y": "yVelocity" > } > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "greaterThan", > "type": "action", > "name": "greaterThan", > "parameters": { > "first": "yVelocity", > "second": 0 > } > } > }, > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "setAnimationState", > "type": "action", > "name": "setAnimationState", > "parameters": { > "state": "", > "type": "body" > } > } 253c273 < } --- > ] 255,256c275,282 < ] < } --- > }, > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} > } > ] 259c285 < "title": "runner", --- > "title": "clearPersistentEffects", 261,262c287,298 < "name": "runner", < "parameters": {} --- > "name": "clearPersistentEffects", > "parameters": { > "category": "monsterattack" > } > }, > { > "title": "action-winddown", > "type": "module", > "name": "action-winddown", > "parameters": { > "winddownState": "" > } 267,269c303,305 < "title": "action-winddown", < "type": "module", < "name": "action-winddown", --- > "title": "clearPersistentEffects", > "type": "action", > "name": "clearPersistentEffects", 271c307 < "winddownState": "" --- > "category": "monsterattack" behaviors\monsters\modular\actions\swoop.behavior 5a6 > "/scripts/actions/status.lua", 22c23,24 < "xControlForce": 30 --- > "xControlForce": 30, > "knockbackThreshold": 15 25c27 < "title": "sequence", --- > "title": "cleanup", 27,33c29,30 < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, --- > "name": "cleanup", > "parameters": {}, 36c33 < "title": "parallel", --- > "title": "sequence", 38c35 < "name": "parallel", --- > "name": "sequence", 40,41c37,40 < "fail": 1, < "success": -1 --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 45c44 < "title": "sequence", --- > "title": "parallel", 47c46 < "name": "sequence", --- > "name": "parallel", 49,52c48,49 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" --- > "fail": 1, > "success": -1 56,69c53,55 < "title": "entityPosition", < "type": "action", < "name": "entityPosition", < "parameters": { < "entity": "target" < }, < "output": { < "position": "targetPosition" < } < }, < { < "title": "aimVector", < "type": "action", < "name": "aimVector", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 71,76c57,60 < "fromPosition": "self", < "toPosition": "targetPosition", < "speed": "", < "collisionCheck": "", < "useHighArc": "", < "gravityMultiplier": "" --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 78,80c62,117 < "output": { < "aimVector": "aimVector" < } --- > "children": [ > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" > }, > "output": { > "position": "targetPosition" > } > }, > { > "title": "aimVector", > "type": "action", > "name": "aimVector", > "parameters": { > "fromPosition": "self", > "toPosition": "targetPosition", > "speed": "", > "collisionCheck": "", > "useHighArc": "", > "gravityMultiplier": "" > }, > "output": { > "aimVector": "aimVector" > } > }, > { > "title": "entityDirection", > "type": "action", > "name": "entityDirection", > "parameters": { > "entity": "self", > "target": "target" > }, > "output": { > "yDirection": "yDirection" > } > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "greaterThan", > "type": "action", > "name": "greaterThan", > "parameters": { > "first": "yDirection", > "second": 0 > } > } > } > ] 83,85c120,122 < "title": "entityDirection", < "type": "action", < "name": "entityDirection", --- > "title": "action-windup", > "type": "module", > "name": "action-windup", 87,106c124 < "entity": "self", < "target": "target" < }, < "output": { < "yDirection": "yDirection" < } < }, < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "greaterThan", < "type": "action", < "name": "greaterThan", < "parameters": { < "first": "yDirection", < "second": 0 < } --- > "windupState": "" 112,114c130,132 < "title": "action-windup", < "type": "module", < "name": "action-windup", --- > "title": "addStatModifier", > "type": "action", > "name": "addStatModifier", 116c134,136 < "windupState": "" --- > "category": "monsterattack", > "stat": "knockbackThreshold", > "amount": "" 118,155c138 < } < ] < }, < { < "title": "setNumber", < "type": "action", < "name": "setNumber", < "parameters": { < "number": "" < }, < "output": { < "number": "speed" < } < }, < { < "title": "vecMultiply", < "type": "action", < "name": "vecMultiply", < "parameters": { < "first": "aimVector", < "second": [ < "speed", < "speed" < ] < }, < "output": { < "vector": "swoopVelocity" < } < }, < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, < "children": [ --- > }, 157,194c140,158 < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "setNumber", < "type": "action", < "name": "setNumber", < "parameters": { < "number": "" < }, < "output": { < "number": "gravityMultiplier" < } < }, < { < "title": "controlParameters", < "type": "action", < "name": "controlParameters", < "parameters": { < "config": { < "airFriction": 0, < "gravityEnabled": true, < "gravityMultiplier": "gravityMultiplier" < } < } < } --- > "title": "setNumber", > "type": "action", > "name": "setNumber", > "parameters": { > "number": "" > }, > "output": { > "number": "speed" > } > }, > { > "title": "vecMultiply", > "type": "action", > "name": "vecMultiply", > "parameters": { > "first": "aimVector", > "second": [ > "speed", > "speed" 195a160,162 > }, > "output": { > "vector": "swoopVelocity" 199c166 < "title": "sequence", --- > "title": "parallel", 201c168 < "name": "sequence", --- > "name": "parallel", 203,206c170,171 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" --- > "fail": 1, > "success": -1 210,217d174 < "title": "setVelocity", < "type": "action", < "name": "setVelocity", < "parameters": { < "velocity": "swoopVelocity" < } < }, < { 223,225c180,182 < "title": "setAnimationState", < "type": "action", < "name": "setAnimationState", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 227,237c184,213 < "state": "", < "type": "body" < } < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": "" --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "setNumber", > "type": "action", > "name": "setNumber", > "parameters": { > "number": "" > }, > "output": { > "number": "gravityMultiplier" > } > }, > { > "title": "controlParameters", > "type": "action", > "name": "controlParameters", > "parameters": { > "config": { > "airFriction": 0, > "gravityEnabled": true, > "gravityMultiplier": "gravityMultiplier" > } > } > } > ] 241c217 < "title": "dynamic", --- > "title": "sequence", 243,244c219,225 < "name": "dynamic", < "parameters": {}, --- > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, 247,249c228,238 < "title": "selector", < "type": "composite", < "name": "selector", --- > "title": "setVelocity", > "type": "action", > "name": "setVelocity", > "parameters": { > "velocity": "swoopVelocity" > } > }, > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", 251,294c240,246 < "children": [ < { < "title": "boundsCollision", < "type": "action", < "name": "boundsCollision", < "parameters": { < "dirVector": [ < 1, < 0 < ] < } < }, < { < "title": "boundsCollision", < "type": "action", < "name": "boundsCollision", < "parameters": { < "dirVector": [ < -1, < 0 < ] < } < }, < { < "title": "boundsCollision", < "type": "action", < "name": "boundsCollision", < "parameters": { < "dirVector": [ < 0, < 1 < ] < } < }, < { < "title": "boundsCollision", < "type": "action", < "name": "boundsCollision", < "parameters": { < "dirVector": [ < 0, < -1 < ] < } --- > "child": { > "title": "setAnimationState", > "type": "action", > "name": "setAnimationState", > "parameters": { > "state": "", > "type": "body" 296c248,256 < ] --- > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": "" > } 299c259 < "title": "selector", --- > "title": "dynamic", 301c261 < "name": "selector", --- > "name": "dynamic", 305c265 < "title": "sequence", --- > "title": "selector", 307,313c267,268 < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, --- > "name": "selector", > "parameters": {}, 316c271 < "title": "greaterThan", --- > "title": "boundsCollision", 318c273 < "name": "greaterThan", --- > "name": "boundsCollision", 320,321c275,278 < "first": "", < "second": 0 --- > "dirVector": [ > 1, > 0 > ] 325c282 < "title": "timer", --- > "title": "boundsCollision", 327c284 < "name": "timer", --- > "name": "boundsCollision", 329c286,311 < "time": "" --- > "dirVector": [ > -1, > 0 > ] > } > }, > { > "title": "boundsCollision", > "type": "action", > "name": "boundsCollision", > "parameters": { > "dirVector": [ > 0, > 1 > ] > } > }, > { > "title": "boundsCollision", > "type": "action", > "name": "boundsCollision", > "parameters": { > "dirVector": [ > 0, > -1 > ] 335,338c317,358 < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} --- > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "greaterThan", > "type": "action", > "name": "greaterThan", > "parameters": { > "first": "", > "second": 0 > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": "" > } > } > ] > }, > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} > } > ] 344a365,380 > }, > { > "title": "clearPersistentEffects", > "type": "action", > "name": "clearPersistentEffects", > "parameters": { > "category": "monsterattack" > } > }, > { > "title": "action-winddown", > "type": "module", > "name": "action-winddown", > "parameters": { > "winddownState": "" > } 349,351c385,387 < "title": "action-winddown", < "type": "module", < "name": "action-winddown", --- > "title": "clearPersistentEffects", > "type": "action", > "name": "clearPersistentEffects", 353c389 < "winddownState": "" --- > "category": "monsterattack" behaviors\npc\idle.behavior 3d2 < "description": "", 5a5 > "/scripts/actions/quests.lua", 9d8 < "/scripts/actions/quests.lua", 13a13,14 > "/scripts/actions/status.lua", > "/npcs/bmain.lua", 23c24,25 < "questGiverWaitTime": 10 --- > "questGiverWaitTime": 10, > "beamOutWhenNotInUse": false 547c549 < "title": "hasQuest", --- > "title": "isGivingQuest", 549c551 < "name": "hasQuest", --- > "name": "isGivingQuest", 625a628,712 > "title": "optional", > "type": "decorator", > "name": "optional", > "parameters": { > "shouldRun": "" > }, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "hasQuest", > "type": "action", > "name": "hasQuest", > "parameters": {} > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 10 > } > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "hasQuest", > "type": "action", > "name": "hasQuest", > "parameters": {} > } > }, > { > "title": "addEphemeralEffect", > "type": "action", > "name": "addEphemeralEffect", > "parameters": { > "name": "beamoutanddie" > } > }, > { > "title": "setDeathParticleBurst", > "type": "action", > "name": "setDeathParticleBurst", > "parameters": { > "deathParticleBurst": null > } > }, > { > "title": "setDropPools", > "type": "action", > "name": "setDropPools", > "parameters": { > "dropPools": [] > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 20 > } > } > ] > } > }, > { 668c755 < "title": "hasQuest", --- > "title": "isGivingQuest", 670c757 < "name": "hasQuest", --- > "name": "isGivingQuest", behaviors\npc\merchant.behavior 3d2 < "description": "", 16c15,16 < "play": true --- > "play": true, > "beamOutWhenNotInUse": false 596c596,597 < "play": "" --- > "play": "", > "beamOutWhenNotInUse": "" biomes\surface\midnight.biome 58d57 < "/weather.config:midnight", biomes\surface_detached\hive.biome 12c12 < [ 1, "orbide" ], --- > [ 1, "orbide" ] dialog\quest.config 836a837,845 > }, > "new_stock" : { > "trade" : { > "default" : { > "default" : [ > "Thanks for the goods, here's 's parcel. Pass on my regards!" > ] > } > } items\active\vehiclecontroller\vehiclecontroller.activeitem 16c16,19 < "filledInventoryIcon" : "/items/active/vehiclecontroller/filledvehiclecontroller.png" --- > "filledInventoryIcon" : "/items/active/vehiclecontroller/filledvehiclecontroller.png", > > "vehicleType" : "hoverbike" > items\active\vehiclecontroller\vehiclecontroller.lua 1a2,3 > > --wake up, invent a unique key ID. 4a7,9 > > self.vehicleStartHealth = nil; > 7a13 > --do we have a vehicle on board ? 9,11c15,24 < world.spawnVehicle("hoverbike", activeItem.ownerAimPosition(), { < ownerKey = item.instanceValue("key") < }) --- > > -- what kind, and where do we put it ? > local vehicleType = item.instanceValue("vehicleType") > local spawnPosition = activeItem.ownerAimPosition() > > -- world.logInfo("Health at spawntime=%s",self.vehicleStartHealth) > > world.spawnVehicle(vehicleType, spawnPosition, { ownerKey = item.instanceValue("key"), startHealth = self.vehicleStartHealth} ) > > --not filled any more. 14a28,29 > > --currently empty. suck up the nearest vehicle to the cursor 16,18c31 < includedTypes = {"vehicle"}, < order = "nearest", < })[1] --- > includedTypes = {"vehicle"}, order = "nearest",})[1] --only get one of them 21c34,35 < self.consumePromise = world.sendEntityMessage(vehicleId, "lock", item.instanceValue("key")) --- > --ask the vehicle if we can store it. > self.consumePromise = world.sendEntityMessage(vehicleId, "store", item.instanceValue("key")) 22a37 > 29,30c44,53 < if self.consumePromise:result() then < activeItem.setInstanceValue("filled", true) --- > > local vehicleResult=self.consumePromise:result() --so this is a json returned from the vehicle we want to store. > > activeItem.setInstanceValue("filled", vehicleResult.storable) > > if vehicleResult.storable then > > -- world.logInfo("Health listed in pokeball=%s",vehicleResult.health) > > self.vehicleStartHealth = vehicleResult.health 35a59,60 > > items\active\weapons\fist\boxingglove.activeitem 5c5 < "rarity" : "legendary", --- > "rarity" : "rare", items\active\weapons\melee\altabilities\broadsword\bladecharge\bladecharge.altability 54c54 < "energyUsage" : 40.0, --- > "energyUsage" : 120.0, 58c58,60 < "baseDamage" : 12, --- > "baseDamage" : 13.5, > "knockback" : 40, > "knockbackMode" : "facing", items\active\weapons\melee\altabilities\broadsword\downstab\downstab.altability 17c17 < "baseDamage" : 4, --- > "baseDamage" : 6, 23c23 < "energyUsage" : 30.0, --- > "energyUsage" : 40.0, items\active\weapons\melee\altabilities\broadsword\giantsword\giantsword.altability 173c173 < "energyUsage" : 50.0, --- > "energyUsage" : 160.0, 174a175,188 > "elementalConfig" : { > "fire" : { > "damageConfig" : { "statusEffects" : [ "damagefreeze", "burning" ] } > }, > "ice" : { > "damageConfig" : { "statusEffects" : [ "damagefreeze", "frostslow" ] } > }, > "poison" : { > "damageConfig" : { "statusEffects" : [ "damagefreeze", "weakpoison" ] } > }, > "electric" : { > "damageConfig" : { "statusEffects" : [ "damagefreeze", "paralysis" ] } > } > }, 177a192,193 > "knockback" : 40, > "knockbackMode" : "facing", items\active\weapons\melee\altabilities\broadsword\parry\parry.altability 62c62 < "energyUsage" : 30.0, --- > "energyUsage" : 0.0, 65c65 < "shieldHealth" : 2000, // make this high so that it doesn't deplete shield stamina as much --- > "shieldHealth" : 50, items\active\weapons\melee\altabilities\broadsword\risingslash\risingslash.altability 58c58 < "energyUsage" : 50.0, --- > "energyUsage" : 60.0, 66c66 < "baseDamage" : 4, --- > "baseDamage" : 6, 68c68 < "statusEffects" : ["shortparalysis"], --- > "statusEffects" : ["damagefreeze", "shortparalysis"], items\active\weapons\melee\altabilities\broadsword\spinslash\spinslash.altability 56,57c56,57 < "energyUsage" : 50.0, < "cooldownTime" : 1.0, --- > "energyUsage" : 80.0, > "cooldownTime" : 0.5, 61,62c61,62 < "baseDamage" : 2, < "knockback" : 30, --- > "baseDamage" : 4, > "knockback" : 15, items\active\weapons\melee\altabilities\broadsword\spinslash\spinslash.lua 7a8 > self.cooldownTimer = self.cooldownTime 14c15,21 < if self.weapon.currentAbility == nil and not status.resourceLocked("energy") and self.fireMode == "alt" then --- > self.cooldownTimer = math.max(0, self.cooldownTimer - dt) > > if self.weapon.currentAbility == nil > and self.cooldownTimer == 0 > and not status.resourceLocked("energy") > and self.fireMode == "alt" then > 65a73,74 > > self.cooldownTimer = self.cooldownTime items\active\weapons\melee\altabilities\broadsword\spinslash\superspinslash.altability 56,57c56,57 < "energyUsage" : 60.0, < "cooldownTime" : 1.0, --- > "energyUsage" : 80.0, > "cooldownTime" : 0.5, 61c61 < "baseDamage" : 1, --- > "baseDamage" : 6, items\active\weapons\melee\altabilities\broadsword\spinslash\superspinslash.lua 7a8 > self.cooldownTimer = self.cooldownTime 14c15,21 < if self.weapon.currentAbility == nil and not status.resourceLocked("energy") and self.fireMode == "alt" then --- > self.cooldownTimer = math.max(0, self.cooldownTimer - dt) > > if self.weapon.currentAbility == nil > and self.cooldownTimer == 0 > and not status.resourceLocked("energy") > and self.fireMode == "alt" then > 64a72,73 > > self.cooldownTimer = self.cooldownTime items\active\weapons\melee\altabilities\broadsword\traildash\traildash.altability 68c68 < "energyUsage" : 50, --- > "energyUsage" : 160, 71c71 < "dashSpeed" : 100, --- > "dashSpeed" : 160, 75c75 < "power" : 1.5, --- > "power" : 1, 96c96 < "baseDamage" : 5, --- > "baseDamage" : 2, items\active\weapons\melee\altabilities\broadsword\travelingslash\travelingslash.altability 34,35c34,35 < "baseDamage" : 10, < "energyUsage" : 50, --- > "baseDamage" : 8, > "energyUsage" : 100, items\active\weapons\melee\altabilities\generic\blinkexplosion\blinkexplosion.altability 41c41 < "energyUsage" : 60.0, --- > "energyUsage" : 120.0, 45c45 < "baseDamage" : 12, --- > "baseDamage" : 13.5, 48c48 < "projectileType" : "fireplasmaexplosion" --- > "projectileType" : "fireplasmaexplosionstatus" 51c51 < "projectileType" : "iceplasmaexplosion" --- > "projectileType" : "iceplasmaexplosionstatus" 54c54 < "projectileType" : "poisonplasmaexplosion" --- > "projectileType" : "poisonplasmaexplosionstatus" 57c57 < "projectileType" : "electricplasmaexplosion" --- > "projectileType" : "electricplasmaexplosionstatus" items\active\weapons\melee\altabilities\generic\blinkslash\blinkslash.altability 54c54 < "energyUsage" : 40, --- > "energyUsage" : 100, 70,73c70,81 < "fire" : { "damageConfig" : { "statusEffects" : [ "burning" ] } }, < "ice" : { "damageConfig" : { "statusEffects" : [ "frostslow" ] } }, < "poison" : { "damageConfig" : { "statusEffects" : [ "weakpoison" ] } }, < "electric" : { "damageConfig" : { "statusEffects" : [ "paralysis" ] } } --- > "fire" : { > "damageConfig" : { "statusEffects" : [ "burning" ] } > }, > "ice" : { > "damageConfig" : { "statusEffects" : [ "frostslow" ] } > }, > "poison" : { > "damageConfig" : { "statusEffects" : [ "weakpoison" ] } > }, > "electric" : { > "damageConfig" : { "statusEffects" : [ "paralysis" ] } > } items\active\weapons\melee\altabilities\spear\barrier\barrier.altability 77c77 < "energyUsage" : 3.0, --- > "energyUsage" : 10.0, 80c80 < "power" : 2.0 --- > "power" : 1.0 items\active\weapons\melee\altabilities\spear\flurry\flurry.altability 19c19,20 < "energyUsage" : 7.0, --- > "energyUsage" : 10.0, > "cooldownTime" : 0.2, 23,24c24,25 < "baseDamage" : 1.0, < "knockback" : 0, --- > "baseDamage" : 3, > "knockback" : 1, 26c27,28 < "timeoutGroup" : "alt" --- > "timeoutGroup" : "alt", > "statusEffects" : [ "shortdamagefreeze" ] items\active\weapons\melee\altabilities\spear\flurry\flurry.lua 7a8 > self.cooldownTimer = self.cooldownTime 14c15,21 < if self.weapon.currentAbility == nil and self.fireMode == "alt" and not status.resourceLocked("energy") then --- > self.cooldownTimer = math.max(0, self.cooldownTimer - dt) > > if self.weapon.currentAbility == nil > and self.cooldownTimer == 0 > and not status.resourceLocked("energy") > and self.fireMode == "alt" then > 49a57 > self.cooldownTimer = self.cooldownTime items\active\weapons\melee\altabilities\spear\spin\spin.altability 15d14 < //"immediateSound" : "/sfx/melee/spear_twirl_start.ogg", 55,56c54,55 < < "energyUsage" : 40, --- > "energyUsage" : 60, > "cooldownTime" : 0.2, 60c59 < "baseDamage" : 3.5, --- > "baseDamage" : 6, items\active\weapons\melee\altabilities\spear\spin\spin.lua 7a8 > self.cooldownTimer = self.cooldownTime 14c15,21 < if self.weapon.currentAbility == nil and fireMode == "alt" and not status.resourceLocked("energy") then --- > self.cooldownTimer = math.max(0, self.cooldownTimer - dt) > > if self.weapon.currentAbility == nil > and self.cooldownTimer == 0 > and not status.resourceLocked("energy") > and self.fireMode == "alt" then > 34a42 > self.cooldownTimer = self.cooldownTime items\active\weapons\melee\broadsword\commonbroadsword.activeitem 25c25 < "statusEffects" : [ "damagefreeze" ], --- > "statusEffects" : [ ], items\active\weapons\ranged\altabilities\lance\lance.altability 141c141 < "damageSourceKind" : "spear", --- > "damageSourceKind" : "plasma", items\active\weapons\ranged\boomerang\boomerang.activeitem 22c22 < "projectileType" : ["boomerang", "boomerangflip"], --- > "projectileType" : "boomerang", 25c25,30 < "knockback" : 20 --- > "knockback" : 20, > > "ignoreTerrain" : false, > "controlForce" : 80, > "pickupDistance" : 1.0, > "snapDistance" : 4.0 items\active\weapons\ranged\boomerang\boomerang.lua 6a7 > self.fireAngleOffset = util.toRadians(item.instanceValue("fireAngleOffset", 0)) 59a61 > if self.aimDirection < 0 then params.processing = "?flipx" end 61c63 < self.aimDirection > 0 and self.projectileType[1] or self.projectileType[2], --- > self.projectileType, 111c113 < local aimVector = vec2.rotate({1, 0}, self.aimAngle) --- > local aimVector = vec2.rotate({1, 0}, self.aimAngle + self.fireAngleOffset) items\active\weapons\ranged\boomerang\chakram.activeitem 27c27 < "projectileType" : ["chakram", "chakram"], --- > "projectileType" : "chakram", leveling\levelingmultipliers.functions 93,102c93,102 < [1, 1.0], < [2, 1.1], < [3, 1.2], < [4, 1.3], < [5, 1.4], < [6, 1.5], < [7, 1.6], < [8, 1.7], < [9, 1.8], < [10, 1.9] --- > [1, 1.1], > [2, 1.2], > [3, 1.3], > [4, 1.4], > [5, 1.5], > [6, 1.6], > [7, 1.7], > [8, 1.8], > [9, 1.9], > [10, 2.0] monsters\monster.lua 5a6 > require "/scripts/status.lua" 39a41,50 > --Listen to damage taken > self.damageTaken = damageListener("damageTaken", function(notifications) > for _,notification in pairs(notifications) do > if notification.damage > 0 then > self.damaged = true > BData:setEntity("damageSource", notification.sourceId) > end > end > end) > 45a57,66 > if status.resourcePositive("stunned") then > entity.setAnimationState("damage", "stunned") > mcontroller.clearControls() > return > else > entity.setAnimationState("damage", "none") > end > > self.damageTaken:update() > 106,113d126 < end < end < < -- Engine callback - called on taking damage < function damage(args) < if args.damage > 0 then < self.damaged = true < BData:setEntity("damageSource", args.sourceId) monsters\boss\crystalboss\crystalboss.monstertype 109a110,112 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 133a137,140 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\boss\dragonboss\dragonboss.monstertype 78a79,81 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 90a94,97 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\boss\jellyboss\jellyboss.monstertype 110a111,113 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 122a126,129 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\boss\missile\missile.monstertype 59a60,62 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 71a75,78 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\boss\penguin\general.monstertype 65a66,68 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 77a81,84 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\boss\penguin\rockettrooper.monstertype 65a66,68 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 77a81,84 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\boss\penguin\trooper.monstertype 65a66,68 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 77a81,84 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\boss\penguinminiufo\penguinminiufo.monstertype 68a69,71 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 80a84,87 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\boss\penguintank\penguintank.monstertype 67a68,70 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 79a83,86 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\boss\penguinufo\penguinufo.monstertype 93a94,96 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 111a115,118 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\boss\robotboss\robotboss.monstertype 109a110,112 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 127a131,134 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\boss\skeyejelly\skeyejelly.monstertype 108a109,111 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 120a124,127 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\boss\spiderboss\spiderboss.monstertype 78a79,81 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 96a100,103 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\boss\tentaclecomet\tentaclecomet.monstertype 70a71,73 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 82a86,89 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\boss\tentaclecometspore\tentaclecometspore.monstertype 63a64,66 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 75a79,82 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\ashsprite\ashsprite.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\aurorabee\aurorabee.monstertype 74a75,77 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 89a93,96 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\beebug\beebug.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\blueback\blueback.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\brightstripe\brightstripe.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\butterbee\butterbee.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\cinderfly\cinderfly.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\dewhopper\dewhopper.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\driftbell\driftbell.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\dustmoth\dustmoth.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\fawnfly\fawnfly.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\fireflyspawner\fireflyspawner.monstertype 69a70,72 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 84a88,91 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\fireygiant\fireygiant.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\flameroach\flameroach.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\flyspawner\flyspawner.monstertype 69a70,72 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 84a88,91 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\frostfleck\frostfleck.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\frostfly\frostfly.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\gasgiant\gasgiant.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\glowbug\glowbug.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\goldbuck\goldbuck.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\greentip\greentip.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\heathugger\heathugger.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\hivehog\hivehog.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\icetip\icetip.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\lavahopper\lavahopper.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\muddancer\muddancer.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\mudstag\mudstag.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\orphanfly\orphanfly.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\phoenixfly\phoenixfly.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\polarmoth\polarmoth.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\redwing\redwing.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\sandclown\sandclown.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\scuttleploom\scuttleploom.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\seahornet\seahornet.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\shadowmoth\shadowmoth.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\shardwing\shardwing.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\shellcreep\shellcreep.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\snowskater\snowskater.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\stinkjack\stinkjack.monstertype 72a73,75 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 87a91,94 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\sunskipper\sunskipper.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\testbug\testbug.monstertype 68a69,71 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 83a87,90 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\thornbee\thornbee.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\tidefly\tidefly.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\vineclimber\vineclimber.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\wavebird\wavebird.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\bugs\xenofly\xenofly.monstertype 73a74,76 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 88a92,95 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\crawlers\crustoise\crustoise.animation 33a34,42 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 35c44 < "hurt" : { --- > "stunned" : { 79,80c88,91 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\crawlers\crustoise\crustoise.monstertype 120c120 < "body" : "hurt" --- > "damage" : "stunned" 138a139,141 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 150a154,157 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\crawlers\iguarmor\iguarmor.animation 29a30,38 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 31c40 < "hurt" : { --- > "stunned" : { 70,71c79,82 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\crawlers\iguarmor\iguarmor.monstertype 128c128 < "body" : "hurt" --- > "damage" : "stunned" 146a147,149 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 158a162,165 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\crawlers\oculob\oculob.animation 17a18,26 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 19c28 < "hurt" : { --- > "stunned" : { 48,49c57,60 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\crawlers\oculob\oculob.monstertype 105c105 < "body" : "hurt" --- > "damage" : "stunned" 123a124,126 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 138a142,145 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\crawlers\pulpin\pulpin.animation 25a26,34 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 27,29c36,37 < "hurt" : { < "frames" : 5, < "cycle" : 0.25 --- > "stunned" : { > "frames" : 1 67,68c75,78 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\crawlers\pulpin\pulpin.monstertype 126c126 < "body" : "hurt" --- > "damage" : "stunned" 144a145,147 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 159a163,166 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\crawlers\snaggler\snaggler.animation 25a26,34 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 27c36 < "hurt" : { --- > "stunned" : { 66,67c75,78 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\crawlers\snaggler\snaggler.monstertype 133c133 < "body" : "hurt" --- > "damage" : "stunned" 151a152,154 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 163a167,170 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\crawlers\tintic\tintic.animation 28a29,37 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 30c39 < "hurt" : { --- > "stunned" : { 69,70c78,81 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\crawlers\tintic\tintic.monstertype 135c135 < "body" : "hurt" --- > "damage" : "stunned" 153a154,156 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 165a169,172 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\crawlers\triplod\triplod.animation 14a15,23 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 16c25 < "hurt" : { --- > "stunned" : { 41,42c50,53 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { 44c55 < "image" : ":idle." --- > "image" : ":hurt." 67,68c78,81 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { 70c83 < "image" : ":hurt.1" --- > "image" : ":hurt." monsters\crawlers\triplod\triplod.monstertype 126c126 < "body" : "hurt" --- > "damage" : "stunned" 144a145,147 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 159a163,166 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\apexscabcritter\apexscabcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\arcticfishcritter\arcticfishcritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\armadillo\armadillo.monstertype 54a55,57 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 66a70,73 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\avianscabcritter\avianscabcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\ballooncritter\ballooncritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\bigwormcritter\bigwormcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\birdcritter\birdcritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\blipcritter\blipcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\bloodtoadcritter\bloodtoadcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\bluebutterflycritter\bluebutterflycritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\bouncebagcritter\bouncebagcritter.monstertype 54a55,57 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 66a70,73 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\bouncercritter\bouncercritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\bowbirdcritter\bowbirdcritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\breakercritter\breakercritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\breakerfemalecritter\breakerfemalecritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\bunny\bunny.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\charfishcritter\charfishcritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\chevcritter\chevcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\ciclesnail\ciclesnailcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\cliffcritter\cliffcritter.monstertype 54a55,57 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 66a70,73 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\crabcritter\crabcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\crystalbirdcritter\crystalbirdcritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\crystaltortoisecritter\crystaltortoisecritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\dancercritter\dancercritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\darkballcritter\darkballcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\darknessscabcritter\darknessscabcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\darkoneeyecritter\darkoneeyecritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\darkthreeeyescritter\darkthreeeyescritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\darkwormcritter\darkwormcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\dartcritter\dartcritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\deserttortoisecritter\deserttortoisecritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\eyefriend\eyefriend.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\eyepodcritter\eyepodcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\fishberrycritter\fishberrycritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\fishchilicritter\fishchilicritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\fishcritter\fishcritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\fishlemoncritter\fishlemoncritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\floatbagcritter\floatbagcritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\floranscabcritter\floranscabcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\frog\frog.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\froggpolecritter\frogpolecritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\frozenowlcritter\frozenowlcritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\glitchscabcritter\glitchscabcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\gloopcritter\gloopcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\glowingballcritter\glowingballcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\glowingballcritter2\glowingballcritter2.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\glowingfishcritter\glowingfishcritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\groopcritter\groopcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\gullcritter\gullcritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\harecritter\harecritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\hazmatcritter\hazmatcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\hedgehogcritter\hedgehogcritter.monstertype 54a55,57 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 66a70,73 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\hollowcritter\hollowcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\humanscabcritter\humanscabcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\hylotlscabcritter\hylotlscabcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\icescabcritter\icescabcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\jellocritter\jellocritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\jellycritter\jellycritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\krawlcritter\krawlcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\leafscabcritter\leafscabcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\maggotcritter\maggotcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\mousecritter\mousecritter.monstertype 54a55,57 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 66a70,73 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\narfishcritter\narfishcritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\owlcritter\owlcritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\penguinscabcritter\penguinscabcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\petalcritter\petalcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\poisonfishcritter\poisonfishcritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\poofincritter\poofincritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\prismelementalcritter\prismelementalcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\prismscabcritter\prismscabcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\pufferfishcritter\pufferfishcritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\quibblecritter\quibblecritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\ravencritter\ravencritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\reasonablecritter\reasonablecritter.monstertype 54a55,57 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 66a70,73 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\redbreastcritter\redbreastcritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\rolypolycritter\rolypolycritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\sackbagcritter\sackbagcritter.monstertype 54a55,57 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 66a70,73 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\savybirdcritter\savybirdcritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\sealcritter\sealcritter.monstertype 54a55,57 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 66a70,73 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\skellyfishcritter\skellyfishcritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\skywurmcritter\skywurmcritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\slugbluecritter\slugbluecritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\slugcritter\slugcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\sluggreencritter\sluggreencritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\snail\snail.monstertype 54a55,57 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 66a70,73 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\snakecritter\snakecritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\snooglecritter\snooglecritter.monstertype 54a55,57 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 66a70,73 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\snorecritter\snorecritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\snowbcritter\snowbcritter.monstertype 54a55,57 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 66a70,73 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\snowflakescritter\snowflakescritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\snowymolecritter\snowymolecritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\sporelingcritter\sporelingcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\squeekcritter\squeekcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\squidcritter\squidcritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\squirrelcritter\squirrelcritter.monstertype 54a55,57 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 66a70,73 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\steambirdcritter\steambirdcritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\steamfishcritter\steamfishcritter.monstertype 60a61,63 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 72a76,79 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\steamspidercritter\steamspidercritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\swarmcritter\swarmcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\swarmflyingcritter\swarmflyingcritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\symbiotecritter\symbiotecritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\tinycrocodilecritter\tinycrocodilecritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\tortoise\tortoise.monstertype 54a55,57 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 66a70,73 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\toucritter\toucritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\toxiccrabcritter\toxiccrabcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\tritrotscritter\tritrotscritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\vulturecritter\vulturecritter.monstertype 58a59,61 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 70a74,77 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\wintercritter\wintercritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\wurmcritter\wurmcritter.monstertype 55a56,58 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 67a71,74 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\critter\yeticritter\yeticritter.monstertype 54a55,57 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 66a70,73 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\allergen\allergen.monstertype 63a64,66 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 75a79,82 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\apexbrainmutant\apexbrainmutant.monstertype 107a108,110 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 119a123,126 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\apexmutant\apexmutant.monstertype 111a112,114 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 123a127,130 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\aviansentry\aviansentry.monstertype 65a66,68 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 77a81,84 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\chesttrapper\chesttrapper.monstertype 62a63,65 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 77a81,84 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\chicken\chicken.monstertype 67a68,70 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 79a83,86 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\cleaningbot\cleaningbot.monstertype 64a65,67 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 79a83,86 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\floki\floki.monstertype 69a70,72 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 81a85,88 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\giftmonster\giftmonster.monstertype 63a64,66 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 78a82,85 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\giftmonster\giftmonstersmall.monstertype 63a64,66 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 78a82,85 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\glitchknight\glitchknight.monstertype 62a63,65 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 74a78,81 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\glitchspider\glitchspider.monstertype 100a101,103 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 115a119,122 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\heckblob\heckblob.monstertype 69a70,72 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 81a85,88 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\ixoling\ixoling.monstertype 67a68,70 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 85a89,92 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\moontant\moontant.monstertype 117a118,120 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 129a133,136 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\pinfriend\pinfriend.monstertype 69a70,72 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 81a85,88 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\po\megapo.monstertype 69a70,72 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 84a88,91 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\po\micropo.monstertype 67a68,70 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 82a86,89 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\po\po.monstertype 68a69,71 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 83a87,90 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\pogolem\pogolem.monstertype 102a103,105 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 117a121,124 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\repairbot\repairbot.monstertype 63a64,66 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 78a82,85 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\robotchicken\robotchicken.monstertype 67a68,70 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 82a86,89 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\serpentdroid\serpentdroid.monstertype 99a100,102 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 120a124,127 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\sewerfly\sewerfly.monstertype 109a110,112 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 124a128,131 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\smallshroom\smallshroom.monstertype 132a133,135 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 144a148,151 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\swarpion\swarpion.monstertype 65a66,68 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 80a84,87 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\toxicfly\toxicfly.monstertype 109a110,112 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 124a128,131 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\dungeon\toxicgolem\toxicgolem.monstertype 67a68,70 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 82a86,89 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\flyers\agrobat\agrobat.animation 26a27,35 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 28,35c37,38 < "hurt" : { < "frames" : 1, < "cycle" : 0.3, < "mode" : "transition", < "transition" : "fly", < "frameProperties" : { < "immediateSound" : [ "/sfx/npc/monsters/batong_flap3.ogg", "", "", "", "/sfx/npc/monsters/batong_flap3.ogg", "", "", "" ] < } --- > "stunned" : { > "frames" : 1 68,69c71,74 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\flyers\agrobat\agrobat.monstertype 122c122 < "body" : "hurt" --- > "damage" : "stunned" 140a141,143 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 152a156,159 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\flyers\batong\batong.animation 19a20,28 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 21c30 < "hurt" : { --- > "stunned" : { 50,51c59,62 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\flyers\batong\batong.monstertype 101c101 < "body" : "hurt" --- > "damage" : "stunned" 119a120,122 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 131a135,138 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\flyers\bobfae\bobfae.animation 24a25,33 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 26,30c35,36 < "hurt" : { < "frames" : 1, < "properties" : { < "particleEmittersOff" : [ "drips" ] < } --- > "stunned" : { > "frames" : 1 53,54c59,62 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\flyers\bobfae\bobfae.monstertype 126c126 < "body" : "hurt" --- > "damage" : "stunned" 144a145,147 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 156a160,163 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\flyers\monopus\monopus.animation 38a39,47 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 40,46c49,50 < "hurt" : { < "frames" : 1, < "cycle" : 0.75, < "mode" : "loop", < "frameProperties" : { < "immediateSound" : [ "/sfx/npc/monsters/batong_flap3.ogg", "", "", "", "/sfx/npc/monsters/batong_flap3.ogg", "", "", "" ] < } --- > "stunned" : { > "frames" : 1 70,74d73 < "hurt" : { < "properties" : { < "image" : ":hurt." < } < }, 82a82,88 > } > } > }, > "damage" : { > "stunned" : { > "properties" : { > "image" : ":hurt." monsters\flyers\monopus\monopus.monstertype 123c123 < "body" : "hurt" --- > "damage" : "stunned" 141a142,144 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 153a157,160 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\flyers\paratail\paratail.monstertype 66a67,69 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 78a82,85 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\flyers\pteropod\pteropod.animation 49a50,66 > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 > }, > "stunned" : { > "frames" : 8, > "cycle" : 0.75, > "mode" : "loop", > "frameProperties" : { > "immediateSound" : [ "", "/sfx/npc/monsters/batong_flap3.ogg", "", "", "", "/sfx/npc/monsters/batong_flap3.ogg", "", "" ] > } > } > } 66,70d82 < "hurt" : { < "properties" : { < "image" : ":hurt." < } < }, 83a96,102 > } > } > }, > "damage" : { > "stunned" : { > "properties" : { > "image" : ":hurt." monsters\flyers\pteropod\pteropod.monstertype 122c122 < "body" : "hurt" --- > "damage" : "stunned" 140a141,143 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 155a159,162 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\flyers\scandroid\scandroid.animation 20a21,29 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 22c31 < "hurt" : { --- > "stunned" : { 56,57c65,68 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { 59c70 < "image" : ":hurt." --- > "image" : ":hurt." monsters\flyers\scandroid\scandroid.monstertype 146c146 < "body" : "hurt" --- > "damage" : "stunned" 164a165,167 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 176a180,183 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\generated\flying\bonebird\bonebird.monstertype 87a88,90 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 99a103,106 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\generated\flying\largeflying\largeflying.monstertype 86a87,89 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 98a102,105 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\generated\flying\minibossflying\minibossflying.monstertype 83a84,86 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 95a99,102 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\generated\flying\minidrone\minidrone.monstertype 87a88,90 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 99a103,106 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\generated\flying\smallflying\smallflying.monstertype 84a85,87 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 96a100,103 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\generated\ground\hugebiped\hugebiped.monstertype 116a117,119 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 128a132,135 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\generated\ground\largebiped\largebiped.monstertype 150a151,153 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 168a172,175 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\generated\ground\largequadruped\largequadruped.monstertype 184a185,187 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 202a206,209 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\generated\ground\minibossbiped\minibossbiped.monstertype 118a119,121 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 130a134,137 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\generated\ground\minibossquadruped\minibossquadruped.monstertype 148a149,151 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 166a170,173 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\generated\ground\smallbiped\smallbiped.monstertype 131a132,134 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 144c147,151 < "health" : { --- > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, > "health" : { monsters\generated\ground\smallbiped\testmonster.monstertype 140a141,143 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 152a156,159 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\generated\ground\smallquadruped\smallquadruped.monstertype 127a128,130 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 139a143,146 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\generated\swimming\largefish\largefish.monstertype 95a96,98 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 107a111,114 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\generated\swimming\smallfish\fish.monstertype 87a88,90 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 99a103,106 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\ghosts\ignome\ignome.animation 35,36c35,42 < }, < "hurt" : { --- > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { 39a46,48 > }, > "stunned" : { > "frames" : 1 73,74c82,85 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\ghosts\ignome\ignome.monstertype 120c120 < "body" : "hurt" --- > "damage" : "stunned" 138a139,141 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 153a157,160 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\ghosts\lumoth\lumoth.animation 20,21c20,27 < }, < "hurt" : { --- > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { 27a34,36 > }, > "stunned" : { > "frames" : 1 50,51c59,62 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\ghosts\lumoth\lumoth.monstertype 96c96 < "body" : "hurt" --- > "damage" : "stunned" 114a115,117 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 129a133,136 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\ghosts\nautileech\nautileech.animation 21a22,30 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 23c32 < "hurt" : { --- > "stunned" : { 52,53c61,64 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\ghosts\nautileech\nautileech.monstertype 87c87 < "body" : "hurt" --- > "damage" : "stunned" 105a106,108 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 120a124,127 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\ghosts\pyromantle\pyromantle.animation 19a20,28 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 21c30 < "hurt" : { --- > "stunned" : { 50,51c59,62 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\ghosts\pyromantle\pyromantle.monstertype 125c125 < "body" : "hurt" --- > "damage" : "stunned" 143a144,146 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 167a171,174 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\ghosts\skimbus\skimbus.animation 25a26,34 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 27,30c36,37 < "hurt" : { < "frames" : 8, < "cycle" : 0.4, < "mode" : "loop" --- > "stunned" : { > "frames" : 1 64,65c71,74 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\ghosts\skimbus\skimbus.monstertype 122c122 < "body" : "hurt" --- > "damage" : "stunned" 140a141,143 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 155a159,162 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\ghosts\spookit\spookit.animation 23a24,32 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 25,29c34,35 < "hurt" : { < "frames" : 1, < "properties" : { < "persistentSound" : "/sfx/npc/monsters/spookit_fly_loop.ogg" < } --- > "stunned" : { > "frames" : 1 57,58c63,66 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\ghosts\spookit\spookit.monstertype 116c116 < "body" : "hurt" --- > "damage" : "stunned" 134a135,137 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 158a162,165 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\ghosts\squeem\squeem.animation 16a17,25 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 18c27 < "hurt" : { --- > "stunned" : { 42,43c51,54 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\ghosts\squeem\squeem.monstertype 87c87 < "body" : "hurt" --- > "damage" : "stunned" 105a106,108 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 117a121,124 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\ghosts\wisper\wisper.animation 24a25,33 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 26c35 < "hurt" : { --- > "stunned" : { 60,61c69,72 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\ghosts\wisper\wisper.monstertype 121c121 < "body" : "hurt" --- > "damage" : "stunned" 139a140,142 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 154a158,161 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\pets\bunny\petbunny.monstertype 155a156,158 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 167a171,174 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\pets\cat\petcat.monstertype 155a156,158 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 167a171,174 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\pets\crasberry\crasberry.monstertype 158a159,161 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 170a174,177 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\pets\orbis\petorbis.monstertype 156a157,159 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 168a172,175 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\pets\petball\petball.monstertype 75a76,78 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 87a91,94 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\pets\piglett\piglett.monstertype 162a163,165 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 174a178,181 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\pets\snake\petsnake.monstertype 155a156,158 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 167a171,174 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\pets\snugget\snugget.monstertype 158a159,161 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 170a174,177 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\pets\weasel\petweasel.monstertype 158a159,161 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 170a174,177 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\adultpoptop\adultpoptop.animation 76a77,85 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 78c87 < "hurt" : { --- > "stunned" : { 143,144c152,155 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\adultpoptop\adultpoptop.monstertype 139c139 < "body" : "hurt" --- > "damage" : "stunned" 157a158,160 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 169a173,176 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\anglure\anglure.animation 30a31,39 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 32c41 < "hurt" : { --- > "stunned" : { 71,72c80,83 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\anglure\anglure.monstertype 114c114 < "body" : "hurt" --- > "damage" : "stunned" 132a133,135 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 144a148,151 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\bobot\bobot.animation 26a27,35 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 28c37 < "hurt" : { --- > "stunned" : { 67,68c76,79 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\bobot\bobot.monstertype 134c134 < "body" : "hurt" --- > "damage" : "stunned" 152a153,155 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 167a171,174 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\bulbop\bulbop.animation 34a35,43 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 36,38c45,46 < "hurt" : { < "frames" : 1, < "cycle" : 0.25 --- > "stunned" : { > "frames" : 1 76,77c84,87 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\bulbop\bulbop.monstertype 89c89 < "body" : "hurt" --- > "damage" : "stunned" 107a108,110 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 119a123,126 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\capricoat\capricoat.animation 37a38,46 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 39c48 < "hurt" : { --- > "stunned" : { 88,89c97,100 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\capricoat\capricoat.monstertype 111c111 < "body" : "hurt" --- > "damage" : "stunned" 129a130,132 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 144a148,151 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\crabcano\crabcano.animation 31a32,40 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 33c42 < "hurt" : { --- > "stunned" : { 67,68c76,79 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\crabcano\crabcano.monstertype 116c116 < "body" : "hurt" --- > "damage" : "stunned" 134a135,137 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 149a153,156 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\crutter\crutter.animation 22a23,31 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 24c33 < "hurt" : { --- > "stunned" : { 58,59c67,70 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\crutter\crutter.monstertype 112c112 < "body" : "hurt" --- > "damage" : "stunned" 130a131,133 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 145a149,152 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\fennix\fennix.animation 32a33,41 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 34c43 < "hurt" : { --- > "stunned" : { 78,79c87,90 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\fennix\fennix.monstertype 121c121 < "body" : "hurt" --- > "damage" : "stunned" 139a140,142 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 154a158,161 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\gleap\gleap.animation 40a41,49 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 42,44c51,52 < "hurt" : { < "frames" : 1, < "cycle" : 0.25 --- > "stunned" : { > "frames" : 1 87,88c95,98 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\gleap\gleap.monstertype 89c89 < "body" : "hurt" --- > "damage" : "stunned" 107a108,110 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 119a123,126 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\hemogoblin\hemogoblin.animation 31a32,40 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 33c42 < "hurt" : { --- > "stunned" : { 72,73c81,84 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\hemogoblin\hemogoblin.monstertype 149a150,152 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 161a165,168 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\hemogoblinbutt\hemogoblinbutt.animation 26a27,35 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 28c37 < "hurt" : { --- > "stunned" : { 62,63c71,74 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\hemogoblinbutt\hemogoblinbutt.monstertype 128c128 < "body" : "hurt" --- > "damage" : "stunned" 146a147,149 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 158a162,165 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\hemogoblinhead\hemogoblinhead.animation 26a27,35 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 28c37 < "hurt" : { --- > "stunned" : { 62,63c71,74 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\hemogoblinhead\hemogoblinhead.monstertype 127c127 < "body" : "hurt" --- > "damage" : "stunned" 145a146,148 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 157a161,164 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\hypnare\hypnare.animation 46a47,55 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 48c57 < "hurt" : { --- > "stunned" : { 97,98c106,109 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\hypnare\hypnare.monstertype 127c127 < "body" : "hurt" --- > "damage" : "stunned" 145a146,148 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 157a161,164 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\kingnutmidgeling\kingnutmidgeling.animation 40a41,49 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 42,44c51,52 < "hurt" : { < "frames" : 1, < "cycle" : 0.25 --- > "stunned" : { > "frames" : 1 87,88c95,98 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\kingnutmidgeling\kingnutmidgeling.monstertype 99c99 < "body" : "hurt" --- > "damage" : "stunned" 117a118,120 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 129a133,136 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\lilodon\lilodon.animation 29a30,38 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 31c40 < "hurt" : { --- > "stunned" : { 65,66c74,77 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\lilodon\lilodon.monstertype 96c96 < "body" : "hurt" --- > "damage" : "stunned" 114a115,117 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 126a130,133 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\mandraflora\mandraflora.animation 61a62,70 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 63c72 < "hurt" : { --- > "stunned" : { 112,113c121,124 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\mandraflora\mandraflora.monstertype 112c112 < "body" : "hurt" --- > "damage" : "stunned" 130a131,133 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 142a146,149 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\miasmop\miasmop.animation 26a27,35 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 28c37 < "hurt" : { --- > "stunned" : { 67,68c76,79 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\miasmop\miasmop.monstertype 121c121 < "body" : "hurt" --- > "damage" : "stunned" 139a140,142 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 154a158,161 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\narfin\narfin.animation 43a44,52 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 45c54 < "hurt" : { --- > "stunned" : { 94,95c103,106 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\narfin\narfin.monstertype 113c113 < "body" : "hurt" --- > "damage" : "stunned" 131a132,134 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 146a150,153 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\nutmidge\nutmidge.animation 48c48,57 < "hurt" : { --- > "break" : { > "frames" : 1 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { 51c60 < "break" : { --- > "stunned" : { 101,105d109 < "hurt" : { < "properties" : { < "image" : ":hurt." < } < }, 108a113,119 > } > } > }, > "damage" : { > "stunned" : { > "properties" : { > "image" : ":hurt." monsters\walkers\nutmidge\nutmidge.monstertype 159a160,162 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 171a175,178 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\nutmidgeling\nutmidgeling.animation 40a41,49 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 42,44c51,52 < "hurt" : { < "frames" : 1, < "cycle" : 0.25 --- > "stunned" : { > "frames" : 1 87,88c95,98 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\nutmidgeling\nutmidgeling.monstertype 99c99 < "body" : "hurt" --- > "damage" : "stunned" 117a118,120 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 129a133,136 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\oogler\oogler.animation 62a63,71 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 64c73 < "hurt" : { --- > "stunned" : { 113,114c122,125 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\oogler\oogler.monstertype 116c116 < "body" : "hurt" --- > "damage" : "stunned" 134a135,137 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 146a150,153 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\orbide\orbide.animation 48,56d47 < "hurt" : { < "frames" : 1 < /* < "properties" : { < "persistentSound" : "/sfx/npc/monsters/orbide_creepy_loop.ogg", < "persistentSoundStopTime" : 0.4 < } < */ < }, 115a107,118 > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 > }, > "stunned" : { > "frames" : 1 > } > } 183,184c186,189 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\orbide\orbide.monstertype 56c56 < "body" : "hurt" --- > "damage" : "stunned" 74a75,77 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 86a90,93 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\peblit\peblit.animation 27,29d26 < "hurt" : { < "frames" : 1 < }, 44a42,53 > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 > }, > "stunned" : { > "frames" : 1 > } > } 90,91c99,102 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\peblit\peblit.monstertype 134c134 < "body" : "hurt" --- > "damage" : "stunned" 152a153,155 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 164a168,171 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\petricub\petricub.animation 51a52,60 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 53c62 < "hurt" : { --- > "stunned" : { 102,103c111,114 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\petricub\petricub.monstertype 114c114 < "body" : "hurt" --- > "damage" : "stunned" 132a133,135 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 144a148,151 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\pipkin\pipkin.animation 47a48,56 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 49c58 < "hurt" : { --- > "stunned" : { 98,99c107,110 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\pipkin\pipkin.monstertype 119c119 < "body" : "hurt" --- > "damage" : "stunned" 137a138,140 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 155a159,162 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\poptop\poptop.animation 77a78,86 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 79,83c88,89 < "hurt" : { < "frames" : 1, < "properties" : { < "particleEmittersOff" : [ "music" ] < } --- > "stunned" : { > "frames" : 1 141,142c147,150 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\poptop\poptop.monstertype 125c125 < "body" : "hurt" --- > "damage" : "stunned" 143a144,146 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 155a159,162 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\punchy\punchy.animation 23a24,32 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 25c34 < "hurt" : { --- > "stunned" : { 54,55c63,66 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\punchy\punchy.monstertype 78c78 < "body" : "hurt" --- > "damage" : "stunned" 96a97,99 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 108a112,115 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\quagmutt\quagmutt.animation 40a41,49 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 42c51 < "hurt" : { --- > "stunned" : { 91,92c100,103 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\quagmutt\quagmutt.monstertype 113c113 < "body" : "hurt" --- > "damage" : "stunned" 131a132,134 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 143a147,150 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\ringram\ringram.animation 51a52,60 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 53c62 < "hurt" : { --- > "stunned" : { 102,103c111,114 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\ringram\ringram.monstertype 111c111 < "body" : "hurt" --- > "damage" : "stunned" 129a130,132 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 141a145,148 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\scaveran\scaveran.animation 38,40d37 < "hurt" : { < "frames" : 1 < }, 60a58,69 > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 > }, > "stunned" : { > "frames" : 1 > } > } 111,112c120,123 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\scaveran\scaveran.monstertype 128c128 < "body" : "hurt" --- > "damage" : "stunned" 146a147,149 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 158a162,165 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\smoglin\smoglin.animation 37a38,46 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 39c48 < "hurt" : { --- > "stunned" : { 88,89c97,100 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\smoglin\smoglin.monstertype 123c123 < "body" : "hurt" --- > "damage" : "stunned" 141a142,144 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 156a160,163 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\snaunt\snaunt.animation 31a32,40 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 33c42 < "hurt" : { --- > "stunned" : { 72,73c81,84 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\snaunt\snaunt.monstertype 121c121 < "body" : "hurt" --- > "damage" : "stunned" 139a140,142 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 154a158,161 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\sporgus\sporgus.animation 18a19,27 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 20c29 < "hurt" : { --- > "stunned" : { 49,50c58,61 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\sporgus\sporgus.monstertype 119c119 < "body" : "hurt" --- > "damage" : "stunned" 137a138,140 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 152a156,159 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\taroni\taroni.animation 33a34,42 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 35c44 < "hurt" : { --- > "stunned" : { 79,80c88,91 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\taroni\taroni.monstertype 54c54 < "body" : "hurt" --- > "damage" : "stunned" 72a73,75 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 84a88,91 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\toumingo\toumingo.animation 76a77,85 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 78,81c87,88 < "hurt" : { < "frames" : 2, < "cycle" : 0.2, < "mode" : "loop" --- > "stunned" : { > "frames" : 1 154,155c161,164 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\toumingo\toumingo.monstertype 121c121 < "body" : "hurt" --- > "damage" : "stunned" 139a140,142 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 151a155,158 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\voltip\voltip.animation 33a34,42 > } > } > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 35c44 < "hurt" : { --- > "stunned" : { 79,80c88,91 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { monsters\walkers\voltip\voltip.monstertype 121c121 < "body" : "hurt" --- > "damage" : "stunned" 139a140,142 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 157a161,164 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, monsters\walkers\yokat\yokat.animation 24,26d23 < }, < "hurt" : { < "frames" : 1 52a50,61 > }, > "damage" : { > "priority" : 3, > "default" : "none", > "states" : { > "none" : { > "frames" : 1 > }, > "stunned" : { > "frames" : 1 > } > } 96,97c105,108 < }, < "hurt" : { --- > } > }, > "damage" : { > "stunned" : { 100,102d110 < }, < "frameProperties" : { < "offset" : [ [0.0, 0.25] ] 116,117c124,125 < "body" : { < "hurt" : { --- > "damage" : { > "stunned" : { monsters\walkers\yokat\yokat.monstertype 115c115 < "body" : "hurt" --- > "damage" : "stunned" 133a134,136 > "knockbackStunTime" : { > "baseValue" : 0.25 > }, 145a149,152 > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 > }, npcs\base.npctype 883a884,886 > }, > "knockbackStunTime" : { > "baseValue" : 0.25 891a895,898 > }, > "stunned" : { > "deltaValue" : -1.0, > "initialValue" : 0.0 npcs\bmain.lua 58a59,63 > if status.resourcePositive("stunned") then > mcontroller.clearControls() > return > end > npcs\merchant.npctype 16a17 > "pools" : ["normal", "merchant"], objects\ancient\powerbooster\powerbooster.object 10,15c10,15 < // "apexDescription" : "-todo-", < // "avianDescription" : "-todo-", < // "floranDescription" : "-todo-", < // "glitchDescription" : "-todo-", < // "humanDescription" : "-todo-", < // "hylotlDescription" : "-todo-", --- > "apexDescription" : "This machine appears to boost the power of the subject exposed to the gas.", > "avianDescription" : "The gas has a pungent odor, it makes me feel strangely energetic.", > "floranDescription" : "Gasss makes Floran feel strong!", > "glitchDescription" : "Suspicious. This device appears to have strength giving properties.", > "humanDescription" : "One whiff of this gas is enough to make me feel strong.", > "hylotlDescription" : "A foul smelling gas that strengthens your body and mind.", objects\ancient\speedbooster\speedbooster.object 10,15c10,15 < // "apexDescription" : "-todo-", < // "avianDescription" : "-todo-", < // "floranDescription" : "-todo-", < // "glitchDescription" : "-todo-", < // "humanDescription" : "-todo-", < // "hylotlDescription" : "-todo-", --- > "apexDescription" : "A clever device, it emits a gas capable of increasing my physical speed.", > "avianDescription" : "Sweet smelling green gas puts a zip in my step.", > "floranDescription" : "Green gas makes Floran run faster.", > "glitchDescription" : "Hopeful. The gas from this device has a sweet smell.", > "humanDescription" : "This gas smells fresh and sweet. What does it do?", > "hylotlDescription" : "The beneficial properties of this gas are related to physical speed enhancement.", objects\avian\fireemblem\fireemblem.object 12,17c12,17 < "apexDescription" : "-todo-", < "avianDescription" : "-todo-", < "floranDescription" : "-todo-", < "glitchDescription" : "-todo-", < "humanDescription" : "-todo-", < "hylotlDescription" : "-todo-", --- > "apexDescription" : "A symbol used to warn of fire.", > "avianDescription" : "The symbol for fire.", > "floranDescription" : "Flamess! Floran's leasst favourite thing.", > "glitchDescription" : "Cautious. A symbol to warn of fire ahead.", > "humanDescription" : "That symbol must mean fire.", > "hylotlDescription" : "A swirling flame symbol, it usually indicates fire ahead.", objects\biome\alien\alienglowplant1\alienglowplant1.object 10,15c10,15 < "apexDescription" : "todo", < "avianDescription" : "todo", < "floranDescription" : "todo", < "glitchDescription" : "todo", < "humanDescription" : "todo", < "hylotlDescription" : "todo", --- > //"apexDescription" : "todo", > //"avianDescription" : "todo", > //"floranDescription" : "todo", > //"glitchDescription" : "todo", > //"humanDescription" : "todo", > //"hylotlDescription" : "todo", objects\biome\rainbowwood\rainbowwoodbed\rainbowwoodbed.object 12,17c12,18 < "apexDescription" : "todo", < "avianDescription" : "todo", < "floranDescription" : "todo", < "glitchDescription" : "todo", < "humanDescription" : "todo", < "hylotlDescription" : "todo", --- > "apexDescription" : "This bed is only suitable for a child's room.", > "avianDescription" : "A bed with a rainbow on it! Built to inspire happy dreams.", > "floranDescription" : "Bed is bright and colourful.", > "glitchDescription" : "Amused. This bed has a childlike appeal.", > "humanDescription" : "Waking up under a rainbow would be fun, I think.", > "hylotlDescription" : "Our inner child tends to surface when it comes to rainbows.", > "novakidDescription" : "Sleeping under a rainbow is bound to bring you luck.", objects\biome\rainbowwood\rainbowwoodsafe\rainbowwoodsafe.object 14c14 < /* --- > 22c22 < */ --- > objects\biome\rainbowwood\rainbowwoodtable\rainbowwoodtable.object 11,18c11,19 < /* < "apexDescription" : "todo.", < "avianDescription" : "todo", < "floranDescription" : "todo", < "glitchDescription" : "todo", < "humanDescription" : "todo", < "hylotlDescription" : "todo", < */ --- > > "apexDescription" : "The kind of table you would sit at to write whimsical poetry.", > "avianDescription" : "This table shows off the rainbow woodgrain nicely.", > "floranDescription" : "Floran likes to count stripess in the wood.", > "glitchDescription" : "Elated. look at the colourful stripes!", > "humanDescription" : "This wood looks great whatever form it's in.", > "hylotlDescription" : "Owning a table like this would brighten anyone's day.", > "novakidDescription" : "This table would give anyone a cheerier outlook on life.", > objects\biome\slime\ceilingslime1\ceilingslime1.object 9,10c9,10 < "description" : "This slime is falling.", < "shortdescription" : "Slime Fall", --- > "description" : "A glob of dripping slime.", > "shortdescription" : "Dripping Slime", 13,18c13,19 < "apexDescription" : "todo", < "avianDescription" : "todo", < "floranDescription" : "todo", < "glitchDescription" : "todo", < "humanDescription" : "todo", < "hylotlDescription" : "todo", --- > "apexDescription" : "A slime deposit. It appears to be dripping.", > "avianDescription" : "A disgusting slime ball.", > "floranDescription" : "Floran wants to avoid touching sssslime.", > "glitchDescription" : "Disgusted. A viscous slime deposit.", > "humanDescription" : "Slime is so gross.", > "hylotlDescription" : "Slime isn't so bad when your skin is already slimy.", > "novakidDescription" : "Oozing slime.", objects\biome\slime\ceilingslime2\ceilingslime2.object 9,10c9,10 < "description" : "This slime is falling.", < "shortdescription" : "Slime Fall", --- > "description" : "A glob of dripping slime.", > "shortdescription" : "Dripping Slime", 13,18c13,19 < "apexDescription" : "todo", < "avianDescription" : "todo", < "floranDescription" : "todo", < "glitchDescription" : "todo", < "humanDescription" : "todo", < "hylotlDescription" : "todo", --- > "apexDescription" : "A slime deposit. It appears to be dripping.", > "avianDescription" : "A disgusting slime ball.", > "floranDescription" : "Floran wants to avoid touching sssslime.", > "glitchDescription" : "Disgusted. A viscous slime deposit.", > "humanDescription" : "Slime is so gross.", > "hylotlDescription" : "Slime isn't so bad when your skin is already slimy.", > "novakidDescription" : "Oozing slime.", objects\biome\slime\ceilingslime3\ceilingslime3.object 9,10c9,10 < "description" : "This slime is falling.", < "shortdescription" : "Slime Fall", --- > "description" : "A glob of dripping slime.", > "shortdescription" : "Dripping Slime", 13,18c13,19 < "apexDescription" : "todo", < "avianDescription" : "todo", < "floranDescription" : "todo", < "glitchDescription" : "todo", < "humanDescription" : "todo", < "hylotlDescription" : "todo", --- > "apexDescription" : "A slime deposit. It appears to be dripping.", > "avianDescription" : "A disgusting slime ball.", > "floranDescription" : "Floran wants to avoid touching sssslime.", > "glitchDescription" : "Disgusted. A viscous slime deposit.", > "humanDescription" : "Slime is so gross.", > "hylotlDescription" : "Slime isn't so bad when your skin is already slimy.", > "novakidDescription" : "Oozing slime.", objects\biome\slime\slimechest\slimehide.object 11c11 < "description" : "A slime ball, you can hide things inside.", --- > "description" : "A cheast made of a thick slime substance.", 15,20c15,21 < "apexDescription" : "todo", < "avianDescription" : "todo", < "floranDescription" : "todo", < "glitchDescription" : "todo", < "humanDescription" : "todo", < "hylotlDescription" : "todo", --- > "apexDescription" : "I'm wary of how useful a translucent chest is.", > "avianDescription" : "I can see the chest contents through the slime. That's neat!", > "floranDescription" : "A see-through chest is not very sssneaky.", > "glitchDescription" : "Surprised. I can see this chest's contents through the slime casing.", > "humanDescription" : "If I look closely, I can see right through the slime.", > "hylotlDescription" : "This chest looks as though it could be made of green glass.", > "novakidDescription" : "What's the use of a chest you can see into without opening it?", objects\biome\spring\springchest\springchest.object 11c11 < "description" : "A chest with a spring theme!", --- > "description" : "A chest with a spring flower latch.", 14,21c14,21 < /*todo < "apexDescription" : "-todo-", < "avianDescription" : "A mushroom chest. Easy to open.", < "floranDescription" : "Floran loot chest. Floran find goodsss.", < "glitchDescription" : "Analysis. Opening this chest releases invisible spores. Long term effects are unknown.", < "humanDescription" : "A cute, squishy mushroom chest.", < "hylotlDescription" : "A ludicrous idea for a chest.", < */ --- > > "apexDescription" : "A pretty chest like that is probably a trap.", > "avianDescription" : "A pretty flower chest!", > "floranDescription" : "The besst chest a Floran can possess.", > "glitchDescription" : "Cautious. A chest with an alluring flower. It may be a trap.", > "humanDescription" : "A flower chest, how sweet.", > "hylotlDescription" : "An average looking chest, adorned with the natural beauty of nature.", > projectiles\physics.config 153a154,167 > "worm" : { > "mass" : 1.0, > "gravityMultiplier" : 0.5, > "bounceFactor" : 0.7, > "maxMovementPerStep" : 0.4, > > "collisionPoly" : [ [-0.25, -0.25], [0.25, -0.25], [0.25, 0.25], [-0.25, 0.25] ], > "ignorePlatformCollision" : true, > > "airFriction" : 0.0, > "liquidFriction" : 0.0, > "groundFriction" : 0.0 > }, > projectiles\activeitems\boomerang\boomerang.projectile 24,28c24 < "script" : "boomerangprojectile.lua", < < "controlForce" : 80, < "pickupDistance" : 1.0, < "snapDistance" : 4.0 --- > "script" : "boomerangprojectile.lua" projectiles\activeitems\boomerang\boomerangprojectile.lua 9a10 > self.ignoreTerrain = config.configParameter("ignoreTerrain") 14a16,17 > if self.ignoreTerrain then mcontroller.applyParameters({collisionEnabled=false}) end > 17c20 < if mcontroller.isColliding() or vec2.mag(mcontroller.velocity()) < 0.2 then --- > if (not self.ignoreTerrain and mcontroller.isColliding()) or vec2.mag(mcontroller.velocity()) < 0.2 then projectiles\explosions\elementalexplosions\electricplasmaexplosion.projectile 11,13d10 < "statusEffects" : [ < "damagefreeze" < ], projectiles\explosions\elementalexplosions\fireplasmaexplosion.projectile 11,13d10 < "statusEffects" : [ < "damagefreeze" < ], projectiles\explosions\elementalexplosions\iceplasmaexplosion.projectile 11,13d10 < "statusEffects" : [ < "damagefreeze" < ], projectiles\explosions\elementalexplosions\poisonplasmaexplosion.projectile 11,13d10 < "statusEffects" : [ < "damagefreeze" < ], projectiles\explosions\regularexplosion2\electricexplosionfreeze.config 7c7,10 < "type" : "electricexplosionfreeze" --- > "type" : "electricexplosionfreeze", > "config" : { > "statusEffects" : [ "damagefreeze" ] > } projectiles\explosions\regularexplosion2\electricexplosionfreezeuniversal.config 7c7,10 < "type" : "electricexplosionfreezeuniversal" --- > "type" : "electricexplosionfreezeuniversal", > "config" : { > "statusEffects" : [ "damagefreeze" ] > } projectiles\explosions\regularexplosion2\fireexplosionfreeze.config 7c7,10 < "type" : "fireexplosionfreeze" --- > "type" : "fireexplosionfreeze", > "config" : { > "statusEffects" : [ "damagefreeze" ] > } projectiles\explosions\regularexplosion2\fireexplosionfreezeuniversal.config 7c7,10 < "type" : "fireexplosionfreezeuniversal" --- > "type" : "fireexplosionfreezeuniversal", > "config" : { > "statusEffects" : [ "damagefreeze" ] > } projectiles\explosions\regularexplosion2\iceexplosionfreeze.config 7c7,10 < "type" : "iceexplosionfreeze" --- > "type" : "iceexplosionfreeze", > "config" : { > "statusEffects" : [ "damagefreeze" ] > } projectiles\explosions\regularexplosion2\iceexplosionfreezeuniversal.config 7c7,10 < "type" : "iceexplosionfreezeuniversal" --- > "type" : "iceexplosionfreezeuniversal", > "config" : { > "statusEffects" : [ "damagefreeze" ] > } projectiles\explosions\regularexplosion2\poisonexplosionfreeze.config 7c7,10 < "type" : "poisonexplosionfreeze" --- > "type" : "poisonexplosionfreeze", > "config" : { > "statusEffects" : [ "damagefreeze" ] > } projectiles\explosions\regularexplosion2\poisonexplosionfreezeuniversal.config 7c7,10 < "type" : "poisonexplosionfreezeuniversal" --- > "type" : "poisonexplosionfreezeuniversal", > "config" : { > "statusEffects" : [ "damagefreeze" ] > } projectiles\swoosh\broadsword\travelingswoosh\electrictravelingswoosh.projectile 17c17 < "damagefreeze" --- > "damagefreeze", "paralysis" projectiles\swoosh\broadsword\travelingswoosh\firetravelingswoosh.projectile 18c18 < "damagefreeze" --- > "damagefreeze", "burning" projectiles\swoosh\broadsword\travelingswoosh\icetravelingswoosh.projectile 17c17 < "damagefreeze" --- > "damagefreeze", "frostslow" projectiles\swoosh\broadsword\travelingswoosh\poisontravelingswoosh.projectile 19c19 < "damagefreeze" --- > "damagefreeze", "weakpoison" quests\generated\pools\hatadjectives.config 25c25 < ["old fashioned", "phrygiancaphead"], --- > ["creative", "phrygiancaphead"], 29c29 < ["retro", "m1helmethead"], --- > ["militant", "m1helmethead"], quests\generated\pools\pools.config 49c49,50 < "poolFile" : "/quests/generated/pools/specieshats.config" --- > "poolFile" : "/quests/generated/pools/specieshats.config", > "static" : true 53c54,55 < "poolFile" : "/quests/generated/pools/specieshelmets.config" --- > "poolFile" : "/quests/generated/pools/specieshelmets.config", > "static" : true 61a64,67 > }, > "merchantTrade" : { > "base" : "FakeCraftingPoolRelation", > "poolFile" : "/quests/generated/pools/merchanttrades.config" quests\generated\templates\bribe.questtemplate 40c40 < "^cyan;Observation. I've been looking for a reliable way to indebt to myself.", --- > "^cyan;Observational. I've been looking for a reliable way to indebt to myself.", quests\generated\templates\hat.questtemplate 43a44,51 > "floran" : [ > "^cyan;Floran wantsss to look . Floran hasss plan for this.", > "^cyan;Floran would be more popular if Floran looked ." > ], > "glitch" : [ > "^cyan;Observational. I've been looking for a reliable way to indebt to myself.", > "^cyan;Manipulative. I'd like to act in my favour. Help me sweeten them up." > ], 50a59,66 > "floran" : [ > "Finally, Floran needs you to ^green;deliver ^orange;^green; to ^orange;^white; ssso they can make Floran ^orange;thing to wear.^white; Hurry!", > "Floran so close to sssuccess! Floran needs you to ^green;take the ^orange;^green; to ^orange;^white; so they can make Floran ^orange;thing to wear." > ], > "glitch" : [ > "Pleased. All you have to do now is ask ^orange;^white; to make my new ^orange;headwear.^white; Could you ^green;deliver the ^orange;^green; to them?", > "Patient. Finally, can you ^green;deliver the ^orange;^green; to ^orange;^white;, so they can craft me some ^orange;headwear?" > ], 58a75,82 > "floran" : [ > "Sssuccess! Don't you think Floran looks now? Thanksss for your help!", > "Floran looks now! Thisss will help Floran in future. Thanksss for your help!" > ], > "glitch" : [ > "Appreciative. Thanks to you, I definitely look !", > "Delighted. This new look really makes me look , don't you think? Thank you for your help." > ], quests\generated\templates\helmet.questtemplate 38c38,39 < "'s need to stand out" --- > "'s need to stand out", > ", the guard" 41a43,50 > "floran" : [ > "^cyan;Floran wantsss to be more memorable guard! Can you help Floran look ?", > "^cyan;Floran needs to look to stand out from other huntersss! Floran has plan..." > ], > "glitch" : [ > "^cyan;Eager. A Knight like me should stand out from those around me! I think I know how to make it happen...", > "^cyan;A Knight like me should look ! I know just what to do..." > ], 43c52,53 < "^cyan;I want to stand out as a guard! Will you help me find something that makes me look ?" --- > "^cyan;I want to stand out as a guard! Will you help me find something that makes me look ?", > "^cyan;Guards like me need to stand out! Can you help me look ?" 47a58,65 > "floran" : [ > "All that's left isss to ^green;take ^orange;^green; to ^white; so they can make Floran a ^orange;thing to wear.^white; Hurry!", > "Now Floran needs you to^green; take ^orange;^green; to ^orange;.^white; They can make ^orange;something for Floran to wear!" > ], > "glitch" : [ > "Confident. All that is left is to deliver the ^orange;^green; to ^orange;^white;, so they can craft me ^orange;something to wear.", > "Eager. Can you take the ^orange;^green; to ^orange;,^white; so they can make me ^orange;something to wear?" > ], 49c67,68 < "Next run over and have ^orange;^white; assemble us a custom ^orange;helmet.^white; Just ^green;mention my name, and give them our ^orange;^white;." --- > "Next run over and have ^orange;^white; assemble us some ^orange;custom gear.^white; Just ^green;mention my name, and give them our ^orange;^white;.", > "Finally, ^green;deliver our ^orange;^green; to ^orange;^white; and ^green;ask them to make me some ^orange;custom gear^white;. I'm sure they have the skills to do it!" 54a74,81 > "floran" : [ > "Now Floran looks , Floran can be legendary hunter! Thankss for your help.", > "Doesn't Floran look now? Thanksss for your help!" > ], > "glitch" : [ > "Impressed. I really look now, don't I? Thank you for all your help.", > "Pleased. Now that I look , our foes will think twice before challenging me!" > ], 56c83,84 < "What do you think? Does looking make me stand out more?" --- > "What do you think? Does looking make me stand out more?", > "Thanks! No-one will mess with me now I look !" 62c90,91 < "I was unable to help get something new to wear. I like how looks without it better." --- > "I was unable to help get something new to wear. I like how looks without it better.", > "I failed to help get a new look. They look fine as they are." scripts\spawnpoint.lua 3c3 < local function makeSpawnRect(x, y, rectWidth, rectHeight) --- > function makeSpawnRect(x, y, rectWidth, rectHeight) 24a25,38 > end > > function randomPositionInPoly(poly, offset) > local boundBox = util.boundBox(poly) > local rangeX = boundBox[3] - boundBox[1] - offset[1] * 2 > assert(rangeX >= 0) > local x = math.random() * rangeX + boundBox[1] + offset[1] > local y = boundBox[2] + offset[2] > return {x, y} > end > > function makeSpawnPoly(x, y, rectWidth, rectHeight) > assert(rectWidth and rectHeight) > return {{x-rectWidth/2, y}, {x+rectWidth/2, y}, {x+rectWidth/2, y+rectHeight}, {x-rectWidth/2, y+rectHeight}} scripts\tenant.lua 44c44,48 < itemSlots = storage.itemSlots --- > itemSlots = storage.itemSlots, > relationships = storage.relationships, > criminal = storage.criminal, > stolen = storage.stolen, > extraMerchantItems = storage.extraMerchantItems scripts\util.lua 287a288,294 > function generateSeed() > -- Although math.random is documented as supporting ints, it doesn't actually > -- return Lua's new 64-bit integer type. So if you provide a range larger than > -- 0 - 2^31 it stops being random. > return math.random(0, 2^31) > end > 529c536 < end \ No newline at end of file --- > end scripts\actions\merchant.lua 0a1,2 > require("/scripts/util.lua") > 57a60,64 > -- Add the items that have been earned via completing quests for the merchant > for _,item in pairs(storage.extraMerchantItems or {}) do > table.insert(selectedItems, {item = item}) > end > 94a102,126 > end > > -- param item > function addTradableItem(args, output) > args = parseArgs(args, { > item = nil > }) > if args.item == nil then return false end > local itemDescriptor = BData:getTable(args.item) > if not itemDescriptor then return false end > > storage.extraMerchantItems = storage.extraMerchantItems or {} > for _,item in pairs(storage.extraMerchantItems) do > if compare(item, itemDescriptor) then > return true > end > end > table.insert(storage.extraMerchantItems, itemDescriptor) > self.tradingConfig = buildTradingConfig() > > return true > end > > function countExtraMerchantItems() > return #(storage.extraMerchantItems or {}) scripts\actions\movement.lua 1a2 > require "/scripts/pathutil.lua" 64c65,66 < local position = vec2.add(mcontroller.position(), {direction, 0}) --- > local position = mcontroller.position() > position = {position[1], math.ceil(position[2]) - (bounds[2] % 1)} -- align bottom of the bound box with the ground 66d67 < local groundRect = {bounds[1] - 0.2, bounds[2] - 1.0, bounds[3] + 0.2, bounds[2]} 67a69 > -- Check for walls 69,71c71,72 < local newPos = {position[1], position[2] + yDir} < if world.rectTileCollision(rect.translate(groundRect, newPos), {"Null", "Block", "Dynamic", "Platform"}) < and not world.polyCollision(poly.translate(collisionPoly, newPos)) then --- > --util.debugRect(rect.translate(bounds, vec2.add(position, {direction * 0.2, yDir})), "yellow") > if not world.rectTileCollision(rect.translate(bounds, vec2.add(position, {direction * 0.2, yDir}))) then 76c77,97 < --- > > -- Check for ground for the entire length of the bound box > -- Makes it so the entity can stop before a ledge > if move then > local boundWidth = bounds[3] - bounds[1] > local groundRect = rect.translate({bounds[1], bounds[2] - 1.0, bounds[3], bounds[2]}, position) > local y = 0 > for x = boundWidth % 1, math.ceil(boundWidth) do > move = false > for _,yDir in pairs({0, -1, 1}) do > --util.debugRect(rect.translate(groundRect, {direction * x, y + yDir}), "blue") > if world.rectTileCollision(rect.translate(groundRect, {direction * x, y + yDir})) then > move = true > y = y + yDir > break > end > end > if move == false then break end > end > end > scripts\actions\quests.lua 131c131 < function hasQuest(args, output) --- > function isGivingQuest(args, output) 133a134,138 > end > > function hasQuest(args, output) > args = parseArgs(args, { }) > return self.quest:hasQuest() scripts\actions\status.lua 54a55,80 > end > > -- param category > -- param stat > -- param amount > function addStatModifier(args, output) > args = parseArgs(args, { > category = "default", > stat = nil, > amount = nil > }) > > local amount = BData:getNumber(args.amount) > if args.stat == nil or amount == nil then return false end > > status.addPersistentEffect(args.category, {stat = args.stat, amount = amount}) > return true > end > > -- param category > function clearPersistentEffects(args, output) > args = parseArgs(args, { > category = "default" > }) > > status.setPersistentEffects(args.category, {}) scripts\quest\manager.lua 271c271 < self:sendToParticipants("unreserve") --- > self:sendToParticipants("unreserve", self.data.arc) scripts\quest\participant.lua 36a37,40 > function QuestParticipant:hasQuest() > return not isEmpty(self.data.quests) > end > 211c215 < function QuestParticipant:unreserveHandler(stagehand) --- > function QuestParticipant:unreserveHandler(stagehand, arc) 216a221,224 > end > > for _,questDesc in ipairs(arc.quests) do > self.data.quests[questDesc.questId] = nil scripts\quest\manager\spawn_entities.lua 38,46d37 < local function randomPositionInPoly(poly, offset) < local boundBox = util.boundBox(poly) < local rangeX = boundBox[3] - boundBox[1] - offset[1] * 2 < assert(rangeX >= 0) < local x = math.random() * rangeX + boundBox[1] + offset[1] < local y = boundBox[2] + offset[2] < return {x, y} < end < scripts\questgen\context.lua 22,27c22 < local function makeSpawnPoly(x, y, rectWidth, rectHeight) < assert(rectWidth and rectHeight) < return {{x-rectWidth/2, y}, {x+rectWidth/2, y}, {x+rectWidth/2, y+rectHeight}, {x-rectWidth/2, y+rectHeight}} < end < < function QuestContext:spawnPoints(rectWidth, rectHeight) --- > function QuestContext:spawnPoints(rectWidth, rectHeight, xDelta) 36a32,34 > if xDelta then > options.spawnPointXDelta = xDelta > end scripts\questgen\generator.lua 289a290,298 > > [QuestPredicands.TemporaryNpc] = function (npc) > local entityId = npc:spawn() > local uniqueId = sb.makeUuid() > npc.entityId = entityId > npc.uniqueId = uniqueId > world.setUniqueId(entityId, uniqueId) > end, > 347a357,369 > [QuestPredicands.TemporaryNpc] = function (npc) > local uniqueId = npc.uniqueId > local entityId = npc.entityId > assert(uniqueId ~= nil and entityId ~= nil) > return { > type = "entity", > uniqueId = uniqueId, > species = world.entitySpecies(entityId), > name = world.entityName(entityId), > portrait = world.entityPortrait(entityId, "full") > } > end, > 499c521 < seed = math.random(0, 2^31) --- > seed = generateSeed() scripts\questgen\predicands.lua 0a1,3 > require("/scripts/util.lua") > require("/scripts/spawnPoint.lua") > 113a117,143 > end > > QuestPredicands.TemporaryNpc = createClass("TemporaryNpc") > > function QuestPredicands.TemporaryNpc:init(species, typeName, spawnPoint) > self.species = species > self.typeName = typeName > self.spawnPoint = spawnPoint > end > > function QuestPredicands.TemporaryNpc:spawn() > local seed = generateSeed() > local overrides = { > damageTeamType = "friendly", > scriptConfig = { > behaviorConfig = { > beamOutWhenNotInUse = true > }, > questGenerator = { > pools = {}, > enableParticipation = false > } > } > } > local entityId = world.spawnNpc(self.spawnPoint, self.species, self.typeName, world.threatLevel(), seed, overrides) > world.callScriptedEntity(entityId, "status.addEphemeralEffect", "beamin") > return entityId scripts\questgen\relations.lua 11a12 > local TemporaryNpc = QuestPredicands.TemporaryNpc 547a549,565 > QuestRelations.temporaryNpc = defineQueryRelation("temporaryNpc", true) { > [case(1, TemporaryNpc, NonNil, NonNil, Location, NonNil)] = function (self, npc, species, typeName, spawnLocation, spawnOffset) > if xor(self.negated, npc.species == species and npc.typeName == typeName) then > return {{npc, species, typeName, spawnLocation, spawnOffset}} > end > return Relation.empty > end, > > [case(2, Nil, NonNil, NonNil, Location, NonNil)] = function (self, _, species, typeName, spawnLocation, spawnOffset) > if self.negated then return Relation.some end > local spawnPoint = randomPositionInPoly(spawnLocation.poly, spawnOffset) > return {{TemporaryNpc.new(species, typeName, spawnPoint), species, typeName, spawnLocation, spawnOffset}} > end, > > default = Relation.some > } > 862a881,895 > QuestRelations.countExtraMerchantItems = defineQueryRelation("countExtraMerchantItems", true) { > [case(1, Entity, NonNil)] = function (self, merchant, count) > if xor(self.negated, (merchant:callScript("countExtraMerchantItems") or 0) == count) then > return {{merchant, count}} > end > return Relation.empty > end, > [case(2, Entity, Nil)] = function (self, merchant) > if self.negated then return Relation.some end > return {{merchant, merchant:callScript("countExtraMerchantItems") or 0}} > end, > [case(3, Nil, Any)] = Relation.some, > default = Relation.empty > } > 1242a1276,1283 > 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)]) stats\monster_primary.lua 32c32,35 < mcontroller.addMomentum(momentum) --- > if vec2.mag(momentum) > status.stat("knockbackThreshold") then > mcontroller.addMomentum(momentum) > status.setResource("stunned", status.stat("knockbackStunTime")) > end stats\npc_primary.lua 26,29c26,27 < < local knockbackMomentum = vec2.mul(damageRequest.knockbackMomentum, knockbackFactor) < local knockback = vec2.mag(knockbackMomentum) < if knockback > 0 then --- > local momentum = knockbackMomentum(vec2.mul(damageRequest.knockbackMomentum, knockbackFactor)) > if status.resourcePositive("health") and vec2.mag(momentum) > 0 then 31,35c29,31 < if mcontroller.baseParameters().gravityEnabled then < local dir = knockbackMomentum[1] > 0 and 1 or -1 < mcontroller.addMomentum({dir * knockback / 1.41, knockback / 1.41}) < else < mcontroller.addMomentum(knockbackMomentum) --- > if vec2.mag(momentum) > status.stat("knockbackThreshold") then > mcontroller.addMomentum(momentum) > status.setResource("stunned", status.stat("knockbackStunTime")) 72,73d67 < < --drawDebugResources() 76,94c70,77 < function drawDebugResources() < local position = mcontroller.position() < < local y = 2 < local resourceName = "energy" < --Border < world.debugLine(vec2.add(position, {-2, y+0.125}), vec2.add(position, {-2, y + 0.75}), "black") < world.debugLine(vec2.add(position, {-2, y + 0.75}), vec2.add(position, {2, y + 0.75}), "black") < world.debugLine(vec2.add(position, {2, y + 0.75}), vec2.add(position, {2, y+0.125}), "black") < world.debugLine(vec2.add(position, {2, y+0.125}), vec2.add(position, {-2, y+0.125}), "black") < < local width = 3.75 * status.resource(resourceName) / status.resourceMax(resourceName) < world.debugLine(vec2.add(position, {-1.875, y + 0.25}), vec2.add(position, {-1.875 + width, y + 0.25}), "green") < world.debugLine(vec2.add(position, {-1.875, y + 0.375}), vec2.add(position, {-1.875 + width, y + 0.375}), "green") < world.debugLine(vec2.add(position, {-1.875, y + 0.5}), vec2.add(position, {-1.875 + width, y + 0.5}), "green") < world.debugLine(vec2.add(position, {-1.875, y + 0.625}), vec2.add(position, {-1.875 + width, y + 0.625}), "green") < < world.debugText(resourceName, vec2.add(position, {2.25, y - 0.125}), "blue") < y = y + 1 --- > function knockbackMomentum(momentum) > local knockback = vec2.mag(momentum) > if mcontroller.baseParameters().gravityEnabled and math.abs(momentum[1]) > 0 then > local dir = momentum[1] > 0 and 1 or -1 > return {dir * knockback / 1.41, knockback / 1.41} > else > return momentum > end treasure\common.treasurepools 106,107c106,108 < {"weight" : 0.16, "item" : "teleportercore"}, < {"weight" : 0.00, "item" : "autochip"} --- > {"weight" : 0.15, "item" : "teleportercore"}, > {"weight" : 0.00, "item" : "autochip"}, > {"weight" : 0.01, "pool" : "uniqueWeapon"} 394c395 < {"weight" : 0.13, "pool" : "uncommonMelee"}, --- > {"weight" : 0.15, "pool" : "uncommonMelee"}, 396d396 < {"weight" : 0.02, "pool" : "uniqueMelee"}, 409,410c409 < {"weight" : 0.10, "pool" : "rareMelee"}, < // {"weight" : 0.05, "pool" : "uniqueMelee"}, --- > {"weight" : 0.15, "pool" : "rareMelee"}, 539a539,550 > ] > }] > ], > > "uniqueWeapon" : [ > [0, { > "pool" : [ > {"weight" : 1.0, "item" : "boomerang" }, > {"weight" : 1.0, "item" : "chakram" }, > {"weight" : 1.0, "item" : "gauntlet" }, > {"weight" : 1.0, "item" : "flamethrower" }, > {"weight" : 1.0, "item" : "remotegrenadelauncher" } vehicles\hoverbike\default.frames 7,8c7,8 < [ null, "move", null, "damaged"], < [ null, "heavydamaged", null, "broken" ] --- > [ null, "move.undamaged", null, "move.scratched"], > [ null, "move.dented", null, "move.wrecked" ] vehicles\hoverbike\hoverbike.animation 10c10 < "frames" : 3, --- > "frames" : 1, 16c16 < "frames" : 2, --- > "frames" : 1, 26c26 < "frames" : 2, --- > "frames" : 1, 36a37 > 48c49 < "image" : "hoverbikebackground.png:move" --- > "image" : "hoverbikebackground.png:move." 53c54 < "image" : "hoverbikebackground.png:move" --- > "image" : "hoverbikebackground.png:move." 58c59 < "image" : "hoverbikebackground.png:move" --- > "image" : "hoverbikebackground.png:move." 63c64 < "image" : "hoverbikebackground.png:move" --- > "image" : "hoverbikebackground.png:move." 68c69 < "image" : "hoverbikebackground.png:move" --- > "image" : "hoverbikebackground.png:move." 87c88 < "image" : "hoverbikeforeground.png:move" --- > "image" : "hoverbikeforeground.png:move." 92c93 < "image" : "hoverbikeforeground.png:move" --- > "image" : "hoverbikeforeground.png:move." 97c98 < "image" : "hoverbikeforeground.png:move" --- > "image" : "hoverbikeforeground.png:move." 102c103 < "image" : "hoverbikeforeground.png:move" --- > "image" : "hoverbikeforeground.png:move." 107c108 < "image" : "hoverbikeforeground.png:move" --- > "image" : "hoverbikeforeground.png:move." 112a114 > 127,130c129,141 < "particles" : [{ < "particle" : "crabcanosmoke", < "offset" : [-3, 0] < }] --- > "offsetRegion" : [-3.5, -0.25, -1.5, 0], > "particles" : [{ "particle" : "burningvehiclesmokefront"}, > {"particle" : "burningvehiclesmokeback"}] > }, > > "fire" : { > "transformationGroups" : ["flip", "rotation"], > "emissionRate" : 0.0, > "offsetRegion" : [2, 0, 3, 0.75], > "particles" : [ { "particle" : "burningdust"}, > { "particle" : "campfireflames"}, > { "particle" : "campfireflames"}] > 131a143 > 132a145,147 > > > vehicles\hoverbike\hoverbike.lua 23c23,28 < self.maxSmokeRate = vehicle.configParameter("maxSmokeRate") --- > > self.smokeThreshold = vehicle.configParameter("smokeThresholdHealthPercentage")/100.0 > self.fireThreshold = vehicle.configParameter("fireThresholdHealthPercentage")/100.0 > self.maxSmokeRate = vehicle.configParameter("smokeRateAtZeroHealth") > self.maxFireRate = vehicle.configParameter("fireRateAtZeroHealth") > 30a36,37 > self.damageStateNames = vehicle.configParameter("damageStateNames") > 33,37c40,57 < message.setHandler("lock", function(_, _, ownerKey) < if (self.ownerKey and self.ownerKey == ownerKey) then < vehicle.destroy() < return true < end --- > > --setup the store functionality > message.setHandler("store", function(_, _, ownerKey) > > if (self.ownerKey and self.ownerKey == ownerKey) then > vehicle.destroy() > > local entityInSeat = vehicle.entityLoungingIn("seat") > --can't store a vehicle with someone in > --(self.health / self.maxHealth) < self.fireThreshold > > local localStorable = (entityInSeat ==nil) > > --world.logInfo("Health at storetime=%s",self.health) > > > return {storable = localStorable, health = self.health} > end 43c63,72 < self.health = self.maxHealth --- > > local startHealth = vehicle.configParameter("startHealth") > if (startHealth == nil) then > self.health = self.maxHealth > -- world.logInfo("MaxHealth") > else > -- world.logInfo("Health = %s",startHealth) > self.health = startHealth > end > 140a170,180 > local healthFactor = self.health / self.maxHealth > > --show the right image according to how damaged we are. > local maxDamageState = #self.damageStateNames > local damageStateIndex = maxDamageState > if self.health > 0 then > damageStateIndex = (maxDamageState - math.ceil(healthFactor * maxDamageState))+1 > end > animator.setGlobalTag("damageState", self.damageStateNames[damageStateIndex]) > > 149,151c189,201 < if self.health < self.maxHealth then < animator.setParticleEmitterActive("smoke", true) < animator.setParticleEmitterEmissionRate("smoke", (1.0 - self.health / self.maxHealth) * self.maxSmokeRate) --- > > if healthFactor<1.0 then > if (self.smokeThreshold > 0.0 and healthFactor < self.smokeThreshold) then > local smokeFactor = 1.0 - (healthFactor / self.smokeThreshold) > animator.setParticleEmitterActive("smoke", true) > animator.setParticleEmitterEmissionRate("smoke", smokeFactor * self.maxSmokeRate) > end > > if (self.fireThreshold > 0.0 and healthFactor < self.fireThreshold) then > local fireFactor = 1.0 - (healthFactor / self.fireThreshold) > animator.setParticleEmitterActive("fire", true) > animator.setParticleEmitterEmissionRate("fire", fireFactor * self.maxFireRate) > end 153a204 > animator.setParticleEmitterActive("fire", false) 155a207 > 163a216 > 164a218 > vehicles\hoverbike\hoverbike.vehicle 43c43,50 < "maxSmokeRate" : 20, --- > > "smokeThresholdHealthPercentage" : 50, > "smokeRateAtZeroHealth" : 100, > > "fireThresholdHealthPercentage" : 25, > "fireRateAtZeroHealth" : 30, > > 56c63 < ], --- > ], 63c70 < ], --- > ], 71c78 < ], --- > ], 76c83,86 < } --- > }, > > "damageStateNames" : ["undamaged","scratched","dented","wrecked"] >