fix: Updates races to properly support gargoyle equipment. (#744)
* Adds `RaceFlag` to the `Race` object. This is `1 << RaceIndex` * Replaces `RequiredRace` with `RequiredRaces` for items. * Adds convenience flags for `RequiredRaces` ```cs public const int AllowAllRaces = 0x7; // Race.Human.RaceFlag | Race.Elf.RaceFlag | Race.Gargoyle.RaceFlag public const int AllowHumanOrElves = 0x3; // Race.Human.RaceFlag | Race.Elf.RaceFlag public const int AllowElvesOnly = 0x2; // Race.Elf.RaceFlag public const int AllowGargoylesOnly = 0x4; // Race.Gargoyle.RaceFlag ``` * Example usage on an item: ```cs public override int RequiredRaces => Race.AllowHumanOrElves; ``` * Adds Wood and Stone armor material types * Updates Woodland armor to Wood * Adds proper messaging for race restrictions * Adds gargoyle only for object properties * Adds `CheckRace` functions for validating if a race or mobile can use the item: ```cs bool CheckRace(Race race); bool CheckRace(Mobile from, bool message = true); ```
This commit is contained in:
parent
bf20800382
commit
8ffd5a5bd0
58 changed files with 147 additions and 125 deletions
|
|
@ -2104,6 +2104,47 @@ namespace Server
|
||||||
|
|
||||||
public virtual bool CheckConflictingLayer(Mobile m, Item item, Layer layer) => m_Layer == layer;
|
public virtual bool CheckConflictingLayer(Mobile m, Item item, Layer layer) => m_Layer == layer;
|
||||||
|
|
||||||
|
// Uses Race.RaceFlag
|
||||||
|
public virtual int RequiredRaces => Race.AllowAllRaces;
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public bool CheckRace(Race race) => Race.IsAllowedRace(race, RequiredRaces);
|
||||||
|
|
||||||
|
public bool CheckRace(Mobile from, bool message = true)
|
||||||
|
{
|
||||||
|
var race = from.Race;
|
||||||
|
var requiredRaces = RequiredRaces;
|
||||||
|
|
||||||
|
if (Race.IsAllowedRace(race, requiredRaces))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!message)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (race == Race.Gargoyle)
|
||||||
|
{
|
||||||
|
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1111708); // Gargoyles can't wear this.
|
||||||
|
}
|
||||||
|
else if (requiredRaces == Race.AllowGargoylesOnly)
|
||||||
|
{
|
||||||
|
from.LocalOverheadMessage(Network.MessageType.Regular, 0x3B2, 1111707); // Only gargoyles can wear this.
|
||||||
|
}
|
||||||
|
else if (race != Race.Elf)
|
||||||
|
{
|
||||||
|
from.SendLocalizedMessage(1072203); // Only Elves may use this.
|
||||||
|
}
|
||||||
|
else if (race != Race.Human)
|
||||||
|
{
|
||||||
|
from.SendMessage($"Only {race.PluralName} may use this.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public virtual bool CanEquip(Mobile m) => m_Layer != Layer.Invalid && m.FindItemOnLayer(m_Layer) == null;
|
public virtual bool CanEquip(Mobile m) => m_Layer != Layer.Invalid && m.FindItemOnLayer(m_Layer) == null;
|
||||||
|
|
||||||
public virtual void GetChildContextMenuEntries(Mobile from, List<ContextMenuEntry> list, Item item)
|
public virtual void GetChildContextMenuEntries(Mobile from, List<ContextMenuEntry> list, Item item)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
namespace Server
|
namespace Server
|
||||||
{
|
{
|
||||||
|
|
@ -16,6 +17,7 @@ namespace Server
|
||||||
{
|
{
|
||||||
RaceID = raceID;
|
RaceID = raceID;
|
||||||
RaceIndex = raceIndex;
|
RaceIndex = raceIndex;
|
||||||
|
RaceFlag = 1 << raceIndex;
|
||||||
|
|
||||||
Name = name;
|
Name = name;
|
||||||
|
|
||||||
|
|
@ -38,6 +40,11 @@ namespace Server
|
||||||
|
|
||||||
public static List<Race> AllRaces { get; } = new();
|
public static List<Race> AllRaces { get; } = new();
|
||||||
|
|
||||||
|
public const int AllowAllRaces = 0x7; // Race.Human.RaceFlag | Race.Elf.RaceFlag | Race.Gargoyle.RaceFlag
|
||||||
|
public const int AllowHumanOrElves = 0x3; // Race.Human.RaceFlag | Race.Elf.RaceFlag
|
||||||
|
public const int AllowElvesOnly = 0x2; // Race.Elf.RaceFlag
|
||||||
|
public const int AllowGargoylesOnly = 0x4; // Race.Gargoyle.RaceFlag
|
||||||
|
|
||||||
public Expansion RequiredExpansion { get; }
|
public Expansion RequiredExpansion { get; }
|
||||||
|
|
||||||
public int MaleBody { get; }
|
public int MaleBody { get; }
|
||||||
|
|
@ -52,10 +59,15 @@ namespace Server
|
||||||
|
|
||||||
public int RaceIndex { get; }
|
public int RaceIndex { get; }
|
||||||
|
|
||||||
|
public int RaceFlag { get; }
|
||||||
|
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
||||||
public string PluralName { get; set; }
|
public string PluralName { get; set; }
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static bool IsAllowedRace(Race race, int allowedRaceFlags) => (allowedRaceFlags & race.RaceFlag) != 0;
|
||||||
|
|
||||||
public static string[] GetRaceNames()
|
public static string[] GetRaceNames()
|
||||||
{
|
{
|
||||||
CheckNamesAndValues();
|
CheckNamesAndValues();
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,9 @@ namespace Server.Items
|
||||||
Ringmail,
|
Ringmail,
|
||||||
Chainmail,
|
Chainmail,
|
||||||
Plate,
|
Plate,
|
||||||
Dragon // On OSI, Dragon is seen and considered its own type.
|
Dragon,
|
||||||
|
Wood,
|
||||||
|
Stone
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum ArmorMeditationAllowance
|
public enum ArmorMeditationAllowance
|
||||||
|
|
|
||||||
|
|
@ -564,7 +564,6 @@ namespace Server.Items
|
||||||
|
|
||||||
public virtual CraftResource DefaultResource => CraftResource.Iron;
|
public virtual CraftResource DefaultResource => CraftResource.Iron;
|
||||||
|
|
||||||
public virtual Race RequiredRace => null;
|
|
||||||
|
|
||||||
[Hue]
|
[Hue]
|
||||||
[CommandProperty(AccessLevel.GameMaster)]
|
[CommandProperty(AccessLevel.GameMaster)]
|
||||||
|
|
@ -988,17 +987,8 @@ namespace Server.Items
|
||||||
|
|
||||||
if (item is BaseArmor armor)
|
if (item is BaseArmor armor)
|
||||||
{
|
{
|
||||||
if (armor.RequiredRace != null && m.Race != armor.RequiredRace)
|
if (!armor.CheckRace(m))
|
||||||
{
|
{
|
||||||
if (armor.RequiredRace == Race.Elf)
|
|
||||||
{
|
|
||||||
m.SendLocalizedMessage(1072203); // Only Elves may use this.
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m.SendMessage("Only {0} may use this.", armor.RequiredRace.PluralName);
|
|
||||||
}
|
|
||||||
|
|
||||||
m.AddToBackpack(armor);
|
m.AddToBackpack(armor);
|
||||||
}
|
}
|
||||||
else if (!armor.AllowMaleWearer && !m.Female && m.AccessLevel < AccessLevel.GameMaster)
|
else if (!armor.AllowMaleWearer && !m.Female && m.AccessLevel < AccessLevel.GameMaster)
|
||||||
|
|
@ -1287,17 +1277,8 @@ namespace Server.Items
|
||||||
|
|
||||||
if (from.AccessLevel < AccessLevel.GameMaster)
|
if (from.AccessLevel < AccessLevel.GameMaster)
|
||||||
{
|
{
|
||||||
if (RequiredRace != null && from.Race != RequiredRace)
|
if (!CheckRace(from))
|
||||||
{
|
{
|
||||||
if (RequiredRace == Race.Elf)
|
|
||||||
{
|
|
||||||
from.SendLocalizedMessage(1072203); // Only Elves may use this.
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
from.SendMessage("Only {0} may use this.", RequiredRace.PluralName);
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1503,12 +1484,12 @@ namespace Server.Items
|
||||||
list.Add(1041350); // faction item
|
list.Add(1041350); // faction item
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RequiredRace == Race.Elf)
|
if (RequiredRaces == Race.AllowElvesOnly)
|
||||||
{
|
{
|
||||||
list.Add(1075086); // Elves Only
|
list.Add(1075086); // Elves Only
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RequiredRace == Race.Gargoyle)
|
if (RequiredRaces == Race.AllowGargoylesOnly)
|
||||||
{
|
{
|
||||||
list.Add(1111709); // Gargoyles Only
|
list.Add(1111709); // Gargoyles Only
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,6 @@ namespace Server.Items
|
||||||
|
|
||||||
public override ArmorMeditationAllowance DefMedAllowance => ArmorMeditationAllowance.All;
|
public override ArmorMeditationAllowance DefMedAllowance => ArmorMeditationAllowance.All;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GemmedCirclet() : base(0x2B70) => Weight = 2.0;
|
public GemmedCirclet() : base(0x2B70) => Weight = 2.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override int BasePhysicalResistance => 1;
|
public override int BasePhysicalResistance => 1;
|
||||||
public override int BaseFireResistance => 5;
|
public override int BaseFireResistance => 5;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public RavenHelm() : base(0x2B71) => Weight = 5.0;
|
public RavenHelm() : base(0x2B71) => Weight = 5.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override int BasePhysicalResistance => 5;
|
public override int BasePhysicalResistance => 5;
|
||||||
public override int BaseFireResistance => 1;
|
public override int BaseFireResistance => 1;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public RoyalCirclet() : base(0x2B6F) => Weight = 2.0;
|
public RoyalCirclet() : base(0x2B6F) => Weight = 2.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override int BasePhysicalResistance => 1;
|
public override int BasePhysicalResistance => 1;
|
||||||
public override int BaseFireResistance => 5;
|
public override int BaseFireResistance => 5;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public VultureHelm() : base(0x2B72) => Weight = 5.0;
|
public VultureHelm() : base(0x2B72) => Weight = 5.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override int BasePhysicalResistance => 5;
|
public override int BasePhysicalResistance => 5;
|
||||||
public override int BaseFireResistance => 1;
|
public override int BaseFireResistance => 1;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public WingedHelm() : base(0x2B73) => Weight = 5.0;
|
public WingedHelm() : base(0x2B73) => Weight = 5.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override int BasePhysicalResistance => 5;
|
public override int BasePhysicalResistance => 5;
|
||||||
public override int BaseFireResistance => 1;
|
public override int BaseFireResistance => 1;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishLeatherArmsType1() : base(0x301) => Weight = 4.0;
|
public GargishLeatherArmsType1() : base(0x301) => Weight = 4.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 5;
|
public override int BasePhysicalResistance => 5;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 7;
|
public override int BaseColdResistance => 7;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishLeatherArmsType2() : base(0x302) => Weight = 4.0;
|
public GargishLeatherArmsType2() : base(0x302) => Weight = 4.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 5;
|
public override int BasePhysicalResistance => 5;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 7;
|
public override int BaseColdResistance => 7;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishLeatherChestType1() : base(0x0304) => Weight = 4.0;
|
public GargishLeatherChestType1() : base(0x0304) => Weight = 4.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 5;
|
public override int BasePhysicalResistance => 5;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 7;
|
public override int BaseColdResistance => 7;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishLeatherChestType2() : base(0x303) => Weight = 4.0;
|
public GargishLeatherChestType2() : base(0x303) => Weight = 4.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 5;
|
public override int BasePhysicalResistance => 5;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 7;
|
public override int BaseColdResistance => 7;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishLeatherKiltType1() : base(0x311) => Weight = 4.0;
|
public GargishLeatherKiltType1() : base(0x311) => Weight = 4.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 5;
|
public override int BasePhysicalResistance => 5;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 7;
|
public override int BaseColdResistance => 7;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishLeatherKiltType2() : base(0x310) => Weight = 4.0;
|
public GargishLeatherKiltType2() : base(0x310) => Weight = 4.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 5;
|
public override int BasePhysicalResistance => 5;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 7;
|
public override int BaseColdResistance => 7;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishLeatherLegsType1() : base(0x305) => Weight = 4.0;
|
public GargishLeatherLegsType1() : base(0x305) => Weight = 4.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 5;
|
public override int BasePhysicalResistance => 5;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 7;
|
public override int BaseColdResistance => 7;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishLeatherLegsType2() : base(0x306) => Weight = 4.0;
|
public GargishLeatherLegsType2() : base(0x306) => Weight = 4.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 5;
|
public override int BasePhysicalResistance => 5;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 7;
|
public override int BaseColdResistance => 7;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishLeatherWingArmor() : base(0x457E) => Weight = 2.0;
|
public GargishLeatherWingArmor() : base(0x457E) => Weight = 2.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int PhysicalResistance => 0;
|
public override int PhysicalResistance => 0;
|
||||||
public override int FireResistance => 0;
|
public override int FireResistance => 0;
|
||||||
public override int ColdResistance => 0;
|
public override int ColdResistance => 0;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public LeafArms() : base(0x2FC8) => Weight = 2.0;
|
public LeafArms() : base(0x2FC8) => Weight = 2.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
public override int BasePhysicalResistance => 2;
|
public override int BasePhysicalResistance => 2;
|
||||||
public override int BaseFireResistance => 3;
|
public override int BaseFireResistance => 3;
|
||||||
public override int BaseColdResistance => 2;
|
public override int BaseColdResistance => 2;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public LeafChest() : base(0x2FC5) => Weight = 2.0;
|
public LeafChest() : base(0x2FC5) => Weight = 2.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
public override int BasePhysicalResistance => 2;
|
public override int BasePhysicalResistance => 2;
|
||||||
public override int BaseFireResistance => 3;
|
public override int BaseFireResistance => 3;
|
||||||
public override int BaseColdResistance => 2;
|
public override int BaseColdResistance => 2;
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public LeafGloves() : base(0x2FC6) => Weight = 2.0;
|
public LeafGloves() : base(0x2FC6) => Weight = 2.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
public override int BasePhysicalResistance => 2;
|
public override int BasePhysicalResistance => 2;
|
||||||
public override int BaseFireResistance => 3;
|
public override int BaseFireResistance => 3;
|
||||||
public override int BaseColdResistance => 2;
|
public override int BaseColdResistance => 2;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public LeafGorget() : base(0x2FC7) => Weight = 2.0;
|
public LeafGorget() : base(0x2FC7) => Weight = 2.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
public override int BasePhysicalResistance => 2;
|
public override int BasePhysicalResistance => 2;
|
||||||
public override int BaseFireResistance => 3;
|
public override int BaseFireResistance => 3;
|
||||||
public override int BaseColdResistance => 2;
|
public override int BaseColdResistance => 2;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public LeafLegs() : base(0x2FC9) => Weight = 2.0;
|
public LeafLegs() : base(0x2FC9) => Weight = 2.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override int BasePhysicalResistance => 2;
|
public override int BasePhysicalResistance => 2;
|
||||||
public override int BaseFireResistance => 3;
|
public override int BaseFireResistance => 3;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public LeafTonlet() : base(0x2FCA) => Weight = 2.0;
|
public LeafTonlet() : base(0x2FCA) => Weight = 2.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
public override int BasePhysicalResistance => 2;
|
public override int BasePhysicalResistance => 2;
|
||||||
public override int BaseFireResistance => 3;
|
public override int BaseFireResistance => 3;
|
||||||
public override int BaseColdResistance => 2;
|
public override int BaseColdResistance => 2;
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,6 @@ namespace Server.Items
|
||||||
|
|
||||||
public override int ArmorBase => 30;
|
public override int ArmorBase => 30;
|
||||||
|
|
||||||
public override ArmorMaterialType MaterialType => ArmorMaterialType.Plate;
|
public override ArmorMaterialType MaterialType => ArmorMaterialType.Wood;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ namespace Server.Items
|
||||||
|
|
||||||
public override int ArmorBase => 40;
|
public override int ArmorBase => 40;
|
||||||
|
|
||||||
public override ArmorMaterialType MaterialType => ArmorMaterialType.Plate;
|
public override ArmorMaterialType MaterialType => ArmorMaterialType.Wood;
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ namespace Server.Items
|
||||||
|
|
||||||
public override int ArmorBase => 40;
|
public override int ArmorBase => 40;
|
||||||
|
|
||||||
public override ArmorMaterialType MaterialType => ArmorMaterialType.Plate;
|
public override ArmorMaterialType MaterialType => ArmorMaterialType.Wood;
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ namespace Server.Items
|
||||||
|
|
||||||
public override int ArmorBase => 40;
|
public override int ArmorBase => 40;
|
||||||
|
|
||||||
public override ArmorMaterialType MaterialType => ArmorMaterialType.Plate;
|
public override ArmorMaterialType MaterialType => ArmorMaterialType.Wood;
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ namespace Server.Items
|
||||||
|
|
||||||
public override int ArmorBase => 40;
|
public override int ArmorBase => 40;
|
||||||
|
|
||||||
public override ArmorMaterialType MaterialType => ArmorMaterialType.Plate;
|
public override ArmorMaterialType MaterialType => ArmorMaterialType.Wood;
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ namespace Server.Items
|
||||||
|
|
||||||
public override int ArmorBase => 40;
|
public override int ArmorBase => 40;
|
||||||
|
|
||||||
public override ArmorMaterialType MaterialType => ArmorMaterialType.Plate;
|
public override ArmorMaterialType MaterialType => ArmorMaterialType.Wood;
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishStuddedArmsType1() : base(0x284) => Weight = 10.0;
|
public GargishStuddedArmsType1() : base(0x284) => Weight = 10.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 6;
|
public override int BasePhysicalResistance => 6;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 4;
|
public override int BaseColdResistance => 4;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishStuddedArmsType2() : base(0x283) => Weight = 10.0;
|
public GargishStuddedArmsType2() : base(0x283) => Weight = 10.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 6;
|
public override int BasePhysicalResistance => 6;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 4;
|
public override int BaseColdResistance => 4;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishStuddedChestType1() : base(0x286) => Weight = 15.0;
|
public GargishStuddedChestType1() : base(0x286) => Weight = 15.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 6;
|
public override int BasePhysicalResistance => 6;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 4;
|
public override int BaseColdResistance => 4;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishStuddedChestType2() : base(0x285) => Weight = 15.0;
|
public GargishStuddedChestType2() : base(0x285) => Weight = 15.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 6;
|
public override int BasePhysicalResistance => 6;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 4;
|
public override int BaseColdResistance => 4;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishStuddedKiltType1() : base(0x288) => Weight = 10.0;
|
public GargishStuddedKiltType1() : base(0x288) => Weight = 10.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 6;
|
public override int BasePhysicalResistance => 6;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 4;
|
public override int BaseColdResistance => 4;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishStuddedKiltType2() : base(0x287) => Weight = 10.0;
|
public GargishStuddedKiltType2() : base(0x287) => Weight = 10.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 6;
|
public override int BasePhysicalResistance => 6;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 4;
|
public override int BaseColdResistance => 4;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishStuddedLegsType1() : base(0x28A) => Weight = 15.0;
|
public GargishStuddedLegsType1() : base(0x28A) => Weight = 15.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 6;
|
public override int BasePhysicalResistance => 6;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 4;
|
public override int BaseColdResistance => 4;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public GargishStuddedLegsType2() : base(0x289) => Weight = 15.0;
|
public GargishStuddedLegsType2() : base(0x289) => Weight = 15.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Gargoyle;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
public override int BasePhysicalResistance => 6;
|
public override int BasePhysicalResistance => 6;
|
||||||
public override int BaseFireResistance => 6;
|
public override int BaseFireResistance => 6;
|
||||||
public override int BaseColdResistance => 4;
|
public override int BaseColdResistance => 4;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public HideChest() : base(0x2B74) => Weight = 6.0;
|
public HideChest() : base(0x2B74) => Weight = 6.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override int BasePhysicalResistance => 3;
|
public override int BasePhysicalResistance => 3;
|
||||||
public override int BaseFireResistance => 3;
|
public override int BaseFireResistance => 3;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public HideFemaleChest() : base(0x2B79) => Weight = 6.0;
|
public HideFemaleChest() : base(0x2B79) => Weight = 6.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override int BasePhysicalResistance => 3;
|
public override int BasePhysicalResistance => 3;
|
||||||
public override int BaseFireResistance => 3;
|
public override int BaseFireResistance => 3;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public HideGloves() : base(0x2B75) => Weight = 2.0;
|
public HideGloves() : base(0x2B75) => Weight = 2.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override int BasePhysicalResistance => 3;
|
public override int BasePhysicalResistance => 3;
|
||||||
public override int BaseFireResistance => 3;
|
public override int BaseFireResistance => 3;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public HideGorget() : base(0x2B76) => Weight = 3.0;
|
public HideGorget() : base(0x2B76) => Weight = 3.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override int BasePhysicalResistance => 3;
|
public override int BasePhysicalResistance => 3;
|
||||||
public override int BaseFireResistance => 3;
|
public override int BaseFireResistance => 3;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public HidePants() : base(0x2B78) => Weight = 5.0;
|
public HidePants() : base(0x2B78) => Weight = 5.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override int BasePhysicalResistance => 3;
|
public override int BasePhysicalResistance => 3;
|
||||||
public override int BaseFireResistance => 3;
|
public override int BaseFireResistance => 3;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public HidePauldrons() : base(0x2B77) => Weight = 4.0;
|
public HidePauldrons() : base(0x2B77) => Weight = 4.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override int BasePhysicalResistance => 3;
|
public override int BasePhysicalResistance => 3;
|
||||||
public override int BaseFireResistance => 3;
|
public override int BaseFireResistance => 3;
|
||||||
|
|
|
||||||
|
|
@ -713,11 +713,16 @@ namespace Server.Items
|
||||||
list.Add(1060636); // exceptional
|
list.Add(1060636); // exceptional
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RequiredRace == Race.Elf)
|
if (RequiredRaces == Race.AllowElvesOnly)
|
||||||
{
|
{
|
||||||
list.Add(1075086); // Elves Only
|
list.Add(1075086); // Elves Only
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (RequiredRaces == Race.AllowGargoylesOnly)
|
||||||
|
{
|
||||||
|
list.Add(1111709); // Gargoyles Only
|
||||||
|
}
|
||||||
|
|
||||||
SkillBonuses?.GetProperties(list);
|
SkillBonuses?.GetProperties(list);
|
||||||
|
|
||||||
int prop;
|
int prop;
|
||||||
|
|
|
||||||
|
|
@ -479,7 +479,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public FemaleElvenRobe(int hue = 0) : base(0x2FBA, hue) => Weight = 2.0;
|
public FemaleElvenRobe(int hue = 0) : base(0x2FBA, hue) => Weight = 2.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override bool AllowMaleWearer => false;
|
public override bool AllowMaleWearer => false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,6 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public ElvenPants(int hue = 0) : base(0x2FC3, hue) => Weight = 2.0;
|
public ElvenPants(int hue = 0) : base(0x2FC3, hue) => Weight = 2.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public ElvenShirt(int hue = 0) : base(0x3175, hue) => Weight = 2.0;
|
public ElvenShirt(int hue = 0) : base(0x3175, hue) => Weight = 2.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable(0)]
|
[Serializable(0)]
|
||||||
|
|
|
||||||
|
|
@ -194,7 +194,7 @@ namespace Server.Items
|
||||||
|
|
||||||
public override CraftResource DefaultResource => CraftResource.RegularLeather;
|
public override CraftResource DefaultResource => CraftResource.RegularLeather;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override bool Dye(Mobile from, DyeTub sender) => false;
|
public override bool Dye(Mobile from, DyeTub sender) => false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ namespace Server.Items
|
||||||
[Constructible]
|
[Constructible]
|
||||||
public WoodlandBelt(int hue = 0) : base(0x2B68, hue) => Weight = 4.0;
|
public WoodlandBelt(int hue = 0) : base(0x2B68, hue) => Weight = 4.0;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override bool Dye(Mobile from, DyeTub sender)
|
public override bool Dye(Mobile from, DyeTub sender)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ namespace Server.Items
|
||||||
public override int InitMinHits => 255;
|
public override int InitMinHits => 255;
|
||||||
public override int InitMaxHits => 255;
|
public override int InitMaxHits => 255;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override void Serialize(IGenericWriter writer)
|
public override void Serialize(IGenericWriter writer)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ namespace Server.Items
|
||||||
public override int InitMinHits => 255;
|
public override int InitMinHits => 255;
|
||||||
public override int InitMaxHits => 255;
|
public override int InitMaxHits => 255;
|
||||||
|
|
||||||
public override Race RequiredRace => Race.Elf;
|
public override int RequiredRaces => Race.AllowElvesOnly;
|
||||||
|
|
||||||
public override void Serialize(IGenericWriter writer)
|
public override void Serialize(IGenericWriter writer)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -607,12 +607,10 @@ namespace Server.Items
|
||||||
m_Props.Set(2, true); // remove durability bonus from possible properties
|
m_Props.Set(2, true); // remove durability bonus from possible properties
|
||||||
}
|
}
|
||||||
|
|
||||||
if (armor.RequiredRace == Race.Elf)
|
if (armor.RequiredRaces == Race.AllowElvesOnly)
|
||||||
{
|
{
|
||||||
m_Props.Set(
|
// elves inherently have night sight and elf only armor doesn't get night sight as a mod
|
||||||
7,
|
m_Props.Set(7, true);
|
||||||
true
|
|
||||||
); // elves inherently have night sight and elf only armor doesn't get night sight as a mod
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < attributeCount; ++i)
|
for (var i = 0; i < attributeCount; ++i)
|
||||||
|
|
@ -628,7 +626,7 @@ namespace Server.Items
|
||||||
|
|
||||||
switch (random)
|
switch (random)
|
||||||
{
|
{
|
||||||
/* Begin Sheilds */
|
/* Begin Shields */
|
||||||
case 0:
|
case 0:
|
||||||
ApplyAttribute(primary, min, max, AosAttribute.SpellChanneling, 1, 1);
|
ApplyAttribute(primary, min, max, AosAttribute.SpellChanneling, 1, 1);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -114,9 +114,6 @@ namespace Server.Items
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual Race RequiredRace =>
|
|
||||||
null; // On OSI, there are no weapons with race requirements, this is for custom stuff
|
|
||||||
|
|
||||||
public virtual bool UseSkillMod => !Core.AOS;
|
public virtual bool UseSkillMod => !Core.AOS;
|
||||||
|
|
||||||
public static bool InDoubleStrike { get; set; }
|
public static bool InDoubleStrike { get; set; }
|
||||||
|
|
@ -915,17 +912,8 @@ namespace Server.Items
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RequiredRace != null && from.Race != RequiredRace)
|
if (!CheckRace(from))
|
||||||
{
|
{
|
||||||
if (RequiredRace == Race.Elf)
|
|
||||||
{
|
|
||||||
from.SendLocalizedMessage(1072203); // Only Elves may use this.
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
from.SendMessage("Only {0} may use this.", RequiredRace.PluralName);
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2945,11 +2933,16 @@ namespace Server.Items
|
||||||
list.Add(1060636); // exceptional
|
list.Add(1060636); // exceptional
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RequiredRace == Race.Elf)
|
if (RequiredRaces == Race.AllowElvesOnly)
|
||||||
{
|
{
|
||||||
list.Add(1075086); // Elves Only
|
list.Add(1075086); // Elves Only
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (RequiredRaces == Race.AllowGargoylesOnly)
|
||||||
|
{
|
||||||
|
list.Add(1111709); // Gargoyles Only
|
||||||
|
}
|
||||||
|
|
||||||
if (ArtifactRarity > 0)
|
if (ArtifactRarity > 0)
|
||||||
{
|
{
|
||||||
list.Add(1061078, ArtifactRarity.ToString()); // artifact rarity ~1_val~
|
list.Add(1061078, ArtifactRarity.ToString()); // artifact rarity ~1_val~
|
||||||
|
|
|
||||||
|
|
@ -42,12 +42,12 @@ namespace Server.Misc
|
||||||
return false; // Buns & Receding Hair
|
return false; // Buns & Receding Hair
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemID >= 0x203B && itemID <= 0x203D)
|
if (itemID is >= 0x203B and <= 0x203D)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemID >= 0x2044 && itemID <= 0x204A)
|
if (itemID is >= 0x2044 and <= 0x204A)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -83,12 +83,12 @@ namespace Server.Misc
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemID >= 0x203E && itemID <= 0x2041)
|
if (itemID is >= 0x203E and <= 0x2041)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemID >= 0x204B && itemID <= 0x204D)
|
if (itemID is >= 0x204B and <= 0x204D)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -166,17 +166,17 @@ namespace Server.Misc
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (female && (itemID == 0x2FCD || itemID == 0x2FBF) || !female && (itemID == 0x2FCC || itemID == 0x2FD0))
|
if (female && itemID is 0x2FCD or 0x2FBF || !female && itemID is 0x2FCC or 0x2FD0)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemID >= 0x2FBF && itemID <= 0x2FC2)
|
if (itemID is >= 0x2FBF and <= 0x2FC2)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemID >= 0x2FCC && itemID <= 0x2FD1)
|
if (itemID is >= 0x2FCC and <= 0x2FD1)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -236,17 +236,6 @@ namespace Server.Misc
|
||||||
|
|
||||||
private class Gargoyle : Race
|
private class Gargoyle : Race
|
||||||
{
|
{
|
||||||
// Todo Finish body hues
|
|
||||||
private static readonly int[] m_BodyHues =
|
|
||||||
{
|
|
||||||
0x86DB, 0x86DC, 0x86DD, 0x86DE,
|
|
||||||
0x86DF, 0x86E0, 0x86E1, 0x86E2,
|
|
||||||
0x86E3, 0x86E4, 0x86E5, 0x86E6
|
|
||||||
// 0x, 0x, 0x, 0x, // 86E7/86E8/86E9/86EA?
|
|
||||||
// 0x, 0x, 0x, 0x, // 86EB/86EC/86ED/86EE?
|
|
||||||
// 0x86F3, 0x86DB, 0x86DC, 0x86DD
|
|
||||||
};
|
|
||||||
|
|
||||||
private static readonly int[] m_HornHues =
|
private static readonly int[] m_HornHues =
|
||||||
{
|
{
|
||||||
0x709, 0x70B, 0x70D, 0x70F, 0x711, 0x763,
|
0x709, 0x70B, 0x70D, 0x70F, 0x711, 0x763,
|
||||||
|
|
@ -263,11 +252,10 @@ namespace Server.Misc
|
||||||
{
|
{
|
||||||
if (female == false)
|
if (female == false)
|
||||||
{
|
{
|
||||||
return itemID >= 0x4258 && itemID <= 0x425F;
|
return itemID is >= 0x4258 and <= 0x425F;
|
||||||
}
|
}
|
||||||
|
|
||||||
return itemID == 0x4261 || itemID == 0x4262 || itemID >= 0x4273 && itemID <= 0x4275 || itemID == 0x42B0 ||
|
return itemID is 0x4261 or 0x4262 or >= 0x4273 and <= 0x4275 or 0x42B0 or 0x42B1 or 0x42AA or 0x42AB;
|
||||||
itemID == 0x42B1 || itemID == 0x42AA || itemID == 0x42AB;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override int RandomHair(bool female)
|
public override int RandomHair(bool female)
|
||||||
|
|
@ -298,14 +286,14 @@ namespace Server.Misc
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool ValidateFacialHair(bool female, int itemID) =>
|
public override bool ValidateFacialHair(bool female, int itemID) =>
|
||||||
!female && itemID >= 0x42AD && itemID <= 0x42B0;
|
!female && itemID is >= 0x42AD and <= 0x42B0;
|
||||||
|
|
||||||
public override int RandomFacialHair(bool female) =>
|
public override int RandomFacialHair(bool female) =>
|
||||||
female ? 0 : Utility.RandomList(0, 0x42AD, 0x42AE, 0x42AF, 0x42B0);
|
female ? 0 : Utility.RandomList(0, 0x42AD, 0x42AE, 0x42AF, 0x42B0);
|
||||||
|
|
||||||
public override int ClipSkinHue(int hue) => hue;
|
public override int ClipSkinHue(int hue) => hue;
|
||||||
|
|
||||||
public override int RandomSkinHue() => m_BodyHues.RandomElement() | 0x8000;
|
public override int RandomSkinHue() => Utility.Random(1755, 25) | 0x8000;
|
||||||
|
|
||||||
public override int ClipHairHue(int hue)
|
public override int ClipHairHue(int hue)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1379,7 +1379,7 @@ namespace Server.Mobiles
|
||||||
{
|
{
|
||||||
drop = true;
|
drop = true;
|
||||||
}
|
}
|
||||||
else if (weapon.RequiredRace != null && weapon.RequiredRace != Race)
|
else if (!weapon.CheckRace(Race))
|
||||||
{
|
{
|
||||||
drop = true;
|
drop = true;
|
||||||
}
|
}
|
||||||
|
|
@ -1404,7 +1404,7 @@ namespace Server.Mobiles
|
||||||
{
|
{
|
||||||
drop = true;
|
drop = true;
|
||||||
}
|
}
|
||||||
else if (armor.RequiredRace != null && armor.RequiredRace != Race)
|
else if (!armor.CheckRace(Race))
|
||||||
{
|
{
|
||||||
drop = true;
|
drop = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,9 @@ namespace Server.SkillHandlers
|
||||||
/* Ring */ { 0, 5, 0, 10, 15, 25, 0 },
|
/* Ring */ { 0, 5, 0, 10, 15, 25, 0 },
|
||||||
/* Chain */ { 0, 0, 10, 0, 15, 25, 0 },
|
/* Chain */ { 0, 0, 10, 0, 15, 25, 0 },
|
||||||
/* Plate */ { 5, 5, 10, 10, 15, 25, 0 },
|
/* Plate */ { 5, 5, 10, 10, 15, 25, 0 },
|
||||||
/* Dragon */ { 0, 5, 10, 10, 15, 25, 0 }
|
/* Dragon */ { 5, 5, 10, 10, 15, 25, 0 },
|
||||||
|
/* Wood */ { 5, 5, 10, 10, 15, 25, 0 },
|
||||||
|
/* Stone */ { 5, 5, 10, 10, 15, 25, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
public static void Initialize()
|
public static void Initialize()
|
||||||
|
|
@ -44,7 +46,7 @@ namespace Server.SkillHandlers
|
||||||
|
|
||||||
for (var i = 0; i < m.Items.Count; i++)
|
for (var i = 0; i < m.Items.Count; i++)
|
||||||
{
|
{
|
||||||
if (!(m.Items[i] is BaseArmor armor))
|
if (m.Items[i] is not BaseArmor armor)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue