public void AddData(string[] lineArray) { for (int i = 1; i < lineArray.Length; i++) { lineArray[i] = lineArray[i].Replace("\r", ""); string[] strArray = lineArray[i].Split(","[0]); StaticBuffLevelVo vo = new StaticBuffLevelVo(strArray); _datapool.Add(vo); } }
public virtual void AddBuff(int id, int level, BaseUnit income) { StaticBuffLevelVo buffVo = StaticDataPool.Instance.staticBuffLevelPool.GetStaticDataVo(id, level); KeyValuePair <StaticBuffLevelVo, BaseUnit> _buff = new KeyValuePair <StaticBuffLevelVo, BaseUnit>(buffVo, income); BuffVo tempBuff = _buffs.Find(p => (p.staticVo == buffVo && p.inCome == income)); if (tempBuff == null) { BuffVo newBuff = new BuffVo(); newBuff.inCome = income; newBuff.staticVo = buffVo; newBuff.ifEffect = false; newBuff.Round = buffVo.cd; _buffs.Add(newBuff); } else { tempBuff.Round = tempBuff.staticVo.cd; } //if (!buff.ContainsKey(_buff)) //{ // ArrayList al = new ArrayList(); // al.Add(buffVo.cd); // al.Add(false); // buff.Add(_buff, al); //} //else //{ // ArrayList al = new ArrayList(); // al.Add(buffVo.cd); // al.Add(buff[_buff][1]); // buff[_buff] = al; //} }
public virtual void Buff() { List <BuffVo> removeList = new List <BuffVo>(); for (int i = 0; i < _buffs.Count; i++) { BaseUnit inCome = _buffs[i].inCome; StaticBuffLevelVo _buff = _buffs[i].staticVo; switch (_buff.type)//0:物理伤害1:魔法伤害2:回血3:回蓝4:攻击提升5:法伤提升6:护甲提升7:闪避提升8:暴击提升 { case 0: if (_buffs[i].Round > 0) { if (_buff.effectType == 0) { nowHp -= Random.Range(inCome.attackSmall, inCome.attackBig) * _buff.effectValue * (1 - (defance / (defanceRate * level + defance))); } else if (_buff.effectType == 1) { nowHp -= (Random.Range(inCome.attackSmall, inCome.attackBig) + _buff.effectValue) * (1 - (defance / (defanceRate * level + defance))); } _buffs[i].Round = _buffs[i].Round - 1; } else { removeList.Add(_buffs[i]); } break; case 1: if (_buffs[i].Round > 0) { if (_buff.effectType == 0) { nowHp -= inCome.magicAttack * _buff.effectValue * (1 - (defance / (defanceRate * level + defance))); } else if (_buff.effectType == 1) { nowHp -= (inCome.magicAttack + _buff.effectValue) * (1 - (defance / (defanceRate * level + defance))); } _buffs[i].Round = _buffs[i].Round - 1; } else { removeList.Add(_buffs[i]); } break; case 2: if (_buffs[i].Round > 0) { if (_buff.effectType == 0) { float addHp = maxHp * _buff.effectValue; if (nowHp + addHp > maxHp) { addHp = maxHp - nowHp; } nowHp += addHp; } else if (_buff.effectType == 1) { float addHp = _buff.effectValue; if (nowHp + addHp > maxHp) { addHp = maxHp - nowHp; } nowHp += addHp; } _buffs[i].Round = _buffs[i].Round - 1; } else { removeList.Add(_buffs[i]); } break; case 3: if (_buffs[i].Round > 0) { if (_buff.effectType == 0) { float addMp = maxMp * _buff.effectValue; if (nowHp + addMp > maxMp) { addMp = maxMp - addMp; } nowMp += addMp; } else if (_buff.effectType == 1) { float addMp = _buff.effectValue; if (nowMp + addMp > maxMp) { addMp = maxMp - nowMp; } nowMp += addMp; } _buffs[i].Round = _buffs[i].Round - 1; } else { removeList.Add(_buffs[i]); } break; case 4: if (_buffs[i].Round > 0) { if (_buffs[i].ifEffect == false) { if (_buff.effectType == 0) { float addNum = attackSmall * _buff.effectValue; _buffs[i].num = addNum; attackBig += addNum; attackSmall += addNum; } else if (_buff.effectType == 1) { float addNum = _buff.effectValue; _buffs[i].num = addNum; attackBig += addNum; attackSmall += addNum; } _buffs[i].ifEffect = true; } } else { if (_buffs[i].ifEffect == true) { attackBig -= _buffs[i].num; attackSmall -= _buffs[i].num; _buffs[i].ifEffect = false; removeList.Add(_buffs[i]); } } _buffs[i].Round = _buffs[i].Round - 1; break; case 5: if (_buffs[i].Round > 0) { if (_buffs[i].ifEffect == false) { if (_buff.effectType == 0) { float addNum = magicAttack * _buff.effectValue; _buffs[i].num = addNum; magicAttack += addNum; } else if (_buff.effectType == 1) { float addNum = _buff.effectValue; _buffs[i].num = addNum; magicAttack += addNum; } _buffs[i].ifEffect = true; } } else { if (_buffs[i].ifEffect == true) { _buffs[i].ifEffect = false; magicAttack -= _buffs[i].num; removeList.Add(_buffs[i]); } } _buffs[i].Round = _buffs[i].Round - 1; break; case 6: if (_buffs[i].Round > 0) { if (_buffs[i].ifEffect == false) { if (_buff.effectType == 0) { float addNum = defance * _buff.effectValue; _buffs[i].num = addNum; defance += addNum; } else if (_buff.effectType == 1) { float addNum = _buff.effectValue; _buffs[i].num = addNum; defance += addNum; } _buffs[i].ifEffect = true; } } else { if (_buffs[i].ifEffect == true) { _buffs[i].ifEffect = false; defance -= _buffs[i].num; removeList.Add(_buffs[i]); } } _buffs[i].Round = _buffs[i].Round - 1; break; case 7: if (_buffs[i].Round > 0) { if (_buffs[i].ifEffect == false) { if (_buff.effectType == 0) { float addNum = duckNum * _buff.effectValue; _buffs[i].num = addNum; duckNum += addNum; } else if (_buff.effectType == 1) { float addNum = _buff.effectValue; _buffs[i].num = addNum; duckNum += addNum; } _buffs[i].ifEffect = true; } } else { if (_buffs[i].ifEffect == true) { _buffs[i].ifEffect = false; duckNum -= _buffs[i].num; removeList.Add(_buffs[i]); } } _buffs[i].Round = _buffs[i].Round - 1; break; case 8: if (_buffs[i].Round > 0) { if (_buffs[i].ifEffect == false) { if (_buff.effectType == 0) { float addNum = critNum * _buff.effectValue; _buffs[i].num = addNum; critNum += addNum; } else if (_buff.effectType == 1) { float addNum = _buff.effectValue; _buffs[i].num = addNum; critNum += addNum; } _buffs[i].ifEffect = true; } } else { if (_buffs[i].ifEffect == true) { _buffs[i].ifEffect = false; critNum -= _buffs[i].num; removeList.Add(_buffs[i]); } } _buffs[i].Round = _buffs[i].Round - 1; break; } } for (int i = 0; i < removeList.Count; i++) { _buffs.Remove(removeList[i]); } }