Exemple #1
0
        public static void UseProvo(BaseCreature from, bool randomly)
        {
            if (from.Combatant == null && randomly || !CheckBarding(from))
                return;

            if (!CanUse(from))
                return;

            if (!from.UseSkill(SkillName.Provocation))
                return;

            var targetone = FindRandomTarget(from, randomly);

            if (targetone == null)
                return;

            if (from.Target != null)
                from.Target.Invoke(from, targetone);

            var targettwo = randomly ? FindRandomTarget(from, randomly) : from.Combatant;

            if (targettwo == null)
                return;

            if (from.Target != null)
                from.Target.Invoke(from, targettwo);
        }
Exemple #2
0
        public static void UseDiscord(BaseCreature from)
        {
            if (from.Combatant == null || !CanUse(from) || !CheckBarding(from))
                return;

            //int effect = 0.0;

            //if ( SkillHandlers.Discordance.GetEffect( from.Combatant, ref effect ) )
            //return;

            if (!from.UseSkill(SkillName.Discordance))
                return;

            if (from.Combatant is BaseCreature)
                if (from.Target != null)
                    from.Target.Invoke(from, from.Combatant);
                else
                {
                    var effect = -(from.Skills[SkillName.Discordance].Value/5.0);
                    var duration = TimeSpan.FromSeconds(from.Skills[SkillName.Discordance].Value*2);

                    ResistanceMod[] mods =
                    {
                        new ResistanceMod(ResistanceType.Physical, (int) (effect*0.01)),
                        new ResistanceMod(ResistanceType.Fire, (int) (effect*0.01)),
                        new ResistanceMod(ResistanceType.Cold, (int) (effect*0.01)),
                        new ResistanceMod(ResistanceType.Poison, (int) (effect*0.01)),
                        new ResistanceMod(ResistanceType.Energy, (int) (effect*0.01))
                    };

                    TimedResistanceMod.AddMod(from.Combatant, "Discordance", mods, duration);
                    from.Combatant.AddStatMod(new StatMod(StatType.Str, "DiscordanceStr",
                        (int) (from.Combatant.RawStr*effect), duration));
                    from.Combatant.AddStatMod(new StatMod(StatType.Int, "DiscordanceInt",
                        (int) (from.Combatant.RawInt*effect), duration));
                    from.Combatant.AddStatMod(new StatMod(StatType.Dex, "DiscordanceDex",
                        (int) (from.Combatant.RawDex*effect), duration));
                }
        }
Exemple #3
0
        public static void UsePeace(BaseCreature from)
        {
            if (from.Combatant == null || !CanUse(from) || !CheckBarding(from))
                return;

            if (!from.UseSkill(SkillName.Peacemaking))
                return;

            if (from.Combatant is PlayerMobile)
            {
#if ML
                                PlayerMobile pm = (PlayerMobile)from.Combatant;
                                if ( pm.PeacedUntil <= DateTime.UtcNow )
                                {
                                        pm.PeacedUntil = DateTime.UtcNow + TimeSpan.FromSeconds( (int)(from.Skills[SkillName.Peacemaking].Value / 5) );
                                        pm.SendLocalizedMessage( 500616 ); // You hear lovely music, and forget to continue battling!                                   
                                }
                #endif
            }
            else if (from.Target != null)
                from.Target.Invoke(from, from.Combatant);
        }
Exemple #4
0
        public static bool UseDiscord(BaseCreature from, Mobile target)
        {
            if (target == null || !target.InLOS(from) || CheckBarding(from) == null)
                return false;

            if (from.Spell != null)
                from.Spell = null;

            if (!from.UseSkill(SkillName.Discordance))
                return false;

            if (from.Target is Discordance.DiscordanceTarget)
            {
                from.Target.Invoke(from, target);
                return true;
            }
            return false;
        }