using UnityEngine; namespace Mod { public class Mod { public static void Main() { // Register the cure liquid first ModAPI.RegisterLiquid(ZombieCureSyringe.CureSerum.ID, new ZombieCureSyringe.CureSerum()); // Register the zombie cure syringe ModAPI.Register( new Modification() { OriginalItem = ModAPI.FindSpawnable("Zombie Syringe"), // Base it on zombie syringe NameOverride = "Zombie Cure Syringe", DescriptionOverride = "A revolutionary antidote that reverses zombie infection and restores humanity.", CategoryOverride = ModAPI.FindCategory("Medical"), ThumbnailOverride = ModAPI.LoadSprite("sprites/cure_syringe_view.png"), AfterSpawn = (Instance) => { // Remove the original zombie syringe behavior UnityEngine.Object.Destroy(Instance.GetComponent()); // Add our custom cure behavior Instance.GetOrAddComponent(); // Customize the appearance Instance.GetComponent().sprite = ModAPI.LoadSprite("sprites/cure_syringe.png"); // Add a healing glow effect var glow = Instance.GetComponent(); if (glow != null) { glow.color = new Color(0.3f, 1f, 0.3f, 0.8f); // Green healing glow } // Add spawn sound effect var audioSource = Instance.GetComponent(); if (audioSource == null) { audioSource = Instance.AddComponent(); } var spawnSound = ModAPI.LoadSound("sfx/cure_spawn.wav"); if (spawnSound != null && audioSource != null) { audioSource.PlayOneShot(spawnSound); } Instance.FixColliders(); } } ); } } public class ZombieCureSyringe : SyringeBehaviour { public override string GetLiquidID() => CureSerum.ID; public class CureSerum : Liquid { public const string ID = "ZOMBIE CURE SERUM"; public CureSerum() { // Bright green color for the cure liquid Color = new Color(0.2f, 1f, 0.2f, 0.9f); } public override void OnEnterLimb(LimbBehaviour limb) { // Cure zombie infection by removing zombie-related effects var person = limb.Person; if (person != null) { // Remove zombie poison if present var zombiePoison = person.GetComponent()?.GetLiquid("REANIMATION AGENT"); if (zombiePoison != null) { person.GetComponent().RemoveLiquid(zombiePoison); } // Restore human appearance and behavior if (limb.gameObject.name.Contains("Head")) { // Restore normal skin color var spriteRenderer = limb.GetComponent(); if (spriteRenderer != null) { spriteRenderer.color = new Color(1f, 0.85f, 0.7f); // Normal skin tone } } // Heal any zombie-related damage limb.WoundIntensity = 0f; limb.BruiseIntensity = 0f; limb.BurnIntensity = 0f; // Restore normal physical properties limb.BreakingThreshold = limb.OriginalBreakingThreshold; limb.RegenerationSpeed = limb.OriginalRegenerationSpeed; } // Apply healing effect limb.HealDamage(5f); } public override void OnUpdate(BloodContainer container) { // Continuous healing effect while cure is in bloodstream if (container is LimbBehaviour limb) { limb.HealDamage(0.1f); // Prevent re-infection var zombiePoison = container.GetLiquid("REANIMATION AGENT"); if (zombiePoison != null) { container.RemoveLiquid(zombiePoison); } } } public override void OnEnterContainer(BloodContainer container) { // Healing aura effect if (container is LimbBehaviour limb) { var person = limb.Person; if (person != null) { // Apply gentle healing to all limbs foreach (var personLimb in person.Limbs) { personLimb.HealDamage(0.5f); } } } } public override void OnExitContainer(BloodContainer container) { // Final healing burst when cure leaves the system if (container is LimbBehaviour limb) { limb.HealDamage(2f); } } } } }