mirror of
https://github.com/YouHaveTrouble/YHTMod.git
synced 2026-05-11 21:56:54 +00:00
fix running without calamity installed
This commit is contained in:
+17
-11
@@ -1,9 +1,4 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using CalamityMod.NPCs.Crabulon;
|
|
||||||
using CalamityMod.NPCs.DesertScourge;
|
|
||||||
using CalamityMod.NPCs.HiveMind;
|
|
||||||
using CalamityMod.NPCs.Perforator;
|
|
||||||
using CalamityMod.NPCs.SlimeGod;
|
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
using Terraria;
|
using Terraria;
|
||||||
using Terraria.Chat;
|
using Terraria.Chat;
|
||||||
@@ -13,6 +8,7 @@ using Terraria.ModLoader;
|
|||||||
|
|
||||||
namespace YHTMod.Changes;
|
namespace YHTMod.Changes;
|
||||||
|
|
||||||
|
[ExtendsFromMod("CalamityMod")]
|
||||||
public class BossKillListener : GlobalNPC {
|
public class BossKillListener : GlobalNPC {
|
||||||
|
|
||||||
private static readonly Dictionary<int, string> BossIds = new();
|
private static readonly Dictionary<int, string> BossIds = new();
|
||||||
@@ -29,12 +25,22 @@ public class BossKillListener : GlobalNPC {
|
|||||||
BossIds.Add(NPCID.SkeletronHead, "skeletron");
|
BossIds.Add(NPCID.SkeletronHead, "skeletron");
|
||||||
BossIds.Add(NPCID.WallofFlesh, "wall_of_flesh");
|
BossIds.Add(NPCID.WallofFlesh, "wall_of_flesh");
|
||||||
|
|
||||||
if (ModLoader.HasMod("CalamityMod")) {
|
Mod calamity = CalamityHelper.GetCalamityMod();
|
||||||
BossIds.Add(ModContent.NPCType<DesertScourgeHead>(), "desert_scourge");
|
if (calamity == null) return;
|
||||||
BossIds.Add(ModContent.NPCType<Crabulon>(), "crabulon");
|
if (calamity.TryFind("DesertScourgeHead", out ModNPC desertScourgeHead)) {
|
||||||
BossIds.Add(ModContent.NPCType<PerforatorHive>(), "perforators");
|
BossIds.Add(desertScourgeHead.Type, "desert_scourge_head");
|
||||||
BossIds.Add(ModContent.NPCType<HiveMind>(), "hive_mind");
|
}
|
||||||
BossIds.Add(ModContent.NPCType<SlimeGodCore>(), "slime_god");
|
if (calamity.TryFind("Crabulon", out ModNPC crabulon)) {
|
||||||
|
BossIds.Add(crabulon.Type, "crabulon");
|
||||||
|
}
|
||||||
|
if (calamity.TryFind("PerforatorHive", out ModNPC perforatorHive)) {
|
||||||
|
BossIds.Add(perforatorHive.Type, "perforators");
|
||||||
|
}
|
||||||
|
if (calamity.TryFind("HiveMind", out ModNPC hiveMind)) {
|
||||||
|
BossIds.Add(hiveMind.Type, "hive_mind");
|
||||||
|
}
|
||||||
|
if (calamity.TryFind("SlimeGodCore", out ModNPC slimeGodCore)) {
|
||||||
|
BossIds.Add(slimeGodCore.Type, "slime_god");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using Terraria.ModLoader;
|
||||||
|
|
||||||
|
namespace YHTMod.Changes;
|
||||||
|
|
||||||
|
[ExtendsFromMod("CalamityMod")]
|
||||||
|
public class CalamityHelper {
|
||||||
|
|
||||||
|
public static readonly CalamityHelper Instance = new();
|
||||||
|
|
||||||
|
private static Dictionary<string, int> _bossIconIds;
|
||||||
|
|
||||||
|
private static Mod _calamity;
|
||||||
|
|
||||||
|
private CalamityHelper() {
|
||||||
|
ModLoader.TryGetMod("CalamityMod", out Mod calamity);
|
||||||
|
_calamity = calamity;
|
||||||
|
if (_calamity == null) return;
|
||||||
|
|
||||||
|
_bossIconIds = new Dictionary<string, int> {
|
||||||
|
{ "desert_scourge", ModContent.TryFind("CalamityMod", "LoreDesertScourge", out ModItem item1) ? item1.Type : -1 },
|
||||||
|
{ "crabulon", ModContent.TryFind("CalamityMod", "LoreCrabulon", out ModItem item2) ? item2.Type : -1 },
|
||||||
|
{ "perforators", ModContent.TryFind("CalamityMod", "LorePerforators", out ModItem item3) ? item3.Type : -1 },
|
||||||
|
{ "hive_mind", ModContent.TryFind("CalamityMod", "LoreHiveMind", out ModItem item4) ? item4.Type : -1 },
|
||||||
|
{ "slime_god", ModContent.TryFind("CalamityMod", "LoreSlimeGod", out ModItem item5) ? item5.Type : -1 }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int GetBossIconId(string bossKey) {
|
||||||
|
return _bossIconIds.GetValueOrDefault(bossKey, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Mod GetCalamityMod() {
|
||||||
|
return _calamity;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -7,20 +7,39 @@ using Vector2 = Microsoft.Xna.Framework.Vector2;
|
|||||||
|
|
||||||
namespace YHTMod.Changes;
|
namespace YHTMod.Changes;
|
||||||
|
|
||||||
|
[ExtendsFromMod("CalamityMod")]
|
||||||
public class SummonerOnHitEffects : GlobalProjectile {
|
public class SummonerOnHitEffects : GlobalProjectile {
|
||||||
|
|
||||||
public override void OnSpawn(Projectile projectile, IEntitySource source) {
|
public override void OnSpawn(Projectile projectile, IEntitySource source) {
|
||||||
if (ModLoader.HasMod("CalamityMod") && projectile.type == ModContent.ProjectileType<CalamityMod.Projectiles.Boss.ShaderainHostile>()) {
|
Mod calamity = CalamityHelper.GetCalamityMod();
|
||||||
if (source is EntitySource_Parent { Entity: Projectile parentProj }) {
|
|
||||||
int shadeType = ModContent.ProjectileType<CalamityMod.Projectiles.Boss.ShadeNimbusHostile>();
|
if (calamity is null
|
||||||
if (parentProj.type == shadeType && parentProj.friendly && !parentProj.hostile) {
|
|| source is not EntitySource_Parent { Entity: Projectile { friendly: true } parentProj }
|
||||||
projectile.friendly = true;
|
|| parentProj.hostile
|
||||||
projectile.hostile = false;
|
) {
|
||||||
projectile.DamageType = DamageClass.Summon;
|
base.OnSpawn(projectile, source);
|
||||||
projectile.damage = parentProj.damage;
|
return;
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get Calamity projectile types safely
|
||||||
|
if (!calamity.TryFind("ShadeNimbusHostile", out ModProjectile shadeNimbus)
|
||||||
|
|| parentProj.type != shadeNimbus.Type
|
||||||
|
) {
|
||||||
|
base.OnSpawn(projectile, source);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!calamity.TryFind("ShaderainHostile", out ModProjectile shaderainHostile) ||
|
||||||
|
projectile.type != shaderainHostile.Type) {
|
||||||
|
base.OnSpawn(projectile, source);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
projectile.friendly = true;
|
||||||
|
projectile.hostile = false;
|
||||||
|
projectile.DamageType = DamageClass.Summon;
|
||||||
|
projectile.damage = parentProj.damage;
|
||||||
|
|
||||||
base.OnSpawn(projectile, source);
|
base.OnSpawn(projectile, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using Terraria.GameContent.Creative;
|
|||||||
using Terraria.ID;
|
using Terraria.ID;
|
||||||
using Terraria.Localization;
|
using Terraria.Localization;
|
||||||
using Terraria.ModLoader;
|
using Terraria.ModLoader;
|
||||||
|
using YHTMod.Changes;
|
||||||
|
|
||||||
namespace YHTMod.Items;
|
namespace YHTMod.Items;
|
||||||
|
|
||||||
@@ -47,7 +48,7 @@ public class SummonersAmbition : ModItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ModLoader.HasMod("CalamityMod") && player.SummonerAmbitions.Contains("desert_scourge")) {
|
if (ModLoader.HasMod("CalamityMod") && player.SummonerAmbitions.Contains("desert_scourge")) {
|
||||||
int id = ModContent.ItemType<CalamityMod.Items.LoreItems.LoreDesertScourge>();
|
int id = CalamityHelper.GetBossIconId("desert_scourge");
|
||||||
tooltips.Add(new TooltipLine(Mod, "SummonerAmbitionDesertScourge",
|
tooltips.Add(new TooltipLine(Mod, "SummonerAmbitionDesertScourge",
|
||||||
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.DesertScourge", "[i:" + id + "]")));
|
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.DesertScourge", "[i:" + id + "]")));
|
||||||
}
|
}
|
||||||
@@ -58,7 +59,7 @@ public class SummonersAmbition : ModItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ModLoader.HasMod("CalamityMod") && player.SummonerAmbitions.Contains("crabulon")) {
|
if (ModLoader.HasMod("CalamityMod") && player.SummonerAmbitions.Contains("crabulon")) {
|
||||||
int id = ModContent.ItemType<CalamityMod.Items.LoreItems.LoreCrabulon>();
|
int id = CalamityHelper.GetBossIconId("crabulon");
|
||||||
tooltips.Add(new TooltipLine(Mod, "SummonerAmbitionCrabulon",
|
tooltips.Add(new TooltipLine(Mod, "SummonerAmbitionCrabulon",
|
||||||
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.Crabulon", "[i:" + id + "]")));
|
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.Crabulon", "[i:" + id + "]")));
|
||||||
}
|
}
|
||||||
@@ -79,13 +80,13 @@ public class SummonersAmbition : ModItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ModLoader.HasMod("CalamityMod") && player.SummonerAmbitions.Contains("perforators")) {
|
if (ModLoader.HasMod("CalamityMod") && player.SummonerAmbitions.Contains("perforators")) {
|
||||||
int id = ModContent.ItemType<CalamityMod.Items.LoreItems.LorePerforators>();
|
int id = CalamityHelper.GetBossIconId("perforators");
|
||||||
tooltips.Add(new TooltipLine(Mod, "SummonerAmbitionPerforators",
|
tooltips.Add(new TooltipLine(Mod, "SummonerAmbitionPerforators",
|
||||||
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.Perforators", "[i:" + id + "]")));
|
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.Perforators", "[i:" + id + "]")));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ModLoader.HasMod("CalamityMod") && player.SummonerAmbitions.Contains("hive_mind")) {
|
if (ModLoader.HasMod("CalamityMod") && player.SummonerAmbitions.Contains("hive_mind")) {
|
||||||
int id = ModContent.ItemType<CalamityMod.Items.LoreItems.LoreHiveMind>();
|
int id = CalamityHelper.GetBossIconId("hive_mind");
|
||||||
tooltips.Add(new TooltipLine(Mod, "SummonerAmbitionHiveMind",
|
tooltips.Add(new TooltipLine(Mod, "SummonerAmbitionHiveMind",
|
||||||
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.HiveMind", "[i:" + id + "]")));
|
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.HiveMind", "[i:" + id + "]")));
|
||||||
}
|
}
|
||||||
@@ -101,7 +102,7 @@ public class SummonersAmbition : ModItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ModLoader.HasMod("CalamityMod") && player.SummonerAmbitions.Contains("slime_god")) {
|
if (ModLoader.HasMod("CalamityMod") && player.SummonerAmbitions.Contains("slime_god")) {
|
||||||
int id = ModContent.ItemType<CalamityMod.Items.LoreItems.LoreSlimeGod>();
|
int id = CalamityHelper.GetBossIconId("slime_god");
|
||||||
tooltips.Add(new TooltipLine(Mod, "SummonerAmbitionSlimeGod",
|
tooltips.Add(new TooltipLine(Mod, "SummonerAmbitionSlimeGod",
|
||||||
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.SlimeGod", "[i:" + id + "]")));
|
Language.GetTextValue("Mods.YHTMod.Items.SummonersAmbition.SlimeGod", "[i:" + id + "]")));
|
||||||
}
|
}
|
||||||
@@ -152,8 +153,6 @@ public class SummonersAmbition : ModItem {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return bossesToCheck.All(boss => modPlayer.SummonerAmbitions.Contains(boss));
|
return bossesToCheck.All(boss => modPlayer.SummonerAmbitions.Contains(boss));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user