private static Gizmo GetSquadAttackGizmo(Pawn pawn) { Command_Target command_Target = new Command_Target(); command_Target.defaultLabel = "CommandSquadAttack".Translate(); command_Target.defaultDesc = "CommandSquadAttackDesc".Translate(); command_Target.targetingParams = TargetingParameters.ForAttackAny(); command_Target.hotKey = KeyBindingDefOf.Misc4; command_Target.icon = TexCommand.SquadAttack; string str; if (FloatMenuUtility.GetAttackAction(pawn, LocalTargetInfo.Invalid, out str) == null) { command_Target.Disable(str.CapitalizeFirst() + "."); } command_Target.action = delegate(Thing target) { IEnumerable <Pawn> enumerable = Find.Selector.SelectedObjects.Where(delegate(object x) { Pawn pawn3 = x as Pawn; return(pawn3 != null && pawn3.IsColonistPlayerControlled && pawn3.Drafted); }).Cast <Pawn>(); foreach (Pawn pawn2 in enumerable) { string text; Action attackAction = FloatMenuUtility.GetAttackAction(pawn2, target, out text); if (attackAction != null) { attackAction(); } } }; return(command_Target); }
private static void PawnAttackGizmoUtility_GetSquadAttackGizmoPostfix(Pawn pawn, ref Gizmo __result) { Command_Target command_Target = (Command_Target)__result; bool flag = false; List <object> selectedObjectsListForReading = Find.Selector.SelectedObjectsListForReading; if (selectedObjectsListForReading.Count > 1) { for (int i = 0; i < selectedObjectsListForReading.Count; i++) { Pawn pawn2 = selectedObjectsListForReading[i] as Pawn; if (pawn2 != null && pawn2.IsColonistPlayerControlled && pawn2.GetComp <VEF_Comp_Pawn_RangedVerbs>().CurRangedVerb != null && pawn2.GetComp <VEF_Comp_Pawn_RangedVerbs>().CurRangedVerb.IsStillUsableBy(pawn2) && (pawn2.GetComp <VEF_Comp_Pawn_RangedVerbs>().CurRangedVerb.EquipmentSource == null || pawn2.GetComp <VEF_Comp_Pawn_RangedVerbs>().CurRangedVerb.EquipmentSource != pawn2.equipment.Primary)) { flag = true; } } } if (flag || (VEF_Comp_Pawn_RangedVerbs.ShouldUseSquadAttackGizmo())) { command_Target.defaultLabel = "CommandSquadEquipmentAttack".Translate(); command_Target.defaultDesc = "CommandSquadEquipmentAttackDesc".Translate(); if (FloatMenuUtility.GetAttackAction(pawn, LocalTargetInfo.Invalid, out string str) == null) { command_Target.Disable(str.CapitalizeFirst() + "."); } command_Target.action = delegate(Thing target) { IEnumerable <Pawn> pawns = Find.Selector.SelectedObjects.Where(delegate(object x) { Pawn pawn3 = x as Pawn; return(pawn3 != null && pawn3.IsColonistPlayerControlled && pawn3.Drafted); }).Cast <Pawn>(); foreach (Pawn pawn2 in pawns) { if (pawn2.equipment != null && pawn2.equipment.Primary != null && !pawn2.equipment.PrimaryEq.PrimaryVerb.IsMeleeAttack && (pawn2.GetComp <VEF_Comp_Pawn_RangedVerbs>().CurRangedVerb.EquipmentSource == null || pawn2.GetComp <VEF_Comp_Pawn_RangedVerbs>().CurRangedVerb.EquipmentSource.def != pawn2.equipment.Primary.def)) { pawn2.GetComp <VEF_Comp_Pawn_RangedVerbs>().SetCurRangedVerb(pawn2.equipment.PrimaryEq.PrimaryVerb, null); } string text; FloatMenuUtility.GetAttackAction(pawn2, target, out text)?.Invoke(); } }; __result = command_Target; } return; }
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> 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() { 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; }