It's relatively easy to do basic edits - change item properties, edit new char startup location & items. Managed a few more complicated things like removing the non-Fel locations from the moongate gump, but it's mostly just copying other people's script. Having the Legacy code to compare to helps as well.
Having an absolute mare trying to edit monster loot to include custom items, though. Here's the script for a Wraith with a working Power Scroll custom loot script inserted, and below it a non-working Ethereal Mount custom loot script. It's not causing compile errors, but no emounts are dropping as loot.
Code: Select all
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a ghostly corpse" )]
public class Wraith : BaseCreature
{
[Constructable]
public Wraith() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a wraith";
Body = 26;
Hue = 0x4001;
BaseSoundID = 0x482;
SetStr( 76, 100 );
SetDex( 76, 95 );
SetInt( 36, 60 );
SetHits( 46, 60 );
SetDamage( 7, 11 );
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, 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 bool OnBeforeDeath()
{
switch (Utility.Random(1))
{
case 0: PackItem(new EtherealHorse());
break;
}
return base.OnBeforeDeath();
}
public override void GenerateLoot()
{
if ( Utility.Random( 100 ) < 98 )
{
int level;
double random = Utility.RandomDouble();
if ( 0.30 >= random )
level = 120;
else if ( 0.40 >= random )
level = 115;
else
level = 110;
switch ( Utility.Random( 24 ))
{
case 0: AddToBackpack( new PowerScroll( SkillName.Swords, level ) ); break;
case 1: AddToBackpack( new PowerScroll( SkillName.Fencing, level ) ); break;
case 2: AddToBackpack( new PowerScroll( SkillName.Archery, level ) ); break;
case 3: AddToBackpack( new PowerScroll( SkillName.Parry, level ) ); break;
case 4: AddToBackpack( new PowerScroll( SkillName.Tactics, level ) ); break;
case 5: AddToBackpack( new PowerScroll( SkillName.Anatomy, level ) ); break;
case 6: AddToBackpack( new PowerScroll( SkillName.Healing, level ) ); break;
case 7: AddToBackpack( new PowerScroll( SkillName.Magery, level ) ); break;
case 8: AddToBackpack( new PowerScroll( SkillName.Meditation, level ) ); break;
case 9: AddToBackpack( new PowerScroll( SkillName.EvalInt, level ) ); break;
case 10: AddToBackpack( new PowerScroll( SkillName.MagicResist, level ) ); break;
//case 11: AddToBackpack( new PowerScroll( SkillName.AnimalTaming, level ) ); break;
//case 12: AddToBackpack( new PowerScroll( SkillName.AnimalLore, level ) ); break;
//case 13: AddToBackpack( new PowerScroll( SkillName.Veterinary, level ) ); break;
case 11: AddToBackpack( new PowerScroll( SkillName.Musicianship, level ) ); break;
case 12: AddToBackpack( new PowerScroll( SkillName.Provocation, level ) ); break;
case 13: AddToBackpack( new PowerScroll( SkillName.Discordance, level ) ); break;
case 14: AddToBackpack( new PowerScroll( SkillName.Peacemaking, level ) ); break;
case 15: AddToBackpack( new PowerScroll( SkillName.Chivalry, level ) ); break;
case 16: AddToBackpack( new PowerScroll( SkillName.Focus, level ) ); break;
case 17: AddToBackpack( new PowerScroll( SkillName.Necromancy, level ) ); break;
case 18: AddToBackpack( new PowerScroll( SkillName.Stealing, level ) ); break;
case 19: AddToBackpack( new PowerScroll( SkillName.Stealth, level ) ); break;
case 20: AddToBackpack( new PowerScroll( SkillName.Macing, level ) ); break;
case 21: AddToBackpack( new PowerScroll( SkillName.Wrestling, level ) ); break;
//case 25: AddToBackpack( new PowerScroll( SkillName.Blacksmith, level ) ); break;
//case 26: AddToBackpack( new PowerScroll( SkillName.Tailoring, level ) ); break;
//case 27: AddToBackpack( new PowerScroll( SkillName.Tinkering, level ) ); break;
//case 28: AddToBackpack( new PowerScroll( SkillName.Mining, level ) ); break;
//case 29: AddToBackpack( new PowerScroll( SkillName.Carpentry, level ) ); break;
//case 30: AddToBackpack( new PowerScroll( SkillName.Alchemy, level ) ); break;
//case 31: AddToBackpack( new PowerScroll( SkillName.Fletching, level ) ); break;
//case 32: AddToBackpack( new PowerScroll( SkillName.Inscribe, level ) ); break;
//case 33: AddToBackpack( new PowerScroll( SkillName.Cooking, level ) ); break;
//case 34: AddToBackpack( new PowerScroll( SkillName.Cartography, level ) ); break;
//case 35: AddToBackpack( new PowerScroll( SkillName.Lumberjacking, level ) ); break;
case 22: AddToBackpack( new PowerScroll( SkillName.Lockpicking, level ) ); break;
case 23: AddToBackpack( new PowerScroll( SkillName.Fishing, level ) ); break;
}
}
}
public override bool BleedImmune{ get{ return true; } }
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public Wraith( 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();
}
}
}
Code: Select all
switch (Utility.Random(1))
{
case 0: PackItem(new EtherealHorse());
break;
}
return base.OnBeforeDeath();
The next part(someone else's code copy pasted) is concerned with putting in power scroll drops(more complicated script) works fine:
Code: Select all
if ( Utility.Random( 100 ) < 98 )
{
int level;
double random = Utility.RandomDouble();
if ( 0.30 >= random )
level = 120;
else if ( 0.40 >= random )
level = 115;
else
level = 110;
switch ( Utility.Random( 24 ))
{
case 0: AddToBackpack( new PowerScroll( SkillName.Swords, level ) ); break;
case 1: AddToBackpack( new PowerScroll( SkillName.Fencing, level ) ); break;
case 2: AddToBackpack( new PowerScroll( SkillName.Archery, level ) ); break;
case 3: AddToBackpack( new PowerScroll( SkillName.Parry, level ) ); break;
case 4: AddToBackpack( new PowerScroll( SkillName.Tactics, level ) ); break;
case 5: AddToBackpack( new PowerScroll( SkillName.Anatomy, level ) ); break;
case 6: AddToBackpack( new PowerScroll( SkillName.Healing, level ) ); break;
case 7: AddToBackpack( new PowerScroll( SkillName.Magery, level ) ); break;
case 8: AddToBackpack( new PowerScroll( SkillName.Meditation, level ) ); break;
case 9: AddToBackpack( new PowerScroll( SkillName.EvalInt, level ) ); break;
case 10: AddToBackpack( new PowerScroll( SkillName.MagicResist, level ) ); break;
//case 11: AddToBackpack( new PowerScroll( SkillName.AnimalTaming, level ) ); break;
//case 12: AddToBackpack( new PowerScroll( SkillName.AnimalLore, level ) ); break;
//case 13: AddToBackpack( new PowerScroll( SkillName.Veterinary, level ) ); break;
case 11: AddToBackpack( new PowerScroll( SkillName.Musicianship, level ) ); break;
case 12: AddToBackpack( new PowerScroll( SkillName.Provocation, level ) ); break;
case 13: AddToBackpack( new PowerScroll( SkillName.Discordance, level ) ); break;
case 14: AddToBackpack( new PowerScroll( SkillName.Peacemaking, level ) ); break;
case 15: AddToBackpack( new PowerScroll( SkillName.Chivalry, level ) ); break;
case 16: AddToBackpack( new PowerScroll( SkillName.Focus, level ) ); break;
case 17: AddToBackpack( new PowerScroll( SkillName.Necromancy, level ) ); break;
case 18: AddToBackpack( new PowerScroll( SkillName.Stealing, level ) ); break;
case 19: AddToBackpack( new PowerScroll( SkillName.Stealth, level ) ); break;
case 20: AddToBackpack( new PowerScroll( SkillName.Macing, level ) ); break;
case 21: AddToBackpack( new PowerScroll( SkillName.Wrestling, level ) ); break;
//case 25: AddToBackpack( new PowerScroll( SkillName.Blacksmith, level ) ); break;
//case 26: AddToBackpack( new PowerScroll( SkillName.Tailoring, level ) ); break;
//case 27: AddToBackpack( new PowerScroll( SkillName.Tinkering, level ) ); break;
//case 28: AddToBackpack( new PowerScroll( SkillName.Mining, level ) ); break;
//case 29: AddToBackpack( new PowerScroll( SkillName.Carpentry, level ) ); break;
//case 30: AddToBackpack( new PowerScroll( SkillName.Alchemy, level ) ); break;
//case 31: AddToBackpack( new PowerScroll( SkillName.Fletching, level ) ); break;
//case 32: AddToBackpack( new PowerScroll( SkillName.Inscribe, level ) ); break;
//case 33: AddToBackpack( new PowerScroll( SkillName.Cooking, level ) ); break;
//case 34: AddToBackpack( new PowerScroll( SkillName.Cartography, level ) ); break;
//case 35: AddToBackpack( new PowerScroll( SkillName.Lumberjacking, level ) ); break;
case 22: AddToBackpack( new PowerScroll( SkillName.Lockpicking, level ) ); break;
case 23: AddToBackpack( new PowerScroll( SkillName.Fishing, level ) ); break;
}
}
Any ideas?