Code cleanup (#195)
This commit is contained in:
parent
b476bcfd24
commit
0926b5abaa
86 changed files with 740 additions and 1635 deletions
|
|
@ -3422,10 +3422,8 @@ namespace Server
|
|||
|
||||
public virtual void ScissorHelper(Mobile from, Item newItem, int amountPerOldItem, bool carryHue)
|
||||
{
|
||||
var amount = Amount;
|
||||
|
||||
if (amount > 60000 / amountPerOldItem) // let's not go over 60000
|
||||
amount = 60000 / amountPerOldItem;
|
||||
// let's not go over 60000
|
||||
var amount = Math.Min(Amount, 60000 / amountPerOldItem);
|
||||
|
||||
Amount -= amount;
|
||||
|
||||
|
|
|
|||
|
|
@ -2929,10 +2929,12 @@ namespace Server
|
|||
{
|
||||
var name = Name ?? string.Empty;
|
||||
|
||||
var prefix = "";
|
||||
string prefix;
|
||||
|
||||
if (ShowFameTitle && (m_Player || m_Body.IsHuman) && m_Fame >= 10000)
|
||||
prefix = m_Female ? "Lady" : "Lord";
|
||||
else
|
||||
prefix = "";
|
||||
|
||||
var suffix = "";
|
||||
|
||||
|
|
@ -2950,27 +2952,22 @@ namespace Server
|
|||
|
||||
list.Add(1050045, "{0} \t{1}\t {2}", prefix, name, suffix); // ~1_PREFIX~~2_NAME~~3_SUFFIX~
|
||||
|
||||
if (guild != null && (m_DisplayGuildTitle || (m_Player && guild.Type != GuildType.Regular)))
|
||||
if (guild != null && (m_DisplayGuildTitle || m_Player && guild.Type != GuildType.Regular))
|
||||
{
|
||||
string type;
|
||||
|
||||
if (guild.Type >= 0 && (int)guild.Type < m_GuildTypes.Length)
|
||||
type = m_GuildTypes[(int)guild.Type];
|
||||
else
|
||||
type = "";
|
||||
var type = guild.Type >= 0 && (int)guild.Type < m_GuildTypes.Length ? m_GuildTypes[(int)guild.Type] : "";
|
||||
|
||||
var title = GuildTitle?.Trim() ?? "";
|
||||
|
||||
if (NewGuildDisplay && title.Length > 0)
|
||||
if (title.Length > 0)
|
||||
{
|
||||
list.Add("{0}, {1}", Utility.FixHtml(title), Utility.FixHtml(guild.Name));
|
||||
if (NewGuildDisplay)
|
||||
list.Add("{0}, {1}", Utility.FixHtml(title), Utility.FixHtml(guild.Name));
|
||||
else
|
||||
list.Add("{0}, {1} Guild{2}", Utility.FixHtml(title), Utility.FixHtml(guild.Name), type);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (title.Length > 0)
|
||||
list.Add("{0}, {1} Guild{2}", Utility.FixHtml(title), Utility.FixHtml(guild.Name), type);
|
||||
else
|
||||
list.Add(Utility.FixHtml(guild.Name));
|
||||
list.Add(Utility.FixHtml(guild.Name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2990,7 +2987,7 @@ namespace Server
|
|||
|
||||
private void UpdateAggrExpire()
|
||||
{
|
||||
if (Deleted || (Aggressors.Count == 0 && Aggressed.Count == 0))
|
||||
if (Deleted || Aggressors.Count == 0 && Aggressed.Count == 0)
|
||||
{
|
||||
StopAggrExpire();
|
||||
}
|
||||
|
|
@ -3171,7 +3168,7 @@ namespace Server
|
|||
|
||||
public bool InLOS(object target) =>
|
||||
!Deleted && m_Map != null &&
|
||||
(target == this || m_AccessLevel > AccessLevel.Player || (target is Item item && item.RootParent == this)
|
||||
(target == this || m_AccessLevel > AccessLevel.Player || target is Item item && item.RootParent == this
|
||||
|| m_Map.LineOfSight(this, target));
|
||||
|
||||
public bool InLOS(Point3D target) =>
|
||||
|
|
@ -3708,7 +3705,7 @@ namespace Server
|
|||
var item = oldSector.Items[i];
|
||||
|
||||
if (item.AtWorldPoint(oldX, oldY) &&
|
||||
(item.Z == oldZ || (item.Z + item.ItemData.Height > oldZ && oldZ + 15 > item.Z)) &&
|
||||
(item.Z == oldZ || item.Z + item.ItemData.Height > oldZ && oldZ + 15 > item.Z) &&
|
||||
!item.OnMoveOff(this))
|
||||
return false;
|
||||
}
|
||||
|
|
@ -3726,7 +3723,7 @@ namespace Server
|
|||
var item = newSector.Items[i];
|
||||
|
||||
if (item.AtWorldPoint(x, y) &&
|
||||
(item.Z == newZ || (item.Z + item.ItemData.Height > newZ && newZ + 15 > item.Z)) &&
|
||||
(item.Z == newZ || item.Z + item.ItemData.Height > newZ && newZ + 15 > item.Z) &&
|
||||
!item.OnMoveOver(this))
|
||||
return false;
|
||||
}
|
||||
|
|
@ -3749,11 +3746,11 @@ namespace Server
|
|||
var item = oldSector.Items[i];
|
||||
|
||||
if (item.AtWorldPoint(oldX, oldY) &&
|
||||
(item.Z == oldZ || (item.Z + item.ItemData.Height > oldZ && oldZ + 15 > item.Z)) &&
|
||||
(item.Z == oldZ || item.Z + item.ItemData.Height > oldZ && oldZ + 15 > item.Z) &&
|
||||
!item.OnMoveOff(this))
|
||||
return false;
|
||||
if (item.AtWorldPoint(x, y) &&
|
||||
(item.Z == newZ || (item.Z + item.ItemData.Height > newZ && newZ + 15 > item.Z)) &&
|
||||
(item.Z == newZ || item.Z + item.ItemData.Height > newZ && newZ + 15 > item.Z) &&
|
||||
!item.OnMoveOver(this))
|
||||
return false;
|
||||
}
|
||||
|
|
@ -4837,7 +4834,7 @@ namespace Server
|
|||
}
|
||||
|
||||
public virtual bool CheckHearsMutatedSpeech(Mobile m, object context) =>
|
||||
context != m_GhostMutateContext || (m.Alive && !m.CanHearGhosts);
|
||||
context != m_GhostMutateContext || m.Alive && !m.CanHearGhosts;
|
||||
|
||||
private void AddSpeechItemsFrom(List<IEntity> list, Container cont)
|
||||
{
|
||||
|
|
@ -4921,7 +4918,7 @@ namespace Server
|
|||
foreach (var o in eable)
|
||||
if (o is Mobile heard)
|
||||
{
|
||||
if (!heard.CanSee(this) || (!NoSpeechLOS && heard.Player && !heard.InLOS(this)))
|
||||
if (!heard.CanSee(this) || !NoSpeechLOS && heard.Player && !heard.InLOS(this))
|
||||
continue;
|
||||
|
||||
if (heard.m_NetState != null)
|
||||
|
|
@ -6408,11 +6405,11 @@ namespace Server
|
|||
if (Deleted || m.Deleted || m_Map == Map.Internal || m.m_Map == Map.Internal)
|
||||
return false;
|
||||
|
||||
return this == m || (m.m_Map == m_Map &&
|
||||
(!m.Hidden || (m_AccessLevel != AccessLevel.Player &&
|
||||
(m_AccessLevel >= m.AccessLevel || m_AccessLevel >= AccessLevel.Administrator))) &&
|
||||
(m.Alive || (Core.SE && Skills.SpiritSpeak.Value >= 100.0) || !Alive ||
|
||||
m_AccessLevel > AccessLevel.Player || m.Warmode));
|
||||
return this == m || m.m_Map == m_Map &&
|
||||
(!m.Hidden || m_AccessLevel != AccessLevel.Player &&
|
||||
(m_AccessLevel >= m.AccessLevel || m_AccessLevel >= AccessLevel.Administrator)) &&
|
||||
(m.Alive || Core.SE && Skills.SpiritSpeak.Value >= 100.0 || !Alive ||
|
||||
m_AccessLevel > AccessLevel.Player || m.Warmode);
|
||||
}
|
||||
|
||||
public virtual bool CanBeRenamedBy(Mobile from) =>
|
||||
|
|
@ -6561,7 +6558,7 @@ namespace Server
|
|||
var inOldRange = Utility.InUpdateRange(oldLocation, m.m_Location);
|
||||
|
||||
if (m.m_NetState != null &&
|
||||
((isTeleport && (!m.m_NetState.HighSeas || !NoMoveHS)) || !inOldRange) && m.CanSee(this))
|
||||
(isTeleport && (!m.m_NetState.HighSeas || !NoMoveHS) || !inOldRange) && m.CanSee(this))
|
||||
{
|
||||
m.m_NetState.Send(MobileIncoming.Create(m.m_NetState, m, this));
|
||||
|
||||
|
|
@ -6608,7 +6605,7 @@ namespace Server
|
|||
|
||||
// We're not attached to a client, so simply send an Incoming
|
||||
foreach (var ns in eable)
|
||||
if (((isTeleport && (!ns.HighSeas || !NoMoveHS)) ||
|
||||
if ((isTeleport && (!ns.HighSeas || !NoMoveHS) ||
|
||||
!Utility.InUpdateRange(oldLocation, ns.Mobile.Location)) && ns.Mobile.CanSee(this))
|
||||
{
|
||||
ns.Send(MobileIncoming.Create(ns, ns.Mobile, this));
|
||||
|
|
@ -6735,7 +6732,7 @@ namespace Server
|
|||
public virtual bool CheckLift(Mobile from, Item item, ref LRReason reject) => true;
|
||||
|
||||
public virtual bool CheckNonlocalLift(Mobile from, Item item) =>
|
||||
from == this || (from.AccessLevel > AccessLevel && from.AccessLevel >= AccessLevel.GameMaster);
|
||||
from == this || @from.AccessLevel > AccessLevel && @from.AccessLevel >= AccessLevel.GameMaster;
|
||||
|
||||
public virtual bool CheckTrade(Mobile to, Item item, SecureTradeContainer cont, bool message, bool checkItems,
|
||||
int plusItems, int plusWeight) =>
|
||||
|
|
@ -6878,7 +6875,7 @@ namespace Server
|
|||
}
|
||||
|
||||
public virtual bool CheckNonlocalDrop(Mobile from, Item item, Item target) =>
|
||||
from == this || (from.AccessLevel > AccessLevel && from.AccessLevel >= AccessLevel.GameMaster);
|
||||
from == this || @from.AccessLevel > AccessLevel && @from.AccessLevel >= AccessLevel.GameMaster;
|
||||
|
||||
public virtual bool CheckItemUse(Mobile from, Item item) => true;
|
||||
|
||||
|
|
@ -6894,7 +6891,7 @@ namespace Server
|
|||
public virtual bool AllowItemUse(Item item) => true;
|
||||
|
||||
public virtual bool AllowEquipFrom(Mobile mob) =>
|
||||
mob == this || (mob.AccessLevel >= AccessLevel.GameMaster && mob.AccessLevel > AccessLevel);
|
||||
mob == this || mob.AccessLevel >= AccessLevel.GameMaster && mob.AccessLevel > AccessLevel;
|
||||
|
||||
public virtual bool EquipItem(Item item)
|
||||
{
|
||||
|
|
@ -7079,14 +7076,14 @@ namespace Server
|
|||
public virtual void OnSingleClick(Mobile from)
|
||||
{
|
||||
if (Deleted ||
|
||||
(AccessLevel == AccessLevel.Player && DisableHiddenSelfClick && Hidden && from == this))
|
||||
AccessLevel == AccessLevel.Player && DisableHiddenSelfClick && Hidden && @from == this)
|
||||
return;
|
||||
|
||||
if (GuildClickMessage)
|
||||
{
|
||||
var guild = m_Guild;
|
||||
|
||||
if (guild != null && (m_DisplayGuildTitle || (m_Player && guild.Type != GuildType.Regular)))
|
||||
if (guild != null && (m_DisplayGuildTitle || m_Player && guild.Type != GuildType.Regular))
|
||||
{
|
||||
var title = GuildTitle?.Trim() ?? "";
|
||||
string type;
|
||||
|
|
@ -7631,7 +7628,7 @@ namespace Server
|
|||
|
||||
protected override void OnTick()
|
||||
{
|
||||
if (m_Mobile.Deleted || (m_Mobile.Aggressors.Count == 0 && m_Mobile.Aggressed.Count == 0))
|
||||
if (m_Mobile.Deleted || m_Mobile.Aggressors.Count == 0 && m_Mobile.Aggressed.Count == 0)
|
||||
m_Mobile.StopAggrExpire();
|
||||
else
|
||||
m_Mobile.CheckAggrExpire();
|
||||
|
|
@ -8019,7 +8016,7 @@ namespace Server
|
|||
return false;
|
||||
|
||||
if (Deleted || target.Deleted || !Alive || IsDeadBondedPet ||
|
||||
(!allowDead && (!target.Alive || target.IsDeadBondedPet)))
|
||||
!allowDead && (!target.Alive || target.IsDeadBondedPet))
|
||||
{
|
||||
if (message)
|
||||
SendLocalizedMessage(1001017); // You can not perform beneficial acts on your target.
|
||||
|
|
@ -8095,7 +8092,7 @@ namespace Server
|
|||
if (target == null)
|
||||
return false;
|
||||
|
||||
if (Deleted || (!ignoreOurBlessedness && m_Blessed) || target.Deleted || target.m_Blessed || !Alive ||
|
||||
if (Deleted || !ignoreOurBlessedness && m_Blessed || target.Deleted || target.m_Blessed || !Alive ||
|
||||
IsDeadBondedPet || !target.Alive || target.IsDeadBondedPet)
|
||||
{
|
||||
if (message)
|
||||
|
|
@ -8322,10 +8319,7 @@ namespace Server
|
|||
get => m_Str;
|
||||
set
|
||||
{
|
||||
if (value < 1)
|
||||
value = 1;
|
||||
else if (value > 65000)
|
||||
value = 65000;
|
||||
value = Math.Clamp(value, 1, 65000);
|
||||
|
||||
if (m_Str != value)
|
||||
{
|
||||
|
|
@ -8361,17 +8355,7 @@ namespace Server
|
|||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public virtual int Str
|
||||
{
|
||||
get
|
||||
{
|
||||
var value = m_Str + GetStatOffset(StatType.Str);
|
||||
|
||||
if (value < 1)
|
||||
value = 1;
|
||||
else if (value > 65000)
|
||||
value = 65000;
|
||||
|
||||
return value;
|
||||
}
|
||||
get => Math.Clamp(m_Str + GetStatOffset(StatType.Str), 1, 65000);
|
||||
set
|
||||
{
|
||||
if (StatMods.Count == 0)
|
||||
|
|
@ -8392,10 +8376,7 @@ namespace Server
|
|||
get => m_Dex;
|
||||
set
|
||||
{
|
||||
if (value < 1)
|
||||
value = 1;
|
||||
else if (value > 65000)
|
||||
value = 65000;
|
||||
value = Math.Clamp(value, 1, 65000);
|
||||
|
||||
if (m_Dex != value)
|
||||
{
|
||||
|
|
@ -8431,17 +8412,7 @@ namespace Server
|
|||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public virtual int Dex
|
||||
{
|
||||
get
|
||||
{
|
||||
var value = m_Dex + GetStatOffset(StatType.Dex);
|
||||
|
||||
if (value < 1)
|
||||
value = 1;
|
||||
else if (value > 65000)
|
||||
value = 65000;
|
||||
|
||||
return value;
|
||||
}
|
||||
get => Math.Clamp(m_Dex + GetStatOffset(StatType.Dex), 0, 65000);
|
||||
set
|
||||
{
|
||||
if (StatMods.Count == 0)
|
||||
|
|
@ -8462,10 +8433,7 @@ namespace Server
|
|||
get => m_Int;
|
||||
set
|
||||
{
|
||||
if (value < 1)
|
||||
value = 1;
|
||||
else if (value > 65000)
|
||||
value = 65000;
|
||||
value = Math.Clamp(value, 1, 65000);
|
||||
|
||||
if (m_Int != value)
|
||||
{
|
||||
|
|
@ -8501,17 +8469,7 @@ namespace Server
|
|||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public virtual int Int
|
||||
{
|
||||
get
|
||||
{
|
||||
var value = m_Int + GetStatOffset(StatType.Int);
|
||||
|
||||
if (value < 1)
|
||||
value = 1;
|
||||
else if (value > 65000)
|
||||
value = 65000;
|
||||
|
||||
return value;
|
||||
}
|
||||
get => Math.Clamp(m_Int + GetStatOffset(StatType.Int), 0, 65000);
|
||||
set
|
||||
{
|
||||
if (StatMods.Count == 0)
|
||||
|
|
|
|||
|
|
@ -601,10 +601,7 @@ namespace Server
|
|||
}
|
||||
}
|
||||
|
||||
if (highest == null && m_Skills.Length > 0)
|
||||
highest = this[0];
|
||||
|
||||
m_Highest = highest;
|
||||
m_Highest = highest == null && m_Skills.Length > 0 ? this[0] : highest;
|
||||
}
|
||||
|
||||
return m_Highest;
|
||||
|
|
|
|||
|
|
@ -103,10 +103,7 @@ namespace Server.Commands
|
|||
if (ip == null)
|
||||
return "null";
|
||||
|
||||
ip = ip.Trim();
|
||||
|
||||
if (ip.Length == 0)
|
||||
return "empty";
|
||||
ip = ip.Trim().IsNullOrDefault("empty");
|
||||
|
||||
bool isSafe = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ namespace Server.Gumps
|
|||
|
||||
private class TypeNameComparer : IComparer<Type>
|
||||
{
|
||||
public int Compare(Type x, Type y) => x.Name.CompareTo(y.Name);
|
||||
public int Compare(Type x, Type y) => x?.Name.CompareTo(y?.Name) ?? 1;
|
||||
}
|
||||
|
||||
public class InternalTarget : Target
|
||||
|
|
@ -227,10 +227,12 @@ namespace Server.Gumps
|
|||
{
|
||||
if (o is IPoint3D p)
|
||||
{
|
||||
if (p is Item item)
|
||||
p = item.GetWorldTop();
|
||||
else if (p is Mobile m)
|
||||
p = m.Location;
|
||||
p = p switch
|
||||
{
|
||||
Item item => item.GetWorldTop(),
|
||||
Mobile m => m.Location,
|
||||
_ => p
|
||||
};
|
||||
|
||||
Commands.Add.Invoke(from, new Point3D(p), new Point3D(p), new[] { m_Type.Name });
|
||||
|
||||
|
|
|
|||
|
|
@ -179,10 +179,7 @@ namespace Server.Engines.Chat
|
|||
}
|
||||
}
|
||||
|
||||
password = password?.Trim();
|
||||
|
||||
if (password?.Length == 0)
|
||||
password = null;
|
||||
password = password?.Trim().IsNullOrDefault(null);
|
||||
|
||||
Channel joined = Channel.FindChannelByName(name);
|
||||
|
||||
|
|
@ -216,10 +213,7 @@ namespace Server.Engines.Chat
|
|||
name = param;
|
||||
}
|
||||
|
||||
password = password?.Trim();
|
||||
|
||||
if (password?.Length == 0)
|
||||
password = null;
|
||||
password = password?.Trim().IsNullOrDefault(null);
|
||||
|
||||
Channel.AddChannel(name, password).AddUser(from, password);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,13 +96,7 @@ namespace Server.Engines.ConPVP
|
|||
|
||||
public Tournament Tournament => m_Tournament;
|
||||
|
||||
private bool CantDoAnything(Mobile mob)
|
||||
{
|
||||
if (m_EventGame != null)
|
||||
return m_EventGame.CantDoAnything(mob);
|
||||
|
||||
return false;
|
||||
}
|
||||
private bool CantDoAnything(Mobile mob) => m_EventGame?.CantDoAnything(mob) == true;
|
||||
|
||||
public static bool IsFreeConsume(Mobile mob)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -215,14 +215,7 @@ namespace Server.Engines.ConPVP
|
|||
|
||||
int zdiff = myLoc.Z - m.Z;
|
||||
|
||||
if (zdiff < 0)
|
||||
return false;
|
||||
if (zdiff < 12)
|
||||
return true;
|
||||
if (zdiff < 16)
|
||||
return Utility.RandomBool(); // 50% chance
|
||||
|
||||
return false;
|
||||
return zdiff >= 0 && (zdiff < 12 || zdiff < 16 && Utility.RandomBool());
|
||||
}
|
||||
|
||||
private void DoAnim(Point3D start, Point3D end, Map map)
|
||||
|
|
@ -1648,12 +1641,12 @@ namespace Server.Engines.ConPVP
|
|||
|
||||
for (int i = 0; i < teams.Count; ++i)
|
||||
{
|
||||
TrophyRank rank = TrophyRank.Bronze;
|
||||
|
||||
if (i == 0)
|
||||
rank = TrophyRank.Gold;
|
||||
else if (i == 1)
|
||||
rank = TrophyRank.Silver;
|
||||
TrophyRank rank = i switch
|
||||
{
|
||||
0 => TrophyRank.Gold,
|
||||
1 => TrophyRank.Silver,
|
||||
_ => TrophyRank.Bronze
|
||||
};
|
||||
|
||||
BRPlayerInfo leader = teams[i].Leader;
|
||||
|
||||
|
|
@ -1747,7 +1740,8 @@ namespace Server.Engines.ConPVP
|
|||
p.Players[j].Eliminated = true;
|
||||
}
|
||||
|
||||
m_Context.Finish(m_Context.Participants[winner.TeamID]);
|
||||
if (winner != null)
|
||||
m_Context.Finish(m_Context.Participants[winner.TeamID]);
|
||||
}
|
||||
|
||||
public override void OnStop()
|
||||
|
|
|
|||
|
|
@ -170,10 +170,8 @@ namespace Server.Engines.ConPVP
|
|||
return 50;
|
||||
if (xp >= 2500)
|
||||
return 10 + (xp - 2500) / 500;
|
||||
if (xp < 0)
|
||||
xp = 0;
|
||||
|
||||
return m_ShortLevels[xp / 100];
|
||||
return m_ShortLevels[Math.Max(xp, 0) / 100];
|
||||
}
|
||||
|
||||
public static void GetLevelInfo(int level, out int xpBase, out int xpAdvance)
|
||||
|
|
|
|||
|
|
@ -78,10 +78,7 @@ namespace Server.Engines.ConPVP
|
|||
sb.Append(mob.Name);
|
||||
}
|
||||
|
||||
if (sb.Length == 0)
|
||||
return "Empty";
|
||||
|
||||
return sb.ToString();
|
||||
return sb.Length == 0 ? "Empty" : sb.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -149,24 +149,14 @@ namespace Server.Engines.ConPVP
|
|||
public int ParticipantsPerMatch
|
||||
{
|
||||
get => m_ParticipantsPerMatch;
|
||||
set
|
||||
{
|
||||
if (value < 2) value = 2;
|
||||
else if (value > 10) value = 10;
|
||||
m_ParticipantsPerMatch = value;
|
||||
}
|
||||
set => m_ParticipantsPerMatch = Math.Clamp(value, 2, 10);
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int PlayersPerParticipant
|
||||
{
|
||||
get => m_PlayersPerParticipant;
|
||||
set
|
||||
{
|
||||
if (value < 1) value = 1;
|
||||
else if (value > 10) value = 10;
|
||||
m_PlayersPerParticipant = value;
|
||||
}
|
||||
set => m_PlayersPerParticipant = Math.Clamp(value, 1, 10);
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
|
|
|
|||
|
|
@ -74,10 +74,7 @@ namespace Server.Engines.ConPVP
|
|||
sb.Append(mob.Name);
|
||||
}
|
||||
|
||||
if (sb.Length == 0)
|
||||
return "Empty";
|
||||
|
||||
return sb.ToString();
|
||||
return sb.Length == 0 ? "Empty" : sb.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -103,4 +100,4 @@ namespace Server.Engines.ConPVP
|
|||
AddLog("Match lost.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -137,10 +137,7 @@ namespace Server.Engines.Craft
|
|||
for (int i = 0; i < m_CraftItem.Skills.Count; i++)
|
||||
{
|
||||
CraftSkill skill = m_CraftItem.Skills[i];
|
||||
double minSkill = skill.MinSkill;
|
||||
|
||||
if (minSkill < 0)
|
||||
minSkill = 0;
|
||||
double minSkill = Math.Max(skill.MinSkill, 0);
|
||||
|
||||
AddHtmlLocalized(170, 132 + i * 20, 200, 18, AosSkillBonuses.GetLabel(skill.SkillToMake), LabelColor);
|
||||
AddLabel(430, 132 + i * 20, LabelHue, $"{minSkill:F1}");
|
||||
|
|
@ -156,25 +153,16 @@ namespace Server.Engines.Craft
|
|||
|
||||
double chance = m_CraftItem.GetSuccessChance(m_From, resIndex > -1 ? res.GetAt(resIndex).ItemType : null,
|
||||
m_CraftSystem, false, out _);
|
||||
double excepChance = m_CraftItem.GetExceptionalChance(m_CraftSystem, chance, m_From);
|
||||
|
||||
if (chance < 0.0)
|
||||
chance = 0.0;
|
||||
else if (chance > 1.0)
|
||||
chance = 1.0;
|
||||
|
||||
AddHtmlLocalized(170, 80, 250, 18, 1044057, LabelColor); // Success Chance:
|
||||
AddLabel(430, 80, LabelHue, $"{chance * 100:F1}%");
|
||||
AddLabel(430, 80, LabelHue, $"{Math.Clamp(chance, 0, 1) * 100:F1}%");
|
||||
|
||||
if (m_ShowExceptionalChance)
|
||||
{
|
||||
if (excepChance < 0.0)
|
||||
excepChance = 0.0;
|
||||
else if (excepChance > 1.0)
|
||||
excepChance = 1.0;
|
||||
double exceptChance = Math.Clamp(m_CraftItem.GetExceptionalChance(m_CraftSystem, chance, m_From), 0, 1.0);
|
||||
|
||||
AddHtmlLocalized(170, 100, 250, 18, 1044058, 32767); // Exceptional Chance:
|
||||
AddLabel(430, 100, LabelHue, $"{excepChance * 100:F1}%");
|
||||
AddLabel(430, 100, LabelHue, $"{exceptChance * 100:F1}%");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -647,23 +647,11 @@ namespace Server.Engines.Craft
|
|||
chance = chance * 0.5 - 0.1;
|
||||
break;
|
||||
case CraftECA.ChanceMinusSixtyToFourtyFive:
|
||||
{
|
||||
double offset = 0.60 - (from.Skills[system.MainSkill].Value - 95.0) * 0.03;
|
||||
|
||||
if (offset < 0.45)
|
||||
offset = 0.45;
|
||||
else if (offset > 0.60)
|
||||
offset = 0.60;
|
||||
|
||||
chance -= offset;
|
||||
break;
|
||||
}
|
||||
chance -= Math.Clamp(0.60 - (from.Skills[system.MainSkill].Value - 95.0) * 0.03, 0.45, 0.60);
|
||||
break;
|
||||
}
|
||||
|
||||
if (chance > 0)
|
||||
return chance + bonus;
|
||||
|
||||
return chance;
|
||||
return chance > 0 ? chance + bonus : chance;
|
||||
}
|
||||
|
||||
public bool CheckSkills(Mobile from, Type typeRes, CraftSystem craftSystem, ref int quality,
|
||||
|
|
|
|||
|
|
@ -254,12 +254,7 @@ namespace Server.Engines.Doom
|
|||
if (playerCount == 0 && Region != null)
|
||||
playerCount = Region.GetPlayerCount();
|
||||
|
||||
int count = (playerCount + PlayersPerSpawn - 1) / PlayersPerSpawn;
|
||||
|
||||
if (count < 1)
|
||||
count = 1;
|
||||
|
||||
return count;
|
||||
return Math.Max((playerCount + PlayersPerSpawn - 1) / PlayersPerSpawn, 1);
|
||||
}
|
||||
|
||||
public virtual void ClearCreatures()
|
||||
|
|
|
|||
|
|
@ -138,8 +138,7 @@ namespace Server.Factions
|
|||
2 => "You are bold, {0}, for one of the meager {1}. Leave now, lest you be taught the taste of dirt.",
|
||||
3 => "Your presence here is an insult, {0}. Be gone now, knave.",
|
||||
4 => "Dost thou wish to be hung by your toes, {0}? Nay? Then come no closer.",
|
||||
5 => "Hey, {0}. Yeah, you. Get out of here before I beat you with a stick.",
|
||||
_ => null
|
||||
_ => "Hey, {0}. Yeah, you. Get out of here before I beat you with a stick." // 5
|
||||
};
|
||||
|
||||
Faction faction = Faction.Find(m);
|
||||
|
|
@ -177,8 +176,7 @@ namespace Server.Factions
|
|||
{
|
||||
ReactionType.Ignore => faction.Definition.GuardIgnore,
|
||||
ReactionType.Warn => faction.Definition.GuardWarn,
|
||||
ReactionType.Attack => faction.Definition.GuardAttack,
|
||||
_ => null
|
||||
_ => faction.Definition.GuardAttack // ReactionType.Attack
|
||||
};
|
||||
|
||||
if (def != null && def.Number > 0)
|
||||
|
|
|
|||
|
|
@ -206,14 +206,11 @@ namespace Server.Factions
|
|||
|
||||
public Spell RandomOffenseSpell()
|
||||
{
|
||||
int maxCircle = (int)((m_Guard.Skills.Magery.Value + 20.0) / (100.0 / 7.0));
|
||||
|
||||
if (maxCircle < 1)
|
||||
maxCircle = 1;
|
||||
int maxCircle = Math.Max((int)((m_Guard.Skills.Magery.Value + 20.0) / (100.0 / 7.0)), 1);
|
||||
|
||||
return Utility.Random(maxCircle * 2) switch
|
||||
{
|
||||
0 => (Spell)new MagicArrowSpell(m_Guard),
|
||||
0 => new MagicArrowSpell(m_Guard),
|
||||
1 => new MagicArrowSpell(m_Guard),
|
||||
2 => new HarmSpell(m_Guard),
|
||||
3 => new HarmSpell(m_Guard),
|
||||
|
|
|
|||
|
|
@ -128,11 +128,11 @@ namespace Server.Engines.MLQuests.Items
|
|||
case 1:
|
||||
AddRecipe(DefAlchemy.CraftSystem);
|
||||
break;
|
||||
// TODO
|
||||
// case 2: AddNonArtifactRecipe( DefTailoring.CraftSystem ); break;
|
||||
// case 3: AddNonArtifactRecipe( DefBlacksmithy.CraftSystem ); break;
|
||||
// case 4: AddNonArtifactRecipe( DefCarpentry.CraftSystem ); break;
|
||||
// case 5: AddNonArtifactRecipe( DefBowFletching.CraftSystem ); break;
|
||||
// TODO
|
||||
// case 2: AddNonArtifactRecipe( DefTailoring.CraftSystem ); break;
|
||||
// case 3: AddNonArtifactRecipe( DefBlacksmithy.CraftSystem ); break;
|
||||
// case 4: AddNonArtifactRecipe( DefCarpentry.CraftSystem ); break;
|
||||
// case 5: AddNonArtifactRecipe( DefBowFletching.CraftSystem ); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -221,4 +221,4 @@ namespace Server.Engines.MLQuests.Items
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,39 +8,21 @@
|
|||
Hue = Utility.RandomBrightHue();
|
||||
DropItem(new TinkerTools());
|
||||
|
||||
switch (Utility.Random(10))
|
||||
{
|
||||
case 0:
|
||||
DropItem(new Springs(3));
|
||||
break;
|
||||
case 1:
|
||||
DropItem(new Axle(3));
|
||||
break;
|
||||
case 2:
|
||||
DropItem(new Hinge(3));
|
||||
break;
|
||||
case 3:
|
||||
DropItem(new Key());
|
||||
break;
|
||||
case 4:
|
||||
DropItem(new Scissors());
|
||||
break;
|
||||
case 5:
|
||||
DropItem(new BarrelTap(3));
|
||||
break;
|
||||
case 6:
|
||||
DropItem(new BarrelHoops());
|
||||
break;
|
||||
case 7:
|
||||
DropItem(new Gears(3));
|
||||
break;
|
||||
case 8:
|
||||
DropItem(new Lockpick(3));
|
||||
break;
|
||||
case 9:
|
||||
DropItem(new ClockFrame(3));
|
||||
break;
|
||||
}
|
||||
DropItem(
|
||||
Utility.Random(10) switch
|
||||
{
|
||||
0 => new Springs(3),
|
||||
1 => new Axle(3),
|
||||
2 => new Hinge(3),
|
||||
3 => new Key(),
|
||||
4 => new Scissors(),
|
||||
5 => new BarrelTap(3),
|
||||
6 => new BarrelHoops(),
|
||||
7 => new Gears(3),
|
||||
8 => new Lockpick(3),
|
||||
_ => new ClockFrame(3) // 9
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public NibbetSatchel(Serial serial)
|
||||
|
|
@ -62,4 +44,4 @@
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,8 +24,7 @@ namespace Server.Engines.MLQuests.Items
|
|||
1 => Loot.RandomArmor(false, true),
|
||||
2 => Loot.RandomRangedWeapon(false, true),
|
||||
3 => Loot.RandomJewelry(),
|
||||
4 => Loot.RandomHat(false),
|
||||
_ => null
|
||||
_ => Loot.RandomHat(false) // 4
|
||||
};
|
||||
|
||||
if (loot == null)
|
||||
|
|
@ -189,4 +188,4 @@ namespace Server.Engines.MLQuests.Items
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,13 +113,7 @@ namespace Server.Engines.Plants
|
|||
get => m_Water;
|
||||
set
|
||||
{
|
||||
if (value < 0)
|
||||
m_Water = 0;
|
||||
else if (value > 4)
|
||||
m_Water = 4;
|
||||
else
|
||||
m_Water = value;
|
||||
|
||||
m_Water = Math.Clamp(value, 0, 4);
|
||||
Plant.InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
|
@ -132,12 +126,7 @@ namespace Server.Engines.Plants
|
|||
if (m_Hits == value)
|
||||
return;
|
||||
|
||||
if (value < 0)
|
||||
m_Hits = 0;
|
||||
else if (value > MaxHits)
|
||||
m_Hits = MaxHits;
|
||||
else
|
||||
m_Hits = value;
|
||||
m_Hits = Math.Clamp(value, 0, MaxHits);
|
||||
|
||||
if (m_Hits == 0)
|
||||
Plant.Die();
|
||||
|
|
@ -158,66 +147,32 @@ namespace Server.Engines.Plants
|
|||
return PlantHealth.Dying;
|
||||
if (perc < 66)
|
||||
return PlantHealth.Wilted;
|
||||
if (perc < 100)
|
||||
return PlantHealth.Healthy;
|
||||
return PlantHealth.Vibrant;
|
||||
return perc < 100 ? PlantHealth.Healthy : PlantHealth.Vibrant;
|
||||
}
|
||||
}
|
||||
|
||||
public int Infestation
|
||||
{
|
||||
get => m_Infestation;
|
||||
set
|
||||
{
|
||||
if (value < 0)
|
||||
m_Infestation = 0;
|
||||
else if (value > 2)
|
||||
m_Infestation = 2;
|
||||
else
|
||||
m_Infestation = value;
|
||||
}
|
||||
set => m_Infestation = Math.Clamp(value, 0, 2);
|
||||
}
|
||||
|
||||
public int Fungus
|
||||
{
|
||||
get => m_Fungus;
|
||||
set
|
||||
{
|
||||
if (value < 0)
|
||||
m_Fungus = 0;
|
||||
else if (value > 2)
|
||||
m_Fungus = 2;
|
||||
else
|
||||
m_Fungus = value;
|
||||
}
|
||||
set => m_Fungus = Math.Clamp(value, 0, 2);
|
||||
}
|
||||
|
||||
public int Poison
|
||||
{
|
||||
get => m_Poison;
|
||||
set
|
||||
{
|
||||
if (value < 0)
|
||||
m_Poison = 0;
|
||||
else if (value > 2)
|
||||
m_Poison = 2;
|
||||
else
|
||||
m_Poison = value;
|
||||
}
|
||||
set => m_Poison = Math.Clamp(value, 0, 2);
|
||||
}
|
||||
|
||||
public int Disease
|
||||
{
|
||||
get => m_Disease;
|
||||
set
|
||||
{
|
||||
if (value < 0)
|
||||
m_Disease = 0;
|
||||
else if (value > 2)
|
||||
m_Disease = 2;
|
||||
else
|
||||
m_Disease = value;
|
||||
}
|
||||
set => m_Disease = Math.Clamp(value, 0, 2);
|
||||
}
|
||||
|
||||
public bool IsFullPoisonPotion => m_PoisonPotion >= 2;
|
||||
|
|
@ -225,15 +180,7 @@ namespace Server.Engines.Plants
|
|||
public int PoisonPotion
|
||||
{
|
||||
get => m_PoisonPotion;
|
||||
set
|
||||
{
|
||||
if (value < 0)
|
||||
m_PoisonPotion = 0;
|
||||
else if (value > 2)
|
||||
m_PoisonPotion = 2;
|
||||
else
|
||||
m_PoisonPotion = value;
|
||||
}
|
||||
set => m_PoisonPotion = Math.Clamp(value, 0, 2);
|
||||
}
|
||||
|
||||
public bool IsFullCurePotion => m_CurePotion >= 2;
|
||||
|
|
@ -241,15 +188,7 @@ namespace Server.Engines.Plants
|
|||
public int CurePotion
|
||||
{
|
||||
get => m_CurePotion;
|
||||
set
|
||||
{
|
||||
if (value < 0)
|
||||
m_CurePotion = 0;
|
||||
else if (value > 2)
|
||||
m_CurePotion = 2;
|
||||
else
|
||||
m_CurePotion = value;
|
||||
}
|
||||
set => m_CurePotion = Math.Clamp(value, 0, 2);
|
||||
}
|
||||
|
||||
public bool IsFullHealPotion => m_HealPotion >= 2;
|
||||
|
|
@ -257,15 +196,7 @@ namespace Server.Engines.Plants
|
|||
public int HealPotion
|
||||
{
|
||||
get => m_HealPotion;
|
||||
set
|
||||
{
|
||||
if (value < 0)
|
||||
m_HealPotion = 0;
|
||||
else if (value > 2)
|
||||
m_HealPotion = 2;
|
||||
else
|
||||
m_HealPotion = value;
|
||||
}
|
||||
set => m_HealPotion = Math.Clamp(value, 0, 2);
|
||||
}
|
||||
|
||||
public bool IsFullStrengthPotion => m_StrengthPotion >= 2;
|
||||
|
|
@ -273,15 +204,7 @@ namespace Server.Engines.Plants
|
|||
public int StrengthPotion
|
||||
{
|
||||
get => m_StrengthPotion;
|
||||
set
|
||||
{
|
||||
if (value < 0)
|
||||
m_StrengthPotion = 0;
|
||||
else if (value > 2)
|
||||
m_StrengthPotion = 2;
|
||||
else
|
||||
m_StrengthPotion = value;
|
||||
}
|
||||
set => m_StrengthPotion = Math.Clamp(value, 0, 2);
|
||||
}
|
||||
|
||||
public bool HasMaladies => Infestation > 0 || Fungus > 0 || Poison > 0 || Disease > 0 || Water != 2;
|
||||
|
|
@ -292,23 +215,13 @@ namespace Server.Engines.Plants
|
|||
|
||||
public PlantType SeedType
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Pollinated)
|
||||
return m_SeedType;
|
||||
return Plant.PlantType;
|
||||
}
|
||||
get => Pollinated ? m_SeedType : Plant.PlantType;
|
||||
set => m_SeedType = value;
|
||||
}
|
||||
|
||||
public PlantHue SeedHue
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Pollinated)
|
||||
return m_SeedHue;
|
||||
return Plant.PlantHue;
|
||||
}
|
||||
get => Pollinated ? m_SeedHue : Plant.PlantHue;
|
||||
set => m_SeedHue = value;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -431,7 +431,7 @@ namespace Server.Engines.Quests
|
|||
return false;
|
||||
}
|
||||
|
||||
doneQuests.RemoveAt(i--);
|
||||
doneQuests.RemoveAt(i);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -444,18 +444,7 @@ namespace Server.Engines.Quests
|
|||
if (Utility.RandomBool())
|
||||
who.Animate(17, 7, 1, true, false, 0);
|
||||
else
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
who.Animate(32, 7, 1, true, false, 0);
|
||||
break;
|
||||
case 1:
|
||||
who.Animate(33, 7, 1, true, false, 0);
|
||||
break;
|
||||
case 2:
|
||||
who.Animate(34, 7, 1, true, false, 0);
|
||||
break;
|
||||
}
|
||||
who.Animate(32 + Utility.Random(3), 7, 1, true, false, 0);
|
||||
|
||||
who.Direction = who.GetDirectionTo(to);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,18 +27,14 @@ namespace Server.Engines.Quests.Ninja
|
|||
Items[i].Delete();
|
||||
|
||||
for (int i = 0; i < 75; i++)
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
DropItem(new GoldBracelet());
|
||||
break;
|
||||
case 1:
|
||||
DropItem(new GoldRing());
|
||||
break;
|
||||
case 2:
|
||||
DropItem(Loot.RandomGem());
|
||||
break;
|
||||
}
|
||||
DropItem(
|
||||
Utility.Random(10) switch
|
||||
{
|
||||
0 => new GoldBracelet(),
|
||||
1 => new GoldRing(),
|
||||
_ => Loot.RandomGem() // 2
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
|
|
@ -133,4 +129,4 @@ namespace Server.Engines.Quests.Ninja
|
|||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,18 +27,14 @@ namespace Server.Engines.Quests.Samurai
|
|||
Items[i].Delete();
|
||||
|
||||
for (int i = 0; i < 75; i++)
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
DropItem(new GoldBracelet());
|
||||
break;
|
||||
case 1:
|
||||
DropItem(new GoldRing());
|
||||
break;
|
||||
case 2:
|
||||
DropItem(Loot.RandomGem());
|
||||
break;
|
||||
}
|
||||
DropItem(
|
||||
Utility.Random(10) switch
|
||||
{
|
||||
0 => new GoldBracelet(),
|
||||
1 => new GoldRing(),
|
||||
_ => Loot.RandomGem() // 2
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public override bool CheckHold(Mobile m, Item item, bool message, bool checkItems, int plusItems, int plusWeight) => false;
|
||||
|
|
|
|||
|
|
@ -31,39 +31,18 @@ namespace Server.Engines.Quests.Samurai
|
|||
Fame = 200;
|
||||
Karma = -200;
|
||||
|
||||
switch (Utility.Random(10))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new LeftArm());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new RightArm());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Torso());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new Bone());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 6:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 7:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 8:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 9:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
}
|
||||
PackItem(
|
||||
Utility.Random(10) switch
|
||||
{
|
||||
0 => new LeftArm(),
|
||||
1 => new RightArm(),
|
||||
2 => new Torso(),
|
||||
3 => new Bone(),
|
||||
4 => new RibCage(),
|
||||
5 => new RibCage(),
|
||||
_ => new BonePile() // 6-9
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public CursedSoul(Serial serial) : base(serial)
|
||||
|
|
@ -87,4 +66,4 @@ namespace Server.Engines.Quests.Samurai
|
|||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,44 +35,33 @@ namespace Server.Engines.Quests.Samurai
|
|||
AddItem(new LeatherHiroSode());
|
||||
AddItem(new SamuraiTabi(Utility.RandomNondyedHue()));
|
||||
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new StuddedHaidate());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new PlateSuneate());
|
||||
break;
|
||||
default:
|
||||
AddItem(new LeatherSuneate());
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(3) switch
|
||||
{
|
||||
0 => new StuddedHaidate(),
|
||||
1 => new PlateSuneate(),
|
||||
_ => new LeatherSuneate()
|
||||
}
|
||||
);
|
||||
|
||||
switch (Utility.Random(4))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new DecorativePlateKabuto());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new ChainHatsuburi());
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new LightPlateJingasa());
|
||||
break;
|
||||
default:
|
||||
AddItem(new LeatherJingasa());
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(4) switch
|
||||
{
|
||||
0 => new DecorativePlateKabuto(),
|
||||
1 => new ChainHatsuburi(),
|
||||
2 => new LightPlateJingasa(),
|
||||
_ => new LeatherJingasa()
|
||||
}
|
||||
);
|
||||
|
||||
var weapon = Utility.Random(3) switch
|
||||
{
|
||||
0 => (Item)new NoDachi(),
|
||||
1 => new Lajatang(),
|
||||
_ => new Wakizashi()
|
||||
};
|
||||
|
||||
weapon.Movable = false;
|
||||
AddItem(weapon);
|
||||
AddItem(
|
||||
Utility.Random(3) switch
|
||||
{
|
||||
0 => new NoDachi{Movable = false},
|
||||
1 => new Lajatang{Movable = false},
|
||||
_ => new Wakizashi{Movable = false}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public override void OnTalk(PlayerMobile player, bool contextMenu)
|
||||
|
|
@ -93,4 +82,4 @@ namespace Server.Engines.Quests.Samurai
|
|||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,18 +24,14 @@ namespace Server.Engines.Quests.Samurai
|
|||
|
||||
AddItem(new Bandana(Utility.RandomNondyedHue()));
|
||||
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new Tessen());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new Kama());
|
||||
break;
|
||||
default:
|
||||
AddItem(new Lajatang());
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(3) switch
|
||||
{
|
||||
0 => new Tessen(),
|
||||
1 => new Kama(),
|
||||
_ => new Lajatang()
|
||||
}
|
||||
);
|
||||
|
||||
SetSkill(SkillName.Swords, 50.0);
|
||||
SetSkill(SkillName.Tactics, 50.0);
|
||||
|
|
@ -64,4 +60,4 @@ namespace Server.Engines.Quests.Samurai
|
|||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,33 +21,25 @@ namespace Server.Engines.Quests.Samurai
|
|||
AddItem(new LeatherHiroSode());
|
||||
AddItem(new SamuraiTabi());
|
||||
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new StuddedHaidate());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new PlateSuneate());
|
||||
break;
|
||||
default:
|
||||
AddItem(new LeatherSuneate());
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(3) switch
|
||||
{
|
||||
0 => new StuddedHaidate(),
|
||||
1 => new PlateSuneate(),
|
||||
_ => new LeatherSuneate()
|
||||
}
|
||||
);
|
||||
|
||||
AddItem(new Bandana(Utility.RandomNondyedHue()));
|
||||
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new NoDachi());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new Lajatang());
|
||||
break;
|
||||
default:
|
||||
AddItem(new Wakizashi());
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(3) switch
|
||||
{
|
||||
0 => new NoDachi(),
|
||||
1 => new Lajatang(),
|
||||
_ => new Wakizashi()
|
||||
}
|
||||
);
|
||||
|
||||
SetSkill(SkillName.Swords, 50.0);
|
||||
SetSkill(SkillName.Tactics, 50.0);
|
||||
|
|
@ -76,4 +68,4 @@ namespace Server.Engines.Quests.Samurai
|
|||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,12 +95,7 @@ namespace Server.Engines.VeteranRewards
|
|||
{
|
||||
TimeSpan totalTime = DateTime.UtcNow - acct.Created;
|
||||
|
||||
int level = (int)(totalTime.TotalDays / RewardInterval.TotalDays);
|
||||
|
||||
if (level < 0)
|
||||
level = 0;
|
||||
|
||||
return level;
|
||||
return Math.Max((int)(totalTime.TotalDays / RewardInterval.TotalDays), 0);
|
||||
}
|
||||
|
||||
public static bool HasHalfLevel(Mobile mob)
|
||||
|
|
@ -473,10 +468,7 @@ namespace Server.Engines.VeteranRewards
|
|||
if (m.SkillsCap == 7000 || m.SkillsCap == 7050 || m.SkillsCap == 7100 ||
|
||||
m.SkillsCap == 7150 || m.SkillsCap == 7200)
|
||||
{
|
||||
if (level > 4)
|
||||
level = 4;
|
||||
else if (level < 0)
|
||||
level = 0;
|
||||
level = Math.Clamp(level, 0, 4);
|
||||
|
||||
if (SkillCapRewards)
|
||||
m.SkillsCap = 7000 + level * 50;
|
||||
|
|
|
|||
|
|
@ -342,14 +342,12 @@ namespace Server
|
|||
targetFame / 100.0 * (m_HonorDamage / m_TotalDamage); // Initial honor gain is 100th of the monsters honor
|
||||
|
||||
if (m_HonorDamage == m_TotalDamage && m_FirstHit == FirstHit.Granted)
|
||||
dGain = dGain * 1.5; // honor gain is increased alot more if the combat was fully honorable
|
||||
dGain *= 1.5; // honor gain is increased alot more if the combat was fully honorable
|
||||
else
|
||||
dGain = dGain * 0.9;
|
||||
dGain *= 0.9;
|
||||
|
||||
int gain = Math.Min((int)dGain, 200);
|
||||
|
||||
if (gain < 1)
|
||||
gain = 1; // Minimum gain of 1 honor when the honor is under the monsters fame
|
||||
// Minimum gain of 1 honor when the honor is under the monsters fame
|
||||
int gain = Math.Clamp((int)dGain, 1, 200);
|
||||
|
||||
if (VirtueHelper.IsHighestPath(Source, VirtueName.Honor))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2387,14 +2387,13 @@ namespace Server.Gumps
|
|||
|
||||
var newLevel = index switch
|
||||
{
|
||||
20 => AccessLevel.Player,
|
||||
21 => AccessLevel.Counselor,
|
||||
22 => AccessLevel.GameMaster,
|
||||
23 => AccessLevel.Seer,
|
||||
24 => AccessLevel.Administrator,
|
||||
33 => AccessLevel.Developer,
|
||||
34 => AccessLevel.Owner,
|
||||
_ => AccessLevel.Player
|
||||
_ => AccessLevel.Player // 20
|
||||
};
|
||||
|
||||
if (newLevel < from.AccessLevel || from.AccessLevel == AccessLevel.Owner)
|
||||
|
|
@ -2628,7 +2627,7 @@ namespace Server.Gumps
|
|||
{
|
||||
string check = Firewall.List[i].ToString();
|
||||
|
||||
if (check.IndexOf(match) >= 0)
|
||||
if (check?.IndexOf(match) >= 0)
|
||||
results.Add(Firewall.List[i]);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -207,15 +207,7 @@ namespace Server.Gumps
|
|||
|
||||
if (shouldSet)
|
||||
{
|
||||
string comment = null;
|
||||
|
||||
if (c != null)
|
||||
{
|
||||
comment = c.Text.Trim();
|
||||
|
||||
if (comment.Length == 0)
|
||||
comment = null;
|
||||
}
|
||||
string comment = c?.Text.Trim().IsNullOrDefault(null);
|
||||
|
||||
for (int i = 0; i < m_List.Count; ++i)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -25,19 +25,11 @@ namespace Server.Gumps
|
|||
|
||||
if (leader != null)
|
||||
{
|
||||
string leadTitle;
|
||||
string leadTitle = leader.GuildTitle?.Trim();
|
||||
string leadName = leader.Name?.Trim().IsNullOrDefault("(empty)");
|
||||
string text = leadTitle?.Length > 0 ? $"{leadTitle}: {leadName}" : leadName;
|
||||
|
||||
if ((leadTitle = leader.GuildTitle) != null && (leadTitle = leadTitle.Trim()).Length > 0)
|
||||
leadTitle += ": ";
|
||||
else
|
||||
leadTitle = "";
|
||||
|
||||
string leadName;
|
||||
|
||||
if ((leadName = leader.Name) == null || (leadName = leadName.Trim()).Length <= 0)
|
||||
leadName = "(empty)";
|
||||
|
||||
AddHtml(220, 15, 250, 35, leadTitle + leadName);
|
||||
AddHtml(220, 15, 250, 35, text);
|
||||
}
|
||||
|
||||
AddButton(20, 50, 4005, 4007, 1);
|
||||
|
|
@ -50,9 +42,7 @@ namespace Server.Gumps
|
|||
|
||||
fealty ??= beholder;
|
||||
|
||||
string fealtyName = fealty.Name?.Trim();
|
||||
if (string.IsNullOrWhiteSpace(fealtyName))
|
||||
fealtyName = "(empty)";
|
||||
string fealtyName = fealty.Name?.Trim().IsNullOrDefault("(empty)");
|
||||
|
||||
if (beholder == fealty)
|
||||
AddHtmlLocalized(55, 70, 470, 20, 1018002); // yourself
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ namespace Server.Guilds
|
|||
{
|
||||
base.OnResponse(sender, info);
|
||||
|
||||
PlayerMobile pm = sender.Mobile as PlayerMobile;
|
||||
PlayerMobile pm = (PlayerMobile)sender.Mobile;
|
||||
|
||||
if (!IsMember(pm, guild))
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -363,7 +363,7 @@ namespace Server.Gumps
|
|||
{
|
||||
string val = values[i];
|
||||
|
||||
string v = current.Length == 0 ? val : $"{current}{' '}{val}";
|
||||
string v = current.Length == 0 ? val : $"{current} {val}";
|
||||
|
||||
if (v.Length < 10)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -481,10 +481,7 @@ namespace Server.Gumps
|
|||
{
|
||||
Mobile m = m_House.Owner;
|
||||
|
||||
if (m?.Deleted != false)
|
||||
return "(unowned)";
|
||||
|
||||
return string.IsNullOrWhiteSpace(m.Name) ? "(no name)" : m.Name.Trim();
|
||||
return m?.Deleted != false ? "(unowned)" : m.Name.Trim().IsNullOrDefault("(no name)");
|
||||
}
|
||||
|
||||
private string GetDateTime(DateTime val) => val == DateTime.MinValue ? "" : val.ToString("yyyy'-'MM'-'dd HH':'mm':'ss");
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
using System;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
|
||||
|
|
@ -12,10 +13,7 @@ namespace Server.Gumps
|
|||
{
|
||||
int totalGold = from.TotalGold;
|
||||
|
||||
if (offer > totalGold)
|
||||
offer = totalGold;
|
||||
else if (offer < 0)
|
||||
offer = 0;
|
||||
offer = Math.Clamp(offer, 0, totalGold);
|
||||
|
||||
m_From = from;
|
||||
m_Offer = offer;
|
||||
|
|
@ -82,10 +80,7 @@ namespace Server.Gumps
|
|||
{
|
||||
int totalGold = m_From.TotalGold;
|
||||
|
||||
if (m_Offer > totalGold)
|
||||
m_Offer = totalGold;
|
||||
else if (m_Offer < 0)
|
||||
m_Offer = 0;
|
||||
m_Offer = Math.Clamp(m_Offer, 0, totalGold);
|
||||
|
||||
if (m_From.TithingPoints + m_Offer > 100000) // TODO: What's the maximum?
|
||||
m_Offer = 100000 - m_From.TithingPoints;
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ namespace Server.Gumps
|
|||
|
||||
public static List<Mobile> BuildList(Mobile owner, string rawFilter)
|
||||
{
|
||||
string filter = string.IsNullOrWhiteSpace(rawFilter) ? null : rawFilter.Trim().ToLower();
|
||||
string filter = rawFilter.Trim().ToLower().IsNullOrDefault(null);
|
||||
|
||||
List<Mobile> list = new List<Mobile>();
|
||||
List<NetState> states = TcpServer.Instances;
|
||||
|
|
@ -137,12 +137,7 @@ namespace Server.Gumps
|
|||
{
|
||||
m_Page = page;
|
||||
|
||||
int count = m_Mobiles.Count - page * EntryCount;
|
||||
|
||||
if (count < 0)
|
||||
count = 0;
|
||||
else if (count > EntryCount)
|
||||
count = EntryCount;
|
||||
int count = Math.Clamp(m_Mobiles.Count - page * EntryCount, 0, EntryCount);
|
||||
|
||||
int totalHeight = OffsetSize + (EntryHeight + OffsetSize) * (count + 1);
|
||||
|
||||
|
|
|
|||
|
|
@ -154,18 +154,14 @@ namespace Server.Engines.Events
|
|||
|
||||
if (Utility.RandomDouble() > .10)
|
||||
{
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
begged.Say(1076768);
|
||||
break; /* Oooooh, aren't you cute! */
|
||||
case 1:
|
||||
begged.Say(1076779);
|
||||
break; /* All right...This better not spoil your dinner! */
|
||||
case 2:
|
||||
begged.Say(1076778);
|
||||
break; /* Here you go! Enjoy! */
|
||||
}
|
||||
begged.Say(
|
||||
Utility.Random(3) switch
|
||||
{
|
||||
0 => 1076768, // Oooooh, aren't you cute!
|
||||
1 => 1076779, // All right...This better not spoil your dinner!
|
||||
_ => 1076778 // Here you go! Enjoy!
|
||||
}
|
||||
);
|
||||
|
||||
if (Utility.RandomDouble() <= .01 && from.Skills.Begging.Value >= 100)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -211,17 +211,20 @@ namespace Server.Engines.Events
|
|||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
switch (Utility.Random(10))
|
||||
{
|
||||
case 0: PackItem(new LeftArm()); break;
|
||||
case 1: PackItem(new RightArm()); break;
|
||||
case 2: PackItem(new Torso()); break;
|
||||
case 3: PackItem(new Bone()); break;
|
||||
case 4: PackItem(new RibCage()); break;
|
||||
case 5:
|
||||
if (m_DeadPlayer?.Deleted == false) PackItem(new PlayerBones(m_DeadPlayer.Name));
|
||||
break;
|
||||
}
|
||||
var deadPlayerExists = m_DeadPlayer?.Deleted == false;
|
||||
|
||||
PackItem(
|
||||
Utility.Random(deadPlayerExists ? 8 : 10) switch
|
||||
{
|
||||
0 => new LeftArm(),
|
||||
1 => new RightArm(),
|
||||
2 => new Torso(),
|
||||
3 => new Bone(),
|
||||
4 => new RibCage(),
|
||||
9 => deadPlayerExists ? new PlayerBones(m_DeadPlayer.Name) : null,
|
||||
_ => null // 5-8, 10 (50%)
|
||||
}
|
||||
);
|
||||
|
||||
AddLoot(LootPack.Meager);
|
||||
}
|
||||
|
|
@ -237,10 +240,8 @@ namespace Server.Engines.Events
|
|||
|
||||
public override void OnDelete()
|
||||
{
|
||||
if (HalloweenHauntings.ReAnimated != null)
|
||||
if (m_DeadPlayer?.Deleted == false)
|
||||
if (HalloweenHauntings.ReAnimated.ContainsKey(m_DeadPlayer))
|
||||
HalloweenHauntings.ReAnimated.Remove(m_DeadPlayer);
|
||||
if (m_DeadPlayer?.Deleted == false)
|
||||
HalloweenHauntings.ReAnimated?.Remove(m_DeadPlayer);
|
||||
}
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
|
|
|
|||
|
|
@ -606,12 +606,7 @@ namespace Server.Items
|
|||
get => m_Quantity;
|
||||
set
|
||||
{
|
||||
if (value < 0)
|
||||
value = 0;
|
||||
else if (value > MaxQuantity)
|
||||
value = MaxQuantity;
|
||||
|
||||
m_Quantity = value;
|
||||
m_Quantity = Math.Clamp(value, 0, MaxQuantity);
|
||||
|
||||
InvalidateProperties();
|
||||
|
||||
|
|
@ -854,10 +849,7 @@ namespace Server.Items
|
|||
_ => 0
|
||||
};
|
||||
|
||||
from.BAC += bac;
|
||||
|
||||
if (from.BAC > 60)
|
||||
from.BAC = 60;
|
||||
from.BAC = Math.Min(from.BAC + bac, 60);
|
||||
|
||||
CheckHeaveTimer(from);
|
||||
}
|
||||
|
|
@ -1053,7 +1045,6 @@ namespace Server.Items
|
|||
|
||||
public static void CheckHeaveTimer(Mobile from)
|
||||
{
|
||||
Timer t;
|
||||
if (from.BAC > 0 && from.Map != Map.Internal && !from.Deleted)
|
||||
{
|
||||
if (m_Table.ContainsKey(from))
|
||||
|
|
@ -1062,12 +1053,12 @@ namespace Server.Items
|
|||
if (from.BAC > 60)
|
||||
from.BAC = 60;
|
||||
|
||||
t = new HeaveTimer(from);
|
||||
Timer t = new HeaveTimer(from);
|
||||
t.Start();
|
||||
|
||||
m_Table[from] = t;
|
||||
}
|
||||
else if (m_Table.TryGetValue(from, out t))
|
||||
else if (m_Table.TryGetValue(from, out var t))
|
||||
{
|
||||
t.Stop();
|
||||
m_Table.Remove(from);
|
||||
|
|
|
|||
|
|
@ -23,9 +23,9 @@ namespace Server.Items
|
|||
{
|
||||
Delete();
|
||||
|
||||
var i = Utility.Random(from.BAC >= 5 ? 6 : 5) switch
|
||||
Item i = Utility.Random(from.BAC >= 5 ? 6 : 5) switch
|
||||
{
|
||||
0 => (Item)new OrigamiButterfly(),
|
||||
0 => new OrigamiButterfly(),
|
||||
1 => new OrigamiSwan(),
|
||||
2 => new OrigamiFrog(),
|
||||
3 => new OrigamiShape(),
|
||||
|
|
|
|||
|
|
@ -565,10 +565,7 @@ namespace Server.Items
|
|||
AddHtml(255, 180, 150, 20, message.Time.ToString("yyyy-MM-dd HH:mm:ss"));
|
||||
|
||||
Mobile poster = message.Poster;
|
||||
string name = poster?.Name;
|
||||
|
||||
if (name == null || (name = name.Trim()).Length == 0)
|
||||
name = "Someone";
|
||||
string name = poster?.Name?.Trim().IsNullOrDefault("Someone");
|
||||
|
||||
AddHtml(255, 200, 150, 20, name);
|
||||
|
||||
|
|
|
|||
|
|
@ -168,13 +168,7 @@ namespace Server.Items
|
|||
{
|
||||
HouseSign sign = m_House.Sign;
|
||||
|
||||
if (sign != null)
|
||||
m_Description = sign.Name;
|
||||
else
|
||||
m_Description = null;
|
||||
|
||||
if (m_Description == null || (m_Description = m_Description.Trim()).Length == 0)
|
||||
m_Description = "an unnamed house";
|
||||
m_Description = sign?.Name?.Trim().IsNullOrDefault("an unnamed house");
|
||||
|
||||
setDesc = true;
|
||||
|
||||
|
|
@ -233,10 +227,7 @@ namespace Server.Items
|
|||
{
|
||||
if (m_Marked)
|
||||
{
|
||||
string desc;
|
||||
|
||||
if ((desc = m_Description) == null || (desc = desc.Trim()).Length == 0)
|
||||
desc = "an unknown location";
|
||||
string desc = m_Description?.Trim().IsNullOrDefault("an unknown location");
|
||||
|
||||
if (m_TargetMap == Map.Tokuno)
|
||||
LabelTo(from, House != null ? 1063260 : 1063259,
|
||||
|
|
|
|||
|
|
@ -23,13 +23,7 @@ namespace Server.Items
|
|||
public int Fruits
|
||||
{
|
||||
get => m_Fruits;
|
||||
set
|
||||
{
|
||||
if (value < 0)
|
||||
m_Fruits = 0;
|
||||
else
|
||||
m_Fruits = value;
|
||||
}
|
||||
set => m_Fruits = Math.Max(value, 0);
|
||||
}
|
||||
|
||||
public override void OnComponentUsed(AddonComponent c, Mobile from)
|
||||
|
|
@ -209,4 +203,4 @@ namespace Server.Items
|
|||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -830,12 +830,7 @@ namespace Server.Misc
|
|||
|
||||
private static void FixStat(ref int stat, int diff, int max)
|
||||
{
|
||||
stat += diff;
|
||||
|
||||
if (stat < 0)
|
||||
stat = 0;
|
||||
else if (stat > max)
|
||||
stat = max;
|
||||
stat = Math.Clamp(stat + diff, 0, max);
|
||||
}
|
||||
|
||||
private static void SetStats(Mobile m, NetState state, int str, int dex, int intel)
|
||||
|
|
|
|||
|
|
@ -163,12 +163,12 @@ namespace Server.Misc
|
|||
|
||||
using (StreamWriter op = new StreamWriter(filePath))
|
||||
{
|
||||
Version ver = Core.Assembly.GetName().Version;
|
||||
Version ver = Core.Assembly.GetName().Version ?? new Version("0.0.0.0");
|
||||
|
||||
op.WriteLine("Server Crash Report");
|
||||
op.WriteLine("===================");
|
||||
op.WriteLine();
|
||||
op.WriteLine("ModernUO Version {0}.{1}, Build {2}.{3}", ver.Major, ver.Minor, ver.Build, ver.Revision);
|
||||
op.WriteLine($"ModernUO Version {ver.Major}.{ver.Minor}, Build {ver.Build}.{ver.Revision}");
|
||||
op.WriteLine("Operating System: {0}", Environment.OSVersion);
|
||||
op.WriteLine(".NET Framework: {0}", Environment.Version);
|
||||
op.WriteLine("Time: {0}", DateTime.UtcNow);
|
||||
|
|
|
|||
|
|
@ -607,16 +607,11 @@ namespace Server
|
|||
|
||||
public void BeginCall(MethodInfo method)
|
||||
{
|
||||
Type type;
|
||||
|
||||
if ((method.CallingConvention & CallingConventions.HasThis) != 0)
|
||||
type = m_Stack.Peek();
|
||||
else
|
||||
type = method.DeclaringType;
|
||||
var type = (method.CallingConvention & CallingConventions.HasThis) != 0 ? m_Stack.Peek() : method.DeclaringType;
|
||||
|
||||
m_Calls.Push(new CallInfo(type, method));
|
||||
|
||||
if (type.IsValueType)
|
||||
if (type!.IsValueType)
|
||||
{
|
||||
LocalBuilder temp = AcquireTemp(type);
|
||||
|
||||
|
|
|
|||
|
|
@ -21,11 +21,7 @@ namespace Server.Misc
|
|||
{
|
||||
int sideA, sideB;
|
||||
|
||||
if (angle < 0)
|
||||
angle = 0;
|
||||
|
||||
if (angle > 90)
|
||||
angle = 90;
|
||||
angle = Math.Clamp(angle, 0, 90);
|
||||
|
||||
sideA = (int)Math.Round(radius * Math.Sin(DegreesToRadians(angle)));
|
||||
sideB = (int)Math.Round(radius * Math.Cos(DegreesToRadians(angle)));
|
||||
|
|
@ -218,4 +214,4 @@ namespace Server.Misc
|
|||
public int Quadrant { get; }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ namespace Server
|
|||
|
||||
int val = 0;
|
||||
|
||||
if (body >= 0 && body < m_Table.Length)
|
||||
if (body >= 0 && body < m_Table!.Length)
|
||||
val = m_Table[body];
|
||||
|
||||
if (val == 0)
|
||||
|
|
|
|||
|
|
@ -114,20 +114,14 @@ namespace Server.Misc
|
|||
if (m.Fame >= MaxFame)
|
||||
return;
|
||||
|
||||
offset -= m.Fame / 100;
|
||||
|
||||
if (offset < 0)
|
||||
offset = 0;
|
||||
offset = Math.Max(offset - m.Fame / 100, 0);
|
||||
}
|
||||
else if (offset < 0)
|
||||
{
|
||||
if (m.Fame <= MinFame)
|
||||
return;
|
||||
|
||||
offset -= m.Fame / 100;
|
||||
|
||||
if (offset > 0)
|
||||
offset = 0;
|
||||
offset = Math.Min(offset - m.Fame / 100, 0);
|
||||
}
|
||||
|
||||
if (m.Fame + offset > MaxFame)
|
||||
|
|
@ -170,20 +164,14 @@ namespace Server.Misc
|
|||
if (m.Karma >= MaxKarma)
|
||||
return;
|
||||
|
||||
offset -= m.Karma / 100;
|
||||
|
||||
if (offset < 0)
|
||||
offset = 0;
|
||||
offset = Math.Max(offset - m.Karma / 100, 0);
|
||||
}
|
||||
else if (offset < 0)
|
||||
{
|
||||
if (m.Karma <= MinKarma)
|
||||
return;
|
||||
|
||||
offset -= m.Karma / 100;
|
||||
|
||||
if (offset > 0)
|
||||
offset = 0;
|
||||
offset = Math.Min(offset - m.Karma / 100, 0);
|
||||
}
|
||||
|
||||
if (m.Karma + offset > MaxKarma)
|
||||
|
|
|
|||
|
|
@ -2731,10 +2731,7 @@ namespace Server.Mobiles
|
|||
m_Owner.DetectHidden();
|
||||
|
||||
// Not exactly OSI style, approximation.
|
||||
int delay = 15000 / m_Owner.m_Mobile.Int;
|
||||
|
||||
if (delay > 60)
|
||||
delay = 60;
|
||||
int delay = Math.Min(15000 / m_Owner.m_Mobile.Int, 60);
|
||||
|
||||
int min = delay * (9 / 10); // 13s at 1000 int, 33s at 400 int, 54s at <250 int
|
||||
int max = delay * (10 / 9); // 16s at 1000 int, 41s at 400 int, 66s at <250 int
|
||||
|
|
|
|||
|
|
@ -203,8 +203,8 @@ namespace Server.Mobiles
|
|||
public void OnFailedMove()
|
||||
{
|
||||
if (!m_Mobile.DisallowAllMoves && (SmartAI
|
||||
? Utility.Random(4) == 0
|
||||
: ScaleBySkill(TeleportChance, SkillName.Magery) > Utility.RandomDouble()))
|
||||
? Utility.Random(4) == 0
|
||||
: ScaleBySkill(TeleportChance, SkillName.Magery) > Utility.RandomDouble()))
|
||||
{
|
||||
m_Mobile.Target?.Cancel(m_Mobile, TargetCancelType.Canceled);
|
||||
|
||||
|
|
@ -275,16 +275,11 @@ namespace Server.Mobiles
|
|||
|
||||
public virtual Spell GetRandomDamageSpellMage()
|
||||
{
|
||||
int maxCircle = (int)((m_Mobile.Skills.Magery.Value + 20.0) / (100.0 / 7.0));
|
||||
|
||||
if (maxCircle < 1)
|
||||
maxCircle = 1;
|
||||
else if (maxCircle > 8)
|
||||
maxCircle = 8;
|
||||
int maxCircle = Math.Clamp((int)((m_Mobile.Skills.Magery.Value + 20.0) / (100.0 / 7.0)), 1, 8);
|
||||
|
||||
return Utility.Random(maxCircle * 2) switch
|
||||
{
|
||||
0 => (Spell)new MagicArrowSpell(m_Mobile),
|
||||
0 => new MagicArrowSpell(m_Mobile),
|
||||
1 => new MagicArrowSpell(m_Mobile),
|
||||
2 => new HarmSpell(m_Mobile),
|
||||
3 => new HarmSpell(m_Mobile),
|
||||
|
|
@ -328,7 +323,7 @@ namespace Server.Mobiles
|
|||
|
||||
return Utility.Random(3) switch
|
||||
{
|
||||
0 => (Spell)new WeakenSpell(m_Mobile),
|
||||
0 => new WeakenSpell(m_Mobile),
|
||||
1 => new ClumsySpell(m_Mobile),
|
||||
_ => new FeeblemindSpell(m_Mobile)
|
||||
};
|
||||
|
|
@ -664,7 +659,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
// We are low on health, should we flee?
|
||||
|
||||
bool flee = false;
|
||||
bool flee;
|
||||
|
||||
if (m_Mobile.Hits < c.Hits)
|
||||
{
|
||||
|
|
@ -692,7 +687,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
// We are ready to cast a spell
|
||||
|
||||
Spell spell = null;
|
||||
Spell spell;
|
||||
Mobile toDispel = FindDispelTarget(true);
|
||||
|
||||
if (m_Mobile.Poisoned) // Top cast priority is cure
|
||||
|
|
@ -800,7 +795,7 @@ namespace Server.Mobiles
|
|||
|
||||
public override bool DoActionFlee()
|
||||
{
|
||||
Mobile c = m_Mobile.Combatant;
|
||||
// Mobile c = m_Mobile.Combatant;
|
||||
|
||||
if ((m_Mobile.Mana > 20 || m_Mobile.Mana == m_Mobile.ManaMax) && m_Mobile.Hits > m_Mobile.HitsMax / 2)
|
||||
{
|
||||
|
|
@ -1014,74 +1009,64 @@ namespace Server.Mobiles
|
|||
{
|
||||
targ.Invoke(m_Mobile, m_RevealTarget);
|
||||
}
|
||||
else if (isTeleport && toTarget != null)
|
||||
else
|
||||
{
|
||||
Map map = m_Mobile.Map;
|
||||
|
||||
if (map == null)
|
||||
if (map != null && isTeleport && toTarget != null)
|
||||
{
|
||||
targ.Cancel(m_Mobile, TargetCancelType.Canceled);
|
||||
return true;
|
||||
}
|
||||
int teleRange = targ.Range >= 0 ? targ.Range : Core.ML ? 11 : 12;
|
||||
|
||||
int px, py;
|
||||
int px, py;
|
||||
|
||||
if (teleportAway)
|
||||
{
|
||||
int rx = m_Mobile.X - toTarget.X;
|
||||
int ry = m_Mobile.Y - toTarget.Y;
|
||||
|
||||
double d = m_Mobile.GetDistanceToSqrt(toTarget);
|
||||
|
||||
px = toTarget.X + (int)(rx * (10 / d));
|
||||
py = toTarget.Y + (int)(ry * (10 / d));
|
||||
}
|
||||
else
|
||||
{
|
||||
px = toTarget.X;
|
||||
py = toTarget.Y;
|
||||
}
|
||||
|
||||
for (int i = 0; i < m_Offsets.Length; i += 2)
|
||||
{
|
||||
int x = m_Offsets[i], y = m_Offsets[i + 1];
|
||||
|
||||
Point3D p = new Point3D(px + x, py + y, 0);
|
||||
|
||||
LandTarget lt = new LandTarget(p, map);
|
||||
|
||||
if ((targ.Range == -1 || m_Mobile.InRange(p, targ.Range)) && m_Mobile.InLOS(lt) &&
|
||||
map.CanSpawnMobile(px + x, py + y, lt.Z) && !SpellHelper.CheckMulti(p, map))
|
||||
if (teleportAway)
|
||||
{
|
||||
targ.Invoke(m_Mobile, lt);
|
||||
return true;
|
||||
int rx = m_Mobile.X - toTarget.X;
|
||||
int ry = m_Mobile.Y - toTarget.Y;
|
||||
|
||||
double d = m_Mobile.GetDistanceToSqrt(toTarget);
|
||||
|
||||
px = toTarget.X + (int)(rx * (10 / d));
|
||||
py = toTarget.Y + (int)(ry * (10 / d));
|
||||
}
|
||||
else
|
||||
{
|
||||
px = toTarget.X;
|
||||
py = toTarget.Y;
|
||||
}
|
||||
|
||||
for (int i = 0; i < m_Offsets.Length; i += 2)
|
||||
{
|
||||
int x = m_Offsets[i], y = m_Offsets[i + 1];
|
||||
|
||||
Point3D p = new Point3D(px + x, py + y, 0);
|
||||
|
||||
LandTarget lt = new LandTarget(p, map);
|
||||
|
||||
if ((targ.Range == -1 || m_Mobile.InRange(p, targ.Range)) && m_Mobile.InLOS(lt) &&
|
||||
map.CanSpawnMobile(px + x, py + y, lt.Z) && !SpellHelper.CheckMulti(p, map))
|
||||
{
|
||||
targ.Invoke(m_Mobile, lt);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 10; ++i)
|
||||
{
|
||||
Point3D randomPoint = new Point3D(m_Mobile.X - teleRange + Utility.Random(teleRange * 2 + 1),
|
||||
m_Mobile.Y - teleRange + Utility.Random(teleRange * 2 + 1), 0);
|
||||
|
||||
LandTarget lt = new LandTarget(randomPoint, map);
|
||||
|
||||
if (m_Mobile.InLOS(lt) && map.CanSpawnMobile(lt.X, lt.Y, lt.Z) &&
|
||||
!SpellHelper.CheckMulti(randomPoint, map))
|
||||
{
|
||||
targ.Invoke(m_Mobile, new LandTarget(randomPoint, map));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int teleRange = targ.Range;
|
||||
|
||||
if (teleRange < 0)
|
||||
teleRange = Core.ML ? 11 : 12;
|
||||
|
||||
for (int i = 0; i < 10; ++i)
|
||||
{
|
||||
Point3D randomPoint = new Point3D(m_Mobile.X - teleRange + Utility.Random(teleRange * 2 + 1),
|
||||
m_Mobile.Y - teleRange + Utility.Random(teleRange * 2 + 1), 0);
|
||||
|
||||
LandTarget lt = new LandTarget(randomPoint, map);
|
||||
|
||||
if (m_Mobile.InLOS(lt) && map.CanSpawnMobile(lt.X, lt.Y, lt.Z) &&
|
||||
!SpellHelper.CheckMulti(randomPoint, map))
|
||||
{
|
||||
targ.Invoke(m_Mobile, new LandTarget(randomPoint, map));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
targ.Cancel(m_Mobile, TargetCancelType.Canceled);
|
||||
}
|
||||
else
|
||||
{
|
||||
targ.Cancel(m_Mobile, TargetCancelType.Canceled);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -40,39 +40,18 @@ namespace Server.Mobiles
|
|||
|
||||
PackItem(Loot.RandomArmorOrShieldOrWeapon());
|
||||
|
||||
switch (Utility.Random(10))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new LeftArm());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new RightArm());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Torso());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new Bone());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 6:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 7:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 8:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 9:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
}
|
||||
PackItem(
|
||||
Utility.Random(10) switch
|
||||
{
|
||||
0 => new LeftArm(),
|
||||
1 => new RightArm(),
|
||||
2 => new Torso(),
|
||||
3 => new Bone(),
|
||||
4 => new RibCage(),
|
||||
5 => new RibCage(),
|
||||
_ => new BonePile() // 6-9
|
||||
}
|
||||
);
|
||||
|
||||
if (Utility.RandomDouble() < 0.025)
|
||||
PackItem(new GlacialStaff());
|
||||
|
|
@ -113,4 +92,4 @@ namespace Server.Mobiles
|
|||
BaseSoundID = 219;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -445,67 +445,19 @@ namespace Server.Mobiles
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public override int HitsMax
|
||||
{
|
||||
get
|
||||
{
|
||||
if (HitsMaxSeed <= 0)
|
||||
return Str;
|
||||
|
||||
int value = HitsMaxSeed + GetStatOffset(StatType.Str);
|
||||
|
||||
if (value < 1)
|
||||
value = 1;
|
||||
else if (value > 65000)
|
||||
value = 65000;
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
public override int HitsMax => HitsMaxSeed <= 0 ? Str : Math.Clamp(HitsMaxSeed + GetStatOffset(StatType.Str), 1, 65000);
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int HitsMaxSeed { get; set; } = -1;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public override int StamMax
|
||||
{
|
||||
get
|
||||
{
|
||||
if (StamMaxSeed <= 0)
|
||||
return Dex;
|
||||
|
||||
int value = StamMaxSeed + GetStatOffset(StatType.Dex);
|
||||
|
||||
if (value < 1)
|
||||
value = 1;
|
||||
else if (value > 65000)
|
||||
value = 65000;
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
public override int StamMax => StamMaxSeed <= 0 ? Dex : Math.Clamp(StamMaxSeed + GetStatOffset(StatType.Dex), 1, 65000);
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int StamMaxSeed { get; set; } = -1;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public override int ManaMax
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ManaMaxSeed <= 0)
|
||||
return Int;
|
||||
|
||||
int value = ManaMaxSeed + GetStatOffset(StatType.Int);
|
||||
|
||||
if (value < 1)
|
||||
value = 1;
|
||||
else if (value > 65000)
|
||||
value = 65000;
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
public override int ManaMax => ManaMaxSeed <= 0 ? Int : Math.Clamp((ManaMaxSeed + GetStatOffset(StatType.Int)), 1, 65000);
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int ManaMaxSeed { get; set; } = -1;
|
||||
|
|
@ -4764,9 +4716,11 @@ namespace Server.Mobiles
|
|||
|
||||
public void PackItem(Item item)
|
||||
{
|
||||
if (Summoned || item == null)
|
||||
if (item == null) return;
|
||||
|
||||
if (Summoned)
|
||||
{
|
||||
item?.Delete();
|
||||
item.Delete();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,34 +24,18 @@ namespace Server.Mobiles
|
|||
Body = 0x191;
|
||||
Name = NameList.RandomName("female");
|
||||
|
||||
switch (Utility.Random(2))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new LeatherSkirt());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new LeatherShorts());
|
||||
break;
|
||||
}
|
||||
AddItem(Utility.RandomBool() ? (Item)new LeatherSkirt() : new LeatherShorts());
|
||||
|
||||
switch (Utility.Random(5))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new FemaleLeatherChest());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new FemaleStuddedChest());
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new LeatherBustierArms());
|
||||
break;
|
||||
case 3:
|
||||
AddItem(new StuddedBustierArms());
|
||||
break;
|
||||
case 4:
|
||||
AddItem(new FemalePlateChest());
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(5) switch
|
||||
{
|
||||
0 => new FemaleLeatherChest(),
|
||||
1 => new FemaleStuddedChest(),
|
||||
2 => new LeatherBustierArms(),
|
||||
3 => new StuddedBustierArms(),
|
||||
_ => new FemalePlateChest(), // 4
|
||||
}
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -62,18 +46,14 @@ namespace Server.Mobiles
|
|||
AddItem(new PlateArms());
|
||||
AddItem(new PlateLegs());
|
||||
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new Doublet(Utility.RandomNondyedHue()));
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new Tunic(Utility.RandomNondyedHue()));
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new BodySash(Utility.RandomNondyedHue()));
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(3) switch
|
||||
{
|
||||
0 => new Doublet(Utility.RandomNondyedHue()),
|
||||
1 => new Tunic(Utility.RandomNondyedHue()),
|
||||
_ => new BodySash(Utility.RandomNondyedHue()) // 3
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
Utility.AssignRandomHair(this);
|
||||
|
|
|
|||
|
|
@ -44,30 +44,18 @@ namespace Server.Mobiles
|
|||
AddItem(new FancyShirt());
|
||||
AddItem(new Bandana());
|
||||
|
||||
switch (Utility.Random(7))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new Longsword());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new Cutlass());
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new Broadsword());
|
||||
break;
|
||||
case 3:
|
||||
AddItem(new Axe());
|
||||
break;
|
||||
case 4:
|
||||
AddItem(new Club());
|
||||
break;
|
||||
case 5:
|
||||
AddItem(new Dagger());
|
||||
break;
|
||||
case 6:
|
||||
AddItem(new Spear());
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(7) switch
|
||||
{
|
||||
0 => new Longsword(),
|
||||
1 => new Cutlass(),
|
||||
2 => new Broadsword(),
|
||||
3 => new Axe(),
|
||||
4 => new Club(),
|
||||
5 => new Dagger(),
|
||||
_ => new Spear() // 6
|
||||
}
|
||||
);
|
||||
|
||||
Utility.AssignRandomHair(this);
|
||||
}
|
||||
|
|
@ -107,4 +95,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,48 +51,30 @@ namespace Server.Mobiles
|
|||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
|
||||
switch (Utility.Random(4))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new Boots());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new ThighBoots());
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new Sandals());
|
||||
break;
|
||||
case 3:
|
||||
AddItem(new Shoes());
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(4) switch
|
||||
{
|
||||
0 => new Boots(),
|
||||
1 => new ThighBoots(),
|
||||
2 => new Sandals(),
|
||||
_ => new Shoes() // 3
|
||||
}
|
||||
);
|
||||
|
||||
AddItem(new Shirt(Utility.RandomNondyedHue()));
|
||||
|
||||
switch (Utility.Random(7))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new Longsword());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new Cutlass());
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new Broadsword());
|
||||
break;
|
||||
case 3:
|
||||
AddItem(new Axe());
|
||||
break;
|
||||
case 4:
|
||||
AddItem(new Club());
|
||||
break;
|
||||
case 5:
|
||||
AddItem(new Dagger());
|
||||
break;
|
||||
case 6:
|
||||
AddItem(new Spear());
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(7) switch
|
||||
{
|
||||
0 => new Longsword(),
|
||||
1 => new Cutlass(),
|
||||
2 => new Broadsword(),
|
||||
3 => new Axe(),
|
||||
4 => new Club(),
|
||||
5 => new Dagger(),
|
||||
_ => new Spear() // 6
|
||||
}
|
||||
);
|
||||
|
||||
Utility.AssignRandomHair(this);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,42 +37,29 @@ namespace Server.Mobiles
|
|||
|
||||
VirtualArmor = 28;
|
||||
|
||||
switch (Utility.Random(20))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new Scimitar());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new Katana());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new WarMace());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new WarHammer());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new Kryss());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new Pitchfork());
|
||||
break;
|
||||
}
|
||||
PackItem(
|
||||
Utility.Random(20) switch
|
||||
{
|
||||
0 => new Scimitar(),
|
||||
1 => new Katana(),
|
||||
2 => new WarMace(),
|
||||
3 => new WarHammer(),
|
||||
4 => new Kryss(),
|
||||
5 => new Pitchfork(),
|
||||
_ => null // 6-19
|
||||
}
|
||||
);
|
||||
|
||||
PackItem(new ThighBoots());
|
||||
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new Ribs());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new Shaft());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Candle());
|
||||
break;
|
||||
}
|
||||
PackItem(
|
||||
Utility.Random(3) switch
|
||||
{
|
||||
0 => new Ribs(),
|
||||
1 => new Shaft(),
|
||||
_ => new Candle() // 2
|
||||
}
|
||||
);
|
||||
|
||||
if (Utility.RandomDouble() < 0.2)
|
||||
PackItem(new BolaBall());
|
||||
|
|
@ -131,4 +118,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,30 +38,18 @@ namespace Server.Mobiles
|
|||
VirtualArmor = 34;
|
||||
|
||||
// TODO: Skull?
|
||||
switch (Utility.Random(7))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new Arrow());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new Lockpick());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Shaft());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new Ribs());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new Bandage());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new BeverageBottle(BeverageType.Wine));
|
||||
break;
|
||||
case 6:
|
||||
PackItem(new Jug(BeverageType.Cider));
|
||||
break;
|
||||
}
|
||||
PackItem(
|
||||
Utility.Random(7) switch
|
||||
{
|
||||
0 => new Arrow(),
|
||||
1 => new Lockpick(),
|
||||
2 => new Shaft(),
|
||||
3 => new Ribs(),
|
||||
4 => new Bandage(),
|
||||
5 => new BeverageBottle(BeverageType.Wine),
|
||||
_ => new Jug(BeverageType.Cider) // 6
|
||||
}
|
||||
);
|
||||
|
||||
if (Core.AOS)
|
||||
PackItem(Loot.RandomNecromancyReagent());
|
||||
|
|
@ -128,4 +116,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,24 +35,16 @@ namespace Server.Mobiles
|
|||
Fame = 2500;
|
||||
Karma = -2500;
|
||||
|
||||
switch (Utility.Random(5))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new Lockpick());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new MortarPestle());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Bottle());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new RawRibs());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new Shovel());
|
||||
break;
|
||||
}
|
||||
PackItem(
|
||||
Utility.Random(5) switch
|
||||
{
|
||||
0 => new Lockpick(),
|
||||
1 => new MortarPestle(),
|
||||
2 => new Bottle(),
|
||||
3 => new RawRibs(),
|
||||
_ => new Shovel() // 4
|
||||
}
|
||||
);
|
||||
|
||||
PackItem(new RingmailChest());
|
||||
|
||||
|
|
@ -120,4 +112,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,18 +10,9 @@ namespace Server.Mobiles
|
|||
Body = 637;
|
||||
Hue = 0x8026;
|
||||
|
||||
Buckler buckler = new Buckler();
|
||||
ChainCoif coif = new ChainCoif();
|
||||
PlateGloves gloves = new PlateGloves();
|
||||
|
||||
buckler.Hue = 0x835;
|
||||
buckler.Movable = false;
|
||||
coif.Hue = 0x835;
|
||||
gloves.Hue = 0x835;
|
||||
|
||||
AddItem(buckler);
|
||||
AddItem(coif);
|
||||
AddItem(gloves);
|
||||
AddItem(new Buckler{Movable = false, Hue = 0x835});
|
||||
AddItem(new ChainCoif{Hue = 0x835});
|
||||
AddItem(new PlateGloves{Hue = 0x835});
|
||||
|
||||
SetStr(101, 110);
|
||||
SetDex(101, 110);
|
||||
|
|
@ -88,4 +79,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,39 +33,18 @@ namespace Server.Mobiles
|
|||
|
||||
VirtualArmor = 18;
|
||||
|
||||
switch (Utility.Random(10))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new LeftArm());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new RightArm());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Torso());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new Bone());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 6:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 7:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 8:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 9:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
}
|
||||
PackItem(
|
||||
Utility.Random(10) switch
|
||||
{
|
||||
0 => new LeftArm(),
|
||||
1 => new RightArm(),
|
||||
2 => new Torso(),
|
||||
3 => new Bone(),
|
||||
4 => new RibCage(),
|
||||
5 => new RibCage(),
|
||||
_ => new BonePile() // 6-9
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public Zombie(Serial serial) : base(serial)
|
||||
|
|
@ -97,4 +76,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,76 +47,42 @@ namespace Server.Mobiles
|
|||
2 => CraftResource.BlueScales,
|
||||
3 => CraftResource.YellowScales,
|
||||
4 => CraftResource.GreenScales,
|
||||
5 => CraftResource.WhiteScales,
|
||||
_ => CraftResource.None
|
||||
_ => CraftResource.WhiteScales // 5
|
||||
};
|
||||
|
||||
var melee = Utility.Random(3) switch
|
||||
{
|
||||
0 => (BaseWeapon)new Kryss(),
|
||||
1 => new Broadsword(),
|
||||
2 => new Katana(),
|
||||
_ => null
|
||||
_ => new Katana() // 2
|
||||
};
|
||||
|
||||
melee.Movable = false;
|
||||
AddItem(melee);
|
||||
|
||||
DragonHelm helm = new DragonHelm();
|
||||
helm.Resource = res;
|
||||
helm.Movable = false;
|
||||
AddItem(helm);
|
||||
|
||||
DragonChest chest = new DragonChest();
|
||||
chest.Resource = res;
|
||||
chest.Movable = false;
|
||||
AddItem(chest);
|
||||
|
||||
DragonArms arms = new DragonArms();
|
||||
arms.Resource = res;
|
||||
arms.Movable = false;
|
||||
AddItem(arms);
|
||||
|
||||
DragonGloves gloves = new DragonGloves();
|
||||
gloves.Resource = res;
|
||||
gloves.Movable = false;
|
||||
AddItem(gloves);
|
||||
|
||||
DragonLegs legs = new DragonLegs();
|
||||
legs.Resource = res;
|
||||
legs.Movable = false;
|
||||
AddItem(legs);
|
||||
|
||||
ChaosShield shield = new ChaosShield();
|
||||
shield.Movable = false;
|
||||
AddItem(shield);
|
||||
AddItem(new DragonHelm {Resource = res, Movable = false});
|
||||
AddItem(new DragonChest {Resource = res, Movable = false});
|
||||
AddItem(new DragonArms {Resource = res, Movable = false});
|
||||
AddItem(new DragonGloves {Resource = res, Movable = false});
|
||||
AddItem(new DragonLegs {Resource = res, Movable = false});
|
||||
AddItem(new ChaosShield {Movable = false});
|
||||
|
||||
AddItem(new Shirt());
|
||||
AddItem(new Boots());
|
||||
|
||||
int amount = Utility.RandomMinMax(1, 3);
|
||||
|
||||
switch (res)
|
||||
{
|
||||
case CraftResource.BlackScales:
|
||||
AddItem(new BlackScales(amount));
|
||||
break;
|
||||
case CraftResource.RedScales:
|
||||
AddItem(new RedScales(amount));
|
||||
break;
|
||||
case CraftResource.BlueScales:
|
||||
AddItem(new BlueScales(amount));
|
||||
break;
|
||||
case CraftResource.YellowScales:
|
||||
AddItem(new YellowScales(amount));
|
||||
break;
|
||||
case CraftResource.GreenScales:
|
||||
AddItem(new GreenScales(amount));
|
||||
break;
|
||||
case CraftResource.WhiteScales:
|
||||
AddItem(new WhiteScales(amount));
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
res switch
|
||||
{
|
||||
CraftResource.BlackScales => new BlackScales(amount),
|
||||
CraftResource.RedScales => new RedScales(amount),
|
||||
CraftResource.BlueScales => new BlueScales(amount),
|
||||
CraftResource.YellowScales => new YellowScales(amount),
|
||||
CraftResource.GreenScales => new GreenScales(amount),
|
||||
_ => new WhiteScales(amount) // CraftResource.WhiteScales
|
||||
}
|
||||
);
|
||||
|
||||
new SwampDragon().Rider = this;
|
||||
}
|
||||
|
|
@ -178,4 +144,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ namespace Server.Mobiles
|
|||
Fame = 8000;
|
||||
Karma = -8000;
|
||||
|
||||
CraftResource res = CraftResource.None;
|
||||
CraftResource res;
|
||||
|
||||
res = Utility.Random(6) switch
|
||||
{
|
||||
|
|
@ -48,76 +48,42 @@ namespace Server.Mobiles
|
|||
2 => CraftResource.BlueScales,
|
||||
3 => CraftResource.YellowScales,
|
||||
4 => CraftResource.GreenScales,
|
||||
5 => CraftResource.WhiteScales,
|
||||
_ => res
|
||||
_ => CraftResource.WhiteScales // 5
|
||||
};
|
||||
|
||||
var melee = Utility.Random(3) switch
|
||||
{
|
||||
0 => (BaseWeapon)new Kryss(),
|
||||
1 => new Broadsword(),
|
||||
2 => new Katana(),
|
||||
_ => null
|
||||
_ => new Katana() // 2
|
||||
};
|
||||
|
||||
melee.Movable = false;
|
||||
AddItem(melee);
|
||||
|
||||
DragonChest Tunic = new DragonChest();
|
||||
Tunic.Resource = res;
|
||||
Tunic.Movable = false;
|
||||
AddItem(Tunic);
|
||||
|
||||
DragonLegs Legs = new DragonLegs();
|
||||
Legs.Resource = res;
|
||||
Legs.Movable = false;
|
||||
AddItem(Legs);
|
||||
|
||||
DragonArms Arms = new DragonArms();
|
||||
Arms.Resource = res;
|
||||
Arms.Movable = false;
|
||||
AddItem(Arms);
|
||||
|
||||
DragonGloves Gloves = new DragonGloves();
|
||||
Gloves.Resource = res;
|
||||
Gloves.Movable = false;
|
||||
AddItem(Gloves);
|
||||
|
||||
DragonHelm Helm = new DragonHelm();
|
||||
Helm.Resource = res;
|
||||
Helm.Movable = false;
|
||||
AddItem(Helm);
|
||||
|
||||
ChaosShield shield = new ChaosShield();
|
||||
shield.Movable = false;
|
||||
AddItem(shield);
|
||||
AddItem(new DragonChest {Resource = res, Movable = false});
|
||||
AddItem(new DragonLegs {Resource = res, Movable = false});
|
||||
AddItem(new DragonArms {Resource = res, Movable = false});
|
||||
AddItem(new DragonGloves {Resource = res, Movable = false});
|
||||
AddItem(new DragonHelm {Resource = res, Movable = false});
|
||||
AddItem(new ChaosShield {Movable = false});
|
||||
|
||||
AddItem(new Boots(0x455));
|
||||
AddItem(new Shirt(Utility.RandomMetalHue()));
|
||||
|
||||
int amount = Utility.RandomMinMax(1, 3);
|
||||
|
||||
switch (res)
|
||||
{
|
||||
case CraftResource.BlackScales:
|
||||
AddItem(new BlackScales(amount));
|
||||
break;
|
||||
case CraftResource.RedScales:
|
||||
AddItem(new RedScales(amount));
|
||||
break;
|
||||
case CraftResource.BlueScales:
|
||||
AddItem(new BlueScales(amount));
|
||||
break;
|
||||
case CraftResource.YellowScales:
|
||||
AddItem(new YellowScales(amount));
|
||||
break;
|
||||
case CraftResource.GreenScales:
|
||||
AddItem(new GreenScales(amount));
|
||||
break;
|
||||
case CraftResource.WhiteScales:
|
||||
AddItem(new WhiteScales(amount));
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
res switch
|
||||
{
|
||||
CraftResource.BlackScales => new BlackScales(amount),
|
||||
CraftResource.RedScales => new RedScales(amount),
|
||||
CraftResource.BlueScales => new BlueScales(amount),
|
||||
CraftResource.YellowScales => new YellowScales(amount),
|
||||
CraftResource.GreenScales => new GreenScales(amount),
|
||||
_ => new WhiteScales(amount) // CraftResource.WhiteScales
|
||||
}
|
||||
);
|
||||
|
||||
res = Utility.Random(9) switch
|
||||
{
|
||||
|
|
@ -129,13 +95,10 @@ namespace Server.Mobiles
|
|||
5 => CraftResource.Agapite,
|
||||
6 => CraftResource.Verite,
|
||||
7 => CraftResource.Valorite,
|
||||
8 => CraftResource.Iron,
|
||||
_ => res
|
||||
_ => CraftResource.Iron // 8
|
||||
};
|
||||
|
||||
SwampDragon mt = new SwampDragon();
|
||||
mt.HasBarding = true;
|
||||
mt.BardingResource = res;
|
||||
SwampDragon mt = new SwampDragon {HasBarding = true, BardingResource = res};
|
||||
mt.BardingHP = mt.BardingMaxHP;
|
||||
mt.Rider = this;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,27 +45,17 @@ namespace Server.Mobiles
|
|||
pack.DropItem(new Bolt(Utility.RandomMinMax(10, 20)));
|
||||
pack.DropItem(new Bolt(Utility.RandomMinMax(10, 20)));
|
||||
|
||||
switch (Utility.Random(6))
|
||||
{
|
||||
case 0:
|
||||
pack.DropItem(new Broadsword());
|
||||
break;
|
||||
case 1:
|
||||
pack.DropItem(new Cutlass());
|
||||
break;
|
||||
case 2:
|
||||
pack.DropItem(new Katana());
|
||||
break;
|
||||
case 3:
|
||||
pack.DropItem(new Longsword());
|
||||
break;
|
||||
case 4:
|
||||
pack.DropItem(new Scimitar());
|
||||
break;
|
||||
case 5:
|
||||
pack.DropItem(new VikingSword());
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(6) switch
|
||||
{
|
||||
0 => new Longsword(),
|
||||
1 => new Cutlass(),
|
||||
2 => new Broadsword(),
|
||||
3 => new Katana(),
|
||||
4 => new Scimitar(),
|
||||
_ => new VikingSword() // 5
|
||||
}
|
||||
);
|
||||
|
||||
Container bag = new Bag();
|
||||
|
||||
|
|
@ -164,4 +154,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -98,27 +98,17 @@ namespace Server.Mobiles
|
|||
public virtual void PackResources(int amount)
|
||||
{
|
||||
for (int i = 0; i < amount; i++)
|
||||
switch (Utility.Random(6))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new Blight());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new Scourge());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Taint());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new Putrefication());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new Corruption());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new Muculent());
|
||||
break;
|
||||
}
|
||||
PackItem(
|
||||
Utility.Random(6) switch
|
||||
{
|
||||
0 => new Blight(),
|
||||
1 => new Scourge(),
|
||||
2 => new Taint(),
|
||||
3 => new Putrefication(),
|
||||
4 => new Corruption(),
|
||||
_ => new Muculent() // 5
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public virtual void PackItems(Item item, int amount)
|
||||
|
|
|
|||
|
|
@ -89,27 +89,17 @@ namespace Server.Mobiles
|
|||
public virtual void PackResources(int amount)
|
||||
{
|
||||
for (int i = 0; i < amount; i++)
|
||||
switch (Utility.Random(6))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new Blight());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new Scourge());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Taint());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new Putrefication());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new Corruption());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new Muculent());
|
||||
break;
|
||||
}
|
||||
PackItem(
|
||||
Utility.Random(6) switch
|
||||
{
|
||||
0 => new Blight(),
|
||||
1 => new Scourge(),
|
||||
2 => new Taint(),
|
||||
3 => new Putrefication(),
|
||||
4 => new Corruption(),
|
||||
_ => new Muculent() // 5
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public virtual void PackTalismans(int amount)
|
||||
|
|
@ -129,18 +119,14 @@ namespace Server.Mobiles
|
|||
|
||||
c.DropItem(new MalletAndChisel());
|
||||
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
c.DropItem(new MinotaurHedge());
|
||||
break;
|
||||
case 1:
|
||||
c.DropItem(new BonePile());
|
||||
break;
|
||||
case 2:
|
||||
c.DropItem(new LightYarn());
|
||||
break;
|
||||
}
|
||||
c.DropItem(
|
||||
Utility.Random(3) switch
|
||||
{
|
||||
0 => new MinotaurHedge(),
|
||||
1 => new LightYarn(),
|
||||
_ => new BonePile() // 2
|
||||
}
|
||||
);
|
||||
|
||||
if (Utility.RandomBool())
|
||||
c.DropItem(new TormentedChains());
|
||||
|
|
@ -179,8 +165,8 @@ namespace Server.Mobiles
|
|||
|
||||
foreach (Mobile m in eable)
|
||||
{
|
||||
if (m == this || !CanBeHarmful(m) || m.Deleted || (!m.Player &&
|
||||
!(m is BaseCreature creature && (creature.Controlled || creature.Summoned || creature.Team != Team))))
|
||||
if (m == this || !CanBeHarmful(m) || m.Deleted || !m.Player &&
|
||||
!(m is BaseCreature creature && (creature.Controlled || creature.Summoned || creature.Team != Team)))
|
||||
continue;
|
||||
|
||||
if (m is PlayerMobile pm && pm.Mounted)
|
||||
|
|
|
|||
|
|
@ -38,39 +38,18 @@ namespace Server.Mobiles
|
|||
|
||||
AddItem(new LightSource());
|
||||
|
||||
switch (Utility.Random(10))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new LeftArm());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new RightArm());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Torso());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new Bone());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 6:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 7:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 8:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 9:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
}
|
||||
PackItem(
|
||||
Utility.Random(10) switch
|
||||
{
|
||||
0 => new LeftArm(),
|
||||
1 => new RightArm(),
|
||||
2 => new Torso(),
|
||||
3 => new Bone(),
|
||||
4 => new RibCage(),
|
||||
5 => new RibCage(),
|
||||
_ => new BonePile() // 6-9
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public ShadowWisp(Serial serial) : base(serial)
|
||||
|
|
@ -94,4 +73,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,33 +61,19 @@ namespace Server.Mobiles
|
|||
if (Utility.RandomDouble() < 0.33)
|
||||
AddItem(new SmokeBomb());
|
||||
|
||||
switch (Utility.Random(8))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new Tessen());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new Wakizashi());
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new Nunchaku());
|
||||
break;
|
||||
case 3:
|
||||
AddItem(new Daisho());
|
||||
break;
|
||||
case 4:
|
||||
AddItem(new Sai());
|
||||
break;
|
||||
case 5:
|
||||
AddItem(new Tekagi());
|
||||
break;
|
||||
case 6:
|
||||
AddItem(new Kama());
|
||||
break;
|
||||
case 7:
|
||||
AddItem(new Katana());
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(8) switch
|
||||
{
|
||||
0 => new Tessen(),
|
||||
1 => new Wakizashi(),
|
||||
2 => new Nunchaku(),
|
||||
3 => new Daisho(),
|
||||
4 => new Sai(),
|
||||
5 => new Tekagi(),
|
||||
6 => new Kama(),
|
||||
_ => new Katana() // 7
|
||||
}
|
||||
);
|
||||
|
||||
Utility.AssignRandomHair(this);
|
||||
}
|
||||
|
|
@ -130,4 +116,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,39 +39,18 @@ namespace Server.Mobiles
|
|||
Karma = -4000;
|
||||
PackNecroReg(6, 8);
|
||||
|
||||
switch (Utility.Random(10))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new LeftArm());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new RightArm());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Torso());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new Bone());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 6:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 7:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 8:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 9:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
}
|
||||
PackItem(
|
||||
Utility.Random(10) switch
|
||||
{
|
||||
0 => new LeftArm(),
|
||||
1 => new RightArm(),
|
||||
2 => new Torso(),
|
||||
3 => new Bone(),
|
||||
4 => new RibCage(),
|
||||
5 => new RibCage(),
|
||||
_ => new BonePile() // 6-9
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public RevenantLion(Serial serial) : base(serial)
|
||||
|
|
@ -117,4 +96,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,39 +45,18 @@ namespace Server.Mobiles
|
|||
if (Utility.RandomDouble() < .25)
|
||||
PackItem(Seed.RandomBonsaiSeed());
|
||||
|
||||
switch (Utility.Random(10))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new LeftArm());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new RightArm());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Torso());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new Bone());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 6:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 7:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 8:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 9:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
}
|
||||
PackItem(
|
||||
Utility.Random(10) switch
|
||||
{
|
||||
0 => new LeftArm(),
|
||||
1 => new RightArm(),
|
||||
2 => new Torso(),
|
||||
3 => new Bone(),
|
||||
4 => new RibCage(),
|
||||
5 => new RibCage(),
|
||||
_ => new BonePile() // 6-9
|
||||
}
|
||||
);
|
||||
|
||||
Tamable = true;
|
||||
ControlSlots = 3;
|
||||
|
|
|
|||
|
|
@ -46,39 +46,18 @@ namespace Server.Mobiles
|
|||
if (Core.ML && Utility.RandomDouble() < .33)
|
||||
PackItem(Seed.RandomPeculiarSeed(1));
|
||||
|
||||
switch (Utility.Random(10))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new LeftArm());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new RightArm());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Torso());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new Bone());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 6:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 7:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 8:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 9:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
}
|
||||
PackItem(
|
||||
Utility.Random(10) switch
|
||||
{
|
||||
0 => new LeftArm(),
|
||||
1 => new RightArm(),
|
||||
2 => new Torso(),
|
||||
3 => new Bone(),
|
||||
4 => new RibCage(),
|
||||
5 => new RibCage(),
|
||||
_ => new BonePile() // 6-9
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public TsukiWolf(Serial serial)
|
||||
|
|
|
|||
|
|
@ -39,31 +39,25 @@ namespace Server.Mobiles
|
|||
PackItem(new GreenGourd());
|
||||
PackItem(new ExecutionersAxe());
|
||||
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new LongPants());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new ShortPants());
|
||||
break;
|
||||
}
|
||||
PackItem(
|
||||
Utility.Random(3) switch
|
||||
{
|
||||
0 => new LongPants(),
|
||||
1 => new ShortPants(),
|
||||
_ => null // 2 (30%)
|
||||
}
|
||||
);
|
||||
|
||||
switch (Utility.Random(6))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new Shoes());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new Sandals());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Boots());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new ThighBoots());
|
||||
break;
|
||||
}
|
||||
PackItem(
|
||||
Utility.Random(6) switch
|
||||
{
|
||||
0 => new Shoes(),
|
||||
1 => new Sandals(),
|
||||
2 => new Boots(),
|
||||
3 => new ThighBoots(),
|
||||
_ => null // 4-5 (30%)
|
||||
}
|
||||
);
|
||||
|
||||
if (Utility.RandomDouble() < .25)
|
||||
PackItem(Seed.RandomBonsaiSeed());
|
||||
|
|
@ -132,4 +126,4 @@ namespace Server.Mobiles
|
|||
|
||||
public override int GetDeathSound() => 0x43A;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -510,8 +510,7 @@ namespace Server.Mobiles
|
|||
1 => Utility.RandomGreenHue(),
|
||||
2 => Utility.RandomRedHue(),
|
||||
3 => Utility.RandomYellowHue(),
|
||||
4 => Utility.RandomNeutralHue(),
|
||||
_ => Utility.RandomBlueHue()
|
||||
_ => Utility.RandomNeutralHue() // 4
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -664,34 +663,24 @@ namespace Server.Mobiles
|
|||
|
||||
public virtual void InitOutfit()
|
||||
{
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new FancyShirt(GetRandomHue()));
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new Doublet(GetRandomHue()));
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new Shirt(GetRandomHue()));
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(3) switch
|
||||
{
|
||||
0 => new FancyShirt(GetRandomHue()),
|
||||
1 => new Doublet(GetRandomHue()),
|
||||
_ => new Shirt(GetRandomHue()) // 2
|
||||
}
|
||||
);
|
||||
|
||||
switch (ShoeType)
|
||||
{
|
||||
case VendorShoeType.Shoes:
|
||||
AddItem(new Shoes(GetShoeHue()));
|
||||
break;
|
||||
case VendorShoeType.Boots:
|
||||
AddItem(new Boots(GetShoeHue()));
|
||||
break;
|
||||
case VendorShoeType.Sandals:
|
||||
AddItem(new Sandals(GetShoeHue()));
|
||||
break;
|
||||
case VendorShoeType.ThighBoots:
|
||||
AddItem(new ThighBoots(GetShoeHue()));
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
ShoeType switch
|
||||
{
|
||||
VendorShoeType.Shoes => new Shoes(GetShoeHue()),
|
||||
VendorShoeType.Boots => new Boots(GetShoeHue()),
|
||||
VendorShoeType.Sandals => new Sandals(GetShoeHue()),
|
||||
_ => new ThighBoots(GetShoeHue()) // ThighBoots
|
||||
}
|
||||
);
|
||||
|
||||
int hairHue = GetHairHue();
|
||||
|
||||
|
|
@ -699,31 +688,17 @@ namespace Server.Mobiles
|
|||
Utility.AssignRandomFacialHair(this, hairHue);
|
||||
|
||||
if (Female)
|
||||
switch (Utility.Random(6))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new ShortPants(GetRandomHue()));
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
AddItem(new Kilt(GetRandomHue()));
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
AddItem(new Skirt(GetRandomHue()));
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(6) switch
|
||||
{
|
||||
0 => new ShortPants(GetRandomHue()),
|
||||
1 => new Kilt(GetRandomHue()),
|
||||
2 => new Kilt(GetRandomHue()),
|
||||
_ => new Skirt(GetRandomHue()) // 3-5
|
||||
}
|
||||
);
|
||||
else
|
||||
switch (Utility.Random(2))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new LongPants(GetRandomHue()));
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new ShortPants(GetRandomHue()));
|
||||
break;
|
||||
}
|
||||
AddItem(Utility.RandomBool() ? (Item)new LongPants(GetRandomHue()) : new ShortPants(GetRandomHue()));
|
||||
|
||||
PackGold(100, 200);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,11 +82,7 @@ namespace Server.Mobiles
|
|||
public int Amount
|
||||
{
|
||||
get => m_Amount;
|
||||
set
|
||||
{
|
||||
if (value < 0) value = 0;
|
||||
m_Amount = value;
|
||||
}
|
||||
set => m_Amount = Math.Max(value, 0);
|
||||
}
|
||||
|
||||
public int MaxAmount { get; set; }
|
||||
|
|
|
|||
|
|
@ -19,18 +19,15 @@ namespace Server.Mobiles
|
|||
{
|
||||
base.InitOutfit();
|
||||
|
||||
switch (Utility.Random(4))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new JesterHat(Utility.RandomBrightHue()));
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new Bandana(Utility.RandomBrightHue()));
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new SkullCap(Utility.RandomBrightHue()));
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(4) switch
|
||||
{
|
||||
0 => new JesterHat(Utility.RandomBrightHue()),
|
||||
1 => new Bandana(Utility.RandomBrightHue()),
|
||||
2 => new SkullCap(Utility.RandomBrightHue()),
|
||||
_ => null // 3
|
||||
}
|
||||
);
|
||||
|
||||
Item item = FindItemOnLayer(Layer.Pants);
|
||||
|
||||
|
|
@ -82,4 +79,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,18 +29,15 @@ namespace Server.Mobiles
|
|||
{
|
||||
base.InitOutfit();
|
||||
|
||||
switch (Utility.Random(4))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new JesterHat(Utility.RandomBrightHue()));
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new Bandana(Utility.RandomBrightHue()));
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new SkullCap(Utility.RandomBrightHue()));
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(4) switch
|
||||
{
|
||||
0 => new JesterHat(Utility.RandomBrightHue()),
|
||||
1 => new Bandana(Utility.RandomBrightHue()),
|
||||
2 => new SkullCap(Utility.RandomBrightHue()),
|
||||
_ => null // 3
|
||||
}
|
||||
);
|
||||
|
||||
if (Utility.RandomBool())
|
||||
AddItem(new HalfApron(Utility.RandomBrightHue()));
|
||||
|
|
@ -75,4 +72,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,22 +56,17 @@ namespace Server.Mobiles
|
|||
if (item != null && !EquipItem(item))
|
||||
{
|
||||
item.Delete();
|
||||
item = null;
|
||||
}
|
||||
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
AddItem(new JesterHat(Utility.RandomBrightHue()));
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new Bandana(Utility.RandomBrightHue()));
|
||||
break;
|
||||
}
|
||||
|
||||
if (item == null)
|
||||
AddItem(new FullApron(Utility.RandomBrightHue()));
|
||||
}
|
||||
|
||||
AddItem(
|
||||
Utility.Random(3) switch
|
||||
{
|
||||
0 => new Bandana(Utility.RandomBrightHue()),
|
||||
_ => new JesterHat(Utility.RandomBrightHue()), // 1-2
|
||||
}
|
||||
);
|
||||
|
||||
AddItem(new Bascinet());
|
||||
AddItem(new SmithHammer());
|
||||
|
|
@ -121,4 +116,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,52 +35,30 @@ namespace Server.Mobiles
|
|||
AddItem(new StuddedGorget());
|
||||
AddItem(new PlateLegs());
|
||||
|
||||
switch (Utility.Random(4))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new PlateHelm());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new NorseHelm());
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new CloseHelm());
|
||||
break;
|
||||
case 3:
|
||||
AddItem(new Helmet());
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(4) switch
|
||||
{
|
||||
0 => new PlateHelm(),
|
||||
1 => new NorseHelm(),
|
||||
2 => new CloseHelm(),
|
||||
_ => new Helmet() // 3
|
||||
}
|
||||
);
|
||||
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new BodySash(0x482));
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new Doublet(0x482));
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new Tunic(0x482));
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.Random(3) switch
|
||||
{
|
||||
0 => new BodySash(0x482),
|
||||
1 => new Doublet(0x482),
|
||||
_ => new Tunic(0x482) // 2
|
||||
}
|
||||
);
|
||||
|
||||
AddItem(new Broadsword());
|
||||
|
||||
Item shield = new MetalKiteShield();
|
||||
AddItem(new MetalKiteShield{Hue = Utility.RandomNondyedHue()});
|
||||
|
||||
shield.Hue = Utility.RandomNondyedHue();
|
||||
|
||||
AddItem(shield);
|
||||
|
||||
switch (Utility.Random(2))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new Boots());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new ThighBoots());
|
||||
break;
|
||||
}
|
||||
AddItem(Utility.RandomBool() ? (Item)new Boots() : new ThighBoots());
|
||||
|
||||
PackGold(100, 200);
|
||||
}
|
||||
|
|
@ -99,4 +77,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,15 +34,9 @@ namespace Server.Mobiles
|
|||
if (Utility.RandomBool())
|
||||
AddItem(new Cloak(Utility.RandomBrightHue()));
|
||||
|
||||
switch (Utility.Random(2))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new SkullCap(Utility.RandomNeutralHue()));
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new Bandana(Utility.RandomNeutralHue()));
|
||||
break;
|
||||
}
|
||||
AddItem(
|
||||
Utility.RandomBool() ? (Item)new SkullCap(Utility.RandomNeutralHue()) : new Bandana(Utility.RandomNeutralHue())
|
||||
);
|
||||
|
||||
Utility.AssignRandomHair(this);
|
||||
Utility.AssignRandomFacialHair(this, HairHue);
|
||||
|
|
@ -64,4 +58,4 @@ namespace Server.Mobiles
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -606,12 +606,7 @@ namespace Server.Multis
|
|||
return;
|
||||
}
|
||||
|
||||
newName = newName.Trim();
|
||||
|
||||
if (newName.Length == 0)
|
||||
newName = null;
|
||||
|
||||
Rename(newName);
|
||||
Rename(newName.Trim().IsNullOrDefault(null));
|
||||
}
|
||||
|
||||
public DryDockResult CheckDryDock(Mobile from)
|
||||
|
|
@ -723,14 +718,7 @@ namespace Server.Multis
|
|||
}
|
||||
|
||||
if (e.Speech.Length > 8)
|
||||
{
|
||||
string newName = e.Speech.Substring(8).Trim();
|
||||
|
||||
if (newName.Length == 0)
|
||||
newName = null;
|
||||
|
||||
Rename(newName);
|
||||
}
|
||||
Rename(e.Speech.Substring(8).Trim().IsNullOrDefault(null));
|
||||
}
|
||||
|
||||
public void Rename(string newName)
|
||||
|
|
@ -1234,8 +1222,8 @@ namespace Server.Multis
|
|||
int x = item.X - p.X + newComponents.Min.X;
|
||||
int y = item.Y - p.Y + newComponents.Min.Y;
|
||||
|
||||
return (x >= 0 && x < newComponents.Width && y >= 0 && y < newComponents.Height &&
|
||||
newComponents.Tiles[x][y].Length == 0) || Contains(item);
|
||||
return x >= 0 && x < newComponents.Width && y >= 0 && y < newComponents.Height &&
|
||||
newComponents.Tiles[x][y].Length == 0 || Contains(item);
|
||||
});
|
||||
|
||||
eable.Free();
|
||||
|
|
|
|||
|
|
@ -22,9 +22,6 @@ namespace Server.Multis
|
|||
|
||||
public override void AddComponents()
|
||||
{
|
||||
BaseCreature bc;
|
||||
// BaseEscortable be;
|
||||
|
||||
Visible = false;
|
||||
DecayDelay = TimeSpan.FromMinutes(5.0);
|
||||
|
||||
|
|
@ -55,18 +52,15 @@ namespace Server.Multis
|
|||
|
||||
for (int i = 0; i < 4; i++) AddMobile(Brigands, 6, Utility.RandomMinMax(-7, 7), Utility.RandomMinMax(-7, 7), 0);
|
||||
|
||||
m_Prisoner = Utility.Random(2) switch
|
||||
BaseCreature bc = Utility.Random(2) switch
|
||||
{
|
||||
0 => (Mobile)new Noble(),
|
||||
0 => new Noble(),
|
||||
_ => new SeekerOfAdventure()
|
||||
};
|
||||
|
||||
// be = (BaseEscortable)m_Prisoner;
|
||||
// be.m_Captive = true;
|
||||
|
||||
bc = (BaseCreature)m_Prisoner;
|
||||
bc.IsPrisoner = true;
|
||||
bc.CantWalk = true;
|
||||
m_Prisoner = bc;
|
||||
|
||||
m_Prisoner.YellHue = Utility.RandomList(0x57, 0x67, 0x77, 0x87, 0x117);
|
||||
AddMobile(m_Prisoner, 2, Utility.RandomMinMax(-2, 2), Utility.RandomMinMax(-2, 2), 0);
|
||||
|
|
@ -74,9 +68,9 @@ namespace Server.Multis
|
|||
|
||||
private void AddCampChests()
|
||||
{
|
||||
var chest = Utility.Random(3) switch
|
||||
LockableContainer chest = Utility.Random(3) switch
|
||||
{
|
||||
0 => (LockableContainer)new MetalChest(),
|
||||
0 => new MetalChest(),
|
||||
1 => new MetalGoldenChest(),
|
||||
_ => new WoodenChest()
|
||||
};
|
||||
|
|
@ -87,9 +81,9 @@ namespace Server.Multis
|
|||
|
||||
AddItem(chest, -2, -2, 0);
|
||||
|
||||
var crates = Utility.Random(4) switch
|
||||
LockableContainer crates = Utility.Random(4) switch
|
||||
{
|
||||
0 => (LockableContainer)new SmallCrate(),
|
||||
0 => new SmallCrate(),
|
||||
1 => new MediumCrate(),
|
||||
2 => new LargeCrate(),
|
||||
_ => new LockableBarrel()
|
||||
|
|
@ -110,22 +104,16 @@ namespace Server.Multis
|
|||
|
||||
crates.LiftOverride = true;
|
||||
|
||||
if (Utility.RandomDouble() < 0.8)
|
||||
switch (Utility.Random(4))
|
||||
crates.DropItem(
|
||||
Utility.Random(5) switch
|
||||
{
|
||||
case 0:
|
||||
crates.DropItem(new LesserCurePotion());
|
||||
break;
|
||||
case 1:
|
||||
crates.DropItem(new LesserExplosionPotion());
|
||||
break;
|
||||
case 2:
|
||||
crates.DropItem(new LesserHealPotion());
|
||||
break;
|
||||
default:
|
||||
crates.DropItem(new LesserPoisonPotion());
|
||||
break;
|
||||
0 => new LesserCurePotion(),
|
||||
1 => new LesserExplosionPotion(),
|
||||
2 => new LesserHealPotion(),
|
||||
3 => new LesserPoisonPotion(),
|
||||
_ => null // 4
|
||||
}
|
||||
);
|
||||
|
||||
AddItem(crates, 2, 2, 0);
|
||||
}
|
||||
|
|
@ -189,4 +177,4 @@ namespace Server.Multis
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ namespace Server.Items
|
|||
{
|
||||
Target = reader.ReadItem();
|
||||
|
||||
if (version < 0)
|
||||
if (version < 1)
|
||||
Level = SecureLevel.Anyone;
|
||||
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -85,12 +85,7 @@ namespace Server.SkillHandlers
|
|||
else if (m.CheckSkill(SkillName.Stealth, -20.0 + armorRating * 2,
|
||||
(Core.AOS ? 60.0 : 80.0) + armorRating * 2))
|
||||
{
|
||||
int steps = (int)(m.Skills.Stealth.Value / (Core.AOS ? 5.0 : 10.0));
|
||||
|
||||
if (steps < 1)
|
||||
steps = 1;
|
||||
|
||||
m.AllowedStealthSteps = steps;
|
||||
m.AllowedStealthSteps = Math.Max((int)(m.Skills.Stealth.Value / (Core.AOS ? 5.0 : 10.0)), 1);
|
||||
|
||||
if (m is PlayerMobile pm)
|
||||
pm.IsStealthing = true;
|
||||
|
|
|
|||
|
|
@ -57,13 +57,10 @@ namespace Server.Spells.Fifth
|
|||
|
||||
SpellHelper.CheckReflect((int)Circle, ref from, ref target);
|
||||
|
||||
int damage = (int)((Caster.Skills.Magery.Value + Caster.Int) / 5);
|
||||
|
||||
if (damage > 60)
|
||||
damage = 60;
|
||||
int damage = Math.Min((int)((Caster.Skills.Magery.Value + Caster.Int) / 5), 60);
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(1.0),
|
||||
() => AosDelay_Callback(Caster, target, m, damage));
|
||||
AosDelay_Callback, Caster, target, m, damage);
|
||||
}
|
||||
}
|
||||
else if (CheckHSequence(m))
|
||||
|
|
@ -96,10 +93,7 @@ namespace Server.Spells.Fifth
|
|||
if (lowestStat > 150)
|
||||
lowestStat = 150;
|
||||
|
||||
double damage = GetDamageScalar(m) * (highestStat - lowestStat) / 2; // Many users prefer 3 or 4
|
||||
|
||||
if (damage > 45)
|
||||
damage = 45;
|
||||
double damage = Math.Min(GetDamageScalar(m) * (highestStat - lowestStat) / 2, 45); // Many users prefer 3 or 4
|
||||
|
||||
if (CheckResisted(target))
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue