mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-06-12 07:24:37 +02:00
Started mass overhaul of quests and related components like small talk. Fixed some scripts. More fixes required.
This commit is contained in:
parent
df49eefadb
commit
2279ee7017
33 changed files with 1241 additions and 279 deletions
|
@ -1456,27 +1456,24 @@ namespace Meteor.Map.Actors
|
|||
|
||||
public void AddQuest(string name, bool isSilent = false)
|
||||
{
|
||||
Actor actor = Server.GetStaticActors(name);
|
||||
Quest baseQuest = (Quest) Server.GetStaticActors(name);
|
||||
|
||||
if (actor == null)
|
||||
if (baseQuest == null)
|
||||
return;
|
||||
|
||||
uint id = actor.actorId;
|
||||
|
||||
int freeSlot = GetFreeQuestSlot();
|
||||
|
||||
if (freeSlot == -1)
|
||||
return;
|
||||
|
||||
playerWork.questScenario[freeSlot] = id;
|
||||
questScenario[freeSlot] = new Quest(this, playerWork.questScenario[freeSlot], name, null, 0, 0);
|
||||
playerWork.questScenario[freeSlot] = baseQuest.actorId;
|
||||
questScenario[freeSlot] = new Quest(this, baseQuest);
|
||||
Database.SaveQuest(this, questScenario[freeSlot]);
|
||||
SendQuestClientUpdate(freeSlot);
|
||||
|
||||
if (!isSilent)
|
||||
{
|
||||
SendGameMessage(Server.GetWorldManager().GetActor(), 25224, 0x20, (object)questScenario[freeSlot].GetQuestId());
|
||||
questScenario[freeSlot].NextPhase(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1541,9 +1538,9 @@ namespace Meteor.Map.Actors
|
|||
{
|
||||
if (questScenario[i] != null && questScenario[i].GetQuestId() == oldId)
|
||||
{
|
||||
Actor actor = Server.GetStaticActors((0xA0F00000 | newId));
|
||||
Quest baseQuest = (Quest) Server.GetStaticActors((0xA0F00000 | newId));
|
||||
playerWork.questScenario[i] = (0xA0F00000 | newId);
|
||||
questScenario[i] = new Quest(this, playerWork.questScenario[i], actor.actorName, null, 0, 0);
|
||||
questScenario[i] = new Quest(this, baseQuest);
|
||||
Database.SaveQuest(this, questScenario[i]);
|
||||
SendQuestClientUpdate(i);
|
||||
break;
|
||||
|
@ -1643,6 +1640,65 @@ namespace Meteor.Map.Actors
|
|||
return -1;
|
||||
}
|
||||
|
||||
public Quest GetDefaultTalkQuest(Npc npc)
|
||||
{
|
||||
Quest defaultTalk = null;
|
||||
|
||||
switch (npc.zone.regionId)
|
||||
{
|
||||
case 101:
|
||||
defaultTalk = (Quest) Server.GetStaticActors("DftSea");
|
||||
break;
|
||||
case 102:
|
||||
defaultTalk = (Quest) Server.GetStaticActors("DftRoc");
|
||||
break;
|
||||
case 103:
|
||||
defaultTalk = (Quest) Server.GetStaticActors("DftFst");
|
||||
break;
|
||||
case 104:
|
||||
defaultTalk = (Quest) Server.GetStaticActors("DftWil");
|
||||
break;
|
||||
case 105:
|
||||
defaultTalk = (Quest) Server.GetStaticActors("DftLak");
|
||||
break;
|
||||
case 805:
|
||||
defaultTalk = (Quest) Server.GetStaticActors("DftSrt");
|
||||
break;
|
||||
}
|
||||
|
||||
if (defaultTalk != null && defaultTalk.IsQuestENPC(this, npc))
|
||||
return defaultTalk;
|
||||
return null;
|
||||
}
|
||||
|
||||
public Quest GetTutorialQuest(Npc npc)
|
||||
{
|
||||
switch (npc.GetActorClassId())
|
||||
{
|
||||
case 1000137:
|
||||
return (Quest)Server.GetStaticActors("Trl0l1");
|
||||
case 1000230:
|
||||
return (Quest)Server.GetStaticActors("Trl0g1");
|
||||
case 1000841:
|
||||
return (Quest)Server.GetStaticActors("Trl0u1");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Quest[] GetQuestsForNpc(Npc npc)
|
||||
{
|
||||
return Array.FindAll(questScenario, e => e != null && e.IsQuestENPC(this, npc));
|
||||
}
|
||||
|
||||
public void HandleNpcLS(uint id)
|
||||
{
|
||||
foreach (Quest quest in questScenario)
|
||||
{
|
||||
if (quest != null)
|
||||
quest.OnNpcLS(this, id);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetNpcLS(uint npcLSId, uint state)
|
||||
{
|
||||
bool isCalling, isExtra;
|
||||
|
@ -1847,7 +1903,7 @@ namespace Meteor.Map.Actors
|
|||
|
||||
public void SetEventStatus(Actor actor, string conditionName, bool enabled, byte type)
|
||||
{
|
||||
SetEventStatusPacket.BuildPacket(actor.actorId, enabled, type, conditionName);
|
||||
QueuePacket(SetEventStatusPacket.BuildPacket(actor.actorId, enabled, type, conditionName));
|
||||
}
|
||||
|
||||
public void RunEventFunction(string functionName, params object[] parameters)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue