// public void FocusPsiDeficiency() // { // if ((maximumPsiCharge() < 0) && !ParentObject.HasEffect("Psiburdening")) // { // ParentObject.ApplyEffect(new Psiburdening(9999)); // } // else if ((maximumPsiCharge() > 0) && ParentObject.HasEffect("Psiburdening")) // { // ParentObject.RemoveEffect("Psiburdening"); // } // } // maximum psi an entity can hold public int maximumPsiCharge(int Modifier1 = 0) { try { Mutations GetMutations = ParentObject.GetPart <Mutations>(); Psybrachiomancy BrachMutation = ParentObject.GetPart <Psybrachiomancy>(); ArmCost = (2 + BrachMutation.ArmCounter) + (2 * BrachMutation.ArmCounter) - 1; NewArmCost = ArmCost; int differenceSum = NewArmCost; if (GetMutations.HasMutation("Psybrachiomancy") && ArmCounter >= 1) { Dictionary <string, Statistic> Stats = ParentObject.Statistics; float Result = 1 + Stats["Ego"].Modifier; Result += Stats["Toughness"].Modifier / 2f; Result += (Stats["Level"].Value * 0.1f) * Stats["Ego"].Modifier; if (Result < 0f) { return(0); } return((int)Math.Round(Result) - (differenceSum)); } else { Dictionary <string, Statistic> Stats = ParentObject.Statistics; float Result = 1 + Stats["Ego"].Modifier; Result += Stats["Toughness"].Modifier / 2f; Result += (Stats["Level"].Value * 0.1f) * Stats["Ego"].Modifier; if (Result < 0f) { return(0); } return((int)Math.Round(Result)); } } catch { Dictionary <string, Statistic> Stats = ParentObject.Statistics; float Result = 1 + Stats["Ego"].Modifier; Result += Stats["Toughness"].Modifier / 2f; Result += (Stats["Level"].Value * 0.1f) * Stats["Ego"].Modifier; if (Result < 0f) { return(0); } return((int)Math.Round(Result)); } }
public override bool FireEvent(Event E) { if (E.ID == "CommandManifestLimb") { ArmCost = (2 + ArmCounter) + (2 * ArmCounter) - 1; NewArmCost = ArmCost; if (NewArmCost <= focusPsiCurrentMaximumCharges) { UpdateCharges(); ArmCounter += 1; } else if (NewArmCost > focusPsiCurrentMaximumCharges) { UpdateCharges(); return(true); } } if (E.ID == "CommandDismissLimb") { if (ArmCounter >= 1) { ArmCounter -= 1; } UpdateCharges(); } if (E.ID == "AIGetPassiveMutationList") { // AddPlayerMessage("Hey prepare, to eat my combustion blast."); // AddPlayerMessage($"Currentcharges: {focusPsiCurrentCharges}"); // AddPlayerMessage($"MaximumPsi: {maximumPsiCharge()}"); if (focusPsiCurrentCharges < focusPsiCurrentMaximumCharges / 2 && !HandlingCharging()) { E.AddAICommand("CommandFocusPsi"); // AddPlayerMessage($"Currentcharges: {focusPsiCurrentCharges}"); AddPlayerMessage("Something is gathering psionic energy ..."); } else if (focusPsiCurrentCharges >= focusPsiCurrentMaximumCharges - 1 && HandlingCharging()) { E.AddAICommand("CommandFocusPsi"); // AddPlayerMessage($"Currentcharges: {focusPsiCurrentCharges}"); AddPlayerMessage("Something is gathering psionic energy ..."); } } if (E.ID == "CommandFocusPsi") { if (!base.IsMyActivatedAbilityToggledOn(this.PsiFocusActivatedAbilityID)) { base.ToggleMyActivatedAbility(this.PsiFocusActivatedAbilityID); string verb1 = "begin to gather"; string extra1 = "psionic energy"; string TermiP1 = "."; XDidY(ParentObject, verb1, extra1, TermiP1); isCharging = true; } else { base.ToggleMyActivatedAbility(this.PsiFocusActivatedAbilityID); string verb2 = "stop"; string extra2 = "gathering psi energy"; string termiPun2 = "."; XDidY(ParentObject, verb2, extra2, termiPun2); isCharging = false; UseEnergy(1000); } UpdateCharges(); return(false); } else if (E.ID == "EndTurn") { Psybrachiomancy BrachMutation = ParentObject.GetPart <Psybrachiomancy>(); var PsiburdeningCatch = ParentObject.GetEffect <Psiburdening>(); if (base.IsMyActivatedAbilityToggledOn(this.PsiFocusActivatedAbilityID) && (focusPsiCurrentCharges < focusPsiCurrentMaximumCharges)) { int chanceforpsi = (ParentObject.StatMod("Willpower") * 3) + PsiCounter; if (Stat.Random(1, 100) < chanceforpsi) { focusPsiCurrentCharges++; DidX("charge", "psi energy", ".", ColorAsGoodFor: ParentObject); } else { PsiCounter++; } turnsTilPsiDecay++; } else if (ParentObject.HasPart("Psybrachiomancy") && BrachMutation.ArmCounter <= Math.Min(1, ParentObject.StatMod("Willpower")) && ParentObject.HasEffect("Psiburdening")) { ParentObject.RemoveEffect(PsiburdeningCatch); } UpdateCharges(); } else if (E.ID == "PsionicDecay") { if (!(ParentObject.MakeSave("Willpower", effectiveSaveTarget, null, null, "Psionic Decay"))) { focusPsiCurrentCharges -= E.GetIntParameter("Amount", (int)0); // Current default value is zero, change default value to something more appropriate later } UpdateCharges(); } else if (E.ID == "FireEventDebuffSystem") { Psybrachiomancy BrachMutation = ParentObject.GetPart <Psybrachiomancy>(); if (BrachMutation.ArmCounter > ParentObject.StatMod("Willpower") + BrachMutation.Level / 2 && !ParentObject.HasEffect("Psiburdening")) { ParentObject.ApplyEffect(new Psiburdening((Stat.Random(10, 20) - ParentObject.StatMod("Willpower")) * Stat.Random(50, 125))); } else if (BrachMutation.ArmCounter < ParentObject.StatMod("Willpower") && ParentObject.HasEffect("Psiburdening")) { ParentObject.RemoveEffect("Psiburdening"); } } return(base.FireEvent(E)); }