Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an antifreeze elemental corpse" )]
|
||||
public class AntifreezeElemental : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public AntifreezeElemental () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an antifreeze elemental";
|
||||
Body = 0x9E;
|
||||
BaseSoundID = 278;
|
||||
Hue = Utility.RandomList(1267,1268,1269,1270,1271,1272,1367,1368,1369,1370,1371,1372,1162,2002,1193,72,63);
|
||||
|
||||
SetStr( 226, 255 );
|
||||
SetDex( 66, 85 );
|
||||
SetInt( 171, 195 );
|
||||
|
||||
SetHits( 136, 153 );
|
||||
|
||||
SetDamage( 8, 13 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 25 );
|
||||
SetDamageType( ResistanceType.Poison, 50 );
|
||||
SetDamageType( ResistanceType.Energy, 25 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 45, 55 );
|
||||
SetResistance( ResistanceType.Fire, 40, 50 );
|
||||
SetResistance( ResistanceType.Cold, 20, 30 );
|
||||
SetResistance( ResistanceType.Poison, 70, 80 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
|
||||
SetSkill( SkillName.Anatomy, 30.3, 60.0 );
|
||||
SetSkill( SkillName.EvalInt, 70.1, 85.0 );
|
||||
SetSkill( SkillName.Magery, 70.1, 85.0 );
|
||||
SetSkill( SkillName.MagicResist, 60.1, 75.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 90.0 );
|
||||
SetSkill( SkillName.Wrestling, 70.1, 90.0 );
|
||||
|
||||
Fame = 8000;
|
||||
Karma = -8000;
|
||||
|
||||
VirtualArmor = 40;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Average );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison HitPoison{ get{ return Poison.Lethal; } }
|
||||
public override double HitPoisonChance{ get{ return 0.6; } }
|
||||
|
||||
public override int TreasureMapLevel{ get{ return Core.AOS ? 2 : 3; } }
|
||||
|
||||
public AntifreezeElemental( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( BaseSoundID == 263 )
|
||||
BaseSoundID = 278;
|
||||
|
||||
if ( Body == 13 )
|
||||
Body = 0x9E;
|
||||
|
||||
if ( Hue == 0x4001 )
|
||||
Hue = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
79
Scripts/SubSystem/CustomMonsters/Elemental/JadeElemental.cs
Normal file
79
Scripts/SubSystem/CustomMonsters/Elemental/JadeElemental.cs
Normal file
@@ -0,0 +1,79 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a jade elemental corpse" )]
|
||||
public class JadeElemental : BaseCreature
|
||||
{
|
||||
public override double DispelDifficulty{ get{ return 117.5; } }
|
||||
public override double DispelFocus{ get{ return 45.0; } }
|
||||
|
||||
[Constructable]
|
||||
public JadeElemental() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an jade elemental";
|
||||
Body = 14;
|
||||
BaseSoundID = 268;
|
||||
Hue = 2947;
|
||||
|
||||
SetStr( 136, 145 );
|
||||
SetDex( 86, 105 );
|
||||
SetInt( 71, 92 );
|
||||
|
||||
SetHits( 86, 96 );
|
||||
|
||||
SetDamage( 11, 14 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 30, 35 );
|
||||
SetResistance( ResistanceType.Fire, 30, 40 );
|
||||
SetResistance( ResistanceType.Cold, 10, 20 );
|
||||
SetResistance( ResistanceType.Poison, 15, 25 );
|
||||
SetResistance( ResistanceType.Energy, 35, 45 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 60.1, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 60.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 60.1, 100.0 );
|
||||
|
||||
Fame = 3500;
|
||||
Karma = -3500;
|
||||
|
||||
VirtualArmor = 34;
|
||||
ControlSlots = 2;
|
||||
|
||||
PackItem( new FertileDirt( Utility.RandomMinMax( 1, 4 ) ) );
|
||||
PackItem( new IronOre( 3 ) ); // TODO: Five small iron ore
|
||||
PackItem( new MandrakeRoot() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.Gems );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override int TreasureMapLevel{ get{ return 1; } }
|
||||
|
||||
public JadeElemental( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
80
Scripts/SubSystem/CustomMonsters/Elemental/MilkElemental.cs
Normal file
80
Scripts/SubSystem/CustomMonsters/Elemental/MilkElemental.cs
Normal file
@@ -0,0 +1,80 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a milky elemental corpse" )]
|
||||
public class MilkElemental : BaseCreature
|
||||
{
|
||||
public override double DispelDifficulty{ get{ return 117.5; } }
|
||||
public override double DispelFocus{ get{ return 45.0; } }
|
||||
|
||||
[Constructable]
|
||||
public MilkElemental () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a milk elemental";
|
||||
Body = 16;
|
||||
BaseSoundID = 278;
|
||||
Hue = 2059;
|
||||
|
||||
SetStr( 126, 155 );
|
||||
SetDex( 66, 85 );
|
||||
SetInt( 101, 125 );
|
||||
|
||||
SetHits( 76, 93 );
|
||||
|
||||
SetDamage( 7, 9 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetDamageType( ResistanceType.Physical, 40 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 45 );
|
||||
SetResistance( ResistanceType.Fire, 10, 25 );
|
||||
SetResistance( ResistanceType.Cold, 10, 25 );
|
||||
SetResistance( ResistanceType.Poison, 80, 100 );
|
||||
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 );
|
||||
|
||||
Fame = 4500;
|
||||
Karma = -4500;
|
||||
|
||||
VirtualArmor = 40;
|
||||
ControlSlots = 3;
|
||||
CanSwim = true;
|
||||
|
||||
PackItem( new BlackPearl( 3 ) );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.Potions );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override int TreasureMapLevel{ get{ return 2; } }
|
||||
|
||||
public MilkElemental( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a mithril elemental corpse" )]
|
||||
public class MithrilElemental : BaseCreature
|
||||
{
|
||||
public override double DispelDifficulty{ get{ return 117.5; } }
|
||||
public override double DispelFocus{ get{ return 45.0; } }
|
||||
|
||||
[Constructable]
|
||||
public MithrilElemental() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a mithril elemental";
|
||||
Body = 14;
|
||||
BaseSoundID = 268;
|
||||
Hue = 2401;
|
||||
|
||||
SetStr( 164, 170 );
|
||||
SetDex( 180, 205 );
|
||||
SetInt( 71, 92 );
|
||||
|
||||
SetHits( 176, 193 );
|
||||
|
||||
SetDamage( 29, 36 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 80, 85 );
|
||||
SetResistance( ResistanceType.Fire, 80, 85 );
|
||||
SetResistance( ResistanceType.Cold, 60, 68 );
|
||||
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 );
|
||||
|
||||
Fame = 8500;
|
||||
Karma = -8500;
|
||||
|
||||
VirtualArmor = 34;
|
||||
ControlSlots = 2;
|
||||
|
||||
PackItem( new FertileDirt( Utility.RandomMinMax( 1, 4 ) ) );
|
||||
PackItem( new IronOre( 3 ) ); // TODO: Five small iron ore
|
||||
PackItem( new MandrakeRoot() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.Gems );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override int TreasureMapLevel{ get{ return 1; } }
|
||||
|
||||
public MithrilElemental( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
86
Scripts/SubSystem/CustomMonsters/Elemental/OilElemental.cs
Normal file
86
Scripts/SubSystem/CustomMonsters/Elemental/OilElemental.cs
Normal file
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an oil elemental corpse" )]
|
||||
public class OilElemental : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public OilElemental () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an oil elemental";
|
||||
Body = 0x9E;
|
||||
BaseSoundID = 278;
|
||||
Hue = 2051;
|
||||
|
||||
SetStr( 226, 255 );
|
||||
SetDex( 86, 105 );
|
||||
SetInt( 171, 195 );
|
||||
|
||||
SetHits( 136, 153 );
|
||||
|
||||
SetDamage( 8, 13 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 25 );
|
||||
SetDamageType( ResistanceType.Poison, 50 );
|
||||
SetDamageType( ResistanceType.Fire, 25 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 45, 55 );
|
||||
SetResistance( ResistanceType.Fire, 5, 10 );
|
||||
SetResistance( ResistanceType.Cold, 20, 30 );
|
||||
SetResistance( ResistanceType.Poison, 70, 80 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
|
||||
SetSkill( SkillName.Anatomy, 30.3, 60.0 );
|
||||
SetSkill( SkillName.EvalInt, 70.1, 85.0 );
|
||||
SetSkill( SkillName.Magery, 70.1, 85.0 );
|
||||
SetSkill( SkillName.MagicResist, 60.1, 75.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 90.0 );
|
||||
SetSkill( SkillName.Wrestling, 70.1, 90.0 );
|
||||
|
||||
Fame = 8000;
|
||||
Karma = -8000;
|
||||
|
||||
VirtualArmor = 40;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Average );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison HitPoison{ get{ return Poison.Lethal; } }
|
||||
public override double HitPoisonChance{ get{ return 0.6; } }
|
||||
|
||||
public override int TreasureMapLevel{ get{ return Core.AOS ? 2 : 3; } }
|
||||
|
||||
public OilElemental( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( BaseSoundID == 263 )
|
||||
BaseSoundID = 278;
|
||||
|
||||
if ( Body == 13 )
|
||||
Body = 0x9E;
|
||||
|
||||
if ( Hue == 0x4001 )
|
||||
Hue = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a thorium elemental corpse" )]
|
||||
public class ThoriumElemental : BaseCreature
|
||||
{
|
||||
public override double DispelDifficulty{ get{ return 117.5; } }
|
||||
public override double DispelFocus{ get{ return 45.0; } }
|
||||
|
||||
[Constructable]
|
||||
public ThoriumElemental() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a thorium elemental";
|
||||
Body = 14;
|
||||
BaseSoundID = 268;
|
||||
Hue = 164;
|
||||
|
||||
SetStr( 160, 175 );
|
||||
SetDex( 146, 145 );
|
||||
SetInt( 71, 92 );
|
||||
|
||||
SetHits( 176, 193 );
|
||||
|
||||
SetDamage( 29, 36 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 85, 88 );
|
||||
SetResistance( ResistanceType.Fire, 80, 82 );
|
||||
SetResistance( ResistanceType.Cold, 60, 70 );
|
||||
SetResistance( ResistanceType.Poison, 15, 25 );
|
||||
SetResistance( ResistanceType.Energy, 75, 78 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 50.1, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 60.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 60.1, 100.0 );
|
||||
|
||||
Fame = 8500;
|
||||
Karma = -8500;
|
||||
|
||||
VirtualArmor = 34;
|
||||
ControlSlots = 2;
|
||||
|
||||
PackItem( new FertileDirt( Utility.RandomMinMax( 1, 4 ) ) );
|
||||
PackItem( new IronOre( 3 ) ); // TODO: Five small iron ore
|
||||
PackItem( new MandrakeRoot() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.Gems );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override int TreasureMapLevel{ get{ return 1; } }
|
||||
|
||||
public ThoriumElemental( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Scripts/SubSystem/CustomMonsters/RakastaFace.cs
Normal file
61
Scripts/SubSystem/CustomMonsters/RakastaFace.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
using System;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x2641, 0x2642 )]
|
||||
public class RakastaFace : BaseArmor
|
||||
{
|
||||
public override int BasePhysicalResistance{ get{ return 3; } }
|
||||
public override int BaseFireResistance{ get{ return 3; } }
|
||||
public override int BaseColdResistance{ get{ return 3; } }
|
||||
public override int BasePoisonResistance{ get{ return 3; } }
|
||||
public override int BaseEnergyResistance{ get{ return 3; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 55; } }
|
||||
public override int InitMaxHits{ get{ return 75; } }
|
||||
|
||||
public override int AosStrReq{ get{ return 75; } }
|
||||
public override int OldStrReq{ get{ return 60; } }
|
||||
|
||||
public override int OldDexBonus{ get{ return -8; } }
|
||||
|
||||
public override int ArmorBase{ get{ return 40; } }
|
||||
|
||||
public override ArmorMaterialType MaterialType{ get{ return ArmorMaterialType.Dragon; } }
|
||||
public override CraftResource DefaultResource{ get{ return CraftResource.RedScales; } }
|
||||
|
||||
[Constructable]
|
||||
public RakastaFace() : base( 0x2779 )
|
||||
{
|
||||
Hue = 1813;
|
||||
Weight = 0.1;
|
||||
|
||||
Movable = false;
|
||||
LootType = LootType.Blessed;
|
||||
Layer = Layer.Neck;
|
||||
|
||||
ArmorAttributes.MageArmor = 1;
|
||||
ArmorAttributes.SelfRepair = 1;
|
||||
}
|
||||
|
||||
public RakastaFace( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( Weight == 1.0 )
|
||||
Weight = 15.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Scripts/SubSystem/CustomMonsters/RakastaHead.cs
Normal file
61
Scripts/SubSystem/CustomMonsters/RakastaHead.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
using System;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flipable( 0x2645, 0x2646 )]
|
||||
public class RakastaHead : BaseArmor
|
||||
{
|
||||
public override int BasePhysicalResistance{ get{ return 3; } }
|
||||
public override int BaseFireResistance{ get{ return 3; } }
|
||||
public override int BaseColdResistance{ get{ return 3; } }
|
||||
public override int BasePoisonResistance{ get{ return 3; } }
|
||||
public override int BaseEnergyResistance{ get{ return 3; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 55; } }
|
||||
public override int InitMaxHits{ get{ return 75; } }
|
||||
|
||||
public override int AosStrReq{ get{ return 75; } }
|
||||
public override int OldStrReq{ get{ return 40; } }
|
||||
|
||||
public override int OldDexBonus{ get{ return -1; } }
|
||||
|
||||
public override int ArmorBase{ get{ return 40; } }
|
||||
|
||||
public override ArmorMaterialType MaterialType{ get{ return ArmorMaterialType.Dragon; } }
|
||||
public override CraftResource DefaultResource{ get{ return CraftResource.RedScales; } }
|
||||
|
||||
[Constructable]
|
||||
public RakastaHead() : base( 0x2774 )
|
||||
{
|
||||
Hue = 1813;
|
||||
Weight = 0.1;
|
||||
|
||||
Movable = false;
|
||||
LootType = LootType.Blessed;
|
||||
Layer = Layer.Hair;
|
||||
|
||||
ArmorAttributes.MageArmor = 1;
|
||||
ArmorAttributes.SelfRepair = 1;
|
||||
}
|
||||
|
||||
public RakastaHead( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( Weight == 1.0 )
|
||||
Weight = 5.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
101
Scripts/SubSystem/CustomMonsters/RakastaRanger.cs
Normal file
101
Scripts/SubSystem/CustomMonsters/RakastaRanger.cs
Normal file
@@ -0,0 +1,101 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a rakasta ranger corpse" )]
|
||||
public class RakastaRanger : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public RakastaRanger() : base( AIType.AI_Archer, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a rakasta ranger";
|
||||
|
||||
Body = 400;
|
||||
Hue = 1813;
|
||||
BaseSoundID = 0x462;
|
||||
|
||||
AddItem( new Bow() );
|
||||
AddItem( new NinjaTabi() );
|
||||
AddItem( new RangerLegs() );
|
||||
AddItem( new RangerChest() );
|
||||
AddItem( new JinBaori() );
|
||||
|
||||
SetStr( 106, 120 );
|
||||
SetDex( 100, 128 );
|
||||
SetInt( 161, 180 );
|
||||
|
||||
SetHits( 96, 100 );
|
||||
|
||||
SetDamage( 8, 10 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 40, 60 );
|
||||
SetResistance( ResistanceType.Fire, 35, 45 );
|
||||
SetResistance( ResistanceType.Cold, 65, 65 );
|
||||
SetResistance( ResistanceType.Poison, 40, 65 );
|
||||
SetResistance( ResistanceType.Energy, 25, 45 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 95.1, 100.0 );
|
||||
SetSkill( SkillName.Focus, 95.1, 100.0 );
|
||||
SetSkill( SkillName.Meditation, 95.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 102.5, 125.0 );
|
||||
SetSkill( SkillName.Tactics, 85.0, 100.5 );
|
||||
SetSkill( SkillName.Archery, 85.0, 100.0 );
|
||||
SetSkill( SkillName.Anatomy, 85.0, 100.0 );
|
||||
|
||||
AddItem( new RakastaFace());
|
||||
AddItem( new RakastaHead());
|
||||
AddItem( new Bow() );
|
||||
PackItem( new Arrow( Utility.RandomMinMax( 80, 100 ) ) );
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
VirtualArmor = 16;
|
||||
|
||||
if ( 0.7 > Utility.RandomDouble() )
|
||||
PackItem( new ArcaneGem() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public void AddArcane( Item item )
|
||||
{
|
||||
if ( item is IArcaneEquip )
|
||||
{
|
||||
IArcaneEquip eq = (IArcaneEquip)item;
|
||||
eq.CurArcaneCharges = eq.MaxArcaneCharges = 20;
|
||||
}
|
||||
|
||||
item.Hue = ArcaneGem.DefaultArcaneHue;
|
||||
item.LootType = LootType.Newbied;
|
||||
|
||||
AddItem( item );
|
||||
}
|
||||
|
||||
public override bool ClickTitle{ get{ return false; } }
|
||||
public override bool ShowFameTitle{ get{ return false; } }
|
||||
public override bool AlwaysMurderer{ get{ return true; } }
|
||||
|
||||
public RakastaRanger( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
100
Scripts/SubSystem/CustomMonsters/RakastaWarrior.cs
Normal file
100
Scripts/SubSystem/CustomMonsters/RakastaWarrior.cs
Normal file
@@ -0,0 +1,100 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a rakasta warrior corpse" )]
|
||||
public class RakastaWarrior : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public RakastaWarrior() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a rakasta warrior";
|
||||
|
||||
Body = 400;
|
||||
Hue = 1813;
|
||||
BaseSoundID = 0x462;
|
||||
|
||||
AddItem( new Bokuto() );
|
||||
AddItem( new MetalShield() );
|
||||
AddItem( new NinjaTabi() );
|
||||
AddItem( new StuddedLegs() );
|
||||
AddItem( new StuddedChest() );
|
||||
AddItem( new JinBaori() );
|
||||
|
||||
SetStr( 126, 150 );
|
||||
SetDex( 96, 120 );
|
||||
SetInt( 151, 175 );
|
||||
|
||||
SetHits( 76, 90 );
|
||||
|
||||
SetDamage( 6, 12 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 30, 40 );
|
||||
SetResistance( ResistanceType.Fire, 25, 35 );
|
||||
SetResistance( ResistanceType.Cold, 35, 45 );
|
||||
SetResistance( ResistanceType.Poison, 5, 15 );
|
||||
SetResistance( ResistanceType.Energy, 15, 25 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 95.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 95.1, 100.0 );
|
||||
SetSkill( SkillName.Meditation, 95.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 102.5, 125.0 );
|
||||
SetSkill( SkillName.Tactics, 85.0, 100.5 );
|
||||
SetSkill( SkillName.Swords, 85.0, 100.0 );
|
||||
SetSkill( SkillName.Anatomy, 85.0, 100.0 );
|
||||
|
||||
AddItem( new RakastaFace());
|
||||
AddItem( new RakastaHead());
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
VirtualArmor = 16;
|
||||
|
||||
if ( 0.7 > Utility.RandomDouble() )
|
||||
PackItem( new ArcaneGem() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public void AddArcane( Item item )
|
||||
{
|
||||
if ( item is IArcaneEquip )
|
||||
{
|
||||
IArcaneEquip eq = (IArcaneEquip)item;
|
||||
eq.CurArcaneCharges = eq.MaxArcaneCharges = 20;
|
||||
}
|
||||
|
||||
item.Hue = ArcaneGem.DefaultArcaneHue;
|
||||
item.LootType = LootType.Newbied;
|
||||
|
||||
AddItem( item );
|
||||
}
|
||||
|
||||
public override bool ClickTitle{ get{ return false; } }
|
||||
public override bool ShowFameTitle{ get{ return false; } }
|
||||
public override bool AlwaysMurderer{ get{ return true; } }
|
||||
|
||||
public RakastaWarrior( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
using System;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an engrudging cesspool corpse" )]
|
||||
public class EngrudgingCesspool : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public EngrudgingCesspool() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an engrudging cesspool";
|
||||
Body = 163;
|
||||
BaseSoundID = 263;
|
||||
Hue = 2952;
|
||||
|
||||
SetStr( 226, 255 );
|
||||
SetDex( 126, 135 );
|
||||
SetInt( 71, 95 );
|
||||
|
||||
SetHits( 496, 513 );
|
||||
|
||||
SetDamage( 14, 18 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 20 );
|
||||
SetDamageType( ResistanceType.Fire, 60 );
|
||||
SetDamageType( ResistanceType.Cold, 20 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 65, 75 );
|
||||
SetResistance( ResistanceType.Fire, 80, 85 );
|
||||
SetResistance( ResistanceType.Cold, 60, 70 );
|
||||
SetResistance( ResistanceType.Poison, 25, 35 );
|
||||
SetResistance( ResistanceType.Energy, 25, 35 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 50.1, 65.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 80.1, 100.0 );
|
||||
|
||||
Fame = 8000;
|
||||
Karma = -8000;
|
||||
|
||||
VirtualArmor = 50;
|
||||
|
||||
PackItem( new IronOre( 3 ) );
|
||||
PackItem( new BlackPearl( 3 ) );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public override int TreasureMapLevel{ get{ return Utility.RandomList( 2, 3 ); } }
|
||||
|
||||
public EngrudgingCesspool( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a sinfull regret corpse" )]
|
||||
public class SinfullRegret : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public SinfullRegret() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a sinful regret";
|
||||
Body = 199;
|
||||
BaseSoundID = 0x346;
|
||||
Hue = 1282;
|
||||
|
||||
SetStr( 151, 225 );
|
||||
SetDex( 81, 135 );
|
||||
SetInt( 176, 180 );
|
||||
|
||||
SetHits( 221, 320 );
|
||||
|
||||
SetDamage( 17, 19 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 10 );
|
||||
SetDamageType( ResistanceType.Fire, 30 );
|
||||
SetDamageType( ResistanceType.Cold, 30 );
|
||||
SetDamageType( ResistanceType.Poison, 10 );
|
||||
SetDamageType( ResistanceType.Energy, 60 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 55, 75 );
|
||||
SetResistance( ResistanceType.Fire, 70, 85 );
|
||||
SetResistance( ResistanceType.Cold, 10, 20 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
SetResistance( ResistanceType.Energy, 80, 100 );
|
||||
|
||||
SetSkill( SkillName.Wrestling, 85.1, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 105.1, 125.0 );
|
||||
SetSkill( SkillName.MagicResist, 110.1, 125.0 );
|
||||
SetSkill( SkillName.Anatomy, 105.1, 125.0 );
|
||||
|
||||
Fame = 10000;
|
||||
Karma = -10000;
|
||||
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich, 2 );
|
||||
AddLoot( LootPack.Gems, 2 );
|
||||
}
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public override void OnGaveMeleeAttack( Mobile defender )
|
||||
{
|
||||
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
|
||||
*/
|
||||
|
||||
defender.FixedEffect( 0x37B9, 10, 5 );
|
||||
defender.SendLocalizedMessage( 1070839 ); // The creature attacks with stunning force!
|
||||
|
||||
// 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.Frozen = true;
|
||||
|
||||
ExpireTimer timer = new ExpireTimer( defender, TimeSpan.FromSeconds( 4.0 ) );
|
||||
timer.Start();
|
||||
m_Table[defender] = timer;
|
||||
}
|
||||
}
|
||||
|
||||
private static Hashtable m_Table = new Hashtable();
|
||||
|
||||
public bool IsStunned( Mobile m )
|
||||
{
|
||||
return m_Table.Contains( m );
|
||||
}
|
||||
|
||||
private class ExpireTimer : Timer
|
||||
{
|
||||
private Mobile m_Mobile;
|
||||
|
||||
public ExpireTimer( Mobile m, TimeSpan delay ) : base( delay )
|
||||
{
|
||||
m_Mobile = m;
|
||||
Priority = TimerPriority.TwoFiftyMS;
|
||||
}
|
||||
|
||||
public void DoExpire()
|
||||
{
|
||||
m_Mobile.Frozen = false;
|
||||
Stop();
|
||||
m_Table.Remove( m_Mobile );
|
||||
}
|
||||
|
||||
protected override void OnTick()
|
||||
{
|
||||
m_Mobile.SendLocalizedMessage( 1005603 ); // You can move again!
|
||||
DoExpire();
|
||||
}
|
||||
}
|
||||
|
||||
public SinfullRegret( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
83
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/ArcaneLich.cs
Normal file
83
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/ArcaneLich.cs
Normal file
@@ -0,0 +1,83 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an arcane liche's corpse" )]
|
||||
public class ArcaneLich : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public ArcaneLich() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an arcane lich";
|
||||
Body = 79;
|
||||
BaseSoundID = 412;
|
||||
Hue = 2951;
|
||||
|
||||
SetStr( 416, 505 );
|
||||
SetDex( 146, 155 );
|
||||
SetInt( 682, 745 );
|
||||
|
||||
SetHits( 350, 403 );
|
||||
|
||||
SetDamage( 18, 24 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 10 );
|
||||
SetDamageType( ResistanceType.Cold, 60 );
|
||||
SetDamageType( ResistanceType.Energy, 80 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 40, 50 );
|
||||
SetResistance( ResistanceType.Fire, 80, 100 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 50, 60 );
|
||||
SetResistance( ResistanceType.Energy, 80, 100 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 120.1, 140.0 );
|
||||
SetSkill( SkillName.Magery, 120.1, 140.0 );
|
||||
SetSkill( SkillName.Focus, 120.1, 140.0 );
|
||||
SetSkill( SkillName.MagicResist, 150.5, 200.0 );
|
||||
SetSkill( SkillName.Tactics, 60.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 60.1, 80.0 );
|
||||
|
||||
Fame = 18000;
|
||||
Karma = -18000;
|
||||
|
||||
VirtualArmor = 60;
|
||||
PackItem( new GnarledStaff() );
|
||||
PackNecroReg( 12, 40 );
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
public override int TreasureMapLevel{ get{ return 4; } }
|
||||
|
||||
public ArcaneLich( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
74
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Atropal.cs
Normal file
74
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Atropal.cs
Normal file
@@ -0,0 +1,74 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an atropal corpse" )]
|
||||
public class Atropal : BaseCreature
|
||||
{
|
||||
public override WeaponAbility GetWeaponAbility()
|
||||
{
|
||||
return WeaponAbility.MortalStrike;
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public Atropal() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an atropal";
|
||||
Body = 3;
|
||||
Hue = 35;
|
||||
BaseSoundID = 461;
|
||||
|
||||
SetStr( 126, 150 );
|
||||
SetDex( 86, 120 );
|
||||
SetInt( 106, 120 );
|
||||
|
||||
SetHits( 176, 180 );
|
||||
|
||||
SetDamage( 14, 16 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 20 );
|
||||
SetDamageType( ResistanceType.Cold, 60 );
|
||||
SetDamageType( ResistanceType.Poison, 20 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 70, 80 );
|
||||
SetResistance( ResistanceType.Fire, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 70, 80 );
|
||||
SetResistance( ResistanceType.Poison, 30, 40 );
|
||||
SetResistance( ResistanceType.Energy, 70, 80 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 80.1, 98.0 );
|
||||
SetSkill( SkillName.Tactics, 85.1, 90.0 );
|
||||
SetSkill( SkillName.Wrestling, 80.1, 90.0 );
|
||||
|
||||
Fame = 10500;
|
||||
Karma = -10500;
|
||||
|
||||
VirtualArmor = 80;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public Atropal( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an atropal scion corpse" )]
|
||||
public class AtropalScion : BaseCreature
|
||||
{
|
||||
public override WeaponAbility GetWeaponAbility()
|
||||
{
|
||||
return WeaponAbility.MortalStrike;
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public AtropalScion() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an atropal scion";
|
||||
Hue = 35;
|
||||
BaseSoundID = 959;
|
||||
|
||||
switch ( Utility.Random( 2 ) )
|
||||
{
|
||||
case 0: // ghoul
|
||||
Body = 153;
|
||||
BaseSoundID = 471;
|
||||
break;
|
||||
case 1: // kaze kemono
|
||||
Body = 196;
|
||||
BaseSoundID = 0x39D;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
SetStr( 126, 150 );
|
||||
SetDex( 126, 140 );
|
||||
SetInt( 406, 420 );
|
||||
|
||||
SetHits( 276, 280 );
|
||||
|
||||
SetDamage( 14, 16 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 20 );
|
||||
SetDamageType( ResistanceType.Cold, 60 );
|
||||
SetDamageType( ResistanceType.Poison, 20 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 70, 80 );
|
||||
SetResistance( ResistanceType.Fire, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 180, 200 );
|
||||
SetResistance( ResistanceType.Poison, 30, 40 );
|
||||
SetResistance( ResistanceType.Energy, 180, 200 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 120.1, 148.0 );
|
||||
SetSkill( SkillName.Tactics, 145.1, 160.0 );
|
||||
SetSkill( SkillName.Wrestling, 80.1, 90.0 );
|
||||
|
||||
Fame = 28500;
|
||||
Karma = -28500;
|
||||
|
||||
VirtualArmor = 100;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public AtropalScion( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
82
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Baelnorn.cs
Normal file
82
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Baelnorn.cs
Normal file
@@ -0,0 +1,82 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a baelnorn's corpse" )]
|
||||
public class Baelnorn : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Baelnorn() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a baelnorn";
|
||||
Body = 772;
|
||||
BaseSoundID = 0x3E9;
|
||||
Hue = 1309;
|
||||
|
||||
SetStr( 161, 180 );
|
||||
SetDex( 146, 165 );
|
||||
SetInt( 276, 305 );
|
||||
|
||||
SetHits( 102, 118 );
|
||||
|
||||
SetDamage( 26, 28 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 10 );
|
||||
SetDamageType( ResistanceType.Cold, 40 );
|
||||
SetDamageType( ResistanceType.Energy, 50 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 40, 60 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 55, 65 );
|
||||
SetResistance( ResistanceType.Energy, 40, 50 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 100.0 );
|
||||
SetSkill( SkillName.Magery, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Meditation, 85.1, 95.0 );
|
||||
SetSkill( SkillName.MagicResist, 80.1, 100.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 90.0 );
|
||||
|
||||
Fame = 8000;
|
||||
Karma = -8000;
|
||||
|
||||
VirtualArmor = 50;
|
||||
PackItem( new GnarledStaff() );
|
||||
PackNecroReg( 17, 24 );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
public override int TreasureMapLevel{ get{ return 3; } }
|
||||
|
||||
public Baelnorn( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
81
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Beguiled.cs
Normal file
81
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Beguiled.cs
Normal file
@@ -0,0 +1,81 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.ContextMenus;
|
||||
using Server.Misc;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Beguiled : BaseCreature
|
||||
{
|
||||
public override bool ClickTitle{ get{ return false; } }
|
||||
|
||||
[Constructable]
|
||||
public Beguiled() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
SpeechHue = Utility.RandomDyedHue();
|
||||
Name = "the beguiled";
|
||||
Hue = 2207;
|
||||
Body = 400;
|
||||
BaseSoundID = 471;
|
||||
|
||||
SetStr( 86, 100 );
|
||||
SetDex( 81, 95 );
|
||||
SetInt( 61, 75 );
|
||||
|
||||
SetDamage( 10, 23 );
|
||||
|
||||
SetSkill( SkillName.Fencing, 66.0, 97.5 );
|
||||
SetSkill( SkillName.Macing, 65.0, 87.5 );
|
||||
SetSkill( SkillName.MagicResist, 25.0, 47.5 );
|
||||
SetSkill( SkillName.Swords, 65.0, 87.5 );
|
||||
SetSkill( SkillName.Tactics, 65.0, 87.5 );
|
||||
SetSkill( SkillName.Wrestling, 15.0, 37.5 );
|
||||
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
|
||||
AddItem( new Boots( Utility.RandomNeutralHue() ) );
|
||||
AddItem( new FancyShirt());
|
||||
AddItem( new LongPants());
|
||||
AddItem( new Cap());
|
||||
|
||||
switch ( Utility.Random( 5 ))
|
||||
{
|
||||
case 0: AddItem( new Longsword() ); break;
|
||||
case 1: AddItem( new Axe() ); break;
|
||||
case 2: AddItem( new Broadsword() ); break;
|
||||
case 3: AddItem( new Dagger() ); break;
|
||||
case 4: AddItem( new Bokuto() ); break;
|
||||
}
|
||||
|
||||
Utility.AssignRandomHair( this );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
}
|
||||
|
||||
public override bool AlwaysMurderer{ get{ return true; } }
|
||||
|
||||
public Beguiled( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a soggy corpse" )]
|
||||
public class DrownedDead : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public DrownedDead() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a drowned dead";
|
||||
Body = 3;
|
||||
BaseSoundID = 471;
|
||||
Hue = 2951;
|
||||
|
||||
SetStr( 86, 90 );
|
||||
SetDex( 81, 90 );
|
||||
SetInt( 46, 50 );
|
||||
|
||||
SetHits( 88, 92 );
|
||||
|
||||
SetDamage( 11, 13 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 65, 80 );
|
||||
SetResistance( ResistanceType.Cold, 80, 90 );
|
||||
SetResistance( ResistanceType.Poison, 25, 40 );
|
||||
SetResistance( ResistanceType.Fire, 25, 40 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 65.1, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 75.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 65.1, 70.0 );
|
||||
|
||||
Fame = 2000;
|
||||
Karma = -2000;
|
||||
|
||||
VirtualArmor = 18;
|
||||
|
||||
switch ( Utility.Random( 10 ))
|
||||
{
|
||||
case 0: PackItem( new LeftArm() ); break;
|
||||
case 1: PackItem( new RightArm() ); break;
|
||||
case 2: PackItem( new Torso() ); break;
|
||||
case 3: PackItem( new Bone() ); break;
|
||||
case 4: PackItem( new RibCage() ); break;
|
||||
case 5: PackItem( new RibCage() ); break;
|
||||
case 6: PackItem( new BonePile() ); break;
|
||||
case 7: PackItem( new BonePile() ); break;
|
||||
case 8: PackItem( new BonePile() ); break;
|
||||
case 9: PackItem( new BonePile() ); break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
|
||||
public DrownedDead( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
using System;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a festering eel corpse" )]
|
||||
public class FesteringEel : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public FesteringEel() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a festering eel";
|
||||
Body = 52;
|
||||
Hue = 1745;
|
||||
BaseSoundID = 0xDB;
|
||||
|
||||
SetStr( 22, 34 );
|
||||
SetDex( 16, 25 );
|
||||
SetInt( 6, 10 );
|
||||
|
||||
SetHits( 25, 29 );
|
||||
SetMana( 0 );
|
||||
|
||||
SetDamage( 2, 5 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 15, 20 );
|
||||
SetResistance( ResistanceType.Poison, 50, 60 );
|
||||
|
||||
SetSkill( SkillName.Poisoning, 100.1, 120.0 );
|
||||
SetSkill( SkillName.MagicResist, 15.1, 20.0 );
|
||||
SetSkill( SkillName.Tactics, 19.3, 34.0 );
|
||||
SetSkill( SkillName.Wrestling, 19.3, 34.0 );
|
||||
|
||||
Fame = 300;
|
||||
Karma = -300;
|
||||
|
||||
VirtualArmor = 16;
|
||||
|
||||
Tamable = true;
|
||||
ControlSlots = 1;
|
||||
MinTameSkill = 59.1;
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
public override Poison HitPoison{ get{ return Poison.Lethal; } }
|
||||
|
||||
public override bool DeathAdderCharmable{ get{ return true; } }
|
||||
|
||||
public override int Meat{ get{ return 1; } }
|
||||
public override FoodType FavoriteFood{ get{ return FoodType.Eggs; } }
|
||||
|
||||
public FesteringEel(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int) 0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a festering mutant corpse" )]
|
||||
public class FesteringMutant : BaseCreature
|
||||
{
|
||||
public override WeaponAbility GetWeaponAbility()
|
||||
{
|
||||
return WeaponAbility.BleedAttack;
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public FesteringMutant() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a festering mutant";
|
||||
Body = 304;
|
||||
BaseSoundID = 0x451;
|
||||
Hue = 1505;
|
||||
|
||||
SetStr( 176, 200 );
|
||||
SetDex( 121, 125 );
|
||||
SetInt( 66, 80 );
|
||||
|
||||
SetHits( 136, 140 );
|
||||
|
||||
SetDamage( 20, 24 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 50, 60 );
|
||||
SetResistance( ResistanceType.Fire, 25, 35 );
|
||||
SetResistance( ResistanceType.Cold, 15, 25 );
|
||||
SetResistance( ResistanceType.Poison, 60, 70 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 50.1, 75.0 );
|
||||
SetSkill( SkillName.Tactics, 75.1, 90.0 );
|
||||
SetSkill( SkillName.Wrestling, 70.1, 80.0 );
|
||||
|
||||
Fame = 7000;
|
||||
Karma = -7800;
|
||||
|
||||
VirtualArmor = 34;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override int TreasureMapLevel{ get{ return 1; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
public override Poison HitPoison{ get{ return Poison.Lethal; } }
|
||||
|
||||
public FesteringMutant( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a frankenstein corpse" )]
|
||||
public class Frankenstein : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Frankenstein() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a frankenstein";
|
||||
Body = 1;
|
||||
BaseSoundID = 461;
|
||||
Hue = 2953;
|
||||
|
||||
SetStr( 128, 140 );
|
||||
SetDex( 111, 120 );
|
||||
SetInt( 46, 60 );
|
||||
|
||||
SetHits( 148, 162 );
|
||||
|
||||
SetDamage( 25, 37 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 85, 90 );
|
||||
SetResistance( ResistanceType.Cold, 80, 90 );
|
||||
SetResistance( ResistanceType.Poison, 85, 90 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 85.1, 90.0 );
|
||||
SetSkill( SkillName.Tactics, 75.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 95.1, 100.0 );
|
||||
|
||||
Fame = 8000;
|
||||
Karma = -8000;
|
||||
|
||||
VirtualArmor = 18;
|
||||
|
||||
switch ( Utility.Random( 10 ))
|
||||
{
|
||||
case 0: PackItem( new LeftArm() ); break;
|
||||
case 1: PackItem( new RightArm() ); break;
|
||||
case 2: PackItem( new Torso() ); break;
|
||||
case 3: PackItem( new Bone() ); break;
|
||||
case 4: PackItem( new RibCage() ); break;
|
||||
case 5: PackItem( new RibCage() ); break;
|
||||
case 6: PackItem( new BonePile() ); break;
|
||||
case 7: PackItem( new BonePile() ); break;
|
||||
case 8: PackItem( new BonePile() ); break;
|
||||
case 9: PackItem( new BonePile() ); break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
|
||||
public Frankenstein( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
86
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Ghast.cs
Normal file
86
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Ghast.cs
Normal file
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a rotting corpse" )]
|
||||
public class Ghast : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Ghast() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a ghast";
|
||||
Body = 3;
|
||||
BaseSoundID = 471;
|
||||
Hue = 39;
|
||||
|
||||
SetStr( 86, 100 );
|
||||
SetDex( 42, 60 );
|
||||
SetInt( 26, 40 );
|
||||
|
||||
SetHits( 78, 94 );
|
||||
|
||||
SetDamage( 16, 28 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 85, 100 );
|
||||
SetResistance( ResistanceType.Cold, 60, 80 );
|
||||
SetResistance( ResistanceType.Poison, 12, 22 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
|
||||
SetSkill( SkillName.Tactics, 48.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 68.1, 80.0 );
|
||||
|
||||
Fame = 1400;
|
||||
Karma = -1400;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
switch ( Utility.Random( 10 ))
|
||||
{
|
||||
case 0: PackItem( new LeftArm() ); break;
|
||||
case 1: PackItem( new RightArm() ); break;
|
||||
case 2: PackItem( new Torso() ); break;
|
||||
case 3: PackItem( new Bone() ); break;
|
||||
case 4: PackItem( new RibCage() ); break;
|
||||
case 5: PackItem( new RibCage() ); break;
|
||||
case 6: PackItem( new BonePile() ); break;
|
||||
case 7: PackItem( new BonePile() ); break;
|
||||
case 8: PackItem( new BonePile() ); break;
|
||||
case 9: PackItem( new BonePile() ); break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
|
||||
public Ghast( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
85
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Guilded.cs
Normal file
85
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Guilded.cs
Normal file
@@ -0,0 +1,85 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.ContextMenus;
|
||||
using Server.Misc;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Guilded : BaseCreature
|
||||
{
|
||||
public override bool ClickTitle{ get{ return false; } }
|
||||
|
||||
[Constructable]
|
||||
public Guilded() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
SpeechHue = Utility.RandomDyedHue();
|
||||
Name = "the guilded";
|
||||
Hue = 1743;
|
||||
Body = 0x191;
|
||||
BaseSoundID = 471;
|
||||
|
||||
SetStr( 86, 100 );
|
||||
SetDex( 81, 95 );
|
||||
SetInt( 61, 75 );
|
||||
|
||||
SetDamage( 10, 23 );
|
||||
|
||||
SetSkill( SkillName.Fencing, 66.0, 97.5 );
|
||||
SetSkill( SkillName.Macing, 65.0, 87.5 );
|
||||
SetSkill( SkillName.MagicResist, 25.0, 47.5 );
|
||||
SetSkill( SkillName.Swords, 65.0, 87.5 );
|
||||
SetSkill( SkillName.Tactics, 65.0, 87.5 );
|
||||
SetSkill( SkillName.Wrestling, 15.0, 37.5 );
|
||||
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
|
||||
AddItem( new Boots( Utility.RandomNeutralHue() ) );
|
||||
AddItem( new FancyShirt());
|
||||
AddItem( new Skirt());
|
||||
|
||||
switch ( Utility.Random( 7 ))
|
||||
{
|
||||
case 0: AddItem( new Longsword() );
|
||||
AddItem( new Buckler() ); break;
|
||||
case 1: AddItem( new Cutlass() );
|
||||
AddItem( new ChaosShield() ); break;
|
||||
case 2: AddItem( new Broadsword() );
|
||||
AddItem( new WoodenShield() ); break;
|
||||
case 3: AddItem( new Axe() ); break;
|
||||
case 4: AddItem( new Club() ); break;
|
||||
case 5: AddItem( new Dagger() ); break;
|
||||
case 6: AddItem( new Spear() ); break;
|
||||
}
|
||||
|
||||
Utility.AssignRandomHair( this );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
}
|
||||
|
||||
public override bool AlwaysMurderer{ get{ return true; } }
|
||||
|
||||
public Guilded( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a guilded corpse" )]
|
||||
public class GuildedDead : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public GuildedDead() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a guilded dead";
|
||||
Body = 3;
|
||||
BaseSoundID = 412;
|
||||
Hue = 1743;
|
||||
|
||||
SetStr( 96, 100 );
|
||||
SetDex( 91, 100 );
|
||||
SetInt( 86, 90 );
|
||||
|
||||
SetHits( 98, 102 );
|
||||
|
||||
SetDamage( 15, 17 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 65, 80 );
|
||||
SetResistance( ResistanceType.Cold, 60, 80 );
|
||||
SetResistance( ResistanceType.Poison, 25, 40 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 65.1, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 75.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 65.1, 70.0 );
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
VirtualArmor = 18;
|
||||
|
||||
switch ( Utility.Random( 10 ))
|
||||
{
|
||||
case 0: PackItem( new LeftArm() ); break;
|
||||
case 1: PackItem( new RightArm() ); break;
|
||||
case 2: PackItem( new Torso() ); break;
|
||||
case 3: PackItem( new Bone() ); break;
|
||||
case 4: PackItem( new RibCage() ); break;
|
||||
case 5: PackItem( new RibCage() ); break;
|
||||
case 6: PackItem( new BonePile() ); break;
|
||||
case 7: PackItem( new BonePile() ); break;
|
||||
case 8: PackItem( new BonePile() ); break;
|
||||
case 9: PackItem( new BonePile() ); break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
|
||||
public GuildedDead( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
126
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/IllSoul.cs
Normal file
126
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/IllSoul.cs
Normal file
@@ -0,0 +1,126 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an ill soul corpse" )]
|
||||
public class IllSoul : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public IllSoul() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 ) // TODO apellweaving AI
|
||||
{
|
||||
Name = "an ill soul";
|
||||
Body = 400;
|
||||
Hue = 685;
|
||||
BaseSoundID = 0x482;
|
||||
|
||||
AddItem( new Hatchet() );
|
||||
AddItem( new ThighBoots() );
|
||||
AddItem( new Doublet() );
|
||||
AddItem( new ChainLegs() );
|
||||
AddItem( new NorseHelm() );
|
||||
AddItem( new LeatherArms() );
|
||||
|
||||
SetStr( 126, 150 );
|
||||
SetDex( 96, 120 );
|
||||
SetInt( 151, 175 );
|
||||
|
||||
SetHits( 76, 90 );
|
||||
|
||||
SetDamage( 6, 12 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 30, 40 );
|
||||
SetResistance( ResistanceType.Fire, 25, 35 );
|
||||
SetResistance( ResistanceType.Cold, 35, 45 );
|
||||
SetResistance( ResistanceType.Poison, 5, 15 );
|
||||
SetResistance( ResistanceType.Energy, 15, 25 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 95.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 95.1, 100.0 );
|
||||
SetSkill( SkillName.Meditation, 95.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 102.5, 125.0 );
|
||||
SetSkill( SkillName.Tactics, 85.0, 100.5 );
|
||||
SetSkill( SkillName.Fencing, 85.0, 100.0 );
|
||||
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
VirtualArmor = 16;
|
||||
|
||||
if ( 0.7 > Utility.RandomDouble() )
|
||||
PackItem( new ArcaneGem() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public void AddArcane( Item item )
|
||||
{
|
||||
if ( item is IArcaneEquip )
|
||||
{
|
||||
IArcaneEquip eq = (IArcaneEquip)item;
|
||||
eq.CurArcaneCharges = eq.MaxArcaneCharges = 20;
|
||||
}
|
||||
|
||||
item.Hue = ArcaneGem.DefaultArcaneHue;
|
||||
item.LootType = LootType.Newbied;
|
||||
|
||||
AddItem( item );
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune { get { return Poison.Regular; } }
|
||||
public override Poison HitPoison { get { return Poison.Regular; } }
|
||||
public override bool ClickTitle{ get{ return false; } }
|
||||
public override bool ShowFameTitle{ get{ return false; } }
|
||||
public override bool AlwaysMurderer{ get{ return true; } }
|
||||
|
||||
public IllSoul( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
BoneKnight rm = new BoneKnight();
|
||||
rm.Team = this.Team;
|
||||
rm.Combatant = this.Combatant;
|
||||
rm.NoKillAwards = true;
|
||||
|
||||
if ( rm.Backpack == null )
|
||||
{
|
||||
Backpack pack = new Backpack();
|
||||
pack.Movable = false;
|
||||
rm.AddItem( pack );
|
||||
}
|
||||
|
||||
for ( int i = 0; i < 2; i++ )
|
||||
{
|
||||
LootPack.FilthyRich.Generate( this, rm.Backpack, true, LootPack.GetLuckChanceForKiller( this ) );
|
||||
LootPack.FilthyRich.Generate( this, rm.Backpack, false, LootPack.GetLuckChanceForKiller( this ) );
|
||||
}
|
||||
|
||||
Effects.PlaySound(this, Map, GetDeathSound());
|
||||
Effects.SendLocationEffect( Location, Map, 0x3709, 30, 10, 0x835, 0 );
|
||||
rm.MoveToWorld( Location, Map );
|
||||
|
||||
Delete();
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a rotting corpse" )]
|
||||
public class LeftForDead : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public LeftForDead() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "left for dead";
|
||||
Body = 3;
|
||||
BaseSoundID = 471;
|
||||
Hue = 1862;
|
||||
|
||||
SetStr( 48, 78 );
|
||||
SetDex( 38, 58 );
|
||||
SetInt( 28, 48 );
|
||||
|
||||
SetHits( 36, 58 );
|
||||
|
||||
SetDamage( 5, 10 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 30, 40 );
|
||||
SetResistance( ResistanceType.Poison, 16, 20 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
|
||||
SetSkill( SkillName.Tactics, 35.1, 50.0 );
|
||||
SetSkill( SkillName.Wrestling, 35.1, 50.0 );
|
||||
|
||||
Fame = 800;
|
||||
Karma = -800;
|
||||
|
||||
VirtualArmor = 18;
|
||||
|
||||
switch ( Utility.Random( 10 ))
|
||||
{
|
||||
case 0: PackItem( new LeftArm() ); break;
|
||||
case 1: PackItem( new RightArm() ); break;
|
||||
case 2: PackItem( new Torso() ); break;
|
||||
case 3: PackItem( new Bone() ); break;
|
||||
case 4: PackItem( new RibCage() ); break;
|
||||
case 5: PackItem( new RibCage() ); break;
|
||||
case 6: PackItem( new BonePile() ); break;
|
||||
case 7: PackItem( new BonePile() ); break;
|
||||
case 8: PackItem( new BonePile() ); break;
|
||||
case 9: PackItem( new BonePile() ); break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
|
||||
public LeftForDead( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
82
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Necrobus.cs
Normal file
82
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Necrobus.cs
Normal file
@@ -0,0 +1,82 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a necrobus's corpse" )]
|
||||
public class Necrobus : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Necrobus() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a necrobus";
|
||||
Body = 0x102;
|
||||
BaseSoundID = 451;
|
||||
Hue = 1743;
|
||||
|
||||
SetStr( 171, 200 );
|
||||
SetDex( 126, 145 );
|
||||
SetInt( 276, 305 );
|
||||
|
||||
SetHits( 120, 140 );
|
||||
|
||||
SetDamage( 24, 28 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 10 );
|
||||
SetDamageType( ResistanceType.Cold, 100 );
|
||||
SetDamageType( ResistanceType.Energy, 50 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 40, 60 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 80, 100 );
|
||||
SetResistance( ResistanceType.Poison, 85, 105 );
|
||||
SetResistance( ResistanceType.Energy, 40, 50 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 100.0 );
|
||||
SetSkill( SkillName.Magery, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Meditation, 85.1, 95.0 );
|
||||
SetSkill( SkillName.MagicResist, 80.1, 100.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 90.0 );
|
||||
|
||||
Fame = 8000;
|
||||
Karma = -8000;
|
||||
|
||||
VirtualArmor = 50;
|
||||
PackItem( new GnarledStaff() );
|
||||
PackNecroReg( 17, 24 );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
public override int TreasureMapLevel{ get{ return 3; } }
|
||||
|
||||
public Necrobus( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an undead organ's corpse" )]
|
||||
public class OrganOfUndeath : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public OrganOfUndeath() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an organ of undeath";
|
||||
Body = 778;
|
||||
Hue = 2968;
|
||||
BaseSoundID = 0x26B;
|
||||
|
||||
SetStr( 76, 100 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 36, 60 );
|
||||
|
||||
SetHits( 20, 24 );
|
||||
|
||||
SetDamage( 6, 8 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Cold, 50 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 15, 25 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 35.1, 40.0 );
|
||||
SetSkill( SkillName.Magery, 45.1, 50.0 );
|
||||
SetSkill( SkillName.MagicResist, 45.1, 50.0 );
|
||||
SetSkill( SkillName.Tactics, 25.1, 30.0 );
|
||||
SetSkill( SkillName.Wrestling, 25.1, 45.0 );
|
||||
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
PackReg( 10 );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
|
||||
public OrganOfUndeath( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a plagued corpse" )]
|
||||
public class PlagueBearer : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public PlagueBearer() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a plague bearer ";
|
||||
Body = 3;
|
||||
BaseSoundID = 471;
|
||||
Hue = 2967;
|
||||
|
||||
SetStr( 96, 100 );
|
||||
SetDex( 91, 100 );
|
||||
SetInt( 66, 70 );
|
||||
|
||||
SetHits( 100, 104 );
|
||||
|
||||
SetDamage( 14, 16 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetDamageType( ResistanceType.Poison, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 65, 80 );
|
||||
SetResistance( ResistanceType.Cold, 60, 80 );
|
||||
SetResistance( ResistanceType.Poison, 95, 100 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 65.1, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 75.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 65.1, 70.0 );
|
||||
|
||||
Fame = 6000;
|
||||
Karma = -6000;
|
||||
|
||||
VirtualArmor = 18;
|
||||
|
||||
switch ( Utility.Random( 10 ))
|
||||
{
|
||||
case 0: PackItem( new LeftArm() ); break;
|
||||
case 1: PackItem( new RightArm() ); break;
|
||||
case 2: PackItem( new Torso() ); break;
|
||||
case 3: PackItem( new Bone() ); break;
|
||||
case 4: PackItem( new RibCage() ); break;
|
||||
case 5: PackItem( new RibCage() ); break;
|
||||
case 6: PackItem( new BonePile() ); break;
|
||||
case 7: PackItem( new BonePile() ); break;
|
||||
case 8: PackItem( new BonePile() ); break;
|
||||
case 9: PackItem( new BonePile() ); break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
|
||||
public PlagueBearer( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
96
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Ravaged.cs
Normal file
96
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Ravaged.cs
Normal file
@@ -0,0 +1,96 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a ravaged corpse" )]
|
||||
public class Ravaged : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Ravaged() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "the ravaged";
|
||||
Hue = 2115;
|
||||
BaseSoundID = 0x482;
|
||||
|
||||
switch ( Utility.Random( 2 ) )
|
||||
{
|
||||
case 0: // zombie
|
||||
Body = 3;
|
||||
break;
|
||||
case 1: // ghoul
|
||||
Body = 153;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
SetStr( 46, 60 );
|
||||
SetDex( 42, 60 );
|
||||
SetInt( 26, 40 );
|
||||
|
||||
SetHits( 64, 74 );
|
||||
|
||||
SetDamage( 8, 10 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 65, 70 );
|
||||
SetResistance( ResistanceType.Cold, 60, 80 );
|
||||
SetResistance( ResistanceType.Poison, 12, 22 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
|
||||
SetSkill( SkillName.Tactics, 48.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 68.1, 80.0 );
|
||||
|
||||
Fame = 1400;
|
||||
Karma = -1400;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
switch ( Utility.Random( 10 ))
|
||||
{
|
||||
case 0: PackItem( new LeftArm() ); break;
|
||||
case 1: PackItem( new RightArm() ); break;
|
||||
case 2: PackItem( new Torso() ); break;
|
||||
case 3: PackItem( new Bone() ); break;
|
||||
case 4: PackItem( new RibCage() ); break;
|
||||
case 5: PackItem( new RibCage() ); break;
|
||||
case 6: PackItem( new BonePile() ); break;
|
||||
case 7: PackItem( new BonePile() ); break;
|
||||
case 8: PackItem( new BonePile() ); break;
|
||||
case 9: PackItem( new BonePile() ); break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
|
||||
public Ravaged( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
67
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Redead.cs
Normal file
67
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Redead.cs
Normal file
@@ -0,0 +1,67 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a redead corpse" )]
|
||||
public class Redead : BaseCreature
|
||||
{
|
||||
public override WeaponAbility GetWeaponAbility()
|
||||
{
|
||||
return WeaponAbility.ParalyzingBlow;
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public Redead() : base( AIType.AI_Melee,FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a redead";
|
||||
Body = 3;
|
||||
BaseSoundID = 0x3E9;
|
||||
Hue = 2313;
|
||||
|
||||
SetStr( 80, 100 );
|
||||
SetDex( 101, 105 );
|
||||
SetInt( 66, 85 );
|
||||
|
||||
SetHits( 105, 108 );
|
||||
|
||||
SetDamage( 12, 17 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 65, 75 );
|
||||
SetResistance( ResistanceType.Fire, 65, 75 );
|
||||
SetResistance( ResistanceType.Cold, 65, 75 );
|
||||
SetResistance( ResistanceType.Poison, 40, 50 );
|
||||
SetResistance( ResistanceType.Energy, 50, 60 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 65.1, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 87.6, 92.5 );
|
||||
SetSkill( SkillName.Wrestling, 80.1, 90.0 );
|
||||
|
||||
Fame = 8500;
|
||||
Karma = -8500;
|
||||
|
||||
VirtualArmor = 27;
|
||||
}
|
||||
|
||||
public override int TreasureMapLevel{ get{ return 1; } }
|
||||
|
||||
public Redead( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
114
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/ReturnedFotter.cs
Normal file
114
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/ReturnedFotter.cs
Normal file
@@ -0,0 +1,114 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a mangled corpse" )]
|
||||
public class ReturnedFotter : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public ReturnedFotter() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a returned fotter";
|
||||
Hue = 1441;
|
||||
|
||||
switch ( Utility.Random( 5 ) )
|
||||
{
|
||||
case 0: // zombie
|
||||
Body = 3;
|
||||
BaseSoundID = 471;
|
||||
break;
|
||||
case 1: // headless one
|
||||
Body = 31;
|
||||
BaseSoundID = 0x39D;
|
||||
break;
|
||||
case 2: // skeleton
|
||||
Body = Utility.RandomList( 50, 56 );
|
||||
BaseSoundID = 0x48D;
|
||||
break;
|
||||
case 3: // ghoul
|
||||
Body = 153;
|
||||
BaseSoundID = 0x482;
|
||||
break;
|
||||
case 4: // patchwork skeleton
|
||||
Body = 309;
|
||||
BaseSoundID = 0x48D;
|
||||
break;
|
||||
default:
|
||||
case 5: // slime
|
||||
Body = 51;
|
||||
BaseSoundID = 456;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
SetStr( 76, 80 );
|
||||
SetDex( 42, 60 );
|
||||
SetInt( 26, 40 );
|
||||
|
||||
SetHits( 68, 74 );
|
||||
|
||||
SetDamage( 8, 12 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 65, 70 );
|
||||
SetResistance( ResistanceType.Cold, 60, 80 );
|
||||
SetResistance( ResistanceType.Poison, 12, 22 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
|
||||
SetSkill( SkillName.Tactics, 48.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 68.1, 80.0 );
|
||||
|
||||
Fame = 1400;
|
||||
Karma = -1400;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
switch ( Utility.Random( 10 ))
|
||||
{
|
||||
case 0: PackItem( new LeftArm() ); break;
|
||||
case 1: PackItem( new RightArm() ); break;
|
||||
case 2: PackItem( new Torso() ); break;
|
||||
case 3: PackItem( new Bone() ); break;
|
||||
case 4: PackItem( new RibCage() ); break;
|
||||
case 5: PackItem( new RibCage() ); break;
|
||||
case 6: PackItem( new BonePile() ); break;
|
||||
case 7: PackItem( new BonePile() ); break;
|
||||
case 8: PackItem( new BonePile() ); break;
|
||||
case 9: PackItem( new BonePile() ); break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
|
||||
public ReturnedFotter( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
using System;
|
||||
using Server.Items;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a rotting cat corpse" )]
|
||||
[TypeAlias( "Server.Mobiles.RevenantCat" )]
|
||||
public class RevenantCat : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public RevenantCat() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a revenant cat";
|
||||
Body = 0xC9;
|
||||
Hue = 1743;
|
||||
BaseSoundID = 0x69;
|
||||
|
||||
SetStr( 51, 100 );
|
||||
SetDex( 52, 150 );
|
||||
SetInt( 13, 85 );
|
||||
|
||||
SetHits( 48, 67 );
|
||||
|
||||
SetDamage( 6, 12 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 40 );
|
||||
SetDamageType( ResistanceType.Fire, 60 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 35 );
|
||||
SetResistance( ResistanceType.Fire, 80, 90 );
|
||||
SetResistance( ResistanceType.Energy, 15, 20 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Tactics, 40.1, 55.0 );
|
||||
SetSkill( SkillName.Wrestling, 30.1, 40.0 );
|
||||
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
|
||||
VirtualArmor = 30;
|
||||
|
||||
Tamable = true;
|
||||
ControlSlots = 1;
|
||||
MinTameSkill = 71.1;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
public override Poison HitPoison{ get{ return Poison.Lethal; } }
|
||||
public override int Hides{ get{ return 10; } }
|
||||
public override HideType HideType{ get{ return HideType.Spined; } }
|
||||
public override FoodType FavoriteFood{ get{ return FoodType.Meat; } }
|
||||
public override PackInstinct PackInstinct{ get{ return PackInstinct.Feline; } }
|
||||
|
||||
public RevenantCat(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int) 0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
using System;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a rotting wolf corpse" )]
|
||||
[TypeAlias( "Server.Mobiles.RevenantWolf" )]
|
||||
public class RevenantWolf : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public RevenantWolf() : base( AIType.AI_Melee,FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a revenant wolf";
|
||||
Body = 23;
|
||||
BaseSoundID = 0xE5;
|
||||
Hue = 1743;
|
||||
|
||||
SetStr( 96, 120 );
|
||||
SetDex( 121, 145 );
|
||||
SetInt( 36, 60 );
|
||||
|
||||
SetHits( 58, 72 );
|
||||
SetMana( 0 );
|
||||
|
||||
SetDamage( 14, 18 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 20, 25 );
|
||||
SetResistance( ResistanceType.Fire, 10, 20 );
|
||||
SetResistance( ResistanceType.Cold, 5, 10 );
|
||||
SetResistance( ResistanceType.Poison, 5, 10 );
|
||||
SetResistance( ResistanceType.Energy, 10, 15 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 57.6, 75.0 );
|
||||
SetSkill( SkillName.Tactics, 50.1, 70.0 );
|
||||
SetSkill( SkillName.Wrestling, 60.1, 80.0 );
|
||||
|
||||
Fame = 8500;
|
||||
Karma = -8500;
|
||||
|
||||
VirtualArmor = 22;
|
||||
|
||||
Tamable = true;
|
||||
ControlSlots = 1;
|
||||
MinTameSkill = 83.1;
|
||||
}
|
||||
|
||||
public override int Meat{ get{ return 1; } }
|
||||
public override int Hides{ get{ return 7; } }
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override HideType HideType{ get{ return HideType.Spined; } }
|
||||
public override FoodType FavoriteFood{ get{ return FoodType.Meat; } }
|
||||
public override PackInstinct PackInstinct{ get{ return PackInstinct.Canine; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
public override Poison HitPoison{ get{ return Poison.Lethal; } }
|
||||
|
||||
public RevenantWolf(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int) 0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a shambling horror corpse" )]
|
||||
public class ShamblingHorror : BaseCreature
|
||||
{
|
||||
public override WeaponAbility GetWeaponAbility()
|
||||
{
|
||||
return WeaponAbility.DoubleStrike;
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public ShamblingHorror() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a shambling horror";
|
||||
Body = 309;
|
||||
BaseSoundID = 0x3E9;
|
||||
Hue = 34;
|
||||
|
||||
SetStr( 96, 120 );
|
||||
SetDex( 71, 95 );
|
||||
SetInt( 16, 40 );
|
||||
|
||||
SetHits( 58, 74 );
|
||||
|
||||
SetDamage( 18, 24 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 85 );
|
||||
SetDamageType( ResistanceType.Cold, 15 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 55, 65 );
|
||||
SetResistance( ResistanceType.Fire, 50, 60 );
|
||||
SetResistance( ResistanceType.Cold, 70, 80 );
|
||||
SetResistance( ResistanceType.Poison, 100 );
|
||||
SetResistance( ResistanceType.Energy, 40, 50 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 70.1, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 55.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 50.1, 70.0 );
|
||||
|
||||
Fame = 500;
|
||||
Karma = -500;
|
||||
|
||||
VirtualArmor = 54;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
|
||||
public override int TreasureMapLevel{ get{ return 1; } }
|
||||
|
||||
public ShamblingHorror( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a slaughtered corpse" )]
|
||||
public class Slaughtered : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Slaughtered() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "the slaughtered";
|
||||
Hue = 1143;
|
||||
BaseSoundID = 0x482;
|
||||
|
||||
switch ( Utility.Random( 2 ) )
|
||||
{
|
||||
case 0: // zombie
|
||||
Body = 3;
|
||||
break;
|
||||
case 1: // ghoul
|
||||
Body = 153;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
SetStr( 46, 60 );
|
||||
SetDex( 42, 60 );
|
||||
SetInt( 26, 40 );
|
||||
|
||||
SetHits( 82, 84 );
|
||||
|
||||
SetDamage( 12, 14 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 65, 70 );
|
||||
SetResistance( ResistanceType.Cold, 60, 80 );
|
||||
SetResistance( ResistanceType.Poison, 12, 22 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 18.1, 40.0 );
|
||||
SetSkill( SkillName.Tactics, 58.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 68.1, 80.0 );
|
||||
|
||||
Fame = 1600;
|
||||
Karma = -1600;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
switch ( Utility.Random( 10 ))
|
||||
{
|
||||
case 0: PackItem( new LeftArm() ); break;
|
||||
case 1: PackItem( new RightArm() ); break;
|
||||
case 2: PackItem( new Torso() ); break;
|
||||
case 3: PackItem( new Bone() ); break;
|
||||
case 4: PackItem( new RibCage() ); break;
|
||||
case 5: PackItem( new RibCage() ); break;
|
||||
case 6: PackItem( new BonePile() ); break;
|
||||
case 7: PackItem( new BonePile() ); break;
|
||||
case 8: PackItem( new BonePile() ); break;
|
||||
case 9: PackItem( new BonePile() ); break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
|
||||
public Slaughtered( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an undead tumor's corpse" )]
|
||||
public class TumorOfUndeath : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public TumorOfUndeath() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a tumor of undeath";
|
||||
Body = 22;
|
||||
Hue = 2968;
|
||||
BaseSoundID = 442;
|
||||
|
||||
SetStr( 76, 100 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 86, 100 );
|
||||
|
||||
SetHits( 240, 284 );
|
||||
|
||||
SetDamage( 22, 28 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Cold, 50 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 40 );
|
||||
SetResistance( ResistanceType.Cold, 55, 85 );
|
||||
SetResistance( ResistanceType.Poison, 60, 80 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 65.1, 80.0 );
|
||||
SetSkill( SkillName.Magery, 85.1, 120.0 );
|
||||
SetSkill( SkillName.MagicResist, 105.1, 120.0 );
|
||||
SetSkill( SkillName.Tactics, 85.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 65.1, 85.0 );
|
||||
|
||||
Fame = 10000;
|
||||
Karma = -10000;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
PackReg( 10 );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
|
||||
public TumorOfUndeath( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a rotting corpse" )]
|
||||
public class WalkingCorpse : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public WalkingCorpse() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a walking corpse";
|
||||
Body = 3;
|
||||
BaseSoundID = 471;
|
||||
Hue = Utility.RandomSkinHue();
|
||||
|
||||
SetStr( 36, 50 );
|
||||
SetDex( 31, 50 );
|
||||
SetInt( 26, 40 );
|
||||
|
||||
SetHits( 20, 30 );
|
||||
|
||||
SetDamage( 3, 5 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 15, 20 );
|
||||
SetResistance( ResistanceType.Cold, 20, 30 );
|
||||
SetResistance( ResistanceType.Poison, 5, 10 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
|
||||
SetSkill( SkillName.Tactics, 35.1, 50.0 );
|
||||
SetSkill( SkillName.Wrestling, 35.1, 50.0 );
|
||||
|
||||
Fame = 600;
|
||||
Karma = -600;
|
||||
|
||||
VirtualArmor = 18;
|
||||
|
||||
switch ( Utility.Random( 10 ))
|
||||
{
|
||||
case 0: PackItem( new LeftArm() ); break;
|
||||
case 1: PackItem( new RightArm() ); break;
|
||||
case 2: PackItem( new Torso() ); break;
|
||||
case 3: PackItem( new Bone() ); break;
|
||||
case 4: PackItem( new RibCage() ); break;
|
||||
case 5: PackItem( new RibCage() ); break;
|
||||
case 6: PackItem( new BonePile() ); break;
|
||||
case 7: PackItem( new BonePile() ); break;
|
||||
case 8: PackItem( new BonePile() ); break;
|
||||
case 9: PackItem( new BonePile() ); break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
|
||||
public WalkingCorpse( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
86
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Wronged.cs
Normal file
86
Scripts/SubSystem/CustomMonsters/Undead/Fleshy/Wronged.cs
Normal file
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a rotting corpse" )]
|
||||
public class Wronged : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Wronged() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "the wronged";
|
||||
Body = 3;
|
||||
BaseSoundID = 471;
|
||||
Hue = 686;
|
||||
|
||||
SetStr( 48, 60 );
|
||||
SetDex( 38, 50 );
|
||||
SetInt( 28, 30 );
|
||||
|
||||
SetHits( 36, 58 );
|
||||
|
||||
SetDamage( 5, 10 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 30, 40 );
|
||||
SetResistance( ResistanceType.Poison, 16, 20 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
|
||||
SetSkill( SkillName.Tactics, 35.1, 50.0 );
|
||||
SetSkill( SkillName.Wrestling, 35.1, 50.0 );
|
||||
|
||||
Fame = 800;
|
||||
Karma = -800;
|
||||
|
||||
VirtualArmor = 18;
|
||||
|
||||
switch ( Utility.Random( 10 ))
|
||||
{
|
||||
case 0: PackItem( new LeftArm() ); break;
|
||||
case 1: PackItem( new RightArm() ); break;
|
||||
case 2: PackItem( new Torso() ); break;
|
||||
case 3: PackItem( new Bone() ); break;
|
||||
case 4: PackItem( new RibCage() ); break;
|
||||
case 5: PackItem( new RibCage() ); break;
|
||||
case 6: PackItem( new BonePile() ); break;
|
||||
case 7: PackItem( new BonePile() ); break;
|
||||
case 8: PackItem( new BonePile() ); break;
|
||||
case 9: PackItem( new BonePile() ); break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
|
||||
public Wronged( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a ghostly corpse" )]
|
||||
public class Apparition : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Apparition() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a apparition";
|
||||
Body = 26;
|
||||
Hue = 355;
|
||||
BaseSoundID = 0x482;
|
||||
|
||||
SetStr( 76, 100 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 136, 160 );
|
||||
|
||||
SetHits( 146, 160 );
|
||||
|
||||
SetDamage( 18, 26 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 40 );
|
||||
SetDamageType( ResistanceType.Cold, 60 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 45, 55 );
|
||||
SetResistance( ResistanceType.Energy, 20, 30 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 75.1, 80.0 );
|
||||
SetSkill( SkillName.Magery, 65.1, 80.0 );
|
||||
SetSkill( SkillName.MagicResist, 75.1, 80.0 );
|
||||
SetSkill( SkillName.Tactics, 75.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 75.1, 85.0 );
|
||||
|
||||
Fame = 8000;
|
||||
Karma = -8000;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
PackReg( 10 );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
|
||||
public Apparition( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a ghostly corpse" )]
|
||||
public class DreadFrequency : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public DreadFrequency() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a dread frequency";
|
||||
Body = 26;
|
||||
Hue = 1676;
|
||||
BaseSoundID = 219;
|
||||
|
||||
SetStr( 76, 100 );
|
||||
SetDex( 140, 148 );
|
||||
SetInt( 86, 100 );
|
||||
|
||||
SetHits( 146, 180 );
|
||||
|
||||
SetDamage( 12, 24 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Energy, 200 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 15, 25 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Magery, 55.1, 70.0 );
|
||||
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
PackReg( 10 );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
|
||||
public DreadFrequency( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a decaying essence corpse" )]
|
||||
public class EssenceOfUndeath : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public EssenceOfUndeath() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an essence of undeath";
|
||||
Body = 58;
|
||||
Hue = 1578;
|
||||
BaseSoundID = 466;
|
||||
|
||||
SetStr( 76, 100 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 36, 60 );
|
||||
|
||||
SetHits( 46, 60 );
|
||||
|
||||
SetDamage( 7, 11 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Energy, 120 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 15, 25 );
|
||||
SetResistance( ResistanceType.Energy, 80, 100 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Magery, 55.1, 70.0 );
|
||||
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
PackReg( 10 );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
|
||||
public EssenceOfUndeath( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an essence of faded memory" )]
|
||||
public class FadedMemory : BaseCreature
|
||||
{
|
||||
public override double DispelDifficulty{ get{ return 117.5; } }
|
||||
public override double DispelFocus{ get{ return 45.0; } }
|
||||
|
||||
[Constructable]
|
||||
public FadedMemory () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a faded memory";
|
||||
Body = 13;
|
||||
Hue = 2955;
|
||||
BaseSoundID = 0x482;
|
||||
|
||||
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 );
|
||||
|
||||
Fame = 4500;
|
||||
Karma = -4500;
|
||||
|
||||
VirtualArmor = 40;
|
||||
ControlSlots = 2;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.LowScrolls );
|
||||
AddLoot( LootPack.MedScrolls );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override int TreasureMapLevel{ get{ return 2; } }
|
||||
|
||||
public FadedMemory( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( BaseSoundID == 263 )
|
||||
BaseSoundID = 655;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a grave dust elementals corpse" )]
|
||||
public class GraveDustElemental : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public GraveDustElemental () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a grave dust elemental";
|
||||
Body = 196;
|
||||
BaseSoundID = 263;
|
||||
Hue = 2067;
|
||||
|
||||
SetStr( 426, 515 );
|
||||
SetDex( 266, 285 );
|
||||
SetInt( 661, 835 );
|
||||
|
||||
SetHits( 608, 620 );
|
||||
|
||||
SetDamage( 24, 28 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 10 );
|
||||
SetDamageType( ResistanceType.Fire, 90 );
|
||||
SetDamageType( ResistanceType.Cold, 90 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 60, 70 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 20, 30 );
|
||||
SetResistance( ResistanceType.Poison, 100 );
|
||||
SetResistance( ResistanceType.Energy, 40, 50 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 80.1, 95.0 );
|
||||
SetSkill( SkillName.Magery, 80.1, 95.0 );
|
||||
SetSkill( SkillName.Meditation, 80.2, 120.0 );
|
||||
SetSkill( SkillName.Poisoning, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 85.2, 115.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 70.1, 90.0 );
|
||||
|
||||
Fame = 12500;
|
||||
Karma = -12500;
|
||||
|
||||
VirtualArmor = 70;
|
||||
|
||||
PackItem( new GraveDust( 200 ) );
|
||||
PackItem( new LesserPoisonPotion() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.MedScrolls );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
|
||||
public override Poison HitPoison{ get{ return Poison.Lethal; } }
|
||||
public override double HitPoisonChance{ get{ return 0.75; } }
|
||||
|
||||
public override int TreasureMapLevel{ get{ return 5; } }
|
||||
|
||||
public GraveDustElemental( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a visual essence" )]
|
||||
public class HauntedVision : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public HauntedVision() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a haunted vision";
|
||||
Body = 199;
|
||||
Hue = 1266;
|
||||
BaseSoundID = 0x482;
|
||||
|
||||
SetStr( 76, 100 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 36, 60 );
|
||||
|
||||
SetHits( 40, 50 );
|
||||
|
||||
SetDamage( 6, 10 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 25 );
|
||||
SetDamageType( ResistanceType.Cold, 50 );
|
||||
SetDamageType( ResistanceType.Energy, 25 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 15, 25 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Magery, 55.1, 70.0 );
|
||||
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
PackReg( 10 );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
|
||||
public HauntedVision( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
77
Scripts/SubSystem/CustomMonsters/Undead/Ghostly/Phantom.cs
Normal file
77
Scripts/SubSystem/CustomMonsters/Undead/Ghostly/Phantom.cs
Normal file
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a phantom corpse" )]
|
||||
public class Phantom : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Phantom() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a phantom";
|
||||
Body = 26;
|
||||
Hue = 2949;
|
||||
BaseSoundID = 0x482;
|
||||
|
||||
SetStr( 86, 100 );
|
||||
SetDex( 86, 95 );
|
||||
SetInt( 180, 200 );
|
||||
|
||||
SetHits( 106, 128 );
|
||||
|
||||
SetDamage( 20, 28 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 80 );
|
||||
SetDamageType( ResistanceType.Energy, 80 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 85, 100 );
|
||||
SetResistance( ResistanceType.Cold, 45, 85 );
|
||||
SetResistance( ResistanceType.Energy, 80, 100 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 85.1, 100.0 );
|
||||
SetSkill( SkillName.Magery, 85.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 85.1, 100.0 );
|
||||
SetSkill( SkillName.Tactics, 105.1, 120.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
|
||||
Fame = 12000;
|
||||
Karma = -12000;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
PackReg( 10 );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
|
||||
public Phantom( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a ghostly corpse" )]
|
||||
public class Poltergeist : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Poltergeist() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a poltergeist";
|
||||
Body = 26;
|
||||
Hue = 2031;
|
||||
BaseSoundID = 0x482;
|
||||
|
||||
SetStr( 76, 80 );
|
||||
SetDex( 76, 85 );
|
||||
SetInt( 106, 120 );
|
||||
|
||||
SetHits( 126, 140 );
|
||||
|
||||
SetDamage( 16, 20 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 20 );
|
||||
SetDamageType( ResistanceType.Energy, 40 );
|
||||
SetDamageType( ResistanceType.Cold, 40 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 55, 65 );
|
||||
SetResistance( ResistanceType.Energy, 50, 60 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 75.1, 80.0 );
|
||||
SetSkill( SkillName.Magery, 65.1, 80.0 );
|
||||
SetSkill( SkillName.MagicResist, 75.1, 80.0 );
|
||||
SetSkill( SkillName.Tactics, 75.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 75.1, 85.0 );
|
||||
|
||||
Fame = 8000;
|
||||
Karma = -8000;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
PackReg( 10 );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
|
||||
public Poltergeist( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
98
Scripts/SubSystem/CustomMonsters/Undead/Ghostly/Quell.cs
Normal file
98
Scripts/SubSystem/CustomMonsters/Undead/Ghostly/Quell.cs
Normal file
@@ -0,0 +1,98 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a quell corpse" )]
|
||||
public class Quell : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Quell() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a quell";
|
||||
Body = 3;
|
||||
Hue = 0x4001;
|
||||
|
||||
SetStr( 76, 100 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 66, 80 );
|
||||
|
||||
SetHits( 146, 160 );
|
||||
|
||||
SetDamage( 12, 14 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Cold, 50 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 15, 25 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Magery, 65.1, 80.0 );
|
||||
SetSkill( SkillName.MagicResist, 75.1, 80.0 );
|
||||
SetSkill( SkillName.Tactics, 75.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
|
||||
Fame = 8000;
|
||||
Karma = -8000;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
PackReg( 10 );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.Gems, 1 );
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x1AC;
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x1CD;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x1D0;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x28D;
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
|
||||
public Quell( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a soulflame elemental corpse" )]
|
||||
public class SoulflameElemental : BaseCreature
|
||||
{
|
||||
public override double DispelDifficulty{ get{ return 117.5; } }
|
||||
public override double DispelFocus{ get{ return 45.0; } }
|
||||
|
||||
[Constructable]
|
||||
public SoulflameElemental () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a soulflame elemental";
|
||||
Body = 15;
|
||||
BaseSoundID = 838;
|
||||
Hue = 1287;
|
||||
|
||||
SetStr( 146, 148 );
|
||||
SetDex( 166, 185 );
|
||||
SetInt( 181, 185 );
|
||||
|
||||
SetHits( 276, 293 );
|
||||
|
||||
SetDamage( 16, 28 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 85 );
|
||||
SetDamageType( ResistanceType.Fire, 105 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 85, 105 );
|
||||
SetResistance( ResistanceType.Fire, 100, 120 );
|
||||
SetResistance( ResistanceType.Cold, 100, 120 );
|
||||
SetResistance( ResistanceType.Poison, 60, 80 );
|
||||
SetResistance( ResistanceType.Energy, 100, 120 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 100.1, 115.0 );
|
||||
SetSkill( SkillName.Magery, 80.1, 105.0 );
|
||||
SetSkill( SkillName.MagicResist, 85.2, 105.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 70.1, 100.0 );
|
||||
|
||||
Fame = 8500;
|
||||
Karma = -8500;
|
||||
|
||||
VirtualArmor = 40;
|
||||
ControlSlots = 4;
|
||||
|
||||
PackItem( new SulfurousAsh( 3 ) );
|
||||
|
||||
AddItem( new LightSource() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.Gems );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override int TreasureMapLevel{ get{ return 2; } }
|
||||
|
||||
public SoulflameElemental( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( BaseSoundID == 274 )
|
||||
BaseSoundID = 838;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a spiritual energy corpse" )]
|
||||
public class SpiritEnergy : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public SpiritEnergy() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a spirit energy";
|
||||
Body = 58;
|
||||
Hue = 0x4001;
|
||||
BaseSoundID = 466;
|
||||
|
||||
SetStr( 76, 100 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 36, 60 );
|
||||
|
||||
SetHits( 46, 60 );
|
||||
|
||||
SetDamage( 7, 11 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Cold, 80 );
|
||||
SetDamageType( ResistanceType.Energy, 80 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 105, 125 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Magery, 55.1, 70.0 );
|
||||
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
PackReg( 10 );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
|
||||
public SpiritEnergy( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
78
Scripts/SubSystem/CustomMonsters/Undead/OozeOfDecay.cs
Normal file
78
Scripts/SubSystem/CustomMonsters/Undead/OozeOfDecay.cs
Normal file
@@ -0,0 +1,78 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a decaying ooze" )]
|
||||
public class OozeOfDecay : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public OozeOfDecay() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an ooze of decay";
|
||||
Body = 51;
|
||||
BaseSoundID = 456;
|
||||
Hue = 1743;
|
||||
|
||||
Hue = Utility.RandomSlimeHue();
|
||||
|
||||
SetStr( 22, 34 );
|
||||
SetDex( 16, 21 );
|
||||
SetInt( 16, 20 );
|
||||
|
||||
SetHits( 15, 19 );
|
||||
|
||||
SetDamage( 2, 6 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 5, 10 );
|
||||
SetResistance( ResistanceType.Poison, 15, 20 );
|
||||
|
||||
SetSkill( SkillName.Poisoning, 36.0, 49.1 );
|
||||
SetSkill(SkillName.Anatomy, 0);
|
||||
SetSkill( SkillName.MagicResist, 15.9, 18.9 );
|
||||
SetSkill( SkillName.Tactics, 24.6, 26.1 );
|
||||
SetSkill( SkillName.Wrestling, 24.9, 26.1 );
|
||||
|
||||
Fame = 300;
|
||||
Karma = -300;
|
||||
|
||||
VirtualArmor = 8;
|
||||
|
||||
Tamable = true;
|
||||
ControlSlots = 1;
|
||||
MinTameSkill = 23.1;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Poor );
|
||||
AddLoot( LootPack.Gems );
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune { get { return Poison.Regular; } }
|
||||
public override Poison HitPoison { get { return Poison.Regular; } }
|
||||
public override FoodType FavoriteFood{ get{ return FoodType.Fish; } }
|
||||
|
||||
//TODO: Damage weapon via acid
|
||||
|
||||
public OozeOfDecay( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an ashen corpse" )]
|
||||
public class AshenArcher : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public AshenArcher() : base( AIType.AI_Archer, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an ashen archer";
|
||||
Body = 148;
|
||||
BaseSoundID = 451;
|
||||
Hue = 2021;
|
||||
|
||||
SetStr( 176, 180 );
|
||||
SetDex( 56, 75 );
|
||||
SetInt( 186, 210 );
|
||||
|
||||
SetHits( 96, 110 );
|
||||
|
||||
SetDamage( 4, 10 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 5, 10 );
|
||||
SetResistance( ResistanceType.Fire, 50, 60 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 50, 60 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
|
||||
SetSkill( SkillName.Anatomy, 60.2, 100.0 );
|
||||
SetSkill( SkillName.Archery, 80.1, 90.0 );
|
||||
SetSkill( SkillName.MagicResist, 65.1, 90.0 );
|
||||
SetSkill( SkillName.Tactics, 50.1, 75.0 );
|
||||
SetSkill( SkillName.Wrestling, 50.1, 75.0 );
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
VirtualArmor = 38;
|
||||
AddItem( new Bow() );
|
||||
PackItem( new Arrow( Utility.RandomMinMax( 150, 170 ) ) );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
|
||||
public AshenArcher( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a charred corpse" )]
|
||||
public class AshenCorpse : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public AshenCorpse() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an ashen corpse";
|
||||
Body = 3;
|
||||
BaseSoundID = 0x20F3;
|
||||
Hue = 2021;
|
||||
|
||||
SetStr( 171, 200 );
|
||||
SetDex( 126, 145 );
|
||||
SetInt( 276, 305 );
|
||||
|
||||
SetHits( 103, 120 );
|
||||
|
||||
SetDamage( 24, 26 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 80 );
|
||||
SetDamageType( ResistanceType.Fire, 20 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 20, 30 );
|
||||
SetResistance( ResistanceType.Fire, 65, 70 );
|
||||
SetResistance( ResistanceType.Cold, 60, 70 );
|
||||
SetResistance( ResistanceType.Poison, 65, 75 );
|
||||
SetResistance( ResistanceType.Energy, 60, 70 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 100.0 );
|
||||
SetSkill( SkillName.Magery, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Meditation, 85.1, 95.0 );
|
||||
SetSkill( SkillName.MagicResist, 80.1, 100.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 90.0 );
|
||||
|
||||
Fame = 8000;
|
||||
Karma = -8000;
|
||||
|
||||
VirtualArmor = 50;
|
||||
PackItem( new GnarledStaff() );
|
||||
PackNecroReg( 17, 24 );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
public override int TreasureMapLevel{ get{ return 3; } }
|
||||
|
||||
public AshenCorpse( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an ashen corpse" )]
|
||||
public class AshenHorror : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public AshenHorror() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an ashen horror";
|
||||
Body = Utility.RandomList( 50, 56 );
|
||||
BaseSoundID = 0x48D;
|
||||
Hue = 2021;
|
||||
|
||||
SetStr( 56, 80 );
|
||||
SetDex( 56, 75 );
|
||||
SetInt( 16, 40 );
|
||||
|
||||
SetHits( 34, 48 );
|
||||
|
||||
SetDamage( 3, 7 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 5, 10 );
|
||||
SetResistance( ResistanceType.Fire, 55, 60 );
|
||||
SetResistance( ResistanceType.Cold, 55, 60 );
|
||||
SetResistance( ResistanceType.Poison, 55, 65 );
|
||||
SetResistance( ResistanceType.Energy, 35, 45 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Tactics, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
|
||||
Fame = 450;
|
||||
Karma = -450;
|
||||
|
||||
VirtualArmor = 16;
|
||||
|
||||
switch ( Utility.Random( 5 ))
|
||||
{
|
||||
case 0: PackItem( new BoneArms() ); break;
|
||||
case 1: PackItem( new BoneChest() ); break;
|
||||
case 2: PackItem( new BoneGloves() ); break;
|
||||
case 3: PackItem( new BoneLegs() ); break;
|
||||
case 4: PackItem( new BoneHelm() ); break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Poor );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lesser; } }
|
||||
|
||||
public AshenHorror( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an ashen corpse" )]
|
||||
public class AshenKnight : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public AshenKnight() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an ashen knight";
|
||||
Body = 147;
|
||||
BaseSoundID = 451;
|
||||
Hue = 2021;
|
||||
|
||||
SetStr( 146, 180 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 86, 90 );
|
||||
|
||||
SetHits( 118, 130 );
|
||||
|
||||
SetDamage( 8, 18 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 40 );
|
||||
SetDamageType( ResistanceType.Cold, 60 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 15, 25 );
|
||||
SetResistance( ResistanceType.Fire, 60, 70 );
|
||||
SetResistance( ResistanceType.Cold, 60, 70 );
|
||||
SetResistance( ResistanceType.Poison, 60, 70 );
|
||||
SetResistance( ResistanceType.Energy, 50, 60 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 65.1, 80.0 );
|
||||
SetSkill( SkillName.Tactics, 85.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 85.1, 95.0 );
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
VirtualArmor = 40;
|
||||
|
||||
switch ( Utility.Random( 6 ) )
|
||||
{
|
||||
case 0: PackItem( new PlateArms() ); break;
|
||||
case 1: PackItem( new PlateChest() ); break;
|
||||
case 2: PackItem( new PlateGloves() ); break;
|
||||
case 3: PackItem( new PlateGorget() ); break;
|
||||
case 4: PackItem( new PlateLegs() ); break;
|
||||
case 5: PackItem( new PlateHelm() ); break;
|
||||
}
|
||||
|
||||
PackItem( new Scimitar() );
|
||||
PackItem( new WoodenShield() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public AshenKnight( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a burning skeletal corpse" )]
|
||||
public class BurningArcher : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public BurningArcher() : base( AIType.AI_Archer, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a burning archer";
|
||||
Body = 148;
|
||||
BaseSoundID = 451;
|
||||
Hue = 1256;
|
||||
|
||||
SetStr( 176, 180 );
|
||||
SetDex( 56, 75 );
|
||||
SetInt( 186, 210 );
|
||||
|
||||
SetHits( 96, 110 );
|
||||
|
||||
SetDamage( 4, 10 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Fire, 50 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 40 );
|
||||
SetResistance( ResistanceType.Fire, 90, 100 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 20, 30 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
|
||||
SetSkill( SkillName.Anatomy, 60.2, 100.0 );
|
||||
SetSkill( SkillName.Archery, 80.1, 90.0 );
|
||||
SetSkill( SkillName.MagicResist, 65.1, 90.0 );
|
||||
SetSkill( SkillName.Tactics, 50.1, 75.0 );
|
||||
SetSkill( SkillName.Wrestling, 50.1, 75.0 );
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
VirtualArmor = 38;
|
||||
AddItem( new Bow() );
|
||||
PackItem( new Arrow( Utility.RandomMinMax( 150, 170 ) ) );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
|
||||
public BurningArcher( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a charred corpse" )]
|
||||
public class BurningCorpse : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public BurningCorpse() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a burning corpse";
|
||||
Body = 3;
|
||||
BaseSoundID = 0x20F3;
|
||||
Hue = 1256;
|
||||
|
||||
SetStr( 171, 200 );
|
||||
SetDex( 126, 145 );
|
||||
SetInt( 276, 305 );
|
||||
|
||||
SetHits( 103, 120 );
|
||||
|
||||
SetDamage( 24, 26 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 40 );
|
||||
SetDamageType( ResistanceType.Fire, 50 );
|
||||
SetDamageType( ResistanceType.Energy, 10 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 40, 60 );
|
||||
SetResistance( ResistanceType.Fire, 85, 100 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 55, 65 );
|
||||
SetResistance( ResistanceType.Energy, 40, 50 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 100.0 );
|
||||
SetSkill( SkillName.Magery, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Meditation, 85.1, 95.0 );
|
||||
SetSkill( SkillName.MagicResist, 80.1, 100.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 90.0 );
|
||||
|
||||
Fame = 8000;
|
||||
Karma = -8000;
|
||||
|
||||
VirtualArmor = 50;
|
||||
PackItem( new GnarledStaff() );
|
||||
PackNecroReg( 17, 24 );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
public override int TreasureMapLevel{ get{ return 3; } }
|
||||
|
||||
public BurningCorpse( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a burning dead corpse" )]
|
||||
public class BurningDead : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public BurningDead() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a burning dead";
|
||||
Body = Utility.RandomList( 50, 56 );
|
||||
BaseSoundID = 0x48D;
|
||||
Hue = 1256;
|
||||
|
||||
SetStr( 56, 80 );
|
||||
SetDex( 56, 75 );
|
||||
SetInt( 16, 40 );
|
||||
|
||||
SetHits( 34, 48 );
|
||||
|
||||
SetDamage( 3, 7 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 40 );
|
||||
SetDamageType( ResistanceType.Fire, 60 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 15, 20 );
|
||||
SetResistance( ResistanceType.Fire, 90, 100 );
|
||||
SetResistance( ResistanceType.Cold, 25, 40 );
|
||||
SetResistance( ResistanceType.Poison, 25, 35 );
|
||||
SetResistance( ResistanceType.Energy, 5, 15 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Tactics, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
|
||||
Fame = 450;
|
||||
Karma = -450;
|
||||
|
||||
VirtualArmor = 16;
|
||||
|
||||
switch ( Utility.Random( 5 ))
|
||||
{
|
||||
case 0: PackItem( new BoneArms() ); break;
|
||||
case 1: PackItem( new BoneChest() ); break;
|
||||
case 2: PackItem( new BoneGloves() ); break;
|
||||
case 3: PackItem( new BoneLegs() ); break;
|
||||
case 4: PackItem( new BoneHelm() ); break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Poor );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lesser; } }
|
||||
|
||||
public BurningDead( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an ironclad burning corpse" )]
|
||||
public class BurningKnight : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public BurningKnight() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a burning knight";
|
||||
Body = 147;
|
||||
BaseSoundID = 451;
|
||||
Hue = 1256;
|
||||
|
||||
SetStr( 196, 250 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 36, 60 );
|
||||
|
||||
SetHits( 118, 150 );
|
||||
|
||||
SetDamage( 8, 18 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Fire, 50 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 45 );
|
||||
SetResistance( ResistanceType.Fire, 90, 100 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 20, 30 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 65.1, 80.0 );
|
||||
SetSkill( SkillName.Tactics, 85.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 85.1, 95.0 );
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
VirtualArmor = 40;
|
||||
|
||||
switch ( Utility.Random( 6 ) )
|
||||
{
|
||||
case 0: PackItem( new PlateArms() ); break;
|
||||
case 1: PackItem( new PlateChest() ); break;
|
||||
case 2: PackItem( new PlateGloves() ); break;
|
||||
case 3: PackItem( new PlateGorget() ); break;
|
||||
case 4: PackItem( new PlateLegs() ); break;
|
||||
case 5: PackItem( new PlateHelm() ); break;
|
||||
}
|
||||
|
||||
PackItem( new Scimitar() );
|
||||
PackItem( new WoodenShield() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public BurningKnight( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
109
Scripts/SubSystem/CustomMonsters/Undead/Skeletal/Othro.cs
Normal file
109
Scripts/SubSystem/CustomMonsters/Undead/Skeletal/Othro.cs
Normal file
@@ -0,0 +1,109 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an othro's corpse" )]
|
||||
public class Othro : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Othro() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an othro";
|
||||
Body = 148;
|
||||
BaseSoundID = 278;
|
||||
Hue = 783;
|
||||
|
||||
SetStr( 206, 300 );
|
||||
SetDex( 98, 118 );
|
||||
SetInt( 966, 1045 );
|
||||
|
||||
SetHits( 500, 505 );
|
||||
|
||||
SetDamage( 16, 28 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 20 );
|
||||
SetDamageType( ResistanceType.Cold, 40 );
|
||||
SetDamageType( ResistanceType.Energy, 40 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 55, 65 );
|
||||
SetResistance( ResistanceType.Fire, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 50, 60 );
|
||||
SetResistance( ResistanceType.Energy, 25, 30 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 120.1, 130.0 );
|
||||
SetSkill( SkillName.Magery, 120.1, 130.0 );
|
||||
SetSkill( SkillName.Meditation, 100.1, 101.0 );
|
||||
SetSkill( SkillName.Poisoning, 100.1, 101.0 );
|
||||
SetSkill( SkillName.MagicResist, 175.2, 200.0 );
|
||||
SetSkill( SkillName.Tactics, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 75.1, 100.0 );
|
||||
|
||||
Fame = 23000;
|
||||
Karma = -23000;
|
||||
|
||||
VirtualArmor = 60;
|
||||
PackNecroReg( 30, 275 );
|
||||
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x19D;
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x175;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x108;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0xE2;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x28B;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich, 3 );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
|
||||
public override bool Unprovokable{ get{ return true; } }
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
public override int TreasureMapLevel{ get{ return 5; } }
|
||||
|
||||
public Othro( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
103
Scripts/SubSystem/CustomMonsters/Undead/SludgeOfDecay.cs
Normal file
103
Scripts/SubSystem/CustomMonsters/Undead/SludgeOfDecay.cs
Normal file
@@ -0,0 +1,103 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a decaying sludge corpse" )]
|
||||
public class SludgeOfDecay : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public SludgeOfDecay() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a sludge of decay";
|
||||
Body = 775;
|
||||
Hue = 1745;
|
||||
|
||||
SetStr( 301, 350 );
|
||||
SetDex( 75 );
|
||||
SetInt( 151, 200 );
|
||||
|
||||
SetHits( 1200 );
|
||||
SetStam( 150 );
|
||||
SetMana( 0 );
|
||||
|
||||
SetDamage( 16, 28 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Cold, 50 );
|
||||
SetDamageType( ResistanceType.Poison, 50 );
|
||||
SetDamageType( ResistanceType.Energy, 50 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 45 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 50, 70 );
|
||||
SetResistance( ResistanceType.Poison, 40, 50 );
|
||||
SetResistance( ResistanceType.Energy, 20, 30 );
|
||||
|
||||
SetSkill( SkillName.Poisoning, 120.0 );
|
||||
SetSkill( SkillName.MagicResist, 250.0 );
|
||||
SetSkill( SkillName.Tactics, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 90.1, 100.0 );
|
||||
|
||||
Fame = 12000;
|
||||
Karma = -12000;
|
||||
|
||||
VirtualArmor = 40;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich, 2 );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
public override Poison HitPoison{ get{ return Poison.Lethal; } }
|
||||
public override int TreasureMapLevel{ get{ return 5; } }
|
||||
|
||||
//TODO: Damage weapon via acid
|
||||
|
||||
public SludgeOfDecay( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x1BF;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x1C0;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x1C1;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x1C2;
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup
|
||||
{
|
||||
get{ return OppositionGroup.FeyAndUndead; }
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user