Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parsing incoming network commands should not instantiate ObjectGuids #1216

Merged
merged 86 commits into from
Jan 4, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
bdfb0c2
HandleActionStackableSplitTo3D cleanup
Mag-nus Dec 14, 2018
9d3eb28
Container: Remove duplicate TryRemoveFromInventoryWithoutClear()
Mag-nus Dec 15, 2018
bf734bc
Always fix placement positions in Container SortWorldObjectsIntoInven…
Mag-nus Dec 15, 2018
18c376e
HandleActionStackableSplitToContainer cleanup
Mag-nus Dec 15, 2018
5b3eff0
Inventory cleanup
Mag-nus Dec 15, 2018
ebd9ee4
Cleanup child object management (items held in hands)
Mag-nus Dec 15, 2018
da1244c
More player inventory progress
Mag-nus Dec 17, 2018
835b062
Remove ActionChain.AddDelayTicks() (not used, we use time based)
Mag-nus Dec 17, 2018
fe69cc7
Fix opcode log warning in InboundMessageManager
Mag-nus Dec 17, 2018
785bb70
HandleActionDropItem looking good on the new system
Mag-nus Dec 17, 2018
0cde173
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Dec 17, 2018
978bae3
HandleActionDropItem comments
Mag-nus Dec 17, 2018
6db30e6
Fix PlayerEnterWorld exception when player has null Location
Mag-nus Dec 18, 2018
6b3087c
More inventory progress
Mag-nus Dec 19, 2018
7a5b4ec
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Dec 19, 2018
b6ce92f
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Dec 21, 2018
bf097d4
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Dec 22, 2018
ee0064b
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Dec 24, 2018
a59080e
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Dec 26, 2018
249a03d
minor cleanups
Mag-nus Dec 26, 2018
176e2ef
Remove IComparable from WorldObject
Mag-nus Dec 26, 2018
ef6837c
Inventory Progress
Mag-nus Dec 27, 2018
8126548
Fix stack size bug in Developer commands that use AddWeeniesToInventory
Mag-nus Dec 27, 2018
2a7585b
more inventory progress
Mag-nus Dec 28, 2018
69c887d
More split progress
Mag-nus Dec 28, 2018
013c147
more stack progress
Mag-nus Dec 28, 2018
4fc2c7e
Use virtual MotionPickup
Mag-nus Dec 28, 2018
0696573
Inventory improvements
Mag-nus Dec 28, 2018
d15c187
more inventory progress
Mag-nus Dec 28, 2018
f619519
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Dec 28, 2018
d58df94
player/npc give refactored
Mag-nus Dec 29, 2018
3e88c48
Convert some obsolete inventory functions over to TryConsumeFromInven…
Mag-nus Dec 29, 2018
61e1484
All inventory functions converted
Mag-nus Dec 29, 2018
5ceb456
Fix item decaying explosions
Mag-nus Dec 29, 2018
32e97c6
Fix player trade
Mag-nus Dec 29, 2018
5081ea6
More fixes
Mag-nus Dec 29, 2018
07877cf
Fix giving partial stacks
Mag-nus Dec 29, 2018
4e3aede
Fix burden limitations when picking up items
Mag-nus Dec 29, 2018
ef6e2d6
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Dec 29, 2018
a38888e
Fix selling items
Mag-nus Dec 29, 2018
8b5a48e
Inventory move to fixes
Mag-nus Dec 29, 2018
866b431
Cleanup TrySetChild
Mag-nus Dec 29, 2018
8a959d2
Don't decay IsStuck objects
Mag-nus Dec 29, 2018
5dfb356
Don't allow pickup of IsStuck items
Mag-nus Dec 29, 2018
0812222
Fix moving equipped items around
Mag-nus Dec 29, 2018
bd1670d
Weapons now work
Mag-nus Dec 30, 2018
436d7ed
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Dec 30, 2018
d39e034
Fix player location null restore
Mag-nus Dec 30, 2018
5f5ef6c
Add back HeritageBonuses to Player_Skills
Mag-nus Dec 30, 2018
09e0620
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Dec 30, 2018
7ed2b11
Fix equipment spell/dispell on equip/dequip
Mag-nus Dec 30, 2018
d632b4d
Fix non-selectable wielded items from showing on the player model
Mag-nus Dec 30, 2018
5e6f73a
Fix wield/unwield sound for equipped items that aren't childeren
Mag-nus Dec 30, 2018
6c62155
TrySetChild should ClearChild if it's not a valid child.
Mag-nus Dec 30, 2018
d0a74c6
Fix missile ammo as child
Mag-nus Dec 30, 2018
e323c2f
Send DeleteObject instead of PickupEvent on Dequip. This fixes disapp…
Mag-nus Dec 30, 2018
9df9c5d
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Dec 30, 2018
e4a156a
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Dec 31, 2018
7d00e3f
Couple notes where item recovieres should go
Mag-nus Dec 31, 2018
7ef7522
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Dec 31, 2018
85e41c4
Hopefully this fixes the ammo being displayed incorrectly
Mag-nus Jan 1, 2019
cd4e861
Couple inventory fixes
Mag-nus Jan 1, 2019
7869eb4
Allow close container that has no viewer
Mag-nus Jan 1, 2019
9e3e7bf
Couple more log warnings for potential lost items
Mag-nus Jan 1, 2019
a155f50
Add static methods to ObjectGuid
Mag-nus Jan 1, 2019
b2f9d09
Use ObjectGuid.IsPlayer instead of creating a new ObjectGuid
Mag-nus Jan 1, 2019
5b9c3a1
ACE.Server.Network.GameAction.Actions cosmetic cleanup
Mag-nus Jan 1, 2019
6abf7c0
Network GameActions no longer create and pass ObjectGuids. Now they p…
Mag-nus Jan 1, 2019
03517d6
Network.Handlers switched from ObjectGuid -> uint
Mag-nus Jan 1, 2019
cf57a04
Another instance of ObjectGuid used in the network actions removed
Mag-nus Jan 1, 2019
775a68b
More networking ObjectGuids switched to uints
Mag-nus Jan 1, 2019
11987b8
missed a file
Mag-nus Jan 1, 2019
661222b
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Jan 1, 2019
9ec0e21
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Jan 2, 2019
1708eeb
Merge remote-tracking branch 'upstream/master' into NetworkingCleanup
Mag-nus Jan 2, 2019
62b2b0d
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Jan 2, 2019
778f2a2
Merge remote-tracking branch 'upstream/master' into NetworkingCleanup
Mag-nus Jan 2, 2019
396b79e
Attuned check removed for GiveObjecttoNPC
Mag-nus Jan 3, 2019
da0384c
Don't consume unlimited use gems
Mag-nus Jan 3, 2019
b761d0d
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Jan 3, 2019
7bb7ce0
Fix HandleDestroyBonded
Mag-nus Jan 3, 2019
a3a6cdf
Fix destroying equipped items when consumed
Mag-nus Jan 4, 2019
5078cc9
Merge remote-tracking branch 'upstream/master' into MoreInventoryWork
Mag-nus Jan 4, 2019
3ce89de
Merge branch 'MoreInventoryWork' into NetworkingCleanup
Mag-nus Jan 4, 2019
43280ca
Merge remote-tracking branch 'upstream/master' into NetworkingCleanup
Mag-nus Jan 4, 2019
a753067
Merge remote-tracking branch 'upstream/master' into NetworkingCleanup
Mag-nus Jan 4, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions Source/ACE.Entity/ObjectGuid.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ public struct ObjectGuid
public static uint DynamicMin { get; } = 0x80000000;
public static uint DynamicMax { get; } = 0xFFFFFFFE; // Ends at E because uint.Max is reserved for "invalid"

