feat: Converts OnLogin to a coded generated event (#2070)
This commit is contained in:
parent
3b698de556
commit
66a257ece2
25 changed files with 127 additions and 122 deletions
|
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
using ModernUO.Serialization;
|
using ModernUO.Serialization;
|
||||||
using Server.Accounting.Security;
|
using Server.Accounting.Security;
|
||||||
using Server.Misc;
|
using Server.Misc;
|
||||||
|
|
@ -768,31 +769,24 @@ public partial class Account : IAccount, IComparable<Account>
|
||||||
acc.TotalGameTime += Core.Now - pm.SessionStart;
|
acc.TotalGameTime += Core.Now - pm.SessionStart;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile pm)
|
||||||
{
|
{
|
||||||
if (m is not PlayerMobile pm)
|
if (pm.Account is not Account acc || !pm.Young || !acc.Young)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m.Account is not Account acc)
|
var ts = YoungDuration - acc.TotalGameTime;
|
||||||
|
var hours = Math.Max((int)ts.TotalHours, 0);
|
||||||
|
|
||||||
|
if (hours == 1)
|
||||||
{
|
{
|
||||||
return;
|
pm.SendAsciiMessage($"You will enjoy the benefits and relatively safe status of a young player for {hours} more hour.");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
if (pm.Young && acc.Young)
|
|
||||||
{
|
{
|
||||||
var ts = YoungDuration - acc.TotalGameTime;
|
pm.SendAsciiMessage($"You will enjoy the benefits and relatively safe status of a young player for {hours} more hours.");
|
||||||
var hours = Math.Max((int)ts.TotalHours, 0);
|
|
||||||
|
|
||||||
if (hours == 1)
|
|
||||||
{
|
|
||||||
m.SendAsciiMessage($"You will enjoy the benefits and relatively safe status of a young player for {hours} more hour.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m.SendAsciiMessage($"You will enjoy the benefits and relatively safe status of a young player for {hours} more hours.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Buffers;
|
using System.Buffers;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
using Server.Gumps;
|
using Server.Gumps;
|
||||||
|
using Server.Mobiles;
|
||||||
using Server.Network;
|
using Server.Network;
|
||||||
|
|
||||||
namespace Server.Assistants;
|
namespace Server.Assistants;
|
||||||
|
|
@ -45,22 +47,23 @@ public static class AssistantHandler
|
||||||
m.NetState.LogInfo("Failed to negotiate assistant features.");
|
m.NetState.LogInfo("Failed to negotiate assistant features.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile pm)
|
||||||
{
|
{
|
||||||
if (m?.NetState?.Running != true || !Enabled)
|
if (pm?.NetState?.Running != true || !Enabled)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m.NetState.SendAssistVersionReq();
|
pm.NetState.SendAssistVersionReq();
|
||||||
m.NetState.SendAssistHandshake();
|
pm.NetState.SendAssistHandshake();
|
||||||
|
|
||||||
if (_handshakes.TryGetValue(m, out var t))
|
if (_handshakes.TryGetValue(pm, out var t))
|
||||||
{
|
{
|
||||||
t?.Stop();
|
t?.Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
_handshakes[m] = Timer.DelayCall(TimeSpan.FromSeconds(30), OnTimeout, m);
|
_handshakes[pm] = Timer.DelayCall(TimeSpan.FromSeconds(30), OnTimeout, pm);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void AssistVersion(NetState state, SpanReader reader)
|
public static void AssistVersion(NetState state, SpanReader reader)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
using Server.Mobiles;
|
using Server.Mobiles;
|
||||||
using Server.Network;
|
using Server.Network;
|
||||||
using Server.Targeting;
|
using Server.Targeting;
|
||||||
|
|
@ -15,10 +16,8 @@ namespace Server.Commands
|
||||||
CommandSystem.Register("VisClear", AccessLevel.Counselor, VisClear_OnCommand);
|
CommandSystem.Register("VisClear", AccessLevel.Counselor, VisClear_OnCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
{
|
public static void OnLogin(PlayerMobile pm) => pm.VisibilityList.Clear();
|
||||||
(m as PlayerMobile)?.VisibilityList.Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Usage("Vis")]
|
[Usage("Vis")]
|
||||||
[Description("Adds or removes a targeted player from your visibility list. Anyone on your visibility list will be able to see you at all times, even when you're hidden.")]
|
[Description("Adds or removes a targeted player from your visibility list. Anyone on your visibility list will be able to see you at all times, even when you're hidden.")]
|
||||||
|
|
|
||||||
|
|
@ -1291,13 +1291,9 @@ namespace Server.Engines.ConPVP
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile pm)
|
||||||
{
|
{
|
||||||
if (m is not PlayerMobile pm)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var dc = pm.DuelContext;
|
var dc = pm.DuelContext;
|
||||||
|
|
||||||
if (dc == null)
|
if (dc == null)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
using Server.Mobiles;
|
using Server.Mobiles;
|
||||||
using Server.Regions;
|
using Server.Regions;
|
||||||
|
|
||||||
|
|
@ -14,12 +15,13 @@ namespace Server.Engines.Doom
|
||||||
Register();
|
Register();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile pm)
|
||||||
{
|
{
|
||||||
var rect = LeverPuzzleController.lr_Rect;
|
var rect = LeverPuzzleController.lr_Rect;
|
||||||
if (m.X >= rect.X && m.X <= rect.X + 10 && m.Y >= rect.Y && m.Y <= rect.Y + 10 && m.Map == Map.Internal)
|
if (pm.X >= rect.X && pm.X <= rect.X + 10 && pm.Y >= rect.Y && pm.Y <= rect.Y + 10 && pm.Map == Map.Internal)
|
||||||
{
|
{
|
||||||
Timer kick = new LeverPuzzleController.LampRoomKickTimer(m);
|
Timer kick = new LeverPuzzleController.LampRoomKickTimer(pm);
|
||||||
kick.Start();
|
kick.Start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
using Server.Accounting;
|
using Server.Accounting;
|
||||||
using Server.Commands.Generic;
|
using Server.Commands.Generic;
|
||||||
using Server.Engines.ConPVP;
|
using Server.Engines.ConPVP;
|
||||||
|
|
@ -1259,7 +1261,9 @@ public abstract class Faction : IComparable<Faction>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m) => CheckLeaveTimer(m);
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static void OnLogin(PlayerMobile pm) => CheckLeaveTimer(pm);
|
||||||
|
|
||||||
public static void WriteReference(IGenericWriter writer, Faction fact)
|
public static void WriteReference(IGenericWriter writer, Faction fact)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -160,7 +160,8 @@ namespace Server.Engines.PartySystem
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile from)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile from)
|
||||||
{
|
{
|
||||||
var p = Get(from);
|
var p = Get(from);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
using System;
|
using System;
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
using ModernUO.Serialization;
|
using ModernUO.Serialization;
|
||||||
using Server.Items;
|
using Server.Items;
|
||||||
using Server.Misc;
|
using Server.Misc;
|
||||||
|
using Server.Mobiles;
|
||||||
|
|
||||||
namespace Server.Engines.Plants
|
namespace Server.Engines.Plants
|
||||||
{
|
{
|
||||||
|
|
@ -432,7 +434,8 @@ namespace Server.Engines.Plants
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile from)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile from)
|
||||||
{
|
{
|
||||||
Container cont = from.Backpack;
|
Container cont = from.Backpack;
|
||||||
if (cont != null)
|
if (cont != null)
|
||||||
|
|
|
||||||
|
|
@ -80,9 +80,10 @@ public class PlayerMurderSystem : GenericPersistence
|
||||||
UpdateMurderContext(context);
|
UpdateMurderContext(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile pm)
|
||||||
{
|
{
|
||||||
if (m is not PlayerMobile pm || !GetMurderContext(pm, out var context))
|
if (!GetMurderContext(pm, out var context))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
using Server.Accounting;
|
using Server.Accounting;
|
||||||
using Server.Gumps;
|
using Server.Gumps;
|
||||||
using Server.Items;
|
using Server.Items;
|
||||||
|
|
@ -562,35 +563,31 @@ namespace Server.Engines.VeteranRewards
|
||||||
RewardInterval = ServerConfiguration.GetOrUpdateSetting("vetRewards.rewardInterval", TimeSpan.FromDays(30.0));
|
RewardInterval = ServerConfiguration.GetOrUpdateSetting("vetRewards.rewardInterval", TimeSpan.FromDays(30.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile pm)
|
||||||
{
|
{
|
||||||
if (!Enabled)
|
if (!Enabled || !pm.Alive)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m.Alive)
|
ComputeRewardInfo(pm, out var cur, out var max, out var level);
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ComputeRewardInfo(m, out var cur, out var max, out var level);
|
if (pm.SkillsCap is 7000 or 7050 or 7100 or 7150 or 7200)
|
||||||
|
|
||||||
if (m.SkillsCap is 7000 or 7050 or 7100 or 7150 or 7200)
|
|
||||||
{
|
{
|
||||||
level = Math.Clamp(level, 0, 4);
|
level = Math.Clamp(level, 0, 4);
|
||||||
|
|
||||||
if (SkillCapRewards)
|
if (SkillCapRewards)
|
||||||
{
|
{
|
||||||
m.SkillsCap = 7000 + level * 50;
|
pm.SkillsCap = 7000 + level * 50;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m.SkillsCap = 7000;
|
pm.SkillsCap = 7000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Core.ML && m is PlayerMobile pm && !pm.HasStatReward && HasHalfLevel(pm))
|
if (Core.ML && !pm.HasStatReward && HasHalfLevel(pm))
|
||||||
{
|
{
|
||||||
pm.HasStatReward = true;
|
pm.HasStatReward = true;
|
||||||
pm.StatCap += 5;
|
pm.StatCap += 5;
|
||||||
|
|
@ -598,7 +595,7 @@ namespace Server.Engines.VeteranRewards
|
||||||
|
|
||||||
if (cur < max)
|
if (cur < max)
|
||||||
{
|
{
|
||||||
m.SendGump(new RewardNoticeGump(m));
|
pm.SendGump(new RewardNoticeGump(pm));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
using ModernUO.Serialization;
|
using ModernUO.Serialization;
|
||||||
using Server.Collections;
|
using Server.Collections;
|
||||||
using Server.Engines.Plants;
|
using Server.Engines.Plants;
|
||||||
|
|
@ -711,10 +713,9 @@ public abstract partial class BaseBeverage : Item, IHasQuantity
|
||||||
_quantity = reader.ReadInt();
|
_quantity = reader.ReadInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
{
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
CheckHeaveTimer(m);
|
public static void OnLogin(PlayerMobile pm) => CheckHeaveTimer(pm);
|
||||||
}
|
|
||||||
|
|
||||||
public static void CheckHeaveTimer(Mobile from)
|
public static void CheckHeaveTimer(Mobile from)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
using Server.Items;
|
using Server.Items;
|
||||||
|
using Server.Mobiles;
|
||||||
using Server.Network;
|
using Server.Network;
|
||||||
|
|
||||||
namespace Server
|
namespace Server
|
||||||
|
|
@ -55,10 +57,8 @@ namespace Server
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
{
|
public static void OnLogin(PlayerMobile pm) => pm.CheckLightLevels(true);
|
||||||
m.CheckLightLevels(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int ComputeLevelFor(Mobile from)
|
public static int ComputeLevelFor(Mobile from)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,18 @@
|
||||||
|
using Server.Mobiles;
|
||||||
using Server.Network;
|
using Server.Network;
|
||||||
|
|
||||||
namespace Server.Misc
|
namespace Server.Misc
|
||||||
{
|
{
|
||||||
public static class LoginStats
|
public static class LoginStats
|
||||||
{
|
{
|
||||||
public static void OnLogin(Mobile m)
|
public static void OnLogin(PlayerMobile pm)
|
||||||
{
|
{
|
||||||
var userCount = NetState.Instances.Count;
|
var userCount = NetState.Instances.Count;
|
||||||
var itemCount = World.Items.Count;
|
var itemCount = World.Items.Count;
|
||||||
var mobileCount = World.Mobiles.Count;
|
var mobileCount = World.Mobiles.Count;
|
||||||
|
|
||||||
m.SendMessage(
|
pm.SendMessage(
|
||||||
$"Welcome, {m.Name}! There {(userCount == 1 ? "is" : "are")} currently {userCount} user{(userCount == 1 ? "" : "s")} " +
|
$"Welcome, {pm.Name}! There {(userCount == 1 ? "is" : "are")} currently {userCount} user{(userCount == 1 ? "" : "s")} " +
|
||||||
$"online, with {itemCount} item{(itemCount == 1 ? "" : "s")} and {mobileCount} mobile{(mobileCount == 1 ? "" : "s")} in the world."
|
$"online, with {itemCount} item{(itemCount == 1 ? "" : "s")} and {mobileCount} mobile{(mobileCount == 1 ? "" : "s")} in the world."
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,10 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
using ModernUO.Serialization;
|
using ModernUO.Serialization;
|
||||||
using Server.Gumps;
|
using Server.Gumps;
|
||||||
|
using Server.Mobiles;
|
||||||
using Server.Network;
|
using Server.Network;
|
||||||
using Server.Prompts;
|
using Server.Prompts;
|
||||||
|
|
||||||
|
|
@ -125,14 +127,15 @@ public partial class ShardPoller : Item
|
||||||
Options[^1] = option;
|
Options[^1] = option;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile pm)
|
||||||
{
|
{
|
||||||
if (_activePollers.Count == 0)
|
if (_activePollers.Count == 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Timer.StartTimer(TimeSpan.FromSeconds(1.0), () => EventSink_Login_Callback(m));
|
Timer.StartTimer(TimeSpan.FromSeconds(1.0), () => EventSink_Login_Callback(pm));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void EventSink_Login_Callback(Mobile from)
|
private static void EventSink_Login_Callback(Mobile from)
|
||||||
|
|
|
||||||
|
|
@ -82,17 +82,19 @@ public static class StaminaSystem
|
||||||
RemoveEntry(m as IHasSteps);
|
RemoveEntry(m as IHasSteps);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile pm)
|
||||||
{
|
{
|
||||||
|
bool exists;
|
||||||
if (EnableMountStamina)
|
if (EnableMountStamina)
|
||||||
{
|
{
|
||||||
// Start idle for mount
|
// Start idle for mount
|
||||||
ref var stepsTaken = ref GetStepsTaken(m.Mount, out var exists);
|
ref var stepsTaken = ref GetStepsTaken(pm.Mount, out exists);
|
||||||
if (exists)
|
if (exists)
|
||||||
{
|
{
|
||||||
if (stepsTaken.Steps <= 0 || Core.Now >= stepsTaken.IdleStartTime + ResetDuration)
|
if (stepsTaken.Steps <= 0 || Core.Now >= stepsTaken.IdleStartTime + ResetDuration)
|
||||||
{
|
{
|
||||||
_stepsTaken.Remove(m.Mount);
|
_stepsTaken.Remove(pm.Mount);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -100,16 +102,13 @@ public static class StaminaSystem
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_resetHash.Remove(m.Mount);
|
_resetHash.Remove(pm.Mount);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m is PlayerMobile pm)
|
ref var regenStepsTaken = ref RegenSteps(pm, out exists);
|
||||||
|
if (exists)
|
||||||
{
|
{
|
||||||
ref var stepsTaken = ref RegenSteps(pm, out var exists);
|
regenStepsTaken.IdleStartTime = Core.Now;
|
||||||
if (exists)
|
|
||||||
{
|
|
||||||
stepsTaken.IdleStartTime = Core.Now;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1220,6 +1220,10 @@ namespace Server.Mobiles
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[GeneratedEvent(nameof(PlayerLoginEvent))]
|
||||||
|
public static partial void PlayerLoginEvent(PlayerMobile pm);
|
||||||
|
|
||||||
|
[OnEvent(nameof(PlayerLoginEvent))]
|
||||||
public static void OnLogin(PlayerMobile from)
|
public static void OnLogin(PlayerMobile from)
|
||||||
{
|
{
|
||||||
if (AccountHandler.LockdownLevel > AccessLevel.Player)
|
if (AccountHandler.LockdownLevel > AccessLevel.Player)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
|
using Server.Mobiles;
|
||||||
|
|
||||||
namespace Server.Misc
|
namespace Server.Misc
|
||||||
{
|
{
|
||||||
public static class Strandedness
|
public static class Strandedness
|
||||||
|
|
@ -112,7 +115,8 @@ namespace Server.Misc
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile from)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile from)
|
||||||
{
|
{
|
||||||
if (!IsStranded(from))
|
if (!IsStranded(from))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -314,34 +314,10 @@ public static class IncomingAccountPackets
|
||||||
|
|
||||||
state.SendPlayMusic(m.Region.Music);
|
state.SendPlayMusic(m.Region.Music);
|
||||||
|
|
||||||
StaminaSystem.OnLogin(m);
|
|
||||||
DuelContext.OnLogin(m);
|
|
||||||
LightCycle.OnLogin(m);
|
|
||||||
LoginStats.OnLogin(m);
|
|
||||||
AnimalForm.OnLogin(m);
|
|
||||||
BaseBeverage.OnLogin(m);
|
|
||||||
AntiMacroSystem.OnLogin(m);
|
|
||||||
Strandedness.OnLogin(m);
|
|
||||||
ShardPoller.OnLogin(m);
|
|
||||||
ReaperFormSpell.OnLogin(m);
|
|
||||||
Party.OnLogin(m);
|
|
||||||
PlantSystem.OnLogin(m);
|
|
||||||
LampRoomRegion.OnLogin(m);
|
|
||||||
HouseRegion.OnLogin(m);
|
|
||||||
Faction.OnLogin(m);
|
|
||||||
PlayerMurderSystem.OnLogin(m);
|
|
||||||
AssistantHandler.OnLogin(m);
|
|
||||||
VisibilityList.OnLogin(m);
|
|
||||||
|
|
||||||
if (m is PlayerMobile pm)
|
if (m is PlayerMobile pm)
|
||||||
{
|
{
|
||||||
PlayerMobile.OnLogin(pm);
|
PlayerMobile.PlayerLoginEvent(pm);
|
||||||
}
|
}
|
||||||
Account.OnLogin(m);
|
|
||||||
GiftGiving.OnLogin(m);
|
|
||||||
PreventInaccess.OnLogin(m);
|
|
||||||
TwistedWealdDesertRegion.OnLogin(m);
|
|
||||||
RewardSystem.OnLogin(m);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int GenerateAuthID(this NetState state)
|
private static int GenerateAuthID(this NetState state)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
using Server.Gumps;
|
using Server.Gumps;
|
||||||
using Server.Items;
|
using Server.Items;
|
||||||
using Server.Mobiles;
|
using Server.Mobiles;
|
||||||
|
|
@ -29,13 +30,14 @@ public class HouseRegion : BaseRegion
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile pm)
|
||||||
{
|
{
|
||||||
var house = BaseHouse.FindHouseAt(m);
|
var house = BaseHouse.FindHouseAt(pm);
|
||||||
|
|
||||||
if (house?.Public == false && !house.IsFriend(m))
|
if (house?.Public == false && !house.IsFriend(pm))
|
||||||
{
|
{
|
||||||
m.Location = house.BanLocation;
|
pm.Location = house.BanLocation;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
|
using Server.Mobiles;
|
||||||
using Server.Network;
|
using Server.Network;
|
||||||
using Server.Spells;
|
using Server.Spells;
|
||||||
using Server.Spells.Ninjitsu;
|
using Server.Spells.Ninjitsu;
|
||||||
|
|
@ -41,11 +43,12 @@ public class TwistedWealdDesertRegion : MondainRegion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile pm)
|
||||||
{
|
{
|
||||||
if (m.Region.IsPartOf<TwistedWealdDesertRegion>() && m.AccessLevel == AccessLevel.Player)
|
if (pm.AccessLevel == AccessLevel.Player && pm.Region.IsPartOf<TwistedWealdDesertRegion>())
|
||||||
{
|
{
|
||||||
m.NetState.SendSpeedControl(SpeedControlSetting.Walk);
|
pm.NetState.SendSpeedControl(SpeedControlSetting.Walk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
using Server.Collections;
|
using Server.Collections;
|
||||||
using Server.Json;
|
using Server.Json;
|
||||||
using Server.Mobiles;
|
using Server.Mobiles;
|
||||||
|
|
@ -138,10 +139,11 @@ public static class AntiMacroSystem
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile pm)
|
||||||
{
|
{
|
||||||
// Stop the clear out timer
|
// Stop the clear out timer
|
||||||
if (_logoutCleanup?.Remove(m, out var timer) == true)
|
if (_logoutCleanup?.Remove(pm, out var timer) == true)
|
||||||
{
|
{
|
||||||
timer.Stop();
|
timer.Stop();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
using Server.Accounting;
|
using Server.Accounting;
|
||||||
|
using Server.Mobiles;
|
||||||
|
|
||||||
namespace Server.Misc
|
namespace Server.Misc
|
||||||
{
|
{
|
||||||
|
|
@ -19,9 +21,10 @@ namespace Server.Misc
|
||||||
m_Givers.Add(giver);
|
m_Givers.Add(giver);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile pm)
|
||||||
{
|
{
|
||||||
if (m.Account is not Account acct)
|
if (pm.Account is not Account acct)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -47,7 +50,7 @@ namespace Server.Misc
|
||||||
continue; // already got one
|
continue; // already got one
|
||||||
}
|
}
|
||||||
|
|
||||||
giver.DelayGiveGift(TimeSpan.FromSeconds(5.0), m);
|
giver.DelayGiveGift(TimeSpan.FromSeconds(5.0), pm);
|
||||||
}
|
}
|
||||||
|
|
||||||
acct.LastLogin = now;
|
acct.LastLogin = now;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
|
using Server.Mobiles;
|
||||||
|
|
||||||
namespace Server.Misc
|
namespace Server.Misc
|
||||||
{
|
{
|
||||||
|
|
@ -34,7 +36,8 @@ namespace Server.Misc
|
||||||
m_MoveHistory = new Dictionary<Mobile, LocationInfo>();
|
m_MoveHistory = new Dictionary<Mobile, LocationInfo>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnLogin(Mobile from)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile from)
|
||||||
{
|
{
|
||||||
if (!Enabled)
|
if (!Enabled)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -64,11 +64,12 @@ public class AnimalForm : NinjaSpell
|
||||||
new(typeof(Reptalon), 1075202, 11669, 0, 1075222, 90.0, 0x114, 0, 0, false, false)
|
new(typeof(Reptalon), 1075202, 11669, 0, 1075222, 90.0, 0x114, 0, 0, false, false)
|
||||||
};
|
};
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile pm)
|
||||||
{
|
{
|
||||||
if (GetContext(m)?.SpeedBoost == true)
|
if (GetContext(pm)?.SpeedBoost == true)
|
||||||
{
|
{
|
||||||
m.NetState.SendSpeedControl(SpeedControlSetting.Mount);
|
pm.NetState.SendSpeedControl(SpeedControlSetting.Mount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
|
using ModernUO.CodeGeneratedEvents;
|
||||||
|
using Server.Mobiles;
|
||||||
using Server.Network;
|
using Server.Network;
|
||||||
|
|
||||||
namespace Server.Spells.Spellweaving
|
namespace Server.Spells.Spellweaving
|
||||||
|
|
@ -27,13 +29,14 @@ namespace Server.Spells.Spellweaving
|
||||||
public virtual int SwingSpeedBonus => 10 + FocusLevel;
|
public virtual int SwingSpeedBonus => 10 + FocusLevel;
|
||||||
public virtual int SpellDamageBonus => 10 + FocusLevel;
|
public virtual int SpellDamageBonus => 10 + FocusLevel;
|
||||||
|
|
||||||
public static void OnLogin(Mobile m)
|
[OnEvent(nameof(PlayerMobile.PlayerLoginEvent))]
|
||||||
|
public static void OnLogin(PlayerMobile pm)
|
||||||
{
|
{
|
||||||
var context = TransformationSpellHelper.GetContext(m);
|
var context = TransformationSpellHelper.GetContext(pm);
|
||||||
|
|
||||||
if (context?.Type == typeof(ReaperFormSpell))
|
if (context?.Type == typeof(ReaperFormSpell))
|
||||||
{
|
{
|
||||||
m.NetState.SendSpeedControl(SpeedControlSetting.Walk);
|
pm.NetState.SendSpeedControl(SpeedControlSetting.Walk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue