예제 #1
0
            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));
                    }
                }
            }
예제 #2
0
 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;
 }
예제 #3
0
 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();
     }
 }
예제 #4
0
        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();
            }
        }
예제 #5
0
 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();
     }
 }
예제 #6
0
        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();
            }
        }
예제 #7
0
        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;
        }
예제 #8
0
        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);
        }
예제 #9
0
 public abstract bool IsFailure(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition, out bool epicFailure);
예제 #10
0
        public override bool IsFailure(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition, out bool epicFailure)
        {
            epicFailure = false;

            return(GetMinSkillLevel(definition) < actor.SkillManager.GetSkillLevel(SkillNames.FairyMagic));
        }
예제 #11
0
 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();
 }
예제 #12
0
 public abstract bool IsFailure(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition, out bool epicFailure);
예제 #13
0
        public override bool IsFailure(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition, out bool epicFailure)
        {
            epicFailure = false;

            return(false);
        }
예제 #14
0
 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();
 }
예제 #15
0
        public override bool IsFailure(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition, out bool epicFailure)
        {
            epicFailure = false;

            return (GetMinSkillLevel(definition) < actor.SkillManager.GetSkillLevel(SkillNames.FairyMagic));
        }
예제 #16
0
 public abstract void ConsumeMana(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition);
예제 #17
0
 public abstract void ConsumeMana(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition);
예제 #18
0
        public override bool IsFailure(Sim actor, IInteractionProxy proxy, IMagicalDefinition definition, out bool epicFailure)
        {
            epicFailure = false;

            return false;
        }