#W# Initial Commit: Avatars Conquest
This commit is contained in:
commit
8eae46895e
7512 changed files with 416187 additions and 0 deletions
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue