FILES ----- celestial.config dungeon_worlds.config spawner.config weather.config biomes\surface\midnight.biome [NEW] celestial\system\terrestrial\biomes\midnight\maskie1.png [NEW] celestial\system\terrestrial\biomes\midnight\maskie2.png [NEW] celestial\system\terrestrial\biomes\midnight\maskie3.png [NEW] celestial\system\terrestrial\horizon\textures\midnight_l.png [NEW] celestial\system\terrestrial\horizon\textures\midnight_r.png dialog\combat.config dungeons\missions\apexmissions\apexmission1.json [NEW] dungeons\undergroundmaze\mazeornate\chamberendleft.json [NEW] dungeons\undergroundmaze\mazeornate\chamberendright.json [NEW] dungeons\undergroundmaze\mazeornate\chamberendtop.json [NEW] dungeons\undergroundmaze\mazeornate\corner1a.json [NEW] dungeons\undergroundmaze\mazeornate\corner1b.json [NEW] dungeons\undergroundmaze\mazeornate\corner1c.json [NEW] dungeons\undergroundmaze\mazeornate\corner1d.json [NEW] dungeons\undergroundmaze\mazeornate\corner1e.json [NEW] dungeons\undergroundmaze\mazeornate\corner2a.json [NEW] dungeons\undergroundmaze\mazeornate\corner2b.json [NEW] dungeons\undergroundmaze\mazeornate\corner2c.json [NEW] dungeons\undergroundmaze\mazeornate\corner2d.json [NEW] dungeons\undergroundmaze\mazeornate\corner2e.json [NEW] dungeons\undergroundmaze\mazeornate\corner2f.json [NEW] dungeons\undergroundmaze\mazeornate\corner3a.json [NEW] dungeons\undergroundmaze\mazeornate\corner3b.json [NEW] dungeons\undergroundmaze\mazeornate\corner3c.json [NEW] dungeons\undergroundmaze\mazeornate\corner3d.json [NEW] dungeons\undergroundmaze\mazeornate\corner3e.json [NEW] dungeons\undergroundmaze\mazeornate\corner4a.json [NEW] dungeons\undergroundmaze\mazeornate\corner4b.json [NEW] dungeons\undergroundmaze\mazeornate\corner4c.json [NEW] dungeons\undergroundmaze\mazeornate\corner4d.json [NEW] dungeons\undergroundmaze\mazeornate\corner4e.json [NEW] dungeons\undergroundmaze\mazeornate\corner4f.json [NEW] dungeons\undergroundmaze\mazeornate\drop.json [NEW] dungeons\undergroundmaze\mazeornate\drop1a.json [NEW] dungeons\undergroundmaze\mazeornate\drop1b.json [NEW] dungeons\undergroundmaze\mazeornate\drop1c.json [NEW] dungeons\undergroundmaze\mazeornate\drop1d.json [NEW] dungeons\undergroundmaze\mazeornate\endleft1.json [NEW] dungeons\undergroundmaze\mazeornate\endleft1a.json [NEW] dungeons\undergroundmaze\mazeornate\endleft1achest.json [NEW] dungeons\undergroundmaze\mazeornate\endleft1b.json [NEW] dungeons\undergroundmaze\mazeornate\endleft1bchest.json [NEW] dungeons\undergroundmaze\mazeornate\endleft1c.json [NEW] dungeons\undergroundmaze\mazeornate\endleft1cchest.json [NEW] dungeons\undergroundmaze\mazeornate\endleft1d.json [NEW] dungeons\undergroundmaze\mazeornate\endleft1dchest.json [NEW] dungeons\undergroundmaze\mazeornate\endleft2.json [NEW] dungeons\undergroundmaze\mazeornate\endleft2a.json [NEW] dungeons\undergroundmaze\mazeornate\endleft2achest.json [NEW] dungeons\undergroundmaze\mazeornate\endleft2b.json [NEW] dungeons\undergroundmaze\mazeornate\endleft2bchest.json [NEW] dungeons\undergroundmaze\mazeornate\endleft2c.json [NEW] dungeons\undergroundmaze\mazeornate\endleft2cchest.json [NEW] dungeons\undergroundmaze\mazeornate\endleft2d.json [NEW] dungeons\undergroundmaze\mazeornate\endleft2dchest.json [NEW] dungeons\undergroundmaze\mazeornate\endleft2e.json [NEW] dungeons\undergroundmaze\mazeornate\endleft2echest.json [NEW] dungeons\undergroundmaze\mazeornate\endright1.json [NEW] dungeons\undergroundmaze\mazeornate\endright1a.json [NEW] dungeons\undergroundmaze\mazeornate\endright1achest.json [NEW] dungeons\undergroundmaze\mazeornate\endright1b.json [NEW] dungeons\undergroundmaze\mazeornate\endright1bchest.json [NEW] dungeons\undergroundmaze\mazeornate\endright1c.json [NEW] dungeons\undergroundmaze\mazeornate\endright1cchest.json [NEW] dungeons\undergroundmaze\mazeornate\endright1d.json [NEW] dungeons\undergroundmaze\mazeornate\endright1dchest.json [NEW] dungeons\undergroundmaze\mazeornate\endright2.json [NEW] dungeons\undergroundmaze\mazeornate\endright2a.json [NEW] dungeons\undergroundmaze\mazeornate\endright2achest.json [NEW] dungeons\undergroundmaze\mazeornate\endright2b.json [NEW] dungeons\undergroundmaze\mazeornate\endright2bchest.json [NEW] dungeons\undergroundmaze\mazeornate\endright2c.json [NEW] dungeons\undergroundmaze\mazeornate\endright2cchest.json [NEW] dungeons\undergroundmaze\mazeornate\endright2d.json [NEW] dungeons\undergroundmaze\mazeornate\endright2dchest.json [NEW] dungeons\undergroundmaze\mazeornate\endright2e.json [NEW] dungeons\undergroundmaze\mazeornate\endright2echest.json [NEW] dungeons\undergroundmaze\mazeornate\entryleft.json [NEW] dungeons\undergroundmaze\mazeornate\entryright.json [NEW] dungeons\undergroundmaze\mazeornate\entrytop.json [NEW] dungeons\undergroundmaze\mazeornate\hall1a.json [NEW] dungeons\undergroundmaze\mazeornate\hall1b.json [NEW] dungeons\undergroundmaze\mazeornate\hall1c.json [NEW] dungeons\undergroundmaze\mazeornate\hall1d.json [NEW] dungeons\undergroundmaze\mazeornate\hall1e.json [NEW] dungeons\undergroundmaze\mazeornate\hall1f.json [NEW] dungeons\undergroundmaze\mazeornate\hall1g.json [NEW] dungeons\undergroundmaze\mazeornate\hall1h.json [NEW] dungeons\undergroundmaze\mazeornate\hall1i.json [NEW] dungeons\undergroundmaze\mazeornate\hall2a.json [NEW] dungeons\undergroundmaze\mazeornate\hall2b.json [NEW] dungeons\undergroundmaze\mazeornate\hall2c.json [NEW] dungeons\undergroundmaze\mazeornate\hall2d.json [NEW] dungeons\undergroundmaze\mazeornate\hall2e.json [NEW] dungeons\undergroundmaze\mazeornate\hall2f.json [NEW] dungeons\undergroundmaze\mazeornate\hall2g.json [NEW] dungeons\undergroundmaze\mazeornate\hall2h.json [NEW] dungeons\undergroundmaze\mazeornate\hall2i.json [NEW] dungeons\undergroundmaze\mazeornate\junction1a.json [NEW] dungeons\undergroundmaze\mazeornate\junction1b.json [NEW] dungeons\undergroundmaze\mazeornate\junction1c.json [NEW] dungeons\undergroundmaze\mazeornate\junction1d.json [NEW] dungeons\undergroundmaze\mazeornate\junction1e.json [NEW] dungeons\undergroundmaze\mazeornate\junction2a.json [NEW] dungeons\undergroundmaze\mazeornate\junction2b.json [NEW] dungeons\undergroundmaze\mazeornate\junction2c.json [NEW] dungeons\undergroundmaze\mazeornate\junction2d.json [NEW] dungeons\undergroundmaze\mazeornate\junction2e.json [NEW] dungeons\undergroundmaze\mazeornate\junction3a.json [NEW] dungeons\undergroundmaze\mazeornate\junction3b.json [NEW] dungeons\undergroundmaze\mazeornate\junction3c.json [NEW] dungeons\undergroundmaze\mazeornate\junction3d.json [NEW] dungeons\undergroundmaze\mazeornate\junction3e.json [NEW] dungeons\undergroundmaze\mazeornate\junction3f.json [NEW] dungeons\undergroundmaze\mazeornate\junction4a.json [NEW] dungeons\undergroundmaze\mazeornate\junction4b.json [NEW] dungeons\undergroundmaze\mazeornate\junction4c.json [NEW] dungeons\undergroundmaze\mazeornate\junction4d.json [NEW] dungeons\undergroundmaze\mazeornate\junction4e.json [NEW] dungeons\undergroundmaze\mazeornate\junction4f.json [NEW] dungeons\undergroundmaze\mazeornate\longhall1a.json [NEW] dungeons\undergroundmaze\mazeornate\longhall1b.json [NEW] dungeons\undergroundmaze\mazeornate\longhall1c.json [NEW] dungeons\undergroundmaze\mazeornate\longhall1d.json [NEW] dungeons\undergroundmaze\mazeornate\longhall1e.json [NEW] dungeons\undergroundmaze\mazeornate\longhall1f.json [NEW] dungeons\undergroundmaze\mazeornate\longhall1g.json [NEW] dungeons\undergroundmaze\mazeornate\longhall2a.json [NEW] dungeons\undergroundmaze\mazeornate\longhall2b.json [NEW] dungeons\undergroundmaze\mazeornate\longhall2c.json [NEW] dungeons\undergroundmaze\mazeornate\longhall2d.json [NEW] dungeons\undergroundmaze\mazeornate\longhall2e.json [NEW] dungeons\undergroundmaze\mazeornate\longhall2f.json [NEW] dungeons\undergroundmaze\mazeornate\longhall2g.json [NEW] dungeons\undergroundmaze\mazeornate\mazeornate.dungeon interface\title\firstlogo.png interface\title\logo.png [NEW] items\active\weapons\weapon.lua items\active\weapons\melee\axe\commonaxe.activeitem items\active\weapons\melee\axe\rareaxe.activeitem items\active\weapons\melee\axe\uncommonaxe.activeitem items\active\weapons\melee\broadsword\broadsword.lua items\active\weapons\melee\broadsword\commonbroadsword.activeitem items\active\weapons\melee\broadsword\rarebroadsword.activeitem items\active\weapons\melee\broadsword\uncommonbroadsword.activeitem items\active\weapons\melee\hammer\hammer.lua items\active\weapons\melee\shortsword\commonshortsword.activeitem items\active\weapons\melee\shortsword\rareshortsword.activeitem items\active\weapons\melee\shortsword\uncommonshortsword.activeitem items\active\weapons\melee\spear\commonspear.activeitem items\active\weapons\melee\spear\rarespear.activeitem items\active\weapons\melee\spear\spear.lua items\active\weapons\melee\spear\uncommonspear.activeitem [NEW] items\active\weapons\ranged\gun.animation items\active\weapons\ranged\gun.lua [NEW] items\active\weapons\ranged\assaultrifle\assaultnames.config [NEW] items\active\weapons\ranged\assaultrifle\commonassaultrifle.activeitem [NEW] items\active\weapons\ranged\assaultrifle\icon.png [NEW] items\active\weapons\ranged\assaultrifle\rareassaultrifle.activeitem [NEW] items\active\weapons\ranged\assaultrifle\uncommonassaultrifle.activeitem [NEW] items\active\weapons\ranged\assaultrifle\barrel\1.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\10.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\11.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\12.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\13.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\14.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\15.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\16.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\17.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\18.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\19.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\2.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\20.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\3.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\4.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\5.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\6.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\7.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\8.png [NEW] items\active\weapons\ranged\assaultrifle\barrel\9.png [NEW] items\active\weapons\ranged\assaultrifle\butt\1.png [NEW] items\active\weapons\ranged\assaultrifle\butt\10.png [NEW] items\active\weapons\ranged\assaultrifle\butt\11.png [NEW] items\active\weapons\ranged\assaultrifle\butt\12.png [NEW] items\active\weapons\ranged\assaultrifle\butt\13.png [NEW] items\active\weapons\ranged\assaultrifle\butt\14.png [NEW] items\active\weapons\ranged\assaultrifle\butt\15.png [NEW] items\active\weapons\ranged\assaultrifle\butt\16.png [NEW] items\active\weapons\ranged\assaultrifle\butt\17.png [NEW] items\active\weapons\ranged\assaultrifle\butt\18.png [NEW] items\active\weapons\ranged\assaultrifle\butt\19.png [NEW] items\active\weapons\ranged\assaultrifle\butt\2.png [NEW] items\active\weapons\ranged\assaultrifle\butt\20.png [NEW] items\active\weapons\ranged\assaultrifle\butt\3.png [NEW] items\active\weapons\ranged\assaultrifle\butt\4.png [NEW] items\active\weapons\ranged\assaultrifle\butt\5.png [NEW] items\active\weapons\ranged\assaultrifle\butt\6.png [NEW] items\active\weapons\ranged\assaultrifle\butt\7.png [NEW] items\active\weapons\ranged\assaultrifle\butt\8.png [NEW] items\active\weapons\ranged\assaultrifle\butt\9.png [NEW] items\active\weapons\ranged\assaultrifle\middle\1.png [NEW] items\active\weapons\ranged\assaultrifle\middle\10.png [NEW] items\active\weapons\ranged\assaultrifle\middle\11.png [NEW] items\active\weapons\ranged\assaultrifle\middle\12.png [NEW] items\active\weapons\ranged\assaultrifle\middle\13.png [NEW] items\active\weapons\ranged\assaultrifle\middle\14.png [NEW] items\active\weapons\ranged\assaultrifle\middle\15.png [NEW] items\active\weapons\ranged\assaultrifle\middle\16.png [NEW] items\active\weapons\ranged\assaultrifle\middle\17.png [NEW] items\active\weapons\ranged\assaultrifle\middle\18.png [NEW] items\active\weapons\ranged\assaultrifle\middle\19.png [NEW] items\active\weapons\ranged\assaultrifle\middle\2.png [NEW] items\active\weapons\ranged\assaultrifle\middle\20.png [NEW] items\active\weapons\ranged\assaultrifle\middle\3.png [NEW] items\active\weapons\ranged\assaultrifle\middle\4.png [NEW] items\active\weapons\ranged\assaultrifle\middle\5.png [NEW] items\active\weapons\ranged\assaultrifle\middle\6.png [NEW] items\active\weapons\ranged\assaultrifle\middle\7.png [NEW] items\active\weapons\ranged\assaultrifle\middle\8.png [NEW] items\active\weapons\ranged\assaultrifle\middle\9.png [NEW] items\active\weapons\ranged\machinepistol\commonmachinepistol.activeitem [NEW] items\active\weapons\ranged\machinepistol\icon.png [NEW] items\active\weapons\ranged\machinepistol\mpistolnames.config [NEW] items\active\weapons\ranged\machinepistol\raremachinepistol.activeitem [NEW] items\active\weapons\ranged\machinepistol\uncommonmachinepistol.activeitem [NEW] items\active\weapons\ranged\machinepistol\barrel\1.png [NEW] items\active\weapons\ranged\machinepistol\barrel\10.png [NEW] items\active\weapons\ranged\machinepistol\barrel\11.png [NEW] items\active\weapons\ranged\machinepistol\barrel\12.png [NEW] items\active\weapons\ranged\machinepistol\barrel\13.png [NEW] items\active\weapons\ranged\machinepistol\barrel\14.png [NEW] items\active\weapons\ranged\machinepistol\barrel\15.png [NEW] items\active\weapons\ranged\machinepistol\barrel\16.png [NEW] items\active\weapons\ranged\machinepistol\barrel\17.png [NEW] items\active\weapons\ranged\machinepistol\barrel\18.png [NEW] items\active\weapons\ranged\machinepistol\barrel\19.png [NEW] items\active\weapons\ranged\machinepistol\barrel\2.png [NEW] items\active\weapons\ranged\machinepistol\barrel\20.png [NEW] items\active\weapons\ranged\machinepistol\barrel\3.png [NEW] items\active\weapons\ranged\machinepistol\barrel\4.png [NEW] items\active\weapons\ranged\machinepistol\barrel\5.png [NEW] items\active\weapons\ranged\machinepistol\barrel\6.png [NEW] items\active\weapons\ranged\machinepistol\barrel\7.png [NEW] items\active\weapons\ranged\machinepistol\barrel\8.png [NEW] items\active\weapons\ranged\machinepistol\barrel\9.png [NEW] items\active\weapons\ranged\machinepistol\butt\1.png [NEW] items\active\weapons\ranged\machinepistol\butt\10.png [NEW] items\active\weapons\ranged\machinepistol\butt\11.png [NEW] items\active\weapons\ranged\machinepistol\butt\12.png [NEW] items\active\weapons\ranged\machinepistol\butt\13.png [NEW] items\active\weapons\ranged\machinepistol\butt\14.png [NEW] items\active\weapons\ranged\machinepistol\butt\15.png [NEW] items\active\weapons\ranged\machinepistol\butt\16.png [NEW] items\active\weapons\ranged\machinepistol\butt\17.png [NEW] items\active\weapons\ranged\machinepistol\butt\18.png [NEW] items\active\weapons\ranged\machinepistol\butt\19.png [NEW] items\active\weapons\ranged\machinepistol\butt\2.png [NEW] items\active\weapons\ranged\machinepistol\butt\20.png [NEW] items\active\weapons\ranged\machinepistol\butt\3.png [NEW] items\active\weapons\ranged\machinepistol\butt\4.png [NEW] items\active\weapons\ranged\machinepistol\butt\5.png [NEW] items\active\weapons\ranged\machinepistol\butt\6.png [NEW] items\active\weapons\ranged\machinepistol\butt\7.png [NEW] items\active\weapons\ranged\machinepistol\butt\8.png [NEW] items\active\weapons\ranged\machinepistol\butt\9.png [NEW] items\active\weapons\ranged\machinepistol\middle\1.png [NEW] items\active\weapons\ranged\machinepistol\middle\10.png [NEW] items\active\weapons\ranged\machinepistol\middle\11.png [NEW] items\active\weapons\ranged\machinepistol\middle\12.png [NEW] items\active\weapons\ranged\machinepistol\middle\13.png [NEW] items\active\weapons\ranged\machinepistol\middle\14.png [NEW] items\active\weapons\ranged\machinepistol\middle\15.png [NEW] items\active\weapons\ranged\machinepistol\middle\16.png [NEW] items\active\weapons\ranged\machinepistol\middle\17.png [NEW] items\active\weapons\ranged\machinepistol\middle\18.png [NEW] items\active\weapons\ranged\machinepistol\middle\19.png [NEW] items\active\weapons\ranged\machinepistol\middle\2.png [NEW] items\active\weapons\ranged\machinepistol\middle\20.png [NEW] items\active\weapons\ranged\machinepistol\middle\3.png [NEW] items\active\weapons\ranged\machinepistol\middle\4.png [NEW] items\active\weapons\ranged\machinepistol\middle\5.png [NEW] items\active\weapons\ranged\machinepistol\middle\6.png [NEW] items\active\weapons\ranged\machinepistol\middle\7.png [NEW] items\active\weapons\ranged\machinepistol\middle\8.png [NEW] items\active\weapons\ranged\machinepistol\middle\9.png items\active\weapons\ranged\pistol\commonpistol.activeitem [NEW] items\active\weapons\ranged\pistol\rarepistol.activeitem [NEW] items\active\weapons\ranged\pistol\uncommonpistol.activeitem [NEW] items\active\weapons\ranged\shotgun\commonshotgun.activeitem [NEW] items\active\weapons\ranged\shotgun\icon.png [NEW] items\active\weapons\ranged\shotgun\rareshotgun.activeitem [NEW] items\active\weapons\ranged\shotgun\shotgunnames.config [NEW] items\active\weapons\ranged\shotgun\uncommonshotgun.activeitem [NEW] items\active\weapons\ranged\shotgun\barrel\1.png [NEW] items\active\weapons\ranged\shotgun\barrel\10.png [NEW] items\active\weapons\ranged\shotgun\barrel\11.png [NEW] items\active\weapons\ranged\shotgun\barrel\12.png [NEW] items\active\weapons\ranged\shotgun\barrel\13.png [NEW] items\active\weapons\ranged\shotgun\barrel\14.png [NEW] items\active\weapons\ranged\shotgun\barrel\15.png [NEW] items\active\weapons\ranged\shotgun\barrel\16.png [NEW] items\active\weapons\ranged\shotgun\barrel\17.png [NEW] items\active\weapons\ranged\shotgun\barrel\18.png [NEW] items\active\weapons\ranged\shotgun\barrel\19.png [NEW] items\active\weapons\ranged\shotgun\barrel\2.png [NEW] items\active\weapons\ranged\shotgun\barrel\20.png [NEW] items\active\weapons\ranged\shotgun\barrel\3.png [NEW] items\active\weapons\ranged\shotgun\barrel\4.png [NEW] items\active\weapons\ranged\shotgun\barrel\5.png [NEW] items\active\weapons\ranged\shotgun\barrel\6.png [NEW] items\active\weapons\ranged\shotgun\barrel\7.png [NEW] items\active\weapons\ranged\shotgun\barrel\8.png [NEW] items\active\weapons\ranged\shotgun\barrel\9.png [NEW] items\active\weapons\ranged\shotgun\butt\1.png [NEW] items\active\weapons\ranged\shotgun\butt\10.png [NEW] items\active\weapons\ranged\shotgun\butt\11.png [NEW] items\active\weapons\ranged\shotgun\butt\12.png [NEW] items\active\weapons\ranged\shotgun\butt\13.png [NEW] items\active\weapons\ranged\shotgun\butt\14.png [NEW] items\active\weapons\ranged\shotgun\butt\15.png [NEW] items\active\weapons\ranged\shotgun\butt\16.png [NEW] items\active\weapons\ranged\shotgun\butt\17.png [NEW] items\active\weapons\ranged\shotgun\butt\18.png [NEW] items\active\weapons\ranged\shotgun\butt\19.png [NEW] items\active\weapons\ranged\shotgun\butt\2.png [NEW] items\active\weapons\ranged\shotgun\butt\20.png [NEW] items\active\weapons\ranged\shotgun\butt\3.png [NEW] items\active\weapons\ranged\shotgun\butt\4.png [NEW] items\active\weapons\ranged\shotgun\butt\5.png [NEW] items\active\weapons\ranged\shotgun\butt\6.png [NEW] items\active\weapons\ranged\shotgun\butt\7.png [NEW] items\active\weapons\ranged\shotgun\butt\8.png [NEW] items\active\weapons\ranged\shotgun\butt\9.png [NEW] items\active\weapons\ranged\shotgun\middle\1.png [NEW] items\active\weapons\ranged\shotgun\middle\10.png [NEW] items\active\weapons\ranged\shotgun\middle\11.png [NEW] items\active\weapons\ranged\shotgun\middle\12.png [NEW] items\active\weapons\ranged\shotgun\middle\13.png [NEW] items\active\weapons\ranged\shotgun\middle\14.png [NEW] items\active\weapons\ranged\shotgun\middle\15.png [NEW] items\active\weapons\ranged\shotgun\middle\16.png [NEW] items\active\weapons\ranged\shotgun\middle\17.png [NEW] items\active\weapons\ranged\shotgun\middle\18.png [NEW] items\active\weapons\ranged\shotgun\middle\19.png [NEW] items\active\weapons\ranged\shotgun\middle\2.png [NEW] items\active\weapons\ranged\shotgun\middle\20.png [NEW] items\active\weapons\ranged\shotgun\middle\3.png [NEW] items\active\weapons\ranged\shotgun\middle\4.png [NEW] items\active\weapons\ranged\shotgun\middle\5.png [NEW] items\active\weapons\ranged\shotgun\middle\6.png [NEW] items\active\weapons\ranged\shotgun\middle\7.png [NEW] items\active\weapons\ranged\shotgun\middle\8.png [NEW] items\active\weapons\ranged\shotgun\middle\9.png [NEW] items\armors\biome\darkguard\darkguard.head [NEW] items\armors\biome\darkguard\head.png [NEW] items\armors\biome\darkguard\icons.png [NEW] items\armors\biome\darkguard\mask.png items\buildscripts\buildweapon.lua items\materials\apexshipwall.matitem items\materials\frozenwater.matitem [NEW] monsters\critter\bigwormcritter\bigwormcritter.animation [NEW] monsters\critter\bigwormcritter\bigwormcritter.monstertype [NEW] monsters\critter\bigwormcritter\body.frames [NEW] monsters\critter\bigwormcritter\body.monsterpart [NEW] monsters\critter\bigwormcritter\body.png [NEW] monsters\critter\darkballcritter\body.frames [NEW] monsters\critter\darkballcritter\body.monsterpart [NEW] monsters\critter\darkballcritter\body.png [NEW] monsters\critter\darkballcritter\darkballcritter.animation [NEW] monsters\critter\darkballcritter\darkballcritter.monstertype [NEW] monsters\critter\darknessscabcritter\body.frames [NEW] monsters\critter\darknessscabcritter\body.monsterpart [NEW] monsters\critter\darknessscabcritter\body.png [NEW] monsters\critter\darknessscabcritter\darknessscabcritter.animation [NEW] monsters\critter\darknessscabcritter\darknessscabcritter.monstertype [NEW] monsters\critter\darkoneeyecritter\body.frames [NEW] monsters\critter\darkoneeyecritter\body.monsterpart [NEW] monsters\critter\darkoneeyecritter\body.png [NEW] monsters\critter\darkoneeyecritter\darkoneeyecritter.animation [NEW] monsters\critter\darkoneeyecritter\darkoneeyecritter.monstertype [NEW] monsters\critter\darkthreeeyescritter\body.frames [NEW] monsters\critter\darkthreeeyescritter\body.monsterpart [NEW] monsters\critter\darkthreeeyescritter\body.png [NEW] monsters\critter\darkthreeeyescritter\darkthreeeyescritter.animation [NEW] monsters\critter\darkthreeeyescritter\darkthreeeyescritter.monstertype [NEW] monsters\critter\darkwormcritter\body.frames [NEW] monsters\critter\darkwormcritter\body.monsterpart [NEW] monsters\critter\darkwormcritter\body.png [NEW] monsters\critter\darkwormcritter\darkwormcritter.animation [NEW] monsters\critter\darkwormcritter\darkwormcritter.monstertype [NEW] monsters\critter\dartcritter\body.frames [NEW] monsters\critter\dartcritter\body.monsterpart [NEW] monsters\critter\dartcritter\body.png [NEW] monsters\critter\dartcritter\dartcritter.animation [NEW] monsters\critter\dartcritter\dartcritter.monstertype [NEW] monsters\critter\krawlcritter\body.frames [NEW] monsters\critter\krawlcritter\body.monsterpart [NEW] monsters\critter\krawlcritter\body.png [NEW] monsters\critter\krawlcritter\krawlcritter.animation [NEW] monsters\critter\krawlcritter\krawlcritter.monstertype [NEW] monsters\critter\skywurmcritter\body.frames [NEW] monsters\critter\skywurmcritter\body.monsterpart [NEW] monsters\critter\skywurmcritter\body.png [NEW] monsters\critter\skywurmcritter\skywurmcritter.animation [NEW] monsters\critter\skywurmcritter\skywurmcritter.monstertype [NEW] monsters\flying\minidrone\default.frames [NEW] monsters\flying\minidrone\minidrone.animation [NEW] monsters\flying\minidrone\minidrone.monstertype [NEW] monsters\flying\minidrone\minidrone.partparams [NEW] monsters\flying\minidrone\body\minidronebody\chubbybirdbody.png [NEW] monsters\flying\minidrone\body\minidronebody\minidronebody.monsterpart [NEW] monsters\flying\minidrone\body\minidronebody\minidronebody.png [NEW] monsters\flying\minidrone\head\minidronehead\minidronehead.monsterpart [NEW] monsters\flying\minidrone\head\minidronehead\minidronehead.png [NEW] monsters\flying\minidrone\wings\minidronewings\minidrone.monsterpart [NEW] monsters\flying\minidrone\wings\minidronewings\minidronebwing.png [NEW] monsters\flying\minidrone\wings\minidronewings\minidronefwing.png [NEW] objects\mission\laboratorylight\laboratorylight.frames [NEW] objects\mission\laboratorylight\laboratorylight.object [NEW] objects\mission\laboratorylight\laboratorylight.png [NEW] objects\mission\laboratorylight\laboratorylighticon.png [NEW] objects\mission\laboratorylight\laboratorylightlit.frames [NEW] objects\mission\laboratorylight\laboratorylightlit.png [NEW] parallax\images\midnight1\base\1.png [NEW] parallax\images\midnight2\base\1.png [NEW] parallax\images\midnight3\base\1.png parallax\images\midnightback\base\1.png [NEW] parallax\images\midnightbelow\base\1.png parallax\images\midnightclouds\base\1.png parallax\images\midnightclouds\base\2.png parallax\images\midnightclouds2\base\1.png parallax\images\midnightclouds2\base\2.png parallax\images\midnightclouds3\base\1.png parallax\images\midnightclouds3\base\2.png parallax\surface\midnight.parallax [NEW] recipes\furniture\mission\apexmission1\laboratorylight.recipe [NEW] recipes\furniture\mission\apexmission1\laboratoryverticaldoor.recipe tenants\sub-biome\bones.tenant tiles\materials\pressurizedbeam.material tiles\materials\pressurizedsteel.material [NEW] treasure\missions\apexmission1.treasurepools DIFFS ----- celestial.config 139,141c139 < "baseImages" : "/celestial/system/terrestrial/horizon/textures/volcanic_.png", < "maskTextures" : "/celestial/system/terrestrial/horizon/masks/temperate/_.png", < "maskRange" : [1, 25], --- > "baseImages" : "/celestial/system/terrestrial/horizon/textures/midnight_.png", 263,264c261,262 < "baseImages" : "/celestial/system/terrestrial/biomes/volcanic/maskie.png", < "dynamicsImages" : "/celestial/system/terrestrial/dynamics/temperate/.png", --- > "baseImages" : "/celestial/system/terrestrial/biomes/midnight/maskie.png", > "dynamicsImages" : "/celestial/system/terrestrial/dynamics/arid/.png", 762c760 < "terrestrialType" : [ "arctic", "tundra" ] --- > "terrestrialType" : [ "arctic", "tundra", "midnight" ] 788c786 < "terrestrialType" : [ "volcanic", "scorched", "magma", "midnight" ] --- > "terrestrialType" : [ "volcanic", "scorched", "magma" ] dungeon_worlds.config 75,76c75,76 < "dungeonBaseHeight" : 1000, < "dungeonSurfaceHeight" : 700, --- > "dungeonBaseHeight" : 1230, > "dungeonSurfaceHeight" : 1000, spawner.config 2540a2541,2666 > }, > > "darkballcritter" : { > "spawnParameters" : { > "area" : "air", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.01, > "monsterType" : "darkballcritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "darkoneeyecritter" : { > "spawnParameters" : { > "area" : "air", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.01, > "monsterType" : "darkoneeyecritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "darkthreeeyescritter" : { > "spawnParameters" : { > "area" : "air", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.01, > "monsterType" : "darkthreeeyescritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "darkwormcritter" : { > "spawnParameters" : { > "area" : "air", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.01, > "monsterType" : "darkwormcritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "bigwormcritter" : { > "spawnParameters" : { > "area" : "air", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.01, > "monsterType" : "bigwormcritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "skywurmcritter" : { > "spawnParameters" : { > "area" : "air", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.01, > "monsterType" : "skywurmcritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "krawlcritter" : { > "spawnParameters" : { > "area" : "air", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.01, > "monsterType" : "krawlcritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "darknessscabcritter" : { > "spawnParameters" : { > "area" : "air", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.01, > "monsterType" : "darknessscabcritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "dartcritter" : { > "spawnParameters" : { > "area" : "air", > "region" : "exposed", > "time" : "all" > }, > > "targetDensity" : 0.01, > "monsterType" : "dartcritter", > "monsterParameters" : { > "aggressive" : false > } weather.config 115a116,119 > "midnight" : [ > [1.0, "storm"] > ], > biomes\surface\midnight.biome 5c5 < "statusEffects" : [ "biomeheat" ], --- > "statusEffects" : [ "biomecold" ], 10c10 < "extraSpawns" : [ "phoenixfly", "heathugger" ], --- > "extraSpawns" : [ "phoenixfly", "heathugger", "darkwormcritter", "darkballcritter", "darkoneeyecritter", "darkthreeeyescritter", "bigwormcritter", "skywurmcritter", "krawlcritter", "darknessscabcritter", "dartcritter" ], 12,22c12 < "colors" : "volcanic", < "statusSettings" : { < "stats" : { < "lavaImmunity" : { < "baseValue" : 1.0 < }, < "fireImmunity" : { < "baseValue" : 1.0 < } < } < } --- > "colors" : "ice" 27c17 < "extraSpawns" : [ "phoenixfly", "glowbug" ], --- > "extraSpawns" : [ "phoenixfly", "glowbug", "darkwormcritter", "darkballcritter", "darkoneeyecritter", "darkthreeeyescritter", "bigwormcritter", "skywurmcritter", "krawlcritter", "darknessscabcritter", "dartcritter" ], 29,39c19 < "colors" : "volcanic", < "statusSettings" : { < "stats" : { < "lavaImmunity" : { < "baseValue" : 1.0 < }, < "fireImmunity" : { < "baseValue" : 1.0 < } < } < } --- > "colors" : "ice" 44c24 < "hueShiftOptions" : [-54, -120, 0, 20], --- > "hueShiftOptions" : [0, 0, 0, 0], 48,49c28,29 < "/weather.config:clear", < "/weather.config:clear" --- > "/weather.config:midnight", > "/weather.config:midnight" 78c58 < "tracks" : [ "/sfx/environmental/volcanic_day.ogg" ] --- > "tracks" : [ "/sfx/environmental/tundra_night.ogg" ] 81c61 < "tracks" : [ "/sfx/environmental/volcanic_night.ogg" ] --- > "tracks" : [ "/sfx/environmental/tundra_night.ogg" ] 87c67 < "tracks" : [ "/music/epsilon-indi.ogg", "/music/hymn-to-the-stars.ogg", "/music/planetarium.ogg", "/music/procyon.ogg", "/music/stellarformation.ogg", "/music/vastimmortalsuns.ogg", "/music/atlas.ogg", "/music/blue-straggler.ogg", "/music/cygnus-x1.ogg", "/music/europa.ogg", "/music/haiku.ogg", "/music/m54.ogg", "/music/on-the-beach-at-night.ogg" ] --- > "tracks" : [ "/music/jupiter.ogg", "/music/arctic-constellation1.ogg", "/music/arctic-constellation2.ogg", "/music/mercury.ogg", "/music/mira.ogg", "/music/procyon.ogg", "/music/tranquility-base.ogg", "/music/psyche.ogg", "/music/accretion-disc.ogg", "/music/cygnus-x1.ogg", "/music/eridanus-supervoid.ogg", "/music/horsehead-nebula.ogg", "/music/large-magellanic-cloud.ogg", "/music/m54.ogg", "/music/nomads.ogg", "/music/on-the-beach-at-night.ogg" ] 289c269 < } --- > } \ No newline at end of file dialog\combat.config 40d39 < "You'll never take our freedom!", dungeons\missions\apexmissions\apexmission1.json [TMX file differences are left out for huge size.] items\active\weapons\melee\axe\commonaxe.activeitem 28a29 > "knockbackMode" : "aim", items\active\weapons\melee\axe\rareaxe.activeitem 29a30 > "knockbackMode" : "aim", items\active\weapons\melee\axe\uncommonaxe.activeitem 29a30 > "knockbackMode" : "aim", items\active\weapons\melee\broadsword\broadsword.lua 1a2,3 > require "/scripts/vec2.lua" > require "/items/active/weapons/weapon.lua" 4,32c6 < 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() 36,47c10,11 < self.aimDirection = activeItem.aimAngleAndDirection(0, activeItem.ownerAimPosition())[2] < activeItem.setFacingDirection(self.aimDirection) < idle() < < 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() 53,55c17 < if self.altAbility and self.altAbility.activate then < self.altAbility.activate(fireMode, shiftHeld) < end --- > weapon.activate(fireMode, shiftHeld) 59d20 < animator.setGlobalTag("elementalType", self.elementalType) 63,64c24 < self.aimDirection = activeItem.aimAngleAndDirection(0, activeItem.ownerAimPosition())[2] < activeItem.setFacingDirection(self.aimDirection) --- > weapon.meleeUpdateAim(false, true) 84c44 < setDamage() --- > weapon.setDamage() 90,92c50 < if self.altAbility then < self.altAbility.update(dt, fireMode, shiftHeld) < end --- > weapon.update(dt, fireMode, shiftHeld) 97,98c55,57 < setStance(self.stances.idle) < clearDamage() --- > weapon.setStance(self.stances.idle) > weapon.clearDamage() > self.stance = self.stances.idle 104c63,65 < setStance(self.stances.windup) --- > weapon.setStance(self.stances.windup) > weapon.meleeUpdateAim(false, false) > self.stance = self.stances.windup 110c71,73 < setStance(self.stances.preslash) --- > weapon.setStance(self.stances.preslash) > weapon.meleeUpdateAim(false, false) > self.stance = self.stances.preslash 116d78 < setStance(self.stances.slash) 119a82,85 > > weapon.setStance(self.stances.slash) > weapon.meleeUpdateAim(false, false) > self.stance = self.stances.slash 125,156c91 < 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 damageArea = animator.partPoly("swoosh", "damageArea") or animator.partPoly("blade", "damageArea") < if damageArea then < local damageConfig = util.mergeTable(self.damageConfig, extraDamageConfig or {}) < local damageAmount = damageConfig.baseDamage * root.evalFunction("swordDamageLevelMultiplier", item.instanceValue("level", 1)) * activeItem.ownerPowerMultiplier() < 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 < }}) < else < activeItem.setDamageSources({}) < end < end < < function clearDamage() < activeItem.setDamageSources({}) < end --- > end \ No newline at end of file items\active\weapons\melee\broadsword\commonbroadsword.activeitem 27a28 > "knockbackMode" : "facing", items\active\weapons\melee\broadsword\rarebroadsword.activeitem 29a30 > "knockbackMode" : "facing", items\active\weapons\melee\broadsword\uncommonbroadsword.activeitem 29a30 > "knockbackMode" : "facing", items\active\weapons\melee\hammer\hammer.lua 221c221,223 < rayCheck = true --- > rayCheck = true, > damageRepeatGroup = damageRepeatGroup(), > damageRepeatTimeout = self.fireTime 227a230,233 > function damageRepeatGroup() > return activeItem.ownerEntityId() .. item.instanceValue("itemName") .. activeItem.hand() > end > 234,235c240,242 < local angle = activeItem.aimAngleAndDirection(0, activeItem.ownerAimPosition())[1] < return vec2.rotate({mcontroller.facingDirection() * knockback, 0}, angle) --- > local aimVector = vec2.rotate({knockback, 0}, self.aimAngle) > aimVector[1] = mcontroller.facingDirection() * aimVector[1] > return aimVector items\active\weapons\melee\shortsword\commonshortsword.activeitem 28a29 > "knockbackMode" : "aim", items\active\weapons\melee\shortsword\rareshortsword.activeitem 29a30 > "knockbackMode" : "aim", items\active\weapons\melee\shortsword\uncommonshortsword.activeitem 29a30 > "knockbackMode" : "aim", items\active\weapons\melee\spear\commonspear.activeitem 31a32 > "bladeDamageTimeout" : 0.5, 36c37 < "armRotation" : 0, --- > "armRotation" : -90, 41c42,43 < "armRotation" : -20, --- > "armRotation" : -110, > "weaponRotation" : 20, 46,49c48,50 < "armRotation" : 70, < "twoHanded" : true, < "particleRate" : 60, < "particleRegion" : [3.5, -1.0, 7.5, 1.0] --- > "armRotation" : -20, > "weaponRotation" : -70, > "twoHanded" : true 52,55c53,55 < "armRotation" : 60, < "twoHanded" : true, < "particleRate" : 5, < "particleRegion" : [3.5, -1.0, 5.5, 1.0] --- > "armRotation" : -30, > "weaponRotation" : -60, > "twoHanded" : true 59c59,60 < "armRotation" : 0, --- > "armRotation" : -90, > "weaponRotation" : 0, items\active\weapons\melee\spear\rarespear.activeitem 38a39 > "bladeDamageTimeout" : 0.5, items\active\weapons\melee\spear\spear.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() 37c10,11 < idle() --- > > weapon.setAltAbility() 39,46c13 < 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 --- > cooldown() 58c25 < updateAim(true, true) --- > weapon.meleeUpdateAim(true, true) 65,67c32 < if self.attackTimer > 0 then < -- staybe windin up < else --- > if self.attackTimer == 0 then 74,75c39,40 < setDamage(self.stances.stab.damageConfig) < elseif fireMode ~= "none" then --- > weapon.setDamage(self.stances.stab.damageConfig) > elseif fireMode == "primary" then 83,85c48,50 < if fireMode ~= "none" then < updateAim(true, true) < setDamage(self.stances.hold.damageConfig) --- > if fireMode == "primary" then > weapon.meleeUpdateAim(true, true) > weapon.setDamage(self.stances.hold.damageConfig) 92c57 < updateAim(true, true) --- > weapon.meleeUpdateAim(true, true) 98,100c63 < if self.altAbility then < self.altAbility.update(dt, fireMode, shiftHeld) < end --- > weapon.update(dt, fireMode, shiftHeld) 105,109c68,69 < setStance(self.stances.idle) < updateAim(true, true) < animator.setAnimationState("weapon", "idle") < animator.setAnimationState("swoosh", "idle") < clearDamage() --- > weapon.setStance(self.stances.idle) > weapon.meleeUpdateAim(true, true) 115,118c75,76 < setStance(self.stances.windup) < updateAim(false, false) < animator.setAnimationState("weapon", "idle") < animator.setAnimationState("swoosh", "idle") --- > weapon.setStance(self.stances.windup) > weapon.meleeUpdateAim(false, false) 124,125c82,84 < setStance(self.stances.stab) < updateAim(false, false) --- > weapon.setStance(self.stances.stab) > weapon.meleeUpdateAim(false, false) > 134c93,94 < setStance(self.stances.hold) --- > weapon.setStance(self.stances.hold) > 142c102,104 < setStance(self.stances.cooldown) --- > weapon.setStance(self.stances.cooldown) > weapon.clearDamage() > 145,210c107 < clearDamage() < end < < function updateAim(allowRotate, allowFlip) < animator.rotateGroup("weapon", -self.relativeArmRotation, true) < animator.rotateGroup("swoosh", -self.relativeArmRotation + (math.pi / 2), true) < < local aimAngle, aimDirection = table.unpack(activeItem.aimAngleAndDirection(item.instanceValue("aimOffset"), activeItem.ownerAimPosition())) < < if allowRotate then < self.aimAngle = aimAngle < end < aimAngle = self.aimAngle + self.relativeArmRotation - (math.pi / 2) < activeItem.setArmAngle(aimAngle) < < if allowFlip then < self.aimDirection = aimDirection < end < activeItem.setFacingDirection(self.aimDirection) < end < < function setStance(stance) < self.relativeArmRotation = util.toRadians(stance.armRotation) < 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 < }}) < else < activeItem.setDamageSources({}) < end < end < < function knockbackMomentum(knockback) < local knockbackMode = item.instanceValue("knockbackMode") or "default" < < if knockbackMode == "facing" then < return {mcontroller.facingDirection() * knockback, 0} < elseif knockbackMode == "aim" then < return vec2.rotate({knockback, 0}, self.aimAngle) < end < return knockback < end < < function clearDamage() < activeItem.setDamageSources({}) < end --- > end \ No newline at end of file items\active\weapons\melee\spear\uncommonspear.activeitem 32a33 > "bladeDamageTimeout" : 0.5, items\active\weapons\ranged\gun.lua 2a3 > require "/items/active/weapons/weapon.lua" 5,27c6 < math.randomseed(item.instanceValue("seed")) < < -- 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 type(dps) == "table" then < dps = dps[1] + (math.random() * (dps[2] - dps[1])) < end < < self.pType = item.instanceValue("projectileType") < self.pCount = item.instanceValue("projectileCount", 1) < self.pParams = item.instanceValue("projectileParameters", {}) < self.pParams.power = (dps * self.fireTime) * root.evalFunction("gunDamageLevelMultiplier", item.instanceValue("level", 1)) < self.energyPerShot = root.evalFunction("gunLevelEnergyCostPerDamage", item.instanceValue("level", 1)) * self.pParams.power * self.pCount < < self.fireOffset = animator.partPoint("muzzleFlash", "projectileSource") < updateAim() --- > weapon.setGeneratedRangedStats() 31a11,12 > weapon.setAltAbility() > 39,42c20 < local progress = 1 - (self.attackTimer / self.stances.fire.duration) < activeItem.setArmAngle(self.aimAngle + util.toRadians((progress * self.stances.fire.armRotation))) < animator.rotateGroup("weapon", util.toRadians(progress * self.stances.fire.weaponRotation), true) < --- > weapon.rangedUpdateAim(false, false) 46a25,26 > weapon.rangedUpdateAim(false, true) > 55c35,36 < updateAim() --- > weapon.rangedUpdateAim(true, true) > 64a46,47 > weapon.fireProjectile() > weapon.setStance(self.stances.fire) 70,81d52 < < self.pParams.powerMultiplier = activeItem.ownerPowerMultiplier() < for i = 1, self.pCount do < world.spawnProjectile( < self.pType, < firePosition(), < activeItem.ownerEntityId(), < aimVector(), < false, < self.pParams < ) < end 86a58 > weapon.setStance(self.stances.cooldown) 92,115c64 < setStance(self.stances.idle) < end < < function setStance(stance) < activeItem.setArmAngle(util.toRadians(stance.armRotation)) < animator.rotateGroup("weapon", util.toRadians(stance.weaponRotation), true) < activeItem.setTwoHandedGrip(stance.twoHanded) < end < < function updateAim() < self.aimAngle, self.aimDirection = table.unpack(activeItem.aimAngleAndDirection(item.instanceValue("aimOffset"), activeItem.ownerAimPosition())) < activeItem.setArmAngle(self.aimAngle) < activeItem.setFacingDirection(self.aimDirection) < end < < function firePosition() < return vec2.add(mcontroller.position(), activeItem.handPosition(self.fireOffset)) < end < < function aimVector() < local inaccuracy = item.instanceValue("inaccuracy", 0) < local aimVector = vec2.rotate({1, 0}, self.aimAngle + sb.nrand(inaccuracy, 0)) < aimVector[1] = aimVector[1] * self.aimDirection < return aimVector --- > weapon.setStance(self.stances.idle) items\active\weapons\ranged\pistol\commonpistol.activeitem 7c7 < "shortdescription" : "Test Pistol", --- > "shortdescription" : "Common Pistol", 15c15 < "animation" : "pistol.animation", --- > "animation" : "/items/active/weapons/ranged/gun.animation", 17,19c17,32 < "animationCustom" : { }, < "fireOffset" : [2.5, 0.625], < "aimOffset" : 0.25, // fireOffset[2] - gun offset - 0.25 --- > "animationCustom" : { > "animatedParts" : { > "parts" : { > "muzzleFlash" : { > "properties" : { > "offset" : [0,0.375], > "projectileSource" : [0,0.875] > } > } > } > }, > "sounds" : { > "fire" : [ "/sfx/gun/revolver1.wav" ] > } > }, > "aimOffset" : 0.0, 24c37 < "baseDps" : [3.5, 4.5], --- > "baseDps" : [3.75, 4.5], 28,30c41,43 < "projectileParameters" : { < "power" : 2.7 < }, --- > "projectileParameters" : { }, > > "elementalType" : "physical", 35c48,49 < "weaponRotation" : 0 --- > "weaponRotation" : 0, > "twoHanded" : false 40c54,55 < "weaponRotation" : 10 --- > "weaponRotation" : 10, > "twoHanded" : false 45c60,61 < "weaponRotation" : 10 --- > "weaponRotation" : 10, > "twoHanded" : false 72,76d87 < "animationCustom" : { < "sounds" : { < "fire" : [ "/sfx/gun/revolver1.wav" ] < } < }, items\buildscripts\buildweapon.lua 10c10,11 < math.randomseed(os.time()) --- > local millis = math.floor((os.time() + (os.clock() % 1)) * 1000) > math.randomseed(millis) 39c40 < if builderConfig.elementalType then --- > if not parameters.elementalType and builderConfig.elementalType then 79c80 < local offset = animationConfig.animatedParts.parts[part].properties.offset or {0,0} --- > local offset = config.animationCustom.animatedParts.parts[part].properties.offset or animationConfig.animatedParts.parts[part].properties.offset or {0,0} items\materials\apexshipwall.matitem 6c6 < "description" : "A colourful wall panel.", --- > "description" : "A sleek metal wall panel.", items\materials\frozenwater.matitem 7c7 < "description" : "Solid and sm/reloadooth ice, slippery!", --- > "description" : "Solid and smooth ice, slippery!", parallax\surface\midnight.parallax 21c21 < "kind" : "volcanicbelow", --- > "kind" : "midnightbelow", 28c28 < "kind" : "volcanic1", --- > "kind" : "midnight1", 35c35 < "kind" : "volcanic2", --- > "kind" : "midnight2", 43c43 < "kind" : "volcanic3", --- > "kind" : "midnight3", tenants\sub-biome\bones.tenant 8c8 < "bones": 24 --- > "bone": 24 tiles\materials\pressurizedbeam.material 10c10 < "footstepSound" : "/sfx/blocks/footstep_lightwood.wav", --- > "footstepSound" : "/sfx/blocks/footstep_composite.wav", tiles\materials\pressurizedsteel.material 10c10 < "footstepSound" : "/sfx/blocks/footstep_lightwood.wav", --- > "footstepSound" : "/sfx/blocks/footstep_composite.wav",