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; } }
/// <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; } }