public void GiveLimb(Limb.LimbType type) { if (type == Limb.LimbType.LEFTARM) { leftArm.state = Limb.InjuryClass.FINE; leftArm.hasChanged = true; } else if (type == Limb.LimbType.LEFTLEG) { leftLeg.state = Limb.InjuryClass.FINE; leftLeg.hasChanged = true; } else if (type == Limb.LimbType.RIGHTARM) { rightArm.state = Limb.InjuryClass.FINE; rightArm.hasChanged = true; } else if (type == Limb.LimbType.RIGHTLEG) { rightLeg.state = Limb.InjuryClass.FINE; rightLeg.hasChanged = true; } //If all limbs removed kill victim if (leftArm.state == Limb.InjuryClass.FINE && leftLeg.state == Limb.InjuryClass.FINE && rightArm.state == Limb.InjuryClass.FINE && rightLeg.state == Limb.InjuryClass.FINE) { state = VicState.SAVED; } }
public bool HasLimb(Limb.LimbType type) { if (type == Limb.LimbType.LEFTARM) { if (leftArm.state != Limb.InjuryClass.LOST) { return(true); } } else if (type == Limb.LimbType.LEFTLEG) { if (leftLeg.state != Limb.InjuryClass.LOST) { return(true); } } else if (type == Limb.LimbType.RIGHTARM) { if (rightArm.state != Limb.InjuryClass.LOST) { return(true); } } else if (type == Limb.LimbType.RIGHTLEG) { if (rightLeg.state != Limb.InjuryClass.LOST) { return(true); } } return(true); }
public void RemoveLimb(Limb.LimbType type) { //Damage for taking it health -= 10; if (type == Limb.LimbType.LEFTARM) { leftArm.state = Limb.InjuryClass.LOST; } else if (type == Limb.LimbType.LEFTLEG) { leftLeg.state = Limb.InjuryClass.LOST; } else if (type == Limb.LimbType.RIGHTARM) { rightArm.state = Limb.InjuryClass.LOST; } else if (type == Limb.LimbType.RIGHTLEG) { rightLeg.state = Limb.InjuryClass.LOST; } //If all limbs removed kill victim if (leftArm.state == Limb.InjuryClass.LOST && leftLeg.state == Limb.InjuryClass.LOST && rightArm.state == Limb.InjuryClass.LOST && rightLeg.state == Limb.InjuryClass.LOST) { state = VicState.DEAD; } }
public void WeaponDestroyed(Limb.LimbType limbType) { switch (limbType) { case Limb.LimbType.topLimb: topCannonsDestroyed = true; break; } }
void GrabLimb(Victim victim, Limb.LimbType type) { if (bagFull) { //TODO: Player already has a limb in the bag return; } victim.RemoveLimb(type); content = type; }
public override void ApplyDamageNetwork(byte damage, byte senderID, byte weaponID, byte bodyPart) { if (Time.time - initTime <= 2f || GeneralVariables.Networking.finishedGame) { return; } Limb.LimbType limb = (Limb.LimbType)Mathf.Clamp(bodyPart, 0, 4); ApplyDamage(damage, senderID, true, limb, weaponID + ((bodyPart > 4) ? 1000 : 0)); }
void GrabLimb() { Limb.LimbType type = Limb.LimbType.LEFTARM; if (menuLoc == 1) { type = Limb.LimbType.LEFTLEG; } else if (menuLoc == 2) { type = Limb.LimbType.RIGHTARM; } else if (menuLoc == 3) { type = Limb.LimbType.RIGHTLEG; } if (bagFull) { //TODO Peter: Player already has a limb in the bag return; } else if (menuLoc == 0 && victim.leftArm.state == Limb.InjuryClass.LOST) { //No Limb } else if (menuLoc == 1 && victim.leftLeg.state == Limb.InjuryClass.LOST) { //No Limb } else if (menuLoc == 2 && victim.rightArm.state == Limb.InjuryClass.LOST) { //No Limb } else if (menuLoc == 3 && victim.rightLeg.state == Limb.InjuryClass.LOST) { //No Limb } //TODO: Perfrom grab limb animation menuInteract = false; CloseMenu(); bagFull = true; content = type; victim.RemoveLimb(type); victim = null; }
private void ApplyDamage(int damage, int senderID, Limb.LimbType bodyPart, int weaponID = -1) { if (!Topan.Network.isServer || isDead || damage <= 0) { return; } /* * if(GeneralVariables.gameModeHasTeams) { * byte teamNum = (senderID >= 64) ? BotManager.allBotPlayers[senderID - 64].team : (byte)Topan.Network.GetPlayerByID(senderID).GetPlayerData("team", (byte)0); * if(teamNum != bm.myBotPlayer.team) { * if(!damageIDs.Contains((byte)senderID)) { * damageIDs.Add((byte)senderID); * damageInflicted.Add(Mathf.Clamp(damage, 0, curHealth)); * } * else { * int theIndex = GetDamageIndex(senderID); * if(theIndex >= 0) { * damageInflicted[theIndex] += Mathf.Clamp(damage, 0, curHealth); * } * } * } * }*/ curHealth -= damage; base.headshot = (bodyPart == Limb.LimbType.Head); if (!isDead && curHealth <= 0) { if (!damageIDs.Contains((byte)senderID)) { damageIDs.Add((byte)senderID); damageInflicted.Add(9); } lastWeaponID = weaponID; killerID = senderID; headID = (base.headshot) ? senderID : -1; BotDeath(); } }
public void LimbDestroyed(Limb.LimbType limbType) { TookDamage(100); boss.WeaponDestroyed(limbType); }
private void ApplyDamage(int damage, int senderID, bool showBlood, Limb.LimbType bodyPart, int weaponID = -1) { if (dead || damage <= 0) { return; } if (Topan.Network.isConnected && (!Topan.Network.HasServerInfo("sm") || !((bool)Topan.Network.GetServerInfo("sm")))) { return; } if (GeneralVariables.gameModeHasTeams && senderID > -1) { byte teamNum = (senderID >= 64) ? BotManager.allBotPlayers[senderID - 64].team : (byte)Topan.Network.GetPlayerByID(senderID).GetPlayerData("team", (byte)0); if (teamNum != (byte)Topan.Network.player.GetPlayerData("team", (byte)0)) { if (!damageIDs.Contains((byte)senderID)) { damageIDs.Add((byte)senderID); damageInflicted.Add(Mathf.Clamp(damage, 0, curHealth)); } else { int theIndex = GetDamageIndex(senderID); if (theIndex >= 0) { damageInflicted[theIndex] += Mathf.Clamp(damage, 0, curHealth); } } } } float fltDamage = (float)damage; if (playerLook != null) { playerLook.Flinch(fltDamage); } int damageToHealth = Mathf.Clamp(damage - curShield, 0, curHealth); if (damageToHealth > 0) { base.headshot = (bodyPart == Limb.LimbType.Head); shieldAlpha += Mathf.Clamp(damageToHealth, 0, 15) * 0.006f; if (showBlood) { fallDamageSource.GetComponent <TimeScaleSound>().pitchMod = Random.Range(0.75f, 1f); fallDamageSource.PlayOneShot(healthDamage, 0.15f + (0.006f * Mathf.Clamp(damageToHealth, 0f, 15f))); } } int damageToShield = Mathf.Clamp(damage, 0, curShield); if (damageToShield > 0) { Color hurtColor = shieldTexture.defaultColor; hurtColor *= 0.8f; hurtColor.r *= 1.6f; hurtColor.b /= 1.6f; shieldTexture.color = hurtColor; shieldAlpha += 0.021f + (Mathf.Clamp(damageToShield, 0, 10) * 0.039f); } if (damage > curShield) { int temp = damage - curShield; if (curShield > 0) { fallDamageSource.GetComponent <TimeScaleSound>().pitchMod = Random.Range(0.8f, 0.85f); fallDamageSource.PlayOneShot(shieldDamage, 0.08f); fallDamageSource.PlayOneShot(shieldFailure, 0.35f); } curShield = 0; healthText.color = new Color(1f, 0.2f, 0f, 1f); curHealth -= temp * ((godmode) ? -1 : 1); uic.gManager.damageBlur += Mathf.Clamp(fltDamage * 0.032f, 0f, 0.37f); uic.gManager.damageBlur = Mathf.Clamp01(uic.gManager.damageBlur); damageBreathBoost = Mathf.Clamp(fltDamage * 0.04f, 0f, 0.22f); if (showBlood) { bloodEffect += 0.003f + (temp * 0.028f); } if (Time.time - painTimer >= 0.5f) { fallDamageSource.GetComponent <TimeScaleSound>().pitchMod = Random.Range(0.8f, 1f); fallDamageSource.PlayOneShot(painSounds[Random.Range(0, painSounds.Length)], (1f - Mathf.Clamp01(curHealth / (maxHealth * 0.5f))) * 0.18f); painTimer = Time.time; } recovering = false; startRecoveryTimer = true; rTimer = 0f; } else { curShield -= damage; uic.gManager.damageBlur += Mathf.Clamp(fltDamage * 0.01f, 0f, 0.11f); uic.gManager.damageBlur = Mathf.Clamp01(uic.gManager.damageBlur); shieldText.color = new Color(1f, 0.2f, 0f, 1f); if (damageToShield > 0) { fallDamageSource.GetComponent <TimeScaleSound>().pitchMod = Random.Range(0.77f, 0.84f); fallDamageSource.PlayOneShot(shieldDamage, 0.03f + (0.009f * Mathf.Clamp(damageToShield, 0, 15))); } } lastDe = Time.time; damageEffect += fltDamage * 0.5f; lastDamage = lastDe; shRecovering = false; shTimer = 0f; startShRecoveryTimer = true; if (shrTimer > 0f) { shrTimer = 0f; } if (curHealth <= 0) { if (!damageIDs.Contains((byte)senderID)) { damageIDs.Add((byte)senderID); damageInflicted.Add(9); } lastWeaponID = weaponID; killerID = senderID; headID = (base.headshot) ? senderID : -1; Die(); } }
public override void ApplyDamageMain(int damage, bool showBlood, Limb.LimbType bodyPart) { ApplyDamage(damage, -1, showBlood, bodyPart); }
public virtual void ApplyDamageMain(int damage, bool showBlood, Limb.LimbType bodyPart) { Debug.Log("Override me: Sent over local."); }
public override void ApplyDamageMain(int damage, bool showBlood, Limb.LimbType bodyPart) { //ApplyDamage(damage, bm.myIndex + 64, bodyPart); }