Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
103
Scripts/Spells/Skill Masteries/ManaShield.cs
Normal file
103
Scripts/Spells/Skill Masteries/ManaShield.cs
Normal file
@@ -0,0 +1,103 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Spells;
|
||||
using Server.Network;
|
||||
using Server.Mobiles;
|
||||
using Server.Spells.Spellweaving;
|
||||
|
||||
namespace Server.Spells.SkillMasteries
|
||||
{
|
||||
public class ManaShieldSpell : SkillMasterySpell
|
||||
{
|
||||
private static SpellInfo m_Info = new SpellInfo(
|
||||
"Mana Shield", "Faerkulggen",
|
||||
-1,
|
||||
9061
|
||||
);
|
||||
|
||||
public override double RequiredSkill { get { return 90; } }
|
||||
public override double UpKeep { get { return 0; } }
|
||||
public override int RequiredMana { get { return 40; } }
|
||||
public override bool PartyEffects { get { return false; } }
|
||||
public override bool RevealOnTick { get { return false; } }
|
||||
|
||||
public override SkillName CastSkill { get { return SkillName.Spellweaving; } }
|
||||
public override SkillName DamageSkill { get { return SkillName.Meditation; } }
|
||||
|
||||
public double Chance { get; set; }
|
||||
|
||||
public ManaShieldSpell(Mobile caster, Item scroll)
|
||||
: base(caster, scroll, m_Info)
|
||||
{
|
||||
}
|
||||
|
||||
public override void SendCastEffect()
|
||||
{
|
||||
Caster.FixedEffect(0x37C4, 87, (int)(GetCastDelay().TotalSeconds * 28), 1371, 2);
|
||||
}
|
||||
|
||||
public override bool CheckCast()
|
||||
{
|
||||
if (Caster is PlayerMobile && !((PlayerMobile)Caster).Spellweaving)
|
||||
{
|
||||
Caster.SendLocalizedMessage(1073220); // You must have completed the epic arcanist quest to use this ability.
|
||||
return false;
|
||||
}
|
||||
|
||||
SkillMasterySpell spell = GetSpell(Caster, this.GetType());
|
||||
|
||||
if (spell != null)
|
||||
{
|
||||
spell.Expire();
|
||||
return false;
|
||||
}
|
||||
|
||||
return base.CheckCast();
|
||||
}
|
||||
|
||||
public override void OnCast()
|
||||
{
|
||||
if (CheckSequence())
|
||||
{
|
||||
double skill = ((Caster.Skills[CastSkill].Value + ArcanistSpell.GetFocusLevel(Caster) * 20) / 2) + (GetMasteryLevel() * 20) + 20;
|
||||
Chance = (skill / 13.0) / 100.0;
|
||||
|
||||
Expires = DateTime.UtcNow + TimeSpan.FromSeconds(600);
|
||||
BeginTimer();
|
||||
|
||||
Caster.PlaySound(0x29);
|
||||
Caster.FixedParticles(0x4B8F, 0x1, 0xF, 9502, 0x811, 0, EffectLayer.Waist);
|
||||
|
||||
BuffInfo.AddBuff(Caster, new BuffInfo(BuffIcon.ManaShield, 1155902, 1156056, TimeSpan.FromSeconds(600), Caster, String.Format("{0}\t{1}\t{1}", ((int)(Chance * 100)).ToString(), "50"))); // ~1_CHANCE~% chance to reduce incoming damage by ~2_DAMAGE~%. Costs ~2_DAMAGE~% of original damage in mana.
|
||||
}
|
||||
|
||||
FinishSequence();
|
||||
}
|
||||
|
||||
public override void EndEffects()
|
||||
{
|
||||
Caster.SendLocalizedMessage(1156087); // Your Mana Shield has expired.
|
||||
|
||||
BuffInfo.RemoveBuff(Caster, BuffIcon.ManaShield);
|
||||
}
|
||||
|
||||
public override void OnDamaged(Mobile attacker, Mobile defender, DamageType type, ref int damage)
|
||||
{
|
||||
if (Chance >= Utility.RandomDouble())
|
||||
{
|
||||
int toShield = damage / 2;
|
||||
|
||||
if (defender.Mana >= toShield)
|
||||
{
|
||||
defender.Mana -= toShield;
|
||||
damage -= toShield;
|
||||
}
|
||||
else
|
||||
{
|
||||
damage -= defender.Mana;
|
||||
defender.Mana = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user