protected override void onMutex(Unit unit, TBBuff buff, ref bool reject) { if (reject = onEvent(EvtMutex, buff)) { return; } base.onMutex(unit, buff, ref reject); }
protected virtual void onMutex(Unit unit, TBBuff buff, ref bool reject) { if ((buff.kind & mTB.mutex) == 0) { return; } if (buff.priority >= mTB.priority) { //谁优先级高保留谁 mState = 0; } else { reject = true; } }
//creator是buff的创建者,用于计算动态伤害参数 public void addBuff(int buffTID, Unit creator = null) { Debug.Assert(mUnit.isServer); Log.i("addBuff id=" + buffTID, Log.Tag.Skill); TBBuff tb = TableMgr.single.GetData <TBBuff>(buffTID); if (tb == null) { return; } bool isReject = false; if (onMutex != null) { onMutex(mUnit, tb, ref isReject); } if (isReject) { return; } //挂载buff Buff buff = null; switch (tb.type) { case 0: buff = new LuaBuff(); break; default: return; } buff.mTB = tb; mBuffs.Add(buff); buff.init(mUnit); addBuff(buff); if (tb.mutex != 0) { onMutex += buff.onMutex; } }
protected override void onEvent(int evt, object param) { base.onEvent(evt, param); switch (evt) { case (int)UnitEvent.BuffAdd: { TBBuff tb = TableMgr.single.GetData <TBBuff> ((short)param); //headInfo.mName.text += tb.flag; return; } case (int)UnitEvent.BuffDec: { TBBuff tb = TableMgr.single.GetData <TBBuff> ((short)param); //headInfo.mName.text = headInfo.mName.text.Replace(tb.flag,""); return; } case (int)UnitEvent.AttrChanged: onAttrChange((AttrPlugin.EventData)param); return; } }
public GameSkillBuff(GameSkill gs) { mTB = new TBBuff(); mGS = gs; }