diff options
Diffstat (limited to 'Assembly_CSharp/Tower')
-rw-r--r-- | Assembly_CSharp/Tower/Dropper.cs | 126 | ||||
-rw-r--r-- | Assembly_CSharp/Tower/FlameThrower.cs | 68 | ||||
-rw-r--r-- | Assembly_CSharp/Tower/Lookout.cs | 97 | ||||
-rw-r--r-- | Assembly_CSharp/Tower/Morter.cs | 39 | ||||
-rw-r--r-- | Assembly_CSharp/Tower/MorterShell.cs | 81 | ||||
-rw-r--r-- | Assembly_CSharp/Tower/Obelisk.cs | 99 | ||||
-rw-r--r-- | Assembly_CSharp/Tower/RadarTower.cs | 71 | ||||
-rw-r--r-- | Assembly_CSharp/Tower/TeslaCoil.cs | 45 | ||||
-rw-r--r-- | Assembly_CSharp/Tower/Tower.cs | 509 | ||||
-rw-r--r-- | Assembly_CSharp/Tower/TowerFlyweight.cs | 279 | ||||
-rw-r--r-- | Assembly_CSharp/Tower/TowerManager.cs | 1386 | ||||
-rw-r--r-- | Assembly_CSharp/Tower/TowerType.cs | 18 |
12 files changed, 0 insertions, 2818 deletions
diff --git a/Assembly_CSharp/Tower/Dropper.cs b/Assembly_CSharp/Tower/Dropper.cs deleted file mode 100644 index 0dc7a10..0000000 --- a/Assembly_CSharp/Tower/Dropper.cs +++ /dev/null @@ -1,126 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; - -public class Dropper : Tower -{ - [SerializeField] - private int manaPerSecond; - - [SerializeField] - private float dropHeight = 3f; - - [SerializeField] - private LayerMask dropSetMask; - - [SerializeField] - protected Vector2[] dropPoints; - - [SerializeField] - private bool requireTargetToDrop; - - private int currentLevel; - - public float dropperRPMdisplay; - - private float timeOfNextManaCheck; - - private bool canFire = true; - - protected override void Start() - { - base.Start(); - SetDropPoints(); - } - - public override void SetStats() - { - base.SetStats(); - rps = 60f / rpm * (10f / (10f + (float)dropPoints.Length)); - dropperRPMdisplay = rpm * (10f + (float)dropPoints.Length) / 10f; - } - - private void SetDropPoints() - { - List<Vector2> list = new List<Vector2>(); - for (int i = -(int)base.range; (float)i <= base.range; i++) - { - for (int j = -(int)base.range; (float)j <= base.range; j++) - { - if (Physics.Raycast(new Vector3(base.transform.position.x + (float)i, dropHeight, base.transform.position.z + (float)j), Vector3.down, out var hitInfo, 1.5f * dropHeight, dropSetMask, QueryTriggerInteraction.Ignore) && hitInfo.transform.gameObject.layer == LayerMask.NameToLayer("Path")) - { - list.Add(new Vector2(i, j)); - } - } - } - dropPoints = list.ToArray(); - rps = 60f / rpm * (10f / (10f + (float)dropPoints.Length)); - dropperRPMdisplay = rpm * (10f + (float)dropPoints.Length) / 10f; - } - - protected override void Update() - { - if (SpawnManager.instance.level != currentLevel) - { - SetDropPoints(); - currentLevel = SpawnManager.instance.level; - } - if (currentTarget != null) - { - if (turret != null) - { - AimTurret(); - } - GainXP(); - } - if (manaPerSecond > 0 && Time.time >= timeOfNextManaCheck && SpawnManager.instance.combat) - { - timeOfNextManaCheck = Time.time + 1f; - if (ResourceManager.instance.CheckMana(manaPerSecond)) - { - ResourceManager.instance.SpendMana(manaPerSecond); - canFire = true; - } - else - { - canFire = false; - } - } - timeSinceLastShot += Time.deltaTime; - if (canFire && TargetingCheck() && timeSinceLastShot > rps && SpawnManager.instance.combat) - { - Fire(); - timeSinceLastShot = 0f; - } - } - - private bool TargetingCheck() - { - if (requireTargetToDrop) - { - if (currentTarget != null) - { - return true; - } - return false; - } - return true; - } - - protected override void Fire() - { - if (consumesMana) - { - int manaCost = (int)((float)base.damage * manaConsumptionRate); - if (!ResourceManager.instance.CheckMana(manaCost)) - { - return; - } - ResourceManager.instance.SpendMana(manaCost); - } - if (dropPoints.Length != 0) - { - Vector2 vector = dropPoints[Random.Range(0, dropPoints.Length)]; - Object.Instantiate(projectile, new Vector3(vector.x, dropHeight, vector.y) + base.transform.position, Quaternion.identity).GetComponent<Projectile>().SetStats(towerType, null, projectileSpeed, base.damage, base.healthDamage, base.armorDamage, base.shieldDamage, base.slowPercent, base.bleedPercent, base.burnPercent, base.poisonPercent, base.critChance, base.stunChance); - } - } -} diff --git a/Assembly_CSharp/Tower/FlameThrower.cs b/Assembly_CSharp/Tower/FlameThrower.cs deleted file mode 100644 index d415d88..0000000 --- a/Assembly_CSharp/Tower/FlameThrower.cs +++ /dev/null @@ -1,68 +0,0 @@ -using UnityEngine; - -public class FlameThrower : Tower -{ - [SerializeField] - private ParticleSystem flames; - - public bool flaming; - - private bool hasMana = true; - - [SerializeField] - private AudioSource audioS; - - private bool soundPlaying; - - protected override void Update() - { - if (hasMana && currentTarget != null && !flaming) - { - flames.Play(); - PlaySound(onOff: true); - flaming = true; - } - else if (!hasMana || (currentTarget == null && flaming)) - { - flames.Stop(); - PlaySound(onOff: false); - flaming = false; - } - base.Update(); - } - - protected override void Fire() - { - if (consumesMana) - { - int manaCost = (int)((float)base.damage * manaConsumptionRate); - if (!ResourceManager.instance.CheckMana(manaCost)) - { - hasMana = false; - return; - } - ResourceManager.instance.SpendMana(manaCost); - hasMana = true; - } - RaycastHit[] array = Physics.SphereCastAll(muzzle.position, base.range / 6f, muzzle.transform.forward, base.range * 1.5f, enemyLayerMask, QueryTriggerInteraction.Collide); - foreach (RaycastHit raycastHit in array) - { - raycastHit.collider.GetComponent<IDamageable>()?.TakeDamage(towerType, base.damage, base.healthDamage, base.armorDamage, base.shieldDamage, base.slowPercent, base.bleedPercent, base.burnPercent, base.poisonPercent, base.critChance, base.stunChance); - } - } - - private void PlaySound(bool onOff) - { - if (onOff && !soundPlaying) - { - audioS.volume = OptionsMenu.instance.masterVolume * OptionsMenu.instance.sfxVolume; - audioS.Play(); - soundPlaying = true; - } - else if (!onOff && soundPlaying) - { - audioS.Stop(); - soundPlaying = false; - } - } -} diff --git a/Assembly_CSharp/Tower/Lookout.cs b/Assembly_CSharp/Tower/Lookout.cs deleted file mode 100644 index 3abd55b..0000000 --- a/Assembly_CSharp/Tower/Lookout.cs +++ /dev/null @@ -1,97 +0,0 @@ -using UnityEngine; - -public class Lookout : Tower -{ - [SerializeField] - private GameObject markIcon; - - private GameObject currentMark; - - protected override void Update() - { - if (currentTarget != null) - { - markIcon.SetActive(value: true); - UpdateMark(); - GainXP(); - } - else - { - markIcon.SetActive(value: false); - } - } - - private void UpdateMark() - { - if (currentTarget != currentMark) - { - if (currentMark != null) - { - currentMark.GetComponent<Enemy>().mark = null; - } - currentMark = currentTarget; - currentMark.GetComponent<Enemy>().mark = this; - } - markIcon.transform.position = currentMark.transform.position; - } - - protected override GameObject SelectEnemy(Collider[] possibleTargets) - { - GameObject result = null; - float num = -1f; - for (int i = 0; i < possibleTargets.Length; i++) - { - float num2 = 1f; - Enemy component = possibleTargets[i].GetComponent<Enemy>(); - if (!(component.mark != this) || !(component.mark != null)) - { - if (CheckPriority(Priority.Progress)) - { - num2 /= Mathf.Max(0.001f, possibleTargets[i].GetComponent<Pathfinder>().distanceFromEnd); - } - if (CheckPriority(Priority.NearDeath)) - { - num2 /= Mathf.Max(0.001f, component.CurrentHealth()); - } - if (CheckPriority(Priority.MostHealth)) - { - num2 *= (float)Mathf.Max(1, component.health); - } - if (CheckPriority(Priority.MostArmor)) - { - num2 *= (float)Mathf.Max(1, component.armor); - } - if (CheckPriority(Priority.MostShield)) - { - num2 *= (float)Mathf.Max(1, component.shield); - } - if (CheckPriority(Priority.LeastHealth)) - { - num2 /= (float)Mathf.Max(1, component.health); - } - if (CheckPriority(Priority.LeastArmor)) - { - num2 /= (float)Mathf.Max(1, component.armor); - } - if (CheckPriority(Priority.LeastShield)) - { - num2 /= (float)Mathf.Max(1, component.shield); - } - if (CheckPriority(Priority.Fastest)) - { - num2 *= Mathf.Max(0.001f, possibleTargets[i].GetComponent<Pathfinder>().speed); - } - if (CheckPriority(Priority.Slowest)) - { - num2 /= Mathf.Max(0.001f, possibleTargets[i].GetComponent<Pathfinder>().speed); - } - if (num2 > num) - { - result = component.gameObject; - num = num2; - } - } - } - return result; - } -} diff --git a/Assembly_CSharp/Tower/Morter.cs b/Assembly_CSharp/Tower/Morter.cs deleted file mode 100644 index 2170da3..0000000 --- a/Assembly_CSharp/Tower/Morter.cs +++ /dev/null @@ -1,39 +0,0 @@ -using UnityEngine; - -public class Morter : Tower -{ - protected override void AimTurret() - { - } - - protected override void Fire() - { - if (consumesMana) - { - int manaCost = (int)((float)base.damage * finalManaConsumption); - if (!ResourceManager.instance.CheckMana(manaCost)) - { - return; - } - ResourceManager.instance.SpendMana(manaCost); - } - float num = projectileSpeed * Mathf.Clamp(Vector3.SqrMagnitude(currentTarget.transform.position - base.transform.position) / (2f * baseRange * baseRange), 1f, float.MaxValue); - Vector3 vector = currentTarget.GetComponent<Enemy>().GetFuturePosition(num) - turret.transform.position; - GameObject gameObject = Object.Instantiate(rotation: Quaternion.LookRotation(new Vector3(vector.x, 0f, vector.z), Vector3.up), original: projectile, position: muzzle.position); - gameObject.GetComponent<Projectile>().SetStats(towerType, currentTarget, num, base.damage, base.healthDamage, base.armorDamage, base.shieldDamage, base.slowPercent, base.bleedPercent, base.burnPercent, base.poisonPercent, base.critChance, base.stunChance); - gameObject.GetComponent<MorterShell>().SetMorterPhysics(currentTarget.GetComponent<Enemy>().GetFuturePosition(num)); - gameObject.GetComponent<MorterShell>().blastRadius = base.blastRadius; - if (extraProjectileFX != null) - { - GameObject gameObject2 = Object.Instantiate(extraProjectileFX, gameObject.transform.position, gameObject.transform.rotation); - gameObject2.transform.SetParent(gameObject.transform); - gameObject2.GetComponent<ProjectileFX>().SetFX(base.bleedPercent, base.burnPercent, base.poisonPercent, base.slowPercent, consumesMana); - Projectile component = gameObject.GetComponent<Projectile>(); - if (component.detachOnDestruction == null) - { - component.detachOnDestruction = gameObject2; - component.extraFX = gameObject2.GetComponent<ProjectileFX>(); - } - } - } -} diff --git a/Assembly_CSharp/Tower/MorterShell.cs b/Assembly_CSharp/Tower/MorterShell.cs deleted file mode 100644 index ce93441..0000000 --- a/Assembly_CSharp/Tower/MorterShell.cs +++ /dev/null @@ -1,81 +0,0 @@ -using UnityEngine; - -public class MorterShell : Projectile -{ - [SerializeField] - private GameObject artObject; - - [SerializeField] - private LayerMask layersAffectedByBlast; - - public float blastRadius = 1f; - - private Vector3 destination; - - private float timeOfFlight; - - [SerializeField] - private float vSpeed; - - [SerializeField] - private float hSpeed; - - [SerializeField] - private float gravity = 5f; - - [SerializeField] - private GameObject explosion; - - private float lookAhead; - - private Vector3 previousPos; - - public void SetMorterPhysics(Vector3 pos) - { - destination = pos; - timeOfFlight = speed; - vSpeed = gravity * timeOfFlight / 2f; - hSpeed = Vector3.Magnitude(base.transform.position - destination) / timeOfFlight; - lookAhead = vSpeed + hSpeed; - } - - protected override void MoveProjectile() - { - previousPos = base.transform.position; - base.transform.Translate(Vector3.forward * hSpeed * Time.fixedDeltaTime); - base.transform.Translate(Vector3.up * vSpeed * Time.fixedDeltaTime); - vSpeed -= gravity * Time.fixedDeltaTime; - artObject.transform.rotation = Quaternion.LookRotation(base.transform.position - previousPos, Vector3.up); - } - - protected override void CheckForHits() - { - if (!(vSpeed > 0f) && Physics.Raycast(artObject.transform.position, artObject.transform.forward, out var hitInfo, lookAhead * Time.fixedDeltaTime, layermask, QueryTriggerInteraction.Collide)) - { - OnHit(hitInfo); - } - } - - protected override void OnHit(RaycastHit hit) - { - Collider[] array = Physics.OverlapSphere(base.transform.position, blastRadius, layersAffectedByBlast, QueryTriggerInteraction.Collide); - for (int i = 0; i < array.Length; i++) - { - IDamageable component = array[i].GetComponent<IDamageable>(); - if (component != null) - { - DealDamage(component); - } - } - if (detachOnDestruction != null) - { - detachOnDestruction.transform.parent = null; - } - if (extraFX != null) - { - extraFX.OnDetach(); - } - Object.Instantiate(explosion, base.transform.position, Quaternion.identity); - Object.Destroy(base.gameObject); - } -} diff --git a/Assembly_CSharp/Tower/Obelisk.cs b/Assembly_CSharp/Tower/Obelisk.cs deleted file mode 100644 index 549f3b4..0000000 --- a/Assembly_CSharp/Tower/Obelisk.cs +++ /dev/null @@ -1,99 +0,0 @@ -using UnityEngine; - -public class Obelisk : Tower -{ - [SerializeField] - private GameObject beam; - - [SerializeField] - private AudioSource audioS; - - private bool soundPlaying; - - private IDamageable lastThingIHit; - - private float timeOnTarget; - - protected override void Update() - { - if (currentTarget != null) - { - if (turret != null) - { - AimTurret(); - } - GainXP(); - } - else - { - beam.SetActive(value: false); - PlaySound(onOff: false); - } - timeSinceLastShot += Time.deltaTime; - if (currentTarget != null && timeSinceLastShot > rps) - { - Fire(); - timeSinceLastShot = 0f; - } - } - - protected override void Fire() - { - if (consumesMana) - { - int manaCost = (int)((float)base.damage * manaConsumptionRate); - if (!ResourceManager.instance.CheckMana(manaCost)) - { - beam.SetActive(value: false); - PlaySound(onOff: false); - return; - } - ResourceManager.instance.SpendMana(manaCost); - } - DealDamage(); - } - - protected override void AimTurret() - { - Vector3 forward = currentTarget.transform.position - turret.transform.position + Vector3.up * 0.5f; - Quaternion rotation = Quaternion.LookRotation(forward, Vector3.up); - turret.transform.rotation = rotation; - beam.transform.localScale = new Vector3(1f, 1f, forward.magnitude); - } - - private void DealDamage() - { - IDamageable component = currentTarget.GetComponent<IDamageable>(); - if (component != null) - { - if (component == lastThingIHit) - { - timeOnTarget += rps; - } - else - { - timeOnTarget = 0f; - lastThingIHit = component; - } - int num = Mathf.Clamp(Mathf.FloorToInt(timeOnTarget * TowerManager.instance.obeliskTimeOnTargetMultiplier), 0, base.damage); - component.TakeDamage(towerType, base.damage + num, base.healthDamage, base.armorDamage, base.shieldDamage, base.slowPercent, base.bleedPercent, base.burnPercent, base.poisonPercent, base.critChance, base.stunChance); - beam.SetActive(value: true); - PlaySound(onOff: true); - } - } - - private void PlaySound(bool onOff) - { - if (onOff && !soundPlaying) - { - audioS.volume = OptionsMenu.instance.masterVolume * OptionsMenu.instance.sfxVolume; - audioS.Play(); - soundPlaying = true; - } - else if (!onOff && soundPlaying) - { - audioS.Stop(); - soundPlaying = false; - } - } -} diff --git a/Assembly_CSharp/Tower/RadarTower.cs b/Assembly_CSharp/Tower/RadarTower.cs deleted file mode 100644 index e0d8d1d..0000000 --- a/Assembly_CSharp/Tower/RadarTower.cs +++ /dev/null @@ -1,71 +0,0 @@ -using UnityEngine; - -public class RadarTower : Tower -{ - [SerializeField] - private GameObject biPlanePrefab; - - [SerializeField] - private BiPlane myPlane; - - protected override void Start() - { - if (myPlane == null) - { - myPlane = Object.Instantiate(biPlanePrefab, base.transform.position + new Vector3(-50f, 5f, 0f), Quaternion.identity).GetComponent<BiPlane>(); - } - base.Start(); - } - - public override void SetStats() - { - base.SetStats(); - if (myPlane == null) - { - myPlane = Object.Instantiate(biPlanePrefab, base.transform.position + new Vector3(-50f, 5f, 0f), Quaternion.identity).GetComponent<BiPlane>(); - } - myPlane.damage = base.damage; - myPlane.healthDamage = base.healthDamage; - myPlane.armorDamage = base.armorDamage; - myPlane.shieldDamage = base.shieldDamage; - myPlane.rps = rps; - myPlane.slowPercent = base.slowPercent; - myPlane.bleedPercent = base.bleedPercent; - myPlane.burnPercent = base.burnPercent; - myPlane.poisonPercent = base.poisonPercent; - myPlane.critChance = base.critChance; - myPlane.stunChance = base.stunChance; - } - - protected override void Update() - { - if (currentTarget != null) - { - if (turret != null) - { - AimTurret(); - } - GainXP(); - } - timeSinceLastShot += Time.deltaTime; - if (currentTarget != null && timeSinceLastShot > 3f) - { - SendTargetInfo(currentTarget); - timeSinceLastShot = 0f; - } - } - - private void SendTargetInfo(GameObject target) - { - if (myPlane.target == null) - { - myPlane.target = target; - } - } - - public override void Demolish() - { - Object.Destroy(myPlane.gameObject); - base.Demolish(); - } -} diff --git a/Assembly_CSharp/Tower/TeslaCoil.cs b/Assembly_CSharp/Tower/TeslaCoil.cs deleted file mode 100644 index 97954e7..0000000 --- a/Assembly_CSharp/Tower/TeslaCoil.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections; -using UnityEngine; - -public class TeslaCoil : Tower -{ - [SerializeField] - private GameObject lightningTrail; - - protected override void AimTurret() - { - } - - protected override void Fire() - { - if (consumesMana) - { - int manaCost = (int)((float)base.damage * manaConsumptionRate); - if (!ResourceManager.instance.CheckMana(manaCost)) - { - return; - } - ResourceManager.instance.SpendMana(manaCost); - } - Vector3 position = base.transform.position; - position.y = 0f; - Collider[] array = Physics.OverlapSphere(position, base.range, enemyLayerMask, QueryTriggerInteraction.Collide); - for (int i = 0; i < array.Length; i++) - { - array[i].GetComponent<IDamageable>()?.TakeDamage(towerType, base.damage, base.healthDamage, base.armorDamage, base.shieldDamage, base.slowPercent, base.bleedPercent, base.burnPercent, base.poisonPercent, base.critChance, base.stunChance); - } - SFXManager.instance.PlaySound(Sound.TeslaZap, base.transform.position); - StartCoroutine(DrawLightning()); - } - - private IEnumerator DrawLightning() - { - for (float i = 0f; i <= (float)Math.PI * 2f; i += 0.5f) - { - Vector3 vector = new Vector3(UnityEngine.Random.Range(-0.5f, 0.5f), UnityEngine.Random.Range(-0.5f, 0.5f), UnityEngine.Random.Range(-0.5f, 0.5f)); - lightningTrail.transform.position = vector + new Vector3(base.transform.position.x + Mathf.Sin(i) * base.range, 0.75f, base.transform.position.z + Mathf.Cos(i) * base.range); - yield return new WaitForEndOfFrame(); - } - } -} diff --git a/Assembly_CSharp/Tower/Tower.cs b/Assembly_CSharp/Tower/Tower.cs deleted file mode 100644 index 4098bd6..0000000 --- a/Assembly_CSharp/Tower/Tower.cs +++ /dev/null @@ -1,509 +0,0 @@ -using UnityEngine; - -public class Tower : MonoBehaviour, IBuildable -{ - public enum Priority - { - Progress, - NearDeath, - MostHealth, - MostArmor, - MostShield, - LeastHealth, - LeastArmor, - LeastShield, - Fastest, - Slowest, - Marked - } - - public TowerType towerType; - - public bool squareUI; - - [SerializeField] - protected GameObject towerUI; - - public Priority[] priorities = new Priority[3]; - - [SerializeField] - protected GameObject turret; - - [SerializeField] - protected bool towerVerticalyAims = true; - - [SerializeField] - protected Transform muzzle; - - [SerializeField] - protected GameObject projectile; - - [SerializeField] - protected float projectileSpeed = 10f; - - [SerializeField] - protected GameObject extraProjectileFX; - - [SerializeField] - protected int baseDamage; - - [SerializeField] - protected int baseHealthDamage; - - [SerializeField] - protected int baseArmorDamage; - - [SerializeField] - protected int baseShieldDamage; - - public float rpm; - - protected float rps; - - [SerializeField] - protected float baseRange; - - [SerializeField] - protected float baseSlowPercentage; - - [SerializeField] - protected float baseBleedPercentage; - - [SerializeField] - protected float baseBurnPercentage; - - [SerializeField] - protected float basePoisonPercentage; - - [SerializeField] - protected LayerMask enemyLayerMask; - - [SerializeField] - protected LayerMask buildingLayerMask; - - public bool consumesMana; - - public float manaConsumptionRate; - - public float finalManaConsumption; - - public int upgradeCostMultiplier = 1; - - private int damageUpgrade; - - private int healthDamageUpgrade; - - private int armorDamageUpgrade; - - private int shieldDamageUpgrade; - - private int heightBonus; - - protected float timeSinceLastShot; - - private float lastTargetUpdate = 1f; - - protected GameObject currentTarget; - - [SerializeField] - protected float baseBlastRadius; - - public int level { get; private set; } - - public float healthXP { get; private set; } - - public float armorXP { get; private set; } - - public float shieldXP { get; private set; } - - public int damage { get; private set; } - - public int healthDamage { get; private set; } - - public int armorDamage { get; private set; } - - public int shieldDamage { get; private set; } - - public float range { get; private set; } - - public float slowPercent { get; private set; } - - public float bleedPercent { get; private set; } - - public float burnPercent { get; private set; } - - public float poisonPercent { get; private set; } - - public float critChance { get; private set; } - - public float stunChance { get; private set; } - - public float blastRadius { get; private set; } - - protected virtual void Start() - { - level = 1; - SetStats(); - TowerManager.instance.AddNewTower(this, towerType); - DetectHouses(); - priorities[0] = (priorities[1] = (priorities[2] = Priority.Progress)); - } - - public virtual void SetStats() - { - heightBonus = (int)Mathf.Round(base.transform.position.y * 3f - 1f); - damage = Mathf.Max(baseDamage + heightBonus + damageUpgrade + TowerManager.instance.GetBonusBaseDamage(towerType), 0); - healthDamage = baseHealthDamage + healthDamageUpgrade + TowerManager.instance.GetBonusHealthDamage(towerType); - armorDamage = baseArmorDamage + armorDamageUpgrade + TowerManager.instance.GetBonusArmorDamage(towerType); - shieldDamage = baseShieldDamage + shieldDamageUpgrade + TowerManager.instance.GetBonusShieldDamage(towerType); - rps = 60f / rpm; - range = baseRange + (float)heightBonus / 2f + TowerManager.instance.GetBonusRange(towerType); - slowPercent = baseSlowPercentage + TowerManager.instance.GetBonusSlow(towerType); - bleedPercent = baseBleedPercentage + TowerManager.instance.GetBonusBleed(towerType); - burnPercent = baseBurnPercentage + TowerManager.instance.GetBonusBurn(towerType); - poisonPercent = basePoisonPercentage + TowerManager.instance.GetBonusPoison(towerType); - blastRadius = baseBlastRadius + TowerManager.instance.GetBonusBlast(towerType); - finalManaConsumption = manaConsumptionRate + TowerManager.instance.GetManaConsumptionBonus(towerType); - if (TowerManager.instance.GetManaConsumptionBonus(towerType) > 0f) - { - consumesMana = true; - } - critChance = TowerManager.instance.GetCritChance(towerType) + TowerManager.instance.GetCritChanceLevelMultiplier(towerType) * (float)level / 100f; - stunChance = TowerManager.instance.GetStunChance(towerType); - } - - private void FixedUpdate() - { - if (lastTargetUpdate <= 0f) - { - DetectEnemies(); - } - else - { - lastTargetUpdate -= Time.fixedDeltaTime; - } - } - - protected virtual void Update() - { - if (currentTarget != null) - { - if (turret != null) - { - AimTurret(); - } - GainXP(); - } - timeSinceLastShot += Time.deltaTime; - if (currentTarget != null && timeSinceLastShot > rps) - { - Fire(); - timeSinceLastShot = 0f; - } - } - - private void DetectHouses() - { - if (Physics.Raycast(base.transform.position + new Vector3(1f, 1f, 0f), -base.transform.up, out var hitInfo, 1f, buildingLayerMask, QueryTriggerInteraction.Ignore)) - { - CheckForHouse(hitInfo); - } - if (Physics.Raycast(base.transform.position + new Vector3(-1f, 1f, 0f), -base.transform.up, out hitInfo, 1f, buildingLayerMask, QueryTriggerInteraction.Ignore)) - { - CheckForHouse(hitInfo); - } - if (Physics.Raycast(base.transform.position + new Vector3(0f, 1f, 1f), -base.transform.up, out hitInfo, 1f, buildingLayerMask, QueryTriggerInteraction.Ignore)) - { - CheckForHouse(hitInfo); - } - if (Physics.Raycast(base.transform.position + new Vector3(0f, 1f, -1f), -base.transform.up, out hitInfo, 1f, buildingLayerMask, QueryTriggerInteraction.Ignore)) - { - CheckForHouse(hitInfo); - } - } - - private void CheckForHouse(RaycastHit hit) - { - if (hit.collider.GetComponent<House>() != null && (double)Mathf.Abs(hit.collider.transform.position.y - base.transform.position.y) <= 0.001) - { - hit.collider.GetComponent<House>().AddDefender(this); - } - } - - public void TogglePriority(int index, int direction) - { - priorities[index] = (Priority)(((int)(priorities[index] + direction) % 11 + 11) % 11); - } - - protected virtual void Fire() - { - if (consumesMana) - { - int manaCost = (int)((float)damage * finalManaConsumption); - if (!ResourceManager.instance.CheckMana(manaCost)) - { - return; - } - ResourceManager.instance.SpendMana(manaCost); - } - GameObject gameObject = Object.Instantiate(projectile, muzzle.position, muzzle.rotation); - gameObject.GetComponent<Projectile>().SetStats(towerType, currentTarget, projectileSpeed, damage, healthDamage, armorDamage, shieldDamage, slowPercent, bleedPercent, burnPercent, poisonPercent, critChance, stunChance); - if (extraProjectileFX != null) - { - GameObject gameObject2 = Object.Instantiate(extraProjectileFX, gameObject.transform.position, gameObject.transform.rotation); - gameObject2.transform.SetParent(gameObject.transform); - gameObject2.GetComponent<ProjectileFX>().SetFX(bleedPercent, burnPercent, poisonPercent, slowPercent, consumesMana); - Projectile component = gameObject.GetComponent<Projectile>(); - if (component.detachOnDestruction == null) - { - component.detachOnDestruction = gameObject2; - component.extraFX = gameObject2.GetComponent<ProjectileFX>(); - } - } - } - - protected virtual void AimTurret() - { - Vector3 forward = currentTarget.transform.position - turret.transform.position; - if (!towerVerticalyAims) - { - forward.y = 0f; - } - Quaternion rotation = Quaternion.LookRotation(forward, Vector3.up); - turret.transform.rotation = rotation; - } - - protected void GainXP() - { - Enemy component = currentTarget.GetComponent<Enemy>(); - if (component != null) - { - if (component.shield > 0) - { - shieldXP += Time.deltaTime / (2f * range) + Time.deltaTime / 2f; - } - else if (component.armor > 0) - { - armorXP += Time.deltaTime / (2f * range) + Time.deltaTime / 2f; - } - else - { - healthXP += Time.deltaTime / (2f * range) + Time.deltaTime / 2f; - } - CheckXPAndLevelUp(); - } - } - - private void CheckXPAndLevelUp() - { - if (healthXP >= (float)(10 * level)) - { - healthXP -= 10 * level; - level++; - damageUpgrade++; - healthDamageUpgrade++; - SetStats(); - LevelUpText(); - } - if (armorXP >= (float)(10 * level)) - { - armorXP -= 10 * level; - level++; - damageUpgrade++; - armorDamageUpgrade++; - SetStats(); - LevelUpText(); - } - if (shieldXP >= (float)(10 * level)) - { - shieldXP -= 10 * level; - level++; - damageUpgrade++; - shieldDamageUpgrade++; - SetStats(); - LevelUpText(); - } - } - - private void LevelUpText() - { - Object.Instantiate(BuildingManager.instance.levelUpFX, base.transform.position, Quaternion.identity); - DamageNumber component = ObjectPool.instance.SpawnObject(ObjectPool.ObjectType.DamageNumber, base.transform.position, Quaternion.identity).GetComponent<DamageNumber>(); - component.SetText("LEVEL UP!", "Grey", 1f); - component.SetHoldTime(1f); - AchievementManager.instance.TowerLevel(level); - } - - public void BuyHealthLevel() - { - int num = (10 * level - (int)healthXP) * upgradeCostMultiplier; - if (ResourceManager.instance.CheckMoney(num)) - { - ResourceManager.instance.Spend(num); - DamageTracker.instance.AddCost(towerType, num); - healthXP -= 10 * level - num / upgradeCostMultiplier; - level++; - damageUpgrade++; - healthDamageUpgrade++; - SetStats(); - LevelUpText(); - } - } - - public void BuyArmorLevel() - { - int num = (10 * level - (int)armorXP) * upgradeCostMultiplier; - if (ResourceManager.instance.CheckMoney(num)) - { - ResourceManager.instance.Spend(num); - DamageTracker.instance.AddCost(towerType, num); - armorXP -= 10 * level - num / upgradeCostMultiplier; - level++; - damageUpgrade++; - armorDamageUpgrade++; - SetStats(); - LevelUpText(); - } - } - - public void BuyShieldLevel() - { - int num = (10 * level - (int)shieldXP) * upgradeCostMultiplier; - if (ResourceManager.instance.CheckMoney(num)) - { - ResourceManager.instance.Spend(num); - DamageTracker.instance.AddCost(towerType, num); - shieldXP -= 10 * level - num / upgradeCostMultiplier; - level++; - damageUpgrade++; - shieldDamageUpgrade++; - SetStats(); - LevelUpText(); - } - } - - private void DetectEnemies() - { - Collider[] array = Physics.OverlapSphere(base.transform.position, range, enemyLayerMask, QueryTriggerInteraction.Collide); - if (array.Length != 0) - { - currentTarget = SelectEnemy(array); - } - else - { - currentTarget = null; - } - lastTargetUpdate = Random.Range(0.25f, 1f); - } - - protected bool CheckPriority(Priority check) - { - for (int i = 0; i < priorities.Length; i++) - { - if (check == priorities[i]) - { - return true; - } - } - return false; - } - - protected int PriorityScale(Priority check) - { - for (int i = 0; i < priorities.Length; i++) - { - if (check == priorities[i]) - { - return Mathf.Clamp(3 - i, 1, 3); - } - } - return 1; - } - - protected virtual GameObject SelectEnemy(Collider[] possibleTargets) - { - GameObject result = null; - float num = -1f; - for (int i = 0; i < possibleTargets.Length; i++) - { - float num2 = 1f; - Enemy component = possibleTargets[i].GetComponent<Enemy>(); - if (CheckPriority(Priority.Progress)) - { - float f = Mathf.Max(0.001f, possibleTargets[i].GetComponent<Pathfinder>().distanceFromEnd); - num2 /= Mathf.Pow(f, PriorityScale(Priority.Progress)); - } - if (CheckPriority(Priority.NearDeath)) - { - float f2 = Mathf.Max(0.001f, component.CurrentHealth()); - num2 /= Mathf.Pow(f2, PriorityScale(Priority.NearDeath)); - } - if (CheckPriority(Priority.MostHealth)) - { - float f3 = (float)Mathf.Max(1, component.health) / 1000f; - num2 *= Mathf.Pow(f3, PriorityScale(Priority.MostHealth)); - } - if (CheckPriority(Priority.MostArmor)) - { - float f4 = (float)Mathf.Max(1, component.armor) / 1000f; - num2 *= Mathf.Pow(f4, PriorityScale(Priority.MostArmor)); - } - if (CheckPriority(Priority.MostShield)) - { - float f5 = (float)Mathf.Max(1, component.shield) / 1000f; - num2 *= Mathf.Pow(f5, PriorityScale(Priority.MostShield)); - } - if (CheckPriority(Priority.LeastHealth)) - { - float f6 = Mathf.Max(1, component.health); - num2 /= Mathf.Pow(f6, PriorityScale(Priority.LeastHealth)); - } - if (CheckPriority(Priority.LeastArmor)) - { - float f7 = Mathf.Max(1, component.armor); - num2 /= Mathf.Pow(f7, PriorityScale(Priority.LeastArmor)); - } - if (CheckPriority(Priority.LeastShield)) - { - float f8 = Mathf.Max(1, component.shield); - num2 /= Mathf.Pow(f8, PriorityScale(Priority.LeastShield)); - } - if (CheckPriority(Priority.Fastest)) - { - float f9 = Mathf.Max(0.001f, possibleTargets[i].GetComponent<Pathfinder>().speed); - num2 *= Mathf.Pow(f9, PriorityScale(Priority.Fastest)); - } - if (CheckPriority(Priority.Slowest)) - { - float f10 = Mathf.Max(0.001f, possibleTargets[i].GetComponent<Pathfinder>().speed); - num2 /= Mathf.Pow(f10, PriorityScale(Priority.Slowest)); - } - if (CheckPriority(Priority.Marked)) - { - float f11 = 1f; - if (component.mark != null) - { - f11 = (float)(component.mark.damage * (component.mark.healthDamage + component.mark.armorDamage + component.mark.shieldDamage)) * (1f + component.mark.critChance); - } - num2 *= Mathf.Pow(f11, PriorityScale(Priority.Marked)); - } - if (num2 > num) - { - result = component.gameObject; - num = num2; - } - } - return result; - } - - public void SpawnUI() - { - Object.Instantiate(towerUI, base.transform.position, Quaternion.identity).GetComponent<TowerUI>().SetStats(this); - } - - public virtual void Demolish() - { - TowerManager.instance.RemoveTower(this, towerType); - Object.Destroy(base.gameObject); - } -} diff --git a/Assembly_CSharp/Tower/TowerFlyweight.cs b/Assembly_CSharp/Tower/TowerFlyweight.cs deleted file mode 100644 index b63f8b4..0000000 --- a/Assembly_CSharp/Tower/TowerFlyweight.cs +++ /dev/null @@ -1,279 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; - -public class TowerFlyweight : MonoBehaviour -{ - private HashSet<Tower> towers = new HashSet<Tower>(); - - [SerializeField] - private BuildButtonUI myBuildButton; - - [SerializeField] - private int basePrice; - - [SerializeField] - public int priceIncrease; - - [SerializeField] - public int currentPrice; - - [SerializeField] - public int sellPrice; - - [SerializeField] - public float bonusRange; - - [SerializeField] - public int bonusBaseDamage; - - [SerializeField] - public int bonusHealthDamage; - - [SerializeField] - public int bonusArmorDamage; - - [SerializeField] - public int bonusShieldDamage; - - [SerializeField] - public float bonusSlow; - - [SerializeField] - public float bonusBleed; - - [SerializeField] - public float bonusBurn; - - [SerializeField] - public float bonusPoison; - - [SerializeField] - public float bonusBlast; - - [SerializeField] - public float critChance; - - [SerializeField] - public float critChanceLevelMultiplier; - - [SerializeField] - public float stunChance; - - [SerializeField] - public float manaConsumptionAddition; - - [SerializeField] - private TowerType towerTypeForDamageTracker; - - public void AddNewTower(Tower newTower) - { - towers.Add(newTower); - currentPrice = basePrice + towers.Count * priceIncrease; - sellPrice = basePrice + (towers.Count - 1) * priceIncrease; - myBuildButton.UpdatePriceText(); - } - - public void RemoveTower(Tower newTower) - { - towers.Remove(newTower); - currentPrice = basePrice + towers.Count * priceIncrease; - sellPrice = basePrice + (towers.Count - 1) * priceIncrease; - myBuildButton.UpdatePriceText(); - ResourceManager.instance.AddMoney(basePrice + towers.Count * priceIncrease); - DamageTracker.instance.AddCost(towerTypeForDamageTracker, -(basePrice + towers.Count * priceIncrease)); - } - - public void UpdateTowerStats() - { - foreach (Tower tower in towers) - { - tower.SetStats(); - } - if (myBuildButton != null) - { - myBuildButton.UpdateModifiersText(); - } - } - - public void AddManaAddition(float bonus) - { - manaConsumptionAddition += bonus; - foreach (Tower tower in towers) - { - tower.SetStats(); - } - if (myBuildButton != null) - { - myBuildButton.UpdateModifiersText(); - } - } - - public void AddStunChance(float bonus) - { - stunChance += bonus; - foreach (Tower tower in towers) - { - tower.SetStats(); - } - if (myBuildButton != null) - { - myBuildButton.UpdateModifiersText(); - } - } - - public void AddCritChance(float bonus) - { - critChance += bonus; - foreach (Tower tower in towers) - { - tower.SetStats(); - } - if (myBuildButton != null) - { - myBuildButton.UpdateModifiersText(); - } - } - - public void AddCritChanceLevelMultiplier(float bonus) - { - critChanceLevelMultiplier += bonus; - foreach (Tower tower in towers) - { - tower.SetStats(); - } - if (myBuildButton != null) - { - myBuildButton.UpdateModifiersText(); - } - } - - public void AddBonusRange(float bonus) - { - bonusRange += bonus; - foreach (Tower tower in towers) - { - tower.SetStats(); - } - if (myBuildButton != null) - { - myBuildButton.UpdateModifiersText(); - } - } - - public void AddBonusBaseDamage(int bonus) - { - bonusBaseDamage += bonus; - foreach (Tower tower in towers) - { - tower.SetStats(); - } - if (myBuildButton != null) - { - myBuildButton.UpdateModifiersText(); - } - } - - public void AddBonusHealthDamage(int bonus) - { - bonusHealthDamage += bonus; - foreach (Tower tower in towers) - { - tower.SetStats(); - } - if (myBuildButton != null) - { - myBuildButton.UpdateModifiersText(); - } - } - - public void AddBonusArmorDamage(int bonus) - { - bonusArmorDamage += bonus; - foreach (Tower tower in towers) - { - tower.SetStats(); - } - if (myBuildButton != null) - { - myBuildButton.UpdateModifiersText(); - } - } - - public void AddBonusShieldDamage(int bonus) - { - bonusShieldDamage += bonus; - foreach (Tower tower in towers) - { - tower.SetStats(); - } - if (myBuildButton != null) - { - myBuildButton.UpdateModifiersText(); - } - } - - public void AddBonusSlow(float bonus) - { - bonusSlow += bonus; - foreach (Tower tower in towers) - { - tower.SetStats(); - } - if (myBuildButton != null) - { - myBuildButton.UpdateModifiersText(); - } - } - - public void AddBonusBleed(float bonus) - { - bonusBleed += bonus; - foreach (Tower tower in towers) - { - tower.SetStats(); - } - if (myBuildButton != null) - { - myBuildButton.UpdateModifiersText(); - } - } - - public void AddBonusBurn(float bonus) - { - bonusBurn += bonus; - foreach (Tower tower in towers) - { - tower.SetStats(); - } - if (myBuildButton != null) - { - myBuildButton.UpdateModifiersText(); - } - } - - public void AddBonusPoison(float bonus) - { - bonusPoison += bonus; - foreach (Tower tower in towers) - { - tower.SetStats(); - } - if (myBuildButton != null) - { - myBuildButton.UpdateModifiersText(); - } - } - - public void AddBonusBlast(float bonus) - { - bonusBlast += bonus; - foreach (Tower tower in towers) - { - tower.SetStats(); - } - if (myBuildButton != null) - { - myBuildButton.UpdateModifiersText(); - } - } -} diff --git a/Assembly_CSharp/Tower/TowerManager.cs b/Assembly_CSharp/Tower/TowerManager.cs deleted file mode 100644 index abdca52..0000000 --- a/Assembly_CSharp/Tower/TowerManager.cs +++ /dev/null @@ -1,1386 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; - -public class TowerManager : MonoBehaviour -{ - public static TowerManager instance; - - [SerializeField] - private TowerFlyweight global; - - [SerializeField] - private TowerFlyweight crossbow; - - [SerializeField] - private TowerFlyweight morter; - - [SerializeField] - private TowerFlyweight teslaCoil; - - [SerializeField] - private TowerFlyweight flameThrower; - - [SerializeField] - private TowerFlyweight poisonSprayer; - - [SerializeField] - private TowerFlyweight frostKeep; - - [SerializeField] - private TowerFlyweight radar; - - [SerializeField] - private TowerFlyweight obelisk; - - [SerializeField] - private TowerFlyweight particleCannon; - - [SerializeField] - private TowerFlyweight shredder; - - [SerializeField] - private TowerFlyweight encampment; - - [SerializeField] - private TowerFlyweight lookout; - - [SerializeField] - private TowerFlyweight siphon; - - public HashSet<TowerType> towersUsed = new HashSet<TowerType>(); - - private bool usedAllTowers; - - public float obeliskTimeOnTargetMultiplier; - - private void Awake() - { - instance = this; - } - - public void AddNewTower(Tower t, TowerType type) - { - if (type != TowerType.Siphon) - { - towersUsed.Add(type); - } - if (!usedAllTowers) - { - usedAllTowers = AchievementManager.instance.CheckAllTowers(); - } - switch (type) - { - case TowerType.Crossbow: - crossbow.AddNewTower(t); - break; - case TowerType.Morter: - morter.AddNewTower(t); - break; - case TowerType.TeslaCoil: - teslaCoil.AddNewTower(t); - break; - case TowerType.FlameThrower: - flameThrower.AddNewTower(t); - break; - case TowerType.PoisonSprayer: - poisonSprayer.AddNewTower(t); - break; - case TowerType.Frost: - frostKeep.AddNewTower(t); - break; - case TowerType.Radar: - radar.AddNewTower(t); - break; - case TowerType.Obelisk: - obelisk.AddNewTower(t); - break; - case TowerType.ParticleCannon: - particleCannon.AddNewTower(t); - break; - case TowerType.Shredder: - shredder.AddNewTower(t); - break; - case TowerType.Encampment: - encampment.AddNewTower(t); - break; - case TowerType.Lookout: - lookout.AddNewTower(t); - break; - default: - Debug.LogError("Failed to add tower to flyweight"); - break; - } - } - - public void RemoveTower(Tower t, TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - crossbow.RemoveTower(t); - break; - case TowerType.Morter: - morter.RemoveTower(t); - break; - case TowerType.TeslaCoil: - teslaCoil.RemoveTower(t); - break; - case TowerType.FlameThrower: - flameThrower.RemoveTower(t); - break; - case TowerType.PoisonSprayer: - poisonSprayer.RemoveTower(t); - break; - case TowerType.Frost: - frostKeep.RemoveTower(t); - break; - case TowerType.Obelisk: - obelisk.RemoveTower(t); - break; - case TowerType.Radar: - radar.RemoveTower(t); - break; - case TowerType.ParticleCannon: - particleCannon.RemoveTower(t); - break; - case TowerType.Shredder: - shredder.RemoveTower(t); - break; - case TowerType.Encampment: - encampment.RemoveTower(t); - break; - case TowerType.Lookout: - lookout.RemoveTower(t); - break; - default: - Debug.LogError("Failed to add tower to flyweight"); - break; - } - } - - public void UpdateAllTowers() - { - crossbow.UpdateTowerStats(); - morter.UpdateTowerStats(); - teslaCoil.UpdateTowerStats(); - flameThrower.UpdateTowerStats(); - poisonSprayer.UpdateTowerStats(); - frostKeep.UpdateTowerStats(); - radar.UpdateTowerStats(); - obelisk.UpdateTowerStats(); - particleCannon.UpdateTowerStats(); - shredder.UpdateTowerStats(); - encampment.UpdateTowerStats(); - lookout.UpdateTowerStats(); - } - - public int GetSellPrice(TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - return crossbow.sellPrice; - case TowerType.Morter: - return morter.sellPrice; - case TowerType.TeslaCoil: - return teslaCoil.sellPrice; - case TowerType.FlameThrower: - return flameThrower.sellPrice; - case TowerType.PoisonSprayer: - return poisonSprayer.sellPrice; - case TowerType.Frost: - return frostKeep.sellPrice; - case TowerType.Obelisk: - return obelisk.sellPrice; - case TowerType.Radar: - return radar.sellPrice; - case TowerType.ParticleCannon: - return particleCannon.sellPrice; - case TowerType.Shredder: - return shredder.sellPrice; - case TowerType.Encampment: - return encampment.sellPrice; - case TowerType.Lookout: - return lookout.sellPrice; - default: - Debug.LogError("Failed to add tower to flyweight"); - return -1; - } - } - - public float GetManaConsumptionBonus(TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - return global.manaConsumptionAddition + crossbow.manaConsumptionAddition; - case TowerType.Morter: - return global.manaConsumptionAddition + morter.manaConsumptionAddition; - case TowerType.TeslaCoil: - return global.manaConsumptionAddition + teslaCoil.manaConsumptionAddition; - case TowerType.FlameThrower: - return global.manaConsumptionAddition + flameThrower.manaConsumptionAddition; - case TowerType.PoisonSprayer: - return global.manaConsumptionAddition + poisonSprayer.manaConsumptionAddition; - case TowerType.Frost: - return global.manaConsumptionAddition + frostKeep.manaConsumptionAddition; - case TowerType.Radar: - return global.manaConsumptionAddition + radar.manaConsumptionAddition; - case TowerType.Obelisk: - return global.manaConsumptionAddition + obelisk.manaConsumptionAddition; - case TowerType.ParticleCannon: - return global.manaConsumptionAddition + particleCannon.manaConsumptionAddition; - case TowerType.Shredder: - return global.manaConsumptionAddition + shredder.manaConsumptionAddition; - case TowerType.Encampment: - return global.manaConsumptionAddition + encampment.manaConsumptionAddition; - case TowerType.Lookout: - return global.manaConsumptionAddition + lookout.manaConsumptionAddition; - default: - Debug.Log("Failed to get global bonus"); - return 0f; - } - } - - public float GetCritChance(TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - return global.critChance + crossbow.critChance; - case TowerType.Morter: - return global.critChance + morter.critChance; - case TowerType.TeslaCoil: - return global.critChance + teslaCoil.critChance; - case TowerType.FlameThrower: - return global.critChance + flameThrower.critChance; - case TowerType.PoisonSprayer: - return global.critChance + poisonSprayer.critChance; - case TowerType.Frost: - return global.critChance + frostKeep.critChance; - case TowerType.Radar: - return global.critChance + radar.critChance; - case TowerType.Obelisk: - return global.critChance + obelisk.critChance; - case TowerType.ParticleCannon: - return global.critChance + particleCannon.critChance; - case TowerType.Shredder: - return global.critChance + shredder.critChance; - case TowerType.Encampment: - return global.critChance + encampment.critChance; - case TowerType.Lookout: - return global.critChance + lookout.critChance; - default: - Debug.Log("Failed to get global bonus"); - return 0f; - } - } - - public float GetStunChance(TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - return global.stunChance + crossbow.stunChance; - case TowerType.Morter: - return global.stunChance + morter.stunChance; - case TowerType.TeslaCoil: - return global.stunChance + teslaCoil.stunChance; - case TowerType.FlameThrower: - return global.stunChance + flameThrower.stunChance; - case TowerType.PoisonSprayer: - return global.stunChance + poisonSprayer.stunChance; - case TowerType.Frost: - return global.stunChance + frostKeep.stunChance; - case TowerType.Radar: - return global.stunChance + radar.stunChance; - case TowerType.Obelisk: - return global.stunChance + obelisk.stunChance; - case TowerType.ParticleCannon: - return global.stunChance + particleCannon.stunChance; - case TowerType.Shredder: - return global.stunChance + shredder.stunChance; - case TowerType.Encampment: - return global.stunChance + encampment.stunChance; - case TowerType.Lookout: - return global.stunChance + lookout.stunChance; - default: - Debug.Log("Failed to get global bonus"); - return 0f; - } - } - - public float GetCritChanceLevelMultiplier(TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - return global.critChanceLevelMultiplier + crossbow.critChanceLevelMultiplier; - case TowerType.Morter: - return global.critChanceLevelMultiplier + morter.critChanceLevelMultiplier; - case TowerType.TeslaCoil: - return global.critChanceLevelMultiplier + teslaCoil.critChanceLevelMultiplier; - case TowerType.FlameThrower: - return global.critChanceLevelMultiplier + flameThrower.critChanceLevelMultiplier; - case TowerType.PoisonSprayer: - return global.critChanceLevelMultiplier + poisonSprayer.critChanceLevelMultiplier; - case TowerType.Frost: - return global.critChanceLevelMultiplier + frostKeep.critChanceLevelMultiplier; - case TowerType.Radar: - return global.critChanceLevelMultiplier + radar.critChanceLevelMultiplier; - case TowerType.Obelisk: - return global.critChanceLevelMultiplier + obelisk.critChanceLevelMultiplier; - case TowerType.ParticleCannon: - return global.critChanceLevelMultiplier + particleCannon.critChanceLevelMultiplier; - case TowerType.Shredder: - return global.critChanceLevelMultiplier + shredder.critChanceLevelMultiplier; - case TowerType.Encampment: - return global.critChanceLevelMultiplier + encampment.critChanceLevelMultiplier; - case TowerType.Lookout: - return global.critChanceLevelMultiplier + lookout.critChanceLevelMultiplier; - default: - Debug.Log("Failed to get global bonus"); - return 0f; - } - } - - public float GetBonusRange(TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - return global.bonusRange + crossbow.bonusRange; - case TowerType.Morter: - return global.bonusRange + morter.bonusRange; - case TowerType.TeslaCoil: - return global.bonusRange + teslaCoil.bonusRange; - case TowerType.FlameThrower: - return global.bonusRange + flameThrower.bonusRange; - case TowerType.PoisonSprayer: - return global.bonusRange + poisonSprayer.bonusRange; - case TowerType.Frost: - return global.bonusRange + frostKeep.bonusRange; - case TowerType.Radar: - return global.bonusRange + radar.bonusRange; - case TowerType.Obelisk: - return global.bonusRange + obelisk.bonusRange; - case TowerType.ParticleCannon: - return global.bonusRange + particleCannon.bonusRange; - case TowerType.Shredder: - return global.bonusRange + shredder.bonusRange; - case TowerType.Encampment: - return global.bonusRange + encampment.bonusRange; - case TowerType.Lookout: - return global.bonusRange + lookout.bonusRange; - default: - Debug.Log("Failed to get global bonus"); - return 0f; - } - } - - public int GetBonusBaseDamage(TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - return global.bonusBaseDamage + crossbow.bonusBaseDamage; - case TowerType.Morter: - return global.bonusBaseDamage + morter.bonusBaseDamage; - case TowerType.TeslaCoil: - return global.bonusBaseDamage + teslaCoil.bonusBaseDamage; - case TowerType.FlameThrower: - return global.bonusBaseDamage + flameThrower.bonusBaseDamage; - case TowerType.PoisonSprayer: - return global.bonusBaseDamage + poisonSprayer.bonusBaseDamage; - case TowerType.Frost: - return global.bonusBaseDamage + frostKeep.bonusBaseDamage; - case TowerType.Radar: - return global.bonusBaseDamage + radar.bonusBaseDamage; - case TowerType.Obelisk: - return global.bonusBaseDamage + obelisk.bonusBaseDamage; - case TowerType.ParticleCannon: - return global.bonusBaseDamage + particleCannon.bonusBaseDamage; - case TowerType.Shredder: - return global.bonusBaseDamage + shredder.bonusBaseDamage; - case TowerType.Encampment: - return global.bonusBaseDamage + encampment.bonusBaseDamage; - case TowerType.Lookout: - return global.bonusBaseDamage + lookout.bonusBaseDamage; - default: - Debug.Log("Failed to get global bonus"); - return 0; - } - } - - public int GetBonusHealthDamage(TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - return global.bonusHealthDamage + crossbow.bonusHealthDamage; - case TowerType.Morter: - return global.bonusHealthDamage + morter.bonusHealthDamage; - case TowerType.TeslaCoil: - return global.bonusHealthDamage + teslaCoil.bonusHealthDamage; - case TowerType.FlameThrower: - return global.bonusHealthDamage + flameThrower.bonusHealthDamage; - case TowerType.PoisonSprayer: - return global.bonusHealthDamage + poisonSprayer.bonusHealthDamage; - case TowerType.Frost: - return global.bonusHealthDamage + frostKeep.bonusHealthDamage; - case TowerType.Radar: - return global.bonusHealthDamage + radar.bonusHealthDamage; - case TowerType.Obelisk: - return global.bonusHealthDamage + obelisk.bonusHealthDamage; - case TowerType.ParticleCannon: - return global.bonusHealthDamage + particleCannon.bonusHealthDamage; - case TowerType.Shredder: - return global.bonusHealthDamage + shredder.bonusHealthDamage; - case TowerType.Encampment: - return global.bonusHealthDamage + encampment.bonusHealthDamage; - case TowerType.Lookout: - return global.bonusHealthDamage + lookout.bonusHealthDamage; - default: - Debug.Log("Failed to get global bonus"); - return 0; - } - } - - public int GetBonusArmorDamage(TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - return global.bonusArmorDamage + crossbow.bonusArmorDamage; - case TowerType.Morter: - return global.bonusArmorDamage + morter.bonusArmorDamage; - case TowerType.TeslaCoil: - return global.bonusArmorDamage + teslaCoil.bonusArmorDamage; - case TowerType.FlameThrower: - return global.bonusArmorDamage + flameThrower.bonusArmorDamage; - case TowerType.PoisonSprayer: - return global.bonusArmorDamage + poisonSprayer.bonusArmorDamage; - case TowerType.Frost: - return global.bonusArmorDamage + frostKeep.bonusArmorDamage; - case TowerType.Radar: - return global.bonusArmorDamage + radar.bonusArmorDamage; - case TowerType.Obelisk: - return global.bonusArmorDamage + obelisk.bonusArmorDamage; - case TowerType.ParticleCannon: - return global.bonusArmorDamage + particleCannon.bonusArmorDamage; - case TowerType.Shredder: - return global.bonusArmorDamage + shredder.bonusArmorDamage; - case TowerType.Encampment: - return global.bonusArmorDamage + encampment.bonusArmorDamage; - case TowerType.Lookout: - return global.bonusArmorDamage + lookout.bonusArmorDamage; - default: - Debug.Log("Failed to get global bonus"); - return 0; - } - } - - public int GetBonusShieldDamage(TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - return global.bonusShieldDamage + crossbow.bonusShieldDamage; - case TowerType.Morter: - return global.bonusShieldDamage + morter.bonusShieldDamage; - case TowerType.TeslaCoil: - return global.bonusShieldDamage + teslaCoil.bonusShieldDamage; - case TowerType.FlameThrower: - return global.bonusShieldDamage + flameThrower.bonusShieldDamage; - case TowerType.PoisonSprayer: - return global.bonusShieldDamage + poisonSprayer.bonusShieldDamage; - case TowerType.Frost: - return global.bonusShieldDamage + frostKeep.bonusShieldDamage; - case TowerType.Radar: - return global.bonusShieldDamage + radar.bonusShieldDamage; - case TowerType.Obelisk: - return global.bonusShieldDamage + obelisk.bonusShieldDamage; - case TowerType.ParticleCannon: - return global.bonusShieldDamage + particleCannon.bonusShieldDamage; - case TowerType.Shredder: - return global.bonusShieldDamage + shredder.bonusShieldDamage; - case TowerType.Encampment: - return global.bonusShieldDamage + encampment.bonusShieldDamage; - case TowerType.Lookout: - return global.bonusShieldDamage + lookout.bonusShieldDamage; - default: - Debug.Log("Failed to get global bonus"); - return 0; - } - } - - public float GetBonusSlow(TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - return global.bonusSlow + crossbow.bonusSlow; - case TowerType.Morter: - return global.bonusSlow + morter.bonusSlow; - case TowerType.TeslaCoil: - return global.bonusSlow + teslaCoil.bonusSlow; - case TowerType.FlameThrower: - return global.bonusSlow + flameThrower.bonusSlow; - case TowerType.PoisonSprayer: - return global.bonusSlow + poisonSprayer.bonusSlow; - case TowerType.Frost: - return global.bonusSlow + frostKeep.bonusSlow; - case TowerType.Radar: - return global.bonusSlow + radar.bonusSlow; - case TowerType.Obelisk: - return global.bonusSlow + obelisk.bonusSlow; - case TowerType.ParticleCannon: - return global.bonusSlow + particleCannon.bonusSlow; - case TowerType.Shredder: - return global.bonusSlow + shredder.bonusSlow; - case TowerType.Encampment: - return global.bonusSlow + encampment.bonusSlow; - case TowerType.Lookout: - return global.bonusSlow + lookout.bonusSlow; - default: - Debug.Log("Failed to get global bonus"); - return 0f; - } - } - - public float GetBonusBleed(TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - return global.bonusBleed + crossbow.bonusBleed; - case TowerType.Morter: - return global.bonusBleed + morter.bonusBleed; - case TowerType.TeslaCoil: - return global.bonusBleed + teslaCoil.bonusBleed; - case TowerType.FlameThrower: - return global.bonusBleed + flameThrower.bonusBleed; - case TowerType.PoisonSprayer: - return global.bonusBleed + poisonSprayer.bonusBleed; - case TowerType.Frost: - return global.bonusBleed + frostKeep.bonusBleed; - case TowerType.Radar: - return global.bonusBleed + radar.bonusBleed; - case TowerType.Obelisk: - return global.bonusBleed + obelisk.bonusBleed; - case TowerType.ParticleCannon: - return global.bonusBleed + particleCannon.bonusBleed; - case TowerType.Shredder: - return global.bonusBleed + shredder.bonusBleed; - case TowerType.Encampment: - return global.bonusBleed + encampment.bonusBleed; - case TowerType.Lookout: - return global.bonusBleed + lookout.bonusBleed; - default: - Debug.Log("Failed to get global bonus"); - return 0f; - } - } - - public float GetBonusBurn(TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - return global.bonusBurn + crossbow.bonusBurn; - case TowerType.Morter: - return global.bonusBurn + morter.bonusBurn; - case TowerType.TeslaCoil: - return global.bonusBurn + teslaCoil.bonusBurn; - case TowerType.FlameThrower: - return global.bonusBurn + flameThrower.bonusBurn; - case TowerType.PoisonSprayer: - return global.bonusBurn + poisonSprayer.bonusBurn; - case TowerType.Frost: - return global.bonusBurn + frostKeep.bonusBurn; - case TowerType.Radar: - return global.bonusBurn + radar.bonusBurn; - case TowerType.Obelisk: - return global.bonusBurn + obelisk.bonusBurn; - case TowerType.ParticleCannon: - return global.bonusBurn + particleCannon.bonusBurn; - case TowerType.Shredder: - return global.bonusBurn + shredder.bonusBurn; - case TowerType.Encampment: - return global.bonusBurn + encampment.bonusBurn; - case TowerType.Lookout: - return global.bonusBurn + lookout.bonusBurn; - default: - Debug.Log("Failed to get global bonus"); - return 0f; - } - } - - public float GetBonusPoison(TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - return global.bonusPoison + crossbow.bonusPoison; - case TowerType.Morter: - return global.bonusPoison + morter.bonusPoison; - case TowerType.TeslaCoil: - return global.bonusPoison + teslaCoil.bonusPoison; - case TowerType.FlameThrower: - return global.bonusPoison + flameThrower.bonusPoison; - case TowerType.PoisonSprayer: - return global.bonusPoison + poisonSprayer.bonusPoison; - case TowerType.Frost: - return global.bonusPoison + frostKeep.bonusPoison; - case TowerType.Radar: - return global.bonusPoison + radar.bonusPoison; - case TowerType.Obelisk: - return global.bonusPoison + obelisk.bonusPoison; - case TowerType.ParticleCannon: - return global.bonusPoison + particleCannon.bonusPoison; - case TowerType.Shredder: - return global.bonusPoison + shredder.bonusPoison; - case TowerType.Encampment: - return global.bonusPoison + encampment.bonusPoison; - case TowerType.Lookout: - return global.bonusPoison + lookout.bonusPoison; - default: - Debug.Log("Failed to get global bonus"); - return 0f; - } - } - - public float GetBonusBlast(TowerType type) - { - switch (type) - { - case TowerType.Crossbow: - return global.bonusBlast + crossbow.bonusBlast; - case TowerType.Morter: - return global.bonusBlast + morter.bonusBlast; - case TowerType.TeslaCoil: - return global.bonusBlast + teslaCoil.bonusBlast; - case TowerType.FlameThrower: - return global.bonusBlast + flameThrower.bonusBlast; - case TowerType.PoisonSprayer: - return global.bonusBlast + poisonSprayer.bonusBlast; - case TowerType.Frost: - return global.bonusBlast + frostKeep.bonusBlast; - case TowerType.Radar: - return global.bonusBlast + radar.bonusBlast; - case TowerType.Obelisk: - return global.bonusBlast + obelisk.bonusBlast; - case TowerType.ParticleCannon: - return global.bonusBlast + particleCannon.bonusBlast; - case TowerType.Shredder: - return global.bonusBlast + shredder.bonusBlast; - case TowerType.Encampment: - return global.bonusBlast + encampment.bonusBlast; - case TowerType.Lookout: - return global.bonusBlast + lookout.bonusBlast; - default: - Debug.Log("Failed to get global bonus"); - return 0f; - } - } - - public void AddManaConsumption(TowerType type, float value) - { - switch (type) - { - case TowerType.Crossbow: - crossbow.AddManaAddition(value); - break; - case TowerType.Morter: - morter.AddManaAddition(value); - break; - case TowerType.TeslaCoil: - teslaCoil.AddManaAddition(value); - break; - case TowerType.FlameThrower: - flameThrower.AddManaAddition(value); - break; - case TowerType.PoisonSprayer: - poisonSprayer.AddManaAddition(value); - break; - case TowerType.Frost: - frostKeep.AddManaAddition(value); - break; - case TowerType.Radar: - radar.AddManaAddition(value); - break; - case TowerType.Obelisk: - obelisk.AddManaAddition(value); - break; - case TowerType.ParticleCannon: - particleCannon.AddManaAddition(value); - break; - case TowerType.Shredder: - shredder.AddManaAddition(value); - break; - case TowerType.Encampment: - encampment.AddManaAddition(value); - break; - case TowerType.Lookout: - lookout.AddManaAddition(value); - break; - case TowerType.Global: - global.AddManaAddition(value); - UpdateAllTowers(); - break; - default: - Debug.Log("Failed to set global bonus"); - break; - } - } - - public void AddCritChance(TowerType type, float value) - { - switch (type) - { - case TowerType.Crossbow: - crossbow.AddCritChance(value); - break; - case TowerType.Morter: - morter.AddCritChance(value); - break; - case TowerType.TeslaCoil: - teslaCoil.AddCritChance(value); - break; - case TowerType.FlameThrower: - flameThrower.AddCritChance(value); - break; - case TowerType.PoisonSprayer: - poisonSprayer.AddCritChance(value); - break; - case TowerType.Frost: - frostKeep.AddCritChance(value); - break; - case TowerType.Radar: - radar.AddCritChance(value); - break; - case TowerType.Obelisk: - obelisk.AddCritChance(value); - break; - case TowerType.ParticleCannon: - particleCannon.AddCritChance(value); - break; - case TowerType.Shredder: - shredder.AddCritChance(value); - break; - case TowerType.Encampment: - encampment.AddCritChance(value); - break; - case TowerType.Lookout: - lookout.AddCritChance(value); - break; - case TowerType.Global: - global.AddCritChance(value); - UpdateAllTowers(); - break; - default: - Debug.Log("Failed to set global bonus"); - break; - } - } - - public void AddStunChance(TowerType type, float value) - { - switch (type) - { - case TowerType.Crossbow: - crossbow.AddStunChance(value); - break; - case TowerType.Morter: - morter.AddStunChance(value); - break; - case TowerType.TeslaCoil: - teslaCoil.AddStunChance(value); - break; - case TowerType.FlameThrower: - flameThrower.AddStunChance(value); - break; - case TowerType.PoisonSprayer: - poisonSprayer.AddStunChance(value); - break; - case TowerType.Frost: - frostKeep.AddStunChance(value); - break; - case TowerType.Radar: - radar.AddStunChance(value); - break; - case TowerType.Obelisk: - obelisk.AddStunChance(value); - break; - case TowerType.ParticleCannon: - particleCannon.AddStunChance(value); - break; - case TowerType.Shredder: - shredder.AddStunChance(value); - break; - case TowerType.Encampment: - encampment.AddStunChance(value); - break; - case TowerType.Lookout: - lookout.AddStunChance(value); - break; - case TowerType.Global: - global.AddStunChance(value); - UpdateAllTowers(); - break; - default: - Debug.Log("Failed to set global bonus"); - break; - } - } - - public void AddCritChanceLevelMultiplier(TowerType type, float value) - { - switch (type) - { - case TowerType.Crossbow: - crossbow.AddCritChanceLevelMultiplier(value); - break; - case TowerType.Morter: - morter.AddCritChanceLevelMultiplier(value); - break; - case TowerType.TeslaCoil: - teslaCoil.AddCritChanceLevelMultiplier(value); - break; - case TowerType.FlameThrower: - flameThrower.AddCritChanceLevelMultiplier(value); - break; - case TowerType.PoisonSprayer: - poisonSprayer.AddCritChanceLevelMultiplier(value); - break; - case TowerType.Frost: - frostKeep.AddCritChanceLevelMultiplier(value); - break; - case TowerType.Radar: - radar.AddCritChanceLevelMultiplier(value); - break; - case TowerType.Obelisk: - obelisk.AddCritChanceLevelMultiplier(value); - break; - case TowerType.ParticleCannon: - particleCannon.AddCritChanceLevelMultiplier(value); - break; - case TowerType.Shredder: - shredder.AddCritChanceLevelMultiplier(value); - break; - case TowerType.Encampment: - encampment.AddCritChanceLevelMultiplier(value); - break; - case TowerType.Lookout: - lookout.AddCritChanceLevelMultiplier(value); - break; - case TowerType.Global: - global.AddCritChanceLevelMultiplier(value); - UpdateAllTowers(); - break; - default: - Debug.Log("Failed to set global bonus"); - break; - } - } - - public void AddBonusRange(TowerType type, float value) - { - switch (type) - { - case TowerType.Crossbow: - crossbow.AddBonusRange(value); - break; - case TowerType.Morter: - morter.AddBonusRange(value); - break; - case TowerType.TeslaCoil: - teslaCoil.AddBonusRange(value); - break; - case TowerType.FlameThrower: - flameThrower.AddBonusRange(value); - break; - case TowerType.PoisonSprayer: - poisonSprayer.AddBonusRange(value); - break; - case TowerType.Frost: - frostKeep.AddBonusRange(value); - break; - case TowerType.Radar: - radar.AddBonusRange(value); - break; - case TowerType.Obelisk: - obelisk.AddBonusRange(value); - break; - case TowerType.ParticleCannon: - particleCannon.AddBonusRange(value); - break; - case TowerType.Shredder: - shredder.AddBonusRange(value); - break; - case TowerType.Encampment: - encampment.AddBonusRange(value); - break; - case TowerType.Lookout: - lookout.AddBonusRange(value); - break; - case TowerType.Global: - global.AddBonusRange(value); - UpdateAllTowers(); - break; - default: - Debug.Log("Failed to set global bonus"); - break; - } - } - - public void AddBonusBaseDamage(TowerType type, int value) - { - switch (type) - { - case TowerType.Crossbow: - crossbow.AddBonusBaseDamage(value); - break; - case TowerType.Morter: - morter.AddBonusBaseDamage(value); - break; - case TowerType.TeslaCoil: - teslaCoil.AddBonusBaseDamage(value); - break; - case TowerType.FlameThrower: - flameThrower.AddBonusBaseDamage(value); - break; - case TowerType.PoisonSprayer: - poisonSprayer.AddBonusBaseDamage(value); - break; - case TowerType.Frost: - frostKeep.AddBonusBaseDamage(value); - break; - case TowerType.Radar: - radar.AddBonusBaseDamage(value); - break; - case TowerType.Obelisk: - obelisk.AddBonusBaseDamage(value); - break; - case TowerType.ParticleCannon: - particleCannon.AddBonusBaseDamage(value); - break; - case TowerType.Shredder: - shredder.AddBonusBaseDamage(value); - break; - case TowerType.Encampment: - encampment.AddBonusBaseDamage(value); - break; - case TowerType.Lookout: - lookout.AddBonusBaseDamage(value); - break; - case TowerType.Global: - global.AddBonusBaseDamage(value); - UpdateAllTowers(); - break; - default: - Debug.Log("Failed to set global bonus"); - break; - } - } - - public void AddBonusHealthDamage(TowerType type, int value) - { - switch (type) - { - case TowerType.Crossbow: - crossbow.AddBonusHealthDamage(value); - break; - case TowerType.Morter: - morter.AddBonusHealthDamage(value); - break; - case TowerType.TeslaCoil: - teslaCoil.AddBonusHealthDamage(value); - break; - case TowerType.FlameThrower: - flameThrower.AddBonusHealthDamage(value); - break; - case TowerType.PoisonSprayer: - poisonSprayer.AddBonusHealthDamage(value); - break; - case TowerType.Frost: - frostKeep.AddBonusHealthDamage(value); - break; - case TowerType.Radar: - radar.AddBonusHealthDamage(value); - break; - case TowerType.Obelisk: - obelisk.AddBonusHealthDamage(value); - break; - case TowerType.ParticleCannon: - particleCannon.AddBonusHealthDamage(value); - break; - case TowerType.Shredder: - shredder.AddBonusHealthDamage(value); - break; - case TowerType.Encampment: - encampment.AddBonusHealthDamage(value); - break; - case TowerType.Lookout: - lookout.AddBonusHealthDamage(value); - break; - case TowerType.Global: - global.AddBonusHealthDamage(value); - UpdateAllTowers(); - break; - default: - Debug.Log("Failed to set global bonus"); - break; - } - } - - public void AddBonusArmorDamage(TowerType type, int value) - { - switch (type) - { - case TowerType.Crossbow: - crossbow.AddBonusArmorDamage(value); - break; - case TowerType.Morter: - morter.AddBonusArmorDamage(value); - break; - case TowerType.TeslaCoil: - teslaCoil.AddBonusArmorDamage(value); - break; - case TowerType.FlameThrower: - flameThrower.AddBonusArmorDamage(value); - break; - case TowerType.PoisonSprayer: - poisonSprayer.AddBonusArmorDamage(value); - break; - case TowerType.Frost: - frostKeep.AddBonusArmorDamage(value); - break; - case TowerType.Radar: - radar.AddBonusArmorDamage(value); - break; - case TowerType.Obelisk: - obelisk.AddBonusArmorDamage(value); - break; - case TowerType.ParticleCannon: - particleCannon.AddBonusArmorDamage(value); - break; - case TowerType.Shredder: - shredder.AddBonusArmorDamage(value); - break; - case TowerType.Encampment: - encampment.AddBonusArmorDamage(value); - break; - case TowerType.Lookout: - lookout.AddBonusArmorDamage(value); - break; - case TowerType.Global: - global.AddBonusArmorDamage(value); - UpdateAllTowers(); - break; - default: - Debug.Log("Failed to set global bonus"); - break; - } - } - - public void AddBonusShieldDamage(TowerType type, int value) - { - switch (type) - { - case TowerType.Crossbow: - crossbow.AddBonusShieldDamage(value); - break; - case TowerType.Morter: - morter.AddBonusShieldDamage(value); - break; - case TowerType.TeslaCoil: - teslaCoil.AddBonusShieldDamage(value); - break; - case TowerType.FlameThrower: - flameThrower.AddBonusShieldDamage(value); - break; - case TowerType.PoisonSprayer: - poisonSprayer.AddBonusShieldDamage(value); - break; - case TowerType.Frost: - frostKeep.AddBonusShieldDamage(value); - break; - case TowerType.Radar: - radar.AddBonusShieldDamage(value); - break; - case TowerType.Obelisk: - obelisk.AddBonusShieldDamage(value); - break; - case TowerType.ParticleCannon: - particleCannon.AddBonusShieldDamage(value); - break; - case TowerType.Shredder: - shredder.AddBonusShieldDamage(value); - break; - case TowerType.Encampment: - encampment.AddBonusShieldDamage(value); - break; - case TowerType.Lookout: - lookout.AddBonusShieldDamage(value); - break; - case TowerType.Global: - global.AddBonusShieldDamage(value); - UpdateAllTowers(); - break; - default: - Debug.Log("Failed to set global bonus"); - break; - } - } - - public void AddBonusSlow(TowerType type, float value) - { - switch (type) - { - case TowerType.Crossbow: - crossbow.AddBonusSlow(value); - break; - case TowerType.Morter: - morter.AddBonusSlow(value); - break; - case TowerType.TeslaCoil: - teslaCoil.AddBonusSlow(value); - break; - case TowerType.FlameThrower: - flameThrower.AddBonusSlow(value); - break; - case TowerType.PoisonSprayer: - poisonSprayer.AddBonusSlow(value); - break; - case TowerType.Frost: - frostKeep.AddBonusSlow(value); - break; - case TowerType.Radar: - radar.AddBonusSlow(value); - break; - case TowerType.Obelisk: - obelisk.AddBonusSlow(value); - break; - case TowerType.ParticleCannon: - particleCannon.AddBonusSlow(value); - break; - case TowerType.Shredder: - shredder.AddBonusSlow(value); - break; - case TowerType.Encampment: - encampment.AddBonusSlow(value); - break; - case TowerType.Lookout: - lookout.AddBonusSlow(value); - break; - case TowerType.Global: - global.AddBonusSlow(value); - UpdateAllTowers(); - break; - default: - Debug.Log("Failed to set global bonus"); - break; - } - } - - public void AddBonusBleed(TowerType type, float value) - { - switch (type) - { - case TowerType.Crossbow: - crossbow.AddBonusBleed(value); - break; - case TowerType.Morter: - morter.AddBonusBleed(value); - break; - case TowerType.TeslaCoil: - teslaCoil.AddBonusBleed(value); - break; - case TowerType.FlameThrower: - flameThrower.AddBonusBleed(value); - break; - case TowerType.PoisonSprayer: - poisonSprayer.AddBonusBleed(value); - break; - case TowerType.Frost: - frostKeep.AddBonusBleed(value); - break; - case TowerType.Radar: - radar.AddBonusBleed(value); - break; - case TowerType.Obelisk: - obelisk.AddBonusBleed(value); - break; - case TowerType.ParticleCannon: - particleCannon.AddBonusBleed(value); - break; - case TowerType.Shredder: - shredder.AddBonusBleed(value); - break; - case TowerType.Encampment: - encampment.AddBonusBleed(value); - break; - case TowerType.Lookout: - lookout.AddBonusBleed(value); - break; - case TowerType.Global: - global.AddBonusBleed(value); - UpdateAllTowers(); - break; - default: - Debug.Log("Failed to set global bonus"); - break; - } - } - - public void AddBonusBurn(TowerType type, float value) - { - switch (type) - { - case TowerType.Crossbow: - crossbow.AddBonusBurn(value); - break; - case TowerType.Morter: - morter.AddBonusBurn(value); - break; - case TowerType.TeslaCoil: - teslaCoil.AddBonusBurn(value); - break; - case TowerType.FlameThrower: - flameThrower.AddBonusBurn(value); - break; - case TowerType.PoisonSprayer: - poisonSprayer.AddBonusBurn(value); - break; - case TowerType.Frost: - frostKeep.AddBonusBurn(value); - break; - case TowerType.Radar: - radar.AddBonusBurn(value); - break; - case TowerType.Obelisk: - obelisk.AddBonusBurn(value); - break; - case TowerType.ParticleCannon: - particleCannon.AddBonusBurn(value); - break; - case TowerType.Shredder: - shredder.AddBonusBurn(value); - break; - case TowerType.Encampment: - encampment.AddBonusBurn(value); - break; - case TowerType.Lookout: - lookout.AddBonusBurn(value); - break; - case TowerType.Global: - global.AddBonusBurn(value); - UpdateAllTowers(); - break; - default: - Debug.Log("Failed to set global bonus"); - break; - } - } - - public void AddBonusPoison(TowerType type, float value) - { - switch (type) - { - case TowerType.Crossbow: - crossbow.AddBonusPoison(value); - break; - case TowerType.Morter: - morter.AddBonusPoison(value); - break; - case TowerType.TeslaCoil: - teslaCoil.AddBonusPoison(value); - break; - case TowerType.FlameThrower: - flameThrower.AddBonusPoison(value); - break; - case TowerType.PoisonSprayer: - poisonSprayer.AddBonusPoison(value); - break; - case TowerType.Frost: - frostKeep.AddBonusPoison(value); - break; - case TowerType.Radar: - radar.AddBonusPoison(value); - break; - case TowerType.Obelisk: - obelisk.AddBonusPoison(value); - break; - case TowerType.ParticleCannon: - particleCannon.AddBonusPoison(value); - break; - case TowerType.Shredder: - shredder.AddBonusPoison(value); - break; - case TowerType.Encampment: - encampment.AddBonusPoison(value); - break; - case TowerType.Lookout: - lookout.AddBonusPoison(value); - break; - case TowerType.Global: - global.AddBonusPoison(value); - UpdateAllTowers(); - break; - default: - Debug.Log("Failed to set global bonus"); - break; - } - } - - public void AddBonusBlast(TowerType type, float value) - { - switch (type) - { - case TowerType.Crossbow: - crossbow.AddBonusBlast(value); - break; - case TowerType.Morter: - morter.AddBonusBlast(value); - break; - case TowerType.TeslaCoil: - teslaCoil.AddBonusBlast(value); - break; - case TowerType.FlameThrower: - flameThrower.AddBonusBlast(value); - break; - case TowerType.PoisonSprayer: - poisonSprayer.AddBonusBlast(value); - break; - case TowerType.Frost: - frostKeep.AddBonusBlast(value); - break; - case TowerType.Radar: - radar.AddBonusBlast(value); - break; - case TowerType.Obelisk: - obelisk.AddBonusBlast(value); - break; - case TowerType.ParticleCannon: - particleCannon.AddBonusBlast(value); - break; - case TowerType.Shredder: - shredder.AddBonusBlast(value); - break; - case TowerType.Encampment: - encampment.AddBonusBlast(value); - break; - case TowerType.Lookout: - lookout.AddBonusBlast(value); - break; - case TowerType.Global: - global.AddBonusBlast(value); - UpdateAllTowers(); - break; - default: - Debug.Log("Failed to set global bonus"); - break; - } - } -} diff --git a/Assembly_CSharp/Tower/TowerType.cs b/Assembly_CSharp/Tower/TowerType.cs deleted file mode 100644 index 9bbc242..0000000 --- a/Assembly_CSharp/Tower/TowerType.cs +++ /dev/null @@ -1,18 +0,0 @@ -public enum TowerType -{ - Crossbow, - Morter, - TeslaCoil, - Frost, - Obelisk, - FlameThrower, - PoisonSprayer, - Siphon, - Radar, - ParticleCannon, - DOT, - Global, - Shredder, - Encampment, - Lookout -} |