Exemplo n.º 1
0
    /// <summary>
    /// Calculates damage according to position
    /// </summary>
    /// <param name="explosionpos"></param>
    public void Call_ExplosionDamage(Vector3 explosionpos, Team explosionTeam, NetworkIdentity ownerIdentity)
    {
        //Send explosion force
        Call_AddExplosionForce(explosionpos);

        //Calculates distance
        float distance = Vector3.Distance(playerCenter.position, explosionpos);

        if (playerStats.playerTeam == Team.SPE || distance > 2.0f || (explosionTeam == playerStats.playerTeam && ownerIdentity != playerIdentity))
        {
            return;
        }
        //Calculate damage
        float magnitude = (2.0f - distance) / 1.5f;
        int   damage    = (int)((2.0f - distance) * 100);

        //playerCommand.Cmd_SendHit(ownerIdentity, magnitude); //Used to debug hitmarker/hitsound

        //Damage application
        if (playerIdentity == ownerIdentity)
        {
            Call_DamagePlayer((int)(damage * selfdmgfactor), ownerIdentity.name, explosionTeam, DamageType.Explosion);
        }
        else
        {
            playerCommand.Cmd_SendHit(ownerIdentity, magnitude);
            Call_DamagePlayer(damage, ownerIdentity.name, explosionTeam, DamageType.Explosion);
        }
    }