예제 #1
0
    public override void Exec(IResultControl control)
    {
        Actor actor = ActorManager.Singleton.Lookup(TargetID);

        if (null == actor)
        {
            return;
        }
        for (int i = 0; i < BuffIDList.Length; ++i)
        {
            if (BuffIDIsRun[i])
            {
                continue;
            }
            BuffInfo info = GameTable.BuffTableAsset.Lookup((int)BuffIDList[i]);
            if (null == info)
            {
                continue;
            }
            if (info.BuffType == (int)BuffInfo.ENBuffType.Harmful)
            {//有害buff
                float r          = UnityEngine.Random.Range(0.0f, 1.0f);
                float curPercent = info.BuffPercent - actor.Props.GetProperty_Float(ENProperty.FResist);
                //Debug.LogWarning("add buff id==" + m_buffID.ToString() + "  buff value=" + curPercent.ToString() + "target id = " + actor.ID.ToString());
                if (curPercent <= 0.0f)
                {//被抗性抵消,buff没有添加
                    continue;
                }
                if (r > curPercent)
                {//buff没有添加
                    continue;
                }
                if (actor.Type == ActorType.enMain)
                {
                    MainPlayer player = actor as MainPlayer;
                    player.Damgaed(ActorManager.Singleton.Lookup(SourceID));
                }
            }
            actor.MyBuffControl.RemoveBuff(info.ID, control);
            actor.MyBuffControl.AddBuff(info.ID, SourceID, BuffModifyTimeList[i], false);
        }
    }