public static bool IsPlayer(uint guid) { return (guid >= PlayerMin && guid <= PlayerMax); }
public static bool IsStatic(uint guid) { return (guid >= StaticObjectMin && guid <= StaticObjectMax); }
public static bool IsDynamic(uint guid) { return (guid >= DynamicMin && guid <= DynamicMax); }

public uint Full { get; }
public uint Low => Full & 0xFFFFFF;
public uint High => (Full >> 24);
Expand All @@ -42,11 +46,11 @@ public ObjectGuid(uint full)
{
Full = full;

if (Full >= PlayerMin && Full <= PlayerMax)
if (IsPlayer(full))
Type = GuidType.Player;
else if (Full >= StaticObjectMin && Full <= StaticObjectMax)
else if (IsStatic(full))
Type = GuidType.Static;
else if (Full >= DynamicMin && Full <= DynamicMax)
else if (IsDynamic(full))
Type = GuidType.Dynamic;
else
Type = GuidType.Undef;
Expand Down
2 changes: 1 addition & 1 deletion Source/ACE.Server/Command/Handlers/DeveloperCommands.cs
Original file line number Diff line number Diff line change
Expand Up @@ -399,7 +399,7 @@ public static void MoveTo(Session session, params string[] parameters)
WorldObject loot = WorldObjectFactory.CreateNewWorldObject(trainingWandTarget);
LootGenerationFactory.Spawn(loot, session.Player.Location.InFrontOf(distance));

session.Player.HandleActionPutItemInContainer(loot.Guid, session.Player.Guid);
session.Player.HandleActionPutItemInContainer(loot.Guid.Full, session.Player.Guid.Full);
}

