mirror of
https://github.com/YouHaveTrouble/YHTMod.git
synced 2026-05-11 21:56:54 +00:00
working arcane missle
This commit is contained in:
+11
-3
@@ -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;
|
||||||
@@ -14,11 +15,18 @@ public class NpcLoot : GlobalNPC
|
|||||||
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));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NPCID.Plantera == id) {
|
switch (id) {
|
||||||
|
case NPCID.Plantera:
|
||||||
npcLoot.Add(ItemDropRule.Common(ItemID.ChlorophyteOre, 1, 60, 80));
|
npcLoot.Add(ItemDropRule.Common(ItemID.ChlorophyteOre, 1, 60, 80));
|
||||||
}
|
break;
|
||||||
|
case NPCID.Tim:
|
||||||
|
npcLoot.Add(ItemDropRule.Common(ModContent.ItemType<ArcaneMissle>()));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using Terraria;
|
using Terraria;
|
||||||
using Terraria.GameContent.Creative;
|
using Terraria.GameContent.Creative;
|
||||||
|
using Terraria.ID;
|
||||||
using Terraria.ModLoader;
|
using Terraria.ModLoader;
|
||||||
|
|
||||||
namespace YHTMod.Items.ArcaneMissle;
|
namespace YHTMod.Items.ArcaneMissle;
|
||||||
@@ -8,7 +9,10 @@ public class ArcaneMissle : ModItem {
|
|||||||
|
|
||||||
public override void SetStaticDefaults() {
|
public override void SetStaticDefaults() {
|
||||||
DisplayName.SetDefault("Arcane Missle");
|
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;
|
CreativeItemSacrificesCatalog.Instance.SacrificeCountNeededByItemId[Type] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -17,6 +21,7 @@ public class ArcaneMissle : ModItem {
|
|||||||
Item.height = 64;
|
Item.height = 64;
|
||||||
Item.accessory = true;
|
Item.accessory = true;
|
||||||
Item.damage = 10;
|
Item.damage = 10;
|
||||||
|
Item.rare = ItemRarityID.LightRed;
|
||||||
Item.DamageType = DamageClass.Magic;
|
Item.DamageType = DamageClass.Magic;
|
||||||
Item.noMelee = true;
|
Item.noMelee = true;
|
||||||
Item.noUseGraphic = true;
|
Item.noUseGraphic = true;
|
||||||
@@ -24,7 +29,7 @@ public class ArcaneMissle : ModItem {
|
|||||||
|
|
||||||
public override void UpdateAccessory(Player player, bool hideVisual) {
|
public override void UpdateAccessory(Player player, bool hideVisual) {
|
||||||
|
|
||||||
player.GetModPlayer<YhtPlayer>().arcaneMissle = true;
|
player.GetModPlayer<YhtPlayer>().arcaneMissle = Item.damage;
|
||||||
|
|
||||||
base.UpdateAccessory(player, hideVisual);
|
base.UpdateAccessory(player, hideVisual);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
|
using System;
|
||||||
using Terraria;
|
using Terraria;
|
||||||
|
using Terraria.ID;
|
||||||
using Terraria.ModLoader;
|
using Terraria.ModLoader;
|
||||||
|
|
||||||
namespace YHTMod.Items.ArcaneMissle;
|
namespace YHTMod.Items.ArcaneMissle;
|
||||||
@@ -10,10 +12,34 @@ public class ArcaneMissleBehavior : GlobalNPC {
|
|||||||
base.OnHitByProjectile(npc, projectile, damage, knockback, false);
|
base.OnHitByProjectile(npc, projectile, damage, knockback, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Main.netMode == NetmodeID.Server) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Player player = Main.LocalPlayer;
|
Player player = Main.LocalPlayer;
|
||||||
|
|
||||||
if (player.GetModPlayer<YhtPlayer>().arcaneMissle && projectile.DamageType == DamageClass.Magic) {
|
if (player.GetModPlayer<YhtPlayer>().arcaneMissle != 0 && projectile.DamageType == DamageClass.Magic) {
|
||||||
// player just crit with magic weapon while having arcane missle accessory equipped
|
// 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);
|
base.OnHitByProjectile(npc, projectile, damage, knockback, true);
|
||||||
|
|||||||
+2
-2
@@ -4,11 +4,11 @@ namespace YHTMod;
|
|||||||
|
|
||||||
public class YhtPlayer : ModPlayer {
|
public class YhtPlayer : ModPlayer {
|
||||||
|
|
||||||
public bool arcaneMissle = false;
|
public int arcaneMissle = 0;
|
||||||
|
|
||||||
public override void ResetEffects() {
|
public override void ResetEffects() {
|
||||||
|
|
||||||
this.arcaneMissle = false;
|
this.arcaneMissle = 0;
|
||||||
|
|
||||||
base.ResetEffects();
|
base.ResetEffects();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user