public BuffElement(Msg_NpcBuff_Body _body, BuffProcessor _owner, bool _effect) { m_CurId = s_Index++; m_Owner = _owner.Owner; m_Processor = _owner; m_BuffType = _body.type_; m_Activated = _effect; int effectIdx = int.MaxValue; if(BuffBaseMgr.s_MonsterSkillIndexRange_Min <= _body.skillTableIdx_ && _body.skillTableIdx_ <= BuffBaseMgr.s_MonsterSkillIndexRange_Max) { #region - set skill name - Tbl_MonsterSkill_Record skillRecord = AsTableManager.Instance.GetTbl_MonsterSkill_Record(_body.skillTableIdx_); SetSkillData(skillRecord); #endregion // Tbl_MonsterSkillLevel_Record skill = AsTableManager.Instance.GetTbl_MonsterSkillLevel_Record(_body.skillLevel_, _body.skillTableIdx_); Tbl_MonsterSkillLevel_Record skill = AsTableManager.Instance.GetTbl_MonsterSkillLevel_Record(_body.skillLevelTableIdx_); if( null == skill ) { AsUtil.ShutDown ( "BuffProcessor::BuffElement()[ (GetTbl_MonsterSkillLevel_Record) null == skill ] skill id : " + _body.skillTableIdx_ + " skill level : " + _body.skillLevel_ ); return; } effectIdx = skill.listSkillLevelPotency[_body.potencyIdx_].Potency_EffectIndex; m_SkillLevelPotency = skill.listSkillLevelPotency[_body.potencyIdx_]; } else { #region - set skill name - Tbl_Skill_Record skillRecord = AsTableManager.Instance.GetTbl_Skill_Record(_body.skillTableIdx_); SetSkillData(skillRecord); #endregion Tbl_SkillLevel_Record skill = null; if(_body.chargeStep_ == int.MaxValue) { skill = AsTableManager.Instance.GetTbl_SkillLevel_Record(_body.skillLevel_, _body.skillTableIdx_); } else { skill = AsTableManager.Instance.GetTbl_SkillLevel_Record(_body.skillLevel_, _body.skillTableIdx_, _body.chargeStep_); } if( null == skill ) { AsUtil.ShutDown ( "BuffProcessor::BuffElement()[ (GetTbl_SkillLevel_Record) null == skill ] skill id : " + _body.skillTableIdx_ + " skill level : " + _body.skillLevel_ ); return; } effectIdx = skill.listSkillLevelPotency[_body.potencyIdx_].Potency_EffectIndex; m_SkillLevelPotency = skill.listSkillLevelPotency[_body.potencyIdx_]; } m_SkillIdx = _body.skillTableIdx_; m_PotencyIdx = _body.potencyIdx_; m_Record = AsTableManager.Instance.GetTbl_SkillPotencyEffect_Record(effectIdx); }
public void SetBuff(Msg_NpcBuff_Body _buff, bool _effect) { m_Buff.AddBuff(_buff, _effect); }
public void AddBuff(Msg_NpcBuff_Body _buff, bool _effect) { #region - init dictionary - if(m_dicBuff.ContainsKey(_buff.skillTableIdx_) == false) m_dicBuff.Add(_buff.skillTableIdx_, new Dictionary<int, BuffElement>()); if(m_dicBuff[_buff.skillTableIdx_].ContainsKey(_buff.potencyIdx_) == true) { m_dicBuff[_buff.skillTableIdx_][_buff.potencyIdx_].Release(); m_dicBuff[_buff.skillTableIdx_].Remove(_buff.potencyIdx_); } #endregion BuffElement buff = new BuffElement(_buff, this, _effect); m_dicBuff[_buff.skillTableIdx_].Add(_buff.potencyIdx_, buff); m_mdicBuff.Add(_buff.type_, buff); if(m_ModelLoaded == true) buff.Generate(); ResurrectionPenaltyProc( buff); }
public Msg_NpcBuff( body1_SC_NPC_BUFF _buff) { m_MessageType = eMessageType.NPC_BUFF; npcIdx_ = _buff.nNpcIdx; effect_ = _buff.bEffect; foreach( body2_SC_NPC_BUFF node in _buff.body) { Msg_NpcBuff_Body body = new Msg_NpcBuff_Body(); body.update_ = node.bUpdate; body.skillTableIdx_ = node.nSkillTableIdx; body.skillLevelTableIdx_ = node.nSkillLevelTableIdx; body.skillLevel_ = node.nSkillLevel; body.chargeStep_ = node.nChargeStep; body.potencyIdx_ = node.nPotencyIdx; body.type_ = node.eType; body.duration_ = node.nDuration; body.serverData = node; body_.Add( body); } }