// Token: 0x0600347C RID: 13436 RVA: 0x00159224 File Offset: 0x00157624
        public static void export(ushort id, bool isLegacy)
        {
            string text = Level.info.path;

            if (isLegacy)
            {
                text += "/Exported_Legacy_Spawn_Tables";
            }
            else
            {
                text += "/Exported_Proxy_Spawn_Tables";
            }
            if (ReadWrite.folderExists(text, false))
            {
                ReadWrite.deleteFolder(text, false);
            }
            Data data = new Data();

            data.writeString("ID", "Spawn");
            SpawnTableTool.exportItems(text, data, ref id, isLegacy);
            SpawnTableTool.exportVehicles(text, data, ref id, isLegacy);
            SpawnTableTool.exportZombies(text, data, ref id, isLegacy);
            SpawnTableTool.exportAnimals(text, data, ref id, isLegacy);
            data.isCSV = true;
            ReadWrite.writeData(text + "/IDs.csv", false, false, data);
        }
Пример #2
0
 // 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);
             }
         }
     }
 }
Пример #3
0
        // Token: 0x06003520 RID: 13600 RVA: 0x00160458 File Offset: 0x0015E858
        private static void onClickedProxyButton(SleekButton button)
        {
            ushort state = EditorPauseUI.proxyIDField.state;

            if (state == 0)
            {
                return;
            }
            SpawnTableTool.export(state, false);
        }
Пример #4
0
        // Token: 0x0600351F RID: 13599 RVA: 0x00160430 File Offset: 0x0015E830
        private static void onClickedLegacyButton(SleekButton button)
        {
            ushort state = EditorPauseUI.legacyIDField.state;

            if (state == 0)
            {
                return;
            }
            SpawnTableTool.export(state, true);
        }
Пример #5
0
 // 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();
         }
     }
 }
Пример #6
0
 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);
        }
Пример #8
0
 // 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);
 }
Пример #9
0
        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);
                }
            }
        }
Пример #10
0
        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);
        }
Пример #11
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);
        }
Пример #12
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);
        }
Пример #13
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);
         }
     }
 }
