fix: Fixes all summon spells so they use summoned variation of monster (#2106)

This commit is contained in:
Bohica 2025-02-03 23:44:51 -08:00 • committed by GitHub
parent de12f8cb02
commit 1c5fa824d6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 263 additions and 153 deletions

View file

@ -40,13 +40,9 @@ namespace Server.Mobiles
Karma = -4500; Karma = -4500;
VirtualArmor = 40; VirtualArmor = 40;
ControlSlots = 2;
} }
public override string CorpseName => "an air elemental corpse"; public override string CorpseName => "an air elemental corpse";
public override double DispelDifficulty => 117.5;
public override double DispelFocus => 45.0;
public override string DefaultName => "an air elemental"; public override string DefaultName => "an air elemental";
public override bool BleedImmune => true; public override bool BleedImmune => true;

View file

@ -39,7 +39,6 @@ namespace Server.Mobiles
Karma = -4500; Karma = -4500;
VirtualArmor = 40; VirtualArmor = 40;
ControlSlots = 4;
PackItem(new SulfurousAsh(3)); PackItem(new SulfurousAsh(3));
@ -47,12 +46,10 @@ namespace Server.Mobiles
} }
public override string CorpseName => "a fire elemental corpse"; public override string CorpseName => "a fire elemental corpse";
public override double DispelDifficulty => 117.5;
public override double DispelFocus => 45.0;
public override string DefaultName => "a fire elemental"; public override string DefaultName => "a fire elemental";
public override bool BleedImmune => true; public override bool BleedImmune => true;
public override int TreasureMapLevel => 2; public override int TreasureMapLevel => 2;
public override void GenerateLoot() public override void GenerateLoot()

View file

@ -38,16 +38,13 @@ namespace Server.Mobiles
Karma = -4500; Karma = -4500;
VirtualArmor = 40; VirtualArmor = 40;
ControlSlots = 3;
CanSwim = true; CanSwim = true;
PackItem(new BlackPearl(3)); PackItem(new BlackPearl(3));
} }
public override string CorpseName => "a water elemental corpse"; public override string CorpseName => "a water elemental corpse";
public override double DispelDifficulty => 117.5;
public override double DispelFocus => 45.0;
public override string DefaultName => "a water elemental"; public override string DefaultName => "a water elemental";
public override bool BleedImmune => true; public override bool BleedImmune => true;

View file

@ -36,7 +36,6 @@ namespace Server.Mobiles
Karma = -3500; Karma = -3500;
VirtualArmor = 34; VirtualArmor = 34;
ControlSlots = 2;
PackItem(new FertileDirt(Utility.RandomMinMax(1, 4))); PackItem(new FertileDirt(Utility.RandomMinMax(1, 4)));
PackItem(new MandrakeRoot()); PackItem(new MandrakeRoot());
@ -47,9 +46,6 @@ namespace Server.Mobiles
} }
public override string CorpseName => "an earth elemental corpse"; public override string CorpseName => "an earth elemental corpse";
public override double DispelDifficulty => 117.5;
public override double DispelFocus => 45.0;
public override string DefaultName => "an earth elemental"; public override string DefaultName => "an earth elemental";
public override bool BleedImmune => true; public override bool BleedImmune => true;

View file

@ -40,20 +40,21 @@ namespace Server.Mobiles
Karma = -15000; Karma = -15000;
VirtualArmor = 58; VirtualArmor = 58;
ControlSlots = Core.SE ? 4 : 5;
} }
public override string CorpseName => "a daemon corpse"; public override string CorpseName => "a daemon corpse";
public override double DispelDifficulty => 125.0;
public override double DispelFocus => 45.0;
public override Faction FactionAllegiance => Shadowlords.Instance; public override Faction FactionAllegiance => Shadowlords.Instance;
public override Ethic EthicAllegiance => Ethic.Evil; public override Ethic EthicAllegiance => Ethic.Evil;
public override bool CanRummageCorpses => true; public override bool CanRummageCorpses => true;
public override Poison PoisonImmune => Poison.Regular; public override Poison PoisonImmune => Poison.Regular;
public override int TreasureMapLevel => 4; public override int TreasureMapLevel => 4;
public override int Meat => 1; public override int Meat => 1;
public override bool CanFly => true; public override bool CanFly => true;
public override void GenerateLoot() public override void GenerateLoot()

