123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- using CommonAI.data;
- using CommonAI.Zone;
- using CommonAI.Zone.Helper;
- using CommonAI.Zone.Instance;
- using CommonLang;
- using XmdsCommon.Plugin;
- using XmdsCommonServer.Plugin;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
- using XmdsCommonServer.XLS.Data;
- using XmdsCommonSkill.Plugin.Buffs;
- using XmdsCommonSkill.Plugin.Skills;
- using static CommonAI.Zone.Instance.InstanceUnit;
- /// <summary>
- /// 法师【1】技能 1 基类
- ///1技能段数与剑气值以及剑气层有关联。第一部分只有一段(2-3下相同的法术及伤害填值),释放后会出现第二部分的图标,持续n秒。
- ///如果此时有足够的剑气,那么第二部分的图标会亮,持续时间T秒,不释放则进入cd图标。二部分的法术段数与剑气层数有关,1层n段,伤害为N1 2层n2段伤害N2,3层n3段伤害N3)
- ///释放第二部分技能,需要消耗剑气能量n%(生成剑影依旧是整个技能就1个) (每一段里面的法术次数不同,但数值填值为一个,而伤害值可以填成每多一层是递增n%来填)
- ///特殊写法,后面坚决不接这种单,
- ///第一动作: 基础动作
- ///第二动作: 剑气0层
- ///第三动作:剑气一层
- ///第四动作: 剑气二层
- ///第五动作:剑气三层
- /// </summary>
- ///
- namespace XmdsCommonSkill.Plugin.Skills.Magic
- {
- public class Magic_310100 : XmdsSkillBase
- {
- /// 技能ID.
- private static int ID = 310100;
- public override int SkillID { get { return ID; } }
- //固定值_百分比
- protected XmdsSkillValue mValueSet1;
- //基础二段需要剑气值,伤害1,伤害2,伤害3
- protected XmdsSkillValue mValueSet8;
- //是否有第二段
- protected long mIsHasNextValidTime;
- //释放时剑气等级
- protected int mLaunchTalentLv;
- protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
- {
-
- }
- protected override void OnSkillDamagePerEvent(BattleParams param)
- {
- param.SkillDamageAdd = mValueSet1.GetValue(param.GameSkill.SkillLevel, param.AtkProp.DamagePerID);
- param.SkillDamagePer = mValueSet1.GetValueExt(param.GameSkill.SkillLevel, param.AtkProp.DamagePerID);
- }
- protected override bool OnUnitLaunchSkillEvent(GameSkill info, ref InstanceUnit.SkillState skill, XmdsVirtual launcher, ref InstanceUnit.LaunchSkillParam param)
- {
- IPlayerCache cache = launcher.GetPlayerCache();
- if(cache == null)
- {
- return true;
- }
- if (CommonLang.CUtils.localTimeMS < this.mIsHasNextValidTime)
- {
- skill.LockActionStep = -1;
- skill.SetActionIndex(0);
- int talentLv = launcher.GetPlayerCache().GetTalentLv();
- skill.setMaxMutilStep(1 + talentLv);
- }
- else
- {
- skill.LockActionStep = 0;
- }
- return true;
- }
- protected override int OnUnitLaunchSkillOver(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual launcher, CommonAI.Zone.Instance.InstanceUnit.SkillState state)
- {
- IPlayerCache cache = launcher.GetPlayerCache();
- if (cache == null)
- {
- return 0;
- }
-
- if (CommonLang.CUtils.localTimeMS < this.mIsHasNextValidTime)
- {
- this.mIsHasNextValidTime = 0;
- state.IsInMutilTime = false;
- state.LogicToCD();
- //释放了第二段:扣除剑气值
- launcher.GetPlayerCache().UseTalentValue(mValueSet8.GetValue(info.SkillLevel, 1));
- }
- else
- {
- int talentValue = launcher.GetPlayerCache().GetTalentValue();
- if (talentValue < mValueSet8.GetValue(info.SkillLevel, 1))
- {
- state.IsInMutilTime = false;
- state.LogicToCD();
- }
- else
- {
- state.SetCodeControlNext();
- state.IsInMutilTime = true;
- this.mIsHasNextValidTime = CommonLang.CUtils.localTimeMS + state.Data.SingleActionCoolDownMS;
- //第二段需要的等级,在这个时候绑定一下
- //System.Console.WriteLine("剑气等级:" + cache.GetTalentLv());
- mLaunchTalentLv = cache.GetTalentLv();
- }
- }
- return 0;
- }
- protected override void OnInitConfig()
- {
- XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
- InitData(data, out mValueSet1, XmdsSkillData.XmdsSkillDataKey.ValueSet);
- // 扩展配置
- InitData(data, out mValueSet8, XmdsSkillData.XmdsSkillDataKey.ValueSet8);
- }
- }
- }
|