7 Commits

Author SHA1 Message Date
YouHaveTrouble 4819ceee25 Merge pull request #3 from YouHaveTrouble/arcane-missle
Arcane missle accesory
2022-12-21 00:10:15 +01:00
YouHaveTrouble f46e4e1673 update descriptions 2022-12-21 00:08:21 +01:00
YouHaveTrouble bf556d059f arcane missle sprite 2022-12-21 00:08:02 +01:00
YouHaveTrouble eb1bf9014d working arcane missle 2022-12-14 23:45:26 +01:00
YouHaveTrouble 4a0f37f652 arcane missle initial logic 2022-12-07 23:44:15 +01:00
YouHaveTrouble 68025dd762 planera drops chlorophyte ore 2022-12-07 22:04:15 +01:00
YouHaveTrouble 4495fd9cc3 planera drops chlorophyte ore 2022-12-07 22:03:35 +01:00
8 changed files with 117 additions and 2 deletions
+15 -2
View File
@@ -4,6 +4,7 @@ using Terraria.GameContent.ItemDropRules;
using Terraria.ID; using Terraria.ID;
using Terraria.ModLoader; using Terraria.ModLoader;
using YHTMod.Items; using YHTMod.Items;
using YHTMod.Items.ArcaneMissle;
namespace YHTMod.Changes; namespace YHTMod.Changes;
@@ -12,8 +13,20 @@ public class NpcLoot : GlobalNPC
{ {
public override void ModifyNPCLoot(NPC npc, NPCLoot npcLoot) { public override void ModifyNPCLoot(NPC npc, NPCLoot npcLoot) {
int id = npc.type; int id = npc.type;
if (NPCID.Sets.CountsAsCritter[id]) { if (NPCID.Sets.CountsAsCritter[id]) {
npcLoot.Add(ItemDropRule.Common(ModContent.ItemType<MithrilPebbleOfPigSmiting>(), 400, 1, 1)); npcLoot.Add(ItemDropRule.Common(ModContent.ItemType<MithrilPebbleOfPigSmiting>(), 400));
} }
switch (id) {
case NPCID.Plantera:
npcLoot.Add(ItemDropRule.Common(ItemID.ChlorophyteOre, 1, 60, 80));
break;
case NPCID.Tim:
npcLoot.Add(ItemDropRule.Common(ModContent.ItemType<ArcaneMissle>()));
break;
}
} }
} }
+36
View File
@@ -0,0 +1,36 @@
using Terraria;
using Terraria.GameContent.Creative;
using Terraria.ID;
using Terraria.ModLoader;
namespace YHTMod.Items.ArcaneMissle;
public class ArcaneMissle : ModItem {
public override void SetStaticDefaults() {
DisplayName.SetDefault("Arcane Missle");
Tooltip.SetDefault(
"Magical projectile crits shoot a homing arcane missle\n" +
"Arcane missles cannot crit"
);
CreativeItemSacrificesCatalog.Instance.SacrificeCountNeededByItemId[Type] = 1;
}
public override void SetDefaults() {
Item.width = 64;
Item.height = 64;
Item.accessory = true;
Item.damage = 10;
Item.rare = ItemRarityID.LightRed;
Item.DamageType = DamageClass.Magic;
Item.noMelee = true;
Item.noUseGraphic = true;
}
public override void UpdateAccessory(Player player, bool hideVisual) {
player.GetModPlayer<YhtPlayer>().arcaneMissle = Item.damage;
base.UpdateAccessory(player, hideVisual);
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

@@ -0,0 +1,47 @@
using System;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace YHTMod.Items.ArcaneMissle;
public class ArcaneMissleBehavior : GlobalNPC {
public override void OnHitByProjectile(NPC npc, Projectile projectile, int damage, float knockback, bool crit) {
if (!crit) {
base.OnHitByProjectile(npc, projectile, damage, knockback, false);
return;
}
if (Main.netMode == NetmodeID.Server) {
return;
}
Player player = Main.LocalPlayer;
if (player.GetModPlayer<YhtPlayer>().arcaneMissle != 0 && projectile.DamageType == DamageClass.Magic) {
// player just crit with magic weapon while having arcane missle accessory
Projectile proj = Projectile.NewProjectileDirect(
projectile.GetSource_FromThis("arcaneMissle"),
Main.LocalPlayer.position,
npc.position.DirectionFrom(Main.LocalPlayer.position),
ProjectileID.MagicMissile,
player.GetModPlayer<YhtPlayer>().arcaneMissle,
0,
Main.LocalPlayer.whoAmI
);
proj.friendly = true;
proj.hostile = false;
proj.timeLeft = 300;
proj.maxPenetrate = 1;
proj.tileCollide = false;
proj.DamageType = DamageClass.Magic;
proj.aiStyle = ProjAIStyleID.MagicMissile;
// Prevent crits for the missles
proj.CritChance = Int32.MinValue;
}
base.OnHitByProjectile(npc, projectile, damage, knockback, true);
}
}
+15
View File
@@ -0,0 +1,15 @@
using Terraria.ModLoader;
namespace YHTMod;
public class YhtPlayer : ModPlayer {
public int arcaneMissle = 0;
public override void ResetEffects() {
this.arcaneMissle = 0;
base.ResetEffects();
}
}
+1 -1
View File
@@ -1,3 +1,3 @@
displayName = YHT Mod displayName = YHT Mod
author = YouHaveTrouble author = YouHaveTrouble
version = 1.0.1 version = 1.1.0
+2
View File
@@ -1,5 +1,7 @@
Bunch of random additions ranging from QoL to random references Bunch of random additions ranging from QoL to random references
All new content and changes are documented on the wiki.
Wiki: https://github.com/YouHaveTrouble/YHTMod/wiki Wiki: https://github.com/YouHaveTrouble/YHTMod/wiki
Source: https://github.com/YouHaveTrouble/YHTMod Source: https://github.com/YouHaveTrouble/YHTMod
+2
View File
@@ -1,5 +1,7 @@
A bunch of random additions ranging from QoL to random references A bunch of random additions ranging from QoL to random references
Steam workshop: https://steamcommunity.com/sharedfiles/filedetails/?id=2897350075
Mod wiki: https://github.com/YouHaveTrouble/YHTMod/wiki Mod wiki: https://github.com/YouHaveTrouble/YHTMod/wiki
Code: YouHaveTrouble Code: YouHaveTrouble