示例#1
0
    /// <summary>
    /// 判断某一skilleffect是否是有害的.
    /// </summary>
    /// <param name="type">skilleffect的类型</param>
    /// <param name="resID">skilleffect的资源ID</param>
    /// <returns></returns>
    public static bool IsHarmfulEffect(SkillEffectType type, uint resID)
    {
        switch (type)
        {
        case SkillEffectType.Buff:
            SkillBuffTableItem resBuff = DataManager.BuffTable[resID] as SkillBuffTableItem;
            return(resBuff == null || resBuff.harmful);

        case SkillEffectType.Impact:
            SkillImpactTableItem resImpact = DataManager.ImpactTable[resID] as SkillImpactTableItem;
            return(resImpact == null || resImpact.harmful);

        case SkillEffectType.Displacement:
            SkillDisplacementTableItem resDisplacement = DataManager.DisplacementTable[resID] as SkillDisplacementTableItem;
            return(resDisplacement == null || resDisplacement.harmful);

        case SkillEffectType.Spasticity:
            return(true);

        default:
            ErrorHandler.Parse(ErrorCode.LogicError, "invalid skill effect type: " + type);
            break;
        }

        return(true);
    }
示例#2
0
    private bool checkImpact()
    {
        DataType              myName = DataType.DATA_SKILL_IMPACT;
        const string          onlyHarmfulAvailable = "该列只对有害的impact有效, 无害的需要填入0";
        IDictionaryEnumerator itr = DataManager.ImpactTable.GetEnumerator();

        while (itr.MoveNext())
        {
            SkillImpactTableItem item = itr.Value as SkillImpactTableItem;

            if (!item.harmful)
            {
                if (!checkParam(item.damageAddPerMile == 0, myName, item.resID, "附加距离伤害",
                                onlyHarmfulAvailable))
                {
                    return(false);
                }

                if (!checkParam(item.damageAttrPercent == 0, myName, item.resID, "伤害属性百分比",
                                onlyHarmfulAvailable))
                {
                    return(false);
                }
            }
            else
            {
                if (!checkParam(item.impactDamageType < ImpactDamageType.Count, myName, item.resID, "伤害类型"))
                {
                    return(false);
                }
            }

            if (!checkParam(item.shakeCameraDuration != uint.MaxValue, myName, item.resID, "无效的震屏时间"))
            {
                return(false);
            }

            if (!checkParam(item.damageAttrPercent >= 0f, myName, item.resID, "伤害属性百分比", "伤害属性百分比 ≥ 0"))
            {
                return(false);
            }

            if (item._3DEffectID != uint.MaxValue &&
                !checkLink(myName, item.resID, DataType.DATA_EFFECT, item._3DEffectID))
            {
                return(false);
            }
        }
//      foreach (int key in DataManager.ImpactTable.Keys)
//      {
//
//      }

        return(true);
    }
示例#3
0
    public override bool Initialize(SkillEffectInitParam param)
    {
        SkillImpactInitParam initParam = param as SkillImpactInitParam;

        mImpactRes = initParam.impactResource;

        if (mImpactRes == null)
        {
            return(false);
        }

        return(base.Initialize(param));
    }