コード例 #1
0
 static public void Postfix(UnitBody __instance)
 {
     if (__instance.Owner.Ensure <UnitPartWildArmor>().active())
     {
         __instance.Armor.ReleaseDeactivateFlag();
     }
 }
コード例 #2
0
 static public void Prefix(UnitBody __instance)
 {
     if (__instance.Armor.Active)
     {
         __instance.Armor.RetainDeactivateFlag();
     }
 }
コード例 #3
0
        public static void DropCurrentWeaponSet(this UnitBody unitBody)
        {
            unitBody.Owner.Unit.SetFreeEquipmentChange(true);

            HandsEquipmentSet equipmentSet = unitBody.CurrentHandsEquipmentSet;

            if (!equipmentSet.PrimaryHand.HasItem && !equipmentSet.SecondaryHand.HasItem)
            {
                return;
            }

            DroppedLoot droppedLoot = UnityEngine.Object.FindObjectsOfType <DroppedLoot>().FirstOrDefault(o => unitBody.Owner.Unit.DistanceTo(o.transform.position) < 5.Feet().Meters);

            if (!droppedLoot)
            {
                droppedLoot = Game.Instance.EntityCreator.SpawnEntityView <DroppedLoot>(BlueprintRoot.Instance.Prefabs.DroppedLootBag, unitBody.Owner.Unit.Position, unitBody.Owner.Unit.View.transform.rotation,
                                                                                        Game.Instance.State.LoadedAreaState.MainState);
                droppedLoot.Loot = new ItemsCollection();
            }

            if (equipmentSet.PrimaryHand.CanDrop())
            {
                ItemEntity primary = equipmentSet.PrimaryHand.Item;
                primary.Collection.Transfer(primary, droppedLoot.Loot);
            }
            if (equipmentSet.SecondaryHand.CanDrop())
            {
                ItemEntity secondary = equipmentSet.SecondaryHand.Item;
                secondary.Collection.Transfer(secondary, droppedLoot.Loot);
            }

            unitBody.Owner.Unit.SetFreeEquipmentChange(false);
        }
コード例 #4
0
        static public void Postfix(UnitBody __instance)
        {
            if (__instance.Owner.Ensure <UnitPartWildArmor>().active())
            {
                if (__instance.Armor.HasArmor && hasWildEnchant(__instance.Armor.Armor))
                {
                    __instance.Armor.ReleaseDeactivateFlag();
                }
            }
            var primary_hand   = __instance.CurrentHandsEquipmentSet?.PrimaryHand;
            var secondary_hand = __instance.CurrentHandsEquipmentSet?.SecondaryHand;

            if (primary_hand != null &&
                (!primary_hand.HasShield || !hasWildEnchant(primary_hand.Shield?.ArmorComponent) || !__instance.Owner.Ensure <UnitPartWildArmor>().active()) &&
                (primary_hand.MaybeItem?.Blueprint != thundering_claw))
            {
                primary_hand.RetainDeactivateFlag();
            }
            if (secondary_hand != null &&
                (!secondary_hand.HasShield || !hasWildEnchant(secondary_hand.Shield?.ArmorComponent) || !__instance.Owner.Ensure <UnitPartWildArmor>().active()) &&
                (secondary_hand.MaybeItem?.Blueprint != thundering_claw))
            {
                secondary_hand.RetainDeactivateFlag();
            }
            EventBus.RaiseEvent <IPolymorphOnHandler>((Action <IPolymorphOnHandler>)(h => h.polymorphOn(__instance.Owner)));
        }
コード例 #5
0
 static bool Prefix(UnitBody __instance)
 {
     __instance.Owner.Unit.SetFreeEquipmentChange(Rulebook.Trigger(new RuleCheckFreeActionEquip(__instance.Owner.Unit)
     {
         IsHandsEquipmentSetChange = true
     }).IsFreeAction);
     return(true);
 }
コード例 #6
0
 static public void Postfix(UnitBody __instance)
 {
     if (__instance.Owner.Ensure <UnitPartWildArmor>().active())
     {
         __instance.Armor.ReleaseDeactivateFlag();
         EventBus.RaiseEvent <IPolymorphOnHandler>((Action <IPolymorphOnHandler>)(h => h.polymorphOn(__instance.Owner)));
     }
 }
