FILES ----- spawner.config [NEW] animations\shards\larvashard.animation [NEW] animations\shards\larvashard.png biomes\surface_detached\hive.biome [NEW] dungeons\microdungeons\biomes\hive\hivecliffleft1.json [NEW] dungeons\microdungeons\biomes\hive\hivecliffleft2.json [NEW] dungeons\microdungeons\biomes\hive\hivecliffleft3.json [NEW] dungeons\microdungeons\biomes\hive\hivecliffright1.json [NEW] dungeons\microdungeons\biomes\hive\hivecliffright2.json [NEW] dungeons\microdungeons\biomes\hive\hivecliffright3.json [NEW] dungeons\microdungeons\biomes\hive\hivefall1.json dungeons\microdungeons\biomes\hive\hivemicrodungeons.dungeon [NEW] dungeons\microdungeons\biomes\hive\hivepit4.json [NEW] dungeons\microdungeons\biomes\hive\hiverolypoly.json [NEW] dungeons\microdungeons\biomes\hive\hiveswarm.json [NEW] dungeons\microdungeons\biomes\hive\hivetunnel1.json [NEW] dungeons\microdungeons\biomes\hive\hivetunnel2.json [NEW] dungeons\microdungeons\biomes\hive\hivetunnel3.json [NEW] dungeons\microdungeons\underground\opentemplate.json dungeons\microdungeons\underground\tunnelbackslopetemplate.json dungeons\microdungeons\underground\tunnelforwardslopetemplate.json [NEW] dungeons\microdungeons\underground\tunneltemplate.json dungeons\microdungeons\underground\tunnelweakbackslopetemplate.json dungeons\microdungeons\underground\tunnelweakforwardslopetemplate.json dungeons\microdungeons\underground\undergroundmicrodungeons.dungeon items\active\weapons\weapon.lua items\active\weapons\melee\altabilities\broadsword\bladecharge\bladecharge.altability items\active\weapons\melee\altabilities\broadsword\giantsword\giantsword.altability [NEW] items\active\weapons\melee\altabilities\spear\flurry\flurry.altability [NEW] items\active\weapons\melee\altabilities\spear\flurry\flurry.lua items\active\weapons\melee\axe\axe.animation items\active\weapons\melee\broadsword\broadsword.animation items\active\weapons\melee\dagger\dagger.animation items\active\weapons\melee\hammer\hammer.animation items\active\weapons\melee\hammer\hammer.lua items\active\weapons\melee\shortsword\shortsword.animation items\active\weapons\melee\spear\commonspear.activeitem items\active\weapons\melee\spear\spear.animation items\active\weapons\melee\spear\spear.lua items\active\weapons\ranged\altabilities\altfire.lua items\active\weapons\ranged\altabilities\bouncingshot\bouncingshot.altability items\active\weapons\ranged\altabilities\explosiveshot\explosiveshot.altability [NEW] items\active\weapons\ranged\altabilities\flashlight\flashlight.altability [NEW] items\active\weapons\ranged\altabilities\flashlight\flashlight.lua [NEW] items\active\weapons\ranged\altabilities\flashlight\flashlight.png [NEW] items\active\weapons\ranged\altabilities\grenadelauncher\grenadelauncher.altability [NEW] items\active\weapons\ranged\altabilities\grenadelauncher\grenadelauncher.lua [NEW] items\active\weapons\ranged\altabilities\grenadelauncher\grenadelauncher.png [NEW] items\active\weapons\ranged\altabilities\spray\spray.altability [NEW] items\active\weapons\ranged\altabilities\stickyshot\stickyshot.altability items\active\weapons\ranged\assaultrifle\commonassaultrifle.activeitem items\active\weapons\ranged\shotgun\commonshotgun.activeitem items\active\weapons\ranged\sniperrifle\commonsniperrifle.activeitem [NEW] items\armors\biome\hive\bsleeve.png [NEW] items\armors\biome\hive\chest.png [NEW] items\armors\biome\hive\fsleeve.png [NEW] items\armors\biome\hive\head.png [NEW] items\armors\biome\hive\icons.png [NEW] items\armors\biome\hive\larva.chest [NEW] items\armors\biome\hive\larva.head [NEW] items\armors\biome\hive\larva.legs [NEW] items\armors\biome\hive\mask.png [NEW] items\armors\biome\hive\pants.png [NEW] items\generic\crafting\larva.item [NEW] items\generic\crafting\larva.png items\materials\hive.matitem items\materials\hive.png npcs\merchantpools.config npcs\biome\shadowvillager.npctype [NEW] npcs\subbiometenants\hive.npctype npcs\tenants\creepling.npctype [NEW] objects\biome\hive\hivebed\hivebed.frames [NEW] objects\biome\hive\hivebed\hivebed.object [NEW] objects\biome\hive\hivebed\hivebed.png [NEW] objects\biome\hive\hivebed\hivebedcover.png [NEW] objects\biome\hive\hivebed\hivebedicon.png objects\biome\hive\hivebush1\hivebush1.object objects\biome\hive\hivebush2\hivebush2.object objects\biome\hive\hivebush3\hivebush3.object objects\biome\hive\hivebush4\hivebush4.object objects\biome\hive\hivebush5\hivebush5.object [NEW] objects\biome\hive\hivechair\hivechair.frames [NEW] objects\biome\hive\hivechair\hivechair.object [NEW] objects\biome\hive\hivechair\hivechair.png [NEW] objects\biome\hive\hivechair\hivechaircover.png [NEW] objects\biome\hive\hivechair\hivechairicon.png objects\biome\hive\hivechest\hivechest.object objects\biome\hive\hivechest\hivechest.png objects\biome\hive\hivechest\hivechesticon.png [NEW] objects\biome\hive\hivedoor\hivedoor.frames [NEW] objects\biome\hive\hivedoor\hivedoor.object [NEW] objects\biome\hive\hivedoor\hivedoor.png [NEW] objects\biome\hive\hivedoor\hivedooricon.png [NEW] objects\biome\hive\hivelamp\hivelamp.frames [NEW] objects\biome\hive\hivelamp\hivelamp.object [NEW] objects\biome\hive\hivelamp\hivelamp.png [NEW] objects\biome\hive\hivelamp\hivelampicon.png [NEW] objects\biome\hive\hivelamp\hivelamplit.frames [NEW] objects\biome\hive\hivelamp\hivelamplit.png objects\biome\hive\hivelight1\hivelight1.object objects\biome\hive\hivelight2\hivelight2.object [NEW] objects\biome\hive\hivetable\hivetable.frames [NEW] objects\biome\hive\hivetable\hivetable.object [NEW] objects\biome\hive\hivetable\hivetable.png [NEW] objects\biome\hive\hivetable\hivetableicon.png objects\biome\steamspring\boilervalve\boilervalve.object objects\biome\steamspring\brasslamppost1\brasslamppost1.object objects\biome\steamspring\floorgear1\floorgear1.object objects\biome\steamspring\floorpipe1\floorpipe1.object objects\biome\steamspring\floorpipe2\floorpipe2.object objects\biome\steamspring\floorpipe3\floorpipe3.object objects\biome\steamspring\steamboiler1\steamboiler1.object objects\biome\steamspring\steamboiler2\steamboiler2.object objects\biome\steamspring\steamboiler3\steamboiler3.object objects\biome\steamspring\steamclock\steamclock.object objects\biome\steamspring\steamspringbed\steamspringbed.object objects\biome\steamspring\steamspringdoor\steamspringdoor.object objects\biome\steamspring\steamspringlamp\steamspringlamp.object objects\biome\steamspring\steamspringtable\steamspringtable.object objects\glitch\sewervalve\sewervalve.object objects\human\jukebox\jukebox.object objects\themed\outdoor\lamppost3\lamppost3.object [NEW] particles\shards\larvashard.particle [NEW] plants\trees\forestceiling\stems\hivevine\hivevine.modularstem [NEW] plants\trees\forestceiling\stems\hivevine\vinebase1.png [NEW] plants\trees\forestceiling\stems\hivevine\vinebase2.png [NEW] plants\trees\forestceiling\stems\hivevine\vineend1.png [NEW] plants\trees\forestceiling\stems\hivevine\vineend2.png [NEW] plants\trees\forestceiling\stems\hivevine\vinemid1.png [NEW] plants\trees\forestceiling\stems\hivevine\vinemid2.png [NEW] plants\trees\hive\foliage\hive\crown1.png [NEW] plants\trees\hive\foliage\hive\crown2.png [NEW] plants\trees\hive\foliage\hive\crown3.png [NEW] plants\trees\hive\foliage\hive\hive.modularfoliage [NEW] plants\trees\hive\foliage\hive\saplingicon.png [NEW] plants\trees\hive\stem\base1.png [NEW] plants\trees\hive\stem\base2.png [NEW] plants\trees\hive\stem\base3.png [NEW] plants\trees\hive\stem\base4.png [NEW] plants\trees\hive\stem\branch1.png [NEW] plants\trees\hive\stem\crown1.png [NEW] plants\trees\hive\stem\crown2.png [NEW] plants\trees\hive\stem\crown3.png [NEW] plants\trees\hive\stem\crown4.png [NEW] plants\trees\hive\stem\hive.modularstem [NEW] plants\trees\hive\stem\mid1.png [NEW] plants\trees\hive\stem\mid2.png [NEW] plants\trees\hive\stem\mid3.png [NEW] plants\trees\hive\stem\mid4.png [NEW] plants\trees\hive\stem\saplingicon.png [NEW] recipes\biomes\hive\hivebed.recipe [NEW] recipes\biomes\hive\hivechair.recipe [NEW] recipes\biomes\hive\hivedoor.recipe [NEW] recipes\biomes\hive\hivelamp.recipe [NEW] recipes\biomes\hive\hivetable.recipe [NEW] tenants\sub-biome\hive.tenant tiles\materials\chain.material tiles\materials\hive.png tiles\materials\shadowblock.material tiles\materials\shadowspikeblock.material tiles\materials\shadowwallblock.material [NEW] tiles\mods\hiveceilinggrass.matmod [NEW] tiles\mods\hiveceilinggrass.png tiles\mods\hivegrass.png treasure\biome.treasurepools DIFFS ----- spawner.config 2135c2135,2177 < }, --- > }, > > "swarmcritter" : { > "spawnParameters" : { > "area" : "surface", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.02, > "monsterType" : "swarmcritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "swarmflyingcritter" : { > "spawnParameters" : { > "area" : "surface", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.02, > "monsterType" : "swarmflyingcritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "rolypolycritter" : { > "spawnParameters" : { > "area" : "surface", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.02, > "monsterType" : "rolypolycritter", > "monsterParameters" : { > "aggressive" : false > } > }, biomes\surface_detached\hive.biome 8c8 < "extraSpawns" : [ ], --- > "extraSpawns" : [ "swarmcritter", "swarmflyingcritter", "rolypolycritter", "maggotcritter" ], 15c15 < "extraSpawns" : [ ], --- > "extraSpawns" : [ "swarmcritter", "swarmflyingcritter", "rolypolycritter", "maggotcritter" ], 31a32,34 > "ceilingGrassMod" : [ "hiveceilinggrass" ], > "ceilingGrassModDensity" : 0.9, > 83,84c86,90 < "grassMod" : [ "blackash" ], < "grassModDensity" : 0.6, --- > "grassMod" : [ "hivegrass" ], > "grassModDensity" : 0.9, > > "ceilingGrassMod" : [ "hiveceilinggrass" ], > "ceilingGrassModDensity" : 0.9, 99a106,129 > }, > { > "mode" : "floor", > "priority" : 1.0, > "variants" : 1, > "distribution" : "/biomes/distributions.config:scatteredLarge", > > "type" : "tree", > "treeFoliageHueShiftMax" : 0, > "treeStemHueShiftMax" : 0, > "treeStemList" : [ "hive" ], > "treeFoliageList" : [ "hive" ] > }, > { > "mode" : "ceiling", > "priority" : 2.0, > "variants" : 1, > "distribution" : "/biomes/distributions.config:superCommon", > > "type" : "tree", > "treeFoliageHueShiftMax" : 0, > "treeStemHueShiftMax" : 10, > "treeStemList" : [ "hivevine" ], > "treeFoliageList" : [ "" ] dungeons\microdungeons\biomes\hive\hivemicrodungeons.dungeon 8c8 < "anchor" : [ "hivepit1", "hivepit2", "hivepit3" ], --- > "anchor" : [ "hivepit1", "hivepit2", "hivepit3", "hivepit4", "hivetunnel1", "hivetunnel2", "hivetunnel3", "hivecliffleft1", "hivecliffleft2", "hivecliffleft3", "hivecliffright1", "hivecliffright2", "hivecliffright3", "hiveswarm", "hiverolypoly", "hivefall1" ], 37a38,128 > }, > { > "name" : "hivepit4", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hivepit4.json" ] > }, > { > "name" : "hivefall1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hivefall1.json" ] > }, > { > "name" : "hivetunnel1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hivetunnel1.json" ] > }, > { > "name" : "hivetunnel2", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hivetunnel2.json" ] > }, > { > "name" : "hivetunnel3", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hivetunnel3.json" ] > }, > { > "name" : "hivecliffleft1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hivecliffleft1.json" ] > }, > { > "name" : "hivecliffleft2", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hivecliffleft2.json" ] > }, > { > "name" : "hivecliffleft3", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hivecliffleft3.json" ] > }, > { > "name" : "hivecliffright1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hivecliffright1.json" ] > }, > { > "name" : "hivecliffright2", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hivecliffright2.json" ] > }, > { > "name" : "hivecliffright3", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hivecliffright3.json" ] > }, > { > "name" : "hiveswarm", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hiveswarm.json" ] > }, > { > "name" : "hiverolypoly", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "hiverolypoly.json" ] dungeons\microdungeons\underground\tunnelbackslopetemplate.json [TMX file differences are left out for huge size.] dungeons\microdungeons\underground\tunnelforwardslopetemplate.json [TMX file differences are left out for huge size.] dungeons\microdungeons\underground\tunnelweakbackslopetemplate.json [TMX file differences are left out for huge size.] dungeons\microdungeons\underground\tunnelweakforwardslopetemplate.json [TMX file differences are left out for huge size.] dungeons\microdungeons\underground\undergroundmicrodungeons.dungeon 8c8 < "anchor" : [ "openMediumTemplate", "tunnelBackSlopeTemplate", "tunnelForwardSlopeTemplate", "tunnelWeakBackSlopeTemplate", "tunnelWeakForwardSlopeTemplate", "tunnelMediumTemplate" ], --- > "anchor" : [ "openTemplate", "tunnelBackSlopeTemplate", "tunnelForwardSlopeTemplate", "tunnelWeakBackSlopeTemplate", "tunnelWeakForwardSlopeTemplate", "tunnelTemplate" ], 18c18 < "name" : "openMediumTemplate", --- > "name" : "openTemplate", 22,38c22 < "def" : [ "tmx", "openMediumTemplate.json" ] < }, < < { < "name" : "openForwardSlopeTemplate", < "rules" : [ < [ "maxSpawnCount", [1] ] < ], < "def" : [ "tmx", "openForwardSlopeTemplate.json" ] < }, < < { < "name" : "openBackSlopeTemplate", < "rules" : [ < [ "maxSpawnCount", [1] ] < ], < "def" : [ "tmx", "openBackSlopeTemplate.json" ] --- > "def" : [ "tmx", "openTemplate.json" ] 74c58 < "name" : "tunnelMediumTemplate", --- > "name" : "tunnelTemplate", 78c62 < "def" : [ "tmx", "tunnelMediumTemplate.json" ] --- > "def" : [ "tmx", "tunnelTemplate.json" ] items\active\weapons\weapon.lua 28a29 > self.weaponOffset = stance.weaponOffset or {0,0} 78c79 < function weapon.setDamage(extraDamageConfig, swooshPart, bladePart) --- > function weapon.setDamage(extraDamageConfig, swooshPart, bladePart, damageTimeout) 105c106 < damageRepeatTimeout = repeatTimeout --- > damageRepeatTimeout = damageTimeout or repeatTimeout 113,114c114,120 < animator.rotateGroup("weapon", self.relativeWeaponRotation, true) < animator.rotateGroup("swoosh", self.relativeWeaponRotation + (math.pi / 2), true) --- > animator.resetTransformationGroup("weapon") > animator.resetTransformationGroup("swoosh") > animator.translateTransformationGroup("weapon", self.weaponOffset) > animator.rotateTransformationGroup("weapon", self.relativeWeaponRotation) > animator.rotateTransformationGroup("swoosh", (math.pi / 2)) -- Align swoosh with weapon > animator.translateTransformationGroup("swoosh", self.weaponOffset) > animator.rotateTransformationGroup("swoosh", self.relativeWeaponRotation) 182c188 < self.energyPerShot = root.evalFunction("gunLevelEnergyCostPerDamage", item.instanceValue("level", 1)) * self.pParams.power * self.pCount --- > self.energyPerShot = root.evalFunction("gunLevelEnergyCostPerDamage", item.instanceValue("level", 1)) * weapon.rangedDamageAmount() 210c216,220 < function weapon.fireProjectile(projectileType, projectileParams, inaccuracy) --- > function weapon.rangedDamageAmount() > return self.pParams.power * activeItem.ownerPowerMultiplier() * self.pCount > end > > function weapon.fireProjectile(projectileType, projectileParams, inaccuracy, firePosition, pCount) 212a223 > 214c225 < for i = 1, self.pCount do --- > for i = 1, (pCount or self.pCount) do 217c228 < weapon.firePosition(), --- > firePosition or weapon.firePosition(), items\active\weapons\melee\altabilities\broadsword\bladecharge\bladecharge.altability 32c32 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", items\active\weapons\melee\altabilities\broadsword\giantsword\giantsword.altability 56c56 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", 90c90 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 115c115 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", 126c126 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", 137c137 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", 148c148 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", items\active\weapons\melee\axe\axe.animation 17,19d16 < "properties" : { < "particleEmittersOff" : [ "swoosh" ] < } 25,28c22 < "transition" : "idle", < "properties" : { < "particleEmittersOn" : [ "swoosh" ] < } --- > "transition" : "idle" 39c33 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", 75c69 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", 109c103 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 132,139c126,129 < "rotationGroups" : { < "weapon" : { < "angularVelocity" : 0 < }, < "swoosh" : { < "angularVelocity" : 0 < } < }, --- > "transformationGroups" : [ > "weapon", > "swoosh" > ], 142c132 < "swoosh" : { --- > "physicalswoosh" : { 144c134 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 147a138,190 > }, > "fireswoosh" : { > "active" : false, > "transformationGroup" : "swoosh", > "emissionRate" : 40, > "offsetRegion" : [0.75, -0.25, 3.5, 2.5], > "particles" : [ > { "particle" : "fireswoosh1"}, > { "particle" : "fireswoosh2"}, > { "particle" : "fireswoosh3"}, > { "particle" : "fireswoosh1"}, > { "particle" : "fireswoosh2"}, > { "particle" : "fireswoosh3"} > ] > }, > "electricswoosh" : { > "active" : false, > "transformationGroup" : "swoosh", > "emissionRate" : 40, > "offsetRegion" : [0.75, -0.25, 3.5, 2.5], > "particles" : [ > { "particle" : "electricswoosh1"}, > { "particle" : "electricswoosh2"}, > { "particle" : "electricswoosh2"} > ] > }, > "iceswoosh" : { > "active" : false, > "transformationGroup" : "swoosh", > "emissionRate" : 40, > "offsetRegion" : [0.75, -0.25, 3.5, 2.5], > "particles" : [ > { "particle" : "iceswoosh1"}, > { "particle" : "iceswoosh2"}, > { "particle" : "iceswoosh3"}, > { "particle" : "iceswoosh1"}, > { "particle" : "iceswoosh2"}, > { "particle" : "iceswoosh3"} > ] > }, > "poisonswoosh" : { > "active" : false, > "transformationGroup" : "swoosh", > "emissionRate" : 40, > "offsetRegion" : [0.75, -0.25, 3.5, 2.5], > "particles" : [ > { "particle" : "poisonswoosh1"}, > { "particle" : "poisonswoosh2"}, > { "particle" : "fireswoosh2"}, > { "particle" : "poisonswoosh1"}, > { "particle" : "poisonswoosh2"}, > { "particle" : "fireswoosh2"} > ] items\active\weapons\melee\broadsword\broadsword.animation 26c26 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", 37c37 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", 46c46 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 69,76c69,72 < "rotationGroups" : { < "weapon" : { < "angularVelocity" : 0 < }, < "swoosh" : { < "angularVelocity" : 0 < } < }, --- > "transformationGroups" : [ > "weapon", > "swoosh" > ], 81c77 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 89c85 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 103c99 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 114c110 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 128c124 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 142c138 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", items\active\weapons\melee\dagger\dagger.animation 17,19d16 < "properties" : { < "particleEmittersOff" : [ "swoosh" ] < } 25,28c22 < "transition" : "idle", < "properties" : { < "particleEmittersOn" : [ "swoosh" ] < } --- > "transition" : "idle" 39c33 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", 74c68 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", 108c102 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 131,138c125,128 < "rotationGroups" : { < "weapon" : { < "angularVelocity" : 0 < }, < "swoosh" : { < "angularVelocity" : 0 < } < }, --- > "transformationGroups" : [ > "weapon", > "swoosh" > ], 141c131 < "swoosh" : { --- > "physicalswoosh" : { 143c133 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 150c140 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 164c154 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 175c165 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 189c179 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", items\active\weapons\melee\hammer\hammer.animation 33c33 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", 64c64 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", 93c93 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 116,123c116,119 < "rotationGroups" : { < "weapon" : { < "angularVelocity" : 0 < }, < "swoosh" : { < "angularVelocity" : 0 < } < }, --- > "transformationGroups" : [ > "weapon", > "swoosh" > ], 126c122 < "swoosh" : { --- > "physicalswoosh" : { 128c124 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 136c132 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 150c146 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 161c157 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 175c171 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 188c184 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", 211c207 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", items\active\weapons\melee\hammer\hammer.lua 2a3 > require "/items/active/weapons/weapon.lua" 5,33c6 < math.randomseed(item.instanceValue("seed")) < < self.elementalType = item.instanceValue("elementalType") < animator.setGlobalTag("elementalType", self.elementalType) < < -- Fire time variation < self.fireTime = item.instanceValue("fireTime") < if type(self.fireTime) == "table" then < self.fireTime = self.fireTime[1] + (math.random() * (self.fireTime[2] - self.fireTime[1])) < end < < -- Damage variation < self.damageConfig = item.instanceValue("damageConfig") or {} < local dps = item.instanceValue("baseDps") < if dps then < if type(dps) == "table" then < dps = dps[1] + (math.random() * (dps[2] - dps[1])) < end < self.damageConfig.baseDamage = dps * self.fireTime < end < < -- Elemental status effects < self.damageConfig.statusEffects = self.damageConfig.statusEffects or {} < local elementalStatusEffects = item.instanceValue("elementalStatusEffects") < if elementalStatusEffects and elementalStatusEffects[self.elementalType] then < for _,statusEffect in ipairs(elementalStatusEffects[self.elementalType]) do < table.insert(self.damageConfig.statusEffects, statusEffect) < end < end --- > weapon.setGeneratedMeleeStats() 37,39d9 < self.aimDirection = activeItem.aimAngleAndDirection(0, activeItem.ownerAimPosition())[2] < activeItem.setFacingDirection(self.aimDirection) < idle() 41,48c11 < local altAbilityConfig = item.instanceValue("altAbility") < if altAbilityConfig then < for _, script in ipairs(altAbilityConfig.scripts) do < require(script) < end < self.altAbility = setupAltAbility(altAbilityConfig) < self.altAbility.init() < end --- > weapon.setAltAbility() 63,64d25 < self.aimDirection = activeItem.aimAngleAndDirection(0, activeItem.ownerAimPosition())[2] < 66c27 < activeItem.setFacingDirection(self.aimDirection) --- > weapon.meleeUpdateAim(false, true) 73c34 < activeItem.setFacingDirection(self.aimDirection) --- > weapon.meleeUpdateAim(false, true) 85d45 < activeItem.setFacingDirection(self.aimDirection) 88a49 > weapon.meleeUpdateAim(false, true) 99c60 < activeItem.setFacingDirection(self.smashDirection) --- > weapon.meleeUpdateAim(false, false) 106c67 < activeItem.setFacingDirection(self.smashDirection) --- > weapon.meleeUpdateAim(false, false) 121c82 < setDamage() --- > weapon.setDamage() 135,136c96,97 < setStance(self.stances.idle) < clearDamage() --- > weapon.setStance(self.stances.idle) > weapon.clearDamage() 143c104 < setStance(self.stances.windup) --- > weapon.setStance(self.stances.windup) 158c119 < setStance(self.stances.presmash) --- > weapon.setStance(self.stances.presmash) 170c131 < setStance(self.stances.smash) --- > weapon.setStance(self.stances.smash) 183,185c144 < local armAngle = util.toRadians(self.stances.windup.windupBaseAngle) + math.sin(progress * 1.57) * util.toRadians(self.stances.windup.windupAngleRange) < activeItem.setArmAngle(armAngle) < --- > self.relativeArmRotation = util.toRadians(self.stances.windup.windupBaseAngle) + math.sin(progress * 1.57) * util.toRadians(self.stances.windup.windupAngleRange) 192,248c151 < animator.rotateGroup("weapon", util.toRadians(hammerAngle), true) < end < < function setStance(stance) < activeItem.setArmAngle(util.toRadians(stance.armRotation)) < animator.rotateGroup("weapon", util.toRadians(stance.weaponRotation), true) < animator.rotateGroup("swoosh", util.toRadians(stance.weaponRotation + 90), true) < activeItem.setTwoHandedGrip(stance.twoHanded) < end < < function setDamage(extraDamageConfig) < local swooshArea = animator.partPoly("swoosh", "damageArea") < local bladeArea = animator.partPoly("blade", "damageArea") < local damageArea = swooshArea or bladeArea < if damageArea then < local damageConfig = sb.jsonMerge(self.damageConfig, extraDamageConfig or {}) < damageConfig.knockback = knockbackMomentum(damageConfig.knockback) < local damageAmount = damageConfig.baseDamage * root.evalFunction("swordDamageLevelMultiplier", item.instanceValue("level", 1)) * activeItem.ownerPowerMultiplier() < if not swooshArea then < damageAmount = damageAmount * (item.instanceValue("bladeDamageMultiplier") or 1.0) < end < activeItem.setDamageSources({{ < poly = damageArea, < damage = damageAmount, < sourceEntity = activeItem.ownerEntityId(), < team = activeItem.ownerTeam(), < damageSourceKind = damageConfig.damageSourceKind, < statusEffects = damageConfig.statusEffects, < knockback = damageConfig.knockback or 0, < rayCheck = true, < damageRepeatGroup = damageRepeatGroup(), < damageRepeatTimeout = self.fireTime < }}) < else < activeItem.setDamageSources({}) < end < end < < function damageRepeatGroup() < return activeItem.ownerEntityId() .. item.instanceValue("itemName") .. activeItem.hand() < end < < function knockbackMomentum(knockback) < local knockbackMode = item.instanceValue("knockbackMode") or "default" < < if knockbackMode == "facing" then < return {mcontroller.facingDirection() * knockback, 0} < elseif knockbackMode == "aim" then < local aimVector = vec2.rotate({knockback, 0}, self.aimAngle) < aimVector[1] = mcontroller.facingDirection() * aimVector[1] < return aimVector < end < return knockback < end < < function clearDamage() < activeItem.setDamageSources({}) --- > self.relativeWeaponRotation = util.toRadians(hammerAngle) items\active\weapons\melee\shortsword\shortsword.animation 17,19d16 < "properties" : { < "particleEmittersOff" : [ "swoosh" ] < } 25,28c22 < "transition" : "idle", < "properties" : { < "particleEmittersOn" : [ "swoosh" ] < } --- > "transition" : "idle" 39c33 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", 74c68 < "rotationGroup" : "weapon", --- > "transformationGroup" : "weapon", 108c102 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 131,138c125,128 < "rotationGroups" : { < "weapon" : { < "angularVelocity" : 0 < }, < "swoosh" : { < "angularVelocity" : 0 < } < }, --- > "transformationGroups" : [ > "weapon", > "swoosh" > ], 141c131 < "swoosh" : { --- > "physicalswoosh" : { 143c133 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 150c140 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 164c154 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 175c165 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 189c179 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", items\active\weapons\melee\spear\commonspear.activeitem 50c50,51 < "twoHanded" : true --- > "twoHanded" : true, > "weaponOffset" : [0, 2.0] 55c56,57 < "twoHanded" : true --- > "twoHanded" : true, > "weaponOffset" : [0, 1.5] 80c82,84 < "altAbilities" : [ ], --- > "altAbilities" : [ > "/items/active/weapons/melee/altabilities/spear/flurry/flurry.altability" > ], items\active\weapons\melee\spear\spear.animation 16,18d15 < "properties" : { < "particleEmittersOff" : [ "swoosh" ] < } 24,27c21 < "transition" : "idle", < "properties" : { < "particleEmittersOn" : [ "swoosh" ] < } --- > "transition" : "idle" 30,32d23 < "properties" : { < "particleEmittersOn" : [ "swoosh" ] < } 45,46c36 < "rotationGroup" : "weapon", < "rotationCenter" : [0, 0] --- > "transformationGroup" : "weapon" 56d45 < "offset" : [0, 2.0], 62d50 < "offset" : [0, 1.5], 75,76c63 < "rotationGroup" : "weapon", < "rotationCenter" : [0, 0] --- > "transformationGroup" : "weapon" 85,87d71 < "properties" : { < "offset" : [0, 2.0] < } 90,92d73 < "properties" : { < "offset" : [0, 1.5] < } 101,103c82,83 < "offset" : [5.0, 0.0], < "rotationGroup" : "swoosh", < "rotationCenter" : [0, 0] --- > "offset" : [3.0, 0.0], > "transformationGroup" : "swoosh" 130,137c110,113 < "rotationGroups" : { < "weapon" : { < "angularVelocity" : 0 < }, < "swoosh" : { < "angularVelocity" : 0 < } < }, --- > "transformationGroups" : [ > "weapon", > "swoosh" > ], 140c116 < "swoosh" : { --- > "physicalswoosh" : { 142c118 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 149c125 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 163c139 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 174c150 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", 188c164 < "rotationGroup" : "swoosh", --- > "transformationGroup" : "swoosh", items\active\weapons\melee\spear\spear.lua 26c26 < if fireMode ~= "none" then --- > if fireMode == "primary" then 31a32 > weapon.meleeUpdateAim(false, false) 37a39,40 > > weapon.meleeUpdateAim(false, false) 47a51 > weapon.meleeUpdateAim(true, true) 49d52 < weapon.meleeUpdateAim(true, true) items\active\weapons\ranged\altabilities\altfire.lua 17,18c17,18 < and not world.lineTileCollision(mcontroller.position(), weapon.firePosition()) then < local energyUsage = altFireAttack.energyUsageMultiplier * root.evalFunction("gunLevelEnergyCostPerDamage", item.instanceValue("level", 1)) * altFireAttack.power() --- > and not world.lineTileCollision(mcontroller.position(), altFireAttack.firePosition()) then > local energyUsage = altFireAttack.energyUsageMultiplier * root.evalFunction("gunLevelEnergyCostPerDamage", item.instanceValue("level", 1)) * altFireAttack.damageAmount() 24,31d23 < if self.state == "altFireAttack.fire" then < weapon.rangedUpdateAim(false, false) < altFireAttack.fireProjectile() < if self.attackTimer == 0 then < altFireAttack.cooldown() < end < end < 44a37,48 > function altFireAttack.damageAmount() > return altFireAttack.power() * activeItem.ownerPowerMultiplier() * self.pCount > end > > function altFireAttack.firePosition() > if altFireAttack.firePositionPart then > return vec2.add(mcontroller.position(), activeItem.handPosition(animator.partPoint(altFireAttack.firePositionPart, "firePosition"))) > else > return weapon.firePosition() > end > end > 47c51,52 < weapon.fireProjectile(altFireAttack.projectileType, altFireAttack.projectileParameters, 0) --- > weapon.fireProjectile(altFireAttack.projectileType, altFireAttack.projectileParameters, altFireAttack.inaccuracy, altFireAttack.firePosition(), altFireAttack.projectileCount) > end 49,50c54,58 < animator.setPartTag("muzzleFlash", "variant", math.random(1, 3)) < animator.setAnimationState("firing", "fire") --- > function altFireAttack.fire() > if not altFireAttack.hidePrimaryMuzzleFlash then > animator.setPartTag("muzzleFlash", "variant", math.random(1, 3)) > animator.setAnimationState("firing", "fire") > end 53d60 < end 55,57c62,64 < function altFireAttack.fire() < self.state = "altFireAttack.fire" < self.attackTimer = altFireAttack.stances.fire.duration --- > altFireAttack.fireProjectile() > > altFireAttack.cooldown() 72c79 < return altFireAttack.baseDamage * root.evalFunction("gunDamageLevelMultiplier", item.instanceValue("level", 1)) --- > return altFireAttack.baseDamage * root.evalFunction("gunDamageLevelMultiplier", item.instanceValue("level", 1)) / self.pCount items\active\weapons\ranged\altabilities\bouncingshot\bouncingshot.altability 37,42d36 < "fire" : { < "duration" : 0, < "armRotation" : 5, < "weaponRotation" : 5, < "twoHanded" : true < }, items\active\weapons\ranged\altabilities\explosiveshot\explosiveshot.altability 36,41d35 < "fire" : { < "duration" : 0, < "armRotation" : 5, < "weaponRotation" : 5, < "twoHanded" : true < }, items\active\weapons\ranged\assaultrifle\commonassaultrifle.activeitem 86c86,89 < "/items/active/weapons/ranged/altabilities/bouncingshot/bouncingshot.altability" --- > "/items/active/weapons/ranged/altabilities/bouncingshot/bouncingshot.altability", > "/items/active/weapons/ranged/altabilities/flashlight/flashlight.altability", > "/items/active/weapons/ranged/altabilities/grenadelauncher/grenadelauncher.altability", > "/items/active/weapons/ranged/altabilities/spray/spray.altability" items\active\weapons\ranged\shotgun\commonshotgun.activeitem 82c82,86 < "altAbilities" : [ ], --- > "altAbilities" : [ > "/items/active/weapons/ranged/altabilities/flashlight/flashlight.altability", > "/items/active/weapons/ranged/altabilities/grenadelauncher/grenadelauncher.altability", > "/items/active/weapons/ranged/altabilities/stickyshot/stickyshot.altability" > ], items\active\weapons\ranged\sniperrifle\commonsniperrifle.activeitem 80c80,83 < "altAbilities" : [ ], --- > "altAbilities" : [ > "/items/active/weapons/ranged/altabilities/flashlight/flashlight.altability", > "/items/active/weapons/ranged/altabilities/grenadelauncher/grenadelauncher.altability" > ], items\materials\hive.matitem 6,9c6,9 < "description" : "A solid material made from the remains of fallen creatures... I think I see an eyeball.", < "shortdescription" : "Hivestone", < "glitchdescription" : "Analysis. This material is made up of crushed creatures.", < "florandescription" : "Crussshed animals.", --- > "description" : "-todo-", > "shortdescription" : "Hive Block", > "glitchdescription" : "Analysis. -todo-", > "florandescription" : "-todo-", npcs\merchantpools.config 169a170,172 > { "item" : { "name" : "seismograph" } }, > { "item" : { "name" : "jukebox" } }, > { "item" : { "name" : "plasmadisc" } }, npcs\biome\shadowvillager.npctype 55,57d54 < ], < "back" : [ < { "name" : "rainbowcapeback", "parameters" : { "colorIndex" : 0 } } npcs\tenants\creepling.npctype 25,28c25 < { "name" : "moneybagshead" } < ], < "back" : [ < { "name" : "moneybagsback" } --- > { "name" : "beachcreeperhead" } 31c28 < { "name" : "moneybagschest" } --- > { "name" : "beachcreeperchest" } 34c31 < { "name" : "moneybagspants" } --- > { "name" : "beachcreeperlegs" } objects\biome\hive\hivebush1\hivebush1.object 41c41,42 < "smashSounds" : [ "/sfx/objects/capsule_break1.wav", "/sfx/objects/capsule_break2.wav", "/sfx/objects/capsule_break3.wav" ], --- > "smashSounds" : [ "/sfx/objects/meat_break1.wav", "/sfx/objects/meat_break2.wav", "/sfx/objects/meat_break3.wav" ], > "smashParticles" : [ { "count" : 8, "particle" : "larvashard" } ], 43c44 < [ [ "hive", 1, { } ], [ "hive", 1, { } ], [ "hive", 1, { } ] ] --- > [ [ "larva", 1, { } ], [ "larva", 1, { } ] ] objects\biome\hive\hivebush2\hivebush2.object 41c41,42 < "smashSounds" : [ "/sfx/objects/capsule_break1.wav", "/sfx/objects/capsule_break2.wav", "/sfx/objects/capsule_break3.wav" ], --- > "smashSounds" : [ "/sfx/objects/meat_break1.wav", "/sfx/objects/meat_break2.wav", "/sfx/objects/meat_break3.wav" ], > "smashParticles" : [ { "count" : 8, "particle" : "larvashard" } ], 43c44 < [ [ "hive", 1, { } ], [ "hive", 1, { } ], [ "hive", 1, { } ] ] --- > [ [ "larva", 1, { } ], [ "larva", 1, { } ], [ "larva", 1, { } ] ] objects\biome\hive\hivebush3\hivebush3.object 41c41,42 < "smashSounds" : [ "/sfx/objects/capsule_break1.wav", "/sfx/objects/capsule_break2.wav", "/sfx/objects/capsule_break3.wav" ], --- > "smashSounds" : [ "/sfx/objects/meat_break1.wav", "/sfx/objects/meat_break2.wav", "/sfx/objects/meat_break3.wav" ], > "smashParticles" : [ { "count" : 8, "particle" : "larvashard" } ], 43c44 < [ [ "hive", 1, { } ], [ "hive", 1, { } ], [ "hive", 1, { } ] ] --- > [ [ "larva", 1, { } ], [ "larva", 1, { } ], [ "larva", 1, { } ] ] objects\biome\hive\hivebush4\hivebush4.object 41c41,42 < "smashSounds" : [ "/sfx/objects/capsule_break1.wav", "/sfx/objects/capsule_break2.wav", "/sfx/objects/capsule_break3.wav" ], --- > "smashSounds" : [ "/sfx/objects/meat_break1.wav", "/sfx/objects/meat_break2.wav", "/sfx/objects/meat_break3.wav" ], > "smashParticles" : [ { "count" : 8, "particle" : "larvashard" } ], 43c44 < [ [ "hive", 1, { } ], [ "hive", 1, { } ], [ "hive", 1, { } ] ] --- > [ [ "larva", 1, { } ], [ "larva", 1, { } ], [ "larva", 1, { } ] ] objects\biome\hive\hivebush5\hivebush5.object 41c41,42 < "smashSounds" : [ "/sfx/objects/capsule_break1.wav", "/sfx/objects/capsule_break2.wav", "/sfx/objects/capsule_break3.wav" ], --- > "smashSounds" : [ "/sfx/objects/meat_break1.wav", "/sfx/objects/meat_break2.wav", "/sfx/objects/meat_break3.wav" ], > "smashParticles" : [ { "count" : 8, "particle" : "larvashard" } ], 43c44 < [ [ "hive", 1, { } ], [ "hive", 1, { } ], [ "hive", 1, { } ] ] --- > [ [ "larva", 1, { } ], [ "larva", 1, { } ], [ "larva", 1, { } ] ] objects\biome\hive\hivechest\hivechest.object 11c11 < "description" : "A chest made of flesh.", --- > "description" : "A really gross looking chest.", objects\biome\hive\hivelight1\hivelight1.object 73c73,74 < "smashSounds" : [ "/sfx/objects/capsule_break1.wav", "/sfx/objects/capsule_break2.wav", "/sfx/objects/capsule_break3.wav" ], --- > "smashSounds" : [ "/sfx/objects/meat_break1.wav", "/sfx/objects/meat_break2.wav", "/sfx/objects/meat_break3.wav" ], > "smashParticles" : [ { "count" : 8, "particle" : "larvashard" } ], 75c76 < [ [ "hive", 1, { } ], [ "hive", 1, { } ], [ "hive", 1, { } ] ] --- > [ [ "larva", 1, { } ], [ "larva", 1, { } ] ] 77a79 > objects\biome\hive\hivelight2\hivelight2.object 54c54,55 < "smashSounds" : [ "/sfx/objects/capsule_break1.wav", "/sfx/objects/capsule_break2.wav", "/sfx/objects/capsule_break3.wav" ], --- > "smashSounds" : [ "/sfx/objects/meat_break1.wav", "/sfx/objects/meat_break2.wav", "/sfx/objects/meat_break3.wav" ], > "smashParticles" : [ { "count" : 8, "particle" : "larvashard" } ], 56c57 < [ [ "hive", 1, { } ], [ "hive", 1, { } ], [ "hive", 1, { } ] ] --- > [ [ "larva", 1, { } ], [ "larva", 1, { } ] ] 58a60 > objects\biome\steamspring\boilervalve\boilervalve.object 9c9 < "price" : 90, --- > "price" : 115, 22c22 < "dualImage" : "boilervalve.png:.off", --- > "image" : "boilervalve.png:.off", 24,25c24,36 < "frames" : 4, < "animationCycle" : 1, --- > > "direction" : "left", > "flipImages" : true, > > "spaceScan" : 0.1, > "bgAnchors" : [ [0, 0] ] > }, > { > "image" : "boilervalve.png:.off", > "imagePosition" : [-8, -8], > > "direction" : "right", > objects\biome\steamspring\brasslamppost1\brasslamppost1.object 3,4c3 < "tags" : ["outdoor","light","mechanical"], < "printable" : false, --- > "tags" : ["mechanical","light"], 7c6 < "price" : 110, --- > "price" : 125, 21c20 < "lightColor" : [153, 153, 122], --- > "lightColor" : [179, 179, 143], 28,29c27,28 < "frames" : 1, < "animationCycle" : 0.3, --- > "animationPosition" : [0, 0], > 31a31 > 34c34 < "animationPosition" : [0, 0], --- > 41,42c41,42 < "frames" : 1, < "animationCycle" : 0.3, --- > "animationPosition" : [0, 0], > 43a44 > 46c47 < "animationPosition" : [0, 0], --- > 63c64 < "inboundNodes" : [ [0, 7] ] --- > "inboundNodes" : [ [0, 3] ] objects\biome\steamspring\floorgear1\floorgear1.object 6c6 < "price" : 120, --- > "price" : 85, 30d29 < objects\biome\steamspring\floorpipe1\floorpipe1.object 3c3 < "tags" : ["pipe"], --- > "tags" : ["mechanical"], 6c6 < "price" : 70, --- > "price" : 145, 12,17c12,20 < "apexDescription" : "A pipe that comes out from the floor.", < "avianDescription" : "A pipe that comes out from the floor.", < "floranDescription" : "A pipe that comes out from the floor.", < "glitchDescription" : "A pipe that comes out from the floor.", < "humanDescription" : "A pipe that comes out from the floor.", < "hylotlDescription" : "A pipe that comes out from the floor.", --- > /* > "apexDescription" : "-todo-", > "avianDescription" : "-todo-", > "floranDescription" : "-todo-", > "glitchDescription" : "-todo-", > "humanDescription" : "-todo-", > "hylotlDescription" : "-todo-", > "novakidDescription" : "-todo-", > */ 23,25c26,29 < "imagePosition" : [-10, -8], < "frames" : 1, < "animationCycle" : 0.5, --- > "imagePosition" : [-11, -8], > > "direction" : "left", > "flipImages" : true, 28c32 < "anchors" : [ "bottom" ] --- > "anchors" : [ "bottom" ], 30,48c34,56 < } < ], < "particleEmitter" : { < "emissionRate" : 0.5, < "emissionVariance" : 0.05, < "pixelOrigin" : [0, 0], < < "particle" : { < "type" : "animated", < "image" : "/animations/whitepoof/whitepoof.animation", < "size" : 1.0, < "color" : [244, 244, 244, 255], < "destructionAction" : "fade", < "destructionTime" : 4, < "initialVelocity" : [2, 5], < "timeToLive" : 5, < "layer" : "front", < "position" : [2, 5], < "collidesForeground" : false --- > "particleEmitter" : { > "emissionRate" : 0.5, > "emissionVariance" : 0.05, > "pixelOrigin" : [0, 0], > > "particle" : { > "type" : "animated", > "image" : "/animations/whitepoof/whitepoof.animation", > "size" : 1.0, > "color" : [244, 244, 244, 255], > "destructionAction" : "fade", > "destructionTime" : 4, > "initialVelocity" : [-2, 5], > "timeToLive" : 5, > "layer" : "front", > "position" : [-2, 5], > "collidesForeground" : false > }, > "particleVariance" : { > "initialVelocity" : [1.0, 1.0], > "finalVelocity" : [1.0, 1.0] > } > } 50,52c58,90 < "particleVariance" : { < "initialVelocity" : [1.0, 1.0], < "finalVelocity" : [1.0, 1.0] --- > { > "image" : "floorpipe1.png:", > "imagePosition" : [-10, -8], > > "direction" : "right", > > "spaceScan" : 0.1, > "anchors" : [ "bottom" ], > > "particleEmitter" : { > "emissionRate" : 0.5, > "emissionVariance" : 0.05, > "pixelOrigin" : [0, 0], > > "particle" : { > "type" : "animated", > "image" : "/animations/whitepoof/whitepoof.animation", > "size" : 1.0, > "color" : [244, 244, 244, 255], > "destructionAction" : "fade", > "destructionTime" : 4, > "initialVelocity" : [2, 5], > "timeToLive" : 5, > "layer" : "front", > "position" : [2, 5], > "collidesForeground" : false > }, > "particleVariance" : { > "initialVelocity" : [1.0, 1.0], > "finalVelocity" : [1.0, 1.0] > } > } > 54c92 < } --- > ] objects\biome\steamspring\floorpipe2\floorpipe2.object 3c3 < "tags" : ["pipe"], --- > "tags" : ["mechanical"], 6c6 < "price" : 70, --- > "price" : 160, 12,17c12,20 < "apexDescription" : "A pipe that comes out from the floor.", < "avianDescription" : "A pipe that comes out from the floor.", < "floranDescription" : "A pipe that comes out from the floor.", < "glitchDescription" : "A pipe that comes out from the floor.", < "humanDescription" : "A pipe that comes out from the floor.", < "hylotlDescription" : "A pipe that comes out from the floor.", --- > /* > "apexDescription" : "-todo-", > "avianDescription" : "-todo-", > "floranDescription" : "-todo-", > "glitchDescription" : "-todo-", > "humanDescription" : "-todo-", > "hylotlDescription" : "-todo-", > "novakidDescription" : "-todo-", > */ 23,25c26,29 < "imagePosition" : [-10, -8], < "frames" : 1, < "animationCycle" : 0.5, --- > "imagePosition" : [-5, -8], > > "direction" : "left", > "flipImages" : true, 28c32 < "anchors" : [ "bottom" ] --- > "anchors" : [ "bottom" ], 30,48c34,56 < } < ], < "particleEmitter" : { < "emissionRate" : 0.5, < "emissionVariance" : 0.05, < "pixelOrigin" : [0, 0], < < "particle" : { < "type" : "animated", < "image" : "/animations/whitepoof/whitepoof.animation", < "size" : 1.0, < "color" : [244, 244, 244, 255], < "destructionAction" : "fade", < "destructionTime" : 4, < "initialVelocity" : [1, 6], < "timeToLive" : 5, < "layer" : "front", < "position" : [1, 8], < "collidesForeground" : false --- > "particleEmitter" : { > "emissionRate" : 0.5, > "emissionVariance" : 0.05, > "pixelOrigin" : [0, 0], > > "particle" : { > "type" : "animated", > "image" : "/animations/whitepoof/whitepoof.animation", > "size" : 1.0, > "color" : [244, 244, 244, 255], > "destructionAction" : "fade", > "destructionTime" : 4, > "initialVelocity" : [-1, 6], > "timeToLive" : 5, > "layer" : "front", > "position" : [0.5, 8], > "collidesForeground" : false > }, > "particleVariance" : { > "initialVelocity" : [1.0, 1.0], > "finalVelocity" : [1.0, 1.0] > } > } 50,52c58,89 < "particleVariance" : { < "initialVelocity" : [1.0, 1.0], < "finalVelocity" : [1.0, 1.0] --- > { > "image" : "floorpipe2.png:", > "imagePosition" : [-7, -8], > > "direction" : "right", > > "spaceScan" : 0.1, > "anchors" : [ "bottom" ], > > "particleEmitter" : { > "emissionRate" : 0.5, > "emissionVariance" : 0.05, > "pixelOrigin" : [0, 0], > > "particle" : { > "type" : "animated", > "image" : "/animations/whitepoof/whitepoof.animation", > "size" : 1.0, > "color" : [244, 244, 244, 255], > "destructionAction" : "fade", > "destructionTime" : 4, > "initialVelocity" : [1, 6], > "timeToLive" : 5, > "layer" : "front", > "position" : [1.25, 8], > "collidesForeground" : false > }, > "particleVariance" : { > "initialVelocity" : [1.0, 1.0], > "finalVelocity" : [1.0, 1.0] > } > } 54c91 < } --- > ] objects\biome\steamspring\floorpipe3\floorpipe3.object 3c3 < "tags" : ["pipe"], --- > "tags" : ["mechanical"], 6c6 < "price" : 70, --- > "price" : 110, 12,17c12,20 < "apexDescription" : "A pipe that comes out from the floor.", < "avianDescription" : "A pipe that comes out from the floor.", < "floranDescription" : "A pipe that comes out from the floor.", < "glitchDescription" : "A pipe that comes out from the floor.", < "humanDescription" : "A pipe that comes out from the floor.", < "hylotlDescription" : "A pipe that comes out from the floor.", --- > /* > "apexDescription" : "-todo-", > "avianDescription" : "-todo-", > "floranDescription" : "-todo-", > "glitchDescription" : "-todo-", > "humanDescription" : "-todo-", > "hylotlDescription" : "-todo-", > "novakidDescription" : "-todo-", > */ 23,25c26,29 < "imagePosition" : [-10, -8], < "frames" : 1, < "animationCycle" : 0.5, --- > "imagePosition" : [-9, -8], > > "direction" : "left", > "flipImages" : true, 28a33,36 > }, > { > "image" : "floorpipe3.png:", > "imagePosition" : [-12, -8], 29a38,41 > "direction" : "right", > > "spaceScan" : 0.1, > "anchors" : [ "bottom" ] objects\biome\steamspring\steamboiler1\steamboiler1.object 6c6 < "price" : 120, --- > "price" : 145, 22,23c22 < "dualImage" : "steamboiler1.png:", < --- > "image" : "steamboiler1.png:", 25,26c24,26 < "frames" : 1, < "animationCycle" : 0.5, --- > > "direction" : "left", > "flipImages" : true, 29a30,33 > }, > { > "image" : "steamboiler1.png:", > "imagePosition" : [-24, 0], 30a35,38 > "direction" : "right", > > "spaceScan" : 0.1, > "anchors" : [ "bottom" ] objects\biome\steamspring\steamboiler2\steamboiler2.object 6c6 < "price" : 120, --- > "price" : 155, 22c22,23 < "dualImage" : "steamboiler2.png:", --- > "image" : "steamboiler2.png:", > "imagePosition" : [-25, 0], 24,26c25,26 < "imagePosition" : [-24, 0], < "frames" : 1, < "animationCycle" : 0.5, --- > "direction" : "left", > "flipImages" : true, 29a30,35 > }, > { > "image" : "steamboiler2.png:", > "imagePosition" : [-23, 0], > > "direction" : "right", 30a37,38 > "spaceScan" : 0.1, > "anchors" : [ "bottom" ] objects\biome\steamspring\steamboiler3\steamboiler3.object 6c6 < "price" : 180, --- > "price" : 215, 22,23c22 < "dualImage" : "steamboiler3.png:", < --- > "image" : "steamboiler3.png:", 25,26c24,26 < "frames" : 1, < "animationCycle" : 0.5, --- > > "direction" : "left", > "flipImages" : true, 29a30,33 > }, > { > "image" : "steamboiler3.png:", > "imagePosition" : [-24, 0], 30a35,38 > "direction" : "right", > > "spaceScan" : 0.1, > "anchors" : [ "bottom" ] objects\biome\steamspring\steamclock\steamclock.object 9c9 < "price" : 800, --- > "price" : 215, 23c23 < "imagePosition" : [-16, -16], --- > "imagePosition" : [-24, -24], 26a27,28 > "direction" : "right", > 29d30 < objects\biome\steamspring\steamspringbed\steamspringbed.object 7c7 < "price" : 210, --- > "price" : 170, 41c41 < "sitPosition" : [-5, 14], --- > "sitPosition" : [-7, 14], objects\biome\steamspring\steamspringdoor\steamspringdoor.object 8c8 < "price" : 80, --- > "price" : 115, objects\biome\steamspring\steamspringlamp\steamspringlamp.object 7c7 < "price" : 70, --- > "price" : 100, 21c21 < "lightColor" : [153, 153, 122], --- > "lightColor" : [179, 179, 143], 28,29c28,29 < "frames" : 1, < "animationCycle" : 0.3, --- > "animationPosition" : [0, 0], > 32,34c32,33 < "lightPosition" : [1, 1], < "beamAngle" : 265, < "animationPosition" : [0, 0], --- > > "lightPosition" : [1, 2], 40,42c39,41 < "imagePosition" : [0, 0], < "frames" : 1, < "animationCycle" : 0.3, --- > "imagePosition" : [-8, 0], > "animationPosition" : [-8, 0], > 44,46c43,44 < "lightPosition" : [1, 1], < "beamAngle" : 265, < "animationPosition" : [0, 0], --- > > "lightPosition" : [-1, 2], 63c61 < "inboundNodes" : [ [0, 7] ] --- > "inboundNodes" : [ [0, 2] ] objects\biome\steamspring\steamspringtable\steamspringtable.object 10c10 < "price" : 80, --- > "price" : 125, 23,24c23 < "dualImage" : "steamspringtable.png:", < --- > "image" : "steamspringtable.png:", 26,27c25,27 < "frames" : 1, < "animationCycle" : 1.0, --- > > "direction" : "left", > "flipImages" : true, 31a32,35 > }, > { > "image" : "steamspringtable.png:", > "imagePosition" : [-16, 0], 32a37,41 > "direction" : "right", > > "spaceScan" : 0.1, > "anchors" : [ "bottom" ], > "collision" : "platform" objects\glitch\sewervalve\sewervalve.object 21c21 < "dualImage" : "sewervalve.png:.off", --- > "image" : "sewervalve.png:.off", 23,24c23,35 < "frames" : 4, < "animationCycle" : 1, --- > > "direction" : "left", > "flipImages" : true, > > "spaceScan" : 0.1, > "bgAnchors" : [ [0, 0] ] > }, > { > "image" : "sewervalve.png:.off", > "imagePosition" : [-8, -8], > > "direction" : "right", > objects\human\jukebox\jukebox.object 11c11 < "shortdescription" : "Jon Afro Jukebox", --- > "shortdescription" : "Jukebox", objects\themed\outdoor\lamppost3\lamppost3.object 64c64 < "inboundNodes" : [ [0, 5] ] --- > "inboundNodes" : [ [0, 4] ] tiles\materials\chain.material 10c10 < "footstepSound" : "/sfx/blocks/footstep_composite.wav", --- > "footstepSound" : "/sfx/blocks/footstep_treasure.wav", tiles\materials\shadowblock.material 10,11c10,11 < "footstepSound" : "/sfx/blocks/footstep_dirt.wav", < "health" : 10, --- > "footstepSound" : "/sfx/blocks/footstep_stone3.wav", > "health" : 8, tiles\materials\shadowspikeblock.material 8,9c8,9 < "footstepSound" : "/sfx/blocks/footstep_lightwood.wav", < "health" : 12, --- > "footstepSound" : "/sfx/blocks/footstep_stone3.wav", > "health" : 16, tiles\materials\shadowwallblock.material 10,11c10,11 < "footstepSound" : "/sfx/blocks/footstep_dirt.wav", < "health" : 12, --- > "footstepSound" : "/sfx/blocks/footstep_stone3.wav", > "health" : 16, treasure\biome.treasurepools 984a985,1018 > "hiveChestTreasure" : [ > [1, { > "pool" : [ > {"weight" : 0.5, "pool" : "basicTreasure"}, > {"weight" : 0.5, "pool" : "hiveTreasure"} > ], > "poolRounds" : [ > [0.05, 1], > [0.40, 2], > [0.30, 3], > [0.15, 4], > [0.10, 5] > ], > "allowDuplication" : false > }] > ], > > "hiveTreasure" : [ > [1, { > "pool" : [ > {"weight" : 0.5, "item" : ["larva", 5]}, > {"weight" : 0.3, "item" : "larvahead"}, > {"weight" : 0.3, "item" : "larvachest"}, > {"weight" : 0.3, "item" : "larvalegs"}, > {"weight" : 0.3, "item" : "hivebed-recipe"}, > {"weight" : 0.3, "item" : "hivedoor-recipe"}, > {"weight" : 0.3, "item" : "hivechair-recipe"}, > {"weight" : 0.3, "item" : "hivetable-recipe"}, > {"weight" : 0.3, "item" : "hivelamp-recipe"} > ] > }] > ], > > 1428,1438d1461 < ], < "allowDuplication" : false < }] < ], < < "hiveTreasure" : [ < //TODO: needs moar hiev < [1, { < "pool" : [ < {"weight" : 0.04, "item" : [ "hivebomb", 1]}, < {"weight" : 0.04, "item" : [ "generatedgun", 1, { "definition" : "stingergun" } ]}