private void AIEndCombatHook(On.AISCombat.orig_EndCombat orig, AISCombat self) { if (global.IsGameplayStarted && global.CurrentTime > 0) { Character c = At.GetValue(typeof(AIState), self as AIState, "m_character") as Character; if (c.Health > 0) { ForceTargetOnPlayer(c); return; } } orig(self); }
public static bool Prefix(AISCombat __instance) { var self = __instance; Character c = At.GetValue(typeof(AIState), self as AIState, "m_character") as Character; foreach (Weapon w in self.RequiredWeapon) { if (!c.Inventory.OwnsItem(w.ItemID)) { Item i = ItemManager.Instance.GenerateItemNetwork(w.ItemID); c.Inventory.TakeItem(i, false); } } return(true); }
private void AIEquipHook(On.AISCombat.orig_EquipRequiredWeapons orig, AISCombat self) { try { orig(self); } catch { Character c = At.GetValue(typeof(AIState), self as AIState, "m_character") as Character; foreach (Weapon w in self.RequiredWeapon) { if (!c.Inventory.OwnsItem(w.ItemID)) { Item i = ItemManager.Instance.GenerateItemNetwork(w.ItemID); c.Inventory.TakeItem(i, false); At.Call(c.Inventory.Equipment, "EquipWithoutAssociating", new object[] { i, false }); } } } }
static bool AISCombat_UpdateMed_Pre(AISCombat __instance) { Character character = __instance.m_character; #region quit if (_fixUnarmedBandits == WeaponSet.Disabled || character.Faction != Character.Factions.Bandits || character.m_animatorIsHumanDefault == false || !character.name.ToLowerInvariant().Contains("bandit")) { return(true); } #endregion if (__instance is AISCombatMelee && !HasAnyMeleeWeapon(character)) { GenerateAndEquipPouchItem(character, MELEE_WEAPON_IDS_BY_SET[_fixUnarmedBandits].Random(), _fixUnarmedBanditsDurabilityRatio); } if (__instance is AISCombatRanged && !HasAnyRangedWeapon(character)) { GenerateAndEquipPouchItem(character, RANGED_WEAPON_IDS_BY_SET[_fixUnarmedBandits].Random(), _fixUnarmedBanditsDurabilityRatio); } return(true); }