This commit is contained in:
Anuken
2020-10-20 14:02:10 -04:00
parent 82fe66b931
commit 30abfc0619
28 changed files with 53 additions and 19 deletions
+2
View File
@@ -0,0 +1,2 @@
mschxœ5Ë
! E¯Ïy-J·ý‡ù(q¤£Gú÷„ââä&'›„Î.<Zl.Çž®Vª{lG¸|ŸK4ÌíúÙðü{»/ùßR±ÅÒ~•^=ÝùäГkÑïGç àzRPm!&ÆÌX+ ÉÓ†4©¨²¼H}E“y$9’À˜’¢XQÜÔü‰æd8ZQŠ¡†acf,Œê˜ã"
+2
View File
@@ -0,0 +1,2 @@
mschxœ5A E¿JkêÊStã˜I
4”šx{¡ðòÿ¼ ¸vÐѽpq‘°—”Ý›^˜Ú}æ­pŠ€ÆÄ…¼§#{Âã¯Ï>Å}SÆm‹tWØÏKæuÅXGÅq¤ àY¬z\P?E½:ÅYŽ␍ªÍΤÅÔ¢h)(¦%UDK½”½(¶.©V0­N#Ô
+1
View File
@@ -0,0 +1 @@
mschxœ%ÍAƒ …á§€ÖZc\ô.z$ƒÓdƒÐ¤·/täƒ?“3†ÚoŽ`Þù¢Æ.ùL< ±$N›çìVü‡¾!b>=e·%¶ëù80r"·^!GKÐu€g9耦Ð×{S_@+±•¨$jÁÐWê\oJSÀMú Ü…±¢0ý?ÂCâTŠªhÁÔqW
+3
View File
@@ -0,0 +1,3 @@
mschxœ%Á
à ƒÓªmic×½C/{£bU‡ÕÁÞ~¦ÿA>“ˆ·:nÁÁ¼ëé^XvwÚì?ŧ<Š/[ô5¬6ůû¥Œû'º¶âíºgX|qa=SÍÖAsCNµ¸ àÙNÛA×0ðÞQ½˜=Mb‚¢9óMID‰Ò’ÔÑbQ§ÆÆAјٟZ¯}<ò™ê
sFŠ£†‘©U.Œ‚ÖüBIÙ
Binary file not shown.
+2
View File
@@ -0,0 +1,2 @@
mschx°%п[nц п ЬAв}╗Й"Ры␍t'▒C$╓ь▌┬]╘╩О Вц␍л cП┘яю.≈9бщЖgЭF╦фГ■сcKК8Xщф╦╔М╡╓}>OКРЪж ÷в}▀цc┴Ш|ырt╬Фt©#╓-нГГ╨Г)ЬД┐▒еd╘qPр▓▌r$╫b╓@Й*bые2r║ТtрЁRZр▒@▌╓W<╩x╘⌠ф^oWй╣5оj=+Sjт0Ёяq∙@й─╜╕Xа:ю≈█Rз╠╢⌠?╗■
,#G<╘ICZр▒@▌╓''%HЁРZ┘·°х@^ТеG<╘ICZми+y#ОДC>СrА
+2
View File
@@ -0,0 +1,2 @@
mschx%с AБњЃiптpяBЂ`лјюMЎЛ
!п0;060Щ/ћЛoфKР8бJ\kЬ шa|­T k~Sq)O-Щћh_|СM%Ю35VтОИг\№иђь[}ЂйБњ#БвтЖМ@0ђ-'hhХ0Нњџ@С W н@JаCi4bjлpД2gуНа_И]фЁEгБА-ЮK+ОўЗ.щ
+1
View File
@@ -0,0 +1 @@
mschxśMKnÄ D Ś1±ŁÉ̲ćPČ&#$ ¶ó9yv™tCYŔë_Ń%đŚ«„JnőŢÎÝo®Äč>1-~źKŘŽđ„i?ËÝŰ#řBIŽ®ŘÍ%q;ÂáR8W;çôîżrÁË–üąş#Ěv)!F\7ÖŮ”oIy÷¸ý{âŻ4…ĂŻvĎg™=!;®ú^é`4čEťä `¨–ő␍şah¨:I:!ę¬Ňu0hRFCĺÇ7†Ç˝¨:« TW0tá=÷z*] %wX éćH7Gşé4}mWWłŔ0¸3őÄ®§ćbŔČ6␍eňŔ>
+4
View File
@@ -0,0 +1,4 @@
mschxśEĎën‚@ŕĂĹ\EíŐôřŰ÷!şdͲ´éĂ:ĂiŇřqvfÇاȇöćP^¦Ń]|°g7žBwŹť
ąVp]l‡nş5'?|ą`»čnÍč§pr°};şĐśC×÷0ÁOŃěďţ[vM߆«Ś˝Ľ4÷vpýß‘'ˇ‰Ú*áżŕHäY~2dJNVÄ(©¦BµL¦­r ­ +bHˇčw-cKM™¤52e«ó*ţWĹ R!K˛L{XÝ# SAJR5±dC¶¤V6r]m`Ët~ĚóüťŚ´ÔHÁ覵Rv™ľÓX
2H©ÉNk{Ţ8'ňL^Č+y#ď
p”U%%%JAJ$żć?M
+2
View File
@@ -0,0 +1,2 @@
mschxœ-k
1 „ÇMÅîуôPÅ␍²PÛÒ®èÕEdM¬?’o2“Á€cý1e_BðÏš‚/g®—²äuI08åôàâbšÙI~eŒõ.p«ú°RöÚÆù×wÙGÿO`ÁÁîÑmȾadh{ÑN²Þ‚:õŒ‚Ä'Õ"IZ}ä°í²z}‰o)"
Binary file not shown.
+2
View File
@@ -0,0 +1,2 @@
mschxœ5Ïኃ0à1µµmjï9äàÞ(h~ÔHŒÂ½ýeÁufCÄn
Õj‡Ç¶ÍÅÝÎgøA7¹}Œ~K>¬@␍}ÚcNè“OvõÇ2Œa=ÝoˆÐ×Úcƒ\Dç“[†=qt0ÛêŽÅ&?Sôó à(Р(p=òR¤$Ñ‚’ôJ T&ge¦Öù âªJ¬IM¡Ê´Ò* ´ü~#÷”d÷|ÚEE4©I#t¹©„Fxpzpzʤ3% hù¹'³/™4 ol¸`¸`¸`¸ðæÂ›SÏfÏfÏfÏìÃæG¦?J␍(,
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
mschxœ-Œ[ƒ DJ¬JŸ aQ¤’ÆÄMÓµ÷£½~¹g&—3—åíÓ1å°ÚdS²oôìò=-q[‚‡Ž[íL´Þ­FÒÃqáå’ñav£ó.0[ñÀ␍š”äŠSA/ÿ¤é‡†îû‘éciFÑdPD­~Ã+ï
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
mschxœ%Ž[jÄ0 EoœØ“©K¡]†e2¢58Ö ;SºûJI">¶–OÂ}ü°ô\_Œø ~HyŽÂ␍¸!öK¾)␍þ%QÁ5KzæF±æN’RªŠ2èL/9Ÿ£ŒÜÊu¦ƒÛ‹þX„¯¡ü¼|iÀíX˜9u+8¬–¬ØpózÝà­Áà&Ö‰mÂOh!¼>àt^m1ì÷‰·‰ˆ%(ÞMí6´A—ýÖe)“
+3
View File
@@ -0,0 +1,3 @@
mschxœMIRÃ0E¿åÙJâk.àcp—£
*<aK¡85;lB·: Råzý{øRZxÂA!™ºÑ ÚœéÆeþ4+ôÙlýjgç ØAo~½˜Ö…b=šþ­›lß␍íâÇûÅ›iûy:{ëÐlóЭíÒMfh)ºƒm;ÍgsÏèÁ~x{n]7½£êýàìµsóŠý½°ÎÞÑa³ÔbýÈöWóõ¯c›ýÚd÷Î:Ü¿½˜É¬Á x¥e¡n7h¼ Œ"DœRALAJ*Ir Fc®ÆR¹Jˤ‚Œ‘’KŪ@”JD9[#œ@¾ŒX@As­
žã8ÔJ®q*¨ŠUIP)ÝŠò•äµti¾/ƒŽaRP 4bEv< °µuuU‹ªEEE5¢^NE ­±J³ÊDåüoj£_ƒ½Ãïí›Þâ™ Ø@h±ŒD èú ¡*¢Û␍(<Ê¢Nüp9!¬ôÄ+e•ˆJEe¢rQ´Ù?Ç]­
Binary file not shown.
+1 -1
View File
@@ -1652,7 +1652,7 @@ public class Blocks implements ContentList{
}},
Items.titanium, new ShrapnelBulletType(){{
length = brange;
damage = 65f;
damage = 66f;
ammoMultiplier = 4f;
width = 17f;
reloadMultiplier = 1.3f;
@@ -911,7 +911,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
/** Called when arbitrary configuration is applied to a tile. */
public void configured(@Nullable Unit builder, @Nullable Object value){
//null is of type void.class; anonymous classes use their superclass.
Class<?> 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;
+10 -7
View File
@@ -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)));
+4 -2
View File
@@ -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));
}
}
}
+1 -1
View File
@@ -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;
@@ -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{
@@ -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.<ConsumeLiquidBase>get(ConsumeType.liquid).amount, coolantMultiplier, true, l -> consumes.liquidfilters.get(l.id)));
}
}
@Override
@@ -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);
}
}