View file

@ -44,14 +44,14 @@ namespace Server.Mobiles
} }
public override string CorpseName => "a blade spirit corpse"; public override string CorpseName => "a blade spirit corpse";
public override string DefaultName => "a blade spirit";
public override bool DeleteCorpseOnDeath => Core.AOS; public override bool DeleteCorpseOnDeath => Core.AOS;
public override bool IsHouseSummonable => true; public override bool IsHouseSummonable => true;
public override double DispelDifficulty => 0.0; public override double DispelDifficulty => 0.0;
public override double DispelFocus => 20.0; public override double DispelFocus => 20.0;
public override string DefaultName => "a blade spirit";
public override bool BleedImmune => true; public override bool BleedImmune => true;
public override Poison PoisonImmune => Poison.Lethal; public override Poison PoisonImmune => Poison.Lethal;

View file

@ -1,3 +1,4 @@
using System;
using ModernUO.Serialization; using ModernUO.Serialization;
namespace Server.Mobiles namespace Server.Mobiles
@ -12,39 +13,73 @@ namespace Server.Mobiles
Hue = 0x4001; Hue = 0x4001;
BaseSoundID = 655; BaseSoundID = 655;
SetStr(200); if (Core.AOS)
SetDex(200); {
SetInt(100); SetStr(200);
SetDex(200);
SetInt(100);
SetHits(150); SetHits(150);
SetStam(50); SetStam(50);
SetDamage(6, 9); SetDamage(6, 9);
SetDamageType(ResistanceType.Physical, 50); SetDamageType(ResistanceType.Physical, 50);
SetDamageType(ResistanceType.Energy, 50); SetDamageType(ResistanceType.Energy, 50);
SetResistance(ResistanceType.Physical, 40, 50); SetResistance(ResistanceType.Physical, 40, 50);
SetResistance(ResistanceType.Fire, 30, 40); SetResistance(ResistanceType.Fire, 30, 40);
SetResistance(ResistanceType.Cold, 35, 45); SetResistance(ResistanceType.Cold, 35, 45);
SetResistance(ResistanceType.Poison, 50, 60); SetResistance(ResistanceType.Poison, 50, 60);
SetResistance(ResistanceType.Energy, 70, 80); SetResistance(ResistanceType.Energy, 70, 80);
SetSkill(SkillName.Meditation, 90.0); SetSkill(SkillName.Meditation, 90.0);
SetSkill(SkillName.EvalInt, 70.0); SetSkill(SkillName.EvalInt, 70.0);
SetSkill(SkillName.Magery, 70.0); SetSkill(SkillName.Magery, 70.0);
SetSkill(SkillName.MagicResist, 60.0); SetSkill(SkillName.MagicResist, 60.0);
SetSkill(SkillName.Tactics, 100.0); SetSkill(SkillName.Tactics, 100.0);
SetSkill(SkillName.Wrestling, 80.0); SetSkill(SkillName.Wrestling, 80.0);
}
else
{
SetStr(126, 155);
SetDex(166, 185);
SetInt(101, 125);
SetHits(76, 93);
SetDamage(8, 10);
SetDamageType(ResistanceType.Physical, 20);
SetDamageType(ResistanceType.Cold, 40);
SetDamageType(ResistanceType.Energy, 40);
SetResistance(ResistanceType.Physical, 35, 45);
SetResistance(ResistanceType.Fire, 15, 25);
SetResistance(ResistanceType.Cold, 10, 20);
SetResistance(ResistanceType.Poison, 10, 20);
SetResistance(ResistanceType.Energy, 25, 35);
SetSkill(SkillName.EvalInt, 60.1, 75.0);
SetSkill(SkillName.Magery, 60.1, 75.0);
SetSkill(SkillName.MagicResist, 60.1, 75.0);
SetSkill(SkillName.Tactics, 60.1, 80.0);
SetSkill(SkillName.Wrestling, 60.1, 80.0);
}
VirtualArmor = 40; VirtualArmor = 40;
ControlSlots = 2; ControlSlots = 2;
} }
public override bool DeleteCorpseOnDeath => Summoned;
public override string CorpseName => "an air elemental corpse"; public override string CorpseName => "an air elemental corpse";
public override string DefaultName => "an air elemental";
public override bool BleedImmune => true;
public override double DispelDifficulty => 117.5; public override double DispelDifficulty => 117.5;
public override double DispelFocus => 45.0; public override double DispelFocus => 45.0;
public override string DefaultName => "an air elemental";
[AfterDeserialization] [AfterDeserialization]
private void AfterDeserialization() private void AfterDeserialization()

