public override bool Initialize(SkillEffectInitParam param) { SkillBuffInitParam buffInit = param as SkillBuffInitParam; mBuffRes = buffInit.buffResource; return(mBuffRes != null && base.Initialize(param)); }
/// <summary> /// 添加技能效果. /// </summary> /// <param name="attackerAttr">添加者的属性</param> /// <param name="effectManager">被添加者的技能效果控制器</param> /// <param name="type">效果类型</param> /// <param name="resID">效果ID</param> /// <returns></returns> public static ErrorCode StartSkillEffect(AttackerAttr attackerAttr, SkillEffectManager effectManager, SkillEffectType type, uint resID ) { if (effectManager == null) { return(ErrorCode.LogicError); } SkillEffect effect = null; SkillEffectInitParam param = null; switch (type) { case SkillEffectType.Buff: effect = effectManager.FindSkillEffectByPredicate(new SkillUtilities.FindBuffByResource(resID)); // 存在相同的buff, 进行叠加. if (effect != null) { return((effect as SkillBuff).AddStack()); } // 不存在相同的buff, 创建buff. param = new SkillBuffInitParam(effectManager.Owner, attackerAttr, resID); // 移除所有与新buff互斥的效果. uint mutex = ((SkillBuffInitParam)param).buffResource.mutex; if (mutex != uint.MaxValue) { effectManager.ForEverySkillEffect(new SkillUtilities.KillMutuallyExclusiveSkillBuff(mutex)); } break; case SkillEffectType.Impact: // 创建impact. param = new SkillImpactInitParam(effectManager.Owner, attackerAttr, resID); break; default: ErrorHandler.Parse(ErrorCode.ConfigError, "invalid skilleffect type " + (uint)type); break; } return(effectManager.CreateSkillEffect(param)); }