/// <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="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 }
/// <summary> /// /// </summary> /// <param name="character"></param> public void AbortHarvest() { Activate(); m_currentHarvester = null; m_currentJob = null; base.RemoveTimer(m_harvestTimer); }
/// <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="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 }
/// <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)); }
/// <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)); }
/// <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); }