View file

@ -12,37 +12,67 @@ namespace Server.Mobiles
Body = Core.AOS ? 10 : 9; Body = Core.AOS ? 10 : 9;
BaseSoundID = 357; BaseSoundID = 357;
SetStr(200); if (Core.AOS)
SetDex(110); {
SetInt(150); SetStr(200);
SetDex(110);
SetInt(150);
SetDamage(14, 21); SetDamage(14, 21);
SetDamageType(ResistanceType.Physical, 0); SetDamageType(ResistanceType.Physical, 0);
SetDamageType(ResistanceType.Poison, 100); SetDamageType(ResistanceType.Poison, 100);
SetResistance(ResistanceType.Physical, 45, 55); SetResistance(ResistanceType.Physical, 45, 55);
SetResistance(ResistanceType.Fire, 50, 60); SetResistance(ResistanceType.Fire, 50, 60);
SetResistance(ResistanceType.Cold, 20, 30); SetResistance(ResistanceType.Cold, 20, 30);
SetResistance(ResistanceType.Poison, 70, 80); SetResistance(ResistanceType.Poison, 70, 80);
SetResistance(ResistanceType.Energy, 40, 50); SetResistance(ResistanceType.Energy, 40, 50);
SetSkill(SkillName.EvalInt, 90.1, 100.0); SetSkill(SkillName.EvalInt, 90.1, 100.0);
SetSkill(SkillName.Meditation, 90.1, 100.0); SetSkill(SkillName.Meditation, 90.1, 100.0);
SetSkill(SkillName.Magery, 90.1, 100.0); SetSkill(SkillName.Magery, 90.1, 100.0);
SetSkill(SkillName.MagicResist, 90.1, 100.0); SetSkill(SkillName.MagicResist, 90.1, 100.0);
SetSkill(SkillName.Tactics, 100.0); SetSkill(SkillName.Tactics, 100.0);
SetSkill(SkillName.Wrestling, 98.1, 99.0); SetSkill(SkillName.Wrestling, 98.1, 99.0);
}
else
{
SetStr(476, 505);
SetDex(76, 95);
SetInt(301, 325);
SetHits(286, 303);
SetDamage(7, 14);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 45, 60);
SetResistance(ResistanceType.Fire, 50, 60);
SetResistance(ResistanceType.Cold, 30, 40);
SetResistance(ResistanceType.Poison, 20, 30);
SetResistance(ResistanceType.Energy, 30, 40);
SetSkill(SkillName.EvalInt, 70.1, 80.0);
SetSkill(SkillName.Magery, 70.1, 80.0);
SetSkill(SkillName.MagicResist, 85.1, 95.0);
SetSkill(SkillName.Tactics, 70.1, 80.0);
SetSkill(SkillName.Wrestling, 60.1, 80.0);
}
VirtualArmor = 58; VirtualArmor = 58;
ControlSlots = Core.SE ? 4 : 5; ControlSlots = Core.SE ? 4 : 5;
} }
public override bool DeleteCorpseOnDeath => Summoned;
public override string CorpseName => "a daemon corpse"; public override string CorpseName => "a daemon corpse";
public override double DispelDifficulty => 125.0; public override double DispelDifficulty => 125.0;
public override double DispelFocus => 45.0; public override double DispelFocus => 45.0;
public override Poison PoisonImmune => Poison.Regular; // TODO: Immune to poison? public override Poison PoisonImmune => Poison.Regular;
public override bool CanFly => true; public override bool CanFly => true;
} }
} }

View file

