Skip to content

Commit c0b4b80

Browse files
feat: logout common event trigger (AscensionGameDev#2654)
* feat: logout common event trigger * add all triggers on param setting
1 parent af2d28c commit c0b4b80

File tree

4 files changed

+48
-33
lines changed

4 files changed

+48
-33
lines changed

Framework/Intersect.Framework.Core/GameObjects/Events/CommonEventTrigger.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,6 @@ public enum CommonEventTrigger
4141
UserVariableChange,
4242

4343
LevelDown,
44+
45+
Logout,
4446
}

Intersect.Editor/Forms/Editors/Events/frmEvent.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,10 +1007,7 @@ public void InitEditor(bool disableNaming, bool disableTriggers, bool questEvent
10071007
{
10081008
grpEntityOptions.Hide();
10091009
cmbTrigger.Items.Clear();
1010-
for (var i = 0; i < Strings.EventEditor.commontriggers.Count; i++)
1011-
{
1012-
cmbTrigger.Items.Add(Strings.EventEditor.commontriggers[i]);
1013-
}
1010+
cmbTrigger.Items.AddRange([.. Strings.EventEditor.CommonTriggers.Values]);
10141011
}
10151012
else
10161013
{

Intersect.Editor/Localization/Strings.cs

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2828,28 +2828,29 @@ public partial struct EventEditor
28282828

28292829
public static LocalizedString commandlist = @"Commands:";
28302830

2831-
public static Dictionary<int, LocalizedString> commontriggers = new Dictionary<int, LocalizedString>
2831+
public static Dictionary<CommonEventTrigger, LocalizedString> CommonTriggers = new()
28322832
{
2833-
{0, @"None"},
2834-
{1, @"Login"},
2835-
{2, @"Level Up"},
2836-
{3, @"On Respawn"},
2837-
{4, @"/Command"},
2838-
{5, @"Autorun"},
2839-
{6, @"PVP Kill"},
2840-
{7, @"PVP Death"},
2841-
{8, @"Player Interact"},
2842-
{9, @"Equipment Changed"},
2843-
{10, @"Player Variable Changed"},
2844-
{11, @"Server Variable Changed"},
2845-
{12, @"Guild Member Joined"},
2846-
{13, @"Guild Member Left"},
2847-
{14, @"Guild Member Kicked"},
2848-
{15, @"Guild Variable Changed"},
2849-
{16, @"Inventory Changed"},
2850-
{17, @"Map Changed"},
2851-
{18, @"User Variable Changed"},
2852-
{19, @"Level Down"},
2833+
{CommonEventTrigger.None, @"None"},
2834+
{CommonEventTrigger.Login, @"Login"},
2835+
{CommonEventTrigger.LevelUp, @"Level Up"},
2836+
{CommonEventTrigger.OnRespawn, @"On Respawn"},
2837+
{CommonEventTrigger.SlashCommand, @"/Command"},
2838+
{CommonEventTrigger.Autorun, @"Autorun"},
2839+
{CommonEventTrigger.PVPKill, @"PVP Kill"},
2840+
{CommonEventTrigger.PVPDeath, @"PVP Death"},
2841+
{CommonEventTrigger.PlayerInteract, @"Player Interact"},
2842+
{CommonEventTrigger.EquipChange, @"Equipment Changed"},
2843+
{CommonEventTrigger.PlayerVariableChange, @"Player Variable Changed"},
2844+
{CommonEventTrigger.ServerVariableChange, @"Server Variable Changed"},
2845+
{CommonEventTrigger.GuildMemberJoined, @"Guild Member Joined"},
2846+
{CommonEventTrigger.GuildMemberLeft, @"Guild Member Left"},
2847+
{CommonEventTrigger.GuildMemberKicked, @"Guild Member Kicked"},
2848+
{CommonEventTrigger.GuildVariableChange, @"Guild Variable Changed"},
2849+
{CommonEventTrigger.InventoryChanged, @"Inventory Changed"},
2850+
{CommonEventTrigger.MapChanged, @"Map Changed"},
2851+
{CommonEventTrigger.UserVariableChange, @"User Variable Changed"},
2852+
{CommonEventTrigger.LevelDown, @"Level Down"},
2853+
{CommonEventTrigger.Logout, @"Logout"},
28532854
};
28542855

28552856
public static LocalizedString conditions = @"Conditions";

Intersect.Server.Core/Entities/Player.cs

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,11 @@ private void Logout(bool softLogout = false, TaskCompletionSource? logoutComplet
512512
instance.RemoveEntity(this);
513513
}
514514

515+
foreach (var player in OnlinePlayersById.Values)
516+
{
517+
player.StartCommonEventsWithTrigger(CommonEventTrigger.Logout, param: Name);
518+
}
519+
515520
RemoveFromInstanceController(MapInstanceId);
516521

517522
//Update parties
@@ -7203,39 +7208,49 @@ public bool UnsafeStartCommonEvent(
72037208
switch (trigger)
72047209
{
72057210
case CommonEventTrigger.None:
7206-
break;
72077211
case CommonEventTrigger.Login:
7208-
break;
72097212
case CommonEventTrigger.LevelUp:
7210-
break;
72117213
case CommonEventTrigger.OnRespawn:
7212-
break;
72137214
case CommonEventTrigger.SlashCommand:
7214-
break;
72157215
case CommonEventTrigger.Autorun:
7216+
case CommonEventTrigger.EquipChange:
7217+
case CommonEventTrigger.PlayerVariableChange:
7218+
case CommonEventTrigger.ServerVariableChange:
7219+
case CommonEventTrigger.GuildVariableChange:
7220+
case CommonEventTrigger.InventoryChanged:
7221+
case CommonEventTrigger.MapChanged:
7222+
case CommonEventTrigger.UserVariableChange:
7223+
case CommonEventTrigger.LevelDown:
72167224
break;
7225+
72177226
case CommonEventTrigger.PVPKill:
72187227
//Add victim as a parameter
72197228
newEvent.SetParam("victim", param);
7220-
72217229
break;
7230+
72227231
case CommonEventTrigger.PVPDeath:
72237232
//Add killer as a parameter
72247233
newEvent.SetParam("killer", param);
7225-
72267234
break;
7235+
72277236
case CommonEventTrigger.PlayerInteract:
72287237
//Interactee as a parameter
72297238
newEvent.SetParam("triggered", param);
7230-
72317239
break;
7240+
72327241
case CommonEventTrigger.GuildMemberJoined:
72337242
case CommonEventTrigger.GuildMemberKicked:
72347243
case CommonEventTrigger.GuildMemberLeft:
72357244
newEvent.SetParam("member", param);
72367245
newEvent.SetParam("guild", command);
7246+
break;
72377247

7248+
case CommonEventTrigger.Logout:
7249+
newEvent.SetParam("player", param);
72387250
break;
7251+
7252+
default:
7253+
throw Exceptions.UnreachableInvalidEnum(trigger);
72397254
}
72407255

72417256
var newStack = new CommandInstance(newEvent.PageInstance.MyPage);

0 commit comments

Comments
 (0)