IEnumerator EnemyInvisCoroutine(Creature creature) { float startTime = Time.time; //give speed and attackspeed creature.locomotion.speedMultiplier *= 2f; BrainHuman brain = creature.brain as BrainHuman; brain.attackMinMaxDelay *= 0.1f; brain.parryMinMaxDelay *= 0.1f; brain.parryEnabled = false; //Make enemy invis and items while (Time.time - startTime < enemyInvisDuration) { foreach (Renderer renderer in creature.GetComponentsInChildren <Renderer>()) { renderer.enabled = false; } yield return(new WaitForEndOfFrame()); } brain.attackMinMaxDelay /= 0.1f; creature.locomotion.speedMultiplier /= 2f; brain.parryMinMaxDelay /= 0.1f; brain.parryEnabled = true; EnemyInvis = false; }
public IEnumerator ChangeFaction(Creature creature) { int fac = creature.factionId; creature.SetFaction(-1); BrainHuman brain = creature.brain as BrainHuman; brain.canLeave = false; yield return(new WaitUntil(() => !bossPlayer.isInvis)); creature.SetFaction(fac); brain.canLeave = true; }
public static Vector3 NpcAimingAngle(BrainHuman NPCBrain, Vector3 initial, float npcDistanceToFire = 10.0f) { if (NPCBrain == null) { return(initial); } var inaccuracyMult = 0.2f * (NPCBrain.aimSpreadCone / npcDistanceToFire); return(new Vector3( initial.x + (UnityEngine.Random.Range(-inaccuracyMult, inaccuracyMult)), initial.y + (UnityEngine.Random.Range(-inaccuracyMult, inaccuracyMult)), initial.z)); }
IEnumerator EnemyAttackSpeedCoroutine(Creature creature) { //give speed and attackspeed creature.locomotion.speedMultiplier *= 2f; BrainHuman brain = creature.brain as BrainHuman; brain.attackMinMaxDelay *= 0.1f; brain.parryMinMaxDelay *= 0.1f; brain.parryEnabled = false; while (Time.time - lastPlayerHitTime < enemyBoostDuration) { yield return(new WaitForEndOfFrame()); } brain.attackMinMaxDelay /= 0.1f; creature.locomotion.speedMultiplier /= 2f; brain.parryMinMaxDelay /= 0.1f; brain.parryEnabled = true; }
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 = (BrainHuman)thisNPC.brain.instance; npcPrevMeleeEnabled = thisNPCBrain.meleeEnabled; if (npcPrevMeleeEnabled) { npcPrevMeleeDistMult = thisNPCBrain.meleeMax; npcPrevParryDetectionRadius = thisNPCBrain.parryDetectionRadius; npcPrevParryMaxDist = thisNPCBrain.parryMaxDistance; thisNPCBrain.meleeEnabled = module.npcMeleeEnableFlag; if (!module.npcMeleeEnableFlag) { thisNPCBrain.meleeDistMult = thisNPCBrain.bowDist * module.npcDistanceToFire; thisNPCBrain.parryDetectionRadius = thisNPCBrain.bowDist * module.npcDistanceToFire; thisNPCBrain.parryMaxDistance = thisNPCBrain.bowDist * module.npcDistanceToFire; } } } }