| | |
| | | /// The fire rate in fires-per-second |
| | | /// </summary> |
| | | [SerializeField] |
| | | private float projectileFireRate; |
| | | private float projectileFireRate = 1; |
| | | |
| | | public float FireRate |
| | | { |
| | |
| | | /// </summary> |
| | | protected float freezeBreathCallTime = 0; |
| | | |
| | | protected float inFreezeBreath = 0; |
| | | protected float inFreezeBreath; |
| | | |
| | | protected float freezeBreathBackTimer = 0; |
| | | |
| | |
| | | get |
| | | { |
| | | FireRateAdd fireRateAdd = (FireRateAdd)EndlessBuffManager.instance.GetBuffInstanceByType(EndlessBuffEffectType.FireRateAdd); |
| | | return fireRateAdd.GetFireSpeedAdd(towerAttributeId); |
| | | float rateAdd = fireRateAdd.GetFireSpeedAdd(towerPtr.attributeId); |
| | | |
| | | return rateAdd > 1 ? rateAdd : fireSpeed; |
| | | } |
| | | } |
| | | |
| | |
| | | public override TowerDefense.Targetting.Targetter GetTargetter() |
| | | { |
| | | return targetter; |
| | | } |
| | | |
| | | private void Start() |
| | | { |
| | | if (projectile != null) |
| | | { |
| | | Damager damager = projectile.GetComponent<Damager>(); |
| | | towerAttributeId = damager.TowerAttributeId; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | |
| | | if (processInt == (int)Mathf.Floor(FreezeBreath.ChargeTime)) |
| | | { |
| | | inFreezeBreath = FreezeBreath.EffectTime; |
| | | inFreezeBreath = towerPtr.FreezeBreathCtrl.SkillTime; |
| | | towerPtr.FreezeBreathProgressOffset = 0; |
| | | towerPtr.PlayFreezeBreathEffect(true); |
| | | towerPtr.FreezeBreathCtrl.ReleaseCount = 1; |
| | | towerPtr.FreezeBreathCtrl.PlayFreezeEffect(waveLineID); |
| | | towerPtr.FreezeBreathCtrl.ReleaseFreeze(waveLineID, finalDamage, damager.alignmentProvider); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | inFreezeBreath -= Time.deltaTime; |
| | | int time = Mathf.FloorToInt(towerPtr.FreezeBreathCtrl.EffectTime / (towerPtr.FreezeBreathCtrl.DamageCount - 1) * 10); |
| | | int interval = Mathf.FloorToInt(inFreezeBreath * 10); |
| | | int offset = Mathf.FloorToInt(towerPtr.FreezeBreathCtrl.SkillTime * 10) - Mathf.FloorToInt(towerPtr.FreezeBreathCtrl.EffectTime * 10); |
| | | |
| | | if (inFreezeBreath <= FreezeBreath.EffectTime / 2 && towerPtr.FreezeBreathCtrl.ReleaseCount != 2) |
| | | if (interval == time * (towerPtr.FreezeBreathCtrl.DamageCount - towerPtr.FreezeBreathCtrl.ReleaseCount - 1) + offset && towerPtr.FreezeBreathCtrl.ReleaseCount < towerPtr.FreezeBreathCtrl.DamageCount) |
| | | { |
| | | towerPtr.FreezeBreathCtrl.ReleaseCount = 2; |
| | | ++towerPtr.FreezeBreathCtrl.ReleaseCount; |
| | | towerPtr.FreezeBreathCtrl.ReleaseFreeze(waveLineID, finalDamage, damager.alignmentProvider); |
| | | return; |
| | | } |
| | | |
| | | if (inFreezeBreath <= 0) |
| | |
| | | freezeBreathCallTime = 0; |
| | | towerPtr.FreezeBreathCtrl.SetProgress(0); |
| | | towerPtr.PlayFreezeBreathEffect(false); |
| | | towerPtr.FreezeBreathCtrl.ReleaseCount = 3; |
| | | towerPtr.FreezeBreathCtrl.ReleaseFreeze(waveLineID, finalDamage, damager.alignmentProvider); |
| | | } |
| | | } |
| | | } |