private static void Postfix(GameObject Proselytizer, ref int __result) { if (!Proselytizer.IsPlayer()) { return; } Log($"Persuasion_Proselytize.GetMaxTargets. Original result: {__result}"); __result *= 2; }
private static void Postfix_GetMaxTargets(GameObject Beguiler, ref int __result) { if (!Beguiler.IsPlayer()) { return; } Log($"Beguiling.GetMaxTargets. Original result: {__result}"); __result *= 2; }
public override bool FireEvent(Event E) { if (E.ID == "OwnerGetInventoryActions") { EventParameterGetInventoryActions eventParameterGetInventoryActions = E.GetParameter("Actions") as EventParameterGetInventoryActions; XRL.World.GameObject GO = E.GetGameObjectParameter("Object"); eventParameterGetInventoryActions.AddAction("Paint", 'P', true, "&WP&yaint " + GO.the + GO.DisplayNameOnly, "InvCommandPainting"); if (GO.GetPart <LiquidVolume>() != null) { eventParameterGetInventoryActions.AddAction("PaintSelf", 's', true, "Paint your&Ws&yelf", "InvCommandPaintingSelf"); } return(true); } if (E.ID == "InvCommandPainting") { XRL.World.GameObject Owner = E.GetGameObjectParameter("Owner"); XRL.World.GameObject Object = E.GetGameObjectParameter("Object"); if (Object.pBrain != null && Object.pBrain.GetFeeling(Owner) < 50) { Object.pBrain.AdjustFeeling(Owner, -10); if (Owner.IsPlayer()) { Popup.Show(Object.The + Object.DisplayNameOnly + " doesn't want to be painted!"); } if (Object.MakeSave("Agility", 20, Owner, null, "Painting")) { return(false); } } Paint(Object, Owner); } if (E.ID == "InvCommandPaintingSelf") { XRL.World.GameObject Owner = E.GetGameObjectParameter("Owner"); Paint(Owner, Owner); } // if (E.ID == "AIGetOffensiveMutationList") // { // List<AICommandList> list = (List<AICommandList>)E.GetParameter("List"); // ActivatedAbilities activatedAbilities = ParentObject.GetPart("ActivatedAbilities") as ActivatedAbilities; // ActivatedAbilityEntry activatedAbilityEntry = activatedAbilities.AbilityByGuid[ActivatedAbilityID]; // list.Add(new AICommandList("CommandPaint", 1)); // } return(base.FireEvent(E)); }
public void Paint(XRL.World.GameObject Canvas, XRL.World.GameObject Artist) { //choose colour if (Artist.IsPlayer()) { // CHOOSE DESIGN List <string> ChoiceList = new List <string>(); List <char> HotkeyList = new List <char>(); char ch = 'a'; ChoiceList.Add("Custom design."); HotkeyList.Add(ch); ch = (char)(ch + 1); List <acegiak_PaintingRecipe> recipes = new List <acegiak_PaintingRecipe>(); foreach (acegiak_PaintingRecipe observation in Recipes) { if (observation is acegiak_PaintingRecipe) { acegiak_PaintingRecipe recipe = observation as acegiak_PaintingRecipe; if (recipe.revealed) { recipes.Add(recipe); ChoiceList.Add(recipe.FormName + ": \n" + recipe.FormDescription + "\n"); HotkeyList.Add(ch); ch = (char)(ch + 1); } } } string BaseColour = ""; string DetailColour = ""; List <string> chosenStuffs = new List <string>(); int designNumber = Popup.ShowOptionList(string.Empty, ChoiceList.ToArray(), HotkeyList.ToArray(), 0, "Choose a design.", 60, false, true); if (designNumber < 0) { return; } // CHOOSE BODY PART ChoiceList = new List <string>(); HotkeyList = new List <char>(); ch = 'a'; BodyPart paintingpart = null; if (Canvas.GetPart <Body>() != null) { List <BodyPart> parts = new List <BodyPart>(); ch = 'a'; foreach (BodyPart part in Canvas.GetPart <Body>()._Body.GetParts()) { if (!part.Abstract && !part.Extrinsic) { if (designNumber <= 0 || recipes[designNumber - 1].PartType == null || part.Type == recipes[designNumber - 1].PartType) { parts.Add(part); HotkeyList.Add(ch); ChoiceList.Add(part.Name); ch = (char)(ch + 1); } } } if (parts.Count == 0) { Popup.Show("They don't have the body part required for this pattern."); return; } int partChoice = Popup.ShowOptionList(string.Empty, ChoiceList.ToArray(), HotkeyList.ToArray(), 0, "Which part of " + Canvas.the + Canvas.DisplayNameOnly + " will you paint?", 60, false, true); if (partChoice >= 0) { paintingpart = parts[partChoice]; } } // CHOOSE BASE COLOR Inventory part2 = Artist.GetPart <Inventory>(); List <XRL.World.GameObject> ObjectChoices = new List <XRL.World.GameObject>(); ChoiceList = new List <string>(); HotkeyList = new List <char>(); ch = 'a'; part2.ForeachObject(delegate(XRL.World.GameObject GO) { if (GO != null && GO.GetPart <LiquidVolume>() != null && GO.GetPart <LiquidVolume>().GetPrimaryLiquid() != null && GO.GetPart <LiquidVolume>().GetPrimaryLiquid().Name != "water") { if (designNumber <= 0 || recipes[designNumber - 1].BaseColor == null || (recipes[designNumber - 1].BaseColor.Length == 1 && GO.GetPart <LiquidVolume>().GetPrimaryLiquidColor() == recipes[designNumber - 1].BaseColor) || (recipes[designNumber - 1].BaseColor.Length > 1 && GO.GetPart <LiquidVolume>().GetPrimaryLiquid().Name == recipes[designNumber - 1].BaseColor)) { ObjectChoices.Add(GO); HotkeyList.Add(ch); ChoiceList.Add(GO.DisplayName); ch = (char)(ch + 1); } } }); if (ObjectChoices.Count == 0) { if (designNumber > 0) { Popup.Show("You have no " + acegiak_LiquidDye.ColorNames[recipes[designNumber - 1].BaseColor] + " pigments."); } else { Popup.Show("You have nothing to paint with."); } return; } int baseColor = Popup.ShowOptionList(string.Empty, ChoiceList.ToArray(), HotkeyList.ToArray(), 0, "Choose your base colour.", 60, false, true); if (baseColor >= 0) { BaseColour = ObjectChoices[baseColor].GetPart <LiquidVolume>().GetPrimaryLiquidColor(); if (ObjectChoices[baseColor].GetPart <LiquidVolume>().GetPrimaryLiquid() is acegiak_LiquidDye) { //that's fine } else { StringBuilder b = new StringBuilder(); ObjectChoices[baseColor].GetPart <LiquidVolume>().AppendLiquidName(b); chosenStuffs.Add(b.ToString()); } } if (BaseColour == "") { BaseColour = Canvas.pRender.TileColor == String.Empty?Canvas.pRender.GetForegroundColor().Replace("&", ""):Canvas.pRender.TileColor.Replace("&", ""); } //CHOOSE DETAIL COLOR List <XRL.World.GameObject> ObjectChoices2 = new List <XRL.World.GameObject>(); ChoiceList = new List <string>(); HotkeyList = new List <char>(); ch = 'a'; part2.ForeachObject(delegate(XRL.World.GameObject GO) { if (GO != null && GO.GetPart <LiquidVolume>() != null && GO.GetPart <LiquidVolume>().GetPrimaryLiquid() != null && GO.GetPart <LiquidVolume>().GetPrimaryLiquid().Name != "water") { if (designNumber <= 0 || recipes[designNumber - 1].DetailColor == null || (recipes[designNumber - 1].DetailColor.Length == 1 && GO.GetPart <LiquidVolume>().GetPrimaryLiquidColor() == recipes[designNumber - 1].DetailColor) || (recipes[designNumber - 1].DetailColor.Length > 1 && GO.GetPart <LiquidVolume>().GetPrimaryLiquid().Name == recipes[designNumber - 1].DetailColor)) { ObjectChoices2.Add(GO); HotkeyList.Add(ch); ChoiceList.Add(GO.DisplayName); ch = (char)(ch + 1); } } }); if (ObjectChoices2.Count == 0) { if (designNumber > 0) { Popup.Show("You have no " + acegiak_LiquidDye.ColorNames[recipes[designNumber - 1].DetailColor] + " pigments."); } else { Popup.Show("You have nothing to paint with."); } return; } int detailColor = Popup.ShowOptionList(string.Empty, ChoiceList.ToArray(), HotkeyList.ToArray(), 0, "Choose your detail colour.", 60, false, true); if (detailColor >= 0) { DetailColour = ObjectChoices[detailColor].GetPart <LiquidVolume>().GetPrimaryLiquidColor(); if (ObjectChoices[detailColor].GetPart <LiquidVolume>().GetPrimaryLiquid() is acegiak_LiquidDye) { //that's fine } else { StringBuilder c = new StringBuilder(); ObjectChoices[detailColor].GetPart <LiquidVolume>().AppendLiquidName(c); chosenStuffs.Add(c.ToString()); } } if (DetailColour == "") { DetailColour = Canvas.pRender.DetailColor; } if (detailColor < 0 && baseColor < 0) { return; } // DO THE PAINTING if (paintingpart != null) { List <Effect> list = new List <Effect>(); foreach (Effect effect in Canvas.Effects) { list.Add(effect); } foreach (Effect e in list) { if (e is acegiak_ModHandPainted) { int?bpid = ((acegiak_ModHandPainted)e).BodyPartId; if (bpid != null && Canvas.GetPart <Body>() != null) { if ( Canvas.GetPart <Body>()._Body.GetPartByID(bpid.Value) == paintingpart) { Canvas.RemoveEffect(e); } } } } } acegiak_ModHandPainted painting = new acegiak_ModHandPainted(); if (designNumber > 0 && recipes[designNumber - 1].className != null) { Type t = typeof(acegiak_ModHandPainted); painting = Activator.CreateInstance(Type.GetType(recipes[designNumber - 1].className)) as acegiak_ModHandPainted; // painting = (acegiak_ModHandPainted)Activator.CreateInstance(null, recipes[designNumber-1].className ).Unwrap(); } painting.Engraving = "mysterious shapes"; if (designNumber == 0) { painting.Engraving = Popup.AskString("What do you depict?", string.Empty, 999); } if (designNumber > 0) { painting.Engraving = recipes[designNumber - 1].FormDescription; painting.Faction = recipes[designNumber - 1].FormFaction; painting.DisplayName = recipes[designNumber - 1].FormName; } painting.BaseColour = BaseColour; painting.DetailColour = DetailColour; if (paintingpart != null) { painting.BodyPartId = paintingpart.ID; } if (chosenStuffs.Count > 0) { painting.With = String.Join(" and ", chosenStuffs.ToArray()); } if (baseColor >= 0) { ObjectChoices[baseColor].GetPart <LiquidVolume>().GetPrimaryLiquid().PouredOn(new LiquidVolume(ObjectChoices[baseColor].GetPart <LiquidVolume>().GetPrimaryLiquid().ID, 1), Canvas); ObjectChoices[baseColor].GetPart <LiquidVolume>().UseDrams(1); } if (detailColor >= 0) { ObjectChoices2[detailColor].GetPart <LiquidVolume>().GetPrimaryLiquid().PouredOn(new LiquidVolume(ObjectChoices2[detailColor].GetPart <LiquidVolume>().GetPrimaryLiquid().ID, 1), Canvas); ObjectChoices2[detailColor].GetPart <LiquidVolume>().UseDrams(1); } Canvas.ApplyEffect(painting); } }