Beispiel #1
0
	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);
	}
Beispiel #2
0
	public void SetBuff(Msg_NpcBuff_Body _buff, bool _effect)
	{
		m_Buff.AddBuff(_buff, _effect);
	}
Beispiel #3
0
	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);
		}
	}