@ -11,33 +11,63 @@ namespace Server.Mobiles
Body = 14; Body = 14;
BaseSoundID = 268; BaseSoundID = 268;
SetStr(200); if (Core.AOS)
SetDex(70); {
SetInt(70); SetStr(200);
SetDex(70);
SetInt(70);
SetHits(180); SetHits(180);
SetDamage(14, 21); SetDamage(14, 21);
SetDamageType(ResistanceType.Physical, 100); SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 65, 75); SetResistance(ResistanceType.Physical, 65, 75);
SetResistance(ResistanceType.Fire, 40, 50); SetResistance(ResistanceType.Fire, 40, 50);
SetResistance(ResistanceType.Cold, 40, 50); SetResistance(ResistanceType.Cold, 40, 50);
SetResistance(ResistanceType.Poison, 40, 50); SetResistance(ResistanceType.Poison, 40, 50);
SetResistance(ResistanceType.Energy, 40, 50); SetResistance(ResistanceType.Energy, 40, 50);
SetSkill(SkillName.MagicResist, 65.0); SetSkill(SkillName.MagicResist, 65.0);
SetSkill(SkillName.Tactics, 100.0); SetSkill(SkillName.Tactics, 100.0);
SetSkill(SkillName.Wrestling, 90.0); SetSkill(SkillName.Wrestling, 90.0);
}
else
{
SetStr(126, 155);
SetDex(66, 85);
SetInt(71, 92);
SetHits(76, 93);
SetDamage(9, 16);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 30, 35);
SetResistance(ResistanceType.Fire, 10, 20);
SetResistance(ResistanceType.Cold, 10, 20);
SetResistance(ResistanceType.Poison, 15, 25);
SetResistance(ResistanceType.Energy, 15, 25);
SetSkill(SkillName.MagicResist, 50.1, 95.0);
SetSkill(SkillName.Tactics, 60.1, 100.0);
SetSkill(SkillName.Wrestling, 60.1, 100.0);
}
VirtualArmor = 34; VirtualArmor = 34;
ControlSlots = 2; ControlSlots = 2;
} }
public override bool DeleteCorpseOnDeath => Summoned;
public override string CorpseName => "an earth elemental corpse"; public override string CorpseName => "an earth elemental corpse";
public override string DefaultName => "an earth elemental";
public override bool BleedImmune => true;
public override double DispelDifficulty => 117.5; public override double DispelDifficulty => 117.5;
public override double DispelFocus => 45.0; public override double DispelFocus => 45.0;
public override string DefaultName => "an earth elemental";
} }
} }

View file

@ -12,26 +12,54 @@ namespace Server.Mobiles
Body = 15; Body = 15;
BaseSoundID = 838; BaseSoundID = 838;
SetStr(200); if (Core.AOS)
SetDex(200); {
SetInt(100); SetStr(200);
SetDex(200);
SetInt(100);
SetDamage(9, 14); SetDamage(9, 14);
SetDamageType(ResistanceType.Physical, 0); SetDamageType(ResistanceType.Physical, 0);
SetDamageType(ResistanceType.Fire, 100); SetDamageType(ResistanceType.Fire, 100);
SetResistance(ResistanceType.Physical, 50, 60); SetResistance(ResistanceType.Physical, 50, 60);
SetResistance(ResistanceType.Fire, 70, 80); SetResistance(ResistanceType.Fire, 70, 80);
SetResistance(ResistanceType.Cold, 0, 10); SetResistance(ResistanceType.Cold, 0, 10);
SetResistance(ResistanceType.Poison, 50, 60); SetResistance(ResistanceType.Poison, 50, 60);
SetResistance(ResistanceType.Energy, 50, 60); SetResistance(ResistanceType.Energy, 50, 60);
SetSkill(SkillName.EvalInt, 90.0); SetSkill(SkillName.EvalInt, 90.0);
SetSkill(SkillName.Magery, 90.0); SetSkill(SkillName.Magery, 90.0);
SetSkill(SkillName.MagicResist, 85.0); SetSkill(SkillName.MagicResist, 85.0);
SetSkill(SkillName.Tactics, 100.0); SetSkill(SkillName.Tactics, 100.0);
SetSkill(SkillName.Wrestling, 92.0); SetSkill(SkillName.Wrestling, 92.0);
}
else
{
SetStr(126, 155);
SetDex(166, 185);
SetInt(101, 125);
SetHits(76, 93);
SetDamage(7, 9);
SetDamageType(ResistanceType.Physical, 25);
SetDamageType(ResistanceType.Fire, 75);
SetResistance(ResistanceType.Physical, 35, 45);
SetResistance(ResistanceType.Fire, 60, 80);
SetResistance(ResistanceType.Cold, 5, 10);
SetResistance(ResistanceType.Poison, 30, 40);
SetResistance(ResistanceType.Energy, 30, 40);
SetSkill(SkillName.EvalInt, 60.1, 75.0);
SetSkill(SkillName.Magery, 60.1, 75.0);
SetSkill(SkillName.MagicResist, 75.2, 105.0);
SetSkill(SkillName.Tactics, 80.1, 100.0);
SetSkill(SkillName.Wrestling, 70.1, 100.0);
}
VirtualArmor = 40; VirtualArmor = 40;
ControlSlots = 4; ControlSlots = 4;
@ -39,9 +67,14 @@ namespace Server.Mobiles
AddItem(new LightSource()); AddItem(new LightSource());
} }
public override bool DeleteCorpseOnDeath => Summoned;
public override string CorpseName => "a fire elemental corpse"; public override string CorpseName => "a fire elemental corpse";
public override string DefaultName => "a fire elemental";
public override bool BleedImmune => true;
public override double DispelDifficulty => 117.5; public override double DispelDifficulty => 117.5;
public override double DispelFocus => 45.0; public override double DispelFocus => 45.0;
public override string DefaultName => "a fire elemental";
} }
} }

