/// <summary> /// Raised when creature collects something, handles gathering conditions. /// </summary> /// <param name="args"></param> private void OnCreatureGathered(CollectEventArgs args) { var skill = args.Creature.Skills.Get(SkillId.ProductionMastery); if (skill == null || !args.Success) { return; } skill.Train(1); // Collect any material without using a skill. if (skill.Info.Rank == SkillRank.R9 && args.ItemId == 51101) { skill.Train(5); // Successfully pick a Bloody Herb. } if (skill.Info.Rank == SkillRank.R8 && args.ItemId == 51103) { skill.Train(5); // Successfully pick a Sunlight Herb } if (skill.Info.Rank == SkillRank.R7 && args.ItemId == 51102) { skill.Train(5); // Successfully pick a Mana Herb. } if (skill.Info.Rank == SkillRank.R6 && args.ItemId == 51105) { skill.Train(5); // Successfully pick a Golden Herb. } }
private void OnDestroyCollect(object obj, CollectEventArgs e) { Collect collect = obj as Collect; switch (e.collectType) { case CollectType.石头: stoneSum -= 1; stoneListPosition.Remove(collect.transform); break; case CollectType.木头: woodSum -= 1; woodListPosition.Remove(collect.transform); break; case CollectType.食物: foodSum -= 1; foodListPosition.Remove(collect.transform); break; case CollectType.回复药: medicineSum -= 1; medicineListPosition.Remove(collect.transform); break; default: break; } }
// 采集完成 private void Finish(object obj, CollectEventArgs e) { // 判断一下背包是否有物资 if (_FSM.NPC_Obj.itemData.number == 0) { _FSM.SetState(new NPCFindCollect(_FSM)); } else { // 将篮子换成装好物资的篮子 switch (_FSM.NPC_Obj.collectType) { case CollectType.石头: _FSM.NPC_Obj.shoulder.sharedMesh = ResourcePath.Single.stoneBasket.GetComponent <MeshFilter>().sharedMesh; break; case CollectType.木头: _FSM.NPC_Obj.shoulder.sharedMesh = ResourcePath.Single.woodBasket.GetComponent <MeshFilter>().sharedMesh; break; case CollectType.食物: _FSM.NPC_Obj.shoulder.sharedMesh = ResourcePath.Single.foodBasket.GetComponent <MeshFilter>().sharedMesh; break; case CollectType.回复药: _FSM.NPC_Obj.shoulder.sharedMesh = ResourcePath.Single.medicineBasket.GetComponent <MeshFilter>().sharedMesh; break; default: break; } _FSM.SetState(new NPCMoveHome(_FSM)); } }
/// <summary> /// Raised when creature collects something, handles gathering conditions. /// </summary> /// <param name="args"></param> private void OnCreatureCollected(CollectEventArgs args) { var skill = args.Creature.Skills.Get(SkillId.ProductionMastery); if (skill == null || !args.Success) return; skill.Train(1); // Collect any material without using a skill. if (skill.Info.Rank == SkillRank.R9 && args.ItemId == 51101) skill.Train(5); // Successfully pick a Bloody Herb. if (skill.Info.Rank == SkillRank.R8 && args.ItemId == 51103) skill.Train(5); // Successfully pick a Sunlight Herb if (skill.Info.Rank == SkillRank.R7 && args.ItemId == 51102) skill.Train(5); // Successfully pick a Mana Herb. if (skill.Info.Rank == SkillRank.R6 && args.ItemId == 51105) skill.Train(5); // Successfully pick a Golden Herb. }
/// <summary> /// Updates gathering objectives. /// </summary> /// <param name="args"></param> private void OnCreatureGathered(CollectEventArgs args) { var creature = args.Creature; var quests = creature.Quests.GetAllIncomplete(this.Id); foreach (var quest in quests) { if (!this.CanMakeProgress(creature, quest)) { continue; } var progress = quest.CurrentObjectiveOrLast; if (progress == null) { return; } var objective = this.Objectives[progress.Ident]; if (objective == null || objective.Type != ObjectiveType.Gather) { return; } var gatherObjective = (objective as QuestObjectiveGather); if (!progress.Done && args.Success && args.ItemId == gatherObjective.ItemId) { progress.Count++; if (progress.Count == gatherObjective.Amount) { quest.SetDone(progress.Ident); } UpdateQuest(creature, quest); } } }
/// <summary> /// Updates gathering objectives. /// </summary> /// <param name="args"></param> private void OnCreatureGathered(CollectEventArgs args) { var quest = args.Creature.Quests.Get(this.Id); if (quest == null) { return; } var progress = quest.CurrentObjectiveOrLast; if (progress == null) { return; } var objective = this.Objectives[progress.Ident]; if (objective == null || objective.Type != ObjectiveType.Gather) { return; } var gatherObjective = (objective as QuestObjectiveGather); if (!progress.Done && args.Success && args.ItemId == gatherObjective.ItemId) { progress.Count++; if (progress.Count == gatherObjective.Amount) { quest.SetDone(progress.Ident); } Send.QuestUpdate(args.Creature, quest); } }
/// <summary> /// Raised when creature collects something, handles gathering conditions. /// </summary> /// <param name="args"></param> private void OnCreatureGathered(CollectEventArgs args) { var skill = args.Creature.Skills.Get(SkillId.Herbalism); if (skill == null) return; if (skill.Info.Rank == SkillRank.Novice) { if (args.CollectData.Target.Contains("/baseherb")) skill.Train(1); // Try to pick a Base Herb. if (args.ItemId == 51104) { if (args.Success) skill.Train(2); // Succeed at picking a Base Herb. } } else if (skill.Info.Rank == SkillRank.RF) { if (args.CollectData.Target.Contains("/baseherb")) skill.Train(1); // Try to pick a Base Herb. else if (args.CollectData.Target.Contains("/bloodyherb")) skill.Train(3); // Try to pick a Bloody Herb. else if (args.CollectData.Target.Contains("/sunlightherb")) skill.Train(5); // Try to pick a Sunlight Herb. if (args.Success) { if (args.ItemId == 51104) skill.Train(2); // Succeed at picking a Base Herb. else if (args.ItemId == 51101) skill.Train(4); // Succeed at picking a Bloody Herb. else if (args.ItemId == 51103) skill.Train(6); // Succeed at picking a Sunlight Herb. } } else if (skill.Info.Rank == SkillRank.RE || skill.Info.Rank == SkillRank.RD) { if (args.CollectData.Target.Contains("/bloodyherb")) skill.Train(2); // Try to pick a Bloody Herb. else if (args.CollectData.Target.Contains("/sunlightherb")) skill.Train(4); // Try to pick a Sunlight Herb. else if (args.CollectData.Target.Contains("/manaherb")) skill.Train(6); // Try to pick a Mana Herb. else if (args.CollectData.Target.Contains("/goldherb") && skill.Info.Rank == SkillRank.RD) skill.Train(8); // Try to pick a Golden Herb. if (args.Success) { if (args.ItemId == 51104) skill.Train(1); // Succeed at picking a Base Herb. else if (args.ItemId == 51101) skill.Train(3); // Succeed at picking a Bloody Herb. else if (args.ItemId == 51103) skill.Train(5); // Succeed at picking a Sunlight Herb. else if (args.ItemId == 51102) skill.Train(7); // Succeed at picking a Mana Herb. } } else if (skill.Info.Rank == SkillRank.RC) { if (args.Success) { if (args.ItemId == 51104) skill.Train(1); // Succeed at picking a Base Herb. else if (args.ItemId == 51101) skill.Train(2); // Succeed at picking a Bloody Herb. else if (args.ItemId == 51103) skill.Train(3); // Succeed at picking a Sunlight Herb. else if (args.ItemId == 51102) skill.Train(4); // Succeed at picking a Mana Herb. else if (args.ItemId == 51105) skill.Train(5); // Succeed at picking a Golden Herb. else if (args.ItemId == 51107) skill.Train(6); // Succeed at picking a White Herb. } } else if (skill.Info.Rank == SkillRank.RB) { if (args.CollectData.Target.Contains("/sunlightherb")) skill.Train(1); // Try to pick a Sunlight Herb. else if (args.CollectData.Target.Contains("/manaherb")) skill.Train(3); // Try to pick a Mana Herb. else if (args.CollectData.Target.Contains("/goldherb")) skill.Train(5); // Try to pick a Golden Herb. if (args.Success) { if (args.ItemId == 51103) skill.Train(2); // Succeed at picking a Sunlight Herb. else if (args.ItemId == 51102) skill.Train(4); // Succeed at picking a Mana Herb. else if (args.ItemId == 51105) skill.Train(6); // Succeed at picking a Golden Herb. else if (args.ItemId == 51107) skill.Train(7); // Succeed at picking a White Herb. } } else if (skill.Info.Rank == SkillRank.RA) { if (args.CollectData.Target.Contains("/manaherb")) skill.Train(2); // Try to pick a Mana Herb. else if (args.CollectData.Target.Contains("/goldherb")) skill.Train(4); // Try to pick a Golden Herb. if (args.Success) { if (args.ItemId == 51103) skill.Train(1); // Succeed at picking a Sunlight Herb. else if (args.ItemId == 51102) skill.Train(3); // Succeed at picking a Mana Herb. else if (args.ItemId == 51105) skill.Train(5); // Succeed at picking a Golden Herb. else if (args.ItemId == 51107) skill.Train(6); // Succeed at picking a White Herb. } } else if (skill.Info.Rank >= SkillRank.R9 && skill.Info.Rank <= SkillRank.R6) { if (args.CollectData.Target.Contains("/orangeherb")) skill.Train(5); // Try to pick a Mandrake. if (args.Success) { if (args.ItemId == 51103) skill.Train(1); // Succeed at picking a Sunlight Herb. else if (args.ItemId == 51102) skill.Train(2); // Succeed at picking a Mana Herb. else if (args.ItemId == 51105) skill.Train(3); // Succeed at picking a Golden Herb. else if (args.ItemId == 51107) skill.Train(4); // Succeed at picking a White Herb. else if (args.ItemId == 51110) skill.Train(6); // Succeed at picking a Mandrake. } } else if (skill.Info.Rank == SkillRank.R5 || skill.Info.Rank == SkillRank.R4) { if (args.CollectData.Target.Contains("/ivoryherb")) skill.Train(4); // Try to pick an Antidote Herb. if (args.Success) { if (args.ItemId == 51102) skill.Train(1); // Succeed at picking a Mana Herb. else if (args.ItemId == 51105) skill.Train(2); // Succeed at picking a Golden Herb. else if (args.ItemId == 51110) skill.Train(3); // Succeed at picking a Mandrake. else if (args.ItemId == 51108) skill.Train(5); // Succeed at picking an Antidote Herb. } } else if (skill.Info.Rank >= SkillRank.R3 && skill.Info.Rank <= SkillRank.R1) { if (args.CollectData.Target.Contains("/purpleherb")) skill.Train(3); // Try to pick a Poison Herb. if (args.Success) { if (args.ItemId == 51105) skill.Train(1); // Succeed at picking a Golden Herb. else if (args.ItemId == 51110) skill.Train(2); // Succeed at picking a Mandrake. else if (args.ItemId == 51109) skill.Train(4); // Succeed at picking a Poison Herb. } } }
/// <summary> /// Updates gathering objectives. /// </summary> /// <param name="args"></param> private void OnCreatureGathered(CollectEventArgs args) { var quests = args.Creature.Quests.GetAllIncomplete(this.Id); foreach (var quest in quests) { var progress = quest.CurrentObjectiveOrLast; if (progress == null) return; var objective = this.Objectives[progress.Ident]; if (objective == null || objective.Type != ObjectiveType.Gather) return; var gatherObjective = (objective as QuestObjectiveGather); if (!progress.Done && args.Success && args.ItemId == gatherObjective.ItemId) { progress.Count++; if (progress.Count == gatherObjective.Amount) quest.SetDone(progress.Ident); Send.QuestUpdate(args.Creature, quest); } } }
/// <summary> /// Raised when creature collects something, handles gathering conditions. /// </summary> /// <param name="args"></param> private void OnCreatureCollected(CollectEventArgs args) { var skill = args.Creature.Skills.Get(SkillId.Herbalism); if (skill == null) { return; } if (skill.Info.Rank == SkillRank.Novice) { if (args.CollectData.Target.Contains("/baseherb")) { skill.Train(1); // Try to pick a Base Herb. } if (args.ItemId == 51104) { if (args.Success) { skill.Train(2); // Succeed at picking a Base Herb. } } } else if (skill.Info.Rank == SkillRank.RF) { if (args.CollectData.Target.Contains("/baseherb")) { skill.Train(1); // Try to pick a Base Herb. } else if (args.CollectData.Target.Contains("/bloodyherb")) { skill.Train(3); // Try to pick a Bloody Herb. } else if (args.CollectData.Target.Contains("/sunlightherb")) { skill.Train(5); // Try to pick a Sunlight Herb. } if (args.Success) { if (args.ItemId == 51104) { skill.Train(2); // Succeed at picking a Base Herb. } else if (args.ItemId == 51101) { skill.Train(4); // Succeed at picking a Bloody Herb. } else if (args.ItemId == 51103) { skill.Train(6); // Succeed at picking a Sunlight Herb. } } } else if (skill.Info.Rank == SkillRank.RE || skill.Info.Rank == SkillRank.RD) { if (args.CollectData.Target.Contains("/bloodyherb")) { skill.Train(2); // Try to pick a Bloody Herb. } else if (args.CollectData.Target.Contains("/sunlightherb")) { skill.Train(4); // Try to pick a Sunlight Herb. } else if (args.CollectData.Target.Contains("/manaherb")) { skill.Train(6); // Try to pick a Mana Herb. } else if (args.CollectData.Target.Contains("/goldherb") && skill.Info.Rank == SkillRank.RD) { skill.Train(8); // Try to pick a Golden Herb. } if (args.Success) { if (args.ItemId == 51104) { skill.Train(1); // Succeed at picking a Base Herb. } else if (args.ItemId == 51101) { skill.Train(3); // Succeed at picking a Bloody Herb. } else if (args.ItemId == 51103) { skill.Train(5); // Succeed at picking a Sunlight Herb. } else if (args.ItemId == 51102) { skill.Train(7); // Succeed at picking a Mana Herb. } } } else if (skill.Info.Rank == SkillRank.RC) { if (args.Success) { if (args.ItemId == 51104) { skill.Train(1); // Succeed at picking a Base Herb. } else if (args.ItemId == 51101) { skill.Train(2); // Succeed at picking a Bloody Herb. } else if (args.ItemId == 51103) { skill.Train(3); // Succeed at picking a Sunlight Herb. } else if (args.ItemId == 51102) { skill.Train(4); // Succeed at picking a Mana Herb. } else if (args.ItemId == 51105) { skill.Train(5); // Succeed at picking a Golden Herb. } else if (args.ItemId == 51107) { skill.Train(6); // Succeed at picking a White Herb. } } } else if (skill.Info.Rank == SkillRank.RB) { if (args.CollectData.Target.Contains("/sunlightherb")) { skill.Train(1); // Try to pick a Sunlight Herb. } else if (args.CollectData.Target.Contains("/manaherb")) { skill.Train(3); // Try to pick a Mana Herb. } else if (args.CollectData.Target.Contains("/goldherb")) { skill.Train(5); // Try to pick a Golden Herb. } if (args.Success) { if (args.ItemId == 51103) { skill.Train(2); // Succeed at picking a Sunlight Herb. } else if (args.ItemId == 51102) { skill.Train(4); // Succeed at picking a Mana Herb. } else if (args.ItemId == 51105) { skill.Train(6); // Succeed at picking a Golden Herb. } else if (args.ItemId == 51107) { skill.Train(7); // Succeed at picking a White Herb. } } } else if (skill.Info.Rank == SkillRank.RA) { if (args.CollectData.Target.Contains("/manaherb")) { skill.Train(2); // Try to pick a Mana Herb. } else if (args.CollectData.Target.Contains("/goldherb")) { skill.Train(4); // Try to pick a Golden Herb. } if (args.Success) { if (args.ItemId == 51103) { skill.Train(1); // Succeed at picking a Sunlight Herb. } else if (args.ItemId == 51102) { skill.Train(3); // Succeed at picking a Mana Herb. } else if (args.ItemId == 51105) { skill.Train(5); // Succeed at picking a Golden Herb. } else if (args.ItemId == 51107) { skill.Train(6); // Succeed at picking a White Herb. } } } else if (skill.Info.Rank >= SkillRank.R9 && skill.Info.Rank <= SkillRank.R6) { if (args.CollectData.Target.Contains("/orangeherb")) { skill.Train(5); // Try to pick a Mandrake. } if (args.Success) { if (args.ItemId == 51103) { skill.Train(1); // Succeed at picking a Sunlight Herb. } else if (args.ItemId == 51102) { skill.Train(2); // Succeed at picking a Mana Herb. } else if (args.ItemId == 51105) { skill.Train(3); // Succeed at picking a Golden Herb. } else if (args.ItemId == 51107) { skill.Train(4); // Succeed at picking a White Herb. } else if (args.ItemId == 51110) { skill.Train(6); // Succeed at picking a Mandrake. } } } else if (skill.Info.Rank == SkillRank.R5 || skill.Info.Rank == SkillRank.R4) { if (args.CollectData.Target.Contains("/ivoryherb")) { skill.Train(4); // Try to pick an Antidote Herb. } if (args.Success) { if (args.ItemId == 51102) { skill.Train(1); // Succeed at picking a Mana Herb. } else if (args.ItemId == 51105) { skill.Train(2); // Succeed at picking a Golden Herb. } else if (args.ItemId == 51110) { skill.Train(3); // Succeed at picking a Mandrake. } else if (args.ItemId == 51108) { skill.Train(5); // Succeed at picking an Antidote Herb. } } } else if (skill.Info.Rank >= SkillRank.R3 && skill.Info.Rank <= SkillRank.R1) { if (args.CollectData.Target.Contains("/purpleherb")) { skill.Train(3); // Try to pick a Poison Herb. } if (args.Success) { if (args.ItemId == 51105) { skill.Train(1); // Succeed at picking a Golden Herb. } else if (args.ItemId == 51110) { skill.Train(2); // Succeed at picking a Mandrake. } else if (args.ItemId == 51109) { skill.Train(4); // Succeed at picking a Poison Herb. } } } }
// 当物资被别人采集完后 private void Finish(object obj, CollectEventArgs e) { _FSM.SetState(new NPCFindCollect(_FSM)); }