/// <summary> /// 为target添加技能效果. /// skillEffectResID为skilleffect.txt的资源ID. /// </summary> public static ErrorCode AddSkillEffectByResource(AttackerAttr attackerAttr, BattleUnit target, uint skillEffectResID) { if (skillEffectResID == uint.MaxValue) { return(ErrorCode.Succeeded); } SkillEffectTableItem effectRes = DataManager.SkillEffectTable[skillEffectResID] as SkillEffectTableItem; if (effectRes == null) { SkillUtilities.ResourceNotFound("skilleffect", skillEffectResID); return(ErrorCode.ConfigError); } System.Type T = effectRes.GetType(); for (uint i = 0; i < SkillEffectTableItem.SkillEffectCount; ++i) { SkillEffectItem item = effectRes.items[i]; if (item.effectType == SkillEffectType.Invalid || item.effectID == uint.MaxValue) { break; } ErrorHandler.Parse( target.AddSkillEffect(attackerAttr, item.effectType, item.effectID), "in AddSkillEffectByResource" ); } return(ErrorCode.Succeeded); }
private bool checkSkillEffect() { DataType myName = DataType.DATA_SKILL_EFFECT; IDictionaryEnumerator itr = DataManager.SkillEffectTable.GetEnumerator(); while (itr.MoveNext()) { SkillEffectTableItem item = itr.Value as SkillEffectTableItem; for (uint i = 0; i < SkillEffectTableItem.SkillEffectCount; ++i) { SkillEffectItem subItem = item.items[i]; SkillEffectType type = subItem.effectType; uint resId = subItem.effectID; switch (type) { case SkillEffectType.Buff: if (!checkLink(myName, item.resID, DataType.DATA_SKILL_BUFF, resId)) { return(false); } break; case SkillEffectType.Displacement: if (!checkLink(myName, item.resID, DataType.DATA_SKILL_DISPLACEMENT, resId)) { return(false); } break; case SkillEffectType.Impact: if (!checkLink(myName, item.resID, DataType.DATA_SKILL_IMPACT, resId)) { return(false); } break; case SkillEffectType.Spasticity: if (!checkLink(myName, item.resID, DataType.DATA_SKILL_SPASTICITY, resId)) { return(false); } break; case SkillEffectType.Invalid: break; default: checkParam(false, myName, item.resID, "效果类型"); return(false); } } } // foreach (int key in DataManager.SkillEffectTable.Keys) // { // // } return(true); }