/// <summary> /// Reads known tags from TagMapEntry and set the proper values. /// </summary> protected virtual void ReadTags() { if (this.Tags == null) { return; } // load scale from actor data and override it with marker tags if one is set this.Scale = ActorData.TagMap.ContainsKey(ActorKeys.Scale) ? ActorData.TagMap[ActorKeys.Scale] : 1; this.Scale = Tags.ContainsKey(MarkerKeys.Scale) ? Tags[MarkerKeys.Scale] : this.Scale; if (Tags.ContainsKey(MarkerKeys.QuestRange)) { int snoQuestRange = Tags[MarkerKeys.QuestRange].Id; if (Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.QuestRange].ContainsKey(snoQuestRange)) { _questRange = Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.QuestRange][snoQuestRange].Data as Mooege.Common.MPQ.FileFormats.QuestRange; } else { Logger.Warn("Actor {0} Dyn ID {1} is tagged with unknown QuestRange {2}", NameSNOId, DynamicID, snoQuestRange); } } if (Tags.ContainsKey(MarkerKeys.ConversationList)) { int snoConversationList = Tags[MarkerKeys.ConversationList].Id; Logger.Debug(" (ReadTags) actor {0} dyniD {2} has a conversation list {1}", NameSNOId, snoConversationList, DynamicID); if (Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.ConversationList].ContainsKey(snoConversationList)) { ConversationList = Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.ConversationList][snoConversationList].Data as Mooege.Common.MPQ.FileFormats.ConversationList; } else { Logger.Warn("Actor {0} Dyn ID {1} is tagged with unknown ConversationList {2}", NameSNOId, DynamicID, snoConversationList); // ConversationList = null; // erekose this is bad but at least it can be tracked and not worse than failed "as" cast :p } } if (this.Tags.ContainsKey(MarkerKeys.TriggeredConversation)) { snoTriggeredConversation = Tags[MarkerKeys.TriggeredConversation].Id; } }
/// <summary> /// Reads known tags from TagMapEntry and set the proper values. /// </summary> protected virtual void ReadTags() { if (this.Tags == null) { return; } // load scale from actor data and override it with marker tags if one is set this.Scale = ActorData.TagMap.ContainsKey(ActorKeys.Scale) ? ActorData.TagMap[ActorKeys.Scale] : 1; this.Scale = Tags.ContainsKey(MarkerKeys.Scale) ? Tags[MarkerKeys.Scale] : this.Scale; if (Tags.ContainsKey(MarkerKeys.QuestRange)) { int snoQuestRange = Tags[MarkerKeys.QuestRange].Id; if (Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.QuestRange].ContainsKey(snoQuestRange)) { _questRange = Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.QuestRange][snoQuestRange].Data as Mooege.Common.MPQ.FileFormats.QuestRange; } //else Logger.Warn("Actor {0} is tagged with unknown QuestRange {1}", SNOId, snoQuestRange); } if (Tags.ContainsKey(MarkerKeys.ConversationList)) { int snoConversationList = Tags[MarkerKeys.ConversationList].Id; if (Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.ConversationList].ContainsKey(snoConversationList)) { ConversationList = Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.ConversationList][snoConversationList].Data as Mooege.Common.MPQ.FileFormats.ConversationList; } //else Logger.Warn("Actor {0} is tagged with unknown ConversationList {1}", SNOId, snoConversationList); } if (this.Tags.ContainsKey(MarkerKeys.TriggeredConversation)) { snoTriggeredConversation = Tags[MarkerKeys.TriggeredConversation].Id; } // Actor group if (this.Tags.ContainsKey(MarkerKeys.Group1Hash)) { this.Group1Hash = Tags[MarkerKeys.Group1Hash]; } if (this.Tags.ContainsKey(MarkerKeys.Group2Hash)) { this.Group2Hash = Tags[MarkerKeys.Group2Hash]; } }
public bool IsInQuestRange(Mooege.Common.MPQ.FileFormats.QuestRange range) { /* I assume, -1 for start sno means no starting condition and -1 for end sno means no ending of range * The field for the step id is sometimes set to negative values (maybe there are negative step id, -1 is maybe the unassignedstep) * but also set when no questID is -1. I have no idea what that means. - farmy */ bool started = false; bool ended = false; if (range.Start.SNOQuest == -1 || range.Start.StepID == -1) { started = true; } else { if (Quests.ContainsKey(range.Start.SNOQuest)) { if (Quests[range.Start.SNOQuest].HasStepCompleted(range.Start.StepID) || Quests[range.Start.SNOQuest].CurrentStep.QuestStepID == range.Start.StepID) // rumford conversation needs current step { started = true; } } //else logger.Warn("QuestRange {0} references unknown quest {1}", range.Header.SNOId, range.Start.SNOQuest); } if (range.End.SNOQuest == -1 || range.End.StepID < 0) { ended = false; } else { if (Quests.ContainsKey(range.End.SNOQuest)) { if (Quests[range.End.SNOQuest].HasStepCompleted(range.End.StepID)) { ended = true; } } //else logger.Warn("QuestRange {0} references unknown quest {1}", range.Header.SNOId, range.End.SNOQuest); } return(started && !ended); }