8 Commits

9 changed files with 127 additions and 2 deletions
+14 -1
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);
}
}
+2
View File
@@ -1,6 +1,7 @@
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework;
using Terraria; using Terraria;
using Terraria.DataStructures; using Terraria.DataStructures;
using Terraria.GameContent.Creative;
using Terraria.ID; using Terraria.ID;
using Terraria.ModLoader; using Terraria.ModLoader;
using YHTMod.Buffs; using YHTMod.Buffs;
@@ -15,6 +16,7 @@ public class ToclafaneStaff : ModItem {
Tooltip.SetDefault("Summons a toclafane to remove population for you"); Tooltip.SetDefault("Summons a toclafane to remove population for you");
ItemID.Sets.GamepadWholeScreenUseRange[Item.type] = true; // This lets the player target anywhere on the whole screen while using a controller. ItemID.Sets.GamepadWholeScreenUseRange[Item.type] = true; // This lets the player target anywhere on the whole screen while using a controller.
ItemID.Sets.LockOnIgnoresCollision[Item.type] = true; ItemID.Sets.LockOnIgnoresCollision[Item.type] = true;
CreativeItemSacrificesCatalog.Instance.SacrificeCountNeededByItemId[Type] = 1;
} }
public override void SetDefaults() { public override void SetDefaults() {
+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
+3
View File
@@ -1,5 +1,8 @@
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
Source: https://github.com/YouHaveTrouble/YHTMod Source: https://github.com/YouHaveTrouble/YHTMod
Code: YouHaveTrouble Code: YouHaveTrouble
+9
View File
@@ -0,0 +1,9 @@
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
Code: YouHaveTrouble
Sprites: YouHaveTrouble, Patrxon