From 30abfc0619c41dc6e10d13bc1200214ae4a834ef Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 20 Oct 2020 14:02:10 -0400 Subject: [PATCH] Fixed #3045 --- core/assets/baseparts/1603214918168.msch | 2 ++ core/assets/baseparts/1603214945791.msch | 2 ++ core/assets/baseparts/1603214967392.msch | 1 + core/assets/baseparts/1603214996033.msch | 3 +++ core/assets/baseparts/1603215024189.msch | Bin 0 -> 162 bytes core/assets/baseparts/1603215113546.msch | 2 ++ core/assets/baseparts/1603215171294.msch | 2 ++ core/assets/baseparts/1603215272794.msch | 1 + core/assets/baseparts/1603215345320.msch | 4 ++++ core/assets/baseparts/1603215415778.msch | 2 ++ core/assets/baseparts/1603215454977.msch | Bin 0 -> 216 bytes core/assets/baseparts/1603215491407.msch | 2 ++ core/assets/baseparts/1603215563717.msch | Bin 0 -> 160 bytes core/assets/baseparts/1603215697527.msch | Bin 0 -> 262 bytes core/assets/baseparts/1603215771822.msch | Bin 0 -> 239 bytes core/assets/baseparts/1603215801163.msch | 1 + core/assets/baseparts/1603216038407.msch | Bin 0 -> 304 bytes core/assets/baseparts/1603216102310.msch | 1 + core/assets/baseparts/1603216240041.msch | 3 +++ core/assets/baseparts/1603216539888.msch | Bin 0 -> 449 bytes core/src/mindustry/content/Blocks.java | 2 +- .../mindustry/entities/comp/BuildingComp.java | 2 +- core/src/mindustry/logic/LExecutor.java | 17 ++++++++++------- core/src/mindustry/logic/LStatements.java | 6 ++++-- core/src/mindustry/logic/LUnitControl.java | 2 +- .../blocks/defense/turrets/LiquidTurret.java | 6 ++++++ .../world/blocks/defense/turrets/Turret.java | 6 ------ .../world/blocks/logic/LogicBlock.java | 5 ++++- 28 files changed, 53 insertions(+), 19 deletions(-) create mode 100644 core/assets/baseparts/1603214918168.msch create mode 100644 core/assets/baseparts/1603214945791.msch create mode 100644 core/assets/baseparts/1603214967392.msch create mode 100644 core/assets/baseparts/1603214996033.msch create mode 100644 core/assets/baseparts/1603215024189.msch create mode 100644 core/assets/baseparts/1603215113546.msch create mode 100644 core/assets/baseparts/1603215171294.msch create mode 100644 core/assets/baseparts/1603215272794.msch create mode 100644 core/assets/baseparts/1603215345320.msch create mode 100644 core/assets/baseparts/1603215415778.msch create mode 100644 core/assets/baseparts/1603215454977.msch create mode 100644 core/assets/baseparts/1603215491407.msch create mode 100644 core/assets/baseparts/1603215563717.msch create mode 100644 core/assets/baseparts/1603215697527.msch create mode 100644 core/assets/baseparts/1603215771822.msch create mode 100644 core/assets/baseparts/1603215801163.msch create mode 100644 core/assets/baseparts/1603216038407.msch create mode 100644 core/assets/baseparts/1603216102310.msch create mode 100644 core/assets/baseparts/1603216240041.msch create mode 100644 core/assets/baseparts/1603216539888.msch diff --git a/core/assets/baseparts/1603214918168.msch b/core/assets/baseparts/1603214918168.msch new file mode 100644 index 0000000000..6d69a2c362 --- /dev/null +++ b/core/assets/baseparts/1603214918168.msch @@ -0,0 +1,2 @@ +mschx5 +! Ey-J(qG&'.}SmtWKuXGq Yz\P?E:Y ΤԢh)(%UDK(.%#V0FN# \ No newline at end of file diff --git a/core/assets/baseparts/1603214967392.msch b/core/assets/baseparts/1603214967392.msch new file mode 100644 index 0000000000..0e30b20a82 --- /dev/null +++ b/core/assets/baseparts/1603214967392.msch @@ -0,0 +1 @@ +mschx%A ᧀZc\.z$dФ/t?3o`Ɲ.L<$NV!b>=e%80r"^!GKug9耦{S_@+$jW\oJSM ܅0?CThqW \ No newline at end of file diff --git a/core/assets/baseparts/1603214996033.msch b/core/assets/baseparts/1603214996033.msch new file mode 100644 index 0000000000..83690987ae --- /dev/null +++ b/core/assets/baseparts/1603214996033.msch @@ -0,0 +1,3 @@ +mschx% + Ӫmic׽C/{bU~A>:n^Xvw?ŧ67+?fVoT?W;bO=Xvc+_Lkdi7uAYB3l^EM zoV8_`w_^3g#h19eE;y-wIixVBWplw#a}BwYmzq~L=tdV7a#qUix)jpO }c|tt#-)䃑dqPҒr$b@*b2rtҳRZґ@Wr# \ No newline at end of file diff --git a/core/assets/baseparts/1603215171294.msch b/core/assets/baseparts/1603215171294.msch new file mode 100644 index 0000000000..eaef917ff3 --- /dev/null +++ b/core/assets/baseparts/1603215171294.msch @@ -0,0 +1,2 @@ +mschx%ᎃ Ai߃pB`M +!0;060/oK8J\k a|T k~Sq)O-h_|M%35V⾸Ӌ\[}ٱ#ⶼ@0-'hh0@W @JCi4bjp2gㄽ_]䡎Eӱ-K+. \ No newline at end of file diff --git a/core/assets/baseparts/1603215272794.msch b/core/assets/baseparts/1603215272794.msch new file mode 100644 index 0000000000..b2351a3857 --- /dev/null +++ b/core/assets/baseparts/1603215272794.msch @@ -0,0 +1 @@ +mschxMKn D 1P&#$ 9yvtCY_%Jno>1-~K؎i?#BI%q;R8W;r˖#v)!F\7ٔoIy{4ïvg=!;^`4E ` ah:I:!꬐u0hRFC7: TW0t=z*] %wX#H7G4}mWW03Įb6 e> \ No newline at end of file diff --git a/core/assets/baseparts/1603215345320.msch b/core/assets/baseparts/1603215345320.msch new file mode 100644 index 0000000000..8c97534bdf --- /dev/null +++ b/core/assets/baseparts/1603215345320.msch @@ -0,0 +1,4 @@ +mschxEn@\E!dͲ:iҐqvfاȇP^]|g7Bw +Vp]ln5'?|`npr};МC0O[vM߆4vpߑ'*HY~2dJNV(BLr +bHw-cKM52e*W R!KL{X# SAJR5dCV6r]m`t~H覵RvX +2HNk{8'L^+y# +pU%%%JAJ$?M \ No newline at end of file diff --git a/core/assets/baseparts/1603215415778.msch b/core/assets/baseparts/1603215415778.msch new file mode 100644 index 0000000000..6f7f75ab97 --- /dev/null +++ b/core/assets/baseparts/1603215415778.msch @@ -0,0 +1,2 @@ +mschx-k +1 MуP PҮEdM?o2c1e_BϚ/guI08bI~e.pRwGO`madh{Nނ:'"IZ}äz}o)" \ No newline at end of file diff --git a/core/assets/baseparts/1603215454977.msch b/core/assets/baseparts/1603215454977.msch new file mode 100644 index 0000000000000000000000000000000000000000..c0a53057ed741f285cd16fe930a9f2bd0cc2ec2b GIT binary patch literal 216 zcmc~TPR?Mgm}A;^yQ{@Oz$H6rkK5dt?r6zI%OMwN<%&2eYWxE3Kp2zgs@dTW|V!uJgR_1-X}nzTf_TghhPQ z{bj~+nI9|UcJJS2*`E4q*@krtc10f=0wZR$@8OnEp6*eZ85HWU?P|z^KkX^5o*^#2 zCNAD3Ey`7{s=kX~h?)kUy<%WGYt5fTZ%Kcb)p7Q@C3B`d?b|e&)wljqpp}_ys{hT+ ZH-q`6FwbUw>S4LbGRRJJzgMAp8vr!JW_|zw literal 0 HcmV?d00001 diff --git a/core/assets/baseparts/1603215491407.msch b/core/assets/baseparts/1603215491407.msch new file mode 100644 index 0000000000..ba578a4a55 --- /dev/null +++ b/core/assets/baseparts/1603215491407.msch @@ -0,0 +1,2 @@ +mschx5ኃ01mj9(h~H½eufCn +jgA7}~K>@ }cNOv2a=oc\D[=qt0&?S (Р(p=R$тJT&geJIMʴ* ~#d|EE4I#tFxpzpzʤ3% h'/4 ol```›SfffG?J (, \ No newline at end of file diff --git a/core/assets/baseparts/1603215563717.msch b/core/assets/baseparts/1603215563717.msch new file mode 100644 index 0000000000000000000000000000000000000000..460c1d9f8b55a2cf31f26543d84be9bf0ca3824c GIT binary patch literal 160 zcmc~TPR?Mgm}BdAk?)WKkBymtxJlhfyRIA?0rLY)hX3}yjXBdQSH9QDFi~p3Z>*`D9{;97uq*V3bN7`WYcR{lD(^gZjkXJ;?R)No0^nRNM9^5NR<^>WvDKJ)W# zuulE_lC#?GAAjJxPrM%T}vK zv-E{!+tMFBdBxdk3%xfQyubNe^T(#hSwG758$R5{9==WU_f5T%>$ShkWIdL?{igCX z6KjTe2iCLm4_#P&{qt9szrUQF*Q=fVvS9yGDPBiM&5}D?Sz1>qn*{WPUEtiZK%A#3 zFo8wd_hx>DuDvHWBW1z5+{S%Lhrgdwux_sC)!Fp7 Vvs_DgWzP~LqfCpd_QtbZ9RNoqe53#X literal 0 HcmV?d00001 diff --git a/core/assets/baseparts/1603215771822.msch b/core/assets/baseparts/1603215771822.msch new file mode 100644 index 0000000000000000000000000000000000000000..68ee586ea5ec58d88238857e0b4a0e2ab592b927 GIT binary patch literal 239 zcmc~TPR?Mgn4{bGIOo0Z_9lG z*4^-ZUa{n;Q|08`OW8&DoS!P!M#Vl7FWvW6)auC9tbC8-+U{Oo@|wQ>7y8iny7Sjo z0p3}&xcLHAJEj?U=)I1Z-ZRfI=4pxTtCorCJy))VmGGQ=A<3Maaz{e=R-fHTh4qT* ytM2i3=_%iNy|1%rftHGAX=?o1jX(c7>a(3OX%RcW=fSzJ#*YI(vTu^J3o7ZB%(~|x(@(|PMJpGI6e4>sau1zeh7go8yKit*lsqMJ0BBx)r zq~dgd#a@Xmwa}tczTnfgF?R7+z84?v{8@8&Lst5;#_jyg$J{pa%)Wp4M8fTr zycg>?{@gVq(r4a9x3_Qh@hmQ%|LivVo$HbA#+?Rl%^q#^I{x5K%DDGW+W%Ot zJHfrkD}b}~knTdy4B=fZ)lU6;TpY#gSf`xozh3yDXwL*$`!yO76FnzMhum2*Wm}Mo z>f*w0VVok_j}!&JJE|qDdv;NEqj=!bIg2K7zo=AR_vu`)g}icD%wM&~+)YPy4=Np; PnXNG|;S2Z1{IIJ4yk3}l literal 0 HcmV?d00001 diff --git a/core/assets/baseparts/1603216102310.msch b/core/assets/baseparts/1603216102310.msch new file mode 100644 index 0000000000..a05dbc61ed --- /dev/null +++ b/core/assets/baseparts/1603216102310.msch @@ -0,0 +1 @@ +mschx%[j0 EoؓK]e258 ;SJI]">O}\_~Hy !K) %Q5KzFNR2L/9uۋX|iX9u+8pz&։mOh!>t^m1%(M6Ae) \ No newline at end of file diff --git a/core/assets/baseparts/1603216240041.msch b/core/assets/baseparts/1603216240041.msch new file mode 100644 index 0000000000..c0960c09d5 --- /dev/null +++ b/core/assets/baseparts/1603216240041.msch @@ -0,0 +1,3 @@ +mschxMIR0EJk.cp +*3nm;;O#9 zs)HNLy6Wb2zOeo`gQwHZk*X2)JnqL$-9t?0e*)DeB;Qj?s%`=-;id~*lwnsZM{*cGh z8*{nWO|v=dz{Dn$QX#1)^-}VU= type = value == null ? void.class : value.getClass().isAnonymousClass() ? value.getClass().getSuperclass() : value.getClass(); + Class type = value == null ? void.class : value.getClass().isAnonymousClass() || value.getClass().getSimpleName().startsWith("adapter") ? value.getClass().getSuperclass() : value.getClass(); if(builder != null && builder.isPlayer()){ lastAccessed = builder.getPlayer().name; diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index e2cbd581fd..6b4f9ced0a 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -47,6 +47,7 @@ public class LExecutor{ public LongSeq graphicsBuffer = new LongSeq(); public StringBuilder textBuffer = new StringBuilder(); public Building[] links = {}; + public IntSet linkIds = new IntSet(); public Team team = Team.derelict; public boolean initialized(){ @@ -212,9 +213,9 @@ public class LExecutor{ public LLocate locate = LLocate.building; public BlockFlag flag = BlockFlag.core; public int enemy, ore; - public int outX, outY, outFound; + public int outX, outY, outFound, outBuild; - public UnitLocateI(LLocate locate, BlockFlag flag, int enemy, int ore, int outX, int outY, int outFound){ + public UnitLocateI(LLocate locate, BlockFlag flag, int enemy, int ore, int outX, int outY, int outFound, int outBuild){ this.locate = locate; this.flag = flag; this.enemy = enemy; @@ -271,6 +272,7 @@ public class LExecutor{ cache.found = false; exec.setnum(outFound, 0); } + exec.setobj(outFound, res != null && res.build != null && res.build.team == exec.team ? res.build : null); }else{ exec.setbool(outFound, cache.found); exec.setnum(outX, cache.x); @@ -446,13 +448,13 @@ public class LExecutor{ float range = Math.max(unit.range(), buildingRange); if(!unit.within(x1, y1, range)){ exec.setobj(p3, null); - exec.setnum(p4, 0); + exec.setobj(p4, null); }else{ Tile tile = world.tileWorld(x1, y1); //any environmental solid block is returned as StoneWall, aka "@solid" Block block = tile == null ? null : !tile.synthetic() ? (tile.solid() ? Blocks.stoneWall : Blocks.air) : tile.block(); exec.setobj(p3, block); - exec.setnum(p4, tile != null && tile.build != null ? tile.build.rotation : 0); + exec.setobj(p4, tile != null && tile.build != null ? tile.build : null); } } case itemDrop -> { @@ -510,11 +512,11 @@ public class LExecutor{ @Override public void run(LExecutor exec){ Object obj = exec.obj(target); - if(obj instanceof Controllable cont && cont.team() == exec.team){ + if(obj instanceof Building b && b.team == exec.team && exec.linkIds.contains(b.id)){ if(type.isObj){ - cont.control(type, exec.obj(p1), exec.num(p2), exec.num(p3), exec.num(p4)); + b.control(type, exec.obj(p1), exec.num(p2), exec.num(p3), exec.num(p4)); }else{ - cont.control(type, exec.num(p1), exec.num(p2), exec.num(p3), exec.num(p4)); + b.control(type, exec.num(p1), exec.num(p2), exec.num(p3), exec.num(p4)); } } } @@ -607,6 +609,7 @@ public class LExecutor{ Object target = exec.obj(from); Object sense = exec.obj(type); + //TODO should remote enemy buildings be senseable? if(target instanceof Senseable se){ if(sense instanceof Content){ exec.setnum(to, se.sense(((Content)sense))); diff --git a/core/src/mindustry/logic/LStatements.java b/core/src/mindustry/logic/LStatements.java index ba4d31e9a1..57adbdb7fe 100644 --- a/core/src/mindustry/logic/LStatements.java +++ b/core/src/mindustry/logic/LStatements.java @@ -819,7 +819,7 @@ public class LStatements{ public LLocate locate = LLocate.building; public BlockFlag flag = BlockFlag.core; public String enemy = "true", ore = "@copper"; - public String outX = "outx", outY = "outy", outFound = "found"; + public String outX = "outx", outY = "outy", outFound = "found", outBuild = "building"; @Override public void build(Table table){ @@ -905,6 +905,8 @@ public class LStatements{ table.add(" found ").left(); fields(table, outFound, str -> outFound = str); + table.add(" building ").left(); + fields(table, outBuild, str -> outBuild = str); } @@ -915,7 +917,7 @@ public class LStatements{ @Override public LInstruction build(LAssembler builder){ - return new UnitLocateI(locate, flag, builder.var(enemy), builder.var(ore), builder.var(outX), builder.var(outY), builder.var(outFound)); + return new UnitLocateI(locate, flag, builder.var(enemy), builder.var(ore), builder.var(outX), builder.var(outY), builder.var(outFound), builder.var(outBuild)); } } } diff --git a/core/src/mindustry/logic/LUnitControl.java b/core/src/mindustry/logic/LUnitControl.java index 2166b00690..b4c7f8254c 100644 --- a/core/src/mindustry/logic/LUnitControl.java +++ b/core/src/mindustry/logic/LUnitControl.java @@ -15,7 +15,7 @@ public enum LUnitControl{ mine("x", "y"), flag("value"), build("x", "y", "block", "rotation"), - getBlock("x", "y", "result", "resRot"), + getBlock("x", "y", "type", "building"), within("x", "y", "radius", "result"); public final String[] params; diff --git a/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java b/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java index 15716b4a94..25725cd0a9 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java @@ -37,6 +37,10 @@ public class LiquidTurret extends Turret{ super.setStats(); stats.add(Stat.ammo, new AmmoListValue<>(ammoTypes)); + } + + @Override + public void init(){ consumes.add(new ConsumeLiquidFilter(i -> ammoTypes.containsKey(i), 1f){ @Override public boolean valid(Building entity){ @@ -53,6 +57,8 @@ public class LiquidTurret extends Turret{ } }); + + super.init(); } public class LiquidTurretBuild extends TurretBuild{ diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 2361c429af..58abb26b12 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -24,7 +24,6 @@ import mindustry.type.*; import mindustry.world.blocks.*; import mindustry.world.consumers.*; import mindustry.world.meta.*; -import mindustry.world.meta.values.*; import static mindustry.Vars.*; @@ -60,7 +59,6 @@ public abstract class Turret extends ReloadTurret{ public boolean alternate = false; public boolean targetAir = true; public boolean targetGround = true; - public boolean acceptCoolant = true; public Sortf unitSort = Unit::dst2; @@ -105,10 +103,6 @@ public abstract class Turret extends ReloadTurret{ stats.add(Stat.reload, 60f / reloadTime * shots, StatUnit.none); stats.add(Stat.targetsAir, targetAir); stats.add(Stat.targetsGround, targetGround); - - if(acceptCoolant){ - stats.add(Stat.booster, new BoosterListValue(reloadTime, consumes.get(ConsumeType.liquid).amount, coolantMultiplier, true, l -> consumes.liquidfilters.get(l.id))); - } } @Override diff --git a/core/src/mindustry/world/blocks/logic/LogicBlock.java b/core/src/mindustry/world/blocks/logic/LogicBlock.java index e1b5c857e4..488c44604d 100644 --- a/core/src/mindustry/world/blocks/logic/LogicBlock.java +++ b/core/src/mindustry/world/blocks/logic/LogicBlock.java @@ -279,10 +279,13 @@ public class LogicBlock extends Block{ //store link objects executor.links = new Building[links.count(l -> l.valid && l.active)]; + executor.linkIds.clear(); int index = 0; for(LogicLink link : links){ if(link.active && link.valid){ - executor.links[index ++] = world.build(link.x, link.y); + Building build = world.build(link.x, link.y); + executor.links[index ++] = build; + if(build != null) executor.linkIds.add(build.id); } }