Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="character"></param>
        /// <param name="skill"></param>
        private void Harvest(CharacterEntity character, SkillIdEnum skill)
        {
            if (!character.CanGameAction(GameActionTypeEnum.SKILL_HARVEST))
            {
                character.Dispatch(WorldMessage.IM_ERROR_MESSAGE(InformationEnum.ERROR_YOU_ARE_AWAY));
                return;
            }

            if (!IsActive)
            {
                return;
            }

            m_currentJob = character.CharacterJobs.GetJob(skill);
            if (m_currentJob == null)
            {
                return;
            }

            var duration = m_currentJob.HarvestDuration;

            m_quantityFarmed = Util.Next(m_currentJob.HarvestMinQuantity, m_currentJob.HarvestMaxQuantity);

            character.HarvestStart(this, duration);
            m_currentHarvester = character;

            Deactivate();

            m_harvestTimer = base.AddTimer(duration, StopHarvest, true);
        }
Пример #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="message"></param>
 public virtual void SerializeAs_SkillListMessage(CharacterJobDAO job, StringBuilder message)
 {
     message.Append((int)Id).Append('~');
     message.Append("").Append('~'); // param1
     message.Append("").Append('~'); // param2
     message.Append("").Append('~'); // param3
     message.Append("");             // param4
 }
Пример #3
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="message"></param>
 public virtual void SerializeAs_SkillListMessage(CharacterJobDAO job, StringBuilder message)
 {
     message.Append((int)Id).Append('~');
     message.Append("").Append('~'); // param1
     message.Append("").Append('~'); // param2
     message.Append("").Append('~'); // param3
     message.Append(""); // param4
 }
Пример #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="character"></param>
        public void AbortHarvest()
        {
            Activate();

            m_currentHarvester = null;
            m_currentJob       = null;

            base.RemoveTimer(m_harvestTimer);
        }
Пример #5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="message"></param>
 public void SerializeAs_SkillListMessage(CharacterJobDAO job, StringBuilder message)
 {
     message.Append((int)Id).Append(';');
     foreach (var skill in m_skills)
     {
         if (skill.RequiredLevel <= job.Level)
         {
             skill.SerializeAs_SkillListMessage(job, message);
             message.Append(',');
         }
     }
     if (m_skills.Count > 0)
     {
         message.Remove(message.Length - 1, 1);
     }
     message.Append('|');
 }
Пример #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="message"></param>
        public override void SerializeAs_SkillListMessage(CharacterJobDAO job, StringBuilder message)
        {
            var maxCase = job.CraftMaxCase;

            if (maxCase > 2)
            {
                message.Append((int)Id).Append('~');
                message.Append(maxCase - 2).Append('~'); // param1
                message.Append("").Append('~');          // param2
                message.Append("").Append('~');          // param3
                message.Append("100,");                  // param4
            }
            message.Append((int)Id).Append('~');
            message.Append(maxCase).Append('~');              // param1
            message.Append("").Append('~');                   // param2
            message.Append("").Append('~');                   // param3
            message.Append(job.CraftSuccessPercent(maxCase)); // param4
        }
Пример #7
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="experience"></param>
        public void AddExperience(CharacterJobDAO job, long experience)
        {
            // rate
            experience = (long)(experience * WorldConfig.RATE_XP);

            job.Experience += experience;

            var currentLevel = job.Level;

            while (job.Experience > job.ExperienceFloorNext)
                job.Level++;

            if (job.Level != currentLevel)
            {
                base.Dispatch(WorldMessage.JOB_NEW_LEVEL(job.JobId, job.Level));
                base.Dispatch(WorldMessage.JOB_SKILL(job));
            }

            base.Dispatch(WorldMessage.IM_INFO_MESSAGE(InformationEnum.INFO_WON_JOB_XP, experience, job.JobId));
            base.Dispatch(WorldMessage.JOB_XP(job));
        }
Пример #8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="experience"></param>
        public void AddExperience(CharacterJobDAO job, long experience)
        {
            // rate
            experience = (long)(experience * WorldConfig.RATE_XP);

            job.Experience += experience;

            var currentLevel = job.Level;

            while (job.Experience > job.ExperienceFloorNext)
            {
                job.Level++;
            }

            if (job.Level != currentLevel)
            {
                base.Dispatch(WorldMessage.JOB_NEW_LEVEL(job.JobId, job.Level));
                base.Dispatch(WorldMessage.JOB_SKILL(job));
            }

            base.Dispatch(WorldMessage.IM_INFO_MESSAGE(InformationEnum.INFO_WON_JOB_XP, experience, job.JobId));
            base.Dispatch(WorldMessage.JOB_XP(job));
        }
Пример #9
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="message"></param>
 public void SerializeAs_SkillListMessage(CharacterJobDAO job, StringBuilder message)
 {
     message.Append((int)Id).Append(';');
     foreach(var skill in m_skills)
     {
         if(skill.RequiredLevel <= job.Level)
         {
             skill.SerializeAs_SkillListMessage(job, message);
             message.Append(',');
         }
     }
     if(m_skills.Count > 0)
         message.Remove(message.Length - 1, 1);
     message.Append('|');
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="character"></param>
        /// <param name="skill"></param>
        private void Harvest(CharacterEntity character, SkillIdEnum skill)
        {
            if(!character.CanGameAction(GameActionTypeEnum.SKILL_HARVEST))
            {
                character.Dispatch(WorldMessage.IM_ERROR_MESSAGE(InformationEnum.ERROR_YOU_ARE_AWAY));
                return;
            }

            if (!IsActive)
                return;

            m_currentJob = character.CharacterJobs.GetJob(skill);
            if (m_currentJob == null)
                return;

            var duration = m_currentJob.HarvestDuration;
            m_quantityFarmed = Util.Next(m_currentJob.HarvestMinQuantity, m_currentJob.HarvestMaxQuantity);

            character.HarvestStart(this, duration);
            m_currentHarvester = character;

            Deactivate();

            m_harvestTimer = base.AddTimer(duration, StopHarvest, true);
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="character"></param>
        public void AbortHarvest()
        {
            Activate();

            m_currentHarvester = null;
            m_currentJob = null;

            base.RemoveTimer(m_harvestTimer);
        }