2 Commits

11 changed files with 63 additions and 117 deletions
+1 -14
View File
@@ -4,7 +4,6 @@ using Terraria.GameContent.ItemDropRules;
using Terraria.ID;
using Terraria.ModLoader;
using YHTMod.Items;
using YHTMod.Items.ArcaneMissle;
namespace YHTMod.Changes;
@@ -13,20 +12,8 @@ public class NpcLoot : GlobalNPC
{
public override void ModifyNPCLoot(NPC npc, NPCLoot npcLoot) {
int id = npc.type;
if (NPCID.Sets.CountsAsCritter[id]) {
npcLoot.Add(ItemDropRule.Common(ModContent.ItemType<MithrilPebbleOfPigSmiting>(), 400));
npcLoot.Add(ItemDropRule.Common(ModContent.ItemType<MithrilPebbleOfPigSmiting>(), 400, 1, 1));
}
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;
}
}
}
+47
View File
@@ -0,0 +1,47 @@
using Microsoft.Xna.Framework;
using Terraria;
using Terraria.Chat;
using Terraria.ID;
using Terraria.Localization;
using Terraria.ModLoader;
using YHTMod.Items;
namespace YHTMod.Changes;
public class TheKeyBehavior : GlobalTile {
public override void RightClick(int i, int j, int type) {
if (type != TileID.Containers) {
base.RightClick(i, j, type);
return;
}
bool foundKey = false;
foreach (Item item in Main.LocalPlayer.inventory) {
if (item.type.Equals(ModContent.ItemType<TheKey>())) {
foundKey = true;
break;
}
}
ChatHelper.BroadcastChatMessage(NetworkText.FromLiteral(foundKey.ToString()), Color.White);
if (!foundKey) {
return;
}
ChatHelper.BroadcastChatMessage(NetworkText.FromLiteral("Found key!"), Color.White);
if (!Chest.IsLocked(i, j)) {
base.RightClick(i, j, type);
return;
}
Chest.Unlock(i, j);
if (Main.netMode == NetmodeID.MultiplayerClient)
NetMessage.SendData(MessageID.Unlock, number: 1, number2: 1f, number3: i, number4: j);
}
}
-36
View File
@@ -1,36 +0,0 @@
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.

Before

Width:  |  Height:  |  Size: 3.4 KiB

@@ -1,47 +0,0 @@
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);
}
}
+14
View File
@@ -0,0 +1,14 @@
using Terraria.GameContent.Creative;
using Terraria.ModLoader;
namespace YHTMod.Items;
public class TheKey : ModItem {
public override void SetStaticDefaults() {
DisplayName.SetDefault("The Key");
Tooltip.SetDefault("Opens all locks.");
CreativeItemSacrificesCatalog.Instance.SacrificeCountNeededByItemId[Type] = 1;
}
}
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

-15
View File
@@ -1,15 +0,0 @@
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
author = YouHaveTrouble
version = 1.1.0
version = 1.0.1
-2
View File
@@ -1,7 +1,5 @@
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
-2
View File
@@ -1,7 +1,5 @@
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