/// <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); } }