fix: Codegens fishing pole (#1288)

This commit is contained in:
Kamron Batman 2022-11-28 23:42:32 -08:00 committed by GitHub
parent 0b4cd460de
commit af29fa0243
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 79 additions and 121 deletions

View file

@ -1,77 +1,55 @@
using System.Collections.Generic;
using ModernUO.Serialization;
using Server.ContextMenus;
using Server.Engines.Harvest;
using Server.Network;
namespace Server.Items
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class FishingPole : Item
{
public class FishingPole : Item
[Constructible]
public FishingPole() : base(0x0DC0)
{
[Constructible]
public FishingPole() : base(0x0DC0)
Layer = Layer.TwoHanded;
Weight = 8.0;
}
public override void OnDoubleClick(Mobile from)
{
var loc = GetWorldLocation();
if (!from.InLOS(loc) || !from.InRange(loc, 2))
{
Layer = Layer.TwoHanded;
Weight = 8.0;
from.LocalOverheadMessage(MessageType.Regular, 0x3E9, 1019045); // I can't reach that
}
public FishingPole(Serial serial) : base(serial)
else
{
}
public override void OnDoubleClick(Mobile from)
{
var loc = GetWorldLocation();
if (!from.InLOS(loc) || !from.InRange(loc, 2))
{
from.LocalOverheadMessage(MessageType.Regular, 0x3E9, 1019045); // I can't reach that
}
else
{
Fishing.System.BeginHarvesting(from, this);
}
}
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
{
base.GetContextMenuEntries(from, list);
BaseHarvestTool.AddContextMenuEntries(from, this, list, Fishing.System);
}
public override bool CheckConflictingLayer(Mobile m, Item item, Layer layer)
{
if (base.CheckConflictingLayer(m, item, layer))
{
return true;
}
if (layer == Layer.OneHanded)
{
m.SendLocalizedMessage(500214); // You already have something in both hands.
return true;
}
return false;
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(1); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
if (version < 1 && Layer == Layer.OneHanded)
{
Layer = Layer.TwoHanded;
}
Fishing.System.BeginHarvesting(from, this);
}
}
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
{
base.GetContextMenuEntries(from, list);
BaseHarvestTool.AddContextMenuEntries(from, this, list, Fishing.System);
}
public override bool CheckConflictingLayer(Mobile m, Item item, Layer layer)
{
if (base.CheckConflictingLayer(m, item, layer))
{
return true;
}
if (layer == Layer.OneHanded)
{
m.SendLocalizedMessage(500214); // You already have something in both hands.
return true;
}
return false;
}
}

View file

@ -1,4 +1,5 @@
using System;
using ModernUO.Serialization;
using Server.Mobiles;
using Server.Multis;
using Server.Spells;
@ -6,7 +7,8 @@ using Server.Targeting;
namespace Server.Items;
public class SpecialFishingNet : Item
[SerializationGenerator(0, false)]
public partial class SpecialFishingNet : Item
{
private static int[] _hues =
{
@ -37,6 +39,10 @@ public class SpecialFishingNet : Item
0x1797, 0x179C
};
[SerializableField(0)]
[SerializedCommandProperty(AccessLevel.GameMaster)]
private bool _inUse;
[Constructible]
public SpecialFishingNet() : base(0x0DCA)
{
@ -44,15 +50,8 @@ public class SpecialFishingNet : Item
Hue = Utility.RandomDouble() < 0.01 ? _hues.RandomElement() : 0x8A0;
}
public SpecialFishingNet(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1041079; // a special fishing net
[CommandProperty(AccessLevel.GameMaster)]
public bool InUse { get; set; }
public virtual bool RequireDeepWater => true;
public override void GetProperties(IPropertyList list)
@ -68,42 +67,18 @@ public class SpecialFishingNet : Item
list.Add(1017410); // Special Fishing Net
}
public override void Serialize(IGenericWriter writer)
[AfterDeserialization]
private void AfterDeserialization()
{
base.Serialize(writer);
writer.Write(1); // version
writer.Write(InUse);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
switch (version)
if (_inUse)
{
case 1:
{
InUse = reader.ReadBool();
if (InUse)
{
Delete();
}
break;
}
Delete();
}
Stackable = false;
}
public override void OnDoubleClick(Mobile from)
{
if (InUse)
if (_inUse)
{
from.SendLocalizedMessage(1010483); // Someone is already using that net!
}
@ -120,7 +95,7 @@ public class SpecialFishingNet : Item
public void OnTarget(Mobile from, object obj)
{
if (Deleted || InUse)
if (Deleted || _inUse)
{
return;
}
@ -422,15 +397,12 @@ public class SpecialFishingNet : Item
}
}
public class FabledFishingNet : SpecialFishingNet
[SerializationGenerator(0, false)]
public partial class FabledFishingNet : SpecialFishingNet
{
[Constructible]
public FabledFishingNet() => Hue = 0x481;
public FabledFishingNet(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1063451; // a fabled fishing net
protected override void AddNetProperties(IPropertyList list)
@ -445,18 +417,4 @@ public class FabledFishingNet : SpecialFishingNet
base.FinishEffect(p, map, from);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.FabledFishingNet"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.FishingPole"
}

View file

@ -0,0 +1,14 @@
{
"version": 0,
"type": "Server.Items.SpecialFishingNet",
"properties": [
{
"name": "InUse",
"type": "bool",
"rule": "PrimitiveTypeMigrationRule",
"ruleArguments": [
""
]
}
]
}