RunUO/Scripts/Items/Talismans/TalismanSummons.cs

621 lines
13 KiB
C#

using System;
using System.Collections.Generic;
using Server.ContextMenus;
using Server.Regions;
using Server.Items;
using BunnyHole = Server.Mobiles.VorpalBunny.BunnyHole;
namespace Server.Mobiles
{
public class BaseTalismanSummon : BaseCreature
{
public override bool Commandable{ get{ return false; } }
public override bool InitialInnocent{ get{ return true; } }
//public override bool IsInvulnerable{ get{ return true; } } // TODO: Wailing banshees are NOT invulnerable, are any of the others?
public BaseTalismanSummon() : base( AIType.AI_Melee, FightMode.None, 10, 1, 0.2, 0.4 )
{
// TODO: Stats/skills
}
public BaseTalismanSummon( Serial serial ) : base( serial )
{
}
public override void AddCustomContextEntries( Mobile from, List<ContextMenuEntry> list )
{
if ( from.Alive && ControlMaster == from )
list.Add( new TalismanReleaseEntry( this ) );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private class TalismanReleaseEntry : ContextMenuEntry
{
private Mobile m_Mobile;
public TalismanReleaseEntry( Mobile m ) : base( 6118, 3 )
{
m_Mobile = m;
}
public override void OnClick()
{
Effects.SendLocationParticles( EffectItem.Create( m_Mobile.Location, m_Mobile.Map, EffectItem.DefaultDuration ), 0x3728, 8, 20, 5042 );
Effects.PlaySound( m_Mobile, m_Mobile.Map, 0x201 );
m_Mobile.Delete();
}
}
}
public class SummonedAntLion : BaseTalismanSummon
{
[Constructable]
public SummonedAntLion() : base()
{
Name = "an ant lion";
Body = 787;
BaseSoundID = 1006;
}
public SummonedAntLion( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SummonedArcticOgreLord : BaseTalismanSummon
{
[Constructable]
public SummonedArcticOgreLord() : base()
{
Name = "an arctic ogre lord";
Body = 135;
BaseSoundID = 427;
}
public SummonedArcticOgreLord( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SummonedBakeKitsune : BaseTalismanSummon
{
[Constructable]
public SummonedBakeKitsune() : base()
{
Name = "a bake kitsune";
Body = 246;
BaseSoundID = 0x4DD;
}
public SummonedBakeKitsune( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SummonedBogling : BaseTalismanSummon
{
[Constructable]
public SummonedBogling() : base()
{
Name = "a bogling";
Body = 779;
BaseSoundID = 422;
}
public SummonedBogling( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SummonedBullFrog : BaseTalismanSummon
{
[Constructable]
public SummonedBullFrog() : base()
{
Name = "a bull frog";
Body = 81;
Hue = Utility.RandomList( 0x5AC, 0x5A3, 0x59A, 0x591, 0x588, 0x57F );
BaseSoundID = 0x266;
}
public SummonedBullFrog( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SummonedChicken : BaseTalismanSummon
{
[Constructable]
public SummonedChicken() : base()
{
Name = "a chicken";
Body = 0xD0;
BaseSoundID = 0x6E;
}
public SummonedChicken( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SummonedCow : BaseTalismanSummon
{
[Constructable]
public SummonedCow() : base()
{
Name = "a cow";
Body = Utility.RandomList( 0xD8, 0xE7 );
BaseSoundID = 0x78;
}
public SummonedCow( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SummonedDoppleganger : BaseTalismanSummon
{
[Constructable]
public SummonedDoppleganger() : base()
{
Name = "a doppleganger";
Body = 0x309;
BaseSoundID = 0x451;
}
public SummonedDoppleganger( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SummonedFrostSpider : BaseTalismanSummon
{
[Constructable]
public SummonedFrostSpider() : base()
{
Name = "a frost spider";
Body = 20;
BaseSoundID = 0x388;
}
public SummonedFrostSpider( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SummonedGreatHart : BaseTalismanSummon
{
[Constructable]
public SummonedGreatHart() : base()
{
Name = "a great hart";
Body = 0xEA;
BaseSoundID = 0x82;
}
public SummonedGreatHart( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SummonedLavaSerpent : BaseTalismanSummon
{
[Constructable]
public SummonedLavaSerpent() : base()
{
Name = "a lava serpent";
Body = 90;
BaseSoundID = 219;
}
public SummonedLavaSerpent( Serial serial ) : base( serial )
{
}
public override void OnThink()
{
/*
if ( m_NextWave < DateTime.UtcNow )
AreaHeatDamage();
*/
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
/*
// An area attack that only damages staff, wtf?
private DateTime m_NextWave;
public void AreaHeatDamage()
{
Mobile mob = ControlMaster;
if ( mob != null )
{
if ( mob.InRange( Location, 2 ) )
{
if ( mob.AccessLevel != AccessLevel.Player )
{
AOS.Damage( mob, Utility.Random( 2, 3 ), 0, 100, 0, 0, 0 );
mob.SendLocalizedMessage( 1008112 ); // The intense heat is damaging you!
}
}
GuardedRegion r = Region as GuardedRegion;
if ( r != null && mob.Alive )
{
foreach ( Mobile m in GetMobilesInRange( 2 ) )
{
if ( !mob.CanBeHarmful( m ) )
mob.CriminalAction( false );
}
}
}
m_NextWave = DateTime.UtcNow + TimeSpan.FromSeconds( 3 );
}
*/
}
public class SummonedOrcBrute : BaseTalismanSummon
{
[Constructable]
public SummonedOrcBrute() : base()
{
Body = 189;
Name = "an orc brute";
BaseSoundID = 0x45A;
}
public SummonedOrcBrute( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SummonedPanther : BaseTalismanSummon
{
[Constructable]
public SummonedPanther() : base()
{
Name = "a panther";
Body = 0xD6;
Hue = 0x901;
BaseSoundID = 0x462;
}
public SummonedPanther( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SummonedSheep : BaseTalismanSummon
{
[Constructable]
public SummonedSheep() : base()
{
Name = "a sheep";
Body = 0xCF;
BaseSoundID = 0xD6;
}
public SummonedSheep( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SummonedSkeletalKnight : BaseTalismanSummon
{
[Constructable]
public SummonedSkeletalKnight() : base()
{
Name = "a skeletal knight";
Body = 147;
BaseSoundID = 451;
}
public SummonedSkeletalKnight( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SummonedVorpalBunny : BaseTalismanSummon
{
[Constructable]
public SummonedVorpalBunny() : base()
{
Name = "a vorpal bunny";
Body = 205;
Hue = 0x480;
BaseSoundID = 0xC9;
Timer.DelayCall( TimeSpan.FromMinutes( 30.0 ), new TimerCallback( BeginTunnel ) );
}
public SummonedVorpalBunny( Serial serial ) : base( serial )
{
}
public virtual void BeginTunnel()
{
if ( Deleted )
return;
new BunnyHole().MoveToWorld( Location, Map );
Frozen = true;
Say( "* The bunny begins to dig a tunnel back to its underground lair *" );
PlaySound( 0x247 );
Timer.DelayCall( TimeSpan.FromSeconds( 5.0 ), new TimerCallback( Delete ) );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SummonedWailingBanshee : BaseTalismanSummon
{
[Constructable]
public SummonedWailingBanshee() : base()
{
Name = "a wailing banshee";
Body = 310;
BaseSoundID = 0x482;
}
public SummonedWailingBanshee( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}