public void OnMainGripGrabbed(RagdollHand interactor, Handle handle, EventTime eventTime)
        {
            if (interactor.playerHand == Player.local.handRight)
            {
                gunGripHeldRight = true;
            }
            if (interactor.playerHand == Player.local.handLeft)
            {
                gunGripHeldLeft = true;
            }

            if (!gunGripHeldLeft && !gunGripHeldRight)
            {
                if (isEmpty)
                {
                    ReloadWeapon();
                }
                thisNPC      = interactor.ragdoll.creature;
                thisNPCBrain = thisNPC.brain.instance;
                BrainBow     = thisNPCBrain.GetModule <BrainModuleBow>();
                BrainMelee   = thisNPCBrain.GetModule <BrainModuleMelee>();
                BrainParry   = thisNPCBrain.GetModule <BrainModuleParry>();
                thisNPC.brain.currentTarget = Player.local.creature;
                thisNPC.brain.isParrying    = true;

                BrainMelee.meleeEnabled = module.npcMeleeEnableOverride;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Determines the accuracy of an NPC, based on brain settings
        /// </summary>
        /// <param name="NPCBrain"></param>
        /// <param name="initial"></param>
        /// <param name="npcDistanceToFire"></param>
        /// <returns></returns>
        public static Vector3 NpcAimingAngle(BrainModuleBow NPCBrain, Vector3 initial, float npcDistanceToFire = 10.0f)
        {
            if (NPCBrain == null)
            {
                return(initial);
            }
            var inaccuracyMult = 0.2f * (NPCBrain.aimSpreadAngle / npcDistanceToFire);

            return(new Vector3(
                       initial.x + (UnityEngine.Random.Range(-inaccuracyMult, inaccuracyMult)),
                       initial.y + (UnityEngine.Random.Range(-inaccuracyMult, inaccuracyMult)),
                       initial.z));
        }
        public void OnMainGripUnGrabbed(RagdollHand interactor, Handle handle, EventTime eventTime)
        {
            if (interactor.playerHand == Player.local.handRight)
            {
                gunGripHeldRight = false;
            }
            if (interactor.playerHand == Player.local.handLeft)
            {
                gunGripHeldLeft = false;
            }

            if (thisNPC != null)
            {
                thisNPC      = null;
                thisNPCBrain = null;
                BrainBow     = null;
                BrainMelee   = null;
                BrainParry   = null;
            }
        }