#W# Initial Commit: Avatars Conquest
This commit is contained in:
commit
5df497787a
7510 changed files with 416048 additions and 0 deletions
42
Scripts/Items/Weapons/Axes/Axe.cs
Normal file
42
Scripts/Items/Weapons/Axes/Axe.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xF49, 0xF4a )]
|
||||
public class Axe : BaseAxe
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 35; } }
|
||||
public override int UOMinDamage{ get{ return 6; } }
|
||||
public override int UOMaxDamage{ get{ return 33; } }
|
||||
public override int UOSpeed{ get{ return 37; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 110; } }
|
||||
|
||||
[Constructable]
|
||||
public Axe() : base( 0xF49 )
|
||||
{
|
||||
Weight = 4.0;
|
||||
}
|
||||
|
||||
public Axe( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
163
Scripts/Items/Weapons/Axes/BaseAxe.cs
Normal file
163
Scripts/Items/Weapons/Axes/BaseAxe.cs
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Engines.Harvest;
|
||||
using Server.ContextMenus;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public interface IAxe
|
||||
{
|
||||
bool Axe( Mobile from, BaseAxe axe );
|
||||
}
|
||||
|
||||
public abstract class BaseAxe : BaseMeleeWeapon
|
||||
{
|
||||
public override int DefHitSound{ get{ return 0x232; } }
|
||||
public override int DefMissSound{ get{ return 0x23A; } }
|
||||
|
||||
public override SkillName DefSkill{ get{ return SkillName.Swords; } }
|
||||
public override WeaponType DefType{ get{ return WeaponType.Axe; } }
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Slash2H; } }
|
||||
|
||||
public virtual HarvestSystem HarvestSystem{ get{ return Lumberjacking.System; } }
|
||||
|
||||
private int m_UsesRemaining;
|
||||
private bool m_ShowUsesRemaining;
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int UsesRemaining
|
||||
{
|
||||
get { return m_UsesRemaining; }
|
||||
set { m_UsesRemaining = value; InvalidateProperties(); }
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public bool ShowUsesRemaining
|
||||
{
|
||||
get { return m_ShowUsesRemaining; }
|
||||
set { m_ShowUsesRemaining = value; InvalidateProperties(); }
|
||||
}
|
||||
|
||||
public virtual int GetUsesScalar()
|
||||
{
|
||||
if ( Quality == WeaponQuality.Exceptional )
|
||||
return 200;
|
||||
|
||||
return 100;
|
||||
}
|
||||
|
||||
public override void UnscaleDurability()
|
||||
{
|
||||
base.UnscaleDurability();
|
||||
|
||||
int scale = GetUsesScalar();
|
||||
|
||||
m_UsesRemaining = ((m_UsesRemaining * 100) + (scale - 1)) / scale;
|
||||
InvalidateProperties();
|
||||
}
|
||||
|
||||
public override void ScaleDurability()
|
||||
{
|
||||
base.ScaleDurability();
|
||||
|
||||
int scale = GetUsesScalar();
|
||||
|
||||
m_UsesRemaining = ((m_UsesRemaining * scale) + 99) / 100;
|
||||
InvalidateProperties();
|
||||
}
|
||||
|
||||
public BaseAxe( int itemID ) : base( itemID )
|
||||
{
|
||||
m_UsesRemaining = 150;
|
||||
}
|
||||
|
||||
public BaseAxe( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
if ( HarvestSystem == null || Deleted )
|
||||
return;
|
||||
|
||||
Point3D loc = this.GetWorldLocation();
|
||||
|
||||
if ( !from.InLOS( loc ) || !from.InRange( loc, 2 ) )
|
||||
{
|
||||
from.LocalOverheadMessage( Server.Network.MessageType.Regular, 0x3E9, 1019045 ); // I can't reach that
|
||||
return;
|
||||
}
|
||||
else if ( !this.IsAccessibleTo( from ) )
|
||||
{
|
||||
this.PublicOverheadMessage( Server.Network.MessageType.Regular, 0x3E9, 1061637 ); // You are not allowed to access this.
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !(this.HarvestSystem is Mining) )
|
||||
from.SendLocalizedMessage( 1010018 ); // What do you want to use this item on?
|
||||
|
||||
HarvestSystem.BeginHarvesting( from, this );
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 2 ); // version
|
||||
|
||||
writer.Write( (bool) m_ShowUsesRemaining );
|
||||
|
||||
writer.Write( (int) m_UsesRemaining );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 2:
|
||||
{
|
||||
m_ShowUsesRemaining = reader.ReadBool();
|
||||
goto case 1;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
m_UsesRemaining = reader.ReadInt();
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
if ( m_UsesRemaining < 1 )
|
||||
m_UsesRemaining = 150;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnHit( Mobile attacker, Mobile defender, double damageBonus )
|
||||
{
|
||||
base.OnHit( attacker, defender, damageBonus );
|
||||
|
||||
if ( (attacker.Player || attacker.Body.IsHuman) && Layer == Layer.TwoHanded && (attacker.Skills[SkillName.Tactics].Value / 400.0) >= Utility.RandomDouble() )
|
||||
{
|
||||
StatMod mod = defender.GetStatMod( "Concussion" );
|
||||
|
||||
if ( mod == null )
|
||||
{
|
||||
defender.SendMessage( "You receive a concussion blow!" );
|
||||
defender.AddStatMod( new StatMod( StatType.Int, "Concussion", -(defender.RawInt / 2), TimeSpan.FromSeconds( 30.0 ) ) );
|
||||
|
||||
attacker.SendMessage( "You deliver a concussion blow!" );
|
||||
attacker.PlaySound( 0x308 );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
43
Scripts/Items/Weapons/Axes/BattleAxe.cs
Normal file
43
Scripts/Items/Weapons/Axes/BattleAxe.cs
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xF47, 0xF48 )]
|
||||
public class BattleAxe : BaseAxe
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 40; } }
|
||||
public override int UOMinDamage{ get{ return 6; } }
|
||||
public override int UOMaxDamage{ get{ return 38; } }
|
||||
public override int UOSpeed{ get{ return 30; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 70; } }
|
||||
|
||||
[Constructable]
|
||||
public BattleAxe() : base( 0xF47 )
|
||||
{
|
||||
Weight = 4.0;
|
||||
Layer = Layer.TwoHanded;
|
||||
}
|
||||
|
||||
public BattleAxe( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Items/Weapons/Axes/DoubleAxe.cs
Normal file
42
Scripts/Items/Weapons/Axes/DoubleAxe.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xf4b, 0xf4c )]
|
||||
public class DoubleAxe : BaseAxe
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 45; } }
|
||||
public override int UOMinDamage{ get{ return 5; } }
|
||||
public override int UOMaxDamage{ get{ return 35; } }
|
||||
public override int UOSpeed{ get{ return 37; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 110; } }
|
||||
|
||||
[Constructable]
|
||||
public DoubleAxe() : base( 0xF4B )
|
||||
{
|
||||
Weight = 8.0;
|
||||
}
|
||||
|
||||
public DoubleAxe( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Items/Weapons/Axes/ExecutionersAxe.cs
Normal file
42
Scripts/Items/Weapons/Axes/ExecutionersAxe.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xf45, 0xf46 )]
|
||||
public class GreatAxe : BaseAxe
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 35; } }
|
||||
public override int UOMinDamage{ get{ return 6; } }
|
||||
public override int UOMaxDamage{ get{ return 33; } }
|
||||
public override int UOSpeed{ get{ return 37; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 70; } }
|
||||
|
||||
[Constructable]
|
||||
public GreatAxe() : base( 0xF45 )
|
||||
{
|
||||
Weight = 8.0;
|
||||
}
|
||||
|
||||
public GreatAxe( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Items/Weapons/Axes/Hatchet.cs
Normal file
42
Scripts/Items/Weapons/Axes/Hatchet.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xF43, 0xF44 )]
|
||||
public class Hatchet : BaseAxe
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 15; } }
|
||||
public override int UOMinDamage{ get{ return 2; } }
|
||||
public override int UOMaxDamage{ get{ return 17; } }
|
||||
public override int UOSpeed{ get{ return 40; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 80; } }
|
||||
|
||||
[Constructable]
|
||||
public Hatchet() : base( 0xF43 )
|
||||
{
|
||||
Weight = 4.0;
|
||||
}
|
||||
|
||||
public Hatchet( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Items/Weapons/Axes/LargeBattleAxe.cs
Normal file
42
Scripts/Items/Weapons/Axes/LargeBattleAxe.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x13FB, 0x13FA )]
|
||||
public class LargeBattleAxe : BaseAxe
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 40; } }
|
||||
public override int UOMinDamage{ get{ return 6; } }
|
||||
public override int UOMaxDamage{ get{ return 38; } }
|
||||
public override int UOSpeed{ get{ return 30; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 70; } }
|
||||
|
||||
[Constructable]
|
||||
public LargeBattleAxe() : base( 0x13FB )
|
||||
{
|
||||
Weight = 6.0;
|
||||
}
|
||||
|
||||
public LargeBattleAxe( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
50
Scripts/Items/Weapons/Axes/Pickaxe.cs
Normal file
50
Scripts/Items/Weapons/Axes/Pickaxe.cs
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
using System;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
using Server.Engines.Harvest;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xE86, 0xE85 )]
|
||||
public class Pickaxe : BaseAxe, IUsesRemaining
|
||||
{
|
||||
public override HarvestSystem HarvestSystem{ get{ return Mining.System; } }
|
||||
|
||||
public override int UOStrengthReq{ get{ return 25; } }
|
||||
public override int UOMinDamage{ get{ return 1; } }
|
||||
public override int UOMaxDamage{ get{ return 15; } }
|
||||
public override int UOSpeed{ get{ return 35; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 60; } }
|
||||
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Slash1H; } }
|
||||
|
||||
[Constructable]
|
||||
public Pickaxe() : base( 0xE86 )
|
||||
{
|
||||
Weight = 11.0;
|
||||
UsesRemaining = 50;
|
||||
ShowUsesRemaining = true;
|
||||
}
|
||||
|
||||
public Pickaxe( 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();
|
||||
ShowUsesRemaining = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Items/Weapons/Axes/TwoHandedAxe.cs
Normal file
42
Scripts/Items/Weapons/Axes/TwoHandedAxe.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x1443, 0x1442 )]
|
||||
public class TwoHandedAxe : BaseAxe
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 35; } }
|
||||
public override int UOMinDamage{ get{ return 5; } }
|
||||
public override int UOMaxDamage{ get{ return 39; } }
|
||||
public override int UOSpeed{ get{ return 30; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 90; } }
|
||||
|
||||
[Constructable]
|
||||
public TwoHandedAxe() : base( 0x1443 )
|
||||
{
|
||||
Weight = 8.0;
|
||||
}
|
||||
|
||||
public TwoHandedAxe( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
52
Scripts/Items/Weapons/Axes/WarAxe.cs
Normal file
52
Scripts/Items/Weapons/Axes/WarAxe.cs
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
using System;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
using Server.Engines.Harvest;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x13B0, 0x13AF )]
|
||||
public class WarAxe : BaseAxe
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 35; } }
|
||||
public override int UOMinDamage{ get{ return 9; } }
|
||||
public override int UOMaxDamage{ get{ return 27; } }
|
||||
public override int UOSpeed{ get{ return 40; } }
|
||||
|
||||
public override int DefHitSound{ get{ return 0x233; } }
|
||||
public override int DefMissSound{ get{ return 0x239; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 80; } }
|
||||
|
||||
public override SkillName DefSkill{ get{ return SkillName.Bludgeoning; } }
|
||||
public override WeaponType DefType{ get{ return WeaponType.Bashing; } }
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Bash1H; } }
|
||||
|
||||
public override HarvestSystem HarvestSystem{ get{ return null; } }
|
||||
|
||||
[Constructable]
|
||||
public WarAxe() : base( 0x13B0 )
|
||||
{
|
||||
Weight = 8.0;
|
||||
}
|
||||
|
||||
public WarAxe( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Scripts/Items/Weapons/BaseMeleeWeapon.cs
Normal file
60
Scripts/Items/Weapons/BaseMeleeWeapon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
using System;
|
||||
using Server;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public abstract class BaseMeleeWeapon : BaseWeapon
|
||||
{
|
||||
public BaseMeleeWeapon( int itemID ) : base( itemID )
|
||||
{
|
||||
}
|
||||
|
||||
public BaseMeleeWeapon( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override int AbsorbDamage( Mobile attacker, Mobile defender, int damage )
|
||||
{
|
||||
damage = base.AbsorbDamage( attacker, defender, damage );
|
||||
|
||||
int absorb = defender.MeleeDamageAbsorb;
|
||||
|
||||
if ( absorb > 0 )
|
||||
{
|
||||
if ( absorb > damage )
|
||||
{
|
||||
int react = damage / 5;
|
||||
|
||||
if ( react <= 0 )
|
||||
react = 1;
|
||||
|
||||
defender.MeleeDamageAbsorb -= damage;
|
||||
damage = 0;
|
||||
|
||||
attacker.Damage( react, defender );
|
||||
|
||||
attacker.PlaySound( 0x1F1 );
|
||||
attacker.FixedEffect( 0x374A, 10, 16 );
|
||||
}
|
||||
else
|
||||
{
|
||||
defender.MeleeDamageAbsorb = 0;
|
||||
defender.SendLocalizedMessage( 1005556 ); // Your reactive armor spell has been nullified.
|
||||
DefensiveSpell.Nullify( defender );
|
||||
}
|
||||
}
|
||||
|
||||
return damage;
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
}
|
||||
}
|
||||
}
|
||||
1866
Scripts/Items/Weapons/BaseWeapon.cs
Normal file
1866
Scripts/Items/Weapons/BaseWeapon.cs
Normal file
File diff suppressed because it is too large
Load diff
281
Scripts/Items/Weapons/Fists.cs
Normal file
281
Scripts/Items/Weapons/Fists.cs
Normal file
|
|
@ -0,0 +1,281 @@
|
|||
using System;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class Fists : BaseMeleeWeapon
|
||||
{
|
||||
public static void Initialize()
|
||||
{
|
||||
Mobile.DefaultWeapon = new Fists();
|
||||
|
||||
EventSink.DisarmRequest += new DisarmRequestEventHandler( EventSink_DisarmRequest );
|
||||
EventSink.StunRequest += new StunRequestEventHandler( EventSink_StunRequest );
|
||||
}
|
||||
|
||||
public override int UOStrengthReq{ get{ return 0; } }
|
||||
public override int UOMinDamage{ get{ return 1; } }
|
||||
public override int UOMaxDamage{ get{ return 8; } }
|
||||
public override int UOSpeed{ get{ return 30; } }
|
||||
|
||||
public override int DefHitSound{ get{ return -1; } }
|
||||
public override int DefMissSound{ get{ return -1; } }
|
||||
|
||||
public override SkillName DefSkill{ get{ return SkillName.HandToHand; } }
|
||||
public override WeaponType DefType{ get{ return WeaponType.Fists; } }
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Wrestle; } }
|
||||
|
||||
public Fists() : base( 0 )
|
||||
{
|
||||
Visible = false;
|
||||
Movable = false;
|
||||
Quality = WeaponQuality.Regular;
|
||||
}
|
||||
|
||||
public Fists( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override double GetDefendSkillValue( Mobile attacker, Mobile defender )
|
||||
{
|
||||
double wresValue = defender.Skills[SkillName.HandToHand].Value;
|
||||
double anatValue = defender.Skills[SkillName.Tactics].Value;
|
||||
double evalValue = defender.Skills[SkillName.Concentration].Value;
|
||||
double incrValue = (anatValue + evalValue + 20.0) * 0.5;
|
||||
|
||||
if ( incrValue > 120.0 )
|
||||
incrValue = 120.0;
|
||||
|
||||
if ( wresValue > incrValue )
|
||||
return wresValue;
|
||||
else
|
||||
return incrValue;
|
||||
}
|
||||
|
||||
public override TimeSpan OnSwing( Mobile attacker, Mobile defender )
|
||||
{
|
||||
if ( attacker.StunReady )
|
||||
{
|
||||
if ( attacker.CanBeginAction( typeof( Fists ) ) )
|
||||
{
|
||||
if ( attacker.Skills[SkillName.Tactics].Value >= 80.0 && attacker.Skills[SkillName.HandToHand].Value >= 80.0 )
|
||||
{
|
||||
if ( attacker.Stam >= 15 )
|
||||
{
|
||||
attacker.Stam -= 15;
|
||||
|
||||
if ( CheckMove( attacker, SkillName.Tactics ) )
|
||||
{
|
||||
StartMoveDelay( attacker );
|
||||
|
||||
attacker.StunReady = false;
|
||||
|
||||
attacker.SendLocalizedMessage( 1004013 ); // You successfully stun your opponent!
|
||||
defender.SendLocalizedMessage( 1004014 ); // You have been stunned!
|
||||
|
||||
defender.Freeze( TimeSpan.FromSeconds( 4.0 ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
attacker.SendLocalizedMessage( 1004010 ); // You failed in your attempt to stun.
|
||||
defender.SendLocalizedMessage( 1004011 ); // Your opponent tried to stun you and failed.
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
attacker.SendLocalizedMessage( 1004009 ); // You are too fatigued to attempt anything.
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
attacker.SendLocalizedMessage( 1004008 ); // You are not skilled enough to stun your opponent.
|
||||
attacker.StunReady = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( attacker.DisarmReady )
|
||||
{
|
||||
if ( attacker.CanBeginAction( typeof( Fists ) ) )
|
||||
{
|
||||
if ( defender.Player || defender.Body.IsHuman )
|
||||
{
|
||||
if ( attacker.Skills[SkillName.Tactics].Value >= 80.0 && attacker.Skills[SkillName.HandToHand].Value >= 80.0 )
|
||||
{
|
||||
if ( attacker.Stam >= 15 )
|
||||
{
|
||||
Item toDisarm = defender.FindItemOnLayer( Layer.OneHanded );
|
||||
|
||||
if ( toDisarm == null || !toDisarm.Movable )
|
||||
toDisarm = defender.FindItemOnLayer( Layer.TwoHanded );
|
||||
|
||||
Container pack = defender.Backpack;
|
||||
|
||||
if ( pack == null || toDisarm == null || !toDisarm.Movable )
|
||||
{
|
||||
attacker.SendLocalizedMessage( 1004001 ); // You cannot disarm your opponent.
|
||||
}
|
||||
else if ( CheckMove( attacker, SkillName.Tactics ) )
|
||||
{
|
||||
StartMoveDelay( attacker );
|
||||
|
||||
attacker.Stam -= 15;
|
||||
attacker.DisarmReady = false;
|
||||
|
||||
attacker.SendLocalizedMessage( 1004006 ); // You successfully disarm your opponent!
|
||||
defender.SendLocalizedMessage( 1004007 ); // You have been disarmed!
|
||||
|
||||
pack.DropItem( toDisarm );
|
||||
}
|
||||
else
|
||||
{
|
||||
attacker.Stam -= 15;
|
||||
|
||||
attacker.SendLocalizedMessage( 1004004 ); // You failed in your attempt to disarm.
|
||||
defender.SendLocalizedMessage( 1004005 ); // Your opponent tried to disarm you but failed.
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
attacker.SendLocalizedMessage( 1004003 ); // You are too fatigued to attempt anything.
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
attacker.SendLocalizedMessage( 1004002 ); // You are not skilled enough to disarm your opponent.
|
||||
attacker.DisarmReady = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
attacker.SendLocalizedMessage( 1004001 ); // You cannot disarm your opponent.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return base.OnSwing( attacker, defender );
|
||||
}
|
||||
|
||||
/*public override void OnMiss( Mobile attacker, Mobile defender )
|
||||
{
|
||||
base.PlaySwingAnimation( attacker );
|
||||
}*/
|
||||
|
||||
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();
|
||||
|
||||
Delete();
|
||||
}
|
||||
|
||||
/* Wrestling moves */
|
||||
|
||||
private static bool CheckMove( Mobile m, SkillName other )
|
||||
{
|
||||
double wresValue = m.Skills[SkillName.HandToHand].Value;
|
||||
double scndValue = m.Skills[other].Value;
|
||||
|
||||
/* 40% chance at 80, 80
|
||||
* 50% chance at 100, 100
|
||||
* 60% chance at 120, 120
|
||||
*/
|
||||
|
||||
double chance = (wresValue + scndValue) / 400.0;
|
||||
|
||||
return ( chance >= Utility.RandomDouble() );
|
||||
}
|
||||
|
||||
private static bool HasFreeHands( Mobile m )
|
||||
{
|
||||
Item item = m.FindItemOnLayer( Layer.OneHanded );
|
||||
|
||||
if ( item != null && !(item is Spellbook) )
|
||||
return false;
|
||||
|
||||
return m.FindItemOnLayer( Layer.TwoHanded ) == null;
|
||||
}
|
||||
|
||||
private static void EventSink_DisarmRequest( DisarmRequestEventArgs e )
|
||||
{
|
||||
Mobile m = e.Mobile;
|
||||
|
||||
double armsValue = m.Skills[SkillName.Tactics].Value;
|
||||
double wresValue = m.Skills[SkillName.HandToHand].Value;
|
||||
|
||||
if ( !HasFreeHands( m ) )
|
||||
{
|
||||
m.SendLocalizedMessage( 1004029 ); // You must have your hands free to attempt to disarm your opponent.
|
||||
m.DisarmReady = false;
|
||||
}
|
||||
else if ( armsValue >= 80.0 && wresValue >= 80.0 )
|
||||
{
|
||||
m.DisruptiveAction();
|
||||
m.DisarmReady = !m.DisarmReady;
|
||||
m.SendLocalizedMessage( m.DisarmReady ? 1019013 : 1019014 );
|
||||
}
|
||||
else
|
||||
{
|
||||
m.SendLocalizedMessage( 1004002 ); // You are not skilled enough to disarm your opponent.
|
||||
m.DisarmReady = false;
|
||||
}
|
||||
}
|
||||
|
||||
private static void EventSink_StunRequest( StunRequestEventArgs e )
|
||||
{
|
||||
Mobile m = e.Mobile;
|
||||
|
||||
double anatValue = m.Skills[SkillName.Tactics].Value;
|
||||
double wresValue = m.Skills[SkillName.HandToHand].Value;
|
||||
|
||||
if ( !HasFreeHands( m ) )
|
||||
{
|
||||
m.SendLocalizedMessage( 1004031 ); // You must have your hands free to attempt to stun your opponent.
|
||||
m.StunReady = false;
|
||||
}
|
||||
else if ( anatValue >= 80.0 && wresValue >= 80.0 )
|
||||
{
|
||||
m.DisruptiveAction();
|
||||
m.StunReady = !m.StunReady;
|
||||
m.SendLocalizedMessage( m.StunReady ? 1019011 : 1019012 );
|
||||
}
|
||||
else
|
||||
{
|
||||
m.SendLocalizedMessage( 1004008 ); // You are not skilled enough to stun your opponent.
|
||||
m.StunReady = false;
|
||||
}
|
||||
}
|
||||
|
||||
private class MoveDelayTimer : Timer
|
||||
{
|
||||
private Mobile m_Mobile;
|
||||
|
||||
public MoveDelayTimer( Mobile m ) : base( TimeSpan.FromSeconds( 10.0 ) )
|
||||
{
|
||||
m_Mobile = m;
|
||||
|
||||
Priority = TimerPriority.TwoFiftyMS;
|
||||
|
||||
m_Mobile.BeginAction( typeof( Fists ) );
|
||||
}
|
||||
|
||||
protected override void OnTick()
|
||||
{
|
||||
m_Mobile.EndAction( typeof( Fists ) );
|
||||
}
|
||||
}
|
||||
|
||||
private static void StartMoveDelay( Mobile m )
|
||||
{
|
||||
new MoveDelayTimer( m ).Start();
|
||||
}
|
||||
}
|
||||
}
|
||||
59
Scripts/Items/Weapons/Knives/BaseKnife.cs
Normal file
59
Scripts/Items/Weapons/Knives/BaseKnife.cs
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Targets;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public abstract class BaseKnife : BaseMeleeWeapon
|
||||
{
|
||||
public override int DefHitSound{ get{ return 0x23B; } }
|
||||
public override int DefMissSound{ get{ return 0x238; } }
|
||||
|
||||
public override SkillName DefSkill{ get{ return SkillName.Swords; } }
|
||||
public override WeaponType DefType{ get{ return WeaponType.Slashing; } }
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Slash1H; } }
|
||||
|
||||
public BaseKnife( int itemID ) : base( itemID )
|
||||
{
|
||||
}
|
||||
|
||||
public BaseKnife( 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();
|
||||
}
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
from.SendLocalizedMessage( 1010018 ); // What do you want to use this item on?
|
||||
|
||||
from.Target = new BladedItemTarget( this );
|
||||
}
|
||||
|
||||
public override void OnHit( Mobile attacker, Mobile defender, double damageBonus )
|
||||
{
|
||||
base.OnHit( attacker, defender, damageBonus );
|
||||
|
||||
if ( Poison != null && PoisonCharges > 0 )
|
||||
{
|
||||
--PoisonCharges;
|
||||
|
||||
if ( Utility.RandomDouble() >= 0.5 ) // 50% chance to poison
|
||||
defender.ApplyPoison( attacker, Poison );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Items/Weapons/Knives/ButcherKnife.cs
Normal file
42
Scripts/Items/Weapons/Knives/ButcherKnife.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x13F6, 0x13F7 )]
|
||||
public class ButcherKnife : BaseKnife
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 5; } }
|
||||
public override int UOMinDamage{ get{ return 2; } }
|
||||
public override int UOMaxDamage{ get{ return 14; } }
|
||||
public override int UOSpeed{ get{ return 40; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 40; } }
|
||||
|
||||
[Constructable]
|
||||
public ButcherKnife() : base( 0x13F6 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
}
|
||||
|
||||
public ButcherKnife( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
Scripts/Items/Weapons/Knives/Cleaver.cs
Normal file
45
Scripts/Items/Weapons/Knives/Cleaver.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xEC3, 0xEC2 )]
|
||||
public class Cleaver : BaseKnife
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 10; } }
|
||||
public override int UOMinDamage{ get{ return 2; } }
|
||||
public override int UOMaxDamage{ get{ return 13; } }
|
||||
public override int UOSpeed{ get{ return 40; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 50; } }
|
||||
|
||||
[Constructable]
|
||||
public Cleaver() : base( 0xEC3 )
|
||||
{
|
||||
Weight = 2.0;
|
||||
}
|
||||
|
||||
public Cleaver( 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();
|
||||
|
||||
if ( Weight == 1.0 )
|
||||
Weight = 2.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
47
Scripts/Items/Weapons/Knives/Dagger.cs
Normal file
47
Scripts/Items/Weapons/Knives/Dagger.cs
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Targeting;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xF52, 0xF51 )]
|
||||
public class Dagger : BaseKnife
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 1; } }
|
||||
public override int UOMinDamage{ get{ return 3; } }
|
||||
public override int UOMaxDamage{ get{ return 15; } }
|
||||
public override int UOSpeed{ get{ return 55; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 40; } }
|
||||
|
||||
public override SkillName DefSkill{ get{ return SkillName.Fencing; } }
|
||||
public override WeaponType DefType{ get{ return WeaponType.Piercing; } }
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Pierce1H; } }
|
||||
|
||||
[Constructable]
|
||||
public Dagger() : base( 0xF52 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
}
|
||||
|
||||
public Dagger( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Items/Weapons/Knives/SkinningKnife.cs
Normal file
42
Scripts/Items/Weapons/Knives/SkinningKnife.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xEC4, 0xEC5 )]
|
||||
public class SkinningKnife : BaseKnife
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 5; } }
|
||||
public override int UOMinDamage{ get{ return 1; } }
|
||||
public override int UOMaxDamage{ get{ return 10; } }
|
||||
public override int UOSpeed{ get{ return 40; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 40; } }
|
||||
|
||||
[Constructable]
|
||||
public SkinningKnife() : base( 0xEC4 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
}
|
||||
|
||||
public SkinningKnife( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
125
Scripts/Items/Weapons/Knives/ThrowingDagger.cs
Normal file
125
Scripts/Items/Weapons/Knives/ThrowingDagger.cs
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
using System;
|
||||
using Server.Targeting;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xF52, 0xF51 )]
|
||||
public class ThrowingDagger : Item
|
||||
{
|
||||
public override string DefaultName
|
||||
{
|
||||
get { return "a throwing dagger"; }
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public ThrowingDagger() : base( 0xF52 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Layer = Layer.OneHanded;
|
||||
}
|
||||
|
||||
public ThrowingDagger( 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();
|
||||
}
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
if ( from.Items.Contains( this ) )
|
||||
{
|
||||
InternalTarget t = new InternalTarget( this );
|
||||
from.Target = t;
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendMessage( "You must be holding that weapon to use it." );
|
||||
}
|
||||
}
|
||||
|
||||
private class InternalTarget : Target
|
||||
{
|
||||
private ThrowingDagger m_Dagger;
|
||||
|
||||
public InternalTarget( ThrowingDagger dagger ) : base( 10, false, TargetFlags.Harmful )
|
||||
{
|
||||
m_Dagger = dagger;
|
||||
}
|
||||
|
||||
protected override void OnTarget( Mobile from, object targeted )
|
||||
{
|
||||
if ( m_Dagger.Deleted )
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if ( !from.Items.Contains( m_Dagger ) )
|
||||
{
|
||||
from.SendMessage( "You must be holding that weapon to use it." );
|
||||
}
|
||||
else if ( targeted is Mobile )
|
||||
{
|
||||
Mobile m = (Mobile)targeted;
|
||||
|
||||
if ( m != from && from.HarmfulCheck( m ) )
|
||||
{
|
||||
Direction to = from.GetDirectionTo( m );
|
||||
|
||||
from.Direction = to;
|
||||
|
||||
from.Animate( from.Mounted ? 26 : 9, 7, 1, true, false, 0 );
|
||||
|
||||
if ( Utility.RandomDouble() >= (Math.Sqrt( m.Dex / 100.0 ) * 0.8) )
|
||||
{
|
||||
from.MovingEffect( m, 0x1BFE, 7, 1, false, false, 0x481, 0 );
|
||||
|
||||
Ultima.Damage( m, from, Utility.Random( 5, from.Str / 10 ) );
|
||||
|
||||
m_Dagger.MoveToWorld( m.Location, m.Map );
|
||||
}
|
||||
else
|
||||
{
|
||||
int x = 0, y = 0;
|
||||
|
||||
switch ( to & Direction.Mask )
|
||||
{
|
||||
case Direction.North: --y; break;
|
||||
case Direction.South: ++y; break;
|
||||
case Direction.West: --x; break;
|
||||
case Direction.East: ++x; break;
|
||||
case Direction.Up: --x; --y; break;
|
||||
case Direction.Down: ++x; ++y; break;
|
||||
case Direction.Left: --x; ++y; break;
|
||||
case Direction.Right: ++x; --y; break;
|
||||
}
|
||||
|
||||
x += Utility.Random( -1, 3 );
|
||||
y += Utility.Random( -1, 3 );
|
||||
|
||||
x += m.X;
|
||||
y += m.Y;
|
||||
|
||||
m_Dagger.MoveToWorld( new Point3D( x, y, m.Z ), m.Map );
|
||||
|
||||
from.MovingEffect( m_Dagger, 0x1BFE, 7, 1, false, false, 0x481, 0 );
|
||||
|
||||
from.SendMessage( "You miss." );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Scripts/Items/Weapons/Maces/BaseBashing.cs
Normal file
60
Scripts/Items/Weapons/Maces/BaseBashing.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public abstract class BaseBashing : BaseMeleeWeapon
|
||||
{
|
||||
public override int DefHitSound{ get{ return 0x233; } }
|
||||
public override int DefMissSound{ get{ return 0x239; } }
|
||||
|
||||
public override SkillName DefSkill{ get{ return SkillName.Bludgeoning; } }
|
||||
public override WeaponType DefType{ get{ return WeaponType.Bashing; } }
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Bash1H; } }
|
||||
|
||||
public BaseBashing( int itemID ) : base( itemID )
|
||||
{
|
||||
}
|
||||
|
||||
public BaseBashing( 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();
|
||||
}
|
||||
|
||||
public override void OnHit( Mobile attacker, Mobile defender, double damageBonus )
|
||||
{
|
||||
base.OnHit( attacker, defender, damageBonus );
|
||||
|
||||
defender.Stam -= Utility.Random( 3, 3 ); // 3-5 points of stamina loss
|
||||
}
|
||||
|
||||
public override double GetBaseDamage( Mobile attacker )
|
||||
{
|
||||
double damage = base.GetBaseDamage( attacker );
|
||||
|
||||
if ( (attacker.Player || attacker.Body.IsHuman) && Layer == Layer.TwoHanded && (attacker.Skills[SkillName.Tactics].Value / 400.0) >= Utility.RandomDouble() )
|
||||
{
|
||||
damage *= 1.5;
|
||||
|
||||
attacker.SendMessage( "You deliver a crushing blow!" ); // Is this not localized?
|
||||
attacker.PlaySound( 0x11C );
|
||||
}
|
||||
|
||||
return damage;
|
||||
}
|
||||
}
|
||||
}
|
||||
43
Scripts/Items/Weapons/Maces/Club.cs
Normal file
43
Scripts/Items/Weapons/Maces/Club.cs
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x13b4, 0x13b3 )]
|
||||
public class Club : BaseBashing
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 10; } }
|
||||
public override int UOMinDamage{ get{ return 8; } }
|
||||
public override int UOMaxDamage{ get{ return 24; } }
|
||||
public override int UOSpeed{ get{ return 40; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 40; } }
|
||||
|
||||
[Constructable]
|
||||
public Club() : base( 0x13B4 )
|
||||
{
|
||||
Weight = 9.0;
|
||||
Resource = CraftResource.Wooden;
|
||||
}
|
||||
|
||||
public Club( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
43
Scripts/Items/Weapons/Maces/HammerPick.cs
Normal file
43
Scripts/Items/Weapons/Maces/HammerPick.cs
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x143D, 0x143C )]
|
||||
public class HammerPick : BaseBashing
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 35; } }
|
||||
public override int UOMinDamage{ get{ return 6; } }
|
||||
public override int UOMaxDamage{ get{ return 33; } }
|
||||
public override int UOSpeed{ get{ return 30; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 70; } }
|
||||
|
||||
[Constructable]
|
||||
public HammerPick() : base( 0x143D )
|
||||
{
|
||||
Weight = 9.0;
|
||||
Layer = Layer.OneHanded;
|
||||
}
|
||||
|
||||
public HammerPick( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Items/Weapons/Maces/Mace.cs
Normal file
42
Scripts/Items/Weapons/Maces/Mace.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xF5C, 0xF5D )]
|
||||
public class Mace : BaseBashing
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 20; } }
|
||||
public override int UOMinDamage{ get{ return 8; } }
|
||||
public override int UOMaxDamage{ get{ return 32; } }
|
||||
public override int UOSpeed{ get{ return 30; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 70; } }
|
||||
|
||||
[Constructable]
|
||||
public Mace() : base( 0xF5C )
|
||||
{
|
||||
Weight = 14.0;
|
||||
}
|
||||
|
||||
public Mace( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
Scripts/Items/Weapons/Maces/Maul.cs
Normal file
45
Scripts/Items/Weapons/Maces/Maul.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x143B, 0x143A )]
|
||||
public class Maul : BaseBashing
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 20; } }
|
||||
public override int UOMinDamage{ get{ return 10; } }
|
||||
public override int UOMaxDamage{ get{ return 30; } }
|
||||
public override int UOSpeed{ get{ return 30; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 70; } }
|
||||
|
||||
[Constructable]
|
||||
public Maul() : base( 0x143B )
|
||||
{
|
||||
Weight = 10.0;
|
||||
}
|
||||
|
||||
public Maul( 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();
|
||||
|
||||
if ( Weight == 14.0 )
|
||||
Weight = 10.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
45
Scripts/Items/Weapons/Maces/WarHammer.cs
Normal file
45
Scripts/Items/Weapons/Maces/WarHammer.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x1439, 0x1438 )]
|
||||
public class WarHammer : BaseBashing
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 40; } }
|
||||
public override int UOMinDamage{ get{ return 8; } }
|
||||
public override int UOMaxDamage{ get{ return 36; } }
|
||||
public override int UOSpeed{ get{ return 31; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 110; } }
|
||||
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Bash2H; } }
|
||||
|
||||
[Constructable]
|
||||
public WarHammer() : base( 0x1439 )
|
||||
{
|
||||
Weight = 10.0;
|
||||
Layer = Layer.TwoHanded;
|
||||
}
|
||||
|
||||
public WarHammer( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Items/Weapons/Maces/WarMace.cs
Normal file
42
Scripts/Items/Weapons/Maces/WarMace.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x1407, 0x1406 )]
|
||||
public class WarMace : BaseBashing
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 30; } }
|
||||
public override int UOMinDamage{ get{ return 10; } }
|
||||
public override int UOMaxDamage{ get{ return 30; } }
|
||||
public override int UOSpeed{ get{ return 32; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 110; } }
|
||||
|
||||
[Constructable]
|
||||
public WarMace() : base( 0x1407 )
|
||||
{
|
||||
Weight = 17.0;
|
||||
}
|
||||
|
||||
public WarMace( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
46
Scripts/Items/Weapons/Maces/Whip.cs
Normal file
46
Scripts/Items/Weapons/Maces/Whip.cs
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x26BB, 0x26C5 )]
|
||||
public class Whip : BaseBashing
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 10; } }
|
||||
public override int UOMinDamage{ get{ return 8; } }
|
||||
public override int UOMaxDamage{ get{ return 24; } }
|
||||
public override int UOSpeed{ get{ return 40; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 40; } }
|
||||
|
||||
public override int DefHitSound{ get{ return 0x5D0; } }
|
||||
public override int DefMissSound{ get{ return 0x5D1; } }
|
||||
|
||||
[Constructable]
|
||||
public Whip() : base( 0x26BB )
|
||||
{
|
||||
Weight = 6.0;
|
||||
Name = "whip";
|
||||
Resource = CraftResource.Leathered;
|
||||
Hue = 0x4A8;
|
||||
}
|
||||
|
||||
public Whip( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Items/Weapons/PoleArms/Bardiche.cs
Normal file
42
Scripts/Items/Weapons/PoleArms/Bardiche.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xF4D, 0xF4E )]
|
||||
public class Bardiche : BasePoleArm
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 40; } }
|
||||
public override int UOMinDamage{ get{ return 5; } }
|
||||
public override int UOMaxDamage{ get{ return 43; } }
|
||||
public override int UOSpeed{ get{ return 26; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 100; } }
|
||||
|
||||
[Constructable]
|
||||
public Bardiche() : base( 0xF4D )
|
||||
{
|
||||
Weight = 7.0;
|
||||
}
|
||||
|
||||
public Bardiche( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
117
Scripts/Items/Weapons/PoleArms/BasePoleArm.cs
Normal file
117
Scripts/Items/Weapons/PoleArms/BasePoleArm.cs
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Engines.Harvest;
|
||||
using Server.ContextMenus;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public abstract class BasePoleArm : BaseMeleeWeapon, IUsesRemaining
|
||||
{
|
||||
public override int DefHitSound{ get{ return 0x237; } }
|
||||
public override int DefMissSound{ get{ return 0x238; } }
|
||||
|
||||
public override SkillName DefSkill{ get{ return SkillName.Swords; } }
|
||||
public override WeaponType DefType{ get{ return WeaponType.Polearm; } }
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Slash2H; } }
|
||||
|
||||
public virtual HarvestSystem HarvestSystem{ get{ return Lumberjacking.System; } }
|
||||
|
||||
private int m_UsesRemaining;
|
||||
private bool m_ShowUsesRemaining;
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int UsesRemaining
|
||||
{
|
||||
get { return m_UsesRemaining; }
|
||||
set { m_UsesRemaining = value; InvalidateProperties(); }
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public bool ShowUsesRemaining
|
||||
{
|
||||
get { return m_ShowUsesRemaining; }
|
||||
set { m_ShowUsesRemaining = value; InvalidateProperties(); }
|
||||
}
|
||||
|
||||
public BasePoleArm( int itemID ) : base( itemID )
|
||||
{
|
||||
m_UsesRemaining = 150;
|
||||
}
|
||||
|
||||
public BasePoleArm( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
if ( HarvestSystem == null )
|
||||
return;
|
||||
|
||||
if ( IsChildOf( from.Backpack ) || Parent == from )
|
||||
HarvestSystem.BeginHarvesting( from, this );
|
||||
else
|
||||
from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it.
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 2 ); // version
|
||||
|
||||
writer.Write( (bool) m_ShowUsesRemaining );
|
||||
|
||||
writer.Write( (int) m_UsesRemaining );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 2:
|
||||
{
|
||||
m_ShowUsesRemaining = reader.ReadBool();
|
||||
goto case 1;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
m_UsesRemaining = reader.ReadInt();
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
if ( m_UsesRemaining < 1 )
|
||||
m_UsesRemaining = 150;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnHit( Mobile attacker, Mobile defender, double damageBonus )
|
||||
{
|
||||
base.OnHit( attacker, defender, damageBonus );
|
||||
|
||||
if ( (attacker.Player || attacker.Body.IsHuman) && Layer == Layer.TwoHanded && (attacker.Skills[SkillName.Tactics].Value / 400.0) >= Utility.RandomDouble() )
|
||||
{
|
||||
StatMod mod = defender.GetStatMod( "Concussion" );
|
||||
|
||||
if ( mod == null )
|
||||
{
|
||||
defender.SendMessage( "You receive a concussion blow!" );
|
||||
defender.AddStatMod( new StatMod( StatType.Int, "Concussion", -(defender.RawInt / 2), TimeSpan.FromSeconds( 30.0 ) ) );
|
||||
|
||||
attacker.SendMessage( "You deliver a concussion blow!" );
|
||||
attacker.PlaySound( 0x11C );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Items/Weapons/PoleArms/Halberd.cs
Normal file
42
Scripts/Items/Weapons/PoleArms/Halberd.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x143E, 0x143F )]
|
||||
public class Halberd : BasePoleArm
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 45; } }
|
||||
public override int UOMinDamage{ get{ return 5; } }
|
||||
public override int UOMaxDamage{ get{ return 49; } }
|
||||
public override int UOSpeed{ get{ return 25; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 80; } }
|
||||
|
||||
[Constructable]
|
||||
public Halberd() : base( 0x143E )
|
||||
{
|
||||
Weight = 16.0;
|
||||
}
|
||||
|
||||
public Halberd( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
48
Scripts/Items/Weapons/PoleArms/Scythe.cs
Normal file
48
Scripts/Items/Weapons/PoleArms/Scythe.cs
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
using Server.Engines.Harvest;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x26BA, 0x26C4 )]
|
||||
public class Scythe : BasePoleArm
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 45; } }
|
||||
public override int UOMinDamage{ get{ return 15; } }
|
||||
public override int UOMaxDamage{ get{ return 18; } }
|
||||
public override int UOSpeed{ get{ return 32; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 100; } }
|
||||
|
||||
public override HarvestSystem HarvestSystem{ get{ return null; } }
|
||||
|
||||
[Constructable]
|
||||
public Scythe() : base( 0x26BA )
|
||||
{
|
||||
Weight = 5.0;
|
||||
}
|
||||
|
||||
public Scythe( 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();
|
||||
|
||||
if ( Weight == 15.0 )
|
||||
Weight = 5.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
111
Scripts/Items/Weapons/Ranged/BaseRanged.cs
Normal file
111
Scripts/Items/Weapons/Ranged/BaseRanged.cs
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
using System;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
using Server.Spells;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public abstract class BaseRanged : BaseMeleeWeapon
|
||||
{
|
||||
public abstract int EffectID{ get; }
|
||||
public abstract Type AmmoType{ get; }
|
||||
public abstract Item Ammo{ get; }
|
||||
|
||||
public override int DefHitSound{ get{ return 0x234; } }
|
||||
public override int DefMissSound{ get{ return 0x238; } }
|
||||
|
||||
public override SkillName DefSkill{ get{ return SkillName.Archery; } }
|
||||
public override WeaponType DefType{ get{ return WeaponType.Ranged; } }
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.ShootXBow; } }
|
||||
|
||||
public override SkillName AccuracySkill{ get{ return SkillName.Archery; } }
|
||||
|
||||
private Timer m_RecoveryTimer; // so we don't start too many timers
|
||||
|
||||
public BaseRanged( int itemID ) : base( itemID )
|
||||
{
|
||||
}
|
||||
|
||||
public BaseRanged( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override TimeSpan OnSwing( Mobile attacker, Mobile defender )
|
||||
{
|
||||
// Make sure we've been standing still for .25/.5/1 second depending on Era
|
||||
if ( DateTime.Now > (attacker.LastMoveTime + TimeSpan.FromSeconds( 1.0 )) )
|
||||
{
|
||||
bool canSwing = true;
|
||||
|
||||
if ( canSwing && attacker.HarmfulCheck( defender ) )
|
||||
{
|
||||
attacker.DisruptiveAction();
|
||||
attacker.Send( new Swing( 0, attacker, defender ) );
|
||||
|
||||
if ( OnFired( attacker, defender ) )
|
||||
{
|
||||
if ( CheckHit( attacker, defender ) )
|
||||
OnHit( attacker, defender );
|
||||
else
|
||||
OnMiss( attacker, defender );
|
||||
}
|
||||
}
|
||||
|
||||
attacker.RevealingAction();
|
||||
|
||||
return GetDelay( attacker );
|
||||
}
|
||||
else
|
||||
{
|
||||
attacker.RevealingAction();
|
||||
|
||||
return TimeSpan.FromSeconds( 0.25 );
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnHit( Mobile attacker, Mobile defender, double damageBonus )
|
||||
{
|
||||
if ( attacker.Player && !defender.Player && (defender.Body.IsAnimal || defender.Body.IsMonster) && 0.4 >= Utility.RandomDouble() )
|
||||
defender.AddToBackpack( Ammo );
|
||||
|
||||
base.OnHit( attacker, defender, damageBonus );
|
||||
}
|
||||
|
||||
public override void OnMiss( Mobile attacker, Mobile defender )
|
||||
{
|
||||
if ( attacker.Player && 0.4 >= Utility.RandomDouble() )
|
||||
{
|
||||
Ammo.MoveToWorld( new Point3D( defender.X + Utility.RandomMinMax( -1, 1 ), defender.Y + Utility.RandomMinMax( -1, 1 ), defender.Z ), defender.Map );
|
||||
}
|
||||
|
||||
base.OnMiss( attacker, defender );
|
||||
}
|
||||
|
||||
public virtual bool OnFired( Mobile attacker, Mobile defender )
|
||||
{
|
||||
Container pack = attacker.Backpack;
|
||||
|
||||
if ( pack == null || !pack.ConsumeTotal( AmmoType, 1 ) )
|
||||
return false;
|
||||
|
||||
attacker.MovingEffect( defender, EffectID, 18, 1, false, false );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
54
Scripts/Items/Weapons/Ranged/Bow.cs
Normal file
54
Scripts/Items/Weapons/Ranged/Bow.cs
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x13B2, 0x13B1 )]
|
||||
public class Bow : BaseRanged
|
||||
{
|
||||
public override int EffectID{ get{ return 0xF42; } }
|
||||
public override Type AmmoType{ get{ return typeof( Arrow ); } }
|
||||
public override Item Ammo{ get{ return new Arrow(); } }
|
||||
|
||||
public override int UOStrengthReq{ get{ return 20; } }
|
||||
public override int UOMinDamage{ get{ return 9; } }
|
||||
public override int UOMaxDamage{ get{ return 41; } }
|
||||
public override int UOSpeed{ get{ return 20; } }
|
||||
|
||||
public override int DefMaxRange{ get{ return 10; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 60; } }
|
||||
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.ShootBow; } }
|
||||
|
||||
[Constructable]
|
||||
public Bow() : base( 0x13B2 )
|
||||
{
|
||||
Weight = 6.0;
|
||||
Layer = Layer.TwoHanded;
|
||||
}
|
||||
|
||||
public Bow( 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();
|
||||
|
||||
if ( Weight == 7.0 )
|
||||
Weight = 6.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
49
Scripts/Items/Weapons/Ranged/Crossbow.cs
Normal file
49
Scripts/Items/Weapons/Ranged/Crossbow.cs
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xF50, 0xF4F )]
|
||||
public class Crossbow : BaseRanged
|
||||
{
|
||||
public override int EffectID{ get{ return 0x1BFE; } }
|
||||
public override Type AmmoType{ get{ return typeof( Bolt ); } }
|
||||
public override Item Ammo{ get{ return new Bolt(); } }
|
||||
|
||||
public override int UOStrengthReq{ get{ return 30; } }
|
||||
public override int UOMinDamage{ get{ return 8; } }
|
||||
public override int UOMaxDamage{ get{ return 43; } }
|
||||
public override int UOSpeed{ get{ return 18; } }
|
||||
|
||||
public override int DefMaxRange{ get{ return 8; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 80; } }
|
||||
|
||||
[Constructable]
|
||||
public Crossbow() : base( 0xF50 )
|
||||
{
|
||||
Weight = 7.0;
|
||||
Layer = Layer.TwoHanded;
|
||||
}
|
||||
|
||||
public Crossbow( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
49
Scripts/Items/Weapons/Ranged/HeavyCrossbow.cs
Normal file
49
Scripts/Items/Weapons/Ranged/HeavyCrossbow.cs
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x13FD, 0x13FC )]
|
||||
public class HeavyCrossbow : BaseRanged
|
||||
{
|
||||
public override int EffectID{ get{ return 0x1BFE; } }
|
||||
public override Type AmmoType{ get{ return typeof( Bolt ); } }
|
||||
public override Item Ammo{ get{ return new Bolt(); } }
|
||||
|
||||
public override int UOStrengthReq{ get{ return 40; } }
|
||||
public override int UOMinDamage{ get{ return 11; } }
|
||||
public override int UOMaxDamage{ get{ return 56; } }
|
||||
public override int UOSpeed{ get{ return 10; } }
|
||||
|
||||
public override int DefMaxRange{ get{ return 8; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 100; } }
|
||||
|
||||
[Constructable]
|
||||
public HeavyCrossbow() : base( 0x13FD )
|
||||
{
|
||||
Weight = 9.0;
|
||||
Layer = Layer.TwoHanded;
|
||||
}
|
||||
|
||||
public HeavyCrossbow( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
81
Scripts/Items/Weapons/SlayerEntry.cs
Normal file
81
Scripts/Items/Weapons/SlayerEntry.cs
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class SlayerEntry
|
||||
{
|
||||
private SlayerGroup m_Group;
|
||||
private SlayerName m_Name;
|
||||
private Type[] m_Types;
|
||||
|
||||
public SlayerGroup Group{ get{ return m_Group; } set{ m_Group = value; } }
|
||||
public SlayerName Name{ get{ return m_Name; } }
|
||||
public Type[] Types{ get{ return m_Types; } }
|
||||
|
||||
private static int[] m_OldTitles = new int[]
|
||||
{
|
||||
1017384, // Undead Doom
|
||||
1017379, // Giant's Fall
|
||||
1017385, // Orc Slaying
|
||||
1017386, // Troll Slaughter
|
||||
1017387, // Ogre Thrashing
|
||||
1017388, // Executioner
|
||||
1017389, // Dragon Slaying
|
||||
1017390, // Insectoid Extermination
|
||||
1017391, // Serpent Bane
|
||||
1017392, // Lizardman Slaughter
|
||||
1017393, // Reptilian Death
|
||||
1017394, // Daemon Dismissal
|
||||
1017395, // Gargoyle's Foe
|
||||
1017396, // Devilish Damnation
|
||||
1017397, // Exorcism
|
||||
1017398, // Serpentoid Massacre
|
||||
1017399, // Spider's Death
|
||||
1017400, // Scorpion's Bane
|
||||
1017401, // Bug Butcher
|
||||
1017402, // Flame Dousing
|
||||
1017403, // Water Evaporation
|
||||
1017404, // Air Abolish
|
||||
1017405, // Elemental Health
|
||||
1017406, // Stone Shatter
|
||||
1017407, // Blood Drinking
|
||||
1017408, // Summer Breeze
|
||||
1017409, // Elemental Ban
|
||||
1070855, // Nature's Fury
|
||||
1017378, // Sea Slaughter
|
||||
1017377, // Goblinoid Hunter
|
||||
1017376 // Weed Wrecker
|
||||
};
|
||||
|
||||
public int Title
|
||||
{
|
||||
get
|
||||
{
|
||||
int[] titles = ( m_OldTitles );
|
||||
|
||||
return titles[(int)m_Name - 1];
|
||||
}
|
||||
}
|
||||
|
||||
public SlayerEntry( SlayerName name, params Type[] types )
|
||||
{
|
||||
m_Name = name;
|
||||
m_Types = types;
|
||||
}
|
||||
|
||||
public bool Slays( Mobile m )
|
||||
{
|
||||
Type t = m.GetType();
|
||||
|
||||
for ( int i = 0; i < m_Types.Length; ++i )
|
||||
{
|
||||
if ( m_Types[i] == t )
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
667
Scripts/Items/Weapons/SlayerGroup.cs
Normal file
667
Scripts/Items/Weapons/SlayerGroup.cs
Normal file
|
|
@ -0,0 +1,667 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class SlayerGroup
|
||||
{
|
||||
private static SlayerEntry[] m_TotalEntries;
|
||||
private static SlayerGroup[] m_Groups;
|
||||
|
||||
public static SlayerEntry[] TotalEntries
|
||||
{
|
||||
get{ return m_TotalEntries; }
|
||||
}
|
||||
|
||||
public static SlayerGroup[] Groups
|
||||
{
|
||||
get{ return m_Groups; }
|
||||
}
|
||||
|
||||
public static SlayerEntry GetEntryByName( SlayerName name )
|
||||
{
|
||||
int v = (int)name;
|
||||
|
||||
if ( v >= 0 && v < m_TotalEntries.Length )
|
||||
return m_TotalEntries[v];
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static SlayerName GetLootSlayerType()
|
||||
{
|
||||
SlayerName slayer = SlayerName.UndeadDoom;
|
||||
|
||||
if ( Utility.RandomMinMax(1,10) == 1 )
|
||||
{
|
||||
switch ( Utility.Random( 7 ))
|
||||
{
|
||||
case 0: slayer = SlayerName.UndeadDoom; break;
|
||||
case 1: slayer = SlayerName.Executioner; break;
|
||||
case 2: slayer = SlayerName.DragonSlaying; break;
|
||||
case 3: slayer = SlayerName.ElementalBan; break;
|
||||
case 4: slayer = SlayerName.Exorcism; break;
|
||||
case 5: slayer = SlayerName.BugButcher; break;
|
||||
case 6: slayer = SlayerName.ReptilianDeath; break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch ( Utility.Random( 24 ))
|
||||
{
|
||||
case 0: slayer = SlayerName.GiantsFall; break;
|
||||
case 1: slayer = SlayerName.OrcSlaying; break;
|
||||
case 2: slayer = SlayerName.TrollSlaughter; break;
|
||||
case 3: slayer = SlayerName.OgreTrashing; break;
|
||||
case 4: slayer = SlayerName.InsectoidExtermination; break;
|
||||
case 5: slayer = SlayerName.SerpentBane; break;
|
||||
case 6: slayer = SlayerName.LizardmanSlaughter; break;
|
||||
case 7: slayer = SlayerName.DaemonDismissal; break;
|
||||
case 8: slayer = SlayerName.GargoylesFoe; break;
|
||||
case 9: slayer = SlayerName.DevilishDamnation; break;
|
||||
case 10: slayer = SlayerName.SerpentoidMassacre; break;
|
||||
case 11: slayer = SlayerName.SpidersDeath; break;
|
||||
case 12: slayer = SlayerName.ScorpionsBane; break;
|
||||
case 13: slayer = SlayerName.FlameDousing; break;
|
||||
case 14: slayer = SlayerName.WaterEvaporation; break;
|
||||
case 15: slayer = SlayerName.AirAbolish; break;
|
||||
case 16: slayer = SlayerName.ElementalHealth; break;
|
||||
case 17: slayer = SlayerName.StoneShatter; break;
|
||||
case 18: slayer = SlayerName.BloodDrinking; break;
|
||||
case 19: slayer = SlayerName.SummerBreeze; break;
|
||||
case 20: slayer = SlayerName.NaturesFury; break;
|
||||
case 21: slayer = SlayerName.SeaSlaughter; break;
|
||||
case 22: slayer = SlayerName.GoblinoidHunter; break;
|
||||
case 23: slayer = SlayerName.WeedWrecker; break;
|
||||
}
|
||||
}
|
||||
|
||||
return slayer;
|
||||
}
|
||||
|
||||
static SlayerGroup()
|
||||
{
|
||||
SlayerGroup humanoid = new SlayerGroup();
|
||||
SlayerGroup undead = new SlayerGroup();
|
||||
SlayerGroup elemental = new SlayerGroup();
|
||||
SlayerGroup abyss = new SlayerGroup();
|
||||
SlayerGroup arachnid = new SlayerGroup();
|
||||
SlayerGroup reptilian = new SlayerGroup();
|
||||
SlayerGroup nature = new SlayerGroup();
|
||||
SlayerGroup sea = new SlayerGroup();
|
||||
SlayerGroup weed = new SlayerGroup();
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
humanoid.Super = new SlayerEntry( SlayerName.Executioner,
|
||||
typeof( Goblin ),
|
||||
typeof( GoblinArcher ),
|
||||
typeof( GoblinWarrior ),
|
||||
typeof( Minotaur ),
|
||||
typeof( MinotaurChief ),
|
||||
typeof( MinotaurLord ),
|
||||
typeof( Yeti ),
|
||||
typeof( Bugbear ),
|
||||
typeof( ArcticOgreLord ),
|
||||
typeof( Pharaoh ),
|
||||
typeof( Brigand ),
|
||||
typeof( BlackKnight ),
|
||||
typeof( Caveman ),
|
||||
typeof( Cyclops ),
|
||||
typeof( CyclopsChief ),
|
||||
typeof( CyclopsLord ),
|
||||
typeof( Dwarf ),
|
||||
typeof( DwarfWarrior ),
|
||||
typeof( DwarfKnight ),
|
||||
typeof( Ettin ),
|
||||
typeof( EvilMage ),
|
||||
typeof( EvilMageLord ),
|
||||
typeof( FrostTroll ),
|
||||
typeof( Hobgoblin ),
|
||||
typeof( HobgoblinChief ),
|
||||
typeof( HobgoblinArcher ),
|
||||
typeof( HobgoblinShaman ),
|
||||
typeof( Ogre ),
|
||||
typeof( OgreLord ),
|
||||
typeof( OgreMagi ),
|
||||
typeof( Orc ),
|
||||
typeof( OrcCaptain ),
|
||||
typeof( OrcishLord ),
|
||||
typeof( OrcishMage ),
|
||||
typeof( ForestGiant ),
|
||||
typeof( HillGiant ),
|
||||
typeof( MountainGiant ),
|
||||
typeof( FrostGiant ),
|
||||
typeof( SnowEttin ),
|
||||
typeof( ShadowTitan ),
|
||||
typeof( SandGiant ),
|
||||
typeof( JungleGiant ),
|
||||
typeof( Pirate ),
|
||||
typeof( Ratman ),
|
||||
typeof( RatmanArcher ),
|
||||
typeof( RatmanMage ),
|
||||
typeof( SavageShaman ),
|
||||
typeof( Savage ),
|
||||
typeof( SavageLeader ),
|
||||
typeof( StormGiant ),
|
||||
typeof( Titan ),
|
||||
typeof( SeaGiant ),
|
||||
typeof( Troll ) );
|
||||
humanoid.Entries = new SlayerEntry[]
|
||||
{
|
||||
new SlayerEntry( SlayerName.GiantsFall,
|
||||
typeof( ArcticOgreLord ),
|
||||
typeof( Cyclops ),
|
||||
typeof( CyclopsChief ),
|
||||
typeof( CyclopsLord ),
|
||||
typeof( Ettin ),
|
||||
typeof( FrostTroll ),
|
||||
typeof( ForestGiant ),
|
||||
typeof( HillGiant ),
|
||||
typeof( MountainGiant ),
|
||||
typeof( FrostGiant ),
|
||||
typeof( SnowEttin ),
|
||||
typeof( ShadowTitan ),
|
||||
typeof( SandGiant ),
|
||||
typeof( JungleGiant ),
|
||||
typeof( Ogre ),
|
||||
typeof( OgreLord ),
|
||||
typeof( StormGiant ),
|
||||
typeof( Titan ),
|
||||
typeof( SeaGiant ),
|
||||
typeof( Troll ) ),
|
||||
new SlayerEntry( SlayerName.OgreTrashing,
|
||||
typeof( Ogre ),
|
||||
typeof( OgreLord ),
|
||||
typeof( OgreMagi ),
|
||||
typeof( ArcticOgreLord ) ),
|
||||
new SlayerEntry( SlayerName.OrcSlaying,
|
||||
typeof( Orc ),
|
||||
typeof( OrcCaptain ),
|
||||
typeof( OrcishLord ),
|
||||
typeof( OrcishMage ) ),
|
||||
new SlayerEntry( SlayerName.GoblinoidHunter,
|
||||
typeof( GoblinWarrior ),
|
||||
typeof( Goblin ),
|
||||
typeof( GoblinArcher ),
|
||||
typeof( Hobgoblin ),
|
||||
typeof( HobgoblinChief ),
|
||||
typeof( HobgoblinArcher ),
|
||||
typeof( HobgoblinShaman ) ),
|
||||
new SlayerEntry( SlayerName.TrollSlaughter,
|
||||
typeof( Troll ),
|
||||
typeof( FrostTroll ) )
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
undead.Super = new SlayerEntry( SlayerName.UndeadDoom,
|
||||
typeof( ZombieGargoyle ),
|
||||
typeof( GargoyleUndead ),
|
||||
typeof( CorpseGolem ),
|
||||
typeof( FleshGolem ),
|
||||
typeof( FleshGoliath ),
|
||||
typeof( AncientLich ),
|
||||
typeof( BoneKnight ),
|
||||
typeof( BoneMagi ),
|
||||
typeof( Ghoul ),
|
||||
typeof( Wight ),
|
||||
typeof( Lich ),
|
||||
typeof( LichLord ),
|
||||
typeof( Nazghoul ),
|
||||
typeof( Demilich ),
|
||||
typeof( DemonicSpirit ),
|
||||
typeof( Mummy ),
|
||||
typeof( MummyLord ),
|
||||
typeof( RottingCorpse ),
|
||||
typeof( Shade ),
|
||||
typeof( SkeletalDragon ),
|
||||
typeof( VampiricDragon ),
|
||||
typeof( ZombieDragon ),
|
||||
typeof( BoneDrake ),
|
||||
typeof( VampiricDrake ),
|
||||
typeof( RottingDrake ),
|
||||
typeof( SkeletalKnight ),
|
||||
typeof( SkeletalMage ),
|
||||
typeof( Skeleton ),
|
||||
typeof( BoneClaw ),
|
||||
typeof( SkeletonArcher ),
|
||||
typeof( Spectre ),
|
||||
typeof( Vampire ),
|
||||
typeof( VampireLord ),
|
||||
typeof( AncientVampire ),
|
||||
typeof( Wraith ),
|
||||
typeof( Zombie ) );
|
||||
undead.Entries = new SlayerEntry[0];
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
nature.Super = new SlayerEntry( SlayerName.NaturesFury,
|
||||
typeof( Centaur ),
|
||||
typeof( Pixie ),
|
||||
typeof( Fairy ),
|
||||
typeof( Satyr ),
|
||||
typeof( Ent ),
|
||||
typeof( Unicorn ),
|
||||
typeof( DreadHorn ),
|
||||
typeof( Wisp ) );
|
||||
nature.Entries = new SlayerEntry[0];
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
sea.Super = new SlayerEntry( SlayerName.SeaSlaughter,
|
||||
typeof( WaterElemental ),
|
||||
typeof( DeepSeaElemental ),
|
||||
typeof( Typhoon ),
|
||||
typeof( DeepSeaSerpent ),
|
||||
typeof( SeaSerpent ),
|
||||
typeof( GiantEel ),
|
||||
typeof( SeaDevil ),
|
||||
typeof( Kraken ),
|
||||
typeof( Dagon ),
|
||||
typeof( Krakoa ),
|
||||
typeof( Turtle ),
|
||||
typeof( Ktulu ),
|
||||
typeof( Lurker ),
|
||||
typeof( Dolphin ),
|
||||
typeof( GreatWhite ),
|
||||
typeof( SeaDrake ),
|
||||
typeof( SeaDragon ),
|
||||
typeof( GiantCrab ),
|
||||
typeof( Lobstran ),
|
||||
typeof( Lochasaur ),
|
||||
typeof( Megalodon ),
|
||||
typeof( Sahuagin ),
|
||||
typeof( SahuaginMage ),
|
||||
typeof( Shark ),
|
||||
typeof( Seahorse ),
|
||||
typeof( SeaGiant ),
|
||||
typeof( WaterElementalElder ),
|
||||
typeof( Leviathan ) );
|
||||
sea.Entries = new SlayerEntry[0];
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
weed.Super = new SlayerEntry( SlayerName.WeedWrecker,
|
||||
typeof( WhippingVine ),
|
||||
typeof( SwampTentacle ),
|
||||
typeof( Reaper ),
|
||||
typeof( SwampThing ),
|
||||
typeof( Fungal ),
|
||||
typeof( FungalMage ),
|
||||
typeof( WoodElemental ),
|
||||
typeof( Ent ),
|
||||
typeof( Shambler ),
|
||||
typeof( ShamblingMound ),
|
||||
typeof( BloodLotus ),
|
||||
typeof( Corpser ) );
|
||||
weed.Entries = new SlayerEntry[0];
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
elemental.Super = new SlayerEntry( SlayerName.ElementalBan,
|
||||
typeof( BloodElementalElder ),
|
||||
typeof( PoisonElementalElder ),
|
||||
typeof( WaterElementalElder ),
|
||||
typeof( MeteorElemental ),
|
||||
typeof( DeepSeaElemental ),
|
||||
typeof( AcidElemental ),
|
||||
typeof( AirElemental ),
|
||||
typeof( BloodElemental ),
|
||||
typeof( EarthElemental ),
|
||||
typeof( StoneGolem ),
|
||||
typeof( StoneStatue ),
|
||||
typeof( Goliath ),
|
||||
typeof( MudElemental ),
|
||||
typeof( MagmaElemental ),
|
||||
typeof( WoodElemental ),
|
||||
typeof( Efreet ),
|
||||
typeof( FireElemental ),
|
||||
typeof( IceElemental ),
|
||||
typeof( LightningElemental ),
|
||||
typeof( PoisonElemental ),
|
||||
typeof( GasCloud ),
|
||||
typeof( StormCloud ),
|
||||
typeof( SandVortex ),
|
||||
typeof( SnowElemental ),
|
||||
typeof( Typhoon ),
|
||||
typeof( WaterElemental ) );
|
||||
elemental.Entries = new SlayerEntry[]
|
||||
{
|
||||
new SlayerEntry( SlayerName.BloodDrinking,
|
||||
typeof( BloodElementalElder ),
|
||||
typeof( BloodElemental ) ),
|
||||
new SlayerEntry( SlayerName.StoneShatter,
|
||||
typeof( StoneGolem ),
|
||||
typeof( StoneStatue ),
|
||||
typeof( MeteorElemental ),
|
||||
typeof( Goliath ),
|
||||
typeof( MudElemental ),
|
||||
typeof( MagmaElemental ),
|
||||
typeof( EarthElemental ) ),
|
||||
new SlayerEntry( SlayerName.ElementalHealth,
|
||||
typeof( PoisonElementalElder ),
|
||||
typeof( GasCloud ),
|
||||
typeof( PoisonElemental ) ),
|
||||
new SlayerEntry( SlayerName.FlameDousing,
|
||||
typeof( FireElemental ) ),
|
||||
new SlayerEntry( SlayerName.SummerBreeze,
|
||||
typeof( SnowElemental ),
|
||||
typeof( IceElemental ) ),
|
||||
new SlayerEntry( SlayerName.AirAbolish,
|
||||
typeof( LightningElemental ),
|
||||
typeof( AirElemental ) ),
|
||||
new SlayerEntry( SlayerName.WaterEvaporation,
|
||||
typeof( Typhoon ),
|
||||
typeof( StormCloud ),
|
||||
typeof( WaterElementalElder ),
|
||||
typeof( DeepSeaElemental ),
|
||||
typeof( WaterElemental ) )
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
abyss.Super = new SlayerEntry( SlayerName.Exorcism,
|
||||
typeof( Balron ),
|
||||
typeof( SeaDevil ),
|
||||
typeof( Daemon ),
|
||||
typeof( ShadowDemon ),
|
||||
typeof( Minion ),
|
||||
typeof( MinionWizard ),
|
||||
typeof( MinionWarrior ),
|
||||
typeof( Ktulu ),
|
||||
typeof( Deviless ),
|
||||
typeof( HornedDevil ),
|
||||
typeof( Gargoyle ),
|
||||
typeof( GargoyleMage ),
|
||||
typeof( GargoyleKnight ),
|
||||
typeof( GargoyleIce ),
|
||||
typeof( GargoyleStone ),
|
||||
typeof( GargoyleWizard ),
|
||||
typeof( GargoyleCrimson ),
|
||||
typeof( FireGargoyle ),
|
||||
typeof( DemonicSpirit ),
|
||||
typeof( DemonClaw ),
|
||||
typeof( Demoness ),
|
||||
typeof( IceFiend ),
|
||||
typeof( IceDevil ),
|
||||
typeof( Imp ),
|
||||
typeof( FireImp ),
|
||||
typeof( IceImp ),
|
||||
typeof( Succubus ),
|
||||
typeof( SuccubusQueen ),
|
||||
typeof( StoneGargoyle ) );
|
||||
|
||||
abyss.Entries = new SlayerEntry[]
|
||||
{
|
||||
new SlayerEntry( SlayerName.DaemonDismissal,
|
||||
typeof( Daemon ),
|
||||
typeof( ShadowDemon ),
|
||||
typeof( Ktulu ),
|
||||
typeof( Deviless ),
|
||||
typeof( IceFiend ),
|
||||
typeof( DemonClaw ),
|
||||
typeof( Demoness ),
|
||||
typeof( Imp ),
|
||||
typeof( FireImp ),
|
||||
typeof( DemonicSpirit ),
|
||||
typeof( IceImp ),
|
||||
typeof( Succubus ),
|
||||
typeof( SuccubusQueen ) ),
|
||||
new SlayerEntry( SlayerName.GargoylesFoe,
|
||||
typeof( FireGargoyle ),
|
||||
typeof( Gargoyle ),
|
||||
typeof( GargoyleMage ),
|
||||
typeof( GargoyleKnight ),
|
||||
typeof( GargoyleIce ),
|
||||
typeof( GargoyleStone ),
|
||||
typeof( GargoyleWizard ),
|
||||
typeof( GargoyleCrimson ),
|
||||
typeof( StoneGargoyle ) ),
|
||||
new SlayerEntry( SlayerName.DevilishDamnation,
|
||||
typeof( IceDevil ),
|
||||
typeof( SeaDevil ),
|
||||
typeof( Minion ),
|
||||
typeof( MinionWizard ),
|
||||
typeof( MinionWarrior ),
|
||||
typeof( HornedDevil ),
|
||||
typeof( Balron ) )
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
arachnid.Super = new SlayerEntry( SlayerName.BugButcher,
|
||||
typeof( DreadSpider ),
|
||||
typeof( FrostSpider ),
|
||||
typeof( GiantBlackWidow ),
|
||||
typeof( BloodSpider ),
|
||||
typeof( Kith ),
|
||||
typeof( WidowQueen ),
|
||||
typeof( GiantSpider ),
|
||||
typeof( FlameCrawler ),
|
||||
typeof( Scorpion ),
|
||||
typeof( Mantis ),
|
||||
typeof( ArcaneScarab ),
|
||||
typeof( Shaclaw ),
|
||||
typeof( FireBeetle ),
|
||||
typeof( GoraxHorned ),
|
||||
typeof( GoraxSlicer ),
|
||||
typeof( Swarm ),
|
||||
typeof( AntLion ),
|
||||
typeof( SandScorpion ),
|
||||
typeof( Scarab ),
|
||||
typeof( GiantScarab ),
|
||||
typeof( DeadlyScorpion ),
|
||||
typeof( Beetle ),
|
||||
typeof( IronBeetle ),
|
||||
typeof( CarcassWorm ),
|
||||
typeof( AntaurWorker ),
|
||||
typeof( AntaurSoldier ),
|
||||
typeof( AntaurLord ),
|
||||
typeof( AntaurQueen ),
|
||||
typeof( TerathanAvenger ),
|
||||
typeof( TerathanDrone ),
|
||||
typeof( TerathanMatriarch ),
|
||||
typeof( TerathanWarrior ) );
|
||||
arachnid.Entries = new SlayerEntry[]
|
||||
{
|
||||
new SlayerEntry( SlayerName.ScorpionsBane,
|
||||
typeof( FlameCrawler ),
|
||||
typeof( SandScorpion ),
|
||||
typeof( DeadlyScorpion ),
|
||||
typeof( Scorpion ) ),
|
||||
new SlayerEntry( SlayerName.SpidersDeath,
|
||||
typeof( Kith ),
|
||||
typeof( DreadSpider ),
|
||||
typeof( FrostSpider ),
|
||||
typeof( GiantBlackWidow ),
|
||||
typeof( BloodSpider ),
|
||||
typeof( WidowQueen ),
|
||||
typeof( GiantSpider ) ),
|
||||
new SlayerEntry( SlayerName.InsectoidExtermination,
|
||||
typeof( AntaurWorker ),
|
||||
typeof( AntaurSoldier ),
|
||||
typeof( AntaurLord ),
|
||||
typeof( AntaurQueen ),
|
||||
typeof( TerathanAvenger ),
|
||||
typeof( TerathanDrone ),
|
||||
typeof( TerathanMatriarch ),
|
||||
typeof( TerathanWarrior ) )
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
reptilian.Super = new SlayerEntry( SlayerName.ReptilianDeath,
|
||||
typeof( SeaDragon ),
|
||||
typeof( AncientWyrm ),
|
||||
typeof( DeepSeaSerpent ),
|
||||
typeof( GiantEel ),
|
||||
typeof( Dragon ),
|
||||
typeof( Drakkhen ),
|
||||
typeof( DragonTurtle ),
|
||||
typeof( Turtle ),
|
||||
typeof( Drake ),
|
||||
typeof( LavaDrake ),
|
||||
typeof( SeaDrake ),
|
||||
typeof( SwampDragon ),
|
||||
typeof( Serperus ),
|
||||
typeof( IceSerpent ),
|
||||
typeof( GiantSerpent ),
|
||||
typeof( Torax ),
|
||||
typeof( GiantLizard ),
|
||||
typeof( GiantToad ),
|
||||
typeof( IceToad ),
|
||||
typeof( FireToad ),
|
||||
typeof( BullFrog ),
|
||||
typeof( Viper ),
|
||||
typeof( LavaSerpent ),
|
||||
typeof( Cobra ),
|
||||
typeof( Lizardman ),
|
||||
typeof( Drasolisk ),
|
||||
typeof( Silisk ),
|
||||
typeof( Sakkhra ),
|
||||
typeof( SakkhraShaman ),
|
||||
typeof( Naga ),
|
||||
typeof( NagaWarrior ),
|
||||
typeof( NagaQueen ),
|
||||
typeof( FireNaga ),
|
||||
typeof( OphidianArchmage ),
|
||||
typeof( Teradactyl ),
|
||||
typeof( Stegosaurus ),
|
||||
typeof( Meglasaur ),
|
||||
typeof( Gorceratops ),
|
||||
typeof( Lochasaur ),
|
||||
typeof( Tyranasaur ),
|
||||
typeof( Kobra ),
|
||||
typeof( OphidianKnight ),
|
||||
typeof( OphidianMage ),
|
||||
typeof( OphidianMatriarch ),
|
||||
typeof( OphidianWarrior ),
|
||||
typeof( Hydra ),
|
||||
typeof( SeaHydra ),
|
||||
typeof( Medusa ),
|
||||
typeof( IceSalamander ),
|
||||
typeof( FireSalamander ),
|
||||
typeof( Raptor ),
|
||||
typeof( SeaSerpent ),
|
||||
typeof( ShadowWyrm ),
|
||||
typeof( SilverSerpent ),
|
||||
typeof( SkeletalDragon ),
|
||||
typeof( VampiricDragon ),
|
||||
typeof( ZombieDragon ),
|
||||
typeof( BoneDrake ),
|
||||
typeof( VampiricDrake ),
|
||||
typeof( RottingDrake ),
|
||||
typeof( Snake ),
|
||||
typeof( WhiteWyrm ),
|
||||
typeof( AncientWyvern ),
|
||||
typeof( Wyvern ) );
|
||||
reptilian.Entries = new SlayerEntry[]
|
||||
{
|
||||
new SlayerEntry( SlayerName.DragonSlaying,
|
||||
typeof( AncientWyrm ),
|
||||
typeof( Dragon ),
|
||||
typeof( Drakkhen ),
|
||||
typeof( Drake ),
|
||||
typeof( LavaDrake ),
|
||||
typeof( SeaDrake ),
|
||||
typeof( SwampDragon ),
|
||||
typeof( ShadowWyrm ),
|
||||
typeof( DragonTurtle ),
|
||||
typeof( SkeletalDragon ),
|
||||
typeof( VampiricDragon ),
|
||||
typeof( BoneDrake ),
|
||||
typeof( ZombieDragon ),
|
||||
typeof( RottingDrake ),
|
||||
typeof( VampiricDrake ),
|
||||
typeof( SeaDragon ),
|
||||
typeof( WhiteWyrm ),
|
||||
typeof( AncientWyvern ),
|
||||
typeof( Wyvern ) ),
|
||||
new SlayerEntry( SlayerName.LizardmanSlaughter,
|
||||
typeof( Drasolisk ),
|
||||
typeof( Silisk ),
|
||||
typeof( Sakkhra ),
|
||||
typeof( SakkhraShaman ),
|
||||
typeof( Lizardman ) ),
|
||||
new SlayerEntry( SlayerName.SerpentoidMassacre,
|
||||
typeof( Naga ),
|
||||
typeof( NagaWarrior ),
|
||||
typeof( NagaQueen ),
|
||||
typeof( FireNaga ),
|
||||
typeof( IceSalamander ),
|
||||
typeof( FireSalamander ),
|
||||
typeof( Medusa ),
|
||||
typeof( Hydra ),
|
||||
typeof( SeaHydra ),
|
||||
typeof( Kobra ),
|
||||
typeof( OphidianArchmage ),
|
||||
typeof( OphidianKnight ),
|
||||
typeof( OphidianMage ),
|
||||
typeof( OphidianMatriarch ),
|
||||
typeof( OphidianWarrior ) ),
|
||||
new SlayerEntry( SlayerName.SerpentBane,
|
||||
typeof( GiantEel ),
|
||||
typeof( DeepSeaSerpent ),
|
||||
typeof( GiantSerpent ),
|
||||
typeof( IceSerpent ),
|
||||
typeof( Viper ),
|
||||
typeof( LavaSerpent ),
|
||||
typeof( Cobra ),
|
||||
typeof( SeaSerpent ),
|
||||
typeof( SilverSerpent ),
|
||||
typeof( Snake ) )
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
m_Groups = new SlayerGroup[]
|
||||
{
|
||||
humanoid,
|
||||
undead,
|
||||
elemental,
|
||||
abyss,
|
||||
arachnid,
|
||||
reptilian,
|
||||
nature,
|
||||
sea,
|
||||
weed
|
||||
};
|
||||
|
||||
m_TotalEntries = CompileEntries( m_Groups );
|
||||
}
|
||||
|
||||
private static SlayerEntry[] CompileEntries( SlayerGroup[] groups )
|
||||
{
|
||||
SlayerEntry[] entries = new SlayerEntry[32];
|
||||
|
||||
for ( int i = 0; i < groups.Length; ++i )
|
||||
{
|
||||
SlayerGroup g = groups[i];
|
||||
|
||||
g.Super.Group = g;
|
||||
|
||||
entries[(int)g.Super.Name] = g.Super;
|
||||
|
||||
for ( int j = 0; j < g.Entries.Length; ++j )
|
||||
{
|
||||
g.Entries[j].Group = g;
|
||||
entries[(int)g.Entries[j].Name] = g.Entries[j];
|
||||
}
|
||||
}
|
||||
|
||||
return entries;
|
||||
}
|
||||
|
||||
private SlayerEntry m_Super;
|
||||
private SlayerEntry[] m_Entries;
|
||||
|
||||
public SlayerEntry Super{ get{ return m_Super; } set{ m_Super = value; } }
|
||||
public SlayerEntry[] Entries{ get{ return m_Entries; } set{ m_Entries = value; } }
|
||||
|
||||
public SlayerGroup()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
40
Scripts/Items/Weapons/SlayerName.cs
Normal file
40
Scripts/Items/Weapons/SlayerName.cs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
using System;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public enum SlayerName
|
||||
{
|
||||
None,
|
||||
UndeadDoom,
|
||||
GiantsFall,
|
||||
OrcSlaying,
|
||||
TrollSlaughter,
|
||||
OgreTrashing,
|
||||
Executioner,
|
||||
DragonSlaying,
|
||||
InsectoidExtermination,
|
||||
SerpentBane,
|
||||
LizardmanSlaughter,
|
||||
ReptilianDeath,
|
||||
DaemonDismissal,
|
||||
GargoylesFoe,
|
||||
DevilishDamnation,
|
||||
Exorcism,
|
||||
SerpentoidMassacre,
|
||||
SpidersDeath,
|
||||
ScorpionsBane,
|
||||
BugButcher,
|
||||
FlameDousing,
|
||||
WaterEvaporation,
|
||||
AirAbolish,
|
||||
ElementalHealth,
|
||||
StoneShatter,
|
||||
BloodDrinking,
|
||||
SummerBreeze,
|
||||
ElementalBan,
|
||||
NaturesFury,
|
||||
SeaSlaughter,
|
||||
GoblinoidHunter,
|
||||
WeedWrecker
|
||||
}
|
||||
}
|
||||
60
Scripts/Items/Weapons/SpearsAndForks/BaseSpear.cs
Normal file
60
Scripts/Items/Weapons/SpearsAndForks/BaseSpear.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public abstract class BaseSpear : BaseMeleeWeapon
|
||||
{
|
||||
public override int DefHitSound{ get{ return 0x23C; } }
|
||||
public override int DefMissSound{ get{ return 0x238; } }
|
||||
|
||||
public override SkillName DefSkill{ get{ return SkillName.Fencing; } }
|
||||
public override WeaponType DefType{ get{ return WeaponType.Piercing; } }
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Pierce2H; } }
|
||||
|
||||
public BaseSpear( int itemID ) : base( itemID )
|
||||
{
|
||||
}
|
||||
|
||||
public BaseSpear( 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();
|
||||
}
|
||||
|
||||
public override void OnHit( Mobile attacker, Mobile defender, double damageBonus )
|
||||
{
|
||||
base.OnHit( attacker, defender, damageBonus );
|
||||
|
||||
if ( Layer == Layer.TwoHanded && (attacker.Skills[SkillName.Tactics].Value / 400.0) >= Utility.RandomDouble() )
|
||||
{
|
||||
defender.SendMessage( "You receive a paralyzing blow!" ); // Is this not localized?
|
||||
defender.Freeze( TimeSpan.FromSeconds( 2.0 ) );
|
||||
|
||||
attacker.SendMessage( "You deliver a paralyzing blow!" ); // Is this not localized?
|
||||
attacker.PlaySound( 0x11C );
|
||||
}
|
||||
|
||||
if ( Poison != null && PoisonCharges > 0 )
|
||||
{
|
||||
--PoisonCharges;
|
||||
|
||||
if ( Utility.RandomDouble() >= 0.5 ) // 50% chance to poison
|
||||
defender.ApplyPoison( attacker, Poison );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Items/Weapons/SpearsAndForks/Pike.cs
Normal file
42
Scripts/Items/Weapons/SpearsAndForks/Pike.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x26BE, 0x26C8 )]
|
||||
public class Pike : BaseSpear
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 50; } }
|
||||
public override int UOMinDamage{ get{ return 14; } }
|
||||
public override int UOMaxDamage{ get{ return 16; } }
|
||||
public override int UOSpeed{ get{ return 37; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 110; } }
|
||||
|
||||
[Constructable]
|
||||
public Pike() : base( 0x26BE )
|
||||
{
|
||||
Weight = 8.0;
|
||||
}
|
||||
|
||||
public Pike( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
Scripts/Items/Weapons/SpearsAndForks/Pitchfork.cs
Normal file
45
Scripts/Items/Weapons/SpearsAndForks/Pitchfork.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xE87, 0xE88 )]
|
||||
public class Pitchfork : BaseSpear
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 15; } }
|
||||
public override int UOMinDamage{ get{ return 4; } }
|
||||
public override int UOMaxDamage{ get{ return 16; } }
|
||||
public override int UOSpeed{ get{ return 45; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 60; } }
|
||||
|
||||
[Constructable]
|
||||
public Pitchfork() : base( 0xE87 )
|
||||
{
|
||||
Weight = 11.0;
|
||||
}
|
||||
|
||||
public Pitchfork( 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();
|
||||
|
||||
if ( Weight == 10.0 )
|
||||
Weight = 11.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Items/Weapons/SpearsAndForks/Spear.cs
Normal file
42
Scripts/Items/Weapons/SpearsAndForks/Spear.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xF62, 0xF63 )]
|
||||
public class Spear : BaseSpear
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 30; } }
|
||||
public override int UOMinDamage{ get{ return 2; } }
|
||||
public override int UOMaxDamage{ get{ return 36; } }
|
||||
public override int UOSpeed{ get{ return 46; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 80; } }
|
||||
|
||||
[Constructable]
|
||||
public Spear() : base( 0xF62 )
|
||||
{
|
||||
Weight = 7.0;
|
||||
}
|
||||
|
||||
public Spear( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
47
Scripts/Items/Weapons/SpearsAndForks/WarFork.cs
Normal file
47
Scripts/Items/Weapons/SpearsAndForks/WarFork.cs
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x1405, 0x1404 )]
|
||||
public class WarFork : BaseSpear
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 35; } }
|
||||
public override int UOMinDamage{ get{ return 4; } }
|
||||
public override int UOMaxDamage{ get{ return 32; } }
|
||||
public override int UOSpeed{ get{ return 45; } }
|
||||
|
||||
public override int DefHitSound{ get{ return 0x236; } }
|
||||
public override int DefMissSound{ get{ return 0x238; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 110; } }
|
||||
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Pierce1H; } }
|
||||
|
||||
[Constructable]
|
||||
public WarFork() : base( 0x1405 )
|
||||
{
|
||||
Weight = 9.0;
|
||||
}
|
||||
|
||||
public WarFork( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
Scripts/Items/Weapons/Staves/BaseStaff.cs
Normal file
45
Scripts/Items/Weapons/Staves/BaseStaff.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public abstract class BaseStaff : BaseMeleeWeapon
|
||||
{
|
||||
public override int DefHitSound{ get{ return 0x233; } }
|
||||
public override int DefMissSound{ get{ return 0x239; } }
|
||||
|
||||
public override SkillName DefSkill{ get{ return SkillName.Bludgeoning; } }
|
||||
public override WeaponType DefType{ get{ return WeaponType.Staff; } }
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Bash2H; } }
|
||||
|
||||
public BaseStaff( int itemID ) : base( itemID )
|
||||
{
|
||||
}
|
||||
|
||||
public BaseStaff( 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();
|
||||
}
|
||||
|
||||
public override void OnHit( Mobile attacker, Mobile defender, double damageBonus )
|
||||
{
|
||||
base.OnHit( attacker, defender, damageBonus );
|
||||
|
||||
defender.Stam -= Utility.Random( 3, 3 ); // 3-5 points of stamina loss
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Items/Weapons/Staves/BlackStaff.cs
Normal file
42
Scripts/Items/Weapons/Staves/BlackStaff.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xDF1, 0xDF0 )]
|
||||
public class BlackStaff : BaseStaff
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 35; } }
|
||||
public override int UOMinDamage{ get{ return 8; } }
|
||||
public override int UOMaxDamage{ get{ return 33; } }
|
||||
public override int UOSpeed{ get{ return 35; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 70; } }
|
||||
|
||||
[Constructable]
|
||||
public BlackStaff() : base( 0xDF0 )
|
||||
{
|
||||
Weight = 6.0;
|
||||
}
|
||||
|
||||
public BlackStaff( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
35
Scripts/Items/Weapons/Staves/GlacialStaff.cs
Normal file
35
Scripts/Items/Weapons/Staves/GlacialStaff.cs
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class GlacialStaff : BlackStaff
|
||||
{
|
||||
public override int LabelNumber{ get{ return 1017413; } } // Glacial Staff
|
||||
|
||||
[Constructable]
|
||||
public GlacialStaff()
|
||||
{
|
||||
Hue = 0x480;
|
||||
}
|
||||
|
||||
public GlacialStaff( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
43
Scripts/Items/Weapons/Staves/GnarledStaff.cs
Normal file
43
Scripts/Items/Weapons/Staves/GnarledStaff.cs
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x13F8, 0x13F9 )]
|
||||
public class GnarledStaff : BaseStaff
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 20; } }
|
||||
public override int UOMinDamage{ get{ return 10; } }
|
||||
public override int UOMaxDamage{ get{ return 30; } }
|
||||
public override int UOSpeed{ get{ return 33; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 50; } }
|
||||
|
||||
[Constructable]
|
||||
public GnarledStaff() : base( 0x13F8 )
|
||||
{
|
||||
Weight = 3.0;
|
||||
Resource = CraftResource.Wooden;
|
||||
}
|
||||
|
||||
public GnarledStaff( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
43
Scripts/Items/Weapons/Staves/QuarterStaff.cs
Normal file
43
Scripts/Items/Weapons/Staves/QuarterStaff.cs
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xE89, 0xE8a )]
|
||||
public class QuarterStaff : BaseStaff
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 30; } }
|
||||
public override int UOMinDamage{ get{ return 8; } }
|
||||
public override int UOMaxDamage{ get{ return 28; } }
|
||||
public override int UOSpeed{ get{ return 48; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 60; } }
|
||||
|
||||
[Constructable]
|
||||
public QuarterStaff() : base( 0xE89 )
|
||||
{
|
||||
Weight = 4.0;
|
||||
Resource = CraftResource.Wooden;
|
||||
}
|
||||
|
||||
public QuarterStaff( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
Scripts/Items/Weapons/Staves/ShepherdsCrook.cs
Normal file
45
Scripts/Items/Weapons/Staves/ShepherdsCrook.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xE81, 0xE82 )]
|
||||
public class ShepherdsCrook : BaseStaff
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 10; } }
|
||||
public override int UOMinDamage{ get{ return 3; } }
|
||||
public override int UOMaxDamage{ get{ return 12; } }
|
||||
public override int UOSpeed{ get{ return 30; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 50; } }
|
||||
|
||||
[Constructable]
|
||||
public ShepherdsCrook() : base( 0xE81 )
|
||||
{
|
||||
Weight = 4.0;
|
||||
Resource = CraftResource.Wooden;
|
||||
}
|
||||
|
||||
public ShepherdsCrook( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
56
Scripts/Items/Weapons/Swords/BaseSword.cs
Normal file
56
Scripts/Items/Weapons/Swords/BaseSword.cs
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Targets;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public abstract class BaseSword : BaseMeleeWeapon
|
||||
{
|
||||
public override SkillName DefSkill{ get{ return SkillName.Swords; } }
|
||||
public override WeaponType DefType{ get{ return WeaponType.Slashing; } }
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Slash1H; } }
|
||||
|
||||
public BaseSword( int itemID ) : base( itemID )
|
||||
{
|
||||
}
|
||||
|
||||
public BaseSword( 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();
|
||||
}
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
from.SendLocalizedMessage( 1010018 ); // What do you want to use this item on?
|
||||
|
||||
from.Target = new BladedItemTarget( this );
|
||||
}
|
||||
|
||||
public override void OnHit( Mobile attacker, Mobile defender, double damageBonus )
|
||||
{
|
||||
base.OnHit( attacker, defender, damageBonus );
|
||||
|
||||
if ( Poison != null && PoisonCharges > 0 )
|
||||
{
|
||||
--PoisonCharges;
|
||||
|
||||
if ( Utility.RandomDouble() >= 0.5 ) // 50% chance to poison
|
||||
defender.ApplyPoison( attacker, Poison );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
45
Scripts/Items/Weapons/Swords/Broadsword.cs
Normal file
45
Scripts/Items/Weapons/Swords/Broadsword.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xF5E, 0xF5F )]
|
||||
public class Broadsword : BaseSword
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 25; } }
|
||||
public override int UOMinDamage{ get{ return 5; } }
|
||||
public override int UOMaxDamage{ get{ return 29; } }
|
||||
public override int UOSpeed{ get{ return 45; } }
|
||||
|
||||
public override int DefHitSound{ get{ return 0x237; } }
|
||||
public override int DefMissSound{ get{ return 0x23A; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 100; } }
|
||||
|
||||
[Constructable]
|
||||
public Broadsword() : base( 0xF5E )
|
||||
{
|
||||
Weight = 6.0;
|
||||
}
|
||||
|
||||
public Broadsword( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
Scripts/Items/Weapons/Swords/Cutlass.cs
Normal file
45
Scripts/Items/Weapons/Swords/Cutlass.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x1441, 0x1440 )]
|
||||
public class Cutlass : BaseSword
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 10; } }
|
||||
public override int UOMinDamage{ get{ return 6; } }
|
||||
public override int UOMaxDamage{ get{ return 28; } }
|
||||
public override int UOSpeed{ get{ return 45; } }
|
||||
|
||||
public override int DefHitSound{ get{ return 0x23B; } }
|
||||
public override int DefMissSound{ get{ return 0x23A; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 70; } }
|
||||
|
||||
[Constructable]
|
||||
public Cutlass() : base( 0x1441 )
|
||||
{
|
||||
Weight = 8.0;
|
||||
}
|
||||
|
||||
public Cutlass( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
Scripts/Items/Weapons/Swords/Katana.cs
Normal file
45
Scripts/Items/Weapons/Swords/Katana.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x13FF, 0x13FE )]
|
||||
public class Katana : BaseSword
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 10; } }
|
||||
public override int UOMinDamage{ get{ return 5; } }
|
||||
public override int UOMaxDamage{ get{ return 26; } }
|
||||
public override int UOSpeed{ get{ return 58; } }
|
||||
|
||||
public override int DefHitSound{ get{ return 0x23B; } }
|
||||
public override int DefMissSound{ get{ return 0x23A; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 90; } }
|
||||
|
||||
[Constructable]
|
||||
public Katana() : base( 0x13FF )
|
||||
{
|
||||
Weight = 6.0;
|
||||
}
|
||||
|
||||
public Katana( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
52
Scripts/Items/Weapons/Swords/Kryss.cs
Normal file
52
Scripts/Items/Weapons/Swords/Kryss.cs
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x1401, 0x1400 )]
|
||||
public class Kryss : BaseSword
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 10; } }
|
||||
public override int UOMinDamage{ get{ return 3; } }
|
||||
public override int UOMaxDamage{ get{ return 28; } }
|
||||
public override int UOSpeed{ get{ return 53; } }
|
||||
|
||||
public override int DefHitSound{ get{ return 0x23C; } }
|
||||
public override int DefMissSound{ get{ return 0x238; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 90; } }
|
||||
|
||||
public override SkillName DefSkill{ get{ return SkillName.Fencing; } }
|
||||
public override WeaponType DefType{ get{ return WeaponType.Piercing; } }
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Pierce1H; } }
|
||||
|
||||
[Constructable]
|
||||
public Kryss() : base( 0x1401 )
|
||||
{
|
||||
Weight = 2.0;
|
||||
}
|
||||
|
||||
public Kryss( 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();
|
||||
|
||||
if ( Weight == 1.0 )
|
||||
Weight = 2.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
45
Scripts/Items/Weapons/Swords/Longsword.cs
Normal file
45
Scripts/Items/Weapons/Swords/Longsword.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xF61, 0xF60 )]
|
||||
public class Longsword : BaseSword
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 25; } }
|
||||
public override int UOMinDamage{ get{ return 5; } }
|
||||
public override int UOMaxDamage{ get{ return 33; } }
|
||||
public override int UOSpeed{ get{ return 35; } }
|
||||
|
||||
public override int DefHitSound{ get{ return 0x237; } }
|
||||
public override int DefMissSound{ get{ return 0x23A; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 110; } }
|
||||
|
||||
[Constructable]
|
||||
public Longsword() : base( 0xF61 )
|
||||
{
|
||||
Weight = 7.0;
|
||||
}
|
||||
|
||||
public Longsword( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
47
Scripts/Items/Weapons/Swords/Rapier.cs
Normal file
47
Scripts/Items/Weapons/Swords/Rapier.cs
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x1403, 0x1402 )]
|
||||
public class Rapier : BaseSword
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 15; } }
|
||||
public override int UOMinDamage{ get{ return 4; } }
|
||||
public override int UOMaxDamage{ get{ return 32; } }
|
||||
public override int UOSpeed{ get{ return 50; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 70; } }
|
||||
|
||||
public override SkillName DefSkill{ get{ return SkillName.Fencing; } }
|
||||
public override WeaponType DefType{ get{ return WeaponType.Piercing; } }
|
||||
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Pierce1H; } }
|
||||
|
||||
[Constructable]
|
||||
public Rapier() : base( 0x1403 )
|
||||
{
|
||||
Weight = 4.0;
|
||||
Name = "rapier";
|
||||
}
|
||||
|
||||
public Rapier( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
Scripts/Items/Weapons/Swords/Scimitar.cs
Normal file
45
Scripts/Items/Weapons/Swords/Scimitar.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x13B6, 0x13B5 )]
|
||||
public class Scimitar : BaseSword
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 10; } }
|
||||
public override int UOMinDamage{ get{ return 4; } }
|
||||
public override int UOMaxDamage{ get{ return 30; } }
|
||||
public override int UOSpeed{ get{ return 43; } }
|
||||
|
||||
public override int DefHitSound{ get{ return 0x23B; } }
|
||||
public override int DefMissSound{ get{ return 0x23A; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 90; } }
|
||||
|
||||
[Constructable]
|
||||
public Scimitar() : base( 0x13B6 )
|
||||
{
|
||||
Weight = 5.0;
|
||||
}
|
||||
|
||||
public Scimitar( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
Scripts/Items/Weapons/Swords/ThinLongsword.cs
Normal file
45
Scripts/Items/Weapons/Swords/ThinLongsword.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x13B8, 0x13B7 )]
|
||||
public class ThinLongsword : BaseSword
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 25; } }
|
||||
public override int UOMinDamage{ get{ return 5; } }
|
||||
public override int UOMaxDamage{ get{ return 33; } }
|
||||
public override int UOSpeed{ get{ return 35; } }
|
||||
|
||||
public override int DefHitSound{ get{ return 0x237; } }
|
||||
public override int DefMissSound{ get{ return 0x23A; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 110; } }
|
||||
|
||||
[Constructable]
|
||||
public ThinLongsword() : base( 0x13B8 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
}
|
||||
|
||||
public ThinLongsword( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
Scripts/Items/Weapons/Swords/VikingSword.cs
Normal file
45
Scripts/Items/Weapons/Swords/VikingSword.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0x13B9, 0x13Ba )]
|
||||
public class VikingSword : BaseSword
|
||||
{
|
||||
public override int UOStrengthReq{ get{ return 40; } }
|
||||
public override int UOMinDamage{ get{ return 6; } }
|
||||
public override int UOMaxDamage{ get{ return 34; } }
|
||||
public override int UOSpeed{ get{ return 30; } }
|
||||
|
||||
public override int DefHitSound{ get{ return 0x237; } }
|
||||
public override int DefMissSound{ get{ return 0x23A; } }
|
||||
|
||||
public override int InitMinHits{ get{ return 31; } }
|
||||
public override int InitMaxHits{ get{ return 100; } }
|
||||
|
||||
[Constructable]
|
||||
public VikingSword() : base( 0x13B9 )
|
||||
{
|
||||
Weight = 6.0;
|
||||
}
|
||||
|
||||
public VikingSword( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
66
Scripts/Items/Weapons/WeaponEnums.cs
Normal file
66
Scripts/Items/Weapons/WeaponEnums.cs
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
using System;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public enum WeaponQuality
|
||||
{
|
||||
Low,
|
||||
Regular,
|
||||
Exceptional
|
||||
}
|
||||
|
||||
public enum WeaponType
|
||||
{
|
||||
Axe, // Axes, Hatches, etc. These can give concussion blows
|
||||
Slashing, // Katana, Broadsword, Longsword, etc. Slashing weapons are poisonable
|
||||
Staff, // Staves
|
||||
Bashing, // War Hammers, Maces, Mauls, etc. Two-handed bashing delivers crushing blows
|
||||
Piercing, // Spears, Warforks, Daggers, etc. Two-handed piercing delivers paralyzing blows
|
||||
Polearm, // Halberd, Bardiche
|
||||
Ranged, // Bow, Crossbows
|
||||
Fists // Fists
|
||||
}
|
||||
|
||||
public enum WeaponDamageLevel
|
||||
{
|
||||
Regular,
|
||||
Ruin,
|
||||
Might,
|
||||
Force,
|
||||
Power,
|
||||
Vanq
|
||||
}
|
||||
|
||||
public enum WeaponAccuracyLevel
|
||||
{
|
||||
Regular,
|
||||
Accurate,
|
||||
Surpassingly,
|
||||
Eminently,
|
||||
Exceedingly,
|
||||
Supremely
|
||||
}
|
||||
|
||||
public enum WeaponDurabilityLevel
|
||||
{
|
||||
Regular,
|
||||
Durable,
|
||||
Substantial,
|
||||
Massive,
|
||||
Fortified,
|
||||
Indestructible
|
||||
}
|
||||
|
||||
public enum WeaponAnimation
|
||||
{
|
||||
Slash1H = 9,
|
||||
Pierce1H = 10,
|
||||
Bash1H = 11,
|
||||
Bash2H = 12,
|
||||
Slash2H = 13,
|
||||
Pierce2H = 14,
|
||||
ShootBow = 18,
|
||||
ShootXBow = 19,
|
||||
Wrestle = 31
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue