Reorganizes Project (#41)

This commit is contained in:
Kamron Batman 2019-08-02 18:13:40 -07:00 committed by GitHub
parent 08bf44af9a
commit 3614a66aee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3499 changed files with 79 additions and 55 deletions

View file

@ -0,0 +1,47 @@
namespace Server.Items
{
[Flippable(0xF4D, 0xF4E)]
public class Bardiche : BasePoleArm
{
[Constructible]
public Bardiche() : base(0xF4D)
{
Weight = 7.0;
}
public Bardiche(Serial serial) : base(serial)
{
}
public override WeaponAbility PrimaryAbility => WeaponAbility.ParalyzingBlow;
public override WeaponAbility SecondaryAbility => WeaponAbility.Dismount;
public override int AosStrengthReq => 45;
public override int AosMinDamage => 17;
public override int AosMaxDamage => 18;
public override int AosSpeed => 28;
public override float MlSpeed => 3.75f;
public override int OldStrengthReq => 40;
public override int OldMinDamage => 5;
public override int OldMaxDamage => 43;
public override int OldSpeed => 26;
public override int InitMinHits => 31;
public override int InitMaxHits => 100;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,136 @@
using System;
using System.Collections.Generic;
using Server.ContextMenus;
using Server.Engines.ConPVP;
using Server.Engines.Harvest;
namespace Server.Items
{
public abstract class BasePoleArm : BaseMeleeWeapon, IUsesRemaining
{
private bool m_ShowUsesRemaining;
private int m_UsesRemaining;
public BasePoleArm(int itemID) : base(itemID)
{
m_UsesRemaining = 150;
}
public BasePoleArm(Serial serial) : base(serial)
{
}
public override int DefHitSound => 0x237;
public override int DefMissSound => 0x238;
public override SkillName DefSkill => SkillName.Swords;
public override WeaponType DefType => WeaponType.Polearm;
public override WeaponAnimation DefAnimation => WeaponAnimation.Slash2H;
public virtual HarvestSystem HarvestSystem => Lumberjacking.System;
[CommandProperty(AccessLevel.GameMaster)]
public int UsesRemaining
{
get => m_UsesRemaining;
set
{
m_UsesRemaining = value;
InvalidateProperties();
}
}
[CommandProperty(AccessLevel.GameMaster)]
public bool ShowUsesRemaining
{
get => m_ShowUsesRemaining;
set
{
m_ShowUsesRemaining = value;
InvalidateProperties();
}
}
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 GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
{
base.GetContextMenuEntries(from, list);
if (HarvestSystem != null)
BaseHarvestTool.AddContextMenuEntries(from, this, list, HarvestSystem);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(2); // version
writer.Write(m_ShowUsesRemaining);
writer.Write(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 = 1)
{
base.OnHit(attacker, defender, damageBonus);
if (!Core.AOS && (attacker.Player || attacker.Body.IsHuman) && Layer == Layer.TwoHanded &&
attacker.Skills.Anatomy.Value >= 80 &&
attacker.Skills.Anatomy.Value / 400.0 >= Utility.RandomDouble() &&
DuelContext.AllowSpecialAbility(attacker, "Concussion Blow", false))
{
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);
}
}
}
}
}

View file

@ -0,0 +1,47 @@
namespace Server.Items
{
[Flippable(0x143E, 0x143F)]
public class Halberd : BasePoleArm
{
[Constructible]
public Halberd() : base(0x143E)
{
Weight = 16.0;
}
public Halberd(Serial serial) : base(serial)
{
}
public override WeaponAbility PrimaryAbility => WeaponAbility.WhirlwindAttack;
public override WeaponAbility SecondaryAbility => WeaponAbility.ConcussionBlow;
public override int AosStrengthReq => 95;
public override int AosMinDamage => 18;
public override int AosMaxDamage => 19;
public override int AosSpeed => 25;
public override float MlSpeed => 4.25f;
public override int OldStrengthReq => 45;
public override int OldMinDamage => 5;
public override int OldMaxDamage => 49;
public override int OldSpeed => 25;
public override int InitMinHits => 31;
public override int InitMaxHits => 80;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,54 @@
using Server.Engines.Harvest;
namespace Server.Items
{
[Flippable(0x26BA, 0x26C4)]
public class Scythe : BasePoleArm
{
[Constructible]
public Scythe() : base(0x26BA)
{
Weight = 5.0;
}
public Scythe(Serial serial) : base(serial)
{
}
public override WeaponAbility PrimaryAbility => WeaponAbility.BleedAttack;
public override WeaponAbility SecondaryAbility => WeaponAbility.ParalyzingBlow;
public override int AosStrengthReq => 45;
public override int AosMinDamage => 15;
public override int AosMaxDamage => 18;
public override int AosSpeed => 32;
public override float MlSpeed => 3.50f;
public override int OldStrengthReq => 45;
public override int OldMinDamage => 15;
public override int OldMaxDamage => 18;
public override int OldSpeed => 32;
public override int InitMinHits => 31;
public override int InitMaxHits => 100;
public override HarvestSystem HarvestSystem => null;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
if (Weight == 15.0)
Weight = 5.0;
}
}
}