Esempio n. 1
0
        /// <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;
            }
        }
Esempio n. 2
0
        /// <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];
            }
        }
Esempio n. 3
0
        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);
        }