Browse Source

[2.0.3.9] Meteor portal

Zariteis 4 years ago
parent
commit
6b46da6b4b

BIN
Assets/Meteoroid/brokenMeteor.png


BIN
Assets/Ship/button.png


BIN
Assets/Ship/icon.png


+ 2 - 0
Core.cs

@@ -12,6 +12,8 @@ namespace Subworlds
     public static PlanetInfo meteroidPlanet;
 
     public static bool shipPorterPlaced;
+    public static bool meteorPorterPlaced;
+
     public static List<int> spawnObjects = new List<int>();
 
     public static ItemInfo itemOldTex;

+ 12 - 4
Gadgets/CoreGadget.cs

@@ -37,8 +37,12 @@ namespace Subworlds
       Logger.Log("Subworlds v" + Info.Mod.Version);
       Core.logger = Logger;
 
-      ItemInfo itemInfo = new ItemInfo(ItemType.GENERIC, "port5", "", null as Texture2D).Register("port5");
-      TileInfo tile = new TileInfo(TileType.INTERACTIVE, null as Texture2D, new GameObject("port5"), itemInfo).Register("port5");
+      ItemInfo itemInfoPorter5 = new ItemInfo(ItemType.GENERIC, "port5", "", null as Texture2D).Register("port5");
+      TileInfo tilePorter5 = new TileInfo(TileType.INTERACTIVE, null as Texture2D, new GameObject("port5"), itemInfoPorter5).Register("port5");
+      tilePorter5.OnInteract += Tile_OnInteract5;
+      ItemInfo itemInfoPorter6 = new ItemInfo(ItemType.GENERIC, "port6", "", null as Texture2D).Register("port6");
+      TileInfo tilePorter6 = new TileInfo(TileType.INTERACTIVE, null as Texture2D, new GameObject("port6"), itemInfoPorter6).Register("port6");
+      tilePorter6.OnInteract += Tile_OnInteract6;
 
       Core.itemOldTex = new ItemInfo(ItemType.GENERIC, "Old Tec", "Some piece of old\ntechnology", GadgetCoreAPI.LoadTexture2D("Core/iOldTec.png"));
       ItemRegistry.Singleton.Register(Core.itemOldTex, "oldtec");
@@ -81,13 +85,17 @@ namespace Subworlds
       universalCrafter.AddCraftPerformer(CraftMenuInfo.CreateSimpleCraftPerformer(
         Tuple.Create(new int[] { Core.itemOldTex.GetID(), Core.itemOldTex.GetID(), 210 }, new Item(Core.itemOldTexMod.GetID(), 1, 0, 0, 0, new int[3], new int[3]), 0)));
 
-      tile.OnInteract += Tile_OnInteract;
     }
 
-    private IEnumerator Tile_OnInteract()
+    private IEnumerator Tile_OnInteract5()
     {
       InstanceTracker.PlayerScript.Portal(5);
       yield break;
     }
+    private IEnumerator Tile_OnInteract6()
+    {
+      InstanceTracker.PlayerScript.Portal(6);
+      yield break;
+    }
   }
 }

+ 2 - 0
Gadgets/Meteoroid/MeteoroidGadget.Init.cs

@@ -71,6 +71,8 @@ namespace Subworlds
       // Create Breakables
       CreateBrakableObject("SpaceOre1", GadgetCoreAPI.LoadTexture2D("Meteoroid/spaceOre.png"), itemId: 1);
       CreateBrakableObject("SpaceOre2", GadgetCoreAPI.LoadTexture2D("Meteoroid/spaceOreBig.png"), itemId: 1);
+
+      CreateBrakableObject("BrokenMeteor", GadgetCoreAPI.LoadTexture2D("Meteoroid/brokenMeteor.png"), itemId: 1, large: true);
     }
   }
 }

+ 5 - 2
Patches/Patch_Chunk_OnDestroy.cs

@@ -14,6 +14,11 @@ namespace Subworlds.Patches
     public static void Prefix(Chunk __instance, ref GameObject[] ___networkStuff)
     {
       Core.shipPorterPlaced = false;
+      Core.meteorPorterPlaced = false;
+
+      if (GameScript.townBiome != Core.meteroidPlanet.GetID() && GameScript.townBiome != Core.shipPlanet.GetID())
+        Core.lastBiome = GameScript.townBiome;
+
       if (___networkStuff.Length > 40)
       {
         if (Network.isServer)
@@ -29,8 +34,6 @@ namespace Subworlds.Patches
         }
         ___networkStuff = new GameObject[40];
       }
-      if (GameScript.townBiome != Core.meteroidPlanet.GetID() && GameScript.townBiome != Core.shipPlanet.GetID())
-        Core.lastBiome = GameScript.townBiome;
     }
   }
 }

+ 20 - 2
Patches/Patch_Chunk_SpawnBiomeSlot.cs

