public static async Task CreateHenchmanAsync(GameServiceClient client) { var henchman = new Henchman(); henchman.Name = ConsoleUtility.GetUserInput("Henchman Name: "); henchman.GamePackageId = await GamePackageUtility.SelectGamePackageId(client); henchman.AbilityIds.AddRange(await AbilityUtility.SelectAbilityIds(client)); if (!ConsoleUtility.ShouldContinue($"Creating Henchman: '{henchman.Name}', in gamePackage '{henchman.GamePackageId}' with abilities [{henchman.AbilityIds.Select(x => x.ToString()).Join(", ")}]")) { await CreateHenchmanAsync(client); return; } var createRequest = new CreateHenchmenRequest(); createRequest.Henchmen.Add(henchman); var createReply = await client.CreateHenchmenAsync(createRequest); if (createReply.Status.Code != 200) { ConsoleUtility.WriteLine($"Failed to create henchman: {createReply.Status.Message}"); } else { ConsoleUtility.WriteLine($"Henchman '{createReply.Henchmen.First().Name}' was created with Id '{createReply.Henchmen.First().Id}'"); } }
public void ReplaceHenchman(Henchman newHanchman) { var oldHenchman = Interlocked.Exchange(ref henchman, newHanchman); if(oldHenchman != null) { previousMinions.Add(oldHenchman.AssistantMoniker); } (oldHenchman as IDisposable)?.Dispose(); }
private void loadNPCs() { for (int i = 0; i < 2; i++) { string npcDir; if (i == 0) npcDir = "Data\\NPCs\\Supers"; else npcDir = "Data\\NPCs\\Henchmen"; try { string[] directories = Directory.GetDirectories(npcDir); foreach (string dirPath in directories) { string xmlPath = Directory.GetFiles(dirPath, "*.xml")[0]; XElement rootXML = XElement.Load(xmlPath); NPC npc = null; if (i == 0) npc = new Super(); else npc = new Henchman(); npc.name = rootXML.Element("name").Value; npc.hp = getXElementAttrValueAsInt(rootXML, "hp"); npc.energy = getXElementAttrValueAsInt(rootXML, "energy"); npc.gold = getXElementAttrValueAsInt(rootXML, "gold"); npc.exp = getXElementAttrValueAsInt(rootXML, "exp"); string side = rootXML.Element("side").Value.ToLower(); if (side == "hero") npc.side = NPC.Side.HERO; else if (side == "villain") npc.side = NPC.Side.VILLAIN; else npc.side = NPC.Side.NEUTRAL; if (i == 0) // supers { Super super = (Super)npc; foreach (XElement image in rootXML.Descendants("image")) super.images.Add(image.Attribute("flag").Value, image.Value); GlobalVariables.supers.Add(npc.name, super); } else // henchmen { Henchman henchman = (Henchman)npc; henchman.images.Add(ImageFlag.POTRAIT.ToString(), rootXML.Element("image").Value); GlobalVariables.henchmen.Add(npc.name, henchman); } } } catch (Exception e) { Debug.Log(e); } } }
private static async ValueTask <IReadOnlyList <Henchman> > CreateHenchmen(GameServiceClient client, IReadOnlyList <GamePackage> packages, IReadOnlyList <Ability> abilities) { ConsoleUtility.WriteLine("Creating henchmen"); List <Henchman> result = (await HenchmanUtility.GetHenchmenAsync(client, null)).ToList(); if (result.Any()) { return(result); } foreach (var file in Directory.EnumerateFiles(@"C:\Users\Ryan\SkyDrive\code\LegendaryGameStarter\LegendaryGameModel2\GameSets", s_fileMask)) { var doc = XDocument.Load(file); var name = doc.Element("Set").Attribute("Name").Value; var activeGamePackage = packages.FirstOrDefault(x => x.Name == name); if (activeGamePackage == null) { ConsoleUtility.WriteLine($"Failed to find matching game package for {file}"); } foreach (var henchmanElement in doc.Element("Set").Element("Cards").Elements("Card").Where(x => x?.Attribute("Area").Value == "Henchman")) { var request = new CreateHenchmenRequest(); request.CreateOptions.Add(CreateOptions.ErrorOnDuplicates); var henchman = new Henchman(); henchman.Name = henchmanElement.Attribute("Name").Value; henchman.GamePackageId = activeGamePackage.Id; henchman.AbilityIds.AddRange(GetMatchingItems(henchmanElement.Attribute("Abilities")?.Value, name => abilities.First(x => x.Name == name)).Select(x => x.Id)); request.Henchmen.Add(henchman); var reply = await client.CreateHenchmenAsync(request); if (reply.Status.Code != 200) { ConsoleUtility.WriteLine($"Failed to create '{henchman.Name}': {reply.Status.Message}"); } result.AddRange(reply.Henchmen); } ConsoleUtility.WriteLine($"Completed: {name}"); } return(result); }
internal static void ResetHenchmanWeaponMods(SFXSaveGameFile saveGame, Henchman henchman) { var henchProperty = LoadoutData.HenchmenClasses.Single(pair => pair.Tag == henchman.Tag); henchman.WeaponMods = new List <WeaponMod>(); // Assault Rifles if (henchProperty.Weapons.Contains(WeaponClassType.AssaultRifle)) { henchman.WeaponMods.AddRange(GetHenchmanWeaponMods(WeaponClassType.AssaultRifle)); } // Pistols if (henchProperty.Weapons.Contains(WeaponClassType.Pistol)) { henchman.WeaponMods.AddRange(GetHenchmanWeaponMods(WeaponClassType.Pistol)); } // Shotguns if (henchProperty.Weapons.Contains(WeaponClassType.Shotgun)) { henchman.WeaponMods.AddRange(GetHenchmanWeaponMods(WeaponClassType.Shotgun)); } // SMG's if (henchProperty.Weapons.Contains(WeaponClassType.SMG)) { henchman.WeaponMods.AddRange(GetHenchmanWeaponMods(WeaponClassType.SMG)); } // Sniper Rifles if (henchProperty.Weapons.Contains(WeaponClassType.SniperRifle)) { henchman.WeaponMods.AddRange(GetHenchmanWeaponMods(WeaponClassType.SniperRifle)); } }
internal static Henchman ResetHenchman(SFXSaveGameFile saveGame, HenchmanClass henchmanClass, bool resetDefaults = false) { var hench = new Henchman { CharacterLevel = saveGame.Player.Level, Grenades = 0, LoadoutWeapons = new Loadout { AssaultRifle = "None", HeavyWeapon = "None", Pistol = "None", Shotgun = "None", SubmachineGun = "None", SniperRifle = "None" }, MappedPower = "None", Tag = henchmanClass.Tag }; ResetHenchmanPowers(saveGame, hench, resetDefaults); ResetHenchmanWeaponMods(saveGame, hench); return(hench); }
public void SetHenchman(Henchman h) { hench = h; hench.gameObject.SetActive(false); }
public void SetRazer(Henchman r) { hench = r; }
internal static void ResetHenchmanPowers(SFXSaveGameFile saveGame, Henchman henchman, bool resetDefaults = false) { var henchProperty = LoadoutData.HenchmenClasses.FirstOrDefault(pair => pair.Tag.Equals(henchman.Tag, StringComparison.InvariantCultureIgnoreCase)); if (henchProperty == null) { return; } henchman.Powers = new List <Power>(); henchman.CharacterLevel = saveGame.Player.Level; henchman.TalentPoints = SquadVariables.GetHenchTalentPoints(henchman.CharacterLevel); foreach (var powerId in henchProperty.Powers) { PowerClass power = null; var pId = powerId; foreach (var powerClass in LoadoutData.PowerClasses.Where(powerClass => powerClass != null && powerClass.Name != null) .Where(powerClass => powerClass.Name.Equals(pId, StringComparison.InvariantCultureIgnoreCase) || (powerClass.CustomName != null && powerClass.CustomName.Equals(pId, StringComparison.InvariantCultureIgnoreCase)))) { power = powerClass; } if (power == null) { continue; } henchman.Powers.Add(new Power(power.ClassName, power.Name)); } if (!resetDefaults) { return; } foreach (var power in henchman.Powers) { var powerClass = LoadoutData.PowerClasses.FirstOrDefault( p => (p.ClassName != null && p.ClassName.Equals(power.ClassName, StringComparison.InvariantCultureIgnoreCase))); if (powerClass == null) { continue; } if (!henchProperty.DefaultPowers.Any(s => s.Equals(powerClass.Name, StringComparison.InvariantCultureIgnoreCase) || s.Equals(powerClass.CustomName, StringComparison.InvariantCultureIgnoreCase))) { continue; } power.CurrentRank = 1; if (powerClass.PowerType != PowerClassType.None) { henchman.TalentPoints--; } } }