protected void mod_TickOnUnit(UnitEntityData unit) { if (unit.ActivatableAbilities.RawFacts.Count <= 0) { return; } foreach (Fact fact in unit.ActivatableAbilities.RawFacts) { var ability = (ActivatableAbility)fact; if (ability.IsWaitingForTarget) { continue; } bool flag = ability.Blueprint.DeactivateIfOwnerDisabled && !ability.Owner.State.CanAct || ability.Blueprint.DeactivateIfOwnerUnconscious && !ability.Owner.State.IsConscious || Kingmaker.Game.Instance.CurrentMode == GameModeType.Rest; if (ability.IsRunning) { if (flag) { ability.Stop(); } else { ability.TimeToNextRound -= Kingmaker.Game.Instance.TimeController.GameDeltaTime; if (ability.TimeToNextRound <= 0f) { ability.OnNewRound(); if (KingmakerPatchSettings.Cheats.InstantCooldowns && ability.Owner.Unit.IsDirectlyControllable) { UnitCooldownsHelper.Reset(ability.Owner.Unit.CombatState.Cooldown); } ability.TimeToNextRound = 6f; } } } else if (ability.IsOn && (ability.Blueprint.ActivateImmediately || ability.ReadyToStart)) { if (ability.Blueprint.ActivateOnCombatStarts && !unit.IsInCombat || flag) { continue; } ability.TryStart(); } } var unitPartActivatableAbility = unit.Get <UnitPartActivatableAbility>(); unitPartActivatableAbility?.Update(); }
public void mod_OnNewRound() { if (!KingmakerPatchSettings.Cheats.InstantCooldowns) { this.source_OnNewRound(); return; } if (this.Unit.IsDirectlyControllable) { // this.Cooldown.Clear() UnitCooldownsHelper.Reset(this.Cooldown); } this.source_OnNewRound(); }
protected void mod_TickOnUnit(UnitEntityData unit) { if (!KingmakerPatchSettings.Cheats.InstantCooldowns) { this.source_TickOnUnit(unit); } if (unit.IsDirectlyControllable) { UnitCombatState combatState = unit.CombatState; UnitCooldownsHelper.Reset(combatState.Cooldown); combatState.OnNewRound(); EventBus.RaiseEvent((IUnitNewCombatRoundHandler h) => h.HandleNewCombatRound(unit)); return; } this.source_TickOnUnit(unit); }