about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--AnodyneArchipelago/ArchipelagoManager.cs7
-rw-r--r--AnodyneArchipelago/Plugin.cs10
2 files changed, 15 insertions, 2 deletions
diff --git a/AnodyneArchipelago/ArchipelagoManager.cs b/AnodyneArchipelago/ArchipelagoManager.cs index 781a335..a882cd8 100644 --- a/AnodyneArchipelago/ArchipelagoManager.cs +++ b/AnodyneArchipelago/ArchipelagoManager.cs
@@ -1,5 +1,6 @@
1using AnodyneSharp.Entities; 1using AnodyneSharp.Entities;
2using AnodyneSharp.Entities.Enemy.Redcave; 2using AnodyneSharp.Entities.Enemy.Redcave;
3using AnodyneSharp.Entities.Gadget.Treasures;
3using AnodyneSharp.Registry; 4using AnodyneSharp.Registry;
4using AnodyneSharp.Sounds; 5using AnodyneSharp.Sounds;
5using Archipelago.MultiClient.Net; 6using Archipelago.MultiClient.Net;
@@ -189,6 +190,12 @@ namespace AnodyneArchipelago
189 { 190 {
190 GlobalState.events.IncEvent("ProgressiveRedGrotto"); 191 GlobalState.events.IncEvent("ProgressiveRedGrotto");
191 } 192 }
193 else if (itemName == "Card")
194 {
195 CardTreasure cardTreasure = new(Plugin.Player.Position, GlobalState.inventory.CardCount);
196 cardTreasure.GetTreasure();
197 GlobalState.SpawnEntity(cardTreasure);
198 }
192 199
193 string message; 200 string message;
194 if (item.Player == _session.ConnectionInfo.Slot) 201 if (item.Player == _session.ConnectionInfo.Slot)
diff --git a/AnodyneArchipelago/Plugin.cs b/AnodyneArchipelago/Plugin.cs index 24345fc..26f1274 100644 --- a/AnodyneArchipelago/Plugin.cs +++ b/AnodyneArchipelago/Plugin.cs
@@ -6,6 +6,7 @@ using AnodyneSharp.Entities.Gadget;
6using AnodyneSharp.Entities.Gadget.Treasures; 6using AnodyneSharp.Entities.Gadget.Treasures;
7using AnodyneSharp.Entities.Interactive; 7using AnodyneSharp.Entities.Interactive;
8using AnodyneSharp.Registry; 8using AnodyneSharp.Registry;
9using AnodyneSharp.States;
9using AnodyneSharp.Utilities; 10using AnodyneSharp.Utilities;
10using BepInEx; 11using BepInEx;
11using BepInEx.NET.Common; 12using BepInEx.NET.Common;
@@ -23,6 +24,7 @@ namespace AnodyneArchipelago
23 public class Plugin : BasePlugin 24 public class Plugin : BasePlugin
24 { 25 {
25 public static Plugin Instance = null; 26 public static Plugin Instance = null;
27 public static Player Player = null;
26 28
27 public override void Load() 29 public override void Load()
28 { 30 {
@@ -48,11 +50,15 @@ namespace AnodyneArchipelago
48 } 50 }
49 } 51 }
50 52
51 [HarmonyPatch(typeof(AnodyneSharp.States.PlayState), nameof(AnodyneSharp.States.PlayState.Create))] 53 [HarmonyPatch(typeof(PlayState), nameof(PlayState.Create))]
52 class PlayStateCreatePatch 54 class PlayStateCreatePatch
53 { 55 {
54 static void Prefix() 56 static void Prefix(PlayState __instance)
55 { 57 {
58 // Get player for later access.
59 FieldInfo playerField = typeof(PlayState).GetField("_player", BindingFlags.NonPublic | BindingFlags.Instance);
60 Plugin.Player = (Player)playerField.GetValue(__instance);
61
56 // Handle Red Grotto stuff. 62 // Handle Red Grotto stuff.
57 GlobalState.events.SetEvent("red_cave_l_ss", 999); 63 GlobalState.events.SetEvent("red_cave_l_ss", 999);
58 GlobalState.events.SetEvent("red_cave_n_ss", 999); 64 GlobalState.events.SetEvent("red_cave_n_ss", 999);