public override bool IsEnemy(Mobile m) { if (!IntelligentAction.GetMyEnemies(m, this, true)) { return(false); } if (m.Region != this.Region && !Server.Misc.MyServerSettings.GuardsPatrolOutside()) { return(false); } m.Criminal = true; if (Server.Misc.MyServerSettings.GuardsSentenceDeath() || (m is BaseCreature && ((BaseCreature)m).ControlMaster == null)) { //Effects.SendLocationParticles( EffectItem.Create( this.Location, this.Map, EffectItem.DefaultDuration ), 0x3728, 8, 20, 5042 ); //Effects.PlaySound( this, this.Map, 0x201 ); this.Location = m.Location; this.Combatant = m; this.Warmode = true; //Effects.SendLocationParticles( EffectItem.Create( this.Location, this.Map, EffectItem.DefaultDuration ), 0x3728, 8, 20, 5042 ); //Effects.PlaySound( this, this.Map, 0x201 ); } return(true); }
public override bool OnDragDrop(Mobile from, Item dropped) { if (dropped is JokeBook) { if (from.Blessed) { string sSay = "I cannot deal with you while you are in that state."; this.PrivateOverheadMessage(MessageType.Regular, 1153, false, sSay, from.NetState); return(false); } else if (IntelligentAction.GetMyEnemies(from, this, false) == true) { string sSay = "I don't think I should accept that from you."; this.PrivateOverheadMessage(MessageType.Regular, 1153, false, sSay, from.NetState); return(false); } else { if (Utility.RandomBool()) { GiftJesterHat hat = new GiftJesterHat(); hat.Name = "Magical Jester Hat"; hat.Hue = 0; hat.ItemID = Utility.RandomList(0x171C, 0x4C15); hat.m_Owner = from; hat.m_Gifter = "Chuckles the Jester"; hat.m_How = "Given to"; hat.m_Points = Utility.RandomMinMax(80, 100); from.AddToBackpack(hat); from.SendMessage("Chuckles gave you one of his hats!"); } else { GiftFancyDress coat = new GiftFancyDress(); coat.Name = "Magical Jester Suit"; coat.Hue = 0; coat.ItemID = Utility.RandomList(0x1f9f, 0x1fa0, 0x4C16, 0x4C17, 0x2B6B); coat.m_Owner = from; coat.m_Gifter = "Chuckles the Jester"; coat.m_How = "Given to"; coat.m_Points = Utility.RandomMinMax(80, 100); from.AddToBackpack(coat); from.SendMessage("Chuckles gave you one of his suits!"); } this.Say("Thank you, " + from.Name + "! I am always looking for some new jokes."); from.SendSound(0x3D); dropped.Delete(); from.SendMessage("Single click on it to customize it."); return(true); } } return(base.OnDragDrop(from, dropped)); }
public override bool IsEnemy(Mobile m) { if (IntelligentAction.GetMyEnemies(m, this, true) == false) { return(false); } if (m.Region != this.Region && !(m is PlayerMobile)) { return(false); } m.Criminal = true; return(true); }
public override void OnAfterSpawn() { if (Utility.RandomBool()) { IntelligentAction.GiveBasicWepShld(this); if (this.FindItemOnLayer(Layer.OneHanded) != null) { MorphingTime.MakeSpaceAceItem(this.FindItemOnLayer(Layer.OneHanded), this); } if (this.FindItemOnLayer(Layer.TwoHanded) != null) { MorphingTime.MakeSpaceAceItem(this.FindItemOnLayer(Layer.TwoHanded), this); } } base.OnAfterSpawn(); }
public SavageAlien() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4) { Name = "an alien savage"; Hue = Utility.RandomList(0x6F6, 0x97F, 0x99B, 0x6E4, 0x5E0, 0xB38, 0xB2B); string metal = Server.Misc.MorphingTime.GetSpaceAceMetalName(); string cloth = Server.Misc.MorphingTime.GetSpaceAceClothName(); string bone = Server.Misc.MorphingTime.GetSpaceAceBoneName(); string wood = Server.Misc.MorphingTime.GetSpaceAceWoodName(); if (Female = Utility.RandomBool()) { Body = 401; } else { Body = 400; } SetStr(336, 385); SetDex(281, 305); SetInt(96, 115); SetHits(202, 231); SetMana(0); SetDamage(7, 23); SetDamageType(ResistanceType.Physical, 100); SetResistance(ResistanceType.Physical, 45, 55); SetResistance(ResistanceType.Fire, 30, 40); SetResistance(ResistanceType.Cold, 30, 40); SetResistance(ResistanceType.Poison, 40, 50); SetResistance(ResistanceType.Energy, 40, 50); SetSkill(SkillName.MagicResist, 125.1, 140.0); SetSkill(SkillName.Tactics, 90.1, 100.0); SetSkill(SkillName.Wrestling, 90.1, 100.0); SetSkill(SkillName.Fencing, 125.1, 140.0); SetSkill(SkillName.Macing, 125.1, 140.0); SetSkill(SkillName.Wrestling, 125.1, 140.0); SetSkill(SkillName.MagicResist, 67.5, 100.0); SetSkill(SkillName.Swords, 125.1, 140.0); SetSkill(SkillName.Tactics, 125.1, 140.0); Fame = 10000; Karma = -10000; VirtualArmor = 50; Item cloth1 = new SavageArms(); MorphingTime.MakeSpaceAceBoneArmor(cloth1, bone, false); AddItem(cloth1); Item cloth2 = new SavageLegs(); MorphingTime.MakeSpaceAceBoneArmor(cloth2, bone, false); AddItem(cloth2); Item cloth3 = new LeatherSkirt(); cloth3.Name = "skin skirt"; MorphingTime.MakeSpaceAceBoneArmor(cloth3, bone, true); cloth3.Layer = Layer.Waist; AddItem(cloth3); switch (Utility.RandomMinMax(0, 3)) { case 0: Item cloth4 = new OrcHelm(); MorphingTime.MakeSpaceAceBoneArmor(cloth4, bone, false); AddItem(cloth4); break; case 1: Item cloth5 = new SavageHelm(); MorphingTime.MakeSpaceAceBoneArmor(cloth5, bone, false); AddItem(cloth5); break; case 2: Item cloth6 = new TribalMask(); cloth6.Name = "skin mask"; MorphingTime.MakeSpaceAceBoneArmor(cloth6, bone, true); AddItem(cloth6); break; } if (Utility.RandomMinMax(1, 10) == 1) { Item cloth7 = new SavageChest(); MorphingTime.MakeSpaceAceBoneArmor(cloth7, bone, false); AddItem(cloth7); } else if (Female) { Item cloth8 = new FemaleLeatherChest(); cloth8.Name = "skin tunic"; MorphingTime.MakeSpaceAceBoneArmor(cloth8, bone, true); AddItem(cloth8); } IntelligentAction.GiveBasicWepShld(this); if (this.FindItemOnLayer(Layer.OneHanded) != null) { if (MaterialInfo.IsAnyKindOfMetalItem(this.FindItemOnLayer(Layer.OneHanded))) { MorphingTime.MakeSpaceAceMetalArmorWeapon(this.FindItemOnLayer(Layer.OneHanded), metal); } else if (MaterialInfo.IsAnyKindOfClothItem(this.FindItemOnLayer(Layer.OneHanded))) { MorphingTime.MakeSpaceAceClothArmorWeapon(this.FindItemOnLayer(Layer.OneHanded), cloth); } else if (MaterialInfo.IsAnyKindOfWoodItem(this.FindItemOnLayer(Layer.OneHanded))) { MorphingTime.MakeSpaceAceWoodArmorWeapon(this.FindItemOnLayer(Layer.OneHanded), wood); } } if (this.FindItemOnLayer(Layer.TwoHanded) != null) { Item hand = this.FindItemOnLayer(Layer.TwoHanded); if (hand is BaseShield) { switch (Utility.RandomMinMax(1, 4)) { case 1: hand.ItemID = 0x1B76; hand.Name = "hull plate"; break; case 2: hand.ItemID = 0x1B76; hand.Name = "deck plate"; break; case 3: hand.ItemID = 0x1B72; hand.Name = "hatch door"; break; case 4: hand.ItemID = 0x1B7B; hand.Name = "hatch cover"; break; } MorphingTime.MakeSpaceAceMetalArmorWeapon(hand, metal); } else if (MaterialInfo.IsAnyKindOfMetalItem(hand)) { MorphingTime.MakeSpaceAceMetalArmorWeapon(hand, metal); } else if (MaterialInfo.IsAnyKindOfClothItem(hand)) { MorphingTime.MakeSpaceAceClothArmorWeapon(hand, cloth); } else if (MaterialInfo.IsAnyKindOfWoodItem(hand)) { MorphingTime.MakeSpaceAceWoodArmorWeapon(hand, wood); } } }
public override bool OnDragDrop(Mobile from, Item dropped) { if (dropped is PirateBounty) { if (IntelligentAction.GetMyEnemies(from, this, false) == true) { string sSay = "You shouldn't be carrying that around with you."; this.PrivateOverheadMessage(MessageType.Regular, 1153, false, sSay, from.NetState); } else { PirateBounty bounty = (PirateBounty)dropped; int fame = (int)(bounty.BountyValue / 5); int karma = -1 * fame; int gold = bounty.BountyValue; string sMessage = ""; string sReward = "Here is " + gold.ToString() + " gold for you."; switch (Utility.RandomMinMax(0, 9)) { case 0: sReward = "Here is " + gold.ToString() + " gold for you."; break; case 1: sReward = "Take this " + gold.ToString() + " gold for your trouble."; break; case 2: sReward = "The reward is " + gold.ToString() + " gold."; break; case 3: sReward = "Here is " + gold.ToString() + " gold for the bounty."; break; case 4: sReward = "The bounty is " + gold.ToString() + " gold for this one."; break; case 5: sReward = "Here is your reward of " + gold.ToString() + " gold"; break; case 6: sReward = "You can have this " + gold.ToString() + " gold for the bounty."; break; case 7: sReward = "There is a reward of " + gold.ToString() + " gold for this one."; break; case 8: sReward = "This one was worth " + gold.ToString() + " gold for their crimes."; break; case 9: sReward = "Their crimes called for a bounty of " + gold.ToString() + " gold."; break; } Titles.AwardKarma(from, karma, true); Titles.AwardFame(from, fame, true); from.SendSound(0x2E6); from.AddToBackpack(new Gold(gold)); switch (Utility.RandomMinMax(0, 9)) { case 0: sMessage = "We have been looking for this pirate. " + sReward; break; case 1: sMessage = "I have heard of this pirate before. " + sReward; break; case 2: sMessage = "I never thought I would see this pirate brought to justice. " + sReward; break; case 3: sMessage = "This pirate will plunder no more. " + sReward; break; case 4: sMessage = "Our galleons are safer now. " + sReward; break; case 5: sMessage = "The sea is safer because of you. " + sReward; break; case 6: sMessage = "The sailors at the docks will not believe this. " + sReward; break; case 7: sMessage = "I have only heard stories about this pirate. " + sReward; break; case 8: sMessage = "How did you come across this pirate? " + sReward; break; case 9: sMessage = "Where did you find this pirate? " + sReward; break; } this.PrivateOverheadMessage(MessageType.Regular, 1153, false, sMessage, from.NetState); dropped.Delete(); return(true); } } else if (dropped is Head && !from.Blessed) { if (IntelligentAction.GetMyEnemies(from, this, false) == true) { string sSay = "You shouldn't be carrying that around with you."; this.PrivateOverheadMessage(MessageType.Regular, 1153, false, sSay, from.NetState); } else { Head head = (Head)dropped; int karma = 0; int gold = 0; string sMessage = ""; string sReward = "Here is " + gold.ToString() + " gold for you."; if (head.m_Job == "Thief") { karma = Utility.RandomMinMax(40, 60); gold = Utility.RandomMinMax(80, 120); } else if (head.m_Job == "Bandit") { karma = Utility.RandomMinMax(20, 30); gold = Utility.RandomMinMax(30, 40); } else if (head.m_Job == "Brigand") { karma = Utility.RandomMinMax(30, 40); gold = Utility.RandomMinMax(50, 80); } else if (head.m_Job == "Pirate") { karma = Utility.RandomMinMax(90, 110); gold = Utility.RandomMinMax(120, 160); } else if (head.m_Job == "Assassin") { karma = Utility.RandomMinMax(60, 80); gold = Utility.RandomMinMax(100, 140); } switch (Utility.RandomMinMax(0, 9)) { case 0: sReward = "Here is " + gold.ToString() + " gold for you."; break; case 1: sReward = "Take this " + gold.ToString() + " gold for your trouble."; break; case 2: sReward = "The reward is " + gold.ToString() + " gold."; break; case 3: sReward = "Here is " + gold.ToString() + " gold for the bounty."; break; case 4: sReward = "The bounty is " + gold.ToString() + " gold for this one."; break; case 5: sReward = "Here is your reward of " + gold.ToString() + " gold"; break; case 6: sReward = "You can have this " + gold.ToString() + " gold for the bounty."; break; case 7: sReward = "There is a reward of " + gold.ToString() + " gold for this one."; break; case 8: sReward = "This one was worth " + gold.ToString() + " gold for their crimes."; break; case 9: sReward = "Their crimes called for a bounty of " + gold.ToString() + " gold."; break; } if (head.m_Job == "Thief" || head.m_Job == "Bandit" || head.m_Job == "Brigand") { Titles.AwardKarma(from, karma, true); from.SendSound(0x2E6); from.AddToBackpack(new Gold(gold)); switch (Utility.RandomMinMax(0, 9)) { case 0: sMessage = "We have been looking for this rogue. " + sReward; break; case 1: sMessage = "I have heard of this thief before. " + sReward; break; case 2: sMessage = "I never thought I would see this bandit brought to justice. " + sReward; break; case 3: sMessage = "This rouge will steal no more. " + sReward; break; case 4: sMessage = "Our gold purses are safer now. " + sReward; break; case 5: sMessage = "The land is safer because of you. " + sReward; break; case 6: sMessage = "The others at the guard house will not believe this. " + sReward; break; case 7: sMessage = "I have only heard stories about this rogue. " + sReward; break; case 8: sMessage = "How did you come across this thief? " + sReward; break; case 9: sMessage = "Where did you find this sneak? " + sReward; break; } this.PrivateOverheadMessage(MessageType.Regular, 1153, false, sMessage, from.NetState); dropped.Delete(); return(true); } else if (head.m_Job == "Pirate") { Titles.AwardKarma(from, karma, true); from.SendSound(0x2E6); from.AddToBackpack(new Gold(gold)); switch (Utility.RandomMinMax(0, 9)) { case 0: sMessage = "We have been looking for this pirate. " + sReward; break; case 1: sMessage = "I have heard of this pirate before. " + sReward; break; case 2: sMessage = "I never thought I would see this pirate brought to justice. " + sReward; break; case 3: sMessage = "This pirate will plunder no more. " + sReward; break; case 4: sMessage = "Our galleons are safer now. " + sReward; break; case 5: sMessage = "The sea is safer because of you. " + sReward; break; case 6: sMessage = "The sailors at the docks will not believe this. " + sReward; break; case 7: sMessage = "I have only heard stories about this pirate. " + sReward; break; case 8: sMessage = "How did you come across this pirate? " + sReward; break; case 9: sMessage = "Where did you find this pirate? " + sReward; break; } this.PrivateOverheadMessage(MessageType.Regular, 1153, false, sMessage, from.NetState); dropped.Delete(); return(true); } else if (head.m_Job == "Assassin") { Titles.AwardKarma(from, karma, true); from.SendSound(0x2E6); from.AddToBackpack(new Gold(gold)); switch (Utility.RandomMinMax(0, 9)) { case 0: sMessage = "We have been living in fear of this one. " + sReward; break; case 1: sMessage = "I have heard others speak of this assassin. " + sReward; break; case 2: sMessage = "I never thought this assassin existed. " + sReward; break; case 3: sMessage = "This assassin will kill no more. " + sReward; break; case 4: sMessage = "Our nobles are safer now. " + sReward; break; case 5: sMessage = "The shadows are less feared because of you. " + sReward; break; case 6: sMessage = "Those in the tavern will not believe this. " + sReward; break; case 7: sMessage = "I have only heard rumors about this assassin. " + sReward; break; case 8: sMessage = "It is good to see this assassin did not best you. " + sReward; break; case 9: sMessage = "How did you survive this assassin? " + sReward; break; } this.PrivateOverheadMessage(MessageType.Regular, 1153, false, sMessage, from.NetState); dropped.Delete(); return(true); } else { this.PrivateOverheadMessage(MessageType.Regular, 1153, false, "I assume they done you harm. Let me rid you of this thing.", from.NetState); dropped.Delete(); return(true); } } } return(base.OnDragDrop(from, dropped)); }
public void Target(object obj) { if (obj is Corpse) { Corpse c = (Corpse)obj; Mobile m = c.m_Owner; if (m is BaseCreature) { SlayerEntry undead = SlayerGroup.GetEntryByName(SlayerName.Silver); SlayerEntry exorcism = SlayerGroup.GetEntryByName(SlayerName.Exorcism); SlayerEntry animal = SlayerGroup.GetEntryByName(SlayerName.AnimalHunter); SlayerEntry golems = SlayerGroup.GetEntryByName(SlayerName.GolemDestruction); SlayerEntry plants = SlayerGroup.GetEntryByName(SlayerName.WeedRuin); SlayerEntry repond = SlayerGroup.GetEntryByName(SlayerName.Repond); SlayerEntry dragon = SlayerGroup.GetEntryByName(SlayerName.DragonSlaying); SlayerEntry reptile = SlayerGroup.GetEntryByName(SlayerName.ReptilianDeath); SlayerEntry spider = SlayerGroup.GetEntryByName(SlayerName.ArachnidDoom); SlayerEntry elemental = SlayerGroup.GetEntryByName(SlayerName.ElementalBan); SlayerEntry wizard = SlayerGroup.GetEntryByName(SlayerName.WizardSlayer); SlayerEntry birds = SlayerGroup.GetEntryByName(SlayerName.AvianHunter); SlayerEntry slime = SlayerGroup.GetEntryByName(SlayerName.SlimyScourge); SlayerEntry giant = SlayerGroup.GetEntryByName(SlayerName.GiantKiller); SlayerEntry water = SlayerGroup.GetEntryByName(SlayerName.NeptunesBane); SlayerEntry fey = SlayerGroup.GetEntryByName(SlayerName.Fey); int level_corpse = IntelligentAction.GetCreatureLevel(m); int level_caster = (int)((Caster.Skills[SkillName.Necromancy].Value + Caster.Skills[SkillName.SpiritSpeak].Value) / 2); if (level_caster > 100) { level_caster = 100; } int slots_max = (int)(level_corpse / 20); if (slots_max > 5) { slots_max = 5; } if (slots_max < 1) { slots_max = 1; } int slots_limit = Caster.FollowersMax - Caster.Followers; if (undead.Slays(m)) { Caster.SendMessage("You cannot animate supernatural creatures!"); } else if (golems.Slays(m)) { Caster.SendMessage("You cannot animate constructs!"); } else if (level_corpse > level_caster) { Caster.SendMessage("You are not powerful enough to animate that!"); } else if (slots_limit >= slots_max) { TimeSpan duration = TimeSpan.FromSeconds(((Caster.Skills[SkillName.Necromancy].Value + Caster.Skills[SkillName.SpiritSpeak].Value) / 2) * 9); BaseCreature bc = (BaseCreature)m; int myBody = bc.Body; if (m.TithingPoints > 0 && bc.Body != 400 && bc.Body != 401) { myBody = m.TithingPoints; } // STORED ORIGINAL BODY VALUE DURING ONAFTERSPAWN IN BASECREATURE.CS int hitpoison = 0; if (bc.HitPoison == Poison.Lesser) { hitpoison = 1; } else if (bc.HitPoison == Poison.Regular) { hitpoison = 2; } else if (bc.HitPoison == Poison.Greater) { hitpoison = 3; } else if (bc.HitPoison == Poison.Deadly) { hitpoison = 4; } else if (bc.HitPoison == Poison.Lethal) { hitpoison = 5; } int immune = 0; if (bc.PoisonImmune == Poison.Lesser) { immune = 1; } else if (bc.PoisonImmune == Poison.Regular) { immune = 2; } else if (bc.PoisonImmune == Poison.Greater) { immune = 3; } else if (bc.PoisonImmune == Poison.Deadly) { immune = 4; } else if (bc.PoisonImmune == Poison.Lethal) { immune = 5; } // THIS MODIFIES THE MONSTER BASED ON THE LEVEL OF THE CORPSE AND THE SKILLS OF THE CASTER // TO GET A ANIMATED CREATURE WITH FULL STATS, A CASTER NEEDS A 125 IN BOTH SKILLS int modify = level_caster - (level_corpse + 50); double mod = 1.0; if (modify < 0) { int lower = (level_corpse + 50) - level_caster; mod = (100 - lower) * 0.01; } BaseCreature creature = new SummonedCorpse((int)(mod * bc.HitsMax), (int)(mod * bc.StamMax), (int)(mod * bc.ManaMax), (int)(mod * bc.RawStr), (int)(mod * bc.RawDex), (int)(mod * bc.RawInt), hitpoison, immune); creature.DamageMin = (int)(mod * bc.DamageMin); creature.DamageMax = (int)(mod * bc.DamageMax); creature.ColdDamage = (int)(mod * bc.ColdDamage); creature.EnergyDamage = (int)(mod * bc.EnergyDamage); creature.FireDamage = (int)(mod * bc.FireDamage); creature.PhysicalDamage = (int)(mod * bc.PhysicalDamage); creature.PoisonDamage = (int)(mod * bc.PoisonDamage); creature.ColdResistSeed = (int)(mod * bc.ColdResistSeed); creature.EnergyResistSeed = (int)(mod * bc.EnergyResistSeed); creature.FireResistSeed = (int)(mod * bc.FireResistSeed); creature.PhysicalResistanceSeed = (int)(mod * bc.PhysicalResistanceSeed); creature.PoisonResistSeed = (int)(mod * bc.PoisonResistSeed); creature.VirtualArmor = (int)(mod * bc.VirtualArmor); creature.CanSwim = bc.CanSwim; if (creature.CanSwim) { creature.CantWalk = bc.CantWalk; } creature.ControlSlots = slots_max; BaseCreature b = (BaseCreature)m; creature.AI = AIType.AI_Melee; bool mage = false; if (b.AI == AIType.AI_Mage) { creature.AI = AIType.AI_Mage; mage = true; } SpellHelper.Summon(creature, Caster, 0x216, duration, false, false); creature.Body = myBody; string ghost = " creature"; if (exorcism.Slays(bc)) { ghost = " demon"; } else if (animal.Slays(bc)) { ghost = " animal"; } else if (plants.Slays(bc)) { ghost = " weed"; } else if (dragon.Slays(bc)) { ghost = " dragon"; } else if (reptile.Slays(bc)) { ghost = " reptile"; } else if (spider.Slays(bc)) { ghost = " insect"; } else if (elemental.Slays(bc)) { ghost = " necromental"; } else if (birds.Slays(bc)) { ghost = " bird"; } else if (slime.Slays(bc)) { ghost = " slime"; } else if (giant.Slays(bc)) { ghost = " giant"; } else if (repond.Slays(bc)) { ghost = ""; } // ZOMBIES ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// creature.Hue = Utility.RandomList(0xB97, 0xB98, 0xB99, 0xB9A, 0xB85, 0xB79, 0xB5F, 0xB60, 0xB19, 0xACC, 0xACD, 0xACE, 0xACF, 0xAB0, 0x938, 0x92D); creature.BaseSoundID = 471; if (bc.Body == 400 || bc.Body == 401 || bc.Body == 605 || bc.Body == 606) { creature.Body = Utility.RandomList(3, 728, 305, 181, 304, 307); } switch (Utility.RandomMinMax(0, 5)) { case 0: creature.Name = "a zombie" + ghost; break; case 1: creature.Name = "a dead" + ghost; break; case 2: creature.Name = "a rotten" + ghost; break; case 3: creature.Name = "an undead" + ghost; break; case 4: creature.Name = "a rotting" + ghost; break; case 5: creature.Name = "a decaying" + ghost; break; } // GHOSTS /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (mage) { creature.Hue = Utility.RandomList(0x4001, 0x4001, 1150, 0x9C2); creature.BaseSoundID = 0x482; if (bc.Body == 400 || bc.Body == 401 || bc.Body == 605 || bc.Body == 606) { creature.Body = Utility.RandomList(0x3CA, 310, 26, 84); } switch (Utility.RandomMinMax(0, 6)) { case 0: creature.Name = "a wraith" + ghost; break; case 1: creature.Name = "a ghostly" + ghost; break; case 2: creature.Name = "a spectral" + ghost; break; case 3: creature.Name = "a haunting" + ghost; break; case 4: creature.Name = "a phantasmal" + ghost; break; case 5: creature.Name = "a phantom" + ghost; break; case 6: creature.Name = "a banshee" + ghost; break; } } // SKELETONS //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (repond.Slays(bc) && ghost == "" && Utility.RandomMinMax(0, 1) == 1 && !mage) // MAKE INTO SKELETON { creature.Body = Utility.RandomList(57, 168, 170, 247, 327, 50, 56, 167); creature.Hue = 0; if (creature.Body == 327) { creature.Hue = 0x9C4; } creature.BaseSoundID = 451; switch (Utility.RandomMinMax(0, 6)) { case 0: ghost = " warrior"; break; case 1: ghost = " knight"; break; case 2: ghost = " fighter"; break; case 3: ghost = " champion"; break; case 4: ghost = " crusader"; break; case 5: ghost = " soldier"; break; case 6: ghost = " guard"; break; } switch (Utility.RandomMinMax(0, 2)) { case 0: creature.Name = "a skeletal" + ghost; break; case 1: creature.Name = "a bone" + ghost; break; case 2: creature.Name = "a skeleton" + ghost; break; } } else if (repond.Slays(bc) && wizard.Slays(bc) && Utility.RandomMinMax(0, 1) == 1 && ghost == "" && mage) { creature.Body = Utility.RandomList(148, 110, 24); creature.Hue = 0; creature.BaseSoundID = 0x3E9; switch (Utility.RandomMinMax(0, 6)) { case 0: ghost = " wizard"; break; case 1: ghost = " mage"; break; case 2: ghost = " sorcerer"; break; case 3: ghost = " conjurer"; break; case 4: ghost = " magician"; break; case 5: ghost = " warlock"; break; case 6: ghost = " enchanter"; break; } switch (Utility.RandomMinMax(0, 2)) { case 0: creature.Name = "a skeletal" + ghost; break; case 1: creature.Name = "a bone" + ghost; break; case 2: creature.Name = "a skeleton" + ghost; break; } } else if (dragon.Slays(bc) && Utility.RandomMinMax(0, 1) == 1 && bc.Fame >= 15000 && ghost != "") { creature.Hue = Utility.RandomList(0x83B, 0x89F, 0x8A0, 0x8A1, 0x8A2, 0x8A3, 0x8A4); creature.BaseSoundID = 471; switch (Utility.RandomMinMax(0, 5)) { case 0: creature.Name = "a zombie" + ghost; break; case 1: creature.Name = "a dead" + ghost; break; case 2: creature.Name = "a rotten" + ghost; break; case 3: creature.Name = "an undead" + ghost; break; case 4: creature.Name = "a rotting" + ghost; break; case 5: creature.Name = "a decaying" + ghost; break; } if (Utility.RandomMinMax(0, 1) == 1) { creature.Body = Utility.RandomList(104, 323, 323); creature.BaseSoundID = 0x488; creature.Hue = 0; switch (Utility.RandomMinMax(0, 2)) { case 0: creature.Name = "a skeletal" + ghost; break; case 1: creature.Name = "a bone" + ghost; break; case 2: creature.Name = "a skeleton" + ghost; break; } } } else if (giant.Slays(bc) && Utility.RandomMinMax(0, 1) == 1 && ghost != "") { creature.Body = 999; if (Utility.RandomMinMax(0, 1) == 1) { creature.Body = 308; creature.BaseSoundID = 0x4FB; creature.Hue = 0; switch (Utility.RandomMinMax(0, 2)) { case 0: creature.Name = "a skeletal" + ghost; break; case 1: creature.Name = "a bone" + ghost; break; case 2: creature.Name = "a skeleton" + ghost; break; } } } else if (exorcism.Slays(bc) && Utility.RandomMinMax(0, 5) == 1 && ghost != "") { creature.Body = 339; creature.BaseSoundID = 0x48D; creature.Hue = 0x80F; switch (Utility.RandomMinMax(0, 2)) { case 0: creature.Name = "a skeletal" + ghost; break; case 1: creature.Name = "a bone" + ghost; break; case 2: creature.Name = "a skeleton" + ghost; break; } } if (mage) { creature.SetSkill(SkillName.Meditation, (mod * bc.Skills[SkillName.Meditation].Value)); creature.SetSkill(SkillName.EvalInt, (mod * bc.Skills[SkillName.EvalInt].Value)); creature.SetSkill(SkillName.Magery, (mod * bc.Skills[SkillName.Magery].Value)); creature.SetSkill(SkillName.MagicResist, (mod * bc.Skills[SkillName.MagicResist].Value)); creature.SetSkill(SkillName.Tactics, (mod * bc.Skills[SkillName.Tactics].Value)); creature.SetSkill(SkillName.Wrestling, (mod * bc.Skills[SkillName.Wrestling].Value)); } else { creature.SetSkill(SkillName.MagicResist, (mod * bc.Skills[SkillName.MagicResist].Value)); creature.SetSkill(SkillName.Tactics, (mod * bc.Skills[SkillName.Tactics].Value)); creature.SetSkill(SkillName.Wrestling, (mod * bc.Skills[SkillName.Wrestling].Value)); } creature.Location = c.Location; Effects.SendLocationEffect(creature.Location, creature.Map, 0x3400, 60, 0, 0); Effects.PlaySound(creature.Location, creature.Map, 0x108); c.Delete(); } else { Caster.SendLocalizedMessage(1049645); // You have too many followers to summon that creature. } } else { Caster.SendLocalizedMessage(1061084); // You cannot animate that. } } else { Caster.SendLocalizedMessage(1061084); // You cannot animate that. } FinishSequence(); }