summaryrefslogtreecommitdiff
path: root/Assembly_CSharp/Tower
diff options
context:
space:
mode:
Diffstat (limited to 'Assembly_CSharp/Tower')
-rw-r--r--Assembly_CSharp/Tower/Dropper.cs126
-rw-r--r--Assembly_CSharp/Tower/FlameThrower.cs68
-rw-r--r--Assembly_CSharp/Tower/Lookout.cs97
-rw-r--r--Assembly_CSharp/Tower/Morter.cs39
-rw-r--r--Assembly_CSharp/Tower/MorterShell.cs81
-rw-r--r--Assembly_CSharp/Tower/Obelisk.cs99
-rw-r--r--Assembly_CSharp/Tower/RadarTower.cs71
-rw-r--r--Assembly_CSharp/Tower/TeslaCoil.cs45
-rw-r--r--Assembly_CSharp/Tower/Tower.cs509
-rw-r--r--Assembly_CSharp/Tower/TowerFlyweight.cs279
-rw-r--r--Assembly_CSharp/Tower/TowerManager.cs1386
-rw-r--r--Assembly_CSharp/Tower/TowerType.cs18
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
-}