static public void Postfix(UnitBody __instance) { if (__instance.Owner.Ensure <UnitPartWildArmor>().active()) { __instance.Armor.ReleaseDeactivateFlag(); } }
static public void Prefix(UnitBody __instance) { if (__instance.Armor.Active) { __instance.Armor.RetainDeactivateFlag(); } }
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); }
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))); }
static bool Prefix(UnitBody __instance) { __instance.Owner.Unit.SetFreeEquipmentChange(Rulebook.Trigger(new RuleCheckFreeActionEquip(__instance.Owner.Unit) { IsHandsEquipmentSetChange = true }).IsFreeAction); return(true); }
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))); } }
public Damager(UnitBody attacker, UnitBody target, Ability ability) { Attacker = attacker; Attacker.Tick += OnTick; Target = target; currdelay = ability.Delay; Value = ability.Use(); }
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(); } } }
//---------------------------------------------------------------------------------------------- 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); }
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(); } }
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); }
//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; }
public Ability(UnitBody carrier) { carrier.Tick += OnTick; }
static void Postfix(UnitBody __instance) { __instance.Owner.Unit.SetFreeEquipmentChange(false); }