View file

@ -11,38 +11,70 @@ namespace Server.Mobiles
Body = 16; Body = 16;
BaseSoundID = 278; BaseSoundID = 278;
SetStr(200); if (Core.AOS)
SetDex(70); {
SetInt(100); SetStr(200);
SetDex(70);
SetInt(100);
SetHits(165); SetHits(165);
SetDamage(12, 16); SetDamage(12, 16);
SetDamageType(ResistanceType.Physical, 0); SetDamageType(ResistanceType.Physical, 0);
SetDamageType(ResistanceType.Cold, 100); SetDamageType(ResistanceType.Cold, 100);
SetResistance(ResistanceType.Physical, 50, 60); SetResistance(ResistanceType.Physical, 50, 60);
SetResistance(ResistanceType.Fire, 20, 30); SetResistance(ResistanceType.Fire, 20, 30);
SetResistance(ResistanceType.Cold, 70, 80); SetResistance(ResistanceType.Cold, 70, 80);
SetResistance(ResistanceType.Poison, 45, 55); SetResistance(ResistanceType.Poison, 45, 55);
SetResistance(ResistanceType.Energy, 40, 50); SetResistance(ResistanceType.Energy, 40, 50);
SetSkill(SkillName.Meditation, 90.0); SetSkill(SkillName.Meditation, 90.0);
SetSkill(SkillName.EvalInt, 80.0); SetSkill(SkillName.EvalInt, 80.0);
SetSkill(SkillName.Magery, 80.0); SetSkill(SkillName.Magery, 80.0);
SetSkill(SkillName.MagicResist, 75.0); SetSkill(SkillName.MagicResist, 75.0);
SetSkill(SkillName.Tactics, 100.0); SetSkill(SkillName.Tactics, 100.0);
SetSkill(SkillName.Wrestling, 85.0); SetSkill(SkillName.Wrestling, 85.0);
}
else
{
SetStr(126, 155);
SetDex(66, 85);
SetInt(101, 125);
SetHits(76, 93);
SetDamage(7, 9);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 35, 45);
SetResistance(ResistanceType.Fire, 10, 25);
SetResistance(ResistanceType.Cold, 10, 25);
SetResistance(ResistanceType.Poison, 60, 70);
SetResistance(ResistanceType.Energy, 5, 10);
SetSkill(SkillName.EvalInt, 60.1, 75.0);
SetSkill(SkillName.Magery, 60.1, 75.0);
SetSkill(SkillName.MagicResist, 100.1, 115.0);
SetSkill(SkillName.Tactics, 50.1, 70.0);
SetSkill(SkillName.Wrestling, 50.1, 70.0);
}
VirtualArmor = 40; VirtualArmor = 40;
ControlSlots = 3; ControlSlots = 3;
CanSwim = true; CanSwim = true;
} }
public override bool DeleteCorpseOnDeath => Summoned;
public override string CorpseName => "a water elemental corpse"; public override string CorpseName => "a water elemental corpse";
public override string DefaultName => "a water elemental";
public override bool BleedImmune => true;
public override double DispelDifficulty => 117.5; public override double DispelDifficulty => 117.5;
public override double DispelFocus => 45.0; public override double DispelFocus => 45.0;
public override string DefaultName => "a water elemental";
} }
} }