コード例 #7
0
ファイル: Damager.cs プロジェクト: Elringus/Saga
    public Damager(UnitBody attacker, UnitBody target, Ability ability)
    {
        Attacker = attacker;
            Attacker.Tick += OnTick;
            Target = target;

            currdelay = ability.Delay;
            Value = ability.Use();
    }
コード例 #8
0
 static public void Prefix(UnitBody __instance)
 {
     if (__instance.Owner.Ensure <UnitPartWildArmor>().active())
     {
         if (__instance.Armor.HasArmor && Patch_UnitBody_ApplyPolymorphEffect.hasWildEnchant(__instance.Armor.Armor))
         {
             __instance.Armor.RetainDeactivateFlag();
         }
     }
 }
コード例 #9
0
ファイル: Unit.cs プロジェクト: Cobalte/Tactics
    //----------------------------------------------------------------------------------------------
    private void Start()
    {
        if (UnitData == null)
        {
            throw new Exception("Unit '" + gameObject.name + "' tried to Start() with no unit data.");
        }

        UnitRoster.RegisterUnit(this);
        Body = new UnitBody();
        Body.Initialize(this);
    }
コード例 #10
0
        static public void Postfix(UnitBody __instance)
        {
            var primary_hand   = __instance.CurrentHandsEquipmentSet?.PrimaryHand;
            var secondary_hand = __instance.CurrentHandsEquipmentSet?.SecondaryHand;

            if (primary_hand != null &&
                (!primary_hand.HasShield || !Patch_UnitBody_ApplyPolymorphEffect.hasWildEnchant(primary_hand.Shield?.ArmorComponent) || !__instance.Owner.Ensure <UnitPartWildArmor>().active()) &&
                (primary_hand.MaybeItem?.Blueprint != thundering_claw))
            {
                primary_hand.ReleaseDeactivateFlag();
            }
            if (secondary_hand != null &&
                (!secondary_hand.HasShield || !Patch_UnitBody_ApplyPolymorphEffect.hasWildEnchant(secondary_hand.Shield?.ArmorComponent) || !__instance.Owner.Ensure <UnitPartWildArmor>().active()) &&
                (secondary_hand.MaybeItem?.Blueprint != thundering_claw))
            {
                secondary_hand.ReleaseDeactivateFlag();
            }
        }
コード例 #11
0
        static bool getResult(RestrictionCanGatherPower __instance)
        {
            UnitPartKineticist unitPartKineticist = __instance.Owner.Get <UnitPartKineticist>();

            if (unitPartKineticist == null)
            {
                return(false);
            }
            UnitBody body = __instance.Owner.Body;

            if (body.IsPolymorphed)
            {
                return(false);
            }
            ItemEntity     maybeItem1 = body.PrimaryHand.MaybeItem;
            WeaponCategory?category   = (maybeItem1 as ItemEntityWeapon)?.Blueprint.Category;
            bool           flag       = category.GetValueOrDefault() == WeaponCategory.KineticBlast && category.HasValue;

            if (maybeItem1 != null && !flag)
            {
                return(false);
            }

            ItemEntity maybeItem2 = body.SecondaryHand.MaybeItem;

            if (maybeItem2 == null)
            {
                return(true);
            }
            ArmorProficiencyGroup?proficiencyGroup = body.SecondaryHand.MaybeShield?.Blueprint.Type.ProficiencyGroup;

            if (proficiencyGroup.HasValue && (proficiencyGroup.GetValueOrDefault() != ArmorProficiencyGroup.TowerShield))
            {
                return(unitPartKineticist.CanGatherPowerWithShield || Helpers.hasFreeHand(body.SecondaryHand));
            }
            return(false);
        }
コード例 #12
0
 //signal weapon set change to notify that weapons could have been changed
 static void Postfix(UnitBody __instance, BlueprintItemWeapon weapon)
 {
     UnitBody__SetEmptyHandWeapon__Patch.no_animation_action = true;
     EventBus.RaiseEvent <IUnitActiveEquipmentSetHandler>((Action <IUnitActiveEquipmentSetHandler>)(h => h.HandleUnitChangeActiveEquipmentSet(__instance.Owner)));
     UnitBody__SetEmptyHandWeapon__Patch.no_animation_action = false;
 }
コード例 #13
0
ファイル: Ability.cs プロジェクト: Elringus/Saga
 public Ability(UnitBody carrier)
 {
     carrier.Tick += OnTick;
 }
コード例 #14
0
 static void Postfix(UnitBody __instance)
 {
     __instance.Owner.Unit.SetFreeEquipmentChange(false);
 }