diff --git a/core/assets/baseparts/1599594352859.msch b/core/assets/baseparts/1599594352859.msch new file mode 100644 index 0000000000..3b73103fa9 Binary files /dev/null and b/core/assets/baseparts/1599594352859.msch differ diff --git a/core/assets/baseparts/752911659508695080.msch b/core/assets/baseparts/752911659508695080.msch new file mode 100644 index 0000000000..9f1e10578e --- /dev/null +++ b/core/assets/baseparts/752911659508695080.msch @@ -0,0 +1,2 @@ +mschxE}r@ ŵ|.0%޺Llpא4iz47C[eaZ==iedxN>|Z5N20}N^cm!֬GӔqJq៩\KYZך .{~[:d9Sje+Wx DѻhwU-Y-:Gt:)h.28XoDtE6ϚT:A\8`#` \ No newline at end of file diff --git a/core/assets/baseparts/752926963076694047.msch b/core/assets/baseparts/752926963076694047.msch new file mode 100644 index 0000000000..6e26296729 Binary files /dev/null and b/core/assets/baseparts/752926963076694047.msch differ diff --git a/core/assets/baseparts/752927009641857205.msch b/core/assets/baseparts/752927009641857205.msch new file mode 100644 index 0000000000..7943fb1481 Binary files /dev/null and b/core/assets/baseparts/752927009641857205.msch differ diff --git a/core/assets/baseparts/752930133874049034.msch b/core/assets/baseparts/752930133874049034.msch new file mode 100644 index 0000000000..93941bdff3 Binary files /dev/null and b/core/assets/baseparts/752930133874049034.msch differ diff --git a/core/assets/baseparts/752930845685448825.msch b/core/assets/baseparts/752930845685448825.msch new file mode 100644 index 0000000000..594f46b9ee --- /dev/null +++ b/core/assets/baseparts/752930845685448825.msch @@ -0,0 +1,4 @@ +mschx-Mn `bt5I\$# j?~q32Mt31}p垗TVqؖ;W +8k~t|nIzR$4_iAbjGIu~ M6 C~d΂SF0AX422p +FD<"F8e^H^ AG +ؠSkAS8+Adˌ})*o \ No newline at end of file diff --git a/core/assets/baseparts/752932257538506823.msch b/core/assets/baseparts/752932257538506823.msch new file mode 100644 index 0000000000..097246d11c Binary files /dev/null and b/core/assets/baseparts/752932257538506823.msch differ diff --git a/core/assets/baseparts/752937073991745554.msch b/core/assets/baseparts/752937073991745554.msch new file mode 100644 index 0000000000..fe8d7ccc9c --- /dev/null +++ b/core/assets/baseparts/752937073991745554.msch @@ -0,0 +1 @@ +mschx-k )[SPHI$mBw5L70_"=Zc¶g+-1\RhA9Q)R˴oG #Eģ$8AжIhN8 p5\r;K % \ No newline at end of file diff --git a/core/assets/baseparts/752937145978716332.msch b/core/assets/baseparts/752937145978716332.msch new file mode 100644 index 0000000000..c3b5dbb923 Binary files /dev/null and b/core/assets/baseparts/752937145978716332.msch differ diff --git a/core/assets/baseparts/752937230456193185.msch b/core/assets/baseparts/752937230456193185.msch new file mode 100644 index 0000000000..558a0a3c63 --- /dev/null +++ b/core/assets/baseparts/752937230456193185.msch @@ -0,0 +1 @@ +mschxMI0 "qh,8ϯӃǣYlL˜OX5G<,*1!xi%Wإ9+pMY8}b)avA-S%/7ރo­r m;s &.^' \ No newline at end of file diff --git a/core/assets/baseparts/752939992300388483.msch b/core/assets/baseparts/752939992300388483.msch new file mode 100644 index 0000000000..6d4d56c904 --- /dev/null +++ b/core/assets/baseparts/752939992300388483.msch @@ -0,0 +1 @@ +mschx= n0E} !]UMJn×@_~瑁)K(5jouz?ڭ2f?}+oulQq&O:=>n6WeL]3 Gonq_jv5,+}$>!I*%!#a«xیx͜v"K4%t =Lg\H(1v=CϡKL/W+4+`z zf v\b{==}9H|XF'Fψ+GAxt/t#?1"V9 \ No newline at end of file diff --git a/core/assets/baseparts/752941306489077823.msch b/core/assets/baseparts/752941306489077823.msch new file mode 100644 index 0000000000..d98f3b2a11 --- /dev/null +++ b/core/assets/baseparts/752941306489077823.msch @@ -0,0 +1 @@ +mschx-K0 D'Ю]ElB@D_!cW|$N㺜,c]w63ϋ‘LĂvHao6JBA׆5ЊN[Ua- xۇo]& \ No newline at end of file diff --git a/core/assets/baseparts/752942460573057196.msch b/core/assets/baseparts/752942460573057196.msch new file mode 100644 index 0000000000..57b5e83b0a Binary files /dev/null and b/core/assets/baseparts/752942460573057196.msch differ diff --git a/core/assets/baseparts/752944648628076745.msch b/core/assets/baseparts/752944648628076745.msch new file mode 100644 index 0000000000..090ffe0155 --- /dev/null +++ b/core/assets/baseparts/752944648628076745.msch @@ -0,0 +1,2 @@ +mschxMan mMtC`{]:& =zh`WiSOa!w)(A/zcyw6͢`^)HE']j!L7{4Q;6xE?ܡ>L{y_̇Ȗ$ʎj7Cn6ѳ!Ot-G+ĉ o.?d ̏kr/8N4@Ϩd41SqÂc% +ɏM \ No newline at end of file diff --git a/core/assets/baseparts/752955880965799966.msch b/core/assets/baseparts/752955880965799966.msch new file mode 100644 index 0000000000..4cda9322ea Binary files /dev/null and b/core/assets/baseparts/752955880965799966.msch differ diff --git a/core/assets/baseparts/752961534690328648.msch b/core/assets/baseparts/752961534690328648.msch new file mode 100644 index 0000000000..15dbc9618c Binary files /dev/null and b/core/assets/baseparts/752961534690328648.msch differ diff --git a/core/assets/baseparts/752961607314702336.msch b/core/assets/baseparts/752961607314702336.msch new file mode 100644 index 0000000000..f7ea7664db Binary files /dev/null and b/core/assets/baseparts/752961607314702336.msch differ diff --git a/core/assets/baseparts/752965444419453010.msch b/core/assets/baseparts/752965444419453010.msch new file mode 100644 index 0000000000..008b1f015b Binary files /dev/null and b/core/assets/baseparts/752965444419453010.msch differ diff --git a/core/assets/baseparts/752967201597947924.msch b/core/assets/baseparts/752967201597947924.msch new file mode 100644 index 0000000000..76607f758f Binary files /dev/null and b/core/assets/baseparts/752967201597947924.msch differ diff --git a/core/src/mindustry/maps/generators/BaseGenerator.java b/core/src/mindustry/maps/generators/BaseGenerator.java index a671ac4d72..f1a508d4c2 100644 --- a/core/src/mindustry/maps/generators/BaseGenerator.java +++ b/core/src/mindustry/maps/generators/BaseGenerator.java @@ -26,6 +26,7 @@ public class BaseGenerator{ private Tiles tiles; private Team team; private ObjectMap ores = new ObjectMap<>(); + private ObjectMap oreFloors = new ObjectMap<>(); private Seq cores; public void generate(Tiles tiles, Seq cores, Tile spawn, Team team, Sector sector){ @@ -41,6 +42,8 @@ public class BaseGenerator{ for(Block block : content.blocks()){ if(block instanceof OreBlock && block.asFloor().itemDrop != null){ ores.put(block.asFloor().itemDrop, (OreBlock)block); + }else if(block.isFloor() && block.asFloor().itemDrop != null && !oreFloors.containsKey(block.asFloor().itemDrop)){ + oreFloors.put(block.asFloor().itemDrop, block.asFloor()); } } @@ -73,7 +76,8 @@ public class BaseGenerator{ pass(tile -> { if(!tile.block().alwaysReplace) return; - if((tile.drop() != null || (tile.floor().liquidDrop != null && Mathf.chance(nonResourceChance * 2))) && Mathf.chance(resourceChance)){ + if(((tile.overlay().asFloor().itemDrop != null || (tile.drop() != null && Mathf.chance(nonResourceChance))) + || (tile.floor().liquidDrop != null && Mathf.chance(nonResourceChance * 2))) && Mathf.chance(resourceChance)){ Seq parts = bases.forResource(tile.drop() != null ? tile.drop() : tile.floor().liquidDrop); if(!parts.isEmpty()){ tryPlace(parts.random(), tile.x, tile.y); @@ -94,10 +98,6 @@ public class BaseGenerator{ //small walls pass(tile -> { - //no walls around cores - if(cores.contains(t -> t.within(tile, (3 + 4) * tilesize))){ - return; - } if(tile.block().alwaysReplace){ boolean any = false; @@ -175,19 +175,20 @@ public class BaseGenerator{ } if(part.required instanceof Item){ + Item item = (Item)part.required; for(Stile tile : result.tiles){ if(tile.block instanceof Drill){ tile.block.iterateTaken(tile.x + cx, tile.y + cy, (ex, ey) -> { if(!tiles.getn(ex, ey).floor().isLiquid){ - tiles.getn(ex, ey).setOverlay(ores.get((Item)part.required)); + set(tiles.getn(ex, ey), item); } Tile rand = tiles.getc(ex + Mathf.range(1), ey + Mathf.range(1)); if(!rand.floor().isLiquid){ //random ores nearby to make it look more natural - rand.setOverlay(ores.get((Item)part.required)); + set(rand, item); } }); } @@ -196,9 +197,32 @@ public class BaseGenerator{ Schematics.place(result, cx + result.width/2, cy + result.height/2, team); + //fill drills with items after placing + if(part.required instanceof Item){ + Item item = (Item)part.required; + for(Stile tile : result.tiles){ + if(tile.block instanceof Drill){ + + Building build = world.tile(tile.x + cx, tile.y + cy).build; + + if(build != null){ + build.items.add(item, build.block.itemCapacity); + } + } + } + } + return true; } + void set(Tile tile, Item item){ + if(ores.containsKey(item)){ + tile.setOverlay(ores.get(item)); + }else if(oreFloors.containsKey(item)){ + tile.setFloor(oreFloors.get(item)); + } + } + boolean isTaken(Block block, int x, int y){ int offsetx = -(block.size - 1) / 2; int offsety = -(block.size - 1) / 2; diff --git a/core/src/mindustry/world/Tile.java b/core/src/mindustry/world/Tile.java index 482724699a..268888a45e 100644 --- a/core/src/mindustry/world/Tile.java +++ b/core/src/mindustry/world/Tile.java @@ -326,7 +326,7 @@ public class Tile implements Position, QuadTreeObject, Displayable{ setOverlay(content.block(ore)); } - public void setOverlay(Block block){ + public void setOverlay(@NonNull Block block){ this.overlay = (Floor)block; recache();