FILES ----- dungeons\glitch\evilfortress\evilfortressentrance1.json dungeons\missions\cultistmissions\cultistmission1.json dungeons\space\peacekeeperstation\peacekeeperstation2.json dungeons\space\peacekeeperstation\peacekeeperstation3.json dungeons\space\peacekeeperstation\peacekeeperstation4.json dungeons\space\peacekeeperstation\station5_end1.json dungeons\space\peacekeeperstation\station5_end2.json dungeons\space\peacekeeperstation\station5_end3.json [NEW] interface\itemdescriptions\filledcapturepod.itemdescription items\active\unsorted\filledcapturepod\filledcapturepod.lua [NEW] items\active\unsorted\laserminer\beammine.lua [NEW] items\active\unsorted\laserminer\laserminer.activeitem [NEW] items\active\unsorted\laserminer\laserminer.animation [NEW] items\active\unsorted\laserminer\laserminer.frames [NEW] items\active\unsorted\laserminer\laserminer.png [NEW] items\active\unsorted\laserminer\laserminerfullbright.frames [NEW] items\active\unsorted\laserminer\laserminerfullbright.png [NEW] items\active\unsorted\laserminer\laserminericon.png [NEW] items\active\unsorted\laserminer\beam\beam.png [NEW] items\active\unsorted\laserminer\beam\beamend.png [NEW] items\active\unsorted\miningdrone\arrow.lua [NEW] items\active\unsorted\miningdrone\arrow.png [NEW] items\active\unsorted\miningdrone\arrowend.png [NEW] items\active\unsorted\miningdrone\arrowstart.png [NEW] items\active\unsorted\miningdrone\miningdrone.activeitem [NEW] items\active\unsorted\miningdrone\miningdrone.animation [NEW] items\active\unsorted\miningdrone\miningdrone.lua [NEW] items\active\unsorted\miningdrone\miningdrone.png [NEW] items\active\unsorted\miningdrone\miningdroneicon.png [NEW] items\active\vehiclecontroller\sportscarcontrollerred.activeitem [NEW] items\active\weapons\melee\broadsword\gangbroadsword.activeitem [NEW] items\active\weapons\melee\broadsword\gangswordnames.config items\active\weapons\ranged\unrand\neolaserlauncher\neolaserlauncher.activeitem [NEW] items\active\weapons\ranged\unrand\neomagnum\neomagnum1.activeitem items\active\weapons\ranged\unrand\neomagnum\neomagnum1.png [NEW] items\active\weapons\ranged\unrand\neomagnum\neomagnum1fullbright.png [NEW] items\active\weapons\ranged\unrand\neomagnum\neomagnum2.activeitem items\active\weapons\ranged\unrand\neomagnum\neomagnum2.png items\active\weapons\ranged\unrand\neomagnum\neomagnum2fullbright.png [NEW] items\active\weapons\ranged\unrand\neomagnum\neomagnum3.activeitem items\active\weapons\ranged\unrand\neomagnum\neomagnum3.png items\active\weapons\ranged\unrand\neomagnum\neomagnum3fullbright.png [NEW] items\active\weapons\ranged\unrand\neomagnum\neomagnum4.activeitem items\active\weapons\ranged\unrand\neomagnum\neomagnum4.png items\active\weapons\ranged\unrand\neomagnum\neomagnum4fullbright.png items\active\weapons\ranged\unrand\neopistol\neopistol.activeitem items\active\weapons\ranged\unrand\neoshotgun\muzzleflash.frames items\active\weapons\ranged\unrand\neoshotgun\neoshotgun.activeitem items\active\weapons\ranged\unrand\neotommygun\muzzleflash.frames items\active\weapons\ranged\unrand\neotommygun\neotommygun.activeitem items\active\weapons\ranged\unrand\neouzi\neouzi.activeitem [NEW] items\augments\back\peacekeeper1.augment [NEW] items\augments\back\peacekeeper2.augment [NEW] items\augments\back\peacekeeper3.augment [NEW] items\augments\back\peacekeeperaugment.png [NEW] items\generic\mechparts\arm\mecharmneolaser.item [NEW] items\generic\mechparts\arm\mecharmneolaser.png items\materials\polygonplatform.matitem items\materials\slopedglasspanel.matitem items\throwables\stungrenade.thrownitem monsters\flyers\scandroid\cultistscandroid.monstertype monsters\ghosts\gosmet\firegosmet.monstertype monsters\ghosts\lumoth\firelumoth.monstertype [NEW] monsters\ghosts\peacekeeperdrone\peacekeeperdrone.animation [NEW] monsters\ghosts\peacekeeperdrone\peacekeeperdrone.monstertype [NEW] monsters\ghosts\peacekeeperdrone\body\body.monsterpart [NEW] monsters\ghosts\peacekeeperdrone\body\default.frames [NEW] monsters\ghosts\peacekeeperdrone\body\peacekeeperdrone.png [NEW] monsters\ghosts\peacekeeperdrone\body\peacekeeperdronenobright.png [NEW] monsters\unsorted\default.frames [NEW] monsters\unsorted\miningdrone\beam.png [NEW] monsters\unsorted\miningdrone\beamend.png [NEW] monsters\unsorted\miningdrone\beamorig.png [NEW] monsters\unsorted\miningdrone\dronebeams.lua [NEW] monsters\unsorted\miningdrone\miningdrone.animation [NEW] monsters\unsorted\miningdrone\miningdrone.lua [NEW] monsters\unsorted\miningdrone\miningdrone.monstertype [NEW] monsters\unsorted\miningdrone\miningdrone.png [NEW] monsters\unsorted\miningdrone\miningdronefullbright.png npcs\bounty\gangmember.npctype objects\neon\neonpeacekeeperemblem\neonpeacekeeperemblem.object [NEW] objects\peacekeeper\peacekeeperstore\peacekeeperstore1.frames [NEW] objects\peacekeeper\peacekeeperstore\peacekeeperstore1.object [NEW] objects\peacekeeper\peacekeeperstore\peacekeeperstore1.png objects\peacekeeper\peacekeeperstore\peacekeeperstore2.object objects\peacekeeper\peacekeeperstore\peacekeeperstore2.png objects\peacekeeper\peacekeeperstore\peacekeeperstore3.object objects\peacekeeper\peacekeeperstore\peacekeeperstore3.png [NEW] objects\peacekeeper\peacekeeperstore\peacekeeperstore4.frames [NEW] objects\peacekeeper\peacekeeperstore\peacekeeperstore4.object [NEW] objects\peacekeeper\peacekeeperstore\peacekeeperstore4.png projectiles\activeitems\stunzone\stunzone.png projectiles\activeitems\stunzone\stunzone.projectile projectiles\mech\soluskatanaswoosh\soluskatanaswoosh.projectile [NEW] projectiles\throwable\bomb\zbombexplosion.projectile projectiles\throwable\stungrenade\stungrenade.projectile recipes\peacekeeperstore\gluesprayer.recipe [NEW] recipes\peacekeeperstore\laserminer.recipe [NEW] recipes\peacekeeperstore\mecharmneolaser.recipe recipes\peacekeeperstore\mechbodypeacekeeper.recipe [NEW] recipes\peacekeeperstore\miningdrone.recipe [NEW] recipes\peacekeeperstore\neomagnum1.recipe [NEW] recipes\peacekeeperstore\neomagnum2.recipe [NEW] recipes\peacekeeperstore\neomagnum3.recipe [NEW] recipes\peacekeeperstore\neomagnum4.recipe [NEW] recipes\peacekeeperstore\peacekeeperaugment1.recipe [NEW] recipes\peacekeeperstore\peacekeeperaugment2.recipe [NEW] recipes\peacekeeperstore\peacekeeperaugment3.recipe recipes\peacekeeperstore\peacekeeperchest.recipe [NEW] recipes\peacekeeperstore\peacekeeperdrone.recipe recipes\peacekeeperstore\peacekeeperpants.recipe recipes\peacekeeperstore\riotshield.recipe [NEW] recipes\peacekeeperstore\spaceorgan.recipe [NEW] recipes\peacekeeperstore\sportscarcontrollerred.recipe [NEW] recipes\peacekeeperstore\stungrenade.recipe [NEW] stats\effects\peacekeeperaugment\peacekeeperaugment.lua [NEW] stats\effects\peacekeeperaugment\peacekeeperaugment1.animation [NEW] stats\effects\peacekeeperaugment\peacekeeperaugment1.statuseffect [NEW] stats\effects\peacekeeperaugment\peacekeeperaugment2.animation [NEW] stats\effects\peacekeeperaugment\peacekeeperaugment2.statuseffect [NEW] stats\effects\peacekeeperaugment\peacekeeperaugment3.animation [NEW] stats\effects\peacekeeperaugment\peacekeeperaugment3.statuseffect stats\effects\techstun\techstun.lua stats\effects\techstun\techstun.statuseffect tiles\materials\slopedglasspanel.material tiles\platforms\polygonplatform.material tilesets\packed\materials.json tilesets\packed\supports.json tilesets\packed\objects-by-category\other.json tilesets\packed\objects-by-colonytag\commerce.json tilesets\packed\objects-by-colonytag\peacekeeper.json tilesets\packed\objects-by-race\generic.json treasure\npcdrops.treasurepools vehicles\modularmech\mechparts_arm.config vehicles\modularmech\modularmech.vehicle [NEW] vehicles\modularmech\arm\neolaser.png [NEW] vehicles\modularmech\arm\neolaser_fullbright.png vehicles\modularmech\armscripts\beamarm.lua [NEW] vehicles\modularmech\armscripts\dasharm.lua [NEW] vehicles\modularmech\beam\neolaserbeam.frames [NEW] vehicles\modularmech\beam\neolaserbeam.png [NEW] vehicles\modularmech\beam\neolaserbeamend.png vehicles\sportscar\sportscar.animation [NEW] vehicles\sportscar\sportscarwarp.frames [NEW] vehicles\sportscar\sportscarwarp.png DIFFS ----- dungeons\glitch\evilfortress\evilfortressentrance1.json [TMX file differences are left out for huge size.] dungeons\missions\cultistmissions\cultistmission1.json [TMX file differences are left out for huge size.] dungeons\space\peacekeeperstation\peacekeeperstation2.json [TMX file differences are left out for huge size.] dungeons\space\peacekeeperstation\peacekeeperstation3.json [TMX file differences are left out for huge size.] dungeons\space\peacekeeperstation\peacekeeperstation4.json [TMX file differences are left out for huge size.] dungeons\space\peacekeeperstation\station5_end1.json [TMX file differences are left out for huge size.] dungeons\space\peacekeeperstation\station5_end2.json [TMX file differences are left out for huge size.] dungeons\space\peacekeeperstation\station5_end3.json [TMX file differences are left out for huge size.] items\active\unsorted\filledcapturepod\filledcapturepod.lua 26c26,29 < assert(self.podUuid ~= nil) --- > if self.podUuid == nil then > self.podUuid = sb.makeUuid() > activeItem.setInstanceValue("podUuid", self.podUuid) > end items\active\weapons\ranged\unrand\neolaserlauncher\neolaserlauncher.activeitem 7,8c7,8 < "description" : "--TODO--.", < "shortdescription" : "Neo Laser", --- > "description" : "A powerful proton cannon, built to deal heavy-duty justice.", > "shortdescription" : "Lazercaster", items\active\weapons\ranged\unrand\neopistol\neopistol.activeitem 46,47c46,47 < "baseDps" : 5, < "energyUsage" : 5, --- > "baseDps" : 6, > "energyUsage" : 17.5, items\active\weapons\ranged\unrand\neoshotgun\muzzleflash.frames 8a9,14 > }, > "aliases" : { > "2.1" : "1.1", > "3.1" : "1.1", > "2.2" : "1.2", > "3.2" : "1.2" items\active\weapons\ranged\unrand\neoshotgun\neoshotgun.activeitem 5,7c5,7 < "rarity" : "Legendary", < "description" : "'...because in the end, Doom is all that counts.'", < "shortdescription" : "Neo Magnum", --- > "rarity" : "Rare", > "description" : "A state-of-the-art shotgun, manufactured for various criminal organisations.", > "shortdescription" : "Neo Shotgun", 45,47c45,47 < "fireTime" : 0.5, < "baseDps" : 5, < "energyUsage" : 19, --- > "fireTime" : 0.8, > "baseDps" : 10, > "energyUsage" : 30, 86a87,88 > > "altAbilityType" : "shrapnelbomb", items\active\weapons\ranged\unrand\neotommygun\muzzleflash.frames 8a9,14 > }, > "aliases" : { > "2.1" : "1.1", > "3.1" : "1.1", > "2.2" : "1.2", > "3.2" : "1.2" items\active\weapons\ranged\unrand\neotommygun\neotommygun.activeitem 5,7c5,7 < "rarity" : "Legendary", < "description" : "'...because in the end, Doom is all that counts.'", < "shortdescription" : "Neo Magnum", --- > "rarity" : "Rare", > "description" : "An old gangster classic, reimagined for the modern age.", > "shortdescription" : "Neo Tommy Gun", 47c47 < "energyUsage" : 28, --- > "energyUsage" : 29, 49c49 < "inaccuracy" : 0.02, --- > "inaccuracy" : 0.03, 86a87,88 > > "altAbilityType" : "shrapnelbomb", items\active\weapons\ranged\unrand\neouzi\neouzi.activeitem 45,48c45,48 < "fireTime" : 0.11, < "baseDps" : 6.0, < "energyUsage" : 19, < "inaccuracy" : 0.04, --- > "fireTime" : 0.13, > "baseDps" : 6.5, > "energyUsage" : 20, > "inaccuracy" : 0.05, items\materials\polygonplatform.matitem 7c7 < "description" : "Platforms made for use in potentially pressurised environments.", --- > "description" : "A smooth platform made from \"Hard Light\".", 9,11c9,10 < "glitchdescription" : "Approving. These strong platforms are reinforced to stand up to pressurisation changes.", < "florandescription" : "Sstrong metal platformss are cold.", < "novakiddescription" : "Some sorta shiny lookin' platform.", --- > "glitchdescription" : "Interested. A platform made from \"Hard Light\".", > "florandescription" : "Thisss platform humsss with energy.", items\materials\slopedglasspanel.matitem 8c8 < "shortdescription" : "Glass Panel", --- > "shortdescription" : "Sloped Glass Panel", items\throwables\stungrenade.thrownitem 8c8 < "description" : "Scary what one can achieve with a fruit and a bit of volatile powder.", --- > "description" : "A grenade that creates a localised nanofield to freeze hostiles in their tracks.", monsters\flyers\scandroid\cultistscandroid.monstertype 48c48 < { --- > { 241c241,244 < "capturable" : false --- > "capturable" : true, > "captureHealthFraction" : 0.5, > "nametagColor" : [64, 200, 255], > "captureCollectables" : { "raremonsters" : "cultistscandroid" } monsters\ghosts\gosmet\firegosmet.monstertype 189c189 < "captureCollectables" : { "monsters" : "gosmet" } --- > "captureCollectables" : { "raremonsters" : "firegosmet" } monsters\ghosts\lumoth\firelumoth.monstertype 4c4 < "description" : "The bulb only stays lit while the Lumoth flaps its wings.", --- > "description" : "The flame only stays lit while the Lumoth flaps its wings.", npcs\bounty\gangmember.npctype 5c5 < "dropPools" : [ ], --- > "dropPools" : [ "gangmemberTreasure" ], objects\neon\neonpeacekeeperemblem\neonpeacekeeperemblem.object 3c3 < "colonyTags" : ["neon","light"], --- > "colonyTags" : ["neon","light","peacekeeper"], objects\peacekeeper\peacekeeperstore\peacekeeperstore2.object 6c6 < "description" : "-todo-", --- > "description" : "A store for Peacekeeper supplies.", 32,38c32,38 < "apexDescription" : "-todo-", < "avianDescription" : "-todo-", < "floranDescription" : "-todo-", < "glitchDescription" : "-todo-", < "humanDescription" : "-todo-", < "hylotlDescription" : "-todo-", < "novakidDescription" : "-todo-", --- > "apexDescription" : "It would be wise to peruse the contents of this supply store.", > "avianDescription" : "A fellow Avian, helping the local community! Such a delight.", > "floranDescription" : "Floran wantssss new stuff.", > "glitchDescription" : "Eager. I wonder what supplies this store has?", > "humanDescription" : "I am glad that scrolling neon signs never went out of fashion.", > "hylotlDescription" : "This assistant appears to offer supplies.", > "novakidDescription" : "This lady seems mighty helpful!", objects\peacekeeper\peacekeeperstore\peacekeeperstore3.object 6c6 < "description" : "-todo-", --- > "description" : "A store for Peacekeeper supplies.", 32,38c32,38 < "apexDescription" : "-todo-", < "avianDescription" : "-todo-", < "floranDescription" : "-todo-", < "glitchDescription" : "-todo-", < "humanDescription" : "-todo-", < "hylotlDescription" : "-todo-", < "novakidDescription" : "-todo-", --- > "apexDescription" : "It would be wise to peruse the contents of this supply store.", > "avianDescription" : "A fellow Avian, helping the local community! Such a delight.", > "floranDescription" : "Floran wantssss new stuff.", > "glitchDescription" : "Eager. I wonder what supplies this store has?", > "humanDescription" : "I am glad that scrolling neon signs never went out of fashion.", > "hylotlDescription" : "This assistant appears to offer supplies.", > "novakidDescription" : "This lady seems mighty helpful!", projectiles\activeitems\stunzone\stunzone.projectile 18a19,21 > "damagePoly" : [ [-24, 0], [-16, -16], [0, -24], [16, -16], [24, 0], [16, 16], [0, 24], [-16, 16] ], > "damageType" : "Status", > "damageRepeatTimeout" : 1.0, 22,25c25 < < "onlyHitTerrain" : true, < "persistentStatusEffects" : ["techstun"], < "statusEffectArea" : [ [-3.0, 0], [-2.0, -2.0], [0, -3.0], [2.0, -2.0], [3.0, 0], [2.0, 2.0], [0, 3.0], [-2.0, 2.0] ], --- > "statusEffects" : ["techstun"], projectiles\mech\soluskatanaswoosh\soluskatanaswoosh.projectile 7c7 < "speed" : 25, --- > "speed" : 0, 9c9 < "damagePoly" : [ [0, -36], [30, -28], [50, 0], [30, 28], [0, 36] ], --- > "damagePoly" : [ [-24, -36], [0, -36], [30, -28], [50, 0], [30, 28], [0, 36], [-24, 36] ], projectiles\throwable\stungrenade\stungrenade.projectile 4d3 < "bounces" : 1, 26c25 < "power" : 50, --- > "power" : 0, recipes\peacekeeperstore\gluesprayer.recipe 3c3 < { "item" : "peacecredit", "count" : 5 } --- > { "item" : "peacecredit", "count" : 8 } 9c9 < "groups" : [ "peacekeeper1" ] --- > "groups" : [ "peacekeeper2" ] recipes\peacekeeperstore\mechbodypeacekeeper.recipe 3c3 < { "item" : "peacecredit", "count" : 30 } --- > { "item" : "peacecredit", "count" : 20 } 9c9 < "groups" : [ "peacekeeper3" ] --- > "groups" : [ "peacekeeper4" ] recipes\peacekeeperstore\peacekeeperchest.recipe 3c3 < { "item" : "peacecredit", "count" : 3 } --- > { "item" : "peacecredit", "count" : 5 } recipes\peacekeeperstore\peacekeeperpants.recipe 3c3 < { "item" : "peacecredit", "count" : 3 } --- > { "item" : "peacecredit", "count" : 5 } recipes\peacekeeperstore\riotshield.recipe 3c3 < { "item" : "peacecredit", "count" : 2 } --- > { "item" : "peacecredit", "count" : 4 } 9c9 < "groups" : [ "peacekeeper1" ] --- > "groups" : [ "peacekeeper2" ] stats\effects\techstun\techstun.lua 2c2 < effect.setParentDirectives("fade=00FEEA=0.4") --- > effect.setParentDirectives("fade=f915cf=0.4") stats\effects\techstun\techstun.statuseffect 5c5 < "defaultDuration" : 0.1, --- > "defaultDuration" : 1.0, tiles\materials\slopedglasspanel.material 6c6 < "shortdescription" : "Glass Panel", --- > "shortdescription" : "Sloped Glass Panel", tiles\platforms\polygonplatform.material 5,10c5,9 < "itemDrop" : "pressurisedplatform", < "shortdescription" : "Pressurised Platform", < "description" : "Tough pressurised platform for potentially pressured environments!", < "glitchDescription" : "Approving. These strong platforms are reinforced to stand up to pressurisation changes.", < "floranDescription" : "Sstrong metal platformss are cold.", < "novakidDescription" : "Some sorta shiny lookin' platform.", --- > "itemDrop" : "polygonplatform", > "shortdescription" : "Polygon Platform", > "description" : "A smooth platform made from \"Hard Light\".", > "glitchDescription" : "Interested. A platform made from \"Hard Light\".", > "floranDescription" : "Thisss platform humsss with energy.", tilesets\packed\materials.json 651c651 < "//shortdescription" : "Glass Panel", --- > "//shortdescription" : "Sloped Glass Panel", tilesets\packed\supports.json 167c167 < "//description" : "Tough pressurised platform for potentially pressured environments!", --- > "//description" : "A smooth platform made from \"Hard Light\".", 169c169 < "//shortdescription" : "Pressurised Platform", --- > "//shortdescription" : "Polygon Platform", tilesets\packed\objects-by-category\other.json 7c7 < "tilecount" : 310, --- > "tilecount" : 312, 1740d1739 < "//description" : "-todo-", 1742,1745c1741 < "//shortdescription" : "Peacekeeper Store", < "imagePositionX" : "-24", < "imagePositionY" : "-24", < "object" : "peacekeeperstore" --- > "invalid" : "true" 1805a1802,1817 > "310" : { > "//description" : "-todo-", > "//name" : "peacekeeperstore1", > "//shortdescription" : "Peacekeeper Store", > "imagePositionX" : "-24", > "imagePositionY" : "-24", > "object" : "peacekeeperstore1" > }, > "311" : { > "//description" : "-todo-", > "//name" : "peacekeeperstore4", > "//shortdescription" : "Peacekeeper Store", > "imagePositionX" : "-24", > "imagePositionY" : "-24", > "object" : "peacekeeperstore4" > }, 3096c3108 < "image" : "../../../../../tiled/packed/objects/peacekeeperstore.png" --- > "image" : "../../../../../tiled/packed/../packed/invalid.png" 3117a3130,3135 > }, > "310" : { > "image" : "../../../../../tiled/packed/objects/peacekeeperstore1.png" > }, > "311" : { > "image" : "../../../../../tiled/packed/objects/peacekeeperstore4.png" tilesets\packed\objects-by-colonytag\commerce.json 7c7 < "tilecount" : 156, --- > "tilecount" : 158, 465d464 < "//description" : "-todo-", 467,470c466 < "//shortdescription" : "Peacekeeper Store", < "imagePositionX" : "-24", < "imagePositionY" : "-24", < "object" : "peacekeeperstore" --- > "invalid" : "true" 566a563,578 > "156" : { > "//description" : "-todo-", > "//name" : "peacekeeperstore1", > "//shortdescription" : "Peacekeeper Store", > "imagePositionX" : "-24", > "imagePositionY" : "-24", > "object" : "peacekeeperstore1" > }, > "157" : { > "//description" : "-todo-", > "//name" : "peacekeeperstore4", > "//shortdescription" : "Peacekeeper Store", > "imagePositionX" : "-24", > "imagePositionY" : "-24", > "object" : "peacekeeperstore4" > }, 1542c1554 < "image" : "../../../../../tiled/packed/objects/peacekeeperstore.png" --- > "image" : "../../../../../tiled/packed/../packed/invalid.png" 1575a1588,1593 > }, > "156" : { > "image" : "../../../../../tiled/packed/objects/peacekeeperstore1.png" > }, > "157" : { > "image" : "../../../../../tiled/packed/objects/peacekeeperstore4.png" tilesets\packed\objects-by-colonytag\peacekeeper.json 7c7 < "tilecount" : 20, --- > "tilecount" : 22, 123a124,139 > "20" : { > "//description" : "-todo-", > "//name" : "peacekeeperstore1", > "//shortdescription" : "Peacekeeper Store", > "imagePositionX" : "-24", > "imagePositionY" : "-24", > "object" : "peacekeeperstore1" > }, > "21" : { > "//description" : "-todo-", > "//name" : "peacekeeperstore4", > "//shortdescription" : "Peacekeeper Store", > "imagePositionX" : "-24", > "imagePositionY" : "-24", > "object" : "peacekeeperstore4" > }, 143d158 < "//description" : "-todo-", 145,148c160 < "//shortdescription" : "Peacekeeper Store", < "imagePositionX" : "-24", < "imagePositionY" : "-24", < "object" : "peacekeeperstore" --- > "invalid" : "true" 226a239,244 > "20" : { > "image" : "../../../../../tiled/packed/objects/peacekeeperstore1.png" > }, > "21" : { > "image" : "../../../../../tiled/packed/objects/peacekeeperstore4.png" > }, 234c252 < "image" : "../../../../../tiled/packed/objects/peacekeeperstore.png" --- > "image" : "../../../../../tiled/packed/../packed/invalid.png" tilesets\packed\objects-by-race\generic.json 7c7 < "tilecount" : 1978, --- > "tilecount" : 1980, 8789d8788 < "//description" : "-todo-", 8791,8794c8790 < "//shortdescription" : "Peacekeeper Store", < "imagePositionX" : "-24", < "imagePositionY" : "-24", < "object" : "peacekeeperstore" --- > "invalid" : "true" 9214a9211,9226 > "1978" : { > "//description" : "-todo-", > "//name" : "peacekeeperstore1", > "//shortdescription" : "Peacekeeper Store", > "imagePositionX" : "-24", > "imagePositionY" : "-24", > "object" : "peacekeeperstore1" > }, > "1979" : { > "//description" : "-todo-", > "//name" : "peacekeeperstore4", > "//shortdescription" : "Peacekeeper Store", > "imagePositionX" : "-24", > "imagePositionY" : "-24", > "object" : "peacekeeperstore4" > }, 19803c19815 < "image" : "../../../../../tiled/packed/objects/peacekeeperstore.png" --- > "image" : "../../../../../tiled/packed/../packed/invalid.png" 19947a19960,19965 > }, > "1978" : { > "image" : "../../../../../tiled/packed/objects/peacekeeperstore1.png" > }, > "1979" : { > "image" : "../../../../../tiled/packed/objects/peacekeeperstore4.png" treasure\npcdrops.treasurepools 265a266,283 > ], > > "gangmemberTreasure" : [ > [1, { > "pool" : [ > {"weight" : 0.90, "pool" : "money"}, > {"weight" : 0.06, "item" : "gangbroadsword"}, > {"weight" : 0.01, "item" : "neouzi"}, > {"weight" : 0.01, "item" : "neotommygun"}, > {"weight" : 0.01, "item" : "neoshotgun"}, > {"weight" : 0.01, "item" : "neopistol"} > ], > "poolRounds" : [ > [0.80, 0], > [0.20, 1] > ], > "allowDuplication" : false > }] vehicles\modularmech\mechparts_arm.config 619a620 > "holdFire" : true, 748a750 > "holdFire" : true, 870a873,997 > "neolaser" : { > "stats" : { > "power" : 6, > "energy" : 6 > }, > "partParameters" : { > "script" : "/vehicles/modularmech/armscripts/beamarm.lua", > "armClass" : "BeamArm", > > "rotationLimits" : [-1.75, 1.75], > "fireOffset" : [3.25, 0], > > "windupTime" : 0.5, > "fireTime" : 1.0, > "holdFire" : false, > "winddownTime" : 0.5, > > "repeatFire" : false, > "lockAim" : false, > > "beamLength" : 30, > "beamSourceOffset" : [3.25, 2.5625], > "beamParticleDensity" : 0.75, > "beamTileDamage" : 0, > "beamTileDamageDepth" : 0, > > "scriptedBeam" : true, > "chain" : { > "segmentImage" : "/vehicles/modularmech/beam/neolaserbeam.png", > "endSegmentImage" : "/vehicles/modularmech/beam/neolaserbeamend.png", > "segmentSize" : 0.5, > "overdrawLength" : 0.0, > "taper" : 0.0, > "jitter" : 0.0, > "waveform" : { > "frequency" : 3.0, > "amplitude" : 0.0625, > "movement" : 50.0 > }, > "fullbright" : true, > "light" : [249, 21, 207], > "testCollision" : true > } > }, > "damageSources" : { > "Beam" : { > "enabled" : false, > "attachToPart" : "", > > "line" : [ [3.25, 2.5], [33.25, 2.5] ], > "damage" : 32, > "damageSourceKind" : "plasma", > "damageRepeatTimeout" : 0.1, > "damageRepeatGroup" : "Beam", > "knockback" : 0, > > "rayCheck" : true > } > }, > "partImages" : { > "" : "arm/neolaser.png", > "Fullbright" : "arm/neolaser_fullbright.png" > }, > "defaultPrimaryColors" : ["8da6b0", "657988", "434d5e", "313247"], > "defaultSecondaryColors" : ["8da6b0", "657988", "434d5e", "313247"], > "animationCustom" : { > "animatedParts" : { > "stateTypes" : { > "" : { "states" : { > "active" : { > "properties" : { > "persistentSound" : "/sfx/gun/mech_beamdrill_loop.ogg", > "persistentSoundStopTime" : 0.5 > }, > "cycle" : 0.1 > }, > "windup" : { > "cycle" : 0.5 > }, > "winddown" : { > "cycle" : 0.5 > } > }} > }, > "parts" : { > "" : { > "properties" : { > "beamSource" : [3.25, 2.5625], > "beamEnd" : [33.25, 2.5625] > } > } > } > }, > "particleEmitters" : { > "Beam" : { > "active" : false, > "anchorPart" : "", > "particles" : [ > { "particle" : { > "type" : "ember", > "fullbright" : true, > "color" : [249, 21, 207], > "fade" : 0.5, > "destructionAction" : "shrink", > "destructionTime" : 0.25, > "initialVelocity" : [0, 0], > "timeToLive" : 0.4, > "layer" : "middle", > "variance" : { > "initialVelocity" : [1, 1], > "timeToLive" : 0.2 > } > } } > ] > } > }, > "sounds" : { > "Windup" : [ "/sfx/gun/mech_beamdrill_windup.ogg" ], > "WinddownNoFire" : [], > "Winddown" : [ "/sfx/gun/mech_beamdrill_winddown.ogg" ], > "Fire" : [] > } > } > }, > 1302,1303c1429,1430 < "script" : "/vehicles/modularmech/armscripts/meleearm.lua", < "armClass" : "MeleeArm", --- > "script" : "/vehicles/modularmech/armscripts/dasharm.lua", > "armClass" : "DashArm", 1308c1435,1439 < "windupTime" : 0.3, --- > "stopForce" : 200, > "dashSpeed" : 80, > "dashDirectives" : "?fade=fdd14d;0.5?border=2;fd8f4dff;fd8f4d00", > > "windupTime" : 0.5, 1317c1448 < "cooldownTime" : 0.35, --- > "cooldownTime" : 0.5, 1327,1328d1457 < < "projectileBaseDistance" : 12, 1369a1499,1522 > "particleEmitters" : { > "Dash" : { > "emissionRate" : 100.0, > "offsetRegion" : [-2.0, -3.0, -2.0, 3.0], > "transformationGroups" : ["dash"], > "particles" : [ > { > "particle" : { > "type" : "streak", > "size" : 1.0, > "color" : [253, 209, 77, 200], > "fade" : 0.9, > "position" : [0.0, 0.0], > "initialVelocity" : [1.0, 0.0], > "finalVelocity" : [1.0, 0.0], > "destructionTime" : 0.0, > "approach" : [0, 0], > "timeToLive" : 0.15, > "length" : 10.0 > } > } > ] > } > }, 1371a1525,1527 > "interpolated" : false > }, > "dash" : { vehicles\modularmech\modularmech.vehicle 16a17,18 > "animationScript" : "/items/active/effects/chain.lua", > vehicles\modularmech\armscripts\beamarm.lua 1,129c1,148 < require "/vehicles/modularmech/armscripts/base.lua" < < BeamArm = MechArm:extend() < < function BeamArm:init() < self.state = FSM:new() < end < < function BeamArm:update(dt) < if self.state.state then < self.state:update() < end < < if not self.state.state then < if self.isFiring then < self.state:set(self.windupState, self) < end < end < < if self.state.state then < self.bobLocked = true < else < animator.setAnimationState(self.armName, "idle") < self.bobLocked = false < end < end < < function BeamArm:windupState() < local stateTimer = self.windupTime < < animator.setAnimationState(self.armName, "windup") < animator.playSound(self.armName .. "Windup") < < while stateTimer > 0 do < animator.rotateTransformationGroup(self.armName, self.aimAngle, self.shoulderOffset) < < local dt = script.updateDt() < stateTimer = stateTimer - dt < coroutine.yield() < end < < if self.isFiring then < self.state:set(self.fireState, self) < else < self.state:set(self.winddownState, self) < animator.playSound(self.armName .. "WinddownNoFire") < end < end < < function BeamArm:fireState() < local stateTimer = self.fireTime < < animator.rotateTransformationGroup(self.armName, self.aimAngle, self.shoulderOffset) < < local endPoint, beamCollision, beamLength = self:updateBeam() < < animator.playSound(self.armName .. "Fire") < animator.setParticleEmitterBurstCount(self.armName .. "Beam", math.ceil(self.beamParticleDensity * beamLength)) < animator.burstParticleEmitter(self.armName .. "Beam") < animator.setAnimationState(self.armName .. "Beam", "fire", true) < < vehicle.setDamageSourceEnabled(self.armName .. "Beam", true) < < self.aimLocked = self.lockAim < < if beamCollision and self.beamTileDamage > 0 then < local maximumEndPoint = vec2.add(self.firePosition, vec2.mul(self.aimVector, self.beamLength)) < local damagePositions = world.collisionBlocksAlongLine(self.firePosition, maximumEndPoint, nil, self.beamTileDamageDepth) < local driver = vehicle.entityLoungingIn("seat") < world.damageTiles(damagePositions, "foreground", self.firePosition, "beamish", self.beamTileDamage, 99, driver) < world.damageTiles(damagePositions, "background", self.firePosition, "beamish", self.beamTileDamage, 99, driver) < end < < coroutine.yield() < < while stateTimer > 0 do < animator.rotateTransformationGroup(self.armName, self.aimAngle, self.shoulderOffset) < < self:updateBeam() < < local dt = script.updateDt() < stateTimer = stateTimer - dt < coroutine.yield() < end < < self.aimLocked = false < < vehicle.setDamageSourceEnabled(self.armName .. "Beam", false) < < if self.isFiring and self.repeatFire then < self.state:set(self.fireState, self) < else < self.state:set(self.winddownState, self) < end < end < < function BeamArm:winddownState() < local stateTimer = self.winddownTime or 0 < < animator.setAnimationState(self.armName, "winddown") < animator.playSound(self.armName .. "Winddown") < < while stateTimer > 0 do < animator.rotateTransformationGroup(self.armName, self.aimAngle, self.shoulderOffset) < < local dt = script.updateDt() < stateTimer = stateTimer - dt < coroutine.yield() < end < < self.state:set() < end < < function BeamArm:updateBeam() < local endPoint = vec2.add(self.firePosition, vec2.mul(self.aimVector, self.beamLength)) < local beamCollision = world.lineCollision(self.firePosition, endPoint) < if beamCollision then < endPoint = beamCollision < end < local beamLength = world.magnitude(self.firePosition, endPoint) < < animator.resetTransformationGroup(self.armName .. "Beam") < animator.scaleTransformationGroup(self.armName .. "Beam", {beamLength, 1}, {self.beamSourceOffset[1], self.beamSourceOffset[2] - self.beamHeight / 2}) < < local particleRegion = {self.beamSourceOffset[1], self.beamSourceOffset[2], self.beamSourceOffset[1] + beamLength, self.beamSourceOffset[2]} < animator.setParticleEmitterOffsetRegion(self.armName .. "Beam", particleRegion) < < return endPoint, beamCollision, beamLength < end --- > require "/vehicles/modularmech/armscripts/base.lua" > > BeamArm = MechArm:extend() > > function BeamArm:init() > self.state = FSM:new() > > if self.chain ~= nil then > self.chain.sourcePart = self.armName > self.chain.endPart = self.armName > end > end > > function BeamArm:update(dt) > if self.state.state then > self.state:update() > end > > if not self.state.state then > if self.isFiring then > self.state:set(self.windupState, self) > end > end > > if self.state.state then > self.bobLocked = true > else > animator.setAnimationState(self.armName, "idle") > self.bobLocked = false > end > end > > function BeamArm:windupState() > local stateTimer = self.windupTime > > animator.setAnimationState(self.armName, "windup") > animator.playSound(self.armName .. "Windup") > > while stateTimer > 0 do > animator.rotateTransformationGroup(self.armName, self.aimAngle, self.shoulderOffset) > > local dt = script.updateDt() > stateTimer = stateTimer - dt > coroutine.yield() > end > > if self.isFiring then > self.state:set(self.fireState, self) > else > self.state:set(self.winddownState, self) > animator.playSound(self.armName .. "WinddownNoFire") > end > end > > function BeamArm:fireState() > local stateTimer = self.fireTime > > animator.rotateTransformationGroup(self.armName, self.aimAngle, self.shoulderOffset) > > local endPoint, beamCollision, beamLength = self:updateBeam() > > animator.playSound(self.armName .. "Fire") > animator.setParticleEmitterBurstCount(self.armName .. "Beam", math.ceil(self.beamParticleDensity * beamLength)) > animator.burstParticleEmitter(self.armName .. "Beam") > if self.scriptedBeam then > vehicle.setAnimationParameter("chains", {self.chain}) > else > animator.setAnimationState(self.armName .. "Beam", "fire", true) > end > > vehicle.setDamageSourceEnabled(self.armName .. "Beam", true) > > self.aimLocked = self.lockAim > > if beamCollision and self.beamTileDamage > 0 then > local maximumEndPoint = vec2.add(self.firePosition, vec2.mul(self.aimVector, self.beamLength)) > local damagePositions = world.collisionBlocksAlongLine(self.firePosition, maximumEndPoint, nil, self.beamTileDamageDepth) > local driver = vehicle.entityLoungingIn("seat") > world.damageTiles(damagePositions, "foreground", self.firePosition, "beamish", self.beamTileDamage, 99, driver) > world.damageTiles(damagePositions, "background", self.firePosition, "beamish", self.beamTileDamage, 99, driver) > end > > coroutine.yield() > > while stateTimer > 0 and (self.holdFire or self.isFiring) do > animator.rotateTransformationGroup(self.armName, self.aimAngle, self.shoulderOffset) > > self:updateBeam() > > local dt = script.updateDt() > stateTimer = stateTimer - dt > coroutine.yield() > end > > self.aimLocked = false > > if self.scriptedBeam then > vehicle.setAnimationParameter("chains", {self.chain}) > end > > vehicle.setDamageSourceEnabled(self.armName .. "Beam", false) > > if self.isFiring and self.repeatFire then > self.state:set(self.fireState, self) > else > self.state:set(self.winddownState, self) > end > end > > function BeamArm:winddownState() > local stateTimer = self.winddownTime or 0 > > animator.setAnimationState(self.armName, "winddown") > animator.playSound(self.armName .. "Winddown") > > if self.scriptedBeam then > vehicle.setAnimationParameter("chains", {}) > end > > while stateTimer > 0 do > animator.rotateTransformationGroup(self.armName, self.aimAngle, self.shoulderOffset) > > local dt = script.updateDt() > stateTimer = stateTimer - dt > coroutine.yield() > end > > self.state:set() > end > > function BeamArm:updateBeam() > local endPoint = vec2.add(self.firePosition, vec2.mul(self.aimVector, self.beamLength)) > local beamCollision = world.lineCollision(self.firePosition, endPoint) > if beamCollision then > endPoint = beamCollision > end > local beamLength = world.magnitude(self.firePosition, endPoint) > > if not self.scriptedBeam then > animator.resetTransformationGroup(self.armName .. "Beam") > animator.scaleTransformationGroup(self.armName .. "Beam", {beamLength, 1}, {self.beamSourceOffset[1], self.beamSourceOffset[2] - self.beamHeight / 2}) > end > > local particleRegion = {self.beamSourceOffset[1], self.beamSourceOffset[2], self.beamSourceOffset[1] + beamLength, self.beamSourceOffset[2]} > animator.setParticleEmitterOffsetRegion(self.armName .. "Beam", particleRegion) > > return endPoint, beamCollision, beamLength > end vehicles\sportscar\sportscar.animation 75a76,113 > }, > "warp" : { > "properties" : { > "centered" : true, > "zLevel" : 3, > "fullbright" : true, > "transformationGroups" : ["flip", "rotation"] > }, > "partStates" : { > "movement" : { > "warpInPart1" : { > "properties" : { > "image" : "sportscarwarp.png:warpInPart1." > } > }, > "warpInPart2" : { > "properties" : { > "image" : "sportscarwarp.png:warpInPart2." > } > }, > "idle" : { > "properties" : {} > }, > "warpOutPart1" : { > "properties" : { > "image" : "sportscarwarp.png:warpOutPart1." > } > }, > "warpOutPart2" : { > "properties" : { > "image" : "sportscarwarp.png:warpOutPart2." > } > }, > "invisible" : { > "properties" : {} > } > } > }