| | |
| | | get |
| | | { |
| | | FireRateAdd fireRateAdd = (FireRateAdd)EndlessBuffManager.instance.GetBuffInstanceByType(EndlessBuffEffectType.FireRateAdd); |
| | | float rateAdd = fireRateAdd.GetFireSpeedAdd(towerPtr.attributeId); |
| | | float rateAdd = 0; |
| | | |
| | | if (fireRateAdd != null) |
| | | rateAdd = fireRateAdd.GetFireSpeedAdd(towerPtr.attributeId); |
| | | return rateAdd > 1 ? rateAdd : fireSpeed; |
| | | } |
| | | } |
| | |
| | | public float GetFireDuration() |
| | | { |
| | | DecreaseTowerAttackCD endlessBuff = (DecreaseTowerAttackCD)EndlessBuffManager.instance.GetBuffInstanceByType(EndlessBuffEffectType.DecreaseTowerAttackCD); |
| | | return endlessBuff.GetDecreaseCD(towerPtr.attributeId, 1 / projectileFireRate); |
| | | |
| | | return endlessBuff != null ? endlessBuff.GetDecreaseCD(towerPtr.attributeId, 1 / projectileFireRate) : 1 / projectileFireRate; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | BuffList.Add(buff); |
| | | EndlessBuff endlessBuff = GetBuffInstanceByType((EndlessBuffEffectType)buff.Config.buff_effect[0]); |
| | | |
| | | endlessBuff.BuffList.Add(buff); |
| | | endlessBuff.Handle(); |
| | | |
| | | // 如果是一次性生效的buff,直接移除掉 |
| | | if (buff.LifeCycleType == EndlessBuffLifeCycleType.Once) |
| | | if (endlessBuff != null) |
| | | { |
| | | endlessBuff.BuffList.Remove(buff); |
| | | RemoveBuff(buff); |
| | | endlessBuff.BuffList.Add(buff); |
| | | endlessBuff.Handle(); |
| | | |
| | | // 如果是一次性生效的buff,直接移除掉 |
| | | if (buff.LifeCycleType == EndlessBuffLifeCycleType.Once) |
| | | { |
| | | endlessBuff.BuffList.Remove(buff); |
| | | RemoveBuff(buff); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | { |
| | | BuffList.Remove(buff); |
| | | EndlessBuff endlessBuff = GetBuffInstanceByType((EndlessBuffEffectType)buff.Config.buff_effect[0]); |
| | | endlessBuff.LoseEffect(); |
| | | endlessBuff?.LoseEffect(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <returns></returns> |
| | | public EndlessBuff GetBuffInstanceByType(EndlessBuffEffectType type) |
| | | { |
| | | int tmp = (int)type - 1; |
| | | if ((int)type - 1 >= instanceList.Count) return null; |
| | | |
| | | return instanceList[(int)type - 1]; |
| | | } |
| | | } |
| | |
| | | private bool IsCrit() |
| | | { |
| | | CritProbabilityAdd critProbabilityAdd = (CritProbabilityAdd)EndlessBuffManager.instance.GetBuffInstanceByType(EndlessBuffEffectType.CritProbabilityAdd); |
| | | |
| | | if (critProbabilityAdd == null) return false; |
| | | |
| | | float crit = critProbabilityAdd.GetCrit(TowerPtr.attributeId); |
| | | float random = UnityEngine.Random.Range(0, 1f); |
| | | |
| | |
| | | private float GetCritDamageRate() |
| | | { |
| | | CritDamageAdd critDamageAdd = (CritDamageAdd)EndlessBuffManager.instance.GetBuffInstanceByType(EndlessBuffEffectType.CritDamageAdd); |
| | | return critDamageAdd.GetCritDamageRate(TowerPtr.attributeId); |
| | | |
| | | return critDamageAdd == null ? 0 : critDamageAdd.GetCritDamageRate(TowerPtr.attributeId); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | case 2: // 减速. |
| | | SlowDown slowDown = (SlowDown)EndlessBuffManager.instance.GetBuffInstanceByType(EndlessBuffEffectType.SlowDown); |
| | | enemy.addSpeedSlowRate(0.15f + slowDown.GetSlowDownAdd(TowerPtr.attributeId)); |
| | | enemy.addSpeedSlowRate(0.15f + (slowDown != null ? slowDown.GetSlowDownAdd(TowerPtr.attributeId) : 0)); |
| | | enemy.SetTargetableMatColor(Color.blue); |
| | | break; |
| | | case 3: // 中毒 |
| | |
| | | return false; |
| | | } |
| | | |
| | | BuyTower(pointer, force, zeroCost); |
| | | |
| | | return true; |
| | | return BuyTower(pointer, force, zeroCost); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// Throws exception when not in a build mode or when tower is not a valid position |
| | | /// </exception> |
| | | /// </summary> |
| | | public void BuyTower(UIPointer pointer, bool force = false, bool zeroCost = false) |
| | | public bool BuyTower(UIPointer pointer, bool force = false, bool zeroCost = false) |
| | | { |
| | | if (!isBuilding) return; |
| | | if (!isBuilding) return false; |
| | | |
| | | // 判断是否格子上重复放置塔防 |
| | | if (!m_CurrentTower || !IsGhostAtValidPosition()) |
| | |
| | | if (!pointer.raycast.HasValue || pointer.raycast.Value.collider == null) |
| | | { |
| | | CancelGhostPlacement(); |
| | | return; |
| | | return false; |
| | | } |
| | | PlaceGhost(pointer); |
| | | } |
| | | return; |
| | | return true; |
| | | } |
| | | |
| | | // 这是判断是否超出了格子 |
| | |
| | | if (!pointer.raycast.HasValue || pointer.raycast.Value.collider == null) |
| | | { |
| | | CancelGhostPlacement(); |
| | | return; |
| | | return false; |
| | | } |
| | | |
| | | int cost = m_CurrentTower.controller.purchaseCost; |
| | |
| | | { |
| | | PlaceGhost(pointer); |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | [[1,"低级火灵之力",[2,1],[1,10,0],-1,"增加全体火精灵10%攻击力",0,"3",10001,1,"0"],[2,"低级水灵之力",[2,2],[1,10,0],-1,"增加全体水精灵10%攻击力",0,"3",10002,1,"0"],[3,"低级木灵之力",[2,3],[1,10,0],-1,"增加全体木精灵10%攻击力",0,"3",10003,1,"0"],[4,"火灵之力",[2,1],[1,20,0],-1,"增加全体火精灵20%攻击力","4","7",10001,2,"0"],[5,"水灵之力",[2,2],[1,20,0],-1,"增加全体水精灵20%攻击力","4","7",10002,2,"0"],[6,"木灵之力",[2,3],[1,20,0],-1,"增加全体木精灵20%攻击力","4","7",10003,2,"0"],[7,"高级火灵之力",[2,1],[1,30,0],-1,"增加全体火精灵30%攻击力","8","10",10001,3,"0"],[8,"高级水灵之力",[2,2],[1,30,0],-1,"增加全体水精灵30%攻击力","8","10",10002,3,"0"],[9,"高级木灵之力",[2,3],[1,30,0],-1,"增加全体木精灵30%攻击力","8","10",10003,3,"0"],[10,"特级火灵之力",[2,1],[1,40,0],-1,"增加全体火精灵40%攻击力","11","17",10001,3,"0"],[11,"特级水灵之力",[2,2],[1,40,0],-1,"增加全体水精灵40%攻击力","11","17",10002,3,"0"],[12,"特级木灵之力",[2,3],[1,40,0],-1,"增加全体木精灵40%攻击力","11","17",10003,3,"0"],[13,"精灵之力",[1,0],[1,50,0],2,"2波增加全体精灵50%攻击力","99",99,10004,2,1],[14,"狂暴之力",[1,0],[1,65,0],2,"2波内增加全体精灵65%攻击力","99",99,10005,3,1],[15,"飞来横财",[0],[2,300,0],0,"增加300金币","0","4",10007,1,"0"],[16,"中大奖!",[0],[2,800,0],0,"增加800金币","5","99",10007,3,"0"],[17,"精灵魔盒",[0],[3,3,300],0,"随机获得一个3级精灵",99,99,10006,2,1],[18,"超级精灵魔盒",[0],[3,4,500],0,"随机获得一个4级精灵",99,99,10006,3,1],[19,"攻速增加_水",[2,2],[4,0.2,0.5],-1,"水精灵攻速+20%","2",99,"10013",3,"3"],[20,"攻速增加_火",[2,1],[4,0.3,0.5],-1,"火精灵攻速+30%","2",99,"10013",3,"2"],[21,"攻速增加_木",[2,3],[4,0.2,0.5],-1,"木精灵攻速+20%","2",99,"10013",3,"3"],[22,"暴击_木",[3,109],[5,300,0],-1,"木系精灵暴击率+30%","3",99,"10012",3,"2"],[23,"暴怒_木",[3,109],[6,300,0],-1,"木系精灵暴击伤害+30%","5",99,"10011",3,"2"],[24,"弹夹扩容",[3,109],[7,2,0],-1,"玉米精灵高能子弹+1","3",99,10008,"2","1"],[25,"爆裂狂怒",[3,101],[9,7,0],-1,"火鸟精灵充能后攻速+35%","3",99,10009,"2","1"],[26,"暴击_火",[3,101],[5,200,0],-1,"火系精灵暴击率+20%","3",99,"10012",3,"2"],[27,"暴怒_火",[3,101],[6,300,0],-1,"火系精灵暴击伤害+30%","5",99,"10011",3,"2"],[28,"超级弹夹",[3,109],[7,3,0],-1,"玉米精灵高能子弹+2","7",99,10008,3,"1"],[29,"超级爆裂狂怒",[3,101],[9,9,0],-1,"火鸟精灵充能后攻速+60%","7",99,10009,3,"1"],[30,"技能提升",[4,0],[10,1,0],-1,"全体技能等级+1",0,99,10004,3,1]] |
| | | [[1,"低级火灵之力",[2,1],[1,10,0],-1,"增加全体火精灵10%攻击力",0,"3",10001,1,"0"],[2,"低级水灵之力",[2,2],[1,10,0],-1,"增加全体水精灵10%攻击力",0,"3",10002,1,"0"],[3,"低级木灵之力",[2,3],[1,10,0],-1,"增加全体木精灵10%攻击力",0,"3",10003,1,"0"],[4,"火灵之力",[2,1],[1,20,0],-1,"增加全体火精灵20%攻击力","4","7",10001,2,"0"],[5,"水灵之力",[2,2],[1,20,0],-1,"增加全体水精灵20%攻击力","4","7",10002,2,"0"],[6,"木灵之力",[2,3],[1,20,0],-1,"增加全体木精灵20%攻击力","4","7",10003,2,"0"],[7,"高级火灵之力",[2,1],[1,30,0],-1,"增加全体火精灵30%攻击力","8","10",10001,3,"0"],[8,"高级水灵之力",[2,2],[1,30,0],-1,"增加全体水精灵30%攻击力","8","10",10002,3,"0"],[9,"高级木灵之力",[2,3],[1,30,0],-1,"增加全体木精灵30%攻击力","8","10",10003,3,"0"],[10,"特级火灵之力",[2,1],[1,40,0],-1,"增加全体火精灵40%攻击力","11","17",10001,3,"0"],[11,"特级水灵之力",[2,2],[1,40,0],-1,"增加全体水精灵40%攻击力","11","17",10002,3,"0"],[12,"特级木灵之力",[2,3],[1,40,0],-1,"增加全体木精灵40%攻击力","11","17",10003,3,"0"],[13,"精灵之力",[1,0],[1,50,0],2,"2波增加全体精灵50%攻击力","99",99,10004,2,1],[14,"狂暴之力",[1,0],[1,65,0],2,"2波内增加全体精灵65%攻击力","99",99,10005,3,1],[15,"飞来横财",[0],[2,300,0],0,"增加300金币","0","4",10007,1,"0"],[16,"中大奖!",[0],[2,800,0],0,"增加800金币","5","99",10007,3,"0"],[17,"精灵魔盒",[0],[3,3,300],0,"随机获得一个3级精灵",99,99,10006,2,1],[18,"超级精灵魔盒",[0],[3,4,500],0,"随机获得一个4级精灵",99,99,10006,3,1],[19,"攻速增加_水",[2,2],[4,0.2,0.5],-1,"水精灵攻速+20%","2",99,"10013",3,"3"],[20,"攻速增加_火",[2,1],[4,0.3,0.5],-1,"火精灵攻速+30%","2",99,"10013",3,"2"],[21,"攻速增加_木",[2,3],[4,0.2,0.5],-1,"木精灵攻速+20%","2",99,"10013",3,"3"],[22,"暴击_木",[3,109],[5,300,0],-1,"木系精灵暴击率+30%","3",99,"10012",3,"2"],[23,"暴怒_木",[3,109],[6,300,0],-1,"木系精灵暴击伤害+30%","5",99,"10011",3,"2"],[24,"弹夹扩容",[3,109],[7,2,0],-1,"玉米精灵高能子弹+1","3",99,10008,"2","1"],[25,"爆裂狂怒",[3,101],[9,7,0],-1,"火鸟精灵充能后攻速+35%","3",99,10009,"2","1"],[26,"暴击_火",[3,101],[5,200,0],-1,"火系精灵暴击率+20%","3",99,"10012",3,"2"],[27,"暴怒_火",[3,101],[6,300,0],-1,"火系精灵暴击伤害+30%","5",99,"10011",3,"2"],[28,"超级弹夹",[3,109],[7,3,0],-1,"玉米精灵高能子弹+2","7",99,10008,3,"1"],[29,"超级爆裂狂怒",[3,101],[9,9,0],-1,"火鸟精灵充能后攻速+60%","7",99,10009,3,"1"],[30,"技能提升",[4,0],[10,1,0],-1,"全体技能等级+1",0,99,10004,3,1],[31,"快速蓄能",[3,109],[11,0.5,0.5],-1,"玉米精灵蓄力时间-50%",0,99,10008,3,1]] |