// Token: 0x06002706 RID: 9990 RVA: 0x000E7C7C File Offset: 0x000E607C public static void dropLoot(Animal animal) { if (animal.asset.rewardID != 0) { int num = UnityEngine.Random.Range((int)animal.asset.rewardMin, (int)(animal.asset.rewardMax + 1)); for (int i = 0; i < num; i++) { ushort num2 = SpawnTableTool.resolve(animal.asset.rewardID); if (num2 != 0) { ItemManager.dropItem(new Item(num2, EItemOrigin.NATURE), animal.transform.position, false, Dedicator.isDedicated, true); } } } else { if (animal.asset.meat != 0) { int num3 = UnityEngine.Random.Range(2, 5); for (int j = 0; j < num3; j++) { ItemManager.dropItem(new Item(animal.asset.meat, EItemOrigin.NATURE), animal.transform.position, false, Dedicator.isDedicated, true); } } if (animal.asset.pelt != 0) { int num4 = UnityEngine.Random.Range(2, 5); for (int k = 0; k < num4; k++) { ItemManager.dropItem(new Item(animal.asset.pelt, EItemOrigin.NATURE), animal.transform.position, false, Dedicator.isDedicated, true); } } } }
// Token: 0x06003971 RID: 14705 RVA: 0x001AA270 File Offset: 0x001A8670 public override void startPrimary() { if (base.player.equipment.isBusy) { return; } if (this.isFishing) { this.isFishing = false; base.player.equipment.isBusy = true; this.startedReel = Time.realtimeSinceStartup; this.isReeling = true; if (base.channel.isOwner) { this.isBobbing = true; if (Time.realtimeSinceStartup - this.lastLuck > this.luckTime - 1.4f && Time.realtimeSinceStartup - this.lastLuck < this.luckTime) { base.channel.send("askCatch", ESteamCall.SERVER, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[0]); } } this.reel(); if (Provider.isServer) { if (this.isCatch) { this.isCatch = false; ushort num = SpawnTableTool.resolve(((ItemFisherAsset)base.player.equipment.asset).rewardID); if (num != 0) { base.player.inventory.forceAddItem(new Item(num, EItemOrigin.NATURE), false); } base.player.sendStat(EPlayerStat.FOUND_FISHES); base.player.skills.askPay(3u); } base.channel.send("askReel", ESteamCall.NOT_OWNER, ESteamPacket.UPDATE_UNRELIABLE_BUFFER, new object[0]); AlertTool.alert(base.transform.position, 8f); } } else { this.isStrengthening = true; this.strengthTime = 0u; this.strengthMultiplier = 0f; if (base.channel.isOwner) { this.startStrength(); } } }
public override void grantReward(Player player, bool shouldSend) { if (!Provider.isServer) { return; } for (byte b = 0; b < this.amount; b += 1) { ushort num = SpawnTableTool.resolve(this.id); if (num != 0) { player.inventory.forceAddItem(new Item(num, EItemOrigin.CRAFT), false, false); } } }
// Token: 0x06003475 RID: 13429 RVA: 0x00157AF8 File Offset: 0x00155EF8 public static ushort resolve(ushort id) { SpawnAsset spawnAsset = (SpawnAsset)Assets.find(EAssetType.SPAWN, id); if (spawnAsset == null) { return(0); } bool flag; spawnAsset.resolve(out id, out flag); if (flag) { id = SpawnTableTool.resolve(id); } return(id); }
// Token: 0x060033A2 RID: 13218 RVA: 0x0014EFC8 File Offset: 0x0014D3C8 private void OnCollisionEnter(Collision collision) { if (this.isExploded) { return; } if (collision.collider.isTrigger) { return; } this.isExploded = true; if (Provider.isServer) { Transform transform = BarricadeManager.dropBarricade(new Barricade(1374), null, base.transform.position, 0f, 0f, 0f, 0UL, 0UL); if (transform != null) { InteractableStorage component = transform.GetComponent <InteractableStorage>(); component.despawnWhenDestroyed = true; if (component != null && component.items != null) { int i = 0; while (i < 8) { ushort num = SpawnTableTool.resolve(this.id); if (num == 0) { break; } if (!component.items.tryAddItem(new Item(num, EItemOrigin.ADMIN), false)) { i++; } } component.items.onStateUpdated(); } } transform.gameObject.AddComponent <CarepackageDestroy>(); EffectManager.sendEffectReliable(120, EffectManager.INSANE, base.transform.position); } UnityEngine.Object.Destroy(base.gameObject); }
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); } } }
public ushort getVehicle() { if (this.tableID != 0) { return(SpawnTableTool.resolve(this.tableID)); } float value = Random.value; if (this.tiers.Count == 0) { return(0); } int i = 0; while (i < this.tiers.Count) { if (value < this.tiers[i].chance) { VehicleTier vehicleTier = this.tiers[i]; if (vehicleTier.table.Count > 0) { return(vehicleTier.table[Random.Range(0, vehicleTier.table.Count)].vehicle); } return(0); } else { i++; } } VehicleTier vehicleTier2 = this.tiers[Random.Range(0, this.tiers.Count)]; if (vehicleTier2.table.Count > 0) { return(vehicleTier2.table[Random.Range(0, vehicleTier2.table.Count)].vehicle); } return(0); }
public ushort getItem() { if (this.tableID != 0) { return(SpawnTableTool.resolve(this.tableID)); } float value = Random.value; if (this.tiers.Count == 0) { return(0); } int i = 0; while (i < this.tiers.Count) { if (value < this.tiers[i].chance) { ItemTier itemTier = this.tiers[i]; if (itemTier.table.Count > 0) { return(itemTier.table[Random.Range(0, itemTier.table.Count)].item); } return(0); } else { i++; } } ItemTier itemTier2 = this.tiers[Random.Range(0, this.tiers.Count)]; if (itemTier2.table.Count > 0) { return(itemTier2.table[Random.Range(0, itemTier2.table.Count)].item); } return(0); }
public ushort getAnimal() { if (this.tableID != 0) { return(SpawnTableTool.resolve(this.tableID)); } float value = Random.value; if (this.tiers.Count == 0) { return(0); } int i = 0; while (i < this.tiers.Count) { if (value < this.tiers[i].chance) { AnimalTier animalTier = this.tiers[i]; if (animalTier.table.Count > 0) { return(animalTier.table[Random.Range(0, animalTier.table.Count)].animal); } return(0); } else { i++; } } AnimalTier animalTier2 = this.tiers[Random.Range(0, this.tiers.Count)]; if (animalTier2.table.Count > 0) { return(animalTier2.table[Random.Range(0, animalTier2.table.Count)].animal); } return(0); }
// 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; } } }
public void askForage(CSteamID steamID, byte x, byte y, ushort index) { if (Provider.isServer) { if (!Regions.checkSafe((int)x, (int)y)) { return; } Player player = PlayerTool.getPlayer(steamID); if (player == null) { return; } if (player.life.isDead) { return; } List <ResourceSpawnpoint> list = LevelGround.trees[(int)x, (int)y]; if ((int)index >= list.Count) { return; } if (list[(int)index].isDead) { return; } ResourceAsset resourceAsset = (ResourceAsset)Assets.find(EAssetType.RESOURCE, LevelGround.resources[(int)list[(int)index].type].id); if (resourceAsset == null || !resourceAsset.isForage) { return; } list[(int)index].askDamage(1); if (resourceAsset.explosion != 0) { EffectManager.sendEffect(resourceAsset.explosion, x, y, ResourceManager.RESOURCE_REGIONS, list[(int)index].point); } ushort num; if (resourceAsset.rewardID != 0) { num = SpawnTableTool.resolve(resourceAsset.rewardID); } else { num = resourceAsset.log; } if (num != 0) { player.inventory.forceAddItem(new Item(num, EItemOrigin.NATURE), true); if (UnityEngine.Random.value < player.skills.mastery(2, 5)) { player.inventory.forceAddItem(new Item(num, EItemOrigin.NATURE), true); } } player.sendStat(EPlayerStat.FOUND_PLANTS); player.skills.askPay(1u); ResourceManager.manager.channel.send("tellResourceDead", ESteamCall.ALL, x, y, ResourceManager.RESOURCE_REGIONS, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[] { x, y, index, Vector3.zero }); } }
// Token: 0x060024E6 RID: 9446 RVA: 0x000D33D8 File Offset: 0x000D17D8 public static void load() { LevelItems._models = new GameObject().transform; LevelItems.models.name = "Items"; LevelItems.models.parent = Level.spawns; LevelItems.models.tag = "Logic"; LevelItems.models.gameObject.layer = LayerMasks.LOGIC; if (Level.isEditor || Provider.isServer) { LevelItems._tables = new List <ItemTable>(); LevelItems._spawns = new List <ItemSpawnpoint> [(int)Regions.WORLD_SIZE, (int)Regions.WORLD_SIZE]; if (ReadWrite.fileExists(Level.info.path + "/Spawns/Items.dat", false, false)) { Block block = ReadWrite.readBlock(Level.info.path + "/Spawns/Items.dat", false, false, 0); byte b = block.readByte(); if (b > 1 && b < 3) { block.readSteamID(); } byte b2 = block.readByte(); for (byte b3 = 0; b3 < b2; b3 += 1) { Color newColor = block.readColor(); string text = block.readString(); ushort num; if (b > 3) { num = block.readUInt16(); if (num != 0 && SpawnTableTool.resolve(num) == 0) { Assets.errors.Add(string.Concat(new object[] { Level.info.name, " item table \"", text, "\" references invalid spawn table ", num, "!" })); } } else { num = 0; } List <ItemTier> list = new List <ItemTier>(); byte b4 = block.readByte(); for (byte b5 = 0; b5 < b4; b5 += 1) { string newName = block.readString(); float newChance = block.readSingle(); List <ItemSpawn> list2 = new List <ItemSpawn>(); byte b6 = block.readByte(); for (byte b7 = 0; b7 < b6; b7 += 1) { ushort num2 = block.readUInt16(); ItemAsset itemAsset = (ItemAsset)Assets.find(EAssetType.ITEM, num2); if (itemAsset != null && !itemAsset.isPro) { list2.Add(new ItemSpawn(num2)); } } if (list2.Count > 0) { list.Add(new ItemTier(list2, newName, newChance)); } } LevelItems.tables.Add(new ItemTable(list, newColor, text, num)); if (!Level.isEditor) { LevelItems.tables[(int)b3].buildTable(); } } } for (byte b8 = 0; b8 < Regions.WORLD_SIZE; b8 += 1) { for (byte b9 = 0; b9 < Regions.WORLD_SIZE; b9 += 1) { LevelItems.spawns[(int)b8, (int)b9] = new List <ItemSpawnpoint>(); } } if (ReadWrite.fileExists(Level.info.path + "/Spawns/Jars.dat", false, false)) { River river = new River(Level.info.path + "/Spawns/Jars.dat", false); byte b10 = river.readByte(); if (b10 > 0) { for (byte b11 = 0; b11 < Regions.WORLD_SIZE; b11 += 1) { for (byte b12 = 0; b12 < Regions.WORLD_SIZE; b12 += 1) { ushort num3 = river.readUInt16(); for (ushort num4 = 0; num4 < num3; num4 += 1) { byte newType = river.readByte(); Vector3 newPoint = river.readSingleVector3(); LevelItems.spawns[(int)b11, (int)b12].Add(new ItemSpawnpoint(newType, newPoint)); } } } } river.closeRiver(); } else { for (byte b13 = 0; b13 < Regions.WORLD_SIZE; b13 += 1) { for (byte b14 = 0; b14 < Regions.WORLD_SIZE; b14 += 1) { LevelItems.spawns[(int)b13, (int)b14] = new List <ItemSpawnpoint>(); if (ReadWrite.fileExists(string.Concat(new object[] { Level.info.path, "/Spawns/Items_", b13, "_", b14, ".dat" }), false, false)) { River river2 = new River(string.Concat(new object[] { Level.info.path, "/Spawns/Items_", b13, "_", b14, ".dat" }), false); byte b15 = river2.readByte(); if (b15 > 0) { ushort num5 = river2.readUInt16(); for (ushort num6 = 0; num6 < num5; num6 += 1) { byte newType2 = river2.readByte(); Vector3 newPoint2 = river2.readSingleVector3(); LevelItems.spawns[(int)b13, (int)b14].Add(new ItemSpawnpoint(newType2, newPoint2)); } } river2.closeRiver(); } } } } } }
public static void load() { LevelVehicles._models = new GameObject().transform; LevelVehicles.models.name = "Vehicles"; LevelVehicles.models.parent = Level.spawns; LevelVehicles.models.tag = "Logic"; LevelVehicles.models.gameObject.layer = LayerMasks.LOGIC; if (Level.isEditor || Provider.isServer) { LevelVehicles._tables = new List <VehicleTable>(); LevelVehicles._spawns = new List <VehicleSpawnpoint>(); if (ReadWrite.fileExists(Level.info.path + "/Spawns/Vehicles.dat", false, false)) { River river = new River(Level.info.path + "/Spawns/Vehicles.dat", false); byte b = river.readByte(); if (b > 1 && b < 3) { river.readSteamID(); } byte b2 = river.readByte(); for (byte b3 = 0; b3 < b2; b3 += 1) { Color newColor = river.readColor(); string text = river.readString(); ushort num; if (b > 3) { num = river.readUInt16(); if (num != 0 && SpawnTableTool.resolve(num) == 0) { Assets.errors.Add(string.Concat(new object[] { Level.info.name, " vehicle table \"", text, "\" references invalid spawn table ", num, "!" })); } } else { num = 0; } List <VehicleTier> list = new List <VehicleTier>(); byte b4 = river.readByte(); for (byte b5 = 0; b5 < b4; b5 += 1) { string newName = river.readString(); float newChance = river.readSingle(); List <VehicleSpawn> list2 = new List <VehicleSpawn>(); byte b6 = river.readByte(); for (byte b7 = 0; b7 < b6; b7 += 1) { ushort newVehicle = river.readUInt16(); list2.Add(new VehicleSpawn(newVehicle)); } list.Add(new VehicleTier(list2, newName, newChance)); } LevelVehicles.tables.Add(new VehicleTable(list, newColor, text, num)); if (!Level.isEditor) { LevelVehicles.tables[(int)b3].buildTable(); } } ushort num2 = river.readUInt16(); for (int i = 0; i < (int)num2; i++) { byte newType = river.readByte(); Vector3 newPoint = river.readSingleVector3(); float newAngle = (float)(river.readByte() * 2); LevelVehicles.spawns.Add(new VehicleSpawnpoint(newType, newPoint, newAngle)); } river.closeRiver(); } } }
// 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 }); }
// Token: 0x06002560 RID: 9568 RVA: 0x000D90CC File Offset: 0x000D74CC public static void load() { LevelNodes._models = new GameObject().transform; LevelNodes.models.name = "Nodes"; LevelNodes.models.parent = Level.level; LevelNodes.models.tag = "Logic"; LevelNodes.models.gameObject.layer = LayerMasks.LOGIC; LevelNodes._nodes = new List <Node>(); if (ReadWrite.fileExists(Level.info.path + "/Environment/Nodes.dat", false, false)) { River river = new River(Level.info.path + "/Environment/Nodes.dat", false); byte b = river.readByte(); if (b > 0) { ushort num = (ushort)river.readByte(); for (ushort num2 = 0; num2 < num; num2 += 1) { Vector3 vector = river.readSingleVector3(); ENodeType enodeType = (ENodeType)river.readByte(); if (enodeType == ENodeType.LOCATION) { string newName = river.readString(); LevelNodes.nodes.Add(new LocationNode(vector, newName)); } else if (enodeType == ENodeType.SAFEZONE) { float newRadius = river.readSingle(); bool newHeight = false; if (b > 1) { newHeight = river.readBoolean(); } bool newNoWeapons = true; if (b > 4) { newNoWeapons = river.readBoolean(); } bool newNoBuildables = true; if (b > 4) { newNoBuildables = river.readBoolean(); } LevelNodes.nodes.Add(new SafezoneNode(vector, newRadius, newHeight, newNoWeapons, newNoBuildables)); } else if (enodeType == ENodeType.PURCHASE) { float newRadius2 = river.readSingle(); ushort newID = river.readUInt16(); uint newCost = river.readUInt32(); LevelNodes.nodes.Add(new PurchaseNode(vector, newRadius2, newID, newCost)); } else if (enodeType == ENodeType.ARENA) { float newRadius3 = river.readSingle(); LevelNodes.nodes.Add(new ArenaNode(vector, newRadius3)); } else if (enodeType == ENodeType.DEADZONE) { float newRadius4 = river.readSingle(); LevelNodes.nodes.Add(new DeadzoneNode(vector, newRadius4)); } else if (enodeType == ENodeType.AIRDROP) { ushort num3 = river.readUInt16(); byte b2; byte b3; if (SpawnTableTool.resolve(num3) == 0 && Regions.tryGetCoordinate(vector, out b2, out b3)) { Assets.errors.Add(string.Concat(new object[] { Level.info.name, " airdrop references invalid spawn table ", num3, " at (", b2, ", ", b3, ")!" })); } LevelNodes.nodes.Add(new AirdropNode(vector, num3)); } else if (enodeType == ENodeType.EFFECT) { byte newShape = 0; if (b > 2) { newShape = river.readByte(); } float newRadius5 = river.readSingle(); Vector3 newBounds = Vector3.one; if (b > 2) { newBounds = river.readSingleVector3(); } ushort newID2 = river.readUInt16(); bool newNoWater = river.readBoolean(); bool newNoLighting = false; if (b > 3) { newNoLighting = river.readBoolean(); } LevelNodes.nodes.Add(new EffectNode(vector, (ENodeShape)newShape, newRadius5, newBounds, newID2, newNoWater, newNoLighting)); } } } river.closeRiver(); } }