Example #1
0
 private static void UpdateQuestItemSub(ActorPC pc, SagaDB.Quest.Quest quest,bool maploaded)
 {
     ActorEventHandlers.PC_EventHandler eh = (SagaMap.ActorEventHandlers.PC_EventHandler)pc.e;
     if (quest == null) return;
     if (!QuestItem.ContainsKey(quest.ID)) return;
     foreach (uint i in quest.Steps.Keys)
     {
         if (GetQuestStepStatus(pc, quest.ID, i) == 1)
         {
             if (!QuestItem[quest.ID].ContainsKey(i)) return;
             bool completed = true;
             SagaDB.Quest.Step step = quest.Steps[i];
             foreach (questI q in QuestItem[quest.ID][i])
             {
                 List<SagaDB.Items.Item> l = pc.inv.GetInventoryList();
                 if (step.SubSteps == null)
                 {
                     step.SubSteps = new Dictionary<byte, byte>();
                 }
                 if (!step.SubSteps.ContainsKey(q.SubSID))
                     step.SubSteps.Add(q.SubSID, 0);
                 foreach (SagaDB.Items.Item j in l)
                 {
                     if (j.id == q.id)
                     {
                         if (step.SubSteps[q.SubSID] >= q.ammount)
                         {
                             if (maploaded)
                             {
                                 Packets.Server.UpdateQuestSubStep p2 = new SagaMap.Packets.Server.UpdateQuestSubStep();
                                 p2.SetQuestID(quest.ID);
                                 p2.SetStep(i);
                                 if (q.SubSID != 0) p2.SetSubStep((byte)(q.SubSID - 1));
                                 p2.SetAmmount(j.stack);
                                 eh.C.netIO.SendPacket(p2, eh.C.SessionID);
                             }
                             continue;
                         }
                         Packets.Server.UpdateQuestSubStep p1 = new SagaMap.Packets.Server.UpdateQuestSubStep();
                         p1.SetQuestID(quest.ID);
                         p1.SetStep(i);
                         if (q.SubSID != 0) p1.SetSubStep((byte)(q.SubSID - 1));
                         p1.SetAmmount(j.stack);
                         eh.C.netIO.SendPacket(p1, eh.C.SessionID);
                         step.SubSteps[q.SubSID] = j.stack;
                     }
                 }
             }
             foreach (questI j in QuestItem[quest.ID][i])
             {
                 if (step.SubSteps[j.SubSID] < j.ammount)
                     completed = false;
             }
             if (completed)
                 SetQuestStepStatus(pc, quest.ID, i, 2);
         }
     }
 }
Example #2
0
 private static void UpdateQuestItemSub(ActorPC pc, SagaDB.Quest.Quest quest, bool maploaded)
 {
     ActorEventHandlers.PC_EventHandler eh = (SagaMap.ActorEventHandlers.PC_EventHandler)pc.e;
     if (quest == null)
     {
         return;
     }
     if (!QuestItem.ContainsKey(quest.ID))
     {
         return;
     }
     foreach (uint i in quest.Steps.Keys)
     {
         if (GetQuestStepStatus(pc, quest.ID, i) == 1)
         {
             if (!QuestItem[quest.ID].ContainsKey(i))
             {
                 return;
             }
             bool completed         = true;
             SagaDB.Quest.Step step = quest.Steps[i];
             foreach (questI q in QuestItem[quest.ID][i])
             {
                 List <SagaDB.Items.Item> l = pc.inv.GetInventoryList();
                 if (step.SubSteps == null)
                 {
                     step.SubSteps = new Dictionary <byte, byte>();
                 }
                 if (!step.SubSteps.ContainsKey(q.SubSID))
                 {
                     step.SubSteps.Add(q.SubSID, 0);
                 }
                 foreach (SagaDB.Items.Item j in l)
                 {
                     if (j.id == q.id)
                     {
                         if (step.SubSteps[q.SubSID] >= q.ammount)
                         {
                             if (maploaded)
                             {
                                 Packets.Server.UpdateQuestSubStep p2 = new SagaMap.Packets.Server.UpdateQuestSubStep();
                                 p2.SetQuestID(quest.ID);
                                 p2.SetStep(i);
                                 if (q.SubSID != 0)
                                 {
                                     p2.SetSubStep((byte)(q.SubSID - 1));
                                 }
                                 p2.SetAmmount(j.stack);
                                 eh.C.netIO.SendPacket(p2, eh.C.SessionID);
                             }
                             continue;
                         }
                         Packets.Server.UpdateQuestSubStep p1 = new SagaMap.Packets.Server.UpdateQuestSubStep();
                         p1.SetQuestID(quest.ID);
                         p1.SetStep(i);
                         if (q.SubSID != 0)
                         {
                             p1.SetSubStep((byte)(q.SubSID - 1));
                         }
                         p1.SetAmmount(j.stack);
                         eh.C.netIO.SendPacket(p1, eh.C.SessionID);
                         step.SubSteps[q.SubSID] = j.stack;
                     }
                 }
             }
             foreach (questI j in QuestItem[quest.ID][i])
             {
                 if (step.SubSteps[j.SubSID] < j.ammount)
                 {
                     completed = false;
                 }
             }
             if (completed)
             {
                 SetQuestStepStatus(pc, quest.ID, i, 2);
             }
         }
     }
 }
