Added Tug of the Whorl. Fixed up prereqs not working when using debug command. Fixed giveexp command. Added seq constants.

This commit is contained in:
Filip Maj 2022-02-23 23:10:11 -05:00
parent 5c49563790
commit 90115f7c83
11 changed files with 435 additions and 15 deletions

View file

@ -1476,7 +1476,9 @@ namespace Meteor.Map.Actors
if (!isSilent)
{
SendGameMessage(Server.GetWorldManager().GetActor(), 25224, 0x20, (object)questScenario[freeSlot].GetQuestId()); // "<Quest> accepted."
WorldMaster worldMaster = Server.GetWorldManager().GetActor();
SendDataPacket("attention", worldMaster, "", 25224, (object)questScenario[freeSlot].GetQuestId()); // "<Quest> accepted."
SendGameMessage(worldMaster, 25224, 0x20, (object)questScenario[freeSlot].GetQuestId()); // "<Quest> accepted."
}
instance.OnAccept();

View file

@ -172,6 +172,14 @@ namespace Meteor.Map.Actors.QuestNS
CompletedQuestsBitfield.Set(questId - SCENARIO_START);
else
CompletedQuestsBitfield.Clear(questId - SCENARIO_START);
QuestGameData[] updated = Server.GetQuestGamedataByPrerequisite(questId);
foreach (var questData in updated)
{
if (flag)
PrereqBitfield.Set(questData.Id - SCENARIO_START);
else
PrereqBitfield.Clear(questData.Id - SCENARIO_START);
}
ComputeAvailable();
}
}

View file

@ -409,11 +409,11 @@ namespace Meteor.Map
private static void AddToList(object o, List<LuaParam> luaParams)
{
if (o is int)
if (o is int || o is short)
{
luaParams.Add(new LuaParam(0x0, (int)o));
}
else if (o is uint)
else if (o is uint || o is ushort)
{
luaParams.Add(new LuaParam(0x1, (uint)o));
}

View file

@ -932,6 +932,30 @@ namespace Meteor.Map
if (player.CurrentArea.IsPrivate())
DoZoneChange(player, player.CurrentArea.ZoneId, null, 0, 15, x, y, z, rotation);
}
public void WarpToPosition(Player player, float x, float y, float z, float rotation)
{
//Remove player from currentZone if transfer else it's login
if (player.CurrentArea != null)
{
player.playerSession.LockUpdates(true);
player.CurrentArea.RemoveActorFromZone(player);
player.CurrentArea.AddActorToZone(player);
//Update player actor's properties;
player.positionX = x;
player.positionY = y;
player.positionZ = z;
player.rotation = rotation;
//Send packets
player.playerSession.QueuePacket(_0xE2Packet.BuildPacket(player.Id, 0x10));
player.playerSession.QueuePacket(player.CreateSpawnTeleportPacket(0));
player.playerSession.LockUpdates(false);
player.SendInstanceUpdate();
}
}
//Moves actor to new zone, and sends packets to spawn at the given coords.
public void DoZoneChangeContent(Player player, PrivateAreaContent contentArea, float spawnX, float spawnY, float spawnZ, float spawnRotation, ushort spawnType = SetActorPositionPacket.SPAWNTYPE_WARP_DUTY)