working arcane missle

This commit is contained in:
2022-12-14 23:45:26 +01:00
parent 4a0f37f652
commit eb1bf9014d
4 changed files with 48 additions and 9 deletions
+7 -2
View File
@@ -1,5 +1,6 @@
using Terraria;
using Terraria.GameContent.Creative;
using Terraria.ID;
using Terraria.ModLoader;
namespace YHTMod.Items.ArcaneMissle;
@@ -8,7 +9,10 @@ public class ArcaneMissle : ModItem {
public override void SetStaticDefaults() {
DisplayName.SetDefault("Arcane Missle");
Tooltip.SetDefault("Magic damage crits have a chance to shoot a homing arcane missle");
Tooltip.SetDefault(
"Magical projectile crits shoot a homing arcane missle\n" +
"Arcane missles cannot crit"
);
CreativeItemSacrificesCatalog.Instance.SacrificeCountNeededByItemId[Type] = 1;
}
@@ -17,6 +21,7 @@ public class ArcaneMissle : ModItem {
Item.height = 64;
Item.accessory = true;
Item.damage = 10;
Item.rare = ItemRarityID.LightRed;
Item.DamageType = DamageClass.Magic;
Item.noMelee = true;
Item.noUseGraphic = true;
@@ -24,7 +29,7 @@ public class ArcaneMissle : ModItem {
public override void UpdateAccessory(Player player, bool hideVisual) {
player.GetModPlayer<YhtPlayer>().arcaneMissle = true;
player.GetModPlayer<YhtPlayer>().arcaneMissle = Item.damage;
base.UpdateAccessory(player, hideVisual);
}
+28 -2
View File
@@ -1,4 +1,6 @@
using System;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace YHTMod.Items.ArcaneMissle;
@@ -10,10 +12,34 @@ public class ArcaneMissleBehavior : GlobalNPC {
base.OnHitByProjectile(npc, projectile, damage, knockback, false);
return;
}
if (Main.netMode == NetmodeID.Server) {
return;
}
Player player = Main.LocalPlayer;
if (player.GetModPlayer<YhtPlayer>().arcaneMissle && projectile.DamageType == DamageClass.Magic) {
// player just crit with magic weapon while having arcane missle accessory equipped
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);