Fixes dictionary uses (#7)
This commit is contained in:
parent
d4a52344f2
commit
916d404c51
161 changed files with 1211 additions and 1722 deletions
|
|
@ -165,9 +165,7 @@ namespace Server.Mobiles
|
|||
|
||||
public static void StopEffect(Mobile m, bool message)
|
||||
{
|
||||
Timer timer = m_Table[m];
|
||||
|
||||
if (timer != null)
|
||||
if (m_Table.TryGetValue(m, out Timer timer))
|
||||
{
|
||||
if (message)
|
||||
m.PublicOverheadMessage(MessageType.Emote, m.SpeechHue, true,
|
||||
|
|
@ -181,15 +179,11 @@ namespace Server.Mobiles
|
|||
public void DoEffect(Mobile m, int count)
|
||||
{
|
||||
if (!m.Alive)
|
||||
{
|
||||
StopEffect(m, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m.FindItemOnLayer(Layer.TwoHanded) is Torch torch && torch.Burning)
|
||||
{
|
||||
StopEffect(m, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (count % 4 == 0)
|
||||
|
|
|
|||
|
|
@ -73,22 +73,22 @@ namespace Server.Mobiles
|
|||
{
|
||||
base.OnGaveMeleeAttack(defender);
|
||||
|
||||
if (Utility.RandomDouble() < 0.1)
|
||||
{
|
||||
if (m_Table.TryGetValue(defender, out ExpireTimer timer))
|
||||
timer.DoExpire();
|
||||
if (Utility.RandomDouble() >= 0.1)
|
||||
return;
|
||||
|
||||
defender.FixedParticles(0x3709, 10, 30, 5052, EffectLayer.LeftFoot);
|
||||
defender.PlaySound(0x208);
|
||||
defender.SendLocalizedMessage(
|
||||
1070833); // The creature fans you with fire, reducing your resistance to fire attacks.
|
||||
if (m_Table.TryGetValue(defender, out ExpireTimer timer))
|
||||
timer.DoExpire();
|
||||
|
||||
ResistanceMod mod = new ResistanceMod(ResistanceType.Fire, -10);
|
||||
defender.AddResistanceMod(mod);
|
||||
defender.FixedParticles(0x3709, 10, 30, 5052, EffectLayer.LeftFoot);
|
||||
defender.PlaySound(0x208);
|
||||
defender.SendLocalizedMessage(
|
||||
1070833); // The creature fans you with fire, reducing your resistance to fire attacks.
|
||||
|
||||
m_Table[defender] = timer = new ExpireTimer(defender, mod);
|
||||
timer.Start();
|
||||
}
|
||||
ResistanceMod mod = new ResistanceMod(ResistanceType.Fire, -10);
|
||||
defender.AddResistanceMod(mod);
|
||||
|
||||
m_Table[defender] = timer = new ExpireTimer(defender, mod);
|
||||
timer.Start();
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
|
|
@ -133,4 +133,4 @@ namespace Server.Mobiles
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -140,7 +140,10 @@ namespace Server.Mobiles
|
|||
|
||||
public static void SuppressRemove(Mobile target)
|
||||
{
|
||||
if (target != null && m_Suppressed[target] is Timer t)
|
||||
if (target == null)
|
||||
return;
|
||||
|
||||
if (m_Suppressed.TryGetValue(target, out Timer t))
|
||||
{
|
||||
if (t.Running)
|
||||
t.Stop();
|
||||
|
|
@ -199,7 +202,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
Item item = m.FindItemOnLayer(layer);
|
||||
|
||||
if (item != null && item.Movable)
|
||||
if (item?.Movable == true)
|
||||
m.PlaceInBackpack(item);
|
||||
}
|
||||
|
||||
|
|
@ -235,4 +238,4 @@ namespace Server.Mobiles
|
|||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
public class Ilhenir : BaseChampion
|
||||
{
|
||||
private static Dictionary<Mobile, Timer> m_Table = new Dictionary<Mobile, Timer>();
|
||||
private static HashSet<Mobile> m_Table = new HashSet<Mobile>();
|
||||
|
||||
[Constructible]
|
||||
public Ilhenir()
|
||||
|
|
@ -230,13 +230,14 @@ namespace Server.Mobiles
|
|||
|
||||
public virtual void CacophonicAttack(Mobile to)
|
||||
{
|
||||
if (to.Alive && to.Player && !m_Table.ContainsKey(to))
|
||||
if (to.Alive && to.Player && !UnderCacophonicAttack(to))
|
||||
{
|
||||
to.Send(SpeedControl.WalkSpeed);
|
||||
to.SendLocalizedMessage(1072069); // A cacophonic sound lambastes you, suppressing your ability to move.
|
||||
to.PlaySound(0x584);
|
||||
|
||||
m_Table[to] = Timer.DelayCall(TimeSpan.FromSeconds(30), CacophonicEnd, to);
|
||||
m_Table.Add(to);
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(30), CacophonicEnd, to);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -248,7 +249,7 @@ namespace Server.Mobiles
|
|||
|
||||
public static bool UnderCacophonicAttack(Mobile from)
|
||||
{
|
||||
return m_Table.ContainsKey(from);
|
||||
return m_Table.Contains(from);
|
||||
}
|
||||
|
||||
public virtual void DropOoze()
|
||||
|
|
|
|||
|
|
@ -101,32 +101,30 @@ namespace Server.Mobiles
|
|||
{
|
||||
base.OnGaveMeleeAttack(defender);
|
||||
|
||||
if (0.1 > Utility.RandomDouble())
|
||||
if (0.1 <= Utility.RandomDouble())
|
||||
return;
|
||||
|
||||
if (m_Table.TryGetValue(defender, out ExpireTimer timer))
|
||||
{
|
||||
ExpireTimer timer = m_Table[defender];
|
||||
|
||||
if (timer != null)
|
||||
{
|
||||
timer.DoExpire();
|
||||
defender.SendLocalizedMessage(1070837); // The creature lands another blow in your weakened state.
|
||||
}
|
||||
else
|
||||
{
|
||||
defender.SendLocalizedMessage(
|
||||
1070836); // The blow from the creature's claws has made you more susceptible to physical attacks.
|
||||
}
|
||||
|
||||
int effect = -(defender.PhysicalResistance * 15 / 100);
|
||||
|
||||
ResistanceMod mod = new ResistanceMod(ResistanceType.Physical, effect);
|
||||
|
||||
defender.FixedEffect(0x37B9, 10, 5);
|
||||
defender.AddResistanceMod(mod);
|
||||
|
||||
timer = new ExpireTimer(defender, mod, TimeSpan.FromSeconds(5.0));
|
||||
timer.Start();
|
||||
m_Table[defender] = timer;
|
||||
timer.DoExpire();
|
||||
defender.SendLocalizedMessage(1070837); // The creature lands another blow in your weakened state.
|
||||
}
|
||||
else
|
||||
{
|
||||
defender.SendLocalizedMessage(
|
||||
1070836); // The blow from the creature's claws has made you more susceptible to physical attacks.
|
||||
}
|
||||
|
||||
int effect = -(defender.PhysicalResistance * 15 / 100);
|
||||
|
||||
ResistanceMod mod = new ResistanceMod(ResistanceType.Physical, effect);
|
||||
|
||||
defender.FixedEffect(0x37B9, 10, 5);
|
||||
defender.AddResistanceMod(mod);
|
||||
|
||||
timer = new ExpireTimer(defender, mod, TimeSpan.FromSeconds(5.0));
|
||||
timer.Start();
|
||||
m_Table[defender] = timer;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
base.OnGaveMeleeAttack(defender);
|
||||
|
||||
if (!(0.1 > Utility.RandomDouble()))
|
||||
if (0.1 <= Utility.RandomDouble())
|
||||
return;
|
||||
|
||||
/* Blood Bath
|
||||
|
|
@ -100,9 +100,7 @@ namespace Server.Mobiles
|
|||
* End cliloc: 1070824
|
||||
*/
|
||||
|
||||
ExpireTimer timer = m_Table[defender];
|
||||
|
||||
if (timer != null)
|
||||
if (m_Table.TryGetValue(defender, out ExpireTimer timer))
|
||||
{
|
||||
timer.DoExpire();
|
||||
defender.SendLocalizedMessage(1070825); // The creature continues to rage!
|
||||
|
|
@ -254,7 +252,6 @@ namespace Server.Mobiles
|
|||
|
||||
AddItem(new Robe(Utility.RandomNondyedHue()));
|
||||
|
||||
m_DisguiseTimer = null;
|
||||
m_DisguiseTimer = Timer.DelayCall(TimeSpan.FromSeconds(75), RemoveDisguise);
|
||||
}
|
||||
|
||||
|
|
@ -280,9 +277,7 @@ namespace Server.Mobiles
|
|||
|
||||
public void DeleteItemOnLayer(Layer layer)
|
||||
{
|
||||
Item item = FindItemOnLayer(layer);
|
||||
|
||||
item?.Delete();
|
||||
FindItemOnLayer(layer)?.Delete();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
public class FanDancer : BaseCreature
|
||||
{
|
||||
private static Dictionary<Mobile, ExpireTimer> m_Table = new Dictionary<Mobile, ExpireTimer>();
|
||||
private static HashSet<Mobile> m_Table = new HashSet<Mobile>();
|
||||
|
||||
[Constructible]
|
||||
public FanDancer() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
|
|
@ -143,13 +143,13 @@ namespace Server.Mobiles
|
|||
|
||||
ExpireTimer timer = new ExpireTimer(defender, mod, TimeSpan.FromSeconds(10.0));
|
||||
timer.Start();
|
||||
m_Table[defender] = timer;
|
||||
m_Table.Add(defender);
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsFanned(Mobile m)
|
||||
{
|
||||
return m_Table.ContainsKey(m);
|
||||
return m_Table.Contains(m);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
|
|
|
|||
|
|
@ -116,8 +116,7 @@ namespace Server.Mobiles
|
|||
|
||||
public static void BeginLifeDrain(Mobile m, Mobile from)
|
||||
{
|
||||
InternalTimer timer = m_Table[m];
|
||||
|
||||
m_Table.TryGetValue(m, out InternalTimer timer);
|
||||
timer?.Stop();
|
||||
m_Table[m] = timer = new InternalTimer(from, m);
|
||||
|
||||
|
|
@ -139,12 +138,12 @@ namespace Server.Mobiles
|
|||
|
||||
public static void EndLifeDrain(Mobile m)
|
||||
{
|
||||
Timer timer = m_Table[m];
|
||||
timer?.Stop();
|
||||
|
||||
m_Table.Remove(m);
|
||||
|
||||
m.SendLocalizedMessage(1070849); // The drain on your life force is gone.
|
||||
if (m_Table.TryGetValue(m, out InternalTimer timer))
|
||||
{
|
||||
timer?.Stop();
|
||||
m_Table.Remove(m);
|
||||
m.SendLocalizedMessage(1070849); // The drain on your life force is gone.
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnDamage(int amount, Mobile from, bool willKill)
|
||||
|
|
|
|||
|
|
@ -74,9 +74,7 @@ namespace Server.Mobiles
|
|||
* Effect: Type: "3" From: "0x57D4F5B" To: "0x0" ItemId: "0x37B9" ItemIdName: "glow" FromLocation: "(1048 779, 6)" ToLocation: "(1048 779, 6)" Speed: "10" Duration: "5" FixedDirection: "True" Explode: "False"
|
||||
*/
|
||||
|
||||
ExpireTimer timer = m_FlurryOfTwigsTable[defender];
|
||||
|
||||
if (timer != null)
|
||||
if (m_FlurryOfTwigsTable.TryGetValue(defender, out ExpireTimer timer))
|
||||
{
|
||||
timer.DoExpire();
|
||||
defender.SendLocalizedMessage(1070851); // The creature lands another blow in your weakened state.
|
||||
|
|
@ -97,8 +95,10 @@ namespace Server.Mobiles
|
|||
timer = new ExpireTimer(defender, mod, m_FlurryOfTwigsTable, TimeSpan.FromSeconds(5.0));
|
||||
timer.Start();
|
||||
m_FlurryOfTwigsTable[defender] = timer;
|
||||
return;
|
||||
}
|
||||
else if (0.05 > Utility.RandomDouble())
|
||||
|
||||
if (0.05 > Utility.RandomDouble())
|
||||
{
|
||||
/* Chlorophyl Blast
|
||||
* Start cliloc: 1070827
|
||||
|
|
@ -107,9 +107,7 @@ namespace Server.Mobiles
|
|||
* Effect: Type: "3" From: "0x57D4F5B" To: "0x0" ItemId: "0x37B9" ItemIdName: "glow" FromLocation: "(1048 779, 6)" ToLocation: "(1048 779, 6)" Speed: "10" Duration: "5" FixedDirection: "True" Explode: "False"
|
||||
*/
|
||||
|
||||
ExpireTimer timer = m_ChlorophylBlastTable[defender];
|
||||
|
||||
if (timer != null)
|
||||
if (m_ChlorophylBlastTable.TryGetValue(defender, out ExpireTimer timer))
|
||||
{
|
||||
timer.DoExpire();
|
||||
defender.SendLocalizedMessage(1070828); // The creature continues to hinder your energy resistance!
|
||||
|
|
|
|||
|
|
@ -81,32 +81,30 @@ namespace Server.Mobiles
|
|||
{
|
||||
base.OnGaveMeleeAttack(defender);
|
||||
|
||||
if (0.1 > Utility.RandomDouble())
|
||||
if (0.1 <= Utility.RandomDouble())
|
||||
return;
|
||||
|
||||
/* Cold Wind
|
||||
* Graphics: Message - Type: "3" From: "0x57D4F5B" To: "0x0" ItemId: "0x37B9" ItemIdName: "glow" FromLocation: "(928 164, 34)" ToLocation: "(928 164, 34)" Speed: "10" Duration: "5" FixedDirection: "True" Explode: "False"
|
||||
* Start cliloc: 1070832
|
||||
* Damage: 1hp per second for 5 seconds
|
||||
* End cliloc: 1070830
|
||||
* Reset cliloc: 1070831
|
||||
*/
|
||||
|
||||
if (m_Table.TryGetValue(defender, out ExpireTimer timer))
|
||||
{
|
||||
/* Cold Wind
|
||||
* Graphics: Message - Type: "3" From: "0x57D4F5B" To: "0x0" ItemId: "0x37B9" ItemIdName: "glow" FromLocation: "(928 164, 34)" ToLocation: "(928 164, 34)" Speed: "10" Duration: "5" FixedDirection: "True" Explode: "False"
|
||||
* Start cliloc: 1070832
|
||||
* Damage: 1hp per second for 5 seconds
|
||||
* End cliloc: 1070830
|
||||
* Reset cliloc: 1070831
|
||||
*/
|
||||
|
||||
ExpireTimer timer = m_Table[defender];
|
||||
|
||||
if (timer != null)
|
||||
{
|
||||
timer.DoExpire();
|
||||
defender.SendLocalizedMessage(1070831); // The freezing wind continues to blow!
|
||||
}
|
||||
else
|
||||
{
|
||||
defender.SendLocalizedMessage(1070832); // An icy wind surrounds you, freezing your lungs as you breathe!
|
||||
}
|
||||
|
||||
timer = new ExpireTimer(defender, this);
|
||||
timer.Start();
|
||||
m_Table[defender] = timer;
|
||||
timer.DoExpire();
|
||||
defender.SendLocalizedMessage(1070831); // The freezing wind continues to blow!
|
||||
}
|
||||
else
|
||||
{
|
||||
defender.SendLocalizedMessage(1070832); // An icy wind surrounds you, freezing your lungs as you breathe!
|
||||
}
|
||||
|
||||
timer = new ExpireTimer(defender, this);
|
||||
timer.Start();
|
||||
m_Table[defender] = timer;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
public class RaiJu : BaseCreature
|
||||
{
|
||||
private static Dictionary<Mobile, ExpireTimer> m_Table = new Dictionary<Mobile, ExpireTimer>();
|
||||
private static HashSet<Mobile> m_Table = new HashSet<Mobile>();
|
||||
|
||||
[Constructible]
|
||||
public RaiJu() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
|
|
@ -61,33 +61,28 @@ namespace Server.Mobiles
|
|||
{
|
||||
base.OnGaveMeleeAttack(defender);
|
||||
|
||||
if (0.1 > Utility.RandomDouble() && !IsStunned(defender))
|
||||
{
|
||||
/* Lightning Fist
|
||||
* Cliloc: 1070839
|
||||
* Effect: Type: "3" From: "0x57D4F5B" To: "0x0" ItemId: "0x37B9" ItemIdName: "glow" FromLocation: "(884 715, 10)" ToLocation: "(884 715, 10)" Speed: "10" Duration: "5" FixedDirection: "True" Explode: "False"
|
||||
* Damage: 35-65, 100% energy, resistable
|
||||
* Freezes for 4 seconds
|
||||
* Effect cannot stack
|
||||
*/
|
||||
if (0.1 <= Utility.RandomDouble() || m_Table.Contains(defender))
|
||||
return;
|
||||
|
||||
defender.FixedEffect(0x37B9, 10, 5);
|
||||
defender.SendLocalizedMessage(1070839); // The creature attacks with stunning force!
|
||||
/* Lightning Fist
|
||||
* Cliloc: 1070839
|
||||
* Effect: Type: "3" From: "0x57D4F5B" To: "0x0" ItemId: "0x37B9" ItemIdName: "glow" FromLocation: "(884 715, 10)" ToLocation: "(884 715, 10)" Speed: "10" Duration: "5" FixedDirection: "True" Explode: "False"
|
||||
* Damage: 35-65, 100% energy, resistable
|
||||
* Freezes for 4 seconds
|
||||
* Effect cannot stack
|
||||
*/
|
||||
|
||||
// This should be done in place of the normal attack damage.
|
||||
//AOS.Damage( defender, this, Utility.RandomMinMax( 35, 65 ), 0, 0, 0, 0, 100 );
|
||||
defender.FixedEffect(0x37B9, 10, 5);
|
||||
defender.SendLocalizedMessage(1070839); // The creature attacks with stunning force!
|
||||
|
||||
defender.Frozen = true;
|
||||
// This should be done in place of the normal attack damage.
|
||||
//AOS.Damage( defender, this, Utility.RandomMinMax( 35, 65 ), 0, 0, 0, 0, 100 );
|
||||
|
||||
ExpireTimer timer = new ExpireTimer(defender, TimeSpan.FromSeconds(4.0));
|
||||
timer.Start();
|
||||
m_Table[defender] = timer;
|
||||
}
|
||||
}
|
||||
defender.Frozen = true;
|
||||
|
||||
public bool IsStunned(Mobile m)
|
||||
{
|
||||
return m_Table.ContainsKey(m);
|
||||
ExpireTimer timer = new ExpireTimer(defender, TimeSpan.FromSeconds(4.0));
|
||||
timer.Start();
|
||||
m_Table.Add(defender);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
|
|
|
|||
|
|
@ -138,77 +138,75 @@ namespace Server.Mobiles
|
|||
{
|
||||
base.OnGaveMeleeAttack(defender);
|
||||
|
||||
if (0.05 > Utility.RandomDouble())
|
||||
if (0.05 <= Utility.RandomDouble())
|
||||
return;
|
||||
|
||||
/* Rune Corruption
|
||||
* Start cliloc: 1070846 "The creature magically corrupts your armor!"
|
||||
* Effect: All resistances -70 (lowest 0) for 5 seconds
|
||||
* End ASCII: "The corruption of your armor has worn off"
|
||||
*/
|
||||
|
||||
if (m_Table.TryGetValue(defender, out ExpireTimer timer))
|
||||
{
|
||||
/* Rune Corruption
|
||||
* Start cliloc: 1070846 "The creature magically corrupts your armor!"
|
||||
* Effect: All resistances -70 (lowest 0) for 5 seconds
|
||||
* End ASCII: "The corruption of your armor has worn off"
|
||||
*/
|
||||
|
||||
ExpireTimer timer = m_Table[defender];
|
||||
|
||||
if (timer != null)
|
||||
{
|
||||
timer.DoExpire();
|
||||
defender.SendLocalizedMessage(1070845); // The creature continues to corrupt your armor!
|
||||
}
|
||||
else
|
||||
{
|
||||
defender.SendLocalizedMessage(1070846); // The creature magically corrupts your armor!
|
||||
}
|
||||
|
||||
List<ResistanceMod> mods = new List<ResistanceMod>();
|
||||
|
||||
if (Core.ML)
|
||||
{
|
||||
if (defender.PhysicalResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Physical, -(defender.PhysicalResistance / 2)));
|
||||
|
||||
if (defender.FireResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Fire, -(defender.FireResistance / 2)));
|
||||
|
||||
if (defender.ColdResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Cold, -(defender.ColdResistance / 2)));
|
||||
|
||||
if (defender.PoisonResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Poison, -(defender.PoisonResistance / 2)));
|
||||
|
||||
if (defender.EnergyResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Energy, -(defender.EnergyResistance / 2)));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (defender.PhysicalResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Physical,
|
||||
defender.PhysicalResistance > 70 ? -70 : -defender.PhysicalResistance));
|
||||
|
||||
if (defender.FireResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Fire,
|
||||
defender.FireResistance > 70 ? -70 : -defender.FireResistance));
|
||||
|
||||
if (defender.ColdResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Cold,
|
||||
defender.ColdResistance > 70 ? -70 : -defender.ColdResistance));
|
||||
|
||||
if (defender.PoisonResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Poison,
|
||||
defender.PoisonResistance > 70 ? -70 : -defender.PoisonResistance));
|
||||
|
||||
if (defender.EnergyResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Energy,
|
||||
defender.EnergyResistance > 70 ? -70 : -defender.EnergyResistance));
|
||||
}
|
||||
|
||||
for (int i = 0; i < mods.Count; ++i)
|
||||
defender.AddResistanceMod(mods[i]);
|
||||
|
||||
defender.FixedEffect(0x37B9, 10, 5);
|
||||
|
||||
timer = new ExpireTimer(defender, mods, TimeSpan.FromSeconds(5.0));
|
||||
timer.Start();
|
||||
m_Table[defender] = timer;
|
||||
timer.DoExpire();
|
||||
defender.SendLocalizedMessage(1070845); // The creature continues to corrupt your armor!
|
||||
}
|
||||
else
|
||||
{
|
||||
defender.SendLocalizedMessage(1070846); // The creature magically corrupts your armor!
|
||||
}
|
||||
|
||||
List<ResistanceMod> mods = new List<ResistanceMod>();
|
||||
|
||||
if (Core.ML)
|
||||
{
|
||||
if (defender.PhysicalResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Physical, -(defender.PhysicalResistance / 2)));
|
||||
|
||||
if (defender.FireResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Fire, -(defender.FireResistance / 2)));
|
||||
|
||||
if (defender.ColdResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Cold, -(defender.ColdResistance / 2)));
|
||||
|
||||
if (defender.PoisonResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Poison, -(defender.PoisonResistance / 2)));
|
||||
|
||||
if (defender.EnergyResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Energy, -(defender.EnergyResistance / 2)));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (defender.PhysicalResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Physical,
|
||||
defender.PhysicalResistance > 70 ? -70 : -defender.PhysicalResistance));
|
||||
|
||||
if (defender.FireResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Fire,
|
||||
defender.FireResistance > 70 ? -70 : -defender.FireResistance));
|
||||
|
||||
if (defender.ColdResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Cold,
|
||||
defender.ColdResistance > 70 ? -70 : -defender.ColdResistance));
|
||||
|
||||
if (defender.PoisonResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Poison,
|
||||
defender.PoisonResistance > 70 ? -70 : -defender.PoisonResistance));
|
||||
|
||||
if (defender.EnergyResistance > 0)
|
||||
mods.Add(new ResistanceMod(ResistanceType.Energy,
|
||||
defender.EnergyResistance > 70 ? -70 : -defender.EnergyResistance));
|
||||
}
|
||||
|
||||
for (int i = 0; i < mods.Count; ++i)
|
||||
defender.AddResistanceMod(mods[i]);
|
||||
|
||||
defender.FixedEffect(0x37B9, 10, 5);
|
||||
|
||||
timer = new ExpireTimer(defender, mods, TimeSpan.FromSeconds(5.0));
|
||||
timer.Start();
|
||||
m_Table[defender] = timer;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
|
|
|
|||
|
|
@ -103,9 +103,10 @@ namespace Server.Mobiles
|
|||
{
|
||||
base.OnGaveMeleeAttack(defender);
|
||||
|
||||
if (0.1 > Utility.RandomDouble())
|
||||
{
|
||||
/* Blood Bath
|
||||
if (0.1 <= Utility.RandomDouble())
|
||||
return;
|
||||
|
||||
/* Blood Bath
|
||||
* Start cliloc 1070826
|
||||
* Sound: 0x52B
|
||||
* 2-3 blood spots
|
||||
|
|
@ -113,22 +114,19 @@ namespace Server.Mobiles
|
|||
* End cliloc: 1070824
|
||||
*/
|
||||
|
||||
ExpireTimer timer = m_Table[defender];
|
||||
|
||||
if (timer != null)
|
||||
{
|
||||
timer.DoExpire();
|
||||
defender.SendLocalizedMessage(1070825); // The creature continues to rage!
|
||||
}
|
||||
else
|
||||
{
|
||||
defender.SendLocalizedMessage(1070826); // The creature goes into a rage, inflicting heavy damage!
|
||||
}
|
||||
|
||||
timer = new ExpireTimer(defender, this);
|
||||
timer.Start();
|
||||
m_Table[defender] = timer;
|
||||
if (m_Table.TryGetValue(defender, out ExpireTimer timer))
|
||||
{
|
||||
timer.DoExpire();
|
||||
defender.SendLocalizedMessage(1070825); // The creature continues to rage!
|
||||
}
|
||||
else
|
||||
{
|
||||
defender.SendLocalizedMessage(1070826); // The creature goes into a rage, inflicting heavy damage!
|
||||
}
|
||||
|
||||
timer = new ExpireTimer(defender, this);
|
||||
timer.Start();
|
||||
m_Table[defender] = timer;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue