Example #1
0
    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;
        }
    }
Example #2
0
 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);
 }
Example #3
0
    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;
        }
    }
Example #4
0
 public void WeaponDestroyed(Limb.LimbType limbType)
 {
     switch (limbType)
     {
     case Limb.LimbType.topLimb:
         topCannonsDestroyed = true;
         break;
     }
 }
Example #5
0
 void GrabLimb(Victim victim, Limb.LimbType type)
 {
     if (bagFull)
     {
         //TODO: Player already has a limb in the bag
         return;
     }
     victim.RemoveLimb(type);
     content = type;
 }
Example #6
0
    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));
    }
Example #7
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;
    }
Example #8
0
    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();
        }
    }
Example #9
0
 public void LimbDestroyed(Limb.LimbType limbType)
 {
     TookDamage(100);
     boss.WeaponDestroyed(limbType);
 }
Example #10
0
    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();
        }
    }
Example #11
0
 public override void ApplyDamageMain(int damage, bool showBlood, Limb.LimbType bodyPart)
 {
     ApplyDamage(damage, -1, showBlood, bodyPart);
 }
Example #12
0
 public virtual void ApplyDamageMain(int damage, bool showBlood, Limb.LimbType bodyPart)
 {
     Debug.Log("Override me: Sent over local.");
 }
Example #13
0
 public override void ApplyDamageMain(int damage, bool showBlood, Limb.LimbType bodyPart)
 {
     //ApplyDamage(damage, bm.myIndex + 64, bodyPart);
 }