public void askMaul(NetworkPlayer player) { if (!this.dead && this.target != null && this.destroy == null) { GameObject modelFromPlayer = NetworkUserList.getModelFromPlayer(player); if (modelFromPlayer != null && modelFromPlayer == this.target) { float armor = 10f * (1f - modelFromPlayer.GetComponent <Skills>().warrior() * 0.4f); if (modelFromPlayer.GetComponent <Clothes>().vest != -1) { armor = armor * ArmorStats.getArmor(modelFromPlayer.GetComponent <Clothes>().vest); } modelFromPlayer.GetComponent <Life>().damage((int)armor, "You were mauled by a zombie!", -20, ""); if (ServerSettings.mode != 2) { modelFromPlayer.GetComponent <Life>().infect(4); } else { modelFromPlayer.GetComponent <Life>().infect(12); } base.networkView.RPC("swing", RPCMode.All, new object[0]); Transform transforms = base.transform; float single = modelFromPlayer.transform.position.z - base.transform.position.z; float single1 = modelFromPlayer.transform.position.x; Vector3 vector3 = base.transform.position; transforms.rotation = Quaternion.Euler(0f, 90f - Mathf.Atan2(single, single1 - vector3.x) * 57.29578f, 0f); NetworkSounds.askSound(string.Concat("Sounds/Animals/Zombie/attack_", UnityEngine.Random.Range(0, Zombie.ATTACKS)), base.transform.position, 0.75f, UnityEngine.Random.Range(0.9f, 1.1f), 1f); NetworkEffects.askEffect("Effects/flesh", modelFromPlayer.transform.position + Vector3.up, Quaternion.identity, -1f); } } }
public static void damage(Vector3 position, int amount, NetworkPlayer player) { NetworkUser user = NetworkUserList.getUserFromPlayer(player); int permission = UserList.getPermission(user.id); if (permission < 1) { Reference.Tell(player, "Building destroy not allowed!"); return; } int num = 0; while (num < SpawnStructures.structures.Count) { if (SpawnStructures.structures[num].position != position) { num++; } else { ServerStructure item = SpawnStructures.structures[num]; item.health = item.health - amount; if (SpawnStructures.structures[num].health <= 0) { NetworkEffects.askEffect("Effects/debrisWood", position, Quaternion.Euler(-90f, 0f, 0f), -1f); NetworkSounds.askSound("Sounds/Barricades/debrisWood", position, 1f, UnityEngine.Random.Range(0.9f, 1.1f), 1f); SpawnStructures.tool.networkView.RPC("destroyStructure", RPCMode.All, new object[] { num }); } break; } } }
public void OnTriggerEnter(Collider other) { if (base.transform.parent.GetComponent <Vehicle>().lastSpeed > 5 && base.transform.parent.GetComponent <Vehicle>().passengers[0] != null) { if ((other.tag == "Enemy" || other.tag == "Player") && ServerSettings.pvp) { GameObject gameObject = null; gameObject = (other.tag != "Enemy" ? other.gameObject : OwnerFinder.getOwner(other.gameObject)); NetworkUser userFromPlayer = NetworkUserList.getUserFromPlayer(base.transform.parent.GetComponent <Vehicle>().passengers[0].player); if (userFromPlayer != null && !gameObject.GetComponent <Life>().dead&& (userFromPlayer.friend == string.Empty || userFromPlayer.friend != gameObject.GetComponent <Player>().owner.friend)) { if (gameObject.GetComponent <Player>().owner.reputation >= 0) { NetworkHandler.offsetReputation(userFromPlayer.player, -1); } else { NetworkHandler.offsetReputation(userFromPlayer.player, 1); } gameObject.GetComponent <Life>().damage(1000, string.Concat("You were run over by ", userFromPlayer.name, "!"), -1, userFromPlayer.id); NetworkSounds.askSound("Sounds/Impacts/flesh", gameObject.transform.position + Vector3.up, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/flesh", gameObject.transform.position + Vector3.up, Quaternion.identity, -1f); } } else if (other.tag == "Animal") { GameObject owner = OwnerFinder.getOwner(other.gameObject); owner.GetComponent <AI>().damage(1000); NetworkSounds.askSound("Sounds/Impacts/flesh", owner.transform.position + Vector3.up, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/flesh", owner.transform.position + Vector3.up, Quaternion.identity, -1f); } } }
public void OnTriggerEnter(Collider other) { if (other.tag == "Player" && this.powered) { InteractionInterface.sendTrap(base.transform.parent.position); NetworkSounds.askSound("Sounds/Barricades/electrocute", other.transform.position + Vector3.up, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/flesh", other.transform.position + Vector3.up, Quaternion.identity, -1f); } }
public override void tick() { if (this.swinging && Time.realtimeSinceStartup - this.lastSwing > 0.1f) { this.lastSwing = Time.realtimeSinceStartup; NetworkSounds.askSound(string.Concat("Sounds/Items/", ItemSounds.getSource(Equipment.id), "/use"), Camera.main.transform.position + (Camera.main.transform.forward * 0.5f), 0.25f, UnityEngine.Random.Range(0.9f, 1.1f), 1f); Physics.Raycast(Camera.main.transform.position + (Camera.main.transform.forward * -0.5f), Camera.main.transform.forward, out Repair.hit, MeleeStats.getRange(Equipment.id) + 0.5f, RayMasks.DAMAGE); if (Repair.hit.collider != null) { NetworkEffects.askEffect("Effects/repair", Repair.hit.point + (Repair.hit.normal * 0.05f), Quaternion.LookRotation(Repair.hit.normal), -1f); if (Repair.hit.collider.tag == "Enemy" && ServerSettings.pvp) { int limb = OwnerFinder.getLimb(Repair.hit.collider.gameObject); GameObject owner = OwnerFinder.getOwner(Repair.hit.collider.gameObject); if (owner != null && owner.GetComponent <Player>().action != 4 && (PlayerSettings.friend == string.Empty || PlayerSettings.friendHash != owner.GetComponent <Player>().owner.friend)) { if (!Network.isServer) { base.networkView.RPC("swingPlayer", RPCMode.Server, new object[] { owner.GetComponent <Player>().owner.id, limb }); } else { this.swingPlayer(owner.GetComponent <Player>().owner.id, limb); } } } else if (Repair.hit.collider.tag == "Animal") { int num = OwnerFinder.getLimb(Repair.hit.collider.gameObject); GameObject gameObject = OwnerFinder.getOwner(Repair.hit.collider.gameObject); if (gameObject != null && !gameObject.GetComponent <AI>().dead) { if (!Network.isServer) { base.networkView.RPC("swingAnimal", RPCMode.Server, new object[] { gameObject.networkView.viewID, num }); } else { this.swingAnimal(gameObject.networkView.viewID, num); } } } else if (Repair.hit.collider.tag == "Vehicle" && Repair.hit.collider.GetComponent <Vehicle>().health < Repair.hit.collider.GetComponent <Vehicle>().maxHealth&& !Repair.hit.collider.GetComponent <Vehicle>().exploded) { if (!Network.isServer) { base.networkView.RPC("swingVehicle", RPCMode.Server, new object[] { Repair.hit.collider.networkView.viewID }); } else { this.swingVehicle(Repair.hit.collider.networkView.viewID); } } } } }
public void OnDestroy() { if (Network.isServer) { ExplosionTool.explode(base.transform.position, (float)ExplosiveStats.getRange(23007), ExplosiveStats.getDamage(23007)); NetworkEffects.askEffect("Effects/grenade", base.transform.position + Vector3.up, Quaternion.Euler(-90f, 0f, 0f), -1f); NetworkEffects.askEffect("Effects/rubble", base.transform.position, Quaternion.Euler(-90f, 0f, 0f), -1f); NetworkSounds.askSound("Sounds/Projectiles/grenade", base.transform.position, 1f, UnityEngine.Random.Range(0.95f, 1.05f), 2f); } }
public static void explode(Vector3 position, float range, int damage) { Collider[] colliderArray = Physics.OverlapSphere(position, range, RayMasks.ATTACKABLE); for (int i = 0; i < (int)colliderArray.Length; i++) { if (RayMasks.isVisible(position, colliderArray[i].transform.position + Vector3.up)) { if (colliderArray[i].tag == "Player") { if (ServerSettings.pvp) { colliderArray[i].GetComponent <Life>().damage(damage, "You were blown up by an explosion.", -2, ""); NetworkEffects.askEffect("Effects/flesh", colliderArray[i].transform.position + Vector3.up, Quaternion.identity, -1f); } } else if (colliderArray[i].tag == "Enemy") { if (ServerSettings.pvp) { GameObject owner = OwnerFinder.getOwner(colliderArray[i].gameObject); owner.GetComponent <Life>().damage(damage, "You were blown up by an explosion.", -2, ""); NetworkEffects.askEffect("Effects/flesh", colliderArray[i].transform.position + Vector3.up, Quaternion.identity, -1f); } } else if (colliderArray[i].tag == "Animal") { GameObject gameObject = OwnerFinder.getOwner(colliderArray[i].gameObject); gameObject.GetComponent <AI>().damage(damage); NetworkEffects.askEffect("Effects/flesh", colliderArray[i].transform.position + Vector3.up, Quaternion.identity, -1f); } else if (colliderArray[i].tag == "Barricade") { if (ServerSettings.pvp) { SpawnBarricades.damage(colliderArray[i].transform.parent.position, damage); } } else if (colliderArray[i].tag == "Structure") { if (ServerSettings.pvp) { // FIXME: explosion to structures? //SpawnStructures.damage(colliderArray[i].transform.parent.position, damage); } } else if (colliderArray[i].tag == "Vehicle" && ServerSettings.pvp) { colliderArray[i].GetComponent <Vehicle>().damage(damage); } } } SpawnAnimals.attract(position + Vector3.up, 64f); }
public void OnTriggerEnter(Collider other) { if (other.tag == "Player") { InteractionInterface.sendTrap(base.transform.parent.position); if (ServerSettings.pvp) { Player.life.sendBones(); } NetworkSounds.askSound("Sounds/Barricades/snare", other.transform.position + Vector3.up, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/flesh", other.transform.position + Vector3.up, Quaternion.identity, -1f); } }
public static void damage(Vector3 position, int amount) { Point2 region = NetworkRegions.getRegion(position); int indexFromPositionServer = SpawnBarricades.getIndexFromPositionServer(region, position); if (indexFromPositionServer != -1) { ServerBarricade item = SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer]; item.health = item.health - amount; if (SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].health <= 0) { NetworkEffects.askEffect(BarricadeStats.getEffect(SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].id), position, Quaternion.Euler(-90f, 0f, 0f), -1f); NetworkSounds.askSound(BarricadeStats.getSound(SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].id), position, 1f, UnityEngine.Random.Range(0.9f, 1.1f), 1f); SpawnBarricades.tool.networkView.RPC("destroyBarricade", RPCMode.All, new object[] { position }); } } }
public void destroyBarricade(Vector3 position) { int indexFromPositionServer; ClientItem[,] crateItems; Point2 region = NetworkRegions.getRegion(position); bool flag = false; int item = -1; Vector3 vector3 = Vector3.zero; if (Network.isServer) { indexFromPositionServer = SpawnBarricades.getIndexFromPositionServer(region, position); if (SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].id == 16019 || SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].id == 16025 || SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].id == 16023) { if (SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].id != 16019) { string[] strArrays = Packer.unpack(SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].state, '\u005F'); crateItems = InteractionInterface.getCrateItems(SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].id, Sneaky.expose(strArrays[2])); } else { crateItems = InteractionInterface.getCrateItems(SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].id, Sneaky.expose(SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].state)); } for (int i = 0; i < 2; i++) { for (int j = 0; j < BarricadeStats.getCapacity(SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].id); j++) { if (!ItemStackable.getStackable(crateItems[i, j].id)) { SpawnItems.drop(crateItems[i, j].id, crateItems[i, j].amount, crateItems[i, j].state, position); } else { for (int k = 0; k < crateItems[i, j].amount; k++) { SpawnItems.drop(crateItems[i, j].id, 1, crateItems[i, j].state, position); } } } } } else if (ExplosiveStats.getDamage(SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].id) != 0) { flag = true; item = SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].id; if (SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].id != 16015) { vector3 = position + Vector3.up; NetworkEffects.askEffect("Effects/grenade", position, Quaternion.Euler(-90f, 0f, 0f), -1f); NetworkSounds.askSoundMax("Sounds/Projectiles/grenade", position, 1f, UnityEngine.Random.Range(0.95f, 1.05f), 4f, 64f); } else { vector3 = position + SpawnBarricades.regions[region.x, region.y].models[indexFromPositionServer].transform.up; NetworkEffects.askEffect("Effects/bomb", position, Quaternion.Euler(-90f, 0f, 0f), -1f); NetworkSounds.askSoundMax("Sounds/Projectiles/bomb", position, 1f, UnityEngine.Random.Range(0.95f, 1.05f), 4f, 64f); } } if (indexFromPositionServer != -1 && indexFromPositionServer < SpawnBarricades.regions[region.x, region.y].barricades.Count) { SpawnBarricades.regions[region.x, region.y].barricades.RemoveAt(indexFromPositionServer); } } indexFromPositionServer = SpawnBarricades.getIndexFromPositionClient(region, position); if (indexFromPositionServer != -1 && indexFromPositionServer < SpawnBarricades.regions[region.x, region.y].models.Count) { UnityEngine.Object.Destroy(SpawnBarricades.regions[region.x, region.y].models[indexFromPositionServer]); SpawnBarricades.regions[region.x, region.y].models.RemoveAt(indexFromPositionServer); } if (flag) { ExplosionTool.explode(vector3, (float)ExplosiveStats.getRange(item), ExplosiveStats.getDamage(item)); } }
public void Update() { if (this.real) { if (Network.isServer) { if (base.transform.position.y < Ocean.level - 1f && this.health != this.maxHealth) { base.networkView.RPC("tellHealth", RPCMode.All, new object[] { this.maxHealth }); } if ((this.wrecked || this.exploded) && this.headlights) { base.networkView.RPC("tellHeadlights", RPCMode.All, new object[] { false }); } if ((this.wrecked || this.exploded) && this.sirens) { base.networkView.RPC("tellSirens", RPCMode.All, new object[] { false }); } if (!this.wrecked) { if (base.transform.position.y < Ocean.level - 1f) { this.wrecked = true; base.networkView.RPC("tellWrecked", RPCMode.All, new object[] { true }); } else if (this.health < 10) { this.wrecked = true; base.networkView.RPC("tellWrecked", RPCMode.All, new object[] { true }); } // Checking if NOW wrecked if (this.wrecked) { this.ejectAll(); this.lastWrecked = Time.realtimeSinceStartup; } else if (this.lastSpeed != 0 && Time.realtimeSinceStartup - this.lastPump > 3f && this.fuel > 0) { this.lastPump = Time.realtimeSinceStartup; this.burn(1); if (this.fuel == 0) { base.networkView.RPC("tellHeadlights", RPCMode.All, new object[] { false }); base.networkView.RPC("tellSirens", RPCMode.All, new object[] { false }); } } } else if (Time.realtimeSinceStartup - this.lastWrecked > 10f && !this.exploded && base.transform.position.y > Ocean.level - 1f) { this.exploded = true; base.networkView.RPC("tellExploded", RPCMode.All, new object[] { true }); ExplosionTool.explode(base.transform.position + base.transform.forward, 10f, 70); NetworkEffects.askEffect("Effects/bomb", this.position, Quaternion.Euler(-90f, 0f, 0f), -1f); NetworkSounds.askSoundMax("Sounds/Projectiles/bomb", this.position, 1f, UnityEngine.Random.Range(0.95f, 1.05f), 4f, 64f); base.rigidbody.AddForce(new Vector3(0f, 20f, 0f), ForceMode.Impulse); base.rigidbody.AddTorque(new Vector3((float)UnityEngine.Random.Range(-20, 20), 0f, 0f), ForceMode.Impulse); base.Invoke("removeFromWorld", 30f); } if (this.lastSpeed == 0) { this.lastPump = Time.realtimeSinceStartup + 1f; } if (this.passengers[0] == null && (double)(Time.realtimeSinceStartup - this.lastTick) > 0.2) { this.lastTick = Time.realtimeSinceStartup; if ((base.transform.position - this.lastPosition).sqrMagnitude > 1f) { this.lastPosition = this.position; base.networkView.RPC("updatePosition", RPCMode.All, new object[] { base.transform.position, base.transform.rotation }); } } } if ((Movement.vehicle != this || !Movement.isDriving) && (!Network.isServer || this.passengers[0] != null)) { base.rigidbody.MovePosition(Vector3.Lerp(base.transform.position, this.position, (float)NetworkInterpolation.INTERPOLATION_RATE * Time.deltaTime)); base.rigidbody.MoveRotation(Quaternion.Lerp(base.transform.rotation, this.rotation, (float)NetworkInterpolation.INTERPOLATION_RATE * Time.deltaTime)); } if (this.sirens) { if (Time.realtimeSinceStartup % 0.717f >= 0.3585f) { base.transform.FindChild("siren").light.color = Color.blue; } else { base.transform.FindChild("siren").light.color = Color.red; } } AudioSource audioSource = base.audio; float single = base.audio.volume; if (this.fuel <= 0) { fuel = 0; } else { fuel = 1; } } }
public override void tick() { if (this.swung) { if (Time.realtimeSinceStartup - this.lastSwing > (!this.lastStrong ? Viewmodel.model.animation["swingWeak"].length / 2f : Viewmodel.model.animation["swingStrong"].length / 2f)) { NetworkSounds.askSound(string.Concat("Sounds/Items/", ItemSounds.getSource(Equipment.id), "/use"), Camera.main.transform.position + (Camera.main.transform.forward * 0.5f), 0.25f, UnityEngine.Random.Range(0.9f, 1.1f), 1f); this.swung = false; Physics.Raycast(Camera.main.transform.position + (Camera.main.transform.forward * -0.5f), Camera.main.transform.forward, out Melee.hit, MeleeStats.getRange(Equipment.id) + 0.5f, RayMasks.DAMAGE); if (Melee.hit.collider != null) { if (Melee.hit.point.y < Ocean.level) { NetworkSounds.askSound("Sounds/Impacts/rock", Melee.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/bubbles", Melee.hit.point + (Melee.hit.normal * 0.05f), Quaternion.LookRotation(Melee.hit.normal), -1f); } else if (Melee.hit.collider.gameObject.name == "ground" || Melee.hit.collider.material.name.ToLower() == "rock (instance)" || Melee.hit.collider.material.name.ToLower() == "ground (instance)") { NetworkSounds.askSound("Sounds/Impacts/rock", Melee.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/rock", Melee.hit.point + (Melee.hit.normal * 0.05f), Quaternion.LookRotation(Melee.hit.normal), -1f); } else if (Melee.hit.collider.material.name.ToLower() == "cloth (instance)") { NetworkSounds.askSound("Sounds/Impacts/concrete", Melee.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/cloth", Melee.hit.point + (Melee.hit.normal * 0.05f), Quaternion.LookRotation(Melee.hit.normal), -1f); } else if (Melee.hit.collider.material.name.ToLower() == "wood (instance)") { NetworkSounds.askSound("Sounds/Impacts/wood", Melee.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/splinters", Melee.hit.point + (Melee.hit.normal * 0.05f), Quaternion.LookRotation(Melee.hit.normal), -1f); } else if (Melee.hit.collider.material.name.ToLower() == "tile (instance)") { NetworkSounds.askSound("Sounds/Impacts/concrete", Melee.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/tile", Melee.hit.point + (Melee.hit.normal * 0.05f), Quaternion.LookRotation(Melee.hit.normal), -1f); } else if (Melee.hit.collider.material.name.ToLower() == "concrete (instance)") { NetworkSounds.askSound("Sounds/Impacts/concrete", Melee.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/concrete", Melee.hit.point + (Melee.hit.normal * 0.05f), Quaternion.LookRotation(Melee.hit.normal), -1f); } else if (Melee.hit.collider.material.name.ToLower() == "metal (instance)" || Melee.hit.collider.material.name.ToLower() == "iron (instance)") { NetworkSounds.askSound("Sounds/Impacts/metal", Melee.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/sparks", Melee.hit.point + (Melee.hit.normal * 0.05f), Quaternion.LookRotation(Melee.hit.normal), -1f); } else if (Melee.hit.collider.material.name.ToLower() == "flesh (instance)") { NetworkSounds.askSound("Sounds/Impacts/flesh", Melee.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/flesh", Melee.hit.point + (Melee.hit.normal * 0.05f), Quaternion.LookRotation(Melee.hit.normal), -1f); } if (Melee.hit.collider.name == "ground" || Melee.hit.collider.tag == "Prop" || Melee.hit.collider.tag == "World" || Melee.hit.collider.tag == "Environment" || Melee.hit.collider.tag == "Global") { NetworkEffects.askEffect("Effects/hole", Melee.hit.point + (Melee.hit.normal * UnityEngine.Random.Range(0.04f, 0.06f)), Quaternion.LookRotation(Melee.hit.normal) * Quaternion.Euler(0f, 0f, (float)UnityEngine.Random.Range(0, 360)), 20f); } if (Melee.hit.collider.tag == "Barricade") { //HUDGame.lastStructmarker = Time.realtimeSinceStartup; if (!Network.isServer) { base.networkView.RPC("swingBarricade", RPCMode.Server, new object[] { Melee.hit.collider.transform.parent.position, this.lastStrong }); } else { this.swingBarricade(Melee.hit.collider.transform.parent.position, this.lastStrong); } } else if (Melee.hit.collider.tag == "Structure") { //HUDGame.lastStructmarker = Time.realtimeSinceStartup; if (!Network.isServer) { base.networkView.RPC("swingStructure", RPCMode.Server, new object[] { Melee.hit.collider.transform.parent.position, this.lastStrong }); } else { // FIXME: client stuff? //this.swingStructure(Melee.hit.collider.transform.parent.position, this.lastStrong); } } else if (Melee.hit.collider.tag == "Enemy" && ServerSettings.pvp) { int limb = OwnerFinder.getLimb(Melee.hit.collider.gameObject); GameObject owner = OwnerFinder.getOwner(Melee.hit.collider.gameObject); if (owner != null && owner.GetComponent <Player>().action != 4 && (PlayerSettings.friend == string.Empty || PlayerSettings.friendHash != owner.GetComponent <Player>().owner.friend)) { //HUDGame.lastHitmarker = Time.realtimeSinceStartup; if (!Network.isServer) { base.networkView.RPC("swingPlayer", RPCMode.Server, new object[] { owner.GetComponent <Player>().owner.id, limb, this.lastStrong }); } else { this.swingPlayer(owner.GetComponent <Player>().owner.id, limb, this.lastStrong); } } } else if (Melee.hit.collider.tag == "Animal") { int num = OwnerFinder.getLimb(Melee.hit.collider.gameObject); GameObject gameObject = OwnerFinder.getOwner(Melee.hit.collider.gameObject); if (gameObject != null && !gameObject.GetComponent <AI>().dead) { //HUDGame.lastHitmarker = Time.realtimeSinceStartup; if (!Network.isServer) { base.networkView.RPC("swingAnimal", RPCMode.Server, new object[] { gameObject.networkView.viewID, num, this.lastStrong }); } else { this.swingAnimal(gameObject.networkView.viewID, num, this.lastStrong); } } } else if (Melee.hit.collider.tag == "Vehicle" && Melee.hit.collider.GetComponent <Vehicle>().health > 0 && ServerSettings.pvp) { //HUDGame.lastHitmarker = Time.realtimeSinceStartup; if (!Network.isServer) { base.networkView.RPC("swingVehicle", RPCMode.Server, new object[] { Melee.hit.collider.networkView.viewID, this.lastStrong }); } else { this.swingVehicle(Melee.hit.collider.networkView.viewID, this.lastStrong); } } } } } if (this.swinging && Movement.vehicle == null && (!this.strong || Player.life.stamina >= 10 - (int)(Player.skills.endurance() * 10f))) { if (Time.realtimeSinceStartup - this.lastSwing <= (!this.lastStrong ? Viewmodel.model.animation["swingWeak"].length : Viewmodel.model.animation["swingStrong"].length)) { this.swinging = false; return; } if (this.strong) { Player.life.exhaust(10 - (int)(Player.skills.endurance() * 10f)); } this.lastStrong = this.strong; this.swinging = false; this.lastSwing = Time.realtimeSinceStartup; this.swung = true; if (!this.strong) { Viewmodel.play("swingWeak"); } else { Viewmodel.play("swingStrong"); } if (Stance.state == 0) { Player.play("standMelee"); } else if (Stance.state == 1) { Player.play("crouchMelee"); } else if (Stance.state == 2) { Player.play("proneMelee"); } return; } this.swinging = false; }
public void tick() { if (!this.dead) { if (Player.model != null && Player.life != null && !Player.life.dead) { if (Mathf.Abs(base.transform.position.x - Player.model.transform.position.x) >= (float)Stance.range || Mathf.Abs(base.transform.position.z - Player.model.transform.position.z) >= (float)Stance.range || Mathf.Abs(base.transform.position.y - Player.model.transform.position.y) >= (float)(Stance.range / 2)) { this.lastClientAttack = Time.realtimeSinceStartup; } else { if ((!this.agro && !this.search || (double)UnityEngine.Random.@value > 0.8) && RayMasks.isVisible(base.transform.position + Vector3.up, Player.model.transform.position + Vector3.up)) { if (!Network.isServer) { base.networkView.RPC("askAgro", RPCMode.Server, new object[] { Network.player }); } else { this.askAgro(Network.player); } } if (!(Movement.vehicle == null) || Mathf.Abs(base.transform.position.x - Player.model.transform.position.x) >= 1.25f || Mathf.Abs(base.transform.position.z - Player.model.transform.position.z) >= 1.25f || Mathf.Abs(base.transform.position.y - Player.model.transform.position.y) >= 2f) { this.lastClientAttack = Time.realtimeSinceStartup; } else if (Time.realtimeSinceStartup - this.lastClientAttack > 0.5f) { this.lastClientAttack = Time.realtimeSinceStartup; if (RayMasks.isVisible(base.transform.position + Vector3.up, Player.model.transform.position + Vector3.up)) { if (!Network.isServer) { base.networkView.RPC("askMaul", RPCMode.Server, new object[] { Network.player }); } else { this.askMaul(Network.player); } } } } } if (Network.isServer) { if (!this.agent.isOnOffMeshLink) { if (!this.agro && !this.search) { if ((double)UnityEngine.Random.@value > 0.975) { NetworkSounds.askSound(string.Concat("Sounds/Animals/Zombie/idle_", UnityEngine.Random.Range(0, Zombie.IDLES)), base.transform.position, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.5f); } } else if ((double)UnityEngine.Random.@value > 0.975) { NetworkSounds.askSound(string.Concat("Sounds/Animals/Zombie/agro_", UnityEngine.Random.Range(0, Zombie.AGROS)), base.transform.position, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.5f); } if (this.agro && this.target != null) { if (Mathf.Abs(base.transform.position.x - this.target.transform.position.x) > 64f || Mathf.Abs(base.transform.position.z - this.target.transform.position.z) > 64f || this.target.GetComponent <Life>().dead) { if (this.agent.enabled) { this.agent.Stop(); this.agent.enabled = false; } this.target = null; this.destroy = null; if (this.agro) { base.networkView.RPC("tellAgro", RPCMode.All, new object[] { false }); } } else if (this.destroy == null) { if (!this.agent.enabled) { this.agent.enabled = true; } this.agent.destination = this.target.transform.position + this.target.GetComponent <Player>().prediction; if (Mathf.Abs(this.agent.destination.x - base.transform.position.x) >= 0.75f || Mathf.Abs(this.agent.destination.z - base.transform.position.z) >= 0.75f) { if (!this.moving) { base.networkView.RPC("tellMoving", RPCMode.All, new object[] { true }); } if (this.target.GetComponent <Player>().vehicle == null) { Collider[] colliderArray = Physics.OverlapSphere(base.transform.position, 2f, RayMasks.BUILT); if ((int)colliderArray.Length > 0) { for (int i = 0; i < (int)colliderArray.Length; i++) { if (!BarricadeStats.getMaulable(int.Parse(colliderArray[i].transform.parent.name))) { if (BarricadeStats.getBarrier(int.Parse(colliderArray[i].transform.parent.name))) { this.destroy = colliderArray[i].gameObject; } if (BarricadeStats.getDamage(int.Parse(colliderArray[i].transform.parent.name)) != 0 && (colliderArray[i].transform.parent.name != "16009" && colliderArray[i].transform.parent.name != "16021" || colliderArray[i].GetComponent <ElectricTrap>().powered)) { base.damage(BarricadeStats.getDamage(int.Parse(colliderArray[i].transform.parent.name))); SpawnBarricades.damage(colliderArray[i].transform.parent.position, 10); NetworkSounds.askSound("Sounds/Impacts/flesh", base.transform.position + Vector3.up, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/flesh", base.transform.position + Vector3.up, Quaternion.identity, -1f); } else if (ExplosiveStats.getDamage(int.Parse(colliderArray[i].transform.parent.name)) != 0) { InteractionInterface.sendExplosiveTrap(colliderArray[i].transform.parent.position); } } else { this.destroy = colliderArray[i].gameObject; } } } } else { this.destroy = this.target.GetComponent <Player>().vehicle.gameObject; } } else { if (this.moving) { base.networkView.RPC("tellMoving", RPCMode.All, new object[] { false }); } if (this.search) { base.networkView.RPC("tellSearch", RPCMode.All, new object[] { false }); } } } else { if (!this.agent.enabled) { this.agent.enabled = true; } this.agent.destination = this.destroy.transform.position; if (this.destroy.tag == "Barricade") { if (Time.realtimeSinceStartup - this.lastServerAttack > 0.5f) { this.lastServerAttack = Time.realtimeSinceStartup; if (RayMasks.isVisible(base.transform.position + Vector3.up, this.destroy.transform.position + Vector3.up)) { SpawnBarricades.damage(this.destroy.transform.parent.position, 10); base.networkView.RPC("swing", RPCMode.All, new object[0]); Transform transforms = base.transform; Vector3 vector3 = this.destroy.transform.position; float single = vector3.z - base.transform.position.z; float single1 = this.destroy.transform.position.x; Vector3 vector31 = base.transform.position; transforms.rotation = Quaternion.Euler(0f, 90f - Mathf.Atan2(single, single1 - vector31.x) * 57.29578f, 0f); NetworkSounds.askSound(string.Concat("Sounds/Animals/Zombie/attack_", UnityEngine.Random.Range(0, Zombie.ATTACKS)), base.transform.position, 0.75f, UnityEngine.Random.Range(0.9f, 1.1f), 1f); } } if (this.moving) { base.networkView.RPC("tellMoving", RPCMode.All, new object[] { false }); } } else if (this.destroy.tag == "Structure") { if (Time.realtimeSinceStartup - this.lastServerAttack > 0.5f) { this.lastServerAttack = Time.realtimeSinceStartup; // FIXME: zombie can't destroy //SpawnStructures.damage(this.destroy.transform.parent.position, 10); base.networkView.RPC("swing", RPCMode.All, new object[0]); Transform transforms1 = base.transform; Vector3 vector32 = this.destroy.transform.position; float single2 = vector32.z - base.transform.position.z; float single3 = this.destroy.transform.position.x; Vector3 vector33 = base.transform.position; transforms1.rotation = Quaternion.Euler(0f, 90f - Mathf.Atan2(single2, single3 - vector33.x) * 57.29578f, 0f); NetworkSounds.askSound(string.Concat("Sounds/Animals/Zombie/attack_", UnityEngine.Random.Range(0, Zombie.ATTACKS)), base.transform.position, 0.75f, UnityEngine.Random.Range(0.9f, 1.1f), 1f); } if (this.moving) { base.networkView.RPC("tellMoving", RPCMode.All, new object[] { false }); } } else if (this.destroy.tag == "Vehicle") { if (Mathf.Abs(base.transform.position.x - this.destroy.transform.position.x) > 6f || Mathf.Abs(base.transform.position.y - this.destroy.transform.position.y) > 6f || Mathf.Abs(base.transform.position.z - this.destroy.transform.position.z) > 6f || this.target == null || this.target.GetComponent <Player>().vehicle == null) { this.destroy = null; } else { if (Time.realtimeSinceStartup - this.lastServerAttack > 0.5f) { this.lastServerAttack = Time.realtimeSinceStartup; this.destroy.GetComponent <Vehicle>().damage(2); base.networkView.RPC("swing", RPCMode.All, new object[0]); Transform transforms2 = base.transform; Vector3 vector34 = this.destroy.transform.position; float single4 = vector34.z - base.transform.position.z; float single5 = this.destroy.transform.position.x; Vector3 vector35 = base.transform.position; transforms2.rotation = Quaternion.Euler(0f, 90f - Mathf.Atan2(single4, single5 - vector35.x) * 57.29578f, 0f); if (this.destroy.GetComponent <Vehicle>().health == 0) { this.destroy = null; } NetworkSounds.askSound(string.Concat("Sounds/Animals/Zombie/attack_", UnityEngine.Random.Range(0, Zombie.ATTACKS)), base.transform.position, 0.75f, UnityEngine.Random.Range(0.9f, 1.1f), 1f); } if (this.moving) { base.networkView.RPC("tellMoving", RPCMode.All, new object[] { false }); } } } } base.Invoke("tick", UnityEngine.Random.Range(0.25f, 0.35f)); } else if (!this.search || !(this.moveTo != Vector3.zero)) { if (this.agent.enabled) { this.agent.Stop(); this.agent.enabled = false; } if (this.target != null) { this.target = null; if (this.agro) { base.networkView.RPC("tellAgro", RPCMode.All, new object[] { false }); } } if (this.moveTo != Vector3.zero) { this.moveTo = Vector3.zero; if (this.search) { base.networkView.RPC("tellSearch", RPCMode.All, new object[] { false }); } } this.destroy = null; if (this.moving) { base.networkView.RPC("tellMoving", RPCMode.All, new object[] { false }); } base.Invoke("tick", UnityEngine.Random.Range(2.2f, 2.6f)); } else { if (this.destroy == null) { if (!this.agent.enabled) { this.agent.enabled = true; } this.agent.destination = this.moveTo; if (Mathf.Abs(this.agent.destination.x - base.transform.position.x) >= 0.75f || Mathf.Abs(this.agent.destination.z - base.transform.position.z) >= 0.75f) { if (!this.moving) { base.networkView.RPC("tellMoving", RPCMode.All, new object[] { true }); } Collider[] colliderArray1 = Physics.OverlapSphere(base.transform.position, 2f, RayMasks.BUILT); if ((int)colliderArray1.Length > 0) { for (int j = 0; j < (int)colliderArray1.Length; j++) { if (!BarricadeStats.getMaulable(int.Parse(colliderArray1[j].transform.parent.name))) { if (BarricadeStats.getBarrier(int.Parse(colliderArray1[j].transform.parent.name))) { this.destroy = colliderArray1[j].gameObject; } if (BarricadeStats.getDamage(int.Parse(colliderArray1[j].transform.parent.name)) != 0 && (colliderArray1[j].transform.parent.name != "16009" && colliderArray1[j].transform.parent.name != "16021" || colliderArray1[j].GetComponent <ElectricTrap>().powered)) { base.damage(BarricadeStats.getDamage(int.Parse(colliderArray1[j].transform.parent.name))); SpawnBarricades.damage(colliderArray1[j].transform.parent.position, 10); NetworkSounds.askSound("Sounds/Impacts/flesh", base.transform.position + Vector3.up, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/flesh", base.transform.position + Vector3.up, Quaternion.identity, -1f); } else if (ExplosiveStats.getDamage(int.Parse(colliderArray1[j].transform.parent.name)) != 0) { InteractionInterface.sendExplosiveTrap(colliderArray1[j].transform.parent.position); } } else { this.destroy = colliderArray1[j].gameObject; } } } } else { this.moveTo = Vector3.zero; if (this.moving) { base.networkView.RPC("tellMoving", RPCMode.All, new object[] { false }); } if (this.search) { base.networkView.RPC("tellSearch", RPCMode.All, new object[] { false }); } } } else { if (!this.agent.enabled) { this.agent.enabled = true; } this.agent.destination = this.destroy.transform.position; if (this.destroy.tag == "Barricade") { if (Time.realtimeSinceStartup - this.lastServerAttack > 0.5f) { this.lastServerAttack = Time.realtimeSinceStartup; if (RayMasks.isVisible(base.transform.position + Vector3.up, this.destroy.transform.position + Vector3.up)) { SpawnBarricades.damage(this.destroy.transform.parent.position, 10); base.networkView.RPC("swing", RPCMode.All, new object[0]); Transform transforms3 = base.transform; Vector3 vector36 = this.destroy.transform.position; float single6 = vector36.z - base.transform.position.z; float single7 = this.destroy.transform.position.x; Vector3 vector37 = base.transform.position; transforms3.rotation = Quaternion.Euler(0f, 90f - Mathf.Atan2(single6, single7 - vector37.x) * 57.29578f, 0f); NetworkSounds.askSound(string.Concat("Sounds/Animals/Zombie/attack_", UnityEngine.Random.Range(0, Zombie.ATTACKS)), base.transform.position, 0.75f, UnityEngine.Random.Range(0.9f, 1.1f), 1f); } } if (this.moving) { base.networkView.RPC("tellMoving", RPCMode.All, new object[] { false }); } } else if (this.destroy.tag == "Structure") { if (Time.realtimeSinceStartup - this.lastServerAttack > 0.5f) { this.lastServerAttack = Time.realtimeSinceStartup; // FIXME: zombie can't destroy //SpawnStructures.damage(this.destroy.transform.parent.position, 10); base.networkView.RPC("swing", RPCMode.All, new object[0]); Transform transforms4 = base.transform; Vector3 vector38 = this.destroy.transform.position; float single8 = vector38.z - base.transform.position.z; float single9 = this.destroy.transform.position.x; Vector3 vector39 = base.transform.position; transforms4.rotation = Quaternion.Euler(0f, 90f - Mathf.Atan2(single8, single9 - vector39.x) * 57.29578f, 0f); NetworkSounds.askSound(string.Concat("Sounds/Animals/Zombie/attack_", UnityEngine.Random.Range(0, Zombie.ATTACKS)), base.transform.position, 0.75f, UnityEngine.Random.Range(0.9f, 1.1f), 1f); } if (this.moving) { base.networkView.RPC("tellMoving", RPCMode.All, new object[] { false }); } } else if (this.destroy.tag == "Vehicle") { if (Mathf.Abs(base.transform.position.x - this.destroy.transform.position.x) > 6f || Mathf.Abs(base.transform.position.y - this.destroy.transform.position.y) > 6f || Mathf.Abs(base.transform.position.z - this.destroy.transform.position.z) > 6f || this.target == null || this.target.GetComponent <Player>().vehicle == null) { this.destroy = null; } else { if (Time.realtimeSinceStartup - this.lastServerAttack > 0.5f) { this.lastServerAttack = Time.realtimeSinceStartup; this.destroy.GetComponent <Vehicle>().damage(2); base.networkView.RPC("swing", RPCMode.All, new object[0]); Transform transforms5 = base.transform; Vector3 vector310 = this.destroy.transform.position; float single10 = vector310.z - base.transform.position.z; float single11 = this.destroy.transform.position.x; Vector3 vector311 = base.transform.position; transforms5.rotation = Quaternion.Euler(0f, 90f - Mathf.Atan2(single10, single11 - vector311.x) * 57.29578f, 0f); if (this.destroy.GetComponent <Vehicle>().health == 0) { this.destroy = null; } NetworkSounds.askSound(string.Concat("Sounds/Animals/Zombie/attack_", UnityEngine.Random.Range(0, Zombie.ATTACKS)), base.transform.position, 0.75f, UnityEngine.Random.Range(0.9f, 1.1f), 1f); } if (this.moving) { base.networkView.RPC("tellMoving", RPCMode.All, new object[] { false }); } } } } base.Invoke("tick", UnityEngine.Random.Range(0.25f, 0.35f)); } } else { base.traverse(); base.Invoke("tick", 0.03f); } } else if (this.agro || this.search) { base.Invoke("tick", UnityEngine.Random.Range(0.25f, 0.35f)); } else { base.Invoke("tick", UnityEngine.Random.Range(2.5f, 2.6f)); } } if (this.dead) { this.anim.play("dead"); this.anim.stance(string.Empty); } else if (!this.moving) { this.anim.stance(string.Concat("idle_", this.animset)); } else { this.anim.stance(string.Concat("move_", this.animset)); } }
public void tick() { if (!this.dead) { if (Player.model != null && Player.life != null && !Player.life.dead && (!this.scared || (double)UnityEngine.Random.@value > 0.8) && Mathf.Abs(base.transform.position.x - Player.model.transform.position.x) < (float)Stance.range && Mathf.Abs(base.transform.position.z - Player.model.transform.position.z) < (float)Stance.range) { if (!Network.isServer) { base.networkView.RPC("askScare", RPCMode.Server, new object[] { Network.player }); } else { this.askScare(Network.player); } } if (!Network.isServer) { base.Invoke("tick", UnityEngine.Random.Range(1.2f, 1.4f)); } else if (this.agent.isOnOffMeshLink) { base.traverse(); base.Invoke("tick", 0.03f); } else if (!this.scared) { if (this.agent.enabled) { this.agent.Stop(); this.agent.enabled = false; } if (this.moving) { base.networkView.RPC("tellMoving", RPCMode.All, new object[] { false }); } base.Invoke("tick", UnityEngine.Random.Range(1.2f, 1.4f)); } else { if (!this.agent.enabled) { this.agent.enabled = true; } if (!this.moving) { base.networkView.RPC("tellMoving", RPCMode.All, new object[] { true }); } this.agent.destination = this.escape; if (Mathf.Abs(this.agent.destination.x - base.transform.position.x) >= 0.75f || Mathf.Abs(this.agent.destination.z - base.transform.position.z) >= 0.75f) { Collider[] colliderArray = Physics.OverlapSphere(base.transform.position, 2f, RayMasks.BUILT); if ((int)colliderArray.Length > 0) { for (int i = 0; i < (int)colliderArray.Length; i++) { if (BarricadeStats.getDamage(int.Parse(colliderArray[i].transform.parent.name)) != 0 && (colliderArray[i].transform.parent.name != "16009" && colliderArray[i].transform.parent.name != "16021" || colliderArray[i].GetComponent <ElectricTrap>().powered)) { base.damage(BarricadeStats.getDamage(int.Parse(colliderArray[i].transform.parent.name))); SpawnBarricades.damage(colliderArray[i].transform.parent.position, 10); NetworkSounds.askSound("Sounds/Impacts/flesh", base.transform.position + Vector3.up, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/flesh", base.transform.position + Vector3.up, Quaternion.identity, -1f); } else if (ExplosiveStats.getDamage(int.Parse(colliderArray[i].transform.parent.name)) != 0) { InteractionInterface.sendExplosiveTrap(colliderArray[i].transform.parent.position); } } } } else { base.networkView.RPC("tellScared", RPCMode.All, new object[] { false }); } base.Invoke("tick", UnityEngine.Random.Range(0.25f, 0.35f)); } } if (this.dead) { this.anim.stance("dead"); } else if (!this.moving) { this.anim.stance("idle"); } else { this.anim.stance("move"); } }
public override void tick() { if (this.swung && Time.realtimeSinceStartup - this.lastSwing > Viewmodel.model.animation["swingWeak"].length / 2f) { NetworkSounds.askSound(string.Concat("Sounds/Items/", ItemSounds.getSource(Equipment.id), "/use"), Camera.main.transform.position + (Camera.main.transform.forward * 0.5f), 0.25f, UnityEngine.Random.Range(0.9f, 1.1f), 1f); this.swung = false; Physics.Raycast(Camera.main.transform.position + (Camera.main.transform.forward * -0.5f), Camera.main.transform.forward, out Flashlight.hit, MeleeStats.getRange(Equipment.id) + 0.5f, RayMasks.DAMAGE); if (Flashlight.hit.collider != null) { if (Flashlight.hit.point.y < Ocean.level) { NetworkSounds.askSound("Sounds/Impacts/rock", Flashlight.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/bubbles", Flashlight.hit.point + (Flashlight.hit.normal * 0.05f), Quaternion.LookRotation(Flashlight.hit.normal), -1f); } else if (Flashlight.hit.collider.gameObject.name == "ground" || Flashlight.hit.collider.material.name.ToLower() == "rock (instance)" || Flashlight.hit.collider.material.name.ToLower() == "ground (instance)") { NetworkSounds.askSound("Sounds/Impacts/rock", Flashlight.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/rock", Flashlight.hit.point + (Flashlight.hit.normal * 0.05f), Quaternion.LookRotation(Flashlight.hit.normal), -1f); } else if (Flashlight.hit.collider.material.name.ToLower() == "cloth (instance)") { NetworkSounds.askSound("Sounds/Impacts/concrete", Flashlight.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/cloth", Flashlight.hit.point + (Flashlight.hit.normal * 0.05f), Quaternion.LookRotation(Flashlight.hit.normal), -1f); } else if (Flashlight.hit.collider.material.name.ToLower() == "wood (instance)") { NetworkSounds.askSound("Sounds/Impacts/wood", Flashlight.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/splinters", Flashlight.hit.point + (Flashlight.hit.normal * 0.05f), Quaternion.LookRotation(Flashlight.hit.normal), -1f); } else if (Flashlight.hit.collider.material.name.ToLower() == "tile (instance)") { NetworkSounds.askSound("Sounds/Impacts/concrete", Flashlight.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/tile", Flashlight.hit.point + (Flashlight.hit.normal * 0.05f), Quaternion.LookRotation(Flashlight.hit.normal), -1f); } else if (Flashlight.hit.collider.material.name.ToLower() == "concrete (instance)") { NetworkSounds.askSound("Sounds/Impacts/concrete", Flashlight.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/concrete", Flashlight.hit.point + (Flashlight.hit.normal * 0.05f), Quaternion.LookRotation(Flashlight.hit.normal), -1f); } else if (Flashlight.hit.collider.material.name.ToLower() == "metal (instance)" || Flashlight.hit.collider.material.name.ToLower() == "iron (instance)") { NetworkSounds.askSound("Sounds/Impacts/metal", Flashlight.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/sparks", Flashlight.hit.point + (Flashlight.hit.normal * 0.05f), Quaternion.LookRotation(Flashlight.hit.normal), -1f); } else if (Flashlight.hit.collider.material.name.ToLower() == "flesh (instance)") { NetworkSounds.askSound("Sounds/Impacts/flesh", Flashlight.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/flesh", Flashlight.hit.point + (Flashlight.hit.normal * 0.05f), Quaternion.LookRotation(Flashlight.hit.normal), -1f); } if (Flashlight.hit.collider.name == "ground" || Flashlight.hit.collider.tag == "Prop" || Flashlight.hit.collider.tag == "World" || Flashlight.hit.collider.tag == "Environment" || Flashlight.hit.collider.tag == "Global") { NetworkEffects.askEffect("Effects/hole", Flashlight.hit.point + (Flashlight.hit.normal * UnityEngine.Random.Range(0.04f, 0.06f)), Quaternion.LookRotation(Flashlight.hit.normal) * Quaternion.Euler(0f, 0f, (float)UnityEngine.Random.Range(0, 360)), 20f); } if (Flashlight.hit.collider.tag == "Enemy" && ServerSettings.pvp) { int limb = OwnerFinder.getLimb(Flashlight.hit.collider.gameObject); GameObject owner = OwnerFinder.getOwner(Flashlight.hit.collider.gameObject); if (owner != null && owner.GetComponent <Player>().action != 4 && (PlayerSettings.friend == string.Empty || PlayerSettings.friendHash != owner.GetComponent <Player>().owner.friend)) { if (!Network.isServer) { base.networkView.RPC("swingPlayer", RPCMode.Server, new object[] { owner.GetComponent <Player>().owner.id, limb }); } else { this.swingPlayer(owner.GetComponent <Player>().owner.id, limb); } } } else if (Flashlight.hit.collider.tag == "Animal") { int num = OwnerFinder.getLimb(Flashlight.hit.collider.gameObject); GameObject gameObject = OwnerFinder.getOwner(Flashlight.hit.collider.gameObject); if (gameObject != null && !gameObject.GetComponent <AI>().dead) { if (!Network.isServer) { base.networkView.RPC("swingAnimal", RPCMode.Server, new object[] { gameObject.networkView.viewID, num }); } else { this.swingAnimal(gameObject.networkView.viewID, num); } } } } } if (!this.swinging || Time.realtimeSinceStartup - this.lastSwing <= Viewmodel.model.animation["swingWeak"].length) { this.swinging = false; } else { this.swinging = false; this.lastSwing = Time.realtimeSinceStartup; this.swung = true; Viewmodel.play("swingWeak"); if (Stance.state == 0) { Player.play("standMelee"); } else if (Stance.state == 1) { Player.play("crouchMelee"); } else if (Stance.state == 2) { Player.play("proneMelee"); } } }
public void onReady() { NetworkEffects.tool = this; NetworkEffects.model = GameObject.Find(Application.loadedLevelName).transform.FindChild("effects").gameObject; }
public override void tick() { if (this.swinging && Time.realtimeSinceStartup - this.lastSwing > 0.1f) { Viewmodel.offset_x = UnityEngine.Random.Range(-0.02f, 0.02f); Viewmodel.offset_y = UnityEngine.Random.Range(-0.02f, 0.02f); Viewmodel.offset_z = UnityEngine.Random.Range(-0.02f, 0.02f); this.lastSwing = Time.realtimeSinceStartup; NetworkSounds.askSound(string.Concat("Sounds/Items/", ItemSounds.getSource(Equipment.id), "/use"), Camera.main.transform.position + (Camera.main.transform.forward * 0.5f), 0.25f, UnityEngine.Random.Range(0.9f, 1.1f), 1f); Physics.Raycast(Camera.main.transform.position + (Camera.main.transform.forward * -0.5f), Camera.main.transform.forward, out Chainsaw.hit, MeleeStats.getRange(Equipment.id) + 0.5f, RayMasks.DAMAGE); if (Chainsaw.hit.collider != null) { if (Chainsaw.hit.point.y < Ocean.level) { NetworkSounds.askSound("Sounds/Impacts/rock", Chainsaw.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/bubbles", Chainsaw.hit.point + (Chainsaw.hit.normal * 0.05f), Quaternion.LookRotation(Chainsaw.hit.normal), -1f); } else if (Chainsaw.hit.collider.gameObject.name == "ground" || Chainsaw.hit.collider.material.name.ToLower() == "rock (instance)" || Chainsaw.hit.collider.material.name.ToLower() == "ground (instance)") { NetworkSounds.askSound("Sounds/Impacts/rock", Chainsaw.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/rock", Chainsaw.hit.point + (Chainsaw.hit.normal * 0.05f), Quaternion.LookRotation(Chainsaw.hit.normal), -1f); } else if (Chainsaw.hit.collider.material.name.ToLower() == "cloth (instance)") { NetworkSounds.askSound("Sounds/Impacts/concrete", Chainsaw.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/cloth", Chainsaw.hit.point + (Chainsaw.hit.normal * 0.05f), Quaternion.LookRotation(Chainsaw.hit.normal), -1f); } else if (Chainsaw.hit.collider.material.name.ToLower() == "wood (instance)") { NetworkSounds.askSound("Sounds/Impacts/wood", Chainsaw.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/splinters", Chainsaw.hit.point + (Chainsaw.hit.normal * 0.05f), Quaternion.LookRotation(Chainsaw.hit.normal), -1f); } else if (Chainsaw.hit.collider.material.name.ToLower() == "tile (instance)") { NetworkSounds.askSound("Sounds/Impacts/concrete", Chainsaw.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/tile", Chainsaw.hit.point + (Chainsaw.hit.normal * 0.05f), Quaternion.LookRotation(Chainsaw.hit.normal), -1f); } else if (Chainsaw.hit.collider.material.name.ToLower() == "concrete (instance)") { NetworkSounds.askSound("Sounds/Impacts/concrete", Chainsaw.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/concrete", Chainsaw.hit.point + (Chainsaw.hit.normal * 0.05f), Quaternion.LookRotation(Chainsaw.hit.normal), -1f); } else if (Chainsaw.hit.collider.material.name.ToLower() == "metal (instance)" || Chainsaw.hit.collider.material.name.ToLower() == "iron (instance)") { NetworkSounds.askSound("Sounds/Impacts/metal", Chainsaw.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/sparks", Chainsaw.hit.point + (Chainsaw.hit.normal * 0.05f), Quaternion.LookRotation(Chainsaw.hit.normal), -1f); } else if (Chainsaw.hit.collider.material.name.ToLower() == "flesh (instance)") { NetworkSounds.askSound("Sounds/Impacts/flesh", Chainsaw.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/flesh", Chainsaw.hit.point + (Chainsaw.hit.normal * 0.05f), Quaternion.LookRotation(Chainsaw.hit.normal), -1f); } if (Chainsaw.hit.collider.tag == "Resource") { if (Chainsaw.hit.collider.name.Substring(0, 4) != "rock") { //HUDGame.lastHitmarker = Time.realtimeSinceStartup; int num = int.Parse(Chainsaw.hit.collider.transform.parent.name.Substring(Chainsaw.hit.collider.transform.parent.name.IndexOf("_") + 1)); if (!Network.isServer) { base.networkView.RPC("swingResource", RPCMode.Server, new object[] { num }); } else { this.swingResource(num); } } } else if (Chainsaw.hit.collider.tag == "Barricade") { //HUDGame.lastStructmarker = Time.realtimeSinceStartup; if (!Network.isServer) { base.networkView.RPC("swingBarricade", RPCMode.Server, new object[] { Chainsaw.hit.collider.transform.parent.position }); } else { this.swingBarricade(Chainsaw.hit.collider.transform.parent.position); } } else if (Chainsaw.hit.collider.tag == "Structure") { //HUDGame.lastStructmarker = Time.realtimeSinceStartup; if (!Network.isServer) { base.networkView.RPC("swingStructure", RPCMode.Server, new object[] { Chainsaw.hit.collider.transform.parent.position }); } else { // FIXME: client side? //this.swingStructure(Chainsaw.hit.collider.transform.parent.position); } } else if (Chainsaw.hit.collider.tag == "Enemy" && ServerSettings.pvp) { int limb = OwnerFinder.getLimb(Chainsaw.hit.collider.gameObject); GameObject owner = OwnerFinder.getOwner(Chainsaw.hit.collider.gameObject); if (owner != null && owner.GetComponent <Player>().action != 4 && (PlayerSettings.friend == string.Empty || PlayerSettings.friendHash != owner.GetComponent <Player>().owner.friend)) { //HUDGame.lastHitmarker = Time.realtimeSinceStartup; if (!Network.isServer) { base.networkView.RPC("swingPlayer", RPCMode.Server, new object[] { owner.GetComponent <Player>().owner.id, limb }); } else { this.swingPlayer(owner.GetComponent <Player>().owner.id, limb); } } } else if (Chainsaw.hit.collider.tag == "Animal") { int limb1 = OwnerFinder.getLimb(Chainsaw.hit.collider.gameObject); GameObject gameObject = OwnerFinder.getOwner(Chainsaw.hit.collider.gameObject); if (gameObject != null && !gameObject.GetComponent <AI>().dead) { //HUDGame.lastHitmarker = Time.realtimeSinceStartup; if (!Network.isServer) { base.networkView.RPC("swingAnimal", RPCMode.Server, new object[] { gameObject.networkView.viewID, limb1 }); } else { this.swingAnimal(gameObject.networkView.viewID, limb1); } } } else if (Chainsaw.hit.collider.tag == "Vehicle" && Chainsaw.hit.collider.GetComponent <Vehicle>().health > 0 && ServerSettings.pvp) { //HUDGame.lastHitmarker = Time.realtimeSinceStartup; if (!Network.isServer) { base.networkView.RPC("swingVehicle", RPCMode.Server, new object[] { Chainsaw.hit.collider.networkView.viewID }); } else { this.swingVehicle(Chainsaw.hit.collider.networkView.viewID); } } } } }
public void Update() { if (Network.isServer) { if (this.sickness == 0 && Time.realtimeSinceStartup - this.lastSickDamage > 0.5f) { this.lastSickDamage = Time.realtimeSinceStartup; this.damage(1, "You succumbed to illness.", -11, ""); } if (Time.realtimeSinceStartup - this.lastStarve > 20f && Time.realtimeSinceStartup - this.lastStarve > 20f + base.GetComponent <Skills>().survivalist() * 10f) { this.lastStarve = Time.realtimeSinceStartup; this.starve(1); } if (this.food == 0 && Time.realtimeSinceStartup - this.lastFoodDamage > 0.5f && (double)(Time.realtimeSinceStartup - this.lastFoodDamage) > 0.5 + (double)base.GetComponent <Skills>().survivalist()) { this.lastFoodDamage = Time.realtimeSinceStartup; this.damage(1, "You starved to death.", -12, ""); } if (Time.realtimeSinceStartup - this.lastDehydrate > 17f && Time.realtimeSinceStartup - this.lastDehydrate > 17f + base.GetComponent <Skills>().survivalist() * 10f) { this.lastDehydrate = Time.realtimeSinceStartup; this.dehydrate(1); } if (this.water == 0 && Time.realtimeSinceStartup - this.lastWaterDamage > 0.5f && (double)(Time.realtimeSinceStartup - this.lastWaterDamage) > 0.5 + (double)base.GetComponent <Skills>().survivalist()) { this.lastWaterDamage = Time.realtimeSinceStartup; this.damage(1, "You dehydrated to death.", -13, ""); } if (this.bleeding) { if (Time.realtimeSinceStartup - this.lastBleed > 1f) { this.lastBleed = Time.realtimeSinceStartup; this.damage(1, "You bled to death.", -14, ""); } if (Time.realtimeSinceStartup - this.lastTrail > 2f) { this.lastTrail = Time.realtimeSinceStartup; NetworkEffects.askEffect("Effects/bleed", base.transform.position + Vector3.up, Quaternion.identity, 16f); } if (ServerSettings.mode != 2 && Time.realtimeSinceStartup - this.startedBleeding > 60f) { this.heal(0, true, false); } } if (this.bones && ServerSettings.mode != 2 && Time.realtimeSinceStartup - this.startedBones > 120f) { this.heal(0, false, true); } if (Time.realtimeSinceStartup - this.lastHealthy > 2f && this.health < 100 && this.food > 95 && this.water > 95 && this.sickness > 80 && (float)this.sickness > 95f - base.GetComponent <Skills>().immunity() * 15f && Time.realtimeSinceStartup - this.lastHealthy > 5f - base.GetComponent <Skills>().immunity() * 3f) { this.lastHealthy = Time.realtimeSinceStartup; this.heal(1, false, false); } if (this.bufferEat > 0 && (double)(Time.realtimeSinceStartup - this.lastEat) > 0.2) { this.lastEat = Time.realtimeSinceStartup; this.eatBuffer(); } if (this.bufferDrink > 0 && (double)(Time.realtimeSinceStartup - this.lastDrink) > 0.2) { this.lastDrink = Time.realtimeSinceStartup; this.drinkBuffer(); } if (this.bufferHealth > 0 && (double)(Time.realtimeSinceStartup - this.lastHealth) > 0.2) { this.lastHealth = Time.realtimeSinceStartup; this.healBuffer(); } if (this.bufferSick > 0 && (double)(Time.realtimeSinceStartup - this.lastSick) > 0.2) { this.lastSick = Time.realtimeSinceStartup; this.sickBuffer(); } if (this.bufferEnergy > 0 && (double)(Time.realtimeSinceStartup - this.lastEnergy) > 0.2) { this.lastEnergy = Time.realtimeSinceStartup; this.energyBuffer(); } } if (base.networkView.isMine && Time.realtimeSinceStartup - this.lastStamina > 5f && this.stamina < 100 && (double)(Time.realtimeSinceStartup - this.lastStaminaTick) > 0.2) { this.lastStaminaTick = Time.realtimeSinceStartup; Life life = this; life.stamina = life.stamina + 1; } }
public static void Airdrop() { int loc = Random.RandomRange(1, 13); string arg = string.Empty; string string_ = string.Empty; string str = string.Empty; Vector3 val = default(Vector3); val = new Vector3(0f, 0f, 0f); switch (loc) { case 1: arg = "Airdrop will fall to the Summerside Peninsula"; string_ = "Airdop was fallen on Summerside Peninsula!"; val = new Vector3(790f, 24f, -450f); str = "Take airdrop on Summerside Peninsula"; break; case 2: arg = "Airdrop will fall to the Burywood"; string_ = "Airdrop was fallen on Burywood!"; val = new Vector3(50f, 23f, 700f); str = "Take airdrop on BuryWood"; break; case 3: arg = "Airdrop will fall to the Courtin Island"; string_ = "Airdrop was fallen on Courtin Island!"; val = new Vector3(890f, 22f, 500f); str = "Take airdrop on Courtin Island"; break; case 4: arg = "Airdrop will fall to the Belfast Airport"; string_ = "Airdrop was fallen on Belfast Airport!"; val = new Vector3(600f, 25f, 468f); str = "Take airdrop on Belfast Airport"; break; case 5: arg = "Airdrop will fall to the Holman Island"; string_ = "Airdrop was fallen on Holman Island!"; val = new Vector3(-770f, 29f, -760f); str = "Take airdrop on Holman Island"; break; case 6: arg = "Airdrop will fall to the O'Leary Military Base"; string_ = "Airdrop was fallen on O'Leary Military Base!"; val = new Vector3(-440f, 26f, 607f); str = "Take airdrop on Military Base"; break; case 7: arg = "Airdrop will fall to the Alberton"; string_ = "Airdrop was fallen on Alberton!"; val = new Vector3(-580f, 19f, 87f); str = "Take airdrop on Alberton"; break; case 8: arg = "Airdrop will fall to the Charlottetown"; string_ = "Airdrop was fallen on Charlottetown!"; val = new Vector3(22f, 18f, -432f); str = "Take airdrop on Charlottetown"; break; case 9: arg = "Airdrop will fall to the Montague"; string_ = "Airdrop was fallen on Montague!"; val = new Vector3(250f, 30f, -100f); str = "Take airdrop on Montague"; break; case 10: arg = "Airdrop will fall to the Oultons Isle"; string_ = "Airdrop was fallen on Oultons Isle!"; val = new Vector3(200f, 28f, -825f); str = "Take airdrop on Oultons Isle"; break; case 11: arg = "Airdrop will fall to the St. Peter's Island"; string_ = "Airdrop was fallen on St. Peter's Island!"; val = new Vector3(-245.4355f, 27.7f, 47.64797f); str = "Take airdrop on St. Peter's Island"; break; case 12: arg = "Airdrop will fall to the Fernwood Farm"; string_ = "Airdrop was fallen on Fernwood Farm!"; val = new Vector3(-244.4423f, 25.5f, -376.0898f); str = "Take airdrop on Fernwood Farm"; break; case 13: arg = "Airdrop will fall to the Wiltshire Farm"; string_ = "Airdrop was fallen on Wiltshire Farm!"; val = new Vector3(-451.6884f, 27.3f, -563.936f); str = "Take airdrop on Wiltishire Farm"; break; } for (int i = 5; i >= 1; i--) { NetworkChat.sendAlert($"{arg} after {i} min"); Thread.Sleep(60000); } NetworkChat.sendAlert(string_); for (int i = 0; i < itemAmountForDrop; i++) { int int_ = items[Random.Range(0, items.Length)]; float num3 = Random.Range(0, 5); float num4 = Random.Range(0, 5); SpawnItems.spawnItem(int_, 1, new Vector3(val.x + num3, val.y, val.z + num4)); } NetworkSounds.askSoundMax("Sounds/spooky/spooky_3", val, 500f, 1f, 700f, 3500f); for (int num5 = 1000; num5 > 0; num5--) { if (announceWhilePlayerTook) { for (int j = 0; j < UserList.users.Count; j++) { BetterNetworkUser val2 = UserList.users[j]; float num6 = Mathf.Abs(Vector3.Distance(val, val2.position)); if (num6 < 10.5f) { NetworkChat.sendAlert(val2.name + " " + str); NetworkSounds.askSoundMax("Sounds/spooky/spooky_0", val, 500f, 1f, 700f, 3500f); return; } } } if (enableEffects) { int num7 = 0; for (int k = 0; k < 25; k++) { NetworkEffects.askEffect("Effects/sparksRed", new Vector3(val.x, val.y + (float)num7, val.z), Quaternion.Euler(-90f, 0f, 0f), 100f); num7 += 2; } NetworkSounds.askSound("Sounds/projectiles/smoke", val, 500f, 1f, 700f); } Thread.Sleep(300); } }
public static void chop(int index, int amount, GameObject killer) { if (SpawnResources.health[index] > 0) { SpawnResources.health[index] = SpawnResources.health[index] - amount; if (SpawnResources.health[index] <= 0) { if (killer != null) { killer.GetComponent <Skills>().learn(UnityEngine.Random.Range(2, 5)); if (!killer.networkView.isMine) { killer.networkView.RPC("collectedResource", killer.networkView.owner, new object[0]); } else { killer.GetComponent <Player>().collectedResource(); } } NetworkEffects.askEffect(string.Concat("Effects/", SpawnResources.model.transform.GetChild(index).GetChild(0).name), SpawnResources.model.transform.GetChild(index).position + new Vector3(0f, 2f, 0f), Quaternion.Euler(-90f, 0f, 0f), -1f); string child = SpawnResources.model.transform.GetChild(index).GetChild(0).name; Vector3 vector3 = SpawnResources.model.transform.GetChild(index).position; SpawnResources.tool.delete(index); SpawnResources.tool.networkView.RPC("delete", RPCMode.OthersBuffered, new object[] { index }); if (child.Substring(0, 4) != "rock") { NetworkSounds.askSound("Sounds/Resources/timber", vector3, 1f, UnityEngine.Random.Range(0.9f, 1.1f), 2f); for (int i = 0; i < UnityEngine.Random.Range(6, 10); i++) { float single = UnityEngine.Random.Range(0f, 5.28f); float single1 = UnityEngine.Random.@value; if ((double)single1 > 0.975) { SpawnItems.dropItem(8018, vector3 + new Vector3(Mathf.Sin(single) * 2.5f, 1f, Mathf.Cos(single) * 2.5f)); } else if ((double)single1 <= 0.5) { SpawnItems.dropItem(18003, vector3 + new Vector3(Mathf.Sin(single) * 2.5f, 1f, Mathf.Cos(single) * 2.5f)); } else { SpawnItems.dropItem(18004, vector3 + new Vector3(Mathf.Sin(single) * 2.5f, 1f, Mathf.Cos(single) * 2.5f)); } } if (child == "palm_0") { for (int j = 0; j < UnityEngine.Random.Range(2, 4); j++) { float single2 = UnityEngine.Random.Range(0f, 5.28f); SpawnItems.dropItem(14031, vector3 + new Vector3(Mathf.Sin(single2) * 2.5f, 1f, Mathf.Cos(single2) * 2.5f)); } } } else { NetworkSounds.askSound("Sounds/Resources/smash", vector3, 1f, UnityEngine.Random.Range(0.9f, 1.1f), 2f); for (int k = 0; k < UnityEngine.Random.Range(6, 10); k++) { float single3 = UnityEngine.Random.Range(0f, 5.28f); if ((double)UnityEngine.Random.@value <= 0.75) { SpawnItems.dropItem(18019, vector3 + new Vector3(Mathf.Sin(single3) * 4f, 1f, Mathf.Cos(single3) * 4f)); } else { SpawnItems.dropItem(18015, vector3 + new Vector3(Mathf.Sin(single3) * 4f, 1f, Mathf.Cos(single3) * 4f)); } } } } } }
public void Update() { if (base.networkView.isMine) { if ((Player.life.dead || Movement.isSwimming || Movement.isClimbing || Movement.isDriving) && Equipment.model != null) { Equipment.dequip(); } if (Equipment.model != null) { if (!Equipment.ready) { Equipment.ready = true; Equipment.model.transform.FindChild("model").renderer.enabled = true; Equipment.useable.equip(); Equipment.ticking = true; } else if (Equipment.ticking) { if (Equipment.setup) { Equipment.useable.tick(); } else if (Time.realtimeSinceStartup - Equipment.startedEquip > Viewmodel.model.animation["equip"].length) { Equipment.setup = true; } } if (Input.GetKeyDown(InputSettings.dropKey)) { int num = Equipment.equipped.x; int num1 = Equipment.equipped.y; Equipment.dequip(); SpawnItems.dropItem(num, num1, Input.GetKey(InputSettings.otherKey)); } else if (Input.GetKeyDown(InputSettings.itemKey)) { Equipment.dequip(); } } if (Screen.lockCursor && !Player.life.dead) { if (Input.GetKeyDown(KeyCode.Alpha1)) { Equipment.equip(0, 0); } if (Input.GetKeyDown(KeyCode.Alpha2)) { Equipment.equip(1, 0); } if (Input.GetKeyDown(KeyCode.Alpha3)) { Equipment.equip(2, 0); } if (Input.GetKeyDown(KeyCode.Alpha4)) { Equipment.equip(3, 0); } if (Input.GetKeyDown(KeyCode.Alpha5)) { Equipment.equip(4, 0); } if (Input.GetKeyDown(KeyCode.Alpha6)) { Equipment.equip(5, 0); } if (!Equipment.busy && Equipment.setup) { if (Equipment.useable != null) { if (Input.GetKeyDown(InputSettings.shootKey)) { Equipment.useable.startPrimary(); } if (Input.GetKeyUp(InputSettings.shootKey)) { Equipment.useable.stopPrimary(); } if (Input.GetKeyDown(InputSettings.aimKey)) { Equipment.useable.startSecondary(); } if (Input.GetKeyUp(InputSettings.aimKey)) { Equipment.useable.stopSecondary(); } } else if (!Player.life.dead && !Movement.isSwimming && !Movement.isClimbing && Movement.vehicle == null && Stance.state != 2) { if (Input.GetKeyDown(InputSettings.shootKey) && !this.swinging) { this.swinging = true; this.right = false; } if (Input.GetKeyDown(InputSettings.aimKey) && !this.swinging) { this.swinging = true; this.right = true; } } } } if (this.swung && Time.realtimeSinceStartup - this.lastSwing > Viewmodel.model.animation["punchRight"].length / 2f) { NetworkSounds.askSound("Sounds/Items/8001/use", Camera.main.transform.position + (Camera.main.transform.forward * 0.5f), 0.25f, UnityEngine.Random.Range(0.9f, 1.1f), 1f); this.swung = false; Physics.Raycast(Camera.main.transform.position + (Camera.main.transform.forward * -0.5f), Camera.main.transform.forward, out Equipment.hit, 2f, RayMasks.DAMAGE); if (Equipment.hit.collider != null) { if (Equipment.hit.point.y < Ocean.level) { NetworkSounds.askSound("Sounds/Impacts/rock", Equipment.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/bubbles", Equipment.hit.point + (Equipment.hit.normal * 0.05f), Quaternion.LookRotation(Equipment.hit.normal), -1f); } else if (Equipment.hit.collider.gameObject.name == "ground" || Equipment.hit.collider.material.name.ToLower() == "rock (instance)" || Equipment.hit.collider.material.name.ToLower() == "ground (instance)") { NetworkSounds.askSound("Sounds/Impacts/rock", Equipment.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/rock", Equipment.hit.point + (Equipment.hit.normal * 0.05f), Quaternion.LookRotation(Equipment.hit.normal), -1f); } else if (Equipment.hit.collider.material.name.ToLower() == "cloth (instance)") { NetworkSounds.askSound("Sounds/Impacts/concrete", Equipment.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/cloth", Equipment.hit.point + (Equipment.hit.normal * 0.05f), Quaternion.LookRotation(Equipment.hit.normal), -1f); } else if (Equipment.hit.collider.material.name.ToLower() == "wood (instance)") { NetworkSounds.askSound("Sounds/Impacts/wood", Equipment.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/splinters", Equipment.hit.point + (Equipment.hit.normal * 0.05f), Quaternion.LookRotation(Equipment.hit.normal), -1f); } else if (Equipment.hit.collider.material.name.ToLower() == "tile (instance)") { NetworkSounds.askSound("Sounds/Impacts/concrete", Equipment.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/tile", Equipment.hit.point + (Equipment.hit.normal * 0.05f), Quaternion.LookRotation(Equipment.hit.normal), -1f); } else if (Equipment.hit.collider.material.name.ToLower() == "concrete (instance)") { NetworkSounds.askSound("Sounds/Impacts/concrete", Equipment.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/concrete", Equipment.hit.point + (Equipment.hit.normal * 0.05f), Quaternion.LookRotation(Equipment.hit.normal), -1f); } else if (Equipment.hit.collider.material.name.ToLower() == "metal (instance)" || Equipment.hit.collider.material.name.ToLower() == "iron (instance)") { NetworkSounds.askSound("Sounds/Impacts/metal", Equipment.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/sparks", Equipment.hit.point + (Equipment.hit.normal * 0.05f), Quaternion.LookRotation(Equipment.hit.normal), -1f); } else if (Equipment.hit.collider.material.name.ToLower() == "flesh (instance)") { NetworkSounds.askSound("Sounds/Impacts/flesh", Equipment.hit.point, 0.5f, UnityEngine.Random.Range(0.9f, 1.1f), 0.25f); NetworkEffects.askEffect("Effects/flesh", Equipment.hit.point + (Equipment.hit.normal * 0.05f), Quaternion.LookRotation(Equipment.hit.normal), -1f); } if (Equipment.hit.collider.tag == "Enemy" && ServerSettings.pvp) { int limb = OwnerFinder.getLimb(Equipment.hit.collider.gameObject); GameObject owner = OwnerFinder.getOwner(Equipment.hit.collider.gameObject); if (owner != null && owner.GetComponent <Player>().action != 4 && (PlayerSettings.friend == string.Empty || PlayerSettings.friendHash != owner.GetComponent <Player>().owner.friend)) { if (!Network.isServer) { base.networkView.RPC("punchPlayer", RPCMode.Server, new object[] { owner.GetComponent <Player>().owner.id, limb }); } else { this.punchPlayer(owner.GetComponent <Player>().owner.id, limb); } } } else if (Equipment.hit.collider.tag == "Animal") { int limb1 = OwnerFinder.getLimb(Equipment.hit.collider.gameObject); GameObject gameObject = OwnerFinder.getOwner(Equipment.hit.collider.gameObject); if (gameObject != null && !gameObject.GetComponent <AI>().dead) { if (!Network.isServer) { base.networkView.RPC("punchAnimal", RPCMode.Server, new object[] { gameObject.networkView.viewID, limb1 }); } else { this.punchAnimal(gameObject.networkView.viewID, limb1); } } } } } if (!this.swinging || Time.realtimeSinceStartup - this.lastSwing <= Viewmodel.model.animation["punchRight"].length) { this.swinging = false; } else { this.swinging = false; this.lastSwing = Time.realtimeSinceStartup; this.swung = true; if (!this.right) { Viewmodel.play("punchLeft"); if (Stance.state == 0) { Player.play("standPunchLeft"); } else if (Stance.state == 1) { Player.play("crouchPunchLeft"); } } else { Viewmodel.play("punchRight"); if (Stance.state == 0) { Player.play("standPunchRight"); } else if (Stance.state == 1) { Player.play("crouchPunchRight"); } } } } }