using GadgetCore.API; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using UltimateNPCWeapons.Scripts; using UnityEngine; namespace UltimateNPCWeapons.Infos { public class WallacesFealtyItemInfo : ItemInfo { 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) : base(Type, Name, Desc, Tex, Value, Stats, HeldTex, HeadTex, BodyTex, ArmTex) { } 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) : base(Type, Name, Desc, Mat, Value, Stats, HeldMat, HeadMat, BodyMat, ArmMat) { } private static readonly FieldInfo canAttack = typeof(PlayerScript).GetField("canAttack", BindingFlags.NonPublic | BindingFlags.Instance); private static readonly FieldInfo attacking = typeof(PlayerScript).GetField("attacking", BindingFlags.NonPublic | BindingFlags.Instance); private static readonly FieldInfo t = typeof(PlayerScript).GetField("t", BindingFlags.NonPublic | BindingFlags.Instance); private static readonly FieldInfo r = typeof(PlayerScript).GetField("r", BindingFlags.NonPublic | BindingFlags.Instance); public IEnumerator Attack(PlayerScript script) { canAttack.SetValue(script, false); attacking.SetValue(script, true); //script.StartCoroutine(script.ATKSOUND()); //script.GetComponent().PlayOneShot((AudioClip)Resources.Load("Au/excal"), Menuu.soundLevel / 10f); if (PlayerScript.grounded) { if (Camera.main.ScreenToWorldPoint(Input.mousePosition).x > ((Transform)t.GetValue(script)).position.x) { ((Rigidbody)r.GetValue(script)).velocity = new Vector3(((Rigidbody)r.GetValue(script)).velocity.x + 20f, ((Rigidbody)r.GetValue(script)).velocity.y + 5f, 0f); } else { ((Rigidbody)r.GetValue(script)).velocity = new Vector3(((Rigidbody)r.GetValue(script)).velocity.x - 20f, ((Rigidbody)r.GetValue(script)).velocity.y + 5f, 0f); } } script.Animate(5); yield return new WaitForSeconds(0.3f); script.attackCube3.SetActive(true); if (PlayerScript.inmagemash > 0) { script.MageMash(); } yield return new WaitForSeconds(0.2f); script.attackCube3.SetActive(false); attacking.SetValue(script, false); yield return new WaitForSeconds(0.1f); canAttack.SetValue(script, true); yield break; } } }