Пример #14
0
 // Token: 0x06003479 RID: 13433 RVA: 0x001584AC File Offset: 0x001568AC
 private static void exportVehicles(string path, Data spawnsData, ref ushort id, bool isLegacy)
 {
     for (int i = 0; i < LevelVehicles.tables.Count; i++)
     {
         VehicleTable vehicleTable = LevelVehicles.tables[i];
         if (vehicleTable.tableID == 0)
         {
             vehicleTable.tableID = id;
             spawnsData.writeString(id.ToString(), Level.info.name + "_" + vehicleTable.name);
             Data data = new Data();
             data.writeString("Type", "Spawn");
             Data   data2 = data;
             string key   = "ID";
             ushort value;
             id = (value = id) + 1;
             data2.writeUInt16(key, value);
             if (ReadWrite.fileExists(string.Concat(new string[]
             {
                 "/Bundles/Spawns/Vehicles/",
                 vehicleTable.name,
                 "/",
                 vehicleTable.name,
                 ".dat"
             }), false, true))
             {
                 Data data3 = ReadWrite.readData(string.Concat(new string[]
                 {
                     "/Bundles/Spawns/Vehicles/",
                     vehicleTable.name,
                     "/",
                     vehicleTable.name,
                     ".dat"
                 }), false, true);
                 data.writeInt32("Tables", 1);
                 data.writeUInt16("Table_0_Spawn_ID", data3.readUInt16("ID"));
                 data.writeInt32("Table_0_Weight", 100);
             }
             else
             {
                 data.writeInt32("Tables", 1);
                 data.writeUInt16("Table_0_Spawn_ID", id);
                 data.writeInt32("Table_0_Weight", 100);
                 spawnsData.writeString(id.ToString(), vehicleTable.name);
                 Data data4 = new Data();
                 data4.writeString("Type", "Spawn");
                 Data   data5 = data4;
                 string key2  = "ID";
                 id = (value = id) + 1;
                 data5.writeUInt16(key2, value);
                 if (isLegacy)
                 {
                     if (vehicleTable.tiers.Count > 1)
                     {
                         float num = float.MaxValue;
                         for (int j = 0; j < vehicleTable.tiers.Count; j++)
                         {
                             VehicleTier vehicleTier = vehicleTable.tiers[j];
                             if (vehicleTier.chance < num)
                             {
                                 num = vehicleTier.chance;
                             }
                         }
                         int num2 = Mathf.CeilToInt(10f / num);
                         data4.writeInt32("Tables", vehicleTable.tiers.Count);
                         for (int k = 0; k < vehicleTable.tiers.Count; k++)
                         {
                             VehicleTier vehicleTier2 = vehicleTable.tiers[k];
                             bool        flag         = SpawnTableTool.isVariantVehicleTier(vehicleTier2);
                             if (flag && ReadWrite.fileExists(string.Concat(new string[]
                             {
                                 "/Bundles/Spawns/Vehicles/",
                                 vehicleTier2.name,
                                 "/",
                                 vehicleTier2.name,
                                 ".dat"
                             }), false, true))
                             {
                                 Data data6 = ReadWrite.readData(string.Concat(new string[]
                                 {
                                     "/Bundles/Spawns/Vehicles/",
                                     vehicleTier2.name,
                                     "/",
                                     vehicleTier2.name,
                                     ".dat"
                                 }), false, true);
                                 data4.writeUInt16("Table_" + k + "_Spawn_ID", data6.readUInt16("ID"));
                                 data4.writeInt32("Table_" + k + "_Weight", (int)(vehicleTier2.chance * (float)num2));
                             }
                             else if (flag && ReadWrite.fileExists(string.Concat(new string[]
                             {
                                 path,
                                 "/Vehicles/",
                                 vehicleTier2.name,
                                 "/",
                                 vehicleTier2.name,
                                 ".dat"
                             }), false, false))
                             {
                                 Data data7 = ReadWrite.readData(string.Concat(new string[]
                                 {
                                     path,
                                     "/Vehicles/",
                                     vehicleTier2.name,
                                     "/",
                                     vehicleTier2.name,
                                     ".dat"
                                 }), false, false);
                                 data4.writeUInt16("Table_" + k + "_Spawn_ID", data7.readUInt16("ID"));
                                 data4.writeInt32("Table_" + k + "_Weight", (int)(vehicleTier2.chance * (float)num2));
                             }
                             else
                             {
                                 data4.writeUInt16("Table_" + k + "_Spawn_ID", id);
                                 data4.writeInt32("Table_" + k + "_Weight", (int)(vehicleTier2.chance * (float)num2));
                                 if (flag)
                                 {
                                     spawnsData.writeString(id.ToString(), vehicleTier2.name);
                                 }
                                 else
                                 {
                                     spawnsData.writeString(id.ToString(), vehicleTable.name + "_" + vehicleTier2.name);
                                 }
                                 Data data8 = new Data();
                                 data8.writeString("Type", "Spawn");
                                 Data   data9 = data8;
                                 string key3  = "ID";
                                 id = (value = id) + 1;
                                 data9.writeUInt16(key3, value);
                                 data8.writeInt32("Tables", vehicleTier2.table.Count);
                                 for (int l = 0; l < vehicleTier2.table.Count; l++)
                                 {
                                     VehicleSpawn vehicleSpawn = vehicleTier2.table[l];
                                     data8.writeUInt16("Table_" + l + "_Asset_ID", vehicleSpawn.vehicle);
                                     data8.writeInt32("Table_" + l + "_Weight", 10);
                                 }
                                 if (flag)
                                 {
                                     ReadWrite.writeData(string.Concat(new string[]
                                     {
                                         path,
                                         "/Vehicles/",
                                         vehicleTier2.name,
                                         "/",
                                         vehicleTier2.name,
                                         ".dat"
                                     }), false, false, data8);
                                 }
                                 else
                                 {
                                     ReadWrite.writeData(string.Concat(new string[]
                                     {
                                         path,
                                         "/Vehicles/",
                                         vehicleTable.name,
                                         "_",
                                         vehicleTier2.name,
                                         "/",
                                         vehicleTable.name,
                                         "_",
                                         vehicleTier2.name,
                                         ".dat"
                                     }), false, false, data8);
                                 }
                             }
                         }
                     }
                     else
                     {
                         VehicleTier vehicleTier3 = vehicleTable.tiers[0];
                         data4.writeInt32("Tables", vehicleTier3.table.Count);
                         for (int m = 0; m < vehicleTier3.table.Count; m++)
                         {
                             VehicleSpawn vehicleSpawn2 = vehicleTier3.table[m];
                             data4.writeUInt16("Table_" + m + "_Asset_ID", vehicleSpawn2.vehicle);
                             data4.writeInt32("Table_" + m + "_Weight", 10);
                         }
                     }
                 }
                 ReadWrite.writeData(string.Concat(new string[]
                 {
                     path,
                     "/Vehicles/",
                     vehicleTable.name,
                     "/",
                     vehicleTable.name,
                     ".dat"
                 }), false, false, data4);
             }
             ReadWrite.writeData(string.Concat(new string[]
             {
                 path,
                 "/Vehicles/",
                 Level.info.name,
                 "_",
                 vehicleTable.name,
                 "/",
                 Level.info.name,
                 "_",
                 vehicleTable.name,
                 ".dat"
             }), false, false, data);
         }
     }
 }
        // 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
         });
     }
 }
Пример #17
0
 // 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();
                     }
                 }
             }
         }
     }
 }
Пример #18
0
 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();
         }
     }
 }
Пример #19
0
        // 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
            });
        }
Пример #20
0
 // 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();
     }
 }