public static string FormatConditions(ConditionsChecker conditions) { return(FormatConditions(conditions.Conditions)); }
public static string FormatConditions(ConditionsChecker conditions) => FormatConditions(conditions.Conditions);
public static BlueprintCheck CreateCheck(string name, int num, StatType type, int dc, BlueprintCueBase success, BlueprintCueBase fail, bool hidden = false, DCModifier[] dCModifier = null, ConditionsChecker condition = null, params BlueprintComponent[] components) { BlueprintCheck o = Helpers.Create <BlueprintCheck>(); o.Success = success; o.Fail = fail; o.Hidden = hidden; o.DC = dc; o.DCModifiers = dCModifier == null?Array.Empty <DCModifier>() : dCModifier; o.Type = type; o.Conditions = condition == null ? new ConditionsChecker() : condition; o.name = "Check_" + name + num; o.SetComponents(components); library.AddAsset(o, Guid(o.name)); return(o); }
public static void Postfix(ref IEnumerable <TargetWrapper> __result, AbilityTargetsAround __instance, ConditionsChecker ___m_Condition, AbilityExecutionContext context, TargetWrapper anchor) { if (settings.toggleNoFriendlyFireForAOE) { UnitEntityData caster = context.MaybeCaster; IEnumerable <UnitEntityData> targets = GameHelper.GetTargetsAround(anchor.Point, __instance.AoERadius); if (caster == null) { __result = Enumerable.Empty <TargetWrapper>(); return; } switch (__instance.TargetType) { case TargetType.Enemy: targets = targets.Where(caster.IsEnemy); break; case TargetType.Ally: targets = targets.Where(caster.IsAlly); break; default: throw new ArgumentOutOfRangeException(); case TargetType.Any: break; } if (___m_Condition.HasConditions) { targets = targets.Where(u => { using (context.GetDataScope(u)) { return(___m_Condition.Check()); } }).ToList(); } if (caster.IsPlayerFaction && ((context.AbilityBlueprint.EffectOnAlly == AbilityEffectOnUnit.Harmful) || (context.AbilityBlueprint.EffectOnEnemy == AbilityEffectOnUnit.Harmful))) { if (context.AbilityBlueprint.HasLogic <AbilityUseOnRest>()) { AbilityUseOnRestType componentType = context.AbilityBlueprint.GetComponent <AbilityUseOnRest>().Type; //bool healDamage = componentType == AbilityUseOnRestType.HealDamage || componentType == AbilityUseOnRestType.HealDamage; bool healDamage = componentType == AbilityUseOnRestType.HealDamage; targets = targets.Where(target => { if (target.IsPlayerFaction && !healDamage) { bool forUndead = componentType == AbilityUseOnRestType.HealMassUndead || componentType == AbilityUseOnRestType.HealSelfUndead || componentType == AbilityUseOnRestType.HealUndead; return(forUndead == target.Descriptor.IsUndead); } return(true); }); } else { targets = targets.Where(target => !target.IsPlayerFaction); } } __result = targets.Select(target => new TargetWrapper(target)); } }
public void mod_Tick() { if (!KingmakerPatchSettings.Cheats.Abracadabra) { this.source_Tick(); return; } GlobalMapState globalMap = Kingmaker.Game.Instance.Player.GlobalMap; Dictionary <BlueprintLocation, LocationData> .ValueCollection locations = globalMap.Locations.Values; // don't run foreach on tick if we don't have to // this will return true until all locations, except hidden locations and waypoints, are revealed bool canRevealLocations = locations.Any(l => !l.IsRevealed && !IsHiddenOrWaypoint(l)); if (!canRevealLocations) { return; } // removed distance checks foreach (LocationData locationData in locations) { if (locationData.IsRevealed) { continue; } GlobalMapLocation locationObject = GlobalMapRules.Instance.GetLocationObject(locationData.Blueprint); if (!locationObject) { continue; } ConditionsChecker possibleToRevealCondition = locationData.Blueprint.PossibleToRevealCondition; LocationType type = locationData.Blueprint.Type; switch (type) { case LocationType.Location: case LocationType.Landmark: if (!possibleToRevealCondition.HasConditions || possibleToRevealCondition.Check()) { GlobalMapRules.Instance.RevealLocation(locationObject); } break; default: if (type != LocationType.HiddenLocation) { continue; } if (possibleToRevealCondition.HasConditions && !possibleToRevealCondition.Check()) { continue; } GlobalMapRules.Instance.RevealLocation(locationObject); break; } } }