using GadgetCore.API; using GadgetCore.API.ConfigMenu; using GadgetCore.Util; using RecipeMenuCore.API; using UltimateNPCWeapons.Infos; using UnityEngine; namespace UltimateNPCWeapons { [Gadget("UltimateNPCWeapons", RequiredOnClients: true, LoadAfter: new string[] { "RecipeMenuCore" }, Dependencies: new string[] { "RecipeMenuCore" })] public class UltimateNPCWeapons : Gadget { public const string MOD_VERSION = "1.0"; // Set this to the version of your mod. public const string CONFIG_VERSION = "1.0"; // Increment this whenever you change your mod's config file. // Disable the config menu public override IGadgetConfigMenu GetConfigMenu() { return null; } public override string GetModDescription() { return "A mod adding ultimate variants for NPC weapons.\n\nArt and idea by Saewin, Code by Zariteis"; } protected override void Initialize() { Logger.Log("Ultimate NPC Weapons v" + Info.Mod.Version); // -- // Creating items // -- // Galactic var itemGalacticDarkfire = new GalacticDarkfireItemInfo(ItemType.WEAPON, "Galactic Darkfire", "", GadgetCoreAPI.LoadTexture2D("item/inventory/galacticDarkfire.png"), 20, new EquipStats(3, 0, 3, 0, 4, 0), HeldTex: GadgetCoreAPI.LoadTexture2D("item/hand/galacticDarkfire.png")); itemGalacticDarkfire.SetWeaponInfo(new float[] { 0.25f, 0, 0.25f, 0, 1, 0 }, GadgetCoreAPI.GetAttackSound(497)); ItemRegistry.Singleton.Register(itemGalacticDarkfire, "galacticDarkfire"); itemGalacticDarkfire.CreateProjectile("projectile/galacticDarkfireSmall.png", "projectile/galacticDarkfire.png"); itemGalacticDarkfire.OnAttack += itemGalacticDarkfire.Attack; var itemGalacticSilence = new GalacticSilenceItemInfo(ItemType.WEAPON, "Galactic Silence", "", GadgetCoreAPI.LoadTexture2D("item/inventory/galacticSilence.png"), 20, new EquipStats(0, 0, 4, 0, 0, 0), HeldTex: GadgetCoreAPI.LoadTexture2D("item/hand/galacticSilence.png")); itemGalacticSilence.SetWeaponInfo(new float[] { 0, 0, 3, 0, 0, 0 }, GadgetCoreAPI.GetAttackSound(470)); ItemRegistry.Singleton.Register(itemGalacticSilence, "galacticSilence"); itemGalacticSilence.CreateProjectile("projectile/galacticSilence.png", "projectile/galacticSilenceSmoke.png"); itemGalacticSilence.OnAttack += itemGalacticSilence.Attack; var itemGalacticRagnarok = new GalacticRagnarokItemInfo(ItemType.WEAPON, "Galactic Ragnarok", "", GadgetCoreAPI.LoadTexture2D("item/inventory/galacticRagnarok.png"), 20, new EquipStats(0, 0, 4, 0, 0, 0), HeldTex: GadgetCoreAPI.LoadTexture2D("item/hand/galacticRagnarok.png")); itemGalacticRagnarok.SetWeaponInfo(new float[] { 0, 0, 1, 0, 0, 0 }, GadgetCoreAPI.GetAttackSound(497)); ItemRegistry.Singleton.Register(itemGalacticRagnarok, "galacticRagnarok"); itemGalacticRagnarok.CreateProjectile("projectile/galacticRagnarokSmall.png", "projectile/galacticRagnarok.png"); itemGalacticRagnarok.OnAttack += itemGalacticRagnarok.Attack; // Ringabolt var itemRingaboltsFury = new RingaboltsFuryItemInfo(ItemType.WEAPON, "Ringabolt's Fury", "", GadgetCoreAPI.LoadTexture2D("item/inventory/ringaboltsFury.png"), 20, new EquipStats(4, 5, 0, 0, 0, 0), HeldTex: GadgetCoreAPI.LoadTexture2D("item/hand/ringaboltsFury.png")); itemRingaboltsFury.SetWeaponInfo(new float[] { 0.5f, 0.5f, 0, 0, 0, 0 }, (AudioClip)Resources.Load("Au/excal")); ItemRegistry.Singleton.Register(itemRingaboltsFury, "ringaboltsFury"); itemRingaboltsFury.CreateProjectile("projectile/ringaboltsFury.png"); itemRingaboltsFury.OnAttack += itemRingaboltsFury.Attack; var itemRingaboltsVengeance = new RingaboltsVengeanceItemInfo(ItemType.WEAPON, "Ringabolt's Vengeance", "", GadgetCoreAPI.LoadTexture2D("item/inventory/ringaboltsVengeance.png"), 20, new EquipStats(0, 4, 0, 0, 0, 0), HeldTex: GadgetCoreAPI.LoadTexture2D("item/hand/ringaboltsVengeance.png")); itemRingaboltsVengeance.SetWeaponInfo(new float[] { 0, 5, 0, 0, 0, 0 }, (AudioClip)Resources.Load("Au/excal")); ItemRegistry.Singleton.Register(itemRingaboltsVengeance, "ringaboltsVengeance"); itemRingaboltsVengeance.OnAttack += itemRingaboltsVengeance.Attack; var itemRingaboltsOath = new RingaboltsOathItemInfo(ItemType.WEAPON, "Ringabolt's Oath", "", GadgetCoreAPI.LoadTexture2D("item/inventory/ringaboltsOath.png"), 20, new EquipStats(0, 5, 0, 0, 0, 4), HeldTex: GadgetCoreAPI.LoadTexture2D("item/hand/ringaboltsOath.png")); itemRingaboltsOath.SetWeaponInfo(new float[] { 0, 1, 0, 0, 0, 0.5f }, (AudioClip)Resources.Load("Au/excal")); ItemRegistry.Singleton.Register(itemRingaboltsOath, "ringaboltsOath"); itemRingaboltsOath.CreateProjectile("projectile/ringaboltsLightninin.png", "projectile/ringaboltsLightnininSpark.png"); itemRingaboltsOath.OnAttack += itemRingaboltsOath.Attack; // Perceval var itemPercevalsPact = new PercevalsPactItemInfo(ItemType.WEAPON, "Perceval's Pact", "", GadgetCoreAPI.LoadTexture2D("item/inventory/percevalsPact.png"), 20, new EquipStats(0, 5, 0, 0, 0, 4), HeldTex: GadgetCoreAPI.LoadTexture2D("item/hand/percevalsPact.png")); itemPercevalsPact.SetWeaponInfo(new float[] { 0, 2, 0, 0, 0, 0.25f }, (AudioClip)Resources.Load("Au/excal")); ItemRegistry.Singleton.Register(itemPercevalsPact, "percevalsPact"); itemPercevalsPact.CreateProjectile("projectile/percevalsPactSword.png", "projectile/percevalsPact.png"); itemPercevalsPact.OnAttack += itemPercevalsPact.Attack; var itemPercevalsDiscipline = new PercevalsDisciplineItemInfo(ItemType.WEAPON, "Perceval's Discipline", "", GadgetCoreAPI.LoadTexture2D("item/inventory/percevalsDiscipline.png"), 20, new EquipStats(0, 0, 0, 0, 4, 3), HeldTex: GadgetCoreAPI.LoadTexture2D("item/hand/percevalsDiscipline.png")); itemPercevalsDiscipline.SetWeaponInfo(new float[] { 0, 0, 0, 0, 0.5f, 0.5f }, (AudioClip)Resources.Load("Au/excal")); ItemRegistry.Singleton.Register(itemPercevalsDiscipline, "percevalsDiscipline"); itemPercevalsDiscipline.CreateProjectile("projectile/percevalsDisciplineSword.png", "projectile/percevalsDiscipline.png"); itemPercevalsDiscipline.OnAttack += itemPercevalsDiscipline.Attack; var itemPercevalsVolley = new PercevalsVolleyItemInfo(ItemType.WEAPON, "Perceval's Volley", "", GadgetCoreAPI.LoadTexture2D("item/inventory/percevalsVolley.png"), 20, new EquipStats(0, 0, 0, 0, 0, 4), HeldTex: GadgetCoreAPI.LoadTexture2D("item/hand/percevalsVolley.png")); itemPercevalsVolley.SetWeaponInfo(new float[] { 0, 0, 0, 0, 0, 0.5f }, (AudioClip)Resources.Load("Au/excal")); ItemRegistry.Singleton.Register(itemPercevalsVolley, "percevalsVolley"); itemPercevalsVolley.CreateProjectile("projectile/percevalsVolleySword.png", "projectile/percevalsVolley.png"); itemPercevalsVolley.OnAttack += itemPercevalsVolley.Attack; // Wallace var itemWallacesBirthright = new WallacesBirthrightItemInfo(ItemType.WEAPON, "Wallace's Birthright", "", GadgetCoreAPI.LoadTexture2D("item/inventory/wallacesBirthright.png"), 20, new EquipStats(4, 0, 0, 0, 5, 5), HeldTex: GadgetCoreAPI.LoadTexture2D("item/hand/wallacesBirthright.png")); itemWallacesBirthright.SetWeaponInfo(new float[] { 1, 0, 0, 0, 0.5f, 0.5f }, (AudioClip)Resources.Load("Au/excal")); ItemRegistry.Singleton.Register(itemWallacesBirthright, "wallacesBirthright"); itemWallacesBirthright.CreateProjectile("projectile/wallacesBirthright.png", "projectile/wallacesBirthrightSmall.png"); itemWallacesBirthright.OnAttack += itemWallacesBirthright.Attack; var itemWallacesFealty = new WallacesFealtyItemInfo(ItemType.WEAPON, "Wallace's Fealty", "", GadgetCoreAPI.LoadTexture2D("item/inventory/wallacesFealty.png"), 20, new EquipStats(3, 3, 0, 0, 0, 1), HeldTex: GadgetCoreAPI.LoadTexture2D("item/hand/wallacesFealty.png")); itemWallacesFealty.SetWeaponInfo(new float[] { 4, 1, 0, 0, 0, 0.5f }, (AudioClip)Resources.Load("Au/excal")); ItemRegistry.Singleton.Register(itemWallacesFealty, "wallacesFealty"); itemWallacesFealty.OnAttack += itemWallacesFealty.Attack; var itemWallacesEndurance = new WallacesEnduranceItemInfo(ItemType.WEAPON, "Wallace's Endurance", "", GadgetCoreAPI.LoadTexture2D("item/inventory/wallacesEndurance.png"), 20, new EquipStats(5, 0, 0, 0, 0, 0), HeldTex: GadgetCoreAPI.LoadTexture2D("item/hand/wallacesEndurance.png")); itemWallacesEndurance.SetWeaponInfo(new float[] { 2, 0, 0, 0, 0, 0 }, (AudioClip)Resources.Load("Au/excal")); ItemRegistry.Singleton.Register(itemWallacesEndurance, "wallacesEndurance"); itemWallacesEndurance.CreateProjectile("projectile/wallacesEndurance.png"); itemWallacesEndurance.OnAttack += itemWallacesEndurance.Attack; // -- // Other Item stuff // -- GadgetCoreAPI.AddUltimateForgeRecipe(new Tuple(497, 89), itemGalacticSilence.GetID()); GadgetCoreAPI.AddUltimateForgeRecipe(new Tuple(497, 90), itemGalacticDarkfire.GetID()); GadgetCoreAPI.AddUltimateForgeRecipe(new Tuple(497, 91), itemGalacticRagnarok.GetID()); GadgetCoreAPI.AddUltimateForgeRecipe(new Tuple(346, 89), itemRingaboltsOath.GetID()); GadgetCoreAPI.AddUltimateForgeRecipe(new Tuple(346, 90), itemRingaboltsVengeance.GetID()); GadgetCoreAPI.AddUltimateForgeRecipe(new Tuple(346, 91), itemRingaboltsFury.GetID()); GadgetCoreAPI.AddUltimateForgeRecipe(new Tuple(597, 89), itemPercevalsDiscipline.GetID()); GadgetCoreAPI.AddUltimateForgeRecipe(new Tuple(597, 90), itemPercevalsPact.GetID()); GadgetCoreAPI.AddUltimateForgeRecipe(new Tuple(597, 91), itemPercevalsVolley.GetID()); GadgetCoreAPI.AddUltimateForgeRecipe(new Tuple(397, 89), itemWallacesFealty.GetID()); GadgetCoreAPI.AddUltimateForgeRecipe(new Tuple(397, 90), itemWallacesBirthright.GetID()); GadgetCoreAPI.AddUltimateForgeRecipe(new Tuple(397, 91), itemWallacesEndurance.GetID()); var recipePage = new RecipePage(RecipePageType.UltimateForge, "Ultimate NPC Weapons", GadgetCoreAPI.LoadTexture2D("gui/recipesNPC.png")).Register(); recipePage.AddRecipePageEntry(new RecipePageEntry(itemGalacticSilence.GetID(), itemGalacticDarkfire.GetID(), itemGalacticRagnarok.GetID(), 497)); recipePage.AddRecipePageEntry(new RecipePageEntry(itemRingaboltsOath.GetID(), itemRingaboltsVengeance.GetID(), itemRingaboltsFury.GetID(), 346)); recipePage.AddRecipePageEntry(new RecipePageEntry(itemPercevalsDiscipline.GetID(), itemPercevalsPact.GetID(), itemPercevalsVolley.GetID(), 597)); recipePage.AddRecipePageEntry(new RecipePageEntry(itemWallacesFealty.GetID(), itemWallacesBirthright.GetID(), itemWallacesEndurance.GetID(), 397)); } } }