// Token: 0x060020A5 RID: 8357 RVA: 0x000B3320 File Offset: 0x000B1720 public void ManualOnDestroy() { if (!Provider.isServer) { return; } if (!this.isRegistered) { return; } BeaconManager.deregisterBeacon(this.nav, this); this.isRegistered = false; if (!this.wasInit) { return; } if (this.remaining > 0 || this.alive > 0) { return; } for (int i = 0; i < Provider.clients.Count; i++) { if (Provider.clients[i].player != null && !Provider.clients[i].player.life.isDead && Provider.clients[i].player.movement.nav == this.nav) { Provider.clients[i].player.quests.trackHordeKill(); } } int num = (int)this.asset.rewards; num *= Mathf.Max(1, this.initialParticipants); for (int j = 0; j < num; j++) { ushort num2 = SpawnTableTool.resolve(this.asset.rewardID); if (num2 != 0) { ItemManager.dropItem(new Item(num2, EItemOrigin.NATURE), base.transform.position, false, true, true); } } }
// Token: 0x06002209 RID: 8713 RVA: 0x000B8F3C File Offset: 0x000B733C public void ManualOnDestroy() { if (this.isDisplay) { this.setDisplay(0, 0, null, 0, 0, string.Empty, string.Empty); } if (!Provider.isServer) { return; } this.items.onStateUpdated = null; if (!this.despawnWhenDestroyed) { for (byte b = 0; b < this.items.getItemCount(); b += 1) { ItemJar item = this.items.getItem(b); ItemManager.dropItem(item.item, base.transform.position, false, true, true); } } this.items.clear(); this._items = null; if (this.isOpen) { if (this.opener != null) { if (this.opener.inventory.isStoring) { this.opener.inventory.isStoring = false; this.opener.inventory.isStorageTrunk = false; this.opener.inventory.storage = null; this.opener.inventory.updateItems(PlayerInventory.STORAGE, null); this.opener.inventory.sendStorage(); } this.opener = null; } this.isOpen = false; } }
// Token: 0x0600215F RID: 8543 RVA: 0x000B5C58 File Offset: 0x000B4058 public void drop() { this.lastUsed = Time.realtimeSinceStartup; if (this.dropTransform == null) { return; } if (this.interactabilityRewardID != 0) { ushort num = SpawnTableTool.resolve(this.interactabilityRewardID); if (num != 0) { ItemManager.dropItem(new Item(num, EItemOrigin.NATURE), this.dropTransform.position, false, true, false); } } else { ushort num2 = this.interactabilityDrops[UnityEngine.Random.Range(0, this.interactabilityDrops.Length)]; if (num2 != 0) { ItemManager.dropItem(new Item(num2, EItemOrigin.NATURE), this.dropTransform.position, false, true, false); } } }
// Token: 0x060028FE RID: 10494 RVA: 0x000FA378 File Offset: 0x000F8778 public static void damage(Transform resource, Vector3 direction, float damage, float times, float drop, out EPlayerKill kill, out uint xp) { xp = 0u; kill = EPlayerKill.NONE; byte b; byte b2; if (Regions.tryGetCoordinate(resource.position, out b, out b2)) { List <ResourceSpawnpoint> list = LevelGround.trees[(int)b, (int)b2]; ushort num = 0; while ((int)num < list.Count) { if (resource == list[(int)num].model) { if (!list[(int)num].isDead) { ushort num2 = (ushort)(damage * times); list[(int)num].askDamage(num2); if (list[(int)num].isDead) { kill = EPlayerKill.RESOURCE; ResourceAsset asset = list[(int)num].asset; if (list[(int)num].asset != null) { if (asset.explosion != 0) { if (asset.hasDebris) { EffectManager.sendEffect(asset.explosion, b, b2, ResourceManager.RESOURCE_REGIONS, resource.position + Vector3.up * 8f); } else { EffectManager.sendEffect(asset.explosion, b, b2, ResourceManager.RESOURCE_REGIONS, resource.position); } } if (asset.rewardID != 0) { direction.y = 0f; direction.Normalize(); int num3 = (int)((float)UnityEngine.Random.Range((int)asset.rewardMin, (int)(asset.rewardMax + 1)) * drop); for (int i = 0; i < num3; i++) { ushort num4 = SpawnTableTool.resolve(asset.rewardID); if (num4 != 0) { if (asset.hasDebris) { ItemManager.dropItem(new Item(num4, EItemOrigin.NATURE), resource.position + direction * (float)(2 + i) + new Vector3(0f, 2f, 0f), false, Dedicator.isDedicated, true); } else { ItemManager.dropItem(new Item(num4, EItemOrigin.NATURE), resource.position + new Vector3(UnityEngine.Random.Range(-2f, 2f), 2f, UnityEngine.Random.Range(-2f, 2f)), false, Dedicator.isDedicated, true); } } } } else { if (asset.log != 0) { int num5 = (int)((float)UnityEngine.Random.Range(3, 7) * drop); for (int j = 0; j < num5; j++) { ItemManager.dropItem(new Item(asset.log, EItemOrigin.NATURE), resource.position + direction * (float)(2 + j * 2) + Vector3.up, false, Dedicator.isDedicated, true); } } if (asset.stick != 0) { int num6 = (int)((float)UnityEngine.Random.Range(2, 5) * drop); for (int k = 0; k < num6; k++) { float f = UnityEngine.Random.Range(0f, 6.28318548f); ItemManager.dropItem(new Item(asset.stick, EItemOrigin.NATURE), resource.position + new Vector3(Mathf.Sin(f) * 3f, 1f, Mathf.Cos(f) * 3f), false, Dedicator.isDedicated, true); } } } xp = asset.rewardXP; } ResourceManager.manager.channel.send("tellResourceDead", ESteamCall.ALL, b, b2, ResourceManager.RESOURCE_REGIONS, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[] { b, b2, num, direction * (float)num2 }); } } break; } num += 1; } } }
// Token: 0x0600287A RID: 10362 RVA: 0x000F56AC File Offset: 0x000F3AAC private void arenaSpawn() { for (byte b = 0; b < Regions.WORLD_SIZE; b += 1) { for (byte b2 = 0; b2 < Regions.WORLD_SIZE; b2 += 1) { if (LevelItems.spawns[(int)b, (int)b2].Count > 0) { for (int i = 0; i < LevelItems.spawns[(int)b, (int)b2].Count; i++) { ItemSpawnpoint itemSpawnpoint = LevelItems.spawns[(int)b, (int)b2][i]; ushort item = LevelItems.getItem(itemSpawnpoint); if (item != 0) { Item item2 = new Item(item, EItemOrigin.ADMIN); ItemManager.dropItem(item2, itemSpawnpoint.point, false, false, false); } } } } } List <VehicleSpawnpoint> spawns = LevelVehicles.spawns; for (int j = 0; j < spawns.Count; j++) { VehicleSpawnpoint vehicleSpawnpoint = spawns[j]; ushort vehicle = LevelVehicles.getVehicle(vehicleSpawnpoint); if (vehicle != 0) { Vector3 point = vehicleSpawnpoint.point; point.y += 1f; VehicleManager.spawnVehicle(vehicle, point, Quaternion.Euler(0f, vehicleSpawnpoint.angle, 0f)); } } List <PlayerSpawnpoint> altSpawns = LevelPlayers.getAltSpawns(); float num = LevelManager.arenaCurrentRadius - SafezoneNode.MIN_SIZE; num *= num; for (int k = altSpawns.Count - 1; k >= 0; k--) { PlayerSpawnpoint playerSpawnpoint = altSpawns[k]; float num2 = Mathf.Pow(playerSpawnpoint.point.x - LevelManager.arenaCurrentCenter.x, 2f) + Mathf.Pow(playerSpawnpoint.point.z - LevelManager.arenaCurrentCenter.z, 2f); if (num2 > num) { altSpawns.RemoveAt(k); } } for (int l = 0; l < Provider.clients.Count; l++) { if (altSpawns.Count == 0) { break; } SteamPlayer steamPlayer = Provider.clients[l]; if (steamPlayer != null && !(steamPlayer.player == null) && !steamPlayer.player.life.isDead) { int index = UnityEngine.Random.Range(0, altSpawns.Count); PlayerSpawnpoint playerSpawnpoint2 = altSpawns[index]; altSpawns.RemoveAt(index); ArenaPlayer arenaPlayer = new ArenaPlayer(steamPlayer); arenaPlayer.steamPlayer.player.life.sendRevive(); arenaPlayer.steamPlayer.player.sendTeleport(playerSpawnpoint2.point, MeasurementTool.angleToByte(playerSpawnpoint2.angle)); LevelManager.arenaPlayers.Add(arenaPlayer); foreach (ArenaLoadout arenaLoadout in Level.info.configData.Arena_Loadouts) { for (ushort num3 = 0; num3 < arenaLoadout.Amount; num3 += 1) { ushort newID = SpawnTableTool.resolve(arenaLoadout.Table_ID); arenaPlayer.steamPlayer.player.inventory.forceAddItemAuto(new Item(newID, true), true, false, true, false); } } } } this.arenaAirdrop(); LevelManager.arenaState = EArenaState.PLAY; base.channel.send("tellLevelNumber", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[] { (byte)LevelManager.arenaPlayers.Count }); }