protected void HandleNPCPanickedMessage(Message message) { NPCPanickedOffMapMessage mess = message as NPCPanickedOffMapMessage; notoriety += 30.0f; if (notoriety > notorietyMax) { MessageCenter.Instance.Broadcast(new NotorietyMaxedMessage(mess.PanickedPosition)); notoriety = notorietyMax; axemanCount++; } }
//----------------------- // Trigger Methods //----------------------- protected virtual void OnTriggerExit2D(Collider2D other) { if (other.tag == "Player") { playerInRange = false; } if (other.tag == "Border") { if (panicked) { NPCPanickedOffMapMessage message = new NPCPanickedOffMapMessage(panickedPos); MessageCenter.Instance.Broadcast(message); destroyNPC(); } enteredMap = true; ignoreBorder(false, other); } }
protected virtual void panic () { alertTexture.renderer.enabled = false; panicTexture.renderer.enabled = true; scaredTexture.renderer.enabled = false; lureTexture.renderer.enabled = false; scared = false; AudioClip scream = null; // Get skin type to know which NPC sounds to play if (this.SkinType.Equals (NPCSkinType.Bopper)) { scream = (AudioClip)bopperPanicSounds[Random.Range (0, bopperPanicSounds.Length)]; } else if (this.SkinType.Equals (NPCSkinType.Hippie)) { scream = (AudioClip)hippiePanicSounds[Random.Range (0, hippiePanicSounds.Length)]; } else if (this.SkinType.Equals (NPCSkinType.Hottie)) { scream = (AudioClip)hottiePanicSounds[Random.Range (0, hottiePanicSounds.Length)]; } else if (this.SkinType.Equals (NPCSkinType.MowerMan)) { scream = (AudioClip)mowerPanicSounds[Random.Range (0, mowerPanicSounds.Length)]; } else if (this.SkinType.Equals (NPCSkinType.OldMan)) { scream = (AudioClip)oldmanPanicSounds[Random.Range (0, oldmanPanicSounds.Length)]; } audio.PlayOneShot (scream, 1.0f); speed = 1.5f; alerted = false; panicked = true; panickedPos = gameObject.transform.position; //panicTime = Time.time; //timePanicked = panicCooldownSeconds; GameObject player = getPlayer (); if( player != null ) moveDir = transform.position - getPlayer ().transform.position; broadcastAlertLevelChanged (AlertLevelType.Panic); if (player.GetComponent<PossessableTree>().AxeMan != null) { scaredByAxeman = true; } if (GameObject.Find("AIGenerator").GetComponent<AIGenerator>().isMaze && !scaredByAxeman) { NPCPanickedOffMapMessage message = new NPCPanickedOffMapMessage (panickedPos); MessageCenter.Instance.Broadcast (message); } }
//----------------------- // Trigger Methods //----------------------- protected virtual void OnTriggerExit2D (Collider2D other) { if (other.tag == "Player") { playerInRange = false; } if (other.tag == "Border") { if (panicked && !scaredByAxeman) { NPCPanickedOffMapMessage message = new NPCPanickedOffMapMessage (panickedPos); MessageCenter.Instance.Broadcast (message); destroyNPC (); } enteredMap = true; ignoreBorder (false, other); } if (other.tag.Equals ("PossessorTrigger")) { alertLevel = previousAlertLevel; decrementAlertLevel (); } }