public IEnumerable <Command_CastPower> GetPsykerVerbsNewV3() { // Log.Message("INIT"); foreach (PsykerPowerEntry current in this.allpsykerPowers) { // Log.Message("A"); if (PsykerHasEquipment(current)) { Verb_CastWarpPower newverb = (Verb_CastWarpPower)Activator.CreateInstance(current.psykerPowerDef.MainVerb.verbClass); newverb.caster = this.psyker; newverb.verbProps = current.psykerPowerDef.MainVerb; // Log.Message("B"); Command_CastPower command_CastPower = new Command_CastPower(this); command_CastPower.verb = newverb; command_CastPower.defaultLabel = current.psykerPowerDef.LabelCap; command_CastPower.defaultDesc = current.psykerPowerDef.description; // Log.Message("C"); command_CastPower.targetingParams = TargetingParameters.ForAttackAny(); if (newverb.warpverbprops.PsykerPowerCategory == PsykerPowerTargetCategory.TargetSelf || newverb.warpverbprops.PsykerPowerCategory == PsykerPowerTargetCategory.TargetAoE) { command_CastPower.targetingParams = TargetingParameters.ForSelf(this.psyker); } // Log.Message("C2"); command_CastPower.icon = current.psykerPowerDef.uiIcon; // Log.Message("D1"); string str; if (FloatMenuUtility.GetAttackAction(this.psyker, LocalTargetInfo.Invalid, out str) == null) { command_CastPower.Disable(str.CapitalizeFirst() + "."); } // Log.Message("D"); command_CastPower.action = delegate(Thing target) { CompPsyker.TryCastPowerAction(psyker, target, this, newverb, current.psykerPowerDef as PsykerPowerDef)?.Invoke(); }; if (newverb.caster.Faction != Faction.OfPlayer) { command_CastPower.Disable("CannotOrderNonControlled".Translate()); } if (newverb.CasterIsPawn) { if (newverb.CasterPawn.story.DisabledWorkTags.Contains(WorkTags.Violent)) { command_CastPower.Disable("IsIncapableOfViolence".Translate(new object[] { newverb.CasterPawn.NameStringShort })); } else if (!newverb.CasterPawn.drafter.Drafted) { command_CastPower.Disable("IsNotDrafted".Translate(new object[] { newverb.CasterPawn.NameStringShort })); } else if (!this.IsActive) { command_CastPower.Disable("PsykerPowerRecharging".Translate(new object[] { newverb.CasterPawn.NameStringShort })); } } yield return(command_CastPower); } } yield break; }
public IEnumerable <Command_CastPower> GetPsykerVerbsNew() { // Log.Message("Found temp powers: " + this.temporaryPowers.Count.ToString() + " while finding Verbs: " + temporaryPowers.Count.ToString()); // Log.Message(this.PowerVerbs.Count.ToString()); List <Verb_CastWarpPower> temp = new List <Verb_CastWarpPower>(); temp.AddRange(this.PowerVerbs); for (int i = 0; i < temp.Count; i++) { int j = i; Verb_CastWarpPower newverb = temp[j]; newverb.caster = this.psyker; newverb.verbProps = temp[j].verbProps; Command_CastPower command_CastPower = new Command_CastPower(this); command_CastPower.verb = newverb; command_CastPower.defaultLabel = allPowers[j].def.LabelCap; command_CastPower.defaultDesc = allPowers[j].def.description; command_CastPower.targetingParams = TargetingParameters.ForAttackAny(); if (newverb.warpverbprops.PsykerPowerCategory == PsykerPowerTargetCategory.TargetSelf || newverb.warpverbprops.PsykerPowerCategory == PsykerPowerTargetCategory.TargetAoE) { command_CastPower.targetingParams = TargetingParameters.ForSelf(this.psyker); } command_CastPower.icon = allPowers[j].def.uiIcon; string str; if (FloatMenuUtility.GetAttackAction(this.psyker, TargetInfo.Invalid, out str) == null) { command_CastPower.Disable(str.CapitalizeFirst() + "."); } command_CastPower.action = delegate(Thing target) { Action attackAction = CompPsyker.TryCastPowerAction(psyker, target, this, newverb, allPowers[j].def as PsykerPowerDef); if (attackAction != null) { attackAction(); } }; if (newverb.caster.Faction != Faction.OfPlayer) { command_CastPower.Disable("CannotOrderNonControlled".Translate()); } if (newverb.CasterIsPawn) { if (newverb.CasterPawn.story.DisabledWorkTags.Contains(WorkTags.Violent)) { command_CastPower.Disable("IsIncapableOfViolence".Translate(new object[] { newverb.CasterPawn.NameStringShort })); } else if (!newverb.CasterPawn.drafter.Drafted) { command_CastPower.Disable("IsNotDrafted".Translate(new object[] { newverb.CasterPawn.NameStringShort })); } else if (!this.IsActive) { command_CastPower.Disable("PsykerPowerRecharging".Translate(new object[] { newverb.CasterPawn.NameStringShort })); } } yield return(command_CastPower); } yield break; }
public IEnumerable <Command_CastPower> GetPsykerVerbsNew() { foreach (KeyValuePair <PsykerPower, Verb_CastWarpPower> entry in this.psykerPowers) { Verb_CastWarpPower newverb = entry.Value; newverb.caster = this.psyker; newverb.verbProps = entry.Value.verbProps; Command_CastPower command_CastPower = new Command_CastPower(this); command_CastPower.verb = newverb; command_CastPower.defaultLabel = entry.Key.def.LabelCap; command_CastPower.defaultDesc = entry.Key.def.description; command_CastPower.targetingParams = TargetingParameters.ForAttackAny(); if (newverb.warpverbprops.PsykerPowerCategory == PsykerPowerTargetCategory.TargetSelf || newverb.warpverbprops.PsykerPowerCategory == PsykerPowerTargetCategory.TargetAoE) { command_CastPower.targetingParams = TargetingParameters.ForSelf(this.psyker); } command_CastPower.icon = entry.Key.def.uiIcon; string str; if (FloatMenuUtility.GetAttackAction(this.psyker, LocalTargetInfo.Invalid, out str) == null) { command_CastPower.Disable(str.CapitalizeFirst() + "."); } command_CastPower.action = delegate(Thing target) { Action attackAction = CompPsyker.TryCastPowerAction(psyker, target, this, newverb, entry.Key.def as PsykerPowerDef); if (attackAction != null) { attackAction(); } }; if (newverb.caster.Faction != Faction.OfPlayer) { command_CastPower.Disable("CannotOrderNonControlled".Translate()); } if (newverb.CasterIsPawn) { if (newverb.CasterPawn.story.DisabledWorkTags.Contains(WorkTags.Violent)) { command_CastPower.Disable("IsIncapableOfViolence".Translate(new object[] { newverb.CasterPawn.NameStringShort })); } else if (!newverb.CasterPawn.drafter.Drafted) { command_CastPower.Disable("IsNotDrafted".Translate(new object[] { newverb.CasterPawn.NameStringShort })); } else if (!this.IsActive) { command_CastPower.Disable("PsykerPowerRecharging".Translate(new object[] { newverb.CasterPawn.NameStringShort })); } } yield return(command_CastPower); } yield break; }