WallacesFealtyItemInfo.cs 2.6 KB

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