private static void ApplyDPS(UFPlayerLife player, Room.LiquidProperties.LiquidType type) { switch (type) { case Room.LiquidProperties.LiquidType.Lava: player.TakeDamage(10f * Time.deltaTime, UFPlayerLife.DamageType.Fire, true); break; case Room.LiquidProperties.LiquidType.Acid: player.TakeDamage(5f * Time.deltaTime, UFPlayerLife.DamageType.Acid, true); break; } }
private void Update() { if (UFLevel.player == null) { return; } buttonAlert.SetBool("Visible", inButtonRange); inButtonRange = false; UFPlayerLife life = UFLevel.GetPlayer <UFPlayerLife>(); float healthFrac = Mathf.Clamp01(life.GetHealth() / UFPlayerLife.MAX_HP); float armorFrac = Mathf.Clamp01(life.GetArmor() / UFPlayerLife.MAX_HP); healthGauge.color = Color.Lerp(Color.red, Color.green, healthFrac); armorGauge.color = Color.Lerp(Color.black, Color.yellow, armorFrac); healthGauge.transform.localScale = healthFrac * Vector3.one; armorGauge.fillAmount = armorFrac; SetTimer(UFLevel.singleton.GetCountDownTime()); if (weaponTagPanelTimer.TickTrigger()) { weaponTagPanel.gameObject.SetActive(false); } matchTimerText.gameObject.SetActive(!PhotonNetwork.offlineMode); float matchTime = Global.match.timeLeft; if (matchTime < 10f) { matchTimerText.text = UFUtils.GetTimeString(matchTime, 1); } else { matchTimerText.text = UFUtils.GetTimeString(Mathf.FloorToInt(matchTime)); } }
/// <summary> /// Perform effects of this event. /// Returns the type of IDRef that is used up when performing the event, /// these references do not get activated in the usual sense by this /// event type. /// </summary> private IDRef.Type DoEffect(bool positive) { //preperatory variables Transform playerTr = UFLevel.GetPlayer <Transform>(); UFPlayerLife playerLi = UFLevel.GetPlayer <UFPlayerLife>(); UFPlayerMovement playerMo = UFLevel.GetPlayer <UFPlayerMovement>(); AudioSource sound = this.GetComponent <AudioSource>(); //find effect type and do its effects. Return IDRefts that were used up. switch (type) { case UFLevelStructure.Event.EventType.Teleport: foreach (int link in links) { Transform t = UFLevel.GetByID(link).objectRef.transform; t.position = transform.position; t.rotation = transform.rotation; } return(IDRef.Type.None); case UFLevelStructure.Event.EventType.Teleport_Player: playerTr.position = transform.position; playerTr.GetComponent <CharacterController>().Move(Vector3.zero); playerMo.SetRotation(transform.rotation); return(IDRef.Type.None); case UFLevelStructure.Event.EventType.Music_Start: if (sound.clip == null) { Debug.LogWarning("Music event has no audio clip assigned: " + name); } sound.Play(); return(IDRef.Type.None); case UFLevelStructure.Event.EventType.Play_Sound: sound.rolloffMode = AudioRolloffMode.Linear; if (float1 >= 0f) { sound.minDistance = float1; sound.maxDistance = float1 * 2f; sound.spatialBlend = 1f; } else { sound.spatialBlend = 0f; } if (sound.clip == null) { Debug.LogWarning("Play sound event has no audio clip assigned: " + name); } sound.loop = bool1; sound.Play(); if (float2 > 0f && !bool1) { sound.SetScheduledEndTime(float2); } return(IDRef.Type.None); case UFLevelStructure.Event.EventType.Music_Stop: float fadeTime = float1; foreach (UFEvent e in GetEventsOfType(UFLevelStructure.Event.EventType.Music_Start)) { StartCoroutine(e.FadeAudioSource(fadeTime, 0f)); } return(IDRef.Type.None); case UFLevelStructure.Event.EventType.Particle_State: foreach (UFParticleEmitter pem in GetLinksOfType <UFParticleEmitter>(IDRef.Type.ParticleEmitter)) { pem.Activate(positive); } return(IDRef.Type.ParticleEmitter); case UFLevelStructure.Event.EventType.Mover_Pause: foreach (UFMover mov in GetLinksOfType <UFMover>(IDRef.Type.Keyframe)) { mov.Activate(!positive); } return(IDRef.Type.Keyframe); case UFLevelStructure.Event.EventType.Reverse_Mover: bool setForwardIfMoving = int1 != 0; foreach (UFMover mov in GetLinksOfType <UFMover>(IDRef.Type.Keyframe)) { mov.Reverse(setForwardIfMoving); } return(IDRef.Type.Keyframe); case UFLevelStructure.Event.EventType.Modify_Rotating_Mover: bool increase = string1.Equals("Increase"); float factor = increase ? 1f + (float1 / 100f) : 1f - (float1 / 100f); foreach (UFMover mov in GetLinksOfType <UFMover>(IDRef.Type.Keyframe)) { mov.ChangeRotationSpeed(factor); } return(IDRef.Type.Keyframe); case UFLevelStructure.Event.EventType.Explode: float radius = float1; float damage = float2; bool geo = bool1; float dist = (playerTr.position - transform.position).magnitude; if (dist < radius) { playerLi.TakeDamage(damage, UFPlayerLife.DamageType.Explosive, false); } if (geo) { Debug.LogWarning("Explosion " + name + " requested geo mod; this will not work as of now!"); } GameObject explosionPrefab = obj as GameObject; if (explosionPrefab != null) { Vector3 explPos = transform.position; Quaternion explRot = transform.rotation; GameObject explosion = Instantiate(explosionPrefab, explPos, explRot, transform); explosion.transform.localScale = radius * 2f * Vector3.one; } else { Debug.LogWarning("Explosion prefab for event " + name + " was not provided!"); } return(IDRef.Type.None); case UFLevelStructure.Event.EventType.Skybox_State: UFLevel.playerInfo.SetSkyboxRotation(string1, float1); return(IDRef.Type.None); case UFLevelStructure.Event.EventType.Bolt_State: foreach (UFBoltEmitter bem in GetLinksOfType <UFBoltEmitter>(IDRef.Type.BoltEmitter)) { bem.Activate(positive); } return(IDRef.Type.BoltEmitter); case UFLevelStructure.Event.EventType.Push_Region_State: foreach (UFForceRegion pr in GetLinksOfType <UFForceRegion>(IDRef.Type.PushRegion)) { pr.Activate(positive); } return(IDRef.Type.PushRegion); case UFLevelStructure.Event.EventType.Countdown_Begin: UFLevel.singleton.SetCountDown(int1); return(IDRef.Type.None); case UFLevelStructure.Event.EventType.Countdown_End: UFLevel.singleton.SetCountDown(0f); return(IDRef.Type.None); case UFLevelStructure.Event.EventType.Remove_Object: foreach (int link in links) { GameObject g = UFLevel.GetByID(link).objectRef; if (g == null) { Debug.LogWarning("Trying to remove ID ref that does not exist: " + link); } else { g.SetActive(false); } } return(IDRef.Type.All); case UFLevelStructure.Event.EventType.Heal: if (bool1) { UFLevel.GetPlayer <UFPlayerLife>().GainHealth(int1); return(IDRef.Type.None); } else { Debug.LogError("Entity heal not implemented"); return(IDRef.Type.Entity); } case UFLevelStructure.Event.EventType.Set_Gravity: Physics.gravity = float1 * Vector3.down; return(IDRef.Type.None); default: Debug.LogError("Event type " + type + " not implemented"); return(IDRef.Type.None); } }
private bool PickUp() { UFPlayerLife life = UFLevel.GetPlayer <UFPlayerLife>(); if (life.isDead) { return(false); } UFPlayerMoveSounds sound = life.GetComponentInChildren <UFPlayerMoveSounds>(); switch (type) { case ItemType.Health: if (life.CanPickUpHealth()) { life.GainHealth(count); sound.PickUpPowerup(); return(true); } return(false); case ItemType.Armor: if (life.CanPickUpArmor()) { life.GainArmor(count); sound.PickUpPowerup(); return(true); } return(false); case ItemType.SuperHealth: sound.PickUpPowerup(); life.SuperHealth(); return(true); case ItemType.SuperArmor: sound.PickUpPowerup(); life.SuperArmor(); return(true); case ItemType.Invulnerability: sound.PickUpInvuln(); life.Invulnerability(); return(true); case ItemType.Explosive: case ItemType.Gun: case ItemType.SpecialWeapon: bool weapon = UFLevel.GetPlayer <UFPlayerWeapons>().PickupWeapon(this); if (weapon) { sound.PickUpWeapon(); } return(weapon); case ItemType.ExplosiveAmmo: case ItemType.GunAmmo: bool ammo = UFLevel.GetPlayer <UFPlayerWeapons>().PickupAmmo(this); if (ammo) { sound.PickUpWeapon(); } return(ammo); case ItemType.DamageAmp: UFLevel.GetPlayer <UFPlayerWeapons>().DamageAmp(); sound.PickUpDamageAmp(); return(true); default: Debug.LogWarning("Tried to collect unkown item type: " + type + " of item " + this.name); return(false); } }