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);
        }
示例#2
0
            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 });
                    }
                }
            }
        }
示例#4
0
        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);
        }