From e1441e74a5d8df6eca2cf1aed709488c406e99b5 Mon Sep 17 00:00:00 2001 From: Big Duckie Date: Sun, 3 Jul 2022 14:13:26 -0600 Subject: [PATCH] Commit of decompiled and "updated" code. --- Buffs/BuffTemplate.png | Bin 0 -> 392 bytes Buffs/FoxPetBuff.cs | 26 + Buffs/FoxPetBuff.png | Bin 0 -> 724 bytes Buffs/FoxPistol/FoxBreak.cs | 25 + Buffs/FoxPistol/FoxBreak.png | Bin 0 -> 541 bytes Buffs/FoxPistol/FoxMending.cs | 30 + Buffs/FoxPistol/FoxMending.png | Bin 0 -> 557 bytes Buffs/FoxPistol/FoxMendingBlue.cs | 30 + Buffs/FoxPistol/FoxMendingBlue.png | Bin 0 -> 553 bytes Buffs/FoxPistol/FoxWither.cs | 34 ++ Buffs/FoxPistol/FoxWither.png | Bin 0 -> 632 bytes Buffs/FoxPistol/SpectralMending.cs | 41 ++ Buffs/FoxPistol/SpectralMending.png | Bin 0 -> 1416 bytes Buffs/FoxPistol/SpectralWither.cs | 64 +++ Buffs/FoxPistol/SpectralWither.png | Bin 0 -> 1123 bytes Buffs/GoddessMinionBuff.cs | 33 ++ Buffs/GoddessMinionBuff.png | Bin 0 -> 928 bytes Buffs/HolySmite.cs | 35 ++ Buffs/HolySmite.png | Bin 0 -> 525 bytes Buffs/IllusoryMirror/All-in-one-rainbow.png | Bin 0 -> 2684 bytes Buffs/IllusoryMirror/All-in-one.png | Bin 0 -> 2328 bytes Buffs/IllusoryMirror/BlossomActive.cs | 15 + Buffs/IllusoryMirror/BlossomActive.png | Bin 0 -> 603 bytes Buffs/IllusoryMirror/BlossomInactive.cs | 27 + Buffs/IllusoryMirror/BlossomInactive.png | Bin 0 -> 688 bytes Buffs/IllusoryMirror/SpectralBloom.cs | 45 ++ Buffs/IllusoryMirror/SpectralBloom.png | Bin 0 -> 942 bytes Buffs/IllusoryMirror/SpectralBlossomActive.cs | 15 + .../IllusoryMirror/SpectralBlossomActive.png | Bin 0 -> 804 bytes .../IllusoryMirror/SpectralBlossomInactive.cs | 27 + .../SpectralBlossomInactive.png | Bin 0 -> 914 bytes Buffs/IllusoryMirror/StrongerTogether.cs | 34 ++ Buffs/IllusoryMirror/StrongerTogether.png | Bin 0 -> 743 bytes Buffs/LunarBow/All-in-one-rainbow.png | Bin 0 -> 4111 bytes Buffs/LunarBow/All-in-one.png | Bin 0 -> 3799 bytes Buffs/LunarBow/ShatteredMoon.png | Bin 0 -> 629 bytes Buffs/LunarBow/ShatteredMoonsBlessing.cs | 33 ++ Buffs/LunarBow/ShatteredMoonsBlessing.png | Bin 0 -> 967 bytes Buffs/LunarBow/ShatteredMoonsCurse.cs | 27 + Buffs/LunarBow/ShatteredMoonsCurse.png | Bin 0 -> 899 bytes Buffs/LunarBow/ShatteredMoonsGrace.cs | 25 + Buffs/LunarBow/ShatteredMoonsGrace.png | Bin 0 -> 1001 bytes Buffs/LunarBow/ShatteredMoonsRejuvenation.cs | 28 + Buffs/LunarBow/ShatteredMoonsRejuvenation.png | Bin 0 -> 894 bytes Buffs/LunarBow/SpectralMoonlight.cs | 34 ++ Buffs/LunarBow/SpectralMoonlight.png | Bin 0 -> 1050 bytes Buffs/LunarBow/SpectralMoonsCurse.cs | 27 + Buffs/LunarBow/SpectralMoonsCurse.png | Bin 0 -> 1110 bytes Buffs/LunarBow/SpectralMoonsGrace.cs | 26 + Buffs/LunarBow/SpectralMoonsGrace.png | Bin 0 -> 1123 bytes Buffs/LunarBow/SpectralMoonsRejuvenation.cs | 29 + Buffs/LunarBow/SpectralMoonsRejuvenation.png | Bin 0 -> 1082 bytes Buffs/MechanicalTooth.cs | 26 + Buffs/MechanicalTooth.png | Bin 0 -> 548 bytes Buffs/PinkFoxPetBuff.cs | 26 + Buffs/PinkFoxPetBuff.png | Bin 0 -> 736 bytes Buffs/RainbowsWrath.cs | 55 ++ Buffs/RainbowsWrath.png | Bin 0 -> 1057 bytes Buffs/ShimadaSword/AdvancedBloodLoss.cs | 34 ++ Buffs/ShimadaSword/AdvancedBloodLoss.png | Bin 0 -> 578 bytes Buffs/ShimadaSword/BadDream.cs | 26 + Buffs/ShimadaSword/BadDream.png | Bin 0 -> 492 bytes Buffs/ShimadaSword/BloodLoss.cs | 34 ++ Buffs/ShimadaSword/BloodLoss.png | Bin 0 -> 764 bytes Buffs/ShimadaSword/SpectralRage.cs | 35 ++ Buffs/ShimadaSword/SpectralRage.png | Bin 0 -> 1067 bytes Buffs/ShimadaSword/Stacks/All-In-One.png | Bin 0 -> 1805 bytes Buffs/ShimadaSword/Stacks/BuffTemplatePDN.pdn | Bin 0 -> 4667 bytes Buffs/ShimadaSword/Stacks/DreamFive.cs | 34 ++ Buffs/ShimadaSword/Stacks/DreamFive.png | Bin 0 -> 1261 bytes Buffs/ShimadaSword/Stacks/DreamFour.cs | 37 ++ Buffs/ShimadaSword/Stacks/DreamFour.png | Bin 0 -> 1106 bytes Buffs/ShimadaSword/Stacks/DreamOne.cs | 37 ++ Buffs/ShimadaSword/Stacks/DreamOne.png | Bin 0 -> 1023 bytes Buffs/ShimadaSword/Stacks/DreamThree.cs | 37 ++ Buffs/ShimadaSword/Stacks/DreamThree.png | Bin 0 -> 1080 bytes Buffs/ShimadaSword/Stacks/DreamTwo.cs | 37 ++ Buffs/ShimadaSword/Stacks/DreamTwo.png | Bin 0 -> 1051 bytes Buffs/ShimadaSword/Stacks/EnrichmentFive.cs | 24 + Buffs/ShimadaSword/Stacks/EnrichmentFive.png | Bin 0 -> 1010 bytes Buffs/ShimadaSword/Stacks/EnrichmentFour.cs | 27 + Buffs/ShimadaSword/Stacks/EnrichmentFour.png | Bin 0 -> 845 bytes Buffs/ShimadaSword/Stacks/EnrichmentOne.cs | 27 + Buffs/ShimadaSword/Stacks/EnrichmentOne.png | Bin 0 -> 763 bytes Buffs/ShimadaSword/Stacks/EnrichmentThree.cs | 27 + Buffs/ShimadaSword/Stacks/EnrichmentThree.png | Bin 0 -> 820 bytes Buffs/ShimadaSword/Stacks/EnrichmentTwo.cs | 27 + Buffs/ShimadaSword/Stacks/EnrichmentTwo.png | Bin 0 -> 792 bytes Buffs/ShimadaSword/Stacks/SouleaterFive.cs | 24 + Buffs/ShimadaSword/Stacks/SouleaterFive.png | Bin 0 -> 1001 bytes Buffs/ShimadaSword/Stacks/SouleaterFour.cs | 27 + Buffs/ShimadaSword/Stacks/SouleaterFour.png | Bin 0 -> 839 bytes Buffs/ShimadaSword/Stacks/SouleaterOne.cs | 27 + Buffs/ShimadaSword/Stacks/SouleaterOne.png | Bin 0 -> 753 bytes Buffs/ShimadaSword/Stacks/SouleaterThree.cs | 27 + Buffs/ShimadaSword/Stacks/SouleaterThree.png | Bin 0 -> 813 bytes Buffs/ShimadaSword/Stacks/SouleaterTwo.cs | 27 + Buffs/ShimadaSword/Stacks/SouleaterTwo.png | Bin 0 -> 783 bytes Buffs/Shotgun/Hypercharge.cs | 27 + Buffs/Shotgun/Hypercharge.png | Bin 0 -> 672 bytes Buffs/Shotgun/HyperchargeCooldown.cs | 27 + Buffs/Shotgun/HyperchargeCooldown.png | Bin 0 -> 823 bytes Buffs/Shotgun/Hypercharging.cs | 28 + Buffs/Shotgun/Hypercharging.png | Bin 0 -> 646 bytes Buffs/Shotgun/Ultracharge.cs | 34 ++ Buffs/Shotgun/Ultracharge.png | Bin 0 -> 905 bytes Buffs/Shotgun/UltrachargeCooldown.cs | 27 + Buffs/Shotgun/UltrachargeCooldown.png | Bin 0 -> 834 bytes Buffs/Shotgun/Ultracharging.cs | 28 + Buffs/Shotgun/Ultracharging.png | Bin 0 -> 646 bytes Buffs/StackBuffTemplate.png | Bin 0 -> 415 bytes Buffs/WindUpFabu.cs | 26 + Buffs/WindUpFabu.png | Bin 0 -> 799 bytes Dusts/AxeOfGrassDust.cs | 29 + Dusts/AxeOfGrassDust.png | Bin 0 -> 158 bytes Dusts/AxecaliburDust.cs | 29 + Dusts/AxecaliburDust.png | Bin 0 -> 176 bytes Dusts/BloodCutterDust.cs | 29 + Dusts/BloodCutterDust.png | Bin 0 -> 161 bytes Dusts/BloodDust.cs | 29 + Dusts/BloodDust.png | Bin 0 -> 165 bytes Dusts/CadeceusDust.cs | 29 + Dusts/CadeceusDust.png | Bin 0 -> 171 bytes Dusts/CrystalDust.cs | 29 + Dusts/CrystalDust.png | Bin 0 -> 207 bytes Dusts/CrystalDust2.cs | 29 + Dusts/CrystalDust2.png | Bin 0 -> 182 bytes Dusts/CurseDust.cs | 29 + Dusts/CurseDust.png | Bin 0 -> 211 bytes Dusts/DustTemplate.png | Bin 0 -> 194 bytes Dusts/EnragedOniDust.cs | 29 + Dusts/EnragedOniDust.png | Bin 0 -> 152 bytes Dusts/FoxBreakDust.cs | 29 + Dusts/FoxBreakDust.png | Bin 0 -> 240 bytes Dusts/FoxDust.cs | 29 + Dusts/FoxDust.png | Bin 0 -> 165 bytes Dusts/FoxDustBlue.cs | 29 + Dusts/FoxDustBlue.png | Bin 0 -> 164 bytes Dusts/FoxMendingDust.cs | 29 + Dusts/FoxMendingDust.png | Bin 0 -> 306 bytes Dusts/FoxMendingDustBlue.cs | 29 + Dusts/FoxMendingDustBlue.png | Bin 0 -> 243 bytes Dusts/FoxWitherDust.cs | 29 + Dusts/FoxWitherDust.png | Bin 0 -> 288 bytes Dusts/GoldenDust.cs | 29 + Dusts/GoldenDust.png | Bin 0 -> 156 bytes Dusts/HealingDust.cs | 29 + Dusts/HealingDust.png | Bin 0 -> 211 bytes Dusts/HeartDust.cs | 29 + Dusts/HeartDust.png | Bin 0 -> 207 bytes Dusts/HolyDust.cs | 29 + Dusts/HolyDust.png | Bin 0 -> 208 bytes Dusts/IllusoryMirrorDust.cs | 29 + Dusts/IllusoryMirrorDust.png | Bin 0 -> 154 bytes Dusts/IllusoryMirrorRMBDust.cs | 29 + Dusts/IllusoryMirrorRMBDust.png | Bin 0 -> 146 bytes Dusts/LegendaryDust.cs | 29 + Dusts/LegendaryDust.png | Bin 0 -> 174 bytes Dusts/LegendarySparkle.cs | 29 + Dusts/LegendarySparkle.png | Bin 0 -> 151 bytes Dusts/MeatDust.cs | 29 + Dusts/MeatDust.png | Bin 0 -> 198 bytes Dusts/MoltenWaraxeDust.cs | 29 + Dusts/MoltenWaraxeDust.png | Bin 0 -> 158 bytes Dusts/MuramasasWaraxeDust.cs | 29 + Dusts/MuramasasWaraxeDust.png | Bin 0 -> 162 bytes Dusts/NatureStaffDust.cs | 29 + Dusts/NatureStaffDust.png | Bin 0 -> 147 bytes Dusts/NatureStaffDust2.cs | 29 + Dusts/NatureStaffDust2.png | Bin 0 -> 147 bytes Dusts/NightsAxeDust.cs | 29 + Dusts/NightsAxeDust.png | Bin 0 -> 161 bytes Dusts/NightsAxeSparkle.cs | 29 + Dusts/NightsAxeSparkle.png | Bin 0 -> 149 bytes Dusts/OniDust.cs | 29 + Dusts/OniDust.png | Bin 0 -> 159 bytes Dusts/RainbowCurseDust.cs | 29 + Dusts/RainbowCurseDust.png | Bin 0 -> 213 bytes Dusts/RainbowDust.cs | 29 + Dusts/RainbowDust.png | Bin 0 -> 169 bytes Dusts/RainbowDust2.cs | 29 + Dusts/RainbowDust2.png | Bin 0 -> 166 bytes Dusts/RainbowDust3.cs | 29 + Dusts/RainbowDust3.png | Bin 0 -> 165 bytes Dusts/RainbowHealingDust.cs | 29 + Dusts/RainbowHealingDust.png | Bin 0 -> 177 bytes Dusts/RainbowWrathDust.cs | 29 + Dusts/RainbowWrathDust.png | Bin 0 -> 336 bytes Dusts/RainbowWrathDust2.cs | 29 + Dusts/RainbowWrathDust2.png | Bin 0 -> 251 bytes Dusts/RainbowWrathDust3.cs | 29 + Dusts/RainbowWrathDust3.png | Bin 0 -> 344 bytes Dusts/RyuuDust.cs | 29 + Dusts/RyuuDust.png | Bin 0 -> 172 bytes Dusts/RyuuDust2.cs | 29 + Dusts/RyuuDust2.png | Bin 0 -> 171 bytes Dusts/RyuuDust3.cs | 29 + Dusts/RyuuDust3.png | Bin 0 -> 174 bytes Dusts/RyuuDust4.cs | 29 + Dusts/RyuuDust4.png | Bin 0 -> 174 bytes Dusts/ShimadaSword/ShimadaDust.cs | 29 + Dusts/ShimadaSword/ShimadaDust.png | Bin 0 -> 172 bytes Dusts/Shuriken/StarDust.cs | 29 + Dusts/Shuriken/StarDust.png | Bin 0 -> 165 bytes Dusts/SorcerousDust.cs | 29 + Dusts/SorcerousDust.png | Bin 0 -> 161 bytes Dusts/SorcerousDust2.cs | 29 + Dusts/SorcerousDust2.png | Bin 0 -> 162 bytes Dusts/SorcerousDustBlue.cs | 29 + Dusts/SorcerousDustBlue.png | Bin 0 -> 162 bytes Dusts/SorcerousDustRed.cs | 29 + Dusts/SorcerousDustRed.png | Bin 0 -> 161 bytes Dusts/SorcerousDustYellow.cs | 29 + Dusts/SorcerousDustYellow.png | Bin 0 -> 162 bytes Dusts/SorcerousHellDust.cs | 29 + Dusts/SorcerousHellDust.png | Bin 0 -> 162 bytes Dusts/SorcerousHellDust2.cs | 29 + Dusts/SorcerousHellDust2.png | Bin 0 -> 162 bytes Dusts/SorcerousHellDustPurple.cs | 29 + Dusts/SorcerousHellDustPurple.png | Bin 0 -> 161 bytes Dusts/SorcerousHellDustWhite.cs | 29 + Dusts/SorcerousHellDustWhite.png | Bin 0 -> 152 bytes Dusts/SpectralIllusionDust.cs | 29 + Dusts/SpectralIllusionDust.png | Bin 0 -> 153 bytes Dusts/SpectralIllusionDust2.cs | 29 + Dusts/SpectralIllusionDust2.png | Bin 0 -> 154 bytes Dusts/SpectralIllusionDust3.cs | 29 + Dusts/SpectralIllusionDust3.png | Bin 0 -> 154 bytes Dusts/SpectralIllusionDust4.cs | 29 + Dusts/SpectralIllusionDust4.png | Bin 0 -> 153 bytes Dusts/SpectralWitherDust.cs | 29 + Dusts/SpectralWitherDust.png | Bin 0 -> 243 bytes Dusts/TerraDust.cs | 29 + Dusts/TerraDust.png | Bin 0 -> 172 bytes Dusts/TerraDust2.cs | 29 + Dusts/TerraDust2.png | Bin 0 -> 166 bytes Dusts/TrueDust.cs | 29 + Dusts/TrueDust.png | Bin 0 -> 172 bytes ExtraAction.cs | 3 + FabuPlayer.cs | 525 ++++++++++++++++++ FabuWorld.cs | 8 + FabusMod.cs | 157 ++++++ FabusMod.csproj | 13 + FabusMod.sln | 25 + Helper.cs | 122 ++++ Items/Accessories/HallowedBand.cs | 40 ++ Items/Accessories/HallowedBand.png | Bin 0 -> 552 bytes Items/Accessories/HallowedBand_Front.png | Bin 0 -> 124 bytes Items/Accessories/HarmonyScarf.cs | 53 ++ Items/Accessories/HarmonyScarf.png | Bin 0 -> 569 bytes Items/Accessories/HarmonyScarfUpgraded.cs | 54 ++ Items/Accessories/HarmonyScarfUpgraded.png | Bin 0 -> 621 bytes .../HarmonyScarfUpgraded_Front.png | Bin 0 -> 124 bytes Items/Accessories/HarmonyScarf_Front.png | Bin 0 -> 124 bytes Items/Accessories/HellfireBand.cs | 40 ++ Items/Accessories/HellfireBand.png | Bin 0 -> 498 bytes Items/Accessories/HellfireBand_Front.png | Bin 0 -> 124 bytes Items/Accessories/IronBand.cs | 33 ++ Items/Accessories/IronBand.png | Bin 0 -> 403 bytes Items/Accessories/IronBand_Front.png | Bin 0 -> 124 bytes Items/Accessories/LunaticBand.cs | 60 ++ Items/Accessories/LunaticBand.png | Bin 0 -> 876 bytes Items/Accessories/LunaticBand_Front.png | Bin 0 -> 124 bytes Items/Accessories/NebulaBand.cs | 42 ++ Items/Accessories/NebulaBand.png | Bin 0 -> 639 bytes Items/Accessories/NebulaBand_Front.png | Bin 0 -> 124 bytes Items/Accessories/SolarBand.cs | 43 ++ Items/Accessories/SolarBand.png | Bin 0 -> 515 bytes Items/Accessories/SolarBand_Front.png | Bin 0 -> 124 bytes Items/Accessories/StardustBand.cs | 42 ++ Items/Accessories/StardustBand.png | Bin 0 -> 569 bytes Items/Accessories/StardustBand_Front.png | Bin 0 -> 124 bytes Items/Accessories/ValkyrieWings.cs | 52 ++ Items/Accessories/ValkyrieWings.png | Bin 0 -> 572 bytes Items/Accessories/ValkyrieWings_Wings.png | Bin 0 -> 2013 bytes Items/Accessories/VortexBand.cs | 42 ++ Items/Accessories/VortexBand.png | Bin 0 -> 523 bytes Items/Accessories/VortexBand_Front.png | Bin 0 -> 124 bytes Items/Bars/RainbowChunk.cs | 36 ++ Items/Bars/RainbowChunk.png | Bin 0 -> 602 bytes Items/BossBags.cs | 34 ++ Items/Items/CraftingIngredients/BrokenBand.cs | 23 + .../Items/CraftingIngredients/BrokenBand.png | Bin 0 -> 364 bytes .../Items/CraftingIngredients/GoddessGold.cs | 40 ++ .../Items/CraftingIngredients/GoddessGold.png | Bin 0 -> 469 bytes .../Items/CraftingIngredients/NatureToken.cs | 22 + .../Items/CraftingIngredients/NatureToken.png | Bin 0 -> 504 bytes .../Items/CraftingIngredients/OminousBook.cs | 22 + .../Items/CraftingIngredients/OminousBook.png | Bin 0 -> 384 bytes .../Items/CraftingIngredients/RainbowDust.cs | 22 + .../Items/CraftingIngredients/RainbowDust.png | Bin 0 -> 500 bytes .../CraftingIngredients/RainbowHandle.cs | 22 + .../CraftingIngredients/RainbowHandle.png | Bin 0 -> 1045 bytes .../CraftingIngredients/RainbowMuzzle.cs | 22 + .../CraftingIngredients/RainbowMuzzle.png | Bin 0 -> 1351 bytes .../Items/CraftingIngredients/RainbowToken.cs | 31 ++ .../CraftingIngredients/RainbowToken.png | Bin 0 -> 751 bytes .../Items/CraftingIngredients/SoulofWisdom.cs | 36 ++ .../CraftingIngredients/SoulofWisdom.png | Bin 0 -> 1272 bytes Items/Items/DamageDebugItem.cs | 47 ++ Items/Items/DamageDebugItem.png | Bin 0 -> 484 bytes Items/Items/PetSummons/Apple.cs | 43 ++ Items/Items/PetSummons/Apple.png | Bin 0 -> 571 bytes Items/Items/PetSummons/PinkApple.cs | 42 ++ Items/Items/PetSummons/PinkApple.png | Bin 0 -> 570 bytes Items/Items/PetSummons/SuspiciousFlower.cs | 32 ++ Items/Items/PetSummons/SuspiciousFlower.png | Bin 0 -> 581 bytes .../PetSummons/SuspiciousLookingScrew.cs | 30 + .../PetSummons/SuspiciousLookingScrew.png | Bin 0 -> 354 bytes Items/Items/WeaponParts/UntreatedBowPart.cs | 31 ++ Items/Items/WeaponParts/UntreatedBowPart.png | Bin 0 -> 229 bytes .../WeaponParts/UntreatedShortswordPart.cs | 31 ++ .../WeaponParts/UntreatedShortswordPart.png | Bin 0 -> 290 bytes .../WeaponParts/UntreatedShurikenPart.cs | 31 ++ .../WeaponParts/UntreatedShurikenPart.png | Bin 0 -> 325 bytes .../Items/WeaponParts/UntreatedSwordParts.cs | 31 ++ .../Items/WeaponParts/UntreatedSwordParts.png | Bin 0 -> 356 bytes Items/Tiles/RainbowStation.cs | 38 ++ Items/Tiles/RainbowStation.png | Bin 0 -> 908 bytes Items/Tiles/ReinforcedWorkBench.cs | 36 ++ Items/Tiles/ReinforcedWorkBench.png | Bin 0 -> 470 bytes Items/Tools/GoddessPick.cs | 52 ++ Items/Tools/GoddessPick.png | Bin 0 -> 698 bytes Items/Tools/GoldenDiggingClaw.cs | 59 ++ Items/Tools/GoldenDiggingClaw.png | Bin 0 -> 582 bytes Items/Tools/GoldenHamaxe.cs | 53 ++ Items/Tools/GoldenHamaxe.png | Bin 0 -> 862 bytes Items/Vanity/FoxEars/BlueFoxEars.cs | 26 + Items/Vanity/FoxEars/BlueFoxEars.png | Bin 0 -> 416 bytes Items/Vanity/FoxEars/BlueFoxEars_Head.png | Bin 0 -> 1290 bytes Items/Vanity/FoxEars/FoxEars.cs | 34 ++ Items/Vanity/FoxEars/FoxEars.png | Bin 0 -> 416 bytes Items/Vanity/FoxEars/FoxEars_Head.png | Bin 0 -> 1288 bytes Items/Vanity/FoxEars/PinkFoxEars.cs | 26 + Items/Vanity/FoxEars/PinkFoxEars.png | Bin 0 -> 426 bytes Items/Vanity/FoxEars/PinkFoxEars_Head.png | Bin 0 -> 1326 bytes Items/Vanity/Leafy/LeafyChest.cs | 24 + Items/Vanity/Leafy/LeafyChest.png | Bin 0 -> 439 bytes Items/Vanity/Leafy/LeafyChest_Arms.png | Bin 0 -> 2017 bytes Items/Vanity/Leafy/LeafyChest_Body.png | Bin 0 -> 2805 bytes Items/Vanity/Leafy/LeafyChest_FemaleBody.png | Bin 0 -> 2805 bytes Items/Vanity/Leafy/LeafyFullBody.png | Bin 0 -> 809 bytes Items/Vanity/Leafy/LeafyHat.cs | 24 + Items/Vanity/Leafy/LeafyHat.png | Bin 0 -> 456 bytes Items/Vanity/Leafy/LeafyHat_Head.png | Bin 0 -> 2236 bytes Items/Vanity/Leafy/LeafyLegs.cs | 24 + Items/Vanity/Leafy/LeafyLegs.png | Bin 0 -> 307 bytes Items/Vanity/Leafy/LeafyLegs_Legs.png | Bin 0 -> 2034 bytes Items/Vanity/PlayerSpriteSheetTemplate.png | Bin 0 -> 5133 bytes .../Weapons/Magic/Coalescence/Coalescence.cs | 47 ++ .../Weapons/Magic/Coalescence/Coalescence.png | Bin 0 -> 461 bytes .../Coalescence/DelightfulDevastation.cs | 41 ++ .../Coalescence/DelightfulDevastation.png | Bin 0 -> 531 bytes .../Magic/Coalescence/GoldenVengeance.cs | 41 ++ .../Magic/Coalescence/GoldenVengeance.png | Bin 0 -> 498 bytes .../Magic/Coalescence/HeavensVengeance.cs | 41 ++ .../Magic/Coalescence/HeavensVengeance.png | Bin 0 -> 508 bytes .../Weapons/Magic/Coalescence/HellfireBeam.cs | 41 ++ .../Magic/Coalescence/HellfireBeam.png | Bin 0 -> 449 bytes .../Weapons/Magic/FusionNeedlers/FusedWish.cs | 48 ++ .../Magic/FusionNeedlers/FusedWish.png | Bin 0 -> 1860 bytes .../Weapons/Magic/FusionNeedlers/FusedXmas.cs | 49 ++ .../Magic/FusionNeedlers/FusedXmas.png | Bin 0 -> 1628 bytes .../Magic/FusionNeedlers/FusionNeedler.cs | 48 ++ .../Magic/FusionNeedlers/FusionNeedler.png | Bin 0 -> 1299 bytes Items/Weapons/Magic/IllusoryMirror.cs | 93 ++++ Items/Weapons/Magic/IllusoryMirror.png | Bin 0 -> 840 bytes Items/Weapons/Magic/SpectralIllusion.cs | 95 ++++ Items/Weapons/Magic/SpectralIllusion.png | Bin 0 -> 1328 bytes Items/Weapons/Magic/Staffs/GoldenStaff.cs | 59 ++ Items/Weapons/Magic/Staffs/GoldenStaff.png | Bin 0 -> 934 bytes Items/Weapons/Magic/Staffs/NatureStaff.cs | 60 ++ Items/Weapons/Magic/Staffs/NatureStaff.png | Bin 0 -> 926 bytes Items/Weapons/Magic/Staffs/PiercingStaff.cs | 44 ++ Items/Weapons/Magic/Staffs/PiercingStaff.png | Bin 0 -> 562 bytes .../Magic/Staffs/SorcerousHellstaff.cs | 54 ++ .../Magic/Staffs/SorcerousHellstaff.png | Bin 0 -> 748 bytes .../Magic/Staffs/SorcerousHellstaffWhite.cs | 46 ++ .../Magic/Staffs/SorcerousHellstaffWhite.png | Bin 0 -> 741 bytes Items/Weapons/Magic/Staffs/SorcerousStaff.cs | 47 ++ Items/Weapons/Magic/Staffs/SorcerousStaff.png | Bin 0 -> 629 bytes .../Magic/Staffs/TheWhisperingIceDonator.cs | 57 ++ .../Magic/Staffs/TheWhisperingIceDonator.png | Bin 0 -> 643 bytes Items/Weapons/Magic/Staffs/Tranquility.cs | 59 ++ Items/Weapons/Magic/Staffs/Tranquility.png | Bin 0 -> 881 bytes .../Weapons/Melee/Shortswords/CarbonDagger.cs | 81 +++ .../Melee/Shortswords/CarbonDagger.png | Bin 0 -> 374 bytes .../Melee/Shortswords/CarbonDaggerNihon.cs | 73 +++ .../Melee/Shortswords/CarbonDaggerNihon.png | Bin 0 -> 365 bytes .../Weapons/Melee/Shortswords/GoldenDagger.cs | 84 +++ .../Melee/Shortswords/GoldenDagger.png | Bin 0 -> 514 bytes Items/Weapons/Melee/Shortswords/OniDagger.cs | 76 +++ Items/Weapons/Melee/Shortswords/OniDagger.png | Bin 0 -> 497 bytes .../Shortswords/StonePlatedShortsword.cs | 37 ++ .../Shortswords/StonePlatedShortsword.png | Bin 0 -> 386 bytes .../Melee/Shortswords/TheRainbowsCurse.cs | 92 +++ .../Melee/Shortswords/TheRainbowsCurse.png | Bin 0 -> 729 bytes Items/Weapons/Melee/Shortswords/Wakizashi.cs | 57 ++ Items/Weapons/Melee/Shortswords/Wakizashi.png | Bin 0 -> 356 bytes Items/Weapons/Melee/Swords/GoldenSlasher.cs | 63 +++ Items/Weapons/Melee/Swords/GoldenSlasher.png | Bin 0 -> 865 bytes Items/Weapons/Melee/Swords/RainbowClaymore.cs | 65 +++ .../Weapons/Melee/Swords/RainbowClaymore.png | Bin 0 -> 839 bytes .../Melee/Swords/ShimadaSwords/CarbonSword.cs | 78 +++ .../Swords/ShimadaSwords/CarbonSword.png | Bin 0 -> 599 bytes .../Swords/ShimadaSwords/CarbonSwordNihon.cs | 72 +++ .../Swords/ShimadaSwords/CarbonSwordNihon.png | Bin 0 -> 578 bytes .../Melee/Swords/ShimadaSwords/DemonsFury.cs | 99 ++++ .../Melee/Swords/ShimadaSwords/DemonsFury.png | Bin 0 -> 678 bytes .../Melee/Swords/ShimadaSwords/GoldenFury.cs | 98 ++++ .../Melee/Swords/ShimadaSwords/GoldenFury.png | Bin 0 -> 647 bytes .../Swords/ShimadaSwords/ShimadaSword.cs | 58 ++ .../Swords/ShimadaSwords/ShimadaSword.png | Bin 0 -> 596 bytes .../Swords/ShimadaSwords/StonePlatedKatana.cs | 38 ++ .../ShimadaSwords/StonePlatedKatana.png | Bin 0 -> 518 bytes .../Swords/ShimadaSwords/TheRainbowsHonor.cs | 107 ++++ .../Swords/ShimadaSwords/TheRainbowsHonor.png | Bin 0 -> 1009 bytes Items/Weapons/Melee/Waraxes/RainbowAxe.cs | 100 ++++ Items/Weapons/Melee/Waraxes/RainbowAxe.png | Bin 0 -> 910 bytes Items/Weapons/RainbowDemon/All-In-One.png | Bin 0 -> 7008 bytes Items/Weapons/RainbowDemon/TheRainbowDemon.cs | 65 +++ .../Weapons/RainbowDemon/TheRainbowDemon.png | Bin 0 -> 1919 bytes .../RainbowDemon/TheRainbowDemonClaymore.cs | 60 ++ .../RainbowDemon/TheRainbowDemonClaymore.png | Bin 0 -> 1956 bytes .../RainbowDemon/TheRainbowDemonMagic.cs | 61 ++ .../RainbowDemon/TheRainbowDemonMagic.png | Bin 0 -> 1971 bytes .../RainbowDemon/TheRainbowDemonRanged.cs | 61 ++ .../RainbowDemon/TheRainbowDemonRanged.png | Bin 0 -> 2028 bytes .../RainbowDemon/TheRainbowDemonShredder.cs | 60 ++ .../RainbowDemon/TheRainbowDemonShredder.png | Bin 0 -> 1966 bytes .../RainbowDemon/TheRainbowDemonThrowing.cs | 62 +++ .../RainbowDemon/TheRainbowDemonThrowing.png | Bin 0 -> 1979 bytes Items/Weapons/Ranged/Bows/LunarBow.cs | 72 +++ Items/Weapons/Ranged/Bows/LunarBow.png | Bin 0 -> 1574 bytes Items/Weapons/Ranged/Bows/LunarRainBow.cs | 71 +++ Items/Weapons/Ranged/Bows/LunarRainBow.png | Bin 0 -> 1430 bytes Items/Weapons/Ranged/Bows/PiercingBow.cs | 60 ++ Items/Weapons/Ranged/Bows/PiercingBow.png | Bin 0 -> 480 bytes .../Ranged/Bows/StormBows/DemonsBow.cs | 70 +++ .../Ranged/Bows/StormBows/DemonsBow.png | Bin 0 -> 489 bytes .../Ranged/Bows/StormBows/GoldenKabuki.cs | 69 +++ .../Ranged/Bows/StormBows/GoldenKabuki.png | Bin 0 -> 609 bytes Items/Weapons/Ranged/Bows/StormBows/Kabuki.cs | 69 +++ .../Weapons/Ranged/Bows/StormBows/Kabuki.png | Bin 0 -> 605 bytes .../Weapons/Ranged/Bows/StormBows/RainBow.cs | 69 +++ .../Weapons/Ranged/Bows/StormBows/RainBow.png | Bin 0 -> 614 bytes .../Ranged/Bows/StormBows/StonePlatedBow.cs | 41 ++ .../Ranged/Bows/StormBows/StonePlatedBow.png | Bin 0 -> 518 bytes .../Weapons/Ranged/Bows/StormBows/StormBow.cs | 60 ++ .../Ranged/Bows/StormBows/StormBow.png | Bin 0 -> 513 bytes Items/Weapons/Ranged/FoxPistols/FoxPistol.cs | 103 ++++ Items/Weapons/Ranged/FoxPistols/FoxPistol.png | Bin 0 -> 639 bytes .../Ranged/FoxPistols/FoxPistolBlue.cs | 103 ++++ .../Ranged/FoxPistols/FoxPistolBlue.png | Bin 0 -> 635 bytes .../Ranged/FoxPistols/SpectralHowler.cs | 97 ++++ .../Ranged/FoxPistols/SpectralHowler.png | Bin 0 -> 989 bytes .../Ranged/FusionDrivers/DynasticFuser.cs | 54 ++ .../Ranged/FusionDrivers/DynasticFuser.png | Bin 0 -> 1032 bytes .../FusionDrivers/DynasticFuserGolden.cs | 53 ++ .../FusionDrivers/DynasticFuserGolden.png | Bin 0 -> 1059 bytes .../Ranged/FusionDrivers/FusedRainbow.cs | 64 +++ .../Ranged/FusionDrivers/FusedRainbow.png | Bin 0 -> 908 bytes .../Ranged/FusionDrivers/FusionDriver.cs | 48 ++ .../Ranged/FusionDrivers/FusionDriver.png | Bin 0 -> 1166 bytes .../Ranged/FusionDrivers/ProtectionFuser.cs | 59 ++ .../Ranged/FusionDrivers/ProtectionFuser.png | Bin 0 -> 861 bytes .../ProtectionFuserCarbonFiber.cs | 53 ++ .../ProtectionFuserCarbonFiber.png | Bin 0 -> 866 bytes .../Weapons/Ranged/LightGuns/GoldenStinger.cs | 54 ++ .../Ranged/LightGuns/GoldenStinger.png | Bin 0 -> 608 bytes Items/Weapons/Ranged/LightGuns/LightGun.cs | 55 ++ Items/Weapons/Ranged/LightGuns/LightGun.png | Bin 0 -> 585 bytes .../Ranged/LightGuns/SpectralBlaster.cs | 54 ++ .../Ranged/LightGuns/SpectralBlaster.png | Bin 0 -> 674 bytes Items/Weapons/Ranged/LightGuns/Taegeukgi.cs | 55 ++ Items/Weapons/Ranged/LightGuns/Taegeukgi.png | Bin 0 -> 669 bytes Items/Weapons/Ranged/LightGuns/TheStinger.cs | 60 ++ Items/Weapons/Ranged/LightGuns/TheStinger.png | Bin 0 -> 572 bytes .../Ranged/LightGuns/TheStingerBlackCat.cs | 54 ++ .../Ranged/LightGuns/TheStingerBlackCat.png | Bin 0 -> 604 bytes .../Ranged/MachinePistols/AugmentedUzi.cs | 62 +++ .../Ranged/MachinePistols/AugmentedUzi.png | Bin 0 -> 777 bytes .../Ranged/MachinePistols/CosmicHacker.cs | 67 +++ .../Ranged/MachinePistols/CosmicHacker.png | Bin 0 -> 638 bytes .../Ranged/MachinePistols/MachinePistol.cs | 62 +++ .../Ranged/MachinePistols/MachinePistol.png | Bin 0 -> 1029 bytes .../MachinePistols/MachinePistolGolden.cs | 62 +++ .../MachinePistols/MachinePistolGolden.png | Bin 0 -> 665 bytes Items/Weapons/Ranged/MachinePistols/Verano.cs | 68 +++ .../Weapons/Ranged/MachinePistols/Verano.png | Bin 0 -> 710 bytes .../Ranged/MachinePistols/VeranoRime.cs | 62 +++ .../Ranged/MachinePistols/VeranoRime.png | Bin 0 -> 660 bytes .../Ranged/Peacekeeper/GoddessRevolver.cs | 70 +++ .../Ranged/Peacekeeper/GoddessRevolver.png | Bin 0 -> 524 bytes .../Weapons/Ranged/Peacekeeper/Peaceforcer.cs | 77 +++ .../Ranged/Peacekeeper/Peaceforcer.png | Bin 0 -> 547 bytes .../Peacekeeper/PeaceforcerVanHelsing.cs | 69 +++ .../Peacekeeper/PeaceforcerVanHelsing.png | Bin 0 -> 532 bytes .../Weapons/Ranged/Peacekeeper/Peacegunner.cs | 65 +++ .../Ranged/Peacekeeper/Peacegunner.png | Bin 0 -> 501 bytes .../Ranged/Peacekeeper/PeacegunnerAmerican.cs | 60 ++ .../Peacekeeper/PeacegunnerAmerican.png | Bin 0 -> 573 bytes .../Weapons/Ranged/Peacekeeper/Peacekeeper.cs | 59 ++ .../Ranged/Peacekeeper/Peacekeeper.png | Bin 0 -> 428 bytes Items/Weapons/Ranged/Peacekeeper/Unity.cs | 70 +++ Items/Weapons/Ranged/Peacekeeper/Unity.png | Bin 0 -> 478 bytes .../Ranged/PulsePistols/GoldenPulse.cs | 67 +++ .../Ranged/PulsePistols/GoldenPulse.png | Bin 0 -> 609 bytes Items/Weapons/Ranged/PulsePistols/Graffiti.cs | 67 +++ .../Weapons/Ranged/PulsePistols/Graffiti.png | Bin 0 -> 688 bytes .../Ranged/PulsePistols/PulsePistol.cs | 68 +++ .../Ranged/PulsePistols/PulsePistol.png | Bin 0 -> 623 bytes .../Ranged/PulsePistols/PulseSprayer.cs | 73 +++ .../Ranged/PulsePistols/PulseSprayer.png | Bin 0 -> 670 bytes .../Ranged/PulsePistols/PulseSprayerCadet.cs | 67 +++ .../Ranged/PulsePistols/PulseSprayerCadet.png | Bin 0 -> 600 bytes .../Weapons/Ranged/PulsePistols/PunksPulse.cs | 74 +++ .../Ranged/PulsePistols/PunksPulse.png | Bin 0 -> 632 bytes .../PulsePistols/PunksPulseUltraviolet.cs | 67 +++ .../PulsePistols/PunksPulseUltraviolet.png | Bin 0 -> 632 bytes Items/Weapons/Ranged/Shotguns/Depriver.cs | 94 ++++ Items/Weapons/Ranged/Shotguns/Depriver.png | Bin 0 -> 885 bytes .../Weapons/Ranged/Shotguns/GoldenShotgun.cs | 90 +++ .../Weapons/Ranged/Shotguns/GoldenShotgun.png | Bin 0 -> 1050 bytes .../Ranged/Shotguns/HellfireShotgun.cs | 60 ++ .../Ranged/Shotguns/HellfireShotgun.png | Bin 0 -> 615 bytes .../Weapons/Ranged/Shotguns/HellkinShotgun.cs | 96 ++++ .../Ranged/Shotguns/HellkinShotgun.png | Bin 0 -> 927 bytes .../Ranged/Shotguns/HellkinShotgunDracula.cs | 89 +++ .../Ranged/Shotguns/HellkinShotgunDracula.png | Bin 0 -> 825 bytes .../Weapons/Ranged/Shotguns/HellshiverGun.cs | 67 +++ .../Weapons/Ranged/Shotguns/HellshiverGun.png | Bin 0 -> 686 bytes .../Ranged/Shotguns/HellshiverGunHellfire.cs | 60 ++ .../Ranged/Shotguns/HellshiverGunHellfire.png | Bin 0 -> 856 bytes Items/Weapons/Summon/GoddessSummoner.cs | 63 +++ Items/Weapons/Summon/GoddessSummoner.png | Bin 0 -> 736 bytes .../Thrown/Daggers/ColorfulSolution.cs | 44 ++ .../Thrown/Daggers/ColorfulSolution.png | Bin 0 -> 466 bytes .../Weapons/Thrown/Shuriken/CarbonShuriken.cs | 52 ++ .../Thrown/Shuriken/CarbonShuriken.png | Bin 0 -> 473 bytes .../Thrown/Shuriken/CarbonShurikenNihon.cs | 45 ++ .../Thrown/Shuriken/CarbonShurikenNihon.png | Bin 0 -> 424 bytes .../Weapons/Thrown/Shuriken/HerosShuriken.cs | 46 ++ .../Weapons/Thrown/Shuriken/HerosShuriken.png | Bin 0 -> 476 bytes Items/Weapons/Thrown/Shuriken/OniSlayer.cs | 47 ++ Items/Weapons/Thrown/Shuriken/OniSlayer.png | Bin 0 -> 467 bytes .../Weapons/Thrown/Shuriken/SparklingDemon.cs | 46 ++ .../Thrown/Shuriken/SparklingDemon.png | Bin 0 -> 473 bytes .../Thrown/Shuriken/StonePlatedShuriken.cs | 46 ++ .../Thrown/Shuriken/StonePlatedShuriken.png | Bin 0 -> 478 bytes .../Thrown/Shuriken/TheSpinningRainbow.cs | 45 ++ .../Thrown/Shuriken/TheSpinningRainbow.png | Bin 0 -> 462 bytes NPCs/ModGlobalNPC.cs | 33 ++ NPCs/VanillaNPCShop.cs | 24 + Projectiles/Arrows/DemonArrow.cs | 42 ++ Projectiles/Arrows/DemonArrow.png | Bin 0 -> 337 bytes Projectiles/Arrows/GoldenSpiritArrow.cs | 42 ++ Projectiles/Arrows/GoldenSpiritArrow.png | Bin 0 -> 335 bytes Projectiles/Arrows/LegendaryArrow.cs | 55 ++ Projectiles/Arrows/LegendaryArrow.png | Bin 0 -> 392 bytes Projectiles/Arrows/PiercingArrow.cs | 29 + Projectiles/Arrows/PiercingArrow.png | Bin 0 -> 378 bytes Projectiles/Arrows/RainbowArrow.cs | 80 +++ Projectiles/Arrows/RainbowArrow.png | Bin 0 -> 583 bytes Projectiles/Arrows/StormArrow.cs | 42 ++ Projectiles/Arrows/StormArrow.png | Bin 0 -> 334 bytes Projectiles/Daggers/ColorfulSolution.cs | 81 +++ Projectiles/Daggers/ColorfulSolution.png | Bin 0 -> 508 bytes Projectiles/FoxPistol/BlueBolt.cs | 53 ++ Projectiles/FoxPistol/BlueBolt.png | Bin 0 -> 431 bytes Projectiles/FoxPistol/BlueBoltRMB.cs | 68 +++ Projectiles/FoxPistol/BlueBoltRMB.png | Bin 0 -> 415 bytes Projectiles/FoxPistol/OrangeBolt.cs | 53 ++ Projectiles/FoxPistol/OrangeBolt.png | Bin 0 -> 436 bytes Projectiles/FoxPistol/OrangeBoltRMB.cs | 68 +++ Projectiles/FoxPistol/OrangeBoltRMB.png | Bin 0 -> 415 bytes Projectiles/FoxPistol/RainbowBolt.cs | 73 +++ Projectiles/FoxPistol/RainbowBolt.png | Bin 0 -> 646 bytes Projectiles/FoxPistol/RainbowBoltRMB.cs | 88 +++ Projectiles/FoxPistol/RainbowBoltRMB.png | Bin 0 -> 648 bytes Projectiles/GoldenOrb.cs | 99 ++++ Projectiles/GoldenOrb.png | Bin 0 -> 1444 bytes .../IllusoryMirror/IllusoryMirrorProj.cs | 49 ++ .../IllusoryMirror/IllusoryMirrorProj.png | Bin 0 -> 148 bytes .../IllusoryMirror/IllusoryMirrorRMB.cs | 68 +++ .../IllusoryMirror/IllusoryMirrorRMB.png | Bin 0 -> 7324 bytes .../IllusoryMirror/SpectralIllusionProj.cs | 49 ++ .../IllusoryMirror/SpectralIllusionProj.png | Bin 0 -> 148 bytes .../IllusoryMirror/SpectralIllusionRMB.cs | 78 +++ .../IllusoryMirror/SpectralIllusionRMB.png | Bin 0 -> 13027 bytes Projectiles/IronStinger.cs | 28 + Projectiles/IronStinger.png | Bin 0 -> 484 bytes Projectiles/Lasers/CoalescenceBeam.cs | 189 +++++++ Projectiles/Lasers/CoalescenceBeam.png | Bin 0 -> 797 bytes Projectiles/Lasers/GoldenBeam.cs | 190 +++++++ Projectiles/Lasers/GoldenBeam.png | Bin 0 -> 894 bytes Projectiles/Lasers/HellfireBeamProj.cs | 190 +++++++ Projectiles/Lasers/HellfireBeamProj.png | Bin 0 -> 819 bytes Projectiles/Lasers/RainbowBeam.cs | 192 +++++++ Projectiles/Lasers/RainbowBeam.png | Bin 0 -> 1049 bytes Projectiles/Lasers/VengeanceBeam.cs | 191 +++++++ Projectiles/Lasers/VengeanceBeam.png | Bin 0 -> 877 bytes Projectiles/Lasers/lasertemplate.png | Bin 0 -> 1060 bytes Projectiles/LightBlasts/GoldenLightBlast.cs | 53 ++ Projectiles/LightBlasts/GoldenLightBlast.png | Bin 0 -> 430 bytes Projectiles/LightBlasts/LightBlast.cs | 53 ++ Projectiles/LightBlasts/LightBlast.png | Bin 0 -> 428 bytes Projectiles/LightBlasts/RainbowLightBlast.cs | 75 +++ Projectiles/LightBlasts/RainbowLightBlast.png | Bin 0 -> 646 bytes Projectiles/LunarBolt.cs | 43 ++ Projectiles/LunarBolt.png | Bin 0 -> 306 bytes Projectiles/Minions/GoddessMinion.cs | 74 +++ Projectiles/Minions/GoddessMinion.png | Bin 0 -> 14318 bytes Projectiles/Minions/Minion.cs | 13 + Projectiles/Pets/FoxPet.cs | 42 ++ Projectiles/Pets/FoxPet.png | Bin 0 -> 3327 bytes Projectiles/Pets/MechanicalTooth.cs | 42 ++ Projectiles/Pets/MechanicalTooth.png | Bin 0 -> 653 bytes Projectiles/Pets/PinkFoxPet.cs | 42 ++ Projectiles/Pets/PinkFoxPet.png | Bin 0 -> 3323 bytes Projectiles/Pets/WindUpFabu.cs | 42 ++ Projectiles/Pets/WindUpFabu.png | Bin 0 -> 1173 bytes Projectiles/PulseBullet.cs | 25 + Projectiles/PulseBullet.png | Bin 0 -> 148 bytes Projectiles/PulseBulletBlue.cs | 25 + Projectiles/PulseBulletBlue.png | Bin 0 -> 155 bytes Projectiles/PulseBulletGolden.cs | 25 + Projectiles/PulseBulletGolden.png | Bin 0 -> 157 bytes Projectiles/PulseBulletPink.cs | 25 + Projectiles/PulseBulletPink.png | Bin 0 -> 158 bytes Projectiles/RainbowAxeBeam.cs | 57 ++ Projectiles/RainbowAxeBeam.png | Bin 0 -> 1235 bytes Projectiles/RainbowBullet.cs | 97 ++++ Projectiles/RainbowBullet.png | Bin 0 -> 200 bytes Projectiles/RainbowDemon/RainbowDemonArrow.cs | 83 +++ .../RainbowDemon/RainbowDemonArrow.png | Bin 0 -> 583 bytes .../RainbowDemon/RainbowDemonClaymoreProj.cs | 110 ++++ .../RainbowDemon/RainbowDemonClaymoreProj.png | Bin 0 -> 1770 bytes Projectiles/RainbowDemon/RainbowDemonKnife.cs | 84 +++ .../RainbowDemon/RainbowDemonKnife.png | Bin 0 -> 508 bytes .../RainbowDemon/RainbowDemonMagicBall.cs | 78 +++ .../RainbowDemon/RainbowDemonMagicBall.png | Bin 0 -> 414 bytes Projectiles/RainbowDemon/RainbowDemonMelee.cs | 90 +++ .../RainbowDemon/RainbowDemonMelee.png | Bin 0 -> 1415 bytes .../RainbowDemon/RainbowDemonShredderProj.cs | 53 ++ .../RainbowDemon/RainbowDemonShredderProj.png | Bin 0 -> 1235 bytes Projectiles/RainbowOrb.cs | 109 ++++ Projectiles/RainbowOrb.png | Bin 0 -> 1770 bytes Projectiles/RainbowRyuuichimojiWave.png | Bin 0 -> 1415 bytes Projectiles/Shimada/BloodDrop.cs | 39 ++ Projectiles/Shimada/BloodDrop.png | Bin 0 -> 244 bytes Projectiles/Shimada/DemonProjRMB.cs | 108 ++++ Projectiles/Shimada/DemonProjRMB.png | Bin 0 -> 13501 bytes Projectiles/Shimada/DemonProjRMBSolo.png | Bin 0 -> 1919 bytes Projectiles/Shimada/DemonProjTwo.cs | 88 +++ Projectiles/Shimada/DemonProjTwo.png | Bin 0 -> 375 bytes Projectiles/Shimada/DemonWave.cs | 64 +++ Projectiles/Shimada/DemonWave.png | Bin 0 -> 127 bytes Projectiles/Shimada/DreamCatcherProjRMB.cs | 118 ++++ Projectiles/Shimada/DreamCatcherProjRMB.png | Bin 0 -> 22704 bytes Projectiles/Shimada/DreamCatcherProjTwo.cs | 157 ++++++ Projectiles/Shimada/DreamCatcherProjTwo.png | Bin 0 -> 409 bytes Projectiles/Shimada/DreamCatcherWave.cs | 68 +++ Projectiles/Shimada/DreamCatcherWave.png | Bin 0 -> 127 bytes Projectiles/Shimada/GoldenFuryProjRMB.cs | 107 ++++ Projectiles/Shimada/GoldenFuryProjRMB.png | Bin 0 -> 13957 bytes Projectiles/Shimada/GoldenFuryProjTwo.cs | 88 +++ Projectiles/Shimada/GoldenFuryProjTwo.png | Bin 0 -> 374 bytes Projectiles/Shimada/GoldenFuryWave.cs | 64 +++ Projectiles/Shimada/GoldenFuryWave.png | Bin 0 -> 127 bytes Projectiles/Shimada/RainbowClump.cs | 47 ++ Projectiles/Shimada/RainbowClump.png | Bin 0 -> 335 bytes Projectiles/Shimada/ShimadaWave.cs | 36 ++ Projectiles/Shimada/ShimadaWave.png | Bin 0 -> 127 bytes Projectiles/Shimada/ShimadaWaveNihon.cs | 36 ++ Projectiles/Shimada/ShimadaWaveNihon.png | Bin 0 -> 127 bytes Projectiles/Shortsword/CarbonKnife.cs | 52 ++ Projectiles/Shortsword/CarbonKnife.png | Bin 0 -> 297 bytes Projectiles/Shortsword/CarbonKnifeNihon.cs | 52 ++ Projectiles/Shortsword/CarbonKnifeNihon.png | Bin 0 -> 297 bytes Projectiles/Shortsword/DeathBlossom.cs | 52 ++ Projectiles/Shortsword/DeathBlossom.png | Bin 0 -> 297 bytes Projectiles/Shortsword/FumaShuriken.cs | 73 +++ Projectiles/Shortsword/FumaShuriken.png | Bin 0 -> 488 bytes Projectiles/Shortsword/GoldenKnife.cs | 52 ++ Projectiles/Shortsword/GoldenKnife.png | Bin 0 -> 315 bytes Projectiles/Shortsword/RainbowKnife.cs | 52 ++ Projectiles/Shortsword/RainbowKnife.png | Bin 0 -> 375 bytes Projectiles/Shortsword/Substitute.cs | 14 + Projectiles/Shortsword/Substitute.png | Bin 0 -> 127 bytes Projectiles/Shuriken/CarbonShuriken.cs | 57 ++ Projectiles/Shuriken/CarbonShuriken.png | Bin 0 -> 379 bytes Projectiles/Shuriken/CarbonShurikenNihon.cs | 57 ++ Projectiles/Shuriken/CarbonShurikenNihon.png | Bin 0 -> 311 bytes Projectiles/Shuriken/HerosShuriken.cs | 62 +++ Projectiles/Shuriken/HerosShuriken.png | Bin 0 -> 369 bytes Projectiles/Shuriken/OniSlayer.cs | 57 ++ Projectiles/Shuriken/OniSlayer.png | Bin 0 -> 411 bytes Projectiles/Shuriken/SparklingDemon.cs | 57 ++ Projectiles/Shuriken/SparklingDemon.png | Bin 0 -> 362 bytes .../Shuriken/StonePlatedShurikenProj.cs | 53 ++ .../Shuriken/StonePlatedShurikenProj.png | Bin 0 -> 411 bytes Projectiles/SorcerousStaff/GoldenStaffProj.cs | 73 +++ .../SorcerousStaff/GoldenStaffProj.png | Bin 0 -> 394 bytes Projectiles/SorcerousStaff/NatureStaffProj.cs | 89 +++ .../SorcerousStaff/NatureStaffProj.png | Bin 0 -> 426 bytes .../SorcerousStaff/SorcerousHellstaffProj.cs | 89 +++ .../SorcerousStaff/SorcerousHellstaffProj.png | Bin 0 -> 403 bytes .../SorcerousHellstaffProjWhite.cs | 89 +++ .../SorcerousHellstaffProjWhite.png | Bin 0 -> 402 bytes .../SorcerousStaff/SorcerousStaffProj.cs | 81 +++ .../SorcerousStaff/SorcerousStaffProj.png | Bin 0 -> 446 bytes Projectiles/SorcerousStaff/TranquilityProj.cs | 75 +++ .../SorcerousStaff/TranquilityProj.png | Bin 0 -> 414 bytes Projectiles/SpectralMoonBolt.cs | 69 +++ Projectiles/SpectralMoonBolt.png | Bin 0 -> 521 bytes Projectiles/TheSpinningRainbow.cs | 72 +++ Projectiles/TheSpinningRainbow.png | Bin 0 -> 395 bytes Projectiles/TheWhisperingIcicle.cs | 104 ++++ Projectiles/TheWhisperingIcicle.png | Bin 0 -> 8904 bytes Projectiles/WishNeedle.cs | 99 ++++ Projectiles/WishNeedle.png | Bin 0 -> 357 bytes Properties/launchSettings.json | 16 + Tiles/RainbowStation.cs | 46 ++ Tiles/RainbowStation.png | Bin 0 -> 7258 bytes Tiles/RainbowStationsheet.png | Bin 0 -> 4613 bytes Tiles/ReinforcedWorkBench.cs | 31 ++ Tiles/ReinforcedWorkBench.png | Bin 0 -> 551 bytes build.txt | 5 + description.txt | 26 + icon.png | Bin 0 -> 4539 bytes 731 files changed, 18423 insertions(+) create mode 100644 Buffs/BuffTemplate.png create mode 100644 Buffs/FoxPetBuff.cs create mode 100644 Buffs/FoxPetBuff.png create mode 100644 Buffs/FoxPistol/FoxBreak.cs create mode 100644 Buffs/FoxPistol/FoxBreak.png create mode 100644 Buffs/FoxPistol/FoxMending.cs create mode 100644 Buffs/FoxPistol/FoxMending.png create mode 100644 Buffs/FoxPistol/FoxMendingBlue.cs create mode 100644 Buffs/FoxPistol/FoxMendingBlue.png create mode 100644 Buffs/FoxPistol/FoxWither.cs create mode 100644 Buffs/FoxPistol/FoxWither.png create mode 100644 Buffs/FoxPistol/SpectralMending.cs create mode 100644 Buffs/FoxPistol/SpectralMending.png create mode 100644 Buffs/FoxPistol/SpectralWither.cs create mode 100644 Buffs/FoxPistol/SpectralWither.png create mode 100644 Buffs/GoddessMinionBuff.cs create mode 100644 Buffs/GoddessMinionBuff.png create mode 100644 Buffs/HolySmite.cs create mode 100644 Buffs/HolySmite.png create mode 100644 Buffs/IllusoryMirror/All-in-one-rainbow.png create mode 100644 Buffs/IllusoryMirror/All-in-one.png create mode 100644 Buffs/IllusoryMirror/BlossomActive.cs create mode 100644 Buffs/IllusoryMirror/BlossomActive.png create mode 100644 Buffs/IllusoryMirror/BlossomInactive.cs create mode 100644 Buffs/IllusoryMirror/BlossomInactive.png create mode 100644 Buffs/IllusoryMirror/SpectralBloom.cs create mode 100644 Buffs/IllusoryMirror/SpectralBloom.png create mode 100644 Buffs/IllusoryMirror/SpectralBlossomActive.cs create mode 100644 Buffs/IllusoryMirror/SpectralBlossomActive.png create mode 100644 Buffs/IllusoryMirror/SpectralBlossomInactive.cs create mode 100644 Buffs/IllusoryMirror/SpectralBlossomInactive.png create mode 100644 Buffs/IllusoryMirror/StrongerTogether.cs create mode 100644 Buffs/IllusoryMirror/StrongerTogether.png create mode 100644 Buffs/LunarBow/All-in-one-rainbow.png create mode 100644 Buffs/LunarBow/All-in-one.png create mode 100644 Buffs/LunarBow/ShatteredMoon.png create mode 100644 Buffs/LunarBow/ShatteredMoonsBlessing.cs create mode 100644 Buffs/LunarBow/ShatteredMoonsBlessing.png create mode 100644 Buffs/LunarBow/ShatteredMoonsCurse.cs create mode 100644 Buffs/LunarBow/ShatteredMoonsCurse.png create mode 100644 Buffs/LunarBow/ShatteredMoonsGrace.cs create mode 100644 Buffs/LunarBow/ShatteredMoonsGrace.png create mode 100644 Buffs/LunarBow/ShatteredMoonsRejuvenation.cs create mode 100644 Buffs/LunarBow/ShatteredMoonsRejuvenation.png create mode 100644 Buffs/LunarBow/SpectralMoonlight.cs create mode 100644 Buffs/LunarBow/SpectralMoonlight.png create mode 100644 Buffs/LunarBow/SpectralMoonsCurse.cs create mode 100644 Buffs/LunarBow/SpectralMoonsCurse.png create mode 100644 Buffs/LunarBow/SpectralMoonsGrace.cs create mode 100644 Buffs/LunarBow/SpectralMoonsGrace.png create mode 100644 Buffs/LunarBow/SpectralMoonsRejuvenation.cs create mode 100644 Buffs/LunarBow/SpectralMoonsRejuvenation.png create mode 100644 Buffs/MechanicalTooth.cs create mode 100644 Buffs/MechanicalTooth.png create mode 100644 Buffs/PinkFoxPetBuff.cs create mode 100644 Buffs/PinkFoxPetBuff.png create mode 100644 Buffs/RainbowsWrath.cs create mode 100644 Buffs/RainbowsWrath.png create mode 100644 Buffs/ShimadaSword/AdvancedBloodLoss.cs create mode 100644 Buffs/ShimadaSword/AdvancedBloodLoss.png create mode 100644 Buffs/ShimadaSword/BadDream.cs create mode 100644 Buffs/ShimadaSword/BadDream.png create mode 100644 Buffs/ShimadaSword/BloodLoss.cs create mode 100644 Buffs/ShimadaSword/BloodLoss.png create mode 100644 Buffs/ShimadaSword/SpectralRage.cs create mode 100644 Buffs/ShimadaSword/SpectralRage.png create mode 100644 Buffs/ShimadaSword/Stacks/All-In-One.png create mode 100644 Buffs/ShimadaSword/Stacks/BuffTemplatePDN.pdn create mode 100644 Buffs/ShimadaSword/Stacks/DreamFive.cs create mode 100644 Buffs/ShimadaSword/Stacks/DreamFive.png create mode 100644 Buffs/ShimadaSword/Stacks/DreamFour.cs create mode 100644 Buffs/ShimadaSword/Stacks/DreamFour.png create mode 100644 Buffs/ShimadaSword/Stacks/DreamOne.cs create mode 100644 Buffs/ShimadaSword/Stacks/DreamOne.png create mode 100644 Buffs/ShimadaSword/Stacks/DreamThree.cs create mode 100644 Buffs/ShimadaSword/Stacks/DreamThree.png create mode 100644 Buffs/ShimadaSword/Stacks/DreamTwo.cs create mode 100644 Buffs/ShimadaSword/Stacks/DreamTwo.png create mode 100644 Buffs/ShimadaSword/Stacks/EnrichmentFive.cs create mode 100644 Buffs/ShimadaSword/Stacks/EnrichmentFive.png create mode 100644 Buffs/ShimadaSword/Stacks/EnrichmentFour.cs create mode 100644 Buffs/ShimadaSword/Stacks/EnrichmentFour.png create mode 100644 Buffs/ShimadaSword/Stacks/EnrichmentOne.cs create mode 100644 Buffs/ShimadaSword/Stacks/EnrichmentOne.png create mode 100644 Buffs/ShimadaSword/Stacks/EnrichmentThree.cs create mode 100644 Buffs/ShimadaSword/Stacks/EnrichmentThree.png create mode 100644 Buffs/ShimadaSword/Stacks/EnrichmentTwo.cs create mode 100644 Buffs/ShimadaSword/Stacks/EnrichmentTwo.png create mode 100644 Buffs/ShimadaSword/Stacks/SouleaterFive.cs create mode 100644 Buffs/ShimadaSword/Stacks/SouleaterFive.png create mode 100644 Buffs/ShimadaSword/Stacks/SouleaterFour.cs create mode 100644 Buffs/ShimadaSword/Stacks/SouleaterFour.png create mode 100644 Buffs/ShimadaSword/Stacks/SouleaterOne.cs create mode 100644 Buffs/ShimadaSword/Stacks/SouleaterOne.png create mode 100644 Buffs/ShimadaSword/Stacks/SouleaterThree.cs create mode 100644 Buffs/ShimadaSword/Stacks/SouleaterThree.png create mode 100644 Buffs/ShimadaSword/Stacks/SouleaterTwo.cs create mode 100644 Buffs/ShimadaSword/Stacks/SouleaterTwo.png create mode 100644 Buffs/Shotgun/Hypercharge.cs create mode 100644 Buffs/Shotgun/Hypercharge.png create mode 100644 Buffs/Shotgun/HyperchargeCooldown.cs create mode 100644 Buffs/Shotgun/HyperchargeCooldown.png create mode 100644 Buffs/Shotgun/Hypercharging.cs create mode 100644 Buffs/Shotgun/Hypercharging.png create mode 100644 Buffs/Shotgun/Ultracharge.cs create mode 100644 Buffs/Shotgun/Ultracharge.png create mode 100644 Buffs/Shotgun/UltrachargeCooldown.cs create mode 100644 Buffs/Shotgun/UltrachargeCooldown.png create mode 100644 Buffs/Shotgun/Ultracharging.cs create mode 100644 Buffs/Shotgun/Ultracharging.png create mode 100644 Buffs/StackBuffTemplate.png create mode 100644 Buffs/WindUpFabu.cs create mode 100644 Buffs/WindUpFabu.png create mode 100644 Dusts/AxeOfGrassDust.cs create mode 100644 Dusts/AxeOfGrassDust.png create mode 100644 Dusts/AxecaliburDust.cs create mode 100644 Dusts/AxecaliburDust.png create mode 100644 Dusts/BloodCutterDust.cs create mode 100644 Dusts/BloodCutterDust.png create mode 100644 Dusts/BloodDust.cs create mode 100644 Dusts/BloodDust.png create mode 100644 Dusts/CadeceusDust.cs create mode 100644 Dusts/CadeceusDust.png create mode 100644 Dusts/CrystalDust.cs create mode 100644 Dusts/CrystalDust.png create mode 100644 Dusts/CrystalDust2.cs create mode 100644 Dusts/CrystalDust2.png create mode 100644 Dusts/CurseDust.cs create mode 100644 Dusts/CurseDust.png create mode 100644 Dusts/DustTemplate.png create mode 100644 Dusts/EnragedOniDust.cs create mode 100644 Dusts/EnragedOniDust.png create mode 100644 Dusts/FoxBreakDust.cs create mode 100644 Dusts/FoxBreakDust.png create mode 100644 Dusts/FoxDust.cs create mode 100644 Dusts/FoxDust.png create mode 100644 Dusts/FoxDustBlue.cs create mode 100644 Dusts/FoxDustBlue.png create mode 100644 Dusts/FoxMendingDust.cs create mode 100644 Dusts/FoxMendingDust.png create mode 100644 Dusts/FoxMendingDustBlue.cs create mode 100644 Dusts/FoxMendingDustBlue.png create mode 100644 Dusts/FoxWitherDust.cs create mode 100644 Dusts/FoxWitherDust.png create mode 100644 Dusts/GoldenDust.cs create mode 100644 Dusts/GoldenDust.png create mode 100644 Dusts/HealingDust.cs create mode 100644 Dusts/HealingDust.png create mode 100644 Dusts/HeartDust.cs create mode 100644 Dusts/HeartDust.png create mode 100644 Dusts/HolyDust.cs create mode 100644 Dusts/HolyDust.png create mode 100644 Dusts/IllusoryMirrorDust.cs create mode 100644 Dusts/IllusoryMirrorDust.png create mode 100644 Dusts/IllusoryMirrorRMBDust.cs create mode 100644 Dusts/IllusoryMirrorRMBDust.png create mode 100644 Dusts/LegendaryDust.cs create mode 100644 Dusts/LegendaryDust.png create mode 100644 Dusts/LegendarySparkle.cs create mode 100644 Dusts/LegendarySparkle.png create mode 100644 Dusts/MeatDust.cs create mode 100644 Dusts/MeatDust.png create mode 100644 Dusts/MoltenWaraxeDust.cs create mode 100644 Dusts/MoltenWaraxeDust.png create mode 100644 Dusts/MuramasasWaraxeDust.cs create mode 100644 Dusts/MuramasasWaraxeDust.png create mode 100644 Dusts/NatureStaffDust.cs create mode 100644 Dusts/NatureStaffDust.png create mode 100644 Dusts/NatureStaffDust2.cs create mode 100644 Dusts/NatureStaffDust2.png create mode 100644 Dusts/NightsAxeDust.cs create mode 100644 Dusts/NightsAxeDust.png create mode 100644 Dusts/NightsAxeSparkle.cs create mode 100644 Dusts/NightsAxeSparkle.png create mode 100644 Dusts/OniDust.cs create mode 100644 Dusts/OniDust.png create mode 100644 Dusts/RainbowCurseDust.cs create mode 100644 Dusts/RainbowCurseDust.png create mode 100644 Dusts/RainbowDust.cs create mode 100644 Dusts/RainbowDust.png create mode 100644 Dusts/RainbowDust2.cs create mode 100644 Dusts/RainbowDust2.png create mode 100644 Dusts/RainbowDust3.cs create mode 100644 Dusts/RainbowDust3.png create mode 100644 Dusts/RainbowHealingDust.cs create mode 100644 Dusts/RainbowHealingDust.png create mode 100644 Dusts/RainbowWrathDust.cs create mode 100644 Dusts/RainbowWrathDust.png create mode 100644 Dusts/RainbowWrathDust2.cs create mode 100644 Dusts/RainbowWrathDust2.png create mode 100644 Dusts/RainbowWrathDust3.cs create mode 100644 Dusts/RainbowWrathDust3.png create mode 100644 Dusts/RyuuDust.cs create mode 100644 Dusts/RyuuDust.png create mode 100644 Dusts/RyuuDust2.cs create mode 100644 Dusts/RyuuDust2.png create mode 100644 Dusts/RyuuDust3.cs create mode 100644 Dusts/RyuuDust3.png create mode 100644 Dusts/RyuuDust4.cs create mode 100644 Dusts/RyuuDust4.png create mode 100644 Dusts/ShimadaSword/ShimadaDust.cs create mode 100644 Dusts/ShimadaSword/ShimadaDust.png create mode 100644 Dusts/Shuriken/StarDust.cs create mode 100644 Dusts/Shuriken/StarDust.png create mode 100644 Dusts/SorcerousDust.cs create mode 100644 Dusts/SorcerousDust.png create mode 100644 Dusts/SorcerousDust2.cs create mode 100644 Dusts/SorcerousDust2.png create mode 100644 Dusts/SorcerousDustBlue.cs create mode 100644 Dusts/SorcerousDustBlue.png create mode 100644 Dusts/SorcerousDustRed.cs create mode 100644 Dusts/SorcerousDustRed.png create mode 100644 Dusts/SorcerousDustYellow.cs create mode 100644 Dusts/SorcerousDustYellow.png create mode 100644 Dusts/SorcerousHellDust.cs create mode 100644 Dusts/SorcerousHellDust.png create mode 100644 Dusts/SorcerousHellDust2.cs create mode 100644 Dusts/SorcerousHellDust2.png create mode 100644 Dusts/SorcerousHellDustPurple.cs create mode 100644 Dusts/SorcerousHellDustPurple.png create mode 100644 Dusts/SorcerousHellDustWhite.cs create mode 100644 Dusts/SorcerousHellDustWhite.png create mode 100644 Dusts/SpectralIllusionDust.cs create mode 100644 Dusts/SpectralIllusionDust.png create mode 100644 Dusts/SpectralIllusionDust2.cs create mode 100644 Dusts/SpectralIllusionDust2.png create mode 100644 Dusts/SpectralIllusionDust3.cs create mode 100644 Dusts/SpectralIllusionDust3.png create mode 100644 Dusts/SpectralIllusionDust4.cs create mode 100644 Dusts/SpectralIllusionDust4.png create mode 100644 Dusts/SpectralWitherDust.cs create mode 100644 Dusts/SpectralWitherDust.png create mode 100644 Dusts/TerraDust.cs create mode 100644 Dusts/TerraDust.png create mode 100644 Dusts/TerraDust2.cs create mode 100644 Dusts/TerraDust2.png create mode 100644 Dusts/TrueDust.cs create mode 100644 Dusts/TrueDust.png create mode 100644 ExtraAction.cs create mode 100644 FabuPlayer.cs create mode 100644 FabuWorld.cs create mode 100644 FabusMod.cs create mode 100644 FabusMod.csproj create mode 100644 FabusMod.sln create mode 100644 Helper.cs create mode 100644 Items/Accessories/HallowedBand.cs create mode 100644 Items/Accessories/HallowedBand.png create mode 100644 Items/Accessories/HallowedBand_Front.png create mode 100644 Items/Accessories/HarmonyScarf.cs create mode 100644 Items/Accessories/HarmonyScarf.png create mode 100644 Items/Accessories/HarmonyScarfUpgraded.cs create mode 100644 Items/Accessories/HarmonyScarfUpgraded.png create mode 100644 Items/Accessories/HarmonyScarfUpgraded_Front.png create mode 100644 Items/Accessories/HarmonyScarf_Front.png create mode 100644 Items/Accessories/HellfireBand.cs create mode 100644 Items/Accessories/HellfireBand.png create mode 100644 Items/Accessories/HellfireBand_Front.png create mode 100644 Items/Accessories/IronBand.cs create mode 100644 Items/Accessories/IronBand.png create mode 100644 Items/Accessories/IronBand_Front.png create mode 100644 Items/Accessories/LunaticBand.cs create mode 100644 Items/Accessories/LunaticBand.png create mode 100644 Items/Accessories/LunaticBand_Front.png create mode 100644 Items/Accessories/NebulaBand.cs create mode 100644 Items/Accessories/NebulaBand.png create mode 100644 Items/Accessories/NebulaBand_Front.png create mode 100644 Items/Accessories/SolarBand.cs create mode 100644 Items/Accessories/SolarBand.png create mode 100644 Items/Accessories/SolarBand_Front.png create mode 100644 Items/Accessories/StardustBand.cs create mode 100644 Items/Accessories/StardustBand.png create mode 100644 Items/Accessories/StardustBand_Front.png create mode 100644 Items/Accessories/ValkyrieWings.cs create mode 100644 Items/Accessories/ValkyrieWings.png create mode 100644 Items/Accessories/ValkyrieWings_Wings.png create mode 100644 Items/Accessories/VortexBand.cs create mode 100644 Items/Accessories/VortexBand.png create mode 100644 Items/Accessories/VortexBand_Front.png create mode 100644 Items/Bars/RainbowChunk.cs create mode 100644 Items/Bars/RainbowChunk.png create mode 100644 Items/BossBags.cs create mode 100644 Items/Items/CraftingIngredients/BrokenBand.cs create mode 100644 Items/Items/CraftingIngredients/BrokenBand.png create mode 100644 Items/Items/CraftingIngredients/GoddessGold.cs create mode 100644 Items/Items/CraftingIngredients/GoddessGold.png create mode 100644 Items/Items/CraftingIngredients/NatureToken.cs create mode 100644 Items/Items/CraftingIngredients/NatureToken.png create mode 100644 Items/Items/CraftingIngredients/OminousBook.cs create mode 100644 Items/Items/CraftingIngredients/OminousBook.png create mode 100644 Items/Items/CraftingIngredients/RainbowDust.cs create mode 100644 Items/Items/CraftingIngredients/RainbowDust.png create mode 100644 Items/Items/CraftingIngredients/RainbowHandle.cs create mode 100644 Items/Items/CraftingIngredients/RainbowHandle.png create mode 100644 Items/Items/CraftingIngredients/RainbowMuzzle.cs create mode 100644 Items/Items/CraftingIngredients/RainbowMuzzle.png create mode 100644 Items/Items/CraftingIngredients/RainbowToken.cs create mode 100644 Items/Items/CraftingIngredients/RainbowToken.png create mode 100644 Items/Items/CraftingIngredients/SoulofWisdom.cs create mode 100644 Items/Items/CraftingIngredients/SoulofWisdom.png create mode 100644 Items/Items/DamageDebugItem.cs create mode 100644 Items/Items/DamageDebugItem.png create mode 100644 Items/Items/PetSummons/Apple.cs create mode 100644 Items/Items/PetSummons/Apple.png create mode 100644 Items/Items/PetSummons/PinkApple.cs create mode 100644 Items/Items/PetSummons/PinkApple.png create mode 100644 Items/Items/PetSummons/SuspiciousFlower.cs create mode 100644 Items/Items/PetSummons/SuspiciousFlower.png create mode 100644 Items/Items/PetSummons/SuspiciousLookingScrew.cs create mode 100644 Items/Items/PetSummons/SuspiciousLookingScrew.png create mode 100644 Items/Items/WeaponParts/UntreatedBowPart.cs create mode 100644 Items/Items/WeaponParts/UntreatedBowPart.png create mode 100644 Items/Items/WeaponParts/UntreatedShortswordPart.cs create mode 100644 Items/Items/WeaponParts/UntreatedShortswordPart.png create mode 100644 Items/Items/WeaponParts/UntreatedShurikenPart.cs create mode 100644 Items/Items/WeaponParts/UntreatedShurikenPart.png create mode 100644 Items/Items/WeaponParts/UntreatedSwordParts.cs create mode 100644 Items/Items/WeaponParts/UntreatedSwordParts.png create mode 100644 Items/Tiles/RainbowStation.cs create mode 100644 Items/Tiles/RainbowStation.png create mode 100644 Items/Tiles/ReinforcedWorkBench.cs create mode 100644 Items/Tiles/ReinforcedWorkBench.png create mode 100644 Items/Tools/GoddessPick.cs create mode 100644 Items/Tools/GoddessPick.png create mode 100644 Items/Tools/GoldenDiggingClaw.cs create mode 100644 Items/Tools/GoldenDiggingClaw.png create mode 100644 Items/Tools/GoldenHamaxe.cs create mode 100644 Items/Tools/GoldenHamaxe.png create mode 100644 Items/Vanity/FoxEars/BlueFoxEars.cs create mode 100644 Items/Vanity/FoxEars/BlueFoxEars.png create mode 100644 Items/Vanity/FoxEars/BlueFoxEars_Head.png create mode 100644 Items/Vanity/FoxEars/FoxEars.cs create mode 100644 Items/Vanity/FoxEars/FoxEars.png create mode 100644 Items/Vanity/FoxEars/FoxEars_Head.png create mode 100644 Items/Vanity/FoxEars/PinkFoxEars.cs create mode 100644 Items/Vanity/FoxEars/PinkFoxEars.png create mode 100644 Items/Vanity/FoxEars/PinkFoxEars_Head.png create mode 100644 Items/Vanity/Leafy/LeafyChest.cs create mode 100644 Items/Vanity/Leafy/LeafyChest.png create mode 100644 Items/Vanity/Leafy/LeafyChest_Arms.png create mode 100644 Items/Vanity/Leafy/LeafyChest_Body.png create mode 100644 Items/Vanity/Leafy/LeafyChest_FemaleBody.png create mode 100644 Items/Vanity/Leafy/LeafyFullBody.png create mode 100644 Items/Vanity/Leafy/LeafyHat.cs create mode 100644 Items/Vanity/Leafy/LeafyHat.png create mode 100644 Items/Vanity/Leafy/LeafyHat_Head.png create mode 100644 Items/Vanity/Leafy/LeafyLegs.cs create mode 100644 Items/Vanity/Leafy/LeafyLegs.png create mode 100644 Items/Vanity/Leafy/LeafyLegs_Legs.png create mode 100644 Items/Vanity/PlayerSpriteSheetTemplate.png create mode 100644 Items/Weapons/Magic/Coalescence/Coalescence.cs create mode 100644 Items/Weapons/Magic/Coalescence/Coalescence.png create mode 100644 Items/Weapons/Magic/Coalescence/DelightfulDevastation.cs create mode 100644 Items/Weapons/Magic/Coalescence/DelightfulDevastation.png create mode 100644 Items/Weapons/Magic/Coalescence/GoldenVengeance.cs create mode 100644 Items/Weapons/Magic/Coalescence/GoldenVengeance.png create mode 100644 Items/Weapons/Magic/Coalescence/HeavensVengeance.cs create mode 100644 Items/Weapons/Magic/Coalescence/HeavensVengeance.png create mode 100644 Items/Weapons/Magic/Coalescence/HellfireBeam.cs create mode 100644 Items/Weapons/Magic/Coalescence/HellfireBeam.png create mode 100644 Items/Weapons/Magic/FusionNeedlers/FusedWish.cs create mode 100644 Items/Weapons/Magic/FusionNeedlers/FusedWish.png create mode 100644 Items/Weapons/Magic/FusionNeedlers/FusedXmas.cs create mode 100644 Items/Weapons/Magic/FusionNeedlers/FusedXmas.png create mode 100644 Items/Weapons/Magic/FusionNeedlers/FusionNeedler.cs create mode 100644 Items/Weapons/Magic/FusionNeedlers/FusionNeedler.png create mode 100644 Items/Weapons/Magic/IllusoryMirror.cs create mode 100644 Items/Weapons/Magic/IllusoryMirror.png create mode 100644 Items/Weapons/Magic/SpectralIllusion.cs create mode 100644 Items/Weapons/Magic/SpectralIllusion.png create mode 100644 Items/Weapons/Magic/Staffs/GoldenStaff.cs create mode 100644 Items/Weapons/Magic/Staffs/GoldenStaff.png create mode 100644 Items/Weapons/Magic/Staffs/NatureStaff.cs create mode 100644 Items/Weapons/Magic/Staffs/NatureStaff.png create mode 100644 Items/Weapons/Magic/Staffs/PiercingStaff.cs create mode 100644 Items/Weapons/Magic/Staffs/PiercingStaff.png create mode 100644 Items/Weapons/Magic/Staffs/SorcerousHellstaff.cs create mode 100644 Items/Weapons/Magic/Staffs/SorcerousHellstaff.png create mode 100644 Items/Weapons/Magic/Staffs/SorcerousHellstaffWhite.cs create mode 100644 Items/Weapons/Magic/Staffs/SorcerousHellstaffWhite.png create mode 100644 Items/Weapons/Magic/Staffs/SorcerousStaff.cs create mode 100644 Items/Weapons/Magic/Staffs/SorcerousStaff.png create mode 100644 Items/Weapons/Magic/Staffs/TheWhisperingIceDonator.cs create mode 100644 Items/Weapons/Magic/Staffs/TheWhisperingIceDonator.png create mode 100644 Items/Weapons/Magic/Staffs/Tranquility.cs create mode 100644 Items/Weapons/Magic/Staffs/Tranquility.png create mode 100644 Items/Weapons/Melee/Shortswords/CarbonDagger.cs create mode 100644 Items/Weapons/Melee/Shortswords/CarbonDagger.png create mode 100644 Items/Weapons/Melee/Shortswords/CarbonDaggerNihon.cs create mode 100644 Items/Weapons/Melee/Shortswords/CarbonDaggerNihon.png create mode 100644 Items/Weapons/Melee/Shortswords/GoldenDagger.cs create mode 100644 Items/Weapons/Melee/Shortswords/GoldenDagger.png create mode 100644 Items/Weapons/Melee/Shortswords/OniDagger.cs create mode 100644 Items/Weapons/Melee/Shortswords/OniDagger.png create mode 100644 Items/Weapons/Melee/Shortswords/StonePlatedShortsword.cs create mode 100644 Items/Weapons/Melee/Shortswords/StonePlatedShortsword.png create mode 100644 Items/Weapons/Melee/Shortswords/TheRainbowsCurse.cs create mode 100644 Items/Weapons/Melee/Shortswords/TheRainbowsCurse.png create mode 100644 Items/Weapons/Melee/Shortswords/Wakizashi.cs create mode 100644 Items/Weapons/Melee/Shortswords/Wakizashi.png create mode 100644 Items/Weapons/Melee/Swords/GoldenSlasher.cs create mode 100644 Items/Weapons/Melee/Swords/GoldenSlasher.png create mode 100644 Items/Weapons/Melee/Swords/RainbowClaymore.cs create mode 100644 Items/Weapons/Melee/Swords/RainbowClaymore.png create mode 100644 Items/Weapons/Melee/Swords/ShimadaSwords/CarbonSword.cs create mode 100644 Items/Weapons/Melee/Swords/ShimadaSwords/CarbonSword.png create mode 100644 Items/Weapons/Melee/Swords/ShimadaSwords/CarbonSwordNihon.cs create mode 100644 Items/Weapons/Melee/Swords/ShimadaSwords/CarbonSwordNihon.png create mode 100644 Items/Weapons/Melee/Swords/ShimadaSwords/DemonsFury.cs create mode 100644 Items/Weapons/Melee/Swords/ShimadaSwords/DemonsFury.png create mode 100644 Items/Weapons/Melee/Swords/ShimadaSwords/GoldenFury.cs create mode 100644 Items/Weapons/Melee/Swords/ShimadaSwords/GoldenFury.png create mode 100644 Items/Weapons/Melee/Swords/ShimadaSwords/ShimadaSword.cs create mode 100644 Items/Weapons/Melee/Swords/ShimadaSwords/ShimadaSword.png create mode 100644 Items/Weapons/Melee/Swords/ShimadaSwords/StonePlatedKatana.cs create mode 100644 Items/Weapons/Melee/Swords/ShimadaSwords/StonePlatedKatana.png create mode 100644 Items/Weapons/Melee/Swords/ShimadaSwords/TheRainbowsHonor.cs create mode 100644 Items/Weapons/Melee/Swords/ShimadaSwords/TheRainbowsHonor.png create mode 100644 Items/Weapons/Melee/Waraxes/RainbowAxe.cs create mode 100644 Items/Weapons/Melee/Waraxes/RainbowAxe.png create mode 100644 Items/Weapons/RainbowDemon/All-In-One.png create mode 100644 Items/Weapons/RainbowDemon/TheRainbowDemon.cs create mode 100644 Items/Weapons/RainbowDemon/TheRainbowDemon.png create mode 100644 Items/Weapons/RainbowDemon/TheRainbowDemonClaymore.cs create mode 100644 Items/Weapons/RainbowDemon/TheRainbowDemonClaymore.png create mode 100644 Items/Weapons/RainbowDemon/TheRainbowDemonMagic.cs create mode 100644 Items/Weapons/RainbowDemon/TheRainbowDemonMagic.png create mode 100644 Items/Weapons/RainbowDemon/TheRainbowDemonRanged.cs create mode 100644 Items/Weapons/RainbowDemon/TheRainbowDemonRanged.png create mode 100644 Items/Weapons/RainbowDemon/TheRainbowDemonShredder.cs create mode 100644 Items/Weapons/RainbowDemon/TheRainbowDemonShredder.png create mode 100644 Items/Weapons/RainbowDemon/TheRainbowDemonThrowing.cs create mode 100644 Items/Weapons/RainbowDemon/TheRainbowDemonThrowing.png create mode 100644 Items/Weapons/Ranged/Bows/LunarBow.cs create mode 100644 Items/Weapons/Ranged/Bows/LunarBow.png create mode 100644 Items/Weapons/Ranged/Bows/LunarRainBow.cs create mode 100644 Items/Weapons/Ranged/Bows/LunarRainBow.png create mode 100644 Items/Weapons/Ranged/Bows/PiercingBow.cs create mode 100644 Items/Weapons/Ranged/Bows/PiercingBow.png create mode 100644 Items/Weapons/Ranged/Bows/StormBows/DemonsBow.cs create mode 100644 Items/Weapons/Ranged/Bows/StormBows/DemonsBow.png create mode 100644 Items/Weapons/Ranged/Bows/StormBows/GoldenKabuki.cs create mode 100644 Items/Weapons/Ranged/Bows/StormBows/GoldenKabuki.png create mode 100644 Items/Weapons/Ranged/Bows/StormBows/Kabuki.cs create mode 100644 Items/Weapons/Ranged/Bows/StormBows/Kabuki.png create mode 100644 Items/Weapons/Ranged/Bows/StormBows/RainBow.cs create mode 100644 Items/Weapons/Ranged/Bows/StormBows/RainBow.png create mode 100644 Items/Weapons/Ranged/Bows/StormBows/StonePlatedBow.cs create mode 100644 Items/Weapons/Ranged/Bows/StormBows/StonePlatedBow.png create mode 100644 Items/Weapons/Ranged/Bows/StormBows/StormBow.cs create mode 100644 Items/Weapons/Ranged/Bows/StormBows/StormBow.png create mode 100644 Items/Weapons/Ranged/FoxPistols/FoxPistol.cs create mode 100644 Items/Weapons/Ranged/FoxPistols/FoxPistol.png create mode 100644 Items/Weapons/Ranged/FoxPistols/FoxPistolBlue.cs create mode 100644 Items/Weapons/Ranged/FoxPistols/FoxPistolBlue.png create mode 100644 Items/Weapons/Ranged/FoxPistols/SpectralHowler.cs create mode 100644 Items/Weapons/Ranged/FoxPistols/SpectralHowler.png create mode 100644 Items/Weapons/Ranged/FusionDrivers/DynasticFuser.cs create mode 100644 Items/Weapons/Ranged/FusionDrivers/DynasticFuser.png create mode 100644 Items/Weapons/Ranged/FusionDrivers/DynasticFuserGolden.cs create mode 100644 Items/Weapons/Ranged/FusionDrivers/DynasticFuserGolden.png create mode 100644 Items/Weapons/Ranged/FusionDrivers/FusedRainbow.cs create mode 100644 Items/Weapons/Ranged/FusionDrivers/FusedRainbow.png create mode 100644 Items/Weapons/Ranged/FusionDrivers/FusionDriver.cs create mode 100644 Items/Weapons/Ranged/FusionDrivers/FusionDriver.png create mode 100644 Items/Weapons/Ranged/FusionDrivers/ProtectionFuser.cs create mode 100644 Items/Weapons/Ranged/FusionDrivers/ProtectionFuser.png create mode 100644 Items/Weapons/Ranged/FusionDrivers/ProtectionFuserCarbonFiber.cs create mode 100644 Items/Weapons/Ranged/FusionDrivers/ProtectionFuserCarbonFiber.png create mode 100644 Items/Weapons/Ranged/LightGuns/GoldenStinger.cs create mode 100644 Items/Weapons/Ranged/LightGuns/GoldenStinger.png create mode 100644 Items/Weapons/Ranged/LightGuns/LightGun.cs create mode 100644 Items/Weapons/Ranged/LightGuns/LightGun.png create mode 100644 Items/Weapons/Ranged/LightGuns/SpectralBlaster.cs create mode 100644 Items/Weapons/Ranged/LightGuns/SpectralBlaster.png create mode 100644 Items/Weapons/Ranged/LightGuns/Taegeukgi.cs create mode 100644 Items/Weapons/Ranged/LightGuns/Taegeukgi.png create mode 100644 Items/Weapons/Ranged/LightGuns/TheStinger.cs create mode 100644 Items/Weapons/Ranged/LightGuns/TheStinger.png create mode 100644 Items/Weapons/Ranged/LightGuns/TheStingerBlackCat.cs create mode 100644 Items/Weapons/Ranged/LightGuns/TheStingerBlackCat.png create mode 100644 Items/Weapons/Ranged/MachinePistols/AugmentedUzi.cs create mode 100644 Items/Weapons/Ranged/MachinePistols/AugmentedUzi.png create mode 100644 Items/Weapons/Ranged/MachinePistols/CosmicHacker.cs create mode 100644 Items/Weapons/Ranged/MachinePistols/CosmicHacker.png create mode 100644 Items/Weapons/Ranged/MachinePistols/MachinePistol.cs create mode 100644 Items/Weapons/Ranged/MachinePistols/MachinePistol.png create mode 100644 Items/Weapons/Ranged/MachinePistols/MachinePistolGolden.cs create mode 100644 Items/Weapons/Ranged/MachinePistols/MachinePistolGolden.png create mode 100644 Items/Weapons/Ranged/MachinePistols/Verano.cs create mode 100644 Items/Weapons/Ranged/MachinePistols/Verano.png create mode 100644 Items/Weapons/Ranged/MachinePistols/VeranoRime.cs create mode 100644 Items/Weapons/Ranged/MachinePistols/VeranoRime.png create mode 100644 Items/Weapons/Ranged/Peacekeeper/GoddessRevolver.cs create mode 100644 Items/Weapons/Ranged/Peacekeeper/GoddessRevolver.png create mode 100644 Items/Weapons/Ranged/Peacekeeper/Peaceforcer.cs create mode 100644 Items/Weapons/Ranged/Peacekeeper/Peaceforcer.png create mode 100644 Items/Weapons/Ranged/Peacekeeper/PeaceforcerVanHelsing.cs create mode 100644 Items/Weapons/Ranged/Peacekeeper/PeaceforcerVanHelsing.png create mode 100644 Items/Weapons/Ranged/Peacekeeper/Peacegunner.cs create mode 100644 Items/Weapons/Ranged/Peacekeeper/Peacegunner.png create mode 100644 Items/Weapons/Ranged/Peacekeeper/PeacegunnerAmerican.cs create mode 100644 Items/Weapons/Ranged/Peacekeeper/PeacegunnerAmerican.png create mode 100644 Items/Weapons/Ranged/Peacekeeper/Peacekeeper.cs create mode 100644 Items/Weapons/Ranged/Peacekeeper/Peacekeeper.png create mode 100644 Items/Weapons/Ranged/Peacekeeper/Unity.cs create mode 100644 Items/Weapons/Ranged/Peacekeeper/Unity.png create mode 100644 Items/Weapons/Ranged/PulsePistols/GoldenPulse.cs create mode 100644 Items/Weapons/Ranged/PulsePistols/GoldenPulse.png create mode 100644 Items/Weapons/Ranged/PulsePistols/Graffiti.cs create mode 100644 Items/Weapons/Ranged/PulsePistols/Graffiti.png create mode 100644 Items/Weapons/Ranged/PulsePistols/PulsePistol.cs create mode 100644 Items/Weapons/Ranged/PulsePistols/PulsePistol.png create mode 100644 Items/Weapons/Ranged/PulsePistols/PulseSprayer.cs create mode 100644 Items/Weapons/Ranged/PulsePistols/PulseSprayer.png create mode 100644 Items/Weapons/Ranged/PulsePistols/PulseSprayerCadet.cs create mode 100644 Items/Weapons/Ranged/PulsePistols/PulseSprayerCadet.png create mode 100644 Items/Weapons/Ranged/PulsePistols/PunksPulse.cs create mode 100644 Items/Weapons/Ranged/PulsePistols/PunksPulse.png create mode 100644 Items/Weapons/Ranged/PulsePistols/PunksPulseUltraviolet.cs create mode 100644 Items/Weapons/Ranged/PulsePistols/PunksPulseUltraviolet.png create mode 100644 Items/Weapons/Ranged/Shotguns/Depriver.cs create mode 100644 Items/Weapons/Ranged/Shotguns/Depriver.png create mode 100644 Items/Weapons/Ranged/Shotguns/GoldenShotgun.cs create mode 100644 Items/Weapons/Ranged/Shotguns/GoldenShotgun.png create mode 100644 Items/Weapons/Ranged/Shotguns/HellfireShotgun.cs create mode 100644 Items/Weapons/Ranged/Shotguns/HellfireShotgun.png create mode 100644 Items/Weapons/Ranged/Shotguns/HellkinShotgun.cs create mode 100644 Items/Weapons/Ranged/Shotguns/HellkinShotgun.png create mode 100644 Items/Weapons/Ranged/Shotguns/HellkinShotgunDracula.cs create mode 100644 Items/Weapons/Ranged/Shotguns/HellkinShotgunDracula.png create mode 100644 Items/Weapons/Ranged/Shotguns/HellshiverGun.cs create mode 100644 Items/Weapons/Ranged/Shotguns/HellshiverGun.png create mode 100644 Items/Weapons/Ranged/Shotguns/HellshiverGunHellfire.cs create mode 100644 Items/Weapons/Ranged/Shotguns/HellshiverGunHellfire.png create mode 100644 Items/Weapons/Summon/GoddessSummoner.cs create mode 100644 Items/Weapons/Summon/GoddessSummoner.png create mode 100644 Items/Weapons/Thrown/Daggers/ColorfulSolution.cs create mode 100644 Items/Weapons/Thrown/Daggers/ColorfulSolution.png create mode 100644 Items/Weapons/Thrown/Shuriken/CarbonShuriken.cs create mode 100644 Items/Weapons/Thrown/Shuriken/CarbonShuriken.png create mode 100644 Items/Weapons/Thrown/Shuriken/CarbonShurikenNihon.cs create mode 100644 Items/Weapons/Thrown/Shuriken/CarbonShurikenNihon.png create mode 100644 Items/Weapons/Thrown/Shuriken/HerosShuriken.cs create mode 100644 Items/Weapons/Thrown/Shuriken/HerosShuriken.png create mode 100644 Items/Weapons/Thrown/Shuriken/OniSlayer.cs create mode 100644 Items/Weapons/Thrown/Shuriken/OniSlayer.png create mode 100644 Items/Weapons/Thrown/Shuriken/SparklingDemon.cs create mode 100644 Items/Weapons/Thrown/Shuriken/SparklingDemon.png create mode 100644 Items/Weapons/Thrown/Shuriken/StonePlatedShuriken.cs create mode 100644 Items/Weapons/Thrown/Shuriken/StonePlatedShuriken.png create mode 100644 Items/Weapons/Thrown/Shuriken/TheSpinningRainbow.cs create mode 100644 Items/Weapons/Thrown/Shuriken/TheSpinningRainbow.png create mode 100644 NPCs/ModGlobalNPC.cs create mode 100644 NPCs/VanillaNPCShop.cs create mode 100644 Projectiles/Arrows/DemonArrow.cs create mode 100644 Projectiles/Arrows/DemonArrow.png create mode 100644 Projectiles/Arrows/GoldenSpiritArrow.cs create mode 100644 Projectiles/Arrows/GoldenSpiritArrow.png create mode 100644 Projectiles/Arrows/LegendaryArrow.cs create mode 100644 Projectiles/Arrows/LegendaryArrow.png create mode 100644 Projectiles/Arrows/PiercingArrow.cs create mode 100644 Projectiles/Arrows/PiercingArrow.png create mode 100644 Projectiles/Arrows/RainbowArrow.cs create mode 100644 Projectiles/Arrows/RainbowArrow.png create mode 100644 Projectiles/Arrows/StormArrow.cs create mode 100644 Projectiles/Arrows/StormArrow.png create mode 100644 Projectiles/Daggers/ColorfulSolution.cs create mode 100644 Projectiles/Daggers/ColorfulSolution.png create mode 100644 Projectiles/FoxPistol/BlueBolt.cs create mode 100644 Projectiles/FoxPistol/BlueBolt.png create mode 100644 Projectiles/FoxPistol/BlueBoltRMB.cs create mode 100644 Projectiles/FoxPistol/BlueBoltRMB.png create mode 100644 Projectiles/FoxPistol/OrangeBolt.cs create mode 100644 Projectiles/FoxPistol/OrangeBolt.png create mode 100644 Projectiles/FoxPistol/OrangeBoltRMB.cs create mode 100644 Projectiles/FoxPistol/OrangeBoltRMB.png create mode 100644 Projectiles/FoxPistol/RainbowBolt.cs create mode 100644 Projectiles/FoxPistol/RainbowBolt.png create mode 100644 Projectiles/FoxPistol/RainbowBoltRMB.cs create mode 100644 Projectiles/FoxPistol/RainbowBoltRMB.png create mode 100644 Projectiles/GoldenOrb.cs create mode 100644 Projectiles/GoldenOrb.png create mode 100644 Projectiles/IllusoryMirror/IllusoryMirrorProj.cs create mode 100644 Projectiles/IllusoryMirror/IllusoryMirrorProj.png create mode 100644 Projectiles/IllusoryMirror/IllusoryMirrorRMB.cs create mode 100644 Projectiles/IllusoryMirror/IllusoryMirrorRMB.png create mode 100644 Projectiles/IllusoryMirror/SpectralIllusionProj.cs create mode 100644 Projectiles/IllusoryMirror/SpectralIllusionProj.png create mode 100644 Projectiles/IllusoryMirror/SpectralIllusionRMB.cs create mode 100644 Projectiles/IllusoryMirror/SpectralIllusionRMB.png create mode 100644 Projectiles/IronStinger.cs create mode 100644 Projectiles/IronStinger.png create mode 100644 Projectiles/Lasers/CoalescenceBeam.cs create mode 100644 Projectiles/Lasers/CoalescenceBeam.png create mode 100644 Projectiles/Lasers/GoldenBeam.cs create mode 100644 Projectiles/Lasers/GoldenBeam.png create mode 100644 Projectiles/Lasers/HellfireBeamProj.cs create mode 100644 Projectiles/Lasers/HellfireBeamProj.png create mode 100644 Projectiles/Lasers/RainbowBeam.cs create mode 100644 Projectiles/Lasers/RainbowBeam.png create mode 100644 Projectiles/Lasers/VengeanceBeam.cs create mode 100644 Projectiles/Lasers/VengeanceBeam.png create mode 100644 Projectiles/Lasers/lasertemplate.png create mode 100644 Projectiles/LightBlasts/GoldenLightBlast.cs create mode 100644 Projectiles/LightBlasts/GoldenLightBlast.png create mode 100644 Projectiles/LightBlasts/LightBlast.cs create mode 100644 Projectiles/LightBlasts/LightBlast.png create mode 100644 Projectiles/LightBlasts/RainbowLightBlast.cs create mode 100644 Projectiles/LightBlasts/RainbowLightBlast.png create mode 100644 Projectiles/LunarBolt.cs create mode 100644 Projectiles/LunarBolt.png create mode 100644 Projectiles/Minions/GoddessMinion.cs create mode 100644 Projectiles/Minions/GoddessMinion.png create mode 100644 Projectiles/Minions/Minion.cs create mode 100644 Projectiles/Pets/FoxPet.cs create mode 100644 Projectiles/Pets/FoxPet.png create mode 100644 Projectiles/Pets/MechanicalTooth.cs create mode 100644 Projectiles/Pets/MechanicalTooth.png create mode 100644 Projectiles/Pets/PinkFoxPet.cs create mode 100644 Projectiles/Pets/PinkFoxPet.png create mode 100644 Projectiles/Pets/WindUpFabu.cs create mode 100644 Projectiles/Pets/WindUpFabu.png create mode 100644 Projectiles/PulseBullet.cs create mode 100644 Projectiles/PulseBullet.png create mode 100644 Projectiles/PulseBulletBlue.cs create mode 100644 Projectiles/PulseBulletBlue.png create mode 100644 Projectiles/PulseBulletGolden.cs create mode 100644 Projectiles/PulseBulletGolden.png create mode 100644 Projectiles/PulseBulletPink.cs create mode 100644 Projectiles/PulseBulletPink.png create mode 100644 Projectiles/RainbowAxeBeam.cs create mode 100644 Projectiles/RainbowAxeBeam.png create mode 100644 Projectiles/RainbowBullet.cs create mode 100644 Projectiles/RainbowBullet.png create mode 100644 Projectiles/RainbowDemon/RainbowDemonArrow.cs create mode 100644 Projectiles/RainbowDemon/RainbowDemonArrow.png create mode 100644 Projectiles/RainbowDemon/RainbowDemonClaymoreProj.cs create mode 100644 Projectiles/RainbowDemon/RainbowDemonClaymoreProj.png create mode 100644 Projectiles/RainbowDemon/RainbowDemonKnife.cs create mode 100644 Projectiles/RainbowDemon/RainbowDemonKnife.png create mode 100644 Projectiles/RainbowDemon/RainbowDemonMagicBall.cs create mode 100644 Projectiles/RainbowDemon/RainbowDemonMagicBall.png create mode 100644 Projectiles/RainbowDemon/RainbowDemonMelee.cs create mode 100644 Projectiles/RainbowDemon/RainbowDemonMelee.png create mode 100644 Projectiles/RainbowDemon/RainbowDemonShredderProj.cs create mode 100644 Projectiles/RainbowDemon/RainbowDemonShredderProj.png create mode 100644 Projectiles/RainbowOrb.cs create mode 100644 Projectiles/RainbowOrb.png create mode 100644 Projectiles/RainbowRyuuichimojiWave.png create mode 100644 Projectiles/Shimada/BloodDrop.cs create mode 100644 Projectiles/Shimada/BloodDrop.png create mode 100644 Projectiles/Shimada/DemonProjRMB.cs create mode 100644 Projectiles/Shimada/DemonProjRMB.png create mode 100644 Projectiles/Shimada/DemonProjRMBSolo.png create mode 100644 Projectiles/Shimada/DemonProjTwo.cs create mode 100644 Projectiles/Shimada/DemonProjTwo.png create mode 100644 Projectiles/Shimada/DemonWave.cs create mode 100644 Projectiles/Shimada/DemonWave.png create mode 100644 Projectiles/Shimada/DreamCatcherProjRMB.cs create mode 100644 Projectiles/Shimada/DreamCatcherProjRMB.png create mode 100644 Projectiles/Shimada/DreamCatcherProjTwo.cs create mode 100644 Projectiles/Shimada/DreamCatcherProjTwo.png create mode 100644 Projectiles/Shimada/DreamCatcherWave.cs create mode 100644 Projectiles/Shimada/DreamCatcherWave.png create mode 100644 Projectiles/Shimada/GoldenFuryProjRMB.cs create mode 100644 Projectiles/Shimada/GoldenFuryProjRMB.png create mode 100644 Projectiles/Shimada/GoldenFuryProjTwo.cs create mode 100644 Projectiles/Shimada/GoldenFuryProjTwo.png create mode 100644 Projectiles/Shimada/GoldenFuryWave.cs create mode 100644 Projectiles/Shimada/GoldenFuryWave.png create mode 100644 Projectiles/Shimada/RainbowClump.cs create mode 100644 Projectiles/Shimada/RainbowClump.png create mode 100644 Projectiles/Shimada/ShimadaWave.cs create mode 100644 Projectiles/Shimada/ShimadaWave.png create mode 100644 Projectiles/Shimada/ShimadaWaveNihon.cs create mode 100644 Projectiles/Shimada/ShimadaWaveNihon.png create mode 100644 Projectiles/Shortsword/CarbonKnife.cs create mode 100644 Projectiles/Shortsword/CarbonKnife.png create mode 100644 Projectiles/Shortsword/CarbonKnifeNihon.cs create mode 100644 Projectiles/Shortsword/CarbonKnifeNihon.png create mode 100644 Projectiles/Shortsword/DeathBlossom.cs create mode 100644 Projectiles/Shortsword/DeathBlossom.png create mode 100644 Projectiles/Shortsword/FumaShuriken.cs create mode 100644 Projectiles/Shortsword/FumaShuriken.png create mode 100644 Projectiles/Shortsword/GoldenKnife.cs create mode 100644 Projectiles/Shortsword/GoldenKnife.png create mode 100644 Projectiles/Shortsword/RainbowKnife.cs create mode 100644 Projectiles/Shortsword/RainbowKnife.png create mode 100644 Projectiles/Shortsword/Substitute.cs create mode 100644 Projectiles/Shortsword/Substitute.png create mode 100644 Projectiles/Shuriken/CarbonShuriken.cs create mode 100644 Projectiles/Shuriken/CarbonShuriken.png create mode 100644 Projectiles/Shuriken/CarbonShurikenNihon.cs create mode 100644 Projectiles/Shuriken/CarbonShurikenNihon.png create mode 100644 Projectiles/Shuriken/HerosShuriken.cs create mode 100644 Projectiles/Shuriken/HerosShuriken.png create mode 100644 Projectiles/Shuriken/OniSlayer.cs create mode 100644 Projectiles/Shuriken/OniSlayer.png create mode 100644 Projectiles/Shuriken/SparklingDemon.cs create mode 100644 Projectiles/Shuriken/SparklingDemon.png create mode 100644 Projectiles/Shuriken/StonePlatedShurikenProj.cs create mode 100644 Projectiles/Shuriken/StonePlatedShurikenProj.png create mode 100644 Projectiles/SorcerousStaff/GoldenStaffProj.cs create mode 100644 Projectiles/SorcerousStaff/GoldenStaffProj.png create mode 100644 Projectiles/SorcerousStaff/NatureStaffProj.cs create mode 100644 Projectiles/SorcerousStaff/NatureStaffProj.png create mode 100644 Projectiles/SorcerousStaff/SorcerousHellstaffProj.cs create mode 100644 Projectiles/SorcerousStaff/SorcerousHellstaffProj.png create mode 100644 Projectiles/SorcerousStaff/SorcerousHellstaffProjWhite.cs create mode 100644 Projectiles/SorcerousStaff/SorcerousHellstaffProjWhite.png create mode 100644 Projectiles/SorcerousStaff/SorcerousStaffProj.cs create mode 100644 Projectiles/SorcerousStaff/SorcerousStaffProj.png create mode 100644 Projectiles/SorcerousStaff/TranquilityProj.cs create mode 100644 Projectiles/SorcerousStaff/TranquilityProj.png create mode 100644 Projectiles/SpectralMoonBolt.cs create mode 100644 Projectiles/SpectralMoonBolt.png create mode 100644 Projectiles/TheSpinningRainbow.cs create mode 100644 Projectiles/TheSpinningRainbow.png create mode 100644 Projectiles/TheWhisperingIcicle.cs create mode 100644 Projectiles/TheWhisperingIcicle.png create mode 100644 Projectiles/WishNeedle.cs create mode 100644 Projectiles/WishNeedle.png create mode 100644 Properties/launchSettings.json create mode 100644 Tiles/RainbowStation.cs create mode 100644 Tiles/RainbowStation.png create mode 100644 Tiles/RainbowStationsheet.png create mode 100644 Tiles/ReinforcedWorkBench.cs create mode 100644 Tiles/ReinforcedWorkBench.png create mode 100644 build.txt create mode 100644 description.txt create mode 100644 icon.png diff --git a/Buffs/BuffTemplate.png b/Buffs/BuffTemplate.png new file mode 100644 index 0000000000000000000000000000000000000000..af9d6144f33929c2f2c886cefba07093233fb5ce GIT binary patch literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6=10X`wFK>F<4f3t4=W9q);vitA5{aTxV+QdCw977`9lT#cT{s+v8W5_WV zo?+R*@Puo_`Sbh!vM*{dnUQqjMg{w!1B_`uRy#xrIIO8kPBdU$qF5(yqiFD2Oob&O z;i~f$6+yNBIWYoujf@c|4l*eI&CF`nWtp)nzfprtojKLuZYE2i;jZ%+YWw&KR_fcc zb55)kf7kS~erZ-h)d6RQ<;)ItjENKYCm1R=tdmRQ(=+(t#4si5Vz7=WgI+Pazn+6W zdq-z}5JQ!fgvnEeJB%Abyt5nf&OhL6Y-DOa&e-Cmlf_t4&1S=5kmdYk8sAb&X4{ZN z-Q@?PrJJIRUaXbOVu*Rhw@;vfF`|>zd+Upp;^GeB{c)cbHXoeK?G}Ahc~?3M^Ng8O jwlU;().foxPet = true; + if (player.ownedProjectileCounts[ModContent.ProjectileType()] <= 0 && player.whoAmI == Main.myPlayer) + { + Projectile.NewProjectile(new EntitySource_Misc(""), player.position.X + player.width / 2, player.position.Y + player.height / 2, 0f, 0f, ModContent.ProjectileType(), 0, 0f, player.whoAmI); + } + } +} diff --git a/Buffs/FoxPetBuff.png b/Buffs/FoxPetBuff.png new file mode 100644 index 0000000000000000000000000000000000000000..7abd0ca47cbef65a51e491da40adcb62782ba551 GIT binary patch literal 724 zcmV;_0xSKAP)Px#1ZP1_K>z@;j|==^1poj5Do{*RMF0Q*&F%i0+WrEI+C;nkJq`wU9u1%?5&!@H z#>U3o+1bfSDZ!L#^MV_l``@4d00Kx!L_t(oN9C7IC`3^d$Dg5$L`upAiKfUx*f3>b zqgYrd*~mhqY%Ivi%1SI)C@Cve%3?M)Q+8uE$U+vAkHkhANeL+*|8w7Y?)$j!z2Pxa zes%lbnYkb5oO|xa-tyF+##xF5m-T!D?TJy7Jy058 zUDKc7HkP9SyyhcS#Z($f3aI#n+jD=6rOFAL0oH5{5~s0ENf@1LLY1rr!^d}|$z+l= zHrP$NcmG1Vbn#5e>x^{=WAS~`o3x01YP6Sh{pyi4F?(!JLhH%)o5*uHE^I?}CFyxe zY|YohO;XMSj(|18`Shybo*oLFEnDlQ~mL)mga zSR=`~F_jRz0GE{QI`(?e1c^MC=_CX=BsdZ(4^)w0&s7nG=RCRcI<~%Kg2ZWTn*lQL z90i`Ez;m}e;NQ7D_jkk904siWN~XKXmILyWjMo%v$M|`YF`P??it0&b+J-V%FMdQ6 zZa;nNRqWQ^*Q*#EQND|x{ze4;^*()); + Main.dust[dust].scale = 1.4f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0.1f; + Main.dust[dust].noGravity = true; + } +} diff --git a/Buffs/FoxPistol/FoxBreak.png b/Buffs/FoxPistol/FoxBreak.png new file mode 100644 index 0000000000000000000000000000000000000000..e4aa4881c51b9e60c0754676f240f721bba882e4 GIT binary patch literal 541 zcmV+&0^Px#1ZP1_K>z@;j|==^1poj57*I@9MF0Q*<>lqd%F1hNYo4B-PE=gJ)ygP3RZB4i zBme*bqe(UtkkD z8tt*RwbII%fcz{__$8A=HZ1p^Gqc0&f%C(c(z)Q;hkUsp)CD`Qs)|HwmSwCq zq9{^VHGjR|b=_aOo&>hrEs3TqOLbM_d7iqefdhc#K-c$!AYffj0&yIZIKJ<*hGEDm zox%C}d;Jwqvov0w z6CQ2o2B^!X6^}T{sp+;)5ffQw(gbYHw$a&ubULI+8z}f(IEUa2eM5fXN?#GZjpJY@5^tPihhEb;xTg%{{I())) + { + player.lifeRegen = 16; + } + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 2f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0.1f; + Main.dust[dust].noGravity = true; + } +} diff --git a/Buffs/FoxPistol/FoxMending.png b/Buffs/FoxPistol/FoxMending.png new file mode 100644 index 0000000000000000000000000000000000000000..fc8b1f461a7824cca59383afe154a59b124dab5c GIT binary patch literal 557 zcmV+|0@D47P)Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*{`bxP@|xPg0{!Mh*M=nj|Bm(4jgL7w zX)#O)00057NklHnqB~GHxrmSfB@tQu+RT}KMSH57=Al7 zs7ITogK71`l??yimxI}NZ|?)sYWDxY^nix|3zWtLFrNc`4D%rjfP91vp!GM$ zo`V*ONMP`#0p$D*OV#+|78$@o3g+|teN!;f5UjiyG-&{5Ie;AZa(())) + { + player.lifeRegen = 16; + } + int num1 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[num1].scale = 2f; + Dust obj = Main.dust[num1]; + obj.velocity *= 0.1f; + Main.dust[num1].noGravity = true; + } +} diff --git a/Buffs/FoxPistol/FoxMendingBlue.png b/Buffs/FoxPistol/FoxMendingBlue.png new file mode 100644 index 0000000000000000000000000000000000000000..2ce03811dface5eb52a0703b7ac14622c5feded4 GIT binary patch literal 553 zcmV+^0@nSBP)Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*p7ZZ@#p6mtXJKcyKs{?W$g3-$wLvdP z>sHrO00053NklHnqB~GHxrmSfB@tQu+Qgxeh;D;u3!2BrmxnufN5Mn zyQv1sf&gOGYwGcU=_Fo3Fgr&gmeEL0rWjOxyNYf@xTqfB|%$gTNv$Nc?{9b^y~~Zg7EV z(Yf2eblkQUhQlSt!R(iJHiGGGduM{_0S^HdD2)MNJ_q?2=0gxT4a6WHVFTzsXZ&;* zOrwV)G8lYm06BldQZ>G~MFy~tg84l5$Z`zd!^(?6lLl~>1ITgzI@t?MqsJ}ChlIdl zn@BKiGHo`PhJnFX4xrZs$oU;x++qVTb=YzVy19dI99PQ6W$u870M2p%7Wc&Faa?6S%$&nu5)%xbTtKK*{NThSFb(q|dhS3^?dbXk rf2(*z_l#fw91?T{V7mu61Q-|qy>!(lccMSj00000NkvXXu0mjfo&w?| literal 0 HcmV?d00001 diff --git a/Buffs/FoxPistol/FoxWither.cs b/Buffs/FoxPistol/FoxWither.cs new file mode 100644 index 0000000..338df3f --- /dev/null +++ b/Buffs/FoxPistol/FoxWither.cs @@ -0,0 +1,34 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.FoxPistol; + +public class FoxWither : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Fox Wither"); + Description.SetDefault(" - Losing life!"); + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(NPC npc, ref int buffIndex) + { + npc.lifeRegen -= 22; + int dust = Dust.NewDust(npc.position, npc.width, npc.height, ModContent.DustType()); + Main.dust[dust].scale = 1.6f; + Dust obj = Main.dust[dust]; + obj.velocity *= 1f; + Main.dust[dust].noGravity = true; + } + + public override void Update(Player player, ref int buffIndex) + { + player.lifeRegen -= 22; + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 1.6f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0.1f; + Main.dust[dust].noGravity = true; + } +} diff --git a/Buffs/FoxPistol/FoxWither.png b/Buffs/FoxPistol/FoxWither.png new file mode 100644 index 0000000000000000000000000000000000000000..00f4a55c058b0e44546b6e0306729471bf1dd458 GIT binary patch literal 632 zcmV-;0*C#HP)Px#1ZP1_K>z@;j|==^1poj57*I@9MF0Q*s8GCfEOR6wCr~Id<#)NucHovqmMl^z z`~Uy}{z*hZR9Hvlm(NN9Q543f5?c5UK_uA1ZOe!tgebCA_yFyK770Q0070No&^t(r zNGO5`B3ia}k)`+)E`p*sXYM!N&Uj|-G@?R37{2RRbMN=fxqqDU`g|K572NkUH^&H# zf}Pj5A4t5H_8n`Zcf+bt%5IvLkL%wr<Ivg;De2#x7Rr0&wvIMH2{F5 z>aT~a&5s^yyW3)otbyhH7k92f-_w-_H35puc7D8d#oBpmv%--~LV{%QN)jb73PJ-Q z=dxf3a!waHqKllsjSJdyCwCp7>a`0DwE)*oJLjwf)qpHUSr>AaU>ZgyKo5y3F!?s?BF@G18_X?n?u~3ThGv2B6^=U3lrWfol}m%H=+*{hBn!UWBm;*v_>= z!|O@n90Unqe#apTO%@{1?#q6hUI95DRBZA-IZxuA2<-*(q=WSUu8VWKthM(uR_bt& zQy^2t$!Vy20g{l3xDdG;5=a1Og@%N*b3&@!P%9|yeiEEcL_i)+(7BAgc6)DH{b~HC z6On`-4A-`E`<~so3+iqdcc_$0v#fU4L+MavK^lSt{`D^-z)6e{?t9D$c-{}P)iXFU SGB`H?0000())) + { + player.lifeRegen = 32; + } + int num1 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + int num2 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + int num3 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[num1].scale = 0.6f; + Dust obj = Main.dust[num1]; + obj.velocity *= 0.1f; + Main.dust[num1].noGravity = true; + Main.dust[num2].scale = 0.6f; + Dust obj2 = Main.dust[num2]; + obj2.velocity *= 0.1f; + Main.dust[num2].noGravity = true; + Main.dust[num3].scale = 0.6f; + Dust obj3 = Main.dust[num3]; + obj3.velocity *= 0.1f; + Main.dust[num3].noGravity = true; + } +} diff --git a/Buffs/FoxPistol/SpectralMending.png b/Buffs/FoxPistol/SpectralMending.png new file mode 100644 index 0000000000000000000000000000000000000000..b6399d19dec538f98aab860da193e9f14b4b745b GIT binary patch literal 1416 zcmV;31$X+1P)Px#1ZP1_K>z@;j|==^1poj6N>EHxMF0Q*=68SQhkwkCf6SeKfQD^=mTiEgZGg3H zdA@CM#cg24ZBWH-jqHMb?2m2ipIz*)1jVfa#k>K<%mKyR0lwt{wd?_=>;abSO|AY- zo&IN+{%42&C=U$2f5qj0yzGCh?0=l>fT#9?m-df`_Mdn5 zuYwa3BEJ42uKrDp{!M-UfJSYAR&Akvf1!?l=C^<5$A8Ssf6Ux}#`b@<_JHqhZpubR zBA)&tj{X5=>;YEn1sMR$t$)nDe;}X$t1K*FBPF~4s#X6h8xb8R!~hj*098J5I2i$F z@AuPi86Fn^XV?B`$NvAz0RN_0w^sw-?|;_ze;EZHwItT&)_>;ae@)H)O}+jA4IyXd z{s3nG1s)t{_U>(`{{S+79j~KJ?CwqF_f6dXBG&gJ&HhmAzfSDVP3+zS&gDx000Z1f zL_t(oN5z+2NEA^N$4{1KM!AaNN0iiBTUrPeg+W_OXRTQT{#+U}!2pKNkD3*&0U*+8HPt ztEpoIM)2WLZlr54zzsl2O=g=hEXt>=h3^vbbMD zlPEWIe9Tly}0> zBA_^M)U@t@gX;OS2g37jZEQ?vk(d zXak`2P0~X-Cbc#CSba^v>c1*vHV;O<;5g{u){#rQcKL*YA3b<$A zChvxLnwsqv!?K)>^;WGX^N>N9V%#)GjR%LueKxS;hq>MrUDeyaZx z+IgU6lau!WWtH3yq%zWlRS!5D5--r>8ks5YEoP+!uq8+m4+_z%&5*Zu7U> zNbwt?F(A+N-s`b?@0bx-vDE_^t30w4q9C;qic>?WIJ(FQ?Xj~p<@!I#n#foVK-;aP z=g#$b;z7ZJ-9iS^PSmjob*7Vkx5Mg*Y7YEO%wI!!9=OxRw*i{wvpMxhdi~m*5~6#* zJRC?k-$T;ktXIziIfk!cRLAl%oC{jmaRBw5Wu{|!$Dl3jhl#Hz{D(=zW4SR`o!xz! z81h_tPbX-7o=J31FMWIM9f+}?sOCV;B?YRR6*zEPfpXMDLV;G{RQyA@@Bh3C0Db}b WpO6&Z12()); + int dust2 = Dust.NewDust(npc.position, npc.width, npc.height, ModContent.DustType()); + int dust3 = Dust.NewDust(npc.position, npc.width, npc.height, ModContent.DustType()); + int dust4 = Dust.NewDust(npc.position, npc.width, npc.height, ModContent.DustType()); + Main.dust[dust1].scale = 1f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.6f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.6f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + Main.dust[dust4].scale = 0.6f; + Dust obj4 = Main.dust[dust4]; + obj4.velocity *= 0.1f; + Main.dust[dust4].noGravity = true; + } + + public override void Update(Player player, ref int buffIndex) + { + player.lifeRegen -= 20; + int dust1 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + int dust2 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + int dust3 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + int dust4 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust1].scale = 1f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.6f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.6f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + Main.dust[dust4].scale = 0.6f; + Dust obj4 = Main.dust[dust4]; + obj4.velocity *= 0.1f; + Main.dust[dust4].noGravity = true; + } +} diff --git a/Buffs/FoxPistol/SpectralWither.png b/Buffs/FoxPistol/SpectralWither.png new file mode 100644 index 0000000000000000000000000000000000000000..40383e4121f3ae3b77ca3f748ddf43096f662943 GIT binary patch literal 1123 zcmV-p1f2VcP)Px#1ZP1_K>z@;j|==^1poj65l~E2MF0Q*=68SQhkwkCf6SeKfQD^=mTiEgZGg3H zdA@CM#cg24ZBWH-jqHMb?2m2ipIz*)1jVfa#k>K<%mKyR0lwt{wd?_=>;abSO|AY- zo&IN+{%42&%x!hxVU$_ODRv zzfSDVP3+!H?Cv7g_ae>yBEJ42uKrDp{!M-Uk!h`fMs0vrZJ~aDp^ks%w}0lxf6UB( zJs~}6_P=QM&Q0a_P2B!x*Zyb6{vw|KB98t6X6yl0?98oyfPa>8ReERk-e>miXYcoC z=Kf91{!P99S2|!M7cJ)2f9B?Y-|v6c_J79qf4263%)Nii+<)F`ez*Vt0`N&hK~z{r z_IF93zgmif+s;QUIZ&1 zY7wF5-U>n>(VPNew%9{S6eCt>oSFA#v->uiZmM<*elX0=Yu=Cf-uLFc?t?Bm+V2*4 z?hJpX2wDYa?%jI;kVQX)0s5sc8|>k@ihmvk_;CoJiD47FO^%MBKZ=%Rdr{khE&OqZ zI|VwlxC2a`7-ny8s`$x$mHXadV6~ta5UbE%=vy;z?qryOBUT1|mw{S48)Bfc9%dj% zv#8E&Z{`MIp!w8+)rSsLiVif;z85dRx|`E~{WBcU9+qlq&(EC4y~6A-k6|Om-a&vB z{CxH95&uqb>*`(orC?it3;;CRD$Wses3&R%BxCsldSs(c^AHOfeHmDI?!d}3M@La? zx~IW%kLhS<@EI`S=}aW^OVhX6x2m7nOM5RS82izXNpB6k9;+8pKLwEm(BAR>8KBI` zyoSfN)^4&TMclZlGZ0$`Y#T+m*cG7cxny0qIm@2ll`>$vbOySp&R+}F0nbx@pgNGB zENmS8zOj>berkw zC0S2QOtLrWu9b$37ZEqBaRM3hJfviezal~^LZj{mjJb6fci-#QWQd5cLX`{aV~!FD zU^}4+Lvi(j$0ak6hykht*XN@Z(X50!LF@vkVv&hzMY(Z8qs%4yU>_ML4*q2{d!@kI z;U^jT;FF9sr7NL@g9R(0JW9Wzkq8_3I1P5Ne_@EC<0l#V`bQ(); + if (player.ownedProjectileCounts[ModContent.ProjectileType()] > 0) + { + modPlayer.goddessMinion = true; + } + if (!modPlayer.goddessMinion) + { + player.DelBuff(buffIndex); + buffIndex--; + } + else + { + player.buffTime[buffIndex] = 18000; + } + } +} diff --git a/Buffs/GoddessMinionBuff.png b/Buffs/GoddessMinionBuff.png new file mode 100644 index 0000000000000000000000000000000000000000..b8e21fb7a1f8d5303d812fef946d45fb2d83d80b GIT binary patch literal 928 zcmV;R17G}!P)Px#1ZP1_K>z@;j|==^1poj5Cs0gOMF0Q*{_)NJFCwo)C;+5DjP(5J66Y zq_N0}RSHE28qvZ=#1vX;5s)+%N}{B)NF^qPjmW_vh>%7_K@^MxylBpl*hs_{% zP<}sdYcYkRW44ws{b1GBjOiVC6jyfki|FXGQhrbna47%CWnbrA=>ZGdLFSavmO~k8{J5nG8f-rprTSq%dcnVp2z-2#xi5 zy|N-Qr9jAiXwA>(zs#PqyOX;R!9Kr@V}b4?P`IuFzBP@2rJ$L$8m>VFQg?tB!KKRI zUb+ItZ=MkOF}v5bY0!o~z_EG`x+&KnDFs@wq&ol9Wc$xc9b1h8(1yNd_-h2e1&msa z=<Jj)2xTLZYDeEeJ+JfXL-j`5kZH!jD<=_u4&YJ%G#g>?=w=ziZ>g3q?WD_CU0y zBj9BlyZ`3Dj{rb{TI7bVtS?U1B86N*+uGW#xG#Fn^d6S_=MNX9ppLfCSXZJs(Z<4c zQ%4XAM1=06Z@cya?H#_WY5X;|6o~W@w2B{yf}t1|FoeqfZ+-}l@k6nmv#tV- z2z_Ac?Z9R}MlKF8fn*xROa}f9pC=5%8#1Cmd*{R3=G~pgQs?LR>!(*D4_y!ujswhO zP&h%et=DiY-sL>0Ft2e936tww literal 0 HcmV?d00001 diff --git a/Buffs/HolySmite.cs b/Buffs/HolySmite.cs new file mode 100644 index 0000000..6c88224 --- /dev/null +++ b/Buffs/HolySmite.cs @@ -0,0 +1,35 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs; + +public class HolySmite : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Holy Smite"); + Description.SetDefault(" - Losing life!\n - Lowered Movement Speed"); + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(NPC npc, ref int buffIndex) + { + npc.lifeRegen -= 26; + int num1 = Dust.NewDust(npc.position, npc.width, npc.height, ModContent.DustType()); + Main.dust[num1].scale = 0.9f; + Dust obj = Main.dust[num1]; + obj.velocity *= 1f; + Main.dust[num1].noGravity = true; + } + + public override void Update(Player player, ref int buffIndex) + { + player.lifeRegen -= 20; + player.moveSpeed -= 0.7f; + int num1 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[num1].scale = 0.9f; + Dust obj = Main.dust[num1]; + obj.velocity *= 1f; + Main.dust[num1].noGravity = true; + } +} diff --git a/Buffs/HolySmite.png b/Buffs/HolySmite.png new file mode 100644 index 0000000000000000000000000000000000000000..8539e2757618fe053cebeb224f7e7d2778cb1052 GIT binary patch literal 525 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 Mg*k$*I!L1b7n8Xega7~l literal 0 HcmV?d00001 diff --git a/Buffs/IllusoryMirror/All-in-one.png b/Buffs/IllusoryMirror/All-in-one.png new file mode 100644 index 0000000000000000000000000000000000000000..1aa439a5806f047705b9c3427a3683ed94b9ece3 GIT binary patch literal 2328 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 literal 0 HcmV?d00001 diff --git a/Buffs/IllusoryMirror/BlossomActive.cs b/Buffs/IllusoryMirror/BlossomActive.cs new file mode 100644 index 0000000..4fe588a --- /dev/null +++ b/Buffs/IllusoryMirror/BlossomActive.cs @@ -0,0 +1,15 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.IllusoryMirror; + +public class BlossomActive : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Blossom Active"); + Description.SetDefault("Stand near it to receive buffs!"); + Main.debuff[Type] = false; + Main.buffNoTimeDisplay[Type] = false; + } +} diff --git a/Buffs/IllusoryMirror/BlossomActive.png b/Buffs/IllusoryMirror/BlossomActive.png new file mode 100644 index 0000000000000000000000000000000000000000..68974f4bc1d30be9bc6ce2c35482b98af576ce65 GIT binary patch literal 603 zcmV-h0;K(kP)Px#1ZP1_K>z@;j|==^1poj56;Mo6Mdqf@0002maIbSLbEr_f;(UC^-{AJTE5-l- z0pv+UK~z{r<(HvL1VI$W_r$2lrXUx@WKqy0CX3Nxuqs%Es~4{xSOu*Hi_u~dlY$nL z7>)z|2ej*cZ}(dsv-5UmZck6}2Xk+Cc6WBZ@6B7s*89cNSCTTnzl!i{r0XB_t28*V#c% zume>7c5olII|ejmPZ zL39;VDaWGJEd=vB5Sx2|mvUiZlG+`29YlQx>XgOyYl`mx6o?F)~qN~71lQONW0&TNz4Y-55Y0=k5ssc+vUB7kRN8vzcrGrq~ z>9|e+ckmeH{Hxo4?n?|>16q~)a)J~wO)-=vfSruHn*mU%o9=V*^;_fCmZ8SC5JSt< z!b|~jkA@stU&lJ|9LKSUa=@pGeX+_()UH^gRUzLxJs7L*`H^?U7I<;2dQdpP@?yUK p&woa#a&f>{&p!zrpRfZ-@(p!nCR`23f^q-=002ovPDHLkV1ngu5o-Vd literal 0 HcmV?d00001 diff --git a/Buffs/IllusoryMirror/BlossomInactive.cs b/Buffs/IllusoryMirror/BlossomInactive.cs new file mode 100644 index 0000000..8017281 --- /dev/null +++ b/Buffs/IllusoryMirror/BlossomInactive.cs @@ -0,0 +1,27 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.IllusoryMirror; + +public class BlossomInactive : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Blossom Inactive"); + Description.SetDefault("Unable to produce a Blossom!"); + Main.debuff[Type] = true; + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(Player player, ref int buffIndex) + { + if (Main.rand.NextBool(3)) + { + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 1f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0.1f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/IllusoryMirror/BlossomInactive.png b/Buffs/IllusoryMirror/BlossomInactive.png new file mode 100644 index 0000000000000000000000000000000000000000..c4fa511e01109eaa969ec618840a3ead2b461042 GIT binary patch literal 688 zcmV;h0#E&kP)Px#1ZP1_K>z@;j|==^1poj5Ay7DC>!b5H~ zzKS>;f0&bQH!ejmYJia=w*PC`R&WFcjfU8=NFs1tD#Mw*+`IUrtxfSzrj@hvon})! zm=y`m`Q6K__{Z_O_}gwrymths{Q2x$Y*~?T4ggAERNxDq*T!~Sct-#shizY7im|*X znE_z6rdKTHSkE(Y-M3+D7X)X)Eali-wE5uN2SVo_pi`YCv$7*-ADE{s^uA^-_K9NG ziq*<&upTK22J)MIK8dVP1Qt=|OA-MWzRFm3)w>AJ0vn5@>C7z9VYaP-bmQr1(e`E_R<_>^wL!4an+t0=#%6W2fz75%Vuh%n`N<}()); + Main.dust[dust1].scale = 2f; + Main.dust[dust1].velocity.Y -= 0.5f; + Main.dust[dust1].velocity.X = 0f; + Main.dust[dust1].noGravity = true; + int dust2 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust2].scale = 1.5f; + Main.dust[dust2].velocity.Y -= 0.1f; + Main.dust[dust2].velocity.X *= 0.2f; + Main.dust[dust2].noGravity = true; + int dust3 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust3].scale = 1.5f; + Main.dust[dust3].velocity.Y -= 0.1f; + Main.dust[dust3].velocity.X *= 0.2f; + Main.dust[dust3].noGravity = true; + int dust4 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust4].scale = 1.5f; + Main.dust[dust4].velocity.Y -= 0.1f; + Main.dust[dust4].velocity.X *= 0.2f; + Main.dust[dust4].noGravity = true; + } + } +} diff --git a/Buffs/IllusoryMirror/SpectralBloom.png b/Buffs/IllusoryMirror/SpectralBloom.png new file mode 100644 index 0000000000000000000000000000000000000000..d8f88c6310149bd72ccf473323e055e0e2dfa7ee GIT binary patch literal 942 zcmV;f15x~mP)Px#1ZP1_K>z@;j|==^1poj5NKi~vMS|$)00010u$~`qU_qIOBo{69!6oF@CG~P8 z^_nHe-{8O2C79ML|Ns9)!PZ2Y)28TZvi{uKBpfau4Uam=djI5+W7d-K zzlVX7PwvA+_}prRM;&a>=jGM>?eMIFQ;k}9)Mbu{dtT%5iL=%Y%|K(hE%l%sp8Y%` z26kUO4I_IF?6cN8e#Tm4rZYzXUv`L;y<9lcVM4DW%_eIeJbhs8yVq~5eShbnwV4@c z%(bQAw`FyrCLc#@a?h}ECHQKu(K&@odb1!g0A!BA3N z#4>=)Sx2{VlxA{~05PYX?#)ly@u*a>BMYJc(5ZBHL*}}!nh978H*=t{yd(vGDLm_H zfpGmKYJl};U0r4C;DES{voH|_pd)4W02PdL&H*|&pb%U(KTU0({B1Uo!wVBaI{xVh&4_D}^=p7H&jL6PYxi z>#A!DP=x+y*^Hfitr$pJ0YG8^>{wJSow`jZ4R{XsV<7uD47CdIBHjOi6>nYEy%ni$ z*3I}7yA0Ei`KvgXziKUPx#1ZP1_K>z@;j|==^1poj5LQqUpMdqf@0002maIbSLbEr_f^}!|N)+P0FCH0ym z$KT+;)+LzMD@4K8M4Hw_)}Tbz#YA$}L`&B7B_;JsC2-bKN!EF{v`dr#00MwXL_t(o zN9C72XcR#d$N#ZQPAjqTBc#Y$tP)VrMllMzMM$NEg;lC(BZQ=~xatb4gn&(w%F4nb zR!53mFcEDO6oM`!nmf2grWBAB{dm2r{BrzKc^h|wtJ%9YRlk4q@`&=H_`jpT_RKSO zId6B5W$)Tt9Qls3i#M}RZA3LjloN`c*O9TD6=-dE_>_3rr~b(mm^(km4wptJl)rZS zxbhsC9yu@I+X>*bpJpxPO30qSc=}cOH#=*}&%d8nzOn+XSr4rh51YdgJ`P5BPAV)V z=d#}3u`YlkVUq}|!r#|T#<5XZf!acf+H{Jsy%1*(LfoJ&xaWV!dV8m10eo7`6U%$7 z@3UZQFQRB%#yJaW0oT1}c+y}a0k(j6+Aqxxr#jFrGS_yUd;xN5 zZAcp02$IKSuh1ACLL(ePFq+phqFbqOdd#nRuKcrwp)R&Qq#@ zYh==H>o20?*U-G_@QF1KoH=+|zp1L+oSc3Q^{C9r1xZ6!Iu^h;8S^&7Na~5{Z6-zS zwsD=ZfC~|)q0UTl3lqr$GzPDeol>PZSm`W4HmnPfie<}=D)4h= zD%Sjms2{A8eeRluCQi3v9X%@EZ$5;8r>Y^3)$RG7Z^bsG6uXiuAn7Ih{r~(kqR5p3 iMfv0000()); + Main.dust[dust].scale = 1f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0.1f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/IllusoryMirror/SpectralBlossomInactive.png b/Buffs/IllusoryMirror/SpectralBlossomInactive.png new file mode 100644 index 0000000000000000000000000000000000000000..32044d8402411fbb89dddc6f9ce63ea706749e2f GIT binary patch literal 914 zcmV;D18w|?P)Px#1ZP1_K>z@;j|==^1poj5QBX`&MZaD<0001wP&pifRD-}&xxFL!7B2Y%r7 z_uk$0et+LD@5bCq=f07k_~<#rA4BMsa-aPB7a0>nMu07P+50NxgXTvmO;ih$YSt&| z^JlVspE=_HP6X~;oP+Rrw!N!nea=rGp!*x2)T+WIf~=)AvSvjzLWK1Ujld|L zB_%cm&8+ZzRy3fi4sF?vu@!fUx5coWzxOvLE3sfJU7vqR*#a4Z=0ht&upxth(8Bw>} zrE0b6kF+5FaUC{Lgh&B<8bv;z_lps=pobYXAfAxTh`BPi-&Y=cB;#{Cl;}|aSmQdt zOEG|{C~^PP()); + Main.dust[dust1].scale = 2f; + Main.dust[dust1].velocity.Y -= 0.5f; + Main.dust[dust1].velocity.X = 0f; + Main.dust[dust1].noGravity = true; + int dust2 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust2].scale = 1.5f; + Main.dust[dust2].velocity.Y -= 0.1f; + Main.dust[dust2].velocity.X *= 0.2f; + Main.dust[dust2].noGravity = true; + } + } +} diff --git a/Buffs/IllusoryMirror/StrongerTogether.png b/Buffs/IllusoryMirror/StrongerTogether.png new file mode 100644 index 0000000000000000000000000000000000000000..27313e2bfea023304a9ff74485b54636e847633c GIT binary patch literal 743 zcmV?P)Px#1ZP1_K>z@;j|==^1poj57*I@9MJUW!0000XuuB$lG9Hsb;(UC^-{4-~h04N{ zH~;_wZAnByR9Hvtmpy9~Q51$Z8c-52g&>L=NS7j25Wz;Uwz0L2zrZ?W>NK{dwzbJ0 zunCByvakz8MG06W;G%`ZdCtyzIh;9nW(PzCecyuOqkT7H-s>;jx?)y}|2+zBsGOk+h9LOes~aT=?qkSLjnahI zo^E2w5@byWs(N*2$E=6oQ4IxGQ)&rLb`Q;V6d^?`s{w=OfGSrtjJ~SJQWVJWf#UY_itxSW zYn9jNRX`O-G++B(_yV#s1&RW-(`smKqcU0L^pp~aaRz%}3{bitAQJxK zSZN<5Kyd9QwkzA2>hVdellCC$Z9=~tJ*rUfeU@M;piL;FvjqHT#HSg+ajYJvnPbf< zQLX#xvj;_K(W`)nYl_v}P?JJjcTcqmk)A>Jj967xd4&78o?ok3h5S{pSDx002ovPDHLkV1lR!R@?vp literal 0 HcmV?d00001 diff --git a/Buffs/LunarBow/All-in-one-rainbow.png b/Buffs/LunarBow/All-in-one-rainbow.png new file mode 100644 index 0000000000000000000000000000000000000000..5325b2f033c4b1b53b9a3c0feb8c0b356bca6cdf GIT binary patch literal 4111 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 Sc$lnnmpgOH+N=QM9Q-dJ)yX9Q literal 0 HcmV?d00001 diff --git a/Buffs/LunarBow/All-in-one.png b/Buffs/LunarBow/All-in-one.png new file mode 100644 index 0000000000000000000000000000000000000000..fa2a9d55aab148c47ef50ebfbb738c46d0d0a905 GIT binary patch literal 3799 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 literal 0 HcmV?d00001 diff --git a/Buffs/LunarBow/ShatteredMoon.png b/Buffs/LunarBow/ShatteredMoon.png new file mode 100644 index 0000000000000000000000000000000000000000..dc87196566be82f841114007890d9fc19851b286 GIT binary patch literal 629 zcmV-*0*d{KP)Px#1ZP1_K>z@;j|==^1poj55>QN3MF0Q*PH%Rs($S5%yxsWu$LZ=)m@mEn00IF? zL_t(oN9~kND@8#V$Hz;$b>rR*bys$>BEEo9Bnw|a+4ummVWqCDD9Hz~QFc}qifk+_ zti%eXSdo{-jda;u{ipd~&wZSkbIwh%IKP^nnK`HVKl8kd$;kL?TAWSI)Z9YNP0ils zTGQvWI-3ZHO5vH=X*;;5zbB#H*&sX=Vvd@-wcW=Y|KR)G{geI9eb^AOKj7ev)fKlg z=Ir{?+U>2Kx&Xx`aO8OZFxH7+3bZ&F>g%^whMu_FH;C(hG^uLfu~MLTm)IsE&e()) && player.statLife < player.statLifeMax2) + { + player.noItems = true; + player.statLife += 2; + if (Main.myPlayer == player.whoAmI) + { + player.HealEffect(2, true); + } + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 2f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0.1f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/LunarBow/ShatteredMoonsBlessing.png b/Buffs/LunarBow/ShatteredMoonsBlessing.png new file mode 100644 index 0000000000000000000000000000000000000000..5be7b72a0ab84b450128be4e7ecff68e3b9f10f8 GIT binary patch literal 967 zcmV;&133JNP)Px#1ZP1_K>z@;j|==^1poj5Ay75CLl6{aw;G)7!i`uk} zuubb0wP_Uut!hz3yC8@nY7n z=iK||&HJBw?z#7!DQkIpa9#@Z?zjQ-$0+EkE!WS#NLit21n5zIcv9{3qY6UlG~M+`d3LgeB_X9 zYuhTrSF(C-)14;$el#8xTCdOf)bn1S`|;(t>P$Zla%P!+mH@&4g5c`q>(bXb zq!yr$NZ|YI$e2i%UY6G#JwYdiFb7h{+hC+RlT^z!gZTL~r?n5B_w}l!6M*6tIP$RT zLFfc?VrC$xcJ$mcwXr$iii7RVEovd?uD{N{Xdw;<89g719Kg)oj3uMFzBoAzUO))z}Zt2q>{n%xY&FE))71>E()OoIH}yz4Y;Ci6nyO2w^ySBYjJfVBM`Or z#1{p^JU|pE4(p3T=m1VOd%D@s19uF#6YLgb_~{6e5skPy-W+geYR9fK%mE5<7jP$_ z`S3ar2c5CIfI@V{3cK6YQqqB_&_@9gGzxQ!<|d*gbO3KN_l*X8yMQO6g%LqRpTdX; z&jVK{G6J~y*ol+H(L$_4ZW02BG9kY!2T;-2s^;#6v$C?< z>cr;2`imWE-DMzd62b{?KVU=eW03=RYw^wHp55;Ha|tYnfDJ#f&$TRY0I$e*N4vEF z9vEDT_J-6VaYlf7;EFH#T|f|a)Q6~&ch+xKi!qlY3M)>q?zkSe1wmMn)wZX#Ov>FK zl!=@DGJffek;t}{h>hB0QI?SHH5j#)#T(U={c(%*lc z$g5>Z=B()); + Main.dust[dust].scale = 1f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0.1f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/LunarBow/ShatteredMoonsCurse.png b/Buffs/LunarBow/ShatteredMoonsCurse.png new file mode 100644 index 0000000000000000000000000000000000000000..adc4837cc455815097e9e1a36cf7c35c156fc28f GIT binary patch literal 899 zcmV-}1AP36P)Px#1ZP1_K>z@;j|==^1poj5Do{*RMao7-00021EG$$kHhV2EPH%Rs($S5%yxsWu z$LZ?Z+uKA$M7OuMC@3iSCtBSA00Q?(L_t(oN9C8lYg17a$8W4qap|PeE*(s&LWH_> zbua|drHkSqb#co7;AR$G#6O^m#X)qbfd&H=T)WsIP&HW!p`|)?5ga7G?|JuoJvr~) zm!S9q{J`zGFYh(yobNs7-j~vDy*_dYE8Q;4A0zQA_LThni8`XCa_nU@w1fW(KkO!VJ3vikxBo5tJf3z(+ae%EQj$c zoc1=X;ib}7v1{`e#Olm8Z>);FzrQE;?!7x=TN}w|us)deo$Zh@mD)Nw7W-i|E0%-+ zilE~$he;5yK<0^a+&?(_>^9SnC6Gyk8n{_qfe8vQ12}*D@PW+1yN~b1KHYd0l%R7B z0(raL4MDIbsKCqKuGqpFu+G7?rORUB(5^q6(!x0cq<3gJ_PtRBm_40>^K)~4HV!hyk`NsTzNbiq5CC>6ySoAF)T$8U`f6R&fz?<)xeDa1 zJ&CD6SO-vn&S7IJgaFX5dUw;(1A7hF3AzO-KLbHAVi4;mS_3vyeQkqb4bTz0fSrI5 zBN{*v3`TbW9WfB?*tV-?VgPy4=K&`ebj)iETZozv0QP))qJdZ!a7WZo5e&@f7>aN| zuzsS)aZx7#1YnC0un<`XTn3w5<~YV_$P*DaUp;x`E}oeUqX;nlM3N^zz-egTl0ZfQWLz$n z{Z$ICsf2Y-1y~2x`P63t84Lz~=G<^Nbj@Znj2PNE!Mfw~q80?1HzJ*VyWRG)luD%{ znX|=O$!Ao7nFFjlvc@x1V@vL28EZopAl6(50#zD~hRpF?Oj2ENeCFz#*JACv0DWcl z0o?^~j6je%(0heGP=M|8X()); + Main.dust[dust].scale = 1f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0.1f; + Main.dust[dust].noGravity = true; + } +} diff --git a/Buffs/LunarBow/ShatteredMoonsGrace.png b/Buffs/LunarBow/ShatteredMoonsGrace.png new file mode 100644 index 0000000000000000000000000000000000000000..1cef7fbe789abe93ee2ee437c1bc6f80e645ee21 GIT binary patch literal 1001 zcmVPx#1ZP1_K>z@;j|==^1poj5Do{*RMH8ah0000FjJyh2c@K4+PH%Rs($S5%yxsWu z$LZ?C&d%@t|NsC0rLV7PjNZZ7OINw21ydwAV#~v}j=oxrkZ_wp1euOtP>)NJiKMMKR%YzccT< zp1E(XGZ|RW58j+RGjHDc?sw1qGl@+D(^+Hr)KibJYS_FI%jEShlCYOJKt(_2-$=}i zKav=tqUA``%2De5$*LNObo}3OAa(sA!V({5qeet^ZPduYo)9|cDDwOC*`pFy>_F>y zpS%8qa(i8r#-^=iaqhJ#FSj3kO`GKYHdAI*FD9%>8!B;&X@C2`?D#Tc-tRtaYUU

L7wFpQIkWlFF zGml$NO9W`c34A|0_tBV<-2J25J0vcLtAX{WE+CkSZM!6L%#i%Xl}pkFlhacY2l@wd zA}maC%^v7R%A4MdGK)M$qE&x6EDwfQr z(-K1>YPW2TT1z+w0?!RPz}_<{s7j@xRzBz{hJL+4SnBtq1;lz?q<@Anm6RnF-Of1b&`i4fs9P z?|m_>0Vd)s;7q_3qNIh$hhk*zM~jk6q82COPghM$05*wX8;5URH8bCTNN4W7Gx7q)0xm>( zi;xuqak|IIqfbwH4q!t<;?|}n={=nYiJ;|xA~^kkwmw9`X$TiU$caKbB7p}aCamVMJ z2_Xs!063;o1e}0~?yj!r+ob|yPuX*hyY$@N6B`N-cOnX%iqqG6C1NN>?%j1Fj-5F# zQKJivwvVpaBhfz#@Kjt>0HF}VKQcs5HNh{qVgi2mpApV()); + Main.dust[dust].scale = 2f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0.1f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/LunarBow/ShatteredMoonsRejuvenation.png b/Buffs/LunarBow/ShatteredMoonsRejuvenation.png new file mode 100644 index 0000000000000000000000000000000000000000..edca03afba9cea5579a4de16aa62afe7e25fd804 GIT binary patch literal 894 zcmV-^1A+XBP)Px#1ZP1_K>z@;j|==^1poj5Bv4FLMV#e30000=&?6&@X(F*qPH%Rs($S5%yxsWu z$LZ=Q%voOFg*R^-WdHyI_(?=TR9Hvlmp^DzQ542sq@Y_7X;nlD25JNcg(64?p| ziwgeW_Pm5N-#Ons_fIPK*GIRKHkS`9BK$Ghx)yiX-@izuJPjy z=Z>gwUtmwL2_eq?06KcU-kp7B1Iv*+R#9IlDo!x(c%LgF zMn?j?B(PE}OHPIF3pN-lW#ycARE^L0sql2%icvM~X2s|Spl5l^Qf)YXW_fJIqQ499 zR-8)!APH7nlmO5J1?W-(Wv}HS0sb=5--uk6MfkhJw*4}K6BymZx0C<<*Kv~k0Hwjz UpF07*qoM6N<$f=K+6ZU6uP literal 0 HcmV?d00001 diff --git a/Buffs/LunarBow/SpectralMoonlight.cs b/Buffs/LunarBow/SpectralMoonlight.cs new file mode 100644 index 0000000..262b2bd --- /dev/null +++ b/Buffs/LunarBow/SpectralMoonlight.cs @@ -0,0 +1,34 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.LunarBow; + +public class SpectralMoonlight : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Spectral Moonlight"); + Description.SetDefault(" - Recovering HP rapidly!\n - Immune to all damage\n - Can't use items"); + Main.debuff[Type] = true; + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(Player player, ref int buffIndex) + { + if (!player.HasBuff(ModContent.BuffType()) && player.statLife < player.statLifeMax2) + { + player.noItems = true; + player.statLife += 2; + if (Main.myPlayer == player.whoAmI) + { + player.HealEffect(2, true); + } + player.immune = true; + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 2f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0.1f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/LunarBow/SpectralMoonlight.png b/Buffs/LunarBow/SpectralMoonlight.png new file mode 100644 index 0000000000000000000000000000000000000000..d550bd20ff462a723784364dea3be4116573c01a GIT binary patch literal 1050 zcmV+#1m*jQP)Px#1ZP1_K>z@;j|==^1poj5eo#zQMS|$)00010u$~`qU_qIOk>rMfmEZf7q2zy6)w@;A)7k2b&-<0@ zwUynyjM4Ipzx$U}px5iAm1oc6Rj}7pkk{RujNRRg!SamV&5Zy5|BuykSJkT^&}ZKO z00TNnL_t(oN99*NXj4%XK9vp@{Kt?ELBT~r=_HCeXgfHlL%ReAm+BHqh8Em}SWwW> zb|{iX>)`a3c2GyFgTI4=#Gn*K&5)o3BSJff@qXvMb9;00?o0g_{NU!?d*9D@&Ueqb z_oe52t=1xgbN&4=e+-6~?K=Mbi|8?p6%db}J-o&C@!~zUKI|Jh6!k)^_5Q*A$JmPE z|BeE=`KvG%AL{j}7h-!l9rZ#;Bmz-R(CztP^fcQaRsa%8`x#gTc217L(5~!mw!7(!}_^=~vkTMKeHDC+sp;Q%7n87ug- zyv$adKn}Q0Y}>pc>a9W)@V(co07rjw){+97`ud_?I}quW%+YAn?g-wKq=Iz-JC)wu z08Oe@@FBNYVRdqIm1rh}=808+qrcI<_5z;@0?7lYked(5bJG>C3f2MCtGm0o(gS)7 zOk~d55=0e%9K?V)5{zXjn9On?&^+E8(2=@h?Tq9=FmQy&QU$?iSP5u8cpXTBIOA4< z5S229c+X%Pu`X8^T^)#%J`Ny36Ji;oAqRZ04q(sMCmP_Zg17ZfS+NxhY5wUun}o;# z*$*^NtOB?>b+QnR+Tl8+lMu+2pHP13b(ja=lLPpo(O)&G;{{3`EOcE45XeR(RRBN% zIOj&Jc@lGAxO9oFUIu|q!cyjdEk6JXbUP6{9Kfk1Czsy4_4>;axPSsuhVC`@y&5=< zTjn@s>o)U(j=8(lVr#)P_qte; zuKZYc%Nv!bumAu607*qoM6N<$f+qX=-2eap literal 0 HcmV?d00001 diff --git a/Buffs/LunarBow/SpectralMoonsCurse.cs b/Buffs/LunarBow/SpectralMoonsCurse.cs new file mode 100644 index 0000000..e8a60c3 --- /dev/null +++ b/Buffs/LunarBow/SpectralMoonsCurse.cs @@ -0,0 +1,27 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.LunarBow; + +public class SpectralMoonsCurse : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Spectral Moon's Curse"); + Description.SetDefault("Unable to receive Spectral Moonlight!"); + Main.debuff[Type] = true; + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(Player player, ref int buffIndex) + { + if (Main.rand.NextBool(3)) + { + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 1f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0.1f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/LunarBow/SpectralMoonsCurse.png b/Buffs/LunarBow/SpectralMoonsCurse.png new file mode 100644 index 0000000000000000000000000000000000000000..9d7b52e21269cfc36ae2dc79993247bfd39ce02a GIT binary patch literal 1110 zcmV-c1gZOpP)Px#1ZP1_K>z@;j|==^1poj5giuUWMZaD<0001wP&prMfmEZf7q2zy6)w@;A)7k2b&-<0@ zwUynyjM4Ipzx$U}px5iAm1oc6Rj}7pkk{RujNRRg!SamT+uKA$M7OuMC@3h8)pJ+X zt9fe|V*mgHa7jc#R9HvlS5HV(K^z{#gF;#wOMiF-fo7{jL3pqZ71%*K5Z? z=Z`l=In(if$AQt_E(C)oiyz}&gwt(JaW4WhA?O@Y?fZjMGZKH;0a(cPGcXPuKGcSw z+Usyhse#Tt679^W8ubF=vGA7qq?*)lkT=%=+f6z(Hv2*1{JPMo*UO6%Yvr>FNc_Aw zq}J=Sox#nBFt{PtN!}OEs8YFB4R&Pv%GUS82zD|I0j z0f0OoPOA+(gr-%N!gWq|E2P06G0AvbkBzh z0m$5~SYmZ;O(I3025b?{yLQICZ=eId-}O2m**_dNq(EbRecVd|nN9>f@hB+-zq6GK zMgVpycXtC^Qr86^a*r3po!p&;_(}wqC)EMT{(f@q37-oD>i{m~rXup(?FFw3MgZ2U zy}Q}g1MV0Y(94iZ5UT*>w4Xu>SF@^cEh~M%j6_NHiH};uA*`#O`vnQB^>i^=SYJ8i_eZLk;*~1Ypm1-)Mku6})-3BGCr6 zVv_c~cx#FfHNgGAB%s0pWZcry5|1KaOeaWwB^VI`Iv|B7=K)O~ zFGB#1`gTE}LO`)tjC)FjVW{%?ylFnL2yOc@@3`*13(|lS!lpiuNYt5n8=rj;4sDLk zU6;PjRN}?Cg1N8fU7{{R^Gt8{h&1q!3oUUfrd618dm7+MPft|k_H!=mg5xuqRHAzp z;QfREfH!o;LJT3Tt*vs+Ca_;9fV+up_gHQOuxRi@X&Lg&NVsQ*U;57onS#)6zYG8S czhkAo0-je2js0Q{KL7v#07*qoM6N<$f@>WOPyhe` literal 0 HcmV?d00001 diff --git a/Buffs/LunarBow/SpectralMoonsGrace.cs b/Buffs/LunarBow/SpectralMoonsGrace.cs new file mode 100644 index 0000000..96e01ce --- /dev/null +++ b/Buffs/LunarBow/SpectralMoonsGrace.cs @@ -0,0 +1,26 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.LunarBow; + +public class SpectralMoonsGrace : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Spectral Moon's Grace"); + Description.SetDefault(" - Falling slowly!\n - Immune to knockback"); + Main.debuff[Type] = false; + Main.buffNoTimeDisplay[Type] = true; + } + + public override void Update(Player player, ref int buffIndex) + { + player.slowFall = true; + player.noKnockback = true; + int num1 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[num1].scale = 1f; + Dust obj = Main.dust[num1]; + obj.velocity *= 0.1f; + Main.dust[num1].noGravity = true; + } +} diff --git a/Buffs/LunarBow/SpectralMoonsGrace.png b/Buffs/LunarBow/SpectralMoonsGrace.png new file mode 100644 index 0000000000000000000000000000000000000000..28b1dd2f8b08e9d962d781cdc762e18e81ef90dd GIT binary patch literal 1123 zcmV-p1f2VcP)Px#1ZP1_K>z@;j|==^1poj5giuUWMdqf@0002maIbSLbEr_fk>rMfmEZf7q2zy6)w@;A)7k2b&-<0@ zwUynyjM4Ipzx$U}px5iAm1oc6Rj}7pkk{RujNRRg!Sam6&d%@t|NsC0rLV7#)pJ+X ztIe1Z=Kuf$eMv+?R9HvlmrqDkQ544Sh(Usu7E;M0j6yIA8p9xx2(m@BP!|)Ci`ot0 zBEeRHL-}&yj_uYwod@zwwnyL$Ngg=JPE3rua{zYQ?5(lVg>D8>nzL8OhQ6!rhgOSgA zzh8Q!S|T0)cO01R7(g(L&z1!vpZe-=!N`Y|5IRQ+{eMkQtHcdE01J8j3dKP*bJ(!& zw8Z1*wo9}tqiXico%AiWpej_A7nk=a25z!qI`!<41T{7@><Rw*mzO0{1bV<0f$Cl8K-7IB9gylD_nM?&OG!yE3WG}TdVcc)TL|ux&jlj@JC(b; z0XM1ZLKKOoQ{qnI-c<08kDDi_15$l|c)~mg{+13O1 zHMrtkGfNPw0Lf`Tg`_Uks#Hgxg%NNKB6TTQU0JXL^87!v%dhfCCjpF*W&mLY--D@kLaviEu#zZbbGb1P36_t{8dj z(^JTS&I6s2_*gtH)zb-z*i{x5;WlBPchoFD00#;^5woTMzy*-Yi9MUz&HQr;Y~TQw zq5T<7NbV^KWC?iKG9pRK^C+JA9aW z;ZpEae15P=BBtWW&|pY}i+vB;4mW{&7U1Uv1rQ1$ZdLYD1M5AO8v(o_Z&c`)PWPMc pkmy3+|LwnwT*o%b|NiS(sUK*I()); + Main.dust[num1].scale = 2f; + Dust obj = Main.dust[num1]; + obj.velocity *= 0.1f; + Main.dust[num1].noGravity = true; + } + } +} diff --git a/Buffs/LunarBow/SpectralMoonsRejuvenation.png b/Buffs/LunarBow/SpectralMoonsRejuvenation.png new file mode 100644 index 0000000000000000000000000000000000000000..c66438fed1d5f87f5188a69e9e23b6fe76be726f GIT binary patch literal 1082 zcmV-A1jYM_P)Px#1ZP1_K>z@;j|==^1poj5fly3TMQ!ES0001Huf-j3hd7F$k>rMfmEZf7q2zy6)w@;A)7k2b&-<0@ zwUynyjM4Ipzx$U}px5iAm1oc6Rj}7pkk{RujNRRg!Sak%u%3eG=-thXkJWQm)vJAX zXR`nR16N5zK~z{r<(E%L6j2<Swf)* z3`DvVbjgS%^bmING>7a^UMr}!JOqUqCUCe+*w&;u`tln-*Mpd?MDcj7c(>AQNX^2hVUqWJt1_Cl)HcA#36~l>;Noe`yI3cJNqsp zsQS8EiLG6263w15Yt##buN5z;Pil)AO!w&TfaxZknj9-goL_h+ac-zzVzqphfx=H` z2h`W~O11k!5bO;FDV{ApQA^9!YNV-EzPE=p3Fi=?=V%aLe3e&=3wgC``wqEwr#K*j z5THXcj76qGXYQm!^=;@7gM|c)Z1kWkuf=&P{ zmA$$FThw;J1!@59WJagMZvt$cL@OJ1TbIC)y=dX z*yo@(eIYUnAWr+4h}YeyyuL;`2DXl~2JD`i=XNrz0k7$(oO2d<~bT_z=ci#s}+6>GUGQTrjF;Fv*7KA z_YzI86jL<&d`=f3YJls3y)woefOvD;F`a~snUGzCATu>7OR?0!&(r{SG+yT^^|EkJ zA}Kcv5a2>&E<$hs$(cQdj=6h^IKWr3DGv6uoKvZ~oT}Xz)CIANa5#NHPd@+$%DoX| zL(q0*R2pwg9SlS{B)iw<^!RfKOyB^gp?M8EBzu().kregPet = true; + if (player.ownedProjectileCounts[ModContent.ProjectileType()] <= 0 && player.whoAmI == Main.myPlayer) + { + Projectile.NewProjectile(new EntitySource_Misc(""), player.position.X + player.width / 2, player.position.Y + player.height / 2, 0f, 0f, ModContent.ProjectileType(), 0, 0f, player.whoAmI); + } + } +} diff --git a/Buffs/MechanicalTooth.png b/Buffs/MechanicalTooth.png new file mode 100644 index 0000000000000000000000000000000000000000..4a8faf2eb52a8914bd90fc8fb7e40241c7bb9fd0 GIT binary patch literal 548 zcmV+<0^9wGP)Px#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*&F%i0+WrEI+C;nkF)ur4X>Q8o=&!uQ zou8)V-5_2700E>)L_t(oM`L6_fd5dMUI1)26PP)G0OSg=&(FU72cm#9m}1D-cn8A3 z0cQBCKv@t#ta@W%Fa@L`ejhv`FzXg11Yls*L)0V@CXbw45I%tcSjfQuA^mA;gDnJ@ zx^ICf1}6h$Fx_bcaWT5jria>sX>%)MFrC^m0ZhXHx_Vehm7jxz$i54A!SugUH84Hk zA;1EqF#yabFdw8iL3}=Q>sl}k1G8%iz%(o*2&D~lFyJA8;Q&x-MNY9GpM!8+ZzmW( zy>SPO&159Nm{@>rE({EwT!3BZFw48C#zy)J;|cNl=>dl+yJ4g=HD z8jvy`lrBI3o!?Yk4yH3#LqY-;vV*TKfQ0}oU!#MQ$IgQ3oPumH4Ff{5a$p))NThoQ zgXzH^0_eE_z08LJSV*7)bagNQQx6LP7#K9U0A3fsS~Tb_9drQmsi~O-nAUZ50@Jv1 z0eXm`x10t~8bEIkye+W<)6@dOJ%_;bplc7{3;|p%BJ}zm9pF+wXj?=$%Yl*CDjv~2 mBN#x9G};5O-2)r~3=9BaVz|8X%UeqT0000().foxPet = true; + if (player.ownedProjectileCounts[ModContent.ProjectileType()] <= 0 && player.whoAmI == Main.myPlayer) + { + Projectile.NewProjectile(new EntitySource_Misc(""), player.position.X + player.width / 2, player.position.Y + player.height / 2, 0f, 0f, ModContent.ProjectileType(), 0, 0f, player.whoAmI); + } + } +} diff --git a/Buffs/PinkFoxPetBuff.png b/Buffs/PinkFoxPetBuff.png new file mode 100644 index 0000000000000000000000000000000000000000..06ed3bf8447c50ed246e777cda59fa6511bf20be GIT binary patch literal 736 zcmV<60w4W}P)Px#1ZP1_K>z@;j|==^1poj5Cs0gOMF0Q*&F%i0+WrEI+C;nkP$)8UEOV$(y#N3I z#>U3n+1=W3ujZ!DWpd-H00074NkloLPygn4mvd*3q=I?AOu?nacURrAf@~7<78965Mv&QAfd)Cj$a62VP&&xmPj2m- z!JBqM;+|w$iQlt*Yk()); + int num2 = Dust.NewDust(npc.position, npc.width, npc.height, ModContent.DustType()); + int num3 = Dust.NewDust(npc.position, npc.width, npc.height, ModContent.DustType()); + Main.dust[num1].scale = 0.6f; + Dust obj = Main.dust[num1]; + obj.velocity *= 1f; + Main.dust[num1].noGravity = true; + Main.dust[num2].scale = 0.6f; + Dust obj2 = Main.dust[num2]; + obj2.velocity *= 1f; + Main.dust[num2].noGravity = true; + Main.dust[num3].scale = 0.6f; + Dust obj3 = Main.dust[num3]; + obj3.velocity *= 1f; + Main.dust[num3].noGravity = true; + } + + public override void Update(Player player, ref int buffIndex) + { + player.lifeRegen -= 25; + player.moveSpeed -= 0.8f; + int num1 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + int num2 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + int num3 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[num1].scale = 0.6f; + Dust obj = Main.dust[num1]; + obj.velocity *= 1f; + Main.dust[num1].noGravity = true; + Main.dust[num2].scale = 0.6f; + Dust obj2 = Main.dust[num2]; + obj2.velocity *= 1f; + Main.dust[num2].noGravity = true; + Main.dust[num3].scale = 0.6f; + Dust obj3 = Main.dust[num3]; + obj3.velocity *= 1f; + Main.dust[num3].noGravity = true; + } +} diff --git a/Buffs/RainbowsWrath.png b/Buffs/RainbowsWrath.png new file mode 100644 index 0000000000000000000000000000000000000000..0f82d7d48d2f80bc05dcb2401138fab050f3185c GIT binary patch literal 1057 zcmV++1m63JP)Px#1ZP1_K>z@;j|==^1poj5u~1A@MF0Q*qah)eMk{DVBynIZa&j_bbufIhNnNj9 zDQih6Y+ER3XdzT)CS8*qJ)Vjk9fn#ik$O3|w@{$FPL$MFZq9B&t8_rEku!&fD{X@q zGle1%5mgcrdpIM+ghR?kMyo6=P0ETS84y3Fraqs)A53@;AXECzA@hP8rf)elhoXBe zFUd(MO2ot)5gkm;t)5ANb4Gd8vs2mGU%lO2RX%YOA``#&S!1+iQ;KS{m`8zqi$MSY z0}e?eF6bvUx^h@wJ2c=)}D`2U~x zoU^?e#6LV@mc{!W{!CWAgXIBGX`Je>6PQbP?V-JMcIui6mlDW8v|HP&hhSHn!~92LCk5E1EIM zo#~yIKkxh=4tql6-){MF6neZsyXQjFhp6Kd>C;O}6 zfX{%xaN?2K3|kMB!5nUTA1B%_%iCrzyaETpZ-K#IatqbrTDSy5;fi%0YcAm&9m4oy zS#JSfJ=1QG&k4ifgzd9@mV&XQKw|7Bj2a47hf}aNoJcR3g(>`O`v}%dM4TC;CFl+W zyJ{x&?H!m(aJc1_6%K^o*Dx)6yYC@X-)nV&is3<65u0Hqz5a<6Ak6&P{5G5*NPvtmviti=$wo3dba2@c=&t^(GwFgJo>bnU?2>y2<#cdj`4^f=b{ z3hLn#4aZcv-}d3F}V(02iU9}pB?-XNcPF2PWVjJm5BZMgQk!1=os!{~kn zIGmWU$>Z5-u%y87lnbNf&9&Dsg*QHbiS=?&#_bp_x_01W@jjSJaQOY29C)P!JrRv3 z$WKS(4tWL)x5!)3Rp5rdsrLy*1B bJ0Qeg=AoFu@(>yx00000NkvXXu0mjf%#7wh literal 0 HcmV?d00001 diff --git a/Buffs/ShimadaSword/AdvancedBloodLoss.cs b/Buffs/ShimadaSword/AdvancedBloodLoss.cs new file mode 100644 index 0000000..1996d26 --- /dev/null +++ b/Buffs/ShimadaSword/AdvancedBloodLoss.cs @@ -0,0 +1,34 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.ShimadaSword; + +public class AdvancedBloodLoss : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Advanced Blood Loss"); + Description.SetDefault(" - Losing life!"); + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(NPC npc, ref int buffIndex) + { + npc.lifeRegen -= 15; + int dust = Dust.NewDust(npc.position, npc.width, npc.height, ModContent.DustType()); + Main.dust[dust].scale = 2f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0.1f; + Main.dust[dust].noGravity = false; + } + + public override void Update(Player player, ref int buffIndex) + { + player.lifeRegen -= 15; + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 2f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0.1f; + Main.dust[dust].noGravity = false; + } +} diff --git a/Buffs/ShimadaSword/AdvancedBloodLoss.png b/Buffs/ShimadaSword/AdvancedBloodLoss.png new file mode 100644 index 0000000000000000000000000000000000000000..6da37e40cc9c17c1c7ce602d1a3887f0a53cfb67 GIT binary patch literal 578 zcmV-I0=@l-P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF0Q*%0@=3EG$$kHhV2E9vnT!MMcO(ML<1k zIA)8-MMW#1waGIJc+&d z=OQgZJoVrM^y;P3H}NTa5KDW}gNHtVhn_r?7HYfc-)E zwvg`be6yX|8ft{=>#V@qISl6r?E;Z^s#OwoZ&}cWT7~MUt5<(CB<}m$#UixQZbP%< zK+`ly0&a}FKN@oAI{s(~N5Zgk%%tz1bi2^(I8ZYyBx>JyhaPWjLS6=&id9ZFM`)#14GAE}pc|I>0%Tx#r0Cb`PL~(hk(Rx`Z}7C-R;X3_HSS zVrmD{=Envoa(QBtFpB*;Mq3Bs=KkfV3|+hKLHR5+y|Z9MoCPL!9r*B~ zrs)5Qzya9{o$NS3H=6LRM(0SO ze}^Y7avr(P+#Lw&z_@Nmg{a;i;4{|)M%IOJS0o;68#+}t{7oICmK<)&Ira?4=daC`FSQ%dBq(TJJPv^ai(B!({%6F%i5Y^m=j?z|UkMB1(z;yK QH~;_u07*qoM6N<$f`ADCVgLXD literal 0 HcmV?d00001 diff --git a/Buffs/ShimadaSword/BadDream.cs b/Buffs/ShimadaSword/BadDream.cs new file mode 100644 index 0000000..4213e8e --- /dev/null +++ b/Buffs/ShimadaSword/BadDream.cs @@ -0,0 +1,26 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.ShimadaSword; + +public class BadDream : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Bad Dream"); + Description.SetDefault(" - Losing life!\n - Sweating!"); + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(NPC npc, ref int buffIndex) + { + npc.lifeRegen -= 20; + npc.color = Color.Gainsboro; + } + + public override void Update(Player player, ref int buffIndex) + { + player.lifeRegen -= 20; + } +} diff --git a/Buffs/ShimadaSword/BadDream.png b/Buffs/ShimadaSword/BadDream.png new file mode 100644 index 0000000000000000000000000000000000000000..aa13ce026c3d2a8f1fd6e38f77f0b086014761cc GIT binary patch literal 492 zcmVPx#1ZP1_K>z@;j|==^1poj55>QN3MF0Q*PE=e?J~t5~)Bnoz`A}-=L(8;kM&(TT0fw&Z@qk`h(B4VkVi%|RC z<$pe2`z{GrdI9}G_=oh8y!TJ;lD6D0W3P*X=U(D!gHRNl`Pq4o#EsvdS#O^{SS^ls z*L|%Z_W9Pv4(rwB1#3PIoSqz!lsvwE`dY!>R@>JKkO_cuAk_c*rq7y>1FM_cByMeG znYD9p$f`5bnQN@)9|m`@1F(c24az7Al`LK%mEBiIwQ9H7Bu0akkqQvp!sddEuk zC%c!5#%c%FxQ*|DG64Eg$*&u&eckmZ^f-E+d>oip#v$}P`8W{E{p8G`qOsaTR0g2m zZ`h}8)a|-o6=eX{!=d-v!s@5zNm>FcNJ;2-&D2>S-%$y&p>>w_Yr6iXW9N literal 0 HcmV?d00001 diff --git a/Buffs/ShimadaSword/BloodLoss.cs b/Buffs/ShimadaSword/BloodLoss.cs new file mode 100644 index 0000000..38c3432 --- /dev/null +++ b/Buffs/ShimadaSword/BloodLoss.cs @@ -0,0 +1,34 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.ShimadaSword; + +public class BloodLoss : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Blood Loss"); + Description.SetDefault(" - Losing life!"); + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(NPC npc, ref int buffIndex) + { + npc.lifeRegen -= 5; + int dust = Dust.NewDust(npc.position, npc.width, npc.height, ModContent.DustType()); + Main.dust[dust].scale = 1f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0f; + Main.dust[dust].noGravity = false; + } + + public override void Update(Player player, ref int buffIndex) + { + player.lifeRegen -= 5; + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 1f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0f; + Main.dust[dust].noGravity = false; + } +} diff --git a/Buffs/ShimadaSword/BloodLoss.png b/Buffs/ShimadaSword/BloodLoss.png new file mode 100644 index 0000000000000000000000000000000000000000..e9bd787fd19f2a26b5e75872332d5998e5cce7f3 GIT binary patch literal 764 zcmVPx#1ZP1_K>z@;j|==^1poj5S5Qn;MF0Q*%0@=3EG$$kHhV2ENhmf(C^p7LMaV@( zNhmdWEH9}nEJ!FdM<_POMMX#`HhL^Csw^x=C^beXHOWOqsw*seEH8U3E~zUlN+>ma zEH0=kEJ`Rgm$Wc)0006*Nkl_S6P?3XZzke=j>W)3|HIl0zrt9b@ z55hzs$_bLj?{_+Ee~$ut)f$Xivj%K;%S&ucX2SfW_pE}PPAdzlXj!rT*Y*?JJ9n1t zRj181vjQX6<(Ai58>@ii%*?eg-zpB&42@nVKd@*H=V&5}l_-!B0#QWv#MBB1Z&^a@ zq?&vR0L;xDn+0R;VZ_awS^-Dr9-k<#lduO6Fpo9sfSLPa$~_#nDfdY62C>25m2#QB zTk0OUCWodoNBx#+&|W~lz^+IRx}$J^V7_o^-%Cp3OW9M1dn> z4(yb|Z-)se0d)H|Pk8Rk^W=?{Mcp5sH}|sua(j&?r3Mw!Y~|bnm=q}k&^eFDeGsnx zJ;5ymKLF&&+^JcBu|3t=OEvvAA?{#+<~-&) zi3;EdK|@}Hxy?%jzYctL8ln)LJiL&ztF}w;+|Qu?%|O{1(M+g>MS4E2c<=wC-WOAy zhKLZ3Xrcrfq7MRo=taH6ksLgh;}EMr)Q!j?&oioU(QujhVd2dSSg$RWFSi>}Jh0-p u5~hW(!2hlIPyaI#uoB-0Ui*g?Q0fD!cp40m$43AF0000()); + int dust2 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + int dust3 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust1].scale = 0.6f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.6f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.6f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 1f; + Main.dust[dust3].noGravity = true; + } +} diff --git a/Buffs/ShimadaSword/SpectralRage.png b/Buffs/ShimadaSword/SpectralRage.png new file mode 100644 index 0000000000000000000000000000000000000000..dcc8567976adb87316b45cdd1cc7e9f6873b0da1 GIT binary patch literal 1067 zcmV+`1l0S9P)Px#1ZP1_K>z@;j|==^1poj63s6i{MF0Q*<#vDNhJVYAf6JYJe}!#-m2H2dZGW_F zc)e|J#BE>1ZBN8*jq8Ga>yK^gpIz&(1H`QY#JmB-%mKvP0lnk_wCe$->j9PPO|AY- zo&IK){$_^$%WZ$leSfCh@U7|ppuB#d%znh=f4l2{CnqOO>)uW4?jqIpBFz2&<%jUu zgiVe9O@01j>uF@4*TH_U#YW&)~KZ z|H}XXxBm^G+uec=|Be71cA1`MA`?ZB0A~OHJphz77yrVApnZOzjeg6mf6KjpP0jvI zz5XJd{UVM1%glev+kZ{u_f6aWpq+l8t$rfC{UWXX{JqEj0008MNklJ+}d{K%}jZg%|fYeefwCJLW3(ZbUmAVk= zl_F@t$D$&FAfXX$HHAhIm3y1gSj5IN|Cxyz2^AO36@NJS=FH{Z$@w#n8;AIztm1qL zV=q9nh?3s|l~0^#7s4Y%s+1C<@%}R?+?>yp3z4B~CZ#6bR$uKUx+pw|zL&G~AUB1& zN#9`M2GQhO2Kr|>zY^iv?c>1HFgx(-K$}cOsY{kFMEV8ySNR+$=xE&y^cPa#@gRMA zMEpY;92oWYpx>JM2JSN=aA2U*CJro86h?x7^Np(V+Gl5w4{zu|-drC96L+IvPS&_; zu!41s;ONjn+<(|QiHa|;=|;bi_=H@`K69YGA&hU_-OF6`}5X(wo3 z2lPImW5>2#vRhcm&7jy$tAyn0XHIT;0&0!jZUxshPJ-eQBNB zL6PEA_;&9FXHOYm`aus_9ptq$L)EYnM<%ZP^TsnRM6xSI? z&L0CWwp<0Z-pO%fC>7m--*&>LTAJm=P!FH`1y4VVcC&oR~*p>>@iL#CJtM9Ved?>V^OS002ovPDHLkV1l?a3MBvl literal 0 HcmV?d00001 diff --git a/Buffs/ShimadaSword/Stacks/All-In-One.png b/Buffs/ShimadaSword/Stacks/All-In-One.png new file mode 100644 index 0000000000000000000000000000000000000000..72be59322c225609d56829ea6b811025bff1a1ec GIT binary patch literal 1805 zcmX|Ce>~IqAO8$V)X{Y)SBMJ_PMySBer$-YlOJcw37h0cXG94%Gh0&mQD6D`o{nY9 z3HiCpkEM~N&Ka4doMBk*HY;bQ&zeu0jqm8&_n-Ic$K&;WJ)W=E>-m1Y3xWfWZPPc? z2LNE(@o$fY000c7(NTK3niD5(G1mxKTF5bPpk;XXTaBTU;1%En01t`{RA)A6?7-j? zp}rdV)n40RyMyM2JNUJ=#R$Y&Z!gQujRl3DZI8S4{&Y-hHU^}`(Ek%9Wydr(M2aM5 z${GSgBLh6)=)yz~r?1fk*&(^tgH!T?B6BHKfn5Ng8+H7sSLja|$rLu<3Ex$CEgWvr z@k@=7zP}Npr93aH^TMjTlX${8Z3Zv6z{hhT?PrK@+GIVf$A`t`vf-fs|Ce*w4(|o` zmf^`&EJKBl(69tK+Mv?z*+gFW2GC-gXj_t#`dW&w;NBQRO`wN(ijG{NmQGrfoVI?! zTe_^<6V%MLMJkHe0<5AQfWfEG-a|8GCms{{Orm_$-ky{u*#?kLCCtJ7r0$x<^5exjN=dgAk)A-tAd#Xc<>(&MV>uv{tC9?E#62Kf z%q>h!;+P2BRo=3p3+SM&-1*?7+>WvGmdC|-(Hoy{<1BUG-kwkS`I=7m~4|sd|+Ci}NEDoKwbu4*ONEn{o zGg~>E_4|Ixc4pL$bMu~dV5z|J(*+@L&M#+|dMya_FgM$If2zVS2P|cgWbic$ZE{(D z^JX0!kN_>b^GN6eMLpsqL2DoM*UTh?1KnZv(-}68A7pIGI25;Y7MOY#g1A^?0#PhL4%OA8mac@2oq=j&GYcCNv zbjMLMJ;ea_=xT;|qZO0dckvEB4^!grKf9rNFtS!t@7&9H!4A^QJZK|HVU)#Yo(lB* z?VvJXdscv@FIIM&vmZn#RUi~c;`LSNDGW5#*e7#0_|dT$rCx1r#mSjMccm&`$ZI=s zqOM>59SI4R(o_=8M-s`&gD!xxeb@+V=)|HvOn2932HNnM9EcanS%G$@DVQMZgCyGEcp zj|5yLRVI3uLga=g_2bfI&xdSdb-&268S-Easl4rhDu>HcGJlcvJ+04~pAUMlLUX+B zQB@9J>zs)JbfO)QQR=?#iyuyQl@A7mk({cp&pf2mt1ih+otbNAKRI_0B=Pnek=<$Z zX`S^YaVfia_=B zLpnhhn{9oiQT$Q zut?aek&bcS$O%sx7+7w`frwBootVSUY>TFS{jAkWyTh9@I2 z)+873x^f?BDYMna4oA+Cpi4V~!?j0ow2G#ygJyRzE2FWFp<{r2vd$)mz&4A1FfUtJ zySzTHm^LqdLOZh`C#3tW8Yvnb=l@;@mpJfm66^xo*tR5^NY#8@z;WNeqb=Uix&H-C CxSKox literal 0 HcmV?d00001 diff --git a/Buffs/ShimadaSword/Stacks/BuffTemplatePDN.pdn b/Buffs/ShimadaSword/Stacks/BuffTemplatePDN.pdn new file mode 100644 index 0000000000000000000000000000000000000000..17ced39555f0c8137d471e09e65b3348f5d4307a GIT binary patch literal 4667 zcmd^BZEO?g9k&}hjzfTqw=zn=bt@=1#OIg9PL~Ake2(KJc6_m&#ECNZd_LRfmpl7j z>^R*@+kntsv~E=^rj|iVrS-$6B2@yFiH0&58`EeDo7Qcp>PjgSbcK~d3uVN6o^wJR zN=Nr$pLkC9zvu0K|L6by_;9afQn&!zEmm)_SZ0`^eS=wVH*Sx`JVuwD4JEt| z7uIRCGnBzBNofi*bt8cufj7~Pd~A#s9exj!v*s`Ql+%#rTf8J^@f9731ULp3!CIObrZwgsiW!WE z(?i%;!O9AQ0fe?YGKMa>hGh`VhD4461Ei46CFt8$K5>+yrt9X zYZ+h>oW@eUgwttp2E_gphsNRq{s@*%I`L*lSFVVMJa&gq7#ud0u6p)tGfpfpO0i%5$8lNEjHn# zNH*$bqUP41Y1BESv?%d(J4;I(U?@=}j$qomkA$?Rs!kkOA8Dl&dovVF@Xc89>}PA$b_<7>c&H z!?dZq0`v-XTU`er7u@7xvOqTT!JKiHjky(|%WMF6nG3jiOmjiwXc_U+4C2DMh*pSL z59VwYh<1P^Bid&Wfh5z2@ZtgTJS1i0i!;cJ<{~#kG&q~6S3nS`WLeuFttqrC0h!&<00v5E0C~eI(9y02WOjoN4Ac<$ zf0GKPW=#ZmMYJ!gT2m=Q5L8~QydW679G@Z6(?ckPEXe(kClus%dV$U}r>a*Apr}S^ zwLp<90v1&ulg}}^ht6<(5leGa3Mv)8y6N|E@YU)8QA17LS=Z2IR4kdHzkGqvz*+(% zu44p@q*8I7lh~++%aRl$7PYb}JY1Ak!dj)eTkZ}@>P9~?Ya9B|T(O^?TH_Uz1VkPi|y1;+J<8d%5{%^7D|S+;?Ets}q;QZxySa4oyANaK<+84EM_9uBV*qZrB%maCLG?dWw2&%DQ3O zzb?M{MFaopKlax?F>!3;M;zNWe0=k|gT%@UzYc$E>foEi$-=%L-MH5L@AIWSd#}HI zcF)qy(hcIBuv9vcoJw8Ub$)83ee(;gs$-3%zg{!!n}{y^WkY!V)WR(z94cz3{z52PfZItJbgR zB9`}l(0g>p&Q*VV{qoOV+560q_UpSZ?s&|w@Wl(i`loyN!}`yUpV)rs$0y(2cX;B; zw$!{(z9-@lUVXwwd$y5&8>ojW(B!kDs4PmBHF(1 z`sATizj()); + Main.dust[dust1].scale = 2f; + Main.dust[dust1].velocity.X *= 1.5f; + Main.dust[dust1].velocity.Y -= 1.4f; + Main.dust[dust1].noGravity = true; + int dust2 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust2].scale = 2f; + Main.dust[dust2].velocity.X *= 1.5f; + Main.dust[dust2].velocity.Y -= 1.4f; + Main.dust[dust2].noGravity = true; + int dust3 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust3].scale = 2f; + Main.dust[dust3].velocity.X *= 1.5f; + Main.dust[dust3].velocity.Y -= 1.4f; + Main.dust[dust3].noGravity = true; + } +} diff --git a/Buffs/ShimadaSword/Stacks/DreamFive.png b/Buffs/ShimadaSword/Stacks/DreamFive.png new file mode 100644 index 0000000000000000000000000000000000000000..861161299a54555400377dfd035f975ea0bcc9f8 GIT binary patch literal 1261 zcmVPx#1ZP1_K>z@;j|==^1poj5t58f-MF0Q*$1xk=RwTz-8y*i6%yPTneFWr30 z;HM<`-gN8FFT-Y?VB)6u~s>G*Wq=r76WFaQ7l!T5Hy=rOJMfT8F+jp$E> z_^5g4Vte?!Z|HV;_|R?Wif!ngdHCdQ-l=WRt$E(_ZM&^`%JXfft!lwI%0Vy&uN+r`#8N$md{UDzX3-OZdq6if=dA#aQo)O(S*r?asR-EZo^fRQO=5@T!^yX#;T z+LJHSD(r}Y3vFA2R3SOJY&N1(H0%DxbJs{#_;Z)DiEXXH(L z;Jtqw1uD4X`-ist0qFn10UttSt6Gq&X62m^=|Ur^j$78T1tc!i?)k zGZK3R*D43WfZi$4J*zv0#DpCE$y*D$kvEcB)kYpWaXXN>6Oo1py#4qUCcCsf5bHqC z!6^_)1$g%=LWaqI7rZBFpfk>JO?6$=m`h^X1Gk&T!J;hllV@jVlfSp&68YTS)5+J@ z*OON}ajL<(6B8T>_5ddTTX2oGjG1xPEK;EvF?HbXdOrodQZvYBZXZux@?y(f@>b)a z)-d_`hnK+Kpqn((64usT;kZs-@aqozOB%z0m^F(}1I>uq0SR^DdC46L{$vjzYk~*J zBQ4=t*y-?c6rZzGI#3v_f>!ags##&#fg$OADEOUo0C5HD$g5xnJdTYV+3Y}m!!B0# zaRu=c(~iQ*{?o`}N23L5HT2}}7gZEUYI4?+@94Jx$q$s1NAMmwAFr#|JedWowA|(n zeCkS;2D8arfkwVy4bGACWx*;m#_Jj}cfjwXAT50cc}b;n7AUK?lm2P?Ge3OJ_DNeHfO0IQ%UH{$kao$$D06%+F7 zc=_oAdCBIZU&!w)>Oo#&HD3h_AiMH)X>`^3)v;LGzLsUt;&UaY@uJU%qQz&*Oyh;2 zThU_QNz?f9Hy@%a%j3smuRtVc1t5xG1t5~M0uV*80uaeriSaXKti&M{y2VP2`%ba~ z5Xo5qh$2|=D^Qakt4m`AFg8#B2lL=^CM$p+c|%zNbggS=1@Jvj|A9)r{E`*Gw~2Tj zXe8I@2i1|ai#zwn$PWL#0D1-LI}blfW(ANwx;HCvhCF5=NFU{3CFVcWc0ZCaW;iQ= zk5`|v68|l-MzIp(H=eK(2h_1rtpkVW=o?Dn+gJ|XxjQ)0@om}x-g)ad(m7qa8N3S? zbEI>2e+j*7BbXe)0_a3ii@@X(wFpcuQH#Lj6150SE>Vk+$pu{~IfLJ&ioDi|;{ZPa X9#+D@x~)G-00000NkvXXu0mjfP?u&b literal 0 HcmV?d00001 diff --git a/Buffs/ShimadaSword/Stacks/DreamFour.cs b/Buffs/ShimadaSword/Stacks/DreamFour.cs new file mode 100644 index 0000000..ddec1ff --- /dev/null +++ b/Buffs/ShimadaSword/Stacks/DreamFour.cs @@ -0,0 +1,37 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.ShimadaSword.Stacks; + +public class DreamFour : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Dream Sap - Four"); + Description.SetDefault(" - Accumulating dreams!\n - A stack of 6 will heal your HP and Mana"); + Main.debuff[Type] = false; + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(Player player, ref int buffIndex) + { + if (Utils.NextFloat(Main.rand) < 0.8f) + { + int num1 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[num1].scale = 1.8f; + Main.dust[num1].velocity.X *= 1f; + Main.dust[num1].velocity.Y -= 1f; + Main.dust[num1].noGravity = true; + int num2 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[num2].scale = 1.8f; + Main.dust[num2].velocity.X *= 1f; + Main.dust[num2].velocity.Y -= 1f; + Main.dust[num2].noGravity = true; + int num3 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[num3].scale = 1.8f; + Main.dust[num3].velocity.X *= 1f; + Main.dust[num3].velocity.Y -= 1f; + Main.dust[num3].noGravity = true; + } + } +} diff --git a/Buffs/ShimadaSword/Stacks/DreamFour.png b/Buffs/ShimadaSword/Stacks/DreamFour.png new file mode 100644 index 0000000000000000000000000000000000000000..a3cceb12e1027bf9d44208ca28801d1dd7885de5 GIT binary patch literal 1106 zcmV-Y1g-mtP)Px#1ZP1_K>z@;j|==^1poj5u24)=MF0Q*$1xk=RwTz-8y*i6%yPTneFWr30 z;HM<`-gN8FFT-Y?VB)6u~s>G*Wq=r76WFaQ7l!T5Hy=rOJMfT8F+jp$E> z_^5g4Vte?!Z|HV;_|R?Wif!ngdHCdQ-l=WRt$E(_ZM&^`%JXfft!BLO*D4$Uyq01c)QYRQoMWZENb!9&6Z!=DFKi?;WlPN{+-w4|+RJ2J?13B3 zz_2$Dfk;8wH`eNUu0@e-b?;)GjhR{$n>F@#TFK-LgahFS(crP5Iw>3M5L>N0P$c)m zC8KY_%lZtKzA}L&2HRMPzKz#Gg@RZ1CH)1TFE+2KYe2A zRan1v8>C;2CWy1a%3Xa82slsjkHhEs7Z48LO*lbqczt>=zH?`nYbAATV+O|Jpk%fi za{BtU7v@kMUY}1`1kbd7WsDi{K0=V3x&zLsw`alm@0h-G!s(rzAk~r2%=Dc>IMsJF z)-t!f6tRLy1_G)=y-g8v+^SXI3(zyMPE4q837Q2~F5_~mnQ*)G83X=x42=DRbI#r! zhgVmnz&U31Ip+7kuqFw|$y!Jz)T3lUQ8c2}=ja(|ojgRw?lmXF>-OA+*MutI?_09r zo|4P(s$c5+xaMiNXYUDk<>(uDe9HjbQ+fbiQg#?VGxP=iw5=V!AUENB_&))C0<`y} z;Kz7~Lwipe`=s0>ia50Qq~M2fh(mi%8fp6sacJ*J!SOJ}S@aATZbAY6Zb6?fat0Xt Y4Mf9?PTwpw6#xJL07*qoM6N<$f=F5s(*OVf literal 0 HcmV?d00001 diff --git a/Buffs/ShimadaSword/Stacks/DreamOne.cs b/Buffs/ShimadaSword/Stacks/DreamOne.cs new file mode 100644 index 0000000..48428d1 --- /dev/null +++ b/Buffs/ShimadaSword/Stacks/DreamOne.cs @@ -0,0 +1,37 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.ShimadaSword.Stacks; + +public class DreamOne : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Dream Sap - One"); + Description.SetDefault(" - Accumulating dreams!\n - A stack of 6 will heal your HP and Mana"); + Main.debuff[Type] = false; + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(Player player, ref int buffIndex) + { + if (Utils.NextFloat(Main.rand) < 0.2f) + { + int dust1 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust1].scale = 1.2f; + Main.dust[dust1].velocity.X = 0f; + Main.dust[dust1].velocity.Y -= 0.4f; + Main.dust[dust1].noGravity = true; + int dust2 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust2].scale = 1.2f; + Main.dust[dust2].velocity.X = 0f; + Main.dust[dust2].velocity.Y -= 0.4f; + Main.dust[dust2].noGravity = true; + int dust3 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust3].scale = 1.2f; + Main.dust[dust3].velocity.X = 0f; + Main.dust[dust3].velocity.Y -= 0.4f; + Main.dust[dust3].noGravity = true; + } + } +} diff --git a/Buffs/ShimadaSword/Stacks/DreamOne.png b/Buffs/ShimadaSword/Stacks/DreamOne.png new file mode 100644 index 0000000000000000000000000000000000000000..988c00dd76b971732e25aadbb4c171716cb427ea GIT binary patch literal 1023 zcmVPx#1ZP1_K>z@;j|==^1poj5lTb`lMF0Q*$1xk=RwTz-8y*i6%yPTneFWr30 z;HM<`-gN8FFT-Y?VB)6u~s>G*Wq=r76WFaQ7l!T5Hy=rOJMfT8F+jp$E> z_^5g4Vte?!Z|HV;_|R?Wif!ngdHCdQ-l=WRt$E(_ZM&^`%JXfft!jizBA|Yoo~;~vNX(a3DnpvuGY!nzGy7rP9VGY)ujmP zW8dLwEFsS&ET?m^4(8h`P_j7}5~#6T+^$1e7$-ksWH=Xrm(%RoiN|QyUiZNTZsyC> zKQby|CNOkq6PY7hZ;rv8638@PrTlU~+;#^>qg4oGY8t+=&d@6!S=koe&3f9(c$As7 zzK^`+a0j%6W)W?k2^v$l(Fd_LdWSA`9U&F-CwSXh%1Tz{vi!9fJzKp_<-PV?f`KzehW^dlI^U?bB{;XJ+o4QWAO-^)K4qR3C9X-C|ZqRKHmW% z81I0~PzA!Cb3Afc0e|0B-f~YcPOq5pDQsQ09WpSg@Q}DU|3kZMg zHk_b2Vmv*UpM@&|yk+cdufX_HsDSN(g0Ug~z!@4N#*2hy(8t$Ru~#7a6hT4JPPm}e zR}L3{$Ml{P!RTy)G)BEMzwZyjX}rI!nT34^5bHQpAYmvq&~B0cPP6e`g8Jk!8KJcm zC<~liB@{L)5e}Id1Mzlz8UG0voPRI@Z)z-r3!KIaoWBF3Tnhfv&5%l}U$26$bfg?nY@?7a)$*Kia*Gx8b!;!PKPq58A(C7cic6EG8?-=38Gv()); + Main.dust[num1].scale = 1.6f; + Main.dust[num1].velocity.X *= 0.5f; + Main.dust[num1].velocity.Y -= 0.8f; + Main.dust[num1].noGravity = true; + int num2 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[num2].scale = 1.6f; + Main.dust[num2].velocity.X *= 0.5f; + Main.dust[num2].velocity.Y -= 0.8f; + Main.dust[num2].noGravity = true; + int num3 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[num3].scale = 1.6f; + Main.dust[num3].velocity.X *= 0.5f; + Main.dust[num3].velocity.Y -= 0.8f; + Main.dust[num3].noGravity = true; + } + } +} diff --git a/Buffs/ShimadaSword/Stacks/DreamThree.png b/Buffs/ShimadaSword/Stacks/DreamThree.png new file mode 100644 index 0000000000000000000000000000000000000000..cb01195220a145de6ff95aa6eba402cf8cd56406 GIT binary patch literal 1080 zcmV-81jqY{P)Px#1ZP1_K>z@;j|==^1poj5rBF;%MF0Q*$1xk=RwTz-8y*i6%yPTneFWr30 z;HM<`-gN8FFT-Y?VB)6u~s>G*Wq=r76WFaQ7l!T5Hy=rOJMfT8F+jp$E> z_^5g4Vte?!Z|HV;_|R?Wif!ngdHCdQ-l=WRt$E(_ZM&^`%JXfft!UA{Ay)Vzh$x5;1yNfO;ZhlvTlUaH5G_GL5EKywK13xfMHm`HMv?^) zLAaSvL`cd~Ng=677jkvWF?YN?*?j+*GoCrKa% zYMh0J&l?L2C$PHLMcD|-!r$O>EFktJEW2|t4*J_NkhMM;;>fXE+>S%5(05*?uW%+R zpG>fahwq_Wa>Wbhxaluac301Yxq$w2>&P70SUU`NT0o-yGP&n_;I=a`6e>g@Qe5$s zwFRCUk(Eus?X0so$A}WM()-pZIh+ACs#-*oCxY6fuk}J~g;t?S9*0ZDd<8EXvsu=% zWR{wrN+BpMn%?s1Qv) zTd2>%)n1EeOmSQ)(_9?e8E79UWP9`NJ1;0GfOnpJ1~0z61>V)w1s5}MzuP$zrJe+5 zfF}Q2XpD)>Z5BnfsYo)m40N0bAy}G{3D3Jw0_XId?SMPg505GE-Szv})kpwkBBto$ z9`d|`YsAmMzocIYn~G|m21!QD00)`qJ@W>^pPT{WNaPxvh$$_s#?xR#);Z@S0|z5b zY)sp&C?^~>7oiLUJ*SMwWd?lRmyD8o{1N)Z^sBIO)n>@N8XXW< zgPjNZnhhYUn@ z#d=#T^4+M@p9@f(*d`$~wgjyLJC_Lr^-Kf<=86ITIzEs5fOAgY9);Ibr^7i;?K#f( zz>pyc-|;#~Cf1{6K~p^9wda@_XdB;8#_qJH!RvS4gxAKZ;P0O2!5hji!mEGj&y!jw z;SIZv!OJTSz^4X3!5_b9hdb5J$xS#L{x85>0KI#X@?jCgp?6Oj`Ka9^nmF|CNy__C yh(qs~q>QQ%$EkkaGhn+31^BZ$t)J%%F!md;qmU>shWO?H0000()); + Main.dust[dust1].scale = 1.4f; + Main.dust[dust1].velocity.X = 0f; + Main.dust[dust1].velocity.Y -= 0.6f; + Main.dust[dust1].noGravity = true; + int dust2 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust2].scale = 1.4f; + Main.dust[dust2].velocity.X = 0f; + Main.dust[dust2].velocity.Y -= 0.6f; + Main.dust[dust2].noGravity = true; + int dust3 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust3].scale = 1.4f; + Main.dust[dust3].velocity.X = 0f; + Main.dust[dust3].velocity.Y -= 0.6f; + Main.dust[dust3].noGravity = true; + } + } +} diff --git a/Buffs/ShimadaSword/Stacks/DreamTwo.png b/Buffs/ShimadaSword/Stacks/DreamTwo.png new file mode 100644 index 0000000000000000000000000000000000000000..e5340cfaebc4564b7d2db6e328600b8c91fb03fa GIT binary patch literal 1051 zcmV+$1mydPP)Px#1ZP1_K>z@;j|==^1poj5oKQ?uMF0Q*$1xk=RwTz-8y*i6%yPTneFWr30 z;HM<`-gN8FFT-Y?VB)6u~s>G*Wq=r76WFaQ7l!T5Hy=rOJMfT8F+jp$E> z_^5g4Vte?!Z|HV;_|R?Wif!ngdHCdQ-l=WRt$E(_ZM&^`%JXfft!jizBA|g&6zVS0W(|zHFk@uaniUi7>l?Q zSlyeld<0eDZ*Vo1koyvr-MJVC{cRb@+n5ds)YvU<$DvgiJFhcVI2W}~r`e;U_ff96 z>V*s3^p~l+XJo=$z|i>(WR7fZ7=t@4AX$Hv!VCRy+Zh-Ql_HQSuldS41J8J5WlL}; z>uD?CQF2y$-|>>e8PKAdMKpObs7>~IFT_^q6}r@MgjCE|@Tw)B<*i6(nZ=nDg37Yl zoln*-g{x$=PQxh^UE$=J(E2p?{pS?hZE8H4X>+Rv^<0w@#lm@)1V&uh3&;tc#t zhGJn;QT@{(smK`+AQJ;;-y-;vGe8`RT!$0!SUaotH1o(h=e%U#P^6Vj>bsTYgkuKQ z<*Y=I$~{2%BOP!V%0SR_nnx}(;Oo20OYZSU=o2%p!j?5#A@gc=_6> zM39xU9WH3`7Q)5vn7(tuADUetwNcN^uiL|LYVT`nWI^v<#5xWch#HCyv|Hr6*=RhM zpgOrtQfO=iS_O8l5(pZZ2nNg*1Mziy9{&LsoVharuRoj(7dW*SINt-KTnfGujgU&b zU(bTBL?mi2Ff-6Ob%2cB?Z|>R?Y;$Xh}Xg2zbJw?S6_lx*Bpe;jC_JWdD#U|wSHc1 z!c_Rb0CNHK?n$u^OCSNgd(!wv{T|UJpm#}%O=yrH)%pd`fbAxf5YOhdet|Q<*l(6; VlYpEw>O%kk002ovPDHLkV1nh#^i%)< literal 0 HcmV?d00001 diff --git a/Buffs/ShimadaSword/Stacks/EnrichmentFive.cs b/Buffs/ShimadaSword/Stacks/EnrichmentFive.cs new file mode 100644 index 0000000..443822d --- /dev/null +++ b/Buffs/ShimadaSword/Stacks/EnrichmentFive.cs @@ -0,0 +1,24 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.ShimadaSword.Stacks; + +public class EnrichmentFive : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Enrichment - Five"); + Description.SetDefault(" - Accumulating riches!\n - A stack of 6 will heal your HP and Mana"); + Main.debuff[Type] = false; + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(Player player, ref int buffIndex) + { + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 2f; + Main.dust[dust].velocity.X *= 1.5f; + Main.dust[dust].velocity.Y -= 1.4f; + Main.dust[dust].noGravity = true; + } +} diff --git a/Buffs/ShimadaSword/Stacks/EnrichmentFive.png b/Buffs/ShimadaSword/Stacks/EnrichmentFive.png new file mode 100644 index 0000000000000000000000000000000000000000..e362e81b0949b7751688ee15bc733fba8e26f82e GIT binary patch literal 1010 zcmVPx#1ZP1_K>z@;j|==^1poj5OHfQyMF0Q*kzzN*g-IR{6Q;P^+SFdb*8lVK=`(ha zX0OG+_gQ1KWsvk*VzPW*@|$9>lwI%0Vy&uN5XZ;JhalNLtw z3t1Ccxxz}o>H%z$%uTb=CG?f=zfeooGszjtJ%Bg`PpJZ9xn2c5ctO?@8p+VJvF-sKIhM(;Vm)E~9x?9) z&!<4nub2JAXXJUOdnD1_GMQ~cFhD_8bfxlhjOQFN%Wn3JJYQ1mcidLj3g~AThttbA zr$3VlxDU|-Zy>#(?HM7bqjz|KtS~b2nQTVJ9I}Gj^E#LSjr*h9BD-(xv3wb4ew0Om zH>+&(72nTBf{k^y`SPLmNHBcOHov29AhN4Ie%{&w6`U1-N`e)D3eE~ZCBX_n1!tw^ z8|zr9t{;l-Iiiwa1)zen0#He?;w{jFH#ARW1+XmelNCT`%K}yae*-zJR2Mh@Vg>Lg zu$&b@dP^@WfZzT#tkir{Gb@1edrQan$H)s4o&aruzUSY%(pdrc7RUZ|8h*_};me!L zN->?E`YN(D@;M|5-LkZ!7^$^-v!(NQ=p&AHn z-p5{y>(xgfw56227&mIGXs=B$ID!e#ovbH;!38}D3@+$NU~oZC0)q>B5)xdIM!^|8 gmpbydahwPE2NABEIz7+HIsgCw07*qoM6N<$f(zT!@&Et; literal 0 HcmV?d00001 diff --git a/Buffs/ShimadaSword/Stacks/EnrichmentFour.cs b/Buffs/ShimadaSword/Stacks/EnrichmentFour.cs new file mode 100644 index 0000000..b39ba36 --- /dev/null +++ b/Buffs/ShimadaSword/Stacks/EnrichmentFour.cs @@ -0,0 +1,27 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.ShimadaSword.Stacks; + +public class EnrichmentFour : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Enrichment - Four"); + Description.SetDefault(" - Accumulating riches!\n - A stack of 6 will heal your HP and Mana"); + Main.debuff[Type] = false; + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(Player player, ref int buffIndex) + { + if (Utils.NextFloat(Main.rand) < 0.8f) + { + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 1.8f; + Main.dust[dust].velocity.X *= 1f; + Main.dust[dust].velocity.Y -= 1f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/ShimadaSword/Stacks/EnrichmentFour.png b/Buffs/ShimadaSword/Stacks/EnrichmentFour.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c68982bc3b6aa165f5cb973c63cf3aad91fefa GIT binary patch literal 845 zcmV-T1G4;yP)Px#1ZP1_K>z@;j|==^1poj5OHfQyMF0Q*kzzN*g-IR{6Q;P^+SFdb*8lVK=`(ha zX0OG+_gQ1KWsvk*VzPW*@|$9>lwI%0Vy&u9R9sCyH&cpgQ;B?1f`?FVggr4VLQlh@ z0007@NklcP@ACyYIa_Lo%CwaQM%ex%b_3 z&OP_O@hr>*CYZh}PS05wXvJ6%C}4C0N4C=GO+TfYzJ@**6lLe|9L^6_plRJwnqc~_ zxIPC_6lEUA+3S26u>-F>t(@RHfE`BL!7Upo|lnTcc`7XWzuF+=_Q;TSb{;|tY9 zGXIMTK=lBcq;~fTxJ1vqZ*YKWa_(?1)wL1`Z2bMS>H&2Mq(dkS zpnl0RI;GqLz_xf<6)5F;74*d$>o(Dn(4$fJfQ}r?q^npDSieWid%^h>$oX~IPmGcA zwtFP*Zm9}17A(+M=VvOfW1Mqfmfh?b8QF+o};)1>1N*Rp8$20f={Hcro?jt_#%jKU35f zBWtPY&J)z0AO7!E!@sHNJx8hC-~BzW9?4SEd%LKe`wmg(a{jyK=BV+1pi=w~Km~xk zhvhTXGy!`Ln|b5W1nfO5|FS?6u=lX((FvM>y@%xszi2|mD-e1YXvlB#`hA5f;CX)l XT8Lz{S08ea00000NkvXXu0mjfW!;jg literal 0 HcmV?d00001 diff --git a/Buffs/ShimadaSword/Stacks/EnrichmentOne.cs b/Buffs/ShimadaSword/Stacks/EnrichmentOne.cs new file mode 100644 index 0000000..5b18bd5 --- /dev/null +++ b/Buffs/ShimadaSword/Stacks/EnrichmentOne.cs @@ -0,0 +1,27 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.ShimadaSword.Stacks; + +public class EnrichmentOne : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Enrichment - One"); + Description.SetDefault(" - Accumulating riches!\n - A stack of 6 will heal your HP and Mana"); + Main.debuff[Type] = false; + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(Player player, ref int buffIndex) + { + if (Utils.NextFloat(Main.rand) < 0.2f) + { + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 1.2f; + Main.dust[dust].velocity.X = 0f; + Main.dust[dust].velocity.Y -= 0.4f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/ShimadaSword/Stacks/EnrichmentOne.png b/Buffs/ShimadaSword/Stacks/EnrichmentOne.png new file mode 100644 index 0000000000000000000000000000000000000000..89f58aa4d0e748e036589f467268ae631bcd1e3c GIT binary patch literal 763 zcmVPx#1ZP1_K>z@;j|==^1poj5Fi=cXMF0Q*kzzN*g-IR{6Q;P^+SFdb*8lVK=`(ha zX0OG+_gQ1KWlmIFO+GhMifTPEEVvtqS^xk7X-PyuR9HvtmCs8RQ545V$wi<9`HM(& zQ5mQ^k^Ir3g^NU~O(1E7_zws{5V#h^P;f1Y*bivoLLzdZSdl+U+|`5pu}BK>Rbo8E zrFyvpm^NcbOr@b zqcX5~bf3g|xljy!-ZcTebMFE4IO%>P-hOhw()); + Main.dust[dust].scale = 1.6f; + Main.dust[dust].velocity.X *= 0.5f; + Main.dust[dust].velocity.Y -= 0.8f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/ShimadaSword/Stacks/EnrichmentThree.png b/Buffs/ShimadaSword/Stacks/EnrichmentThree.png new file mode 100644 index 0000000000000000000000000000000000000000..71e9cc686c187f0bf1a7b5beb849a242bd763c0e GIT binary patch literal 820 zcmV-41Izr0P)Px#1ZP1_K>z@;j|==^1poj5LQqUpMF0Q*kzzN*g-IR{6Q;P^+SFdb*8lVK=`(ha zX0OG+_gQ1KWsvk*VzPW*@|$9>lulG!O+GhMifU7dd{TmkJuxh~Rc2@a00NLnL_t(o zN9~nMXcR#ZhDV79!65jE1VaR$V7vt}F*$h1K~W-tAg&t3vk(vj!K;EO5pxb%f-msk zK}7Ume4)k%x%gO7w}G}1W(cbpQ)y|r+cPnaoLL>6#w>Y_jFZtbxmMlCNjYs z`{MPU*^$E;$aBl2t zG^%7@=c3@|gRRjhoz?5kM!&+nV-A>+NaRTlfR`T%)KBjZQ;S!=P)#KAzbFS(4WLMx zwlBtz=#d{98Kjz=-rrC4%>*19fA?M0fVu@zp_l-}=2^j-=4GcUOpx~i{We%@z!rIX z=X&akjLE#Ow>+w?OW%&v{~w%(wNCq~6jHX(HI5 zttE_9KF7G{z)ZVYGcv!YtHXM%&J5^x7-n0HXZoCKz&V5$-au+WJ2N7;V{+;nRVbG~ zQyUwXPzBd~A#)!<)V6FSWx+OIP#L&Ay&DpoADu@X-Zn%%^D{?%c568`-+PSO_apqj zVe~gOzvCdacjsQ}OfmeXT)h{5_g&9x(h0Nh-vQ+S&K_1O%%KT5d)U;gfF|JVVWsC~ ynt(HgmCCH1XlRZ%$Dg(U0000()); + Main.dust[dust].scale = 1.4f; + Main.dust[dust].velocity.X = 0f; + Main.dust[dust].velocity.Y -= 0.6f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/ShimadaSword/Stacks/EnrichmentTwo.png b/Buffs/ShimadaSword/Stacks/EnrichmentTwo.png new file mode 100644 index 0000000000000000000000000000000000000000..fd52ba87e2c61f484f831510cf62d9ab1f9ad02b GIT binary patch literal 792 zcmV+z1LypSP)Px#1ZP1_K>z@;j|==^1poj5IZ#YgMF0Q*kzzN*g-IR{6Q;P^+SFdb*8lVK=`(ha zX0OG+_gQ1KWsvk*VzPWrR9sCyH&cpgQ;B>%F)Z!hQ(^!B0)0tDK~z{r?Um0<6;Tw& z$Ebyn1pP2VQRpY6I|(&iv~Zyqwh5xw52AlS5QM;OLMVo=B@wltMT-#8h4za|E8K*= zsBEDq;!8t$ic9l+XU^rkJ9lR8Jbb)OA2@v9op)DT?(K6xkAx!+bAb4^l!UGk!s~RBm==I2%oMb?59z|dV%8nevAWk13Oq*wwfjI4zk(*bP zUW7#DSwXXo)dc7 z^_t=N4RtlfV-3uJyu)Os#q>G%d^;95*P%>0y$UTVItgWh<}p}kuP=+{@Lp#v=sp)J>MLw8f|w`263`+bl5 zJSUwn4*wlc4$#??Z6puD7&?2h&F>D3p|d30NN>ZKxX<&R0pGVk!2jj+d7d-iIR5~w WE^Fo`TPtD!0000()); + Main.dust[dust].scale = 2f; + Main.dust[dust].velocity.X *= 1.5f; + Main.dust[dust].velocity.Y -= 1.4f; + Main.dust[dust].noGravity = true; + } +} diff --git a/Buffs/ShimadaSword/Stacks/SouleaterFive.png b/Buffs/ShimadaSword/Stacks/SouleaterFive.png new file mode 100644 index 0000000000000000000000000000000000000000..4a055592cfa3d541e1bacac979210e3cbf440275 GIT binary patch literal 1001 zcmVPx#1ZP1_K>z@;j|==^1poj5MNmvsMF0Q*Bq1kIC^8-o6WgYyk2yL2!NI>fJHPi? zW3*+E^jc!Fd|vXKVy~24@5o}Us$AvmVV0^>ifU7dd{TmkP;Z1!T!PJ-M}q(W142ne zK~z{r#gAm95ogENyPeKpWgT}_6jWBL=! z4fnH^Nm;`=h#je5D?hP`3D(lSeF4}zk)7uX0C`yzCHZ!Jon&fxjiin2+~5Y_)&LgC z>5?Ke3BB{i8!?hL15Z0hhRp;9Hnq0u)_{8pq(X544s^az@SWq4NX8K4yNJFGfi)1c zbIDA7Yb(i-&U7)#N5f{qt^r>k*v!sta%IBC_XMw*Tr~uDuIr+_w3LQmKbQBfOwI62 zZnB5=AHW+SBO5zdB6KFE!B8zYsT2zLjAfUz3kxI#d47lf0@U41*N9w81Ou?oUf7Zh zXy^IJh=!pI>@VI+#zy)866AbS8Q4gB6|{3K!Z3xXqjCFyMy_SPR;&ZoeZ=kydHaAM z_czRW;u={W)JJmlmaG}Dn}?)RdPGpQ;~KkW9>(vI#Pyho&>7Hon2IQ%CU8!#*$fy3 z?c7E(p&};acFeCVk`%^jYDk_LA15hfTd%-=+&$11OH}VGUsA11pB&ihZn^_3wYM z2C)0+A=UtvUU|)@q|&>>ORv55Jk%RcXW)6gS5QLYUN`hKw6o=rxZe&vjknqI=#M{u zp7Tv?c?>>oqqDX_=LiNs9Z3g)&IKI=Iu~>h=v>f2pmRY7A()); + Main.dust[dust].scale = 1.8f; + Main.dust[dust].velocity.X *= 1f; + Main.dust[dust].velocity.Y -= 1f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/ShimadaSword/Stacks/SouleaterFour.png b/Buffs/ShimadaSword/Stacks/SouleaterFour.png new file mode 100644 index 0000000000000000000000000000000000000000..4621096e9c64ff2ee28d9626941a1c6ac79a3c25 GIT binary patch literal 839 zcmV-N1GxN&P)Px#1ZP1_K>z@;j|==^1poj5MNmvsMF0Q*Bq1kIC^8-o6WgYyk2yL2!NI>fJHPi? zW3*+E^jc!Fd|vXKVy~24@5o}Us!mi~O+GhMifU7dd{TmkP;Z1iF)Y}70R8{~0-#Am zK~z{r?UqkSR8bVhUxVVJAflyU6jl;0qMf*iXe&cj1WA9E5hOIwx>dUt6S#Fr*@kYU()45!o3B4DXw;{F$;v!dO28M^J zZ%6!M)Jt76Vb?&U4>S|GOwA~U#Vx@rKCn|0CM*+~=jy!PLmnG2qzlkD0qfEyu8 zqAgIsGude{tc6;o0twGpQ7$YmQ-$X5@~`KezwOtEt|fp2_SuU)$$_l3+pAas9S&J%02KCX|X z^_Ij8*v&)fRF87~VqTxQkG{$5jEemn$MVNu{zgHpNX!!v3*}zlkqd)$?ULVJfQA_y; z)EmG3`L?p(2}^@_sMlBDQQOCssHIC+sQJs+sI?zosc$CUQyb2}Zu8%P&;gu1tUB9H z6F7U=+Gmd@aQ3k3r*)dZ*~3;Q=4k?F538+002ovPDHLkV1i(pkFNj# literal 0 HcmV?d00001 diff --git a/Buffs/ShimadaSword/Stacks/SouleaterOne.cs b/Buffs/ShimadaSword/Stacks/SouleaterOne.cs new file mode 100644 index 0000000..90f0db4 --- /dev/null +++ b/Buffs/ShimadaSword/Stacks/SouleaterOne.cs @@ -0,0 +1,27 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.ShimadaSword.Stacks; + +public class SouleaterOne : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Souleater - One"); + Description.SetDefault(" - Accumulating souls!\n - A stack of 6 will heal your HP and Mana"); + Main.debuff[Type] = false; + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(Player player, ref int buffIndex) + { + if (Utils.NextFloat(Main.rand) < 0.2f) + { + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 1.2f; + Main.dust[dust].velocity.X = 0f; + Main.dust[dust].velocity.Y -= 0.4f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/ShimadaSword/Stacks/SouleaterOne.png b/Buffs/ShimadaSword/Stacks/SouleaterOne.png new file mode 100644 index 0000000000000000000000000000000000000000..0768f4df2e0c4d58a9986e99184fa96796c9ef90 GIT binary patch literal 753 zcmVPx#1ZP1_K>z@;j|==^1poj5Do{*RMF0Q*Bq1kIC^8-o6WgYyk2yL2!NI>fJHPi? zW3**XR9sCyH&cpgJuxheJLI(h00L!6L_t(oN9~loYg9oL#m7ZSp&()zP=u&KQixqh zAz~YXij6_A6pMfh*8T$)Tci*X3&C1NZ9~{V2sXhYgs1_D5CrifB0*x2HRtS{VcxuX z@6B5_Y~v4R&(6I0xcAPTYa(=P6JbAOQa{<9Qi>e|$4@4`=!R^z<}Uq^$Q*B%A?PMlV1LS^ly?Ei#~L zeaOqTWoj-5TI1vF__S6(n2lG@Z7<8oscWWr?u_kK(_C7z|GH=A3hk zce}gP_Rk$^h&3Ji0h({4lD9m~u0%}uJ%_q+Tx=JK6x zj_6qe7!cmQ*p~?ShgXrY#=;1kIC`9&I&}cV4(}-fb;_&o4@VNFB%*JPs{=lImQ|(L zH`uQuVO^-K148dN zoWPhrrx#!aJr7YNJd255$LC+)sbYR&f_iCjkt&Mji`sR7VT?qhEDEvt!bM>I&kcxq zHg|;jWb!d}>iSJ;=j%u6>xH+}evQ|TK)?BKfHMGhkG8dXh)v+m(6)YWvx$C<4?F_7 jO6Z|)`#L`02pIDZ(&A_;#wSGn00000NkvXXu0mjf=Yd;L literal 0 HcmV?d00001 diff --git a/Buffs/ShimadaSword/Stacks/SouleaterThree.cs b/Buffs/ShimadaSword/Stacks/SouleaterThree.cs new file mode 100644 index 0000000..e758e2f --- /dev/null +++ b/Buffs/ShimadaSword/Stacks/SouleaterThree.cs @@ -0,0 +1,27 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.ShimadaSword.Stacks; + +public class SouleaterThree : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Souleater - Three"); + Description.SetDefault(" - Accumulating souls!\n - A stack of 6 will heal your HP and Mana"); + Main.debuff[Type] = false; + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(Player player, ref int buffIndex) + { + if (Utils.NextFloat(Main.rand) < 0.6f) + { + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 1.6f; + Main.dust[dust].velocity.X *= 0.5f; + Main.dust[dust].velocity.Y -= 0.8f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/ShimadaSword/Stacks/SouleaterThree.png b/Buffs/ShimadaSword/Stacks/SouleaterThree.png new file mode 100644 index 0000000000000000000000000000000000000000..c45b7769fb53f556187cbc23af087a9e6226eb71 GIT binary patch literal 813 zcmV+|1JeA7P)Px#1ZP1_K>z@;j|==^1poj5JWxzjMF0Q*Bq1kIC^8-o6WgYyk2yL2!NI>fJHPi? zW3*+E^jc!Fd|vXKVy~1=R9sCyH&cpgQ;B?1f`>gZERW87>Hq)&k4Z#9R9HvtmOp3| zK@`TvBa%Wv#4?~LQG=uqyO2V}HXKH545Fn720XB~va>iLg@_mstX0(Z3@3zO6GTId z8juJ<5dU0^L1K|J-?#fMv$OwZkA!Rd!OM5EGqd~Nn>UY`6xyK)ckGMTdn%!JjUAx^ zde?vOCEbG84Px8rjZ41DSkY&*mD&U!HHW=1I zyV-<9XRIg}mzSwR^Vj&-nA2B+8qu``aKJr#u`L;}KVC%4n-FGT|DJsul<5N??c*I~ zpiFxe_Qz3#K80v|6ZHWbUCW|YY&&fC5w|ZC_5q>$>vNu1qxEThB(Jw*X25M8N~d~6 zTD4=1TQj$AT&H3^GU1&8`wp{+QfdOv>@}SLFBrLtGGTd4bUQw;e5Z=3;bH2j>1nFS zS}#iX0j4n}8+lnsTQ8yvO#L|zF%KKNsrN_jQE&ea{`GqE;t+MRdXswbS1{kx2s+{9 z=v8X<+y!d;>qqLdm#?T<&r4@utNHIh7Crv}n;600000NkvXXu0mjfEyZ*L literal 0 HcmV?d00001 diff --git a/Buffs/ShimadaSword/Stacks/SouleaterTwo.cs b/Buffs/ShimadaSword/Stacks/SouleaterTwo.cs new file mode 100644 index 0000000..33544b7 --- /dev/null +++ b/Buffs/ShimadaSword/Stacks/SouleaterTwo.cs @@ -0,0 +1,27 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.ShimadaSword.Stacks; + +public class SouleaterTwo : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Souleater - Two"); + Description.SetDefault(" - Accumulating souls!\n - A stack of 6 will heal your HP and Mana"); + Main.debuff[Type] = false; + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(Player player, ref int buffIndex) + { + if (Utils.NextFloat(Main.rand) < 0.4f) + { + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 1.4f; + Main.dust[dust].velocity.X = 0f; + Main.dust[dust].velocity.Y -= 0.6f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/ShimadaSword/Stacks/SouleaterTwo.png b/Buffs/ShimadaSword/Stacks/SouleaterTwo.png new file mode 100644 index 0000000000000000000000000000000000000000..8c873731b1ea1098da74a8d9f73aa827d7f5bfd9 GIT binary patch literal 783 zcmV+q1MvKbP)Px#1ZP1_K>z@;j|==^1poj5Gf+%aMF0Q*Bq1kIC^8-o6WgYyk2yL2!NI>fJHPi? zW3*+E^jc!Fd`?tcO+GhMifU7dd_6HN*t7?*0007dNkl7p$%9ELKP%A_{`FirU7oLI^fNB*drzi4X+wCqaY6 zB5TgsIm5hpfAf}vZT#To?7TNK@7_CiE-@Ljt%-0POVmC!t36|fRY30s4jtoQ@zZ;1 zIQH<@f<$x?`*3|K14DhgX(AlQ61xw)NJL)5-yh%1L zTxP#4QS%%qTOaatVV0Vzf#&cq2R_aD4`%7vV>?Q6uzub&jvuw7avC!;_E+cIDF?zx z6nT*Y;Nj39_07fxwe@qI8luQIaSpf|K#`o<*M}kTBR_YgK@E9ww@Ho71RR@NUvo9! zZhki4IpyAE(ZGhX(D{D^_S-s?2}^hUE2b1BV>8(v0YRHRjCKPL1eV0yq$!z1Wrv_#ZDL;f;kEIIwp=2UYq2$ohC!8K}};h5vCBVN4H8MgyJv~hodGkf(KEO0)WTPkx zS@VUoqxUFzC28QP`^p7U${hVfBi^({^~Wg>hsDO*lPYe z;2gl&!&c^Z(FD#Ow))P{1kMt+@@tJIsy^>|22!2SL+`frd5<$-%s&?~V&;T#UpW8( N002ovPDHLkV1iv>UBLhV literal 0 HcmV?d00001 diff --git a/Buffs/Shotgun/Hypercharge.cs b/Buffs/Shotgun/Hypercharge.cs new file mode 100644 index 0000000..5206738 --- /dev/null +++ b/Buffs/Shotgun/Hypercharge.cs @@ -0,0 +1,27 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.Shotgun; + +public class Hypercharge : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Hypercharge"); + Description.SetDefault(" - +12% damage for Hellraiser & Golden Shotgun!\n - +12% faster use time for Hellraiser & Golden Shotgun!"); + Main.debuff[Type] = false; + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(Player player, ref int buffIndex) + { + if (Utils.NextFloat(Main.rand) < 0.8f) + { + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 1.8f; + Main.dust[dust].velocity.X *= 1f; + Main.dust[dust].velocity.Y -= 1f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/Shotgun/Hypercharge.png b/Buffs/Shotgun/Hypercharge.png new file mode 100644 index 0000000000000000000000000000000000000000..fe15ec17617cb1d1e42101cf80fe99667d3eacdc GIT binary patch literal 672 zcmV;R0$=@!P)Px#1ZP1_K>z@;j|==^1poj5Do{*RMF0Q*|KqLy)PE;QcmK{_|F!`Ct^k|<|2KA| z|C0bMEiM0Q0RR90wY9a=8;I=y00In##S zWgtdkYE9Tg69WcGg$Z5gBvyY0sl_0%baj;|iI9jek{C?t-tYJOp7u4Do9O!_*YE4Q z>%IGZ-|zkI)wX`Ai2fHec8r=0L_GyXUU@!JVp$&^Nqq5(6qMIrx$$)q@cXn#Elk*#O|0RHOGPdZ%%>KDW`>7JR~g+O_K&Zh<1sBkbd`4?&I=(^5Z;C zI>zIe<3P{Ik`k*mksu8sM`VJt$LGWFW=ql%#1T00UgGn2=NqKvIZ&SGC$r92oU7W1 zJ&#vOp->>rWHO}acO1@g;0=l+V=VC<9>+WfD#z;6=R&lX1#_OwW=WIDBq>0|q0S&D zZdu}wraBPRfgG<-M2^V9&>heT&clh}6%xCDjkMto1P_q%16K#lmCTny%_-)!8WowI z@zvD*4)?wHBUguDjssC3;;6_YnecN>9fCQlK(7O+fKjU;3b=)enBV2-&3hYGZg_p> z`&LO)bNqyGBCHbX)Kx+)@~u(sH}`Fb{Xi-^MY=suoAG+h2XIDTAq&@hJsdUnT~N0p z`jkDK%pK4j(Luz3s;lBe8r_Dy3jznicEtcWfw{DDwa(<_E6%&kA-{j&f@9wQf~bE+ zpq%FH#r_^(eFI#FIS=ZK7--wvFv0;)8`9rHV>j3V%lZMsiP>k0000()); + Main.dust[dust].scale = 1f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0.1f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/Shotgun/HyperchargeCooldown.png b/Buffs/Shotgun/HyperchargeCooldown.png new file mode 100644 index 0000000000000000000000000000000000000000..775b1f1b32d4dfea933776c3b6faeb4aacd8e54d GIT binary patch literal 823 zcmV-71IYY|P)Px#1ZP1_K>z@;j|==^1poj5Hc(7dMao7-0002j*Vj}mHqXz`x3{;lva+izEPE|4 zqN1WLEiHQAd@2LKT2r{It2ofp+l7pC7Bczf@3E~6|_Vs zMF@h6r9*Kj*56mZa-O}qB=w*lI6tR%-n-xLz4v=}mio@lSWVbIKNtNoChfvE@VQ1T zlMNZ*9o;@Uf?q@*!{k}v1n&3yu-$HlNw3#~olYnGHue-IZ%#kJKlb-wW_;}#xH+@> zc6kYJTwK8SEF<_q<`8D&gTVmSGaL?KtJMlW$-ag^r_%7n?7E{_JH$L=VAr!PT8dmB zaW=ZA;WF+oD15X=k^p2y#L9bQ+DdB(u0$0Jfd zQz@9EoqcNr``qX}9_Q@v`~9%n?S|K$f%y&G+1$h?6^~UST zwW87a-DxS8%P=dT5&AVkANePB3pQK}*tkrUKp-%mGU0F-zG@a$L*7-jT2(HWOC=Hs zmCNN+x7$_0U=YW~W1PNJ8<-jW40$;_|7$!B*YjtvVFn~(XPU|}`n0Muqd(2jvjCIdg5 zWJ3#|s@d1y3m;)}fBXyHtxlh~EY3&pLI$`bvoUE{;CCLsO6D2Rz8SH9wD6gcPfnwQ z1DJ4r6Q0LDm--@bO#JoDNQ#m)sNJrM|NZS)so$|pEQ8ggxX}Or002ovPDHLkV1myn Bc())) + { + player.noItems = true; + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 2f; + Main.dust[dust].velocity.Y = -1f; + Main.dust[dust].velocity.X = 0f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/Shotgun/Hypercharging.png b/Buffs/Shotgun/Hypercharging.png new file mode 100644 index 0000000000000000000000000000000000000000..640c0f3bb2ae1250f74f2684fe9679ea73299211 GIT binary patch literal 646 zcmV;10(t$3P)Px#1ZP1_K>z@;j|==^1poj5Do{*RMF0Q*<>lqq*VjZuM9SD)Je00H_*L_t(oN6nYPs&P>mhPTsiU}C0}L}FmT%pDjh znVFfHGLdo#N=7ch%nW59BbUHLkw{9Jxq<(0y~pEd{q6SbSWoR9wry|Ux4!kQCFK3^ z_vzn4&;HWO4`P0WBEMd*M&9G`kXx;m41>WyzTIweJRX?KGWeaJPN#CEQjv?rqMS~rWp^@AE|-nG zY&I(sIgtUi;DRD>Dy75pdiuS=R67;_j)}~!_;>8@ao_!ZuLIo4KoCS66nPNUYE=ig zGYe+3nUS~K?PNM&&@2doY|#&u5v>kH@17d_Nox%kKRz2>NFP?40asx92z4G3Jp-M5ZP}A@gWQG62fN gFQR9EI0K&d5A84E@2X$ToB#j-07*qoM6N<$f_j8Q4*&oF literal 0 HcmV?d00001 diff --git a/Buffs/Shotgun/Ultracharge.cs b/Buffs/Shotgun/Ultracharge.cs new file mode 100644 index 0000000..c340198 --- /dev/null +++ b/Buffs/Shotgun/Ultracharge.cs @@ -0,0 +1,34 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.Shotgun; + +public class Ultracharge : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Ultracharge"); + Description.SetDefault(" - +12% damage for Color Splasher!\n - +12% faster use time for Color Splasher!"); + Main.debuff[Type] = false; + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(Player player, ref int buffIndex) + { + int dust1 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust1].scale = 1.8f; + Main.dust[dust1].velocity.X *= 1f; + Main.dust[dust1].velocity.Y -= 1f; + Main.dust[dust1].noGravity = true; + int dust2 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust2].scale = 1.8f; + Main.dust[dust2].velocity.X *= 1f; + Main.dust[dust2].velocity.Y -= 1f; + Main.dust[dust2].noGravity = true; + int dust3 = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust3].scale = 1.8f; + Main.dust[dust3].velocity.X *= 1f; + Main.dust[dust3].velocity.Y -= 1f; + Main.dust[dust3].noGravity = true; + } +} diff --git a/Buffs/Shotgun/Ultracharge.png b/Buffs/Shotgun/Ultracharge.png new file mode 100644 index 0000000000000000000000000000000000000000..93cc92f50df0739ce1687800f449a374cc16718e GIT binary patch literal 905 zcmV;419tq0P)Px#1ZP1_K>z@;j|==^1poj5oKQ?uMF0Q*@p5wNi)$xIci-Py~&#zI) z$WbjVEm6;}QOL+!yV}}&Tf>D#|NsBBwY5d0!&{r$*I8M^Wkt`CQBknZMTNu9aZyo` z&ufe7S$Ws$Yipy!MMcA-x7S%&(9mnk>Wulsq5uE_i%CR5R9HvNmrqC(VHn0|CD?E$ zR<<%Vx|HDtxrKJzE+Ikdt%Kwi5w&|!@Sub%-8!@zh(wu({v2{c!b2p+8Wqt&A)<>b zq0$~ogxX~l-PU5Wzw^BFm^-k{&HWzu_(RLjL4(D~U34s^+Q zbsV_+TT;M(B?w;l)e6R2Ccr{1prw9(1GBCjARU-rs|KB}Lm&sF;?v;%1I^%xuonzh zNcyScK*OnC16oz1%whbXM8395BBlf3a7sEQR6l%GI_7}NuaX<77jMCpnHg|?;yS3F z1LIALV7f8`c0Bq5QpsczOe7LuBoYC6+~@OwR88*?Sp9tu`0nw2P#Fidnbe+CEr97v z7SsdQOAqUrM%fZcB-CUg|oYuMZ7_ zbwBokw=YZGD7yn2FA)0Yh0*f)JQ`(WJ2QT>jL57RzggCCyzlbz5*nqB19oD>c9Gj@ z^8QviuI_Hg?}1S4EO_%samHJBLyFE=S4h{iTt6C}1Q#Zsg6cca z?|uNz^*skEt0Pu1V#=tlhJttIKu>NbsLWol;XtXcVv0GjeM(lxIe)P;_hh&>I`t6D zjhmsH;`rIY9H`!Zf!&`Gbz?xjoE95KK#J>|YKlr_^{m%{N1Jzp%n64>I!ZV|nX|ZM f!n4clfTsNgPiFMK(V8w_00000NkvXXu0mjfyl1zZ literal 0 HcmV?d00001 diff --git a/Buffs/Shotgun/UltrachargeCooldown.cs b/Buffs/Shotgun/UltrachargeCooldown.cs new file mode 100644 index 0000000..694946a --- /dev/null +++ b/Buffs/Shotgun/UltrachargeCooldown.cs @@ -0,0 +1,27 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.Shotgun; + +public class UltrachargeCooldown : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Ultracharge Cooldown"); + Description.SetDefault("Unable to Ultracharge!"); + Main.debuff[Type] = true; + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(Player player, ref int buffIndex) + { + if (Main.rand.NextBool(3)) + { + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 1f; + Dust obj = Main.dust[dust]; + obj.velocity *= 0.1f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/Shotgun/UltrachargeCooldown.png b/Buffs/Shotgun/UltrachargeCooldown.png new file mode 100644 index 0000000000000000000000000000000000000000..97c361f8229f053d4218652436bc804574b37770 GIT binary patch literal 834 zcmV-I1HJr-P)Px#1ZP1_K>z@;j|==^1poj5Hc(7dMZaD<0002j*ViT?C(qB%x3{;lva*j*IZ!Dm zqN1WLEiHL_t(oN9C8nixN>B$Dd0= zhYBJD4|<5z76YY=hw2c47ZqvSg1XpY3BoSzMw0s%tZB3@K@w~mTveyThTwG(=I%P z&k17cY{&rb$hx!!p9{>wh(Hox7*=MbC+SVncILH%U5A$eBv3{ z*Ry*6{Wm;at-{CmOLCODc5ek{R0u8%mGO!oHvPBa?r?RBwOEHE?i=_i^~U%q~Zjh6xTU8z)p)9Ex!ip3(F%jMu$ zEC%y;kH-U(a5xOR-ER2C^##~48R*Y~yQ|&4W#syK9*@U+dtCy70L%;!p2y#L9bQ+D zamK*P>`9S2G8ch4+S#|mV4n{=kH5vPivNn(yD8mTWc)vjPr7zeeaIPks0X4_yn`xJ(tF&)1(a!C(*`H#=5C z-c>%IR}P0mMIsTEN~Kh-R#SezAII8loIX$+m>K;HnV&uY|2lOZUQ0cOhh{(`md3Tn zcWv<)Cj%K^^g<{UQZ}0n`$C~m=&$R;V8leKtMKFEZP@8_!dwdmZeX`a<=)o2V}MIC8T4Ic={m!-Vsj@I0nm>WjcG+4apxijp*_-S&$A{q0z(KY1uCT`sOsQUCw| M07*qoM6N<$g17;PIRF3v literal 0 HcmV?d00001 diff --git a/Buffs/Shotgun/Ultracharging.cs b/Buffs/Shotgun/Ultracharging.cs new file mode 100644 index 0000000..f0d3bcb --- /dev/null +++ b/Buffs/Shotgun/Ultracharging.cs @@ -0,0 +1,28 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Buffs.Shotgun; + +public class Ultracharging : ModBuff +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Ultracharging..."); + Description.SetDefault("- Charging your weapon!\n - Can't use items!"); + Main.debuff[Type] = true; + Main.buffNoTimeDisplay[Type] = false; + } + + public override void Update(Player player, ref int buffIndex) + { + if (!player.HasBuff(ModContent.BuffType())) + { + player.noItems = true; + int dust = Dust.NewDust(player.position, player.width, player.height, ModContent.DustType()); + Main.dust[dust].scale = 2f; + Main.dust[dust].velocity.Y = -2f; + Main.dust[dust].velocity.X = 0f; + Main.dust[dust].noGravity = true; + } + } +} diff --git a/Buffs/Shotgun/Ultracharging.png b/Buffs/Shotgun/Ultracharging.png new file mode 100644 index 0000000000000000000000000000000000000000..640c0f3bb2ae1250f74f2684fe9679ea73299211 GIT binary patch literal 646 zcmV;10(t$3P)Px#1ZP1_K>z@;j|==^1poj5Do{*RMF0Q*<>lqq*VjZuM9SD)Je00H_*L_t(oN6nYPs&P>mhPTsiU}C0}L}FmT%pDjh znVFfHGLdo#N=7ch%nW59BbUHLkw{9Jxq<(0y~pEd{q6SbSWoR9wry|Ux4!kQCFK3^ z_vzn4&;HWO4`P0WBEMd*M&9G`kXx;m41>WyzTIweJRX?KGWeaJPN#CEQjv?rqMS~rWp^@AE|-nG zY&I(sIgtUi;DRD>Dy75pdiuS=R67;_j)}~!_;>8@ao_!ZuLIo4KoCS66nPNUYE=ig zGYe+3nUS~K?PNM&&@2doY|#&u5v>kH@17d_Nox%kKRz2>NFP?40asx92z4G3Jp-M5ZP}A@gWQG62fN gFQR9EI0K&d5A84E@2X$ToB#j-07*qoM6N<$f_j8Q4*&oF literal 0 HcmV?d00001 diff --git a/Buffs/StackBuffTemplate.png b/Buffs/StackBuffTemplate.png new file mode 100644 index 0000000000000000000000000000000000000000..cb01b4cd491f26258e302dfde9549a45b808ca04 GIT binary patch literal 415 zcmV;Q0bu@#P)Px#1ZP1_K>z@;j|==^1poj54^T{0MF0Q*Bq1kIC^C;ZIlntQRM@w=0003lNkl`01SOC?{rgL=ej~iO().fabu = true; + if (player.ownedProjectileCounts[ModContent.ProjectileType()] <= 0 && player.whoAmI == Main.myPlayer) + { + Projectile.NewProjectile(new EntitySource_Misc(""), player.position.X + player.width / 2, player.position.Y + player.height / 2, 0f, 0f, ModContent.ProjectileType(), 0, 0f, player.whoAmI, 0f, 0f); + } + } +} diff --git a/Buffs/WindUpFabu.png b/Buffs/WindUpFabu.png new file mode 100644 index 0000000000000000000000000000000000000000..02950424279cddab4c920df6425767edfcb1bce7 GIT binary patch literal 799 zcmV+)1K|9LP)Px#1ZP1_K>z@;j|==^1poj5PEbr#MbYH>0001_%Jmgz#5gVhR-Nnr*Z=@3Z?6CV z8)xMla{t(qliL~^ia9v|QrKvo_hYnW^MV`l^71k=GXKJi9%0VXj#0@;DF7b-02sC7 z5iCFe00M7GL_t(oM`OJB}`DOvAu{hX76ofP4bNARi!OLI7Po%p6=`@Pz;#HZXJBPjKo7VGx@T zz-2DkA&~CH4$g)k3}TZDaFzpv;v41w5FjQL(9;3MpgDOmm}YKo2h;22<-xT3 z>H|X{1kiIqOhOfdjK>5p`^f`H`7NUWsV97Net_v2TONXG7`T1H2~2m)@&?lr&TRwJ z)3?ikX{m{Oz%&R9n%WQ^0;1_hKoq>?@+{wlq3oj>m<P7g~aBQ@4z%n z{JMY)nEqdI9Zb(~cL&p;5P;RXuV>nT=>ZP`jLZ&e$(R7~rxVR!wu6H)m_9op3QWt- zhs5=^!(fVGyDmf>9DIS&XaK#H1OkIE1dze?aC0b&6HGG36ocviOM1aH3^2y51JjoZ zg1|H^)!QG3=@)>~m|*ah1EBaand1j$ulNZmCC@#B#P$DGkkkzWjA5E!`cl~(Fg;CR z8JJd@4M{7o+_Ypt8<+-x!B-C8>lw+O&I8l1T!0H)K64aI!$M$2PX(A3wGE|B&xjge dr1y>)7yz%T^_hcbp}qhB002ovPDHLkV1hlBP>BEl literal 0 HcmV?d00001 diff --git a/Dusts/AxeOfGrassDust.cs b/Dusts/AxeOfGrassDust.cs new file mode 100644 index 0000000..98c5ce7 --- /dev/null +++ b/Dusts/AxeOfGrassDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class AxeOfGrassDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/AxeOfGrassDust.png b/Dusts/AxeOfGrassDust.png new file mode 100644 index 0000000000000000000000000000000000000000..9a663eb6b4d0e3fd3bfac447fcf3a3a0f743f536 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>0X`wFKstGfPX87ADyx#8K#sAei(`m|f3if5LS@&vdJSQ|84FAzf{r^% ztX8r(plw-mfa9ZDDMMAl!C(;%o^v5b4=^wkM~Rr$%6eV^YG?3t^>bP0l+XkKWveQ- literal 0 HcmV?d00001 diff --git a/Dusts/AxecaliburDust.cs b/Dusts/AxecaliburDust.cs new file mode 100644 index 0000000..c53b604 --- /dev/null +++ b/Dusts/AxecaliburDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class AxecaliburDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/AxecaliburDust.png b/Dusts/AxecaliburDust.png new file mode 100644 index 0000000000000000000000000000000000000000..1159b2a3d883b38ae5d467b960c64d05758b3afa GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6=10X`wFKzczd!~ZJ`Pxmw2*utP&y+jo#Wbf(X7-Hd{yudi(!l@7Pr;e~F zoctdy@h>@)Wpd4~`49j1>Q;z6oYKO$XHqk(z!ydhnYMlAE15ak4h#5%^6)U&?e@^~ T&`X^RG>XB~)z4*}Q$iB}Aaymx literal 0 HcmV?d00001 diff --git a/Dusts/BloodCutterDust.cs b/Dusts/BloodCutterDust.cs new file mode 100644 index 0000000..2f21b94 --- /dev/null +++ b/Dusts/BloodCutterDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class BloodCutterDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/BloodCutterDust.png b/Dusts/BloodCutterDust.png new file mode 100644 index 0000000000000000000000000000000000000000..81f82b24608775e25925ee235f13e478f2478ce2 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>0X`wFKsra=&{*{|p zr1EAr=*qY;?mQ3~C8%l=7$m}x@rlDBvV@6;hk^Y&2dDTVTT7q`44$rjF6*2UngIO} BCbR$m literal 0 HcmV?d00001 diff --git a/Dusts/BloodDust.cs b/Dusts/BloodDust.cs new file mode 100644 index 0000000..5d9034e --- /dev/null +++ b/Dusts/BloodDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class BloodDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/BloodDust.png b/Dusts/BloodDust.png new file mode 100644 index 0000000000000000000000000000000000000000..bb016979bfaefc95d8ec9149bee70b86c7d1a42b GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-$0X`wFK>C!M+iD%1YF+(#70(U;`R1N3jv*HQ$r42mrp&%wuOZAgV}Xf; zP0cr+Q&QI$qAhxuiX6ADv-8SWv_wO|;KzUQQ;UQX5*Qek@8FJGcWC!>pb-q7u6{1- HoD!M!lvI6=10X`wFK>FEw!>d)Iub=Czk776~KKUR}$jZ~jF~q_@S)%B{&8oxy1Jq;; z95W3n>VI)gFZtUhX!0HSYI!e2yhZsb!}{z)ub`SRsFyL1_pm|t`oOThA#t} O!r!lvI6-+0X`wFKzgn2;r}b|T#R|LTk-RUoi{To`+fjLqdi?5LoEE06(rYOwf!T1 z>IjR%$^Y8#|ERCvI3;tA;fZg`dLze70|rl)s~%3384N0whR-bui?ZN47 xJpu1JSa*xsKlbxgILU9F{|~IwrJ<3Lp=P7ulB6xAe}L97c)I$ztaD0e0szLeNfiJ9 literal 0 HcmV?d00001 diff --git a/Dusts/CrystalDust2.cs b/Dusts/CrystalDust2.cs new file mode 100644 index 0000000..0682787 --- /dev/null +++ b/Dusts/CrystalDust2.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class CrystalDust2 : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/CrystalDust2.png b/Dusts/CrystalDust2.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d400557fb3eb0df99b8f9200f4340945e991a5 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6=10X`wFKw3lORmg&W4FCU!M*e@s{AnLh$ko%uF~q_@S%P7K;-^>kQ#jdt z0;G5xCRy1kNpuA;#GQP|>?HQ*@LS&vPyYY^iN+QL}nuyBdz1eM2rZc2}uyBZo9 Z83Na;EZrNO_6TSogQu&X%Q~loCIC+KIeGv9 literal 0 HcmV?d00001 diff --git a/Dusts/CurseDust.cs b/Dusts/CurseDust.cs new file mode 100644 index 0000000..d5132e2 --- /dev/null +++ b/Dusts/CurseDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class CurseDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.1f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 0.8f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/CurseDust.png b/Dusts/CurseDust.png new file mode 100644 index 0000000000000000000000000000000000000000..a435a9848d3dcdebe58912cb560317b89568e962 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-$0X`wFK)PC2f3=RzDK|G2=|!AtXP$tAf9Qu0W^T_(!J=)VSNuYGconY%*BAjUWbkzLb6Mw<&;$V5 C!9HXF literal 0 HcmV?d00001 diff --git a/Dusts/DustTemplate.png b/Dusts/DustTemplate.png new file mode 100644 index 0000000000000000000000000000000000000000..9d7ff2c3eac4870e68350b8e9a150595b3830ada GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-$0X`wFKzjQB|Nnv1e?^g(Lg7G0h^LEVh=qT0N!lvI6;>0X`wFK>Gjx|NE|Qa uxVC}q#-T)!3EbaeZCmY4Udr9!;bBNSFSt2qTCpThBZH@_pUXO@geCyN3@+CI literal 0 HcmV?d00001 diff --git a/Dusts/FoxBreakDust.cs b/Dusts/FoxBreakDust.cs new file mode 100644 index 0000000..9aab688 --- /dev/null +++ b/Dusts/FoxBreakDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class FoxBreakDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/FoxBreakDust.png b/Dusts/FoxBreakDust.png new file mode 100644 index 0000000000000000000000000000000000000000..a3e01b2348b62e58f01762428b93182fb8a54f88 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6c8#@ROHx99hXf=|DqcPOa|FftjO{4T%W zV9%a%KCP}L3~E2${bgUlA;l1>tg(>iSinL>t_jY?A_5FA8d?1f6c{FjOioG<2n;zc hyQo4nlTku~;maFCfqf-H%YoK2c)I$ztaD0e0suQ~O-BF# literal 0 HcmV?d00001 diff --git a/Dusts/FoxDust.cs b/Dusts/FoxDust.cs new file mode 100644 index 0000000..d7e1035 --- /dev/null +++ b/Dusts/FoxDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class FoxDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/FoxDust.png b/Dusts/FoxDust.png new file mode 100644 index 0000000000000000000000000000000000000000..9fa1748d0389b701eb90c433894714fc80778790 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-$0X`wFK>Fr_wEKl>t9*Fg6vT!A`R1N3jv*HQ$r42mo;7XxAD|{<;FxKU zu)Bicl+-nbXp0`EqJvuUa#Jq2cm^sYtkPmly~t@`z`)SHo%5{CRrBRQBN#kg{an^L HB{Ts573?mr literal 0 HcmV?d00001 diff --git a/Dusts/FoxDustBlue.cs b/Dusts/FoxDustBlue.cs new file mode 100644 index 0000000..7a5a1b0 --- /dev/null +++ b/Dusts/FoxDustBlue.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class FoxDustBlue : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/FoxDustBlue.png b/Dusts/FoxDustBlue.png new file mode 100644 index 0000000000000000000000000000000000000000..d0fc8c9d9f2e27596e790a1514bef97b4c35f6fb GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-$0X`wFKsv4Xrkd}49^F-9ZK^gvzL}?sV~B-+vP6->+8@vAHH7(QEHIIf z*>RLDl{dRVSH_KTXM=mWs8`0KB^m+~f(%+Wy!lvI6;L0X`wFK>F4M{p)QixBAs@O)&ocqUziI=J&@cKb$UpxHM#Qyx#j`Ri`R7 zW_mf_nrJf9%kArx-hNBV1G~2T2I`#U>Eak-;h(&~HlgJb&vvyJ|NsAftIcezZrmL8 z(07N$jKb`ukM%b>%G>_mx0I~2`+w}iuP0VJl+*-1e!uO$;mLY)c?r9_`_C49X0rB> z;5ooGW9N@XtNq3`d%jM1_;ji^&-u9SCRIm!lvI6-M0X`wFK-wa$+xGHS^AoGJ7i{&aoabPh?Wph3^7_tJpj@S=i(`m|fARv` zgqBM@VwrdUFZ5{>-t6`8Q39LCB-8Njhu5#?^Tg*B7=Do3%@%%yMah9dO|$;9D)aHL z>;Zu)tOh5`^Y0rO)a~LHbuDK0Q1>YMe^j>M<3jcc&cz}E3@;j4{S6ctCjFVemdKI;Vst0Ecf-{r~^~ literal 0 HcmV?d00001 diff --git a/Dusts/FoxWitherDust.cs b/Dusts/FoxWitherDust.cs new file mode 100644 index 0000000..e9b29d1 --- /dev/null +++ b/Dusts/FoxWitherDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class FoxWitherDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/FoxWitherDust.png b/Dusts/FoxWitherDust.png new file mode 100644 index 0000000000000000000000000000000000000000..337ab0f902f67bea570b30760e7bd6aa66ef1cc8 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;90X`wFKsrv}K0w1LPTy`z`hoSa`(}79UL3Hw)w@jpTFN|&)+Xy56@lSu8?TJpv@r3ed*_muexpR z@AHlRBtB*EZer+?cCd1sw0zzC#%_LFfdz?Q!lvI6-$0X`wFK>E|CvLmgYaR+Zz>}*g0^7TAj978PplO=Ka8!Dz~Lg7wCvy9b!q*cjA)a6e^a6H@@{WbkzLb6Mw<&;$ShW-So_ literal 0 HcmV?d00001 diff --git a/Dusts/HealingDust.cs b/Dusts/HealingDust.cs new file mode 100644 index 0000000..aea491b --- /dev/null +++ b/Dusts/HealingDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class HealingDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.1f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/HealingDust.png b/Dusts/HealingDust.png new file mode 100644 index 0000000000000000000000000000000000000000..c85d39f5102dd4cdd6c6104a5fe06df62a673c73 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-$0X`wFKw4>|kH+c9_y=wOlD~NY`Kg{Rjv*HQ$qS4FZoT*{f2xI9O@o&$ zCumQA7?VL0#{|C#OLnf%JACr`bjdo~-)9QW*KHRC3IJzVcx0-E7`;*sVvvx(Oxlkm4pPt?#bFMwnDdl11)6mboFyt=akR{ E0H4W4FaQ7m literal 0 HcmV?d00001 diff --git a/Dusts/HeartDust.cs b/Dusts/HeartDust.cs new file mode 100644 index 0000000..0b572ed --- /dev/null +++ b/Dusts/HeartDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class HeartDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/HeartDust.png b/Dusts/HeartDust.png new file mode 100644 index 0000000000000000000000000000000000000000..cda812802f042243e307428197e66ffdd1056177 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-+0X`wFK>D1P+W)Id-$jM}m(=-kYgCgZ{(P1z~CvdZe9DQ3k)8gVnZa{G#1VH@ZbVcnu!b$z@+x~)esx&k*G8|^s&e`uer4ncjgQu&X%Q~loCIBIvNGkvU literal 0 HcmV?d00001 diff --git a/Dusts/HolyDust.cs b/Dusts/HolyDust.cs new file mode 100644 index 0000000..ce5733e --- /dev/null +++ b/Dusts/HolyDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class HolyDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/HolyDust.png b/Dusts/HolyDust.png new file mode 100644 index 0000000000000000000000000000000000000000..1e529a48948930732df83bd831e9ab582976f26a GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;X0X`wFK)S7^>Hq)#&wl^kclDHCNX)NuilH0kHNALYQC9pyqwO+KMS!P^ zV~B-+@&e!lvI6-$0X`wFK)UDu$K0nk($*i%*e^Z-$k*|7aSXBWPhMb~@aE_LkM>h~MGYKZ w20AbpJhR(tC^hK{Lr>=Ge!fo=QW6*#RQ7SUAIP!h2kK++boFyt=akR{01^2w2LJ#7 literal 0 HcmV?d00001 diff --git a/Dusts/IllusoryMirrorRMBDust.cs b/Dusts/IllusoryMirrorRMBDust.cs new file mode 100644 index 0000000..51d0a55 --- /dev/null +++ b/Dusts/IllusoryMirrorRMBDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class IllusoryMirrorRMBDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/IllusoryMirrorRMBDust.png b/Dusts/IllusoryMirrorRMBDust.png new file mode 100644 index 0000000000000000000000000000000000000000..409d1bd3db3179e08aaccc85c77474e65eba1456 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>0X`wFK>ATl&GGvWzUTcq2jr-Gx;Tbd_$N!`JP7nXTdyH3+@R8bzy8Dg n1xgylB0Wq75=|?+8W|a0w##0gB(dl=Pz!^ntDnm{r-UW|SfVQ+ literal 0 HcmV?d00001 diff --git a/Dusts/LegendaryDust.cs b/Dusts/LegendaryDust.cs new file mode 100644 index 0000000..11cfcd9 --- /dev/null +++ b/Dusts/LegendaryDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class LegendaryDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/LegendaryDust.png b/Dusts/LegendaryDust.png new file mode 100644 index 0000000000000000000000000000000000000000..34bc7190e0bdb7707db4f84673657f90b4c1420b GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6=10X`wFK>9z!{|=_QBdU8^nd*4embL+fY&~5ZLoEE0C5j%{AO8P8KuyNL zG1K5h%BuEFZAKQ0cCjCxUBEDjrPWzGST@hKLe-s7OF<&y#w1x^MrLLPr!LWmtcnF5 QK!X@OUHx3vIVCg!0KKd*djJ3c literal 0 HcmV?d00001 diff --git a/Dusts/LegendarySparkle.cs b/Dusts/LegendarySparkle.cs new file mode 100644 index 0000000..aaffe6e --- /dev/null +++ b/Dusts/LegendarySparkle.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class LegendarySparkle : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/LegendarySparkle.png b/Dusts/LegendarySparkle.png new file mode 100644 index 0000000000000000000000000000000000000000..6130a11ff66152dcad86e113fba572652995940c GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>0X`wFK>9xr?4J^u7_<$@(eZR~46*P}mMD5)FW@k<-~h`~#RmsMG?F8j ra~>LSonZa{-T$EctP=h_Ha3RJSOS9^>bP0l+XkK9+WIZ literal 0 HcmV?d00001 diff --git a/Dusts/MeatDust.cs b/Dusts/MeatDust.cs new file mode 100644 index 0000000..d404d8e --- /dev/null +++ b/Dusts/MeatDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class MeatDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/MeatDust.png b/Dusts/MeatDust.png new file mode 100644 index 0000000000000000000000000000000000000000..cc2ea94fc015b2cc431e8a28b8b5740553115441 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-M0X`wFKss7U>C>k&YeB&yt)7Z@E^!BM394u;6gd+Hl=Ja)aSXBWPhMc$ z5f=1|KQ)PI!jt9xssGoqvIdG6I%XQ|F!^aTrImTXYq?nt7tgV7*LRpy$e#aKJmlhm qwH)i8a4@H+T8lV*4>@{(f#GnS>`B=j3Oj)2GI+ZBxvX!lvI6;>0X`wFKzfds=>2rLQ>s~;fgEE`7sn6_|73}rgudx7>NSM6UHx3vIVCg!0F1UQ AlmGw# literal 0 HcmV?d00001 diff --git a/Dusts/MuramasasWaraxeDust.cs b/Dusts/MuramasasWaraxeDust.cs new file mode 100644 index 0000000..c09551f --- /dev/null +++ b/Dusts/MuramasasWaraxeDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class MuramasasWaraxeDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/MuramasasWaraxeDust.png b/Dusts/MuramasasWaraxeDust.png new file mode 100644 index 0000000000000000000000000000000000000000..bd21daf80fe50e913ed5f5483887fb28aa794669 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>0X`wFKsvPIj7RF)C$(a~fgE#B7sn6_|73|Gg)NWH)N2Uy%~)U}QB(I@ z;FQ!ghG>f(rlLmoS5Z?gxOfIC9MIO`Prb-#V8Fo8C(qTlN6^*}Xas|&tDnm{r-UW| Db9*eo literal 0 HcmV?d00001 diff --git a/Dusts/NatureStaffDust.cs b/Dusts/NatureStaffDust.cs new file mode 100644 index 0000000..15c14c1 --- /dev/null +++ b/Dusts/NatureStaffDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class NatureStaffDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/NatureStaffDust.png b/Dusts/NatureStaffDust.png new file mode 100644 index 0000000000000000000000000000000000000000..75b43d6aa06a77b4295c55937fac438370c53edf GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>0X`wFK)UpXuu3Pxw*@7sK#qo|i(`m|f3if;f-h|!>NSL|174;aSf5bA n(DcxN%Y%VMnD=h;>_$cg#xAb1xW`T0Ks^keu6{1-oD!M!lvI6;>0X`wFK>F8c(W53YCj{SQzp`|zyAppNx0 ovj9(fpaYY_jEom@cX)Uh)ExOwFftj*0`)L>y85}Sb4q9e01enDe*gdg literal 0 HcmV?d00001 diff --git a/Dusts/NightsAxeDust.cs b/Dusts/NightsAxeDust.cs new file mode 100644 index 0000000..6710130 --- /dev/null +++ b/Dusts/NightsAxeDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class NightsAxeDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/NightsAxeDust.png b/Dusts/NightsAxeDust.png new file mode 100644 index 0000000000000000000000000000000000000000..b5bcc774f9df988159854a8fbc1652d7355b77e9 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>0X`wFK)Ob%(?>YO@bxESAjizp#WBRfKUtz^f!nIj_ER|7eFCI-^#0iJ zrt)St=*qY;?mXab!J=vs7$m|Wv0=7TWC;@w4@2!8j?YuQeLewAVDNPHb6Mw<&;$TW Cm?;!lvI6;>0X`wFK>9xrZ2E7ueu_4bqvh%17-Hd{EK&5pUcg~y!2y<~iV4P3{YAEHMB8 literal 0 HcmV?d00001 diff --git a/Dusts/OniDust.cs b/Dusts/OniDust.cs new file mode 100644 index 0000000..f27a015 --- /dev/null +++ b/Dusts/OniDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class OniDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/OniDust.png b/Dusts/OniDust.png new file mode 100644 index 0000000000000000000000000000000000000000..1475647f9a5a793103dc475c943ed80c221bd52e GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-$0X`wFK>Gi$DeWq%|NsAAsk8MIkZAV4FU=h5iFBsw=yy_Gcd0beeZd4x))G0gQu&X%Q~loCIGoe BE=2$U literal 0 HcmV?d00001 diff --git a/Dusts/RainbowCurseDust.cs b/Dusts/RainbowCurseDust.cs new file mode 100644 index 0000000..a4aa018 --- /dev/null +++ b/Dusts/RainbowCurseDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class RainbowCurseDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.1f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 0.8f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/RainbowCurseDust.png b/Dusts/RainbowCurseDust.png new file mode 100644 index 0000000000000000000000000000000000000000..00ac71ae2ef306ce54b71124f12259a14d91ed21 GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6=10X`wFKzh3t!`5VmW98Ck%0$|Gul)lGrFgnHhFJI~FEGBb?&t^kQ!UJD z8oX@(br$ld9N!lvI6-+0X`wFK>EKe!+srx|10eGPi6RjnjxWsQyC~~>gnPbV&R`GQS@NH?%{e3 zVZIp)OeAC~_)~fEKh(F{x>@uv6&?Jya>hz7)<5>X4vbqFnVA{PTDjkCTiXqC41=eu KpUXO@geCx~|1a!lvI6-+0X`wFK>FN&hB^BgBsa4#+&Ihd?XBE`KM_DtBTpB{5DWigiJ}L0>f8PY zsL2>OW*S(OGn|sR=TKzK?Pk%#wCP~)W)`QmdK II;Vst0I1!lvI6-+0X`wFK)U|!e}?V<8GQD8GVD)e_`k~PxC~I#(9^{+#KJ#WqG-XtcmMwf zsPS!>JE7?zW6igIj{HmP6-Eo%)P$$BF>|u9YjpcHG%_+|W^+}0&dyl~)Xd=N>gTe~ HDWM4fw^K0V literal 0 HcmV?d00001 diff --git a/Dusts/RainbowHealingDust.cs b/Dusts/RainbowHealingDust.cs new file mode 100644 index 0000000..477d10b --- /dev/null +++ b/Dusts/RainbowHealingDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class RainbowHealingDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.1f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/RainbowHealingDust.png b/Dusts/RainbowHealingDust.png new file mode 100644 index 0000000000000000000000000000000000000000..c0a3199117f3eaae9a99acfad3f800aa60491cff GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-$0X`wFK$_v(TZV6w|NsBbwp2kA$aVH~aSXBWPhMdD10a9Gk z95YK8F8$2?R4>4A@rF+m!vvMMhT!K3Ock|^pY0u8m01=X)rjh1YE+!QN!lvI6;X0X`wFK>C!M+iD%1YF+(b=M+CTNuTu8eEnSK*?PmPRifV~7`y_ixZvsH z7-Hd{oYK$~oR{~1p-)@;`FVydaXXo&F$=$#WWW$~q(g_3=>(TU1E*Ircrdj%HgL|?OF6(&tZR0m>Zg)&Owrc9bM+~A6+AVH3mW5}i~O(8o8-nBxx?FW zlKu8SO`jwrDqhcPdiubzSEur=h5VFOHiu*Lzg%(InDnCY`uWm-_R;wrkGLx=8dMhg zu%);@xX|SJ&+Z`Cq6ZFIA8eFwumJ6S^82#?0ST4|g^b2xY76gvlQMQ~6p39c4C9 literal 0 HcmV?d00001 diff --git a/Dusts/RainbowWrathDust2.cs b/Dusts/RainbowWrathDust2.cs new file mode 100644 index 0000000..d61f980 --- /dev/null +++ b/Dusts/RainbowWrathDust2.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class RainbowWrathDust2 : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/RainbowWrathDust2.png b/Dusts/RainbowWrathDust2.png new file mode 100644 index 0000000000000000000000000000000000000000..3d991402838cd94f324a875f66eae6aa910515a4 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;{0X`wFKzjf8$mA`l!ChHfKA&xR@gj7?yv-)Jn1B*3o-U3d7XHZ+tj)r2 z{>%Neuk?OZuOZGOvCt%<=wzInMt@`Cy7M_3WQ1q1vz(YDziy*bWClY@O+mO=m#8y; z&d-`}^_RQFHTE^MGkXY~N^uBd;nSV*Was)z3S4}zR8%A)9e7GQPpfZpjPxjEG!|3a sX{Era$Ih=hOkmzOx-1iFX8)78&qol`;+07slrmjD0& literal 0 HcmV?d00001 diff --git a/Dusts/RainbowWrathDust3.cs b/Dusts/RainbowWrathDust3.cs new file mode 100644 index 0000000..710fcd7 --- /dev/null +++ b/Dusts/RainbowWrathDust3.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class RainbowWrathDust3 : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/RainbowWrathDust3.png b/Dusts/RainbowWrathDust3.png new file mode 100644 index 0000000000000000000000000000000000000000..1d8e2037407f4eedbf8b941ec03c212e1a82866f GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;v0X`wFK>FJMKl}gxp7;5E>CwmLCsu1O*lLm1Jnd zj!ZuvAjZ<*+rU_I^7Zt64n7Ce7@2*3s5mxoK8wm(a64+6pdM$D>8891DpM?XH2mzm z`hTlw^nTo^gMFGrJsge7~;DZ3CwQXUa);`?>~0jsuUG(sX>1zAmgg nBf=Uak`>bP0l+XkK8VQBI literal 0 HcmV?d00001 diff --git a/Dusts/RyuuDust.cs b/Dusts/RyuuDust.cs new file mode 100644 index 0000000..0d45625 --- /dev/null +++ b/Dusts/RyuuDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class RyuuDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/RyuuDust.png b/Dusts/RyuuDust.png new file mode 100644 index 0000000000000000000000000000000000000000..260d67ae5c76f756bbc3212d250401e187dfa358 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-+0X`wFKw9oUgT!?P*}n`@v)CmrGt}#UTMrbq@N{tuvG7lpC~|mbf4E*l zm~X}c6Nx{&7*l!j6@H5w%eXP_bjT93_R3haL_^?5`cL6gi-Z#r7#Ng7IlrkX8`J^K OVDNPHb6Mw<&;$UVy)J72 literal 0 HcmV?d00001 diff --git a/Dusts/RyuuDust2.cs b/Dusts/RyuuDust2.cs new file mode 100644 index 0000000..011d85a --- /dev/null +++ b/Dusts/RyuuDust2.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class RyuuDust2 : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/RyuuDust2.png b/Dusts/RyuuDust2.png new file mode 100644 index 0000000000000000000000000000000000000000..f88337fd095fc11423ef02cdc028f7b17590f00d GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-+0X`wFK$>CEe}?w!3=96Ur_Ew$y}a-Br29ZYb59q?5DWigiK>K)|NjSw z$rw0ha#U0?pOUzja4^27K!WuN)3+^=8VfsTEoykMe2?lBSM>u27#NhcaD}e?a;ODl Nu&1k^%Q~loCIBVHHfjI> literal 0 HcmV?d00001 diff --git a/Dusts/RyuuDust3.cs b/Dusts/RyuuDust3.cs new file mode 100644 index 0000000..80d4226 --- /dev/null +++ b/Dusts/RyuuDust3.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class RyuuDust3 : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/RyuuDust3.png b/Dusts/RyuuDust3.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee0f0e818c92287c4248c4679d4543a814bf42f GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-+0X`wFK>9y}#dQX~zYJ!x*flRR=;r!+gUqt>ba4!^@K2T~dSKstv|dA) zZ^i->i8~2D*iw13KTJQ!qb%dbxHCa)x0+YRq9qyv8~&VRO1;QwV8Fnj{fg7-?S&Oq QKvNhzUHx3vIVCg!04~)q`v3p{ literal 0 HcmV?d00001 diff --git a/Dusts/RyuuDust4.cs b/Dusts/RyuuDust4.cs new file mode 100644 index 0000000..320dedf --- /dev/null +++ b/Dusts/RyuuDust4.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class RyuuDust4 : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/RyuuDust4.png b/Dusts/RyuuDust4.png new file mode 100644 index 0000000000000000000000000000000000000000..9cf961171c7c45b2d7003bbd244245b24c27e72a GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-+0X`wFK>9z!qw5TN|1#X4#om3HVb|$ci%_7bm8Xkih=qT$M9~BL!;Ak1 zsL2>OW*Y1`SRj2$>e>VS!?isH60A>}BH!HASlBsfk;8#c%k8GPsvkJOz!3J5>;Hih ScP;}>VeoYIb6Mw<&;$S{@j77u literal 0 HcmV?d00001 diff --git a/Dusts/ShimadaSword/ShimadaDust.cs b/Dusts/ShimadaSword/ShimadaDust.cs new file mode 100644 index 0000000..c617271 --- /dev/null +++ b/Dusts/ShimadaSword/ShimadaDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts.ShimadaSword; + +public class ShimadaDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = false; + dust.scale *= 1f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.15f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/ShimadaSword/ShimadaDust.png b/Dusts/ShimadaSword/ShimadaDust.png new file mode 100644 index 0000000000000000000000000000000000000000..260d67ae5c76f756bbc3212d250401e187dfa358 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-+0X`wFKw9oUgT!?P*}n`@v)CmrGt}#UTMrbq@N{tuvG7lpC~|mbf4E*l zm~X}c6Nx{&7*l!j6@H5w%eXP_bjT93_R3haL_^?5`cL6gi-Z#r7#Ng7IlrkX8`J^K OVDNPHb6Mw<&;$UVy)J72 literal 0 HcmV?d00001 diff --git a/Dusts/Shuriken/StarDust.cs b/Dusts/Shuriken/StarDust.cs new file mode 100644 index 0000000..dd07f37 --- /dev/null +++ b/Dusts/Shuriken/StarDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts.Shuriken; + +public class StarDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = false; + dust.scale *= 1f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.15f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/Shuriken/StarDust.png b/Dusts/Shuriken/StarDust.png new file mode 100644 index 0000000000000000000000000000000000000000..83798a04321c523bb4adce4f35a1b401de162a2f GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-$0X`wFK>EW~r3Xjlcg+_!Kk@x5kZyxI~&qo8DgjHP|8)iwdPjOX0aDag!+k?CCnr+j5pb-q7u6{1- HoD!M<{pm8O literal 0 HcmV?d00001 diff --git a/Dusts/SorcerousDust.cs b/Dusts/SorcerousDust.cs new file mode 100644 index 0000000..0e7fcf8 --- /dev/null +++ b/Dusts/SorcerousDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class SorcerousDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/SorcerousDust.png b/Dusts/SorcerousDust.png new file mode 100644 index 0000000000000000000000000000000000000000..dd2c1c9743ac2a24b8978378eea5a288f9b4d9b0 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>0X`wFK-wUo$=<%C^4BdDAjizp#WBRfKUt#afWpF;_ER|7eFCI-e!Q=5 z+SF!xK#Xs3Lrg+`e3Q^D4NWc!lvI6;>0X`wFKzioWfUJE6-ETy+fE;sA7sn6_|73}xglCr<{s*YZ7&vAc?5Oz6 zIK^}g!lvI6;>0X`wFKw5jjR*SUm>t^z+fE;sA7sn6_|73|Ghw6jZ{s*YZ7&vAcJg_a} zJtcLGA=;vcsi@I4%G@hs(Gm@TA2~}|Q!jEF7%(tof8^4(DXiKEG=jm?)z4*}Q$iB} DA)PE@ literal 0 HcmV?d00001 diff --git a/Dusts/SorcerousDustRed.cs b/Dusts/SorcerousDustRed.cs new file mode 100644 index 0000000..1810de0 --- /dev/null +++ b/Dusts/SorcerousDustRed.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class SorcerousDustRed : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/SorcerousDustRed.png b/Dusts/SorcerousDustRed.png new file mode 100644 index 0000000000000000000000000000000000000000..ad1fbdfe5a0692384e21e8e0cdf5f761a027e0c5 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>0X`wFKzg-~PKb_KbMPWlAjizp#WBRfKUtzEVQb&HdJSQ|84FA#)}%aW z+SF!xK#Xs3LyW+p?*4O literal 0 HcmV?d00001 diff --git a/Dusts/SorcerousDustYellow.cs b/Dusts/SorcerousDustYellow.cs new file mode 100644 index 0000000..dd471f6 --- /dev/null +++ b/Dusts/SorcerousDustYellow.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class SorcerousDustYellow : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/SorcerousDustYellow.png b/Dusts/SorcerousDustYellow.png new file mode 100644 index 0000000000000000000000000000000000000000..dd6ce596808accea8ff839847a443d7b231b3955 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>0X`wFK>F7?#m`OBzLPh90&>hfT^vI!{F5b$9$dFP`aeKT#=tSt;K$CV z;!{l5Fm5Z5V13eb-uIHm!p=#H92)Mn^PXBHoRGl4@VSsXg{{5X184+;r>mdKI;Vst E07g48jQ{`u literal 0 HcmV?d00001 diff --git a/Dusts/SorcerousHellDust.cs b/Dusts/SorcerousHellDust.cs new file mode 100644 index 0000000..3a301b0 --- /dev/null +++ b/Dusts/SorcerousHellDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class SorcerousHellDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/SorcerousHellDust.png b/Dusts/SorcerousHellDust.png new file mode 100644 index 0000000000000000000000000000000000000000..0b37cf694c07871bb9a5463caf1b059a5dd8730f GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>0X`wFK)SBsNO<7d8QYE@2Xf3kT^vI!{F5b$7OZ=CqFzIoZ^i->i936K z2%VC;#t?1M!&Ky0@gQo-1sBgig$3*M`BE=(8W=DzJekgQdp2J!H_!+MPgg&ebxsLQ E0Q%Q2p#T5? literal 0 HcmV?d00001 diff --git a/Dusts/SorcerousHellDust2.cs b/Dusts/SorcerousHellDust2.cs new file mode 100644 index 0000000..8eddf43 --- /dev/null +++ b/Dusts/SorcerousHellDust2.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class SorcerousHellDust2 : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/SorcerousHellDust2.png b/Dusts/SorcerousHellDust2.png new file mode 100644 index 0000000000000000000000000000000000000000..3420f192e8ab7f045448430633139e62de0f0a2b GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>0X`wFK>Ak}*L^$XcS!lvI6;>0X`wFKzg2MW3gLhtxHookYncQ;uvD#pDa<7FfaXay@oK~j0GkVF@JwE zpOU)95N*-JROGlZTGcCK(Gm@T3u(_9HoahxkYHH!n~NoXm+VoX2@IaDelF{r5}E)W C-z~`i literal 0 HcmV?d00001 diff --git a/Dusts/SorcerousHellDustWhite.cs b/Dusts/SorcerousHellDustWhite.cs new file mode 100644 index 0000000..27e5fff --- /dev/null +++ b/Dusts/SorcerousHellDustWhite.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class SorcerousHellDustWhite : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/SorcerousHellDustWhite.png b/Dusts/SorcerousHellDustWhite.png new file mode 100644 index 0000000000000000000000000000000000000000..6783949f52f9a3a86d960416af7f022bdd1b7d17 GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>0X`wFK>Gjx|NE|Qa uxVC}q#-T)!3EbaeZCmY4Udr9!;bBNSFSt2qTCpThBZH@_pUXO@geCyN3@+CI literal 0 HcmV?d00001 diff --git a/Dusts/SpectralIllusionDust.cs b/Dusts/SpectralIllusionDust.cs new file mode 100644 index 0000000..ef7554f --- /dev/null +++ b/Dusts/SpectralIllusionDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class SpectralIllusionDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.1f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 1f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/SpectralIllusionDust.png b/Dusts/SpectralIllusionDust.png new file mode 100644 index 0000000000000000000000000000000000000000..2760174c6d5715d3913ed39bde9a5e6d08222d4e GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-$0X`wFK-x*NPA7hi%lyM3Guu3Xd~Ht`#}Etu!lvI6-$0X`wFKsxlonU!lvI6-$0X`wFK>FeF#Pibwwuf18CPqdB`8u91jv*HQ$qQ@~YAS3#+E3{fHE?_x v=)hnwZ@!#?)TAp6J+}|*uvK~(889%EyK!)@j8SOS9^>bP0l+XkK)u1SB literal 0 HcmV?d00001 diff --git a/Dusts/SpectralIllusionDust4.cs b/Dusts/SpectralIllusionDust4.cs new file mode 100644 index 0000000..59b8e33 --- /dev/null +++ b/Dusts/SpectralIllusionDust4.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class SpectralIllusionDust4 : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.1f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 1f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/SpectralIllusionDust4.png b/Dusts/SpectralIllusionDust4.png new file mode 100644 index 0000000000000000000000000000000000000000..45ea17785ebd9a73f68b32c923ce12f782a43a75 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-$0X`wFK)NurD%>i;R?&9f^h!lvI6mdKI;Vst0G@tPu>b%7 literal 0 HcmV?d00001 diff --git a/Dusts/TerraDust.cs b/Dusts/TerraDust.cs new file mode 100644 index 0000000..08751d8 --- /dev/null +++ b/Dusts/TerraDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class TerraDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/TerraDust.png b/Dusts/TerraDust.png new file mode 100644 index 0000000000000000000000000000000000000000..34c3b72b491fd19348ae86a81b11be4c4aafec93 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-+0X`wFKzh-ChW6_W3;r^s&0=r8%rI@^rTIWn3r`ov5DWigiK2vy^=|CMV8&|6U P&0z3!^>bP0l+XkKCnYqz literal 0 HcmV?d00001 diff --git a/Dusts/TerraDust2.cs b/Dusts/TerraDust2.cs new file mode 100644 index 0000000..ab01482 --- /dev/null +++ b/Dusts/TerraDust2.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class TerraDust2 : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/TerraDust2.png b/Dusts/TerraDust2.png new file mode 100644 index 0000000000000000000000000000000000000000..cd240275f4e62eac8ed00e71e1e56ef8a48f9b60 GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-+0X`wFK>GhHhU>=|{=Q(C)x&=I5JN~7%WR;ik*AAeh=qT$MA3u)+HL;> z)MN}CGYxhWvY(Q;_uxJEnF0ycCry#IZ+mdK II;Vst0Of@-PXGV_ literal 0 HcmV?d00001 diff --git a/Dusts/TrueDust.cs b/Dusts/TrueDust.cs new file mode 100644 index 0000000..1b618df --- /dev/null +++ b/Dusts/TrueDust.cs @@ -0,0 +1,29 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Dusts; + +public class TrueDust : ModDust +{ + public override void OnSpawn(Dust dust) + { + dust.velocity *= 0.4f; + dust.noGravity = true; + dust.noLight = true; + dust.scale *= 1.5f; + } + + public override bool Update(Dust dust) + { + dust.position += dust.velocity; + dust.rotation += dust.velocity.X * 0.15f; + dust.scale *= 0.99f; + float light = 0.35f * dust.scale; + Lighting.AddLight(dust.position, light, light, light); + if (dust.scale < 0.5f) + { + dust.active = false; + } + return false; + } +} diff --git a/Dusts/TrueDust.png b/Dusts/TrueDust.png new file mode 100644 index 0000000000000000000000000000000000000000..9b783b96ec6b65b1698443e6b99ab6a5ebca316e GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^96&6?!3HE_JpO?w#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-+0X`wFK>Ff;hV|DO&i!R*oW;K8GK2ZW!}>r`3r`ov5DWigiJ}LO>f8PY zsL2>OW*Y1$XFery@4=n;GX)Z?PnwQJzR_6NIcbrD!|hM%Q(V;#8~{2(lj~A$nAI|% O84RATelF{r5}E*uVK$Wj literal 0 HcmV?d00001 diff --git a/ExtraAction.cs b/ExtraAction.cs new file mode 100644 index 0000000..cd01de5 --- /dev/null +++ b/ExtraAction.cs @@ -0,0 +1,3 @@ +namespace FabusMod; + +public delegate void ExtraAction(); diff --git a/FabuPlayer.cs b/FabuPlayer.cs new file mode 100644 index 0000000..1a686ca --- /dev/null +++ b/FabuPlayer.cs @@ -0,0 +1,525 @@ +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.Audio; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod; + +public class FabuPlayer : ModPlayer +{ + public class WeaponAbilityPlayerEffects : ModPlayer + { + public bool activated; + + public bool activated2; + + public bool activated3; + + public bool activated4; + + public bool activated5; + + public bool activated6; + + public bool activated7; + + public bool activated8; + + public bool activated9; + + public bool activated10; + + public bool activated11; + + public bool activated12; + + public bool activated13; + + public bool activated14; + + public bool activated15; + + public bool activated16; + + public bool activated17; + + public bool activated18; + + public bool activated19; + + public bool activated20; + + public bool activated21; + + public bool activated22; + + public bool activated23; + + public bool activated24; + + public bool activated25; + + public bool activated26; + + public bool activated27; + + public bool activated28; + + public bool activated29; + + public bool activated30; + + public bool activated31; + + public bool activated32; + + public bool activated33; + + public bool activated34; + + public bool activated35; + + public bool activated36; + + public bool soundPlayed; + + public override void PreUpdate() + { + if (Player.HasBuff(ModContent.BuffType())) + { + activated = true; + } + else if (activated) + { + Player.AddBuff(ModContent.BuffType(), 3000, true); + activated = false; + } + + if (Player.HasBuff(ModContent.BuffType())) + { + activated2 = true; + } + else if (activated2) + { + SoundEngine.PlaySound(SoundID.Unlock); + CombatText.NewText(Player.Hitbox, new Color(0, 255, 0), "Shattered Moon's Blessing ready!", false, false); + activated2 = false; + } + + if (Player.HasBuff(ModContent.BuffType()) && !soundPlayed) + { + if (Main.rand.NextBool(5)) + { + SoundEngine.PlaySound(SoundID.Item13); + } + soundPlayed = true; + } + + if (!Player.HasBuff(ModContent.BuffType())) + { + soundPlayed = false; + } + + if (Player.HasBuff(ModContent.BuffType())) + { + activated3 = true; + } + else if (activated3) + { + Player.AddBuff(ModContent.BuffType(), 600, true); + activated3 = false; + } + + if (Player.HasBuff(ModContent.BuffType())) + { + activated4 = true; + } + else if (activated4) + { + Player.AddBuff(ModContent.BuffType(), 3000, true); + activated4 = false; + } + if (Player.HasBuff(ModContent.BuffType())) + { + activated5 = true; + } + else if (activated5) + { + SoundEngine.PlaySound(SoundID.Unlock); + CombatText.NewText(Player.Hitbox, new Color(0, 255, 0), "Spectral Moonlight ready!", false, false); + activated5 = false; + } + if (Player.HasBuff(ModContent.BuffType()) && !soundPlayed) + { + if (Main.rand.NextBool(5)) + { + SoundEngine.PlaySound(SoundID.Item13); + } + soundPlayed = true; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + soundPlayed = false; + } + if (Player.HasBuff(ModContent.BuffType())) + { + activated6 = true; + } + else if (activated6) + { + Player.AddBuff(ModContent.BuffType(), 600, true); + activated6 = false; + } + if (Player.HasBuff(ModContent.BuffType())) + { + activated7 = true; + } + else if (activated7) + { + Player.AddBuff(ModContent.BuffType(), 3000, true); + activated7 = false; + } + if (Player.HasBuff(ModContent.BuffType())) + { + activated8 = true; + } + else if (activated8) + { + SoundEngine.PlaySound(SoundID.Unlock); + CombatText.NewText(Player.Hitbox, new Color(0, 255, 0), "Blossom ready!", false, false); + activated8 = false; + } + if (Player.HasBuff(ModContent.BuffType())) + { + activated9 = true; + } + else if (activated9) + { + Player.AddBuff(ModContent.BuffType(), 3000, true); + activated9 = false; + } + if (Player.HasBuff(ModContent.BuffType())) + { + activated10 = true; + } + else if (activated10) + { + SoundEngine.PlaySound(SoundID.Unlock); + CombatText.NewText(Player.Hitbox, new Color(0, 255, 0), "Spectral Blossom ready!", false, false); + activated10 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated11 = true; + } + else if (activated11) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(190, 60, 60), "Absorbed a soul!", false, false); + activated11 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated12 = true; + } + else if (activated12) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(190, 60, 60), "Absorbed two souls!", false, false); + activated12 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated13 = true; + } + else if (activated13) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(190, 60, 60), "Absorbed three souls!", false, false); + activated13 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated14 = true; + } + else if (activated14) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(190, 60, 60), "Absorbed four souls!", false, false); + activated14 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated15 = true; + } + else if (activated15) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(92, 229, 237), "Absorbed five souls!", false, false); + activated15 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated16 = true; + } + else if (activated16) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(210, 210, 90), "Absorbed a soul!", false, false); + activated16 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated17 = true; + } + else if (activated17) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(210, 210, 90), "Absorbed two souls!", false, false); + activated17 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated18 = true; + } + else if (activated18) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(210, 210, 90), "Absorbed three souls!", false, false); + activated18 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated19 = true; + } + else if (activated19) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(210, 210, 90), "Absorbed four souls!", false, false); + activated19 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated20 = true; + } + else if (activated20) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(92, 229, 237), "Absorbed five souls!", false, false); + activated20 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated21 = true; + } + else if (activated21) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(255, 82, 220), "Sapped a dream!", false, false); + activated21 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated22 = true; + } + else if (activated22) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(255, 82, 220), "Sapped two dreams!", false, false); + activated22 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated23 = true; + } + else if (activated23) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(255, 82, 220), "Sapped three dreams!", false, false); + activated23 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated24 = true; + } + else if (activated24) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(255, 82, 220), "Sapped four dreams!", false, false); + activated24 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated25 = true; + } + else if (activated25) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(255, 82, 220), "Sapped five dreams!", false, false); + activated25 = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated26 = true; + } + else if (activated26) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(255, 61, 0), "Enraged!", false, false); + activated26 = false; + } + if (Player.HasBuff(ModContent.BuffType())) + { + activated27 = true; + } + else if (activated27) + { + Player.AddBuff(ModContent.BuffType(), 480, true); + activated27 = false; + } + if (Player.HasBuff(ModContent.BuffType())) + { + activated28 = true; + } + else if (activated28) + { + Player.AddBuff(ModContent.BuffType(), 2400, true); + activated28 = false; + } + if (Player.HasBuff(ModContent.BuffType())) + { + activated29 = true; + } + else if (activated29) + { + SoundEngine.PlaySound(SoundID.Unlock); + CombatText.NewText(Player.Hitbox, new Color(0, 255, 0), "Ready to Hypercharge!", false, false); + activated29 = false; + } + if (Player.HasBuff(ModContent.BuffType()) && !soundPlayed) + { + if (Main.rand.NextBool(5)) + { + SoundEngine.PlaySound(SoundID.Item13); + } + soundPlayed = true; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + soundPlayed = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated30 = true; + } + else if (activated30) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(255, 61, 0), "Hypercharged!", false, false); + activated30 = false; + } + if (Player.HasBuff(ModContent.BuffType())) + { + activated31 = true; + } + else if (activated31) + { + CombatText.NewText(Player.Hitbox, new Color(138, 138, 138), "No longer Hypercharged!", false, false); + activated31 = false; + } + if (Player.HasBuff(ModContent.BuffType())) + { + activated32 = true; + } + else if (activated32) + { + Player.AddBuff(ModContent.BuffType(), 480, true); + activated32 = false; + } + if (Player.HasBuff(ModContent.BuffType())) + { + activated33 = true; + } + else if (activated33) + { + Player.AddBuff(ModContent.BuffType(), 2400, true); + activated33 = false; + } + if (Player.HasBuff(ModContent.BuffType())) + { + activated34 = true; + } + else if (activated34) + { + SoundEngine.PlaySound(SoundID.Unlock); + CombatText.NewText(Player.Hitbox, new Color(0, 255, 0), "Ready to Ultracharge!", false, false); + activated34 = false; + } + if (Player.HasBuff(ModContent.BuffType()) && !soundPlayed) + { + if (Main.rand.NextBool(5)) + { + SoundEngine.PlaySound(SoundID.Item13); + } + soundPlayed = true; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + soundPlayed = false; + } + if (!Player.HasBuff(ModContent.BuffType())) + { + activated35 = true; + } + else if (activated35) + { + SoundEngine.PlaySound(SoundID.Item4); + CombatText.NewText(Player.Hitbox, new Color(255, 61, 0), "Ultracharged!", false, false); + activated35 = false; + } + if (Player.HasBuff(ModContent.BuffType())) + { + activated36 = true; + } + else if (activated36) + { + CombatText.NewText(Player.Hitbox, new Color(138, 138, 138), "No longer Ultracharged!", false, false); + activated36 = false; + } + } + } + + private const int saveVersion = 0; + + public bool foxPet; + + public bool pinkFoxPet; + + public bool kregPet; + + public bool fabuLightPet; + + public bool fabu; + + public bool goddessMinion; + + public override void ResetEffects() + { + foxPet = false; + pinkFoxPet = false; + kregPet = false; + fabuLightPet = false; + fabu = false; + goddessMinion = false; + } + + public override IEnumerable AddStartingItems(bool mediumCoreDeath) + { + return new[] + { + new Item(ModContent.ItemType(), 1) + }; + } +} diff --git a/FabuWorld.cs b/FabuWorld.cs new file mode 100644 index 0000000..cd756ac --- /dev/null +++ b/FabuWorld.cs @@ -0,0 +1,8 @@ +using Terraria.ModLoader; + +namespace FabusMod; + +public class FabuWorld : ModSystem +{ + public static bool spawnOre; +} diff --git a/FabusMod.cs b/FabusMod.cs new file mode 100644 index 0000000..5fb1fe0 --- /dev/null +++ b/FabusMod.cs @@ -0,0 +1,157 @@ +using Terraria; +using Terraria.Localization; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod; + +public class FabusMod : Mod +{ + public override void AddRecipeGroups() + { + RecipeGroup group = new(() => Language.GetTextValue("LegacyMisc.37") + " Fox Ears", new int[3] { + Find("FoxEars").Type, + Find("PinkFoxEars").Type, + Find("BlueFoxEars").Type + }); + RecipeGroup.RegisterGroup("FabusMod:FoxEars", group); + + RecipeGroup group2 = new(() => Language.GetTextValue("LegacyMisc.37") + " Punk's Pulse", new int[2] { + Find("PunksPulse").Type, + Find("PunksPulseUltraviolet").Type + }); + RecipeGroup.RegisterGroup("FabusMod:PunksPulse", group2); + + RecipeGroup group3 = new(() => Language.GetTextValue("LegacyMisc.37") + " Pulse Sprayer", new int[2] { + Find("PulseSprayer").Type, + Find("PulseSprayerCadet").Type + }); + RecipeGroup.RegisterGroup("FabusMod:PulseSprayer", group3); + + RecipeGroup group4 = new(() => Language.GetTextValue("LegacyMisc.37") + " Rainbow Demon", new int[6] { + Find("TheRainbowDemon").Type, + Find("TheRainbowDemonClaymore").Type, + Find("TheRainbowDemonRanged").Type, + Find("TheRainbowDemonThrowing").Type, + Find("TheRainbowDemonMagic").Type, + Find("TheRainbowDemonShredder").Type + }); + RecipeGroup.RegisterGroup("FabusMod:TheRainbowDemon", group4); + + RecipeGroup group5 = new(() => Language.GetTextValue("LegacyMisc.37") + " The Stinger", new int[2] { + Find("TheStinger").Type, + Find("TheStingerBlackCat").Type + }); + RecipeGroup.RegisterGroup("FabusMod:TheStinger", group5); + + RecipeGroup group6 = new(() => Language.GetTextValue("LegacyMisc.37") + " Shivering Shotgun", new int[2] { + Find("HellshiverGun").Type, + Find("HellshiverGunHellfire").Type + }); + RecipeGroup.RegisterGroup("FabusMod:HellshiverGun", group6); + + RecipeGroup group7 = new(() => Language.GetTextValue("LegacyMisc.37") + " Hellraiser", new int[2] { + Find("HellkinShotgun").Type, + Find("HellkinShotgunDracula").Type + }); + RecipeGroup.RegisterGroup("FabusMod:HellkinShotgun", group7); + + RecipeGroup group8 = new(() => Language.GetTextValue("LegacyMisc.37") + " Carbon Shuriken", new int[2] { + Find("CarbonShuriken").Type, + Find("CarbonShurikenNihon").Type + }); + RecipeGroup.RegisterGroup("FabusMod:CarbonShuriken", group8); + + RecipeGroup group9 = new(() => Language.GetTextValue("LegacyMisc.37") + " Solitude", new int[2] { + Find("Peacegunner").Type, + Find("PeacegunnerAmerican").Type + }); + RecipeGroup.RegisterGroup("FabusMod:Peacegunner", group9); + + RecipeGroup group10 = new(() => Language.GetTextValue("LegacyMisc.37") + " Silencer", new int[2] { + Find("Peaceforcer").Type, + Find("PeaceforcerVanHelsing").Type + }); + RecipeGroup.RegisterGroup("FabusMod:Peaceforcer", group10); + + RecipeGroup group11 = new(() => Language.GetTextValue("LegacyMisc.37") + " Carbon Sword", new int[2] { + Find("CarbonSword").Type, + Find("CarbonSwordNihon").Type + }); + RecipeGroup.RegisterGroup("FabusMod:CarbonSword", group11); + + RecipeGroup group12 = new(() => Language.GetTextValue("LegacyMisc.37") + " Light's Bane", new int[2] { 46, 795 }); + RecipeGroup.RegisterGroup("FabusMod:LightsBane", group12); + + RecipeGroup group13 = new(() => Language.GetTextValue("LegacyMisc.37") + " Carbon Dagger", new int[2] { + Find("CarbonDagger").Type, + Find("CarbonDaggerNihon").Type + }); + RecipeGroup.RegisterGroup("FabusMod:CarbonDagger", group13); + + RecipeGroup group14 = new(() => Language.GetTextValue("LegacyMisc.37") + " Sorcerer's Hellstaff", new int[2] { + Find("SorcerousHellstaff").Type, + Find("SorcerousHellstaffWhite").Type + }); + RecipeGroup.RegisterGroup("FabusMod:SorcerousHellstaff", group14); + + RecipeGroup group15 = new(() => Language.GetTextValue("LegacyMisc.37") + " Fox Pistol", new int[2] { + Find("FoxPistol").Type, + Find("FoxPistolBlue").Type + }); + RecipeGroup.RegisterGroup("FabusMod:FoxPistol", group15); + + RecipeGroup group16 = new(() => Language.GetTextValue("LegacyMisc.37") + " Demonite Bar", new int[2] { 57, 1257 }); + RecipeGroup.RegisterGroup("FabusMod:DemoniteBar", group16); + + /*RecipeGroup group17 = new(() => Language.GetTextValue("LegacyMisc.37") + " Elemental Water Staff", new int[4] { + Find("ElementalWaterStaff").Type, + Find("ElementalWaterStaffRed").Type, + Find("ElementalWaterStaffGreen").Type, + Find("ElementalWaterStaffYellow").Type + }); + RecipeGroup.RegisterGroup("FabusMod:ElementalWaterStaff", group17);*/ + + RecipeGroup group18 = new(() => Language.GetTextValue("LegacyMisc.37") + " Gold Bar", new int[2] { 19, 706 }); + RecipeGroup.RegisterGroup("FabusMod:GoldBar", group18); + + RecipeGroup group19 = new(() => Language.GetTextValue("LegacyMisc.37") + " Adamantite Bar", new int[2] { 391, 1198 }); + RecipeGroup.RegisterGroup("FabusMod:AdamantiteBar", group19); + + RecipeGroup group20 = new(() => Language.GetTextValue("LegacyMisc.37") + " Protective Fusion", new int[2] { + Find("ProtectionFuser").Type, + Find("ProtectionFuserCarbonFiber").Type + }); + RecipeGroup.RegisterGroup("FabusMod:ProtectionFuser", group20); + + RecipeGroup group21 = new(() => Language.GetTextValue("LegacyMisc.37") + " Orichalcum Bar", new int[2] { 1191, 382 }); + RecipeGroup.RegisterGroup("FabusMod:OrichalcumBar", group21); + + RecipeGroup group22 = new(() => Language.GetTextValue("LegacyMisc.37") + " Verano", new int[2] { + Find("Verano").Type, + Find("VeranoRime").Type + }); + RecipeGroup.RegisterGroup("FabusMod:Verano", group22); + } + + public override void AddRecipes() + { + Recipe val = Recipe.Create(ModContent.ItemType()); + val.AddRecipeGroup("FabusMod:FoxEars", 1); + val.AddIngredient(ItemID.OrangeDye, 1); + val.AddTile(TileID.DyeVat); + val.Register(); + + Recipe val2 = Recipe.Create(ModContent.ItemType()); + val2.AddRecipeGroup("FabusMod:FoxEars", 1); + val2.AddIngredient(ItemID.PinkDye, 1); + val2.AddTile(TileID.DyeVat); + val2.Register(); + + Recipe val3 = Recipe.Create(ModContent.ItemType()); + val3.AddRecipeGroup("FabusMod:FoxEars", 1); + val3.AddIngredient(ItemID.SkyBlueDye, 1); + val3.AddTile(TileID.DyeVat); + val3.Register(); + } +} diff --git a/FabusMod.csproj b/FabusMod.csproj new file mode 100644 index 0000000..e2f4ac6 --- /dev/null +++ b/FabusMod.csproj @@ -0,0 +1,13 @@ + + + + + FabusMod + net6.0 + AnyCPU + latest + + + + + \ No newline at end of file diff --git a/FabusMod.sln b/FabusMod.sln new file mode 100644 index 0000000..480460c --- /dev/null +++ b/FabusMod.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.2.32526.322 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FabusMod", "FabusMod.csproj", "{FCB780C4-4903-4455-BA97-0C98E9E864D5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FCB780C4-4903-4455-BA97-0C98E9E864D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FCB780C4-4903-4455-BA97-0C98E9E864D5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FCB780C4-4903-4455-BA97-0C98E9E864D5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FCB780C4-4903-4455-BA97-0C98E9E864D5}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E55533E2-FFB4-45CD-AD66-D00C15F8C278} + EndGlobalSection +EndGlobal diff --git a/Helper.cs b/Helper.cs new file mode 100644 index 0000000..ca3e8a3 --- /dev/null +++ b/Helper.cs @@ -0,0 +1,122 @@ +using System; +using Microsoft.Xna.Framework; +using Terraria; + +namespace FabusMod; + +public static class Helper +{ + public static Vector2 RandomPosition(Vector2 pos1, Vector2 pos2) + { + return new Vector2(Main.rand.Next((int)pos1.X, (int)pos2.X) + 1, Main.rand.Next((int)pos1.Y, (int)pos2.Y) + 1); + } + + public static int GetNearestAlivePlayer(NPC npc) + { + float NearestPlayerDist = 4.8151624E+09f; + int NearestPlayer = -1; + Player[] player2 = Main.player; + foreach (Player player in player2) + { + if (player.Distance(npc.Center) < NearestPlayerDist && player.active) + { + NearestPlayerDist = player.Distance(npc.Center); + NearestPlayer = player.whoAmI; + } + } + return NearestPlayer; + } + + public static Vector2 VelocityFPTP(Vector2 pos1, Vector2 pos2, float speed) + { + Vector2 move = pos2 - pos1; + return move * (speed / (float)Math.Sqrt(move.X * move.X + move.Y * move.Y)); + } + + public static int GetNearestNPC(Vector2 Point, bool Friendly = false, bool NoBoss = false) + { + float NearestNPCDist = -1f; + int NearestNPC = -1; + NPC[] npc2 = Main.npc; + foreach (NPC npc in npc2) + { + if (npc.active && (!NoBoss || !npc.boss) && (Friendly || (!npc.friendly && npc.lifeMax > 5)) && (NearestNPCDist == -1f || npc.Distance(Point) < NearestNPCDist)) + { + NearestNPCDist = npc.Distance(Point); + NearestNPC = npc.whoAmI; + } + } + return NearestNPC; + } + + public static int GetNearestPlayer(Vector2 Point, bool Alive = false) + { + float NearestPlayerDist = -1f; + int NearestPlayer = -1; + Player[] player2 = Main.player; + foreach (Player player in player2) + { + if ((!Alive || (player.active && !player.dead)) && (NearestPlayerDist == -1f || player.Distance(Point) < NearestPlayerDist)) + { + NearestPlayerDist = player.Distance(Point); + NearestPlayer = player.whoAmI; + } + } + return NearestPlayer; + } + + public static int GetNearestPlayer(this NPC npc) + { + float NearestPlayerDist = 4.8151624E+09f; + int NearestPlayer = -1; + Player[] player2 = Main.player; + foreach (Player player in player2) + { + if (player.Distance(npc.Center) < NearestPlayerDist) + { + NearestPlayerDist = player.Distance(npc.Center); + NearestPlayer = player.whoAmI; + } + } + return NearestPlayer; + } + + public static Vector2 VelocityToPoint(Vector2 A, Vector2 B, float Speed) + { + Vector2 Move = B - A; + return Move * (Speed / (float)Math.Sqrt(Move.X * Move.X + Move.Y * Move.Y)); + } + + public static Vector2 RandomPointInArea(Vector2 A, Vector2 B) + { + return new Vector2(Main.rand.Next((int)A.X, (int)B.X) + 1, Main.rand.Next((int)A.Y, (int)B.Y) + 1); + } + + public static Vector2 RandomPointInArea(Rectangle Area) + { + return new Vector2(Main.rand.Next(Area.X, Area.X + Area.Width), Main.rand.Next(Area.Y, Area.Y + Area.Height)); + } + + public static float rotateBetween2Points(Vector2 A, Vector2 B) + { + return (float)Math.Atan2(A.Y - B.Y, A.X - B.X); + } + + public static Vector2 CenterPoint(Vector2 A, Vector2 B) + { + return new Vector2((A.X + B.X) / 2f, (A.Y + B.Y) / 2f); + } + + public static Vector2 PolarPos(Vector2 Point, float Distance, float Angle, int XOffset = 0, int YOffset = 0) + { + Vector2 result = default; + result.X = Distance * (float)Math.Sin(MathHelper.ToDegrees(Angle)) + Point.X + XOffset; + result.Y = Distance * (float)Math.Cos(MathHelper.ToDegrees(Angle)) + Point.Y + YOffset; + return result; + } + + public static Vector2 SmoothFromTo(Vector2 From, Vector2 To, float Smooth = 60f) + { + return From + (To - From) / Smooth; + } +} diff --git a/Items/Accessories/HallowedBand.cs b/Items/Accessories/HallowedBand.cs new file mode 100644 index 0000000..9eeb775 --- /dev/null +++ b/Items/Accessories/HallowedBand.cs @@ -0,0 +1,40 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Accessories; + +[AutoloadEquip(EquipType.Front)] +public class HallowedBand : ModItem +{ + public override void SetStaticDefaults() + { + Tooltip.SetDefault("8% increased all damage \nGrants immunity to the [c/FF4E00:On Fire!] debuff"); + } + + public override void SetDefaults() + { + Item.width = 30; + Item.height = 30; + Item.value = Item.sellPrice(0, 2, 0, 0); + Item.rare = ItemRarityID.Pink; + Item.accessory = true; + Item.defense = 6; + } + + public override void UpdateAccessory(Player player, bool hideVisual) + { + player.GetDamage(DamageClass.Generic) += 0.08f; + player.buffImmune[24] = true; + } + + public override void AddRecipes() + { + Recipe recipe = CreateRecipe(); + recipe.AddIngredient(ModContent.ItemType()); + recipe.AddIngredient(ItemID.HallowedBar, 3); + recipe.AddIngredient(ItemID.Ruby, 2); + recipe.AddTile(TileID.Anvils); + recipe.Register(); + } +} diff --git a/Items/Accessories/HallowedBand.png b/Items/Accessories/HallowedBand.png new file mode 100644 index 0000000000000000000000000000000000000000..4a3cb0acd0f148a7049f4b0861f07d0cf6947274 GIT binary patch literal 552 zcmV+@0@wYCP)Px#1ZP1_K>z@;j|==^1poj5El^BUMF0Q*J~IHcw9LV#JnYC5mW5=9h@krDh$Ipc zZf=EJJw0v+GP(c&>i_`%o?DmG8V!Y0 zMng~y(WFjq3Tg@oDyUGB7Kd;PbO_p_mYM>`XpW$v(w4{}3W9_n9fHCoiub?!gD%f3 z$b0yKe(&CJ`n|h*Ek>P;4;k;`vMR?HM%{B+vWEIz=8duf<- z`^)00Iz4S;@a{nvR+Z~3W@#*L;zr@o53}^9T&}r0Ww=LD@llLNCL*w0uD_UTyS)*E ze_JZU^6ZuuW1e&86o+QwxY6Hr2WQe*n1o(^;;J^6fgH@ztJ?uMnYPcr{$kzopr0LR%H)Bpeg literal 0 HcmV?d00001 diff --git a/Items/Accessories/HarmonyScarf.cs b/Items/Accessories/HarmonyScarf.cs new file mode 100644 index 0000000..59e9476 --- /dev/null +++ b/Items/Accessories/HarmonyScarf.cs @@ -0,0 +1,53 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Accessories; + +[AutoloadEquip(EquipType.Front)] +public class HarmonyScarf : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Harmony Scarf"); + Tooltip.SetDefault("Increases Max HP and Mana by 60\n20% increased all damage \nGrants immunity to the [c/FF4E00:On Fire!], [c/A84DFD:Distorted], and [c/9362B3:Obstructed] debuffs \n'This would be a nice gift for a partner!'"); + } + + public override void SetDefaults() + { + Item.width = 42; + Item.height = 38; + Item.value = Item.sellPrice(5, 0, 0, 0); + Item.expert = true; + Item.accessory = true; + Item.defense = 16; + } + + public override void UpdateAccessory(Player player, bool hideVisual) + { + player.statManaMax2 += 60; + player.statLifeMax2 += 60; + player.GetDamage(DamageClass.Generic) += 0.2f; + player.buffImmune[24] = true; + player.buffImmune[164] = true; + player.buffImmune[163] = true; + } + + public override void AddRecipes() + { + Recipe recipe = CreateRecipe(); + recipe.AddIngredient(ModContent.ItemType()); + recipe.AddIngredient(ModContent.ItemType()); + recipe.AddIngredient(ItemID.LeafWand, 1); + recipe.AddIngredient(ItemID.Emerald, 8); + recipe.AddIngredient(ItemID.SoulofLight, 15); + recipe.AddIngredient(ItemID.SoulofNight, 15); + recipe.AddIngredient(ItemID.SoulofSight, 15); + recipe.AddIngredient(ItemID.SoulofFright, 15); + recipe.AddIngredient(ItemID.SoulofMight, 15); + recipe.AddIngredient(ItemID.LunarBar, 8); + recipe.AddIngredient(ModContent.ItemType(), 8); + recipe.AddTile(ModContent.TileType()); + recipe.Register(); + } +} diff --git a/Items/Accessories/HarmonyScarf.png b/Items/Accessories/HarmonyScarf.png new file mode 100644 index 0000000000000000000000000000000000000000..c778107f5146584225ee508dd2507141453e6720 GIT binary patch literal 569 zcmV-90>=G`P)Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*5f~#*Q(QB4kSID;Pj72Umw0Bc#ZKE@ zvrO?q0005JNklm$5^O)A>oPPpcQmC)bJepUE?-b(mdT^}aQ!mv@k<(IB)I?{j0w=d&uZ zb1IKajfO>y)*fDwdhcI+4`JIBx~M0qcmBVo5i}38AKA! zZW>gy=Ja@dGBikN*zbv$W0WR?YDl|S;dRv9&H3TCT~G9QePZTyy&8R+=||q~ImjTB zM2!UB$|*w@QQnl7xbA@AHHWXDMZ$$fWtyc=0LI7TMVsFz>e%bK(2SCH<=F0!`t zg7h;=;_h~0o>8J^IjLw)*MufXYE+@wu*7XpF~(?0yja!;sTc2JLP>wt00000NkvXX Hu0mjf$IJqB literal 0 HcmV?d00001 diff --git a/Items/Accessories/HarmonyScarfUpgraded.cs b/Items/Accessories/HarmonyScarfUpgraded.cs new file mode 100644 index 0000000..b075d9e --- /dev/null +++ b/Items/Accessories/HarmonyScarfUpgraded.cs @@ -0,0 +1,54 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Accessories; + +[AutoloadEquip(EquipType.Front)] +public class HarmonyScarfUpgraded : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Ultimate Scarf of Hope"); + Tooltip.SetDefault("Increases Max HP and Mana by 120\n30% increased all damage \nGrants immunity to the [c/FF4E00:On Fire!], [c/A84DFD:Distorted], and [c/9362B3:Obstructed] debuffs \n'What else is left...?'"); + } + + public override void SetDefaults() + { + Item.width = 42; + Item.height = 36; + Item.value = Item.sellPrice(20, 0, 0, 0); + Item.expert = true; + Item.accessory = true; + Item.defense = 26; + } + + public override void UpdateAccessory(Player player, bool hideVisual) + { + player.statManaMax2 += 120; + player.statLifeMax2 += 120; + player.GetDamage(DamageClass.Generic) += 0.3f; + player.buffImmune[24] = true; + player.buffImmune[164] = true; + player.buffImmune[163] = true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.Sapphire, 15); + val.AddIngredient(ItemID.Ruby, 15); + val.AddIngredient(ItemID.Amethyst, 15); + val.AddIngredient(ItemID.SoulofLight, 30); + val.AddIngredient(ItemID.SoulofNight, 30); + val.AddIngredient(ItemID.SoulofSight, 30); + val.AddIngredient(ItemID.SoulofFright, 30); + val.AddIngredient(ItemID.SoulofMight, 30); + val.AddIngredient(ItemID.LunarBar, 20); + val.AddIngredient(ModContent.ItemType(), 20); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Accessories/HarmonyScarfUpgraded.png b/Items/Accessories/HarmonyScarfUpgraded.png new file mode 100644 index 0000000000000000000000000000000000000000..dd5e54d2b986344ae4393d819aef3eb4b29a2d78 GIT binary patch literal 621 zcmV-z0+RiSP)Px#1ZP1_K>z@;j|==^1poj5Do{*RMF0Q*Pf2x4Xp}1@HUC&g%rYaovL-ZrkL%(} zP01!)sqdieKwST_Hp#3J4GRDO00H4iL_t(oN9~rqOT$1MhNHNM6mb%9s7Q6`Bvf=P zbP#nYx>!WeK~T}9NEe|H=-9!GQ z@ERWoZ;s@W-jmYMm7Ri3{S?;$Q&e*8ozp{tBu0s^y&^8WPf+V zIQuv17?a7nqZD!=w1{+#(YpUo-6U=5bQB6WYQ^IsKpLM z?B0QX7FgcjQbz4Y4p^I4*XKyFt-*Jgo+IvDTp8@Xh}1?+BNu10h-i{Kk!Xn5xf+PP zdA-J28L_{VMq#oPnLy(rmq#XgXOa2*F|wleOt9u?LcE`=0^xNLei6d|2vQk^NwJ1F z;*{qJ8MwSbYFO2^j_EnoW<3#2x5TW+NIA0gwG1-4*^RU?V~1$0+Wo{)KlzLv?hWhl zX_7cFivEH4HX8le2V_O9IW_w&@)<4OPwAlqLq+6Z`Wbn<@TFEwu(mx*TS$_g>oLyU zZghFYkDN)H4JOB5kR!P`GI#ch>{CyXTz5Mo^T=!>iqvqQQ3A8vSz;$$NK(xxsrPIr zQW_;N%h~*{mUpUlHH>^z$B@l3Nu)MPVD<+z#3Yf#sG@uTnF_KyK<&4(00000NkvXX Hu0mjfQ*0Y1 literal 0 HcmV?d00001 diff --git a/Items/Accessories/HarmonyScarfUpgraded_Front.png b/Items/Accessories/HarmonyScarfUpgraded_Front.png new file mode 100644 index 0000000000000000000000000000000000000000..67ee1a2fd6055e4ac5b8ee969960194f3f2dd83b GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM6!3HE{=IMI@DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(ehe%mF?ju0VQumF+DcCGP3s7-Hd{EWx@sL8PZC(1450G9iJ1fo&ZF;~k|r QMnEMDp00i_>zopr0LR%H)Bpeg literal 0 HcmV?d00001 diff --git a/Items/Accessories/HarmonyScarf_Front.png b/Items/Accessories/HarmonyScarf_Front.png new file mode 100644 index 0000000000000000000000000000000000000000..67ee1a2fd6055e4ac5b8ee969960194f3f2dd83b GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM6!3HE{=IMI@DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(ehe%mF?ju0VQumF+DcCGP3s7-Hd{EWx@sL8PZC(1450G9iJ1fo&ZF;~k|r QMnEMDp00i_>zopr0LR%H)Bpeg literal 0 HcmV?d00001 diff --git a/Items/Accessories/HellfireBand.cs b/Items/Accessories/HellfireBand.cs new file mode 100644 index 0000000..b299995 --- /dev/null +++ b/Items/Accessories/HellfireBand.cs @@ -0,0 +1,40 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Accessories; + +[AutoloadEquip(EquipType.Front)] +public class HellfireBand : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Hellfire Band"); + Tooltip.SetDefault("4% increased all damage \nGrants immunity to the [c/FF4E00:On Fire!] debuff"); + } + + public override void SetDefaults() + { + Item.width = 30; + Item.height = 36; + Item.value = Item.sellPrice(0, 1, 0, 0); + Item.rare = ItemRarityID.Orange; + Item.accessory = true; + Item.defense = 4; + } + + public override void UpdateAccessory(Player player, bool hideVisual) + { + player.GetDamage(DamageClass.Generic) += 0.04f; + player.buffImmune[24] = true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.HellstoneBar, 3); + val.AddTile(TileID.Anvils); + val.Register(); + } +} diff --git a/Items/Accessories/HellfireBand.png b/Items/Accessories/HellfireBand.png new file mode 100644 index 0000000000000000000000000000000000000000..98801ba38900d18f3931781ff91fa5066a203d42 GIT binary patch literal 498 zcmVPx#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*91szibT@cPGe#pL(-i>zc>?|61OM=- zz7+W`0004XNklc|Rym!jUw;yq8>{3Nk-Am73<4JombV z=hB2G{~YTorQvRC(X{eB#qY?I%SR+}?Lc{qX}Z;Hpf9OM-FKWKp7-Y2^CaEYfD~&)8);>iOh+E^}|jLw~GI^-r&CR9g+laUOlndDaKIk-Md6MR?o4@&e+qXhXrE<$bHl|eAIRz&+itk(8}sW$s%Ome%kMaic^_2Q on8>@_oAIxqjivP5;JltA^-pY07*qoM6N<$g0}SKh5!Hn literal 0 HcmV?d00001 diff --git a/Items/Accessories/HellfireBand_Front.png b/Items/Accessories/HellfireBand_Front.png new file mode 100644 index 0000000000000000000000000000000000000000..67ee1a2fd6055e4ac5b8ee969960194f3f2dd83b GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM6!3HE{=IMI@DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(ehe%mF?ju0VQumF+DcCGP3s7-Hd{EWx@sL8PZC(1450G9iJ1fo&ZF;~k|r QMnEMDp00i_>zopr0LR%H)Bpeg literal 0 HcmV?d00001 diff --git a/Items/Accessories/IronBand.cs b/Items/Accessories/IronBand.cs new file mode 100644 index 0000000..3c90f68 --- /dev/null +++ b/Items/Accessories/IronBand.cs @@ -0,0 +1,33 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Accessories; + +[AutoloadEquip(EquipType.Front)] +public class IronBand : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Iron Band"); + } + + public override void SetDefaults() + { + Item.width = 30; + Item.height = 30; + Item.value = Item.sellPrice(0, 0, 6, 0); + Item.rare = ItemRarityID.Blue; + Item.accessory = true; + Item.defense = 2; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddRecipeGroup("IronBar", 3); + val.AddTile(TileID.Anvils); + val.Register(); + } +} diff --git a/Items/Accessories/IronBand.png b/Items/Accessories/IronBand.png new file mode 100644 index 0000000000000000000000000000000000000000..460941b4dabd8df3626fae6ce22389265443d65a GIT binary patch literal 403 zcmV;E0c`$>P)Px#1ZP1_K>z@;j|==^1poj54^T{0MF0Q*DI7hgzsYuls#8#TW3sK>0003ZNklvLCRL~S#0;X~KeBgbI?$f(x&V%V|XO4hrVu6;44VVte4*=7+ zd_HhKCgf96^C!$aLOvfbA7fYy@+k;|Tt=#IK>(%?W)3Ky!}2;Z7(8(d%a^b?fdN9k zhnWKdgwo95%g5*?5_$-r19Tt40J=|MVBmcW1GwS}Jp|BGDz1_a=2MutgC~x00rU_c z1kmFW-KQ`xU_PcB0Qnp_^agJnQwq@2$ly=a=3{0kO?4p3C*J^~Ss2(D x-amW6@bfPx!;8ls8E&091(qL8)pP<33;^wToaM0*A9er$002ovPDHLkV1lK>mTLe2 literal 0 HcmV?d00001 diff --git a/Items/Accessories/IronBand_Front.png b/Items/Accessories/IronBand_Front.png new file mode 100644 index 0000000000000000000000000000000000000000..67ee1a2fd6055e4ac5b8ee969960194f3f2dd83b GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM6!3HE{=IMI@DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(ehe%mF?ju0VQumF+DcCGP3s7-Hd{EWx@sL8PZC(1450G9iJ1fo&ZF;~k|r QMnEMDp00i_>zopr0LR%H)Bpeg literal 0 HcmV?d00001 diff --git a/Items/Accessories/LunaticBand.cs b/Items/Accessories/LunaticBand.cs new file mode 100644 index 0000000..54ed558 --- /dev/null +++ b/Items/Accessories/LunaticBand.cs @@ -0,0 +1,60 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Accessories; + +[AutoloadEquip(EquipType.Front)] +public class LunaticBand : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Lunatic Charm"); + Tooltip.SetDefault("14% increased all damage \nGrants immunity to the [c/FF4E00:On Fire!], [c/A84DFD:Distorted], and [c/9362B3:Obstructed] debuffs"); + } + + public override void SetDefaults() + { + Item.width = 40; + Item.height = 42; + Item.value = Item.sellPrice(0, 20, 0, 0); + Item.rare = 12; + Item.accessory = true; + Item.defense = 12; + } + + public override void UpdateAccessory(Player player, bool hideVisual) + { + player.GetDamage(DamageClass.Generic) += 0.14f; + player.buffImmune[24] = true; + player.buffImmune[164] = true; + player.buffImmune[163] = true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.LunarBar, 8); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType()); + val2.AddIngredient(ItemID.LunarBar, 8); + val2.AddTile(TileID.LunarCraftingStation); + val2.Register(); + + Recipe val3 = CreateRecipe(); + val3.AddIngredient(ModContent.ItemType()); + val3.AddIngredient(ItemID.LunarBar, 8); + val3.AddTile(TileID.LunarCraftingStation); + val3.Register(); + + Recipe val4 = CreateRecipe(); + val4.AddIngredient(ModContent.ItemType()); + val4.AddIngredient(ItemID.LunarBar, 8); + val4.AddTile(TileID.LunarCraftingStation); + val4.Register(); + } +} diff --git a/Items/Accessories/LunaticBand.png b/Items/Accessories/LunaticBand.png new file mode 100644 index 0000000000000000000000000000000000000000..cb93818f065385a85159d507928a831bc27e2328 GIT binary patch literal 876 zcmV-y1C#uTP)Px#1ZP1_K>z@;j|==^1poj5IZ#YgMF0Q*04PLeuf=WU*vR((|Nr?!1pw-RMgT57 z|H3u@|BgO@nQXtXwC2Xs6#&|BudqpxJ_B*oNt=@ACK3`%{~6$@SO`Y%*>DPJZ6D2SE{2^dNw^{i8+17 zLY;x7^j{~8HC^sNF5R*cNq)cij_kbKRffDfkw%jL zHEN&1=n}_c>|WbWoAni5iXU-YAkI25PKpu1sAd?RsB2CmD zKBQ-gaHLAl6f{VrN&5`G7}$(wlewdp`jI5@$7e4M*LZe?SXZl_c`Xv7%?j*Zd zAF4!l_P#?Bb}{e<7wi1D?-9Lv9jCZ|F4BCvJ~4Pwgd;Izce8q(->rrFqwJ@>tC*`d zbF&}AkDkU9hTAE3%yzXltlo%W!a{>?_wxPo$L%iqtKYY_GlSs=P5TjegT?!xUd=o` z*uOJ5gmE8?MZ54!8b3c)6T?0@HIl$1Ir-`tlD)NNAI$$cn&53l8YCu@wadN#{*pgu zK0$8O?M6QR_7>Tf9!GYczJj#>J}7T6vWrBTEJEA|**$4acF$geT+I^M#ZQ~ms=Yd> zSF3?rO)bce=e++#i0Kw%pFu*C*UIteRJC}G=5oz?=B0A4GPGjH^yli20oA$oMc&R4 zX^z-ykg$`(sRrb_&>G}yjg3E1raq*R#R)vEHCWo)Bjv`;at2Xi7qJ zM6UXx6GvdbL5azziBgS8=AS`{G%6|8m?Yo^9p^9J*;seE6ho>20000zopr0LR%H)Bpeg literal 0 HcmV?d00001 diff --git a/Items/Accessories/NebulaBand.cs b/Items/Accessories/NebulaBand.cs new file mode 100644 index 0000000..f2a3e66 --- /dev/null +++ b/Items/Accessories/NebulaBand.cs @@ -0,0 +1,42 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Accessories; + +[AutoloadEquip(EquipType.Front)] +public class NebulaBand : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Nebula Band"); + Tooltip.SetDefault("12% increased magic damage \nGrants immunity to the [c/FF4E00:On Fire!], [c/A84DFD:Distorted], and [c/9362B3:Obstructed] debuffs"); + } + + public override void SetDefaults() + { + Item.width = 30; + Item.height = 36; + Item.value = Item.sellPrice(0, 4, 0, 0); + Item.rare = ItemRarityID.Red; + Item.accessory = true; + Item.defense = 8; + } + + public override void UpdateAccessory(Player player, bool hideVisual) + { + player.GetDamage(DamageClass.Magic) += 0.12f; + player.buffImmune[24] = true; + player.buffImmune[164] = true; + player.buffImmune[163] = true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.FragmentNebula, 6); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + } +} diff --git a/Items/Accessories/NebulaBand.png b/Items/Accessories/NebulaBand.png new file mode 100644 index 0000000000000000000000000000000000000000..ee9e289b53f101b399bc903984cfd80ca20b1741 GIT binary patch literal 639 zcmV-_0)YLAP)Px#1ZP1_K>z@;j|==^1poj5Gf+%aMF0Q*J_q%r-$zpdPX0R?>&8<_qpHQ`2vPVW_o6A*=)$w`-SJe9D*``9pxywp|zWG8)hFx zG3<`H|LBF%++U>x&1Rr;jA43w7^Cawy=h8d#zV5f%ySh=V9w1`s?7a2hUxms6kUUp z(`(uCMyz+4a{FwNQf2O+F-$|FpY+DUxLZ@0>h4eU*Ua31W7M`)Qx5t~gbwIBQP`pE z9Ak_O`;?zV_?)AMIY7Cwbx!HOvCO)fz{E-xD9z+BB~B_(J+Z7eily64%JM^z zvT)Z$$=8hk#sKDk&p;K;e<}3aIW=xZdN4~PMy*j(m}l1VhAr-hK1FK!)eruzF<-@4wH&_B|GqI$oz)!QjQ<;k Z@eQQl+ZFcl?xX+!002ovPDHLkV1g@jF}(l) literal 0 HcmV?d00001 diff --git a/Items/Accessories/NebulaBand_Front.png b/Items/Accessories/NebulaBand_Front.png new file mode 100644 index 0000000000000000000000000000000000000000..67ee1a2fd6055e4ac5b8ee969960194f3f2dd83b GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM6!3HE{=IMI@DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(ehe%mF?ju0VQumF+DcCGP3s7-Hd{EWx@sL8PZC(1450G9iJ1fo&ZF;~k|r QMnEMDp00i_>zopr0LR%H)Bpeg literal 0 HcmV?d00001 diff --git a/Items/Accessories/SolarBand.cs b/Items/Accessories/SolarBand.cs new file mode 100644 index 0000000..1f112ff --- /dev/null +++ b/Items/Accessories/SolarBand.cs @@ -0,0 +1,43 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Accessories; + +[AutoloadEquip(EquipType.Front)] +public class SolarBand : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Solar Band"); + Tooltip.SetDefault("12% increased melee and throwing damage \nGrants immunity to the [c/FF4E00:On Fire!], [c/A84DFD:Distorted], and [c/9362B3:Obstructed] debuffs"); + } + + public override void SetDefaults() + { + Item.width = 30; + Item.height = 36; + Item.value = Item.sellPrice(0, 4, 0, 0); + Item.rare = ItemRarityID.Red; + Item.accessory = true; + Item.defense = 8; + } + + public override void UpdateAccessory(Player player, bool hideVisual) + { + player.GetDamage(DamageClass.Melee) += 0.12f; + player.GetDamage(DamageClass.Throwing) += 0.12f; + player.buffImmune[24] = true; + player.buffImmune[164] = true; + player.buffImmune[163] = true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.FragmentSolar, 6); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + } +} diff --git a/Items/Accessories/SolarBand.png b/Items/Accessories/SolarBand.png new file mode 100644 index 0000000000000000000000000000000000000000..c609a7b2dc638d4f621f195d3056d8499383fb34 GIT binary patch literal 515 zcmV+e0{s1nP)Px#1ZP1_K>z@;j|==^1poj5Ay7?|61OM=-)ti*l6#%4Ve5eip zQZqkQQ&RkfA)5dI0f0$FK~z{r-IXy*12Gteb0-ci>Qe9rI4KsC;#Rtdt|Ew_ONS0c z1StrjI2MW^h#=zN&_#cQxVSr6?BL`sLhUNem407d@ID)QEokCB%X{fHAy0Do5~zf% zjH}2z_T}MAB_69sX!6go&QcoQAMhNbGIt55ZYiVFZOYX%O$i3AfIr4Cy|}uhwm#mY z1oNf-=K6Do60FU3C~fBMjbU0Wo=_Xq>s9lVjM4<>W@C)fX70`yrjywM{jjl=r-bRS z=M&=%GIwu`y&ct5f^pBMsi`V0PJfIsGn`XdiSS-x`#)B2ae0Pvf0yfldt;M7_5>y` zH*7NZ#9t>W6+p!buBp4)dR?dNynRr%pC2jZH{;$Iz#PaG0K?u=7}uXYwxN&0*a~3J zZ7jUU$CRePU*krGXN)}#YdY2k@1?2a|Lk#6BOB-sFpj^*qk_{A9Nux;RJdl2@8$Fw z+bUf8jd6Q{^cl;F2T=LaYYb%Nb7uT&^o*tTcN`fj)diBwo!cQmvts}N002ovPDHLk FV1mSw<_Z7+ literal 0 HcmV?d00001 diff --git a/Items/Accessories/SolarBand_Front.png b/Items/Accessories/SolarBand_Front.png new file mode 100644 index 0000000000000000000000000000000000000000..67ee1a2fd6055e4ac5b8ee969960194f3f2dd83b GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM6!3HE{=IMI@DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(ehe%mF?ju0VQumF+DcCGP3s7-Hd{EWx@sL8PZC(1450G9iJ1fo&ZF;~k|r QMnEMDp00i_>zopr0LR%H)Bpeg literal 0 HcmV?d00001 diff --git a/Items/Accessories/StardustBand.cs b/Items/Accessories/StardustBand.cs new file mode 100644 index 0000000..785a5f9 --- /dev/null +++ b/Items/Accessories/StardustBand.cs @@ -0,0 +1,42 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Accessories; + +[AutoloadEquip(EquipType.Front)] +public class StardustBand : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Stardust Band"); + Tooltip.SetDefault("12% increased minion damage \nGrants immunity to the [c/FF4E00:On Fire!], [c/A84DFD:Distorted], and [c/9362B3:Obstructed] debuffs"); + } + + public override void SetDefaults() + { + Item.width = 30; + Item.height = 36; + Item.value = Item.sellPrice(0, 4, 0, 0); + Item.rare = ItemRarityID.Red; + Item.accessory = true; + Item.defense = 8; + } + + public override void UpdateAccessory(Player player, bool hideVisual) + { + player.GetDamage(DamageClass.Summon) += 0.12f; + player.buffImmune[24] = true; + player.buffImmune[164] = true; + player.buffImmune[163] = true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.FragmentStardust, 6); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + } +} diff --git a/Items/Accessories/StardustBand.png b/Items/Accessories/StardustBand.png new file mode 100644 index 0000000000000000000000000000000000000000..dd6d21b022c114e7f875339a76db74e248476b02 GIT binary patch literal 569 zcmV-90>=G`P)Px#1ZP1_K>z@;j|==^1poj5Ay79O`5Sj zbu}cA7f+1X<|dT_`O+SlbA71X8e+XOuG3g2!hI>j^EkoT`APEf(K)#V#E^-+eNX1^ ztdOHqLFiaPNA>KD(=GCk=NIzU+bFrr84HLZkVEnWSegG)Sl6Byo78%Zo&d+(sFT&` znt~Lvn0WhA?HDokCZg})K9l-SeVPX|rEkgYA&%`>5M>tLhj<-}W1J*py^K9yzg<)H zt~=cE75P6VHi?N%9WFa@m@G13a>)GQaL2N1{Xik9?&kw#Cl1RYZ)puFzJQ1gvM}*u zvfeQle>G&kg;^~LAjDnPt&~hau})#czo(E`QV*#hV#oOepRBVo6+}RE00000NkvXX Hu0mjfL`ndX literal 0 HcmV?d00001 diff --git a/Items/Accessories/StardustBand_Front.png b/Items/Accessories/StardustBand_Front.png new file mode 100644 index 0000000000000000000000000000000000000000..67ee1a2fd6055e4ac5b8ee969960194f3f2dd83b GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM6!3HE{=IMI@DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(ehe%mF?ju0VQumF+DcCGP3s7-Hd{EWx@sL8PZC(1450G9iJ1fo&ZF;~k|r QMnEMDp00i_>zopr0LR%H)Bpeg literal 0 HcmV?d00001 diff --git a/Items/Accessories/ValkyrieWings.cs b/Items/Accessories/ValkyrieWings.cs new file mode 100644 index 0000000..e0d9389 --- /dev/null +++ b/Items/Accessories/ValkyrieWings.cs @@ -0,0 +1,52 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Accessories; + +[AutoloadEquip(EquipType.Wings)] +public class ValkyrieWings : ModItem +{ + public override void SetStaticDefaults() + { + Tooltip.SetDefault("Heroes always fly!"); + } + + public override void SetDefaults() + { + Item.width = 30; + Item.height = 38; + Item.value = Item.sellPrice(0, 8, 0, 0); + Item.rare = ItemRarityID.Pink; + Item.accessory = true; + } + + public override void UpdateAccessory(Player player, bool hideVisual) + { + player.wingTimeMax = 180; + } + + public override void VerticalWingSpeeds(Player player, ref float ascentWhenFalling, ref float ascentWhenRising, ref float maxCanAscendMultiplier, ref float maxAscentMultiplier, ref float constantAscend) + { + ascentWhenFalling = 0.75f; + ascentWhenRising = 0.2f; + maxCanAscendMultiplier = 1f; + maxAscentMultiplier = 2f; + constantAscend = 0.11f; + } + + public override void HorizontalWingSpeeds(Player player, ref float speed, ref float acceleration) + { + speed = 6f; + acceleration *= 1f; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.HallowedBar, 10); + val.AddIngredient(ItemID.SoulofFlight, 20); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + } +} diff --git a/Items/Accessories/ValkyrieWings.png b/Items/Accessories/ValkyrieWings.png new file mode 100644 index 0000000000000000000000000000000000000000..94fa90626c3f406a3f3ad33874a78c4d85d3855d GIT binary patch literal 572 zcmV-C0>k}@P)Px#1ZP1_K>z@;j|==^1poj5Ay7pxO zlc8i>XhlnPlDPl?0l7&;K~z{r)s#O=!%!5(6LHWEE+XPANU4*8I6FAn40ciLR}epe zMHg3ba`*30heia!!9fwhQbDj3!4Dwf;vjC(dy*r`Gp~(Q%*ziBH!lg~ot*owZT&ID z`LY*W0{3_?_8UDx{dc-{tU9b!cTq2zx2Rid+o-DZ>^Y{>xy2={NArWIWTr5M>XepI zjd9%dhffanp{Ld>L?mP897lFCX0|&=e)pcbXQ<*j472C`>}NdE>r1*>?P!77>o7lK zHQUx>bTX-|ZmgghH@SZOVR0&&_AVhJ4(U>m$;IgvM{170`m#OD_Hcay>s;Xq)hXSf zlKfcIUAw6zn4fWO+=kvCJV=G-Iw|I5tY%9VD$#6tuGLJ#9Uq6e8Qd0qN-UoTT5?I@E4gvnNU4Bj#kRgV}c?>3b*DU)Ar#DS%kL+VWN#>P`NJMzUQT(CZzzmZ*DHoV4q+YbuXrT*t&|u)D25#) zNxIHpLVpMh)+PM(%lGya^?M_HJ7opTs2BNGVOo`=Mz`Qct#q%@0L($>6H|O>pBZkrOo12l(KZR_T9wJ4_KW#1)CvHrR%BBZZ0F?db?s4J#Dy!ONsmb9rEj)J+X_wiCId&G;UBOj|JD8F7jyOd84EoO{YD-HUm zTAKk-0vCqXN_MRxC@(JXdHbKY!;V_7JA_$u$a$vkvK`T z2ma0Le@1_mV|yK+8IL6^7(Qd2CI@&oz;FX8p#ITZz0Tb&x9ZdS3;PQ3zjbR}FEY zrqK0EK>i%R8O}_ep$F3%EMl?VpsswfaIXpN;5<9iFAZ_7FBij6P*6|40WNq@qs+$r zRQ<+fk96hS$Bmvn)Yd)hy^y*F?Pf(n3TvOQHdjXDSvaM}={P+=FZZ!u$v>OW3&MQ* z!vlPsS2j2spGtwx+tI~Yfs=7~JhJaPR#N@ip#u6`?`Y#b$VGE@DRVgfVXjWngquh| zv-25@A;wNaKqQaNWV}u=^x>RegR2u#pyAzTnk9#_5NDDDJ99$=@TNk760Rc58lE{n zS|3r;Vlts8YdL35ep9TJd&`ZiwbL|Go z!h>{?Lx)w|WR$TmifyHfx6bi(*z2g`VI)g7lMp9@uM@B@232`40l#0i6U?r*gA`oY00+E&6oxC9X_9 z-7Y#JORj~>Fx~{em7OteQhyL?X^XIsKBSD*9rpzswBb$osU?OFPw{YRDOAIWwEKnn z6Hi5ncJoVWu{de>P)JcG+tHLFWHn{mZiar~m0s>gMzv^St}yL<`#j2}9B5s^;=;wf zpS?kw+Q(8StlfOPEh;%IX2F=iKjis5p}H~=n($JYuM_oF_*jW!z%0<;`NWi#z{*%s zj`s9aM~*De8jOJ@DdYX4og5r$BciiYptQ(X_?_5ofUTOt14mHtS9vasrQYUzK?LZq3%Fo9zKfQ^ zShH;8NNXB|6mU*iu>-0YM_zca@F&vhnwmueVimrQF`Q3mP9eUpA0ko_6e53M>?HDI z0^<097wa1%)dgk(L+Vm|5k;`k#todwkF-Y(hPox6$K)Fn5%01c;d$)FTJ$)w07^uyT5lajN#E+a#kz z=>Q97~;G4Ew>#Hn()); + val.AddIngredient(ItemID.FragmentVortex, 6); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + } +} diff --git a/Items/Accessories/VortexBand.png b/Items/Accessories/VortexBand.png new file mode 100644 index 0000000000000000000000000000000000000000..53fe68b368f7d03720fd9b837e75fc41e13a1b74 GIT binary patch literal 523 zcmV+m0`&cfP)Px#1ZP1_K>z@;j|==^1poj5Ay7u_=+leI6 z;tNum&onQQo{^f(fVl!=XSz2uiXoZ1I(Jt&iDH|(V>Sck1sXfkYP+37b)bUurr+G3 zem7*87jMjNe{3qD`NTZJobK3EW6YWPeJW2P&O8K-99+Tv!CqusJ3uNhCL!~!4y0M_ zLhz&_{>0jNMoitEAe;A3$ivq+qvG z38&Ebw{XS88P8o(qK-wkp?zJVjzzb8i{;7{X8d=2nbSUn5*q8om=8zopr0LR%H)Bpeg literal 0 HcmV?d00001 diff --git a/Items/Bars/RainbowChunk.cs b/Items/Bars/RainbowChunk.cs new file mode 100644 index 0000000..ff96594 --- /dev/null +++ b/Items/Bars/RainbowChunk.cs @@ -0,0 +1,36 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Bars; + +public class RainbowChunk : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Rainbow Chunk"); + Tooltip.SetDefault("[c/C9FF4C:Crafting Ingredient]\nFull of colors!"); + } + + public override void SetDefaults() + { + Item.width = 30; + Item.height = 24; + Item.maxStack = 99; + Item.value = Item.sellPrice(0, 21, 0, 0); + Item.expert = true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType(), 4); + val.AddIngredient(ItemID.LunarBar); + val.AddIngredient(ItemID.FragmentNebula); + val.AddIngredient(ItemID.FragmentSolar); + val.AddIngredient(ItemID.FragmentVortex); + val.AddIngredient(ItemID.FragmentStardust); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + } +} diff --git a/Items/Bars/RainbowChunk.png b/Items/Bars/RainbowChunk.png new file mode 100644 index 0000000000000000000000000000000000000000..51a05ab2b1a9ad0a12b5d0e512096c8fd0b2171a GIT binary patch literal 602 zcmV-g0;TPx#1ZP1_K>z@;j|==^1poj5QBX`&MF0Q*Bo{3uOomrFU=3nl0A~MbEgAs!?Ets` zaaDT%JpfhzD>9nHJs~~+jsVX804{FM|H}Zb&>vF*%z%HE;<+1Fw?B$4k==+KM#H|+ zNgiGq91j2h0jEhsK~zXf&DKvSgK-?k@n>=}&A-||2eC~#Oxeb560IGyl$LT?JGg5O z6h{YfSuV~)Qd&ymptTY=wkZ>}87cO!{8`D-)aUnnso&#CB+ovVmpt|Oz58jXgg>5H zXRU}|Vpqk~mp`LM^xyaEV!lk(I}R%+o6v5u!$dX#`SR*5=F5u1HmKW6LP^=k88q*7 zL%DM0i}^B__5nsqEl_gun*(TWAApkQA+g-g%02xa7&(kU<%+44PE4bdXF5~RlD0y= ztf%k>PxY*Uf3BHdf$D`>n16kSiWS$23dU9=%-!c8o!pWJLS{xRUj(0JdRDeoV9(db z*j>{5V&`hePx(7G)HUK84u=y`Iql=lcUjrg61y{+b8Z7pyETyBr@alrQd()); + } + + if (context == "bossBag" && arg == ItemID.QueenBeeBossBag && Utils.NextFloat(Main.rand) < 0.4f) + { + player.QuickSpawnItem(new EntitySource_Misc(""), ModContent.ItemType()); + } + + if (context == "bossBag" && arg == ItemID.SkeletronBossBag && Utils.NextFloat(Main.rand) < 0.4f) + { + player.QuickSpawnItem(new EntitySource_Misc(""), ModContent.ItemType()); + } + + if (context == "bossBag" && arg == ItemID.QueenBeeBossBag && Utils.NextFloat(Main.rand) < 0.2f) + { + player.QuickSpawnItem(new EntitySource_Misc(""), ModContent.ItemType()); + player.QuickSpawnItem(new EntitySource_Misc(""), ModContent.ItemType()); + player.QuickSpawnItem(new EntitySource_Misc(""), ModContent.ItemType()); + } + } +} diff --git a/Items/Items/CraftingIngredients/BrokenBand.cs b/Items/Items/CraftingIngredients/BrokenBand.cs new file mode 100644 index 0000000..6135ac8 --- /dev/null +++ b/Items/Items/CraftingIngredients/BrokenBand.cs @@ -0,0 +1,23 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Items.CraftingIngredients; + +public class BrokenBand : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Broken Band"); + Tooltip.SetDefault("[c/C9FF4C:Crafting Ingredient]\n'This broken band feels oddly important to you...' \nIt would be wise to keep it."); + } + + public override void SetDefaults() + { + Item.width = 30; + Item.height = 30; + Item.maxStack = 99; + Item.value = Item.sellPrice(0, 0, 0, 10); + Item.rare = ItemRarityID.White; + } +} diff --git a/Items/Items/CraftingIngredients/BrokenBand.png b/Items/Items/CraftingIngredients/BrokenBand.png new file mode 100644 index 0000000000000000000000000000000000000000..dc2ed4bad3283d4782c3787f4fedc2b57e9cc1c5 GIT binary patch literal 364 zcmV-y0h9iTP)Px#1ZP1_K>z@;j|==^1poj54^T{0MF0Q*G%g>*uC|w`ny9`7Lu^| zL741iH{U$Mc3e$HgWl6`D>+=t+V2v&K1RnpB^xe_mEV1GKkYQGw;PQhl!1JVVLF>k z_1OZ3Rwfq3T%%>4-k43#kDJE*<*1Q?iPi1-);MJP>wGet5xg&%@z;mNRF<5qiLIE* zl1x@jNIqSSxx^fTkUiHj)HC_baep}02>2!n83JoM(i;QI1Q~!icdB*Mafb4#u?1(q zsxjbNvMESr91Ssl&r-fMZi>|-?K6g{bq}<^#xTd<>3@zR;oJ)wO_d)^W(xoS0000< KMNUMnLSTX`rj!5x literal 0 HcmV?d00001 diff --git a/Items/Items/CraftingIngredients/GoddessGold.cs b/Items/Items/CraftingIngredients/GoddessGold.cs new file mode 100644 index 0000000..f94026a --- /dev/null +++ b/Items/Items/CraftingIngredients/GoddessGold.cs @@ -0,0 +1,40 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Items.CraftingIngredients; + +public class GoddessGold : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Goddess Gold"); + Tooltip.SetDefault("[c/C9FF4C:Crafting Ingredient]\nGold to fit a goddess!"); + } + + public override void SetDefaults() + { + Item.width = 28; + Item.height = 26; + Item.maxStack = 99; + Item.value = Item.sellPrice(0, 2, 75, 25); + Item.rare = ItemRarityID.Yellow; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.Ectoplasm); + val.AddIngredient(ItemID.GoldBar, 2); + val.AddIngredient(ModContent.ItemType()); + val.AddTile(TileID.AdamantiteForge); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ItemID.Ectoplasm); + val2.AddIngredient(ItemID.PlatinumBar, 2); + val2.AddIngredient(ModContent.ItemType()); + val2.AddTile(TileID.AdamantiteForge); + val2.Register(); + } +} diff --git a/Items/Items/CraftingIngredients/GoddessGold.png b/Items/Items/CraftingIngredients/GoddessGold.png new file mode 100644 index 0000000000000000000000000000000000000000..e743bbf29b99636e13a24f8129d0a440ec9eb596 GIT binary patch literal 469 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 P00000NkvXXu0mjfAm!7i literal 0 HcmV?d00001 diff --git a/Items/Items/CraftingIngredients/RainbowMuzzle.cs b/Items/Items/CraftingIngredients/RainbowMuzzle.cs new file mode 100644 index 0000000..cea0170 --- /dev/null +++ b/Items/Items/CraftingIngredients/RainbowMuzzle.cs @@ -0,0 +1,22 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Items.Items.CraftingIngredients; + +public class RainbowMuzzle : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Rainbow Muzzle"); + Tooltip.SetDefault("[c/C9FF4C:Crafting Ingredient]\nUsed to craft The Rainbow Demon \n[c/FF2B6E:Currently Unobtainable]"); + } + + public override void SetDefaults() + { + Item.width = 48; + Item.height = 33; + Item.maxStack = 99; + Item.value = Item.sellPrice(21, 0, 0, 0); + Item.expert = true; + } +} diff --git a/Items/Items/CraftingIngredients/RainbowMuzzle.png b/Items/Items/CraftingIngredients/RainbowMuzzle.png new file mode 100644 index 0000000000000000000000000000000000000000..43300d78f554fb6e50fcfdf04eed978599517ff1 GIT binary patch literal 1351 zcmV-N1-SZ&P)Px#1ZP1_K>z@;j|==^1poj5Do{*RMF0Q*Bo{67f*b$)Vop?C`pzM~)yjs1g68}G zS2|#EReFGbmOUXo|ND%eahj6=00g^9L_t(oN7a~Hh)q!#$M;Mwr4f0N;bp?alw3zr zqmWQTDUw_gB_;AE56BRC6DcWjD-V>CLPGH(_e+Lc@-k-fA~Gp656Ag^v;W7p*X(^R zGn4YGefC;=t+V!bU+bKzXn>h8dPi5|9!p7?x8@!&u6Zb<++5T zed_LMn-34K-i#i;cyDbK(Y$JV(hqpihqlIoFbzv)zDsJBJRoX=2!j%Fw-Hb#=RuGM2VdRw7jvpO9(2(P>I~P>=-moH>3u zVSOOPPF}hYZC$fIx_0Gal?|?*yRje`;RInw;Te?c`1L)pC_*6+3IH`-RS2Q6u*OhC zZJ-ZSueGn{n*#E{*&_!s72uBW-0h>Ot|`^Bfc1rP0wsj3?ga%D39alwc}*8F=Z174=nxk)6;?ictChhSU>g#^SuHh6tEZ)p7NQNz-ib7l30THkih+N zc{xa7ZAe%c(v*;}Av&~`lfY1=66(W(U05DSg9J^M#D@4DlAX`VYz%?Z6xzgx`Sy zB?e?45asN|X$jvu*?S0g$=)3+c=wVZG2<3iw@F+;4jox5_^Y4dTNKNvMFg zI9PJWvCg7+EesQpCa_mX!h7MuD8M5q5Yp>3>h}R4G(>292_HYQmnv~RQp{V~D@$I5 zmSrucas0Sds;eaCu!4}{^vj~ZEDu?}8%lAgazc&RE?s2Bo!E9;pGLns(9M`45l zS>@C#VZX=_df|pOcKPz?y&-ss|G!6x=s~G4L}>Gj`FM?W;-LimkO4|;)(-AN%d8l; zi-G{Mq7=Xrp`gILEYHNv!k)prAu~QF=6ElF4<*L!2Yu|Fir~xIGt&MG^6g^(73n#1 zH16+}{4bQSTsiPXyZ}m2Z)JqTL;UAM#mP$8xS2R_c`GZSl?x%tjfxcjFF=}b#S|39 z)&R!+nM#K|@cTob6exv+OB1XTw2sbEO5Xmi`_DlU@3Fr`(I4E-W5NlbF?|34002ov JPDHLkV1hv}ghT)U literal 0 HcmV?d00001 diff --git a/Items/Items/CraftingIngredients/RainbowToken.cs b/Items/Items/CraftingIngredients/RainbowToken.cs new file mode 100644 index 0000000..5b7cfc7 --- /dev/null +++ b/Items/Items/CraftingIngredients/RainbowToken.cs @@ -0,0 +1,31 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Items.Items.CraftingIngredients; + +public class RainbowToken : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Rainbow Token"); + Tooltip.SetDefault("[c/C9FF4C:Crafting Ingredient]\nUsed to convert the raw power of rainbows into weapons"); + } + + public override void SetDefaults() + { + Item.width = 30; + Item.height = 30; + Item.maxStack = 99; + Item.value = Item.sellPrice(0, 9, 80, 0); + Item.expert = true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType(), 4); + val.AddIngredient(ModContent.ItemType(), 40); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Items/CraftingIngredients/RainbowToken.png b/Items/Items/CraftingIngredients/RainbowToken.png new file mode 100644 index 0000000000000000000000000000000000000000..597f196d9358a9c073ca20e2c47ec76d5ea814ba GIT binary patch literal 751 zcmVPx#1ZP1_K>z@;j|==^1poj5T2M?>MF0Q*Bo{4H0?hxOfdA;s|H}aX^~@>(X8%0^ zse$JI$AI0;^#C(~|Be6vX8(X60L~fZP87_U%>wE2{sMD}WZx z{{Vpd_JC#pXMh06IJdw600J{fL_t(YOU;(gOH@%5$Bz-oxC|;Zb5U;=7Gp?Bg@c;} z!GuZ1CKpNyVp_NigaT*bFZ=@xOlaXOYHEle1+k!F1fe2wFa-yt!u-*`X(3eeJ?BjC zT`^oa_q%wXdxv))?{m+2?+xWE1=)jhEbtpMNqRGd-*=07zQ$blzw-{rc;DkOKKtWg z7WC;zJGfhxhr&FlZ(x2q5BM7bpk{f6ujfDMyk{S*!7(si`yGtDECFdG z%3Nenxv)ZZVEzT*znTE2C+EPrD;GigjMJrD!|+Eocv{UhY?^%!>YN%G^h_u_p{4`3 zrop?Tb)dWJ?K0NxPIR0DPd~T`M#`k-Upqma$9{RcSxryfCy>L#^%oRf97_)xy(C{ZUdAGiMiA~cjq1TAbs&M z^|?0Iw-)~dt$2T+E%#HOEOGP|z#gZDEH7nv;nWoo# zHQ+;7VNk_qnzAbQw z&VXtf_dNo&2cm0i9t+ym)oQG{+|8!1?t8zp`n#G3iOtRP%(Nu=Yv(q%%UI*CNj7^u h&y2Y)uf}-_(H{=E;X2SyI6nXY002ovPDHLkV1m={W3m7M literal 0 HcmV?d00001 diff --git a/Items/Items/CraftingIngredients/SoulofWisdom.cs b/Items/Items/CraftingIngredients/SoulofWisdom.cs new file mode 100644 index 0000000..58c2bd0 --- /dev/null +++ b/Items/Items/CraftingIngredients/SoulofWisdom.cs @@ -0,0 +1,36 @@ +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Items.CraftingIngredients; + +public class SoulofWisdom : ModItem +{ + public override void SetStaticDefaults() + { + Main.RegisterItemAnimation(Type, new DrawAnimationVertical(5, 4)); + DisplayName.SetDefault("Soul of Wisdom"); + Tooltip.SetDefault("[c/C9FF4C:Crafting Ingredient]\n'The essence of everlasting knowledge'"); + } + + public override void SetDefaults() + { + Item.width = 22; + Item.height = 28; + Item.maxStack = 99; + Item.value = Item.sellPrice(0, 2, 40, 0); + Item.rare = ItemRarityID.Pink; + //Sets.ItemNoGravity[Item.type] = true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.SoulofFright, 1); + val.AddIngredient(ItemID.SoulofMight, 1); + val.AddIngredient(ItemID.SoulofSight, 1); + val.AddTile(TileID.AdamantiteForge); + val.Register(); + } +} diff --git a/Items/Items/CraftingIngredients/SoulofWisdom.png b/Items/Items/CraftingIngredients/SoulofWisdom.png new file mode 100644 index 0000000000000000000000000000000000000000..6ffa1a3bc44c0a1493e1a1b8884ca9214f205a62 GIT binary patch literal 1272 zcmVPx#1ZP1_K>z@;j|==^1poj5PEbr#MF0Q*8%!WMphTzBZrSgK|NoJp1^^5h6#t51 z(Ju@Cvwi<&IXe*%|K!$@VmBlqCo^`CC^}Vb<=AGg#sB~R|I@O>g-P1fUi0(m|LWlT zea(sh00c-$L_t(&L+zPaNEJ~W#*cC-LZdyhq71bxC@tGu>LCmgvIwk*LR+YZAgyR2 zlAx3@oHTq0IJ$2T z7?)oH(s_Ol;dO>-Uw@yyN5&kxKDb-tQi{Z;Z5O};S@S?4q;rZ+Q}?XIIu%`T2HT_V zw!*o&F%AwHh$Hoh3C0GV!T79bkkV(x-KZdZZ^E99SQjN%fPmwbh8-&kI&W!y?d2@K zUq5WuRkkovF6=lVxqB7hoMY<8npimGk?DBRg3%s`v*+u<@^|m>xxPPT-Z77?k6A)d zEvSo*sqj%_@cqVzb=dBp5~fM0ID0k7?s+k+C~L7stg^Vse_%dxG>&hS8_KdS@j++BGKY%MDX zopaog^jSfNRBc5Oe$$v^zx?u5hx53rna=quudA7ka?UX;N$-*dtTQ3mIbU9U6?ERQ zRrA(u1H_RmfXq5a>T?e;dv6k)ZryMl>&z9bIF2QH z>nM7aW_1qRnFJ1=KL~tT{0e-qs}y9iuPHbKnosnKmh>@W+RWZG-2<`pfE?qaBff&& zm*{or)!4mnz1O~W^WJ&KbgE}GJ?Su2Hq7o1I-lsNKh0=#&LmHD|E#dfXm&E@*e}0) z)$UwuPwa0{%pXrLHsLp&yYj5sH%&epQ@nfWJtRGSK0en7ns@BePa8W-a^ez6t>>dV zXP=IJJ7bQ0lMtntyq!RAMs!L+Jp zVBY*$pq}u}JJu^k>gz&qExmeyxfya6oSxYmq?nh@Ikv0H6^Ac@g{jq` zKE|a7<$irn-2k2Icq{tk2WrI(`7bY8AU{ucNiPwKf>&y0F3z0J%{gXX_!2t>WFL(Q z$E}_<%3OhR*0A?^Th1DB|EZ)VbF(5cZXuko(?{85GbSx;A557eAvMM39uNa-oE zvohw`FTef=b^5C6DAVaOf3L9XPT6LpZY0tj_I@_Eg2i?-?xH#2awLA$I8UR zv5vU>7Ua7o<8KwLDov-=Po9Gm(`A_I39VHV3C_?WOpfNh(IG^5z{giSwz4&ueylx6iA0f^^z*>Hv_L&)lq_vtNQUzWZl> zU~aghdYR>Xzo+)6)109)`A-&x9n-D#-1aFs0_#=>ut|2Un9?oRdtgEvb i%}&M~`{kD|A$|f;eE$vBbD($t0000 to heal by 100 HP\n[c/FF2B6E:Currently Unobtainable]"); + } + + public override void SetDefaults() + { + Item.width = 22; + Item.height = 32; + Item.useTime = 1; + Item.useAnimation = 1; + Item.maxStack = 1; + Item.useStyle = ItemUseStyleID.Shoot; + Item.value = Item.sellPrice(0, 0, 0, 0); + Item.expert = false; + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override void UseStyle(Player player, Rectangle heldItemFrame) + { + if (player.altFunctionUse == 2) + { + if (player.whoAmI == Main.myPlayer && player.itemTime == 0) + { + player.statLife += 100; + } + } + else if (player.whoAmI == Main.myPlayer && player.itemTime == 0) + { + player.statLife -= 100; + } + } +} diff --git a/Items/Items/DamageDebugItem.png b/Items/Items/DamageDebugItem.png new file mode 100644 index 0000000000000000000000000000000000000000..58f6a4bcb8b8c3380b0d75e8b0f7034344b21ec9 GIT binary patch literal 484 zcmVPx#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*U{X>wBqYd;@{;NaFDAdo83O$U)q8vIQNQF!2fu(19B;07xjy-FxnNfII-Rj; zwp+=(%|GY=Ej%;rI3Am3yOpRJ&)F;>?b5V|Op+rcc^nQ)*HANFu<4-b@!>A|m;D=L z_Wq0{Q{$K~&Gn6?>B`a~lDs`V*sBQ~_nFsMW15_vUn93#t4P8=$Gd0yNQs(pVc}?_ ziAL67~nb&J|v9PF5IHTJ=ATL0XSRR8kaSwXn3i9EGP)jTER aAovEeYk#gfeBR>#0000(); + Item.buffType = ModContent.BuffType(); + } + + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Apple"); + Tooltip.SetDefault("[c/B6FF00:Dyeable]\n[c/FFAF4F:Pet Summoning Item]\nSummons a fox to follow you around \n[c/FF2B6E:Currently Unobtainable]"); + } + + public override void UseStyle(Player player, Rectangle heldItemFrame) + { + if (player.whoAmI == Main.myPlayer && player.itemTime == 0) + { + player.AddBuff(Item.buffType, 3600, true); + } + } + + public override void AddRecipes() + { + Recipe recipe = CreateRecipe(); + recipe.AddIngredient(ModContent.ItemType()); + recipe.AddIngredient(ItemID.RedDye); + recipe.AddTile(TileID.DyeVat); + recipe.Register(); + } +} diff --git a/Items/Items/PetSummons/Apple.png b/Items/Items/PetSummons/Apple.png new file mode 100644 index 0000000000000000000000000000000000000000..2d35c53a00bbb944cec5b004a8aeeefbc0125d61 GIT binary patch literal 571 zcmV-B0>u4^P)Px#1ZP1_K>z@;j|==^1poj5Gf+%aMF0Q*TOVDERd@6!fZU4bePz6zcvZ@@%Oo1GQ(9_EZ%ndGZjwq7eWF#h%q z%1D!qrA6@c>KaVhMbNy_cEFDXnrt1%!1!(iq#5&Aac(dtG>Kj&!6A>XzxzgOhfz?P z(14$uVK+>=q~GUtjM9Zq(3nwuBh?N2X%}VCIAkUUJQy&E!${c9t3rA`2O3N%KUG}^T4 zhB4m}!>-0h^nU^Qe34-%jO>Q#o)Hrn)n<0{W5_kqgfV1fSwGY1(); + Item.buffType = ModContent.BuffType(); + } + + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Pink Apple"); + Tooltip.SetDefault("[c/B6FF00:Dyeable]\n[c/FFAF4F:Pet Summoning Item]\nSummons a pink fox to follow you around \n[c/FF2B6E:Currently Unobtainable]"); + } + + public override void UseStyle(Player player, Rectangle heldItemFrame) + { + if (player.whoAmI == Main.myPlayer && player.itemTime == 0) + { + player.AddBuff(Item.buffType, 3600, true); + } + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.PinkDye); + val.AddTile(TileID.DyeVat); + val.Register(); + } +} diff --git a/Items/Items/PetSummons/PinkApple.png b/Items/Items/PetSummons/PinkApple.png new file mode 100644 index 0000000000000000000000000000000000000000..d1b57206253271269f84a551fb836879b464d03a GIT binary patch literal 570 zcmV-A0>%A_P)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF0Q*TOF2#8hp}*t&G-4wd@CK1sT4v2> zBu!FJB`}?S0Gq#~aK``)vgK#YCj%L9q(1<%lao{r$lR7PP1X@jqP}U&{eyjA^nMML zMv=E!kXg?kfYQvoku(XZE^sQh39=)7m>87R%n8Pzf=D0`h`RS{gy z#X%Wq5*Zo;_mijKM*bKyZxr{<;RH=aV=LhKg543#m}@KN9ND4C?&Tra?r8(vHwwlU zL1{t*{&I%hFn3k~^r}{H`!N9;GpgK3cf)?_MH^HPnQo64L&khZTfP~bU}QIq@*@6? zqE!an>qr~uq1O-B&|jiW^mtbv7>v1&99DL3c9pQ~_f4ZT>c;r){q08VO78%27pRUl zskW)r4P(9|hFvXnhB24#7a4ZK$Zi<-j2N2nyY8oP`MXZ3FDF^qVr(); + Item.buffType = ModContent.BuffType(); + } + + public override void UseStyle(Player player, Rectangle heldItemFrame) + { + if (player.whoAmI == Main.myPlayer && player.itemTime == 0) + { + player.AddBuff(Item.buffType, 3600, true); + } + } +} diff --git a/Items/Items/PetSummons/SuspiciousFlower.png b/Items/Items/PetSummons/SuspiciousFlower.png new file mode 100644 index 0000000000000000000000000000000000000000..c2844356aa4a1501b3099cb87705a2f85103bec2 GIT binary patch literal 581 zcmV-L0=oT)P)Px#1ZP1_K>z@;j|==^1poj5Cs0gOMF0Q*Jr)(GN2|V8#Ncs0005JNklfruD%ox;?AObF(S?7j-#YFVA7>3Yd0) z1!}8kZ4j4%wyRZn+1-=ADM8`pT6&Gf9Htx_m{F!SU42OAep zNl=oP3v=s&Nb|~kfiXTUui1Fp)X`1ZXlhf&p|388X2m@!r_&Zfio|ptuA{wWCSh1` zs+GGL7#o=rXWh^|`adPGsf9%>z!@=|hoy(|RVY=TRX*rLg(^sI%qQHqUzP5gH#QS} zf>30WJ6A_1?anU~v40BEO+EopkZU3~HKaX?sMV{f+2tQ4SqMb#FNqexL`1#;4H`fl T?-Ot$00000NkvXXu0mjf8AbG8 literal 0 HcmV?d00001 diff --git a/Items/Items/PetSummons/SuspiciousLookingScrew.cs b/Items/Items/PetSummons/SuspiciousLookingScrew.cs new file mode 100644 index 0000000..5b9e9f9 --- /dev/null +++ b/Items/Items/PetSummons/SuspiciousLookingScrew.cs @@ -0,0 +1,30 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Items.PetSummons; + +public class SuspiciousLookingScrew : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Suspicious Looking Screw"); + Tooltip.SetDefault("[c/FFAF4F:Pet Summoning Item]\nSummons Mechanical Teeth to follow you around \n[c/46FFFF:~~ Developer Pet ~~]"); + } + + public override void SetDefaults() + { + Item.CloneDefaults(ItemID.ZephyrFish); + Item.shoot = ModContent.ProjectileType(); + Item.buffType = ModContent.BuffType(); + } + + public override void UseStyle(Player player, Rectangle heldItemFrame) + { + if (player.whoAmI == Main.myPlayer && player.itemTime == 0) + { + player.AddBuff(Item.buffType, 3600, true); + } + } +} diff --git a/Items/Items/PetSummons/SuspiciousLookingScrew.png b/Items/Items/PetSummons/SuspiciousLookingScrew.png new file mode 100644 index 0000000000000000000000000000000000000000..44e1e95bdc7ac345bd4329b15a4a731782dc2208 GIT binary patch literal 354 zcmV-o0iFJdP)Px#1ZP1_K>z@;j|==^1poj55>QN3MF0Q*Ha0-BxzXC->Wh=FN>pMc9O`HQ008bu zL_t(YOVyRJ4Z<)GMGZ61&`?kiCP>W^q=FfkAXO${21=Ho&IE)a1q}^51l>8m;3JC= zS+;r7>EaY5FaK;N=11~;)Ag5c)b(Z1Z%z9ijKPL5E32cfvuv)tX&&0E@}M2KjQ__F zuqoENqR`H!=^6r@FEbF&5coD?0vj6h0-qImu~cvOQUCw|07*qoM6N<$g62<> Aq5uE@ literal 0 HcmV?d00001 diff --git a/Items/Items/WeaponParts/UntreatedBowPart.cs b/Items/Items/WeaponParts/UntreatedBowPart.cs new file mode 100644 index 0000000..24d5c34 --- /dev/null +++ b/Items/Items/WeaponParts/UntreatedBowPart.cs @@ -0,0 +1,31 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Items.WeaponParts; + +public class UntreatedBowPart : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Untreated Bow Part"); + Tooltip.SetDefault("[c/C9FF4C:Crafting Ingredient]"); + } + + public override void SetDefaults() + { + Item.width = 14; + Item.height = 20; + Item.maxStack = 99; + Item.value = Item.sellPrice(0, 0, 0, 20); + Item.rare = ItemRarityID.White; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("Wood", 2); + val.AddTile(TileID.WorkBenches); + val.Register(); + } +} diff --git a/Items/Items/WeaponParts/UntreatedBowPart.png b/Items/Items/WeaponParts/UntreatedBowPart.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca702460159844804869dba74b1b0d70da7fb57 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM1!3HGvvhwHvDaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(ehe`~f~8uI6fzK<4yp@BRJxMS&JFvAGREeu<}xV~B-+vPt;lKj#}*{O(nq z<4AqP>Ju<4g<-ql!K)lP8xp=-8u*?_`;^;qiN|2Jwb9`Nf4W|-K479ZTXVZ0TgTR! zInwMCk4cxmYcSMv*c;Hw=(Ny#_kn{?!*Bh(7!@sdCVZ+8+vN>+oUNq`8I5vN5*Qe6 Xvl;kYy7Sx>Xg`CetDnm{r-UW|eKbw# literal 0 HcmV?d00001 diff --git a/Items/Items/WeaponParts/UntreatedShortswordPart.cs b/Items/Items/WeaponParts/UntreatedShortswordPart.cs new file mode 100644 index 0000000..bb41c94 --- /dev/null +++ b/Items/Items/WeaponParts/UntreatedShortswordPart.cs @@ -0,0 +1,31 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Items.WeaponParts; + +public class UntreatedShortswordPart : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Untreated Shortsword Part"); + Tooltip.SetDefault("[c/C9FF4C:Crafting Ingredient]"); + } + + public override void SetDefaults() + { + Item.width = 28; + Item.height = 26; + Item.maxStack = 99; + Item.value = Item.sellPrice(0, 0, 0, 20); + Item.rare = ItemRarityID.White; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("Wood", 6); + val.AddTile(TileID.WorkBenches); + val.Register(); + } +} diff --git a/Items/Items/WeaponParts/UntreatedShortswordPart.png b/Items/Items/WeaponParts/UntreatedShortswordPart.png new file mode 100644 index 0000000000000000000000000000000000000000..adc7286f7a1b2aea60b214aeeb979e599af66590 GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^GC(ZF!3HFkgxGWfDaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(ehe`~f~8u0YycO>%#K{`73`qCkt5uq7*iLK{6@978<3lT#KL8iY^&!=Kv3 zC_H7E^n#iEiFU6~@GyVYUbdd;vh)4+9W`vs&ewrd*{5s8BGxb79e$Xvc(br0u1RHw zRO3t5-RB!KzwBskJow)E%aw}9=VT3hPox_dRMdK`JfD#8;iteebY literal 0 HcmV?d00001 diff --git a/Items/Items/WeaponParts/UntreatedShurikenPart.cs b/Items/Items/WeaponParts/UntreatedShurikenPart.cs new file mode 100644 index 0000000..9b91ad7 --- /dev/null +++ b/Items/Items/WeaponParts/UntreatedShurikenPart.cs @@ -0,0 +1,31 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Items.WeaponParts; + +public class UntreatedShurikenPart : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Untreated Shuriken Part"); + Tooltip.SetDefault("[c/C9FF4C:Crafting Ingredient]"); + } + + public override void SetDefaults() + { + Item.width = 26; + Item.height = 26; + Item.maxStack = 99; + Item.value = Item.sellPrice(0, 0, 0, 20); + Item.rare = ItemRarityID.White; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("Wood", 3); + val.AddTile(TileID.WorkBenches); + val.Register(); + } +} diff --git a/Items/Items/WeaponParts/UntreatedShurikenPart.png b/Items/Items/WeaponParts/UntreatedShurikenPart.png new file mode 100644 index 0000000000000000000000000000000000000000..e795e4ebe126740f707412028d2045cd885451b5 GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCim11AIbUfwZ}r(>+%Cz+Pb)A ztedfq%SZUr%?G{8CG!QP!<+5<+VWO4Gky_bWNXW_YnsYoVDROWVAY%hL9%DqU!=mFBODfA{<=Y>`vnU~ypTt_!t(D?*mf z?@!R%d~F&#_X;o0=FFsE;dK)ljy}A&n*X55-`W2G;#hn} S@>HPz7(8A5T-G@yGywp8D1n#& literal 0 HcmV?d00001 diff --git a/Items/Items/WeaponParts/UntreatedSwordParts.cs b/Items/Items/WeaponParts/UntreatedSwordParts.cs new file mode 100644 index 0000000..0ff12bc --- /dev/null +++ b/Items/Items/WeaponParts/UntreatedSwordParts.cs @@ -0,0 +1,31 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Items.WeaponParts; + +public class UntreatedSwordParts : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Untreated Sword Parts"); + Tooltip.SetDefault("[c/C9FF4C:Crafting Ingredient]"); + } + + public override void SetDefaults() + { + Item.width = 42; + Item.height = 26; + Item.maxStack = 99; + Item.value = Item.sellPrice(0, 0, 0, 20); + Item.rare = ItemRarityID.White; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("Wood", 12); + val.AddTile(TileID.WorkBenches); + val.Register(); + } +} diff --git a/Items/Items/WeaponParts/UntreatedSwordParts.png b/Items/Items/WeaponParts/UntreatedSwordParts.png new file mode 100644 index 0000000000000000000000000000000000000000..af9416c906945a9910cc7fd6f351e74c1b5afd58 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^T0ktt!3HD`?mYJmNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=MV4+aRt)mYLff=^QUKf7X@0hge_SC6#DGx;usR)o}9A4$RK?3AO6&) zgD0cUuS{YWo+9_9Axn{q`()o41B3lZzqAZ&r4}t=`Z8fp;d8zjaT|Wi%#h;^Ok&)q z$QkUOd4li0fGhvWv+aIOFBgZ)H)VdA;8S4A6ezO%=0ovCN7__)7OY;rB}Udx(JRYi z5p#?pH}jFU4Ig? z#ZtviK91Hm7kn2RIJ^~57JE>1T!1r>jg3M7!1lTI2OT(p-e>T1^>bP0l+XkK;~;_M literal 0 HcmV?d00001 diff --git a/Items/Tiles/RainbowStation.cs b/Items/Tiles/RainbowStation.cs new file mode 100644 index 0000000..a22845e --- /dev/null +++ b/Items/Tiles/RainbowStation.cs @@ -0,0 +1,38 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Tiles; + +public class RainbowStation : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Rainbow Station"); + Tooltip.SetDefault("Used to craft rainbow weapons"); + } + + public override void SetDefaults() + { + Item.width = 40; + Item.height = 24; + Item.maxStack = 99; + Item.useTurn = true; + Item.autoReuse = true; + Item.useAnimation = 15; + Item.useTime = 10; + Item.useStyle = ItemUseStyleID.Swing; + Item.consumable = true; + Item.expert = true; + Item.createTile = ModContent.TileType(); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.LunarCraftingStation, 1); + val.AddIngredient(ModContent.ItemType(), 12); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + } +} diff --git a/Items/Tiles/RainbowStation.png b/Items/Tiles/RainbowStation.png new file mode 100644 index 0000000000000000000000000000000000000000..51002ab3ee86144f60b304c2752b5836e1579ffd GIT binary patch literal 908 zcmV;719SX|P)Px#1ZP1_K>z@;j|==^1poj5KTu3mMF0Q*PES*ZjFh;)!zwB*>+o@t#P49#r^?p)ovAhfYm=h+_nqpLXj@CKJW#)QbcN9 zxQn)kE(}EjktQiFtVuN+715nB-^rZIRuxaA>%SM}01v zX6vj{F%%R$(AQ7BsogX=F~M!mr=B|H3L*-1z{7jDD3{Ad)>xyW6(D9O7&RWI~Ly^-G_vUl*^M z-SDqmH5&;N;F61ZY>Nb|RSY1PA`09@(`~f1`*}N?_HMR`fIzH767F7h`zcs1yoh&s zem`+~gy-fDjlkp>boKfqy9a?`6u-HNPiza{>N6Kc*vVocA27tY#qwjE+~38q_~0WI zKfj{hrGNBzDNBVHwdZ0sa$gX_q6TWACJ=Epj1IuXL}y(bkZsT@bY-bC-yP{9 z3shtM=;BQ70i%N$hy=lNvL;3ZrQf{gHWy^9p6?1bd@8F&v)E03zJb}7(); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.WorkBench, 1); + val.AddIngredient(ItemID.StoneBlock, 12); + val.Register(); + } +} diff --git a/Items/Tiles/ReinforcedWorkBench.png b/Items/Tiles/ReinforcedWorkBench.png new file mode 100644 index 0000000000000000000000000000000000000000..1b3d6a853ca034603c607fb8d26a367e620d8430 GIT binary patch literal 470 zcmV;{0V)28P)_8o00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj5Do{*RMJOmJfPjF@%gZw}Go_`aV`F1fR8#-}06;)M zHzpaBYf!O;XMbEpVMjTyl8J8s00Bx#L_t(YOVyRJON3w;#_d)S$7oB)kZ2HuZg7ks z5Sv}1)!`<`R-w_Ue<1n~nu2I_xZpNBBnKOUW)Y$33ZCzKf-~%B^6R(!zE||~?&1Aj zw;ad$)J9|?JsRH$L{WqbK@h-k9K&H4!o;?1xmu^HD!CH$@5{0bPLc#p(-c-G0pIs= zfiMBuvMjidX_|5+XqpDD>l!Am>&lfN&vSVE1f(@4q3b&8zhW2$+_o(|MAvn2S(bRW zIth^J{tl8jKbfMweVD`Zm-ip{{s#BCyf{OBb#n*z_fa>2)1yPw_fG}fOxC-76Xr^s zhX0$ufwha;+uMe(A4{0?g6F+YQHaE5#|}(}dP%)Gz<;=UTf)ow6=n}?niD+d>;d-D z^M`nz6LPUw;N9vZ;CUVr;LPWY@6UGr@*%hnXFs3ke*6X~G6^;93;soVf%>d~w*UYD M07*qoM6N<$g2Ft}w*UYD literal 0 HcmV?d00001 diff --git a/Items/Tools/GoddessPick.cs b/Items/Tools/GoddessPick.cs new file mode 100644 index 0000000..ab404be --- /dev/null +++ b/Items/Tools/GoddessPick.cs @@ -0,0 +1,52 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Tools; + +public class GoddessPick : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Goddess' Pick"); + } + + public override void SetDefaults() + { + Item.damage = 22; + Item.width = 50; + Item.height = 50; + Item.useTime = 10; + Item.useAnimation = 10; + Item.pick = 210; + Item.tileBoost = 3; + Item.useStyle = ItemUseStyleID.Swing; + Item.knockBack = 6f; + Item.value = Item.sellPrice(0, 6, 0, 0); + Item.rare = ItemRarityID.Yellow; + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(3)) + { + int num1 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + Main.dust[num1].scale = 1f; + Main.dust[num1].velocity.Y = 0f; + Main.dust[num1].velocity.X = 0.5f; + Main.dust[num1].noGravity = true; + } + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.Picksaw, 1); + val.AddIngredient(ModContent.ItemType(), 12); + val.AddTile(TileID.AdamantiteForge); + val.Register(); + } +} diff --git a/Items/Tools/GoddessPick.png b/Items/Tools/GoddessPick.png new file mode 100644 index 0000000000000000000000000000000000000000..a46110326347865716bdb3beef1c4b7ab710895c GIT binary patch literal 698 zcmV;r0!96aP)Px#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*I}s7u)L!!PcJuS;5hN&f)AC-y+CQj_ z#Dz(wP@9YZ00KHmL_t(&L+zM7PC`Kxg~7N1G%7X_qXn_Buuv0YuLb@rfvAPGT4||; zE3iPr5+t$&V}XT*g|RR(*nowy0Ta#K_f7&QUPj;%WtcA^=e?K+%*VZV=EY+Xvz$nL zg_l2aTdzm{o`#_?`<{+hM_c*AO;$3QN=ky-YfUn@Qj!Ew85&$8Frlryjd*-tvRXNm z)C?tNGA(PZ{`}PR*$2;vtsB9RhRqymXmRsSa`!4oQ2Pk}UfN!l^hRv3F`FR(Q|b9@ z$+?pq$@FBf^2w2AlliR$NpGZGVCd{%N$#2Pjj`}50JV|549vg;Y6JJ)NVjNavW1uM zsu^@EtUSXefH%@EYz9V96M$=>avyXr-mCE*%^T?yn0XwXkbBIHhvN%L21dYIIxp#s zFt**P#_ao>q-La)o08-?gB^fYE8Yl<@Gcc#B3G(GSNhyLmBbzlD>{6BB*{hq%)kiF zGpnhLq&EWCh&G8)6Kn!C!q|)et`%7rxk|d;XPBkCp*w9BR1SO67?>&*SKdyJL&y*6TlfG>K8F4`o)I9y&7Tu gY94foBSvDeZ$;Nmy&%Pa#Q*>R07*qoM6N<$f`=D2hX4Qo literal 0 HcmV?d00001 diff --git a/Items/Tools/GoldenDiggingClaw.cs b/Items/Tools/GoldenDiggingClaw.cs new file mode 100644 index 0000000..be7b6bd --- /dev/null +++ b/Items/Tools/GoldenDiggingClaw.cs @@ -0,0 +1,59 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Tools; + +public class GoldenDiggingClaw : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Golden Digging Claw"); + Tooltip.SetDefault("[c/FF3C2B:Mining speed too high may result in no funcionality]"); + } + + public override void SetDefaults() + { + Item.damage = 60; + Item.width = 38; + Item.height = 38; + Item.useTime = 3; + Item.useAnimation = 9; + Item.pick = 210; + Item.axe = 28; + Item.tileBoost = 6; + Item.useStyle = ItemUseStyleID.Swing; + Item.knockBack = 6f; + Item.value = Item.sellPrice(0, 18, 0, 0); + Item.rare = ItemRarityID.Red; + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.ShroomiteDiggingClaw); + val.AddIngredient(ModContent.ItemType(), 18); + val.AddIngredient(ItemID.LunarBar, 22); + val.AddIngredient(ItemID.FragmentSolar, 8); + val.AddIngredient(ItemID.FragmentNebula, 8); + val.AddIngredient(ItemID.FragmentStardust, 8); + val.AddIngredient(ItemID.FragmentVortex, 8); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(3)) + { + int num1 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + Main.dust[num1].scale = 1f; + Main.dust[num1].velocity.Y = 0f; + Main.dust[num1].velocity.X = 0.5f; + Main.dust[num1].noGravity = true; + } + } +} diff --git a/Items/Tools/GoldenDiggingClaw.png b/Items/Tools/GoldenDiggingClaw.png new file mode 100644 index 0000000000000000000000000000000000000000..8f4076ea496922ee217fdf5af9610c079d4326c7 GIT binary patch literal 582 zcmV-M0=fN(P)Px#1ZP1_K>z@;j|==^1poj5Bv4FLMF0Q*5hN%-sEl^g@?OE(CumnY5fQ|NN%Hb` z^YiI{|Nj90|HOu@aR2}Tz)3_wR9Hvdmd`7LaU91V+Fe8QxY%J1i%cn|TvjB~#A!Kj z@uM7^D2KTS2jV2{F#Z5HAxch4k&`JY9Ci}X^AD&;y`Q}gKK1RHJv)5AUWdK*efG54 zYoG6TtFfv?xHayUo&x9PsiOC;Em<1^7h;*j`V7{|_Bl8|-UE|zi~XNMvP`sj6h4{u ztSaVL%KSns6B+2lIytch%QCWV^v|`>?85`rsJ0>us2*X3D%m<(84x zS*G~rnb#%e7LsKe4=-TJXJ!!oxV(q`iuuiwd4<}(-m%_X>V-*Sp#vU{=3$l!I!oph z>I;Wah-FwLeHMYq>BuBJ)Dnju8=BxsXGz~eEJEbWWMlnsDzgZ$;?c6EuAbq&t~!{d z7xeJ40ULnF#q}pYOW`!*42bqTC UR>8#jWdHyG07*qoM6N<$f?Em`a{vGU literal 0 HcmV?d00001 diff --git a/Items/Tools/GoldenHamaxe.cs b/Items/Tools/GoldenHamaxe.cs new file mode 100644 index 0000000..fe215c0 --- /dev/null +++ b/Items/Tools/GoldenHamaxe.cs @@ -0,0 +1,53 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Tools; + +public class GoldenHamaxe : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Golden Hamaxe"); + } + + public override void SetDefaults() + { + Item.damage = 68; + Item.width = 70; + Item.height = 60; + Item.useTime = 10; + Item.useAnimation = 10; + Item.axe = 23; + Item.hammer = 95; + Item.tileBoost = 2; + Item.useStyle = ItemUseStyleID.Swing; + Item.knockBack = 6f; + Item.value = Item.sellPrice(0, 6, 0, 0); + Item.rare = ItemRarityID.Yellow; + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.Picksaw, 1); + val.AddIngredient(ModContent.ItemType(), 12); + val.AddTile(TileID.AdamantiteForge); + val.Register(); + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(3)) + { + int num1 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + Main.dust[num1].scale = 1f; + Main.dust[num1].velocity.Y = 0f; + Main.dust[num1].velocity.X = 0.5f; + Main.dust[num1].noGravity = true; + } + } +} diff --git a/Items/Tools/GoldenHamaxe.png b/Items/Tools/GoldenHamaxe.png new file mode 100644 index 0000000000000000000000000000000000000000..1bb243a5cf68d14e759e0ea7d164f8b26a98865b GIT binary patch literal 862 zcmV-k1EKthP)Px#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*I}s7Yg-P1fUJ)cH^YiIHsEqRRc3#2S zcGL3Ew=gRJ00Q1gL_t(|UhSGaZWB=yg>80V5a2X+LlFfD2?~OQ5G_skSwaM110c~* z(jeFYAeI0m1@s6BC@3hR6f{nQNd#U3_+95j_Q6MQ-gw4-QSK*Q-9*Yn$-GbZXU5G& zrd(~c{vLd3d>Rbq`nR4q$PSU6F)-!n!z=dvnOmnVuV34;ynX7dWoGbWr_%q$jS_*JHzu4oPCXDz2@y;Q(eAV- zqH01d)jZ^!fs6e&(Mfrl!a@|>yK*|eDYy#nilwZg&QNtrpBNvA!4-6=fAuiWmwv5KCpbFvuxRo5oG%W59R{df!Gf5KIAXOoVKV zfhl-`_vra&%WO{flAc9UU}Ink-bT1Fg4&Ex-6s|99#!MUBvQLEc&>|07+nNYtLiG~ z9++>i30Gx~>PBu%gxZb4ys>q+-1AwyFGAOXIn(y1al)Qe1iazocjIo1pmt-_j-pN~ z2Fy|Kuv0+|b7KlpyD?x^Qve%-uD5#rzU5fA129;<^RCU9py+rUHEJ^kCyS?OJSU{W zU5U5sS-T$NHAYamF*sRl#k>utevXAr0WgNU9=2vYzd=m{MU8c11cgtp?6%A&TGSYr z0(e(~iTwMy(3h=gZj2z=7_}|ONHvCGgX;eDrW+$jHm0t*AvfF@L9#KRs@*47+!#UO zQ$|;)YWK+HN1F|i4E)=4&Z+!%q^7=arjI6Up+HmAgJV+2h% oWjbz*;LsRw+)V*)%v2hUf6x?+zMlM*NdN!<07*qoM6N<$f{HbXvj6}9 literal 0 HcmV?d00001 diff --git a/Items/Vanity/FoxEars/BlueFoxEars.cs b/Items/Vanity/FoxEars/BlueFoxEars.cs new file mode 100644 index 0000000..c8370bb --- /dev/null +++ b/Items/Vanity/FoxEars/BlueFoxEars.cs @@ -0,0 +1,26 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Vanity.FoxEars; + +[AutoloadEquip(EquipType.Head)] +public class BlueFoxEars : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Blue Fox Ears"); + Tooltip.SetDefault("Now in blue!"); + + ArmorIDs.Head.Sets.DrawFullHair[Item.headSlot] = true; + } + + public override void SetDefaults() + { + Item.width = 26; + Item.height = 22; + Item.rare = ItemRarityID.Blue; + Item.vanity = true; + Item.value = Item.sellPrice(0, 0, 12, 0); + } +} diff --git a/Items/Vanity/FoxEars/BlueFoxEars.png b/Items/Vanity/FoxEars/BlueFoxEars.png new file mode 100644 index 0000000000000000000000000000000000000000..122e19ba3017e3150585dcb0e0d337a80d290f26 GIT binary patch literal 416 zcmV;R0bl-!P)Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*Bq1j#I#n}vkpKVx#>U3n+1+NZ#ck!- z(w{9Kc+~BB=-F|9O51Oy9YG z6GJTs5UZa4K7zT7KQt4}hk=i)r-NxiJ|d)#em+8X(V5PCFn#>^aWI`!(hsK5!yY|u zw#@GU)34sX1k<@2PJwBd&*2F^z?ml5&_Iv}KjMSn`)ANPIRvj6&e;=%tmo+~(?d{h4O_A?DzpuBc`}gp)f4_9( zhQELR>|(vm`uME>J-c`Q^J@$5=zKjpf4|)Sy5Fz&e)}6eC-u>Pu~VOJ>sq|suX@`w zeAnNmf6R`%@c=pQMx~E^Jo%+(WaJJ;q*^#d1 z!QZ!i`_Bf^A@^#8>S&n$0*Dw&c{*5@V2#yFNf2CB}sOq9e{}6lyJu(i>A#!!6d0VFdOoel z+YSt9t;^hPpE9O=$`E}Tc=z_L|I#er;H_A3di~tBH+MZgv+w=UiBEySxv3{_8A!)$ rO`wjvv?+OMqIZ2L(NW>Lx8kFI;x&UQ2bJ9fLAH9j`njxgN@xNA;|q1) literal 0 HcmV?d00001 diff --git a/Items/Vanity/FoxEars/FoxEars.cs b/Items/Vanity/FoxEars/FoxEars.cs new file mode 100644 index 0000000..2b2d62d --- /dev/null +++ b/Items/Vanity/FoxEars/FoxEars.cs @@ -0,0 +1,34 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Vanity.FoxEars; + +[AutoloadEquip(EquipType.Head)] +public class FoxEars : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Fox Ears"); + Tooltip.SetDefault("[c/B6FF00:Dyeable]"); + + ArmorIDs.Head.Sets.DrawFullHair[Item.headSlot] = true; + } + + public override void SetDefaults() + { + Item.width = 26; + Item.height = 22; + Item.rare = ItemRarityID.Blue; + Item.vanity = true; + Item.value = Item.sellPrice(0, 0, 10, 0); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.Leather, 2); + val.AddTile(TileID.WorkBenches); + val.Register(); + } +} diff --git a/Items/Vanity/FoxEars/FoxEars.png b/Items/Vanity/FoxEars/FoxEars.png new file mode 100644 index 0000000000000000000000000000000000000000..de3fb858508f5e3b96239a2d2a16ffdf87ab49e2 GIT binary patch literal 416 zcmV;R0bl-!P)Px#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*Jq`wU9u1%?5&!@H#>U3o+1bfSDZ!L# z^MV@=X9rjS00AILL_t(YOJl$VZ28#!gD{j!5D-$&1f^*X7@;&Az+7b|zz*gg`|uM? zAO7?ULoEmptDgQog1IbNmK)56fw_;rf@wlNBBYOgK0dpf({7jr<;#30LW!9*O3Eo>8F#A7#ILVfS*_$A)8nL0000< KMNUMnLSTZ8`K8GZHJ#{X(K*$-UO`P22NprvMU_2<=FfCR4kIVmw{{Q2{=hyXmKR4fBzkAKg|EG1npIt6*SNHGf z`Tg?d+~@Rmzi*0s)_&f;>d&9Q>+5aab^G7blXO4*?N&w~Kf4!XFFCDqz z@83VWSZ}jFKD|EP{@v;D{q}j&e!V_^UhaS0@7H_3{f(ZJ`slydsZY0cE#97;^mbNw zRGs7hMxbYbU{3L`t(#4w%VlnU-)pgHPF`Bbw2No2yq)&6#5lF;;Dxh2m(Iqxng^Fh z{;qF^=rAuGp*jv&7yVkh&h)k#Fs!y3Z<_NeIb>R3Ehwx)t!8{_&lkj`Oc z6TJL>cl74kGZSm$?~~9*d>VK+FVe3vWSKb6(~BBUFNRKWFP*;izc~ju3JZdl z$6H5lE6d9h9d~^|I?RKCI_{p)xO*nF#F)-H_9!pE|0-&8?jfK*td&o% zv;(^8syoP4Uju=zx_VsW>haJJc{;o5fN|-sy*o^A9|uPIQQJ*(K4kzSUG6F{(xPx#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*P$)8UEOV$(y#N3I#>U3n+1=W3ujZ!D zm|d6X0003kNkl{9Kc+q%;E^<-~F>6OmDbx z4nr*n5UZYUK4O8=aF<1BbbvV}-o6CWkGj5r=@mE1z%>2i$VlNcn7(`K9+*~mzzL>d zVGoNdm``8;CeL;D6PUJ)v;@;43LC)miW^{R0ODv`-CVE$4178D0Lp>@9y0|f3l$Jj zm(`RErU%|fFqe=DaG68@R0j)d^f1O%#-RiB)QBE;^ot`X4R;YNjA1S++tCcB36&L-(={9!D@htWRJ7A>Rz~83V*;=zwlM!T_K!M^8bd09^X%Jpcdz07*qoM6N<$f*FUa1poj5 literal 0 HcmV?d00001 diff --git a/Items/Vanity/FoxEars/PinkFoxEars_Head.png b/Items/Vanity/FoxEars/PinkFoxEars_Head.png new file mode 100644 index 0000000000000000000000000000000000000000..854ee961e1e06429241f2fe2f15ddc47a9238e6e GIT binary patch literal 1326 zcmeAS@N?(olHy`uVBq!ia0vp^8Vn392^?%d*6dv(^+1ZTILO_JVcj{Imp~3nx}&cn z1H;CC?mvmFK)z^zPlzj!4$v?v)+t^Qu;>5(|F;U(KU;QwVZ$e5p!)5eE{-7;ac^%K zu9659VS6B6sJ`e(Sh#}OG|#1b=g#Hcu+eAn>I;|N9FTSKR$Ow`m&2>Am`guqhIP7% z@$*{wmiyw0J@)2i&+8fT-g&0n+`N4LAL0KyDt{hd9sKXjcP0JRf8uAJt^M#X{r36% zfB#BP=WMu@bDwSV%=Pp3-KhKbY5Mu?HUB;?k6sqJx%z9i!R+dfN6T-Ym;d)6=kyfb zzW;Xh`(vA*^4I)*d;0D5c>DkR{(8y({qg7I?fA#<*T4F`{m1$Fb-&O5zrXM2zt_6y z`8xOWcAH0h+jer}S>vz&qyN;u{?En;^gRPZ-m4E=i$h||&wSY{zC7n#URtPGvbpfi zXtQ*4;ZyP%K<1geXF6rZ6Q^JO&&veXa_7p!?B^?Xy_@l}THo*HoV#aMcxxcMUIpkDIf}a`(*8n>}}Zp5y^_`)JfJ z05Xks&)j_DtV>+je{&A7mV)5+^>Y`$+LgTQ{a%aI;xgmanXRJZ_>h2je#!T4br{vPa}|d`c2xoBy-`) z$iMd$z*-LY%I+)cTlKnc=DzQbrkuTbcFn0Ypv%io19dz7WPY2bH2vn;IY;x*s3D-ux?K>e+}|mv__7M%K1`VvnkI(cApXqWh}*lhm*E z&0sAI=A}PwS*}`Vo%ZWqcQ7z$H*3uXy8Mpr?9H<|pYm^+-5HZ+UMvRm)9F_fM9c>d z*?r>utA5XzxljE2l(Ug?Yfq)=^n*O3(+~8FZoks>NV&O3KWQL5(=gkr=B-TVby?%u z_eX)AnH@RxEHD~?p1FAz=$Tt*fu5Od*$s>!dVA*miHFg5SM2fyrn0v_H|JbE4oqdQ zltHQNl`=4u0hu$e9*Px#1ZP1_K>z@;j|==^1poj57*I@9MM*wU0000>n2(3wlyJD4wabwE-i70@RjeD^ zoB#j;JxN4CR7gu>^t227&wvGNKeV0^%A_j5Wgioi9&i8;5vC|Ruz-y_E0{hMzZXoy z0J$NA9s+g?ox${xoxj2Kzh#HO^xzE_Jc2Adhmt_45(LmfoWJsxIyU`7cYS6wEjO}nh=;($O5J%^bNrDE@+6rLgr@M zHZTnXgC|6wG)A1l04!~6T3`aEVE`6F=l~W1FyNPP22A5J7nbG*O^D!h2q&iQAtSD9iu=002ovPDHLkV1g{@tp@-A literal 0 HcmV?d00001 diff --git a/Items/Vanity/Leafy/LeafyChest_Arms.png b/Items/Vanity/Leafy/LeafyChest_Arms.png new file mode 100644 index 0000000000000000000000000000000000000000..2f0bc3b0fa9084c3c65cccb1944b9ac2bf53bede GIT binary patch literal 2017 zcmZWpYgp207N?>yb<wRnHYb}J z6_shd1qEJ7RPZtk&ax@26k00Ym5@QaA&LU~H{0i#edhgg-t*zSzsou2%?S$)+-|VT z00aVU4-N{50OA1<2pqrd3*bg--a!PyCUivLaS)xqTM8uL#A9cVfk3r+hHIC%0=aeA zne!)s7z_yyDacD^lCp$jf73MMNNwnshT@o$hKDlCa~vIm z40^r`Ff_Ta#oqMq(d^F7yI(lo++khknwU;zn%TNZO3_P$g{sw#4?G*z2b>O@Ff^V% zJcKm@f#L%t=YB=UF|{9kt8|5|^i_#&m6+C?>|;e!S*MKF%B0E?SmWF1x(h!us^R|n zS<4UU1WB$G!_-Z;3730$dcu@>_K!j@Pu|hmwSz}OGv*5MWA}_JTm$m^v`Y$if;94+ zhmGaJC7o0vl=W5z5cRVn^2xece_@KeJ4%?c(jy_6rcXx+hA;}o5JzKc`8Qr-X{$54 zb#dgx^>pp3bNO6tVqDVc*)Yw_SbiKt#d9Z2%Bm|+Gu{PnbgeV|j_B~DUL9Qz5XY(+1luSa_E9)iL9#XW8}%O781U0;_0`Cls#{-LJ?J$ z<}zVN_=c@I-t|_E3MB6Z`V3m7KrY9~D80|sc!(trzjPm2(YF%W(sE0^p=5^xm9lmx9|Q8Kv3nX+`|nM{w9>*YQ0Whi-ckluQY7AsnV+h(Ru% zDl3Q@yb0iSw;oY%_iE+IJ2(O}@|#~7|6oK@ljcYudE|y+aXyJo+2s?9z~nq6$6I@{ z)7rm1i&q>hZ-rJLx3udx+QdTIrdr$%dE)1*|IG31ok8%4L%ijGL^oYd-I<`M5n}U% zZ2OL)h<{#|`hN9@9Dmk+^fG_rMNmSKLlDD9ysMLDAtQN<)-FnTPt^&%q4OWj;7Rx9 zT44yq%p4X)K_<}BZnMCgL2EQ;(a{l7e>&Jn?qx7;XE|RlNQ>ut*v#uF#f7SN@Va{h zDEam?>M7c}AoNN)1EG(?SKeoILtff$RIb)+aG=Mzrg_WN zzR9)^*RK0{P06*p;jDK1oS-u908u^T`xc|FyHO0T8n)fh7XFQCtQAZ~w8&=MLCa>g zkITo_E*0l{Ejr$G<@;IAyCL5!+J2rcfJ$N{Bc>Fa24~&A8lH(~((}d=AFFJC=#pP7 z7+ClZF#}f>uC=m4x7r(ZIfEZGY@ z2%O!O(RL(QB*J{*HNP*8ftF7v(A|mGTM1_HmVx~fv3s7o$F&{Wl!i_Fj$n3lr$#d&L9aB%z4cU5Np)N5+y%^-3!Kd?_^Gw<6nE=1>H63ALd>xv7k)?bD{_&Hi0_~XZz}{k38_TU4`{!hNx+GvW_yE zMBVVNKA*f))UBDQavivDhRj<{xK#>IRS6cjdH!nfOT)nyVxQy)yA;{UBlKUHE z+aV90cD^_bSy;qNl@)q>PLBh7SVS!Xm>@6>!>M!q8|;flmhf&0-JHe~`jJGbX|JIA zBIW-lx>jfj4aU2fi@=DOC)+rp+?V>(B+3gXz^TlwPEaxK_pmN6DmRZ6Abs z^Y37^_#Gcon#`}Lk@~X<*5*5z=P{BbjFl1EX!C~1)q+@gF-+u`gF`GRVa`L;(A`-S zizu^qo{{0PKwAs|cbgYp1MYf%cK0s6i++bsyYcLoPjD7UsGSk#-5(^uO0qe{pPdBZ zi(;KiVHQpsD5zno&?<|<1W<720Th1OA5liEK2V+DLL$R$g3?X9HFc%6|L8Q=h8Fi2 zWeRU0+A2s*xZ6^(zo1Pro(Jie+BzfhcMHu(lddn6fb;2J@VX-5YxKm%o#VmVpH{Ey N4L%tfKtCRz@n4A9_IUsR literal 0 HcmV?d00001 diff --git a/Items/Vanity/Leafy/LeafyChest_Body.png b/Items/Vanity/Leafy/LeafyChest_Body.png new file mode 100644 index 0000000000000000000000000000000000000000..87142f4838752f1a4956b4936199e790fd5383db GIT binary patch literal 2805 zcmcJPYg|%!8pmnF3Y&D*#u+yuD@`jKKNF242ri|Apm`z9bkfWVUJ9wfH1O6?tz()P z-ZDZhFV&cMgUSoJPHEF7koUw9c18z51Tz&@@iNCtFJ|BDyxH^Sf6o8&Ip6dAf6wKbp;Hvsw5Xg{% zcg6Z$4p9$_#n2O$ucjVsyA?X%stO1@h9H_35KUsPU#qRXwdKIpI+MD88;9;XjxdjR zyYu!XgC>EJwvhk4+~ zFB!Lfi(7J<_u>_nUdF=)bxAN|&YV4Sb6k@XQ-}HB216%!;l?gBLvFB~r(U|vMcHWQ zsg$v)?;cFPE*rag#^KG#fJ<`8D<(6A{Yo*|s)b}r+j55j>18wh(is#}eQi9ZZ9w)`5EZ4N4(_V;aJI-Ms{q&2=W3&ctqqd~QtvZEq zPyE6)s^QZ`&rb!S^O(#HK$aj-ZPJhDdQYl<=s%_A8t-?i{@0MdZ?(po6M=%zsW-t} zH=%B8YE@t8y}I<){BG1!s%q(CjiBKa?q2qHnz})hX520-__xA29VtE{gh3<_Yno{S zi>}2mzH@>!(i?_OeV#E&TX;tvmT^8K+w<9_6|U;j_EU6tJq;pheAp1kF~A>Zx+V_g zk5X*Ce)A=iD5vp06NBX3>7bniBF7;H)7FK$Eh2HcOk%j2g_(>cW%P6E+sde#%sZKn zj^(}+#|_?9mAabsM$O(&OFgXzubu2lf`5(i*MrR)PR4UCq#k%|qs`9qA2N@z#iF8O z2Uu#!>^TQcYjb0?tWp3b2eg%eXY>>3<`JeK_Z5**k;q*+<@OY5mi%sFNqKMN?KDaU zhVu36K_^>BC)9wWjs_3eh$m3vs7Y`wGIFf=xM*p9q6A@vyy1$MIGq||XNb^6-VEZM z+zP3unxo@;UzjnfY{+Y8-Yk(c-w{G_o`ZzX@Q6bIJ#7k1Ma5Wy34wX>h z)s!yHx(uPWM3hCP=>bW3=<7t5R%vIdt{2&2>!`$*Mm(c{lUb2HeqZcxH;oZCR*XC? zEjfUgMA~(M`@ZgWsUZtqOKi8S)d2du>Wssa#2g^G2i>Cmt)}IO6EQiA?C+(XIczII zk(KTtnKeVQTyEB7pj9nkH~hGTl{2M-ct1RMlm-tUD|cgPb6@Ulj2>~9mz2KS)ZO8{ zks5=#%}qp=Sn(fI2*Dp42RhIF6CN*HLZLREB*yP4S z5lO%ev7OfsdH76N_!DYhO1=9h9c*NAjQiGtI0ma0Qh45r5hgx5Wy+KFSa*#^sLdWr zv3kyteT^JtMO1S6!LJ;93Rr%3!aJjk2+DayN>ATAkt*4YC$LCL@nb1bY?h=UK%Quh zqse;mq#IDoW$_;py!cer!LOP+5i^F#Fy#dsi0e(i5Kz^_G2JFKG23bJeL5{qVoeUy zLfPI7Zq``mXV_flcN8rv8%M^^n0WaQ~vyC>Z7r*z} z+_#kU1W{(4hPt?)d8pN>Dl+NN$=K=2gPiu5X*wJy4#xGItXc#Yxwf0%Do%_Lmi9`DM-Fn$Kdq<|Z7bEH^uL(!M}3`&NG~;|V4r zwWJ+p2<+~Or$BR6BfyFu#ln~hZ zYusdJFSi3IRBuhlk^8Pf@8AIFVdffCerpAKm};WgSot9W`hNqCQbu5B2+zFF|KUPR!;=vv3*R?6to(sCMd4sRv|Y zT+NKL^kMKYhBr{|s literal 0 HcmV?d00001 diff --git a/Items/Vanity/Leafy/LeafyChest_FemaleBody.png b/Items/Vanity/Leafy/LeafyChest_FemaleBody.png new file mode 100644 index 0000000000000000000000000000000000000000..87142f4838752f1a4956b4936199e790fd5383db GIT binary patch literal 2805 zcmcJPYg|%!8pmnF3Y&D*#u+yuD@`jKKNF242ri|Apm`z9bkfWVUJ9wfH1O6?tz()P z-ZDZhFV&cMgUSoJPHEF7koUw9c18z51Tz&@@iNCtFJ|BDyxH^Sf6o8&Ip6dAf6wKbp;Hvsw5Xg{% zcg6Z$4p9$_#n2O$ucjVsyA?X%stO1@h9H_35KUsPU#qRXwdKIpI+MD88;9;XjxdjR zyYu!XgC>EJwvhk4+~ zFB!Lfi(7J<_u>_nUdF=)bxAN|&YV4Sb6k@XQ-}HB216%!;l?gBLvFB~r(U|vMcHWQ zsg$v)?;cFPE*rag#^KG#fJ<`8D<(6A{Yo*|s)b}r+j55j>18wh(is#}eQi9ZZ9w)`5EZ4N4(_V;aJI-Ms{q&2=W3&ctqqd~QtvZEq zPyE6)s^QZ`&rb!S^O(#HK$aj-ZPJhDdQYl<=s%_A8t-?i{@0MdZ?(po6M=%zsW-t} zH=%B8YE@t8y}I<){BG1!s%q(CjiBKa?q2qHnz})hX520-__xA29VtE{gh3<_Yno{S zi>}2mzH@>!(i?_OeV#E&TX;tvmT^8K+w<9_6|U;j_EU6tJq;pheAp1kF~A>Zx+V_g zk5X*Ce)A=iD5vp06NBX3>7bniBF7;H)7FK$Eh2HcOk%j2g_(>cW%P6E+sde#%sZKn zj^(}+#|_?9mAabsM$O(&OFgXzubu2lf`5(i*MrR)PR4UCq#k%|qs`9qA2N@z#iF8O z2Uu#!>^TQcYjb0?tWp3b2eg%eXY>>3<`JeK_Z5**k;q*+<@OY5mi%sFNqKMN?KDaU zhVu36K_^>BC)9wWjs_3eh$m3vs7Y`wGIFf=xM*p9q6A@vyy1$MIGq||XNb^6-VEZM z+zP3unxo@;UzjnfY{+Y8-Yk(c-w{G_o`ZzX@Q6bIJ#7k1Ma5Wy34wX>h z)s!yHx(uPWM3hCP=>bW3=<7t5R%vIdt{2&2>!`$*Mm(c{lUb2HeqZcxH;oZCR*XC? zEjfUgMA~(M`@ZgWsUZtqOKi8S)d2du>Wssa#2g^G2i>Cmt)}IO6EQiA?C+(XIczII zk(KTtnKeVQTyEB7pj9nkH~hGTl{2M-ct1RMlm-tUD|cgPb6@Ulj2>~9mz2KS)ZO8{ zks5=#%}qp=Sn(fI2*Dp42RhIF6CN*HLZLREB*yP4S z5lO%ev7OfsdH76N_!DYhO1=9h9c*NAjQiGtI0ma0Qh45r5hgx5Wy+KFSa*#^sLdWr zv3kyteT^JtMO1S6!LJ;93Rr%3!aJjk2+DayN>ATAkt*4YC$LCL@nb1bY?h=UK%Quh zqse;mq#IDoW$_;py!cer!LOP+5i^F#Fy#dsi0e(i5Kz^_G2JFKG23bJeL5{qVoeUy zLfPI7Zq``mXV_flcN8rv8%M^^n0WaQ~vyC>Z7r*z} z+_#kU1W{(4hPt?)d8pN>Dl+NN$=K=2gPiu5X*wJy4#xGItXc#Yxwf0%Do%_Lmi9`DM-Fn$Kdq<|Z7bEH^uL(!M}3`&NG~;|V4r zwWJ+p2<+~Or$BR6BfyFu#ln~hZ zYusdJFSi3IRBuhlk^8Pf@8AIFVdffCerpAKm};WgSot9W`hNqCQbu5B2+zFF|KUPR!;=vv3*R?6to(sCMd4sRv|Y zT+NKL^kMKYhBr{|s literal 0 HcmV?d00001 diff --git a/Items/Vanity/Leafy/LeafyFullBody.png b/Items/Vanity/Leafy/LeafyFullBody.png new file mode 100644 index 0000000000000000000000000000000000000000..3247291a6df420ab51b85a94f295a73f1001bbaf GIT binary patch literal 809 zcmV+^1J?YBP)Px#1ZP1_K>z@;j|==^1poj5Cs0gOMF0Q*Nj_0kO$u*iHRJnt<~77Jnu{N^t>T@=d>d+kvO@^bsLBNkE?l56zG-SiVAzAcA%t*(&!Dv2P;0 zUBe82O-Cor3{sRE*|oDP<#GD(;<>zXd{U0=8wi&OGqraP$P_=dS4KYgdd8CA=4Q## zJK-j)kIcp>H#l1$z^?Gg_M9bw!X<(rV|#$SASZm{ta&y1PJX}kTJB5OaCePQHUAbA-gB>+=)Ca^AJ=o$d9koG(D~0y1`Y@w@Dz@NPx#1ZP1_K>z@;j|==^1poj5Bv4FLMF0Q*Nj_0WWWJD?E?QpnOMR0L+i2XWrEUF0~ofzT&7;- z1?Jyu+Xkj#d~x-kVERz}UNDXBQrfu?<}#)zJ22nIofS;OTml1j3!R}X2tao!)m?~T zpsE577?TUA?m`yyu;VD345k@2ra@>l@bV@*n1;nROrIwM1H>FKkBWc=O2dJkITx5d z1$7Awz|tWMz+%^-SOrWU0F$(Ip`GM2C<_8yg};L7;zEd$UN8ydf8PbBFZJ4kX&5-b za0g6N-Gz*>Sk6JS5eD3#E=32s-g1NKDa8lDG|h4fMqY-w6y0U3+c$&h$XUn1^q>1} zVA?O?449^0UeLi;EY)bXxx(Fim?G!T`*r yv!FReLf-&P!vMO=XrB&o0hmj10UFnO3=9BPu4gyep1fuN00000LROQE5gKQ|0@n^0owRUq6E0R-3$%bd?@obVmh2x`!ujEQ?#W5MIp_QR zoZQRDY2;1Tj@B3qW)qbX7z*ZhF&N9!R&Rl?icaP&Fj=rd$wx3XPn@)1VR@c(jD*3| z@oW~OHh?wmct}_fn5ljzF5VY$hf9uLtLVAplLa^rMbWDTi&Yqm z6@eN^3QIe!SId>3vUYS#ewF{4pXBB0w!eth>AKbJ9e$WSj<6?08O={v&Jj8m*#C4k z$}8W+O=!QP&b~IeKHtkeC@^77FH#vTOR>VVLByY?wzCk#$ye)}IF83YC z%6?H7t4<0{nS#jERoP*J$V|>C7EbQCq8~$>%bg3Qsk5Nz!Nu)T2~ou4rp+haAnV+x{7QKB=krc^E(x@tLPg5Q_gJe-J57zsS*!$Zhr zm$o>gF1bp5cu6xykW2Ny5cK_huG4OJ`CFl{1=GZ!$So*Z*g$4Ok zpQy(P8F>Lw=Dsm8qSIXde$^x5Pra#yC~T}2vea4vsg{)fiqk?DD#4b?R+!3%3mK&X zu@C-xfljge{Ezf4tG-Wb+CA_3_DgT-(N20|FzcG&wvYQLwpYaeD>Gk8P7LncEcS8N zI*Wa_i?^Gljj;{b+%64H4DLO20S;p0h39C+aCaoF-a}M&&kt~D9%rRHrL{9*22L~j zzQ4=?ilSYG3rk!miNW8_y1m*Zb9m3c2rd+-7QrD!G_%YLsUgMSkd873s^Mn39XR`U zL@FE4A}VggF`MTtEmnMU^bxv;>XR}X^|EBq#PH@4iEMmmmaELc0p{M%Ffqi7AF=Vp zFo}&PeQ1`KvAg#J8)1xzfs^GTr@+}iLqIa!qyO)KBZ&n=*o-^jdo}14p^A%md635g zKv~mnj~2G1@>E<9_IN<=AcZ-)mYQ?G_R?OZP&PTW)75V%VMsT^}&P9U(c@53@S1) zI7u8JfBYHp1+ek%16yn?Bn9X+bW?jprCrpSXhB22ht;a@vxx{@@X$%wUG*~RzY%gb zqlWOo?TwTb)F5|&8o~#tAtwN8Kvqyg_zXwLeFe3cT`>SPA$c9O|9;EssI8;+uir+_ dqw(MPa*INwvX&ND(qevx)F4`5&5^U5e*naoTND5Q literal 0 HcmV?d00001 diff --git a/Items/Vanity/Leafy/LeafyLegs.cs b/Items/Vanity/Leafy/LeafyLegs.cs new file mode 100644 index 0000000..ff35613 --- /dev/null +++ b/Items/Vanity/Leafy/LeafyLegs.cs @@ -0,0 +1,24 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Items.Vanity.Leafy; + +[AutoloadEquip(EquipType.Legs)] +public class LeafyLegs : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Leafia Legs"); + Tooltip.SetDefault("~~ Donator Item ~~"); + } + + public override void SetDefaults() + { + Item.width = 22; + Item.height = 18; + Item.rare = ItemRarityID.Blue; + Item.vanity = true; + Item.value = Item.sellPrice(0, 0, 20, 0); + } +} diff --git a/Items/Vanity/Leafy/LeafyLegs.png b/Items/Vanity/Leafy/LeafyLegs.png new file mode 100644 index 0000000000000000000000000000000000000000..46db7ac8a7a50fb0b810aa0203a4075199361837 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8g!!3HGbRrPd%6k~CayA#8@b22Z19F}xPUq=Rp zjs4tz5?O(K=>VS)S0L?a7kK+%$>a5*zwfnfJw2gd$LwXP7F`}z+~MCvfYRGMT^vI! z{F74}nEZDi_#dDaw&CxEstr*|R}C90O&D|nr1;cKwVfjc4t#v4IKwZwVMj@rqRVN1 z#YzKS=E|+*3w1aa%JV&$)$Kg6c^Tr+9ZezcYWmfIeXGboFyt=akR{05<<@ A~5FI+CrN-Dmtxc8!4%gC&xrobQCSkOO9JuA)r!dIAFtB*C{JD zbVd<`Q>K-gR*H&>=I(T11)T)NM6tpfU zHm%>i9s~kyLPmxs*s~7^i-(dOv zPxia}cQJ{_?HPGAo;UDMv!W!olT|uZp=?QtuASS@3p0Sp z(EFT|Zq6T)6T;s^cG-5M<*d2AKCfx(*3^Zsf_;2;0C%>4chkxmf2;e_E%==4j$?@a zufxJUx7L8)?UIdND0AbjO_&KXS!tFJxtuu)zSBfe3^}_~`A7{;TdAAaI5!Zq)6U2q znf?U1`1R2u!v@=H>ywY8W!xN{u)tO;UYd~E#%BGCEsKG=#TLy<)~jOO?a3n@7@JG1 z5H&QTJwo}O+`KX^0X`b`(A(w+#a%LvgrwOHZZ2)&m-goKD3;M7O*@m$EmXe^+-o!U z$wj9`)!mn^S*)ogg^)|YZyJn!w5*=#(@+gItA52iZjpwZ#_Bq3J<{1luVk-Rp1OX- z)P+{^%uKl!F7#UT41oy&NarYKo0Eh7;B)n4tbjQQu4b^@1kfVHx|MdwRuVd#yrZ%5gRm=_C9e-SWij!%g_ud2lh z3pH;}k)aO2(|wHvAqEVIcrFT0)?=={CBLkeuvAqwnRT$%*7Heqw+)6jsEh&n?r3A z$M1!3xg4>JpY^twYy04jtCwssyw8F4^MM;bP!-K-IkvCKnQmvT|{d*3)X z;MOmYopO1ewkD(;GOTQ|^oqw!Y~~m>`*wjwG;!j^OQYglUY67}Jj=}ZIQ)hV6b?vTV4tFHplSVSU2 zyMqpS!Qea?^a7>n(vtaE3Q>Sg;H-*~=z_*ka;U5Fiz@gUcDgQ9*Z1%)az#?LzBkc&QpBh*^tel{rj%^0YjdPN5|d{^(%a^rWx@s&1Z>f|ybXdN_S; zhz8kQpiIK=$MNAdk1Eru5hiZm2u8YDb^}J}Q1vixIghN2 z4W@#TZJb}B!TsKB7_&JevcPQ7dB9f1?eneQjO*E%L*4&n*A$YIaUPyS3?>aIch0rZKI@|$6d zZZmJH?KPGHK1~bYkFy@!tDESdJ{BJ;V@yL$v5cd=k_2@sOWU(Tg)4oKUT^i7cZG4$ z$b6OfuD?!A9BNOA(*!*jk$3WAO3jKPhGBFV^FoY^WHa%>G>Y!E~|jQDh>Xe_?)}px3*vW?bs>BIjP0Vw-# zMtruO1UFzJA^wrV09}tEM_}_#J9EEs zj4(G4qa{5*Cxh0Mw1s9AE*JvsbpW~@dMfHVBbopyrUL&FR*D3uydKjbF|dzKvYSBX rir9wAa%u42E=T1)6nnl5-sxxANxL!tyuINAtX4)Ij}31Q%cT7m&dd*f literal 0 HcmV?d00001 diff --git a/Items/Vanity/PlayerSpriteSheetTemplate.png b/Items/Vanity/PlayerSpriteSheetTemplate.png new file mode 100644 index 0000000000000000000000000000000000000000..0ecb469a71aaea09a1c59d63a3123fab8429f3f2 GIT binary patch literal 5133 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 + Item.value = Item.sellPrice(0, 8, 50, 0); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.Diamond, 5); + val.AddIngredient(ItemID.Emerald, 5); + val.AddIngredient(ItemID.Sapphire, 5); + val.AddIngredient(ItemID.Ruby, 5); + val.AddIngredient(ItemID.Topaz, 5); + val.AddIngredient(ItemID.Amethyst, 5); + val.AddRecipeGroup("FabusMod:DemoniteBar", 10); + val.AddTile(TileID.Books); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/Coalescence/Coalescence.png b/Items/Weapons/Magic/Coalescence/Coalescence.png new file mode 100644 index 0000000000000000000000000000000000000000..655c61500e8bf8358ba6c480d8893040266f8b31 GIT binary patch literal 461 zcmV;;0W$uHP)Px#1ZP1_K>z@;j|==^1poj5Bv4FLMF0Q*CM!g>P>5P-h{wH6Iz(nWTqbylK4>^> zi<`9n|Np?t+!NOuYybcOM@d9MR7gwB(=kiKKp4jHQ^cw66DHxli$lRJlUOhc;?~7Q?BrtMxjX@1ICAH3x&QJcr38K?x1|1A zEo%H`m*{mmwtCibw%&3UQg*r7z`9HFg@BG&E9uqLT@;Yzl7wqIlWF2!~`m|QeWzOYK^`~9_Ttcnz#Tb{7!om~xf zu`(%|jI^jeU&TIrzhIevp_G~Wc++1S-_>4|vcE~$Q5<7$dp)fGb4VfMS9MU`z@E>w zjOUB--I?B*l$CZ4b7A^C!Vgx{iTdAvzl`mu_ zDZ9D9#vZp$uthQ!j*wAG5p$KX@Pv#~<|<>Jg-R^|p6IMHXgh)Q00000NkvXXu0mjf DJ`&Gq literal 0 HcmV?d00001 diff --git a/Items/Weapons/Magic/Coalescence/DelightfulDevastation.cs b/Items/Weapons/Magic/Coalescence/DelightfulDevastation.cs new file mode 100644 index 0000000..b01f010 --- /dev/null +++ b/Items/Weapons/Magic/Coalescence/DelightfulDevastation.cs @@ -0,0 +1,41 @@ +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Magic.Coalescence; + +public class DelightfulDevastation : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Delightful Devastation"); + Tooltip.SetDefault("Enemies are invulnerable for 3 frames after getting hit \nVaporize your foes out of existence with the power of rainbows! \nInflicts the [c/AB2C2C:R][c/F3821B:a][c/E6AF31:i][c/63B465:n][c/82E8E8:b][c/9EF3EF:o][c/2BA0B5:w][c/734679:'s ][c/AB2C2C:W][c/F3821B:r][c/E6AF31:a][c/63B465:t][c/82E8E8:h] debuff for 2 seconds, and the [c/DAD45E:Midas] debuff for 3 seconds on hit\n[c/AB2C2C:R][c/F3821B:a][c/E6AF31:i][c/63B465:n][c/82E8E8:b][c/9EF3EF:o][c/2BA0B5:w][c/734679:'s ][c/AB2C2C:W][c/F3821B:r][c/E6AF31:a][c/63B465:t][c/82E8E8:h] causes enemies to lose life rapidly \n[c/DAD45E:Midas] causes enemies to drop more money on death "); + } + + public override void SetDefaults() + { + Item.damage = 160; + Item.noMelee = true; + Item.channel = true; + Item.mana = 15; + Item.expert = true; + Item.width = 30; + Item.height = 32; + Item.useTime = 20; + Item.UseSound = SoundID.Item13; + Item.useStyle = ItemUseStyleID.Shoot; + Item.shootSpeed = 14f; + Item.useAnimation = 10; + Item.shoot = ModContent.ProjectileType(); + Item.value = Item.sellPrice(2, 40, 0, 0); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 10); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/Coalescence/DelightfulDevastation.png b/Items/Weapons/Magic/Coalescence/DelightfulDevastation.png new file mode 100644 index 0000000000000000000000000000000000000000..1917521b051ff60098683d745f53dcbd9e101fd3 GIT binary patch literal 531 zcmV+u0_^>XP)Px#1ZP1_K>z@;j|==^1poj5El^BUMF0Q*Bo{3`Aw6+bdRIDNfPa=%|0~Y_008#w z|H}aXjsQ~v%>O+A0A~LHxBuNaSsDNU0fb3JK~z{r)z-f+17QHh@t2q^ETTOY>D53= zq*fxaY8s0~BErUB;7{-;urZjJq&ADxCT*H(Led|x&{ixgY)GE>eQtQ`ymb=q>sh{T zAo=9(-qRy~Ie$3yp?<{bkCm?eX0Pg>FS3}@c>f@-xz_75YLfpSF{PRL46eE6LsPcZ zKuvP@#kzE0ViY~v-$U27w$a=3E7T-+S8S5bwBONEOd51KS8Nnf%H0#2q{rGG?3n1pgg%uQqCPQM>)T{JfXO#QqDawr_1^M<^Nbem2&QiIm)@HQqGcCh)?sv V+G)Ooq#6JK002ovPDHLkV1ivZ_Ll$v literal 0 HcmV?d00001 diff --git a/Items/Weapons/Magic/Coalescence/GoldenVengeance.cs b/Items/Weapons/Magic/Coalescence/GoldenVengeance.cs new file mode 100644 index 0000000..90773b0 --- /dev/null +++ b/Items/Weapons/Magic/Coalescence/GoldenVengeance.cs @@ -0,0 +1,41 @@ +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Magic.Coalescence; + +public class GoldenVengeance : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Golden Vengeance"); + Tooltip.SetDefault("Enemies are invulnerable for 4 frames after getting hit \nPurify your foes out of existence with a powerful laser beam! \nInflicts the [c/FFFB62:Holy Smite] debuff for 4 seconds, and the [c/DAD45E:Midas] debuff for 3 seconds on hit\n[c/FFFB62:Holy Smite] causes enemies to lose life quickly \n[c/DAD45E:Midas] causes enemies to drop more money on death"); + } + + public override void SetDefaults() + { + Item.damage = 48; + Item.noMelee = true; + Item.channel = true; + Item.mana = 10; + Item.expert = true; + Item.width = 28; + Item.height = 30; + Item.useTime = 20; + Item.UseSound = SoundID.Item13; + Item.useStyle = ItemUseStyleID.Shoot; + Item.shootSpeed = 14f; + Item.useAnimation = 20; + Item.shoot = ModContent.ProjectileType(); + Item.value = Item.sellPrice(0, 27, 50, 0); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 12); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/Coalescence/GoldenVengeance.png b/Items/Weapons/Magic/Coalescence/GoldenVengeance.png new file mode 100644 index 0000000000000000000000000000000000000000..79a14867de6897f8ae36e5044038328f5faab3c5 GIT binary patch literal 498 zcmVPx#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*I}s7Yg-P1fUJ)cHUcuUS)A9)v7C)$r zP;foa0004XNkl})qw6Kf{o*;#SMT&r6VQnD@ z78Zga9>7A-Mz9c+fC`rBZ0us8Ie4Pjww=203u&2+i{IOM?3}>W$xXQX(S^^~=U`i@ za0=NrV=7Y_TY(i8x@pb8JZ*%(); + Item.value = Item.sellPrice(0, 16, 50, 0); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType(), 1); + val.AddIngredient(ItemID.HallowedBar, 14); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/Coalescence/HeavensVengeance.png b/Items/Weapons/Magic/Coalescence/HeavensVengeance.png new file mode 100644 index 0000000000000000000000000000000000000000..e6168892b99d7019c4ca53e96dcd7fbaccd53712 GIT binary patch literal 508 zcmVPx#1ZP1_K>z@;j|==^1poj5Ay7 zdbx#1b_QWvsc;I}X2w*eXQ~@kSZH8z8s@eU77MSC>o%DR*~;koNn<~c)L%Y=6h=?tBmox%$n!Rx0bvDE=2>8U2qTT8ij>*CI+dg^2!A-9Dnlid)DPElIML yA>I|r{e|Lf)H5j$-WAGCJWHl|%7SNwqUZ-;yx_-9=HmAN0000(); + Item.value = Item.sellPrice(0, 12, 50, 0); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.HellstoneBar, 16); + val.AddTile(TileID.Hellforge); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/Coalescence/HellfireBeam.png b/Items/Weapons/Magic/Coalescence/HellfireBeam.png new file mode 100644 index 0000000000000000000000000000000000000000..97f0e9264d8003aa172ff3588a09d45ac46ec9a3 GIT binary patch literal 449 zcmV;y0Y3hTP)Px#1ZP1_K>z@;j|==^1poj5Bv4FLMF0Q*CM!g^Z%|rkh~zs&_jV#WL}s2SHFQ5Y zi<`9n|Np?t+zOy(LI3~(J4r-AR7gwB)3Hl}K^(^MH=!X^9Nx&?p#~MANpkG1(J^Qf zB5Cw*aCDNUFa&7{8eO#|$VnP3ha6g4bP5S-D0t3iIr#D3HN1D<?+FO`S!bloji`PaZ-PUl1wj7>Yq@OwWmrFR^PGg=sChJ zKGb_%>W@&8^|DrTjO+be9epU1XlJ6PT?wtP|| zQ<=MaNa5S-5HI#h$5=_KXDVav@1Z1Rs^3nW@xP#@q{;BxT+HHMUW|#Ky^( rKSD++Ma)*l{1Y-tnXQZ^EDVA_zj(RogzV7#00000NkvXXu0mjf`@F-# literal 0 HcmV?d00001 diff --git a/Items/Weapons/Magic/FusionNeedlers/FusedWish.cs b/Items/Weapons/Magic/FusionNeedlers/FusedWish.cs new file mode 100644 index 0000000..51185b1 --- /dev/null +++ b/Items/Weapons/Magic/FusionNeedlers/FusedWish.cs @@ -0,0 +1,48 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Magic.FusionNeedlers; + +public class FusedWish : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Fused Wish"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \nShoots homing rainbow needles\n[c/FF0000:Watch your mana!]"); + } + + public override void SetDefaults() + { + Item.damage = 160; + Item.mana = 3; + Item.width = 80; + Item.height = 54; + Item.useTime = 3; + Item.useAnimation = 4; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 2f; + Item.value = Item.sellPrice(2, 60, 0, 0); + Item.UseSound = SoundID.Item39; + Item.autoReuse = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 16f; + Item.expert = true; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-2f, 2f); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 12); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/FusionNeedlers/FusedWish.png b/Items/Weapons/Magic/FusionNeedlers/FusedWish.png new file mode 100644 index 0000000000000000000000000000000000000000..645bb85930442ef3444c5cdcea8d3ceaa06da5ac GIT binary patch literal 1860 zcmV-K2fO%*P)Px#1ZP1_K>z@;j|==^1poj5u24)=MF0Q*1Q`oBFm+$whM52YzOPLouuBpd6+1M4 z83q6u001E#9u;vhFkmtn4gmaWY=d}ucWrPEOdp5{{jJTWoQ4602vej6&U~s z83X_s7yuF(016oh02C7d6#r@f|JVR!U0(mo0M7paRsSmh_U!<-{{UwHQv%Gs0?eqW zGQ|J`ElVp*{{T-v~Oq>i$jw0^Le!=X5fm8*NR5;M2C-^=$o@AI;Kuc!CD_q{^k`M~kH z_xhgmo}KTr@44rkcM)}&k`ij^6RiV75@7_=%@lYg?L|5z8`8Gc!}^vRYt6_^=oM7%CDfrFLE;CL^@J3SxtnNHdR1>e7X;M zOU(qRpL0wk>nOi*koBwsLz3V?M(V@D`=KPLBmJBh6gn_g*$gEnCy?lPh5N_*_0Ja6 zQM@jH(?gDUy!zxGD094ZV4CqpGpcmtNJ+;!C?m#5GLe)p zQG8P+R60sJa7uj~O4{}vhw}R9WIbNifgy>|d7b4i;{%dk{T`G~By=QUE_q}5D^Swa z-2;86_I+qhTsR}DogtwE=)m^*yP$n1{)YCn`~fxP*oK*}L1RS_mDj2@d)s4BI*X2) zn>!!ca_S)T&WC40CA>bTd+g6)9T<`X2WD>G2+bSTDRFyUDRf0-7@AvkJM^aopF^38 zq{GNFFO@-e?bA85_vA?^F*(tMoJ~pBff&^5kDCi)Z$VU^`-?O}& z)Z@>;0R8l%ZBX8a?Gt$)B4=IZN_m~kmCRYOFCgj%om$nK>JDhl`9`QZaE;bFElWOV zfv&>8N-cOmS7c6&|D(swIxr+-?REh_CradXJ3pBN&0pq*%H=6F1kIi?1Ik=zy3Y-T ztD(OfUJqrioOREQ&|`;whMJJy?{WsT6T{{}u5gHTU`WP>{{kilHVx~srjrP-lg{hh zaX0kirH7y`ZgX_tU32vH9eegdTL=50g!dy4Mzh^l8qUUTZ`VV!n;(U)U8fzpXt}>o||@a~K-zK{`^8z+TPfL<$p0H}H^$^Vu1&X&=&|OmOhTj$yD=q8pM^Gl zqa9**V=QCv9B7(#W$t67<*vtzi080U zC!py%m193l=e+V%j{PFMpFNdJGoAw(0nT!ty;}qI`#vUjE7;D}%L?$Gu$>9FUIitl z&*?zZshnw-#Pno>?2mMm>AE!=bP}~sCR`%C(UduW-~0G96EQ_zM$pf>5a`AJX3HB@5r?dPVORNJ!lHfpzU&Q4TsuSm42ldO962B)@`F-uX!+Za; z9g?h*NV1N#4h)I$DgC0tNAS5{#8Y)HG1Zq(>C66@`pwVjyr5?svL5kstaV^WE;_0X zeh!q*VT4k3u3vrA=dvB{SQEK(oi4``>%fp02QVwE2u0#V%qh-aYdXb=kYAKW!}_cj zw7#i7vcBV-(S`r-%;HYr{aGBxI)$fltjFv9unr7KVCMvd-wREDD3%xOjJ3 y`(~QOC3JJpepm-ug5msT@V6tKSO()); + val.AddIngredient(ItemID.FragmentVortex, 12); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/FusionNeedlers/FusedXmas.png b/Items/Weapons/Magic/FusionNeedlers/FusedXmas.png new file mode 100644 index 0000000000000000000000000000000000000000..bb1ab5c121ec9c7f9002c0827b18aa261707950a GIT binary patch literal 1628 zcmV-i2BZ0jP)Px#1ZP1_K>z@;j|==^1poj5X;4g5MF0Q*1Q`n%LVv{o17F{UzOPLouuBpd6+1M4 zAs!wMOd%CZ)ImyRaH+Bf%;(knfO@X&&~!M4+%Q1+(bG;654{Om5bV5N7#O4J7Q|@42(z) z_k36b!d8yx+IPk$kn6nJD>5#*{bRi^Ae(Q08L4aM42(!}uZA_L$IC;zjj;l}mX#x> zequEZ=x1c`HN2MC8co6)#db#;Yw)_Zz60qD%o54H%016Yb)D!z4sHJ&NlcYvdm>HL zagA4q{M#Ex>iP+5qODP;{UF;p10#}QAS?C$n%j`X)=2hK)^rD6Z&iB+VlHd2!RN$kN?a$iefC$eGGT$c5$CBLDj6G}0E6QPMz;o47eJOJo>G zq=|$^5>}>R+jB@VI;K|B*IV92+QQ1yz|-s7kc8&RaS=H__9KnwxGR^eM;`yZ8!62z zZjB=c+J8bi1Lql|fn1gAa^{c|dsRheRx2}TL`i%MDS7y*XOL~}pCPNNtC3SvQ^-&H zjv{T5bMt8DFw!(9mW-=8d%lQYoWZ_x21Z0{V9fKqs5wxFGcY0<2GYEt`e*T)lr_GUc$SXbu4O|na?7LNB1!3-s(8WDrAW?&UmQG$ zB+IIl$>eOmGI%6bgeBHB5y#mmEMve}zWJWFRdS9L*42KTQ( zR@4n33EOiHTvlF=JbCOGGD+fiGD%|YjJgW5T~YTC(iXQ0XBq7ZBhN%?&%J`=83V6o z$TJbncbjW=B28x^TovVNxcHZU63-N8zX@gzp*b|>OwS%aGR{1RoIl-}NS4tWD39Rx zUsC&;S7m67>1s^vmPe3XUn+AeR;W30a#B^g^W;}ZTXg5n{EN`xuEt!Y7!A~2f0IY- zPu}?;l1xphW4z|B^ef6HXuRo4^5U(_k&8B#B8i+!mv`Tf)Lq$@XDaMh!tLd1>}}AyF>K~p}kALdd*#U-&FCi<`P|dd6&NJcu3H3$?a{8bp}Qx z*Wa_Ywxr@$EVXLv$DgY>UtJDUd*8e;|05E0T*Noef3SVx?F^iO5z+2huCCGoR#*4m znx?sm?R8bvwbzZu7G1xow)${fwsWpC@M^<1g|>ttYI_~NQMAei+i^Gp9d=~PY-eC3 aJnvuobc7bJIQ;?u0000()); + val.AddIngredient(ItemID.Razorpine); + val.AddTile(TileID.AdamantiteForge); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/FusionNeedlers/FusionNeedler.png b/Items/Weapons/Magic/FusionNeedlers/FusionNeedler.png new file mode 100644 index 0000000000000000000000000000000000000000..1ac21cc52930f2f17c20010e9d181edcadb27396 GIT binary patch literal 1299 zcmV+u1?>8XP)Px#1ZP1_K>z@;j|==^1poj5QBX`&MF0Q*1Q`oo--aQuOA;9szOPLgLVvs#79k!U z4oo2xaWR8w6DTP)|W3r9lMUq@bXi7D*`Idf)Hy#I^|*_prnr(m$BcT_)Ps&7X~Qdp6ZR${#O*CCTel0A+~m?iOV zJK2iJ{cS6m?EVtjUU}<5xUS?VJks`E!Ym0SjFo79^%(A~Xo88ZGP;Bkxu4vAikAU@ z_xfPTNE5;1G}f%Z>(a^xuuIq&5l9#-ael#Kn1oH7Oe*^f3E$VzxP1Ul-}f92n{ZtTm`R8>xG#xer^*kVU}orzcOiri6iU_ z4sF{H|L9etTz~&h_*DHRI4rrf%V8#LaQ-crFj?}vh&(^GBNNT@E}XR#e(~WEoKZLv zmh`>&2)l$?VoVrE&Fv{eu&g{QKBGtV36k|YcEPvq-Gz&ai{VHl0ynhXhr=TK)*lbM zVN;)`JHN2>_}`UFm?heTWqV%2sF8kSH7qO2%5_%mfk}S7N?`xHcW~L3t?>Pas_)=v zDicF^9AY~v5{`oWJe}|TzU1)7C2WKQ5*Dw7NK9_cN&i_Q za=WGJFX7gz#KhzbslcY^<-zRBTCQG&Bui~Tc+6Fi* zJTBXF3A4nQF!|eNQV6$`$tpRp1m5lhtYhY54bjs&!Q*flQ=uL(%^=aDVn;p9@s`ne}hsIDcuB zn(1@Y(v4QclqelchH3OCvj1~4{Up&QOwN$c{#M^DS1p(b(`rTOhD~tu6P3)l^X9=V zsqL_Ba&*_8a?M}jRx8E{W5RUnPwZouklkgQ;XZ$*H4;&Cth(mJ6;l(_HqL=3yjlb6 zR$RH=p+R3tLmtzNr?SrSN?Ocw95Y${iy9xK+HaRFw+ba#!IgkM+Q z!@O%GE6(?McZk=9@~#mp&x(hI=W)5N3wC#n#)x>rWU}s5t92^Vd`Mo+vmMinobOAR zps86E@Yip(uuPOZt`2!Vgy$8u9pVyZNg!cz-o<~r5M4z~eSj{B#Ql5cKP8YbN!Uur z{cS6l?EVtjp6pXy!o~>qFKSC%!Ymops{RYeWQ}%mUBayJygzHApH3qX8Xy1w002ov JPDHLkV1mzxZX*By literal 0 HcmV?d00001 diff --git a/Items/Weapons/Magic/IllusoryMirror.cs b/Items/Weapons/Magic/IllusoryMirror.cs new file mode 100644 index 0000000..b5ade3b --- /dev/null +++ b/Items/Weapons/Magic/IllusoryMirror.cs @@ -0,0 +1,93 @@ +using FabusMod.Projectiles.IllusoryMirror; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Magic; + +public class IllusoryMirror : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Illusory Mirror"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots]\nShoots 5 instant beams in quick succession\nUsing uses 50 Mana to summon a [c/E6A6CF:Blossom] at the player's position for 20 seconds:\n - Being around the [c/E6A6CF:Blossom] buffs HP regeneration, increases attack speed, and increases magic damage by 15%\n - [c/E6A6CF:Blossom] has a cooldown of [c/CA4646:50 seconds] once it disappears\nBest used on 'High' video quality!"); + } + + public override void SetDefaults() + { + Item.CloneDefaults(ItemID.ShadowbeamStaff); + Item.damage = 175; + Item.noMelee = true; + Item.mana = 7; + Item.width = 29; + Item.height = 21; + Item.useTime = 5; + Item.useAnimation = 25; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.value = Item.sellPrice(0, 11, 60, 0); + Item.autoReuse = true; + Item.shootSpeed = 7f; + Item.expert = true; + Item.reuseDelay = 20; + Item.UseSound = SoundID.Item72; + Item.shoot = ModContent.ProjectileType(); + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(4f, 0f); + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2) + { + if (!player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType())) + { + Item.useTime = 25; + Item.useAnimation = 25; + Item.shootSpeed = 0f; + Item.mana = 50; + player.AddBuff(ModContent.BuffType(), 1200, true); + Item.shoot = ModContent.ProjectileType(); + Item.UseSound = SoundID.Item76; + } + } + else if (player.HasBuff(ModContent.BuffType())) + { + Item.useTime = 4; + Item.useAnimation = 20; + Item.shootSpeed = 7f; + Item.mana = 7; + Item.shoot = ModContent.ProjectileType(); + Item.UseSound = SoundID.Item72; + } + else + { + Item.useAnimation = 25; + Item.useTime = 5; + Item.shootSpeed = 7f; + Item.mana = 7; + Item.shoot = ModContent.ProjectileType(); + Item.UseSound = SoundID.Item72; + } + return this.CanUseItem(player); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.LifeFruit, 5); + val.AddIngredient(ItemID.LifeCrystal, 5); + val.AddIngredient(ItemID.FragmentNebula, 14); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/IllusoryMirror.png b/Items/Weapons/Magic/IllusoryMirror.png new file mode 100644 index 0000000000000000000000000000000000000000..a0b13e36904d6807f03075949e4dfa3610b65c82 GIT binary patch literal 840 zcmV-O1GoH%P)Px#1ZP1_K>z@;j|==^1poj5Gf+%aMF0Q*PE=edI#oH&fv8ZtJc(+Cgn~XqOxkd- zyu7@(nyBRC<>0!^a&d2eI+1>mo}IMD#At=q0008BNklz%_G8A z$`&dtE(vO~&)`ULG*xdgm|U!GRmX z$w&;hpFWXzbz`@1KJ80SFD~`X$yRV1D%6k(HGW<cahund_)q zcq{Y`p{20IG{4t!1+z=lvh=DatD*X2Iwfn7LS!?k<`& z-8s|Cp$Il45&jxS;&cQP&Op&F33p>N&Ytg*=c%Kfb<81CWSR19xC}M#f1-EmvItGk zET19qc5~B;AUf(zT)e$XVV$ zz60FbS<>8n2`@x*#S zcqhyyRk$rpr1pnQuV*Mdy`3vEq|9@v9ePd)z7@};o-;DR^QYZD_%tVGYRC??OFl=K zde+l!=|jJ=ZX`~rf@XxR8%e%RLzkFI#yW8tlezo^?_9-S-yvb0(n4B()_lga7%0?h zjOOjh28>rNi<#!NXffnWZy~TC3lrQU4vFrS9mBH0uD!FjvVN}q3(EhG1pEW5H?u~Z Soi~;M0000 uses 50 Mana to summon a [c/82E8E8:Spectral Blossom] at the player's position for 20 seconds:\n - Being around the [c/82E8E8:Spectral Blossom] buffs HP regeneration, increases attack speed, and increases magic damage by 18%\n - Being around the [c/82E8E8:Spectral Blossom] also increases invincibility time after being hit, and has a cooldown of [c/BF5E3B:50 seconds] once it disappears\nBest used on 'High' video quality!"); + } + + public override void SetDefaults() + { + Item.CloneDefaults(ItemID.ShadowbeamStaff); + Item.damage = 325; + Item.noMelee = true; + Item.mana = 6; + Item.width = 33; + Item.height = 25; + Item.useTime = 4; + Item.useAnimation = 24; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.value = Item.sellPrice(2, 50, 0, 0); + Item.autoReuse = true; + Item.shootSpeed = 7f; + Item.expert = true; + Item.reuseDelay = 20; + Item.UseSound = SoundID.Item72; + Item.shoot = ModContent.ProjectileType(); + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(4f, 0f); + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2) + { + if (!player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType())) + { + Item.useTime = 25; + Item.useAnimation = 25; + Item.shootSpeed = 0f; + Item.mana = 50; + player.AddBuff(ModContent.BuffType(), 1200, true); + Item.shoot = ModContent.ProjectileType(); + Item.UseSound = SoundID.Item76; + Item.reuseDelay = 20; + } + } + else if (player.HasBuff(ModContent.BuffType())) + { + Item.useTime = 3; + Item.useAnimation = 16; + Item.shootSpeed = 7f; + Item.mana = 6; + Item.shoot = ModContent.ProjectileType(); + Item.UseSound = SoundID.Item72; + Item.reuseDelay = 18; + } + else + { + Item.useAnimation = 24; + Item.useTime = 4; + Item.shootSpeed = 7f; + Item.mana = 6; + Item.shoot = ModContent.ProjectileType(); + Item.UseSound = SoundID.Item72; + Item.reuseDelay = 20; + } + return this.CanUseItem(player); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 14); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/SpectralIllusion.png b/Items/Weapons/Magic/SpectralIllusion.png new file mode 100644 index 0000000000000000000000000000000000000000..ef4dca55615b1804667c59a9df1026735ccf428e GIT binary patch literal 1328 zcmV-01<(44P)X1^@s6zs*Ol00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj5T2M?>MF0Q*Bo{4)Z;sCY0C81%+HkK^0?hx*003tH z)6>&eI$&5>Scr&-!^6WpAw2-M|No8vRsSozyu7!Xr~vlupP!%P zw8pfwv~X~6|2+WFLbL+_00eYNL_t(YORbh~Xw_91$G=+zD|!)8lv`BNq{Q8}u@-2# zB6<;~jBvZVg0j0QK`(-~g0UNdDAV=AT|uF!oJy2yuEJK@izT_M_+s7MyekFowHoYC zX|)%zE1T`t`9Ame{C4hdce9Znb~xvr^PKa1f6sZ&IfG5{0|Ccv{%3B*oP4*IfyPk7 zk`}#Hb3}v=ytJ%+kbWx70O-r{VXV)Qd z{8~|^2%%lYV-<*};#sz=Y0r-wzwHWUy5GWQ+bXc}!#Ez^__@rxoklbuDxlkiq1ja_kIP67*TX59~VE^{fhGz@bX649CNkBvg9}M8VkE7Cl z;_;PI-?%uAi@zkL{rdJcB!B)6IDIdU{oRAwyKAJMgpO=NSN&0`osj}Be`Gt@V1isY zaT$n-y*V`yw{ygy9pCW)ll(Moi;0u#nmH_s9M^uG0pNrr? z%R#qyevT{&BP5kdNlngwdC4TBxhE_E#A_(Brv^5=ota_sqsVSEPiV5tU@}SmYS>ymgCdDy%HgNyG4Ww z_&sk#j!^P)}Hn8jqPKoW8JxU*;d@yF)>Y$dQ*@=H*D;i*HJP%spUy zV00^7hK7a^`X?*`XsqX)&o`lCEfjFDIulKbWBDi;!9&4n=_CFe(FbfU67FfB5Jupe z4^GQZIwzXVYELJ0&gYx2Cj~CM>mI3XTh_Gasn`;!@ghPY`Oj3!`dJIB5dCtJ>w=*@ z1<*zv`vusj7|xkJoB2;n1<>9*qKXROV6Fuf6{%aGTa^o4i*x9l=v7WUC-&DZ=G=yJ m7K=bGZaPQ9wiN#V9N=H=7wGtnqtna)0000(); + Item.shootSpeed = 40f; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 4; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(10f)); + Projectile.NewProjectile(source, position, perturbedSpeed, type, damage, knockback); + } + return false; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 6); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/Staffs/GoldenStaff.png b/Items/Weapons/Magic/Staffs/GoldenStaff.png new file mode 100644 index 0000000000000000000000000000000000000000..ed3614e700e552ca8e80260d122413fbb3538ec3 GIT binary patch literal 934 zcmV;X16lluP)Px#1ZP1_K>z@;j|==^1poj5Cs0gOMF0Q*I}s7{^Xb~uUh?vGwXQE5e`G(Xj2(w- zk%<6a!P>#{|E;7ZI6@}N0009WNkl3af_wH}v&WVD>U)*Z z=%2zf0gs1=fBQGt^X_Dul;!2elo*8m53iJMjX7mBnl>1rhDJutDWRdJQ)!KQ=MCkC zlF)5=-3wMuBIyr%rvpEor*TW;lz)y&+cgzR9Ca!0mV z3AQ#N8XYZ|Xv==pacj+VrMH5yD;L1z!ROzU(73!#dFpn));|vnDCx3ZZ9+7f6im+U zex_q;2Ywtlqf9yv+rRHoQj?h6-El}s*JTA{KN;2}M59TuT{eW*h1d5^Q?6ZgM46UJ zh(^-}^PbVBw@Z}Nrmc0mD}j(nh(^bYSGysjz?{4??~&50Mejawj-~}qm=#jji+<&& z?JJaao?_JF&C93C^M}7EF~xoC^}II~(dcO52~WCwQpa@9hfgjjGws)vM=#D$PM$hN z33fkOH#eVP&03QXjTUm$c-_te1K#^r@XS_cs+Asn5AG@B?xm24!KB@-c)Jv!yL$Uj zkJhe?vVOxxCEV}nRxVz)Qt7?1fN0cW=OeJYpsU)I4`7rhZ@V*d*3L=Td16@Euz9aC z?p_>%MtQQimR&k#zsP)KpGb{*Yguc+TRB;ynCJSIkV%L}!PbfgCapnWKJwm`PYAVb z&2V3@yC*dX(WnPcI%zG2@XXlW;F(WKH0oiEdL~1=n2;IU8^&r9qESo8B-l9#d}lJ& zt~p+!Q42<|_HEU1sJqfF?aJwIn}lc-Fv&i1QzrlaJYWs+`)SR;w1`GMlOZ#l2mjh6 zl&;aSn*84>J)@XpPKMs9O*Bf!XtCC$rSyzKv6+MtFHq)$ literal 0 HcmV?d00001 diff --git a/Items/Weapons/Magic/Staffs/NatureStaff.cs b/Items/Weapons/Magic/Staffs/NatureStaff.cs new file mode 100644 index 0000000..8aaab8b --- /dev/null +++ b/Items/Weapons/Magic/Staffs/NatureStaff.cs @@ -0,0 +1,60 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Magic.Staffs; + +public class NatureStaff : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Nature Staff"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \nShoots three oval-shaped magic projectiles twice in quick succession \nHas a 25% chance of inflicting the [c/0E3517:Poisoned] debuff for 3 seconds \nHas a high critical hit chance"); + Item.staff[Item.type] = true; + } + + public override void SetDefaults() + { + Item.damage = 36; + Item.noMelee = true; + Item.mana = 6; + Item.crit = 42; + Item.width = 58; + Item.height = 58; + Item.useTime = 9; + Item.useAnimation = 18; + Item.reuseDelay = 16; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 5f; + Item.value = Item.sellPrice(0, 8, 80, 0); + Item.expert = true; + Item.UseSound = SoundID.Item20; + Item.autoReuse = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 40f; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 3; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(10f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI, 0f, 0f); + } + return false; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:SorcerousHellstaff"); + val.AddIngredient(ItemID.HallowedBar, 6); + val.AddIngredient(ModContent.ItemType()); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/Staffs/NatureStaff.png b/Items/Weapons/Magic/Staffs/NatureStaff.png new file mode 100644 index 0000000000000000000000000000000000000000..734d91c325cdaf01c61f0d1912d3cbbb005ea4e3 GIT binary patch literal 926 zcmV;P17ZA$P)Px#1ZP1_K>z@;j|==^1poj5Cs0gOMF0Q*A|N#E$P=`*%=+kvZf=DPJ~||c03=~E zTRlB>*c0mhe!-?Zz<71&0009ONkluw}HUD8xk~*e*yggCvS-)wV^G6ecE7w8K*;tAz^X;_Itn4CYX<^y&@1K0_Gu-x$@QYqtiT90Wx&+W<{tb)0%|* z-KOM2%bO(2bbh{~oO?T=Y~0bIq}xWLD+ME9Ytu6c)@c6aoU-d^qY_3RB|mQ)+p7dy zn-GmI6-*RoJ9V6I9#?uR7`t)-Ob%^SROs7wUb$!ZvNAWbQ$d&YY7?T-v|#f1L}G&4 zfyLXc%GC34^CcxUSuuI~iIT3%3dnvltVxJQ(_*`92(JtG7S1TU`b)~JOhPo8HJEpe zzDsJE+O)N9cO?)q3DM|E@oG0@v_g4KcGe$LdbQ}?C(hBV;0d!r8h(FES?JiRwDT0B z9`*CR%2Na1l$hc^_Ilo%ifDAH@PzBmCEc;oJ%^Hg9uR`&+iDGSAeO0fIM_Vxox zux71Eh(^n~WV~+YfdTLRD|lwxTc0UCE)ITI#@$OfQ-evnTk&=&KzH@_p&o~ibSbY5 ztX0C)^D*T@!-&#*V*$~q#m+}ycR^RRD<8lpPu_NC=B%BQuzSmT<;ni*%D8)R2pX-- z$9>5IX1~aMWS>ZldTUv0z*{+4qnPLVmXJw^M#0vK2PUmSU_SERm2U{OZOw3Bue+x; z3DKwrPdaTahVabT-r$)}OEl_Xjd~_SyO@v}+Z&c^5~5K{$RyY~3H;Awxm|OmM57jr z-ne;3$D!^@x3nv#zikqtQNSeo%w65dniQ-dem|@Emle^dXEJ1l^Wa~bgxWQ_T$BGh zwPzHQ%*oJOwbe%L7_HWtwA7was5X;OBSv$%pTr*-)x&vcD*ylh07*qoM6N<$f|At3 AbN~PV literal 0 HcmV?d00001 diff --git a/Items/Weapons/Magic/Staffs/PiercingStaff.cs b/Items/Weapons/Magic/Staffs/PiercingStaff.cs new file mode 100644 index 0000000..574ce02 --- /dev/null +++ b/Items/Weapons/Magic/Staffs/PiercingStaff.cs @@ -0,0 +1,44 @@ +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Magic.Staffs; + +public class PiercingStaff : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Piercing Staff"); + Tooltip.SetDefault("Fires gravity-affected, piercing iron stingers"); + Item.staff[Item.type] = true; + } + + public override void SetDefaults() + { + Item.damage = 16; + Item.noMelee = true; + Item.mana = 3; + Item.width = 40; + Item.height = 40; + Item.useTime = 25; + Item.useAnimation = 25; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 2f; + Item.value = Item.sellPrice(0, 0, 16, 0); + Item.rare = ItemRarityID.White; + Item.UseSound = SoundID.Item20; + Item.autoReuse = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 10f; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.WandofSparking, 1); + val.AddRecipeGroup("IronBar", 3); + val.AddTile(TileID.Anvils); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/Staffs/PiercingStaff.png b/Items/Weapons/Magic/Staffs/PiercingStaff.png new file mode 100644 index 0000000000000000000000000000000000000000..04cae54f6247c9fccbc6b17961e19ef9f3abdd06 GIT binary patch literal 562 zcmV-20?qx2P)Px#1ZP1_K>z@;j|==^1poj5Bv4FLMF0Q*U{X@3k%H60w(92MH6$dxpNn`^JgI$M zzmIQ|gnE~2OKc+9PXGV`tVu*cR9HvlmM=&HQ5?soNrMUpQ=13}3Mx3%pv7RAU|SK3 z$cn)~2#N@1L5wCXLoltZSiB&phz5}f7KMS>WWqp;QQ>>{4Sw129E{uU?pr?Z!PxFT ze1Gq)CDGt4WimhBvT9mAHf;hosK#ceN5P@gIM`zkgWIbcV0;Wt*ml(}-Iq%E4Vt4d zM$J7rdGPe?4vfA*nwv@WVxJo92aC_I;6?Er++14(nPg`>IFgy1fy$E zJ9n@$=dIk7D-}>p?(Z&xG?&jEfys_GkmgPb1w32)rdYdJ@l58N7niw1@bdZwq&X(O z1{s>%TA0LMJE-Awt2rjV2D9k_?AbkbGd(p1I=2rX&GN?4#CMAOy1PKevMg`)H`-A( z89jq~gYb>DdvE1WP^Z_=FuNKbgS-*4*>#sPwTv1unU20e#?Pc0@QYuUHPJDsZ>*i; z|Gb^OW6)%h-)H(<_ze1W!_>L|cB4WKtey-fKfyi;uITu=#*L7hVFT&?F^ zy%IiyL7#J`G`~TbY1BDqN_Y%1jW(ufa)XJ)FQpdgNed6fq5uE@07*qoM6N<$f`&Bw AN&o-= literal 0 HcmV?d00001 diff --git a/Items/Weapons/Magic/Staffs/SorcerousHellstaff.cs b/Items/Weapons/Magic/Staffs/SorcerousHellstaff.cs new file mode 100644 index 0000000..3d0f113 --- /dev/null +++ b/Items/Weapons/Magic/Staffs/SorcerousHellstaff.cs @@ -0,0 +1,54 @@ +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Magic.Staffs; + +public class SorcerousHellstaff : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Sorcerer's Hellstaff"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots, dyeable] \nShoots two oval-shaped magic projectiles in quick succession \nHas a 16% chance of inflicting the [c/DA0205:On Fire!] debuff for 3 seconds \nHas a high critical hit chance"); + Item.staff[Item.type] = true; + } + + public override void SetDefaults() + { + Item.damage = 26; + Item.noMelee = true; + Item.mana = 6; + Item.crit = 32; + Item.width = 54; + Item.height = 54; + Item.useTime = 12; + Item.useAnimation = 24; + Item.reuseDelay = 12; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 5f; + Item.value = Item.sellPrice(0, 4, 40, 0); + Item.rare = ItemRarityID.Orange; + Item.UseSound = SoundID.Item20; + Item.autoReuse = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 26f; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.HellstoneBar, 6); + val.AddIngredient(ItemID.Obsidian, 4); + val.AddTile(TileID.Anvils); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType()); + val2.AddIngredient(ItemID.BlueDye); + val2.AddIngredient(ItemID.RedDye); + val2.AddTile(TileID.DyeVat); + val2.Register(); + } +} diff --git a/Items/Weapons/Magic/Staffs/SorcerousHellstaff.png b/Items/Weapons/Magic/Staffs/SorcerousHellstaff.png new file mode 100644 index 0000000000000000000000000000000000000000..f3bba0b66b70e5d6a684c1edb0d807d04678fcf5 GIT binary patch literal 748 zcmVPx#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*A|NzZQLTP}#GWWM-##PyY6|(I8%jri zctZ{90007SNklq?^^Oj9=RBKtF3i0n=kc8H`|gEG zi@DK1a@hEIEMLB^pUU6V(a6%#GGmy!JN(qH2ZpX%LiN>@rDrT<8n{1<6@^MqK3=qI zrM~&Y^5ez}ODe90FzuoDhq05A>Zz0|H8fV6x4d`dwFIa}LqG)euZ+WIbjm`gh zV%dB9yCv*>>ah%CMWNEQxva8-vspzkhAH^Fzh${oU$F#Cz3zEr35TOymfv1>TE72z z+4Ak+v}G8}3#N9)Kif6``|w~ltF%r>&*0KQ)smjV)SKtmESZX4Z$TLI&?%V0o06Gw{ofVk%jOlu%y{bJ0Y6`+wv*a}ftW(Q<T1l!x&&nck|vZ9+-aK zIn3kcz=Y+<=tE1;X&UD-1yh`mf!+7Be_6}v&H|{gw;NZqhcQRbsd;@~`x>KiGo9I2 zIWJY;-LmAIM2~rU!BmA6es}HqAG_xHiuar_mI701NI9u7Z~CV0kEsY$GH)+=P;-)FS`Dm7VT%uGnJ}5_d%;oLHighYU;dEeq&`Z1?4qXHd9c3WAMM5 ef|44mRE_{`v9&ek)7Jk00000(); + Item.shootSpeed = 26f; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.PinkandSilverDye, 1); + val.AddTile(TileID.DyeVat); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/Staffs/SorcerousHellstaffWhite.png b/Items/Weapons/Magic/Staffs/SorcerousHellstaffWhite.png new file mode 100644 index 0000000000000000000000000000000000000000..cd3212a781dd695186fe129b88a090605f158635 GIT binary patch literal 741 zcmVPx#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*A|N!r)yn_>|5ZM5b4GcdNrBjMmWG6a z(JOZ10007LNklPH&|p+zaNAnrF1iUWqD~Tx zZ8>ylZRyp^46ci|8T+=lTr3bol=JU%l9W&$GOK;{Pk(<2m2?Zbzxb z^z{z^Is5XT?Cxz}$lrABEDJ}=jA5#}{KnP~21hKR|5knN8B3W4o)2SrVW)R~eYUl- z{=NSF%J`HeJFbQ>?V- zJJ-*f`gVF^8OHL$PJep#!q!hdytBj@reLeKYFVv*v;<7;&8%3$y@77aw_gt|_fP7^ zCYPRDhOw+*YJOnC*8J~7?Z=v>c1O?P?~P+iY6?>e+dnPoie7C&81v9Bn8NFloKuf) z+_X%Yf-rVjVAeCH=atr~))c5I2xHBX)fjM24L$6#9^rm7_yT z?n%^`Hw&hASmF1UZ;#oU_bc9e!dMDSsUf9NV_x@7Js({W*vYK5Pj4{2Zx*y$4CzH!I1u=PG zD)mV$KcDyfxhUGtm}e@r^E?NwHU;ftEU&4nM)8dm#S|3RSkX*D@r}X%ZVC!&tW^37 XJ&Ut73Z$a300000NkvXXu0mjf`Cw&A literal 0 HcmV?d00001 diff --git a/Items/Weapons/Magic/Staffs/SorcerousStaff.cs b/Items/Weapons/Magic/Staffs/SorcerousStaff.cs new file mode 100644 index 0000000..11de168 --- /dev/null +++ b/Items/Weapons/Magic/Staffs/SorcerousStaff.cs @@ -0,0 +1,47 @@ +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Magic.Staffs; + +public class SorcerousStaff : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Sorcerer's Staff"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \nShoots two oval-shaped magic projectiles in quick succession \nHas a high critical hit chance"); + Item.staff[Item.type] = true; + } + + public override void SetDefaults() + { + Item.damage = 13; + Item.noMelee = true; + Item.mana = 6; + Item.crit = 26; + Item.width = 54; + Item.height = 54; + Item.useTime = 13; + Item.useAnimation = 26; + Item.reuseDelay = 12; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 5f; + Item.value = Item.sellPrice(0, 3, 0, 0); + Item.rare = ItemRarityID.Green; + Item.UseSound = SoundID.Item20; + Item.autoReuse = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 26f; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:GoldBar", 8); + val.AddIngredient(ItemID.Sapphire, 6); + val.AddIngredient(ItemID.Emerald, 4); + val.AddTile(TileID.Anvils); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/Staffs/SorcerousStaff.png b/Items/Weapons/Magic/Staffs/SorcerousStaff.png new file mode 100644 index 0000000000000000000000000000000000000000..97ece83f739e5d4926f216ed9a08108992e7e79d GIT binary patch literal 629 zcmV-*0*d{KP)Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*A|Ny{V1iq2;Ww0SYQ8X;* zt-;@$v8cFu%4LcTjTb&7mzORj!Bu5T(u^fV>n+U`U}I}L=aTuwtR!eWG$qYgTCg#g z0#i>d$=BzaB!H>CqgzQ(o_v=)sDDe|+;2#J)u$!RSXyY)Q8So3ypTjs!PI(XMG{j{ z>n&i$lH!_@*r&>yFYR=g0%ojRxQy|Bg?$QePXRUs%ve&w8Uxs;CQipBvEQ*Ftjn0O zq=eniG)|GD#*)Gn#z{ltb3W)iwc)cRn*wGmEZTGes4x@O9GhX@8po0_YQ|h> zQwm`EY45_${;MHoc#I9YDd4{`UrYgijrnE@_-_mhx+&nPu}tO{@K|CsRG(du P00000NkvXXu0mjfP%s#x literal 0 HcmV?d00001 diff --git a/Items/Weapons/Magic/Staffs/TheWhisperingIceDonator.cs b/Items/Weapons/Magic/Staffs/TheWhisperingIceDonator.cs new file mode 100644 index 0000000..a01447f --- /dev/null +++ b/Items/Weapons/Magic/Staffs/TheWhisperingIceDonator.cs @@ -0,0 +1,57 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Magic.Staffs; + +public class TheWhisperingIceDonator : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("The Whispering Ice"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \nShoots three icicles that inflict Frostburn for 3 seconds \n'Guard your darkest thoughts well, for they are the cracks through which the Nightmare crawls.' \n~~ Donator Item ~~"); + Item.staff[Item.type] = true; + } + + public override void SetDefaults() + { + Item.damage = 70; + Item.noMelee = true; + Item.mana = 8; + Item.width = 54; + Item.height = 56; + Item.useTime = 13; + Item.useAnimation = 13; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 5f; + Item.value = Item.sellPrice(0, 6, 50, 0); + Item.rare = ItemRarityID.Pink; + Item.UseSound = SoundID.Item28; + Item.autoReuse = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 16f; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 3; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(5f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI, 0f, 0f); + } + return false; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.FrostCore, 2); + val.AddRecipeGroup("FabusMod:AdamantiteBar", 6); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/Staffs/TheWhisperingIceDonator.png b/Items/Weapons/Magic/Staffs/TheWhisperingIceDonator.png new file mode 100644 index 0000000000000000000000000000000000000000..6daeaab19a089b7c8fb70e7448f92a0c2243c8cf GIT binary patch literal 643 zcmV-}0(||6P)Px#1ZP1_K>z@;j|==^1poj56;Mo6MF0Q*M>Jd`Aw8GJ<6>Ew+x+@_ipN^dCgT7A z0t`t+K~!i%?U+w1L{S)rhp%8EnUb)yP@`Bh1qWNPPT-x4szO!bTmTVm?@<=WoKjb#nSSp8y6l}~pq&&x*@@8ZU?hDH%u z{X(W_8q5~Bv8+gIs&{C@lBVIt8ig8zBvatVvO>>MtY$Qg(UloX?S5)1Y5xK@mKIED zlQ`JCv!vr;4wxPNoemi?1#T=Ybinzg4SOz*7cGIAVrEKn%a)h~I%JY5aAVb?tDu6J zkNXEpW=DcE-Ly8*M-4D^nj zeTj1x4MR;q?43oexG~W74r(eywI|`UxUradZ!BbrI}7$DrCIw_676TKUN^GMBEQBkr5z7i%@pL{7__P( dC8x#;g&%#RXXITad@%q3002ovPDHLkV1no7CZGTS literal 0 HcmV?d00001 diff --git a/Items/Weapons/Magic/Staffs/Tranquility.cs b/Items/Weapons/Magic/Staffs/Tranquility.cs new file mode 100644 index 0000000..15296f7 --- /dev/null +++ b/Items/Weapons/Magic/Staffs/Tranquility.cs @@ -0,0 +1,59 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Magic.Staffs; + +public class Tranquility : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Tranquility"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \nShoots six oval-shaped rainbow projectiles three times in quick succession \nHas a high critical hit chance"); + Item.staff[Item.type] = true; + } + + public override void SetDefaults() + { + Item.damage = 58; + Item.noMelee = true; + Item.mana = 7; + Item.crit = 52; + Item.width = 62; + Item.height = 62; + Item.useTime = 4; + Item.useAnimation = 12; + Item.reuseDelay = 8; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 5f; + Item.value = Item.sellPrice(1, 50, 0, 0); + Item.expert = true; + Item.UseSound = SoundID.Item20; + Item.autoReuse = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 40f; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 6; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(10f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI, 0f, 0f); + } + return false; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 6); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Magic/Staffs/Tranquility.png b/Items/Weapons/Magic/Staffs/Tranquility.png new file mode 100644 index 0000000000000000000000000000000000000000..eff6efe70f40f0333cb9d37249924787181a822e GIT binary patch literal 881 zcmV-%1CIQOP)Px#1ZP1_K>z@;j|==^1poj5El^BUMF0Q*Bo{6J%K*;*09F4h|Be9vJpflaV1R#? z0QT*1ReC)kJpi}=0A~MF0?fV*0-*o^0^&(TK~!i%?V3Gn6j2n0M@t(;2#L`~vPq#t zk=QCWmO(Q9F$xc zi>}>x-DDZxc{e_2 zU;>7}ym~L0mxaXzNj41l_^%&5lkBapNv?nWEXlR)#x*O$>cwY|&+6Xafq5p&H1HZH zDmQMyErDA=??X>=eDApA&I9`-fn^#-as2Mh7a@|?*+Y_UT(fpy$TH7Zra@}lYrLPv z7zb>=sPWYFsaV?>>wAqWjs4-lv}HRN!Sv59m=0So{cAtqHC{J)Yuf^MV*oYYdeC3n zz>U`hO!L?qut~n}2HeXZ{&Yj~`N%m*H?GuXoK53?eQ7C9n`Vv3*t{FhiD?{X7VsG> z3-{t#rWrQR#({MlHx6(n(|K+k>rP&d^Vwz1vuU1T$$NYpXU~pZ@|wwNId0rCZLLWa zHE)?7R10GBZrtE^<5-m>)4aZ1v=(_StE_3j#`9hkhS#`NBUj$W>ng7^H^nq?;{{2L zW6TU5-@2oFk*pCBjsuDsC=0$n@Ar7Gjx&bqEQ6H{+%H@A$yxK=O~H)=u2o>Q1b{g* zH{Nh^+u)Xf7O>S!126Y zD1;5~>z{2pUgKqfJ#+3$pG8TY?vANXBU`JPRpZ9X0^{7fw_o0uWYhE4(); + Item.shootSpeed = 10f; + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(3)) + { + int num1 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + Main.dust[num1].scale = 1f; + Main.dust[num1].velocity.Y = 0f; + Main.dust[num1].velocity.X = 0.5f; + Main.dust[num1].noGravity = true; + } + } + + public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit) + { + int healingAmount = damage / 18; + player.statLife += healingAmount; + player.HealEffect(healingAmount, true); + target.AddBuff(20, 480, false); + player.AddBuff(115, 480, true); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 45f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddRecipeGroup("FabusMod:OrichalcumBar", 6); + val.AddIngredient(ItemID.Sapphire, 2); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType()); + val2.AddIngredient(ItemID.BlueDye, 1); + val2.AddTile(TileID.DyeVat); + val2.Register(); + } +} diff --git a/Items/Weapons/Melee/Shortswords/CarbonDagger.png b/Items/Weapons/Melee/Shortswords/CarbonDagger.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e6f23fec421c39df7464f2d556c7f864ecba45 GIT binary patch literal 374 zcmV-+0g3*JP)Px#1ZP1_K>z@;j|==^1poj5Ay7NyK0>Xc!{y0jwHiSOgIfR#edF z>kJHLUqYkBq`_ob&~~%3!%n%yG1=~}e;CJW89#;}C6QBhwf&A?A}ik9%Un!pYwqKG z-33@};>>OwNu#UhR77;C{m(PzGo5%HoUOqEyI-!bGQ8lP=8GxatUa7xP9LjEnYm(B zD*Y)o=#H_fl$j?^D`n=0lYUOWReUj}{N4@SA(p>3Nu{i~VoJ-_6X)7&i%lzK#Sv4; zq&vde=L43dl`{QeO8MVN9#7cE{f7NjsHRVxx0LA@*Bec|k+qcR7qhITOp{oM4|R!U UYpH>V!Z literal 0 HcmV?d00001 diff --git a/Items/Weapons/Melee/Shortswords/CarbonDaggerNihon.cs b/Items/Weapons/Melee/Shortswords/CarbonDaggerNihon.cs new file mode 100644 index 0000000..6e02b1a --- /dev/null +++ b/Items/Weapons/Melee/Shortswords/CarbonDaggerNihon.cs @@ -0,0 +1,73 @@ +using FabusMod.Projectiles.Shortsword; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Melee.Shortswords; + +public class CarbonDaggerNihon : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Carbon Dagger - Nihon"); + Tooltip.SetDefault("[c/B6FF00:Autoswings]\nThrows a medium-ranged Carbon Knife that deals more damage the closer you are to the target \nShortsword hits inflict [c/007700:Poison] debuff for 8 seconds\n[c/FF0000:Shortsword hits steal a small amount of life] \nShortsword hits grant the [c/FC3A3A:Rage] buff for 8 seconds"); + } + + public override void SetDefaults() + { + Item.damage = 62; + Item.width = 30; + Item.height = 30; + Item.useTime = 11; + Item.useAnimation = 11; + Item.useStyle = ItemUseStyleID.Thrust; + Item.knockBack = 6f; + Item.value = Item.sellPrice(0, 5, 22, 0); + Item.rare = ItemRarityID.LightRed; + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 10f; + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(3)) + { + int num1 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + Main.dust[num1].scale = 1f; + Main.dust[num1].velocity.Y = 0f; + Main.dust[num1].velocity.X = 0.5f; + Main.dust[num1].noGravity = true; + } + } + + public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit) + { + int healingAmount = damage / 16; + player.statLife += healingAmount; + player.HealEffect(healingAmount, true); + target.AddBuff(20, 480, false); + player.AddBuff(115, 480, true); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 45f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) { + position += muzzleOffset; + } + return true; + } + + public override void AddRecipes() + { + Recipe recipe = Recipe.Create(Type); + recipe.AddIngredient(ModContent.ItemType()); + recipe.AddIngredient(ItemID.BlueDye, 1); + recipe.AddTile(TileID.DyeVat); + recipe.Register(); + } +} diff --git a/Items/Weapons/Melee/Shortswords/CarbonDaggerNihon.png b/Items/Weapons/Melee/Shortswords/CarbonDaggerNihon.png new file mode 100644 index 0000000000000000000000000000000000000000..631cb18171309d98d29e389072b0ae0f49e2ef96 GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCf`V@Ck7R(t;Ao+qF5{TAH5y{{Je-;y)0md0JaL?7Mo3^&x8#P{mtM7sn6} z@4Htwax(@p9RKK^*6Mny|JB}u8xs}8A)c*tfj+0rNwYtwLskQEs`N_Uw z{%>9VqjTTg+xuJ3{`?~U>(-irfjbv{{9?Cg%l3)lyJlR9eArU_JnE2|zt77B_mA#O z>)&`%ICz)syTWr@UPTl?O~{|lTo+t#xb)pm-O@GZgO;t2n8vla^Q3)QMC7S2!t7Ix zYLD!{cRBxPypQJny?f6xy$(P1NPF3qtSNAc?hQb>8LhghT}PbuFsKV<@t;~Y`z_Gp44$rj JF6*2UngDP-rF{SZ literal 0 HcmV?d00001 diff --git a/Items/Weapons/Melee/Shortswords/GoldenDagger.cs b/Items/Weapons/Melee/Shortswords/GoldenDagger.cs new file mode 100644 index 0000000..ee8914c --- /dev/null +++ b/Items/Weapons/Melee/Shortswords/GoldenDagger.cs @@ -0,0 +1,84 @@ +using FabusMod.Projectiles.Shortsword; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Melee.Shortswords; + +public class GoldenDagger : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Golden Dagger"); + Tooltip.SetDefault("[c/B6FF00:Autoswings]\nThrows two short-ranged golden knives in any direction, as well as one very fast dagger \nShortsword hits steal a small amount of life, and inflict the [c/007700:Poison] debuff for 10 seconds \nGolden knives do not steal life \nGrants the [c/FC3A3A:Rage] buff for 8 seconds upon hitting an enemy with the Shortsword \nGrants the [c/FC8719:Inferno] buff for 6 seconds upon hitting an enemy with the Shortsword"); + } + + public override void SetDefaults() + { + Item.damage = 95; + Item.width = 40; + Item.height = 40; + Item.useTime = 12; + Item.useAnimation = 12; + Item.useStyle = ItemUseStyleID.Thrust; + Item.knockBack = 6f; + Item.value = Item.sellPrice(0, 54, 96, 0); + Item.rare = ItemRarityID.Yellow; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 50f; + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(3)) + { + int num1 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[num1].scale = 1f; + Main.dust[num1].velocity.Y = 0f; + Main.dust[num1].velocity.X = 0.5f; + Main.dust[num1].noGravity = true; + } + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + float numberProjectiles = 2f; + float rotation = MathHelper.ToRadians(4f); + position += Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 6f; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedBy(new Vector2(velocity.X, velocity.Y), (double)MathHelper.Lerp(0f - rotation, rotation, i / (numberProjectiles - 1f)), default) * 0.2f; + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI, 0f, 0f); + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 55f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + } + return true; + } + + public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit) + { + int healingAmount = damage / 17; + player.statLife += healingAmount; + player.HealEffect(healingAmount, true); + target.AddBuff(20, 600, false); + player.AddBuff(115, 480, true); + player.AddBuff(116, 360, true); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 6); + val.AddIngredient(ModContent.ItemType(), 4); + val.AddTile(TileID.AdamantiteForge); + val.Register(); + } +} diff --git a/Items/Weapons/Melee/Shortswords/GoldenDagger.png b/Items/Weapons/Melee/Shortswords/GoldenDagger.png new file mode 100644 index 0000000000000000000000000000000000000000..8803b9a869e08d1adab625b0f28a1593c232d6b5 GIT binary patch literal 514 zcmV+d0{#7oP)Px#1ZP1_K>z@;j|==^1poj57*I@9MF0Q*I}s7Yg-JiCjM~&*aKqU0@^-53|HrcN z>i_@&h)G02R9Hvlm$6C%K@>$-@dx4$SfmYTBPe2JWsy|&Vqsw=f*_bqun5@LXb~{q zpcYyyqF`rlp+yJ^?hgbMF1dvl9y7aSVQ1zvH$!F#d-7)H%}iDiYmLV5Zao|zkIr6@YLL&(U3M{6 z)A1XmfxC}gjPJ)iVDE$#YJn*xBH3LAWit5tyaysx}W$AstMxTIs0}$BwT}hbA`7r;=1n= zHEDG}N_YmXH!W+9=s)87T(|~_-uM+?6J-g()); + Main.dust[num1].scale = 1f; + Main.dust[num1].velocity.Y = 0f; + Main.dust[num1].velocity.X = 0.5f; + Main.dust[num1].noGravity = true; + } + } + + public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit) + { + int healingAmount = damage / 18; + player.statLife += healingAmount; + player.HealEffect(healingAmount, true); + target.AddBuff(20, 600, false); + player.AddBuff(115, 480, true); + player.AddBuff(116, 360, true); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 55f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:CarbonDagger", 1); + val.AddRecipeGroup("FabusMod:AdamantiteBar", 6); + val.AddIngredient(ItemID.SoulofNight, 4); + val.AddIngredient(ModContent.ItemType(), 2); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + } +} diff --git a/Items/Weapons/Melee/Shortswords/OniDagger.png b/Items/Weapons/Melee/Shortswords/OniDagger.png new file mode 100644 index 0000000000000000000000000000000000000000..1e25a6881e632458ab65d93e8e702ef54eb5794b GIT binary patch literal 497 zcmVPx#1ZP1_K>z@;j|==^1poj57*I@9MF0Q*76}3&At9$4ATcp9+e=qIK0f(Fk*rEs zhyVZqcS%G+R9Hvlm%T~@K@^2IffT_ijR}g{Njj@Qh*lQ9fcOMHfcO#?X~Z|M)<+1W zN>U_M8cC}niiIvLA~q@QZ|CQ3B`Jv2di87h@fXkUpSk|C zy3Eq@?*?gZrL~3n?Bhq|$?F|bGboL7Ts#J8V7XCcDFHq#PffK^l9r`9y55 z^VcAeZ~PKl6R!AUkmh(sW?6>hKE>~e{JkiX8D9vouXpB(dGs^5Ty{nla5O nxymK+8YD%nMpsI1FiE}vA6gTvwUYgr00000NkvXXu0mjf6lK?< literal 0 HcmV?d00001 diff --git a/Items/Weapons/Melee/Shortswords/StonePlatedShortsword.cs b/Items/Weapons/Melee/Shortswords/StonePlatedShortsword.cs new file mode 100644 index 0000000..1236aa0 --- /dev/null +++ b/Items/Weapons/Melee/Shortswords/StonePlatedShortsword.cs @@ -0,0 +1,37 @@ +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Melee.Shortswords; + +public class StonePlatedShortsword : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Stone-Plated Shortsword"); + } + + public override void SetDefaults() + { + Item.damage = 9; + Item.width = 30; + Item.height = 30; + Item.useTime = 13; + Item.useAnimation = 13; + Item.useStyle = ItemUseStyleID.Thrust; + Item.knockBack = 5f; + Item.value = Item.sellPrice(0, 0, 0, 40); + Item.rare = ItemRarityID.White; + Item.UseSound = SoundID.Item1; + Item.autoReuse = false; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.StoneBlock, 6); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Melee/Shortswords/StonePlatedShortsword.png b/Items/Weapons/Melee/Shortswords/StonePlatedShortsword.png new file mode 100644 index 0000000000000000000000000000000000000000..90de6af12bcdd885a5c79de9cbaf35a8118de1f3 GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCf`V@Ck7R(i$2XAt50R4Gqc3$>wU3`}^~!XL}a~S~xg3@FYza1)9R->EamT z;eGe2Azzb$1nYxStOkXS!fw23Z}{#UV3t^Sz;{p6?CS>Sc=Y^udJ~f;Y!weUJlWji zQb$|V2i3ESg@1mUZY0zu%yMvVT}@~3_w&ga%pi^0>?&t;ucLK6U)PMj_P literal 0 HcmV?d00001 diff --git a/Items/Weapons/Melee/Shortswords/TheRainbowsCurse.cs b/Items/Weapons/Melee/Shortswords/TheRainbowsCurse.cs new file mode 100644 index 0000000..1433889 --- /dev/null +++ b/Items/Weapons/Melee/Shortswords/TheRainbowsCurse.cs @@ -0,0 +1,92 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Melee.Shortswords; + +public class TheRainbowsCurse : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("The Rainbow's Curse"); + Tooltip.SetDefault("[c/B6FF00:Autoswings]\nThrows three medium-ranged rainbow knives in any direction, as well as one very fast dagger \nShortsword hits steal a small amount of life, and inflict the [c/007700:Poison] debuff for 12 seconds\nRainbow knives do not steal life \nGrants the [c/FC3A3A:Rage] buff for 10 seconds, and the [c/FC8719:Inferno] buff for 8 seconds upon hitting an enemy with the Shortsword"); + } + + public override void SetDefaults() + { + Item.damage = 154; + Item.width = 48; + Item.height = 48; + Item.useTime = 8; + Item.useAnimation = 8; + Item.useStyle = ItemUseStyleID.Thrust; + Item.knockBack = 6f; + Item.value = Item.sellPrice(2, 20, 0, 0); + Item.expert = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 65f; + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(3)) + { + int num1 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + int num2 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + int num3 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + Main.dust[num1].scale = 1f; + Main.dust[num1].velocity.Y = 0f; + Main.dust[num1].velocity.X = 0.5f; + Main.dust[num1].noGravity = true; + Main.dust[num2].scale = 1f; + Main.dust[num2].velocity.Y = 0f; + Main.dust[num2].velocity.X = 0.5f; + Main.dust[num2].noGravity = true; + Main.dust[num3].scale = 1f; + Main.dust[num3].velocity.Y = 0f; + Main.dust[num3].velocity.X = 0.5f; + Main.dust[num3].noGravity = true; + } + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + float numberProjectiles = 3f; + float rotation = MathHelper.ToRadians(6f); + position += Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 6f; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedBy(new Vector2(velocity.X, velocity.Y), (double)MathHelper.Lerp(0f - rotation, rotation, i / (numberProjectiles - 1f)), default) * 0.2f; + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI, 0f, 0f); + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 60f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + } + return true; + } + + public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit) + { + int healingAmount = damage / 16; + player.statLife += healingAmount; + player.HealEffect(healingAmount, true); + target.AddBuff(20, 720, false); + player.AddBuff(115, 600, true); + player.AddBuff(116, 480, true); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 6); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Melee/Shortswords/TheRainbowsCurse.png b/Items/Weapons/Melee/Shortswords/TheRainbowsCurse.png new file mode 100644 index 0000000000000000000000000000000000000000..e41138e6f3d020420b4085aa2c076cb8b87fa172 GIT binary patch literal 729 zcmV;~0w(>5P)Px#1ZP1_K>z@;j|==^1poj5El^BUMF0Q*Bo{6JjsX8X0M7paRsSmh_U!<-|5F0Y z0A~Myf0l7odjHD+S2|!lAw6Egd^P|80!m3lK~!i%?U=DI15q5ukBx;`v}KWAB}hrr z#-=Pb9SlqcgMq(5`~_lSV`DH85vf0b{sT=k3|g_!RwTm0hUE9|dr5!tyu0TNy?dYK zdoR7d%YDE1e!qLyVf{09fBMTgY@zm43FO+HjHg&o^ch?O#sf0&r;Jd7s87D_K%&Cm82Zy^cRh zq`>RE;Y|PzEv>H6_;7ER6wkibXOx3^(XltJF;bwaV(yx8eh+^Fg?xd=J)?u9ZW5Z# zSI>p>aHi>}*DJYhTq+SznoyWdlN(e~J{q8()=NT6BU_TMP z1XOE*KdW%enim4FKk%JoXcNF4#=CoI%t^$PLY+kTTEPE#-*6LffOFbw$N>qqe*)b3 z#``O&44jwCiE@G@;QZUo11VoCz^n6sC&1TEcoG0Ahj2cxQuW8W(8e7p64LG9xDMW# z0Poo0>jPflNx*qjtC87BQeEe^3i(UfUdEPg8bwUz= zJNd(T^HoBE%z2rkykpBcGymFQpZVKshd%+Y&U5fT&-)6^uN~1z0C;sql>pFvR|3)P z#47mOk#%a|*Lh$PkRhvHK-Y1ONq{4BJ}AdICIOCa-_WJa6R@mrK@(Js>JY@O00000 LNkvXXu0mjf()); + Main.dust[num1].scale = 1f; + Main.dust[num1].velocity.Y = 0f; + Main.dust[num1].velocity.X = 0.5f; + Main.dust[num1].noGravity = true; + } + } + + public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit) + { + target.AddBuff(20, 300, false); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddRecipeGroup("IronBar", 6); + val.AddIngredient(ItemID.Emerald, 2); + val.AddTile(TileID.Anvils); + val.Register(); + } +} diff --git a/Items/Weapons/Melee/Shortswords/Wakizashi.png b/Items/Weapons/Melee/Shortswords/Wakizashi.png new file mode 100644 index 0000000000000000000000000000000000000000..16074329d8f6868304369113f4d8aa04a9c28b12 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCil21AIbUfi$N6a!TR04ZpD>W&HtG50|5=A|W}APRc?H!xdBFzL^HE zO)V??bMo2S46}H(i9&``wL{_$YJ0IuSKm51W!GJ`bN3RuOx3P^OVpftKIMk+r@-Iy zt)I?>kZhm!8=(<5Jbi#?RlX4$XV- z{bsw9Y4M{SK+zpD);?sv8sF-40lm!N>FVdQ&MBb@0JwgW A(f|Me literal 0 HcmV?d00001 diff --git a/Items/Weapons/Melee/Swords/GoldenSlasher.cs b/Items/Weapons/Melee/Swords/GoldenSlasher.cs new file mode 100644 index 0000000..52dfebb --- /dev/null +++ b/Items/Weapons/Melee/Swords/GoldenSlasher.cs @@ -0,0 +1,63 @@ +using FabusMod.Projectiles; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Melee.Swords; + +public class GoldenSlasher : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Golden Slasher"); + Tooltip.SetDefault("[c/B6FF00:Autoswings] \nShoots two homing golden orbs in a medium-sized spread on swing"); + } + + public override void SetDefaults() + { + Item.damage = 110; + Item.width = 64; + Item.height = 72; + Item.useTime = 15; + Item.useAnimation = 15; + Item.useStyle = ItemUseStyleID.Swing; + Item.knockBack = 3f; + Item.value = Item.sellPrice(0, 40, 0, 0); + Item.rare = ItemRarityID.Yellow; + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 15f; + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(4)) + { + Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + } + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType(), 14); + val.AddTile(TileID.AdamantiteForge); + val.Register(); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + float numberProjectiles = 2f; + float rotation = MathHelper.ToRadians(25f); + position += Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 45f; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedBy(new Vector2(velocity.X, velocity.Y), (double)MathHelper.Lerp(0f - rotation, rotation, i / (numberProjectiles - 1f)), default) * 0.2f; + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI); + } + return false; + } +} diff --git a/Items/Weapons/Melee/Swords/GoldenSlasher.png b/Items/Weapons/Melee/Swords/GoldenSlasher.png new file mode 100644 index 0000000000000000000000000000000000000000..2062aa14b8156f41d2979576285e6d10ca50ec2a GIT binary patch literal 865 zcmV-n1D^beP)Px#1ZP1_K>z@;j|==^1poj5Ay7Dts@#Dz%_Bq(;%^6ByO zUcuT)#H5e7I*$MV0^UhPK~#8N?U}(!TR{|t)Ak8cP+Ua{U4-tc)D}u{YZu!31`Xm9 zh;-AX%lZUT+BeXeMcsB$u$H#lECfk5My1UYh%)D%f2aqiGjns3dvEUfVEDNqxsdt) zbMDOCJGF}Pyk5UDdY7&$Oyv>)=Yb}Gb>e~ZU%Kmb{c?7PR1?5DvB3F*UWcy1Qlm+# z31FQ#WX(&o2QU+t0H5>yUZ1q}qD`s^U@bjzg(tiIX?K(K{PP9r+xLg0ngG_)Qh(UI z;XLU5{z@vH2but;v=d-z{@=P^-#wxMjPr2+e`pV2Ee)=k@BI8h+MItv+HO4{oqjb% zD!c!;!GQj|_5jwx^&yE)K!yhti*US1E5J3;?V6Tq4~u9^op z$$9!Zaaz{=vrq3x58rH&Y61euJpsO&m;3qUk0+$E<|UedKyph!tn&Z~NL%v~O#tiI z2<`U3l>mt*ASGix?h6nHtFKg$4CV({<*Qu=R!fBuLNWiF_ z2bus@i_2k&Jdr^HLc6_m9*nBnyU+x%T95$jw=eD`yDqG`f!vMZ3@+^oZ`{rUO#rI} z3GnT=<%ta5$4gvqXh*%m3q=#aYC!^AU0(JGB%u2%Q6RhhxL0_gXaZO*p*C-)ZrFB@zFzD9y?sBA9^oVHiO#TS0$43bKvv-N7EE0xy#UFI zeV3OtngG^dkPw%%z*qZn9ia)xiQrieT_5K+bq)9gey71|ar(S-smEmdYo< zIRVBgGfd5!VH`EXI2Gd-?t{S}7Y6MCtQNQw+okb4JSAfH2HFF1!p=GzOxvAf>pL&U rC7OU?oi96@09m_LaUN7W0kzsSBfrJ#G*_4600000NkvXXu0mjfLM4@~ literal 0 HcmV?d00001 diff --git a/Items/Weapons/Melee/Swords/RainbowClaymore.cs b/Items/Weapons/Melee/Swords/RainbowClaymore.cs new file mode 100644 index 0000000..1c93d27 --- /dev/null +++ b/Items/Weapons/Melee/Swords/RainbowClaymore.cs @@ -0,0 +1,65 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Melee.Swords; + +public class RainbowClaymore : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("The Spectrum"); + Tooltip.SetDefault("[c/B6FF00:Autoswings] \nShoots three homing rainbow orbs in a large spread on swing"); + } + + public override void SetDefaults() + { + Item.damage = 185; + Item.width = 60; + Item.height = 68; + Item.useTime = 12; + Item.useAnimation = 12; + Item.useStyle = ItemUseStyleID.Swing; + Item.knockBack = 3f; + Item.value = Item.sellPrice(3, 20, 0, 0); + Item.expert = true; + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 20f; + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(3)) + { + Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + } + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 14); + val.AddTile(ModContent.TileType()); + val.Register(); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + float numberProjectiles = 3f; + float rotation = MathHelper.ToRadians(45f); + position += Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 45f; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedBy(new Vector2(velocity.X, velocity.Y), (double)MathHelper.Lerp(0f - rotation, rotation, i / (numberProjectiles - 1f)), default) * 0.2f; + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI, 0f, 0f); + } + return false; + } +} diff --git a/Items/Weapons/Melee/Swords/RainbowClaymore.png b/Items/Weapons/Melee/Swords/RainbowClaymore.png new file mode 100644 index 0000000000000000000000000000000000000000..5a5fa65dd8067c5406268bd7e3f98ccdd43968e4 GIT binary patch literal 839 zcmV-N1GxN&P)00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj5El^BUMF0Q*Bo{3`Aw5?*U~yG?Qv%EYX8!=U|A2p% z0QT)w|0~Y_0RPJX|2+WzjsWK#QuRy#4T?o2xrHDwq09&_~Qj0EZ#EoD@5Z&lbCFlFzKu$c& zOfs2CI_HIQGSE)QJekSQOm`(ayyl^~zwxHDJI>m)V}+5O-n(Cxzx?_k(}gEJE!&u$ zmAUqDO{NP^YL+ay@T6wRHV!vrF0U@jY=7O9$Lhk9QdU`V;Ylg0?8$ErWo{h2Ceww- zJ!BVV7i5_%S#sex$F{7p?elMCUVISVQ9ZjJe!uzRgiIG6x3nyxq-B!}VIWjaWt1fs9(7q|=ePgJBxJR8bLOnfG+A=tQI%Kr zcJfZ`x2ioTX*NejhMBiS<~U)UAxHb%nWgK9`W?9b3`gQRU5r zby}GCFA<&o6s2X!g-goZx>{C?S~C2dC9BWx4tkDg&|KJ(%`3oqI2$vv>(bUU(Kfm1=g4-Xsru6bQmtn7W4TzJ?JPOEHLs+n+-`~yLopiP|0 R#8m(Q002ovPDHLkV1i}_nwtOs literal 0 HcmV?d00001 diff --git a/Items/Weapons/Melee/Swords/ShimadaSwords/CarbonSword.cs b/Items/Weapons/Melee/Swords/ShimadaSwords/CarbonSword.cs new file mode 100644 index 0000000..16a551a --- /dev/null +++ b/Items/Weapons/Melee/Swords/ShimadaSwords/CarbonSword.cs @@ -0,0 +1,78 @@ +using FabusMod.Projectiles.Shimada; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Melee.Swords.ShimadaSwords; + +public class CarbonSword : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Carbon Sword"); + Tooltip.SetDefault("[c/B6FF00:Autoswings, dyeable]\nFires a stream of particles that deals damage three times\nInflicts [c/7B2D2F:Advanced Blood Loss] for 10 seconds when hit with the blade, dealing damage over time"); + } + + public override void SetDefaults() + { + Item.damage = 74; + Item.crit = 8; + Item.width = 54; + Item.height = 68; + Item.useTime = 22; + Item.useAnimation = 22; + Item.useStyle = ItemUseStyleID.Swing; + Item.knockBack = 2f; + Item.value = Item.sellPrice(0, 6, 0, 0); + Item.rare = ItemRarityID.LightRed; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 10f; + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 3; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(0f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI, 0f, 0f); + } + return false; + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(3)) + { + int num1 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + Main.dust[num1].scale = 1f; + Main.dust[num1].velocity.Y = 0f; + Main.dust[num1].velocity.X = 0.5f; + Main.dust[num1].noGravity = true; + } + } + + public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit) + { + target.AddBuff(ModContent.BuffType(), 600, false); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddRecipeGroup("FabusMod:OrichalcumBar", 10); + val.AddTile(TileID.DemonAltar); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType()); + val2.AddIngredient(ItemID.BlueDye, 1); + val2.AddTile(TileID.DyeVat); + val2.Register(); + } +} diff --git a/Items/Weapons/Melee/Swords/ShimadaSwords/CarbonSword.png b/Items/Weapons/Melee/Swords/ShimadaSwords/CarbonSword.png new file mode 100644 index 0000000000000000000000000000000000000000..c4f310dfce974e0e6871a94755f901ba60ccf1dc GIT binary patch literal 599 zcmV-d0;v6oP)Px#1ZP1_K>z@;j|==^1poj5Bv4FLMF0Q*3l}akc92(4S#oD*X0OGXosqf8!ENQ( zJ3Bz+|NSUBRdi7nPXGV`(Md!>RA@u(nlDHMK^%owt3j|_Q4E5AI1v$14(whK5raig z@PZl)UbF}Xt3g2xE*PvLB6dL$#2^ZC!kJ7Klb4nK-Muof?Cm;pJ3GD)hIa#3WilwF=2zW0Nq=lXGRhR7G1KTW1!&9^x=jHZ z(~T)pfW~xT+7zI%zXDUZ`@IyWC3TwuG?oR_W)|6u?C002ovPDHLkV1gnW1A71f literal 0 HcmV?d00001 diff --git a/Items/Weapons/Melee/Swords/ShimadaSwords/CarbonSwordNihon.cs b/Items/Weapons/Melee/Swords/ShimadaSwords/CarbonSwordNihon.cs new file mode 100644 index 0000000..7f4b164 --- /dev/null +++ b/Items/Weapons/Melee/Swords/ShimadaSwords/CarbonSwordNihon.cs @@ -0,0 +1,72 @@ +using FabusMod.Projectiles.Shimada; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Melee.Swords.ShimadaSwords; + +public class CarbonSwordNihon : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Carbon Sword - Nihon"); + Tooltip.SetDefault("[c/B6FF00:Autoswings, dyeable]\nFires a stream of particles that deals damage three times\nInflicts [c/7B2D2F:Advanced Blood Loss] for 10 seconds when hit with the blade, dealing damage over time"); + } + + public override void SetDefaults() + { + Item.damage = 74; + Item.crit = 8; + Item.width = 54; + Item.height = 68; + Item.useTime = 22; + Item.useAnimation = 22; + Item.useStyle = ItemUseStyleID.Swing; + Item.knockBack = 2f; + Item.value = Item.sellPrice(0, 6, 0, 0); + Item.rare = ItemRarityID.LightRed; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 10f; + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 3; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(0f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI, 0f, 0f); + } + return false; + } + + public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit) + { + target.AddBuff(ModContent.BuffType(), 600, false); + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(3)) + { + int num1 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + Main.dust[num1].scale = 1f; + Main.dust[num1].velocity.Y = 0f; + Main.dust[num1].velocity.X = 0.5f; + Main.dust[num1].noGravity = true; + } + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.SilverDye, 1); + val.AddTile(TileID.DyeVat); + val.Register(); + } +} diff --git a/Items/Weapons/Melee/Swords/ShimadaSwords/CarbonSwordNihon.png b/Items/Weapons/Melee/Swords/ShimadaSwords/CarbonSwordNihon.png new file mode 100644 index 0000000000000000000000000000000000000000..28b9a35c606954bc7b5bddf64f2d19cf55e33188 GIT binary patch literal 578 zcmV-I0=@l-P)Px#1ZP1_K>z@;j|==^1poj5Ay7QXr7`~Uy{|NkaQ zJ3Bz+|NUYj)nWhu0l!H^K~!i%?U}tw13?sp*RU^OL~w;v5hKRN!a@m%*x3q-Hokz^ zSz1{LK7tQmDj&ht##+%}s^AZZ5$ps}*_%BU1H+niW_M>iA1o(B((HVk;bu1=jxmy? zH;hiyzv8UO%0qZ#uHj9`&@Dh?Wd){A#~x(8{W2-Z!^1V$v9f_~?eFf$dcJ)m>3zqX zH>RG3uTNdMCmtSUAvP6XXXou8zI3o-WdYr~T^g5lo*DXL}d6U%?ps~Dwss3Yf@-@~Zs&5_1G*f`aY-7q4pfOvRHU((RG`36u z8Z(7$Q-H?)3QS@4i<)*!0UFDSYAPIZO3w<74GT=++27p3o}_J4fX04{YU+JsSyFwr zZW|g)1EzHEtMW1hXiP`hOaU5GfhkPst=5XD@-Rf|F2dAoy(a6!lVeGp z3H)A##tfm|#bHgAjsIiJbyL89W4@RI{u+ZR-9+J uses 40 Mana to bring up spikes from the ground, dealing damage with a 2% chance of granting a [c/EC566E:Souleater] stack\nHas an 8% chance to fire soul-absorbing shards, granting a stack of [c/EC566E:Souleater] when hit\nHaving 6 stacks of [c/EC566E:Souleater] restores 75 HP and Mana"); + } + + public override void SetDefaults() + { + Item.damage = 80; + Item.crit = 8; + Item.width = 63; + Item.height = 76; + Item.useTime = 22; + Item.useAnimation = 22; + Item.useStyle = ItemUseStyleID.Swing; + Item.knockBack = 2f; + Item.value = Item.sellPrice(0, 23, 25, 0); + Item.rare = ItemRarityID.Pink; + Item.mana = 0; + Item.shootSpeed = 10f; + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + } + + public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit) + { + target.AddBuff(ModContent.BuffType(), 840, false); + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(3)) + { + int num1 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + Main.dust[num1].scale = 1f; + Main.dust[num1].velocity.Y = 0f; + Main.dust[num1].velocity.X = 0.5f; + Main.dust[num1].noGravity = true; + } + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2 && player.velocity.Y == 0f && player.statMana >= 40) + { + Item.damage = 50; + Item.useTime = 60; + Item.useAnimation = 60; + Item.shootSpeed = 0f; + Item.mana = 40; + Item.shoot = ModContent.ProjectileType(); + Item.UseSound = SoundID.Item88; + } + else + { + Item.damage = 80; + Item.useAnimation = 22; + Item.useTime = 22; + Item.shootSpeed = 10f; + Item.mana = 0; + if (Utils.NextFloat(Main.rand) < 0.08f) + { + Item.shoot = ModContent.ProjectileType(); + } + else + { + Item.shoot = ModContent.ProjectileType(); + } + Item.UseSound = SoundID.Item1; + } + return CanUseItem(player); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:CarbonSword", 1); + val.AddRecipeGroup("FabusMod:AdamantiteBar", 10); + val.AddIngredient(ItemID.SoulofNight, 8); + val.AddIngredient(ModContent.ItemType(), 4); + val.AddTile(TileID.DemonAltar); + val.Register(); + } +} diff --git a/Items/Weapons/Melee/Swords/ShimadaSwords/DemonsFury.png b/Items/Weapons/Melee/Swords/ShimadaSwords/DemonsFury.png new file mode 100644 index 0000000000000000000000000000000000000000..343fc8ec159bea67dd62af7072fb1df3c1bd1afb GIT binary patch literal 678 zcmV;X0$KfuP)Px#1ZP1_K>z@;j|==^1poj5Ay76tNHzaY-eyvPz>?zJgfz4ubd) zb~b|VAm|f_V5K%z7J-x@pn^>ZipIi3?u|!eaM}Er?Ci|>U^p2_Gkkkycaxb4JY;b; z)0NEV%u~2{U-7E*=sKWz*Mafle5mvNW88>pGx$SAcQ!{9?7Dxp8%_N%OyO!aR&GmDhBBR$S4HG7e}y ztqf}%(0tk$)i|K}v;p%sTRS=*)Hv|ke5w{N#$`y?(f3hc=WPcaFIP5oewp3YT)sWf z9JK3z=51wM#sSUS#<-0Gnzw~X83#0DG7e~dQouAw$~d6;aRcLc2hZhl znn@W4G(Rp(|Y_Dr3WgO7_e*@!D|CWNJj02h<74!ZLY4qtSkmwBKGv-=8wbsUxLw`$C$>TH z+Pp4ajLVQ+9Xq=q#$||c*Q^VEcV3M5yQ{kf&3}LX!FA)nWAj1q1qPiDcFG1+ssI20 M07*qoM6N<$f+G4og#Z8m literal 0 HcmV?d00001 diff --git a/Items/Weapons/Melee/Swords/ShimadaSwords/GoldenFury.cs b/Items/Weapons/Melee/Swords/ShimadaSwords/GoldenFury.cs new file mode 100644 index 0000000..36547f3 --- /dev/null +++ b/Items/Weapons/Melee/Swords/ShimadaSwords/GoldenFury.cs @@ -0,0 +1,98 @@ +using FabusMod.Projectiles.Shimada; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Melee.Swords.ShimadaSwords; + +public class GoldenFury : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Golden Fury"); + Tooltip.SetDefault("[c/B6FF00:Autoswings]\nFires a beam of particles that ignores immunity frames, pierces 6 times, and regenerates 1 Mana with every hit\nInflicts [c/7B2D2F:Advanced Blood Loss] for 14 seconds when hit with the blade, dealing damage over time\n uses 40 Mana to bring up [c/C4AB37:Midas]-inducing spikes from the ground, dealing damage with a 2% chance of granting an [c/D2D25A:Enrichment] stack\nHas a 10% chance to fire soul-absorbing shards, granting a stack of [c/D2D25A:Enrichment] when hit\nHaving 6 stacks of [c/D2D25A:Enrichment] restores 75 HP and Mana"); + } + + public override void SetDefaults() + { + Item.damage = 100; + Item.crit = 8; + Item.width = 63; + Item.height = 76; + Item.useTime = 20; + Item.useAnimation = 20; + Item.useStyle = ItemUseStyleID.Swing; + Item.knockBack = 2f; + Item.value = Item.sellPrice(0, 23, 25, 0); + Item.rare = ItemRarityID.Pink; + Item.mana = 0; + Item.shootSpeed = 10f; + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + } + + public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit) + { + target.AddBuff(ModContent.BuffType(), 840, false); + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(3)) + { + int num1 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType(), 0f, 0f, 0, default(Color), 1f); + Main.dust[num1].scale = 1f; + Main.dust[num1].velocity.Y = 0f; + Main.dust[num1].velocity.X = 0.5f; + Main.dust[num1].noGravity = true; + } + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2 && player.velocity.Y == 0f && player.statMana >= 40) + { + Item.damage = 70; + Item.useTime = 60; + Item.useAnimation = 60; + Item.shootSpeed = 0f; + Item.mana = 40; + Item.shoot = ModContent.ProjectileType(); + Item.UseSound = SoundID.Item88; + } + else + { + Item.damage = 100; + Item.useAnimation = 20; + Item.useTime = 20; + Item.shootSpeed = 10f; + Item.mana = 0; + if (Utils.NextFloat(Main.rand) < 0.1f) + { + Item.shoot = ModContent.ProjectileType(); + } + else + { + Item.shoot = ModContent.ProjectileType(); + } + Item.UseSound = SoundID.Item1; + } + return this.CanUseItem(player); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 10); + val.AddIngredient(ModContent.ItemType(), 4); + val.AddTile(TileID.DemonAltar); + val.Register(); + } +} diff --git a/Items/Weapons/Melee/Swords/ShimadaSwords/GoldenFury.png b/Items/Weapons/Melee/Swords/ShimadaSwords/GoldenFury.png new file mode 100644 index 0000000000000000000000000000000000000000..2930e0990b0cfcb02b4cc5c333da443c9b9de4a0 GIT binary patch literal 647 zcmV;20(kw2P)Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*I}s5xc94-`H^hZWX0OHC)L!%R>22lM zzQ~VS0006CNkl?tOpmJLjJJ{nY9EPFYT$^F8lg@6-h;WH6KYQduvv zl)}ZQl~i>eT?aJpJ23t^w=VO>y$wkocxi=;_Z8K3H6|xI0yT7a+WU&>l)o$%W!>z& zZ=ma&i~WHbCfIr32E z2Q(iSx^euMwV|(B(w1>R^VJ5%O}~}`TgCy+R}0;E_I+5=bTh&>G+!w&j$4j}mMKYB zjRTqw17>xDNi_~=J`5Pv!CP5AJ1%*6bT8?;aX|A?!481&=f@>UotdE%Np{|0$}*3) zw3p*o$(7udBz6QCY3r2a_q>BdG6Lhc#k|{eE(zoM?Pk-?aBTb@BV={B#dM?KYjgXVue h|KhuGkYe*e@C`ykF(q`q6OaG^002ovPDHLkV1lBYEG_^5 literal 0 HcmV?d00001 diff --git a/Items/Weapons/Melee/Swords/ShimadaSwords/ShimadaSword.cs b/Items/Weapons/Melee/Swords/ShimadaSwords/ShimadaSword.cs new file mode 100644 index 0000000..6fc4684 --- /dev/null +++ b/Items/Weapons/Melee/Swords/ShimadaSwords/ShimadaSword.cs @@ -0,0 +1,58 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Melee.Swords.ShimadaSwords; + +public class ShimadaSword : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Shimada Sword"); + Tooltip.SetDefault("Inflicts [c/7B2D2F:Blood Loss] for 3 seconds on hit, dealing damage over time"); + } + + public override void SetDefaults() + { + Item.damage = 18; + Item.crit = 8; + Item.width = 54; + Item.height = 68; + Item.useTime = 22; + Item.useAnimation = 22; + Item.useStyle = ItemUseStyleID.Swing; + Item.knockBack = 2f; + Item.value = Item.sellPrice(0, 1, 80, 0); + Item.rare = ItemRarityID.Blue; + Item.UseSound = SoundID.Item1; + Item.autoReuse = false; + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(3)) + { + int num1 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + Main.dust[num1].scale = 1f; + Main.dust[num1].velocity.Y = 0f; + Main.dust[num1].velocity.X = 0.5f; + Main.dust[num1].noGravity = true; + } + } + + public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit) + { + target.AddBuff(ModContent.BuffType(), 180, false); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddRecipeGroup("FabusMod:LightsBane"); + val.AddIngredient(ItemID.Emerald, 10); + val.AddTile(TileID.Anvils); + val.Register(); + } +} diff --git a/Items/Weapons/Melee/Swords/ShimadaSwords/ShimadaSword.png b/Items/Weapons/Melee/Swords/ShimadaSwords/ShimadaSword.png new file mode 100644 index 0000000000000000000000000000000000000000..5b535156bdc554ad41c580e987b9db2c352e2758 GIT binary patch literal 596 zcmV-a0;~OrP)Px#1ZP1_K>z@;j|==^1poj5Cs0gOMF0Q*3l}bLm`ztuS#oD*#^+Uyd=f(@JOPAI$yu*(;TUaAQfsnI1!L0UEOvm|Cu;q&}>?O7ikZ8r+y|_`T(? zxnjoimkMu1+X%W18}B!=C-#^vptn{Rik`oMV2{}Xdh5JCCiQgwQ4+lcXsp}7)b7rb z)Y;ifNgA__u%-Zw#Z6RGfX3nirfR2qQs>5NlIhV4$#$jyjhRN5DL`YU&}|CPm~Kp& z0yL%z)20B8{S}zP>{lv3OX@ZSXe=tKsjyReRA?+LFokD-<*g4%)20B8b&6{0d-6?E zeYS2I8fynk;a%0x%$H=`rT~ovVVfyHV=6F(DSdmRB3XZG{$6#<6reGnn#vTWB+rib zCD%8PBx%eLk&O+EOh{c_DM+TWc}cK1zb46BQ8OK%rfLd&zTCDxHNpR`hwFREgOe*s zP9B#*2t38GrflQ?7)!b-;Jz_eOaXU|!Bo&hku+1l iePb#~H3b|s=6Sz$uIbU-(JvAJ0000()); + val.AddIngredient(ItemID.StoneBlock, 12); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Melee/Swords/ShimadaSwords/StonePlatedKatana.png b/Items/Weapons/Melee/Swords/ShimadaSwords/StonePlatedKatana.png new file mode 100644 index 0000000000000000000000000000000000000000..6c4bba3e5353ba02b3ea446db115203ca9f97b03 GIT binary patch literal 518 zcmV+h0{Q)kP)Px#1ZP1_K>z@;j|==^1poj57*I@9MF0Q*C@3g5CK+R6V^maBfPjFPYfExbIQSRj z1ONa5j7da6RA@u(+A(f}Fc^kmk_#|*>QJddDpQvZj8*Tzm>cvgy-c@`4Be56Ds^J$ z8cxv4fATHAWML9)jQL&(IUbWo#s+1VC0bDwe`egvEa8$9gdC#aT6(&_5xHTX%N$WK z_Ox78RWdeBBV+P{$$i0L8011+gRy2?d(dm!Rz|MDwPobY)pgy@TwH^(<+}Eao*5|^ zTUxLzOBuBsqF^jdU3-XvOLwUpqTo_pD~Bi;IxSb%wTuvRl|vK^l})bidl~VL#Z?Yb z(09J%5CwhZTMkih?n22S3eHt%IYhy0TS^X5@Y1v#p68HnIYhy!+2p1^iO&@UU4z`= z1;@fai(a4aWFCtgqM$9v;Vy}NO}CUBqM%O8VSmf>)4mt#gyI?n zbz>(LwDjE*Q4m3{dbpK2djC3}Kb^w@QU~1bF zw8`l+XY6ulJA$dKIbHgKt|yeW$)W8C>OQ}JS1G1TTrkW20Uf#}c$C^J9smFU07*qo IM6N<$f@5LbkN^Mx literal 0 HcmV?d00001 diff --git a/Items/Weapons/Melee/Swords/ShimadaSwords/TheRainbowsHonor.cs b/Items/Weapons/Melee/Swords/ShimadaSwords/TheRainbowsHonor.cs new file mode 100644 index 0000000..a1a5311 --- /dev/null +++ b/Items/Weapons/Melee/Swords/ShimadaSwords/TheRainbowsHonor.cs @@ -0,0 +1,107 @@ +using FabusMod.Projectiles.Shimada; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Melee.Swords.ShimadaSwords; + +public class TheRainbowsHonor : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Dream Catcher"); + Tooltip.SetDefault("[c/B6FF00:Autoswings]\nFires a beam of particles that ignores immunity frames, pierces 8 times, and regenerates 1 Mana with every hit\nInflicts [c/806580:Bad Dream] for 16 seconds when hit with the blade, dealing damage over time\n uses 40 Mana to bring up [c/C4AB37:Midas]-inducing spikes from the ground, dealing damage with a 2% chance of granting a [c/FF52DC:Dream] stack\nHas a 10% chance to fire homing, soul-absorbing shards, healing for 20 HP and granting a stack of [c/FF52DC:Dream] when hit\nHaving 6 stacks of [c/FF52DC:Dream] restores 85 HP and Mana and puts you into an enraged state for 8 seconds, increasing melee damage dealt"); + } + + public override void SetDefaults() + { + Item.damage = 195; + Item.crit = 8; + Item.width = 56; + Item.height = 76; + Item.useTime = 10; + Item.useAnimation = 10; + Item.useStyle = ItemUseStyleID.Swing; + Item.knockBack = 2f; + Item.value = Item.sellPrice(2, 75, 0, 0); + Item.expert = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 60f; + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + } + + public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit) + { + target.AddBuff(ModContent.BuffType(), 960, false); + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(3)) + { + int num1 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType(), 0f, 0f, 0, default(Color), 1f); + Main.dust[num1].scale = 1f; + Main.dust[num1].velocity.Y = 0f; + Main.dust[num1].velocity.X = 0.5f; + Main.dust[num1].noGravity = true; + int num2 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType(), 0f, 0f, 0, default(Color), 1f); + Main.dust[num2].scale = 1f; + Main.dust[num2].velocity.Y = 0f; + Main.dust[num2].velocity.X = 0.5f; + Main.dust[num2].noGravity = true; + int num3 = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType(), 0f, 0f, 0, default(Color), 1f); + Main.dust[num3].scale = 1f; + Main.dust[num3].velocity.Y = 0f; + Main.dust[num3].velocity.X = 0.5f; + Main.dust[num3].noGravity = true; + } + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2 && player.velocity.Y == 0f) + { + Item.damage = 135; + Item.useTime = 60; + Item.useAnimation = 60; + Item.shootSpeed = 0f; + Item.mana = 40; + Item.shoot = ModContent.ProjectileType(); + Item.UseSound = SoundID.Item88; + } + else + { + Item.damage = 195; + Item.useAnimation = 18; + Item.useTime = 18; + Item.shootSpeed = 10f; + Item.mana = 0; + if (Utils.NextFloat(Main.rand) < 0.1f) + { + Item.shoot = ModContent.ProjectileType(); + } + else + { + Item.shoot = ModContent.ProjectileType(); + } + Item.UseSound = SoundID.Item1; + } + return this.CanUseItem(player); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 10); + val.AddTile(null, "RainbowStation"); + val.Register(); + } +} diff --git a/Items/Weapons/Melee/Swords/ShimadaSwords/TheRainbowsHonor.png b/Items/Weapons/Melee/Swords/ShimadaSwords/TheRainbowsHonor.png new file mode 100644 index 0000000000000000000000000000000000000000..98e2535fd47668e559d5d4f947af2f123a5f5214 GIT binary patch literal 1009 zcmVPx#1ZP1_K>z@;j|==^1poj5Fi=cXMF0Q*Bo{5d0?dGamQw=EaaDR(I$!{1{{XlD z0QT+9{{U70EB}rF|H}aXJper+J$kNo7ytkRUr9tkRCr$Pn>}b0K@`U~mR2f=$yrG* zf@l~e?-l0qR`h#!T8pp{suq)93p5u#;IL_+KY(b!2s&;tdNAV|EN2%?Qv ze$AWxFZj%3X1(3q?acgO^0J%TyW9EQ+j%pa>xdksyrK7(imPbLVVpAvb08Qj3NUy3 z(->`^S$~S6^9I8S7M;SMpvpbfPMkd#sm2Kgi^i?EfncyGe0{x0jpMw*!d5b=PLGF!T9izqx28)KuJ=Nwv);d%R2HOp>_T2wjH-_^D3pWm8 z{HyG%(Dupd4T?9TtrTZFwKJ7}Dh7k?0M1b5FE6z8W`pQ5ysy2Xn&Mn|xdZFk9MKqKI*B@W=Az__!Iy!Hlr(MN>|4xH-;B znG6OcbG)+QIXO8sNfGcI#Qc-5!SI}K)^HdH`E0^elS;XV$77upE9F>0NY+6Q>(#uh zR`L8ZXlst=3=HCNs8#uKlEJK3@qj-DVZt;IlzLDyiQ}ZZRi+$-!Grz!z_cp@{uz|! zfwnz{=i%7iZ^ZFC;%{ fires a long-ranged Rainbow-Axe wall"); + } + + public override void SetDefaults() + { + Item.damage = 280; + Item.width = 54; + Item.height = 58; + Item.useTime = 20; + Item.useAnimation = 20; + Item.useStyle = ItemUseStyleID.Swing; + Item.axe = 40; + Item.tileBoost = 6; + Item.knockBack = 8f; + Item.value = Item.sellPrice(3, 20, 0, 0); + Item.expert = true; + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + Item.shootSpeed = 80f; + } + + public override void MeleeEffects(Player player, Rectangle hitbox) + { + if (Main.rand.NextBool(3)) + { + Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, ModContent.DustType()); + } + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2) + { + Item.useStyle = ItemUseStyleID.Swing; + Item.useTime = 20; + Item.useAnimation = 20; + Item.damage = 280; + Item.axe = 38; + Item.tileBoost = 6; + Item.shoot = ModContent.ProjectileType(); + } + else + { + Item.useStyle = ItemUseStyleID.Swing; + Item.useTime = 20; + Item.useAnimation = 20; + Item.damage = 280; + Item.axe = 38; + Item.tileBoost = 6; + Item.shoot = ProjectileID.None; + } + return this.CanUseItem(player); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + float numberProjectiles = 16f; + float rotation = MathHelper.ToRadians(35f); + position += Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 80f; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedBy(new Vector2(velocity.X, velocity.Y), (double)MathHelper.Lerp(0f - rotation, rotation, i / (numberProjectiles - 1f)), default) * 0.2f; + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI); + } + return false; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.LunarHamaxeSolar); + val.AddIngredient(ItemID.LunarHamaxeVortex); + val.AddIngredient(ItemID.LunarHamaxeNebula); + val.AddIngredient(ItemID.LunarHamaxeStardust); + val.AddIngredient(ModContent.ItemType(), 14); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Melee/Waraxes/RainbowAxe.png b/Items/Weapons/Melee/Waraxes/RainbowAxe.png new file mode 100644 index 0000000000000000000000000000000000000000..c0995ce4451cb4c58ad42bfc963dd2c8fd3adf3c GIT binary patch literal 910 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 + Item.expert = true; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(7f, -5f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 10; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(30f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI); + } + return false; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType ()); + val.AddIngredient(ModContent.ItemType()); + val.AddTile(ModContent.TileType()); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddRecipeGroup("FabusMod:TheRainbowDemon", 1); + val2.AddTile(ModContent.TileType()); + val2.Register(); + } +} diff --git a/Items/Weapons/RainbowDemon/TheRainbowDemon.png b/Items/Weapons/RainbowDemon/TheRainbowDemon.png new file mode 100644 index 0000000000000000000000000000000000000000..09871f7db7aeba3bb97841b91eb3deee8be4a4f0 GIT binary patch literal 1919 zcmV-_2Y~pAP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF0Q*Bo{67f*b$)Vop?C`pzM~)yjs1g68}G zaaDSNf0jKVJy$wlrB@TgXczzcjJrLJ)Zdj>~rQ6GnC6OS<+(p!_SAh)=}p| z-T8IboN*#m*>4{HHEdt|>P21UaPIskZ!1o`@Nw98-ZRHK&et`ERxSI9~FDPJrdRts`JhY zdwS&ikrm-H{NagkBmb1AOgr40GD*tN9rJ@29SbXC#ATFpPp(Vc_~<>wm5W!f86?6D z*DMYnj_G<65_#&-=V5vFlGT;e|AJV`<;mg`r;&YsZdq8Bi}R^R%=6D}2@*Fv@pQRo zOyJtvi#K0+FML>cI&RVgQyJNU?9< z?&A1gzZc6EEh`2V4phg);ZMFQMvosYw~BCXPA27~Ris2pBIHEs7)b=B5s@xYNajnM zUe1ejdFqgXecZq-kp!qrOprP+b%NZL3Zm4(}UtX>^J2Z+~}At;o$cjfVA0FPs~euykNc7{QU2hmMFcz58Hqr6;4V$|nBN}7j)ZJ-{ckr7!Ux4!snHjONi$TBMu zTqd|sKq^pRmjHDlMvt|xsdTByGTKY@5r&JIwUbS?MX2qkx0~})g|T%yK3<2O4hEC zgXP{f91|o?LcFQ!yG@b!xQwatNm`7zu4xrnCs7F@!9F4aiQWFxm&N)=ZVcPrTs2u& z^N-OW_3wZ(R4$9L`@I$JM~e}0%MnO(^y>~xnMg@&l0?nHQfc%)NXO5ZMD`*Pa%uF! zBhvf88Q(`Xm8cX7NytIkH2uj9M!H7bsI6DdUPtYC$|JnR^i5>161T4XCA{^}9MvpY z!hzA#VfoWIX!2&m^7#rPbv>8oZc zecVIu)RN}%aw7dLNBE#P>38j3Bm!wvUxqOH9#DrZnG`Y}Y;-IhOu!Qeo64!H)llt|iSBc;v^@PDCP4j1M=XkPJ4Y&)*hEXHKRdbuQ1R zHJ(mES^XcvlpI=!B$m6vx@1z0SdgGe1NHaTSW&;HpbwXWNJF& z#OW217#F}CQw27mnn%)4%D7;g{jo#@@(); + Item.expert = true; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(7f, -5f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 5; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(30f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI); + } + return false; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:TheRainbowDemon", 1); + val.AddIngredient(ModContent.ItemType(), 2); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/RainbowDemon/TheRainbowDemonClaymore.png b/Items/Weapons/RainbowDemon/TheRainbowDemonClaymore.png new file mode 100644 index 0000000000000000000000000000000000000000..88c08e2a4f9f34c59d1ef42e54493b249751d2de GIT binary patch literal 1956 zcmV;V2V3}wP)Px#1ZP1_K>z@;j|==^1poj5IZ#YgMF0Q*Bo{5KGHCaC%}!KY)k31a)yjs1g68}G zQ5Z6DReFGbmOUXoS2|$ymDGtTRKP;C;j+ zir7VqQZ*5^Bx-40r73Po1@W;cG2hAj!+%fa%$-SYg01;rnAf>8XTJH*W0J1y0%gTj z0~4%I{C2GEGpa09m9M(y1t(GuyM5X1VSn4HFWbtY?7eqy$v*jPXE?V0yB#g%bG>D(Ba;FjxF_57_WrQ2?X=va4#-jeqqhlVmEpliMki5P%0Lix>OZuxw2bQR z>Ejq7pnvq^_dWRN#EyM?+01@E{%u%4vG(zn-_hhrDPohAa#G0}=(;$2xclaOuT`w$ zGS{tHmo4t=3ERJqj%7nbN3zp@p3PP*UzK$)>n_fTpFaO48$W$A-^)VTluYVLt0)sG ziI5Vhb0iUzMnt+qA(?N!_*Pn^%cF8i+_|1hvPEP6OiP<8DX5TGdfAeEYl`lr%d>0m zoO%I>8a_EZt<2!y>S@BEj!5cN_Rt6$*tMxeBK2m(R<{6qd;iEhjY?g7O{I40hR3Q! zx=QQxRQAWQ=hFIoF~KJQ<>Z%n1p zC4PM1gRV-ETdue|Z1-MzWmtpXyeyq@vV_Y}8cEv0!v{m+`F%V2;N5{gT>RqI=Ruh? z4+#5!NYcoNERnlkeh*JstR;X)n zVSrFln!=kj;+b@-Sp$jl`C^L7lc1&{p*zp~64p*#0YHD~C`F#?6h2Uar_)JE6`nvL ziO;Z5F1@G^Cz@QnEKBXY;t2A=5&v_*tlzOg7qDf`DlsdW( z=-!~uK5&UJCn95zs7i#H{^SHzpHKQ01xY1|YQheQ1VqN?g!)iVJ`(*!!54e>wR9Cs zO%UO@I8fbPARrOuO{6N~c%{_Glt~n%g@hp82O^Tk3rGz{N@m#4)9EkFzma26RY+oL z+Ed1iL?Tg>R+pHn?3$kI3R#E8e$0L3zl~GW`LfXqbM&GlQN&+3@ppE|L^hGAG^!bD#Pq=?ZdTxPOmDg|?b63R^i3^k zE-xk0zjA~RinIRKZXyxlX%2l4Xi_VgRMH0cE;8;<`3tfqPZjkJT@od*$=@TXudeM#u%}MPfR+;r;#$6b_;nG)fd>* zj;!4?;mud)wOw`|bPbNXZ2eYFysrd>!6j0@xUruQny$FaGLbG(cPBJx}apLp}NsKGrXKed#A2x|^G{vK=Y^t7;(Q6LizLmqKDv%VRrZ{XMV=1==ZdNqQ(Gkc z(); + Item.expert = true; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(7f, -5f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 10; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(30f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI); + } + return false; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:TheRainbowDemon", 1); + val.AddIngredient(ItemID.FragmentNebula, 2); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/RainbowDemon/TheRainbowDemonMagic.png b/Items/Weapons/RainbowDemon/TheRainbowDemonMagic.png new file mode 100644 index 0000000000000000000000000000000000000000..0b41cafe0482e47fd3dbbe8b774f39be3905b1ba GIT binary patch literal 1971 zcmV;k2Tb^hP)Px#1ZP1_K>z@;j|==^1poj5Gf+%aMF0Q*Bo{3>W{Wq-t4>s0E1MYj6000LbNkl&3DaP7>lwOP-;Q{mY7$a8Ji>z;#~Zw>nsM~;WJ z-?yk7WbvZ)Z11 zgiW`t4-4mXzj=xL<3w**Up{cIkosQ`OSwE*EO8n+wrTepMY*`1dc?f;>YgBR=kN>p zky(M;AI$c>JsK9aowkS60Xgb_^fsZaFjS0WbQ7he3^dX38N>Ejq7pnvq^ zk39PL%sU6)V>3H(@~g1keeaWPzoW^MQp6?;<)o4&p~A&FE_3Uat=Wpf{;+*^Vk$d& z^hkF4+^^Y&bsMt2Yx;_F;`>j(%%)FI=6hMVHYJmC(kjYCN+P60>KsV~r4f-XQAp;S zFTIr(>GISe1IhCyBx0$4ZcXpXe5*y@nswO?_umn=5p`_x*qm!NZrnUaIMflziz}-% z!hYVir%fW|X2e#V;ObwFXP!o-F21Ky`_#}A)goOWlr>){Yr-T=K|##PpBTVO!}^lS{n>h*JstRv-&p7$B6Crce-odNAo$ zvj!69^TiaECqYd^LN7Tr71mB&0YHD~C`DAL(+KYa6?i(GlvLpf6q5Mt%g+?^##FN| zqvHiaLgVI?Z?@t6oevl^W74M-Pa~hzKNh^5LQE zrjgOG@6A<{bv6GO4N@9V?*8Ypu!gbi!{K?f7!kJ|fiy>d-GN0DDT#HGs5w|!8odwF z`SUrEjsE)6L?R%OG$O$}`MB^JO_4|+$-*b1r0P6yxwTs2xvvgtwTkHSMMn`Lw+Fo(Dn_)hyM|X@01= z9LLqyaSVLE2kdLqZaRD#Eg%{_#D%lZcL~2@eF-aOPb3|iB!vQ zd{A8Qw{{bWKpNGTA&kBUG^v$L3h9H5kJ=h6fF=x{K=2e&Im*fJ)z3mo8u&Gm=#sdf zi>&+CpVCpgsl=Fg?uJ+jO!5%Uy>vgG;}Q|bf-Dw3`xr>HxJ0gJ&F>LJs#$oMtm!Tg z#+qX+ItH;sfjr^kLJVP%&^aO(B2j&fPiO(L$fR?T2=Q61`eqsudy4Vkfomn_1nVQZx zae9R$#s%*-E}~3Qm1t3Q58%9y8(wGXsow;V^aXVOsT(0P7Fi~7sRY(Vk``JX-AAD+ zt7l`8=Yzn-qUy!e7D+$(e-&7VVjf99DdU2Dj>i%a$b!ISi7ncOd3{$3j>iIFS>9ZN z5SJ-5&7n_}++~4j3Nb}9&c8&K1vaBiP~1l@3#?0){R`IHveF*93-$m2002ovPDHLk FV1g7ytLp#& literal 0 HcmV?d00001 diff --git a/Items/Weapons/RainbowDemon/TheRainbowDemonRanged.cs b/Items/Weapons/RainbowDemon/TheRainbowDemonRanged.cs new file mode 100644 index 0000000..e7525fb --- /dev/null +++ b/Items/Weapons/RainbowDemon/TheRainbowDemonRanged.cs @@ -0,0 +1,61 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.RainbowDemon; + +public class TheRainbowDemonRanged : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("The Rainbow Demon - Ranged"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \nUnleashes a barrage of rainbow arrows \nDoes not require ammo \nClass and projectiles fired can be changed via crafting \n[c/FF2B6E:Currently Unobtainable]"); + } + + public override void SetDefaults() + { + Item.damage = 82; + Item.noMelee = true; + Item.width = 82; + Item.height = 39; + Item.useTime = 4; + Item.useAnimation = 4; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(40, 0, 0, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 25f; + Item.shoot = ModContent.ProjectileType(); + Item.expert = true; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(7f, -5f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 10; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(30f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI); + } + return false; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:TheRainbowDemon", 1); + val.AddIngredient(ItemID.FragmentVortex, 2); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/RainbowDemon/TheRainbowDemonRanged.png b/Items/Weapons/RainbowDemon/TheRainbowDemonRanged.png new file mode 100644 index 0000000000000000000000000000000000000000..7eb4966de064a4dad4b4dbecf111333612f9b8c2 GIT binary patch literal 2028 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 KMNUMnLSTaKsM${d literal 0 HcmV?d00001 diff --git a/Items/Weapons/RainbowDemon/TheRainbowDemonShredder.cs b/Items/Weapons/RainbowDemon/TheRainbowDemonShredder.cs new file mode 100644 index 0000000..226b719 --- /dev/null +++ b/Items/Weapons/RainbowDemon/TheRainbowDemonShredder.cs @@ -0,0 +1,60 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.RainbowDemon; + +public class TheRainbowDemonShredder : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("The Rainbow Demon - Shredder"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \nUnleashes a barrage of rainbow axes \nClass and projectiles fired can be changed via crafting \n[c/FF2B6E:Currently Unobtainable]"); + } + + public override void SetDefaults() + { + Item.damage = 82; + Item.width = 82; + Item.height = 39; + Item.useTime = 4; + Item.useAnimation = 4; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(40, 0, 0, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 25f; + Item.shoot = ModContent.ProjectileType(); + Item.expert = true; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(7f, -5f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 10; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(30f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI); + } + return false; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:TheRainbowDemon", 1); + val.AddIngredient(ModContent.ItemType(), 2); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/RainbowDemon/TheRainbowDemonShredder.png b/Items/Weapons/RainbowDemon/TheRainbowDemonShredder.png new file mode 100644 index 0000000000000000000000000000000000000000..651d8ca7861525f888cdadcda0aafbb242a1dc38 GIT binary patch literal 1966 zcmV;f2T}NmP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF0Q*Bo{4vEicMOMov^*t1K+O)yjs1g68}G zaaDSNf0jKVJy$wlQ63*?CMfSyQ{-wCcK`qf97#k$RA@u(nM-ILRRD%3ibRFBf@nxA zxTsbwjVUx0H|@elaZ^RGNX3dMh#SS7h=};co#;jcMN}-(f@n8_k45XE)D{v`Y6*5B z)PyL4b)g2)Yrb>mAO3rC&fK|qVQW4Z=6Pq%`Q|^5N&1TOlxqftTdcpIndn+aT?=*B z*WL5H6RFDHd*uaT|D&J&=_-e7?;0E^KAD~g$6lHk@3>y~+_Zfp?4LY59@c)}o<;iG zgC=i$rI3^@t-r(mSl@+V9g7iuJ=aP)$5k)3-}>t9a6KIP__N~3*kss7sIF_jwjTL# zWH2nRT+s>-@}<0F#o^hMNm8Erxi5&(xv()uTt-Rv9$fAx%Jz`X9YbNEL>Pk&LB8X-R<~%C!5$iR3jZyQhz1gn<6hkKcLE{jE3m zz0YQGYVw<~e&m*iJAOx#C#8tZ7Rt#bOG1Tc%lURG|k85-PB+;IC%VH;7$PamIm&FJX%dBUNINM2m3(g?e6e7Zv- z$;07&V=j#@@zVnz^wo+S?*A=p4_tgnSi|N0{k7?glOABj<)2PtVD3ig3|kVZyiiG26f7qV$&jYQU2k>E1Hg#uE6 z0=opL6EXE;yWmQfnq2NBK%7e8w*pz3u!)PqU4nl+F(pD*U9JqcqU!}hLgVICZg$}Poevl^ zW74M-PT?JDUL^v)ERCX5#NQ4y=se(9ODD^QZiGsAK zpY?%=gOQRM_RDno3-fQ}SX3R7n49*bSdd60YSQWwbA{cp{>Dnyp)=o>N84~t zkT?nPrmEjIMdIT!rphO2G2XgXRAik*C4>a~hzKNh@2Rokz}nHU@6A<{bv6GO4N@9V zu3fVxtYO>Nli_)^7!kJ|fiy>d-GOBjDTz&zs5w|Fjot_8{JEUS&hNS|^db?ENE(sg zoqSw)jiyMXk7VH!QBrlDK2i%)A=b!e(Q!~hDQBHT;CQ@1_^qY68;uj$RH9NSl#U#v z4N;37we`u_>!=-1d4#u^C2QKfO1y2|U*W5VB&u1mhF@l9!+Pe=Kf>f5N$Tr-g6tq# zqjsmq(Yp?*CFn9vNQ%L0~C%;!e3pr`v*GQsE;(ji&>0f`6qjs+n zW8%3RVkt1mLpb-+{dkT`L?8>YSorK?AkpFyxt=w@M-ZuI;bpR>yFeIgj$_5LJQfJ6^5zqSxJ;pG z4t=8Jt_sXkiK&`#`6aR{us1pc#eL+ez@`+%zimRZb}^-R+5i9m07*qoM6N<$g4(&V A5&!@I literal 0 HcmV?d00001 diff --git a/Items/Weapons/RainbowDemon/TheRainbowDemonThrowing.cs b/Items/Weapons/RainbowDemon/TheRainbowDemonThrowing.cs new file mode 100644 index 0000000..9bfde1e --- /dev/null +++ b/Items/Weapons/RainbowDemon/TheRainbowDemonThrowing.cs @@ -0,0 +1,62 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.RainbowDemon; + +public class TheRainbowDemonThrowing : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("The Rainbow Demon - Throwing"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \nUnleashes a barrage of rainbow daggers \nDoes not require ammo \nClass and projectiles fired can be changed via crafting \n[c/FF2B6E:Currently Unobtainable]"); + } + + public override void SetDefaults() + { + Item.damage = 82; + Item.noMelee = true; + Item.width = 82; + Item.height = 39; + Item.useTime = 4; + Item.useAnimation = 4; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(40, 0, 0, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 25f; + Item.shoot = ModContent.ProjectileType(); + Item.expert = true; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(7f, -5f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 10; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(30f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI); + } + return false; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:TheRainbowDemon", 1); + val.AddIngredient(ItemID.FragmentSolar, 1); + val.AddIngredient(ItemID.FragmentVortex, 1); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/RainbowDemon/TheRainbowDemonThrowing.png b/Items/Weapons/RainbowDemon/TheRainbowDemonThrowing.png new file mode 100644 index 0000000000000000000000000000000000000000..5fb58fa016a100a4572118615ab164b51892b975 GIT binary patch literal 1979 zcmV;s2SoUZP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF0Q*Bo{4HifX_2Sx!`3W3*+y)yjs1g68}G zJY!68ReFGbmOUXoS2|!OKQPqvmm>gV1pojCDM>^@RA@u(nO%q$RRD%ZtBWGYF3fh5 z3RcvX%0LTmc7r77LL;dz7A&O2h{yf5_ zifzqqvXHtE+x9s-@A!Ua=gc>=f28dL!~E{dInTW3XTDvKU7{>oa@!c|6Q{pzTSr|B zRo7SD^O6&(%C360C+r{HKG;?c*FLrN_w215*M?&sJ-4&vdfl_TXI0oA9y}V>e&5C- z{p~@WH$GQL%A)RbVgJnV6=5BV5q>?_N;=0?FSg(Ld>~v8Lmz*d4Sjt)Y$H_HEeuB* zvg^lN!*ch)+VCJ>@=N9%o=uq~<;(t|AV%lH#yD{qCEb(j5+B?8aJF*!o$LmQu=bAS zVd0$aHzkpK4qP49o7SBzr2ZGgQZ7#xOPofIJ^1>QMY*`1dcHF{Y_ze#m0`XhO)v?F_JNpC@p0mh=dKS-&J}IWv3~7`Zz`i z=pX&~{SR##dwcKuY-Y!fe-+k`-_zgncQkoYir8eKoK&(TRJd5jWp3!*kX_TgG;IGd zJdzzgJeZyO>rA$~YjxInLuYYLeE->@Z1mL0d@l>vreso1T1A;iNraS0og;~$G$PU^ z3dwxq#W&L;U7mN~B+r|Wh^79z|EGK_%Q~)Fly6PY+0m8Va_?PX8&OA29+`B_nl(L> zghL&XytuMTBW%mf-?d1jZj9Kf6P!ErXXa^C>f(DUwNLatQZ3R2LRs^LvL;Nz1W5x= znABj<)2W8Sc6zl`_AdQU368Y|H zuO!pR8i}lvBEe;X3k9SC1$GHgC1UiK(Xg#_smY~Y0>r5V{#GChTo@pfl%`M+fO;_L zRLqh*Kc0R0~x&nay&{2x0P`eS{2P*J%Iw`5b6DTC{nU|g}=8dUl zT}ImrgoMV;Dc@|t`#V)!&6xBl1r*+!okmXfInP?C>2psKO)A@^)X{T5&jx+=flGv0 z5gCI-6(Y>^$0w-zeA2flNGeHG6Lv@>ATmBD)Q5WVk?1c94!pOwrK@0Sf(XaOfy(Xz z0f{hYB2^H_3#C4$Orjty>Sui*B6+-k)L^7!hW$L9{=)nlITlrgB&Mc4WlTvV5;bXc ziK)W&F1@{wb#UaH{OAOn6C_STys7GM>mu=S8OzEiX))fq=2T>rL?wg-`-li6cJbyb zv$NYK`Y&&;nyjn&$7qn!fU@{}Z&<$C8=|H=YU`7;>8Kq~d4#u^8Ee{2CGrCXUp*vI&5|{o{^94a z{_Vs_nA{^teVtE`9Ykx?ZaR8{W7+4P6#Z7(9UxChB=#NaZLe_x9#1 z%EY-?NpwlvFW(Fh21Lfx`t_%&M4(w~P>B0eenIx+>5Y4bt`S!PoBSS0d3A3`f<1LE zowCMB<6e}%&hL?gg}Nbg()4F45{3F2pU?ttm6TFZDy**=zb}GV5Xi#xXWgTHVF?3F ze%>YeKe0#{a83*IJav971=skj0}vZ06?sTRCQ@5OPDLVbjD?3$NCq3y=U)q&laZt}hw~F8EC2BFZFHi56A&0M7fk;dQ2-`kNq while under max HP grants the [c/5EDF85:Shattered Moon's Blessing] buff, which has the following effects:\n - Heals the player rapidly for 2 seconds, but disables the use of items\n - Grants [c/9CE53B:Shattered Moon's Rejuvenation] after 2 seconds, healing 100 HP over 10 seconds\n[c/5EDF85:Shattered Moon's Blessing] has a cooldown of [c/CA4646:50 seconds] once the effect ends"); + } + + public override void SetDefaults() + { + Item.damage = 240; + Item.width = 27; + Item.height = 69; + Item.useTime = 9; + Item.useAnimation = 9; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(0, 15, 60, 0); + Item.expert = true; + Item.UseSound = SoundID.Item5; + Item.autoReuse = true; + Item.shootSpeed = 50f; + Item.shoot = ModContent.ProjectileType(); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + if (player.altFunctionUse == 2) + { + if (!player.HasBuff(ModContent.BuffType()) && player.statLife < player.statLifeMax2) + { + player.AddBuff(ModContent.BuffType(), 140, true); + } + player.AddBuff(ModContent.BuffType(), 10, true); + } + else + { + player.AddBuff(ModContent.BuffType(), 10, true); + } + return true; + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(4f, 0f); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.LifeFruit, 5); + val.AddIngredient(ItemID.LifeCrystal, 5); + val.AddIngredient(ItemID.FragmentVortex, 14); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Bows/LunarBow.png b/Items/Weapons/Ranged/Bows/LunarBow.png new file mode 100644 index 0000000000000000000000000000000000000000..1a871c027f74811228f20f41a51cb8ef421c55c6 GIT binary patch literal 1574 zcmV+>2HE+EP)Px#1ZP1_K>z@;j|==^1poj5R8UM*MF0Q*I2AbBaIca_r4|+zb1ZYd)ykfnnudge zb;aYJ^Y1uji$FbVIiRvYb)Gw0hp14zxN6LEb$3owT$iYzwQf{*SVrci&(441O+GiG zwXA%9f=rPu;Q#;ya7jc#R9Hv7nSV@GWf;dFv4$=P%)ECKr+~VoHAeJ{iLh`Dv#hb^ zAIw6=DmIrH#h7==*4Btot(DYrHIsmBY_ixao3*AzVx)A~Jv^WDect!H_kEA^$WYFb9Njpj&c8a%dgTJ>d_|jHzhOU@ zfncRVU_emHdCY(UF)l4|m&>IT7>E7|?xW$$U0k*t{f1NmpBGHb%t-n@H0%C8Lvr1VcJ}9b6918{|?c3<^vo`Vgr@3L%y5LJF{b zdq35yIxgw^Cax)y+ zP5}UCIpyz0<<6EfXk+r9lvi3z=|xo$yR!}JY&%RRJ#|$6-U~*JbJ>Dn1b$He5fyH5 zQ-9B-QR`f`ok7ziyD$(@DjmT9g0o27*@D3Z+yHXSdzz0(WZPNlh?gPpy;qGI z=dumMiyi;jcQiGAje#rQ+3UF9!om;`vwu_L?=-!98O^`>uL*RjIbrzOsbBjgyTY)4 zzF;xkJ~C4BUCdNO007W5C%^cA0RmjcOBL4H`_ zLXO&+H}yyJUgBQ_C+=(u(3YYf^rtsJ#{m4e?rHfvHZUj{D2LJPT!BGC1p^RuNM&%F zZAoDC15$)CRG-K_C;AWSsn_)EPWo#1o>?O}P!)mJgp7h_=lIyKI*&Q5fyJj+zojSo~!o#Wb%q!b?;cGgR^oiI>exV7P%)3B? z4<6_Bf7ehVT^qm2Aj~iWXZrYW&c5d5YY6w?5Vvq>I(uYI8vT0iVn}CzJ~pwD>xMIX zXhlyZyOhAFYi?|ylF~A669w)a;LH-ZY<-rc&rpZSwy)8{_oVCT#2XL;h+y6|KI&}$ z-h3bdK(axR{oieTWvK7UI2k})fSBDOTx+EH^Fz8TaTSr@fH%=c+E0IQ&#yk`reS}h z0HEMarUiyH5~cCEq%b$>D$Q)1X2d(3_CbGJA+1hJVK?Z{gS)>q+xaAfEDeEugh1Yl zm$@Ek3hqnXgLTc6;%iXGc&(W>RtG<6rx zn|KH94vw%eyu=vVkU$`wpgT`d-@pMiFbJu`Fu&nTqN$8jT9CAuUv#XloPeP4OF4fq zyie=ayBPow){T)UEKJnXd!9>xuuygC3bG9=YWR>Is`D@?=0e}e2bf4d!q|2OMY|ca zEjYo<5zVJ1Th0)?eA{+9II=J*SB^#_zJnb9_zR;ZMv}pST}z}Xv?TlCc>k4sId0(Y@En8XR)~Lm4gcCeHj%KadvV_JmKou}fAjUOI{(A%q zRlAEBJBpL^8P_avhMkEj5X5OLag~^(vHJe^xdBoMf;gB!Oh^8HQw@U5fPtxu1&D~~ YKe;xHC5^@WG5`Po07*qoM6N<$f-Z&Y761SM literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/Bows/LunarRainBow.cs b/Items/Weapons/Ranged/Bows/LunarRainBow.cs new file mode 100644 index 0000000..6bf11df --- /dev/null +++ b/Items/Weapons/Ranged/Bows/LunarRainBow.cs @@ -0,0 +1,71 @@ +using FabusMod.Projectiles; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.Bows; + +public class LunarRainBow : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Lunar Rain-Bow"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots, doesn't require ammo]\nGrants the [c/E6A6CF:Spectral Moon's Grace] buff when shooting, reducing fall speed and nullifying knockback \nUsing while under max HP grants the [c/82E8E8:Spectral Moonlight] buff, which has the following effects:\n - Heals the player rapidly for 2 seconds and grants immunity, but disables the use of items\n - Grants [c/6DE5D8:Spectral Moon's Rejuvenation] after 2 seconds, healing 200 HP over 10 seconds and increasing ranged crit rate by 60\n[c/82E8E8:Spectral Moonlight] has a cooldown of [c/BF5E3B:50 seconds] once the effect ends"); + } + + public override void SetDefaults() + { + Item.damage = 320; + Item.width = 27; + Item.height = 69; + Item.useTime = 7; + Item.useAnimation = 7; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(2, 70, 0, 0); + Item.expert = true; + Item.UseSound = SoundID.Item5; + Item.autoReuse = true; + Item.shootSpeed = 50f; + Item.shoot = ModContent.ProjectileType(); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + if (player.altFunctionUse == 2) + { + if (!player.HasBuff(ModContent.BuffType()) && player.statLife < player.statLifeMax2) + { + player.AddBuff(ModContent.BuffType(), 140, true); + } + player.AddBuff(ModContent.BuffType(), 10, true); + } + else + { + player.AddBuff(ModContent.BuffType(), 10, true); + } + return true; + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(4f, 0f); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 14); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Bows/LunarRainBow.png b/Items/Weapons/Ranged/Bows/LunarRainBow.png new file mode 100644 index 0000000000000000000000000000000000000000..1bb750769abed1b2996388bbd8555cfa7d57a91c GIT binary patch literal 1430 zcmV;H1!?+;P)Px#1ZP1_K>z@;j|==^1poj5KTu3mMF0Q*6AKytJpliX06if+Efy_TI$%5_L?jn2 z|H}Z*{{V4SdR6}`0QT*2VTXW!mH@Z^0A~M9J~ww*MpFXJ6GjsP000E_Nkl)R8Izur;OR~-jFH(F_Y^#Z1^T0h8!@^hNtrZrO%Rt zyI}UXsL<07OUR|Bu&8jir>7{uJnmY;oVzuH z&K=6*Fq1Q+?$9T5+1#auRjyPd`tA;!&9;_KsbHE)Uw~dW=gqdc+o|1UN+bP-NagoE z*E{1(m6S@9)?F$Xvk9}mI`j4E%}I&n-%hp!rgo+v9|-9AyLP(R3YaO4zUa4=s~&XD zq7IXwEn%9%uAb#m(3*`KWBuj}U=p+`j0@+los*m2v$j{-6o_OM58Rm_?yEOMVtL|h zD78(O2`=Id=CSMbn+7^?=uPwY<-eqU<>EzI$@xG62(D`sOY3&EhS{pDU;YBCPzO9w ze=L$z8r_n8{S)}twc7q2qq1Fi`>hXa<70=V&beseT8Vk3HyK_x9NMRtmuu4QM+db^ zv?gzki22c01^DMeRfa#?h4~kP6tdU+EGP+4(-?v&WU#x>tms}L`$kk*tcGA*r=WX# z`V3$JHc{#GE&mUF1?_lft=ya&5rH-m!16O^_7+aLm^eVV7*{_|Uyk(+ku)8DZbI5dPK-*Oh_ueLMq2xSe_z^tsXNza zq|X;1ATK^OW{xkLFylYHA%$6g=Lf^mCMy6V&MFCnNGA>*>_VkJ1*vezr~UY=V`k*v zQFG*xccrj^P9B(&Hd##V*DG}O{)4s_R;=G}a!2|M@rF*1#@JxcfueG=L}cL5j;8iZ zn*Ha-%=D#cIp(>GD)yWq1$KM}LEMny&mfej0B|0l1L;6Xi0aI?q?dGf&RIW`6qI*8 zYiiBEkTi$`t2`@p(+v;OO^bqnytMDtFo-<}V$YEfb<@+*85fSf@{#PWbfbd+A?M25 z+$3#wVnaVkIAV@uJBMlu|HyVO<|;uzkdDMu!x118vWhveGJC21uqVKx5LL@QYa|7+ z$4449Wl<1H4b!hn8j=5{f~X*SI;K=MTkHi>43(;yZO(S17f!q!f0W%gdWczilB}`MO53*|8DO<^) zOwQC5pgg}hHibD?fg^R5$C0YxCj->6UsAcb7Te_HK>S9W6XXQoPW<}qK<>ss?eU}Q zce}PFgOEb(VF=EaS~oZL^pcePUyKzSRauQ2oX@O8XPx?&iI?hj@4uL!u4(); + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.WoodenBow, 1); + val.AddIngredient(ItemID.IronBow, 1); + val.AddTile(TileID.Anvils); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ItemID.WoodenBow, 1); + val2.AddIngredient(ItemID.LeadBow, 1); + val2.AddTile(TileID.Anvils); + val2.Register(); + } +} diff --git a/Items/Weapons/Ranged/Bows/PiercingBow.png b/Items/Weapons/Ranged/Bows/PiercingBow.png new file mode 100644 index 0000000000000000000000000000000000000000..91103e0c102df8167198984ae387e43606d707db GIT binary patch literal 480 zcmV<60U!Q}P)Px#1ZP1_K>z@;j|==^1poj5Cs0gOMF0Q*M=>!qBqZwQ;x{H4sF8w~YfE@lJim`` zy`PJzeO-)YP}9P;2>ugJ00043Nkl{^>h+;Bv$OCMZoY zV1&73@z#xCfmm;UFun8q`2li~xtb){MTOa!V1f6yPJ-zLyU&5?leeA|-*t7)P1U}=poFaQ8i Wk&S7>1yaWV0000) \nPressing fires 6 demonic arrows in quick succession, but it has lower damage and a 2 second cooldown"); + } + + public override void SetDefaults() + { + Item.damage = 34; + Item.width = 18; + Item.height = 38; + Item.useTime = 16; + Item.useAnimation = 16; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 3f; + Item.value = Item.sellPrice(0, 3, 0, 0); + Item.expert = true; + Item.UseSound = SoundID.Item5; + Item.autoReuse = true; + Item.shootSpeed = 16f; + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2) + { + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 4; + Item.useAnimation = 24; + Item.damage = 30; + Item.reuseDelay = 60; + Item.shoot = ModContent.ProjectileType(); + } + else + { + Item.reuseDelay = 0; + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 16; + Item.useAnimation = 16; + Item.damage = 34; + Item.shoot = ProjectileID.HellfireArrow; + } + return CanUseItem(player); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.HellstoneBar, 6); + val.AddTile(TileID.Anvils); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Bows/StormBows/DemonsBow.png b/Items/Weapons/Ranged/Bows/StormBows/DemonsBow.png new file mode 100644 index 0000000000000000000000000000000000000000..06d1db09b8b2e97144618b658321c8a2b64567fc GIT binary patch literal 489 zcmVPx#1ZP1_K>z@;j|==^1poj57*I@9MF0Q*DI7ggS6o+RXnQR$d6t)}EG)`KMwWCm z8~^|TZ%IT!R7gu>WPk!q8QcF*CJMOztE)w=p%7p;5G2j=T}YJ+JdLwzv4p=}wM#^o}qxrhZy!vWmJ?F=Zf7*G`jVYETS z(OpJ07vVGrWFrWJVht8^_yF}|ZMBXL*zciNuAulGmcE(<-h=t_Qc_?#{@Qmi4GSyU zhY<|G!m93rAOi^F0@QaA$nP-!;{zL?zXW4Yo`mH~5TJgn!SY(`<%=k>1_Q9zL(hXZ z4;}^6)N>KcB?kZhf(3A;BN#vq7i2*DFv1lkxXLB!yXcgg8`uSAyLOQjM(b8C0jsB) zi{J)5eD(~C(E%*4LAea-_SRsG4yYeSgvz5J!B1emzoa;rrhR#Ifsq-EaRHD^Kp5l_ z5JnF>>bnRXfWiiZL1i@v!^$CCfcmk9UiZUl4OqCr#F4`V8BpIvu=Fx`+DGWQ90mxv f1O}+&A_fKkm!+wwMOr2F00000NkvXXu0mjf!av5_ literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/Bows/StormBows/GoldenKabuki.cs b/Items/Weapons/Ranged/Bows/StormBows/GoldenKabuki.cs new file mode 100644 index 0000000..a514f6b --- /dev/null +++ b/Items/Weapons/Ranged/Bows/StormBows/GoldenKabuki.cs @@ -0,0 +1,69 @@ +using FabusMod.Projectiles.Arrows; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.Bows.StormBows; + +public class GoldenKabuki : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Golden Kabuki"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \nDoesn't use ammo \nAlways shoots Holy Arrows (except with ) \nPressing fires 16 spiritual, golden arrows in quick succession, but it has lower damage and a 1 second cooldown"); + } + + public override void SetDefaults() + { + Item.damage = 58; + Item.width = 18; + Item.height = 38; + Item.useTime = 12; + Item.useAnimation = 12; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 3f; + Item.value = Item.sellPrice(0, 22, 0, 0); + Item.expert = true; + Item.UseSound = SoundID.Item5; + Item.autoReuse = true; + Item.shootSpeed = 18f; + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2) + { + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 2; + Item.useAnimation = 32; + Item.damage = 54; + Item.reuseDelay = 30; + Item.shoot = ModContent.ProjectileType(); + } + else + { + Item.reuseDelay = 0; + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 12; + Item.useAnimation = 12; + Item.damage = 58; + Item.shoot = ProjectileID.HolyArrow; + } + return CanUseItem(player); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 6); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Bows/StormBows/GoldenKabuki.png b/Items/Weapons/Ranged/Bows/StormBows/GoldenKabuki.png new file mode 100644 index 0000000000000000000000000000000000000000..85638c266018deb3eafa8703bfd7477843763be8 GIT binary patch literal 609 zcmV-n0-pVeP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF0Q*I}s6UV*o#>j2(w-wXQGP)L!!Pc3#2S zM?yhjQ%?viHuLl8#GPubi(k{KbU|n=EdT%k&q+inWZSdB zK9cKN2Ij*+)m%9+-In|aOv3=FJ{ve6J+7Pz7DLZh^AG!i=|tPjU>XL9^%>oK1h+^@ zQ4x#@f$a}d!59WWKF5Zk(r`fkIEp)X3+#$T_G&0$j_x{`Z#?B^gJ~W^128Qu$Ooox z?mGmgVE`6~^!E|0WH=a6g4IW7rB%Uv7zmrX1WexzFbC5xfGZUaJ|Ce2SX_x&9RSnD zPj7?i!Q&%bsSXCveYWG#4JZo&L@gmD2QHt{-$zI0W`SL7lRS+m9}xlr=cBdV@nDy# z$%}#obi;Z`@)537h7JaA9H~3mf%)iV8af#GR7Y&-4FiKeAK@zNICRXw;ylDK|U>d#c@a6mkFg^HE z9eVzOwNxeKB)~MxC+Gm(Con+&RCn+GeJ~~jKt4hC4J=i`FjN==&_9lbU;k+M^) \nPressing fires 8 demonic arrows in quick succession, but it has lower damage and a 1.2 second cooldown"); + } + + public override void SetDefaults() + { + Item.damage = 42; + Item.width = 18; + Item.height = 38; + Item.useTime = 14; + Item.useAnimation = 14; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 3f; + Item.value = Item.sellPrice(0, 5, 40, 0); + Item.expert = true; + Item.UseSound = SoundID.Item5; + Item.autoReuse = true; + Item.shootSpeed = 18f; + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2) + { + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 3; + Item.useAnimation = 24; + Item.damage = 38; + Item.reuseDelay = 36; + Item.shoot = ModContent.ProjectileType(); + } + else + { + Item.reuseDelay = 0; + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 14; + Item.useAnimation = 14; + Item.damage = 42; + Item.shoot = ProjectileID.HellfireArrow; + } + return CanUseItem(player); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.HallowedBar, 6); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Bows/StormBows/Kabuki.png b/Items/Weapons/Ranged/Bows/StormBows/Kabuki.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c4415fb6e65bb74da641bf3e71d8b12c9ca2ca GIT binary patch literal 605 zcmV-j0;2tiP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF0Q*5f~#*R9vepEPE|4hJ=E?)yn4k|H?*2 zM?yhjQ%_VZHvj+s#GPubi(k{Kbd5XmJ^%m#%Sl8*R9Hvdm_JAYQ5?s$_9!Zd{tksi zom4|cWRsvnQR!eh}jp5eN)KJpYkl>UNIQ8dh%B6yWtd^iDjQet5vzIS5 zuXl$Z`0@2U2k+ziy?3W>mq}AwZ_a!PULQ00_pG4K%zsB}M65Ei&uG#=j`4Bo6iKQz zQ*X4VX)s#MzGG~)nR=sj?+}b)Pj48L)#V5>y0wEOm73XSv~hWkIdNable@^7z&w(a zYo^R7|3SmK4^%0x?ru=TFfUf-+j-QlQ92mJRrnH#Z{N9ib+j4m>O=Ylx{)1C4akEN z9Z9%`>Wz3Zgmt~BQJ|$6W3txXhzwn1kVMvn&NC9>TCI$XA(Po>q;rg9T}MQ-mxr&t zWDxfLZl>NSwY`KZ_AkWBGAf0AM)7C_SL*3$#e{cmvmzr|mx(xcjix6wjKwoe#Qv@; z_w**t-$$~uZdUVQeqT>xo`$lsPKGk0KY!5uR0w657-e*0VG(1kjB;Mr@ea#7YvZrk-tVK@`wh!| rQ#=1N$nK=onh^VqtTG{rj9jiyol6FxtlXql00000NkvXXu0mjfcc>Z_ literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/Bows/StormBows/RainBow.cs b/Items/Weapons/Ranged/Bows/StormBows/RainBow.cs new file mode 100644 index 0000000..b572e4d --- /dev/null +++ b/Items/Weapons/Ranged/Bows/StormBows/RainBow.cs @@ -0,0 +1,69 @@ +using FabusMod.Projectiles.Arrows; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.Bows.StormBows; + +public class RainBow : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Rain-Bow"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \nDoesn't use ammo \nAlways shoots two Rainbow Arrows in quick succession (except with ) \nPressing fires 18 Holy Arrows in quick succession, but it has lower damage and a 1 second cooldown"); + } + + public override void SetDefaults() + { + Item.damage = 90; + Item.width = 30; + Item.height = 50; + Item.useTime = 3; + Item.useAnimation = 6; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 3f; + Item.value = Item.sellPrice(1, 50, 0, 0); + Item.expert = true; + Item.UseSound = SoundID.Item5; + Item.autoReuse = true; + Item.shootSpeed = 20f; + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2) + { + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 2; + Item.useAnimation = 40; + Item.damage = 84; + Item.reuseDelay = 30; + Item.shoot = ProjectileID.HolyArrow; + } + else + { + Item.reuseDelay = 0; + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 3; + Item.useAnimation = 6; + Item.damage = 90; + Item.shoot = ModContent.ProjectileType(); + } + return CanUseItem(player); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 6); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Bows/StormBows/RainBow.png b/Items/Weapons/Ranged/Bows/StormBows/RainBow.png new file mode 100644 index 0000000000000000000000000000000000000000..8e186a9db051d71541ec8893d7db51d60802822a GIT binary patch literal 614 zcmV-s0-61ZP)Px#1ZP1_K>z@;j|==^1poj5El^BUMF0Q*Bo{4!f0l7odRIDNQv%FAAwB;+0RN5v z|H}Z*{{U70D**QG0Jr}DX8)xEG%x@F0oO@HK~z{r-I%>g!$26uFCAS3Mbzpdt&38J zHjWinhYlh-Ip`v~y7*tXD$Y)dI8<=fjW)uEtE-Hg5W@)UC#NJ!}0uZ!e<$=Qf~KR7v_q7qb$8Q<6$&;Oq>gsgL^933YolH?K0SXNSJ zr_>WgCu6i{XmDnd{P^&I+-uhTPYmg!7o-#8K3%xZM|^83;;i9~7}AM!(x<(eG$B-% zF78a_YhxL5KH^ntmfrBxxc5curY`Y?A_i&pt3{rkS|sNq7VVbGYG63jj8EPaF-XPL z5LtR-j+~MB(o%1}WOyP5QFPm}S7H!EzpoZsHt~@+;u!paEO)lD^jM6<=bf!AE|S^G zB5Si=ql1W%*r()d5i`ah;%moP13CLP9qmx>sbVuf{_|keVmbQ!9)ZHj7UIhoYar8) z>hDiq?TOzy7izB?Y5dkQZSS^QU11UGVj>pe2SG6h7KAJ}>;M1&07*qoM6N<$g4CuF Af&c&j literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/Bows/StormBows/StonePlatedBow.cs b/Items/Weapons/Ranged/Bows/StormBows/StonePlatedBow.cs new file mode 100644 index 0000000..dd866b6 --- /dev/null +++ b/Items/Weapons/Ranged/Bows/StormBows/StonePlatedBow.cs @@ -0,0 +1,41 @@ +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.Bows.StormBows; + +public class StonePlatedBow : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Stone-Plated Bow"); + Tooltip.SetDefault("Doesn't use ammo\nAlways shoots Wooden Arrows"); + } + + public override void SetDefaults() + { + Item.damage = 5; + Item.width = 18; + Item.height = 38; + Item.useTime = 32; + Item.useAnimation = 32; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(0, 0, 5, 60); + Item.UseSound = SoundID.Item5; + Item.autoReuse = false; + Item.shootSpeed = 9f; + Item.shoot = ProjectileID.WoodenArrowFriendly; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType(), 2); + val.AddIngredient(ItemID.StoneBlock, 4); + val.AddIngredient(ItemID.FallenStar, 1); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Bows/StormBows/StonePlatedBow.png b/Items/Weapons/Ranged/Bows/StormBows/StonePlatedBow.png new file mode 100644 index 0000000000000000000000000000000000000000..112cde2bae67e6aeefe81db7cabc8480bc69beb0 GIT binary patch literal 518 zcmV+h0{Q)kP)Px#1ZP1_K>z@;j|==^1poj5Cs0gOMF0Q*HzpYYw@IC^|mG{O0Ku8buK_&vU5DnZBbqj^U`dyT+U|3d0cU zd7HV*nVO@0s|^p&FW6~3GH_UyC5gGedV@~#K2)OS$hiO z+RfR?5!4?Jq30KCWXPFzpAo}ZUEV$#s%o`DNz@!Q-I-+>zVmcC-RfAz_kBE+Q3f!{XA+`b@kCt8L9VC zvrthKC<*P@&SN&4p(Of_T+n^jzJ=?$MoIJ?Q6I@(+6DCymCUaDj5r&*aohh)_*Rj0 z=SVuC8A1o0-XEO9QxI{*Lx07*qo IM6N<$g6>A{G5`Po literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/Bows/StormBows/StormBow.cs b/Items/Weapons/Ranged/Bows/StormBows/StormBow.cs new file mode 100644 index 0000000..cd314f5 --- /dev/null +++ b/Items/Weapons/Ranged/Bows/StormBows/StormBow.cs @@ -0,0 +1,60 @@ +using FabusMod.Projectiles.Arrows; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.Bows.StormBows; + +public class StormBow : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Storm Bow"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \nDoesn't use ammo \nAlways shoots Wooden Arrows (except with ) \nPressing fires 6 Storm Arrows in quick succession, but it has lower damage and a 3 second cooldown"); + } + + public override void SetDefaults() + { + Item.damage = 24; + Item.width = 18; + Item.height = 38; + Item.useTime = 18; + Item.useAnimation = 18; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 2f; + Item.value = Item.sellPrice(0, 0, 60, 0); + Item.expert = true; + Item.UseSound = SoundID.Item5; + Item.autoReuse = true; + Item.shootSpeed = 16f; + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2) + { + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 4; + Item.useAnimation = 24; + Item.damage = 24; + Item.reuseDelay = 90; + Item.shoot = ModContent.ProjectileType(); + } + else + { + Item.reuseDelay = 0; + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 18; + Item.useAnimation = 18; + Item.damage = 28; + Item.shoot = ProjectileID.WoodenArrowFriendly; + } + return CanUseItem(player); + } +} diff --git a/Items/Weapons/Ranged/Bows/StormBows/StormBow.png b/Items/Weapons/Ranged/Bows/StormBows/StormBow.png new file mode 100644 index 0000000000000000000000000000000000000000..46e066f263cc6d8a2e6270ca2047d7c4a301ecea GIT binary patch literal 513 zcmV+c0{;DpP)Px#1ZP1_K>z@;j|==^1poj57*I@9MF0Q*DI7ghPWPk!q8QcF*CJMOztE!2y+E7hOAZ1kCr%$OY4e*79JwDYgVm<8m3*T*LyU;Q(&q3li>77oeJp;Avs`{*z!oM>?8gO}VhV$YJ0M<}0zh2h(dev{N^X;IX!5B97=n z1FjYdVA{~y9!vuP*rn79BbeV|xxK3<3?+=vOHNpMg$}3}MzEBrb;bt8W^|VlDwpV& zjtGSj)zcB&pz}u`f-yRPes<{YmI?N@5r+ox-5jr5`5*VP8ix?OHajBZ;fS|S700000NkvXXu0mjf D0AbG6 literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/FoxPistols/FoxPistol.cs b/Items/Weapons/Ranged/FoxPistols/FoxPistol.cs new file mode 100644 index 0000000..8a8adb7 --- /dev/null +++ b/Items/Weapons/Ranged/FoxPistols/FoxPistol.cs @@ -0,0 +1,103 @@ +using FabusMod.Projectiles.FoxPistol; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.FoxPistols; + +public class FoxPistol : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Fox Pistol"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots, doesn't require ammo, dyeable]\nGrants the [c/D78624:Fox Mending] buff for 5 seconds, which regenerates HP and increases speed, but lowers damage by 12% \nUsing increases damage and reduces use time, as well as: \n - Grants the [c/9E9E9E:Fox Break] debuff for 1 second, reducing movement speed \n - Grants the [c/732C73:Fox Wither] debuff for 1.3 seconds on self, and 4 seconds on hit enemies \n - [c/732C73:Fox Wither] debuff deals damage over time and nullifies the [c/D78624:Fox Mending] buff's regeneration"); + } + + public override void SetDefaults() + { + Item.damage = 22; + Item.width = 36; + Item.height = 21; + Item.useTime = 12; + Item.useAnimation = 12; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 4f; + Item.value = Item.sellPrice(0, 3, 80, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shootSpeed = 7f; + Item.expert = true; + Item.shoot = ModContent.ProjectileType(); + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(0f, -2f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 32f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + if (player.altFunctionUse == 2) + { + player.AddBuff(ModContent.BuffType(), 60, true); + player.AddBuff(ModContent.BuffType(), 78, true); + } + else + { + player.AddBuff(ModContent.BuffType(), 300, true); + } + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(3f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + return true; + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2) + { + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 10; + Item.useAnimation = 10; + Item.damage = 28; + Item.shoot = ModContent.ProjectileType(); + } + else + { + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 12; + Item.useAnimation = 12; + Item.damage = 22; + Item.shoot = ModContent.ProjectileType(); + } + return CanUseItem(player); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddRecipeGroup("FabusMod:GoldBar", 10); + val.AddTile(TileID.Anvils); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType()); + val2.AddIngredient(ItemID.OrangeDye, 1); + val2.AddTile(TileID.DyeVat); + val2.Register(); + } +} diff --git a/Items/Weapons/Ranged/FoxPistols/FoxPistol.png b/Items/Weapons/Ranged/FoxPistols/FoxPistol.png new file mode 100644 index 0000000000000000000000000000000000000000..de389e30c9337968d394e59ae7af60c5d744cc2e GIT binary patch literal 639 zcmV-_0)YLAP)Px#1ZP1_K>z@;j|==^1poj5Ay7U zT4{(nL}no0M$!NP0sKisK~zXf#g)BF12GuJV-Z&oTy&6HXe(Oq0}Bo!4pk==MRe4q z#jzCK9Nm=CvD&4hgSa@U9Yh=oiXTwLD%9#fAg(UjCzn@pxnA$QyW$V7c@xshlP7Q9 zYheut4aB}hsN?ye(C~k5@QK!xlj(PMycyszTJ+6?dV!@N5L(^Sgw)!v!AUXtPrwa= z;&ML0V=={3EOP-17qiQ(V?56L)l``I(`6QpO!2;#AUACZ!f`(+^~GQzETR%mCJpn|xvluYf=~!3 zX^{&^vPPIWgYjrSD|$xA85yeneE0Rl01{-!oy6MuukB7CLEIrizRnOs$0dezKnz5H z{hAxJDL^lGg6`V4FK&paKC(LyGddCDd4U+t;Bg}c=mb$UMqR)$$?nKk9!c2Q6=1_7 z5q5i1;$slvRtzu{Msi85IVuY)bG*I2D7bb-#vlkTktlpJ@W_xmfZXvCA9knS42VMI zr0*6SE=39sD&mM>HVim*vA Z_5)YN`mXhBg315@002ovPDHLkV1hgh8s-21 literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/FoxPistols/FoxPistolBlue.cs b/Items/Weapons/Ranged/FoxPistols/FoxPistolBlue.cs new file mode 100644 index 0000000..69b2625 --- /dev/null +++ b/Items/Weapons/Ranged/FoxPistols/FoxPistolBlue.cs @@ -0,0 +1,103 @@ +using FabusMod.Projectiles.FoxPistol; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.FoxPistols; + +public class FoxPistolBlue : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Fox Pistol - Blue"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots, doesn't require ammo, dyeable]\nGrants the [c/37C8AB:Fox Mending] buff for 5 seconds, which regenerates HP and increases speed, but lowers damage by 12% \nUsing increases damage and reduces use time, as well as: \n - Grants the [c/9E9E9E:Fox Break] debuff for 1 second, reducing movement speed \n - Grants the [c/732C73:Fox Wither] debuff for 1.3 seconds on self, and 4 seconds on hit enemies \n - [c/732C73:Fox Wither] debuff deals damage over time and nullifies the [c/37C8AB:Fox Mending] buff's regeneration"); + } + + public override void SetDefaults() + { + Item.damage = 22; + Item.width = 36; + Item.height = 21; + Item.useTime = 12; + Item.useAnimation = 12; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 4f; + Item.value = Item.sellPrice(0, 3, 80, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shootSpeed = 7f; + Item.expert = true; + Item.shoot = ModContent.ProjectileType(); + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(0f, -2f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 32f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + if (player.altFunctionUse == 2) + { + player.AddBuff(ModContent.BuffType(), 60, true); + player.AddBuff(ModContent.BuffType(), 78, true); + } + else + { + player.AddBuff(ModContent.BuffType(), 300, true); + } + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(3f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + return true; + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2) + { + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 10; + Item.useAnimation = 10; + Item.damage = 28; + Item.shoot = ModContent.ProjectileType(); + } + else + { + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 12; + Item.useAnimation = 12; + Item.damage = 22; + Item.shoot = ModContent.ProjectileType(); + } + return CanUseItem(player); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddRecipeGroup("FabusMod:GoldBar", 10); + val.AddTile(TileID.Anvils); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType(), 1); + val2.AddIngredient(ItemID.BlueDye, 1); + val2.AddTile(TileID.DyeVat); + val2.Register(); + } +} diff --git a/Items/Weapons/Ranged/FoxPistols/FoxPistolBlue.png b/Items/Weapons/Ranged/FoxPistols/FoxPistolBlue.png new file mode 100644 index 0000000000000000000000000000000000000000..61ec658791838ba0d1b7ea53c8571508e265c641 GIT binary patch literal 635 zcmV->0)+jEP)Px#1ZP1_K>z@;j|==^1poj5Ay7U zT4{(nL}mn%R*V1u0r*KoK~zXf#g(y3!$1_q&ms;wi0Gn&6v0+#2Nk>44!R0XPC^}0 z6qkbC9Q+3yx+vNX7To+7>`=QZ>d=B!kWOwQ4lXX5@AY1}T$&~(DgGe6cSoB0?z?yI zhD0A?iM1aYT6k_&`~EKo5!pI3Sr(b}35C>}eJ7z|;4aAI{4_>F&}I_fa`c~o8w|&} zy%xptl~8fb1x#ExxDv+B1oh*qZPB`kigJdCH~3zy!$a$;sSB}Y0K+f5nyr+k^9meas{_f}BnbwoDZRjt)m<)LRTD!X!FIK5u(pe|H!^m=Fp9CoOUT zN!AZ1XE2_soXMUYc1DG(Kdru(7{G$OxRcB7c5U|q3nGUY^*BQeZtfbc{FA&2SJVC?&iy*GXs0-L8)gAT7BMGOb=fu)-Qas!@ zXbeJviUGF5$S&zMM`v?ugW9`#HLxoxHbHQyyLIN3L5~8v1K6D~iC}g5$$%(SPQJf% zqVpX=VY>s!Ar_?zqrQ2M>9k*72jUK}txip32t~hpWsH@mWx{p`xPDL increases damage and reduces use time, as well as: \n - Grants the [c/8F77AF:Spectral Wither] debuff for 0.4 seconds, dealing damage over time and nullifying [c/AB2C2C:S][c/F3821B:p][c/E6AF31:e][c/63B465:c][c/82E8E8:t][c/9EF3EF:r][c/2BA0B5:a][c/734679:l ][c/AB2C2C:M][c/F3821B:e][c/E6AF31:n][c/63B465:d][c/82E8E8:i][c/9EF3EF:n][c/2BA0B5:g]'s regeneration\n - Inflicts the [c/AB2C2C:R][c/F3821B:a][c/E6AF31:i][c/63B465:n][c/82E8E8:b][c/9EF3EF:o][c/2BA0B5:w][c/734679:'s ][c/AB2C2C:W][c/F3821B:r][c/E6AF31:a][c/63B465:t][c/82E8E8:h] debuff on hit enemies for 8 seconds, dealing damage over time"); + } + + public override void SetDefaults() + { + Item.damage = 260; + Item.width = 36; + Item.height = 21; + Item.useTime = 6; + Item.useAnimation = 6; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 4f; + Item.value = Item.sellPrice(0, 97, 60, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shootSpeed = 8f; + Item.expert = true; + Item.shoot = ModContent.ProjectileType(); + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-6f, -2f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 32f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + if (player.altFunctionUse == 2) + { + player.AddBuff(ModContent.BuffType(), 24, true); + } + else + { + player.AddBuff(ModContent.BuffType(), 420, true); + } + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(3f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + return true; + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2) + { + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 4; + Item.useAnimation = 4; + Item.damage = 270; + Item.shoot = ModContent.ProjectileType(); + } + else + { + Item.useStyle = ItemUseStyleID.Shoot; + Item.useTime = 6; + Item.useAnimation = 6; + Item.damage = 260; + Item.shoot = ModContent.ProjectileType(); + } + return CanUseItem(player); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:FoxPistol", 1); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 4); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/FoxPistols/SpectralHowler.png b/Items/Weapons/Ranged/FoxPistols/SpectralHowler.png new file mode 100644 index 0000000000000000000000000000000000000000..5f31248f477d85fe9bb86600640e7055f3b37051 GIT binary patch literal 989 zcmV<310wv1P)Px#1ZP1_K>z@;j|==^1poj5R8UM*MF0Q*Bo{4H0?hwC0FrFX|DlBce_8+k|No8v z|H}Z*{{U70D**QG0Jr}DX8-@mhyUuHS2|#EReG|a%&GsAdi3sqf0oYwggqfWGa57M z|BnCHszNi8F#rGqCrLy>R9Hv7mQP3&aTLd&TNHUQ0!ht7<=P=zLo5guwL`}w!u%6; za6`npWl#t~hcvN+Cm|1!1)g*x!k}vz29YMV1=6l`Dcy>qLv3`Z>Gyr}d$YftU2Rhtr`v)Q|c>+Gk$E@(QR2Rfmx^J z@4SMOobtaI)Rv0RcN|#}L_kbh1jMA}fS9y7BnuV=jx5%v$ZAnYN$ZECi1HdmM}kfA z;iQTODrWkKX4S29{2Wi$%@WNY;w}ZkhiNF>X%7_b$1d@l(0)C_b3*%@2yH$xLcxc% zdL|9utRWarzUGPQvh+d!yP5MjdIK?PL(wy$j%Zq}VpoOkd1LwGGR-Z`aew&c81-I` zWQ$JF2rc|PLpK5z1@|1~IpCIdM3GfwSFxI;DPU4xRiAad91AZbugEO-K(d>nG)j}d zriq^JV2PI7_75+VMpl&-(Y0jK#Qak%>MncYt{NMX(XhSfs^5hiSw2rcMomdzicU>W z(b=B!G(LJu&v-+wmmxY&1M2fCwUvc+%kO(bJfm;6hK_fNQ$teP1Gr)JcR z(*TmdPf3vRQUX~>exP1n0)6zBTDLXwQosgFoUqq2K!#08$tFNH{U+<}sdTZDpDvJ; z^$J;P`o0xu0RuMcB*Y`lh= 0.3f; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.HellstoneBar, 12); + val.AddIngredient(ItemID.Sapphire, 8); + val.AddTile(TileID.Anvils); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/FusionDrivers/DynasticFuser.png b/Items/Weapons/Ranged/FusionDrivers/DynasticFuser.png new file mode 100644 index 0000000000000000000000000000000000000000..49a120169d8b652982d9f936ccfb5bd33d4ca961 GIT binary patch literal 1032 zcmV+j1o!)iP)Px#1ZP1_K>z@;j|==^1poj5MNmvsMF0Q*5f~#RAt!C+*k-TA9vd7pc94U3dT(WC zC^}U)Fi1Ze6;)MLPft(3J3D1vUe|^sk2yI+9Tzhd5lTu*LqkJfS6K>Hm017)17S%- zK~!i%?V3wyQ$ZAlQ!5nlQKU!Ds}>E~D9MNu=@5>q z>21g3mf#+!gs+>3_l!bY>uaGz=ghy2b&!Fys7OZ;8QHnHaVYsRkq5164ne~WhoBW_ zE<<}CJ%t9#HbCX;gwN+!)k8U6I_h_!6LsGZiFJ^Hq=R@x=>Q2GFc`W3Z8&%UNXpKhbwWbU7naxJvQ!Ts)HR zh%eS&2-WdyauRxTxF2dAAOl(l5$Pn3lg_z%>=d-R={Qt6XzltS z^xZ?{peFxHsE*2knA=n6>J^@k<7J(rtLuo&d2|l34lC;2p66pTosV#wY@Mgip*a;htM;j|4lMCt{JU^#(kb$Iwh;C<5Mk3Q+H3%d1skIqu`c*@oH(O-AWWqYgK$?Sy?g}#kL^@7a z@tXF!CGvgbd8Z5OAOl%PMLJCvX*tgRyW_vW=lcm^= 0.55f; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:ProtectionFuser", 1); + val.AddIngredient(ModContent.ItemType(), 8); + val.AddTile(TileID.AdamantiteForge); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/FusionDrivers/DynasticFuserGolden.png b/Items/Weapons/Ranged/FusionDrivers/DynasticFuserGolden.png new file mode 100644 index 0000000000000000000000000000000000000000..e12d48d98e0e05d05e553e7ea44bed9629cde6db GIT binary patch literal 1059 zcmV+;1l;?HP)Px#1ZP1_K>z@;j|==^1poj5OHfQyMF0Q*I}s5m3k&n}>Dts@C?qAsg-L^WdUtJb zZ)InNT0A!}NIx4DRaI3_Pftd?&ShO*OwZsytGqg$twbFcGZhg^N=idRLtj@}I}K3s{qd-VDJ0NHTX(fS0V9-H`D3uP-k#35>YP;*A69o}n z7#%LUk{}`KMyR}~BsHi|DV5Bd5+x!~iVnJNCl7moV&0i|*!|X@f3_`y_#YUa+4Y~D z+4OC+DZL3Z8~S6TYS#7mP$;e^wSu_tAS#cs0 z!f{OleRy1+zX+D_?>av8AA|R=xepUnGXFLvK^l^(A`?MmWrO}%F!2Y6;OlLh;Vq^0 z@V(CM@aMaO@a(O*u>3pW^R=he!W=IX^}8^Ms!xc-BuImsAf8bsK*9u^xZDAkA36;G z7#W4f$H(BVJGWr3TsXSYSxcm)=R5qMu?OaH%`3PB>tN#LamNZu;mrO{SocXW3DS_1 zAXP;PE0H-P6PA=zZiAbjJcgGpD}f_Ue>2qD3VWrpq8KhK&V~t(Lxt-2ywdW15a-4u zNQ0Z8vb@}cS$#uUk+WvQxqy|KcB2_41A*P}oUt!(;kpXAt-T$VS2;PCsOF4R;Z=(7 zC%fUfC0`^s43lsu@p1IqS9t1~0BjQEkqn+`nTYVdjm}yka$J3B9=xgPCG2u!5A~s3UO>s%f4IaUF_?+d^+B?~kxB9j_si`~f;6ZT#LuXc1j2DLIoB57 zgb(!Yg=K<@ikHCep4kcV*FA!XoD*UPcRFh}s(yw0<9ONUsQNl0=R78dm;`BXPmoo? z_{EylIkU%OU9GIes-U%SoK*>HQEeBEMzKh^Kcd>6`{Sb9AK^H;+^&9$#p>AEwNHde zkOp@Sik`cQCkXq2B(Bs!tlGtoweaz|RWRZ9oP+WT^5KlvuV8XEu-sX*kykNx_PV~v zT*dwo?u;$ZbVFZarFo~2owQ8c@cEOlu9Mb%dnfGNQ$;3+SKat|E*?35nNB)I+ywEn ztLirhJ6hGZ<@u}E!<{eexnx1%LO2`_!{goEuvc{VYgCwT^OHnUg1p{QT(M&pJnGy@ zj701n=gq?=*efz2L?%TZ7mtVctoc|X?@X#XZMi+)r%8|oH$g;oXHixn)n7FTD^*o( ze<#!Zsv-BAF0xW literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/FusionDrivers/FusedRainbow.cs b/Items/Weapons/Ranged/FusionDrivers/FusedRainbow.cs new file mode 100644 index 0000000..789ef43 --- /dev/null +++ b/Items/Weapons/Ranged/FusionDrivers/FusedRainbow.cs @@ -0,0 +1,64 @@ +using FabusMod.Projectiles; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.FusionDrivers; + +public class FusedRainbow : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Cosmic Fusion"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \n80% chance to not consume ammo \nConverts Musket Balls into homing rainbow bullets"); + } + + public override void SetDefaults() + { + Item.damage = 85; + Item.width = 70; + Item.height = 32; + Item.useTime = 2; + Item.useAnimation = 2; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 4f; + Item.value = Item.sellPrice(2, 80, 0, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 18f; + Item.useAmmo = AmmoID.Bullet; + Item.expert = true; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-2f, 2f); + } + + public override bool CanConsumeAmmo(Item ammo, Player player) + { + return Utils.NextFloat(Main.rand) >= 0.8f; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + if (type == 14) + { + type = ModContent.ProjectileType(); + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 12); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/FusionDrivers/FusedRainbow.png b/Items/Weapons/Ranged/FusionDrivers/FusedRainbow.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b3a55712847f694cede0089dbf6cca1dd4446a GIT binary patch literal 908 zcmV;719SX|P)Px#1ZP1_K>z@;j|==^1poj5LQqUpMF0Q*Bo{4lReH|<0RPJXE*~>jI$-~f0RKGz z0Jr}D_U%>wD@3v>nX)Oq0?bna%m8NpDUGuK|NrIX<+NcaDYC0o8M{pY00QVqL_t(& zL+zQrYZO5g$2VdM{{S(PO1#rt5hVmHqhMiUkQ7Osh)H83K@brv1Pd*KjTTyHoggXB z2o|C!Hqjs&B;cKBlO-bP9}w`zzBk|H_PcpE;~gdl^MTEq&CTv|JD+>|X0|8klFGip zU#=-Mzpie1PVVQ!I?r~q%f*O+IZD=u^T?v#=*Xz-*I(2nGWa|cKF>}W6%F!G8Wk8Z zzp*O&VCap;>ghpk7{HXL%TFYpJa$SVgU@UI#q+JL>vj46E1yIOz)P+ z;QPL=*CfvDUz3PmN;Jqr$)Ls~GQ*hzV30-QkRA_{?tZ&3@wWU;l6QNjT&q2~F@Vge z95~@x{|4l$Xpo1JL4b1%o5OVt*DWw-hKxDt{{QgY*14y4SkJS0^NPg3g`ZNs`YT;e zT}wgkiv|VKW8LY{ig<4Ry2ROu;)wI{IL}yZ(z;os z>7UQD&C}0E>$O@pi_m@`GpE&_tYXf#^z49aOLug$hz5Dca}dvoIEMh_0*v0=g3CoN z_W(Ygb3-V-_pVCZoW3T}f}diTV@>q6ulz0IQ!J1?W8=;PUnT7`4iz)cy_#p-9BWKN z2{-5JbgsoF@zc+jx9~lpL4lMEvetQkZ@q`j!9EC{&3}IGT1BwV(`khqN;D{tvO#V= zhk5o&OHRzrd7TG@8Um~w!8r{TF~b!yRt7=;qNdghk9#FDSpVW$2>qi$9&&>KOoAZ{ zukSE0!g{L#L#($K@vX*xM#&&x-C>LXKtGsct@l`OFD%#?zV3Dr4f4?SsIY0)NQeIB i!A=>&M1$IrB)Px#1ZP1_K>z@;j|==^1poj5bx=%HMF0Q*85k7N$*!ZGh|I&KnUi}V9v*daV>2-+ z7#SJb)LuhDL}p@AsG6OQf`n93N^ossI5sgB6b*WCa$r_D5G@lN8yOG~7APbo$p3`@ z|Bg=ET}MPbL_s+>H7_wRDo|8ZNlZ+omwd~`$4ik?R7)~PMm}YPxnBSP1Gh;;K~!i% z?V4*y6j2z4*9uXKvJ_F2pu`ALL6Xc0i%1AT3NeTX>W3i+kx>>Xga}DDPz!>hh(bzA zL=i+#jO?NkW|<{cke0ezi7j|Zt*zMioOf}~I?kk_1@pl0e6u%qcV5o<_8fg|b3|BZ z@Gn`K!tNNDv-dU~3#2V{(7j4}S6uJP8YQH*>Z+`!r~TC%_(bjnn9NtAtOOb0byb*z z>U$+PC#}z4!}+JLz<#~~Fd3T|h0hfphhx{Rftd)>-tiWWjgEpz@uiz^_TdAt`na4t z?faQ2jdjVg5+o(p$!cn>1R3B-5R;Rimx*(7x1t4(T(uOgu4#me3eLi$-(iQ(UoM8t zvVY$$S!rpw{{-%HIN>dcad1R<7;HpupLjniy}jc0hzRjI>g(}&kDA(GD?tW$B`7r| z3Fmq+L9QR;uu8`ML-3u7a(L^;aF|qfYR4oamJIsB5#gaQ>Hg@D)zplAbIEFEIGvyI z-B<}Sz>}cBm>^9b6S*ivR)T)}7nsRO*&Yp(=4S)&pi^8~HA!EWjli|-N8tpUb{1^0 ziCM7lT^HP#Rs;JDhy-9{X6`=TYL^HK_>BG za(HFQ&e$SZ34HAnu$r9QQ=(5PED(JQscGnd7Y8hdITks8YR4p%@v$+usiz6v5tRUQ zR?&mW2@MOw=UF5#{qV@2jYWR`3t_&Vl^_GW62vipG$&TdO27oE$x+Ys67*>_2rfCZ z0@g$AaQCLC$V!lvDaMSa4_Cs+3a-P|>os~= 0.42f; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddRecipeGroup("FabusMod:AdamantiteBar", 12); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType()); + val2.AddIngredient(ItemID.SilverDye, 1); + val2.AddTile(TileID.DyeVat); + val2.Register(); + } +} diff --git a/Items/Weapons/Ranged/FusionDrivers/ProtectionFuser.png b/Items/Weapons/Ranged/FusionDrivers/ProtectionFuser.png new file mode 100644 index 0000000000000000000000000000000000000000..530c7f2da1c80698334ac594b1e93d35f999ffd1 GIT binary patch literal 861 zcmV-j1ETziP)Px#1ZP1_K>z@;j|==^1poj5Ay7pwl>w;^*Z*X>vDWH)j5DiKwq0qRTJF3mhj*TxW_KqO4(_O6h@vCu?dMT{ zJ7&2s{LE6>_?_pGLq{$Dl{t_M3g{Ufj96d&Wb4Y%NdJ-LbDzKFpR4Y%=z+$c;s`|-Ku>tj=v!26)vfj$Z%qaNJ3+If}J zZnrIKwVEaCi%Tn(t)*|4$)JLSH3-z8#*Mt@!0h+@%3~BzlXP}dQ>kqV`+3_j>U`^j z<@MW-EVoNCs2~Fy#H@8?JvV3OKyD5u>AKbw?>wOWi`Us}jilyalGY%F8ie86c_)Jc z!V8pjnA&A#WFxnE=FC}zSg{%2*Cm_1n8Esy3<~I} zLEf{F)*w1unBTw8lG+2>2Lb0P-gqX8iD|rPiO+NtYz7L5iBhGuh;ipOzQ{m{ayC zTl=1gwTqUKG28*#N0lWRRFJ|3MY9b?ZFd&&I&5kjvnuHOS_>m%_2<=}GZ_@nH3%>X zBNVQzKC|d7sJ|nQ{>lN2c-fleq2E*CdwV2<0^F literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/FusionDrivers/ProtectionFuserCarbonFiber.cs b/Items/Weapons/Ranged/FusionDrivers/ProtectionFuserCarbonFiber.cs new file mode 100644 index 0000000..2a98a0a --- /dev/null +++ b/Items/Weapons/Ranged/FusionDrivers/ProtectionFuserCarbonFiber.cs @@ -0,0 +1,53 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.FusionDrivers; + +public class ProtectionFuserCarbonFiber : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Protective Fusion - Carbon Fiber"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \n42% chance to not consume ammo"); + } + + public override void SetDefaults() + { + Item.damage = 36; + Item.width = 72; + Item.height = 32; + Item.useTime = 5; + Item.useAnimation = 5; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 4f; + Item.value = Item.sellPrice(0, 15, 66, 0); + Item.rare = ItemRarityID.LightRed; + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 20f; + Item.useAmmo = AmmoID.Bullet; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-2f, 2f); + } + + public override bool CanConsumeAmmo(Item ammo, Player player) + { + return Utils.NextFloat(Main.rand) >= 0.42f; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.BlackDye, 1); + val.AddTile(TileID.DyeVat); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/FusionDrivers/ProtectionFuserCarbonFiber.png b/Items/Weapons/Ranged/FusionDrivers/ProtectionFuserCarbonFiber.png new file mode 100644 index 0000000000000000000000000000000000000000..9ea34004ab3906d9c99102517d6cf1246a0e63ec GIT binary patch literal 866 zcmV-o1D*VdP)Px#1ZP1_K>z@;j|==^1poj5Ay7X{+J2?kcsX9nhIgLrX6HB~4(_O6h@vCu z9p}+#9<$tiYx<83heOLJ&)-=7D{~+k6kuX>Fk<1Qr94!Wkz=SVZ-v;oi$5+_MzQwTVhh{*%{0F$;Xz!>!ACAJ_2GwdcOIW(G*Aky4|iVdVFF8R&0jXbxCF~X0T~Qg91#{ zAn&`7)*w1uxW6=SN$mmcgMjmNI-^>l`ytdBGmCva|IX5TpRB}LEG5BNjOUvX^!lJ_ zbt6Fy@jB^84~~!5Mx4F;V!ZY@c{}N(-Xu_ODwT?*)}Po(XCzpI6g7$OWLFkfEHMT! zC+oLt?R$RQ99?S27@h#_qp}hWN=a&iLbDAgUzZ84U`s zVGv*vMkw4_{m!DZp#F|H^j8jG#Ix2c54}!>>-LBS1#s`KcV|6w(n25e>*{w)@Mgb| s0ozS9C_wJf!5nXd<9~Pj7ZeJA0BmjFfxOY?W&i*H07*qoM6N<$f{7xG00000 literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/LightGuns/GoldenStinger.cs b/Items/Weapons/Ranged/LightGuns/GoldenStinger.cs new file mode 100644 index 0000000..2f385cd --- /dev/null +++ b/Items/Weapons/Ranged/LightGuns/GoldenStinger.cs @@ -0,0 +1,54 @@ +using FabusMod.Projectiles.LightBlasts; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.LightGuns; + +public class GoldenStinger : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Golden Stinger"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots]\nDoesn't require ammo\nShoots golden light blasts"); + } + + public override void SetDefaults() + { + Item.damage = 68; + Item.width = 32; + Item.height = 38; + Item.useTime = 3; + Item.useAnimation = 3; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(0, 30, 35, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 10f; + Item.rare = 12; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 32f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:TheStinger", 1); + val.AddIngredient(ModContent.ItemType(), 6); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/LightGuns/GoldenStinger.png b/Items/Weapons/Ranged/LightGuns/GoldenStinger.png new file mode 100644 index 0000000000000000000000000000000000000000..c6763149b278677040d0ed9a17ccad715afad439 GIT binary patch literal 608 zcmV-m0-ybfP)Px#1ZP1_K>z@;j|==^1poj5Ay77TNfoK`3pT7+k*85Ke+rSydq2dbnp&JnZNs6oXuyTa{t9Xbnzyok(;NqCy}q2|CGe%+Rg@nIms>@W zhv$T04j}W$#29@L9Oxl!2(*xb+q+9r*WNrSz}SM9{Z|!9(xC;?&PLgvugXsfC(N4z za3UPKC)H8yUs2J|JjSO;OY38#tu>}P0NOkra$|$77mlyxIx^f9 zCNq*(V7~+61cXzN;IA?V_E&+@%vo^rq>tJ-_q*NR u|6K)6{!fND&5BFB(crD7nAq%qWqksN0K1)8luI)J0000(); + Item.shootSpeed = 7f; + Item.rare = ItemRarityID.Green; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 32f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:GoldBar", 20); + val.AddIngredient(ItemID.Diamond, 4); + val.AddIngredient(ItemID.Amethyst, 6); + val.AddTile(TileID.Anvils); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/LightGuns/LightGun.png b/Items/Weapons/Ranged/LightGuns/LightGun.png new file mode 100644 index 0000000000000000000000000000000000000000..b6ff7cdcd5547916250c59126a99a262050b022f GIT binary patch literal 585 zcmV-P0=E5$P)Px#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*;fS99*Uc#$JxNVcW@>J;QI&mxf-f;V zkKy6T(B3Zq00GHKL_t(oN6nY9O9L?!##<4=-CC5Z?b=1HR*FL>QCw6ML0ttwbP_@T z0R?e!sV;(!b`aFoNpUI;Vxj6HZrUCW_74z5Q0^t4a8JXv&@=f#`Cg!xOTN5!NrC~N zc-cDmae(w1h+|UnPYTyc*VSvoaEx zn*)GX#YSw7l#}mxl93=BZj+IlVo_89a%d$QHPivje0pJ++8}p&LHbd3Kaw6#km5@T zUhOv-xxw@1ehD!ntR>d&xl|?Pb?4H(eD}itd0VxM za*!)<)Eo!+4ERV@a3@q%!TT|%3i!wY-?wW8{c%+NnB#zodL5`2?G7k$obhs}5$Ml> z{Nygp5+@zi+08HXJ0SIkTJQCZLc0UM2H>1#ou6}~!L7zm%&7t}cC!30*$*^35D0t& X21>#zP0GzW00000NkvXXu0mjf;@(); + Item.shootSpeed = 10f; + Item.expert = true; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 32f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 6); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/LightGuns/SpectralBlaster.png b/Items/Weapons/Ranged/LightGuns/SpectralBlaster.png new file mode 100644 index 0000000000000000000000000000000000000000..2a1f7c6440cff18150bb9bc1158968fce0904a3d GIT binary patch literal 674 zcmV;T0$u%yP)Px#1ZP1_K>z@;j|==^1poj5NKi~vMF0Q*%~MGIvv%!>H7OiDNlj8_YHpuFIL>t| zeSv~6F+ApaasU7S_SQewxhkF8MQ*<(vr&~Rs*oPlunhmsa)9J{yZD4Zv-5fGl>h(% z_(?=TR9HvdmQ5%GVHn4E$yXfYYtb&7lGu{Zv`Hvm7cQg}<>KV#K;qz_NGT4Al$(;M zZMPgaNOD`@Ae4iT$$@rLM3Jxk&-~TAnOuy0+u!B)KHJRh%>R9!nYCI>V!yrRBjl3a zV${*CQ$PMzl;*HuS^^|6S&1Z)UG=ENB;-k;&|ZTpHJcM^1PGHD%zs7Q*8B!{?>XQN?>a2aex|(X9hP?r2oqTD3ZfAHxR>0!i-S8@oMW+9 zNVYu#=9KXJuTZCq%^Kh&&01dndlP z%|f08jEMLI3<)LkTRMM1_a5?coV)Ha?_TH25C!qP8oMR6X2^Qs`ezcZF z_;Wz>Hv?k|5{Ro---Z*7@e!WDc&$%2>!UlZ|I+;=%n4X5pJ}eYJ7-W<9smFU07*qo IM6N<$g4^Xdr~m)} literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/LightGuns/Taegeukgi.cs b/Items/Weapons/Ranged/LightGuns/Taegeukgi.cs new file mode 100644 index 0000000..299a381 --- /dev/null +++ b/Items/Weapons/Ranged/LightGuns/Taegeukgi.cs @@ -0,0 +1,55 @@ +using FabusMod.Projectiles.LightBlasts; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.LightGuns; + +public class Taegeukgi : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Taegeukgi"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots]\nDoesn't require ammo\nShoots little light blasts"); + } + + public override void SetDefaults() + { + Item.damage = 40; + Item.width = 32; + Item.height = 38; + Item.useTime = 5; + Item.useAnimation = 5; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(0, 8, 25, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 6f; + Item.rare = ItemRarityID.LightRed; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 32f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddRecipeGroup("FabusMod:OrichalcumBar", 6); + val.AddIngredient(ItemID.Sapphire, 6); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/LightGuns/Taegeukgi.png b/Items/Weapons/Ranged/LightGuns/Taegeukgi.png new file mode 100644 index 0000000000000000000000000000000000000000..685e9d86277f1868823702f68dc90b4c59287cdf GIT binary patch literal 669 zcmV;O0%HA%P)Px#1ZP1_K>z@;j|==^1poj5JWxzjMF0Q*k2yKNJ3AyHC%)Cn=KKFBI#n}vkV#Ea zeSw08go0+T#b#=5kKy6}|NllvNjW<{DJw1-8zR?+B#%{)c>n+b|4BqaR9Hvdm&+?e zQ5?sINO?6Sd8CHPdm&|%F&69;8*51s3maJ}|A8!IA*Dzj3CYHDLu49-@+cuuWDtuX zl(&4({i-?KCgr*(pSpd{xifR;p6~tr&NM+5gJ^d;-#(lh9E^F1+x_i#iC0a;umnh; zB-BYDH6;UgYBUE&dx|H}Jvo4RW_mtMcK27|hPpPGL=?HSk>GCGt&IdJF)y&gkqZy^ z4Z%!8y##7%D={CxiH7yabNVNw$GS%(mv?&z&(F-k>Loy!L`Xso=6uF&)rIh8WE?Cr z*f{~OwKl?z<_?%#k9EQ7b^(zSkdYH%w~Tm?VJ0DW!}HmeHWH{?14QnM{^@O4W`1#0 z8wnCZw1LFJj_3x~P?OE3XaZchJ;RPUDK2uty**+lBTM_cFn3C_GBK--{Nd---3en8 z#WRYEihxf}PT{Bf2UzZ7xmHL)MX5Ftlw|wwoN4w<*!%>zg8RoOoUkP)!A#(APwe4b zIo~hO^?pTVSS$7ARj@hs|?Z1l4y<|m-}lLeOxiNu$QeITpl z;D2|)mmAo4eZ_G;6^FxU)ae4!k$u)jrtE00000NkvXXu0mjf D(!eVl literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/LightGuns/TheStinger.cs b/Items/Weapons/Ranged/LightGuns/TheStinger.cs new file mode 100644 index 0000000..6670880 --- /dev/null +++ b/Items/Weapons/Ranged/LightGuns/TheStinger.cs @@ -0,0 +1,60 @@ +using FabusMod.Projectiles.LightBlasts; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.LightGuns; + +public class TheStinger : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("The Stinger"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots, dyeable]\nDoesn't require ammo\nShoots little light blasts"); + } + + public override void SetDefaults() + { + Item.damage = 66; + Item.width = 32; + Item.height = 38; + Item.useTime = 4; + Item.useAnimation = 4; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(0, 13, 85, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 5f; + Item.rare = ItemRarityID.Pink; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 32f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.HallowedBar, 14); + val.AddTile(TileID.AdamantiteForge); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType()); + val2.AddIngredient(ItemID.BlueDye, 1); + val2.AddTile(TileID.DyeVat); + val2.Register(); + } +} diff --git a/Items/Weapons/Ranged/LightGuns/TheStinger.png b/Items/Weapons/Ranged/LightGuns/TheStinger.png new file mode 100644 index 0000000000000000000000000000000000000000..58272b4c89127098bbb897b212bb6dce87a6463c GIT binary patch literal 572 zcmV-C0>k}@P)Px#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*95!7Pbebs~JufjlNlj8_YHodjf z@kiJR7TQ^AVPPSuG*-IU1tLBWyFj8K(MlAtQF3-pAQ#6N*tmlqgl`72k2y1UXV+>K z_IUcU`cqvkZOVZWQf?Vc;e9%Z{?kUL?waN#FkmMe&X*tDmR-XV;K)0|UI0CY)Q+dFHB?$57-IcAOFTVCMv866UP|CUHNr4C@$lhE?llZt|D#;@dUs zW(%-+2@odn5{;wJIUc(^g6Fn3VafW|v1)x!cz+i*uL_iF$OI%@)kG%3BxE&oKNMBV z!`wAMWK}%3_rp5oogO$6>4hcv`~_SrRABR~U}RJdZh5z&q#aCvxBZEj*t@cOG*R(9vuH%@TM5TB^x3O2-d^Pe6|J zuSQOSuL9*-{Z>+G^!eU@nwtFIRS@F$JKtL6_kjGK_nUwdu&gic+Pj!!?xRlt0000< KMNUMnLSTY-QTA8> literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/LightGuns/TheStingerBlackCat.cs b/Items/Weapons/Ranged/LightGuns/TheStingerBlackCat.cs new file mode 100644 index 0000000..b0f7a73 --- /dev/null +++ b/Items/Weapons/Ranged/LightGuns/TheStingerBlackCat.cs @@ -0,0 +1,54 @@ +using FabusMod.Projectiles.LightBlasts; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.LightGuns; + +public class TheStingerBlackCat : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("The Stinger - Black Cat"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots]\nDoesn't require ammo\nShoots little light blasts"); + } + + public override void SetDefaults() + { + Item.damage = 66; + Item.width = 32; + Item.height = 38; + Item.useTime = 4; + Item.useAnimation = 4; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(0, 13, 85, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ModContent.ProjectileType(); + Item.shootSpeed = 5f; + Item.rare = ItemRarityID.Pink; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 32f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(null, "TheStinger", 1); + val.AddIngredient(ItemID.BlackDye, 1); + val.AddTile(TileID.DyeVat); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/LightGuns/TheStingerBlackCat.png b/Items/Weapons/Ranged/LightGuns/TheStingerBlackCat.png new file mode 100644 index 0000000000000000000000000000000000000000..75c55509ddf81462551d77905733102edf739716 GIT binary patch literal 604 zcmV-i0;BzjP)Px#1ZP1_K>z@;j|==^1poj5Do{*RMF0Q*D>O4bL_-l6BVb=%a&d5mgn~>_Pv)l2 z9408*aId_iFW+7Qv$(9l++Q&18V(PYvj*rXEeZwibCm8SAPFg*8u!aH<%2tMEa!R0$g z^m)&B&$-X=3TtVx*;+DH(l6CF`lNaWTrk67%8P|p$A9YM!0=ey^}M>l?{`Hr2T=LO z+A@7$nkFfTj5za$=bVfLI9u@3Xpp8Xi*$Z&mK0p3??~ZGrmb2k*YYf(=rk~9bCysV4ZA{>Nf>a z+rWwOsI$9OWLM5)B!Ckt2Y`M(z)|%CK;@gI3sUq7pN>c{M2h=G-zflYHzO(l`+Mu8 z`C^e2)T`n~RH5%ZkVs5ZjMpDDo3(fz=-zesu4yMgC%RL{}J z0TrD(&?&w*b=KL>hMInd96kK=5!wPfl!{@(*qjl%r`RUMDcP##;&dOH8W qcL&-VDAh-4RjQw~dWFvp7{(vW3#iLi7z3IB0000= 0.7f; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(6f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.Uzi, 1); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/MachinePistols/AugmentedUzi.png b/Items/Weapons/Ranged/MachinePistols/AugmentedUzi.png new file mode 100644 index 0000000000000000000000000000000000000000..73d3f88902aa6eea41b870bc432b08fdf660b4bd GIT binary patch literal 777 zcmV+k1NQuhP)Px#1ZP1_K>z@;j|==^1poj5Y*0*8MF0Q*B^Dt(D>+|DUT0HgF(WHJElW!`Tx%

zZnaiJRxBVVL@_}o8zD|gQbjRDKPx_FQ)F>maC10hmjD0)J4r-AR9Hvtm%&REQ5?s2 zTy)pXfan{{q!fD)JOn}DK_a4s2#hWj9wIt; z(1=1ESkgof9wz+G?= 0.9f; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(5f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + if (type == 14) + { + type = ModContent.ProjectileType(); + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 10); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/MachinePistols/CosmicHacker.png b/Items/Weapons/Ranged/MachinePistols/CosmicHacker.png new file mode 100644 index 0000000000000000000000000000000000000000..51b48c92790d4af1bf056d8d44f02b7d4bf02e49 GIT binary patch literal 638 zcmeAS@N?(olHy`uVBq!ia0vp^20*OB!3HGHyY2)@Fct^7J29*~C-V}>VM%xNb!1@J z*w6hZkrl|d3GfMV1=5-_w$GiNpSL+bf9hP;vTClgvpbL<`Fw`+^XJY_SC$4YT;T0K z)z!jfVxIHVUXPyT`%eZ3RQh=ZO||ep0kq?Rr;B4qgnM#I1Cy`h?f(I4Ts!_fF^D;v zz~U27b%Mz);>7#lbY^Y?3uleC3XZ2K|F{n=Fjg>o)}GH};oID@C*MtPM%aCOVV~+o zPX&kWl`I(ne>9_*mN~~aYO>Y0)eEpW%gnGzIl{i|Etg$mX3Q_OdpyjSTauD~9BsJl zd&Pvmo3SL}Pod?Ee+zj7_rK9@`M2X9yU*;u>5P{@t+{`2%YpZA6K1hXF&EUnvp-<6 zZbtDgNycRt8FkXy>UbP7=X_;YCvkw4Pqu<@S!W-kjA43YGSjlzN!|xc&d9c1`;;K1 zX7?w_;q(!xzX-hWKS^IzJJ*DccL(}LBr}0CAInsOg#UCIK(v=zddlMSa9$}FJr)Y zu4}ucJPeAG8BEqOOW&4+Fc+~&he|`3lh~wvfy^h#4LJ;1!Vj~=FADQ~lt@TmVBl%o W^Cb7Lz*S&cVeoYIb6Mw<&;$U3jQAq} literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/MachinePistols/MachinePistol.cs b/Items/Weapons/Ranged/MachinePistols/MachinePistol.cs new file mode 100644 index 0000000..494e5fc --- /dev/null +++ b/Items/Weapons/Ranged/MachinePistols/MachinePistol.cs @@ -0,0 +1,62 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.MachinePistols; + +public class MachinePistol : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Machine Pistol"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \n80% chance to not consume ammo \nShoots incredibly fast "); + } + + public override void SetDefaults() + { + Item.damage = 10; + Item.width = 50; + Item.height = 38; + Item.useTime = 2; + Item.useAnimation = 2; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(0, 7, 20, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 18f; + Item.useAmmo = AmmoID.Bullet; + Item.rare = ItemRarityID.LightRed; + } + + public override bool CanConsumeAmmo(Item ammo, Player player) + { + return Utils.NextFloat(Main.rand) >= 0.8f; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-12f, -8f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(6f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:OrichalcumBar", 16); + val.AddIngredient(ItemID.Amethyst, 5); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/MachinePistols/MachinePistol.png b/Items/Weapons/Ranged/MachinePistols/MachinePistol.png new file mode 100644 index 0000000000000000000000000000000000000000..6a006bd1cc026c7d5b89eff4bdd89a610a35d4bd GIT binary patch literal 1029 zcmV+g1p51lP)Px#1ZP1_K>z@;j|==^1poj5w@^$}MF0Q*LM}Rvb&i>JnXr?vZ%=QGYm9_uglapg z#IfnKrPHvM^JYnAS~HWZjq<;z^t7Aw$+q`jI*>{#dZdTvpn~g;Y3J0(?xu#Ov6r&M zr^M91)JZCNqmju_E`*a|)}wme;L+f1M5lsF&|@BAKPW3pFEd0dFGnmetu?EeFPCCH zmVH&Wg;~K*IY(heU4mSJWJYCDIZ{F;Y&#-hpMCIrZFXBwS8HBnglmJPhNPQ)nzxj; z2Qg^k0008)NklsqVUImqt*Gkcuw4tDuW+f^LL@2+AunQpveGg*^ezN5TdWsgU*~>Uxq4*DN}g}& zq=kS#r8&~kbsLUPm&5w}Ay~QImeS|7H%Gj#ZP+k4+7B~M<4O3a?=v=3@)LG? zBk)v^=GG>c9%i~PHL6QXQS14VJ8aIP%Fld{ z!joe$m^pCD1P}FR!Qs#oILDp~J8T6oV{_Wzi{~D|zP7{g&OMdzn^*7Q-a8$z4DBYu z*CMayDF+i$EXI6zZw+1ZKg@QxpqLt;el848jZspbIyXEzK$T9FM^C9+aWYn8HOzB` zyJ79VTKH_U57u5H3@5?e%3 zwRo74dp+3&GX>T{b&2p4df}1aXL$141RR;(49n({wUM8t%|N{H_-JoT!G|7XPe6eHU%WBn$QDqP7EP4tw^JbZQ+ z7AttAy%YOiyWwB7osT2#pNvc*3|DZwXE)ZF>MH8{oJes6{qwZt<-s@a1^)Wonn@&a z0{?mv309m4BkMNH`BBS3Gjn9sPo%=R6(ikb5|L3}>BdMmnM7oGTpo;clSxFzY-AQA z-DDDxQCd`rk#01T$f}cg=8`>kttA>sL{WYN9w+taX$&{D00000NkvXXu0mjf?)d3v literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/MachinePistols/MachinePistolGolden.cs b/Items/Weapons/Ranged/MachinePistols/MachinePistolGolden.cs new file mode 100644 index 0000000..a4c159e --- /dev/null +++ b/Items/Weapons/Ranged/MachinePistols/MachinePistolGolden.cs @@ -0,0 +1,62 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.MachinePistols; + +public class MachinePistolGolden : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Golden Machine Pistol"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \n80% chance to not consume ammo \nShoots incredibly fast"); + } + + public override void SetDefaults() + { + Item.damage = 66; + Item.width = 50; + Item.height = 38; + Item.useTime = 2; + Item.useAnimation = 2; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(0, 16, 50, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 18f; + Item.useAmmo = AmmoID.Bullet; + Item.rare = 12; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-12f, -8f); + } + + public override bool CanConsumeAmmo(Item ammo, Player player) + { + return Utils.NextFloat(Main.rand) >= 0.8f; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(5f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:Verano", 1); + val.AddIngredient(ModContent.ItemType(), 6); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/MachinePistols/MachinePistolGolden.png b/Items/Weapons/Ranged/MachinePistols/MachinePistolGolden.png new file mode 100644 index 0000000000000000000000000000000000000000..a39e9f469a9de38963a551ca0d0a354127112121 GIT binary patch literal 665 zcmV;K0%rY*P)Px#1ZP1_K>z@;j|==^1poj5Ay7ATtaNW2q zN+e=wBlrQ*2>(E^U@J((0vpl=i`pncBYr?--p(tT&zwv{D|I^0=ABN?Of%={`MxtX zd=~!daLPKgk-Uq2jmc+MzffJFST|l_G1zG$0gd}Ilq@$@0zu#t7HIB&f z61VG#en$GX_HjaTKiGymdWa!OcQ9-n+2OcUY6IC5iXz<%ZlCnwb7g1^`50e7j&vR% z-OT7~&O|-=+xyqGEkBpFRS9h^&_%oa}+teRE6aI6AuX_*NV!lzDC%|SxtI->df$U z)fFS985Nw->8o)hji^YxrDtB6VHH!EWuMc}2$3cTjY!-K(M+hxxla+<$0kqbkgQ@{ zD=V+dNLE+=g7i1SPW!y~f;_(YKuR(-#j2Aj{6)yMqUtO98X+n(i|gmepTa&MchmB` ztd@ z!kLw8gL@(xkw_E7Gh*ehkyVJOWAzpKB%Gm>v;^B`Hr+;ge+UAaUPBR=0JM&QzpHYX7F00000NkvXXu0mjfU(YZ; literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/MachinePistols/Verano.cs b/Items/Weapons/Ranged/MachinePistols/Verano.cs new file mode 100644 index 0000000..780e6d4 --- /dev/null +++ b/Items/Weapons/Ranged/MachinePistols/Verano.cs @@ -0,0 +1,68 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.MachinePistols; + +public class Verano : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Verano"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots, dyeable] \n80% chance to not consume ammo \nShoots incredibly fast"); + } + + public override void SetDefaults() + { + Item.damage = 60; + Item.width = 48; + Item.height = 36; + Item.useTime = 2; + Item.useAnimation = 2; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(0, 10, 60, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 18f; + Item.useAmmo = AmmoID.Bullet; + Item.rare = ItemRarityID.Red; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-12f, -8f); + } + + public override bool CanConsumeAmmo(Item ammo, Player player) + { + return Utils.NextFloat(Main.rand) >= 0.8f; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(5f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.FragmentVortex, 12); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType()); + val2.AddIngredient(ItemID.GreenDye, 1); + val2.AddTile(TileID.DyeVat); + val2.Register(); + } +} diff --git a/Items/Weapons/Ranged/MachinePistols/Verano.png b/Items/Weapons/Ranged/MachinePistols/Verano.png new file mode 100644 index 0000000000000000000000000000000000000000..0610bd4104ad5a47554bbb88ac09289a9bf3d627 GIT binary patch literal 710 zcmV;%0y+JOP)Px#1ZP1_K>z@;j|==^1poj5Gf+%aMF0Q*Bp^B>G&vn2Cn+;Fx4y*8 zg&10f;+WuLn$%iU3thBqQ@B*O1u>AibT5ocX<;xc$%Tb3B1Ewk8Re@$W-RdmisFM7 zZhT>Kzk9xc`R8$_oME`P`-98x-0Pf+_y2KTZkM9;`rY5E8N&!jB)lgZ~wopnVefwL6ao z&)d7;P;WmxGBF5~NO%DrTJM9&hwrMPxL>6jg0_1ls&zJfAD7_wJrP(pcI=ZtO+zgn z%zmDMuljP~&Zp)W@K%(<5}Alhg2+T<60CUPst@+xHvb>p8073|{REVw>%hgFBi!d- zD}Wp8n_yOi$T2|1gL5$Z>)2e`fFA@ZVOjaSvN1T+xdoHr@*?=_GI=;fasDqcx|rOgn#Eezcri*%S7Vssp9efB|w;j=WreOKh~CF`pBg6ewwow zS)1O5xxR#_zMwz*v9cAn>TrL!bHPx;=MeiRkSMIET*;Y$tf-TK;@k}ZLp;NIxjC#hs%`2>>o0mce#T*h9>xIEi#T&c!MAl*10kZzn0kQgT^d0I;) sP6Fx1@*j|Nj9sPNS*8+;C*X3O0E7?KFWrMOH2?qr07*qoM6N<$g4j??YXATM literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/MachinePistols/VeranoRime.cs b/Items/Weapons/Ranged/MachinePistols/VeranoRime.cs new file mode 100644 index 0000000..d5080d0 --- /dev/null +++ b/Items/Weapons/Ranged/MachinePistols/VeranoRime.cs @@ -0,0 +1,62 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.MachinePistols; + +public class VeranoRime : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Verano - Rime"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \n80% chance to not consume ammo \nShoots incredibly fast"); + } + + public override void SetDefaults() + { + Item.damage = 60; + Item.width = 56; + Item.height = 36; + Item.useTime = 2; + Item.useAnimation = 2; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(0, 10, 60, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 18f; + Item.useAmmo = AmmoID.Bullet; + Item.rare = ItemRarityID.Red; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-16f, 0f); + } + + public override bool CanConsumeAmmo(Item ammo, Player player) + { + return Utils.NextFloat(Main.rand) >= 0.8f; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(5f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.BlueDye, 1); + val.AddTile(TileID.DyeVat); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/MachinePistols/VeranoRime.png b/Items/Weapons/Ranged/MachinePistols/VeranoRime.png new file mode 100644 index 0000000000000000000000000000000000000000..248abfa12ed4ea66eb59efce8bae8b2ea39089c8 GIT binary patch literal 660 zcmV;F0&D$=P)-hJ00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*85uPw96GJE*IlE(kKy5fd9g-5XZG#? zF-(dYyR+E<00ILqBg*x7jIv&n zFc{k2q+<}A8lto!%arY75CǩITU$X`5Bo+Xo%06mWD600c@N&=A)Sycmr&C=V| zEh`(C1MOpwle{^RRW-SlEm_%wBT-q|aAUKRep%V%u8WlE{ZmSiTAPzqZTNkFZ){vv zwP~MOl*7m7%fT@v;O4;9WtQ@_$4434TcpI8wxZLNiR?Kg2Xnw+;f>M>E3-qHNN!NV zG|aZIK>(A1;UFEW=#MW^`tHh_1Sec0h zN|ia#@&?s;d@g_f}jelbh z9Uxwz@Yg6`VII-HM&;uynmnz<82s;OpS3txLt;08U4)y*O9$o=)rHu= 0.5f; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 35f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + if (type == 14) + { + type = 242; + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:Peaceforcer", 1); + val.AddIngredient(ModContent.ItemType(), 8); + val.AddIngredient(ModContent.ItemType(), 6); + val.AddTile(TileID.AdamantiteForge); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Peacekeeper/GoddessRevolver.png b/Items/Weapons/Ranged/Peacekeeper/GoddessRevolver.png new file mode 100644 index 0000000000000000000000000000000000000000..cd5049435bf1a5d0cf79ba8e1b8f9a781dac5e05 GIT binary patch literal 524 zcmV+n0`vWeP)Px#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*I}s7V^8a4J+S=4!Kd6kvg-P@C=@BF- z^73|D5G5%900E3iL_t(oN9~q9OT$nUhEwqmR8iX{L5kp_;G%*$x#-}>UnouvP6~qU zXa!LRC&3TIe^Bk*Nd!9y4kBoWy0j>oKOjVSbKju{uW2<=O!6$xDQVMi-g|Oy!U%|o zWYSUPmt5JlFVE1S{O|d3H*}rfs=cYo<>cl8t}c$j?It1rNB%y#iO9~JUe2k?rEZ?7 z%0(veT{6WAT&rKe@5=?4$wV&^Cb7LXj?cXdJuumP&8w;zCeeA2gC$maURCWOlZj`9 z$&kazeRyeP045t&7c6I~Rnpdusy=7N9E9T;A?v%>uxt(46Z8wNgg6m)Saw9B`@Ua9_pHUvavyj;e}M@*eb?OwlTx-H_Daq# z!kY*aAY9|aD?@POsR8pn&Lr%|`=)#GK0zlz!j}j;$Q_vb180M09>>{(XRRanw>s`c zcoLCG+~$wrN^ulUnJGAtScT(60!BL{UZ+uc*81yYqO*^*N}Px<7{&(>pQqy@B?iU- O0000= 0.5f; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 35f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + if (type == 14) + { + type = 242; + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:Peacegunner", 1); + val.AddRecipeGroup("FabusMod:AdamantiteBar", 8); + val.AddIngredient(ItemID.SoulofNight, 6); + val.AddIngredient(ModContent.ItemType(), 4); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType(), 1); + val2.AddIngredient(ItemID.SilverDye, 1); + val2.AddTile(TileID.DyeVat); + val2.Register(); + } +} diff --git a/Items/Weapons/Ranged/Peacekeeper/Peaceforcer.png b/Items/Weapons/Ranged/Peacekeeper/Peaceforcer.png new file mode 100644 index 0000000000000000000000000000000000000000..be323b6a15699c96e007ee256878ef74225e425d GIT binary patch literal 547 zcmV+;0^I$HP)Px#1ZP1_K>z@;j|==^1poj5Ay7z` z*`Q{RRy&9#Da`-?0ia1lK~z{r?Uz4G12GuJ&n^yvg9svmIEWk^*owG|Rt2e3DQ-^n zOE`#Am*STYL{KUY9sK(VM5yAyAtK@?h(n*u4oJtL*^-_xhEV`!n&|Bn9F#}M+tzl>~-->^oAX+3mmM$RM0ORf>QG8_3t z)oL-4&Zt&9Yh(Z96sd#Hn_`XVOpyHJGcv43{NNhtxpPR_CvNo! z$z4ifcP(jzH4%0`n3`apW_2crH9{k2%P;7!oR1@QcPM%8uvVfXxpysD8#AL%$U>@# zq#3!J@!h8hojD@sk-HdcNY)04uMw^cDQ4f0H1L_8N3NAyX1Ia}hsSMWahxy{M9!;2 zH(vaVa7E;QZu#!-tPUe-#B{~GO?-?<6FgCMyGCj39vOCy^qTnBh`hy;fuM?PxH+Wh lIniyBbB>r|jYNXud;|4m$bIpxakl^f002ovPDHLkV1oSK^>qLM literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/Peacekeeper/PeaceforcerVanHelsing.cs b/Items/Weapons/Ranged/Peacekeeper/PeaceforcerVanHelsing.cs new file mode 100644 index 0000000..2f760bb --- /dev/null +++ b/Items/Weapons/Ranged/Peacekeeper/PeaceforcerVanHelsing.cs @@ -0,0 +1,69 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.Peacekeeper; + +public class PeaceforcerVanHelsing : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("The Silencer - Van Helsing"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \nShoots 6 bullets in quick succession \n50% chance to not consume ammo \nConverts Musket Balls into High Velocity Bullets"); + } + + public override void SetDefaults() + { + Item.damage = 48; + Item.width = 50; + Item.height = 28; + Item.useTime = 2; + Item.useAnimation = 12; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 4f; + Item.value = Item.sellPrice(0, 10, 0, 0); + Item.rare = ItemRarityID.Pink; + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 40f; + Item.reuseDelay = 12; + Item.useAmmo = AmmoID.Bullet; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-2f, -2f); + } + + public override bool CanConsumeAmmo(Item ammo, Player player) + { + return Utils.NextFloat(Main.rand) >= 0.5f; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 35f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + if (type == 14) + { + type = 242; + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.BrownDye, 1); + val.AddTile(TileID.DyeVat); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Peacekeeper/PeaceforcerVanHelsing.png b/Items/Weapons/Ranged/Peacekeeper/PeaceforcerVanHelsing.png new file mode 100644 index 0000000000000000000000000000000000000000..f8156c65157180304dc4fc2b85144362f7f1bbff GIT binary patch literal 532 zcmV+v0_**WP)Px#1ZP1_K>z@;j|==^1poj5Ay7hX$^Yzj3Gx8bFrcpE3Z~KX60sma`Zbh=9k}n31Jk2<1O^U#5(d+_@&GIi!{pKP z1T3vT+Pw-);{xb;a{5(HFg;po!D2+tH4IF{LL3)Bk3nhySV|a;5m*SLhX^{rrJh<~ zXK^AKwSlgkp|bVED!eECyfzmd1gRz_9uOmN(*ahjv8N*93?d7EnrbU%a!1QR0&=}y%BZOL`=xwcmj+v2Dj}Qw+V}vSzfdK&B Wr>RpkA+hEF0000()); + val.AddIngredient(ItemID.HellstoneBar, 10); + val.AddTile(TileID.Anvils); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType()); + val2.AddIngredient(ItemID.SilverDye, 1); + val2.AddTile(TileID.DyeVat); + val2.Register(); + } +} diff --git a/Items/Weapons/Ranged/Peacekeeper/Peacegunner.png b/Items/Weapons/Ranged/Peacekeeper/Peacegunner.png new file mode 100644 index 0000000000000000000000000000000000000000..f4ca232f99ab149bc6a8777816c4fe54edf9b0f2 GIT binary patch literal 501 zcmVPx#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*5f~$ux2MeD)`o@pt34{4CFm2TWC<_(rTCxUA zyTycnX>?#LuL-8lKD-X5VSHQwrVbWUBR58H#RLo_G!{Zxs9?w3tzgMF0n4UgwC74DBnMvVbTEaAgK1pg_M^98dNf90^$4u~ zz}1F=sfWc3u9zbijNG;suF^_YRu)XdVg_9vJrCiEIckC78zZn7fB|A-;?${AC}zRT zp><5a!0?L^SO~&ev9OwxP>j$k#0i1n6C>y`v7o*mOv6GR1|C0t45mk8gvJ189@#qw r(vKhn220G0oO*;()); + val.AddIngredient(ItemID.BlueDye, 1); + val.AddIngredient(ItemID.RedDye, 1); + val.AddTile(TileID.DyeVat); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Peacekeeper/PeacegunnerAmerican.png b/Items/Weapons/Ranged/Peacekeeper/PeacegunnerAmerican.png new file mode 100644 index 0000000000000000000000000000000000000000..f3fd64822f610a790b9445c377dede89edcc4709 GIT binary patch literal 573 zcmV-D0>b@?P)Px#1ZP1_K>z@;j|==^1poj5Hc(7dMF0Q*5f~%I00aL50fPVlQ&Uq`agSJ2bw{AD z=KKHu|Np+#%0@tPdU|?3K5aHOHhdWwj-HlY`Atm#00E^*L_t(oN9~urOT$1MhSQ)> z+*(m;hawi;MCWwViXcupNLM#e{{j&Qad8MZh?`w?P!L^&(z>)mJLsfUP((pH`LVdD zspL)Gp$F$jjarjDa6ET#+`+y4E;+@g!3fx{n@}WPwY%?fUpfEQUgAFDdaCVz&zDb0 zJej@9rQNg8RKxDo5^nFZd-cJ6vdSy0N8&J(@m?ZKVj$6vG0EnS;GxtEETUfBz_VLA zEK7_O4C`z;k7F65kxtmJk>SJ`#zrg(KlWKCBNEyz!1~5AEYi_r`S!&!$1*std{%cBn1t*fiu0Mw+WIE!6yE*U;>q^*j9^TnZ9$mHbjMm@l1wIHCLv4CDcqX~6Ch#| zLA4n!m3Lq!Q7jf~*5W!podj`TBC=a%I`9OCm*(NSxkY%j+5-R9iGPG^5>d@0%w{HG zwoE32X1+Vbw?`x6{u)u!X;`d{6HS8&UxPx#1ZP1_K>z@;j|==^1poj55>QN3MF0Q*CM!f*X^4xPv^qp)z{}jlhNb*Jdu7*!J?wwG3@qPGuNfrN|x3k1EQ)}32uxV4utBO!0PgBh2V$1SYtF)!d=Te+S55CYPls83UX3jw0saSpxf;8cC(y z41-p?sYYI=lNm+n|9ZJVak)KE#IpqE!IZv6BohEN!11f0pkQ5dYQYHJd8t2ix?PI= z6q0Iy*GRuNpeSMb2=62O9pzv?%!KXi9DVOv(rJZL3TC9f0uz$CPZ3`uFaTaPv2aG7 zwXjaqCP4g*NT-aSk#A+(kN6njCU9HjcPIW`VT?qCSR;O4X5d%M=+j4D#TfYrmh}Lq WJ)2N9kAhVI0000= 0.6f; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 muzzleOffset = Vector2.Normalize(new Vector2(velocity.X, velocity.Y)) * 35f; + if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) + { + position += muzzleOffset; + } + if (type == 14) + { + type = ModContent.ProjectileType(); + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 8); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Peacekeeper/Unity.png b/Items/Weapons/Ranged/Peacekeeper/Unity.png new file mode 100644 index 0000000000000000000000000000000000000000..5596eaaef61ea3c6fb490613bde961a46c43e0e9 GIT binary patch literal 478 zcmV<40U`d0P)Px#1ZP1_K>z@;j|==^1poj5Cs0gOMF0Q*Js~~+JpliX0RPJXfPa>8ReD!CU?dkU z&i?>a|0@9Y?Ets`Wg?5V00041NklKFJ4#9z_YACPS!6eJWNp@Bs^ZM4*I=iQBtOm#9_%;o+(8 z_&FvS6C2wTV{+1)rnoY~8Rf|x_mLUpOmY^vd)56m!aF}eX5Uz4s7=+%H6(W{DQs>b zZSP9= 0.9f; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(1f, -2f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(8f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + if (type == 14) + { + type = ModContent.ProjectileType(); + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:PulseSprayer", 1); + val.AddIngredient(ModContent.ItemType(), 2); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/PulsePistols/GoldenPulse.png b/Items/Weapons/Ranged/PulsePistols/GoldenPulse.png new file mode 100644 index 0000000000000000000000000000000000000000..e85bce0571cee080b4a70399e1f677556b6def28 GIT binary patch literal 609 zcmV-n0-pVeP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF0Q*I}s6+lZb^{JlfP=^YiJ%g-KITc^wxX zc7&>@zsdjq|K|JuWY_e*)yjs1g4VG9v;Y7B&q+iPl$R-BwB*Nxgxc5suL`aaKB`SFH? zJwBJuv)9|a&u71$NuijY%n_H0Od?RjLkZ{KmtD>@4AoKu};nf|z zdQDH)92^U*z$|J`LC#)vNjgkC3n9HyY!0jYShlxnAC|~pM9v59XcP?Yz^)nz~nrr?hnrP!|NwauoYInfH^a${X%Yz6D7~C zRS9BGQ= 0.9f; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(1f, -2f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(8f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + if (type == 14) + { + type = ModContent.ProjectileType(); + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 10); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/PulsePistols/Graffiti.png b/Items/Weapons/Ranged/PulsePistols/Graffiti.png new file mode 100644 index 0000000000000000000000000000000000000000..babba44f6bf9ba14231cefb5e88b9afa97073f05 GIT binary patch literal 688 zcmV;h0#E&kP)Px#1ZP1_K>z@;j|==^1poj5Hc(7dMF0Q*Bo{3wVbeV!J#kfffPa?%JpliX0RPJX zRsSmh_U%_XU{g?e9Ty&UgsP{%$@BB+0Js0X){OQ500J0EL_t(oN7a@wNLxW1hhLQ< z2t|>CnwnZksGvBA5sG359fTAM84Sjubm*jX6P?7tN$HkB2ghQ9LKnqJga*`#NC=Tk z3AC}M%~&ewR4e}Oeh>WXVH~8nZ~5-Yd(U^@yX5k~`A_&8yZ-4R$QIK#K1-E$#d7Vb z<;?Dj>fkE;cWWHBzaYys*Vf}W5Ey_-T}KN%w=)4dAtgtj77ld6>wgk(`(yzQp2gt8 zsXF#N@xZ*_$K@s1-hwRG^+>_<7KX!c z{Okbc8j@@AD0iesiez>h?(p}*d^7eJT#T>dSQa}e=5YF7wcQ!ABrz2&w;bX9x%0?!?Q6$yY3mhiUqQl|O72?Bgz5f7{+|jj=r|Wb Wk?N8zn+Ku*0000YDfM6 literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/PulsePistols/PulsePistol.cs b/Items/Weapons/Ranged/PulsePistols/PulsePistol.cs new file mode 100644 index 0000000..4c8a576 --- /dev/null +++ b/Items/Weapons/Ranged/PulsePistols/PulsePistol.cs @@ -0,0 +1,68 @@ +using FabusMod.Projectiles; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.PulsePistols; + +public class PulsePistol : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Pulse Pistol"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \n70% chance to not consume ammo \nShoots incredibly fast \nConverts Musket Balls into Pulse Bullets"); + } + + public override void SetDefaults() + { + Item.damage = 10; + Item.width = 40; + Item.height = 28; + Item.useTime = 2; + Item.useAnimation = 2; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(0, 5, 32, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 25f; + Item.useAmmo = AmmoID.Bullet; + Item.rare = ItemRarityID.LightRed; + } + + public override bool CanConsumeAmmo(Item ammo, Player player) + { + return Utils.NextFloat(Main.rand) >= 0.7f; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(8f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + if (type == 14) + { + type = ModContent.ProjectileType(); + } + return true; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(1f, -2f); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:AdamantiteBar", 6); + val.AddIngredient(ItemID.Diamond, 2); + val.AddIngredient(ItemID.Sapphire, 2); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/PulsePistols/PulsePistol.png b/Items/Weapons/Ranged/PulsePistols/PulsePistol.png new file mode 100644 index 0000000000000000000000000000000000000000..a98c8ef272eea65c49279a83935eb84db7bba414 GIT binary patch literal 623 zcmV-#0+9WQP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF0Q*Bp^DIlZdyz#Dj^GR9I`@=je~&;Zsm~ z9Ty&UgsP{%$zx@NNJ(QZFhU?8FS^hjfB*mi-AP12R9Hvdlsha#Q5=VhK`cTH)LV3D zW1vDjI+$uO7;FX+Boad-NNk-<-o!u}k63gwkQf-mGx3NrNINv%&&g;KlHa*MN&nm+ zf*#-UoqKxQ-uvBiZj9xRu;o@h8$%F2+kW?2Vhu+vZ?0P2*-z2lRSS;}F2MR1WVx~F zJ{<4w1>mDV2<{*D!e1p648#1rl2RvZci3QeMIEefL6&Q5tH%WIkjRoPt?E1$kjP^E z9&z<{8>2`z+b7_o!!?*i^(k0XuF4fU?J)5T^&2CF&p&636rSeyi|~mMx%SBT)VeWJ zI9)lgx2XfxZx^%V&gvpuUE2y@U!B6o2P<%VLMGfZGYpf!);T;sIRf*oV20Tf&}R)A zekCh48zl>h-8d#0nR&1*S??Kutqo;x+Q}WvH6+*K?6}_;DXQExFn>233@U41Fxjeh z+rzDTuMs)lxw`@LJ(gdh)-czg#O83od?I9d!3SU7UqoD!J_XIn$vfhC+}&#{OR$8c zh*>cr|A+kFf;^9;TO$kI+^StE*Dx_FCW-!nEE1QHjESem2bg!r&xtH&R)~DIlo|RJ zOiW6FS;lOhe7Dd?=(memjBrhopDrfRry!BL_P2{kqP(ER@&aB-%Bb-oE${#U002ov JPDHLkV1n?i5cU87 literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/PulsePistols/PulseSprayer.cs b/Items/Weapons/Ranged/PulsePistols/PulseSprayer.cs new file mode 100644 index 0000000..cee60a0 --- /dev/null +++ b/Items/Weapons/Ranged/PulsePistols/PulseSprayer.cs @@ -0,0 +1,73 @@ +using FabusMod.Projectiles; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.PulsePistols; + +public class PulseSprayer : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Pulse Sprayer"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots, dyeable] \n80% chance to not consume ammo \nShoots incredibly fast \nConverts Musket Balls into dark blue Pulse Bullets"); + } + + public override void SetDefaults() + { + Item.damage = 54; + Item.width = 40; + Item.height = 28; + Item.useTime = 2; + Item.useAnimation = 2; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(0, 10, 20, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 25f; + Item.useAmmo = AmmoID.Bullet; + Item.rare = ItemRarityID.Red; + } + + public override bool CanConsumeAmmo(Item ammo, Player player) + { + return Utils.NextFloat(Main.rand) >= 0.8f; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(1f, -2f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(8f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + if (type == 14) + { + type = ModContent.ProjectileType(); + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:PunksPulse", 1); + val.AddIngredient(ItemID.FragmentVortex, 8); + val.AddTile(TileID.LunarCraftingStation); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType()); + val2.AddIngredient(ItemID.BlueDye, 1); + val2.AddTile(TileID.DyeVat); + val2.Register(); + } +} diff --git a/Items/Weapons/Ranged/PulsePistols/PulseSprayer.png b/Items/Weapons/Ranged/PulsePistols/PulseSprayer.png new file mode 100644 index 0000000000000000000000000000000000000000..e6888d8d1b03666354e17a200621146ffb64d48e GIT binary patch literal 670 zcmV;P0%84$P)Px#1ZP1_K>z@;j|==^1poj5Do{*RMF0Q*C>%PIlZYxSS6!pOkKy6WfI-^SUi0(m zF-(e6PnGsQ`BOydY{D(nFdh)P?3k5^8n^2*K%vFc}LMd~CNIU5vJSBaf z=R4?E53NJEr_bf{yyJb}?fJaV_N>4;B+k04zw06RxV7@z&r+zJxBT*{<;?ySk^9NKrF+1wP)S&OhNDg11w5;00GN{OZLz{PuAIKHnUG zdB2HZ3v6#emOEO}fEOg3u|yUnve^Dc5+>K44(id*EZrD~->p4|S=63_Tzf^QDq)gI zJk%paNuV8O*+ld%ERjz{u066HTh$|lKj?*fF5iUh{TAVi_+D%j zCa;%M@Z9))IMCk*n=m~Ad)AG zOBUq)i9H2P<>ZVA&*z$vnD$m)XTtu1{8mmqxDCr0$pF%zcy6Zt-QUeIw401;2>sKg30d;kCd07*qoM6N<$ Ef&>aT3;+NC literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/PulsePistols/PulseSprayerCadet.cs b/Items/Weapons/Ranged/PulsePistols/PulseSprayerCadet.cs new file mode 100644 index 0000000..944d952 --- /dev/null +++ b/Items/Weapons/Ranged/PulsePistols/PulseSprayerCadet.cs @@ -0,0 +1,67 @@ +using FabusMod.Projectiles; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.PulsePistols; + +public class PulseSprayerCadet : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Pulse Sprayer - Cadet"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \n80% chance to not consume ammo \nShoots incredibly fast \nConverts Musket Balls into Pulse Bullets"); + } + + public override void SetDefaults() + { + Item.damage = 54; + Item.width = 40; + Item.height = 28; + Item.useTime = 2; + Item.useAnimation = 2; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 0f; + Item.value = Item.sellPrice(0, 10, 20, 0); + Item.UseSound = SoundID.Item11; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 25f; + Item.useAmmo = AmmoID.Bullet; + Item.rare = ItemRarityID.Red; + } + + public override bool CanConsumeAmmo(Item ammo, Player player) + { + return Utils.NextFloat(Main.rand) >= 0.8f; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(1f, -2f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(8f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + if (type == 14) + { + type = ModContent.ProjectileType(); + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.SilverDye, 1); + val.AddTile(TileID.DyeVat); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/PulsePistols/PulseSprayerCadet.png b/Items/Weapons/Ranged/PulsePistols/PulseSprayerCadet.png new file mode 100644 index 0000000000000000000000000000000000000000..a41b29fb7c798bdf981b662e97ed20fec35d773a GIT binary patch literal 600 zcmV-e0;m0nP)Px#1ZP1_K>z@;j|==^1poj5El^BUMF0Q*D@zsX}|gh)wakKy4iFha0E5S0J`0m(^3K~z{r<(5q=gi#oV2U~21#$Xz3q>v&O zY$zMWMiwI^Nr@y`h=kHK$%ZB=@&gnlHOfbrCW{$0Df#}GiCOUvsQW#)nuj-$uaj$Y zJ@1)WoO7S&nRyc|zeK*X@=2B8=zQnRy(B9CSzhg0p6t8m?5%~p)9bMQ2{JirZVsLu z1sO1DtFKVi$2g2d;h_HtE-uf83#~S|!!-fxn;?@bYpB8kPxu~8Kq3>n3`bxxHr%MH zc&6N2@Nw7=Gf{mKl)c9!Cp$-AGUy#umBDQPqN?KIjS$&;WM%VFRR%>BS@3xK0Ics6 zpN2Nznz{}+8o7jzg2sAkvI8EPcf%yKe+{oK%)niq7T6548_=f*m0z%1Gm&I|aW$Ta zEyGAmCfU^Ofzw^3aN5N^%pQ`x7+Bs`m4Q9axG{2jat7<4Ag9%Ain-o*unX_?cwuKr z5zHQxB&8&&DxQZsBe~nyP28UJNzg1gc_My~(;e6}deIE_7<8a*cEclidV4j4Z6PcWx^3NiZBl;yM-(t+xiP_1&3jL;-i4pcB`R>Fd m`Xor?)c$m0l0TlH#qtbpTD!M7XKT>_0000= 0.7f; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(1f, -2f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(8f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + if (type == 14) + { + type = ModContent.ProjectileType(); + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.HallowedBar, 8); + val.AddIngredient(ItemID.SoulofNight, 6); + val.AddTile(TileID.AdamantiteForge); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType()); + val2.AddIngredient(ItemID.BlueDye, 1); + val2.AddTile(TileID.DyeVat); + val2.Register(); + } +} diff --git a/Items/Weapons/Ranged/PulsePistols/PunksPulse.png b/Items/Weapons/Ranged/PulsePistols/PunksPulse.png new file mode 100644 index 0000000000000000000000000000000000000000..f895af8e85dc193153f2797c6e68846d1dcd24a4 GIT binary patch literal 632 zcmV-;0*C#HP)Px#1ZP1_K>z@;j|==^1poj5Gf+%aMF0Q*C>%PIlZYxSSO3iFkKy56qrWjsic?T| z9Ty&UgsP{%$zx@NNJ(S={QfR5LLeY7X5E+O0005wNkl99*oudo8}oUdx-SmNWY)>f1`-vHm$&|AH*% z8ytmW&*TW4RMh}i&kw*~WqbJu-kWj5$z_?aBR>wF$SsHUEofFw!jkFjbubG^WU+_i zEtr_yiPgq&*t59=v#34=15!(If-`1GdvOL#3Y?Q_WZ>@TRHN7M_lR73~*n%$eW1N8zH98u;?!81`&0!h!xaxO-{{COfWEcy4?c&g|=j%`m$I`m90a z7ox)LD4FCa#4)kjVqsabyuk@aR%F8wN7pddkX(!RyR&L!uz#`&S56zdmqqn27#f*? zuKn#|5-%@ku{;C2#mcCF SsI= 0.7f; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(1f, -2f); + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(8f)); + velocity.X = perturbedSpeed.X; + velocity.Y = perturbedSpeed.Y; + if (type == 14) + { + type = ModContent.ProjectileType(); + } + return true; + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.PinkDye, 1); + val.AddTile(TileID.DyeVat); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/PulsePistols/PunksPulseUltraviolet.png b/Items/Weapons/Ranged/PulsePistols/PunksPulseUltraviolet.png new file mode 100644 index 0000000000000000000000000000000000000000..60c170087ee2ed4857001577d0bf27428a6464a8 GIT binary patch literal 632 zcmV-;0*C#HP)Px#1ZP1_K>z@;j|==^1poj5Gf+%aMF0Q*G#EsalZb*_sQ>)_|IF&}rRczf(U0Nb zQ&4#w7an$ms;9rnV`YR$NnIt!jcVFHYe7tp(T`lny&5`(U!Yb_y>JkHQ}JIBbU5 zFQCsFRQ8c*wV`BYP6@6_d_oE=OV+duz;X3?aP09l%rzv}V&||^jSRdO^YFveEzF|& z7mSKa!}a~u5lrO$j*S(V=UA#e8|E66u$YgXJIGdUhtF@${GLglf@bC9jQBq8?%f&x zbBuUrCyYT>jA4O1U*-3Z|67pnBg grants the [c/8A8A8A:Ultracharging] buff, which has the following effects:\n - After 2 seconds of not being able to use items, grants the [c/AB2C2C:U][c/F3821B:l][c/E6AF31:t][c/63B465:r][c/82E8E8:a][c/9EF3EF:c][c/2BA0B5:h][c/734679:a][c/AB2C2C:r][c/F3821B:g][c/E6AF31:e] buff\n - [c/AB2C2C:U][c/F3821B:l][c/E6AF31:t][c/63B465:r][c/82E8E8:a][c/9EF3EF:c][c/2BA0B5:h][c/734679:a][c/AB2C2C:r][c/F3821B:g][c/E6AF31:e] increases damage dealt by Color Splasher by 12%, and reduces Color Splasher's use time by 20% \n[c/AB2C2C:U][c/F3821B:l][c/E6AF31:t][c/63B465:r][c/82E8E8:a][c/9EF3EF:c][c/2BA0B5:h][c/734679:a][c/AB2C2C:r][c/F3821B:g][c/E6AF31:e] has a cooldown of [c/CA4646:40 seconds] once the effect ends\nConverts Musket Balls into homing Rainbow Bullets \nOnly uses one Bullet per use"); + } + + public override void SetDefaults() + { + Item.damage = 120; + Item.width = 70; + Item.height = 36; + Item.useTime = 18; + Item.useAnimation = 18; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 4f; + Item.value = Item.sellPrice(2, 14, 0, 0); + Item.expert = true; + Item.UseSound = SoundID.Item38; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 35f; + Item.useAmmo = AmmoID.Bullet; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + if (type == 14) + { + type = ModContent.ProjectileType(); + } + int numberProjectiles = 8; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(10f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI); + } + return false; + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2) + { + if (!player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType())) + { + player.AddBuff(ModContent.BuffType(), 140, true); + } + } + else if (player.HasBuff(ModContent.BuffType())) + { + Item.damage = 134; + Item.useTime = 16; + Item.useAnimation = 16; + } + else + { + Item.damage = 120; + Item.useTime = 20; + Item.useAnimation = 20; + } + return CanUseItem(player); + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-2f, -5f); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 8); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Shotguns/Depriver.png b/Items/Weapons/Ranged/Shotguns/Depriver.png new file mode 100644 index 0000000000000000000000000000000000000000..f9c8552e8dadcaa89dbceeeae09553a8a7ceb654 GIT binary patch literal 885 zcmV-*1B(2KP)Px#1ZP1_K>z@;j|==^1poj5LQqUpMF0Q*Bo{3J_U%>wE6)D_|H}aXjsX8X0Dym% zS2|!*0?a)jJ#kff0A~LHxBoQMN>!yPE;XSlVWB94xU^v?FAgu!&PyHu00PlTL_t(& zL+zPQNK{c2ho2IH6;_m)QxKzxWezq-Z9=0(n-IbvR}lm)a#;isv}w^Ih=ia&yCfoL zAuXgf5lGQ42^A-hk;$;Jh@ylFQY<+4{2sjXI`2Mb-el1IHotRa7_Rqz@7(*e%1f9X z4VhnDE{pt!iNxo!9OS&KIURz;b_pwu7Y%3+C%A#v0y!Md~*hkIoK)eMD_l? zlyQM6#dk%@2koYpg-F;GEBBWuUY%V<>5Nf`ZH(+C=U)s`YB$>M*)Gb>GXs>8p;PAm z5aKVHf*ZM{Z;QE!J7W~A#sHXun<9`sL!LHohmKOJhJXs2q8TD_##kuZ7>P9I>6=!{ z@$3mo(6(@wGS?UUxsSz^qzv(UB-7I4jESV=Q_05bg@arf7TdWH(y?chMAmtkJ=;ltY3|B_#De*4oj8RaHk-Y`T z9#fo~rj&2pHHXh}WzY grants the [c/8A8A8A:Hypercharging] buff, which has the following effects:\n - After 2 seconds of not being able to use items, grants the [c/FF9300:Hypercharge] buff\n - [c/FF9300:Hypercharge] increases damage dealt by Golden Shotgun by 12%, and reduces Golden Shotgun's use time by 20% \n[c/FF9300:Hypercharge] has a cooldown of [c/CA4646:40 seconds] once the effect ends\nOnly uses one Bullet per use"); + } + + public override void SetDefaults() + { + Item.damage = 52; + Item.width = 80; + Item.height = 34; + Item.useTime = 25; + Item.useAnimation = 25; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 4f; + Item.value = Item.sellPrice(0, 46, 0, 0); + Item.rare = ItemRarityID.Yellow; + Item.UseSound = SoundID.Item38; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 35f; + Item.useAmmo = AmmoID.Bullet; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 7; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(10f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI); + } + return true; + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2) + { + if (!player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType())) + { + player.AddBuff(ModContent.BuffType(), 140, true); + } + } + else if (player.HasBuff(ModContent.BuffType())) + { + Item.damage = 58; + Item.useTime = 20; + Item.useAnimation = 20; + } + else + { + Item.damage = 52; + Item.useTime = 25; + Item.useAnimation = 25; + } + return CanUseItem(player); + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-2f, -5f); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:HellkinShotgun", 1); + val.AddIngredient(ModContent.ItemType(), 8); + val.AddIngredient(ModContent.ItemType(), 4); + val.AddTile(TileID.AdamantiteForge); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Shotguns/GoldenShotgun.png b/Items/Weapons/Ranged/Shotguns/GoldenShotgun.png new file mode 100644 index 0000000000000000000000000000000000000000..c181f4013c0593ed4955d9c450d3c47c9a94b955 GIT binary patch literal 1050 zcmV+#1m*jQP)Px#1ZP1_K>z@;j|==^1poj5LQqUpMF0Q*1ql>&)9PNz<^TVL^YiIgyrN#g+S}Vx zx3@E>s3t$CjFFKGEQxTz!56Qu4tI9|u;=tvyrDUkeNesFiHQpw`Kg2e00VYOL_t(& zL+zMdNK;`PhmXPh!VuSTWEU9?36&s>h@iR+E30*pyOM|kyGW@(yU@M}L`t-aguI9- zur69)5Z#3rMU>J9BsB&#B5i1cG1G7tg}-;d!T$5KxpP)T?*s98&g|^W_wjw-qmeHh zC9a=~{}P8u%+CL-tVmdsBLxZD2J32nF@fX$t+g;QJ1>dP&)9x%`9K$Fk-Qb?8-0Ug zcZmb;t-k@cygUN)e0Q~)4xN>C@ZTyg)4XhUU%EhxEPJ%&NO5F%{?Nm|MHz*TZSX?; zIedTLDL7a1T_*2;VXhs=v$MxwV)h%N3$#ei1^OO8!}0L$?J${my9=(}GzxP>2}ic9 zYzUSkE#b)jY0U0hmZ%G~NX`Yaw64&8Sk7^B1g#PbzJfiT%`lHiF!%``E**v&r}o0- zgt3Q=RxK6@LH4kBxB0!4B9Tn1o5P#KifosjxSOJK9zgWd<`3DW|zEl<+q4Z$P+b+Fujt#MVt z&2?T_mdI!4miPeN6IF8?{~yn@IL>8m*J{{1a~WoFcO7bfTIei?8$)UpmgSkv>D>28 zbb&UJR$!*`WKmqj#!e5y92s8c_D$!a(pEoNBB=;$fIHu*>$f@Y!9_)1VbVLLR`ce# z`s0bW`=4#FI_$*8KI?Hpr z*TQ5Vau}B7O-`!)qI|;OeQ_7T(&Tx<*NHCBB54KkCr?-&N0!L)uJoinqp}RneLQAS zERk?dvdWgLtuUV~BrH&VPVOG~IcjP)!e;RMb%7Qs$hN##Oda#@WO6m)b#g^sFITMI zN4DsFpiQI|$hnF8s7&Sk@8|+8k}OcJqHda&?3pI%vLX5-tW-`TEZ}X0TqI` U2)KC+c>n+a07*qoM6N<$f)Z>34gdfE literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/Shotguns/HellfireShotgun.cs b/Items/Weapons/Ranged/Shotguns/HellfireShotgun.cs new file mode 100644 index 0000000..e68700f --- /dev/null +++ b/Items/Weapons/Ranged/Shotguns/HellfireShotgun.cs @@ -0,0 +1,60 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.Shotguns; + +public class HellfireShotgun : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Hellfire Shotgun"); + Tooltip.SetDefault("Fires a spread of 5 bullets \nOnly uses one Bullet per use"); + } + + public override void SetDefaults() + { + Item.damage = 21; + Item.width = 78; + Item.height = 28; + Item.useTime = 45; + Item.useAnimation = 45; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 4f; + Item.value = Item.sellPrice(0, 2, 0, 0); + Item.rare = ItemRarityID.Orange; + Item.UseSound = SoundID.Item36; + Item.autoReuse = false; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 35f; + Item.useAmmo = AmmoID.Bullet; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 5; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(12f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI); + } + return false; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-2f, -5f); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.Obsidian, 16); + val.AddIngredient(ItemID.HellstoneBar, 4); + val.AddTile(TileID.Anvils); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Shotguns/HellfireShotgun.png b/Items/Weapons/Ranged/Shotguns/HellfireShotgun.png new file mode 100644 index 0000000000000000000000000000000000000000..9f4266c2fb4268ec0bb24b0914576b04d6733db6 GIT binary patch literal 615 zcmV-t0+{`YP)Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*3l}a(M^`^OOk{0)nWLjKFFb%kGFLA> zRJLJC0005%Nkla*@5DAEdij5B-XkjA=K82X4i1-wO zU}IsxT5UuHMF<8jjYNou;BB!`P&~=MkYk3KJ%&xh^ELktI~lUcx999^%nM1pcl5Jz zSQG#5tZGf$d{_9oji#lNN=U@UO^=Px`0d4~Jifl6gc+E(xG?t}-o#{z^60QYiLnXH z+t}Quj2fHaYMc-8K%xQKCrRT~~HENs?agAGB&CnR#&jieaVLgdH zN*kzcjRG|lpa!GMt8qe{jSFiU=VWh}($zQ+m3iDS&i?5+CAzE{C&X%;$u$1_mCWx@ zX7eAEnRF{W*0_3`2BY|Mp$R@uYh0Z$8fSV=vzf;Csxa@MZHUtKALsDT)yqiN z?|~Wz)HoqOjI)_G^?peSxM>`$$KR&>c8?hq*g5d)Q{#jLzalryWEePqDA$Hu>4`Fx z=%VD9x@fbQr*B6hCgy4yHw^GD+U$%E^i!I;Dc>QOP~(II#__I~@XKbI4Ew9t?hM!K zQ{#jL#-S^s%h grants the [c/8A8A8A:Hypercharging] buff, which has the following effects:\n - After 2 seconds of not being able to use items, grants the [c/FF9300:Hypercharge] buff\n - [c/FF9300:Hypercharge] increases damage dealt by Hellraiser by 12%, and reduces Hellraiser's use time by 20% \n[c/FF9300:Hypercharge] has a cooldown of [c/CA4646:40 seconds] once the effect ends\nOnly uses one Bullet per use"); + } + + public override void SetDefaults() + { + Item.damage = 46; + Item.width = 80; + Item.height = 34; + Item.useTime = 28; + Item.useAnimation = 28; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 4f; + Item.value = Item.sellPrice(0, 14, 20, 0); + Item.rare = ItemRarityID.LightPurple; + Item.UseSound = SoundID.Item38; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 35f; + Item.useAmmo = AmmoID.Bullet; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 6; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(8f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI); + } + return true; + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2) + { + if (!player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType())) + { + player.AddBuff(ModContent.BuffType(), 140, true); + } + } + else if (player.HasBuff(ModContent.BuffType())) + { + Item.damage = 52; + Item.useTime = 25; + Item.useAnimation = 25; + } + else + { + Item.damage = 46; + Item.useTime = 28; + Item.useAnimation = 28; + } + return CanUseItem(player); + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-2f, -5f); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:HellshiverGun"); + val.AddIngredient(ItemID.HallowedBar, 6); + val.AddIngredient(ModContent.ItemType(), 4); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType()); + val2.AddIngredient(ItemID.OrangeDye, 1); + val2.AddTile(TileID.DyeVat); + val2.Register(); + } +} diff --git a/Items/Weapons/Ranged/Shotguns/HellkinShotgun.png b/Items/Weapons/Ranged/Shotguns/HellkinShotgun.png new file mode 100644 index 0000000000000000000000000000000000000000..b8d5175ff3ec84707885d0e1da800f01c3fab486 GIT binary patch literal 927 zcmV;Q17Q4#P)Px#1ZP1_K>z@;j|==^1poj5El^BUMF0Q*1ql@Y&yN4~K>v|iE<9A^V_un~qew?r zm^o2oZF?FbIRCgxTWoz-FFgeqxLyDN0}x3>K~!i%?U+qy6G0e;w^l0^MA3@04T@+| zEA~g!9)uQ4(L?dzMNfhU3!@4Rj-p+)c(Tb&b%>T5lgP)rs*u@{xybI+IC6C8 z9&)zK3#!YeemMgzDSEW!NO5F*^GRLh{l}5SEWdAQ*K7%&7)z^<4xIciD z{cr|aQnG>PTiek-G(3nTjT^TjS=09R>_?K#ZEN*WVIC%*Bd^9UA^$e)H~TC5Lld2W zmXvH@S4S7xJ3pz}Rhq~V9814IMq+D_VUc{4(no(LpBvLhg{i5F=%ZiZ6U5)i{yPIh zrf36+G?61j$k|mI zCK<`RMrM1LAidOLl|4C?g9{KXCsY#dT=ryEBcBY9A`ebYA$uz;kxi|Q$o8S9NS-ei zS^JhoW60}QE+UDmfgurSpj@GIJtPS-(64#t-XOV0_R%J053fLSk4&VArze!r@;aJm z`rL%cJn}J$DGtd&Ffu)+q5t6g>@$t7v&bof>(w#z~xkA@Q4mCiA3ei{5L4G&j@A5RQyoCla~-^Ex)EjNL}mH+@BtWT!IX zNcBqO-NYRv>FnNyq&6953)-m&Ol2lf@+`XJ(z^wQ!1wKEf(8;%oO(58EA=bpqwS!HZ&lE%=_PQ z23q19DAzrlWt@41aRyrA+hv-)oPmXL23p~HKLM2Dg9xVLNZ9}Y002ovPDHLkV1mSn Bvqt~` literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/Shotguns/HellkinShotgunDracula.cs b/Items/Weapons/Ranged/Shotguns/HellkinShotgunDracula.cs new file mode 100644 index 0000000..efee80d --- /dev/null +++ b/Items/Weapons/Ranged/Shotguns/HellkinShotgunDracula.cs @@ -0,0 +1,89 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.Shotguns; + +public class HellkinShotgunDracula : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Hellraiser - Dracula"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \nFires a spread of 6 bullets \nUsing grants the [c/8A8A8A:Hypercharging] buff, which has the following effects:\n - After 2 seconds of not being able to use items, grants the [c/FF9300:Hypercharge] buff\n - [c/FF9300:Hypercharge] increases damage dealt by Hellraiser by 12%, and reduces Hellraiser's use time by 20% \n[c/FF9300:Hypercharge] has a cooldown of [c/CA4646:40 seconds] once the effect ends\nOnly uses one Bullet per use"); + } + + public override void SetDefaults() + { + Item.damage = 46; + Item.width = 78; + Item.height = 30; + Item.useTime = 28; + Item.useAnimation = 28; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 4f; + Item.value = Item.sellPrice(0, 14, 20, 0); + Item.rare = ItemRarityID.LightPurple; + Item.UseSound = SoundID.Item38; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 35f; + Item.useAmmo = AmmoID.Bullet; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 6; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(8f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI); + } + return true; + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool CanUseItem(Player player) + { + if (player.altFunctionUse == 2) + { + if (!player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType())) + { + player.AddBuff(ModContent.BuffType(), 140, true); + } + } + else if (player.HasBuff(ModContent.BuffType())) + { + Item.damage = 52; + Item.useTime = 25; + Item.useAnimation = 25; + } + else + { + Item.damage = 46; + Item.useTime = 28; + Item.useAnimation = 28; + } + return this.CanUseItem(player); + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-2f, -5f); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.RedDye, 1); + val.AddTile(TileID.DyeVat); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Shotguns/HellkinShotgunDracula.png b/Items/Weapons/Ranged/Shotguns/HellkinShotgunDracula.png new file mode 100644 index 0000000000000000000000000000000000000000..ccfe6c83c804dfa15898760151857ab42071deed GIT binary patch literal 825 zcmV-91IGM`P)Px#1ZP1_K>z@;j|==^1poj5Do{*RMF0Q*3l}cTB|(W3K`uO0TWo!bpsN}pI9dru zY9%lKky@NmI@X9-WNmv{2wU&~00ON^L_t(&L+zMPNEA^V$JdM?mv*57(K<+B5ab`S zV~`SFg49cYq@Y9LNht8(NhPI2M?*T5Coj=OCAw6E;7PJ_4Wyz@mKYXftbr&SeBb*H z_`|m|^P5c&-skdtJLB#Q&S$>w&6K5-q$}$Sb_nvzIrVStM)uhB#3Z&QG;Jz#2%pKh z)t^Xdo-|WSQlsOZN7(VaaY`azMP9M~jjg7gKWGOQnn#Y;oB?GUQm)^+f|MO4J5h`5V0NB2PDy0rXj<61Om@m-`F>Uv^#*HqUS@YE|M1brz^6mC9 zqtkrF|PZjxsq3(Z6IBon*C!(2F~7u$Cu_v6S=>6DT|!Qm^*;9ubM6< zADRvz$rrJ z(X`IX7qMaH-A5!%a~US@d1m2rxC83Xj-XE*l9|2 zCrG?;N&@3tEAHKD+W*EIrzEh+)dk+T?eWH`NTvP(e_9?FUw}^L00000NkvXXu0mjf DEt-d$ literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/Shotguns/HellshiverGun.cs b/Items/Weapons/Ranged/Shotguns/HellshiverGun.cs new file mode 100644 index 0000000..c2c9c97 --- /dev/null +++ b/Items/Weapons/Ranged/Shotguns/HellshiverGun.cs @@ -0,0 +1,67 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.Shotguns; + +public class HellshiverGun : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Shivering Shotgun"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots, dyeable] \nFires a spread of 6 bullets \nOnly uses one Bullet per use"); + } + + public override void SetDefaults() + { + Item.damage = 30; + Item.width = 78; + Item.height = 28; + Item.useTime = 35; + Item.useAnimation = 35; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 4f; + Item.value = Item.sellPrice(0, 4, 64, 0); + Item.rare = ItemRarityID.LightRed; + Item.UseSound = SoundID.Item36; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 35f; + Item.useAmmo = AmmoID.Bullet; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 6; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(10f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI, 0f, 0f); + } + return false; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-2f, -5f); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddRecipeGroup("FabusMod:OrichalcumBar", 6); + val.AddIngredient(ItemID.IceBlock, 20); + val.AddTile(TileID.MythrilAnvil); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType()); + val2.AddIngredient(ItemID.BlueFlameDye, 1); + val2.AddTile(TileID.DyeVat); + val2.Register(); + } +} diff --git a/Items/Weapons/Ranged/Shotguns/HellshiverGun.png b/Items/Weapons/Ranged/Shotguns/HellshiverGun.png new file mode 100644 index 0000000000000000000000000000000000000000..5c02c0403c77b74c3976b44a38e5b51e57b8cb1a GIT binary patch literal 686 zcmV;f0#W^mP)Px#1ZP1_K>z@;j|==^1poj5Bv4FLMF0Q*4iPDepsQPKeaF<)^Z);N*Z)PB*Bo1% zE<9AQ|Nj~yI831P!~g&SC`m*?RA@u(nLA4ZK@>(4e}G^b3lVH%d=&w!)Pi8ASQxNT zd{y=;678)-MH?X&qMZ;F3z48$MDP`3srUdv5)^yIJM%5%nsIi=jZvJ_d^5>1Y{JRC zGn-(*Bh@wGH#scHOCeXZrtW&T@O3Lql}w9AjE$R^OVIo@b4Izfwn+&yaNSON<0Ar1 zkqG5QHcN@Q3S8F_>!JK)M6(g$)R2;FSUQE8gnitnp6+Cn)yK1HcA&l+clXX5}jj{|c?`nxF?Rz(d2$(40E z`kKyVv3_c>GPUkn)>@7=&Jg1ocb~tcIl7+;mIOO?azyr?zh0yPb_6m!69 zGrGJr&Jfqec{PnQG(1fiALylY3rr|CZcRg%wZ<8uHBMz3-+#dP~O z#=&}{hoVNpxbqXS9zPk>#%CxWlarKu?iV07*qoM6N<$f>kIji2wiq literal 0 HcmV?d00001 diff --git a/Items/Weapons/Ranged/Shotguns/HellshiverGunHellfire.cs b/Items/Weapons/Ranged/Shotguns/HellshiverGunHellfire.cs new file mode 100644 index 0000000..c97ab3b --- /dev/null +++ b/Items/Weapons/Ranged/Shotguns/HellshiverGunHellfire.cs @@ -0,0 +1,60 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Ranged.Shotguns; + +public class HellshiverGunHellfire : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Shivering Shotgun - Hellfire"); + Tooltip.SetDefault("[c/B6FF00:Autoshoots] \nFires a spread of 6 bullets \nOnly uses one Bullet per use"); + } + + public override void SetDefaults() + { + Item.damage = 30; + Item.width = 78; + Item.height = 28; + Item.useTime = 35; + Item.useAnimation = 35; + Item.useStyle = ItemUseStyleID.Shoot; + Item.noMelee = true; + Item.knockBack = 4f; + Item.value = Item.sellPrice(0, 4, 64, 0); + Item.rare = ItemRarityID.LightRed; + Item.UseSound = SoundID.Item36; + Item.autoReuse = true; + Item.shoot = ProjectileID.PurificationPowder; + Item.shootSpeed = 35f; + Item.useAmmo = AmmoID.Bullet; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + int numberProjectiles = 6; + for (int i = 0; i < numberProjectiles; i++) + { + Vector2 perturbedSpeed = Utils.RotatedByRandom(new Vector2(velocity.X, velocity.Y), (double)MathHelper.ToRadians(10f)); + Projectile.NewProjectile(source, position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockback, player.whoAmI); + } + return false; + } + + public override Vector2? HoldoutOffset() + { + return new Vector2(-2f, -5f); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.FlameDye, 1); + val.AddTile(TileID.DyeVat); + val.Register(); + } +} diff --git a/Items/Weapons/Ranged/Shotguns/HellshiverGunHellfire.png b/Items/Weapons/Ranged/Shotguns/HellshiverGunHellfire.png new file mode 100644 index 0000000000000000000000000000000000000000..53c6613db6998d2cd55546c9879c31ccf0d1d1f6 GIT binary patch literal 856 zcmV-e1E>6nP)Px#1ZP1_K>z@;j|==^1poj5Gf+%aMF0Q*1ql?2psQPKeJ(sy$JErEQaWlSFB||M zJrF0>h*&THF#nNS|F}w+IZ;d(HsoVoEBeve0008RNklox*oR(KTz1$AKuqPx-vqZQMURzwA9 zU@d7>loS;H-uHK4|9Ln&Z<0mtbMw4Mx3TH7|2glea6&Szvihf9j?4G2`J&ehdVIOa z*PU#pXj?*JTwE%h#&K_^55Cr+j#&mDx3j5vOrgnT2jGE6ci=xwP~o;XLyU{-dRSaS zeC|Njg_G*+#@TeUWg#q!I^aHq zWr=>rBy4#sZB_jYxcSy|m}gmAoFRe5$+IVC6=xLxBfMVY4A?g>2J`nPZoGv{&Xxf) zEo@o83rowr{|5V&XNxn$w>UY|IIDt6lY7-yySI(WgEOshk1}VOgtJY~w8?@y31W*g zq@=i@(j>Api7b!B)okg9Nl#N8W?{VIpQxPxcNoNP$0Fg*L4H14oFU#{k!8sHXMUye zti$hq?P_&*MBaU1F(k2UCd?~;31?eFM;C00EXi+A%lAXv{!j3sY&UH0j!ZBWEUh6j z8$XbHGa?Hk@+|td6ZAQQW;U_K8B$W5#ILY_m7s4%xu4G#XNYfcLHFGMcWiNncs2Qb i_ib_GV~aDwaee`PR!_d63K5b30000(); + Item.shootSpeed = 1f; + Item.buffType = ModContent.BuffType(); + Item.buffTime = 3600; + } + + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Goddess' Summoning Staff"); + Tooltip.SetDefault("Summons a golden servant to fight for you"); + } + + public override bool AltFunctionUse(Player player) + { + return true; + } + + public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback) + { + return player.altFunctionUse != 2; + } + + public override bool? UseItem(Player player)/* tModPorter Suggestion: Return null instead of false */ + { + if (player.altFunctionUse == 2) + { + player.MinionNPCTargetAim(false); + } + return UseItem(player); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType(), 16); + val.AddTile(TileID.AdamantiteForge); + val.Register(); + } +} diff --git a/Items/Weapons/Summon/GoddessSummoner.png b/Items/Weapons/Summon/GoddessSummoner.png new file mode 100644 index 0000000000000000000000000000000000000000..cd44acdc4da983c29e3b0e451bbd7095e7934bb1 GIT binary patch literal 736 zcmV<60w4W}P)Px#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*I}s7{^Xc;Pb`c~f!SerJ!P-BljM~&* z#Dz)vZFBMf00Ll1L_t(&L+zT+N&-<7hqX7b7SSe&3amv?n}TRx3&U3sYtgzOh?W%u z^#mopg5;w15!A+@MF|z5n`}|OKw#YC{ec|3%{c$OHRprj=b%XA=ecvvwPeClmQ$&= ze%Kc`tya%#8q)divEJxaqekcL_9l$Z5Q%C+*55BEzqbx4OV?S-{7QxLab%RTU&LtGz-YGEF<2?AQv%c| zH#%9qqXdQdX-a$}a1L?{Gn8U9Y`D?a+#;o4P{XKwF&Y*8KFaT#rVa?8Q))Jvlzded zqk{&$Enj7wFx_YQYA!~j!l~!w)TrKKeyZ%S^lii1Y`p*&HRhNUk9PIhv9LTC`8IHZKTg0dpBoaS%q;K4Z S==%cz0000(); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ItemID.MagicDagger, 1); + val.AddIngredient(ModContent.ItemType(), 14); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Thrown/Daggers/ColorfulSolution.png b/Items/Weapons/Thrown/Daggers/ColorfulSolution.png new file mode 100644 index 0000000000000000000000000000000000000000..10af83cbe5e1850060605b007b851b8d59273504 GIT binary patch literal 466 zcmV;@0WJQCP)Px#1ZP1_K>z@;j|==^1poj5El^BUMF0Q*Bo{6JJpliX0RPJX&i?>a|0@9Y?Ets` z0A~MF0?b!BU~yG?fPa=fAw97WFy;UN0YgbdK~z{rV;~l&i0l3bVJMd%V1m+A2crhV z0nH3%gwi+xEG67lyA0;5-qHorcV1q`t9K9tMIaOt2}V-|9N>&ucxu=JNewV?-ULF2 zN#IW%10NJ1m%?023>Y{Uqr0@7K^u$-0s5y37=WdYRWBf^gHURKfq_pI#D*;l47`h1 ze?J7q!~*)K3Rr5mbN>LC4+jT@z?4dY9+)1yWd+!!P}dRz2GGSYm#zo0kud>4`&5Ce zC3(mH5||F2a~4d)z(vtSC<_(9QVH!`40EZmvN2ddN?Hm`!vMdQ43vcmK3;nQWkJBR zr_aFj*}D**(cZ<9TmoPLDM@884YL{DC+IGN$v=C37fe6@_5n=OKUKhD7d;MOE=8Az z0otbuD2)@K#{n!1ag}N?Kr(); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddRecipeGroup("FabusMod:DemoniteBar", 3); + val.AddIngredient(ItemID.Sapphire, 1); + val.AddTile(TileID.Anvils); + val.Register(); + + Recipe val2 = CreateRecipe(); + val2.AddIngredient(ModContent.ItemType()); + val2.AddIngredient(ItemID.BlueDye, 1); + val2.AddTile(TileID.DyeVat); + val2.Register(); + } +} diff --git a/Items/Weapons/Thrown/Shuriken/CarbonShuriken.png b/Items/Weapons/Thrown/Shuriken/CarbonShuriken.png new file mode 100644 index 0000000000000000000000000000000000000000..085c82cc8f1dc7fa22a38db6a36f9ced72a7cee1 GIT binary patch literal 473 zcmV;~0Ve*5P)Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*3l}bigo175*k-TAPE=eG7$Yb;RWo*w zm|HLC00048NklMrRfevp2dt%nrHxv*XrC5Fu!&38ZiC! z(); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.SilverDye, 1); + val.AddTile(TileID.DyeVat); + val.Register(); + } +} diff --git a/Items/Weapons/Thrown/Shuriken/CarbonShurikenNihon.png b/Items/Weapons/Thrown/Shuriken/CarbonShurikenNihon.png new file mode 100644 index 0000000000000000000000000000000000000000..59c2fe5c403a543fad40c2f957e4ed8f2235da03 GIT binary patch literal 424 zcmV;Z0ayNsP)Px#1ZP1_K>z@;j|==^1poj56;Mo6MF0Q*78w}k`~UoQbp1X!zSYYA|NmIu>>>aF z0WnELK~z{rV;~oZNlN?&VJMemzyzh~4o05Ej8K|r0E^cPkDi1126B>M`qlFnB$+kz zf?BM)6pYCQL(j*ICyszIxnS_8YV_0$i{C@>VPHDK#Scsqo4SWy9KUMq24ix;(DU() zTc^R8Trl`kH4NaYgNIC6O>#bd`3#bepZ@_(); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddRecipeGroup("IronBar", 3); + val.AddIngredient(ItemID.Emerald, 1); + val.AddTile(TileID.Anvils); + val.Register(); + } +} diff --git a/Items/Weapons/Thrown/Shuriken/HerosShuriken.png b/Items/Weapons/Thrown/Shuriken/HerosShuriken.png new file mode 100644 index 0000000000000000000000000000000000000000..905fe2161e60a5b228494736f60381413fc6d48e GIT binary patch literal 476 zcmV<20VDp2P)Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*3l}cA$;n#(qNbj)S1&#I|Lb~ejbh|O zj(k-n0004BNklMrRfevp2dt%nrHxv*L9m_gZV*zsbKo+ z%S$AgHS~gdq1jC^CKrsRYPtcUQzCk5hQ+VXe10&UT3HLGiA~)@FR0^Bse>`OVCeby z?bR1xOfDGwsTu~t^=+}%!7DEw9vWpe(XNE~bm4_{VE(~V_aOA*BVhXO;SFG#Sf3Bx zRE^%Y0{Ik#LG>^Q>lmqkF$|!q#{~vo9K&2ayS*9A-#D=cOe@<4fN7X7g|#KX^t`kZ zFzufYp$V1UgU81(pN5|m1@nJM$Af8DxeW6eI!KxY2@zPW#qo3@m|ki88cd`6eBgZy z^Qr#}h>u_{cG;B&rU}IvdYahdHVI6_LTsZ1Bt&5P2ak_oF1~W^4w#;}8sc+eTNW^L z@(); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddRecipeGroup("FabusMod:CarbonShuriken", 1); + val.AddRecipeGroup("FabusMod:AdamantiteBar", 6); + val.AddIngredient(ItemID.Ruby, 3); + val.AddIngredient(ItemID.SoulofNight, 3); + val.AddTile(TileID.DemonAltar); + val.Register(); + } +} diff --git a/Items/Weapons/Thrown/Shuriken/OniSlayer.png b/Items/Weapons/Thrown/Shuriken/OniSlayer.png new file mode 100644 index 0000000000000000000000000000000000000000..da09a7d7c604673397fca60a5dd09586f644ba14 GIT binary patch literal 467 zcmV;^0WAKBP)Px#1ZP1_K>z@;j|==^1poj57*I@9MF0Q*4;CR#R9uFHg4F;3{{R5K)ygP3Rk3o5 z^Z)<>SxH1eR9Hvlm9a_#K@f&dU%)PqG9VVIEG#5K#3u+6C5??QU@HN!5Fyz50yZ{+ z5YnX+1tCQWYY|cksp1nTj{7ygESJ5)o5K%=pULfA_P?2(%ZjpAYkYo3NRwF&`se(= zKVAvCG}Lvsy<_>~)3fQve3taA>b>gi%?*p9_^&awJv}+L940TXrm3~AUX43v=N3ir z$Uy{Y@@)%D1*JJJ$)-Z5^6&ZuPp}k8?kc*)ix& zbzST_6AW~cmFGC-0JIy`QEVo&4s?C_jzM=GgZom~LrIRa>(); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 6); + val.AddIngredient(ModContent.ItemType(), 6); + val.AddTile(TileID.AdamantiteForge); + val.Register(); + } +} diff --git a/Items/Weapons/Thrown/Shuriken/SparklingDemon.png b/Items/Weapons/Thrown/Shuriken/SparklingDemon.png new file mode 100644 index 0000000000000000000000000000000000000000..d6a0e98d2b9decbb453f4e80dc04a66d59738bb1 GIT binary patch literal 473 zcmV;~0Ve*5P)Px#1ZP1_K>z@;j|==^1poj57*I@9MF0Q*4;CTBg-P1fURt-}VaE0I^XZXdH?m*P zNB{rm^~k^1`hCYL+qTid=}k+O52P-Dl7QqHYk_xo`k zk7ITWzEfWpy3PaxpJeqp4mkktMt2mN$*cokU%zAUormDQvg@HH$4T-9;TOk;o&j$3 P00000NkvXXu0mjf6I|GT literal 0 HcmV?d00001 diff --git a/Items/Weapons/Thrown/Shuriken/StonePlatedShuriken.cs b/Items/Weapons/Thrown/Shuriken/StonePlatedShuriken.cs new file mode 100644 index 0000000..b3f3eb3 --- /dev/null +++ b/Items/Weapons/Thrown/Shuriken/StonePlatedShuriken.cs @@ -0,0 +1,46 @@ +using FabusMod.Projectiles.Shuriken; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Thrown.Shuriken; + +public class StonePlatedShuriken : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Stone-Plated Shuriken"); + Tooltip.SetDefault("Does not consume on use"); + } + + public override void SetDefaults() + { + Item.maxStack = 1; + Item.damage = 9; + Item.knockBack = 0f; + Item.useStyle = ItemUseStyleID.Swing; + Item.UseSound = SoundID.Item1; + Item.useAnimation = 16; + Item.useTime = 16; + Item.width = 34; + Item.height = 38; + Item.consumable = false; + Item.noUseGraphic = true; + Item.noMelee = true; + Item.autoReuse = false; + Item.value = Item.sellPrice(0, 0, 5, 40); + Item.rare = ItemRarityID.White; + Item.shootSpeed = 9f; + Item.shoot = ModContent.ProjectileType(); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ItemID.StoneBlock, 3); + val.AddIngredient(ItemID.FallenStar, 1); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Thrown/Shuriken/StonePlatedShuriken.png b/Items/Weapons/Thrown/Shuriken/StonePlatedShuriken.png new file mode 100644 index 0000000000000000000000000000000000000000..239ad701248944ff946b58a8a17808e0d6c89d08 GIT binary patch literal 478 zcmV<40U`d0P)Px#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*HzpYNlmE$00CY}L_t(oN7YubO2j}EjEC56ZISMfEmGMiq`Kn1K$MggHgcc3v6+6bogCIllI1_ z;hn?!$JIz7Y~f7tUc<)FTEo{QNsy;$3NDJG*IfR2T$Uxm7XEp>UVb7!Jv#t<}dN9wR68cnrRKT!8)eSbBPYeF3II?!avI3?{mi4^J`QW`g%rdc1x60B0|+V0q8m z-tOTjmOT}_j4aE*R4zfKtX>4iN#)KI?>GFf-rk(g!M6_+Fwu5ewN@CMPT-3?i9<;!d77yxC49#94QWhA4XD^ UMw$gFX#fBK07*qoM6N<$f((q&YybcN literal 0 HcmV?d00001 diff --git a/Items/Weapons/Thrown/Shuriken/TheSpinningRainbow.cs b/Items/Weapons/Thrown/Shuriken/TheSpinningRainbow.cs new file mode 100644 index 0000000..46268a6 --- /dev/null +++ b/Items/Weapons/Thrown/Shuriken/TheSpinningRainbow.cs @@ -0,0 +1,45 @@ +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Items.Weapons.Thrown.Shuriken; + +public class TheSpinningRainbow : ModItem +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("The Spinning Rainbow"); + Tooltip.SetDefault("[c/B6FF00:Autothrows]\nThrows 6 Shurikens at once"); + } + + public override void SetDefaults() + { + Item.maxStack = 1; + Item.damage = 230; + Item.knockBack = 0f; + Item.useStyle = ItemUseStyleID.Swing; + Item.UseSound = SoundID.Item1; + Item.useAnimation = 12; + Item.useTime = 2; + Item.width = 28; + Item.height = 28; + Item.consumable = false; + Item.noUseGraphic = true; + Item.noMelee = true; + Item.autoReuse = true; + Item.value = Item.sellPrice(2, 70, 0, 0); + Item.expert = true; + Item.shootSpeed = 25f; + Item.reuseDelay = 8; + Item.shoot = ModContent.ProjectileType(); + } + + public override void AddRecipes() + { + Recipe val = CreateRecipe(); + val.AddIngredient(ModContent.ItemType()); + val.AddIngredient(ModContent.ItemType(), 6); + val.AddTile(ModContent.TileType()); + val.Register(); + } +} diff --git a/Items/Weapons/Thrown/Shuriken/TheSpinningRainbow.png b/Items/Weapons/Thrown/Shuriken/TheSpinningRainbow.png new file mode 100644 index 0000000000000000000000000000000000000000..e465d83855ace832512133af44e0a2b79ede2a0d GIT binary patch literal 462 zcmV;<0WtoGP)Px#1ZP1_K>z@;j|==^1poj5Do{*RMF0Q*Bo{6JJpce^|5F0Y|Be9v%K!kk|8Z4% zS2|!lAwACj008#wRsSo*A@eu@00BZtL_t(YOU;u(O2a@HMyK6*fMT~|+FgYbcVhJb z7AZy7_7tT@@D46qiy(pr=mA zm}P{8B&>(EXP4Sa?~e{))e^CUW$IW|IrFX1wmS(+gU17yxR#Op3)5NMO2HZr zB9=89O*ok)@Ngotjh>9%t4j%s{h6Uz99&6ZxF5pFd;-tEKHWgoECOntrn|VE} z)Sp7aFXVNWu*|$~;$NYStU_0EFZ?shQro;-$hlCdU(v3eEGOuqXaE2J07*qoM6N<$ Eg0SApsQ>@~ literal 0 HcmV?d00001 diff --git a/NPCs/ModGlobalNPC.cs b/NPCs/ModGlobalNPC.cs new file mode 100644 index 0000000..7f04c83 --- /dev/null +++ b/NPCs/ModGlobalNPC.cs @@ -0,0 +1,33 @@ +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; +using Terraria.DataStructures; + +namespace FabusMod.NPCs; + +public class ModGlobalNPC : GlobalNPC +{ + public override void OnKill(NPC npc) + { + if (npc.type == NPCID.SkeletronPrime && Utils.NextFloat(Main.rand) < 0.1f) + { + Item.NewItem(new EntitySource_Misc(""), npc.position, npc.width, npc.height, ModContent.ItemType(), 1, false, 0, false, false); + } + if (npc.type == NPCID.TheDestroyer && Utils.NextFloat(Main.rand) < 0.1f) + { + Item.NewItem(new EntitySource_Misc(""), npc.position, npc.width, npc.height, ModContent.ItemType(), 1, false, 0, false, false); + } + if (npc.type == NPCID.Retinazer && Utils.NextFloat(Main.rand) < 0.1f) + { + Item.NewItem(new EntitySource_Misc(""), npc.position, npc.width, npc.height, ModContent.ItemType(), 1, false, 0, false, false); + } + if (npc.type == NPCID.Spazmatism && Utils.NextFloat(Main.rand) < 0.1f) + { + Item.NewItem(new EntitySource_Misc(""), npc.position, npc.width, npc.height, ModContent.ItemType(), 1, false, 0, false, false); + } + if (npc.type == NPCID.Unicorn && Utils.NextFloat(Main.rand) < 0.3f && Main.expertMode) + { + Item.NewItem(new EntitySource_Misc(""), npc.position, npc.width, npc.height, ModContent.ItemType(), Main.rand.Next(1, 5), false, 0, false, false); + } + } +} diff --git a/NPCs/VanillaNPCShop.cs b/NPCs/VanillaNPCShop.cs new file mode 100644 index 0000000..b8093f6 --- /dev/null +++ b/NPCs/VanillaNPCShop.cs @@ -0,0 +1,24 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.NPCs; + +public class VanillaNPCShop : GlobalNPC +{ + public override void SetupShop(int type, Chest shop, ref int nextSlot) + { + if (type == 17) + { + shop.item[nextSlot].SetDefaults(75, false); + nextSlot++; + shop.item[nextSlot].SetDefaults(150, false); + shop.item[nextSlot].shopCustomPrice = 100; + nextSlot++; + } + if (type == 20) + { + shop.item[nextSlot].SetDefaults(ModContent.ItemType(), false); + nextSlot++; + } + } +} diff --git a/Projectiles/Arrows/DemonArrow.cs b/Projectiles/Arrows/DemonArrow.cs new file mode 100644 index 0000000..a375e1a --- /dev/null +++ b/Projectiles/Arrows/DemonArrow.cs @@ -0,0 +1,42 @@ +using Terraria; +using Terraria.Audio; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.Arrows; + +public class DemonArrow : ModProjectile +{ + public override void SetDefaults() + { + Projectile.width = 10; + Projectile.height = 10; + Projectile.friendly = true; + Projectile.tileCollide = true; + Projectile.ignoreWater = false; + Projectile.timeLeft = 1000; + Projectile.light = 1f; + Projectile.penetrate = 1; + AIType = 1; + Projectile.aiStyle = 1; + } + + public override void AI() + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj = Main.dust[dust]; + obj.velocity /= 2f; + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + Dust.NewDust(Projectile.position + Projectile.velocity, Projectile.width, Projectile.height, ModContent.DustType(), Projectile.oldVelocity.X * 0.5f, Projectile.oldVelocity.Y * 0.5f, 0, default, 1f); + } + SoundEngine.PlaySound(SoundID.Item2, Projectile.position); + } +} diff --git a/Projectiles/Arrows/DemonArrow.png b/Projectiles/Arrows/DemonArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..096efd29cf42ad073f30120d489a70b92d112682 GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^d_b(h!3HGH?LGYqNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=MV4+aRt&7?2P|U-gGo4?P+e`=i-w^K%oboE{-7{-pL18)ow`sXHV1+ zXEt!moW%Io)W|8*qT#2u{T8`1^LOkL^bwb_>RwdF@pB@p*WtfutI~O%9cJjUZ){}L z;s31tb6t|{}BvnX3wd<@qz-~Y}r z44WBkw`lT*COHeUo!}4E;PtmO5LhM8yDYJ;jj=13&n6^M?V(nBTS48Cl^+lOmrm&6 z=3%!NVoJ$A5_u|eK}|0K+@c)DlG?GsGre`b6zopr04)N2WdHyG literal 0 HcmV?d00001 diff --git a/Projectiles/Arrows/GoldenSpiritArrow.cs b/Projectiles/Arrows/GoldenSpiritArrow.cs new file mode 100644 index 0000000..f384c8a --- /dev/null +++ b/Projectiles/Arrows/GoldenSpiritArrow.cs @@ -0,0 +1,42 @@ +using Terraria; +using Terraria.Audio; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.Arrows; + +public class GoldenSpiritArrow : ModProjectile +{ + public override void SetDefaults() + { + Projectile.width = 10; + Projectile.height = 10; + Projectile.friendly = true; + Projectile.tileCollide = true; + Projectile.ignoreWater = false; + Projectile.timeLeft = 1000; + Projectile.light = 1f; + Projectile.penetrate = 1; + AIType = 1; + Projectile.aiStyle = 1; + } + + public override void AI() + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj = Main.dust[dust]; + obj.velocity /= 2f; + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + Dust.NewDust(Projectile.position + Projectile.velocity, Projectile.width, Projectile.height, ModContent.DustType(), Projectile.oldVelocity.X * 0.5f, Projectile.oldVelocity.Y * 0.5f, 0, default, 1f); + } + SoundEngine.PlaySound(SoundID.Item1, Projectile.position); + } +} diff --git a/Projectiles/Arrows/GoldenSpiritArrow.png b/Projectiles/Arrows/GoldenSpiritArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..813b00518187c96c74dee99fd671f2e3fb5dde42 GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^d_b(h!3HGH?LGYqNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=MV4+aRt&nHKxD!O+Bavo34t!7m@b zPe1r&<>&N+CTG@PDPDEQz05$3<-~X8UH22Vd1|j{%$y;g$nY$DQ|=KD%j|cu%$L*t z*aOwF&FD^O_!OXOW|G+OC!qDxhbhd=ie6y}QqR&Q7Fax8@WfD{;bu?XV}W!17N&Mg z%VY$Ov9>kKb24r+O(), 0f, 0f, 0, default, 1f); + Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj = Main.dust[dust]; + obj.velocity /= 2f; + } + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Main.rand.NextBool(1)) + { + target.AddBuff(69, 900, false); + target.AddBuff(70, 900, false); + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + Dust.NewDust(Projectile.position + Projectile.velocity, Projectile.width, Projectile.height, ModContent.DustType(), Projectile.oldVelocity.X * 0.5f, Projectile.oldVelocity.Y * 0.5f, 0, default, 1f); + } + for (int j = 0; j < 5; j++) + { + Dust.NewDust(Projectile.position + Projectile.velocity, Projectile.width, Projectile.height, ModContent.DustType(), Projectile.oldVelocity.X * 0.5f, Projectile.oldVelocity.Y * 0.5f, 0, default, 1f); + } + SoundEngine.PlaySound(SoundID.Item1, Projectile.position); + } +} diff --git a/Projectiles/Arrows/LegendaryArrow.png b/Projectiles/Arrows/LegendaryArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..c0340724cfaa72cea497dcdf94c00ad118de63d4 GIT binary patch literal 392 zcmV;30eAk1P)Px#1ZP1_K>z@;j|==^1poj57*I@9MF0Q*E(jFyzW>o#(UcTw)Bv~O0PJ=EIVkG_ zApigY4oO5oR7gu>AO!R{ME-*?l#3HEL1~HsBb3GfFjpMj_8QE$^%4csmwvp#s)uSW zB52Tq*_XhW5TIQcp@$93H43SEU>a9gQQt){m!$E8f%&$s>0tWs?wMd3oj>c#DliRm z8STRe24F6Pxc~-e7DgBbfo#H+dO-k}Jnh2>7B&uVe8Kbqk2(?Ng`9|ouwMzFB)_@N3G*uildOv3=N;?#E$ m44|hEm^?0V7@(4i7#ILMu#fwwo*8Zc0000Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*H6$eJ=Hk7di>Q%;)55lRRXnMEU6*T1 z{b+~Y0002}Nklr-`ma!OrO4U z2Sx2r^drn~9o6YzzOH*XnBKQ~0hsQcya-Ig{7OBiiYaS@F(E*{A7Oqg&W!^LXd9Y< zX>k=DFb(q~48Z(Kwv8-Mnn9G06HF&1<$-BuLkTdw_xuYm4Ra9;P#&s;LKEa7n5#g5 z{7{9`@RS1sC6Sh3x@Y-uFbxCLOF1Bu(DNKJK$oZ7Mp6OwHNJcI4vcYu;owI?fNYHz zX%&|5oI(@8G}TKv`jTzPr2qf` literal 0 HcmV?d00001 diff --git a/Projectiles/Arrows/RainbowArrow.cs b/Projectiles/Arrows/RainbowArrow.cs new file mode 100644 index 0000000..51a2c71 --- /dev/null +++ b/Projectiles/Arrows/RainbowArrow.cs @@ -0,0 +1,80 @@ +using Terraria; +using Terraria.Audio; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.Arrows; + +public class RainbowArrow : ModProjectile +{ + public override void SetDefaults() + { + Projectile.width = 10; + Projectile.height = 10; + Projectile.friendly = true; + Projectile.tileCollide = true; + Projectile.ignoreWater = false; + + Projectile.timeLeft = 1000; + Projectile.light = 1f; + AIType = 1; + Projectile.aiStyle = 1; + } + + public override void AI() + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Main.rand.NextBool(1)) + { + target.AddBuff(69, 900, false); + target.AddBuff(70, 900, false); + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } + SoundEngine.PlaySound(SoundID.Item1, Projectile.position); + } +} diff --git a/Projectiles/Arrows/RainbowArrow.png b/Projectiles/Arrows/RainbowArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..e2f32048be946945035553a1616d09c48e2e5a4e GIT binary patch literal 583 zcmV-N0=WH&P)Px#1ZP1_K>z@;j|==^1poj5T2M?>MF0Q*E@lQ*W&p?kp9W?wa{mryPyp`#nV0lDWV9;;utVP3r?a#1<}RDPNg^q4uK*FMG-Qn_`Y1AjirLQ`rylt zH{9{~cvnijv>=Sn?+I*I4FvqN5&jXX{_d(yT{dgv}L_IHZsetJveLE64 z-py{=g5RMMI8W!`s@wy~cH7RzpGc%RN!Em=#cgKE83wP-HL&GOfOPu6tk}3i|Bhb9 zVd*W)i7uceA_hXeJL!cgYd(%*%l9RrdYsk#)t5&TmODVRC|s zGYuYERZuQ(g8F)-5>Xo8ut$dAM6S(=!X7opnA)4IqLgDv?4_OIFI1}q)lGdr8@n?;ZgZkTcRC~}ea%%k+`ePBX)O`Ze3002ovPDHLkV1jB}00aO4 literal 0 HcmV?d00001 diff --git a/Projectiles/Arrows/StormArrow.cs b/Projectiles/Arrows/StormArrow.cs new file mode 100644 index 0000000..c55fba8 --- /dev/null +++ b/Projectiles/Arrows/StormArrow.cs @@ -0,0 +1,42 @@ +using Terraria; +using Terraria.Audio; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.Arrows; + +public class StormArrow : ModProjectile +{ + public override void SetDefaults() + { + Projectile.width = 10; + Projectile.height = 10; + Projectile.friendly = true; + Projectile.tileCollide = true; + Projectile.ignoreWater = false; + Projectile.timeLeft = 1000; + Projectile.light = 1f; + Projectile.penetrate = 1; + AIType = 1; + Projectile.aiStyle = 1; + } + + public override void AI() + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj = Main.dust[dust]; + obj.velocity /= 2f; + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + Dust.NewDust(Projectile.position + Projectile.velocity, Projectile.width, Projectile.height, ModContent.DustType(), Projectile.oldVelocity.X * 0.5f, Projectile.oldVelocity.Y * 0.5f, 0, default, 1f); + } + SoundEngine.PlaySound(SoundID.Item1, Projectile.position); + } +} diff --git a/Projectiles/Arrows/StormArrow.png b/Projectiles/Arrows/StormArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..5dd1501fbfd141b4aa4bf1452198154d896f9fc8 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^d_b(h!3HGH?LGYqNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=MV4+aRt)GWfLa<|CF}=XztS+(FOaD0)_5+x;Tb-cqboV?K!RXhdoh4 zoY}xJa}wiU(@hSU77ahO7aDV(VP`V{e*2RJv|#UXUHcqJPY5Hd&I-?xY|30%k~TP z8g4Qa3-ScWtvb@C#xp^FRe;pIqJ#rl_nCbT|KVX4SuQihhK)3yCwp=`|vMD#E@p(?h3#F$eCU&cA eW||opFff>z#_yZ0v-AegqYR#|elF{r5}E+QRDa9> literal 0 HcmV?d00001 diff --git a/Projectiles/Daggers/ColorfulSolution.cs b/Projectiles/Daggers/ColorfulSolution.cs new file mode 100644 index 0000000..14157ee --- /dev/null +++ b/Projectiles/Daggers/ColorfulSolution.cs @@ -0,0 +1,81 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.Audio; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Projectiles.Daggers; + +public class ColorfulSolution : ModProjectile +{ + private const float maxTicks = 70f; + + private const int alphaReducation = 25; + + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Colorful Solution"); + } + + public override void SetDefaults() + { + Projectile.width = 16; + Projectile.height = 34; + Projectile.aiStyle = 2; + Projectile.friendly = true; + Projectile.penetrate = 1; + AIType = 48; + } + + public override bool? Colliding(Rectangle projHitbox, Rectangle targetHitbox) + { + if (targetHitbox.Width > 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Dig, Projectile.position); + Vector2 position = Projectile.position; + Vector2 rotVector = Utils.ToRotationVector2(Projectile.rotation - MathHelper.ToRadians(90f)); + _ = position + rotVector * 16f; + int item = 0; + if (Main.netMode == NetmodeID.MultiplayerClient && item >= 0) + { + NetMessage.SendData(MessageID.KillProjectile, -1, -1, null, 0, 0f, 0f, 0f, 0, 0, 0); + } + } + + public override void AI() + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Main.rand.NextBool(1)) + { + target.AddBuff(70, 720, false); + } + } +} diff --git a/Projectiles/Daggers/ColorfulSolution.png b/Projectiles/Daggers/ColorfulSolution.png new file mode 100644 index 0000000000000000000000000000000000000000..5049e3afdaa2cdf11ef142aa54b36122bf6211e6 GIT binary patch literal 508 zcmVPx#1ZP1_K>z@;j|==^1poj5NKi~vMF0Q*ArKvD{}(|2K)U|`lK%u3|7isOk@o8V z;{N~u|GEJG;{QOW zQb|NXR9Hu2AQdPI$o>amD3@r!1f^*X7@;&l0P}^%`(FXjIl3f={a-~aHKC^P8h zqfv{<27@Qn!BX4I_m3HFFt7kqoG>`mf$&=f4F*}k9sc$rn$Oa?GB3LPX_4Z?i zgTNGr3*3J{7l@A%EY(Njh-@%|ECQ8XAgrw_%U~}k3l+r#ih{{NYzE)(*!a=Sc8G#y8;8l8xaOzn+}9A+jW0n z3PFk(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.5f; + Main.dust[dust1].noGravity = true; + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.5f; + Main.dust[dust1].noGravity = true; + } + } + } +} diff --git a/Projectiles/FoxPistol/BlueBolt.png b/Projectiles/FoxPistol/BlueBolt.png new file mode 100644 index 0000000000000000000000000000000000000000..c9a90fd5f0806ebc6c85e4b4a0febbe40fd5e764 GIT binary patch literal 431 zcmV;g0Z{&lP)Px#1ZP1_K>z@;j|==^1poj56;Mo6MF0Q*3J)!2ciEb#?*IS)LRG{jIjEs39Z&!O z0XRuSK~zXfy_PW#!B7;1%V-gUt&^A}28qFD^9v*vt6;O6?KZ?}k@y8Rn?Yibn8ei0 zAQmgRw>{EaeTux>FKLdxRDI5So~9fFnQZwHyo}_2J4C)W9i%nhJ_Tm&-iptwl{_cd z?Jt~*X_Hf$>KU5MI;|Whm@luKCR6){-mET zVXcLs{W5CLOwLe3U7@c}Bsa_B*@n*t-8!dyhQW2}&o+PGkj$hVVcpOOb%dUN!Lp&_ ZJOTX)ka?4gJM91f002ovPDHLkV1mQ3zPbPa literal 0 HcmV?d00001 diff --git a/Projectiles/FoxPistol/BlueBoltRMB.cs b/Projectiles/FoxPistol/BlueBoltRMB.cs new file mode 100644 index 0000000..fa4acfc --- /dev/null +++ b/Projectiles/FoxPistol/BlueBoltRMB.cs @@ -0,0 +1,68 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.FoxPistol; + +public class BlueBoltRMB : ModProjectile +{ + public override void SetDefaults() + { + Projectile.width = 16; + Projectile.height = 16; + Projectile.aiStyle = 1; + Projectile.friendly = true; + Projectile.hostile = false; + + Projectile.penetrate = 1; + Projectile.timeLeft = 600; + Projectile.alpha = 255; + Projectile.light = 0.5f; + Projectile.ignoreWater = false; + Projectile.tileCollide = true; + Projectile.extraUpdates = 2; + AIType = 14; + } + + public override void AI() + { + Projectile.velocity.Y += Projectile.ai[0]; + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 1f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.5f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.8f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.5f; + Main.dust[dust2].noGravity = true; + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 1f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.5f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.8f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.5f; + Main.dust[dust2].noGravity = true; + } + } + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + target.AddBuff(ModContent.BuffType(), 240, false); + } +} diff --git a/Projectiles/FoxPistol/BlueBoltRMB.png b/Projectiles/FoxPistol/BlueBoltRMB.png new file mode 100644 index 0000000000000000000000000000000000000000..e21faee26a28d4d4695b1f3c0725800cd2a4ad3d GIT binary patch literal 415 zcmV;Q0bu@#P)Px#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*7Zy2>jM?bu=z@OCR#ePgSi3?zvP(z6 zXJW8eQ#QE(00AFKL_t(YOJigp0K~;C|3jHz@bcAhyn2|RG}Qo3+h8uMC|dyL!$3z@ z0+`0-Qrf!^-DQz6{9qaemM{4Trg6EHb}q!_GMI~C09_p2rL=cpcE)5d|H?Hm#h{}F zpZ$HR7AVc2s`d{|Z`jfarU{iQ3=HjHp9T1ogLzkPfhih>Aq=3q zj8u8rq2G~LTXf(D*E`2~#6op}VtxB$pUAWXYh#ua<890AJ-gwiMd zVi^WtE`(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.5f; + Main.dust[dust1].noGravity = true; + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.5f; + Main.dust[dust1].noGravity = true; + } + } + } +} diff --git a/Projectiles/FoxPistol/OrangeBolt.png b/Projectiles/FoxPistol/OrangeBolt.png new file mode 100644 index 0000000000000000000000000000000000000000..dda1b02cd2ed47dda361e46b793fb774b06dae6f GIT binary patch literal 436 zcmV;l0ZaagP)Px#1ZP1_K>z@;j|==^1poj56;Mo6MF0Q*KPwp7pl0sFn*aa*#DhYpXC@y<=A!@r z0X<1XK~zXfV`RVq?6oESLz!5?!K*K@>Scn`R09~cz+5(~)DO%TRWoRnJ%cWFzAx;B9E`YfL8NkFrE`zxa z8PMK^=r+S#1jB>??P9q#LJKS)Dyssfi3P78-vQIrE3ScQ+PN^(h7T+tBO?Q*VF2C5 zFc-nVlP6EW^zxd<5( z0(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 1f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.5f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.8f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.5f; + Main.dust[dust2].noGravity = true; + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 1f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.5f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.8f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.5f; + Main.dust[dust2].noGravity = true; + } + } + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + target.AddBuff(ModContent.BuffType(), 240, false); + } +} diff --git a/Projectiles/FoxPistol/OrangeBoltRMB.png b/Projectiles/FoxPistol/OrangeBoltRMB.png new file mode 100644 index 0000000000000000000000000000000000000000..b070a31442c133a38d543f534725ea33cdc267b7 GIT binary patch literal 415 zcmV;Q0bu@#P)Px#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*KPwpS!czjten5LZzVJ_>>@dOKed-D)X^K5pH(fN2;&7v~a@2h)X9wu5Qfxv(`t z3oHNw)hn(+S=a$C^;CBu3zTN~D*~~xZps=kO{i3(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } + } +} diff --git a/Projectiles/FoxPistol/RainbowBolt.png b/Projectiles/FoxPistol/RainbowBolt.png new file mode 100644 index 0000000000000000000000000000000000000000..3ce14d785bdbfd4f9b934cefd82da002bbd17e32 GIT binary patch literal 646 zcmV;10(t$3P)Px#1ZP1_K>z@;j|==^1poj5W>8F2MF0Q*5ex>ioB)l?05i-p0JD3uP5{iZ0I>f6 zK>t7h%#8q?v$FsI%vu2d-v9vrumG~m08X=j004Wl04=jE062hI004kE0Dy1+0DxEk zaDV_OSy+GoAb=oQP5=N|K0a9h7FiacgarHm00F*9L_t(YOU0H=O9D|8hEEy;f{SKj z*eVLLg+VZzmLUXfTD7vZd;1CPYvFHj;m#irL9}c$5J=PnN`yEtpc7~k6Mfus&b=<~ z)g+j)2Oi$}aP;NgnL94Q4D77+EjOnUj-sj8rewy3@hhrXy%y2_(=G)xz@c>gLrS}R zPN_FduHmFviJRps6wp25tie9zjVlk_ZBf{#$CRpR>(jpQ5pBUaIN*`Yfm=aF1PQG!(X0Xq=GghqZufZsL4?oNok;Y@Ih g)HwZxm>UB80K2ogOS^%ItpET307*qoM6N<$f;Pn;5C8xG literal 0 HcmV?d00001 diff --git a/Projectiles/FoxPistol/RainbowBoltRMB.cs b/Projectiles/FoxPistol/RainbowBoltRMB.cs new file mode 100644 index 0000000..dbf2471 --- /dev/null +++ b/Projectiles/FoxPistol/RainbowBoltRMB.cs @@ -0,0 +1,88 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.FoxPistol; + +public class RainbowBoltRMB : ModProjectile +{ + public override void SetDefaults() + { + Projectile.width = 16; + Projectile.height = 16; + Projectile.aiStyle = 1; + Projectile.friendly = true; + Projectile.hostile = false; + + Projectile.penetrate = 1; + Projectile.timeLeft = 600; + Projectile.alpha = 255; + Projectile.light = 0.5f; + Projectile.ignoreWater = false; + Projectile.tileCollide = true; + Projectile.extraUpdates = 2; + AIType = 14; + } + + public override void AI() + { + Projectile.velocity.Y += Projectile.ai[0]; + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust4 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + Main.dust[dust4].scale = 0.7f; + Dust obj4 = Main.dust[dust4]; + obj4.velocity *= 0.1f; + Main.dust[dust4].noGravity = true; + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust4 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + Main.dust[dust4].scale = 0.7f; + Dust obj4 = Main.dust[dust4]; + obj4.velocity *= 0.1f; + Main.dust[dust4].noGravity = true; + } + } + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + target.AddBuff(ModContent.BuffType(), 480, false); + } +} diff --git a/Projectiles/FoxPistol/RainbowBoltRMB.png b/Projectiles/FoxPistol/RainbowBoltRMB.png new file mode 100644 index 0000000000000000000000000000000000000000..eafcf695b451654259a492bdd4c5445c6e49702a GIT binary patch literal 648 zcmV;30(bq1P)Px#1ZP1_K>z@;j|==^1poj5w@^$}MF0Q*z2#=2e`DU8RMV?e)5l-V-e0rc&{0v)ZBfU7NXMK=&Am>+%}$@kNQB2sXvb(w$AnJJ zrB2PkNVmsGoX1g#&{1vB$4E%WWJpMW$4F$y&QDLyYfn#y&QEL3rOi%?%~EmDaaGWb zFdMts0004RNklyvG7QhIeF7?GV3_454blbzV6&+1LJR|c{`?8XSFT(EV;CQoI69z7 z7=pv@LSP^`?7j?U^WyJ0$_Fi z?dSgcXP<-Xqg@yx0p#2R0wl@P#D%y3*ye5b;=$?gHM=r69n!r#BxvCK_wT{@_3PJQ zj0eyrmO%h)GK7f&z~b|dd;D)X?gLYUO&toLYb?V6x~uT&p-C7L0z`!!3=D`1VPIfl id3b=K6Uzeu7#IKu?wZ(r;s+K00000 70) + { + Projectile projectile = Projectile; + projectile.alpha -= 15; + if (Projectile.alpha < 70) + { + Projectile.alpha = 70; + } + } + if (Projectile.localAI[0] == 0f) + { + AdjustMagnitude(ref Projectile.velocity); + Projectile.localAI[0] = 1f; + } + Vector2 move = Vector2.Zero; + float distance = 400f; + bool target = false; + for (int i = 0; i < 200; i++) + { + if (Main.npc[i].active && !Main.npc[i].dontTakeDamage && !Main.npc[i].friendly && Main.npc[i].lifeMax > 5) + { + Vector2 newMove = ((Entity)Main.npc[i]).Center - Projectile.Center; + float distanceTo = (float)Math.Sqrt(newMove.X * newMove.X + newMove.Y * newMove.Y); + if (distanceTo < distance) + { + move = newMove; + distance = distanceTo; + target = true; + } + } + } + if (target) + { + AdjustMagnitude(ref move); + Projectile.velocity = (10f * Projectile.velocity + move) / 11f; + AdjustMagnitude(ref Projectile.velocity); + } + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + AnimateProjectile(); + } + + private void AdjustMagnitude(ref Vector2 vector) + { + float magnitude = (float)Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y); + if (magnitude > 6f) + { + vector *= 6f / magnitude; + } + } + + public void AnimateProjectile() + { + Projectile projectile = Projectile; + projectile.frameCounter++; + if (Projectile.frameCounter >= 5) + { + Projectile projectile2 = Projectile; + projectile2.frame++; + Projectile projectile3 = Projectile; + projectile3.frame %= 3; + Projectile.frameCounter = 0; + } + } +} diff --git a/Projectiles/GoldenOrb.png b/Projectiles/GoldenOrb.png new file mode 100644 index 0000000000000000000000000000000000000000..711f1146aeb4569d61fd22b765ff4cebb26d9477 GIT binary patch literal 1444 zcmV;V1zY-wP)Px#1ZP1_K>z@;j|==^1poj55>QN3MF0Q*KPwpW@^;$PUi0(mKd6j+gd_0)00l5f zL_t(|UhSMQlH5cXMt3P6Vx8avxC&AnkrCn88JSN2ghYhE3CPHZO+-dyr>?>WFbR8$ zWm>B@HN2V6zqH<}o$i@erP7W@(yHHl-G58t^~ISp56tDfF8T85)lFOf_3nB)hSzK1 z_@#U@uaB0pHJEz!`kU$X^Jl+J>tBEWYFe-5<%>V(pKhs)_G{4QE-$~G);Bl5OzZ1^ zuBSCdFnaar)wG7RAFw@{?BAfx*oaAn%uV4twwU>R75(>O*tOP3vmB3a)p?w0j{*Z_ zFhJ&7%W3@~nxR8uXxa|_XVBR&ZoT(&=Ag=6Hn?#;vZ;>E2?{WMfwwHSGA8+1HYw**s zZZo*rU@}*c4ElUFIgY_9YvBDD_tKMCpTB>DYt1d~-4)5?(Hp$;1-ha{^nFM(wYyY| zn?c*7m;U?y`)R%OxRlv$GFTb}TJEP>7=YA!PuCzV_8ji(FFv1ty2Zu~hPDJ;zxILqT3Oxd$JV?&iW=+7Y7B#=E=Y7j7H#xn?*1ov8#Oxm1#war2Q291rn zH@fn8+;paa_s7d%g^fZQM@{vFVSIy$sv=NLw4e;jnyz%%3Yelk72!PHB^_qBWQbXETvomtMf22MA~v^@{xaz7t<4bZng08;+aGisnRb@R;=l&s z&|lkZ*fThv$L5Sp4rs72w%tE4uEA7u-6HNe_)aeEmpDCx%r>f)vmda(!A$i@bu$ib zFR)#4TUra+(pp5TK7{vcX4=xs>@Ihuzi|-AB&1AXr^>1`2JG+c{nuhY8TEH`d#KXb zIEHK(^Ng>)U+&jndP+qF0cQuCEq_1aOpap^QWn8a={;sTbH?VtPrdpz2sW8;EyjSy zQ}8E~o_6(b5RwU?#fg;Z>N(*!2JegXNu*C;JcIX@#cDqouNPO9r5X=8KJ{8NomV2mVBo$$kwwd#(`4 zkh2DwEtx3#z}&Cu?`_WP#43|76C?N!EX)8{e%ePr?I4KDt+lW~r3 zF{2^vXKc#nF#~0gN&)`H$?qprX{s#uYcSPH;C71_=^53 yNkuZ@Cj$wN_qgZdkKW*e(@cISmq%{!;^II3522Z-fvAxH0000(), 0f, 0f, 0, default, 1f); + Dust obj = Main.dust[num1]; + obj.velocity *= 0f; + Main.dust[num1].noGravity = true; + int num2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj2 = Main.dust[num2]; + obj2.velocity *= 0f; + Main.dust[num2].noGravity = true; + int num3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj3 = Main.dust[num3]; + obj3.velocity *= 0f; + Main.dust[num3].noGravity = true; + int num4 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj4 = Main.dust[num4]; + obj4.velocity *= 0f; + Main.dust[num4].noGravity = true; + int num5 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj5 = Main.dust[num5]; + obj5.velocity *= 0f; + Main.dust[num5].noGravity = true; + } +} diff --git a/Projectiles/IllusoryMirror/IllusoryMirrorProj.png b/Projectiles/IllusoryMirror/IllusoryMirrorProj.png new file mode 100644 index 0000000000000000000000000000000000000000..60548fee92776432f2d8aafbb480f72ac9048356 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^Oh7Ec!3HFkTfSKYq!^2X+?^QKos)S9^91;WxHA0zANl|P%>Vz-{QtkE$@m{oT+P$PF+?IfIpxRy|MtuR28|p7 t2T}~&gu%mV;%z-)>JYD@<);T3K0RZdsFF^nR literal 0 HcmV?d00001 diff --git a/Projectiles/IllusoryMirror/IllusoryMirrorRMB.cs b/Projectiles/IllusoryMirror/IllusoryMirrorRMB.cs new file mode 100644 index 0000000..2b27977 --- /dev/null +++ b/Projectiles/IllusoryMirror/IllusoryMirrorRMB.cs @@ -0,0 +1,68 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.IllusoryMirror; + +public class IllusoryMirrorRMB : ModProjectile +{ + public override void SetStaticDefaults() + { + Main.projFrames[Projectile.type] = 6; + } + + public override void SetDefaults() + { + Projectile.width = 400; + Projectile.height = 360; + Projectile.friendly = false; + Projectile.hostile = false; + Projectile.penetrate = 1; + Projectile.timeLeft = 1200; + Projectile.alpha = 80; + Projectile.light = 0.5f; + Projectile.ignoreWater = true; + Projectile.tileCollide = false; + Projectile.extraUpdates = 0; + Projectile.velocity = Projectile.velocity * 0f; + } + + public override void AI() + { + AnimateProjectile(); + if (Main.rand.NextBool(2)) + { + int num1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[num1].scale = 2f; + Main.dust[num1].velocity.Y -= 0.5f; + Main.dust[num1].velocity.X = 0f; + Main.dust[num1].noGravity = true; + int num2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[num2].scale = 2f; + Main.dust[num2].velocity.Y += 0.5f; + Main.dust[num2].velocity.X = 0f; + Main.dust[num2].noGravity = true; + } + for (int i = 0; i < 255; i++) + { + Player player = Main.player[i]; + if (player.active && player.Distance(Projectile.Center) < 200f) + { + player.AddBuff(ModContent.BuffType(), 20, true); + } + } + } + + public void AnimateProjectile() + { + Projectile projectile = Projectile; + projectile.frameCounter++; + if (Projectile.frameCounter >= 7) + { + Projectile projectile2 = Projectile; + projectile2.frame++; + Projectile projectile3 = Projectile; + projectile3.frame %= 5; + Projectile.frameCounter = 0; + } + } +} diff --git a/Projectiles/IllusoryMirror/IllusoryMirrorRMB.png b/Projectiles/IllusoryMirror/IllusoryMirrorRMB.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6f70fcec7b45ee9021f91e8d1d2f8eb0d4fe35 GIT binary patch literal 7324 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 KwA{q=?7snSIUjWZ literal 0 HcmV?d00001 diff --git a/Projectiles/IllusoryMirror/SpectralIllusionProj.cs b/Projectiles/IllusoryMirror/SpectralIllusionProj.cs new file mode 100644 index 0000000..a8f364b --- /dev/null +++ b/Projectiles/IllusoryMirror/SpectralIllusionProj.cs @@ -0,0 +1,49 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.IllusoryMirror; + +public class SpectralIllusionProj : ModProjectile +{ + private const int alphaReducation = 50; + + public override void SetDefaults() + { + Projectile.width = 2; + Projectile.height = 20; + Projectile.aiStyle = -1; + Projectile.friendly = true; + Projectile.hostile = false; + Projectile.penetrate = 1; + Projectile.timeLeft = 600; + Projectile.alpha = 255; + Projectile.light = 0.5f; + Projectile.ignoreWater = false; + Projectile.tileCollide = true; + Projectile.extraUpdates = 100; + } + + public override void AI() + { + int num1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj = Main.dust[num1]; + obj.velocity *= 0f; + Main.dust[num1].noGravity = true; + int num2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj2 = Main.dust[num2]; + obj2.velocity *= 0f; + Main.dust[num2].noGravity = true; + int num3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj3 = Main.dust[num3]; + obj3.velocity *= 0f; + Main.dust[num3].noGravity = true; + int num4 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj4 = Main.dust[num4]; + obj4.velocity *= 0f; + Main.dust[num4].noGravity = true; + int num5 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj5 = Main.dust[num5]; + obj5.velocity *= 0f; + Main.dust[num5].noGravity = true; + } +} diff --git a/Projectiles/IllusoryMirror/SpectralIllusionProj.png b/Projectiles/IllusoryMirror/SpectralIllusionProj.png new file mode 100644 index 0000000000000000000000000000000000000000..60548fee92776432f2d8aafbb480f72ac9048356 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^Oh7Ec!3HFkTfSKYq!^2X+?^QKos)S9^91;WxHA0zANl|P%>Vz-{QtkE$@m{oT+P$PF+?IfIpxRy|MtuR28|p7 t2T}~&gu%mV;%z-)>JYD@<);T3K0RZdsFF^nR literal 0 HcmV?d00001 diff --git a/Projectiles/IllusoryMirror/SpectralIllusionRMB.cs b/Projectiles/IllusoryMirror/SpectralIllusionRMB.cs new file mode 100644 index 0000000..e0fd4e7 --- /dev/null +++ b/Projectiles/IllusoryMirror/SpectralIllusionRMB.cs @@ -0,0 +1,78 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.IllusoryMirror; + +public class SpectralIllusionRMB : ModProjectile +{ + public override void SetStaticDefaults() + { + Main.projFrames[Projectile.type] = 8; + } + + public override void SetDefaults() + { + Projectile.width = 400; + Projectile.height = 360; + Projectile.friendly = false; + Projectile.hostile = false; + Projectile.penetrate = 1; + Projectile.timeLeft = 1200; + Projectile.alpha = 80; + Projectile.light = 0.5f; + Projectile.ignoreWater = true; + Projectile.tileCollide = false; + Projectile.extraUpdates = 0; + Projectile.velocity = Projectile.velocity * 0f; + } + + public override void AI() + { + AnimateProjectile(); + if (Main.rand.NextBool(2)) + { + int num1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[num1].scale = 2f; + Main.dust[num1].velocity.Y -= 0.5f; + Main.dust[num1].velocity.X = 0f; + Main.dust[num1].noGravity = true; + int num2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int num3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int num4 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[num2].scale = 2f; + Main.dust[num2].velocity.Y += 0.5f; + Main.dust[num2].velocity.X = 0f; + Main.dust[num2].noGravity = true; + Main.dust[num3].scale = 2f; + Main.dust[num3].velocity.Y += 0.5f; + Main.dust[num3].velocity.X = 0f; + Main.dust[num3].noGravity = true; + Main.dust[num4].scale = 2f; + Main.dust[num4].velocity.Y += 0.5f; + Main.dust[num4].velocity.X = 0f; + Main.dust[num4].noGravity = true; + } + for (int i = 0; i < 255; i++) + { + Player player = Main.player[i]; + if (player.active && player.Distance(Projectile.Center) < 200f) + { + player.AddBuff(ModContent.BuffType(), 20, true); + } + } + } + + public void AnimateProjectile() + { + Projectile projectile = Projectile; + projectile.frameCounter++; + if (Projectile.frameCounter >= 8) + { + Projectile projectile2 = Projectile; + projectile2.frame++; + Projectile projectile3 = Projectile; + projectile3.frame %= 7; + Projectile.frameCounter = 0; + } + } +} diff --git a/Projectiles/IllusoryMirror/SpectralIllusionRMB.png b/Projectiles/IllusoryMirror/SpectralIllusionRMB.png new file mode 100644 index 0000000000000000000000000000000000000000..1983fe049bd33f106a54a2119639d34eab5edf8e GIT binary patch literal 13027 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 QgZoz|hL-SRgUi4CFSTrZW&i*H literal 0 HcmV?d00001 diff --git a/Projectiles/IronStinger.cs b/Projectiles/IronStinger.cs new file mode 100644 index 0000000..50824d0 --- /dev/null +++ b/Projectiles/IronStinger.cs @@ -0,0 +1,28 @@ +using Terraria; +using Terraria.Audio; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles; + +public class IronStinger : ModProjectile +{ + public override void SetDefaults() + { + Projectile.width = 22; + Projectile.height = 32; + Projectile.friendly = true; + Projectile.tileCollide = true; + Projectile.ignoreWater = false; + Projectile.timeLeft = 300; + Projectile.light = 1f; + Projectile.penetrate = -1; + AIType = 1; + Projectile.aiStyle = 1; + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Dig, Projectile.position); + } +} diff --git a/Projectiles/IronStinger.png b/Projectiles/IronStinger.png new file mode 100644 index 0000000000000000000000000000000000000000..58f6a4bcb8b8c3380b0d75e8b0f7034344b21ec9 GIT binary patch literal 484 zcmVPx#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*U{X>wBqYd;@{;NaFDAdo83O$U)q8vIQNQF!2fu(19B;07xjy-FxnNfII-Rj; zwp+=(%|GY=Ej%;rI3Am3yOpRJ&)F;>?b5V|Op+rcc^nQ)*HANFu<4-b@!>A|m;D=L z_Wq0{Q{$K~&Gn6?>B`a~lDs`V*sBQ~_nFsMW15_vUn93#t4P8=$Gd0yNQs(pVc}?_ ziAL67~nb&J|v9PF5IHTJ=ATL0XSRR8kaSwXn3i9EGP)jTER aAovEeYk#gfeBR>#0000 player.position.X) ? 1 : (-1)); + Projectile.netUpdate = true; + } + Projectile.position = player.Center + Projectile.velocity * MOVE_DISTANCE; + Projectile.timeLeft = 2; + int dir = Projectile.direction; + player.ChangeDir(dir); + player.heldProj = Projectile.whoAmI; + player.itemTime = 2; + player.itemAnimation = 2; + player.itemRotation = (float)Math.Atan2(Projectile.velocity.Y * dir, Projectile.velocity.X * dir); + if (!player.channel) + { + Projectile.Kill(); + } + else + { + if (Main.time % 10.0 < 1.0 && !player.CheckMana(player.inventory[player.selectedItem].mana, true, false)) + { + Projectile.Kill(); + } + Vector2 offset = Projectile.velocity; + offset *= 40f; + Vector2 pos = player.Center + offset - new Vector2(10f, 10f); + if (Charge < MAX_CHARGE) + { + Charge++; + } + int chargeFact = (int)(Charge / 20f); + Vector2 dustVelocity = Vector2.UnitX * 18f; + dustVelocity = Utils.RotatedBy(dustVelocity, (double)(Projectile.rotation - 1.57f), default); + Vector2 spawnPos = Projectile.Center + dustVelocity; + for (int j = 0; j < chargeFact + 1; j++) + { + Vector2 spawn = spawnPos + Utils.ToRotationVector2((float)Main.rand.NextDouble() * 6.28f) * (12f - chargeFact * 2); + Dust obj = Main.dust[Dust.NewDust(pos, 20, 20, DustID.YellowTorch, Projectile.velocity.X / 2f, Projectile.velocity.Y / 2f, 0, default, 1f)]; + obj.velocity = Vector2.Normalize(spawnPos - spawn) * 1.5f * (10f - chargeFact * 2f) / 10f; + obj.noGravity = true; + obj.scale = Main.rand.Next(10, 20) * 0.05f; + } + } + if (Charge < MAX_CHARGE) + { + return; + } + Vector2 start = player.Center; + _ = Projectile.velocity * -1f; + for (Distance = MOVE_DISTANCE; Distance <= 2200f; Distance += 5f) + { + start = player.Center + Projectile.velocity * Distance; + if (!Collision.CanHit(player.Center, 1, 1, start, 1, 1)) + { + Distance -= 5f; + break; + } + } + if (Projectile.soundDelay <= 0) + { + SoundEngine.PlaySound(SoundID.Item15, Projectile.Center); + Projectile.soundDelay = 40; + } + for (int i = 0; i < 2; i++) + { + float num1 = Utils.ToRotation(Projectile.velocity) + ((Main.rand.NextBool(2)) ? (-1f) : 1f) * 1.57f; + float num2 = (float)(Main.rand.NextDouble() * 0.800000011920929 + 1.0); + //new Vector2((float)Math.Cos(num1) * num2, (float)Math.Sin(num1) * num2); + Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + } + DelegateMethods.v3_1 = new Vector3(0.8f, 0.8f, 1f); + Utils.PlotTileLine(Projectile.Center, Projectile.Center + Projectile.velocity * (Distance - MOVE_DISTANCE), 26f, new Utils.TileActionAttempt(DelegateMethods.CastLight)); + } + + public override bool ShouldUpdatePosition() + { + return false; + } + + public override void CutTiles() + { + DelegateMethods.tilecut_0 = (TileCuttingContext)2; + Vector2 unit = Projectile.velocity; + Utils.PlotTileLine(Projectile.Center, Projectile.Center + unit * Distance, (Projectile.width + 16) * Projectile.scale, new Utils.TileActionAttempt(DelegateMethods.CutTiles)); + } +} diff --git a/Projectiles/Lasers/CoalescenceBeam.png b/Projectiles/Lasers/CoalescenceBeam.png new file mode 100644 index 0000000000000000000000000000000000000000..2d367720cdf6bb73ae5d916a37de09a0968e5810 GIT binary patch literal 797 zcmV+&1LFLNP)Px#1ZP1_K>z@;j|==^1poj5Bv4FLMF0Q*1_Td{Pa)NM6$=L$5DFvauQ3q|CL|V2 zJSKnZ=PdvKfLtcqtpET5mq|oHRA@u(nNLU*Q5?s2b9V{tpXFg84|`A#d5B1@AUY)o z9lUr5^6pVjK~Nnc2!#$E6^{xco`S$brzi?S#DgBxLqX9B{x2nV?GJrtzQKOu_0|r} zZ{NBlBVqn`{%9S|*m9mfx^enfc)9az z6RH2#I}yFHnz7|P?`i*nRJtB#!lQs}T|IKYw2rLLH6eLUb9=^wrj4D=NYdWF7amno zI{1vFIk9i7rq>3}B7JP^EhE+3t}#d9tD#+F@AxGo$)CCy9#vA@opYe;)k4SRvR&eL+_i?qx)5A~0qe@zD7Lj&GHK93M>N2Kj_Hr3{ z<$M7dpXZpkj29;wki=EV)R<$1ro^uC%2XbyeW{~cE7#rY!SA(V5qrj*r5--dB6U>L zki1@ahb+Gde!unh1MiOF_oO8`}*ys4=;1<%{sP-CPebR`mndjJP z?3$0s%323$=g+PHd6xzPM&5eRtw)MO^Prdj05)`PKGb_jly|*{?{~3Peo_ z=jBg3!5!fjdR~w7vmIl$h|qX>HF#fE^o@dJVE+9WlIY%qol(ucAij4e*S8SuW4pUB z)$X*pzJ+iXhR^Zr;xVLMW8G=$gV9Xs00000NkvXXu0mjf5Ep_8 literal 0 HcmV?d00001 diff --git a/Projectiles/Lasers/GoldenBeam.cs b/Projectiles/Lasers/GoldenBeam.cs new file mode 100644 index 0000000..733fcb4 --- /dev/null +++ b/Projectiles/Lasers/GoldenBeam.cs @@ -0,0 +1,190 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Terraria; +using Terraria.Audio; +using Terraria.Enums; +using Terraria.GameContent; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Projectiles.Lasers; + +public class GoldenBeam : ModProjectile +{ + private const int MAX_CHARGE = 50; + + private const float MOVE_DISTANCE = 60f; + + public float Distance + { + get + { + return Projectile.ai[0]; + } + set + { + Projectile.ai[0] = value; + } + } + + public float Charge + { + get + { + return Projectile.localAI[0]; + } + set + { + Projectile.localAI[0] = value; + } + } + + public override void SetDefaults() + { + Projectile.width = 10; + Projectile.height = 10; + Projectile.friendly = true; + Projectile.penetrate = -1; + Projectile.tileCollide = false; + Projectile.hide = true; + } + + public override bool PreDraw(ref Color lightColor) + { + if (Charge == MAX_CHARGE) + { + Vector2 unit = Projectile.velocity; + DrawLaser(TextureAssets.Projectile[Projectile.type].Value, Main.player[Projectile.owner].Center, unit, 10f, Projectile.damage, -1.57f, 1f, 1000f, Color.White, 60); + } + return false; + } + + public void DrawLaser(Texture2D texture, Vector2 start, Vector2 unit, float step, int damage, float rotation = 0f, float scale = 1f, float maxDist = 2000f, Color color = default, int transDist = 50) + { + float r = Utils.ToRotation(unit) + rotation; + for (float i = transDist; i <= Distance; i += step) + { + Color c = Color.White; + Vector2 origin = start + i * unit; + Main.EntitySpriteDraw(texture, origin - Main.screenPosition, (Rectangle?)new Rectangle(0, 26, 28, 26), (i < transDist) ? Color.Transparent : c, r, new Vector2(14f, 13f), scale, SpriteEffects.None, 0); + } + Main.EntitySpriteDraw(texture, start + unit * (transDist - step) - Main.screenPosition, (Rectangle?)new Rectangle(0, 0, 28, 26), Color.White, r, new Vector2(14f, 13f), scale, SpriteEffects.None, 0); + Main.EntitySpriteDraw(texture, start + (Distance + step) * unit - Main.screenPosition, (Rectangle?)new Rectangle(0, 52, 28, 26), Color.White, r, new Vector2(14f, 13f), scale, SpriteEffects.None, 0); + } + + public override bool? Colliding(Rectangle projHitbox, Rectangle targetHitbox) + { + if (Charge == 50f) + { + Player p = Main.player[Projectile.owner]; + Vector2 unit = Projectile.velocity; + float point = 0f; + if (Collision.CheckAABBvLineCollision(Utils.TopLeft(targetHitbox), Utils.Size(targetHitbox), p.Center, p.Center + unit * Distance, 22f, ref point)) + { + return true; + } + } + return false; + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + target.immune[Projectile.owner] = 4; + target.AddBuff(ModContent.BuffType(), 240, false); + target.AddBuff(72, 180, false); + } + + public override void AI() + { + Vector2 mousePos = Main.MouseWorld; + Player player = Main.player[Projectile.owner]; + if (Projectile.owner == Main.myPlayer) + { + Vector2 diff = mousePos - player.Center; + diff.Normalize(); + Projectile.velocity = diff; + Projectile.direction = ((Main.MouseWorld.X > player.position.X) ? 1 : (-1)); + Projectile.netUpdate = true; + } + Projectile.position = player.Center + Projectile.velocity * MOVE_DISTANCE; + Projectile.timeLeft = 2; + int dir = Projectile.direction; + player.ChangeDir(dir); + player.heldProj = Projectile.whoAmI; + player.itemTime = 2; + player.itemAnimation = 2; + player.itemRotation = (float)Math.Atan2(Projectile.velocity.Y * dir, Projectile.velocity.X * dir); + if (!player.channel) + { + Projectile.Kill(); + } + else + { + if (Main.time % 10.0 < 1.0 && !player.CheckMana(player.inventory[player.selectedItem].mana, true, false)) + { + Projectile.Kill(); + } + Vector2 offset = Projectile.velocity; + offset *= 40f; + Vector2 pos = player.Center + offset - new Vector2(10f, 10f); + if (Charge < MAX_CHARGE) + { + Charge++; + } + int chargeFact = (int)(Charge / 20f); + Vector2 dustVelocity = Vector2.UnitX * 18f; + dustVelocity = Utils.RotatedBy(dustVelocity, (double)(Projectile.rotation - 1.57f), default); + Vector2 spawnPos = Projectile.Center + dustVelocity; + for (int j = 0; j < chargeFact + 1; j++) + { + Vector2 spawn = spawnPos + Utils.ToRotationVector2((float)Main.rand.NextDouble() * 6.28f) * (12f - chargeFact * 2); + Dust obj = Main.dust[Dust.NewDust(pos, 20, 20, DustID.YellowTorch, Projectile.velocity.X / 2f, Projectile.velocity.Y / 2f, 0, default, 1f)]; + obj.velocity = Vector2.Normalize(spawnPos - spawn) * 1.5f * (10f - chargeFact * 2f) / 10f; + obj.noGravity = true; + obj.scale = Main.rand.Next(10, 20) * 0.05f; + } + } + if (Charge < 50f) + { + return; + } + Vector2 start = player.Center; + _ = Projectile.velocity * -1f; + for (Distance = MOVE_DISTANCE; Distance <= 2200f; Distance += 5f) + { + start = player.Center + Projectile.velocity * Distance; + if (!Collision.CanHit(player.Center, 1, 1, start, 1, 1)) + { + Distance -= 5f; + break; + } + } + if (Projectile.soundDelay <= 0) + { + SoundEngine.PlaySound(SoundID.Item15, Projectile.Center); + Projectile.soundDelay = 40; + } + for (int i = 0; i < 2; i++) + { + float num1 = Utils.ToRotation(Projectile.velocity) + ((Main.rand.NextBool(2)) ? (-1f) : 1f) * 1.57f; + float num2 = (float)(Main.rand.NextDouble() * 0.800000011920929 + 1.0); + new Vector2((float)Math.Cos(num1) * num2, (float)Math.Sin(num1) * num2); + Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + } + DelegateMethods.v3_1 = new Vector3(0.8f, 0.8f, 1f); + Utils.PlotTileLine(Projectile.Center, Projectile.Center + Projectile.velocity * (Distance - MOVE_DISTANCE), 26f, new Utils.TileActionAttempt(DelegateMethods.CastLight)); + } + + public override bool ShouldUpdatePosition() + { + return false; + } + + public override void CutTiles() + { + DelegateMethods.tilecut_0 = (TileCuttingContext)2; + Vector2 unit = Projectile.velocity; + Utils.PlotTileLine(Projectile.Center, Projectile.Center + unit * Distance, (Projectile.width + 16) * Projectile.scale, new Utils.TileActionAttempt(DelegateMethods.CutTiles)); + } +} diff --git a/Projectiles/Lasers/GoldenBeam.png b/Projectiles/Lasers/GoldenBeam.png new file mode 100644 index 0000000000000000000000000000000000000000..fbd544208cc1923da9a41b433d87584d2e17e9ec GIT binary patch literal 894 zcmV-^1A+XBP)Px#1ZP1_K>z@;j|==^1poj5Bv4FLMF0Q*1_TdIR9uFHg3M|ZwNwDU)yngN8(zWM zcGL3a`~Uy{{}=BAApigZ_(?=TRA@u(nLlV0K@`Ttf{kbq4r39;BF0w2B?K|15dWYu-|iPK z@A9&1ip*Tx9}M4aal7-~d-G;yXM-1!O$|+dg3A^8@oPTPGZTTXIW@hbGxnVK+1v>u zp^T0^h05Q{f5N_F>5M(+eP??MRC09sPH^QjGdl;(k2FC`xp^q>>D)cXgibs2St#jv zk`Jzy@}cq_O6SCV$I|KjxvkJJ248kTrE_N-*Sxsfdw@oa(`vWrZRus3#*lXgP2x_B zIqr5er=a`Oo1r~NUO+W>mCqIExzraZ`PO#`>TZnxm26@X%{Z-gyJhegnudMH=D#=1 z#Deiy2|8_U=|E%ln~J7YwQB5VHFhY5$DA6jJtX!GlpHOBqamO*o^Vs=~ zxc}Po3~J(NxHk3?D#tU&F&&?N=c`DF-d{Q{cA z)O1tf`*Np!!tK%52{}{)_#KhDei}jN=n#kI^TD0fdo1NGrdHSO57PWbp$ZsIr zEz0Lxa~$k){V($%$FJ#rk0qK@!g;$8oJW-dr@hVo^Y~QzF_vHE31hr){S#DDy?Zb) z2TtAF3nl%t{z}GrjBB!*u^@7lN#tsiFb4{cGEnK%{x}YFvBE?>X_Mob@LYo9xI8fh zb=NVo`)zwa^y2R!=xQq$&zI%;+C9hGNgL5B*Yu_B&>7_vmDqPor1QgVyP;u~E9$v1 zao2I player.position.X) ? 1 : (-1); + Projectile.netUpdate = true; + } + Projectile.position = player.Center + Projectile.velocity * MOVE_DISTANCE; + Projectile.timeLeft = 2; + int dir = Projectile.direction; + player.ChangeDir(dir); + player.heldProj = Projectile.whoAmI; + player.itemTime = 2; + player.itemAnimation = 2; + player.itemRotation = (float)Math.Atan2(Projectile.velocity.Y * dir, Projectile.velocity.X * dir); + if (!player.channel) + { + Projectile.Kill(); + } + else + { + if (Main.time % 10.0 < 1.0 && !player.CheckMana(player.inventory[player.selectedItem].mana, true, false)) + { + Projectile.Kill(); + } + Vector2 offset = Projectile.velocity; + offset *= 40f; + Vector2 pos = player.Center + offset - new Vector2(10f, 10f); + if (Charge < MAX_CHARGE) + { + Charge++; + } + int chargeFact = (int)(Charge / 20f); + Vector2 dustVelocity = Vector2.UnitX * 18f; + dustVelocity = Utils.RotatedBy(dustVelocity, (double)(Projectile.rotation - 1.57f), default); + Vector2 spawnPos = Projectile.Center + dustVelocity; + for (int j = 0; j < chargeFact + 1; j++) + { + Vector2 spawn = spawnPos + Utils.ToRotationVector2((float)Main.rand.NextDouble() * 6.28f) * (12f - chargeFact * 2); + Dust obj = Main.dust[Dust.NewDust(pos, 20, 20, DustID.YellowTorch, Projectile.velocity.X / 2f, Projectile.velocity.Y / 2f, 0, default, 1f)]; + obj.velocity = Vector2.Normalize(spawnPos - spawn) * 1.5f * (10f - chargeFact * 2f) / 10f; + obj.noGravity = true; + obj.scale = Main.rand.Next(10, 20) * 0.05f; + } + } + if (Charge < MAX_CHARGE) + { + return; + } + Vector2 start = player.Center; + _ = Projectile.velocity * -1f; + for (Distance = MOVE_DISTANCE; Distance <= 2200f; Distance += 5f) + { + start = player.Center + Projectile.velocity * Distance; + if (!Collision.CanHit(player.Center, 1, 1, start, 1, 1)) + { + Distance -= 5f; + break; + } + } + if (Projectile.soundDelay <= 0) + { + SoundEngine.PlaySound(SoundID.Item15, Projectile.Center); + Projectile.soundDelay = 40; + } + for (int i = 0; i < 2; i++) + { + float num1 = Utils.ToRotation(Projectile.velocity) + (Main.rand.NextBool(2) ? (-1f) : 1f) * 1.57f; + float num2 = (float)(Main.rand.NextDouble() * 0.800000011920929 + 1.0); + //new Vector2((float)Math.Cos(num1) * num2, (float)Math.Sin(num1) * num2); + Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + } + DelegateMethods.v3_1 = new Vector3(0.8f, 0.8f, 1f); + Utils.PlotTileLine(Projectile.Center, Projectile.Center + Projectile.velocity * (Distance - MOVE_DISTANCE), 26f, new Utils.TileActionAttempt(DelegateMethods.CastLight)); + } + + public override bool ShouldUpdatePosition() + { + return false; + } + + public override void CutTiles() + { + DelegateMethods.tilecut_0 = (TileCuttingContext)2; + Vector2 unit = Projectile.velocity; + Utils.PlotTileLine(Projectile.Center, Projectile.Center + unit * Distance, (Projectile.width + 16) * Projectile.scale, new Utils.TileActionAttempt(DelegateMethods.CutTiles)); + } +} diff --git a/Projectiles/Lasers/HellfireBeamProj.png b/Projectiles/Lasers/HellfireBeamProj.png new file mode 100644 index 0000000000000000000000000000000000000000..df9b43c656eca833d724fa69e87aa19d938c2df6 GIT binary patch literal 819 zcmV-31I+x1P)Px#1ZP1_K>z@;j|==^1poj5Bv4FLMF0Q*1_TdOEH-;BFAE155DFu!EG!WVCL|V2 zJSKn2Mn?aKox2;xasU7Vtw}^dRA@u(nZHX_VHn5nO+At(2}+a@rD5hKI66f^v;?h9 zEj82-4GsMT4J|D-*wPd@w6ugnghNw^LPP1rOad!OxKiEdrrbEsc|YNO^6fp>q4OL$ zACT|4!#%#=`#kUSyg$mNltk?Z8}9L+)HgR$y>p+_|IS~d!x^Vgc0p8s zU;h%>JJ!w^IiE+$KSee77T4TULPuMdXs!N5v@7Zt1LHMT_I>T=yZHB;aG zDvEQk?^rv%y>?tQ#QOI|QSIEWW3ur2i36fjpO1>d;ofog)Xb;qtf+Q;emMEQp5OKy z|JtgFM(sVKecdNTLyqqpdM^rB-u)1@ALF!+Z$wYrQ!|$<>!NnE8gR}?eU5Q@Y+yk2 z(tISEpLq=3okzqm;CON{aRk0frX7cx~O;FuMNx$e~RKaOKbJhu~Pd;AygseJpY?bwa6 z?#IA<*5rQ$Qe^es&*~z^xsP!{K|w+O_|q}yN}#*RZt=Z0yMD}w^zDnUAM3r7?o__L zlYW2pjybhGJCv-WpH)7H`c@!2_2d}V+aEWQUxX8S-p7i>j$=jyIG&!^`Ro#hKn~2U zOp1cOo3NAB!~#NlC*N6!j-5ZPQEI)ueSz#9gLYnau?khLwD(P5*YQJl3acyExtGnirjS3!pevcK;XZt| xS!2&J=$LC*u|UWv*mVpz4-s+-896SMegiC)=sS!fac=+s002ovPDHLkV1h=ahwA_U literal 0 HcmV?d00001 diff --git a/Projectiles/Lasers/RainbowBeam.cs b/Projectiles/Lasers/RainbowBeam.cs new file mode 100644 index 0000000..ae480f7 --- /dev/null +++ b/Projectiles/Lasers/RainbowBeam.cs @@ -0,0 +1,192 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Terraria; +using Terraria.Audio; +using Terraria.Enums; +using Terraria.GameContent; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.Lasers; + +public class RainbowBeam : ModProjectile +{ + private const int MAX_CHARGE = 50; + + private const float MOVE_DISTANCE = 60f; + + public float Distance + { + get + { + return Projectile.ai[0]; + } + set + { + Projectile.ai[0] = value; + } + } + + public float Charge + { + get + { + return Projectile.localAI[0]; + } + set + { + Projectile.localAI[0] = value; + } + } + + public override void SetDefaults() + { + Projectile.width = 10; + Projectile.height = 10; + Projectile.friendly = true; + Projectile.penetrate = -1; + Projectile.tileCollide = false; + Projectile.hide = true; + } + + public override bool PreDraw(ref Color lightColor) + { + if (Charge == MAX_CHARGE) + { + Vector2 unit = Projectile.velocity; + DrawLaser(TextureAssets.Projectile[Projectile.type].Value, Main.player[Projectile.owner].Center, unit, 10f, Projectile.damage, -1.57f, 1f, 1000f, Color.White, 60); + } + return false; + } + + public void DrawLaser(Texture2D texture, Vector2 start, Vector2 unit, float step, int damage, float rotation = 0f, float scale = 1f, float maxDist = 2000f, Color color = default, int transDist = 50) + { + float r = Utils.ToRotation(unit) + rotation; + for (float i = transDist; i <= Distance; i += step) + { + Color c = Color.White; + Vector2 origin = start + i * unit; + Main.EntitySpriteDraw(texture, origin - Main.screenPosition, new Rectangle(0, 26, 28, 26), (i < transDist) ? Color.Transparent : c, r, new Vector2(14f, 13f), scale, SpriteEffects.None, 0); + } + Main.EntitySpriteDraw(texture, start + unit * (transDist - step) - Main.screenPosition, new Rectangle(0, 0, 28, 26), Color.White, r, new Vector2(14f, 13f), scale, SpriteEffects.None, 0); + Main.EntitySpriteDraw(texture, start + (Distance + step) * unit - Main.screenPosition, new Rectangle(0, 52, 28, 26), Color.White, r, new Vector2(14f, 13f), scale, SpriteEffects.None, 0); + } + + public override bool? Colliding(Rectangle projHitbox, Rectangle targetHitbox) + { + if (Charge == MAX_CHARGE) + { + Player p = Main.player[Projectile.owner]; + Vector2 unit = Projectile.velocity; + float point = 0f; + if (Collision.CheckAABBvLineCollision(Utils.TopLeft(targetHitbox), Utils.Size(targetHitbox), p.Center, p.Center + unit * Distance, 22f, ref point)) + { + return true; + } + } + return false; + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + target.immune[Projectile.owner] = 3; + target.AddBuff(72, 180, false); + target.AddBuff(ModContent.BuffType(), 120, false); + } + + public override void AI() + { + Vector2 mousePos = Main.MouseWorld; + Player player = Main.player[Projectile.owner]; + if (Projectile.owner == Main.myPlayer) + { + Vector2 diff = mousePos - player.Center; + diff.Normalize(); + Projectile.velocity = diff; + Projectile.direction = ((Main.MouseWorld.X > player.position.X) ? 1 : (-1)); + Projectile.netUpdate = true; + } + Projectile.position = player.Center + Projectile.velocity * MOVE_DISTANCE; + Projectile.timeLeft = 2; + int dir = Projectile.direction; + player.ChangeDir(dir); + player.heldProj = Projectile.whoAmI; + player.itemTime = 2; + player.itemAnimation = 2; + player.itemRotation = (float)Math.Atan2(Projectile.velocity.Y * dir, Projectile.velocity.X * dir); + if (!player.channel) + { + Projectile.Kill(); + } + else + { + if (Main.time % 10.0 < 1.0 && !player.CheckMana(player.inventory[player.selectedItem].mana, true, false)) + { + Projectile.Kill(); + } + Vector2 offset = Projectile.velocity; + offset *= 40f; + Vector2 pos = player.Center + offset - new Vector2(10f, 10f); + if (Charge < MAX_CHARGE) + { + Charge++; + } + int chargeFact = (int)(Charge / 20f); + Vector2 dustVelocity = Vector2.UnitX * 18f; + dustVelocity = Utils.RotatedBy(dustVelocity, (double)(Projectile.rotation - 1.57f), default); + Vector2 spawnPos = Projectile.Center + dustVelocity; + for (int j = 0; j < chargeFact + 1; j++) + { + Vector2 spawn = spawnPos + Utils.ToRotationVector2((float)Main.rand.NextDouble() * 6.28f) * (12f - chargeFact * 2); + Dust obj = Main.dust[Dust.NewDust(pos, 20, 20, DustID.YellowTorch, Projectile.velocity.X / 2f, Projectile.velocity.Y / 2f, 0, default, 1f)]; + obj.velocity = Vector2.Normalize(spawnPos - spawn) * 1.5f * (10f - chargeFact * 2f) / 10f; + obj.noGravity = true; + obj.scale = Main.rand.Next(10, 20) * 0.05f; + } + } + if (Charge < MAX_CHARGE) + { + return; + } + Vector2 start = player.Center; + _ = Projectile.velocity * -1f; + for (Distance = MOVE_DISTANCE; Distance <= 2200f; Distance += 5f) + { + start = player.Center + Projectile.velocity * Distance; + if (!Collision.CanHit(player.Center, 1, 1, start, 1, 1)) + { + Distance -= 5f; + break; + } + } + if (Projectile.soundDelay <= 0) + { + SoundEngine.PlaySound(SoundID.Item15, Projectile.Center); + Projectile.soundDelay = 40; + } + for (int i = 0; i < 2; i++) + { + float num1 = Utils.ToRotation(Projectile.velocity) + ((Main.rand.NextBool(2)) ? (-1f) : 1f) * 1.57f; + float num2 = (float)(Main.rand.NextDouble() * 0.800000011920929 + 1.0); + //new Vector2((float)Math.Cos(num1) * num2, (float)Math.Sin(num1) * num2); + Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + } + DelegateMethods.v3_1 = new Vector3(0.8f, 0.8f, 1f); + Utils.PlotTileLine(Projectile.Center, Projectile.Center + Projectile.velocity * (Distance - MOVE_DISTANCE), 26f, new Utils.TileActionAttempt(DelegateMethods.CastLight)); + } + + public override bool ShouldUpdatePosition() + { + return false; + } + + public override void CutTiles() + { + DelegateMethods.tilecut_0 = (TileCuttingContext)2; + Vector2 unit = Projectile.velocity; + Utils.PlotTileLine(Projectile.Center, Projectile.Center + unit * Distance, (Projectile.width + 16) * Projectile.scale, new Utils.TileActionAttempt(DelegateMethods.CutTiles)); + } +} diff --git a/Projectiles/Lasers/RainbowBeam.png b/Projectiles/Lasers/RainbowBeam.png new file mode 100644 index 0000000000000000000000000000000000000000..450f65249a27429ca2107fbd5da9cfb78d6fe501 GIT binary patch literal 1049 zcmV+!1m^pRP)Px#1ZP1_K>z@;j|==^1poj5jZjQfMF0Q*1_Tdu9v;ML7L;s9P?1tYdPOlFG=@kI zxMLMrqFZZ?Y$uSTAbN^GCqq6E5J?jgXg3TtV>nNcQ7M?LT8orzLvvg>VO|*-ST71I zO)D5!WFml(cxHQ|Dk_O1BPBs46GTmrT3Y9O8p3E65IRAwe^XwoU@96cag=h+fr0q7 zccRmyfydLVk*_ZIXLA4m11d>GK~!i%?U~(6(@_}5ms`5FWX;7)GpFfDnj_#X%ndDTsCbfbZWv|dz7ysN&o0cnxj8(**{tCqPSy7i{oPfYu^2c<|K|a3)40 zwB}v_Cl={FJr)|Naen|*&$0V-9@?`j`$6wy6wI^dgY`@OV5qDNY%1&pM}w01-c{nOG+FgzUw`}-VVVqp%< z{y?jKEHDYG=a?hco@MH3^%0u8s)7vgZtWS+F_#5)nS5YumPRK3!80(tLL-p5GzO{{ zxmeN)29EQ?&8rY0~q-VVwl*J$SysJ>&~&$7s6_gw<7 zMkzwcB3GpMC8&&JUD}tvkF~##rH=VTAL22Eu1B^&Kb6K$;I702glF z2W1&ZPnbqbeaFc%keahqV6^=Pxb-s-eN}6JRqJ!CnK{;_OP8*#r(f}tW3(t=Q6>1d zXQ!c#kDw@y*{SQ1sbyinN)iWvyMN36!A z-f^QRfd{+H)R+IK?&PYbI#I}20&2hR#1X7;ih8X5x)Vn*SBxrco2@%(=j^o6x|4Qp zeY8_|VzF~s&Xp{3an2<=WvSc?OBT8Kdo6RyQr9tyohMT=r>qn?HW+>Yu4a+V T0s*cB00000NkvXXu0mjfoh9Z| literal 0 HcmV?d00001 diff --git a/Projectiles/Lasers/VengeanceBeam.cs b/Projectiles/Lasers/VengeanceBeam.cs new file mode 100644 index 0000000..9ba8e4e --- /dev/null +++ b/Projectiles/Lasers/VengeanceBeam.cs @@ -0,0 +1,191 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Terraria; +using Terraria.Audio; +using Terraria.Enums; +using Terraria.GameContent; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.Lasers; + +public class VengeanceBeam : ModProjectile +{ + private const int MAX_CHARGE = 50; + + private const float MOVE_DISTANCE = 60f; + + public float Distance + { + get + { + return Projectile.ai[0]; + } + set + { + Projectile.ai[0] = value; + } + } + + public float Charge + { + get + { + return Projectile.localAI[0]; + } + set + { + Projectile.localAI[0] = value; + } + } + + public override void SetDefaults() + { + Projectile.width = 10; + Projectile.height = 10; + Projectile.friendly = true; + Projectile.penetrate = -1; + Projectile.tileCollide = false; + Projectile.hide = true; + } + + public override bool PreDraw(ref Color lightColor) + { + if (Charge == MAX_CHARGE) + { + Vector2 unit = Projectile.velocity; + DrawLaser(TextureAssets.Projectile[Projectile.type].Value, Main.player[Projectile.owner].Center, unit, 10f, Projectile.damage, -1.57f, 1f, 1000f, Color.White, 60); + } + return false; + } + + public void DrawLaser(Texture2D texture, Vector2 start, Vector2 unit, float step, int damage, float rotation = 0f, float scale = 1f, float maxDist = 2000f, Color color = default, int transDist = 50) + { + Vector2 origin = start; + float r = Utils.ToRotation(unit) + rotation; + for (float i = transDist; i <= Distance; i += step) + { + Color c = Color.White; + origin = start + i * unit; + Main.EntitySpriteDraw(texture, origin - Main.screenPosition, new Rectangle(0, 26, 28, 26), (i < transDist) ? Color.Transparent : c, r, new Vector2(14f, 13f), scale, SpriteEffects.None, 0); + } + Main.EntitySpriteDraw(texture, start + unit * (transDist - step) - Main.screenPosition, new Rectangle(0, 0, 28, 26), Color.White, r, new Vector2(14f, 13f), scale, SpriteEffects.None, 0); + Main.EntitySpriteDraw(texture, start + (Distance + step) * unit - Main.screenPosition, new Rectangle(0, 52, 28, 26), Color.White, r, new Vector2(14f, 13f), scale, SpriteEffects.None, 0); + } + + public override bool? Colliding(Rectangle projHitbox, Rectangle targetHitbox) + { + if (Charge == MAX_CHARGE) + { + Player p = Main.player[Projectile.owner]; + Vector2 unit = Projectile.velocity; + float point = 0f; + if (Collision.CheckAABBvLineCollision(Utils.TopLeft(targetHitbox), Utils.Size(targetHitbox), p.Center, p.Center + unit * Distance, 22f, ref point)) + { + return true; + } + } + return false; + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + target.immune[Projectile.owner] = 4; + target.AddBuff(ModContent.BuffType(), 180, false); + } + + public override void AI() + { + Vector2 mousePos = Main.MouseWorld; + Player player = Main.player[Projectile.owner]; + if (Projectile.owner == Main.myPlayer) + { + Vector2 diff = mousePos - player.Center; + diff.Normalize(); + Projectile.velocity = diff; + Projectile.direction = ((Main.MouseWorld.X > player.position.X) ? 1 : (-1)); + Projectile.netUpdate = true; + } + Projectile.position = player.Center + Projectile.velocity * MOVE_DISTANCE; + Projectile.timeLeft = 2; + int dir = Projectile.direction; + player.ChangeDir(dir); + player.heldProj = Projectile.whoAmI; + player.itemTime = 2; + player.itemAnimation = 2; + player.itemRotation = (float)Math.Atan2(Projectile.velocity.Y * dir, Projectile.velocity.X * dir); + if (!player.channel) + { + Projectile.Kill(); + } + else + { + if (Main.time % 10.0 < 1.0 && !player.CheckMana(player.inventory[player.selectedItem].mana, true, false)) + { + Projectile.Kill(); + } + Vector2 offset = Projectile.velocity; + offset *= 40f; + Vector2 pos = player.Center + offset - new Vector2(10f, 10f); + if (Charge < MAX_CHARGE) + { + Charge++; + } + int chargeFact = (int)(Charge / 20f); + Vector2 dustVelocity = Vector2.UnitX * 18f; + dustVelocity = Utils.RotatedBy(dustVelocity, (double)(Projectile.rotation - 1.57f), default); + Vector2 spawnPos = Projectile.Center + dustVelocity; + for (int j = 0; j < chargeFact + 1; j++) + { + Vector2 spawn = spawnPos + Utils.ToRotationVector2((float)Main.rand.NextDouble() * 6.28f) * (12f - chargeFact * 2); + Dust obj = Main.dust[Dust.NewDust(pos, 20, 20, DustID.YellowTorch, Projectile.velocity.X / 2f, Projectile.velocity.Y / 2f, 0, default, 1f)]; + obj.velocity = Vector2.Normalize(spawnPos - spawn) * 1.5f * (10f - chargeFact * 2f) / 10f; + obj.noGravity = true; + obj.scale = Main.rand.Next(10, 20) * 0.05f; + } + } + if (Charge < MAX_CHARGE) + { + return; + } + Vector2 start = player.Center; + _ = Projectile.velocity * -1f; + for (Distance = MOVE_DISTANCE; Distance <= 2200f; Distance += 5f) + { + start = player.Center + Projectile.velocity * Distance; + if (!Collision.CanHit(player.Center, 1, 1, start, 1, 1)) + { + Distance -= 5f; + break; + } + } + if (Projectile.soundDelay <= 0) + { + SoundEngine.PlaySound(SoundID.Item15, Projectile.Center); + Projectile.soundDelay = 40; + } + for (int i = 0; i < 2; i++) + { + float num1 = Utils.ToRotation(Projectile.velocity) + ((Main.rand.NextBool(2)) ? (-1f) : 1f) * 1.57f; + float num2 = (float)(Main.rand.NextDouble() * 0.800000011920929 + 1.0); + new Vector2((float)Math.Cos(num1) * num2, (float)Math.Sin(num1) * num2); + Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + } + DelegateMethods.v3_1 = new Vector3(0.8f, 0.8f, 1f); + Utils.PlotTileLine(Projectile.Center, Projectile.Center + Projectile.velocity * (Distance - MOVE_DISTANCE), 26f, new Utils.TileActionAttempt(DelegateMethods.CastLight)); + } + + public override bool ShouldUpdatePosition() + { + return false; + } + + public override void CutTiles() + { + DelegateMethods.tilecut_0 = (TileCuttingContext)2; + Vector2 unit = Projectile.velocity; + Utils.PlotTileLine(Projectile.Center, Projectile.Center + unit * Distance, (Projectile.width + 16) * Projectile.scale, new Utils.TileActionAttempt(DelegateMethods.CutTiles)); + } +} diff --git a/Projectiles/Lasers/VengeanceBeam.png b/Projectiles/Lasers/VengeanceBeam.png new file mode 100644 index 0000000000000000000000000000000000000000..98c332029e5d7bf0570a1d362ce172c704d1a9fd GIT binary patch literal 877 zcmV-z1CsoSP)Px#1ZP1_K>z@;j|==^1poj5Bv4FLMF0Q*1_TdIR9uFHg3M|ZwNwDU)yngN8~V;6 z|NCO*`~Uy{{}|@BB>(^d=Sf6CRA@u(nLlV0K^%oQ;gYK~%^Ckz7SSd#O(cj2HWH#j z4hswI1QkWo*x1C7#>ysQ5mBrx1m%K?1e-J>fhfkL(JQPZXh;)N$mN2{yxkY>o*8G2 z;LL^nV0n9l?C!U-``h``6s4p!*Y-2n{Ua-@OR0|8oaBG!x2vNWubjX822PrAGBN%P zssFEc!oRVa@yhwTx4Q$W9Gf3a_F}#+EFz2JZOGEV5|Y1Z9-c9wX>YL)NqU|Xlf8OA zeyJd7PQo`<)5De1NEemoD@ZjD*O*V?`|c6swf+Z4($aY}*{i2IH;Gi^k%jn<>H8g? z@%Huta^H?TGJm2K=`wzme}p98ZyZDh)5iaN;>q$wY{s{=((A_GMrX<`p{&x8VQrlABXRTak zX5+tW#UkMu^DFhRD>l)mnucVt^Aqwzc^WxYnm`_y8A2X^Tz@Wa#u=L*=XM6uWQjeV#ZWD zuBs(GMXJlk#G#+cc0`@$J_82yb?YQ1*b(79{aF)h3v!{J6qH`b| zE$Z?88*`p|EINxEYLBm2jmdhw5d**3v-g&foT2CO*y{|(m^1T)#>>|~BNgqH@ELeJ z_!LQWZ6chfnr%UJBtd9uo72=b4tEtM?Mj<%PLt~re2=GQ%E)kyb*1gfk1^y%D;Gy2 zI%*8h*tXI}Y?W(%a2wLL`a=906E#25wHxWGTxr*vh&N;BiEZQEEjRaIGp4lt8^UR0 z;;P{`Y_(Yl&zR^_uCT{KT&5&kV?uKmE>q&kIEsD&1rOXo0{K$P00000NkvXXu0mjf DdM&7V literal 0 HcmV?d00001 diff --git a/Projectiles/Lasers/lasertemplate.png b/Projectiles/Lasers/lasertemplate.png new file mode 100644 index 0000000000000000000000000000000000000000..e4c74afb05ffbb927931921b81e37b2f0e80c240 GIT binary patch literal 1060 zcmV+<1l#+GP)Px#1ZP1_K>z@;j|==^1poj5giuUWMF0Q*1_TexY83N=8~V;6=KKHu|Nn-Bg8u*j z8W1=j6htHzOup61|7!pL`(gkl{{a6X|7rjz8B`NQO+Y6@TsUE(Dk{x^f#-V~!e|yY zV>l~KD={84UKtsQBO~~=cV4StPmoay$c_5q$0`ZyG9 zkmV&WQHQ;G3Zh6*DmnzwA%cpEAPUP+qB=-aE+|>1)|#!K&CcrP{GWM7nsJAq**&=L zA76jI3(mXy{@?#I&yFOtMC8zzP^GzYqAFkcQZX-Goerk&PXmMAKG5v~B;{QZ{h>*I z5C$(hPk?^^1uz^5;q%O29M_+pVD40ZEp_Qm^6utkt=HyRpv##7vH~Ob!J!DC>tpY0 z@bK0qFgW=ElzqQIN2|lMmeI+HvtL1$TRILZJi(!=NpgLSB8Gj9{7dgDGHHWMyK8$+EP7XwNgEY&cTdl?f&6WqmAa8~!QVnS zKe4{8FV?#zTFG5q?RxGaM>HoFSu1--HRj$g(_levA-H?I8}!suM)SjTssf{Qe3}(n zd+PfH7d7z0+^Y;Aa*wVQSl!wXj!dv&i z&)!E`8I50-<_4=C> za3Pc0eNyYPlG91McXzSgHD37_)m0VmuHF5lRqraQtBo@4uI>G#MeiyyX`}SrO{7F7 eg@j^AlKudPQi6r`bc~Du0000(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + SoundEngine.PlaySound(SoundID.DD2_BetsyFireballShot, Projectile.position); + } +} diff --git a/Projectiles/LightBlasts/GoldenLightBlast.png b/Projectiles/LightBlasts/GoldenLightBlast.png new file mode 100644 index 0000000000000000000000000000000000000000..5f8f140f0d67e37d137a80225c7e936ba62c681b GIT binary patch literal 430 zcmV;f0a5;mP)Px#1ZP1_K>z@;j|==^1poj56;Mo6MF0Q*KPwp8)L!!PcJuS;#Dz(va6X<$nOAveiVPqG__}_nYr$i6GYL1Q!_PhnAc3AnHo1#Z%78PNP}@QgIyZ?hVscULi>ijw>%#< zd7#qwIP>z{g`Bg^h0~tlq*LdCnpfro(ileI9=(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + SoundEngine.PlaySound(SoundID.DD2_BetsyFireballShot, Projectile.position); + } +} diff --git a/Projectiles/LightBlasts/LightBlast.png b/Projectiles/LightBlasts/LightBlast.png new file mode 100644 index 0000000000000000000000000000000000000000..7fd486e960ceba005db36d473c25455964fbd4f7 GIT binary patch literal 428 zcmV;d0aN~oP)Px#1ZP1_K>z@;j|==^1poj56;Mo6MF0Q*8!tFrqrZ>g;phMVLv@KZUvS7!z=r?; z0X0cPK~zXfy_T^K0YMOkk6tU`5`{{IC`6@DC?zT$MB@oG9)wDwR47!U5L7CK1c}xI zkeS>smtowI9bdBf-R5rZGrM}I*p zY;#ApSmlh%dAH)+&nBF9hJLxm9jSDN6G&qif!p=MdD<*F-5Un^e3ntmxZod{Jt?Xo zY9nhZ`!Ty_Z=1*g$tc{Sus5VxqeeB7^&`-a^CWh&47Bwq*BjpO=6i}dAZkSG3~Mb6 z?LBhOCjMtAp<1C{pZMP__oib$9=1B1@*4){nSa~-JRq4#JHol43e^a8`Ub~_p7#Lp Wb(?uMN2LM)0000(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } + SoundEngine.PlaySound(SoundID.DD2_BetsyFireballShot, Projectile.position); + } +} diff --git a/Projectiles/LightBlasts/RainbowLightBlast.png b/Projectiles/LightBlasts/RainbowLightBlast.png new file mode 100644 index 0000000000000000000000000000000000000000..3ce14d785bdbfd4f9b934cefd82da002bbd17e32 GIT binary patch literal 646 zcmV;10(t$3P)Px#1ZP1_K>z@;j|==^1poj5W>8F2MF0Q*5ex>ioB)l?05i-p0JD3uP5{iZ0I>f6 zK>t7h%#8q?v$FsI%vu2d-v9vrumG~m08X=j004Wl04=jE062hI004kE0Dy1+0DxEk zaDV_OSy+GoAb=oQP5=N|K0a9h7FiacgarHm00F*9L_t(YOU0H=O9D|8hEEy;f{SKj z*eVLLg+VZzmLUXfTD7vZd;1CPYvFHj;m#irL9}c$5J=PnN`yEtpc7~k6Mfus&b=<~ z)g+j)2Oi$}aP;NgnL94Q4D77+EjOnUj-sj8rewy3@hhrXy%y2_(=G)xz@c>gLrS}R zPN_FduHmFviJRps6wp25tie9zjVlk_ZBf{#$CRpR>(jpQ5pBUaIN*`Yfm=aF1PQG!(X0Xq=GghqZufZsL4?oNok;Y@Ih g)HwZxm>UB80K2ogOS^%ItpET307*qoM6N<$f;Pn;5C8xG literal 0 HcmV?d00001 diff --git a/Projectiles/LunarBolt.cs b/Projectiles/LunarBolt.cs new file mode 100644 index 0000000..b6ba23a --- /dev/null +++ b/Projectiles/LunarBolt.cs @@ -0,0 +1,43 @@ +using Terraria; +using Terraria.Audio; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles; + +public class LunarBolt : ModProjectile +{ + public override void SetDefaults() + { + Projectile.width = 16; + Projectile.height = 16; + Projectile.friendly = true; + Projectile.tileCollide = true; + Projectile.ignoreWater = true; + + Projectile.timeLeft = 600; + Projectile.light = 1f; + Projectile.penetrate = 1; + AIType = 1; + Projectile.aiStyle = 1; + } + + public override void AI() + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj = Main.dust[dust]; + obj.velocity /= 2f; + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + Dust.NewDust(Projectile.position + Projectile.velocity, Projectile.width, Projectile.height, ModContent.DustType(), Projectile.oldVelocity.X * 0.5f, Projectile.oldVelocity.Y * 0.5f, 0, default, 1f); + } + SoundEngine.PlaySound(SoundID.Item1, Projectile.position); + } +} diff --git a/Projectiles/LunarBolt.png b/Projectiles/LunarBolt.png new file mode 100644 index 0000000000000000000000000000000000000000..8d9a6c0d8489bf1c16c21b99f3f221bd257820e5 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^B0#Ld!3HEdKT9nDQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`g#vs+T!FNPRcP+h8`u8-GA^5tw*IKX)#WFFqWe5u978<3lT#EJOx8I4 zcb=J0@c2g7o~juOOs+Ec-A>Rej=jtC?C^ni7orS$PcPk4uDI*8(b6dgOn7|i%lLgB z7iqqY={TKgAbyZxm&GpcmG7M9upOJ`&zxM+;4Q!f_7qh~c` zO31TaIGXs!`L6H*leaM^a+7(*8XDKT_c=x0VAT5>Qm)87FVdQ&MBb@06lzh AAOHXW literal 0 HcmV?d00001 diff --git a/Projectiles/Minions/GoddessMinion.cs b/Projectiles/Minions/GoddessMinion.cs new file mode 100644 index 0000000..0b7ce47 --- /dev/null +++ b/Projectiles/Minions/GoddessMinion.cs @@ -0,0 +1,74 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.Minions; + +public class GoddessMinion : Minion +{ + public override void SetDefaults() + { + Projectile.netImportant = true; + Projectile.CloneDefaults(388); + AIType = 388; + Projectile.width = 50; + Projectile.height = 50; + Main.projFrames[Projectile.type] = 8; + Projectile.friendly = true; + Projectile.minion = true; + Projectile.minionSlots = 1f; + Projectile.penetrate = -1; + Projectile.timeLeft = 18000; + Projectile.ignoreWater = true; + Projectile.tileCollide = false; + ProjectileID.Sets.MinionTargettingFeature[Projectile.type] = true; + AnimateProjectile(); + } + + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Goddess' Summoner"); + } + + public override bool OnTileCollide(Vector2 oldVelocity) + { + if (Projectile.velocity.X != oldVelocity.X) + { + Projectile.velocity.X = oldVelocity.X; + } + if (Projectile.velocity.Y != oldVelocity.Y) + { + Projectile.velocity.Y = oldVelocity.Y; + } + return false; + } + + public override void CheckActive() + { + Player obj = Main.player[Projectile.owner]; + FabuPlayer modPlayer = obj.GetModPlayer(); + if (obj.dead) + { + modPlayer.goddessMinion = false; + } + if (modPlayer.goddessMinion) + { + Projectile.timeLeft = 2; + } + } + + public void AnimateProjectile() + { + Projectile projectile = Projectile; + projectile.frameCounter++; + if (Projectile.frameCounter >= 2) + { + Projectile projectile2 = Projectile; + projectile2.frame++; + Projectile projectile3 = Projectile; + projectile3.frame %= 3; + Projectile.frameCounter = 0; + } + } +} diff --git a/Projectiles/Minions/GoddessMinion.png b/Projectiles/Minions/GoddessMinion.png new file mode 100644 index 0000000000000000000000000000000000000000..940f4e2945af29343b5aaf32ac32fc82fc22ee88 GIT binary patch literal 14318 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 + if (obj.dead) + { + modPlayer.foxPet = false; + } + if (modPlayer.foxPet) + { + Projectile.timeLeft = 2; + } + } +} diff --git a/Projectiles/Pets/FoxPet.png b/Projectiles/Pets/FoxPet.png new file mode 100644 index 0000000000000000000000000000000000000000..9de7f33e5158a1cede009b32241c007df6759a97 GIT binary patch literal 3327 zcmX9>eLRzEAK%Pov|bdaF(OJ79iuHy1PBD0fJA`Vwi%5)FhE&nTpS^lT{<7YLOIysqyq#}leuX%5DwOw?!>dsVAN8B zwt8vCn*MN)XtuuoWh(yI(hZg#1cJJD!pY%mwEz4a+p0Y-nkkobYfS=-u#U*xT3Ord z8L2N`8#y^St-|*>UR^~R7#Q5hEznm#Hl`e?y8E~Aq_3|1ABsapFGXISexfMw@FUw= zDq>4KM|0_o!KZCmg2u+KB}=NS&C|iH6Z1dX#IqFB>wkR+zK~KBYII?Eelxa0GqC-F zf850t#Z|rdxS4?O^LB$H(jjD%Pu59j{N*({bA54i?U%tp9;PKx-O4;^;gh7@OqS`t zc4_cP>kx9%QF*tXRm_LHQ>#MB1_`BpPy?KrMi=jU!#*0E# zejb6UydSsH^HdzGnQM9d0A*9ak%x-J5nu3{CfFO|FFuy{`){H;bLvGmU1ndskRpGb zMi(}u6P^e}e63?g4`wW;E1n4Fh1UDo;%8E1sS09Z>w5$zK01`uW|MhE5BKC{l1}cQ zATo*W+S{4dWT)q>yR*zUyOR_hyL1`k#vu0PRP0Whu^H+J|FqO4e%drY`h84ZukyH3 zh`m$dgZs9S>968}TkO33s=nW4fOqG&N9+%!5RC9z9X5?rnlN)E;Z?fA`O+CC2kWMF zQ}1jT`cAUvxQ^k#aDK=THs*>@8)G;Vb~31arhJZH4G^Q`?^cNEX^nA>Z~&=wgtPM8 zwGdFF45`IO@Be@9HF6%L5f>iJb z$!nQN!aa{OvTWDE7#h21PF-0ND(d6)f>695a3T`JpJLWdXyKusp8r!KZdV@Qo$&Rg zR3|m%!PwfJ*IF42g0m+X++|5|;cOUG5cSncUXZLf(n@qB>_|!Q_xNW&@8zzY2nyVa z!s=ZSObwu0OwzJ;pR=_8we;lV!KkD7V9!dxo;R_3>;BV+%C)o?{a*a4#jJ`5!_&9F z=CyG`Hql5$4?<9$K?!qd;eadS-+1Tf=IxN>*~;kH$Z3rMo`Y%4I95<DV_Mk`c{k?mUA-iJooI@Ll^G`A+I<-Q<(WQVp0$7%3mxD1xvrU8>1xY=pC? zoihM)9H|C|VIpn76dL87$Yn5Jof-OcEIHt>hSQet`l0Q3fepoX15|m-*4&KcJ@A@LrwXuXKkt zC6*mN<0Q#p-@oI_!K%v(NxFyGIv6SkEA_ScP~&iDq%6bopl&8rIf&Ye>l9dzlLyd= zFvD<)a^O+-2DpA}g3n7FfY~SaD1_0(k0x=FwdT^Gy^?EwXL-c|QjB5;xx%d9W75;uzHae0GDub=VMTM(R}HXPsHaXl(S|&elKw5}bYya5I0- zap-`^9j*N3I!B)fPCNQ-Z>yXQ+NcjHPpP|DGCEG0`h2{g2Agbx5%y~!rUPrI|6Iwn z21kQQzCo@|%PeC+ZHgn+^Y*i)d{~TK6<7T@l_xJXFSonJ#Y%aw

g0||Wgqn^iJ z+jF?q-?T$C@dR^IbEZ)xv$Mij&kx`TmhAY8Utd>am9)_B)fkTs|997in;YJ}oGS2o zW`&S>Uups-b=<3nHk)f-_wn8>GU6RNv0`tV=N)s#DNSA}1!g-xOhQ*mZviHg|dU3=K8OtIUG7K()ERrPNe6NX>-<$-q^Y00_sYz>T6t+H|^CKs(Uq&}r>6 z4W97nUG$~POpZR2_`=i!7zCOsgGMU$l(%Y@U#!|=EEZ_1R%t`4fODk4rSg5Jl~o91 z&B$kk$*l)M{1KKR!v4`p5Tr@AQ;rq74&MMaJe%80igGLG3b9Gm-)K?8+fme7Dc7O{ z2!7d>vh2aqVDK!;L%`O8;xega)(N5Dw8kG(2Q5UGY=EN#E)DDn>SnNtqa^wk#!ZB7 zDe_r!U0a4Wrs8hiGSBaA0HGGpQMD)f!C}xjCVjIyv1&S>_Emkap681$;|cCvx{NIW zZWrBLy!v}M`fox{EuYv4*gwdd$v4qHJQhu6+0(9Dzz28+0LV;eFLC5NHQM$^uP4x@ zqw4t5<6^A6D7p{5P4{XbOQUBlfooDbh;BB^xY^ZpmBxLkjSL?`VzOy56hhVQUnK5> z`Knr&eAT@9g~@%ujQ^7X6-I3Km|qqEDO*sRM=ox*>;P5f(TPrdy#06paV0MTkr|WT zW7y3Pui7(%PjM-!^olV+Z9+}?g-u$!0VZ|9_KP7;(h$NaH#+!82s}`0BKW4f)b-R? z8&CNBL(EnY&Tzq}hnQ%#wZ~I$&TlPJ6==G_-(*w7$-3hG9UpZ7lwJWIck#$O+z+V_EN=rGhZZ`aP1 zGKF*K?}pjozWq)MC4;;h({nbZ4RH38gW`)ATU8;I?E;iq~X*A3l#*7g<3yD?aPsXCrdLz z>jEkS^=y`IJANRYt8N;~Z7Ue@5B>o!2)MLA^eBQHl1x+huU*Y z8NL3%H|z8 zbUKhZo8?ApCT$q^J6=zzx!gCoJc_I+8JjTKu=+!Y(z35wawT%{*P=F^%3#5iJ{~lz z60D?@=5iC&rBXW$w~9ae^u<`1O0!Kpke+BE#6v^=3R*i=4LYZCf%n%l#K0K4oe9=< zt0T9>l9+FL)mZ3*09?}{51wQSQm9E`5EBj|%$l{qM@8D~14^IWazuznS!T tI>mt>QOs5ME!k|#!H-I9+JwRDuuF}N3)D)38t}6MIpKWDsnU^>^glfzDQ*A& literal 0 HcmV?d00001 diff --git a/Projectiles/Pets/MechanicalTooth.cs b/Projectiles/Pets/MechanicalTooth.cs new file mode 100644 index 0000000..4c1c248 --- /dev/null +++ b/Projectiles/Pets/MechanicalTooth.cs @@ -0,0 +1,42 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.Pets; + +public class MechanicalTooth : ModProjectile +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Mechanical Tooth"); + Main.projFrames[Projectile.type] = 4; + Main.projPet[Projectile.type] = true; + } + + public override void SetDefaults() + { + Projectile.width = 26; + Projectile.height = 20; + Projectile.CloneDefaults(380); + AIType = 380; + } + + public override bool PreAI() + { + Main.player[Projectile.owner].zephyrfish = false; + return true; + } + + public override void AI() + { + Player obj = Main.player[Projectile.owner]; + FabuPlayer modPlayer = obj.GetModPlayer(); + if (obj.dead) + { + modPlayer.kregPet = false; + } + if (modPlayer.kregPet) + { + Projectile.timeLeft = 2; + } + } +} diff --git a/Projectiles/Pets/MechanicalTooth.png b/Projectiles/Pets/MechanicalTooth.png new file mode 100644 index 0000000000000000000000000000000000000000..b6809d54ec1dcbfb698a7b99a7a1d4b8c549caae GIT binary patch literal 653 zcmV;80&@L{P)Px#1ZP1_K>z@;j|==^1poj55>QN3MF0Q*XlZUSFFVTQ=&!uQou8&tFn}EZ00J3F zL_t(&L+zPQD@0Kk#xKn$uoWu{JIO-v0W2)1d;l9nQWlD`P?Uv|2pbapu0GGd5rElHaYV+bw5YH!bM<%O z7y&ke0pN=3uV>($Zi9P=shLShRNQbXEZ=)q&j7f02*=3ew^NztBrV>J@<+}4Sqsde zYjxQO=d6Rt-+Rx%u&KULqfZsCN~>m6Nc+TxG2S!qS;$ZAe24Vr2>&_ldj@nr{Czg! z%Bycw?|TLYJp_yyy;Wz@+B4vcv%P14aa%{HB=C1KG-E3O9q>QUC7fx92BOEA?p%KF;`u$cgTqpUqcxO3!Mb?6yz nrM!;`N*)y00000NkvXXu0mjfB|$F2 literal 0 HcmV?d00001 diff --git a/Projectiles/Pets/PinkFoxPet.cs b/Projectiles/Pets/PinkFoxPet.cs new file mode 100644 index 0000000..09cb3d2 --- /dev/null +++ b/Projectiles/Pets/PinkFoxPet.cs @@ -0,0 +1,42 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.Pets; + +public class PinkFoxPet : ModProjectile +{ + public override void SetDefaults() + { + Projectile.CloneDefaults(111); + AIType = 111; + Main.projFrames[Projectile.type] = 8; + Projectile.width = 70; + Projectile.height = 48; + Main.projPet[Projectile.type] = true; + } + + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Pink Fox Pet"); + } + + public override bool PreAI() + { + Main.player[Projectile.owner].bunny = false; + return true; + } + + public override void AI() + { + Player obj = Main.player[Projectile.owner]; + FabuPlayer modPlayer = obj.GetModPlayer(); + if (obj.dead) + { + modPlayer.pinkFoxPet = false; + } + if (modPlayer.pinkFoxPet) + { + Projectile.timeLeft = 2; + } + } +} diff --git a/Projectiles/Pets/PinkFoxPet.png b/Projectiles/Pets/PinkFoxPet.png new file mode 100644 index 0000000000000000000000000000000000000000..51119d28ee9a778351a67bf74978564319918a41 GIT binary patch literal 3323 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 literal 0 HcmV?d00001 diff --git a/Projectiles/Pets/WindUpFabu.cs b/Projectiles/Pets/WindUpFabu.cs new file mode 100644 index 0000000..25278cc --- /dev/null +++ b/Projectiles/Pets/WindUpFabu.cs @@ -0,0 +1,42 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.Pets; + +public class WindUpFabu : ModProjectile +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Wind-Up Fabu"); + Main.projFrames[Projectile.type] = 3; + Main.projPet[Projectile.type] = true; + } + + public override void SetDefaults() + { + Projectile.CloneDefaults(112); + Projectile.width = 34; + Projectile.height = 34; + AIType = 112; + } + + public override bool PreAI() + { + Main.player[Projectile.owner].penguin = false; + return true; + } + + public override void AI() + { + Player obj = Main.player[Projectile.owner]; + FabuPlayer modPlayer = obj.GetModPlayer(); + if (obj.dead) + { + modPlayer.fabu = false; + } + if (modPlayer.fabu) + { + Projectile.timeLeft = 2; + } + } +} diff --git a/Projectiles/Pets/WindUpFabu.png b/Projectiles/Pets/WindUpFabu.png new file mode 100644 index 0000000000000000000000000000000000000000..3b8058aaf1946bcc89ea27b7ae0eaad724fabdaa GIT binary patch literal 1173 zcmV;G1Zw+Px#1ZP1_K>z@;j|==^1poj5a!^cEMF0Q*04i^<000|jgebg5l77`J9T1y%g5>7WTJS-;`h3c6A00Y5EL_t(&L+zSf zNK;`P#?NvfBE@E;rP3-dqA)LJ1O}mXqflT4L6jE>8A=xkfdwHV5=K-gVlE5nLb|BH zBq^1Myr`L|(Sm6hend%XegyeZ6stY&`B(hsaZabbv-bzb-_BuYob!0jyR(N^Q!q@r zec5`-qraMwT6Z~oV7AW)fEBv`Ie*TEB@nl(05(O&!bHUtvCEc<3OKB^6t1<|-~y*} zUI|H*h@M1zMj1A|?|TEsZ`cg)OPq!s_5Co>-LeP1P`wu}>v#xPJz5V3nv6V&Tuezp zA_bp!U;`!NnHYfS8lhw!ycmUPd#5EH_T+cMj`Vam^b^T#Y{Z7Nv^2QA>R%XYXeIKUpCap`HanT`h*H981 zqh#bugp%-#ox{4xdLEu0OV#QMleEG*@z#=GZ##2uQtR${iuI9%A8?HOC`|jgICN7aC9oCASdDlh`_SQlIdS$}nBGs&epNA3FyZezNZv$fL`}{YBj!kdCd^rFtAqInO#2-U z4~GeV-^TJKLQpbGnjs=teN8UtY*F+(S?VH3ewzi&kFs&1#6Jng`861WOhDVoqB7w4e6Zws5j8tPJ zP>m5sHAWoO7;%=oF`|}$BTXWU-WU-WXMi@kH}!jQVCwls88l`4TbW@5TsZCZRD3(|_z!Tl7+!gb8YedRyvk zMqVQI5txwgt_gNy)VzNXCfv?du+evsyom&>F$(<-jR;m_M9lR`P2NNZYK+Wb;w`El z;f;|${@=!Ep=WM{G>IrU#{X~Cp{Wi{pgJ^;>d-i^91;WxHA0zANl|P%>Vz-{QtkE$@m{oT+P$PF+?IfIpxRy|MtuR28|p7 t2T}~&gu%mV;%z-)>JYD@<);T3K0RZdsFF^nR literal 0 HcmV?d00001 diff --git a/Projectiles/PulseBulletBlue.cs b/Projectiles/PulseBulletBlue.cs new file mode 100644 index 0000000..ebcf100 --- /dev/null +++ b/Projectiles/PulseBulletBlue.cs @@ -0,0 +1,25 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles; + +public class PulseBulletBlue : ModProjectile +{ + public override void SetDefaults() + { + Projectile.width = 2; + Projectile.height = 20; + Projectile.aiStyle = 1; + Projectile.friendly = true; + Projectile.hostile = false; + + Projectile.penetrate = 1; + Projectile.timeLeft = 600; + Projectile.alpha = 255; + Projectile.light = 0.5f; + Projectile.ignoreWater = false; + Projectile.tileCollide = true; + Projectile.extraUpdates = 2; + AIType = 14; + } +} diff --git a/Projectiles/PulseBulletBlue.png b/Projectiles/PulseBulletBlue.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c5be2ee374e43dcf4134ec1a8b31a3a68e584a GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^Oh7Ec!3HFkTfSKYq!^2X+?^QKos)S9^91;WxH3rnkIec%bMgN(7yoCctjz$5>w3C4hDd}br%d?ue?B9}3^91;WxW3wC@bPTL_lIkKf4DaP>q`!xxW1>0V~9j}a?RG05A2x*3>rBE z4y0_@;9cDyS#f2;@q|DB3V0Q7OV-!#Xj{|P$jG4S#^91;Wxc+C@{Xg>Z|CvwzpZPe?bM6wLxPhmOV~9j}@}Kh?e%mt(7&LMS z97x$<;NsOFS#f2;@r1+z0T$yAD-!?IKU3bsEh)iJ{g*v);abHwpk4+~S3j3^P6nyn literal 0 HcmV?d00001 diff --git a/Projectiles/RainbowAxeBeam.cs b/Projectiles/RainbowAxeBeam.cs new file mode 100644 index 0000000..f7707dd --- /dev/null +++ b/Projectiles/RainbowAxeBeam.cs @@ -0,0 +1,57 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles; + +public class RainbowAxeBeam : ModProjectile +{ + public override void SetStaticDefaults() + { + DisplayName.SetDefault("Rainbow Axe Beam"); + } + + public override void SetDefaults() + { + Projectile.width = 46; + Projectile.height = 52; + Projectile.aiStyle = 18; + Projectile.friendly = true; + Projectile.penetrate = -1; + Projectile.tileCollide = false; + AIType = 274; + Projectile.timeLeft = 200; + Projectile.alpha = 0; + } + + public override void AI() + { + if (Projectile.alpha <= 140) + { + Projectile projectile = Projectile; + projectile.alpha++; + } + if (Projectile.alpha > 140) + { + Projectile projectile2 = Projectile; + projectile2.alpha += 15; + } + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } +} diff --git a/Projectiles/RainbowAxeBeam.png b/Projectiles/RainbowAxeBeam.png new file mode 100644 index 0000000000000000000000000000000000000000..9e38c756071c43440f5fb942bc416e39b070e009 GIT binary patch literal 1235 zcmV;^1T6cBP)Px#1ZP1_K>z@;j|==^1poj5s8CE)MF0Q*5ex(RA@u( znm=e$K^(`=wkEZD=sn2bAi=GIAP#j92bUrUuBD5E4&7XI5Eln=>7a`a(m@9i#6bi> zC|w-HK?e~8OK~X<9RlyFSG9?@`n#9=z2seby?cL}2H$<*mwSJbyyQOl{_c18vWEVbS(X0o1WQPK&X z6~_n%TB|@ywlbQqy%Etg6D7YO#0X&%(1OyE^+fXuN!}8hKyMhxRTCuB67?Q+RN-G# zl9cgSw8%a2M;%QsMo&T*i?*Hzf7UmC3_L9W6!hmh?m^dpCmS@$kYc79!)cgnibr&4_JM>LKmE&wgN z?l!Lath-Z^mC*@tTJ71z8!Ln_hiWgoyhm+9Z#EXeoBIf9j1tl@(V`@4-K)ah>6Bh02kB+CXBVGq5xpL78CoG1ATC14swnToSzlpblhwE? zN+VA+uVMm*ajoAf4bkl0QIv4@a-?2~j-wy(eBtZ53r%={4cmCCw%PBtpS?$Qq1Q0b zgSGKWL{s-<-gRAFa?Oap2bzvz4fquRP5fM*Xg56>;f)pvXCdYwp0(oh*kkHtnU!`v znpWk_x{{J?!&5Ljk%>pFX3^X)9F z|H`~aO$ufz37T>o{kq(WR_Z@F+;c(Uy_cdqZj&b(yaRIcTl+AJa6bB)ekLF3+rmk* zr!a1UKTYpjzN{N(+nUO@m|+cB7hBt!5w6tR=ykH~b9n5!fFMD;%V{Zb{*cuSQQaj^@(_P26XmyVsr`u<0z4!6@uKxu@xlrs@ zd9yAGdn_gnvzP9Ub|tE>FyPv*iL6O!3F;~zQIy`ZX+5fsqx$T{M0BU+E2Eg2fh4xB zMDc${{U(VjPi3T9XW@J_n1q<<9W(LX%b>}7RQG7`AW6w|$J;aVF#-oi_jg002ovPDHLkV1iK+N)-SA literal 0 HcmV?d00001 diff --git a/Projectiles/RainbowBullet.cs b/Projectiles/RainbowBullet.cs new file mode 100644 index 0000000..6bdc540 --- /dev/null +++ b/Projectiles/RainbowBullet.cs @@ -0,0 +1,97 @@ +using System; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles; + +public class RainbowBullet : ModProjectile +{ + public override void SetStaticDefaults() + { + //Sets.Homing[Projectile.type] = true; + } + + public override void SetDefaults() + { + Projectile.width = 2; + Projectile.height = 20; + Projectile.aiStyle = 1; + Projectile.friendly = true; + Projectile.hostile = false; + + Projectile.penetrate = 1; + Projectile.timeLeft = 600; + Projectile.alpha = 255; + Projectile.light = 0.5f; + Projectile.ignoreWater = false; + Projectile.tileCollide = true; + Projectile.extraUpdates = 2; + AIType = 14; + } + + public override void AI() + { + if (Projectile.alpha > 70) + { + Projectile projectile = Projectile; + projectile.alpha -= 15; + if (Projectile.alpha < 70) + { + Projectile.alpha = 70; + } + } + if (Projectile.localAI[0] == 0f) + { + AdjustMagnitude(ref Projectile.velocity); + Projectile.localAI[0] = 1f; + } + Vector2 move = Vector2.Zero; + float distance = 200f; + bool target = false; + for (int i = 0; i < 200; i++) + { + if (Main.npc[i].active && !Main.npc[i].dontTakeDamage && !Main.npc[i].friendly && Main.npc[i].lifeMax > 5) + { + Vector2 newMove = Main.npc[i].Center - Projectile.Center; + float distanceTo = (float)Math.Sqrt(newMove.X * newMove.X + newMove.Y * newMove.Y); + if (distanceTo < distance) + { + move = newMove; + distance = distanceTo; + target = true; + } + } + } + if (target) + { + AdjustMagnitude(ref move); + Projectile.velocity = (5f * Projectile.velocity + move) / 6f; + AdjustMagnitude(ref Projectile.velocity); + } + if (Main.rand.NextBool(3)) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj = Main.dust[dust1]; + obj.velocity *= 0f; + Main.dust[dust1].noGravity = true; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0f; + Main.dust[dust2].noGravity = true; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0f; + Main.dust[dust3].noGravity = true; + } + } + + private void AdjustMagnitude(ref Vector2 vector) + { + float magnitude = (float)Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y); + if (magnitude > 6f) + { + vector *= 6f / magnitude; + } + } +} diff --git a/Projectiles/RainbowBullet.png b/Projectiles/RainbowBullet.png new file mode 100644 index 0000000000000000000000000000000000000000..5ffbb1814b53d264a08c1cb2b6897e02b9fe549a GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^Oh7Ec!3HFkTfSKYq!^2X+?^QKos)S9%LVv^xYje6*E8gGGo0~Y_|G7BhT+T^+cOORZ!rANV)$QQ|8S~$3s9wp zr;B5VM0oO=bc6rr8CZN2m{=NkiWO4(1QH)6b}$=1Q0kH6`5#znXmnz(qqt?WUQ%@% uqwkadygU;;ZYaKek!0_phVDLJ-pWQ$+89ZJ6T-G@yGywpa^*$N^ literal 0 HcmV?d00001 diff --git a/Projectiles/RainbowDemon/RainbowDemonArrow.cs b/Projectiles/RainbowDemon/RainbowDemonArrow.cs new file mode 100644 index 0000000..ccac18d --- /dev/null +++ b/Projectiles/RainbowDemon/RainbowDemonArrow.cs @@ -0,0 +1,83 @@ +using Terraria; +using Terraria.Audio; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.RainbowDemon; + +public class RainbowDemonArrow : ModProjectile +{ + private const int alphaReducation = 25; + + public override void SetDefaults() + { + Projectile.width = 18; + Projectile.height = 34; + Projectile.friendly = true; + Projectile.tileCollide = true; + Projectile.ignoreWater = false; + + Projectile.timeLeft = 1000; + Projectile.light = 1f; + AIType = 1; + Projectile.aiStyle = 1; + Projectile.alpha = 0; + } + + public override void AI() + { + if (Projectile.alpha > 30) + { + Projectile projectile = Projectile; + projectile.alpha -= 15; + if (Projectile.alpha < 30) + { + Projectile.alpha = 30; + } + } + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } + SoundEngine.PlaySound(SoundID.Item1, Projectile.position); + } +} diff --git a/Projectiles/RainbowDemon/RainbowDemonArrow.png b/Projectiles/RainbowDemon/RainbowDemonArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..e2f32048be946945035553a1616d09c48e2e5a4e GIT binary patch literal 583 zcmV-N0=WH&P)Px#1ZP1_K>z@;j|==^1poj5T2M?>MF0Q*E@lQ*W&p?kp9W?wa{mryPyp`#nV0lDWV9;;utVP3r?a#1<}RDPNg^q4uK*FMG-Qn_`Y1AjirLQ`rylt zH{9{~cvnijv>=Sn?+I*I4FvqN5&jXX{_d(yT{dgv}L_IHZsetJveLE64 z-py{=g5RMMI8W!`s@wy~cH7RzpGc%RN!Em=#cgKE83wP-HL&GOfOPu6tk}3i|Bhb9 zVd*W)i7uceA_hXeJL!cgYd(%*%l9RrdYsk#)t5&TmODVRC|s zGYuYERZuQ(g8F)-5>Xo8ut$dAM6S(=!X7opnA)4IqLgDv?4_OIFI1}q)lGdr8@n?;ZgZkTcRC~}ea%%k+`ePBX)O`Ze3002ovPDHLkV1jB}00aO4 literal 0 HcmV?d00001 diff --git a/Projectiles/RainbowDemon/RainbowDemonClaymoreProj.cs b/Projectiles/RainbowDemon/RainbowDemonClaymoreProj.cs new file mode 100644 index 0000000..7635734 --- /dev/null +++ b/Projectiles/RainbowDemon/RainbowDemonClaymoreProj.cs @@ -0,0 +1,110 @@ +using System; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.RainbowDemon; + +public class RainbowDemonClaymoreProj : ModProjectile +{ + public override void SetStaticDefaults() + { + //ProjectileID.Sets.Homing[Projectile.type] = true; + Main.projFrames[Projectile.type] = 4; + } + + public override void SetDefaults() + { + Projectile.width = 40; + Projectile.height = 42; + Projectile.alpha = 255; + Projectile.friendly = true; + Projectile.tileCollide = false; + Projectile.ignoreWater = true; + Projectile.timeLeft = 300; + } + + public override void AI() + { + if (Projectile.alpha > 70) + { + Projectile projectile = Projectile; + projectile.alpha -= 15; + if (Projectile.alpha < 70) + { + Projectile.alpha = 70; + } + } + if (Projectile.localAI[0] == 0f) + { + AdjustMagnitude(ref Projectile.velocity); + Projectile.localAI[0] = 1f; + } + Vector2 move = Vector2.Zero; + float distance = 200f; + bool target = false; + for (int i = 0; i < 200; i++) + { + if (Main.npc[i].active && !Main.npc[i].dontTakeDamage && !Main.npc[i].friendly && Main.npc[i].lifeMax > 5) + { + Vector2 newMove = Main.npc[i].Center - Projectile.Center; + float distanceTo = (float)Math.Sqrt(newMove.X * newMove.X + newMove.Y * newMove.Y); + if (distanceTo < distance) + { + move = newMove; + distance = distanceTo; + target = true; + } + } + } + if (target) + { + AdjustMagnitude(ref move); + Projectile.velocity = (10f * Projectile.velocity + move) / 11f; + AdjustMagnitude(ref Projectile.velocity); + } + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + AnimateProjectile(); + } + + private void AdjustMagnitude(ref Vector2 vector) + { + float magnitude = (float)Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y); + if (magnitude > 6f) + { + vector *= 6f / magnitude; + } + } + + public void AnimateProjectile() + { + Projectile projectile = Projectile; + projectile.frameCounter++; + if (Projectile.frameCounter >= 5) + { + Projectile projectile2 = Projectile; + projectile2.frame++; + Projectile projectile3 = Projectile; + projectile3.frame %= 3; + Projectile.frameCounter = 0; + } + } +} diff --git a/Projectiles/RainbowDemon/RainbowDemonClaymoreProj.png b/Projectiles/RainbowDemon/RainbowDemonClaymoreProj.png new file mode 100644 index 0000000000000000000000000000000000000000..eb8dacab8ed608804aa7a83355b5e3d6c4cb61b9 GIT binary patch literal 1770 zcmVPx#1ZP1_K>z@;j|==^1poj5Fi=cXMF0Q*ArKw3AS!bgE%~Dxc{+gB@?<*~C0W5W z|J6Z5B0K;5Kom4&B%j_WT*T}p|Lp%GQvd)4SV=@dRCr$PoK0w4RTRfZTZ{^YP%KE) zplMNYQxt@Pp!kJC1+ieMNI{S;Ty!C3(}GYDs*8$?F1iSA6j20~fC0rX6bb=Baibzl zl&V2cL!h8WtlE3t{Dzsob9&ySfxLTXesDRNkC)8*&AH$2r8Q#226It6hFmv(&A%yr zxAKD>!{b5W__|!&j*TTe8%!M^-(rssuAH&BXKdW!puDxZ(*CI;GMcYJHK%<1$0myy z!RXOr%NF7A^j3?!Z{JOiTZGrYddZ?^GJk`Zx%0BK7S){M8B*$+EXN>d&Vgri?(}^Y zU%CHki)s{;s`~ATU=WG(;{GK|GPh0eD;ekEzUpqv&HfZVouM@GpBeacg
bTdr^aR55kisVZ)rw79r@+M+&&Yz@}_fa%OrNx9XX zU&&mLy&KMb0jab}rqot~-xra84ua<5H^=|6*s<5PHg&~a8pU!Q+# zW%{b$tayC?+?*99nZsT`^3TDeGoM&IeBcg?@ae*<7PUR3C%Jw5qZT#iAj-XbdlK+! zGv;=+svgCggUq+8wvskednTRh439w!cztq|gHi73{5xNRpeDWAtK4|7_uT8&TK-=C zIjC@EIx?nDer$5WB0PQbPK(}b4lw0WjzQ2I;W6`HW%uNJ79&$0X%^xtCQ+xf;{g7m; zyF@hJ;O2I`V05nz*k!_&uJrFa)IZlD|5^;>8|!|oYEf&!GvOK3o&>U~#i2pWdHcZ- z)kqBK`}BDp=WplM{O_mT%C@y?#5H-KfdP9OP#ZFuC~ac6$uo zj(TJeFsYPh5HJZ^YZcF=n$udX<{*EAiW=4H12O2$L3C{fy!ml?1{F05I-B!|Rv5}R z=z&?!B<5gb(8J47Wq8`bhzm8Q439y~EuP$Ak3G_ratUUKk;(E6VvbRcHw#o4nGc^q zt)*%%0<(2h3rJtE+l7I`i&w4SG2@=$;)psMqc5%4@kR z3%b+f)nd<(J`d#@#N1kQ2+r*2-QC=|{Ix|rj(N1Meqpj)gMbl54Q@GAU5TmY6gAm+ zg9CrSWURYDGS+P^8S5?{X})~E)rZC#?CjNP?sY~Tvj6L?X1)KEg>@&NTI?BQv=P-l z)>c4!9MB$V>5b~Hiiy3|eJ8x0O*`1hK|b-hTr-p8UaQsHLnyRc^X>O}rZF@q`Q)HN zP6B2W?!4xj{m7t>8+Eh<`S-=TSEqY)3Vk)biyEgL#TX-V?p@mSVs-!C<`0)FuDgo~`opXJypB0I`(*VEfJbwCbACi69jxzDy$MsEG3ca7THFX8#w=VvX#!!s{iRFnG6 zWM?q^fG=!&#tI}usic*G?!xoyO@28T)mkjEwgS5A8P#IN%f)gGYCEU-hBNaj-ExMZqd z@yIU+A<9LysI^^dIq&yudE>&y8yxuFPK>r%a=oBqn8(CD3vXJSyZ3}e55B?ta}X2J z6_#FmsX6J58R^T}(P!^3UxT0~`Jb4&vY_S^%wbB=|HDv@LC|*5TOZVw2k6vdXB=6+ zK~R&5uCM|<1II_?JEE?OXM!`2;COBK^!Uab+;Eb~^W|m34YpeU0pw}G 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void Kill(int timeLeft) + { + Vector2 position = Projectile.position; + Vector2 rotVector = Utils.ToRotationVector2(Projectile.rotation - MathHelper.ToRadians(90f)); + _ = position + rotVector * 16f; + int item = 0; + if (Main.netMode == NetmodeID.MultiplayerClient && item >= 0) + { + NetMessage.SendData(MessageID.KillProjectile, -1, -1, null, 0, 0f, 0f, 0f, 0, 0, 0); + } + } + + public override void AI() + { + if (Projectile.alpha > 30) + { + Projectile projectile = Projectile; + projectile.alpha -= 15; + if (Projectile.alpha < 30) + { + Projectile.alpha = 30; + } + } + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Main.rand.NextBool(1)) + { + target.AddBuff(70, 720, false); + } + } +} diff --git a/Projectiles/RainbowDemon/RainbowDemonKnife.png b/Projectiles/RainbowDemon/RainbowDemonKnife.png new file mode 100644 index 0000000000000000000000000000000000000000..5049e3afdaa2cdf11ef142aa54b36122bf6211e6 GIT binary patch literal 508 zcmVPx#1ZP1_K>z@;j|==^1poj5NKi~vMF0Q*ArKvD{}(|2K)U|`lK%u3|7isOk@o8V z;{N~u|GEJG;{QOW zQb|NXR9Hu2AQdPI$o>amD3@r!1f^*X7@;&l0P}^%`(FXjIl3f={a-~aHKC^P8h zqfv{<27@Qn!BX4I_m3HFFt7kqoG>`mf$&=f4F*}k9sc$rn$Oa?GB3LPX_4Z?i zgTNGr3*3J{7l@A%EY(Njh-@%|ECQ8XAgrw_%U~}k3l+r#ih{{NYzE)(*!a=Sc8G#y8;8l8xaOzn+}9A+jW0n z3PFk(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } + + public override bool OnTileCollide(Vector2 oldVelocity) + { + Projectile projectile = Projectile; + projectile.penetrate--; + if (Projectile.penetrate <= 0) + { + Projectile.Kill(); + } + else + { + Projectile.ai[0] += 0.1f; + if (Projectile.velocity.X != oldVelocity.X) + { + Projectile.velocity.X = 0f - oldVelocity.X; + } + if (Projectile.velocity.Y != oldVelocity.Y) + { + Projectile.velocity.Y = 0f - oldVelocity.Y; + } + Projectile projectile2 = Projectile; + projectile2.velocity = projectile2.velocity * 0.75f; + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } + return false; + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } +} diff --git a/Projectiles/RainbowDemon/RainbowDemonMagicBall.png b/Projectiles/RainbowDemon/RainbowDemonMagicBall.png new file mode 100644 index 0000000000000000000000000000000000000000..7510ef6a404cca51533f0abf93056f361f8d6ae4 GIT binary patch literal 414 zcmV;P0b%}$P)Px#1ZP1_K>z@;j|==^1poj5Bv4FLMF0Q*Bo{4lReFGbmRCApJs~~+JpliX0RPJX z&i?>a|0@7y|CnQGO#lD^7)eAyR7gu>AOuvzb^n7fl#3HEL1~HsBb3GfFjx56`GWbI z4{Zk1cV1q`s)u$ig1ICnBNNR3c=ESN@j8TDO+%Ox;y=FDL*EhVW8 zrqNwSH5XwR1ab+oYx-WafiWRKH5aiEiY0~+2qm=!5;o7C-v!gg%En+C2*CQO7i;J# z7zX+*q2Xc+q0XB?=uYbdFb#9r^KT!(H0@#y4nQseVvtKfxSc^8j6p7exds_fKa6n2 z+P|Zx!8DV#DVRog4b{U4Bd;N)4=`A%GapRb?zRKdFaUE2?eiKs2)~jD#)JU%!w3e@ z!wOd{(Y}O42QZgOatVO>xLg7QRC5tQ0CE}3b@%|4T*SZt03UdOmNh9OZ~y=R07*qo IM6N<$f@YDLJpcdz literal 0 HcmV?d00001 diff --git a/Projectiles/RainbowDemon/RainbowDemonMelee.cs b/Projectiles/RainbowDemon/RainbowDemonMelee.cs new file mode 100644 index 0000000..165c56e --- /dev/null +++ b/Projectiles/RainbowDemon/RainbowDemonMelee.cs @@ -0,0 +1,90 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Projectiles.RainbowDemon; + +public class RainbowDemonMelee : ModProjectile +{ + private const float maxTicks = 300f; + + private const int alphaReducation = 25; + + public override void SetDefaults() + { + Projectile.width = 80; + Projectile.height = 48; + Projectile.aiStyle = 28; + Projectile.friendly = true; + Projectile.penetrate = 1; + Projectile.tileCollide = false; + Projectile.timeLeft = 200; + Projectile.alpha = 255; + } + + public override bool? Colliding(Rectangle projHitbox, Rectangle targetHitbox) + { + if (targetHitbox.Width > 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void Kill(int timeLeft) + { + Vector2 position = Projectile.position; + Vector2 rotVector = Utils.ToRotationVector2(Projectile.rotation - MathHelper.ToRadians(90f)); + _ = position + rotVector * 16f; + int item = 0; + if (Main.netMode == NetmodeID.MultiplayerClient && item >= 0) + { + NetMessage.SendData(MessageID.KillProjectile, -1, -1, null, 0, 0f, 0f, 0f, 0, 0, 0); + } + } + + public override void AI() + { + if (Projectile.alpha > 30) + { + Projectile projectile = Projectile; + projectile.alpha -= 15; + if (Projectile.alpha < 30) + { + Projectile.alpha = 30; + } + } + if (Projectile.ai[0] == 0f) + { + Projectile.ai[1] += 1f; + if (Projectile.ai[1] >= maxTicks) + { + float velXmult = 0.98f; + float velYmult = 0.35f; + Projectile.ai[1] = maxTicks; + Projectile.velocity.X = Projectile.velocity.X * velXmult; + Projectile.velocity.Y = Projectile.velocity.Y + velYmult; + } + Projectile.rotation = Utils.ToRotation(Projectile.velocity) + MathHelper.ToRadians(90f); + } + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } +} diff --git a/Projectiles/RainbowDemon/RainbowDemonMelee.png b/Projectiles/RainbowDemon/RainbowDemonMelee.png new file mode 100644 index 0000000000000000000000000000000000000000..163c7c9fab99a8a4a97fd55268ce133766394614 GIT binary patch literal 1415 zcmWkuc{mgZ6n`ZaDau)-9U_u%osF&)#yOcrhIFitk{L3&wy;8_h9Z_xnJHOnLWGHm zXu9Nx5Fozp}1LVR6>@~ZCq^t_^Hbme5ECPj=Gy>FTqs`GNlMST*^hMRFsZKnMjmn zqVi$X-iL-{wA_WeERnnkJ=deJGBRZ`QU>FtF+~bFOOYoM!!SZG!W)EIgenBUQot&} zTEI7ey@12m04N0PgCB!1D}u=>0I>+BCP6d{LqDJoL5P?Im=9P6C;(_c5FnHxAYuPj!f#5+cUlo5@sZ{Qk zu-4&17vre1tY<+`#_3C2wzxdqbjic1)a{uqEu+_VsJPtLDEtY7>+3jJEBg7az(y7aCs z7nqCg(TWI~Zllo|m3Ym{m}MVIy5`!bvMZ&8Uh*p~1!e4LWzlo)h|r6kf3#=((z&#x z6}lbe>IxogVkd{+Ol`b%JjSAIN1n$1pdZDz9y1u5J-WVnCnvieyJIditCbn_pP~s? z?TTV`SGG(H2YzS~`fX1rC86DQO`-^Y?nFXn!AAC?v3*)5OE0RzuIpVAE8>$;QM#pi#1L-aT zIV59q;-S^4yZILSVcq@eU0w%*lX;Rk{oek=BS%@Ca0||T6%(eU%|4{j(LXAkGr?V0 z9j&>rA=oFWI%8J;lblL}6u&c>IC3W9OhWy=XKMmETEE*(np&vY2B{A3cJt(>6xDnu zXs>r`G%YzhFV=W+(ij_3a5-j$0kvM>o!OXI|}GGv-=1oUWv;=)p`LwC9*x=&oj62}`rt z(W5d%9B{Z3?!rsR71UBmYjZSm!&0Xxd#v+rMXR}H=2vOIq{i_ZoQ~hfbhnKxH!ONW z7%Lm5(iyCJZ}#mux%QtmuIzbBmd+iy#K2GQLORyH@`-!fuG=XN*bq=crZb*@C-{zi z{T?g1jPfJ-1&)o=xdIa*E$(5F!2FMmYsX&Ky>?HVeXqeaW@=un*EXB^@GaQpppoPE z`BO%bl2gu);HLQpdYUM%BuE`R(Stqf=_<@V%*{0BMLp=1Aa=?##t=595U;aJWX)6r;v(m Hea`+5KC->o literal 0 HcmV?d00001 diff --git a/Projectiles/RainbowDemon/RainbowDemonShredderProj.cs b/Projectiles/RainbowDemon/RainbowDemonShredderProj.cs new file mode 100644 index 0000000..7abbe7f --- /dev/null +++ b/Projectiles/RainbowDemon/RainbowDemonShredderProj.cs @@ -0,0 +1,53 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.RainbowDemon; + +public class RainbowDemonShredderProj : ModProjectile +{ + private const int alphaReducation = 25; + + public override void SetDefaults() + { + Projectile.width = 46; + Projectile.height = 52; + Projectile.aiStyle = 18; + Projectile.friendly = true; + Projectile.penetrate = 1; + Projectile.tileCollide = false; + AIType = 274; + Projectile.timeLeft = 200; + Projectile.alpha = 255; + } + + public override void AI() + { + if (Projectile.alpha > 30) + { + Projectile projectile = Projectile; + projectile.alpha -= 15; + if (Projectile.alpha < 30) + { + Projectile.alpha = 30; + } + } + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } +} diff --git a/Projectiles/RainbowDemon/RainbowDemonShredderProj.png b/Projectiles/RainbowDemon/RainbowDemonShredderProj.png new file mode 100644 index 0000000000000000000000000000000000000000..9e38c756071c43440f5fb942bc416e39b070e009 GIT binary patch literal 1235 zcmV;^1T6cBP)Px#1ZP1_K>z@;j|==^1poj5s8CE)MF0Q*5ex(RA@u( znm=e$K^(`=wkEZD=sn2bAi=GIAP#j92bUrUuBD5E4&7XI5Eln=>7a`a(m@9i#6bi> zC|w-HK?e~8OK~X<9RlyFSG9?@`n#9=z2seby?cL}2H$<*mwSJbyyQOl{_c18vWEVbS(X0o1WQPK&X z6~_n%TB|@ywlbQqy%Etg6D7YO#0X&%(1OyE^+fXuN!}8hKyMhxRTCuB67?Q+RN-G# zl9cgSw8%a2M;%QsMo&T*i?*Hzf7UmC3_L9W6!hmh?m^dpCmS@$kYc79!)cgnibr&4_JM>LKmE&wgN z?l!Lath-Z^mC*@tTJ71z8!Ln_hiWgoyhm+9Z#EXeoBIf9j1tl@(V`@4-K)ah>6Bh02kB+CXBVGq5xpL78CoG1ATC14swnToSzlpblhwE? zN+VA+uVMm*ajoAf4bkl0QIv4@a-?2~j-wy(eBtZ53r%={4cmCCw%PBtpS?$Qq1Q0b zgSGKWL{s-<-gRAFa?Oap2bzvz4fquRP5fM*Xg56>;f)pvXCdYwp0(oh*kkHtnU!`v znpWk_x{{J?!&5Ljk%>pFX3^X)9F z|H`~aO$ufz37T>o{kq(WR_Z@F+;c(Uy_cdqZj&b(yaRIcTl+AJa6bB)ekLF3+rmk* zr!a1UKTYpjzN{N(+nUO@m|+cB7hBt!5w6tR=ykH~b9n5!fFMD;%V{Zb{*cuSQQaj^@(_P26XmyVsr`u<0z4!6@uKxu@xlrs@ zd9yAGdn_gnvzP9Ub|tE>FyPv*iL6O!3F;~zQIy`ZX+5fsqx$T{M0BU+E2Eg2fh4xB zMDc${{U(VjPi3T9XW@J_n1q<<9W(LX%b>}7RQG7`AW6w|$J;aVF#-oi_jg002ovPDHLkV1iK+N)-SA literal 0 HcmV?d00001 diff --git a/Projectiles/RainbowOrb.cs b/Projectiles/RainbowOrb.cs new file mode 100644 index 0000000..dc58c60 --- /dev/null +++ b/Projectiles/RainbowOrb.cs @@ -0,0 +1,109 @@ +using System; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles; + +public class RainbowOrb : ModProjectile +{ + public override void SetStaticDefaults() + { + //Sets.Homing[Projectile.type] = true; + Main.projFrames[Projectile.type] = 4; + } + + public override void SetDefaults() + { + Projectile.width = 40; + Projectile.height = 42; + Projectile.alpha = 255; + Projectile.friendly = true; + Projectile.tileCollide = false; + Projectile.ignoreWater = true; + Projectile.timeLeft = 300; + } + + public override void AI() + { + if (Projectile.alpha > 70) + { + Projectile projectile = Projectile; + projectile.alpha -= 15; + if (Projectile.alpha < 70) + { + Projectile.alpha = 70; + } + } + if (Projectile.localAI[0] == 0f) + { + AdjustMagnitude(ref Projectile.velocity); + Projectile.localAI[0] = 1f; + } + Vector2 move = Vector2.Zero; + float distance = 200f; + bool target = false; + for (int i = 0; i < 200; i++) + { + if (Main.npc[i].active && !Main.npc[i].dontTakeDamage && !Main.npc[i].friendly && Main.npc[i].lifeMax > 5) + { + Vector2 newMove = Main.npc[i].Center - Projectile.Center; + float distanceTo = (float)Math.Sqrt(newMove.X * newMove.X + newMove.Y * newMove.Y); + if (distanceTo < distance) + { + move = newMove; + distance = distanceTo; + target = true; + } + } + } + if (target) + { + AdjustMagnitude(ref move); + Projectile.velocity = (10f * Projectile.velocity + move) / 11f; + AdjustMagnitude(ref Projectile.velocity); + } + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + AnimateProjectile(); + } + + private void AdjustMagnitude(ref Vector2 vector) + { + float magnitude = (float)Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y); + if (magnitude > 6f) + { + vector *= 6f / magnitude; + } + } + + public void AnimateProjectile() + { + Projectile projectile = Projectile; + projectile.frameCounter++; + if (Projectile.frameCounter >= 5) + { + Projectile projectile2 = Projectile; + projectile2.frame++; + Projectile projectile3 = Projectile; + projectile3.frame %= 3; + Projectile.frameCounter = 0; + } + } +} diff --git a/Projectiles/RainbowOrb.png b/Projectiles/RainbowOrb.png new file mode 100644 index 0000000000000000000000000000000000000000..eb8dacab8ed608804aa7a83355b5e3d6c4cb61b9 GIT binary patch literal 1770 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 Hea`+5KC->o literal 0 HcmV?d00001 diff --git a/Projectiles/Shimada/BloodDrop.cs b/Projectiles/Shimada/BloodDrop.cs new file mode 100644 index 0000000..b84d55f --- /dev/null +++ b/Projectiles/Shimada/BloodDrop.cs @@ -0,0 +1,39 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.Shimada; + +public class BloodDrop : ModProjectile +{ + private const float maxTicks = 45f; + + private const int alphaReducation = 25; + + public override void SetDefaults() + { + Projectile.width = 16; + Projectile.height = 20; + AIType = 1; + Projectile.aiStyle = 1; + Projectile.friendly = true; + Projectile.penetrate = 1; + } + + public override bool? Colliding(Rectangle projHitbox, Rectangle targetHitbox) + { + if (targetHitbox.Width > 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void AI() + { + if (Main.rand.NextBool(3)&& Projectile.alpha <= 100) + { + Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + } + } +} diff --git a/Projectiles/Shimada/BloodDrop.png b/Projectiles/Shimada/BloodDrop.png new file mode 100644 index 0000000000000000000000000000000000000000..60d08f41faf9c432147ae72a3f18a79a81508b1d GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(ehe`~f~8u0YyN!)&#VPPMN7DK|HsY0vKig_=EG978PplT#d+^Q6-LFZ5ZH zaJ@HJqiV(ilbZ~AQfHopOv_KOk z|G&x5YQaA4Crg(cm=WQy-{1hNh8aV;S4->R!|CS_nCQp`*sD5aS~!$*>dj6}usF(O m<)A(), 0f, 0f, 0, default, 1f); + Main.dust[num1].scale = 1.9f; + Main.dust[num1].velocity.Y -= 1.5f; + Main.dust[num1].velocity.X = 0f; + Main.dust[num1].noGravity = true; + } + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Projectile.owner != Main.myPlayer) + { + return; + } + Player player = Main.player[Projectile.owner]; + if (!(Utils.NextFloat(Main.rand) < 0.02f)) + { + return; + } + if (!player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType())) + { + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.statLife += 75; + player.statMana += 75; + if (Main.myPlayer == player.whoAmI) + { + player.HealEffect(75, true); + player.ManaEffect(75); + SoundEngine.PlaySound(SoundID.Item3); + SoundEngine.PlaySound(SoundID.Item4); + } + } + } + + public void AnimateProjectile() + { + Projectile projectile = Projectile; + projectile.frameCounter++; + if (Projectile.frameCounter >= 3) + { + Projectile projectile2 = Projectile; + projectile2.frame++; + Projectile projectile3 = Projectile; + projectile3.frame %= 14; + Projectile.frameCounter = 0; + } + } +} diff --git a/Projectiles/Shimada/DemonProjRMB.png b/Projectiles/Shimada/DemonProjRMB.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8a40badb0184a5f49f622e49f50c55839b95f4 GIT binary patch literal 13501 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, 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 2f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust2].scale = 2f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Projectile.owner != Main.myPlayer) + { + return; + } + Player player = Main.player[Projectile.owner]; + if (!player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType())) + { + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.statLife += 75; + player.statMana += 75; + if (Main.myPlayer == player.whoAmI) + { + player.HealEffect(75, true); + player.ManaEffect(75); + SoundEngine.PlaySound(SoundID.Item3); + SoundEngine.PlaySound(SoundID.Item4); + } + } + } +} diff --git a/Projectiles/Shimada/DemonProjTwo.png b/Projectiles/Shimada/DemonProjTwo.png new file mode 100644 index 0000000000000000000000000000000000000000..12951b223545247bcc31234e7b37ae00c7cacfde GIT binary patch literal 375 zcmV--0f_#IP)Px#1ZP1_K>z@;j|==^1poj57*I@9MF0Q*Bq1kIC^C;ZIb$(C#Cdt!rl$YF!Syr1 zy#N3J{YgYYR9Hu2KnE&{>i6HL=Pt)r*yl0bJb zJ%7hhFn#dDOE5k3)3^@DZ!i|u)dk~$PU|rHVeWys4+e&Qh?_b%fU%0SG#JD90|f}V zXXuCc=>rGA_|DU(U<~6A6d>fDp&#N0-~R;TmzOVt@s%H}U_4L&W(), 0f, 0f, 0, default, 1f); + Dust obj = Main.dust[num1]; + obj.velocity *= 0f; + Main.dust[num1].noGravity = true; + int num2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj2 = Main.dust[num2]; + obj2.velocity *= 0f; + Main.dust[num2].noGravity = true; + int num3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj3 = Main.dust[num3]; + obj3.velocity *= 0f; + Main.dust[num3].noGravity = true; + int num4 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj4 = Main.dust[num4]; + obj4.velocity *= 0f; + Main.dust[num4].noGravity = true; + int num5 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj5 = Main.dust[num5]; + obj5.velocity *= 0f; + Main.dust[num5].noGravity = true; + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Projectile.owner == Main.myPlayer) + { + Player player = Main.player[Projectile.owner]; + if (Main.myPlayer == player.whoAmI) + { + player.statMana++; + player.ManaEffect(1); + } + } + target.immune[Projectile.owner] = 0; + } +} diff --git a/Projectiles/Shimada/DemonWave.png b/Projectiles/Shimada/DemonWave.png new file mode 100644 index 0000000000000000000000000000000000000000..f9103357005a982b8fc0e637c108edab9b47794d GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCik>1AIbUf%Nh!+gm_N%G1R$#KZgTK|@9$@6dv;{<*yT3JeSuA7#P27 SNpS{>GkCiCxvX(), 0f, 0f, 0, default, 1f); + Main.dust[num1].scale = 1.9f; + Main.dust[num1].velocity.Y -= 1.5f; + Main.dust[num1].velocity.X = 0f; + Main.dust[num1].noGravity = true; + int num2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[num2].scale = 1.9f; + Main.dust[num2].velocity.Y -= 1.5f; + Main.dust[num2].velocity.X = 0f; + Main.dust[num2].noGravity = true; + int num3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[num3].scale = 1.9f; + Main.dust[num3].velocity.Y -= 1.5f; + Main.dust[num3].velocity.X = 0f; + Main.dust[num3].noGravity = true; + } + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Projectile.owner == Main.myPlayer) + { + Player player = Main.player[Projectile.owner]; + if (Utils.NextFloat(Main.rand) < 0.03f) + { + if (!player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType())) + { + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.statLife += 85; + player.statMana += 85; + if (Main.myPlayer == player.whoAmI) + { + player.HealEffect(85, true); + player.ManaEffect(85); + SoundEngine.PlaySound(SoundID.Item3); + SoundEngine.PlaySound(SoundID.Item4); + } + } + } + } + target.AddBuff(72, 300, false); + } + + public void AnimateProjectile() + { + Projectile projectile = Projectile; + projectile.frameCounter++; + if (Projectile.frameCounter >= 3) + { + Projectile projectile2 = Projectile; + projectile2.frame++; + Projectile projectile3 = Projectile; + projectile3.frame %= 14; + Projectile.frameCounter = 0; + } + } +} diff --git a/Projectiles/Shimada/DreamCatcherProjRMB.png b/Projectiles/Shimada/DreamCatcherProjRMB.png new file mode 100644 index 0000000000000000000000000000000000000000..aca97df67e958ebe4883f30514e7387a645e92a4 GIT binary patch literal 22704 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 F{{n}M)1?3a literal 0 HcmV?d00001 diff --git a/Projectiles/Shimada/DreamCatcherProjTwo.cs b/Projectiles/Shimada/DreamCatcherProjTwo.cs new file mode 100644 index 0000000..9b14d8a --- /dev/null +++ b/Projectiles/Shimada/DreamCatcherProjTwo.cs @@ -0,0 +1,157 @@ +using System; +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.Audio; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.Shimada; + +public class DreamCatcherProjTwo : ModProjectile +{ + public override void SetStaticDefaults() + { + //Sets.Homing[Projectile.type] = true; + } + + public override void SetDefaults() + { + Projectile.width = 46; + Projectile.height = 28; + Projectile.aiStyle = 1; + Projectile.friendly = true; + Projectile.hostile = false; + Projectile.penetrate = 1; + Projectile.timeLeft = 600; + Projectile.alpha = 255; + Projectile.light = 0.5f; + Projectile.ignoreWater = true; + Projectile.tileCollide = true; + Projectile.extraUpdates = 2; + AIType = 14; + } + + public override void AI() + { + if (Projectile.localAI[0] == 0f) + { + AdjustMagnitude(ref Projectile.velocity); + Projectile.localAI[0] = 1f; + } + Vector2 move = Vector2.Zero; + float distance = 400f; + bool target = false; + for (int i = 0; i < 200; i++) + { + if (Main.npc[i].active && !Main.npc[i].dontTakeDamage && !Main.npc[i].friendly && Main.npc[i].lifeMax > 5) + { + Vector2 newMove = Main.npc[i].Center - Projectile.Center; + float distanceTo = (float)Math.Sqrt(newMove.X * newMove.X + newMove.Y * newMove.Y); + if (distanceTo < distance) + { + move = newMove; + distance = distanceTo; + target = true; + } + } + } + if (target) + { + AdjustMagnitude(ref move); + Projectile.velocity = (10f * Projectile.velocity + move) / 11f; + AdjustMagnitude(ref Projectile.velocity); + } + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 2f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust2].scale = 2f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust3].scale = 2f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + int dust4 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust4].scale = 2f; + Dust obj4 = Main.dust[dust4]; + obj4.velocity *= 0.1f; + Main.dust[dust4].noGravity = true; + int dust5 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust5].scale = 2f; + Dust obj5 = Main.dust[dust5]; + obj5.velocity *= 0.1f; + Main.dust[dust5].noGravity = true; + int dust6 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust6].scale = 2f; + Dust obj6 = Main.dust[dust6]; + obj6.velocity *= 0.1f; + Main.dust[dust6].noGravity = true; + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Projectile.owner != Main.myPlayer) + { + return; + } + Player player = Main.player[Projectile.owner]; + player.statLife += 20; + if (Main.myPlayer == player.whoAmI) + { + player.HealEffect(20, true); + SoundEngine.PlaySound(SoundID.Item3); + } + if (!player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType())) + { + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 480, true); + player.statLife += 85; + player.statMana += 85; + if (Main.myPlayer == player.whoAmI) + { + player.HealEffect(85, true); + player.ManaEffect(85); + SoundEngine.PlaySound(SoundID.Item3); + SoundEngine.PlaySound(SoundID.Item4); + } + } + } + + private void AdjustMagnitude(ref Vector2 vector) + { + float magnitude = (float)Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y); + if (magnitude > 6f) + { + vector *= 6f / magnitude; + } + } +} diff --git a/Projectiles/Shimada/DreamCatcherProjTwo.png b/Projectiles/Shimada/DreamCatcherProjTwo.png new file mode 100644 index 0000000000000000000000000000000000000000..178829154ca6a9fef6f6771e38118c4a6e56ab2e GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^dO$40!3HGdxO*o8DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(j3k1o(uw0%;XRbz4Q-!qBR4tAzi34F69vocqrZ`d^zN?f?13Qs024NP4;ls- zEG>78YbJGdcIry-iviU;oA(~RG-=}!)rbVw6HErV=8})RtCp93*;1?V-C#yv#AJqL z=k4tImbKSOO`kN4DVZ(6f%&7u^3olD1HK=)%g*X--+Mo@m`XTq(r?Xol4u4+4*A6aN}@S4P4Mxa?Y1&$Z|aJW9>1;g}ex62k=4{q>% wEWz+3ct$=u^MR-H9tN-C5jAj;J$C>Yn7OrbzfXr<00tw2r>mdKI;Vst04h(), 0f, 0f, 0, default, 1f); + Dust obj = Main.dust[num1]; + obj.velocity *= 0f; + Main.dust[num1].noGravity = true; + int num2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj2 = Main.dust[num2]; + obj2.velocity *= 0f; + Main.dust[num2].noGravity = true; + int num3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj3 = Main.dust[num3]; + obj3.velocity *= 0f; + Main.dust[num3].noGravity = true; + int num4 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj4 = Main.dust[num4]; + obj4.velocity *= 0f; + Main.dust[num4].noGravity = true; + int num5 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj5 = Main.dust[num5]; + obj5.velocity *= 0f; + Main.dust[num5].noGravity = true; + int num6 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj6 = Main.dust[num6]; + obj6.velocity *= 0f; + Main.dust[num6].noGravity = true; + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Projectile.owner == Main.myPlayer) + { + Player player = Main.player[Projectile.owner]; + if (Main.myPlayer == player.whoAmI) + { + player.statMana++; + player.ManaEffect(1); + } + } + target.immune[Projectile.owner] = 0; + } +} diff --git a/Projectiles/Shimada/DreamCatcherWave.png b/Projectiles/Shimada/DreamCatcherWave.png new file mode 100644 index 0000000000000000000000000000000000000000..f9103357005a982b8fc0e637c108edab9b47794d GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCik>1AIbUf%Nh!+gm_N%G1R$#KZgTK|@9$@6dv;{<*yT3JeSuA7#P27 SNpS{>GkCiCxvX(), 0f, 0f, 0, default, 1f); + Main.dust[num1].scale = 1.9f; + Main.dust[num1].velocity.Y -= 1.5f; + Main.dust[num1].velocity.X = 0f; + Main.dust[num1].noGravity = true; + } + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Projectile.owner == Main.myPlayer) + { + Player player = Main.player[Projectile.owner]; + if (Utils.NextFloat(Main.rand) < 0.03f) + { + if (!player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType())) + { + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.statLife += 75; + player.statMana += 75; + if (Main.myPlayer == player.whoAmI) + { + player.HealEffect(75, true); + player.ManaEffect(75); + SoundEngine.PlaySound(SoundID.Item3); + SoundEngine.PlaySound(SoundID.Item4); + } + } + } + } + target.AddBuff(72, 300, false); + } + + public void AnimateProjectile() + { + Projectile projectile = Projectile; + projectile.frameCounter++; + if (Projectile.frameCounter >= 3) + { + Projectile projectile2 = Projectile; + projectile2.frame++; + Projectile projectile3 = Projectile; + projectile3.frame %= 14; + Projectile.frameCounter = 0; + } + } +} diff --git a/Projectiles/Shimada/GoldenFuryProjRMB.png b/Projectiles/Shimada/GoldenFuryProjRMB.png new file mode 100644 index 0000000000000000000000000000000000000000..d5ea335af138e41fc04f04724619586fa195b41e GIT binary patch literal 13957 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, 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 2f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust2].scale = 2f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Projectile.owner != Main.myPlayer) + { + return; + } + Player player = Main.player[Projectile.owner]; + if (!player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType()) && !player.HasBuff(ModContent.BuffType())) + { + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.AddBuff(ModContent.BuffType(), 960, true); + } + else if (player.HasBuff(ModContent.BuffType())) + { + player.ClearBuff(ModContent.BuffType()); + player.statLife += 75; + player.statMana += 75; + if (Main.myPlayer == player.whoAmI) + { + player.HealEffect(75, true); + player.ManaEffect(75); + SoundEngine.PlaySound(SoundID.Item3); + SoundEngine.PlaySound(SoundID.Item4); + } + } + } +} diff --git a/Projectiles/Shimada/GoldenFuryProjTwo.png b/Projectiles/Shimada/GoldenFuryProjTwo.png new file mode 100644 index 0000000000000000000000000000000000000000..4b1f65e385ab6f7cd3b252553cd1cbb0ddbae919 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^dO$40!3HGdxO*o8DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(ehe5&=FTu0UEvQT<4(=dCMom#0Q=IGH+HdVi38>Sc)B=-M7SqA zuxoX_`tK-lO17Zkw5?A-)rrQy_RG=+PMHN!Oc%L>rX2XwV)^~Rm$|>qA7;Ja5!9R9(~3N-#j`wq6_ zOa{~H{_*rA{%K@txnumr`Onp3*Av#TrZj&z-&}vNVgbXMx*638@0uGGr5`O`>s-am z)6QSg+sRh|bY6=^)jQb?pl6)Tju(|slEARzj&aSU9|4TcS03{4F!)Nh-4)&_ RZwd?t22WQ%mvv4FO#mLHnOpz> literal 0 HcmV?d00001 diff --git a/Projectiles/Shimada/GoldenFuryWave.cs b/Projectiles/Shimada/GoldenFuryWave.cs new file mode 100644 index 0000000..8c87d1c --- /dev/null +++ b/Projectiles/Shimada/GoldenFuryWave.cs @@ -0,0 +1,64 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.Shimada; + +public class GoldenFuryWave : ModProjectile +{ + private const int alphaReducation = 50; + + public override void SetDefaults() + { + Projectile.width = 13; + Projectile.height = 13; + Projectile.aiStyle = -1; + Projectile.friendly = true; + Projectile.hostile = false; + Projectile.penetrate = 6; + Projectile.timeLeft = 600; + Projectile.alpha = 255; + Projectile.light = 0.5f; + Projectile.ignoreWater = true; + Projectile.tileCollide = true; + Projectile.extraUpdates = 100; + AIType = 14; + } + + public override void AI() + { + int num1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj = Main.dust[num1]; + obj.velocity *= 0f; + Main.dust[num1].noGravity = true; + int num2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj2 = Main.dust[num2]; + obj2.velocity *= 0f; + Main.dust[num2].noGravity = true; + int num3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj3 = Main.dust[num3]; + obj3.velocity *= 0f; + Main.dust[num3].noGravity = true; + int num4 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj4 = Main.dust[num4]; + obj4.velocity *= 0f; + Main.dust[num4].noGravity = true; + int num5 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj5 = Main.dust[num5]; + obj5.velocity *= 0f; + Main.dust[num5].noGravity = true; + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Projectile.owner == Main.myPlayer) + { + Player player = Main.player[Projectile.owner]; + if (Main.myPlayer == player.whoAmI) + { + player.statMana++; + player.ManaEffect(1); + } + } + target.immune[Projectile.owner] = 0; + } +} diff --git a/Projectiles/Shimada/GoldenFuryWave.png b/Projectiles/Shimada/GoldenFuryWave.png new file mode 100644 index 0000000000000000000000000000000000000000..f9103357005a982b8fc0e637c108edab9b47794d GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCik>1AIbUf%Nh!+gm_N%G1R$#KZgTK|@9$@6dv;{<*yT3JeSuA7#P27 SNpS{>GkCiCxvX(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } +} diff --git a/Projectiles/Shimada/RainbowClump.png b/Projectiles/Shimada/RainbowClump.png new file mode 100644 index 0000000000000000000000000000000000000000..654cb09a4c0239d9a385ac3a23c4c0d1346ed901 GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheS^+*Gu0UEvT(>Z^>fC>Z(Er-uRtfu<&ip^k5DX;y7#P02W!V0oA?^Qv zTLxRUwqBs>!=5gVAr}70DF+xsj+Fj)o*8j)?)2#gt7aas;bKr$oL%#_=HQoS&a)4i zSS`50TEHB(cL&e0HvNB%hCDXazj%5Q6Ry4fnZUz*g}eE7v|cl7NNveM6TJoeTmLS~ zP@1vq2CGiMtj321Q`(p!EY|$1(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 1.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + } +} diff --git a/Projectiles/Shimada/ShimadaWave.png b/Projectiles/Shimada/ShimadaWave.png new file mode 100644 index 0000000000000000000000000000000000000000..f9103357005a982b8fc0e637c108edab9b47794d GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCik>1AIbUf%Nh!+gm_N%G1R$#KZgTK|@9$@6dv;{<*yT3JeSuA7#P27 SNpS{>GkCiCxvX(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 1.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + } +} diff --git a/Projectiles/Shimada/ShimadaWaveNihon.png b/Projectiles/Shimada/ShimadaWaveNihon.png new file mode 100644 index 0000000000000000000000000000000000000000..f9103357005a982b8fc0e637c108edab9b47794d GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCik>1AIbUf%Nh!+gm_N%G1R$#KZgTK|@9$@6dv;{<*yT3JeSuA7#P27 SNpS{>GkCiCxvX 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Dig, Projectile.position); + Vector2 position = Projectile.position; + Vector2 rotVector = Utils.ToRotationVector2(Projectile.rotation - MathHelper.ToRadians(90f)); + _ = position + rotVector * 16f; + int item = 0; + if (Main.netMode == NetmodeID.MultiplayerClient && item >= 0) + { + NetMessage.SendData(MessageID.KillProjectile, -1, -1, null, 0, 0f, 0f, 0f, 0, 0, 0); + } + } +} diff --git a/Projectiles/Shortsword/CarbonKnife.png b/Projectiles/Shortsword/CarbonKnife.png new file mode 100644 index 0000000000000000000000000000000000000000..adf7492b42d76ece6db7e66da494003430d39ffb GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM6!3HE{=IMI@DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheLIFM@u0WbwTrc7oR%XUS@4vtq(Oy0%zvMJqS>K8DLI*3%lJ$E87`MCWli|? z=HulAsb}f0TD5kaePI?Tvr6MB2giY&X`x~4pXKlG#S3j3^P6 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Dig, Projectile.position); + Vector2 position = Projectile.position; + Vector2 rotVector = Utils.ToRotationVector2(Projectile.rotation - MathHelper.ToRadians(90f)); + _ = position + rotVector * 16f; + int item = 0; + if (Main.netMode == NetmodeID.MultiplayerClient && item >= 0) + { + NetMessage.SendData(MessageID.KillProjectile, -1, -1, null, 0, 0f, 0f, 0f, 0, 0, 0); + } + } +} diff --git a/Projectiles/Shortsword/CarbonKnifeNihon.png b/Projectiles/Shortsword/CarbonKnifeNihon.png new file mode 100644 index 0000000000000000000000000000000000000000..96af74fad748b29830e05b8525aff14ae91687e8 GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM6!3HE{=IMI@DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheLIFM@u0UE$Ozh;zldD#(s;;gM4Gq0~S9Uj0bgQR}V~BI*#%ItJ=_K2@K)?_9(DT*+;sP947k_u3Y| z{%Kf!o-s1W>qW2OiEFnm$87s}i937k3eoBREZ$3SKffE` zXVaz2tMcC4>S-*UVCc4_n9uXQw3EZ9Ufbj6=AYf%>DTnWmu2SGYcGn=o%lcBGRW&n s*L~@=TUUtYJQn(;UR~Xkd1o8@p-i_^o0z|!26}+O)78&qol`;+0H)V 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Dig, Projectile.position); + Vector2 position = Projectile.position; + Vector2 rotVector = Utils.ToRotationVector2(Projectile.rotation - MathHelper.ToRadians(90f)); + _ = position + rotVector * 16f; + int item = 0; + if (Main.netMode == NetmodeID.MultiplayerClient && item >= 0) + { + NetMessage.SendData(MessageID.KillProjectile, -1, -1, null, 0, 0f, 0f, 0f, 0, 0, 0); + } + } +} diff --git a/Projectiles/Shortsword/DeathBlossom.png b/Projectiles/Shortsword/DeathBlossom.png new file mode 100644 index 0000000000000000000000000000000000000000..adf7492b42d76ece6db7e66da494003430d39ffb GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM6!3HE{=IMI@DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheLIFM@u0WbwTrc7oR%XUS@4vtq(Oy0%zvMJqS>K8DLI*3%lJ$E87`MCWli|? z=HulAsb}f0TD5kaePI?Tvr6MB2giY&X`x~4pXKlG#S3j3^P6 5) + { + Vector2 newMove = Main.npc[i].Center - Projectile.Center; + float distanceTo = (float)Math.Sqrt(newMove.X * newMove.X + newMove.Y * newMove.Y); + if (distanceTo < distance) + { + move = newMove; + distance = distanceTo; + target = true; + } + } + } + if (target) + { + AdjustMagnitude(ref move); + Projectile.velocity = (5f * Projectile.velocity + move) / 6f; + AdjustMagnitude(ref Projectile.velocity); + } + if (Main.rand.NextBool(3)) + { + int num1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Dust obj = Main.dust[num1]; + obj.velocity *= 0f; + Main.dust[num1].noGravity = true; + } + } + + private void AdjustMagnitude(ref Vector2 vector) + { + float magnitude = (float)Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y); + if (magnitude > 16f) + { + vector *= 16f / magnitude; + } + } +} diff --git a/Projectiles/Shortsword/FumaShuriken.png b/Projectiles/Shortsword/FumaShuriken.png new file mode 100644 index 0000000000000000000000000000000000000000..2deb2a73ba170d7e56dd7a7c923922851b47a0ca GIT binary patch literal 488 zcmVP)Px#1ZP1_K>z@;j|==^1poj56;Mo6MF0Q*B_keOUSLH>NiZ=pe=1Xz1gXx~nAHg&%gm3}$kQn$7K##MN zNB4ngT&cT+mmkbezi=5vzFu7oEPqTv8O(>(4KRQ!?F_yUfTdboKCpUl7fd(ayoC}1 zGYxdX=D^Ydt`Owr69w}Je+Zxh^tgkig=gP?g6U;{et>CWa}iC;0iY!ykAX2%2q%Cm zfVm7kwZZ^;35Kp72GG+Ep%9@}8u$mL2?7k)!F+}b;7Z-N^7%l80MP)i>xcn^Ap}4U zz#DD&0NEh`^EsuhWlBPTkk3ImfnaVRIRtR!e^Px81LTANA)kZf$S((o1-Qx!Vtoz+ e16&R;FaQ8_tn=R=tY!}Y0000 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Dig, Projectile.position); + Vector2 position = Projectile.position; + Vector2 rotVector = Utils.ToRotationVector2(Projectile.rotation - MathHelper.ToRadians(90f)); + _ = position + rotVector * 16f; + int item = 0; + if (Main.netMode == NetmodeID.MultiplayerClient && item >= 0) + { + NetMessage.SendData(MessageID.KillProjectile, -1, -1, null, 0, 0f, 0f, 0f, 0, 0, 0); + } + } +} diff --git a/Projectiles/Shortsword/GoldenKnife.png b/Projectiles/Shortsword/GoldenKnife.png new file mode 100644 index 0000000000000000000000000000000000000000..e4dfc6de410c5b4a668b9ae31c3ca66cfcf05c88 GIT binary patch literal 315 zcmV-B0mS}^P)Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*I}s78?*DMZ*gvR@|NsB;@^;$PUc`k- z8r-470002KNklb0JFKX z!~)DO?>PacX 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Dig, Projectile.position); + Vector2 position = Projectile.position; + Vector2 rotVector = Utils.ToRotationVector2(Projectile.rotation - MathHelper.ToRadians(90f)); + _ = position + rotVector * 16f; + int item = 0; + if (Main.netMode == NetmodeID.MultiplayerClient && item >= 0) + { + NetMessage.SendData(MessageID.KillProjectile, -1, -1, null, 0, 0f, 0f, 0f, 0, 0, 0); + } + } +} diff --git a/Projectiles/Shortsword/RainbowKnife.png b/Projectiles/Shortsword/RainbowKnife.png new file mode 100644 index 0000000000000000000000000000000000000000..b67a22ab9cb81fd16887845f4d506cf9b75f6e12 GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM6!3HE{=IMI@DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(ehex&b~Ru0UEvTsN5Mj9%V3x5N9wx7)9~ApdBm^xY1bF5QWjJmpk<+6qIf z!mSc)6>VR?kX;Sb@WRu@F~q_@`2cIkk<$Oo22;8jXDl!|*&yh3nDLC*-|L?b{^?%S znegk}>C+lnC$|YMKX%*FC!vQs;J#bu1%3$Qpnflyajf7ZJ49si^!fu5;tTG$eYx}D zw~eyIVTN5cH_bL3@bMJ(X5>CoWymp`=(4y&r}XwUDjph^0#=Fo!ky|QL){wvoFjJdNG~KZDE{oc2W#e!oSb?6Kp(x z8y!D#M69Qf@zw1gIxjUO9y6uf?htNp5*IskgJGtbkpTn4(?5RGW`-Vp0rWG2r>mdK II;Vst0BDkw+yDRo literal 0 HcmV?d00001 diff --git a/Projectiles/Shortsword/Substitute.cs b/Projectiles/Shortsword/Substitute.cs new file mode 100644 index 0000000..9fbb42d --- /dev/null +++ b/Projectiles/Shortsword/Substitute.cs @@ -0,0 +1,14 @@ +using Terraria; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.Shortsword; + +public class Substitute : ModProjectile +{ + public override void SetDefaults() + { + Projectile.width = 32; + Projectile.height = 32; + Projectile.friendly = true; + } +} diff --git a/Projectiles/Shortsword/Substitute.png b/Projectiles/Shortsword/Substitute.png new file mode 100644 index 0000000000000000000000000000000000000000..f9103357005a982b8fc0e637c108edab9b47794d GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCik>1AIbUf%Nh!+gm_N%G1R$#KZgTK|@9$@6dv;{<*yT3JeSuA7#P27 SNpS{>GkCiCxvX 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Dig, Projectile.position); + Vector2 position = Projectile.position; + Vector2 rotVector = Utils.ToRotationVector2(Projectile.rotation - MathHelper.ToRadians(90f)); + _ = position + rotVector * 16f; + int item = 0; + if (Main.netMode == NetmodeID.MultiplayerClient && item >= 0) + { + NetMessage.SendData(MessageID.KillProjectile, -1, -1, null, 0, 0f, 0f, 0f, 0, 0, 0); + } + } + + public override void AI() + { + if (Main.rand.NextBool(3)) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 1f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + } +} diff --git a/Projectiles/Shuriken/CarbonShuriken.png b/Projectiles/Shuriken/CarbonShuriken.png new file mode 100644 index 0000000000000000000000000000000000000000..e575c8e18a835d34817c6c575da8a93f82a8449c GIT binary patch literal 379 zcmV->0fhdEP)Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*3l}bigo175*k-TAPE=eG7$Yb;RWo*w zm|HLC0002~Nkl&o`K%v|{Wg%3CfuS@f9-LrcuKD`%5+V#h8ex9)3yJxU zZUcx95(mkH)WPJzCV)6F=k7gx3DsmMz@~-~CI}J$0c;v!0A?dhJy 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Dig, Projectile.position); + Vector2 position = Projectile.position; + Vector2 rotVector = Utils.ToRotationVector2(Projectile.rotation - MathHelper.ToRadians(90f)); + _ = position + rotVector * 16f; + int item = 0; + if (Main.netMode == NetmodeID.MultiplayerClient && item >= 0) + { + NetMessage.SendData(MessageID.KillProjectile, -1, -1, null, 0, 0f, 0f, 0f, 0, 0, 0); + } + } + + public override void AI() + { + if (Main.rand.NextBool(3)) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 1f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + } +} diff --git a/Projectiles/Shuriken/CarbonShurikenNihon.png b/Projectiles/Shuriken/CarbonShurikenNihon.png new file mode 100644 index 0000000000000000000000000000000000000000..6573d9c217f025c3bf55b7dd5b8f2c7972129974 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+o!3HFmxV|j}QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`MFV_7T!FNhq{Oq||NoSg{I#>#clFf&|NkTIzfl589Po5;46*QE8)(gS z$U$K4SAl~j^A27*6}+-{>(ug1UV>Z1jxbA{6z$2WD2xjzD^qyTY_R`(nws^ag&NNT zV}*^k{%2ig7iU;?`R>W1b*ty`hReM2+RORi)ZIK`|LetNrR7D{7OT<^i{5`H{xyeX zE9buO+}Y{VrZYG({C_)FJ974sWx|nqrwYHuGz%&e2 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Dig, Projectile.position); + Vector2 position = Projectile.position; + Vector2 rotVector = Utils.ToRotationVector2(Projectile.rotation - MathHelper.ToRadians(90f)); + _ = position + rotVector * 16f; + int item = 0; + if (Main.netMode == NetmodeID.MultiplayerClient && item >= 0) + { + NetMessage.SendData(MessageID.KillProjectile, -1, -1, null, 0, 0f, 0f, 0f, 0, 0, 0); + } + } + + public override void AI() + { + if (Main.rand.NextBool(3)) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 1f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + } +} diff --git a/Projectiles/Shuriken/HerosShuriken.png b/Projectiles/Shuriken/HerosShuriken.png new file mode 100644 index 0000000000000000000000000000000000000000..5f59af8640cd530f32013c7244010b5ff80c733a GIT binary patch literal 369 zcmV-%0gnEOP)Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*3l}b?p0Qg0qPfY*S1&#I|Lb~ejbh|O zenU%<0002=Nklht z{PF+w|D7jK{;$gE{f}%AGQe;)EN~80ra4649D}l-|FeJ_DVOVH(lY!&uLWY&buNl6+yo3k?kjAM0i~c7) zamJb?L41%nNFJmPMII)JFD+wL0}}+%xHQ55ObtvuBTNH|KL`Mb9tH*gYD|JM9LU%| P00000NkvXXu0mjfuc?tQ literal 0 HcmV?d00001 diff --git a/Projectiles/Shuriken/OniSlayer.cs b/Projectiles/Shuriken/OniSlayer.cs new file mode 100644 index 0000000..f5c1f01 --- /dev/null +++ b/Projectiles/Shuriken/OniSlayer.cs @@ -0,0 +1,57 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.Audio; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Projectiles.Shuriken; + +public class OniSlayer : ModProjectile +{ + private const float maxTicks = 45f; + + private const int alphaReducation = 25; + + public override void SetDefaults() + { + Projectile.width = 19; + Projectile.height = 21; + Projectile.aiStyle = 2; + Projectile.friendly = true; + Projectile.penetrate = 1; + } + + public override bool? Colliding(Rectangle projHitbox, Rectangle targetHitbox) + { + if (targetHitbox.Width > 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Dig, Projectile.position); + Vector2 position = Projectile.position; + Vector2 rotVector = Utils.ToRotationVector2(Projectile.rotation - MathHelper.ToRadians(90f)); + _ = position + rotVector * 16f; + int item = 0; + if (Main.netMode == NetmodeID.MultiplayerClient && item >= 0) + { + NetMessage.SendData(MessageID.KillProjectile, -1, -1, null, 0, 0f, 0f, 0f, 0, 0, 0); + } + } + + public override void AI() + { + if (Main.rand.NextBool(3)) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 1f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + } +} diff --git a/Projectiles/Shuriken/OniSlayer.png b/Projectiles/Shuriken/OniSlayer.png new file mode 100644 index 0000000000000000000000000000000000000000..28b15ed6388af49b437d7227d7fe29a8d1ad4e7f GIT binary patch literal 411 zcmV;M0c8G(P)Px#1ZP1_K>z@;j|==^1poj57*I@9MF0Q*4;CR#R9uFHg4F;3{{R5K)ygP3Rk3o5 z^Z)<>AxT6*R5(v#zz6un6#qk+SOF81CJW%y46@bU&Kj@ncx|>YP=m6t1FV`sww324 zg4y_N$7{2HO&yel9l$k%Oh>mt3rfQPx*8Ol*Y976;za+D7$^%7fH(n20Z`}vww5Na z4SpdpaQZ4x9NAzHV209Qz`-rp@V~N%p>xuFuqzloyk}rx=Vmx~=qSTBeOHDr@18OI z{Q990svHx5Oy76)6xeo{D_|~wDuDw=C=CW61t5RH;`hXbTVNUnKrZOP7dFaT+U z*#@%-hCzH}ai|sufN2B;3QPfr2JtnlLQ(k027sLa;=rN-<}{cXGG9`~1gz%yoikuD z7Gy;rfb6GR&wfH#aB;AWP(%KMZ3STv4;|nW=ND7_4*+s?q`TbX)*Ju;002ovPDHLk FV1h9tpacK_ literal 0 HcmV?d00001 diff --git a/Projectiles/Shuriken/SparklingDemon.cs b/Projectiles/Shuriken/SparklingDemon.cs new file mode 100644 index 0000000..94fb158 --- /dev/null +++ b/Projectiles/Shuriken/SparklingDemon.cs @@ -0,0 +1,57 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.Audio; +using Terraria.ModLoader; +using Terraria.ID; + +namespace FabusMod.Projectiles.Shuriken; + +public class SparklingDemon : ModProjectile +{ + private const float maxTicks = 45f; + + private const int alphaReducation = 25; + + public override void SetDefaults() + { + Projectile.width = 19; + Projectile.height = 21; + Projectile.aiStyle = 2; + Projectile.friendly = true; + Projectile.penetrate = 1; + } + + public override bool? Colliding(Rectangle projHitbox, Rectangle targetHitbox) + { + if (targetHitbox.Width > 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Dig, Projectile.position); + Vector2 position = Projectile.position; + Vector2 rotVector = Utils.ToRotationVector2(Projectile.rotation - MathHelper.ToRadians(90f)); + _ = position + rotVector * 16f; + int item = 0; + if (Main.netMode == NetmodeID.MultiplayerClient && item >= 0) + { + NetMessage.SendData(MessageID.KillProjectile, -1, -1, null, 0, 0f, 0f, 0f, 0, 0, 0); + } + } + + public override void AI() + { + if (Main.rand.NextBool(3)) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 1f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + } +} diff --git a/Projectiles/Shuriken/SparklingDemon.png b/Projectiles/Shuriken/SparklingDemon.png new file mode 100644 index 0000000000000000000000000000000000000000..a17f3f484f3af41f1c7308310993a3f7cc7d990a GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+o!3HFmxV|j}QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`B?5dxT!A#dnBtLE&s$gGqP9OuJofeT=a&mhmVJU5B$===%IYZY=*A^&m-k-=dBJ5KFS&a30w{)9sHlQd-@X@e1syI z)Y{IlOST9VoalPc 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Dig, Projectile.position); + Vector2 position = Projectile.position; + Vector2 rotVector = Utils.ToRotationVector2(Projectile.rotation - MathHelper.ToRadians(90f)); + _ = position + rotVector * 16f; + int item = 0; + if (Main.netMode == NetmodeID.MultiplayerClient && item >= 0) + { + NetMessage.SendData(MessageID.KillProjectile, -1, -1, null, 0, 0f, 0f, 0f, 0, 0, 0); + } + } + + public override void AI() + { + if (Main.rand.NextBool(6)) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 1f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = false; + } + } +} diff --git a/Projectiles/Shuriken/StonePlatedShurikenProj.png b/Projectiles/Shuriken/StonePlatedShurikenProj.png new file mode 100644 index 0000000000000000000000000000000000000000..377a543ebeb9aaf940984bb2ef49646d6d367d3a GIT binary patch literal 411 zcmV;M0c8G(P)Px#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*HzpYNlmE$00A3GL_t(IPkoXxj>0eyMIH74t|`)?Rf<$J6p`pS0#eF7!fLB6;Q-XM zh>|N%P^F-uibMo-L2Q#PasdbZktcGJNuCsWX5#N}kFAE7eU2*|ij3?iQjWBZWO~Ix z5L9s-(`ZW_2A%Ufw~@@Cc=L0zk<5o38(^zZ6shZTPPs8=RTRaV5{F)A-}hdb>@m<;NGz$1ij8*iz&syWTJkz2XTSUnb{Gd-SMKb$D>hqX^7Ef zJ}X3UzrX$|N4@=E>aFmLLWh$ip(Zg9;_3kYWm!f#a^`#eUha_+I3s_^admh!VHnms zpdW2lUfG2W0MGHbhysv=3_HR-O;hFZgBTLE!6Mp}>J1a`f(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + } + + public override bool OnTileCollide(Vector2 oldVelocity) + { + Projectile projectile = Projectile; + projectile.penetrate--; + if (Projectile.penetrate <= 0) + { + Projectile.Kill(); + } + else + { + Projectile.ai[0] += 0.1f; + if (Projectile.velocity.X != oldVelocity.X) + { + Projectile.velocity.X = 0f - oldVelocity.X; + } + if (Projectile.velocity.Y != oldVelocity.Y) + { + Projectile.velocity.Y = 0f - oldVelocity.Y; + } + Projectile projectile2 = Projectile; + projectile2.velocity = projectile2.velocity * 0.75f; + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } + return false; + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } +} diff --git a/Projectiles/SorcerousStaff/GoldenStaffProj.png b/Projectiles/SorcerousStaff/GoldenStaffProj.png new file mode 100644 index 0000000000000000000000000000000000000000..ffbaaeac10eef8b67f82d691fb56afcdff3a3e56 GIT binary patch literal 394 zcmV;50d@X~P)Px#1ZP1_K>z@;j|==^1poj59#BkFMF0Q*I}s7`@^Dts@wXQE-!P>#{{~d>G zKd6lOMzN*<009a~L_t(YOTCn_4#7|qhD*d|=xAYL5*|Q2fWb3}U^5#$fXx#$BH|GY zNQgmLg&2fM7v1^@mHWHD$gS$&)|WJ2&OpALlhz2MY?_{Uw>2;rj5VMw=RD!lG_+0uz=*|E{Ts-EcqO(7z+1?kea?(SIRTSk@b6 oFb9(), 0f, 0f, 0, default, 1f); + Main.dust[dust2].scale = 0.9f; + Dust obj = Main.dust[dust2]; + obj.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + } + if (Main.rand.NextBool(4)) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj2 = Main.dust[dust1]; + obj2.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + } + + public override bool OnTileCollide(Vector2 oldVelocity) + { + Projectile projectile = Projectile; + projectile.penetrate--; + if (Projectile.penetrate <= 0) + { + Projectile.Kill(); + } + else + { + Projectile.ai[0] += 0.1f; + if (Projectile.velocity.X != oldVelocity.X) + { + Projectile.velocity.X = 0f - oldVelocity.X; + } + if (Projectile.velocity.Y != oldVelocity.Y) + { + Projectile.velocity.Y = 0f - oldVelocity.Y; + } + Projectile projectile2 = Projectile; + projectile2.velocity *= 0.75f; + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } + return false; + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Main.rand.NextBool(4)) + { + target.AddBuff(20, 180, false); + } + } +} diff --git a/Projectiles/SorcerousStaff/NatureStaffProj.png b/Projectiles/SorcerousStaff/NatureStaffProj.png new file mode 100644 index 0000000000000000000000000000000000000000..776d5ed10f915c4cefa13f11153d541f698e018d GIT binary patch literal 426 zcmV;b0agBqP)Px#1ZP1_K>z@;j|==^1poj5Ay7;0VhdBK~zXfV;}^S6iohuFqDfEFhOaG0V9;g05DhFI1vKoYgnuS z)At^n!K#OLE`qt_)QbCHKA%DtExLg7QHGOrE*HnM#24g~idSQesY>w~S0;V-1oWS&{ZGK?-(4kXc8a=G2?;=a6I zz+%n*&Q360aMc7%PY8zavAG5Ws26Kc8lKlCO_>4a!vM@hL2svlX&8XT7VYyII+&n+ z28;;->W2{wpobNDETM-D4A9O+FaUE|NLUh>kIN-6Ks6T;1R$5eT!#-($wdqd03md9 U^q)D%9RL6T07*qoM6N<$f?PMH{Qv*} literal 0 HcmV?d00001 diff --git a/Projectiles/SorcerousStaff/SorcerousHellstaffProj.cs b/Projectiles/SorcerousStaff/SorcerousHellstaffProj.cs new file mode 100644 index 0000000..ef27d40 --- /dev/null +++ b/Projectiles/SorcerousStaff/SorcerousHellstaffProj.cs @@ -0,0 +1,89 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.Audio; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles.SorcerousStaff; + +public class SorcerousHellstaffProj : ModProjectile +{ + public override void SetDefaults() + { + Projectile.width = 10; + Projectile.height = 10; + Projectile.light = 1f; + AIType = 1; + Projectile.aiStyle = 1; + Projectile.friendly = true; + Projectile.penetrate = 1; + Projectile.timeLeft = 600; + } + + public override void AI() + { + if (Main.rand.NextBool(3)) + { + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust2].scale = 0.9f; + Dust obj = Main.dust[dust2]; + obj.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + } + if (Main.rand.NextBool(4)) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj2 = Main.dust[dust1]; + obj2.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + } + + public override bool OnTileCollide(Vector2 oldVelocity) + { + Projectile projectile = Projectile; + projectile.penetrate--; + if (Projectile.penetrate <= 0) + { + Projectile.Kill(); + } + else + { + Projectile.ai[0] += 0.1f; + if (Projectile.velocity.X != oldVelocity.X) + { + Projectile.velocity.X = 0f - oldVelocity.X; + } + if (Projectile.velocity.Y != oldVelocity.Y) + { + Projectile.velocity.Y = 0f - oldVelocity.Y; + } + Projectile projectile2 = Projectile; + projectile2.velocity *= 0.75f; + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } + return false; + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Main.rand.NextBool(6)) + { + target.AddBuff(24, 180, false); + } + } +} diff --git a/Projectiles/SorcerousStaff/SorcerousHellstaffProj.png b/Projectiles/SorcerousStaff/SorcerousHellstaffProj.png new file mode 100644 index 0000000000000000000000000000000000000000..83767befdbb64683b65b366d6219d51a2b33de64 GIT binary patch literal 403 zcmV;E0c`$>P)Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*A|Nz=fW%i(tx89K`f3XKqZ^(mHQzoX zh~2520003NNkl3@(QnC5*B37gN~E`e!;`gX8>>bVF?GpOr}Ls<~8C@2q1Gai2r zrroc1fa#r@6<`|XG8mwJtbtqta}6>8xdh!cAVB>vg2fUntYV)p2GbpH%fK`&Y#6Y( z1_Y?)B8(), 0f, 0f, 0, default, 1f); + Main.dust[dust2].scale = 0.9f; + Dust obj = Main.dust[dust2]; + obj.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + } + if (Main.rand.NextBool(4)) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj2 = Main.dust[dust1]; + obj2.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + } + + public override bool OnTileCollide(Vector2 oldVelocity) + { + Projectile projectile = Projectile; + projectile.penetrate--; + if (Projectile.penetrate <= 0) + { + Projectile.Kill(); + } + else + { + Projectile.ai[0] += 0.1f; + if (Projectile.velocity.X != oldVelocity.X) + { + Projectile.velocity.X = 0f - oldVelocity.X; + } + if (Projectile.velocity.Y != oldVelocity.Y) + { + Projectile.velocity.Y = 0f - oldVelocity.Y; + } + Projectile projectile2 = Projectile; + projectile2.velocity *= 0.75f; + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } + return false; + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + if (Main.rand.NextBool(6)) + { + target.AddBuff(24, 180, false); + } + } +} diff --git a/Projectiles/SorcerousStaff/SorcerousHellstaffProjWhite.png b/Projectiles/SorcerousStaff/SorcerousHellstaffProjWhite.png new file mode 100644 index 0000000000000000000000000000000000000000..964bd840916ff5e59c009918e277fe08fe6addea GIT binary patch literal 402 zcmV;D0d4+?P)Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*A|N#X|Np+#%7%o3o=Jh&a+Xy-adSp_ zHz!C;0003MNkl+k15Bg4jA||-XwZDGCNL%hs24`C zu$i-U8d$(l3zA-7u_QJ3448hFYyzfFtlt5q(Zh;rE@FYwaF@UU%q7RJzXsFWGna$u z%;}L}8s;(>pna@?Tmo|qG61;*-8CRUeHVdZ2^LczpwQz9##jIT0Ao2yns!M7cnpZ0P(), 0f, 0f, 0, default, 1f); + Main.dust[dust2].scale = 0.9f; + Dust obj = Main.dust[dust2]; + obj.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + } + if (Main.rand.NextBool(4)) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj2 = Main.dust[dust1]; + obj2.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + } + + public override bool OnTileCollide(Vector2 oldVelocity) + { + Projectile projectile = Projectile; + projectile.penetrate--; + if (Projectile.penetrate <= 0) + { + Projectile.Kill(); + } + else + { + Projectile.ai[0] += 0.1f; + if (Projectile.velocity.X != oldVelocity.X) + { + Projectile.velocity.X = 0f - oldVelocity.X; + } + if (Projectile.velocity.Y != oldVelocity.Y) + { + Projectile.velocity.Y = 0f - oldVelocity.Y; + } + Projectile projectile2 = Projectile; + projectile2.velocity *= 0.75f; + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } + return false; + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } +} diff --git a/Projectiles/SorcerousStaff/SorcerousStaffProj.png b/Projectiles/SorcerousStaff/SorcerousStaffProj.png new file mode 100644 index 0000000000000000000000000000000000000000..74f3f0b7a131cd91dc88c54262ea843cada7948d GIT binary patch literal 446 zcmV;v0YUzWP)Px#1ZP1_K>z@;j|==^1poj58&FJCMF0Q*GCVn3Zs9OsfB%Z? z9hkn_=mMr;;Pc<3V4D7U?bxCqFeU`3A4V{M9#-gS20d(GfOal|0hr5pnXSQmTrPnD os=0_D0J#k2I(&diE@EH+0A@dRLzh(~*Z=?k07*qoM6N<$f(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } + + public override bool OnTileCollide(Vector2 oldVelocity) + { + Projectile projectile = Projectile; + projectile.penetrate--; + if (Projectile.penetrate <= 0) + { + Projectile.Kill(); + } + else + { + Projectile.ai[0] += 0.1f; + if (Projectile.velocity.X != oldVelocity.X) + { + Projectile.velocity.X = 0f - oldVelocity.X; + } + if (Projectile.velocity.Y != oldVelocity.Y) + { + Projectile.velocity.Y = 0f - oldVelocity.Y; + } + Projectile projectile2 = Projectile; + projectile2.velocity = projectile2.velocity * 0.75f; + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } + return false; + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } +} diff --git a/Projectiles/SorcerousStaff/TranquilityProj.png b/Projectiles/SorcerousStaff/TranquilityProj.png new file mode 100644 index 0000000000000000000000000000000000000000..7510ef6a404cca51533f0abf93056f361f8d6ae4 GIT binary patch literal 414 zcmV;P0b%}$P)Px#1ZP1_K>z@;j|==^1poj5Bv4FLMF0Q*Bo{4lReFGbmRCApJs~~+JpliX0RPJX z&i?>a|0@7y|CnQGO#lD^7)eAyR7gu>AOuvzb^n7fl#3HEL1~HsBb3GfFjx56`GWbI z4{Zk1cV1q`s)u$ig1ICnBNNR3c=ESN@j8TDO+%Ox;y=FDL*EhVW8 zrqNwSH5XwR1ab+oYx-WafiWRKH5aiEiY0~+2qm=!5;o7C-v!gg%En+C2*CQO7i;J# z7zX+*q2Xc+q0XB?=uYbdFb#9r^KT!(H0@#y4nQseVvtKfxSc^8j6p7exds_fKa6n2 z+P|Zx!8DV#DVRog4b{U4Bd;N)4=`A%GapRb?zRKdFaUE2?eiKs2)~jD#)JU%!w3e@ z!wOd{(Y}O42QZgOatVO>xLg7QRC5tQ0CE}3b@%|4T*SZt03UdOmNh9OZ~y=R07*qo IM6N<$f@YDLJpcdz literal 0 HcmV?d00001 diff --git a/Projectiles/SpectralMoonBolt.cs b/Projectiles/SpectralMoonBolt.cs new file mode 100644 index 0000000..7fc4560 --- /dev/null +++ b/Projectiles/SpectralMoonBolt.cs @@ -0,0 +1,69 @@ +using Terraria; +using Terraria.Audio; +using Terraria.ID; +using Terraria.ModLoader; + +namespace FabusMod.Projectiles; + +public class SpectralMoonBolt : ModProjectile +{ + public override void SetDefaults() + { + Projectile.width = 16; + Projectile.height = 16; + Projectile.friendly = true; + Projectile.tileCollide = true; + Projectile.ignoreWater = true; + + Projectile.timeLeft = 600; + Projectile.light = 1f; + Projectile.penetrate = 1; + AIType = 1; + Projectile.aiStyle = 1; + } + + public override void AI() + { + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + SoundEngine.PlaySound(SoundID.Item1, Projectile.position); + } +} diff --git a/Projectiles/SpectralMoonBolt.png b/Projectiles/SpectralMoonBolt.png new file mode 100644 index 0000000000000000000000000000000000000000..7d7b8b939be8302a8c59269b7e773e3609a29f0f GIT binary patch literal 521 zcmV+k0`~ohP)Px#1ZP1_K>z@;j|==^1poj5hfqvZMF0Q*e(!^A?}}URoJsGlpX`E=?}EMmm#qJu zn*Xqf|H4A=zd`TOr_h3@;)34%me2o|f&bHh|K&mK;6dW(eX3S&tyUndlOL_6qm6c> zpLT_gR)wHeo6L5M&vsm`S4*v4IjwLft%5$!vpvtnAF8w;pu9b>+&!P%g= 8 && targetHitbox.Height > 8) + { + targetHitbox.Inflate(-targetHitbox.Width / 8, -targetHitbox.Height / 8); + } + return projHitbox.Intersects(targetHitbox); + } + + public override void Kill(int timeLeft) + { + SoundEngine.PlaySound(SoundID.Dig, Projectile.position); + Vector2 position = Projectile.position; + Vector2 rotVector = Utils.ToRotationVector2(Projectile.rotation - MathHelper.ToRadians(90f)); + _ = position + rotVector * 16f; + int item = 0; + if (Main.netMode == NetmodeID.MultiplayerClient && item >= 0) + { + NetMessage.SendData(MessageID.KillProjectile, -1, -1, null, 0, 0f, 0f, 0f, 0, 0, 0); + } + } + + public override void AI() + { + if (Main.rand.NextBool(3)) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 1f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 1f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 1f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } +} diff --git a/Projectiles/TheSpinningRainbow.png b/Projectiles/TheSpinningRainbow.png new file mode 100644 index 0000000000000000000000000000000000000000..6d6daaac03bc7004305395f3d06c05e790f2f658 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijK0(?STfwZE4tik_){}UMgpJ#aSgQ4KRFbj|aWNrAr;Xfl#^uGYZ{{RM{ z1cSl$|n}KTmZ#>T)aQHM+E&Il!4) zAm^%m%UZ&SIqHddT(a;}o+E3;Z|Hmp)A_7%&Hiesz*3{B?%(vP4(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + AnimateProjectile(); + } + + public override bool OnTileCollide(Vector2 oldVelocity) + { + Projectile projectile = Projectile; + projectile.penetrate--; + if (Projectile.penetrate <= 0) + { + Projectile.Kill(); + } + else + { + Projectile.ai[0] += 0.1f; + if (Projectile.velocity.X != oldVelocity.X) + { + Projectile.velocity.X = 0f - oldVelocity.X; + } + if (Projectile.velocity.Y != oldVelocity.Y) + { + Projectile.velocity.Y = 0f - oldVelocity.Y; + } + Projectile projectile2 = Projectile; + projectile2.velocity *= 0.75f; + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } + return false; + } + + public override void Kill(int timeLeft) + { + for (int i = 0; i < 5; i++) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + } + SoundEngine.PlaySound(SoundID.Item27, Projectile.position); + } + + public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) + { + Projectile.ai[0] += 0.1f; + Projectile.velocity *= 0.75f; + if (Main.rand.NextBool(1)) + { + target.AddBuff(44, 180, false); + } + } + + public void AnimateProjectile() + { + Projectile projectile = Projectile; + projectile.frameCounter++; + if (Projectile.frameCounter >= 3) + { + Projectile projectile2 = Projectile; + projectile2.frame++; + Projectile projectile3 = Projectile; + projectile3.frame %= 16; + Projectile.frameCounter = 0; + } + } +} diff --git a/Projectiles/TheWhisperingIcicle.png b/Projectiles/TheWhisperingIcicle.png new file mode 100644 index 0000000000000000000000000000000000000000..96d1084f3146ca72376d8b92ea4b15a6dd11b8fb GIT binary patch literal 8904 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 W2IV5v2Psbg0000 70) + { + Projectile projectile = Projectile; + projectile.alpha -= 15; + if (Projectile.alpha < 70) + { + Projectile.alpha = 70; + } + } + if (Projectile.localAI[0] == 0f) + { + AdjustMagnitude(ref Projectile.velocity); + Projectile.localAI[0] = 1f; + } + Vector2 move = Vector2.Zero; + float distance = 200f; + bool target = false; + for (int i = 0; i < 200; i++) + { + if (Main.npc[i].active && !Main.npc[i].dontTakeDamage && !Main.npc[i].friendly && Main.npc[i].lifeMax > 5) + { + Vector2 newMove = Main.npc[i].Center - Projectile.Center; + float distanceTo = (float)Math.Sqrt(newMove.X * newMove.X + newMove.Y * newMove.Y); + if (distanceTo < distance) + { + move = newMove; + distance = distanceTo; + target = true; + } + } + } + if (target) + { + AdjustMagnitude(ref move); + Projectile.velocity = (10f * Projectile.velocity + move) / 11f; + AdjustMagnitude(ref Projectile.velocity); + } + if (Utils.NextFloat(Main.rand) < 0.1f && Projectile.alpha <= 100) + { + int dust1 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust2 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + int dust3 = Dust.NewDust(Projectile.position, Projectile.width, Projectile.height, ModContent.DustType(), 0f, 0f, 0, default, 1f); + Main.dust[dust1].scale = 0.9f; + Dust obj = Main.dust[dust1]; + obj.velocity *= 0.1f; + Main.dust[dust1].noGravity = true; + Main.dust[dust2].scale = 0.9f; + Dust obj2 = Main.dust[dust2]; + obj2.velocity *= 0.1f; + Main.dust[dust2].noGravity = true; + Main.dust[dust3].scale = 0.9f; + Dust obj3 = Main.dust[dust3]; + obj3.velocity *= 0.1f; + Main.dust[dust3].noGravity = true; + } + } + + private void AdjustMagnitude(ref Vector2 vector) + { + float magnitude = (float)Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y); + if (magnitude > 6f) + { + vector *= 6f / magnitude; + } + } +} diff --git a/Projectiles/WishNeedle.png b/Projectiles/WishNeedle.png new file mode 100644 index 0000000000000000000000000000000000000000..eb8505b57362b26bb44983b97a7a82a1b3b8ecb2 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^Y(T8Q0U`}8Ig^1DV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}N0G|+7AYBhc#tijY4AJ!r+x|1C)ie0~2MX~q{8wbCcVqZJfuX*h;s1XI zuX=_l{~3hq8Pq@$9t{7(8R|DN{I6%o`_FKvp27S-L!N+o?**WVTRmMILoEDzCmrNG zK-%aOlJ%vhl6Ks@|c`B1x)(c7|dvSbVs7*ez)cbDl^!wAd wx4%iaQ|$I@<~4&^>n>jNO1*2cI^82*XpV|?-h(A)fF5A*boFyt=akR{0Cy9Le*gdg literal 0 HcmV?d00001 diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json new file mode 100644 index 0000000..8da89ff --- /dev/null +++ b/Properties/launchSettings.json @@ -0,0 +1,16 @@ +{ + "profiles": { + "Terraria": { + "commandName": "Executable", + "executablePath": "dotnet", + "commandLineArgs": "$(tMLPath)", + "workingDirectory": "$(tMLSteamPath)" + }, + "TerrariaServer": { + "commandName": "Executable", + "executablePath": "dotnet", + "commandLineArgs": "$(tMLServerPath)", + "workingDirectory": "$(tMLSteamPath)" + } + } +} \ No newline at end of file diff --git a/Tiles/RainbowStation.cs b/Tiles/RainbowStation.cs new file mode 100644 index 0000000..87e503e --- /dev/null +++ b/Tiles/RainbowStation.cs @@ -0,0 +1,46 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ModLoader; +using Terraria.ObjectData; + +namespace FabusMod.Tiles; + +public class RainbowStation : ModTile +{ + public override void SetStaticDefaults() + { + Main.tileFrameImportant[Type] = true; + Main.tileNoAttach[Type] = true; + Main.tileLavaDeath[Type] = false; + TileObjectData.newTile.CopyFrom(TileObjectData.Style5x4); + TileObjectData.addTile(Type); + AnimationFrameHeight = 72; + ModTranslation name = this.CreateMapEntryName(null); + name.SetDefault("Rainbow Station"); + AddMapEntry(new Color(113, 85, 122), name); + } + + public override void ModifyLight(int i, int j, ref float r, ref float g, ref float b) + { + r = 0.9f; + g = 0.1f; + b = 0.5f; + } + + public override void AnimateTile(ref int frame, ref int frameCounter) + { + frameCounter++; + if (frameCounter > 4) + { + frameCounter = 0; + frame++; + frame %= 8; + } + } + + public override void KillMultiTile(int i, int j, int frameX, int frameY) + { + Item.NewItem(new EntitySource_Misc(""), i * 16, j * 16, 32, 16, ModContent.ItemType(), 1, false, 0, false, false); + } +} diff --git a/Tiles/RainbowStation.png b/Tiles/RainbowStation.png new file mode 100644 index 0000000000000000000000000000000000000000..730575cdf424404921918ac8df6d4f44bfb77c90 GIT binary patch literal 7258 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 literal 0 HcmV?d00001 diff --git a/Tiles/ReinforcedWorkBench.cs b/Tiles/ReinforcedWorkBench.cs new file mode 100644 index 0000000..bffbe6e --- /dev/null +++ b/Tiles/ReinforcedWorkBench.cs @@ -0,0 +1,31 @@ +using Microsoft.Xna.Framework; +using Terraria; +using Terraria.DataStructures; +using Terraria.ModLoader; +using Terraria.ObjectData; + +namespace FabusMod.Tiles; + +public class ReinforcedWorkBench : ModTile +{ + public override void SetStaticDefaults() + { + Main.tileSolidTop[Type] = true; + Main.tileFrameImportant[Type] = true; + Main.tileNoAttach[Type] = true; + Main.tileTable[Type] = true; + Main.tileLavaDeath[Type] = true; + TileObjectData.newTile.CopyFrom(TileObjectData.Style2x1); + TileObjectData.newTile.CoordinateHeights = new[] { 18 }; + TileObjectData.addTile(Type); + ModTranslation name = this.CreateMapEntryName(null); + name.SetDefault("Reinforced Work Bench"); + AddMapEntry(new Color(120, 120, 120), name); + AdjTiles = new int[1] { 18 }; + } + + public override void KillMultiTile(int i, int j, int frameX, int frameY) + { + Item.NewItem(new EntitySource_Misc(""), i * 16, j * 16, 32, 16, ModContent.ItemType(), 1, false, 0, false, false); + } +} diff --git a/Tiles/ReinforcedWorkBench.png b/Tiles/ReinforcedWorkBench.png new file mode 100644 index 0000000000000000000000000000000000000000..227f4d7c9b698a7dc61463f66698b23a570db027 GIT binary patch literal 551 zcmV+?0@(eDP)Px#1ZP1_K>z@;j|==^1poj5El^BUMJOmJ_jmb#fPl-(%QG`GrKP1~V`EfQQ~&?~ zKtMn@CK;4#P_cz)e_TajM>)n2+A^m}?m1}tVcnbb4jFZ5pKzvomFbq7%<#MoTns7d!he;}x z3hx3|Z`Rex*`@OQjNAE|+2PE0oP<@qn;Gw5qCbl%ul%1qG_DR~td9=Dd*?RHe#Jh+K2*40he@N+fQ$1QOyc&W`2RBg-mF0Tu?aVw z2iQ$0aI{ZF`w(HDQQAQzmu4p5+qWPNJGf<8$U*!H>AH>#d1fg}u#)JR#1)aaKE!xD pyBLRYd4`GKshOE52v#9U`UHU5xa<`Hu%-Y2002ovPDHLkV1h}$@?HP{ literal 0 HcmV?d00001 diff --git a/build.txt b/build.txt new file mode 100644 index 0000000..915aba5 --- /dev/null +++ b/build.txt @@ -0,0 +1,5 @@ +displayName = ♥ Fabu's Mod ♥ +author = Fabu +version = 3.0 +homepage = https://forums.terraria.org/index.php?threads/fabus-mod-version-1-0.60792/ +includePDB = true diff --git a/description.txt b/description.txt new file mode 100644 index 0000000..7862c61 --- /dev/null +++ b/description.txt @@ -0,0 +1,26 @@ +Fabu's Mod is a pretty cool mod, it does...this. Modify this file with a description of your mod.Fabu's Mod is a little Terraria Mod made with tModloader, which adds weapons that the player can upgrade as they progress in the game. +It also adds some new and unique weapons, which have surprisingly in-depth features. + +There are several weapons that you can craft in the beginning, and keep upgrading until post-Moon Lord. +Including one accessory. + +It currently adds: + +- 81 new weapons (With 14 different dyed variants for some weapons!) +- 11 new items +- 2 new tiles +- 1 new vanity sets (+ 3 Fox Ears!) +- 4 new tools; 1 Pickaxe, 1 Digging Claw, 1 Axe, and 1 Hamaxe +- 2 new pets +- 11 new accessories +Keep in mind that this mod is still a work-in-progress, and if anything seems unfinished or unrefined, there is a high chance that it will be finished/refined in a future update. + +For a list of recipes I suggest using jopojelly's Recipe Browser mod, or any other recipe list mod. + +Credit for a lot of the sprites goes to KregJoke. + +Fabu's Mod has a Discord Server! +Do you have any questions about the mod? Any suggestions? Any bugs you would like to see fixed? +Come join, and talk to me! + +Want a preview of some of the weapons? Check out the forum post! Link below. \ No newline at end of file diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..70d980085e01be49eb717c8f9491370684e07018 GIT binary patch literal 4539 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 Z{twqVZQGpRSepO<002ovPDHLkV1jpe)ZYLA literal 0 HcmV?d00001