private static void ListOptions(IInteractionProxy <IActor, TTarget, GameHitParameters <TTarget> > proxy, IEnumerable <IInteractionOptionItem <IActor, TTarget, GameHitParameters <TTarget> > > options, IActor actor, TTarget target, GameObjectHit hit, bool popup, List <string> path, List <InteractionObjectPair> results) { GameHitParameters <TTarget> parameters = new GameHitParameters <TTarget>(actor, target, hit); foreach (IInteractionOptionItem <IActor, TTarget, GameHitParameters <TTarget> > option in options) { if (!option.Test(parameters)) { continue; } IInteractionOptionList <TTarget> list = option as IInteractionOptionList <TTarget>; if (list != null) { List <string> newPath = new List <string>(path); newPath.Add(option.Name); ListOptions(list, list.IOptions(), actor, target, hit, popup, newPath, results); } else { results.Add(new InteractionObjectPair(new CommonDefinition <INTERACTION>(proxy, option, popup, path.ToArray()), target)); } } }
private CommonDefinition(IInteractionProxy <IActor, TTarget, GameHitParameters <TTarget> > proxy, IInteractionOptionItem <IActor, TTarget, GameHitParameters <TTarget> > option, bool popup, string[] path) : base(path) { mProxy = proxy; mOption = option; mPopup = popup; }
public override void ConsumeMana(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition) { OccultUnicorn unicorn = actor.OccultManager.GetOccultType(OccultTypes.Unicorn) as OccultUnicorn; if (unicorn != null) { unicorn.MagicPoints.UsePoints((int)definition.SpellSettings.mMinMana); (Sims3.UI.Responder.Instance.HudModel as HudModel).FlashMagicMotiveBar(); } }
public override void ConsumeMana(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition) { OccultGenie genie = actor.OccultManager.GetOccultType(OccultTypes.Genie) as OccultGenie; if (genie != null) { genie.MagicPoints.UsePoints((int)definition.SpellSettings.mMinMana); (Sims3.UI.Responder.Instance.HudModel as HudModel).FlashMagicMotiveBar(); } }
public override void ConsumeMana(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition) { MagicWand wand = proxy.Wand; if (wand != null) { wand.DrainMotive(actor, CommodityKind.MagicFatigue, -definition.SpellSettings.mMinMana); } else { float num = (definition.SpellSettings.mMinMana * DefaultWand.kMotiveDrainMultiplier) * MagicWand.kMoonPhaseMotiveDrainMultiplier[World.GetLunarPhase()]; if (actor.BuffManager.HasElement(BuffNames.AnimalFamiliar)) { num *= MagicWand.kFamiliarMotiveMultiplier; } actor.Motives.ChangeValue(CommodityKind.MagicFatigue, -num); (Sims3.UI.Responder.Instance.HudModel as HudModel).FlashMagicMotiveBar(); } }
public override void ConsumeMana(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition) { MagicWand wand = proxy.Wand; if (wand != null) { wand.DrainMotive(actor, CommodityKind.MagicFatigue, -definition.SpellSettings.mMinMana); } else { float num = (definition.SpellSettings.mMinMana * DefaultWand.kMotiveDrainMultiplier) * MagicWand.kMoonPhaseMotiveDrainMultiplier[World.GetLunarPhase()]; if (actor.BuffManager.HasElement(BuffNames.AnimalFamiliar)) { num *= MagicWand.kFamiliarMotiveMultiplier; } actor.Motives.ChangeValue(CommodityKind.MagicFatigue, -num); (Sims3.UI.Responder.Instance.HudModel as HudModel).FlashMagicMotiveBar(); } }
public override bool IsFailure(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition, out bool epicFailure) { bool fail = true; epicFailure = false; SpellcastingSkill spellcasting = actor.SkillManager.GetElement(SkillNames.Spellcasting) as SpellcastingSkill; MagicWand wand = MagicWand.GetWandToUse(actor, spellcasting); if (wand != null) { fail = RandomUtil.RandomChance(wand.SuccessChance(actor, GetMinSkillLevel(definition), spellcasting.SkillLevel)); if (fail) { epicFailure = RandomUtil.RandomChance(wand.EpicFailChance(actor)); } } return !fail; }
public override bool IsFailure(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition, out bool epicFailure) { bool fail = true; epicFailure = false; SpellcastingSkill spellcasting = actor.SkillManager.GetElement(SkillNames.Spellcasting) as SpellcastingSkill; MagicWand wand = MagicWand.GetWandToUse(actor, spellcasting); if (wand != null) { fail = RandomUtil.RandomChance(wand.SuccessChance(actor, GetMinSkillLevel(definition), spellcasting.SkillLevel)); if (!fail) { epicFailure = RandomUtil.RandomChance(wand.EpicFailChance(actor)); } } return(fail); }
public abstract bool IsFailure(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition, out bool epicFailure);
public override bool IsFailure(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition, out bool epicFailure) { epicFailure = false; return(GetMinSkillLevel(definition) < actor.SkillManager.GetSkillLevel(SkillNames.FairyMagic)); }
public override void ConsumeMana(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition) { actor.Motives.ChangeValue(CommodityKind.AuraPower, -definition.SpellSettings.mMinMana); (Sims3.UI.Responder.Instance.HudModel as HudModel).FlashMagicMotiveBar(); }
public abstract bool IsFailure(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition, out bool epicFailure);
public override bool IsFailure(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition, out bool epicFailure) { epicFailure = false; return(false); }
public override void ConsumeMana(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition) { actor.Motives.ChangeValue(CommodityKind.AuraPower, -definition.SpellSettings.mMinMana); (Sims3.UI.Responder.Instance.HudModel as HudModel).FlashMagicMotiveBar(); }
public override bool IsFailure(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition, out bool epicFailure) { epicFailure = false; return (GetMinSkillLevel(definition) < actor.SkillManager.GetSkillLevel(SkillNames.FairyMagic)); }
public abstract void ConsumeMana(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition);
public abstract void ConsumeMana(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition);
public override bool IsFailure(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition, out bool epicFailure) { epicFailure = false; return false; }