public void startQuest(Quest quest) { QuestJson qJson = lookUpQuest(quest); if (qJson != null) { quest.start(qJson); } }
public void checkValidQuest(Quest quest, int connectionId, PlayerServer playerServer) { QuestJson qJson = lookUpQuest(quest); if (qJson != null) { quest.start(qJson); server.addOrUpdateQuestStatusToDatabase(quest, playerServer, true, PacketTypes.QUEST_START); playerServer.questList.Add(quest); } }
public Quest.Quest AddQuest(QuestJson quest) { if (_quests.ContainsKey(quest.Id)) { return(null); } var temp = new Quest.Quest { Id = quest.Id, QuestData = quest, }; return(_quests.TryAdd(quest.Id, temp) ? temp : null); }
public void start(/*int[] requirementData,*/ QuestJson questJson) { //this.requirementData = requirementData; this.questJson = questJson; this.description = questJson.description; this.status = e_QuestStatus.STARTED; for (int i = 0; i < questJson.completionData.completionId.Count; i++) { if (isCompletionIdMobId(i)) { Debug.Log("MOB_KILLS: " + mobKills); this.mobKills.Add(questJson.completionData.completionId[i], 0); } if (isCompletionIdItemId(i)) { setItemCount(questJson.completionData.completionId[i], 0); } } this.expReward = questJson.expReward; checkForCompletion(); }
public override void Convert() { using (var stream = new BinaryReader(File.OpenRead(Path), Encode)) { var size = stream.BaseStream.Length; ushort i = 0; var list = new List <QuestJson>(); // 2696 bytes each while (stream.BaseStream.Position < size) { var temp = new QuestJson(); temp.LoopId = i; temp.Id = stream.ReadUInt16(); temp.Unk = stream.ReadInt16(); temp.StartNpc = stream.ReadInt32(); temp.EndNpc = stream.ReadInt32(); temp.Unk2 = stream.ReadInt32(); temp.Name = Encode.GetString(stream.ReadBytes(64)).Trim('\u0000'); temp.StartDialog = stream.ReadInt16(); temp.UnfinishedDialog = stream.ReadInt16(); temp.EndDialog = stream.ReadInt16(); temp.Summary = stream.ReadInt16(); stream.ReadBytes(1155); temp.Level = stream.ReadByte(); temp.Unk3 = stream.ReadInt16(); temp.Unk4 = stream.ReadInt16(); temp.Unk5 = stream.ReadInt32(); temp.Unk6 = stream.ReadInt32(); temp.PreConditions = new List <QuestData>(); temp.Requires = new List <QuestData>(); temp.Rewards = new List <QuestData>(); temp.Removes = new List <QuestData>(); temp.Choices = new List <QuestData>(); temp.Misc = new List <QuestData>(); for (var j = 0; j < 30; j++) // 0-4 { var temp2 = new QuestData { TypeId = stream.ReadInt32(), Quantity1 = stream.ReadInt32(), Quantity2 = stream.ReadInt32(), Unk1 = stream.ReadInt32(), ItemId1 = stream.ReadUInt16(), ItemId2 = stream.ReadUInt16(), Unk2 = stream.ReadInt32(), Unk3 = stream.ReadInt16(), Unk8 = stream.ReadInt16(), Unk4 = stream.ReadInt32(), Quantity3 = stream.ReadInt32(), Unk5 = stream.ReadInt32(), Unk6 = stream.ReadInt32(), Unk7 = stream.ReadInt32(), }; if (temp2.TypeId <= 0) { continue; } if (j >= 0 && j < 5) // 5 { temp.PreConditions.Add(temp2); } else if (j >= 5 && j < 10) // 5 { temp.Requires.Add(temp2); } else if (j >= 10 && j < 18) // 8 { temp.Rewards.Add(temp2); } else if (j >= 18 && j < 23) // 5 { temp.Removes.Add(temp2); } else if (j >= 23 && j < 26) // 3 { temp.Choices.Add(temp2); } else if (j >= 26 && j < 30) // 4 { temp.Misc.Add(temp2); } } i++; if (temp.Id != 0) { list.Add(temp); } } JsonData = JsonConvert.SerializeObject(list, Formatting.Indented); } }
public QuestState IsQuestAvailable(QuestJson quest, Character.Character character) { if (quest == null || character == null || quest.Level > character.Level) { return(QuestState.NotAvailable); } var charQuest = character.Quests.GetQuest(quest.Id); if (charQuest != null) { return(charQuest.IsCompleted ? charQuest.IsDone ? QuestState.GotReward : QuestState.Completed : QuestState.OnProgress); } var isAvailable = quest.PreConditions.Count; foreach (var preCondition in quest.PreConditions) { switch (preCondition.TypeId) { case Quest.Const.GetType.Item: break; case Quest.Const.GetType.LevelRange: if (character.Level >= preCondition.Quantity2 && character.Level <= preCondition.ItemId1) { isAvailable--; } break; case Quest.Const.GetType.Class: var cP = character.Profession; switch ((ProfessionBaseType)preCondition.Quantity2) { case ProfessionBaseType.Warrior: if (cP == Profession.Warrior || cP == Profession.Conquerer || cP == Profession.Warrior3) { isAvailable--; } break; case ProfessionBaseType.Paladin: if (cP == Profession.Paladin || cP == Profession.Templar || cP == Profession.Paladin3) { isAvailable--; } break; case ProfessionBaseType.DualGunner: if (cP == Profession.DualGunner || cP == Profession.Pistoleer || cP == Profession.DualGunner3) { isAvailable--; } break; case ProfessionBaseType.Rifleman: if (cP == Profession.Rifleman || cP == Profession.Sniper || cP == Profession.Rifleman3) { isAvailable--; } break; case ProfessionBaseType.Warlock: if (cP == Profession.Warlock || cP == Profession.Arcanist || cP == Profession.Warlock3) { isAvailable--; } break; case ProfessionBaseType.Cleric: if (cP == Profession.Cleric || cP == Profession.Saint || cP == Profession.Cleric3) { isAvailable--; } break; } break; case Quest.Const.GetType.Unk6: break; case Quest.Const.GetType.QuestRequire: case Quest.Const.GetType.AfterMission: var cQuest = character.Quests.GetQuest(quest.Id); if (cQuest != null && cQuest.IsCompleted) { isAvailable--; } break; case Quest.Const.GetType.Unk10: break; case Quest.Const.GetType.Unk29: break; case Quest.Const.GetType.Unk32: break; case Quest.Const.GetType.Unk42: break; case Quest.Const.GetType.Unk55: break; case Quest.Const.GetType.Unk63: break; case Quest.Const.GetType.Unk64: break; case Quest.Const.GetType.Unk67: break; case Quest.Const.GetType.Unk79: break; case Quest.Const.GetType.Unk85: break; case Quest.Const.GetType.Unk95: break; case Quest.Const.GetType.Unk98: break; default: throw new ArgumentOutOfRangeException(); } } return(isAvailable > 0 ? QuestState.NotAvailable : QuestState.Available); }
public QuestManager(Server server) { this.server = server; root = JsonManager.readJson <QuestJson>(e_Paths.JSON_QUESTS); }
void onLoadCharacter(NetworkMessage msg) { Debug.Log("Character pre- loaded"); PlayerInfo m = msg.ReadMessage <PlayerInfo>(); PlayerNetworkObject[] otherPlayers = (PlayerNetworkObject[])Tools.byteArrayToObject(m.otherPlayers); equipOtherPlayers(otherPlayers); PlayerStats stats = (PlayerStats)Tools.byteArrayToObject(m.stats); this.player.updateStats(stats); List <Equip> equipments = (List <Equip>)(Tools.byteArrayToObject(m.equipment)); List <Item> inventory = (List <Item>)(Tools.byteArrayToObject(m.items)); List <string> color = (List <string>)(Tools.byteArrayToObject(m.color)); this.player.setInventory(inventory); this.player.setEquips(equipments); this.player.setColor(color); for (int i = 0; i < equipments.Count; i++) { if (equipments[i] == null) { continue; } if (equipments[i].getID().isItemType(e_itemTypes.HATS) || equipments[i].getID().isItemType(e_itemTypes.WEAPON)) { this.player.setEquipModel(equipments[i]); } else { this.player.setClothesModel(equipments[i]); } } GameObject playerObj = ClientScene.FindLocalObject(m.id); Player player; if (playerObj != null) { player = playerObj.GetComponent <Player>(); } else { player = this.GetComponent <Player>(); } Quest[] questArray = (Quest[])Tools.byteArrayToObjectArray(m.questClasses); QuestJson clientJson = JsonManager.readJson <QuestJson>(e_Paths.JSON_QUESTS); foreach (Quest quest in questArray) { startQuest(quest); } GameObject[] objects = GameObject.FindGameObjectsWithTag("NPC"); foreach (GameObject o in objects) { NPCMain main = o.GetComponent <NPCMain>(); main.setQuestMarker(this.player); } //Initilize skill tree List <Skill> skillsToVerifyFromServer = new List <Skill>(); for (int i = 2; i < m.skillProperties.Length; i += 3) { Skill tempSkill = new Skill(); tempSkill.id = m.skillProperties[i - 2]; //skillId tempSkill.currentPoints = m.skillProperties[i - 1]; //currentPoints tempSkill.maxPoints = m.skillProperties[i]; //maxPoints this.player.skillsToVerifyWithFromServer.Add(tempSkill); } foreach (Skill s in skillsToVerifyFromServer) { this.player.stats.increment(s.str, s.dex, s.intell, 0, 0, 0, 0, 0, 0, 0, this.player.uiStats); } Debug.Log("Character loaded"); skillTree = Instantiate(skillTreePrefab).GetComponent <SkillTree> (); skillTree.initilize(player); this.transform.position = new Vector3(-30, 0, 16); }