View file

@ -49,14 +49,7 @@ namespace Server.Spells.Eighth
_ => TimeSpan.FromSeconds(4 * Math.Max(5, Caster.Skills.Magery.Value)), _ => TimeSpan.FromSeconds(4 * Math.Max(5, Caster.Skills.Magery.Value)),
}; };
if (Core.AOS) SpellHelper.Summon(new SummonedAirElemental(), Caster, 0x217, duration, false, false);
{
SpellHelper.Summon(new SummonedAirElemental(), Caster, 0x217, duration, false, false);
}
else
{
SpellHelper.Summon(new AirElemental(), Caster, 0x217, duration, false, false);
}
} }
FinishSequence(); FinishSequence();

View file

@ -49,14 +49,7 @@ namespace Server.Spells.Eighth
_ => TimeSpan.FromSeconds(4 * Math.Max(5, Caster.Skills.Magery.Value)), _ => TimeSpan.FromSeconds(4 * Math.Max(5, Caster.Skills.Magery.Value)),
}; };
if (Core.AOS) SpellHelper.Summon(new SummonedEarthElemental(), Caster, 0x217, duration, false, false);
{
SpellHelper.Summon(new SummonedEarthElemental(), Caster, 0x217, duration, false, false);
}
else
{
SpellHelper.Summon(new EarthElemental(), Caster, 0x217, duration, false, false);
}
} }
FinishSequence(); FinishSequence();

View file

@ -50,14 +50,7 @@ namespace Server.Spells.Eighth
_ => TimeSpan.FromSeconds(4 * Math.Max(5, Caster.Skills.Magery.Value)), _ => TimeSpan.FromSeconds(4 * Math.Max(5, Caster.Skills.Magery.Value)),
}; };
if (Core.AOS) SpellHelper.Summon(new SummonedFireElemental(), Caster, 0x217, duration, false, false);
{
SpellHelper.Summon(new SummonedFireElemental(), Caster, 0x217, duration, false, false);
}
else
{
SpellHelper.Summon(new FireElemental(), Caster, 0x217, duration, false, false);
}
} }
FinishSequence(); FinishSequence();

View file

@ -50,16 +50,7 @@ namespace Server.Spells.Eighth
_ => TimeSpan.FromSeconds(4 * Math.Max(5, Caster.Skills.Magery.Value)), _ => TimeSpan.FromSeconds(4 * Math.Max(5, Caster.Skills.Magery.Value)),
}; };
if (Core.AOS) /* Why two diff daemons? TODO: solve this */ SpellHelper.Summon(new SummonedDaemon(), Caster, 0x216, duration, false, false);
{
BaseCreature m_Daemon = new SummonedDaemon();
SpellHelper.Summon(m_Daemon, Caster, 0x216, duration, false, false);
m_Daemon.FixedParticles(0x3728, 8, 20, 5042, EffectLayer.Head);
}
else
{
SpellHelper.Summon(new Daemon(), Caster, 0x216, duration, false, false);
}
} }
FinishSequence(); FinishSequence();

View file

@ -49,14 +49,7 @@ namespace Server.Spells.Eighth
_ => TimeSpan.FromSeconds(4 * Math.Max(5, Caster.Skills.Magery.Value)), _ => TimeSpan.FromSeconds(4 * Math.Max(5, Caster.Skills.Magery.Value)),
}; };
if (Core.AOS) SpellHelper.Summon(new SummonedWaterElemental(), Caster, 0x217, duration, false, false);
{
SpellHelper.Summon(new SummonedWaterElemental(), Caster, 0x217, duration, false, false);
}
else
{
SpellHelper.Summon(new WaterElemental(), Caster, 0x217, duration, false, false);
}
} }
FinishSequence(); FinishSequence();