123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- using CommonAI.data;
- using CommonAI.Zone;
- using CommonAI.Zone.Instance;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using XmdsCommonServer.XLS.Data;
- namespace XmdsCommonSkill.Plugin.Skills
- {
- // 法师天赋数据
- public class PlayerCache_Magic : PlayerCacheBase
- {
- private IntIntData[] mTalnetData; // 天赋值规则: 天赋值上限-value1,该等级天赋获得时长-value2
- private byte mTalnetLv; // 天赋等级
- protected long mTalnetLvUpdateTime; // 天赋等级最后更新时间
- private byte mTalentMaxLv;
- //剑影获得剑气值
- private int mSwordGetTalnetValue;
- public PlayerCache_Magic(InstanceUnit unit, IntIntData[] talnetValue, IntIntIntData refreshRule) : base(unit, refreshRule)
- {
- this.mTalnetData = talnetValue;
- this.mTalentMaxLv = (byte)(talnetValue.Length - 1);
- }
- public void SetSwordAddTalentValue(int value)
- {
- this.mSwordGetTalnetValue = value;
- }
- public int GetSwordTalentValue()
- {
- return this.mSwordGetTalnetValue;
- }
- // 增加天赋点信息
- public override bool AddTalentValue(int value)
- {
- //战斗状态下,才会增加剑气值
- if(this.mOwner.Virtual.GetBattleStatus() < CommonAI.Data.BattleStatus.PVE)
- {
- return false;
- }
- // 法师每次获得剑气值都是一样的
- value = value == 0 ? this.mSwordGetTalnetValue : value;
- if (value <= 0)
- {
- return false;
- }
- // 基础天赋值变更
- int upValue = 0;
- if (mTalnetLv < this.mTalentMaxLv && (upValue = this.mTalentValue + value - mTalnetData[mTalnetLv].value1) > 0)
- {
- this.mTalnetLv += 1;
- this.mTalnetLvUpdateTime = CommonLang.CUtils.S_LOCAL_TIMESTAMPMS;
- this.mTalentValue = Math.Min(upValue, mTalnetData[mTalnetLv].value1);
- }
- else
- {
- this.mTalentValue = Math.Min(this.mTalentValue + value, mTalnetData[mTalnetLv].value1);
- }
- //this.mTalnetUpdateTime = CommonLang.CUtils.S_LOCAL_TIMESTAMPMS;
- return base.AddTalentValue(value);
- }
- public override bool UseTalentValue(int value)
- {
- if (value <= 0)
- {
- return false;
- }
- this.mTalentValue = Math.Max(this.mTalentValue - value, 0);
- //this.mTalnetUpdateTime = CommonLang.CUtils.S_LOCAL_TIMESTAMPMS;
- return base.UseTalentValue(value);
- }
- public override bool Refresh(bool notify)
- {
- long timePass = 0;
- //检测天赋值
- bool refrush = base.Refresh(false);
- //检测等级
- if (mTalnetLv > 0 && (timePass = CommonLang.CUtils.S_LOCAL_TIMESTAMPMS - mTalnetLvUpdateTime) > mTalnetData[mTalnetLv].value2)
- {
- mTalnetLv -= 1;
- //避免降级后,天赋值超了
- mTalentValue = Math.Min(mTalentValue, mTalnetData[mTalnetLv].value1);
- refrush = true;
- this.mTalnetLvUpdateTime = CommonLang.CUtils.S_LOCAL_TIMESTAMPMS;
- //降级后,
- //base.mTalnetUpdateTime = CommonLang.CUtils.S_LOCAL_TIMESTAMPMS;
- }
- if (refrush && notify)
- {
- NotifyPlayer();
- return true;
- }
- return false;
- }
- //通知玩家信息变更
- public override void NotifyPlayer()
- {
- RefreshTalnetInfo refreshInfo = new RefreshTalnetInfo((short)this.mTalentValue, this.mTalnetLv, (int)(mTalnetLvUpdateTime / 1000));
- mOwner.Virtual.SendMsgToPlayer(refreshInfo);
- }
- //重置天赋数据
- public void ReSet()
- {
- this.mTalentValue = 0;
- //this.mTalnetUpdateTime = CommonLang.CUtils.localTimeMS;
- this.mTalnetLv = 0;
- this.mTalnetLvUpdateTime = CommonLang.CUtils.localTimeMS;
- this.NotifyPlayer();
- }
- public override byte GetTalentLv() { return this.mTalnetLv; }
- }
- }
|