protected virtual bool AddBuff(ISkill srcSkill, ISkillPlayer caster, ISkillOwner target, bool pureFlag) { if (!pureFlag) { if (BoostUtil.IfAntiDebuff(this, srcSkill, target, true, (int)EnumBoostRootType.AntiPropDebuff)) { return(true); } } if (this.ExecType == EnumBuffExec.MustHit) { int rate = this.Rate; int maxRate = SkillDefines.MAXStorePercent; if (rate >= 0 && rate < maxRate) { if (srcSkill.Context.RandomPercent(maxRate) > rate) { return(false); } } } target.AddBuff(InnerCreatePropBuff(srcSkill, caster)); this.AddTgtShowModel(srcSkill, target, this.Last); return(true); }
protected override bool AddBuff(ISkill srcSkill, ISkillPlayer caster, ISkillPlayer target, bool pureFlag, int last, int rate) { if (this.BlurCode == (int)EnumBlurBuffCode.Stun) { last = srcSkill.Context.GetBuffLast(srcSkill, caster, last, target); } if (!pureFlag) { if (BoostUtil.IfAntiDebuff(this, srcSkill, target, true, (int)EnumBoostRootType.AntiBlur, this.BlurCode)) { return(true); } BoostUtil.GetEaseRate(out rate, rate, target, (int)EnumBoostRootType.BlurRate, this.BlurCode); if (this.Last > 0) { BoostUtil.GetEaseLast(out last, last, target, (int)EnumBoostRootType.BlurLast, this.BlurCode); last = srcSkill.Context.GetBuffLast(srcSkill, caster, last); } } if (!BuffUtil.ExecRate(out rate, rate, srcSkill.Context, this.ExecType)) { return(false); } if (rate <= 0) { return(true); } int buffId = this.BuffId[0]; if (buffId == (int)EnumBlurType.BanMan) { target.DisableState = (int)this.BlurCode; target.RaiseBlurEvent(new BlurEventArgs(target.BlurSrcSkill, target, target, (EnumBlurType)buffId, (EnumBlurBuffCode)this.BlurCode)); } else { if (buffId == (int)EnumBlurType.LockMotion) { target.RemoveBuff(buffId, 0); } if (!target.AddBuff(InnerCreateBuff(srcSkill, target, (short)last, rate))) { return(false); } if (this.BlurCode == (int)EnumBlurBuffCode.Rebel) { ((IPlayer)target).AddSilenceBuff(last); } if (this.BlurCode == (int)EnumBlurBuffCode.Falldown) { target.RaiseBlurEvent(new BlurEventArgs(target.BlurSrcSkill, target, target, (EnumBlurType)buffId, (EnumBlurBuffCode)this.BlurCode)); } } this.AddTgtShowModel(srcSkill, target, last); return(true); }
protected bool FoulPlayer(ISkill srcSkill, ISkillPlayer caster, ISkillPlayer target, int buffId, int rate, int depth) { int foulType = this.FoulType; if (null == target) { return(false); } if (null == caster || caster == target) { caster = target.OppSkillPlayer; } if (null == caster) { return(false); } if (!this.PureFlag) { //反弹犯规 if (depth > 0 && BoostUtil.IfAntiDebuff(this, srcSkill, target, (int)EnumBoostRootType.TurnFoul)) { return(FoulPlayer(srcSkill, target, caster, buffId, rate, --depth)); } //免疫犯规 if (BoostUtil.IfAntiDebuff(this, srcSkill, target, (int)EnumBoostRootType.AntiFoul)) { return(true); } //降低犯规概率 BoostUtil.GetEaseRate(out rate, rate, target, (int)EnumBoostRootType.FoulRate, buffId); } if (srcSkill.Context.RandomPercent(SkillDefines.MAXStorePercent) > rate) { return(true); } //一定概率降低犯规等级 int point, percent; if (BoostUtil.GetEaseValue(out point, out percent, target, (int)EnumBoostRootType.FoulValue)) { if (srcSkill.Context.RandomPercent(SkillDefines.MAXStorePercent) <= percent) { foulType -= point; } } if (foulType >= 0) { InnerFoul(srcSkill, target, foulType); } return(true); }
protected void GetAmp(ISkill srcSkill, ISkillPlayer caster, bool pureFlag, out int last, out int rate) { //ISkillOwner owner = caster ?? srcSkill.Owner; BoostUtil.GetAmpRate(out rate, this.Rate, srcSkill, (int)EnumBoostRootType.BlurRate, this.BlurCode); last = this.Last; if (last > 0) { BoostUtil.GetAmpLast(out last, last, srcSkill, (int)EnumBoostRootType.BlurLast, this.BlurCode); } if (pureFlag || this.Last <= 0) { last = srcSkill.Context.GetBuffLast(srcSkill, caster, last); } }
protected void GetAmp(ISkill srcSkill, ISkillPlayer caster, int buffId, bool pureFlag, out int last, out int point, out int percent) { //ISkillOwner owner = caster ?? srcSkill.Owner; BoostUtil.GetAmpValue(out point, out percent, this.Point, this.Percent, srcSkill, ValueBuffUnits(buffId)); last = this.Last; if (last > 0) { BoostUtil.GetAmpLast(out last, last, srcSkill, LastBuffUnits(buffId)); } if (pureFlag || this.Last <= 0) { last = srcSkill.Context.GetBuffLast(srcSkill, caster, last); } }
protected virtual bool AddBuff(ISkill srcSkill, ISkillPlayer caster, ISkillPlayer target, bool pureFlag, int last, int rate) { if (!pureFlag) { if (BoostUtil.IfAntiDebuff(this, srcSkill, target, true, (int)EnumBoostRootType.AntiBlur, this.BlurCode)) { return(true); } BoostUtil.GetEaseRate(out rate, rate, target, (int)EnumBoostRootType.BlurRate, this.BlurCode); if (this.Last > 0) { BoostUtil.GetEaseLast(out last, last, target, (int)EnumBoostRootType.BlurLast, this.BlurCode); last = srcSkill.Context.GetBuffLast(srcSkill, caster, last); } } if (!BuffUtil.ExecRate(out rate, rate, srcSkill.Context, this.ExecType)) { return(false); } if (rate <= 0) { return(true); } int buffId = this.BuffId[0]; if (buffId == (int)EnumBlurType.BanMan) { target.DisableState = (int)this.BlurCode; } else { if (buffId == (int)EnumBlurType.LockMotion) { target.RemoveBuff(buffId, 0); } if (!target.AddBuff(InnerCreateBuff(srcSkill, target, (short)last, rate))) { return(false); } } this.AddTgtShowModel(srcSkill, target, last); return(true); }
protected virtual bool AddBuff(ISkill srcSkill, ISkillPlayer caster, ISkillOwner target, int buffId, bool pureFlag, int last, int point, int percent) { if (!pureFlag) { if (BoostUtil.IfAntiDebuff(this, srcSkill, target, true, (int)EnumBoostRootType.AntiPropDebuff)) { return(true); } BoostUtil.GetEaseValue(out point, out percent, point, percent, target, ValueBuffUnits(buffId)); if (this.Last > 0) { BoostUtil.GetEaseLast(out last, last, target, LastBuffUnits(buffId)); last = srcSkill.Context.GetBuffLast(srcSkill, caster, last); } } if (!target.AddBuff(InnerCreatePropBuff(srcSkill, point, percent, (short)last))) { return(false); } this.AddTgtShowModel(srcSkill, target, last); return(true); }
public bool EffectPlayers(ISkill srcSkill, ISkillPlayer caster, IList <ISkillPlayer> dstPlayers) { if (null == dstPlayers || dstPlayers.Count == 0) { return(false); } int last; int rate; bool pureFlag = BoostUtil.IfPureBuff(this, srcSkill, caster); GetAmp(srcSkill, caster, pureFlag, out last, out rate); bool rtnVal = false; foreach (var target in dstPlayers) { rtnVal |= AddBuff(srcSkill, caster, target, pureFlag, last, rate); } if (rtnVal) { this.AddSrcShowModel(srcSkill, caster, last); } return(rtnVal); }
protected virtual void GetAmp(ISkill srcSkill, ISkillPlayer caster, int buffId, out int rate) { BoostUtil.GetAmpRate(out rate, this.Rate, srcSkill, (int)EnumBoostRootType.FoulRate, buffId); }