Example #3
0
        private static void UpdateEnemyInfoSub(ActorPC pc, uint MobID, SagaDB.Quest.Quest quest, bool maploded)
        {
            ActorEventHandlers.PC_EventHandler eh = (SagaMap.ActorEventHandlers.PC_EventHandler)pc.e;
            if (quest == null) return;
            if (!Enemys.ContainsKey(quest.ID)) return;
            foreach (uint i in quest.Steps.Keys)
            {
                if (GetQuestStepStatus(pc, quest.ID, i) == 1)
                {
                    if (!Enemys[quest.ID].ContainsKey(i)) return;
                    bool completed = true;
                    SagaDB.Quest.Step step = quest.Steps[i];
                    foreach (EnemyInfo q in Enemys[quest.ID][i])
                    {
                        if (step.SubSteps == null)
                        {
                            step.SubSteps = new Dictionary<byte, byte>();
                        }
                        if (!step.SubSteps.ContainsKey(q.SubSID))
                            step.SubSteps.Add(q.SubSID, 0);
                        if (q.id.Contains(MobID))
                        {
                            if (step.SubSteps[q.SubSID] >= q.ammount)
                            {
                                if (maploded)
                                {
                                    Packets.Server.UpdateQuestSubStep p2 = new SagaMap.Packets.Server.UpdateQuestSubStep();
                                    p2.SetQuestID(quest.ID);
                                    p2.SetStep(i);
                                    if (q.SubSID != 0) p2.SetSubStep((byte)(q.SubSID - 1));
                                    p2.SetAmmount(step.SubSteps[q.SubSID]);
                                    eh.C.netIO.SendPacket(p2, eh.C.SessionID);
                                }
                                continue;
                            }
                            step.SubSteps[q.SubSID]++;
                            Packets.Server.UpdateQuestSubStep p1 = new SagaMap.Packets.Server.UpdateQuestSubStep();
                            p1.SetQuestID(quest.ID);
                            p1.SetStep(i);
                            if (q.SubSID != 0) p1.SetSubStep((byte)(q.SubSID - 1));
                            p1.SetAmmount(step.SubSteps[q.SubSID]);
                            eh.C.netIO.SendPacket(p1, eh.C.SessionID);
                        }

                    }
                    foreach (EnemyInfo j in Enemys[quest.ID][i])
                    {
                        if (step.SubSteps[j.SubSID] < j.ammount)
                            completed = false;
                    }
                    if (completed)
                        SetQuestStepStatus(pc, quest.ID, i, 2);
                }
            }
        }
Example #4
0
 private static void UpdateEnemyInfoSub(ActorPC pc, uint MobID, SagaDB.Quest.Quest quest, bool maploded)
 {
     ActorEventHandlers.PC_EventHandler eh = (SagaMap.ActorEventHandlers.PC_EventHandler)pc.e;
     if (quest == null)
     {
         return;
     }
     if (!Enemys.ContainsKey(quest.ID))
     {
         return;
     }
     foreach (uint i in quest.Steps.Keys)
     {
         if (GetQuestStepStatus(pc, quest.ID, i) == 1)
         {
             if (!Enemys[quest.ID].ContainsKey(i))
             {
                 return;
             }
             bool completed         = true;
             SagaDB.Quest.Step step = quest.Steps[i];
             foreach (EnemyInfo q in Enemys[quest.ID][i])
             {
                 if (step.SubSteps == null)
                 {
                     step.SubSteps = new Dictionary <byte, byte>();
                 }
                 if (!step.SubSteps.ContainsKey(q.SubSID))
                 {
                     step.SubSteps.Add(q.SubSID, 0);
                 }
                 if (q.id.Contains(MobID))
                 {
                     if (step.SubSteps[q.SubSID] >= q.ammount)
                     {
                         if (maploded)
                         {
                             Packets.Server.UpdateQuestSubStep p2 = new SagaMap.Packets.Server.UpdateQuestSubStep();
                             p2.SetQuestID(quest.ID);
                             p2.SetStep(i);
                             if (q.SubSID != 0)
                             {
                                 p2.SetSubStep((byte)(q.SubSID - 1));
                             }
                             p2.SetAmmount(step.SubSteps[q.SubSID]);
                             eh.C.netIO.SendPacket(p2, eh.C.SessionID);
                         }
                         continue;
                     }
                     step.SubSteps[q.SubSID]++;
                     Packets.Server.UpdateQuestSubStep p1 = new SagaMap.Packets.Server.UpdateQuestSubStep();
                     p1.SetQuestID(quest.ID);
                     p1.SetStep(i);
                     if (q.SubSID != 0)
                     {
                         p1.SetSubStep((byte)(q.SubSID - 1));
                     }
                     p1.SetAmmount(step.SubSteps[q.SubSID]);
                     eh.C.netIO.SendPacket(p1, eh.C.SessionID);
                 }
             }
             foreach (EnemyInfo j in Enemys[quest.ID][i])
             {
                 if (step.SubSteps[j.SubSID] < j.ammount)
                 {
                     completed = false;
                 }
             }
             if (completed)
             {
                 SetQuestStepStatus(pc, quest.ID, i, 2);
             }
         }
     }
 }