otimpyre said:Be nice if they snored. Or if it could set there title to sleeping then reset to "Blah"
Maybe they could run off an emote script. And occasionly play sound
case "snore":
SoundInt = 34;
break;
Just a thought. Great script thanx
namespace Server.Mobiles
{
[CorpseName( "a corpse" )]
[SleepingName( "a sleeping local" )] // <----- Add this line -----<
public class Townsperson : BaseCreature
{
using System;
using System.Collections;
using Server;
using Server.Items;
using Server.Gumps;
using Server.Spells;
using Server.Targeting;
using Server.Network;
using Server.Regions;
namespace Server.Spells.Linear
{
public class AwakenSpell : LinearSpell
{
private static SpellInfo m_Info = new SpellInfo(
"Awaken", "An Zu",
SpellCircle.First,
218,
9002,
Reagent.SulfurousAsh
);
public override double CastDelay{ get{ return 1.0; } }
public override double RequiredSkill{ get{ return 0.0; } }
public override int RequiredMana{ get{ return 5; } }
public AwakenSpell( Mobile caster, Item scroll ) : base( caster, scroll, m_Info )
{
}
public override void OnCast()
{
Caster.Target = new InternalTarget( this );
}
public void Target( SleepingBody slumber )
{
if ( !Caster.CanSee( slumber ) )
{
Caster.SendLocalizedMessage( 500237 ); // Target can not be seen.
}
else if ( CheckSequence() )
{
if(slumber!=null)
{
slumber.Owner.RevealingAction();
slumber.Owner.Frozen=false;
slumber.Owner.Squelched=false;
slumber.Owner.Map=slumber.Map;
slumber.Owner.Location=slumber.Location;
slumber.Owner.Animate(21, 6, 1, false, false, 0);;
slumber.Delete();
slumber.Owner.SendMessage("You wake up!");
}
Caster.SendMessage("You awaken them!");
}
FinishSequence();
}
private class InternalTarget : Target
{
private AwakenSpell m_Owner;
public InternalTarget( AwakenSpell owner ) : base( 12, false, TargetFlags.None )
{
m_Owner = owner;
}
protected override void OnTarget( Mobile from, object o )
{
if ( o is SleepingBody )
{
m_Owner.Target( (SleepingBody) o );
}
else
{
from.SendMessage("That cannot be awoken." ); // I cannot mark that object.
}
}
protected override void OnTargetFinish( Mobile from )
{
m_Owner.FinishSequence();
}
}
}
}
using System;
using System.Collections;
using Server.Misc;
using Server.Targeting;
using Server.Network;
using Server.Items;
namespace Server.Spells.First
{
public class AwakenAllSpell : Spell
{
private static SpellInfo m_Info = new SpellInfo(
"Awaken All", "Vas An Zu",
SpellCircle.First,
218,
9031,
Reagent.Garlic,
Reagent.Ginseng
);
public AwakenAllSpell( Mobile caster, Item scroll ) : base( caster, scroll, m_Info )
{
}
public override void OnCast()
{
Caster.Target = new InternalTarget( this );
}
public void Target( IPoint3D p )
{
if ( !Caster.CanSee( p ) )
{
Caster.SendLocalizedMessage( 500237 ); // Target can not be seen.
}
else if ( CheckSequence() )
{
SpellHelper.Turn( Caster, p );
ArrayList targets = new ArrayList();
if(this.Scroll!=null)
Scroll.Consume();
Map map = Caster.Map;
if ( map != null )
{
IPooledEnumerable eable = map.GetItemsInRange( new Point3D( p ), 3 );
foreach ( Item m in eable )
{
if ( Caster.CanSee( m )&& m is SleepingBody )
targets.Add( m );
}
eable.Free();
}
for ( int i = 0; i < targets.Count; ++i )
{
SleepingBody m = (SleepingBody)targets[i];
if(m!=null)
{
m.Owner.RevealingAction();
m.Owner.Frozen=false;
m.Owner.Squelched=false;
m.Owner.Map=m.Map;
m.Owner.Location=m.Location;
m.Owner.Animate(21, 6, 1, false, false, 0);
m.Owner.SendMessage("You wake up!");
m.Delete();
}
Caster.SendMessage("You awaken them!");
}
}
FinishSequence();
}
private class InternalTarget : Target
{
private AwakenAllSpell m_Owner;
public InternalTarget( AwakenAllSpell owner ) : base( 12, true, TargetFlags.None )
{
m_Owner = owner;
}
protected override void OnTarget( Mobile from, object o )
{
if(o is SleepingBody)
{
IPoint3D p = o as IPoint3D;
if ( p != null )
m_Owner.Target( p );
}
else
from.SendMessage("That is not a slumbering being");
}
protected override void OnTargetFinish( Mobile from )
{
m_Owner.FinishSequence();
}
}
}
}
[Constructable]
public SleepingBody( Mobile owner, bool blessed, bool isSpell ) : base( 0x2006 )
{
Stackable = true; // To supress console warnings, stackable must be true
Amount = owner.Body; // protocol defines that for itemid 0x2006, amount=body
Stackable = false;
m_Blessed = blessed;
Movable = false;
m_Owner = owner;
Name = m_Owner.Name;
m_SleepingBodyName = GetBodyName( owner );
Hue = m_Owner.Hue;
Direction = m_Owner.Direction;
m_spell = isSpell;
[Constructable]
public SleepingBody( Mobile owner, bool blessed, bool isSpell ) : base( 0x2006 )
{
Stackable = true; // To supress console warnings, stackable must be true
Amount = owner.Body; // protocol defines that for itemid 0x2006, amount=body
Stackable = false;
m_Blessed = blessed;
Movable = false;
[COLOR=Red]Visible = false;[/COLOR]
m_Owner = owner;
Name = m_Owner.Name;
m_SleepingBodyName = GetBodyName( owner );
Hue = m_Owner.Hue;
Direction = m_Owner.Direction;
m_spell = isSpell;