SoldierBuff.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class SoldierBuff : MonoBehaviour
  5. {
  6. private Demonic dem;
  7. private AttackController ac;
  8. private AttributeStatus ats;
  9. private int initTotalHp;
  10. private int initHp;
  11. private List<AttackInfo> initAttackInfo = new();
  12. private int initArmor;
  13. private void Awake()
  14. {
  15. dem = GetComponent<Demonic>();
  16. ac = dem.attackController;
  17. ats = dem.attributeStatus;
  18. initTotalHp = dem.totalHp;
  19. initHp = dem.hp;
  20. for (int i = 0; i < ac.attackMethod.Length; i++)
  21. {
  22. AttackInfo attackInfo = new();
  23. ac.attackMethod[i].attackInfo.CopyTo(attackInfo);
  24. initAttackInfo.Add(attackInfo);
  25. }
  26. initArmor = ats.resistances.armor;
  27. }
  28. public void AddHP(int hp)
  29. {
  30. dem.totalHp = initTotalHp + hp;
  31. dem.hp += initHp + hp;
  32. dem.uiHp.Show(dem.hp, dem.totalHp);
  33. }
  34. public void AddSummonAttack(int attack)
  35. {
  36. ac.attackMethod[0].attackInfo.damage = initAttackInfo[0].damage + attack;
  37. }
  38. public void AddMarchAttack(int attack)
  39. {
  40. for(int i = 1; i < ac.attackMethod.Length; i++)
  41. {
  42. ac.attackMethod[i].attackInfo.damage = initAttackInfo[i].damage + attack;
  43. }
  44. }
  45. public void AddArmor(int armor)
  46. {
  47. ats.resistances.armor = initArmor + armor;
  48. }
  49. public void AddShootDownDamage(int damage)
  50. {
  51. for(int i = 0; i < ac.attackMethod.Length; i++)
  52. {
  53. AttackInfo ai = ac.attackMethod[i].attackInfo;
  54. AttackEffect[] aes = ai.attackEffect;
  55. foreach(AttackEffect ae in aes)
  56. {
  57. if (ae == AttackEffect.ShotDown)
  58. {
  59. AttackInfo.ShotDown sd = ai.shotDown;
  60. sd.landingDamage = initAttackInfo[i].shotDown.landingDamage + damage;
  61. ai.shotDown = sd;
  62. break;
  63. }
  64. }
  65. ac.attackMethod[i].attackInfo = ai;
  66. }
  67. }
  68. public void AddBlowUpDamageRate(float rate)
  69. {
  70. for (int i = 0; i < ac.attackMethod.Length; i++)
  71. {
  72. AttackInfo ai = ac.attackMethod[i].attackInfo;
  73. AttackEffect[] aes = ai.attackEffect;
  74. foreach (AttackEffect ae in aes)
  75. {
  76. if (ae == AttackEffect.BlowUp)
  77. {
  78. AttackInfo.BlowUp blowUp = ai.blowUp;
  79. blowUp.landingDamageRate = initAttackInfo[i].blowUp.landingDamageRate + rate;
  80. ai.blowUp = blowUp;
  81. break;
  82. }
  83. }
  84. ac.attackMethod[i].attackInfo = ai;
  85. }
  86. }
  87. }