From 5b1b7e5780acf8b123e8d334f54f0fa34744f2e6 Mon Sep 17 00:00:00 2001
From: Chev <11602755+chev2@users.noreply.github.com>
Date: Wed, 24 Aug 2022 16:06:54 -0700
Subject: [PATCH] Add LifeSourcesLight and ZenithRecipeTooltips mods
---
LifeSourcesLight/LifeSourcesLight.cs | 17 ++++++
LifeSourcesLight/LifeSourcesLight.csproj | 13 +++++
LifeSourcesLight/LightOverrideHeartCrystal.cs | 22 ++++++++
LifeSourcesLight/LightOverrideLifeFruit.cs | 22 ++++++++
.../Properties/launchSettings.json | 16 ++++++
LifeSourcesLight/build.txt | 5 ++
LifeSourcesLight/description.txt | 1 +
LifeSourcesLight/icon.png | Bin 0 -> 5068 bytes
README.md | 5 ++
.../HookZenithIngredientTooltips.cs | 53 ++++++++++++++++++
.../Properties/launchSettings.json | 16 ++++++
ZenithRecipeTooltips/ZenithRecipeTooltips.cs | 8 +++
.../ZenithRecipeTooltips.csproj | 13 +++++
ZenithRecipeTooltips/build.txt | 5 ++
ZenithRecipeTooltips/description.txt | 1 +
ZenithRecipeTooltips/icon.png | Bin 0 -> 7412 bytes
16 files changed, 197 insertions(+)
create mode 100644 LifeSourcesLight/LifeSourcesLight.cs
create mode 100644 LifeSourcesLight/LifeSourcesLight.csproj
create mode 100644 LifeSourcesLight/LightOverrideHeartCrystal.cs
create mode 100644 LifeSourcesLight/LightOverrideLifeFruit.cs
create mode 100644 LifeSourcesLight/Properties/launchSettings.json
create mode 100644 LifeSourcesLight/build.txt
create mode 100644 LifeSourcesLight/description.txt
create mode 100644 LifeSourcesLight/icon.png
create mode 100644 ZenithRecipeTooltips/HookZenithIngredientTooltips.cs
create mode 100644 ZenithRecipeTooltips/Properties/launchSettings.json
create mode 100644 ZenithRecipeTooltips/ZenithRecipeTooltips.cs
create mode 100644 ZenithRecipeTooltips/ZenithRecipeTooltips.csproj
create mode 100644 ZenithRecipeTooltips/build.txt
create mode 100644 ZenithRecipeTooltips/description.txt
create mode 100644 ZenithRecipeTooltips/icon.png
diff --git a/LifeSourcesLight/LifeSourcesLight.cs b/LifeSourcesLight/LifeSourcesLight.cs
new file mode 100644
index 0000000..5f7bd47
--- /dev/null
+++ b/LifeSourcesLight/LifeSourcesLight.cs
@@ -0,0 +1,17 @@
+using Terraria.ModLoader;
+using Terraria;
+using Terraria.ID;
+
+namespace LifeSourcesLight
+{
+ public class LifeSourcesLight : Mod
+ {
+ public override void Load()
+ {
+ Main.tileLighted[TileID.Heart] = true;
+ Main.tileLighted[TileID.LifeFruit] = true;
+
+ base.Load();
+ }
+ }
+}
\ No newline at end of file
diff --git a/LifeSourcesLight/LifeSourcesLight.csproj b/LifeSourcesLight/LifeSourcesLight.csproj
new file mode 100644
index 0000000..d2b6580
--- /dev/null
+++ b/LifeSourcesLight/LifeSourcesLight.csproj
@@ -0,0 +1,13 @@
+
+
+
+
+ LifeSourcesLight
+ net6.0
+ AnyCPU
+ latest
+
+
+
+
+
\ No newline at end of file
diff --git a/LifeSourcesLight/LightOverrideHeartCrystal.cs b/LifeSourcesLight/LightOverrideHeartCrystal.cs
new file mode 100644
index 0000000..cd8c442
--- /dev/null
+++ b/LifeSourcesLight/LightOverrideHeartCrystal.cs
@@ -0,0 +1,22 @@
+using Terraria;
+using Terraria.ID;
+using Terraria.ModLoader;
+
+namespace LifeSourcesLight
+{
+ public class LightOverrideHeartCrystal : GlobalTile
+ {
+ // Modify overall light brightness
+ private static readonly float LifeCrystalBrightCoefficient = 0.7f;
+
+ public override void ModifyLight(int i, int j, int type, ref float r, ref float g, ref float b)
+ {
+ if (type == TileID.Heart)
+ {
+ r = (255f / 255f) * LifeCrystalBrightCoefficient;
+ g = (38f / 255f) * LifeCrystalBrightCoefficient;
+ b = (106f / 255f) * LifeCrystalBrightCoefficient;
+ }
+ }
+ }
+}
diff --git a/LifeSourcesLight/LightOverrideLifeFruit.cs b/LifeSourcesLight/LightOverrideLifeFruit.cs
new file mode 100644
index 0000000..4a76e4d
--- /dev/null
+++ b/LifeSourcesLight/LightOverrideLifeFruit.cs
@@ -0,0 +1,22 @@
+using Terraria;
+using Terraria.ID;
+using Terraria.ModLoader;
+
+namespace LifeSourcesLight
+{
+ public class LightOverrideLifeFruit : GlobalTile
+ {
+ // Modify overall light brightness
+ private static readonly float LifeFruitBrightCoefficient = 0.7f;
+
+ public override void ModifyLight(int i, int j, int type, ref float r, ref float g, ref float b)
+ {
+ if (type == TileID.LifeFruit)
+ {
+ r = (170f / 255f) * LifeFruitBrightCoefficient;
+ g = (221f / 255f) * LifeFruitBrightCoefficient;
+ b = (43f / 255f) * LifeFruitBrightCoefficient;
+ }
+ }
+ }
+}
diff --git a/LifeSourcesLight/Properties/launchSettings.json b/LifeSourcesLight/Properties/launchSettings.json
new file mode 100644
index 0000000..8da89ff
--- /dev/null
+++ b/LifeSourcesLight/Properties/launchSettings.json
@@ -0,0 +1,16 @@
+{
+ "profiles": {
+ "Terraria": {
+ "commandName": "Executable",
+ "executablePath": "dotnet",
+ "commandLineArgs": "$(tMLPath)",
+ "workingDirectory": "$(tMLSteamPath)"
+ },
+ "TerrariaServer": {
+ "commandName": "Executable",
+ "executablePath": "dotnet",
+ "commandLineArgs": "$(tMLServerPath)",
+ "workingDirectory": "$(tMLSteamPath)"
+ }
+ }
+}
\ No newline at end of file
diff --git a/LifeSourcesLight/build.txt b/LifeSourcesLight/build.txt
new file mode 100644
index 0000000..e7267d3
--- /dev/null
+++ b/LifeSourcesLight/build.txt
@@ -0,0 +1,5 @@
+displayName = Heart Crystal & Life Fruit Glow
+author = Chev
+version = 1.0.0
+homepage = https://github.com/chev2/terraria-mods
+side = Client
diff --git a/LifeSourcesLight/description.txt b/LifeSourcesLight/description.txt
new file mode 100644
index 0000000..93bd3ca
--- /dev/null
+++ b/LifeSourcesLight/description.txt
@@ -0,0 +1 @@
+Makes heart crystals & life fruits emit light.
diff --git a/LifeSourcesLight/icon.png b/LifeSourcesLight/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..a84b199d2fa4549d57e263d9d9d48882292808ca
GIT binary patch
literal 5068
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 RecipeItemIDs = new()
+ {
+ { ItemID.CopperShortsword, true },
+ { ItemID.EnchantedSword, true },
+ { ItemID.BeeKeeper, true },
+ { ItemID.Starfury, true },
+ { ItemID.Seedler, true },
+ { ItemID.TheHorsemansBlade, true },
+ { ItemID.InfluxWaver, true },
+ { ItemID.StarWrath, true },
+ { ItemID.Meowmere, true },
+ { ItemID.TerraBlade, true }
+ };
+
+ private static readonly string TooltipPrefixColor = "E10643";
+
+ private static bool IsMaterialTooltip(TooltipLine line)
+ {
+ return line.Name == "Material";
+ }
+
+ public override void ModifyTooltips(Item item, List tooltips)
+ {
+ if (RecipeItemIDs.ContainsKey(item.type))
+ {
+ TooltipLine tooltip = new(Mod, "RequiredForZenith", $"[c/{TooltipPrefixColor}:Required for Zenith]");
+
+ int materialLineIndex = tooltips.FindIndex(IsMaterialTooltip);
+
+ // If we found the index where the "Material" tooltip is
+ if (materialLineIndex > 0)
+ {
+ tooltips.Insert(materialLineIndex + 1, tooltip);
+ // If we didn't, just append it to the end
+ } else
+ {
+ tooltips.Add(tooltip);
+ }
+ }
+
+ base.ModifyTooltips(item, tooltips);
+ }
+ }
+}
diff --git a/ZenithRecipeTooltips/Properties/launchSettings.json b/ZenithRecipeTooltips/Properties/launchSettings.json
new file mode 100644
index 0000000..8da89ff
--- /dev/null
+++ b/ZenithRecipeTooltips/Properties/launchSettings.json
@@ -0,0 +1,16 @@
+{
+ "profiles": {
+ "Terraria": {
+ "commandName": "Executable",
+ "executablePath": "dotnet",
+ "commandLineArgs": "$(tMLPath)",
+ "workingDirectory": "$(tMLSteamPath)"
+ },
+ "TerrariaServer": {
+ "commandName": "Executable",
+ "executablePath": "dotnet",
+ "commandLineArgs": "$(tMLServerPath)",
+ "workingDirectory": "$(tMLSteamPath)"
+ }
+ }
+}
\ No newline at end of file
diff --git a/ZenithRecipeTooltips/ZenithRecipeTooltips.cs b/ZenithRecipeTooltips/ZenithRecipeTooltips.cs
new file mode 100644
index 0000000..f411c51
--- /dev/null
+++ b/ZenithRecipeTooltips/ZenithRecipeTooltips.cs
@@ -0,0 +1,8 @@
+using Terraria.ModLoader;
+
+namespace ZenithRecipeTooltips
+{
+ public class ZenithRecipeTooltips : Mod
+ {
+ }
+}
\ No newline at end of file
diff --git a/ZenithRecipeTooltips/ZenithRecipeTooltips.csproj b/ZenithRecipeTooltips/ZenithRecipeTooltips.csproj
new file mode 100644
index 0000000..8905caf
--- /dev/null
+++ b/ZenithRecipeTooltips/ZenithRecipeTooltips.csproj
@@ -0,0 +1,13 @@
+
+
+
+
+ ZenithRecipeTooltips
+ net6.0
+ AnyCPU
+ latest
+
+
+
+
+
\ No newline at end of file
diff --git a/ZenithRecipeTooltips/build.txt b/ZenithRecipeTooltips/build.txt
new file mode 100644
index 0000000..409b430
--- /dev/null
+++ b/ZenithRecipeTooltips/build.txt
@@ -0,0 +1,5 @@
+displayName = Zenith Recipe Tooltips
+author = Chev
+version = 1.0.0
+homepage = https://github.com/chev2/terraria-mods
+side = Client
diff --git a/ZenithRecipeTooltips/description.txt b/ZenithRecipeTooltips/description.txt
new file mode 100644
index 0000000..f65a176
--- /dev/null
+++ b/ZenithRecipeTooltips/description.txt
@@ -0,0 +1 @@
+Shows "Required for Zenith" in the tooltips of every sword used in the Zenith crafting recipe.
\ No newline at end of file
diff --git a/ZenithRecipeTooltips/icon.png b/ZenithRecipeTooltips/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..113ad8b4dbf8e02b37e05339cbeeb8c811036835
GIT binary patch
literal 7412
zcmV004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000Uv
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
m{Xez%e