public override void OnStart() { gameManager.buildManager.ModifyTurretEvent += handler; foreach (var turret in gameManager.player.turrets) { if (turret.uniqueTurretName == "MachineGun" || turret.uniqueTurretName == "PillBox") { var ee = new ExplosiveEffect { damage = turret.Damage, radius = range, damageType = Turret.DamageType.Explosive, uniqueBuffName = uniqueBuffName }; turret.AppendBuff(ee); var temp = turret.DamageFactor; turret.DamageFactor = ee.damage; ee.damageFactor = temp; } } }
public Skill5(Perk perk) : base(perk) { uniquePerkSkillName = "A New Type"; uniqueBuffName = $"ExplosiveEffect:MadBomber.{uniquePerkSkillName}"; handler += (turret, cash) => { if (turret.uniqueTurretName == "MachineGun" || turret.uniqueTurretName == "PillBox") { var ee = new ExplosiveEffect { damage = turret.Damage, radius = range, damageType = Turret.DamageType.Explosive, uniqueBuffName = uniqueBuffName }; ee.damageFactor = 0; turret.AppendBuff(ee); var temp = turret.DamageFactor; turret.DamageFactor = ee.damage; ee.damageFactor = temp; } }; }
public ExplosiveEffect(ExplosiveEffect ee) : base(ee) { radius = ee.radius; damageType = ee.damageType; damage = ee.damage; }
private void ReadTurretData() { string fileName = Settings.GenerateStreamingPath("System/Turret/Turrets.xml"); XmlDocument document = new XmlDocument(); document.Load(fileName); var turretsInfo = document.SelectSingleNode("Turrets").ChildNodes; turrets = new List <List <TurretData> >(); for (int i = 0; i < turretsInfo.Count; i++) { turrets.Add(new List <TurretData>()); var levelCount = turretsInfo[i].ChildNodes.Count; for (int j = 0; j < levelCount; j++) { var levelInfo = turretsInfo[i].ChildNodes[j]; var basic = levelInfo.ChildNodes[0] as XmlElement; var attack = levelInfo.ChildNodes[1] as XmlElement; var newTurretData = new TurretData { uniqueTurretName = (turretsInfo[i] as XmlElement).GetAttribute("name"), cost = Int32.Parse(basic.GetAttribute("cost")), minRange = Int32.Parse(basic.GetAttribute("minRange")), maxRange = Int32.Parse(basic.GetAttribute("maxRange")), targetFlyable = Turret.GetTargetFlyable(basic.GetAttribute("targetFlyable")), targetCount = Turret.GetTargetCount(basic.GetAttribute("targetCount")), attackSpeed = Int32.Parse(basic.GetAttribute("attackSpeed")), damage = Int32.Parse(attack.GetAttribute("damage")), damageType = Turret.GetDamageType(attack.GetAttribute("damageType")), ballVelocity = Int32.Parse(attack.GetAttribute("ballVelocity")) }; newTurretData.damageType = Turret.GetDamageType(attack.GetAttribute("damageType")); newTurretData.turretPrefab = Resources.Load <GameObject>($"Prefabs/Turrets/{newTurretData.uniqueTurretName}/Level{j + 1}/Turret"); newTurretData.bulletPrefab = Resources.Load <GameObject>($"Prefabs/Turrets/{newTurretData.uniqueTurretName}/Level{j + 1}/Bullet"); var enemyBuff = levelInfo.ChildNodes[2] as XmlElement; var buffName = enemyBuff.GetAttribute("name"); EnemyBuff buff = null; switch (buffName) { case "": break; case "Explosive": buff = new ExplosiveEffect { radius = Int32.Parse(enemyBuff.GetAttribute("radius")), damage = Int32.Parse(enemyBuff.GetAttribute("damage")), damageType = Turret.GetDamageType(enemyBuff.GetAttribute("damageType")) }; break; case "Decelerate": buff = new DecelerateEffect { duration = Single.Parse(enemyBuff.GetAttribute("duration")), ratio = Single.Parse(enemyBuff.GetAttribute("ratio")) }; break; case "Stun": buff = new StunEffect { duration = Single.Parse(enemyBuff.GetAttribute("duration")) }; break; case "ContinuousDamage": buff = new ContinuousDamage { duration = Single.Parse(enemyBuff.GetAttribute("duration")), damagePerSecond = Int32.Parse(enemyBuff.GetAttribute("damagePerSecond")), damageType = Turret.GetDamageType(enemyBuff.GetAttribute("damageType")) }; break; default: throw new UnityException($"Cannot recognize EnemyBuff.buffName {buffName}"); } if (buff != null) { newTurretData.enemyBuff = buff; } turrets[i].Add(newTurretData); } } }