/// <summary>
Expand Down
4 changes: 2 additions & 2 deletions Source/ACE.Server/Entity/ItemProfile.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
using ACE.Entity;
using ACE.Entity;

namespace ACE.Server.Entity
{
public class ItemProfile
{
public uint Amount;
public ObjectGuid Guid;
public uint ObjectGuid;
public uint WeenieClassId;
}
}
5 changes: 5 additions & 0 deletions Source/ACE.Server/Entity/Landblock.cs
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,11 @@ public WorldObject GetObject(ObjectGuid guid)
return null;
}

public WorldObject GetWieldedObject(uint objectGuid, bool searchAdjacents = true)
{
return GetWieldedObject(new ObjectGuid(objectGuid), searchAdjacents); // todo fix
}

/// <summary>
/// Searches this landblock (and possibly adjacents) for an ObjectGuid wielded by a creature
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

namespace ACE.Server.Network.GameAction.Actions
{
/// <summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
using ACE.Entity;
using ACE.Server.Managers;

namespace ACE.Server.Network.GameAction.Actions
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ public static class GameActionAddChannel
public static void Handle(ClientMessage message, Session session)
{
var chatChannelID = (Channel)message.Payload.ReadUInt32();

// Probably need some IsAdvocate and IsSentinel type thing going on here as well. leaving for now
if (!session.Player.IsAdmin && !session.Player.IsArch && !session.Player.IsPsr)
return;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using System;
using ACE.Server.Network.Structure;

namespace ACE.Server.Network.GameAction.Actions
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

namespace ACE.Server.Network.GameAction.Actions
{
public static class GameActionAddSpellFavorite
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
using ACE.Entity;
using ACE.Server.Network.GameEvent.Events;

namespace ACE.Server.Network.GameAction.Actions
{
Expand All @@ -8,10 +6,10 @@ public static class GameActionAddToTrade
[GameAction(GameActionType.AddToTrade)]
public static void Handle(ClientMessage message, Session session)
{
ObjectGuid item = new ObjectGuid(message.Payload.ReadUInt32());
uint tradeSlot = message.Payload.ReadUInt32();
var itemGuid = message.Payload.ReadUInt32();
var tradeSlot = message.Payload.ReadUInt32();

session.Player.HandleActionAddToTrade(session, item, tradeSlot);
session.Player.HandleActionAddToTrade(session, itemGuid, tradeSlot);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
using System;
using System;

using ACE.Common.Extensions;
using ACE.Entity.Enum;
using ACE.Server.Entity;
using ACE.Server.Physics.Common;

using Position = ACE.Entity.Position;

namespace ACE.Server.Network.GameAction.Actions
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using ACE.Entity;

namespace ACE.Server.Network.GameAction.Actions
{
Expand All @@ -7,8 +6,7 @@ public static class GameActionAllegianceBreakAllegiance
[GameAction(GameActionType.BreakAllegiance)]
public static void Handle(ClientMessage message, Session session)
{
var target = message.Payload.ReadUInt32();
var targetGuid = new ObjectGuid(target);
var targetGuid = message.Payload.ReadUInt32();

session.Player.HandleActionBreakAllegiance(targetGuid);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using ACE.Entity;

namespace ACE.Server.Network.GameAction.Actions
{
Expand All @@ -7,8 +6,7 @@ public static class GameActionAllegianceSwearAllegiance
[GameAction(GameActionType.SwearAllegiance)]
public static void Handle(ClientMessage message, Session session)
{
var target = message.Payload.ReadUInt32();
var targetGuid = new ObjectGuid(target);
var targetGuid = message.Payload.ReadUInt32();

session.Player.HandleActionSwearAllegiance(targetGuid);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;

using ACE.Server.Network.GameEvent.Events;

namespace ACE.Server.Network.GameAction.Actions
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;

using ACE.Entity;

namespace ACE.Server.Network.GameAction.Actions
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using ACE.Entity;

namespace ACE.Server.Network.GameAction.Actions
{
Expand All @@ -7,12 +6,10 @@ public static class GameActionBookPageData
[GameAction(GameActionType.BookPageData)]
public static void Handle(ClientMessage message, Session session)
{
var objectId = message.Payload.ReadUInt32();
var bookGuid = message.Payload.ReadUInt32();
var pageNum = message.Payload.ReadUInt32();

ObjectGuid guid = new ObjectGuid(objectId);

session.Player.ReadBookPage(guid, pageNum);
session.Player.ReadBookPage(bookGuid, pageNum);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using System.Collections.Generic;
using ACE.Entity;

using ACE.Server.Entity;

namespace ACE.Server.Network.GameAction.Actions
Expand All @@ -9,7 +9,7 @@ public static class GameActionBuyItems
[GameAction(GameActionType.Buy)]
public static void Handle(ClientMessage message, Session session)
{
ObjectGuid vendorId = new ObjectGuid(message.Payload.ReadUInt32());
var vendorGuid = message.Payload.ReadUInt32();

uint itemcount = message.Payload.ReadUInt32();

Expand All @@ -22,15 +22,15 @@ public static void Handle(ClientMessage message, Session session)
item.Amount = message.Payload.ReadUInt32();
// item.Amount = item.Amount & 0xFFFFFF;

item.Guid = message.Payload.ReadGuid();
item.ObjectGuid = message.Payload.ReadUInt32();
items.Add(item);
}

// curancy 0 default, if else then currancy is set other then money
uint i_alternateCurrencyID = message.Payload.ReadUInt32();

// todo: take into account other currencyIds other then assuming default
session.Player.HandleActionBuyItem(vendorId, items);
session.Player.HandleActionBuyItem(vendorGuid, items);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public static void Handle(ClientMessage clientMessage, Session session)
{
var groupChatType = (Channel)clientMessage.Payload.ReadUInt32();
var message = clientMessage.Payload.ReadString16L();

switch (groupChatType)
{
case Channel.Abuse:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ public static void Handle(ClientMessage message, Session session)
//Close the trade window for the trade partner
target.HandleActionCloseTradeNegotiations(target.Session);
}

}
}
}
Original file line number Diff line number Diff line change
@@ -1,26 +1,21 @@
using System.Collections.Generic;

using ACE.Entity;
using ACE.Server.Entity;

namespace ACE.Server.Network.GameAction.Actions
{
public static class GameActionCreateTinkeringTool
{
[GameAction(GameActionType.CreateTinkeringTool)]
public static void Handle(ClientMessage message, Session session)
{
ObjectGuid vendorId = new ObjectGuid(message.Payload.ReadUInt32());
var vendorGuid = message.Payload.ReadUInt32();
uint itemcount = message.Payload.ReadUInt32();

List<ObjectGuid> items = new List<ObjectGuid>();
var items = new List<uint>();

while (itemcount > 0)
{
itemcount--;
ObjectGuid item = new ObjectGuid();
item = new ObjectGuid(message.Payload.ReadUInt32());
items.Add(item);
items.Add(message.Payload.ReadUInt32());
}

session.Player.HandleTinkeringTool(items);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using ACE.Server.Managers;

namespace ACE.Server.Network.GameAction.Actions
{
Expand All @@ -7,7 +6,7 @@ public static class GameActionDeclineTrade
[GameAction(GameActionType.DeclineTrade)]
public static void Handle(ClientMessage message, Session session)
{
session.Player.HandleActionDeclineTrade(session);
session.Player.HandleActionDeclineTrade(session);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

namespace ACE.Server.Network.GameAction.Actions
{
// Death feels is less morbid then suicide as a human, used "Die" instead.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

namespace ACE.Server.Network.GameAction.Actions
{
public static class GameActionDisplayPlayerConsentList
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using ACE.Entity;

namespace ACE.Server.Network.GameAction.Actions
{
Expand All @@ -8,9 +7,9 @@ public static class GameActionDropItem

public static void Handle(ClientMessage message, Session session)
{
var objectGuid = new ObjectGuid(message.Payload.ReadUInt32());
var itemGuid = message.Payload.ReadUInt32();

session.Player.HandleActionDropItem(objectGuid);
session.Player.HandleActionDropItem(itemGuid);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

namespace ACE.Server.Network.GameAction.Actions
{

public static class GameActionFellowshipChangeOpenness
{
[GameAction(GameActionType.FellowshipChangeOpenness)]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using ACE.Common.Extensions;
using ACE.Server.Network.GameEvent.Events;
using ACE.Server.Network.GameMessages.Messages;

namespace ACE.Server.Network.GameAction.Actions
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

namespace ACE.Server.Network.GameAction.Actions
{
public class GameActionFellowshipQuit
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
using ACE.Entity;
using ACE.Server.WorldObjects;
using ACE.Server.Managers;

namespace ACE.Server.Network.GameAction.Actions
Expand All @@ -9,9 +7,8 @@ public static class GameActionFellowshipRecruit
[GameAction(GameActionType.FellowshipRecruit)]
public static void Handle(ClientMessage message, Session session)
{
uint newMemberId = message.Payload.ReadUInt32();
ObjectGuid newMember = new ObjectGuid(newMemberId);
Player newPlayer = PlayerManager.GetOnlinePlayer(newMemberId);
uint newMemberGuid = message.Payload.ReadUInt32();
var newPlayer = PlayerManager.GetOnlinePlayer(newMemberGuid);

session.Player.FellowshipRecruit(newPlayer);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,11 @@ public static class GameActionGameJoin
[GameAction(GameActionType.Join)]
public static void Handle(ClientMessage message, Session session)
{
var gameId = message.Payload.ReadGuid(); // object id of gameboard
var gameGuid = message.Payload.ReadUInt32(); // object id of gameboard
var whichTeam = message.Payload.ReadUInt32(); // expecting 0xFFFFFFFF here

Game wo = session.Player.CurrentLandblock?.GetObject(gameId) as Game;
if (wo != null)
{
wo.ActOnJoin(session.Player.Guid);
}
if (session.Player.CurrentLandblock?.GetObject(gameGuid) is Game game)
game.ActOnJoin(session.Player.Guid);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

namespace ACE.Server.Network.GameAction.Actions
{
public static class GameActionGameQuit
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

namespace ACE.Server.Network.GameAction.Actions
{
public static class GameActionGetAndWieldItem
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using ACE.Entity;

namespace ACE.Server.Network.GameAction.Actions
{
Expand All @@ -7,11 +6,9 @@ public static class GameActionGiveObjectRequest
[GameAction(GameActionType.GiveObjectRequest)]
public static void Handle(ClientMessage message, Session session)
{
uint targetID = message.Payload.ReadUInt32();
uint objectID = message.Payload.ReadUInt32();
uint targetGuid = message.Payload.ReadUInt32();
uint objectGuid = message.Payload.ReadUInt32();
int amount = message.Payload.ReadInt32();
ObjectGuid targetGuid = new ObjectGuid(targetID);
ObjectGuid objectGuid = new ObjectGuid(objectID);

session.Player.HandleActionGiveObjectRequest(targetGuid, objectGuid, amount);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;

using ACE.Server.Network.GameEvent.Events;

namespace ACE.Server.Network.GameAction.Actions
Expand Down
Loading