WallacesFealtyItemInfo.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using GadgetCore.API;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Reflection;
  7. using System.Text;
  8. using UltimateNPCWeapons.Scripts;
  9. using UnityEngine;
  10. namespace UltimateNPCWeapons.Infos
  11. {
  12. public class WallacesFealtyItemInfo : ItemInfo
  13. {
  14. public WallacesFealtyItemInfo(ItemType Type, string Name, string Desc, Texture Tex, int Value = -1, EquipStats Stats = default, Texture HeldTex = null, Texture HeadTex = null, Texture BodyTex = null, Texture ArmTex = null)
  15. : base(Type, Name, Desc, Tex, Value, Stats, HeldTex, HeadTex, BodyTex, ArmTex)
  16. {
  17. }
  18. public WallacesFealtyItemInfo(ItemType Type, string Name, string Desc, Material Mat, int Value = -1, EquipStats Stats = default, Material HeldMat = null, Material HeadMat = null, Material BodyMat = null, Material ArmMat = null)
  19. : base(Type, Name, Desc, Mat, Value, Stats, HeldMat, HeadMat, BodyMat, ArmMat)
  20. {
  21. }
  22. private static readonly FieldInfo canAttack = typeof(PlayerScript).GetField("canAttack", BindingFlags.NonPublic | BindingFlags.Instance);
  23. private static readonly FieldInfo attacking = typeof(PlayerScript).GetField("attacking", BindingFlags.NonPublic | BindingFlags.Instance);
  24. private static readonly FieldInfo t = typeof(PlayerScript).GetField("t", BindingFlags.NonPublic | BindingFlags.Instance);
  25. private static readonly FieldInfo r = typeof(PlayerScript).GetField("r", BindingFlags.NonPublic | BindingFlags.Instance);
  26. public IEnumerator Attack(PlayerScript script)
  27. {
  28. canAttack.SetValue(script, false);
  29. attacking.SetValue(script, true);
  30. //script.StartCoroutine(script.ATKSOUND());
  31. //script.GetComponent<AudioSource>().PlayOneShot((AudioClip)Resources.Load("Au/excal"), Menuu.soundLevel / 10f);
  32. if (PlayerScript.grounded)
  33. {
  34. if (Camera.main.ScreenToWorldPoint(Input.mousePosition).x > ((Transform)t.GetValue(script)).position.x)
  35. {
  36. ((Rigidbody)r.GetValue(script)).velocity = new Vector3(((Rigidbody)r.GetValue(script)).velocity.x + 20f, ((Rigidbody)r.GetValue(script)).velocity.y + 5f, 0f);
  37. }
  38. else
  39. {
  40. ((Rigidbody)r.GetValue(script)).velocity = new Vector3(((Rigidbody)r.GetValue(script)).velocity.x - 20f, ((Rigidbody)r.GetValue(script)).velocity.y + 5f, 0f);
  41. }
  42. }
  43. script.Animate(5);
  44. yield return new WaitForSeconds(0.3f);
  45. script.attackCube3.SetActive(true);
  46. if (PlayerScript.inmagemash > 0)
  47. {
  48. script.MageMash();
  49. }
  50. yield return new WaitForSeconds(0.2f);
  51. script.attackCube3.SetActive(false);
  52. attacking.SetValue(script, false);
  53. yield return new WaitForSeconds(0.1f);
  54. canAttack.SetValue(script, true);
  55. yield break;
  56. }
  57. }
  58. }