@@ -29,14 +29,32 @@ namespace Subworlds.Patches
         Core.shipPorterPlaced = true;
         if (a == 0 || a == 1 || a == 2 || a == 3 || a == 4 || a == 5)
         {
-          var portal = (GameObject)Network.Instantiate((GameObject)Resources.Load("portal"), transform.position + new Vector3(0, 1.5f - 0.05f, 0.2f), Quaternion.identity, 0);
+          var portal = (GameObject)Network.Instantiate((GameObject)Resources.Load("portal"), transform.position + new Vector3(-0.5f, 1.5f - 0.05f, 0.2f), Quaternion.identity, 0);
           portal.name = "portal/5/obj";
           var iUA = portal.transform.GetChild(0).gameObject;
           portal.GetComponent<NetworkView>().RPC("Activate", RPCMode.All, new object[0]);
           iUA.GetComponent<NetworkView>().RPC("Set", RPCMode.AllBuffered, new object[] { Core.shipPlanet.GetID(), 0, 5 });
           ___networkStuff[___temp] = portal;
           ___temp++;
-          var crates = (GameObject)Network.Instantiate(Resources.Load("obj/Subworlds/BrokenCrates1"), transform.position + new Vector3(2, 0, 0.2f), Quaternion.identity, 0);
+          var crates = (GameObject)Network.Instantiate(Resources.Load("obj/Subworlds/BrokenCrates1"), transform.position + new Vector3(1.5f, 0, 0.2f), Quaternion.identity, 0);
+          ___networkStuff[___temp] = crates;
+          ___temp++;
+          return false;
+        }
+      }
+      if (num < 4 && Core.shipPorterPlaced && !Core.meteorPorterPlaced)
+      {
+        Core.meteorPorterPlaced = true;
+        if (a == 0 || a == 1 || a == 2 || a == 3 || a == 4 || a == 5)
+        {
+          var portal = (GameObject)Network.Instantiate((GameObject)Resources.Load("portal"), transform.position + new Vector3(0.5f, 1.5f - 0.05f, 0.2f), Quaternion.identity, 0);
+          portal.name = "portal/6/obj";
+          var iUA = portal.transform.GetChild(0).gameObject;
+          portal.GetComponent<NetworkView>().RPC("Activate", RPCMode.All, new object[0]);
+          iUA.GetComponent<NetworkView>().RPC("Set", RPCMode.AllBuffered, new object[] { Core.meteroidPlanet.GetID(), 0, 6 });
+          ___networkStuff[___temp] = portal;
+          ___temp++;
+          var crates = (GameObject)Network.Instantiate(Resources.Load("obj/Subworlds/BrokenMeteor"), transform.position + new Vector3(-1.5f, 0 + 2.03f, 0.2f), Quaternion.identity, 0);
           ___networkStuff[___temp] = crates;
           ___temp++;
           return false;

+ 2 - 1
Patches/Patch_ObjectScript_Die.cs

@@ -22,7 +22,7 @@ namespace Subworlds.Patches
       {
         if (Random.Range(0, 2) == 0)
           __instance.StartCoroutine(SpawnMultiple(__instance.transform.position.x + 2, __instance.transform.position.y, 2, 1 + Random.Range(0, 3), "e/Subworlds/BrokenSliver", 0.1f));
-        else if (Random.Range(0, 10) == 0)
+        else if (Random.Range(0, 12) == 0)
         {
           Item item = GadgetCoreAPI.EmptyItem();
           item.id = Core.itemOldTex.GetID();
@@ -30,6 +30,7 @@ namespace Subworlds.Patches
         }
       }
     }
+
     private static IEnumerator SpawnMultiple(float xBase, float yBase, float range, int amount, string name, float speed)
     {
       for (int i = 0; i < amount; i++)

+ 25 - 4
Scripts/OldChestScript.cs

@@ -6,6 +6,9 @@ namespace Subworlds.Scripts
 {
   public class OldChestScript : MonoBehaviour
   {
+    private static int[] dropsLoot = new int[] { 1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34 };
+    private static int[] dropsEmblem = new int[] { 101, 102, 103, 104, 111, 112, 113, 114, 121, 122, 123, 124, 131, 132, 133, 134 };
+
     private bool opened = false;
 
     private void Awake()
@@ -42,9 +45,27 @@ namespace Subworlds.Scripts
     private IEnumerator DropLocalLoot()
     {
       yield return new WaitForSeconds(0.2f);
-      var item = GadgetCoreAPI.EmptyItem();
-      item.id = Core.itemOldTex.GetID();
-      GadgetCoreAPI.DropItemLocal(gameObject.transform.position, item);
+      if (Random.Range(0, 3) == 0)
+      {
+        var item = GadgetCoreAPI.EmptyItem();
+        item.id = Core.itemOldTex.GetID();
+        GadgetCoreAPI.DropItemLocal(gameObject.transform.position, item);
+      }
+      else
+      {
+        var item = GadgetCoreAPI.EmptyItem();
+        item.id = dropsEmblem[Random.Range(0, dropsEmblem.Length)];
+        GadgetCoreAPI.DropItemLocal(gameObject.transform.position, item);
+      }
+      for (int i = 0; i < 3; i++)
+      {
+        if (Random.Range(0, 3) > 0)
+        {
+          var item = GadgetCoreAPI.EmptyItem();
+          item.id = dropsLoot[Random.Range(0, dropsLoot.Length)];
+          GadgetCoreAPI.DropItemLocal(gameObject.transform.position, item);
+        }
+      }
       yield return new WaitForSeconds(0.2f);
       GadgetCoreAPI.SpawnExp(gameObject.transform.position, 25);
       yield return new WaitForSeconds(0.2f);
@@ -54,7 +75,7 @@ namespace Subworlds.Scripts
       yield break;
     }
 
-    private static Texture2D textureOldChestOpen = GadgetCoreAPI.LoadTexture2D("oldChestOpen.png");
+    private static Texture2D textureOldChestOpen = GadgetCoreAPI.LoadTexture2D("Ship/oldChestOpen.png");
 
     [RPC]
     private void OpenMat()

+ 3 - 0
Subworlds.csproj

@@ -390,6 +390,9 @@
     <None Update="Assets\Meteoroid\bgStars.png">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </None>
+    <None Update="Assets\Meteoroid\brokenMeteor.png">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
     <None Update="Assets\Meteoroid\button.png">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </None>