}//*/ internal static T CheckPerks <T>(CharacterMotherClass player, Perk.Trigger trigger, T arguments) { return((T)CheckPerksM(player, trigger, arguments)[0]); }
internal static object[] CheckPerks(CharacterMotherClass player, Perk.Trigger trigger, params object[] arguments) { return(CheckPerksM(player, trigger, arguments)); }
internal static object[] CheckPerksM(CharacterMotherClass player, Perk.Trigger trigger, params object[] arguments) { if (player.perks != null && player.perks.Count > 0) { for (int i = 0; i < player.perks.Count; i++) { Perk p = player.perks[i]; try { if (p.trigger == trigger) { arguments = p.Run(player, false, arguments); } if (p.end != Perk.Trigger.Null && p.end == trigger) { arguments = p.Run(player, true, arguments); } } catch (Exception e) { _ = Handlers.UniqueChannels.Instance.SendToLog(e, $"Error in perk {p.name}"); } } } for (int i = 0; i < Equipment.gearCount; i++) { var gear = player.equipment.GetGear(i); if (gear?.perk != null) { try { if (gear.perk.trigger == trigger) { arguments = gear.perk.Run(player, false, arguments); } if (gear.perk.end != Perk.Trigger.Null && gear.perk.end == trigger) { arguments = gear.perk.Run(player, true, arguments); } } catch (Exception e) { _ = Handlers.UniqueChannels.Instance.SendToLog(e, $"Error in equipment perk {gear?.perk?.name}"); } } } if (player.status != null) { for (int i = 0; i < player.status.Count;) { var p = player.status[i]; try { if (p.trigger == trigger) { arguments = p.Run(player, false, arguments); } if (p.end != Perk.Trigger.Null && p.end == trigger) { arguments = p.Run(player, true, arguments); } } catch (Exception e) { _ = Handlers.UniqueChannels.Instance.SendToLog(e, $"Error in status {p.name}"); } // if (p.rank <= 0) { player.status.RemoveAt(i); } else { i++; } } } return(arguments); }//*/