Merge branch 'master' of https://github.com/Anuken/Mindustry into v105

This commit is contained in:
Petr Gašparík
2020-06-07 23:56:42 +02:00
262 changed files with 9460 additions and 7181 deletions

View File

@@ -2,7 +2,7 @@
name: Bug report name: Bug report
about: Create a report to help fix an issue. about: Create a report to help fix an issue.
title: '' title: ''
labels: '' labels: bug
assignees: '' assignees: ''
--- ---

8
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Feature request
url: https://github.com/Anuken/Mindustry-Suggestions/issues/new/choose
about: Do not make a new issue for feature requests! Instead, post it in suggestions repository.
- name: Question
url: https://discord.com/invite/mindustry
about: Questions about the game should be asked in the Discord, not in the issue tracker.

View File

@@ -1,11 +0,0 @@
---
name: Feature request
about: Do not make a new issue for feature requests! Instead, post in the suggestions
repository. See the README.
title: ''
labels: invalid
assignees: ''
---
**Do not make a new issue for feature requests!** Instead, post it in suggestions repository: https://github.com/Anuken/Mindustry-Suggestions/issues/new/choose

7
.gitignore vendored
View File

@@ -10,6 +10,7 @@ logs/
/desktop/mindustry-saves/ /desktop/mindustry-saves/
/desktop/mindustry-maps/ /desktop/mindustry-maps/
/desktop/gifexport/ /desktop/gifexport/
/gifs/
/core/lib/ /core/lib/
/ios/assets/ /ios/assets/
/core/assets-raw/sprites/generated/ /core/assets-raw/sprites/generated/
@@ -28,7 +29,6 @@ core/assets/saves/
/core/assets/saves/ /core/assets/saves/
steam_appid.txt steam_appid.txt
/test_files/ /test_files/
/annotations/build/
/android/assets/mindustry-maps/ /android/assets/mindustry-maps/
/android/assets/mindustry-saves/ /android/assets/mindustry-saves/
/core/assets/gifexport/ /core/assets/gifexport/
@@ -40,12 +40,9 @@ steam_appid.txt
ios/robovm.properties ios/robovm.properties
packr-out/ packr-out/
config/ config/
changelog
*.gif *.gif
/core/assets/saves/
/out/
/core/assets-raw/fontgen/out/
/core/assets/basepartnames
version.properties version.properties
.attach_* .attach_*

View File

@@ -4,7 +4,7 @@ dist: xenial
android: android:
components: components:
- android-29 - android-29
- build-tools-29.0.2 - build-tools-29.0.3
script: script:
- git clone --depth=1 --branch=master https://github.com/Anuken/MindustryBuilds ../MindustryBuilds - git clone --depth=1 --branch=master https://github.com/Anuken/MindustryBuilds ../MindustryBuilds

View File

@@ -31,7 +31,7 @@ This means:
Import [this style file](.github/Mindustry-CodeStyle-IJ.xml) into IntelliJ to get correct formatting when developing Mindustry. Import [this style file](.github/Mindustry-CodeStyle-IJ.xml) into IntelliJ to get correct formatting when developing Mindustry.
#### Do not use incompatible Java features (java.util.function, java.awt). #### Do not use incompatible Java features (java.util.function, java.awt).
Android [does not support](https://developer.android.com/studio/write/java8-support#supported_features) many of Java 8's features, such as the packages `java.util.function`, `java.util.stream` or `forEach` in collections. Do not use these in your code. Android and RoboVM (iOS) do not support many of Java 8's features, such as the packages `java.util.function`, `java.util.stream` or `forEach` in collections. Do not use these in your code.
If you need to use functional interfaces, use the ones in `arc.func`, which are more or less the same with different naming schemes. If you need to use functional interfaces, use the ones in `arc.func`, which are more or less the same with different naming schemes.
The same applies to any class *outside* of the standard `java.[n]io` / `java.net` / `java.util` packages: Most of them are not supported. The same applies to any class *outside* of the standard `java.[n]io` / `java.net` / `java.util` packages: Most of them are not supported.

View File

@@ -8,6 +8,8 @@ buildscript{
} }
dependencies{ dependencies{
//IMPORTANT NOTICE: any version of the plugin after 3.4.1 will break builds for every API level < 24, perhaps even higher.
//it appears abstract methods don't get desugared properly (if at all)
classpath 'com.android.tools.build:gradle:3.4.1' classpath 'com.android.tools.build:gradle:3.4.1'
} }
} }

View File

@@ -1,6 +1,7 @@
package mindustry.android; package mindustry.android;
import android.*; import android.*;
import android.annotation.*;
import android.app.*; import android.app.*;
import android.content.*; import android.content.*;
import android.content.pm.*; import android.content.pm.*;

View File

@@ -196,14 +196,14 @@ public class EntityProcess extends BaseProcessor{
//skip double classes //skip double classes
if(usedNames.containsKey(name)){ if(usedNames.containsKey(name)){
extraNames.getOr(usedNames.get(name), ObjectSet::new).add(type.name()); extraNames.get(usedNames.get(name), ObjectSet::new).add(type.name());
continue; continue;
} }
usedNames.put(name, type); usedNames.put(name, type);
extraNames.getOr(type, ObjectSet::new).add(name); extraNames.get(type, ObjectSet::new).add(name);
if(!type.isType()){ if(!type.isType()){
extraNames.getOr(type, ObjectSet::new).add(type.name()); extraNames.get(type, ObjectSet::new).add(type.name());
} }
TypeSpec.Builder builder = TypeSpec.classBuilder(name).addModifiers(Modifier.PUBLIC); TypeSpec.Builder builder = TypeSpec.classBuilder(name).addModifiers(Modifier.PUBLIC);
@@ -222,6 +222,8 @@ public class EntityProcess extends BaseProcessor{
Array<Svar> syncedFields = new Array<>(); Array<Svar> syncedFields = new Array<>();
Array<Svar> allFields = new Array<>(); Array<Svar> allFields = new Array<>();
boolean isSync = components.contains(s -> s.name().contains("Sync"));
//add all components //add all components
for(Stype comp : components){ for(Stype comp : components){
@@ -257,7 +259,7 @@ public class EntityProcess extends BaseProcessor{
allFields.add(f); allFields.add(f);
//add extra sync fields //add extra sync fields
if(f.has(SyncField.class)){ if(f.has(SyncField.class) && isSync){
if(!f.tname().toString().equals("float")) err("All SyncFields must be of type float", f); if(!f.tname().toString().equals("float")) err("All SyncFields must be of type float", f);
syncedFields.add(f); syncedFields.add(f);
@@ -277,7 +279,7 @@ public class EntityProcess extends BaseProcessor{
//get all utility methods from components //get all utility methods from components
for(Smethod elem : comp.methods()){ for(Smethod elem : comp.methods()){
methods.getOr(elem.toString(), Array::new).add(elem); methods.get(elem.toString(), Array::new).add(elem);
} }
} }
@@ -552,8 +554,8 @@ public class EntityProcess extends BaseProcessor{
idStore.addStatement("idMap[$L] = $L::new", def.classID, def.name); idStore.addStatement("idMap[$L] = $L::new", def.classID, def.name);
extraNames.get(def.base).each(extra -> { extraNames.get(def.base).each(extra -> {
idStore.addStatement("nameMap.put($S, $L::new)", extra, def.name); idStore.addStatement("nameMap.put($S, $L::new)", extra, def.name);
if(!camelToKebab(extra).equals(extra)){ if(!Strings.camelToKebab(extra).equals(extra)){
idStore.addStatement("nameMap.put($S, $L::new)", camelToKebab(extra), def.name); idStore.addStatement("nameMap.put($S, $L::new)", Strings.camelToKebab(extra), def.name);
} }
}); });
@@ -749,22 +751,6 @@ public class EntityProcess extends BaseProcessor{
return comps.toString("", s -> s.name().replace("Comp", "")) + "Entity"; return comps.toString("", s -> s.name().replace("Comp", "")) + "Entity";
} }
static String camelToKebab(String s){
StringBuilder result = new StringBuilder(s.length() + 1);
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if(i > 0 && Character.isUpperCase(s.charAt(i))){
result.append('-');
}
result.append(Character.toLowerCase(c));
}
return result.toString();
}
boolean isComponent(Stype type){ boolean isComponent(Stype type){
return type.annotation(Component.class) != null; return type.annotation(Component.class) != null;
} }

View File

@@ -30,7 +30,7 @@ public class LoadRegionProcessor extends BaseProcessor{
err("@LoadRegion field must be public", field); err("@LoadRegion field must be public", field);
} }
fieldMap.getOr(field.enclosingType(), Array::new).add(field); fieldMap.get(field.enclosingType(), Array::new).add(field);
} }
for(Entry<Stype, Array<Svar>> entry : fieldMap){ for(Entry<Stype, Array<Svar>> entry : fieldMap){

View File

@@ -12,9 +12,11 @@ mindustry.entities.comp.PlayerComp=8
mindustry.entities.comp.PuddleComp=9 mindustry.entities.comp.PuddleComp=9
mindustry.entities.comp.TileComp=10 mindustry.entities.comp.TileComp=10
mindustry.type.Weather.WeatherComp=11 mindustry.type.Weather.WeatherComp=11
mindustry.world.blocks.storage.LaunchPad.LaunchPayloadComp=12 mindustry.world.blocks.campaign.CoreLauncher.LaunchCoreComp=20
mindustry.world.blocks.campaign.LaunchPad.LaunchPayloadComp=12
oculon=13 oculon=13
phantom=14 phantom=14
tau=19
titan=15 titan=15
trident=18 trident=18
vanguard=16 vanguard=16

View File

@@ -0,0 +1 @@
{fields:[{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:requests,type:arc.struct.Queue<mindustry.entities.units.BuildRequest>,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Array<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}

View File

@@ -0,0 +1 @@
{fields:[{name:lifetime,type:float,size:4},{name:team,type:mindustry.game.Team,size:-1},{name:time,type:float,size:4},{name:x,type:float,size:4},{name:y,type:float,size:4}]}

View File

@@ -0,0 +1 @@
{version:1,fields:[{name:block,type:mindustry.world.Block,size:-1},{name:lifetime,type:float,size:4},{name:team,type:mindustry.game.Team,size:-1},{name:time,type:float,size:4},{name:x,type:float,size:4},{name:y,type:float,size:4}]}

View File

@@ -0,0 +1 @@
{version:2,fields:[{name:block,type:mindustry.world.Block,size:-1},{name:lifetime,type:float,size:4},{name:time,type:float,size:4},{name:x,type:float,size:4},{name:y,type:float,size:4}]}

View File

@@ -0,0 +1 @@
{fields:[{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Array<mindustry.entities.units.StatusEntry>,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]}

View File

@@ -106,6 +106,7 @@ allprojects{
output += other.name.substring("bundle".length() + 1, other.name.lastIndexOf('.')) + "\n" output += other.name.substring("bundle".length() + 1, other.name.lastIndexOf('.')) + "\n"
} }
new File(project(':core').projectDir, 'assets/locales').text = output new File(project(':core').projectDir, 'assets/locales').text = output
new File(project(':core').projectDir, 'assets/basepartnames').text = new File(project(':core').projectDir, 'assets/baseparts/').list().join("\n")
} }
writeVersion = { writeVersion = {

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 186 B

After

Width:  |  Height:  |  Size: 186 B

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 516 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1000 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 720 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 474 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 339 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 965 B

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 226 B

After

Width:  |  Height:  |  Size: 347 B

View File

Before

Width:  |  Height:  |  Size: 779 B

After

Width:  |  Height:  |  Size: 779 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 713 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 701 B

After

Width:  |  Height:  |  Size: 693 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 678 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 418 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 640 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 375 B

After

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 662 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 641 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 408 B

After

Width:  |  Height:  |  Size: 660 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

View File

Before

Width:  |  Height:  |  Size: 230 B

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 B

After

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 820 B

After

Width:  |  Height:  |  Size: 950 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 B

After

Width:  |  Height:  |  Size: 467 B

View File

@@ -0,0 +1,2 @@
mschxœ-ŒÑ
à E¯U»BÊ>ć}³aZÕ<E280B9>ýýv ¹9¹$Á„›‚Ù|&¨Çˆ{(ûNÕ}|J.ùú"èµ̱QvGé5}£ž}Á­5¦„y<E2809E>G«ñÙ[©˜BÙÞôe. <C3AA>SIÓPÂÆŠ¯™þÀaΙ

View File

@@ -0,0 +1,2 @@
mschxś%LŃ
Ă <*…AÇ>ħ}kC+ŘV˘˛ßźYIrwÜ%Á„É`<ĂÁ0o‡×rĺĚâż!%źlŚq+ľ\MĆ3źÜŽPăâW‰©§k,Uâ§ŐK0oňŢ÷}.ŔÜ<07>ąače”Fµµ€%ęĘuKAwB*ţ™˝?X=V"5ť~˙[ë

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,2 @@
mschxś%Ś]<0E> „GD4ńˇ>ôjĹŤ5A0@Űxů¶KÍţfgö<67><C3B6>i íŚ~ÉTs@KÉaÚŮ=(lŽĽ]Ňć=ú™JátbĚŃS˛ö\ />cÂtÄ7'âÂVô•qwqźźąl1Ř•'*â·Â»Íń™¸IAA52Z4
uQ˛I´şÚ%şú~ÄjęţZ <0B>zz]'fačˇ/†ľřúňU<C588>ú\ą,Ä

View File

@@ -0,0 +1,2 @@
mschŠA
!Û…À^rÈ7|”q‡]A•|?cº(hƒï©1üexœcéÍqÊ<71>Ÿ,í»Æ,ÒãÍ<C3A3>5MQ¼ç'õS<E28099>ZqÉ-@Àæ:L´Ëí"o—@ƒ4'

View File

@@ -0,0 +1,2 @@
mschxœE<C593><45>
ƒ0 „¯¦þÀ`{Ž>T¦A µ–*Œ½ûÀõg°@øÂå.<2E>Æ  =on)Õãv쎣 ìÅA¯lºMü,ý“ÏSâã&ÓÊÞNìÌ­s¸/ÃjO1!Êq` ûK¢ñû,&<26>[ÀÿR Œ¤(O€®»6 EÖ * ?»Ê».¡šëº>hRSÉ-êTQBTP5PýAÙù–Ø(¢

View File

@@ -0,0 +1 @@
mschxœ-Ïknƒ0à±<C3A0>]Ò$mZ”ªgàP!’Á/©·ï.S~ðY »;Æ ßÅ>>ãü ¸üŒÝ:Ä¥oÇÔ§„²ÍãÖýæ ~ŽiË(×1åøè&TýÒ

View File

@@ -0,0 +1 @@
mschx<>M־a0 אַLDB׀sp¨)ֵ<>ְF&‰סלˆ³sׁר£i³ץֻ+NP ₪ׁAך¾ןsה£6rhnvװ®<D7B0>µ¡±ויJPg½,ה88<38>ץְ<D7A5>v0 צ³½“k<E2809C>םשD¦c

View File

@@ -0,0 +1,2 @@
mschxœ%ŒA
Ã0 'VKÝB ~ˆeãKjçÐÇ—J HbwV,<2C>0p«é<C2AB>y”´/%ARŸymí“{¬mÉ„½­©Ç-Õ¼FU%O]<n@ðÞq‡ãâzez°Tµ¦\¹˜Í_er¾Mö6ZÉÏ™¬ûÐâe

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
mschxœ%ŠQƒ0 C]RÐÄ>v>9Ê"µˆ¶S(HÜ~)X±_dƒƒÏKŒa•YëD­Ý¹(¼¸äS®¢øü²§¯ÆmÃ;VIÓ^es-@

View File

@@ -0,0 +1,3 @@
mschxœ=Љnƒ0 `çpKK·Òco±>TшÄ!¨Ô·¯<C2B7>_*øc'Á´£C~
c¤Csˆ¹ÿLU;OÏøš35clû0¥6 <0C>.§a ×m3Õ]ZÖœþ¶Urê´Æñ±Ì[n#ýRy ^ ðŸ¸b1ñ ÒCp58<35>
ÎØßƒJ·³´2nd”;#g—ýÎs(p(pZàdÜôËË0

View File

@@ -0,0 +1 @@
mschxœ=Ž]ƒ „Gå§IoÑ7e”¨I•†jMo_—IÊ3;» nôÖ¯vžòyæi6°CÚ>ñ2î¯-k¿/C7æåùDXö¸vïtä!B<>GB“ à<>r*^ý÷5š¹RS´kJÌú3%rÉ6\b8Ìp‰á#…F”¾ Q‰,Z¶[F¬˜G‰8iÐ UC´„eÍÉ?<U<>vÏažÃ¼˜?·ì1

View File

@@ -0,0 +1,2 @@
mschxś%ŚA<0E>0 7lh
ŠD6%Eüľ öÁcÉŁ<C389>ĹĂŔĆ%žŰëüČvZp- <09>Kń'WĘý!aţ¦ť`zG)a9Ľ×ě÷Ŕ„{hę2ŠNA…Uô`WÓ7ŹőŞVC}7ő.P Ôµ@-°ţµf

Binary file not shown.

Binary file not shown.

View File

@@ -14,9 +14,8 @@ uniform float OriginalIntensity;
varying MED vec2 v_texCoords; varying MED vec2 v_texCoords;
void main(){ void main(){
vec4 original = texture2D(u_texture0, v_texCoords) * OriginalIntensity;
vec3 original = texture2D(u_texture0, v_texCoords).rgb; vec4 bloom = texture2D(u_texture1, v_texCoords) * BloomIntensity;
vec3 bloom = texture2D(u_texture1, v_texCoords).rgb * BloomIntensity; original = original * (vec4(1.0) - bloom);
original = OriginalIntensity * (original - original * bloom); gl_FragColor = original + bloom;
gl_FragColor.rgb = original + bloom;
} }

View File

@@ -496,7 +496,6 @@ error.bloom = Failed to initialize bloom.\nYour device may not support it.
#NOTE TO TRANSLATORS: don't bother editing these, they'll be removed and/or rewritten anyway #NOTE TO TRANSLATORS: don't bother editing these, they'll be removed and/or rewritten anyway
sector.groundZero.name = Ground Zero sector.groundZero.name = Ground Zero
sector.desertWastes.name = Desert Wastes
sector.craters.name = The Craters sector.craters.name = The Craters
sector.frozenForest.name = Frozen Forest sector.frozenForest.name = Frozen Forest
sector.ruinousShores.name = Ruinous Shores sector.ruinousShores.name = Ruinous Shores
@@ -514,7 +513,6 @@ sector.fungalPass.name = Fungal Pass
sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on.
sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders.
sector.desertWastes.description = These wastes are vast, unpredictable, and criss-crossed with derelict sector structures.\nCoal is present in the region. Burn it for power, or synthesize graphite.\n\n[lightgray]This landing location cannot be guaranteed.
sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing.
sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills.
sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology.
@@ -540,6 +538,7 @@ settings.clearall.confirm = [scarlet]WARNING![]\nThis will clear all data, inclu
paused = [accent]< Paused > paused = [accent]< Paused >
clear = Clear clear = Clear
banned = [scarlet]Banned banned = [scarlet]Banned
unplaceable.sectorcaptured = [scarlet]Requires captured sector
yes = Yes yes = Yes
no = No no = No
info.title = Info info.title = Info
@@ -785,8 +784,6 @@ rules.unitdrops = Unit Drops
rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier rules.unithealthmultiplier = Unit Health Multiplier
rules.blockhealthmultiplier = Block Health Multiplier rules.blockhealthmultiplier = Block Health Multiplier
rules.playerhealthmultiplier = Player Health Multiplier
rules.playerdamagemultiplier = Player Damage Multiplier
rules.unitdamagemultiplier = Unit Damage Multiplier rules.unitdamagemultiplier = Unit Damage Multiplier
rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles)
rules.wavespacing = Wave Spacing:[lightgray] (sec) rules.wavespacing = Wave Spacing:[lightgray] (sec)
@@ -796,12 +793,11 @@ rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
rules.waitForWaveToEnd = Waves Wait for Enemies rules.waitForWaveToEnd = Waves Wait for Enemies
rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles) rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles)
rules.title.waves = Waves rules.title.waves = Waves
rules.title.respawns = Respawns
rules.title.resourcesbuilding = Resources & Building rules.title.resourcesbuilding = Resources & Building
rules.title.player = Players
rules.title.enemy = Enemies rules.title.enemy = Enemies
rules.title.unit = Units rules.title.unit = Units
rules.title.experimental = Experimental rules.title.experimental = Experimental
rules.title.environment = Environment
rules.lighting = Lighting rules.lighting = Lighting
rules.ambientlight = Ambient Light rules.ambientlight = Ambient Light
rules.solarpowermultiplier = Solar Power Multiplier rules.solarpowermultiplier = Solar Power Multiplier

View File

@@ -88,3 +88,4 @@ Alicila
Daniel Dusek Daniel Dusek
DeltaNedas DeltaNedas
GioIacca9 GioIacca9
SnakkiZXZ

View File

@@ -235,3 +235,10 @@
63509=basic-reconstructor|block-basic-reconstructor-medium 63509=basic-reconstructor|block-basic-reconstructor-medium
63508=block-loader|block-block-loader-medium 63508=block-loader|block-block-loader-medium
63507=block-unloader|block-block-unloader-medium 63507=block-unloader|block-block-unloader-medium
63506=core-silo|block-core-silo-medium
63505=data-processor|block-data-processor-medium
63504=payload-router|block-payload-router-medium
63503=silicon-crucible|block-silicon-crucible-medium
63502=segment|block-segment-medium
63501=large-overdrive-projector|block-large-overdrive-projector-medium
63500=disassembler|block-disassembler-medium

Binary file not shown.

View File

@@ -24,70 +24,72 @@ const extend = function(classType, params){
const newEffect = (lifetime, renderer) => new Effects.Effect(lifetime, new Effects.EffectRenderer({render: renderer})) const newEffect = (lifetime, renderer) => new Effects.Effect(lifetime, new Effects.EffectRenderer({render: renderer}))
Call = Packages.mindustry.gen.Call Call = Packages.mindustry.gen.Call
importPackage(Packages.mindustry.game) importPackage(Packages.mindustry.graphics.g3d)
importPackage(Packages.arc.func) importPackage(Packages.mindustry.ctype)
importPackage(Packages.mindustry.entities)
importPackage(Packages.mindustry.gen) importPackage(Packages.mindustry.gen)
importPackage(Packages.mindustry.core)
importPackage(Packages.mindustry.world.blocks.storage)
importPackage(Packages.mindustry.ui.dialogs)
importPackage(Packages.arc.scene.ui)
importPackage(Packages.mindustry.world.blocks.defense.turrets)
importPackage(Packages.mindustry.world.blocks.distribution)
importPackage(Packages.mindustry.ui)
importPackage(Packages.mindustry.content)
importPackage(Packages.mindustry.world.blocks.liquid)
importPackage(Packages.arc.struct)
importPackage(Packages.arc.scene.ui.layout)
importPackage(Packages.mindustry.world.modules)
importPackage(Packages.arc.util)
importPackage(Packages.arc.graphics)
importPackage(Packages.mindustry.entities.def)
importPackage(Packages.mindustry.maps.generators)
importPackage(Packages.arc.scene.actions) importPackage(Packages.arc.scene.actions)
importPackage(Packages.mindustry.graphics)
importPackage(Packages.mindustry.entities.bullet)
importPackage(Packages.mindustry.world.blocks.legacy)
importPackage(Packages.mindustry.world.blocks.experimental)
importPackage(Packages.mindustry.editor) importPackage(Packages.mindustry.editor)
importPackage(Packages.mindustry.type)
importPackage(Packages.arc.scene.ui)
importPackage(Packages.arc.math.geom)
importPackage(Packages.mindustry.game)
importPackage(Packages.mindustry.maps.filters)
importPackage(Packages.arc.struct)
importPackage(Packages.arc.scene.style)
importPackage(Packages.mindustry.ui.dialogs)
importPackage(Packages.mindustry.entities.comp)
importPackage(Packages.mindustry.world.blocks.defense.turrets)
importPackage(Packages.mindustry.async)
importPackage(Packages.mindustry.world.blocks.distribution)
importPackage(Packages.mindustry.world.blocks.environment)
importPackage(Packages.mindustry.world.blocks.campaign)
importPackage(Packages.mindustry.world.blocks.liquid)
importPackage(Packages.mindustry.ui)
importPackage(Packages.mindustry.world.blocks.production)
importPackage(Packages.mindustry.ai)
importPackage(Packages.mindustry.world.blocks.defense)
importPackage(Packages.mindustry.world.meta)
importPackage(Packages.mindustry.world.blocks.legacy)
importPackage(Packages.mindustry.world.blocks.units)
importPackage(Packages.arc.graphics)
importPackage(Packages.arc.func)
importPackage(Packages.mindustry.content)
importPackage(Packages.mindustry.world.blocks.power) importPackage(Packages.mindustry.world.blocks.power)
importPackage(Packages.mindustry.ui.layout) importPackage(Packages.mindustry.world.blocks)
importPackage(Packages.arc.scene.event)
importPackage(Packages.mindustry.logic)
importPackage(Packages.arc.math)
importPackage(Packages.mindustry.world)
importPackage(Packages.mindustry.maps)
importPackage(Packages.mindustry.maps.generators)
importPackage(Packages.mindustry.world.meta.values)
importPackage(Packages.mindustry.entities)
importPackage(Packages.arc.util)
importPackage(Packages.mindustry.graphics)
importPackage(Packages.mindustry.world.modules)
importPackage(Packages.mindustry.world.blocks.sandbox) importPackage(Packages.mindustry.world.blocks.sandbox)
importPackage(Packages.mindustry.input) importPackage(Packages.mindustry.input)
importPackage(Packages.mindustry.world.consumers)
importPackage(Packages.mindustry.ui.fragments)
importPackage(Packages.mindustry.ai.formations)
importPackage(Packages.mindustry.type)
importPackage(Packages.mindustry.world.blocks.production)
importPackage(Packages.arc.scene.event)
importPackage(Packages.arc.math)
importPackage(Packages.arc.scene.utils)
importPackage(Packages.mindustry.world.blocks.defense)
importPackage(Packages.mindustry.graphics.g3d)
importPackage(Packages.mindustry.world.meta)
importPackage(Packages.mindustry.world.blocks.payloads)
importPackage(Packages.mindustry.world)
importPackage(Packages.mindustry.async)
importPackage(Packages.arc.scene.style)
importPackage(Packages.mindustry.world.blocks)
importPackage(Packages.arc.math.geom)
importPackage(Packages.mindustry.ai)
importPackage(Packages.mindustry.maps.filters)
importPackage(Packages.arc.graphics.g2d)
importPackage(Packages.mindustry.ai.formations.patterns)
importPackage(Packages.mindustry.world.blocks.environment)
importPackage(Packages.mindustry)
importPackage(Packages.mindustry.entities.units) importPackage(Packages.mindustry.entities.units)
importPackage(Packages.mindustry.ctype) importPackage(Packages.arc.scene.ui.layout)
importPackage(Packages.mindustry.ai.types) importPackage(Packages.mindustry.ai.types)
importPackage(Packages.mindustry.maps) importPackage(Packages.mindustry.ai.formations.patterns)
importPackage(Packages.mindustry.world.meta.values) importPackage(Packages.arc.scene.utils)
importPackage(Packages.mindustry.world.producers) importPackage(Packages.mindustry.ai.formations)
importPackage(Packages.mindustry.world.blocks.units) importPackage(Packages.mindustry.ui.fragments)
importPackage(Packages.mindustry.world.blocks.experimental)
importPackage(Packages.mindustry.world.blocks.storage)
importPackage(Packages.mindustry.audio)
importPackage(Packages.mindustry.ui.layout)
importPackage(Packages.mindustry.entities.bullet)
importPackage(Packages.mindustry.world.consumers)
importPackage(Packages.mindustry.core)
importPackage(Packages.arc.scene) importPackage(Packages.arc.scene)
importPackage(Packages.mindustry.maps.planet) importPackage(Packages.mindustry)
importPackage(Packages.arc) importPackage(Packages.arc)
importPackage(Packages.mindustry.world.blocks.logic) importPackage(Packages.mindustry.world.blocks.payloads)
importPackage(Packages.mindustry.world.producers)
importPackage(Packages.arc.graphics.g2d)
importPackage(Packages.mindustry.maps.planet)
const PlayerIpUnbanEvent = Packages.mindustry.game.EventType.PlayerIpUnbanEvent const PlayerIpUnbanEvent = Packages.mindustry.game.EventType.PlayerIpUnbanEvent
const PlayerIpBanEvent = Packages.mindustry.game.EventType.PlayerIpBanEvent const PlayerIpBanEvent = Packages.mindustry.game.EventType.PlayerIpBanEvent
const PlayerUnbanEvent = Packages.mindustry.game.EventType.PlayerUnbanEvent const PlayerUnbanEvent = Packages.mindustry.game.EventType.PlayerUnbanEvent
@@ -95,8 +97,7 @@ const PlayerBanEvent = Packages.mindustry.game.EventType.PlayerBanEvent
const PlayerLeave = Packages.mindustry.game.EventType.PlayerLeave const PlayerLeave = Packages.mindustry.game.EventType.PlayerLeave
const PlayerConnect = Packages.mindustry.game.EventType.PlayerConnect const PlayerConnect = Packages.mindustry.game.EventType.PlayerConnect
const PlayerJoin = Packages.mindustry.game.EventType.PlayerJoin const PlayerJoin = Packages.mindustry.game.EventType.PlayerJoin
const MechChangeEvent = Packages.mindustry.game.EventType.MechChangeEvent const UnitChangeEvent = Packages.mindustry.game.EventType.UnitChangeEvent
const ResizeEvent = Packages.mindustry.game.EventType.ResizeEvent
const UnitCreateEvent = Packages.mindustry.game.EventType.UnitCreateEvent const UnitCreateEvent = Packages.mindustry.game.EventType.UnitCreateEvent
const UnitDestroyEvent = Packages.mindustry.game.EventType.UnitDestroyEvent const UnitDestroyEvent = Packages.mindustry.game.EventType.UnitDestroyEvent
const BlockDestroyEvent = Packages.mindustry.game.EventType.BlockDestroyEvent const BlockDestroyEvent = Packages.mindustry.game.EventType.BlockDestroyEvent
@@ -107,12 +108,19 @@ const ResearchEvent = Packages.mindustry.game.EventType.ResearchEvent
const UnlockEvent = Packages.mindustry.game.EventType.UnlockEvent const UnlockEvent = Packages.mindustry.game.EventType.UnlockEvent
const StateChangeEvent = Packages.mindustry.game.EventType.StateChangeEvent const StateChangeEvent = Packages.mindustry.game.EventType.StateChangeEvent
const TileChangeEvent = Packages.mindustry.game.EventType.TileChangeEvent const TileChangeEvent = Packages.mindustry.game.EventType.TileChangeEvent
const WorldLoadEvent = Packages.mindustry.game.EventType.WorldLoadEvent
const GameOverEvent = Packages.mindustry.game.EventType.GameOverEvent const GameOverEvent = Packages.mindustry.game.EventType.GameOverEvent
const TapConfigEvent = Packages.mindustry.game.EventType.TapConfigEvent const TapConfigEvent = Packages.mindustry.game.EventType.TapConfigEvent
const TapEvent = Packages.mindustry.game.EventType.TapEvent const TapEvent = Packages.mindustry.game.EventType.TapEvent
const DepositEvent = Packages.mindustry.game.EventType.DepositEvent const DepositEvent = Packages.mindustry.game.EventType.DepositEvent
const WithdrawEvent = Packages.mindustry.game.EventType.WithdrawEvent const WithdrawEvent = Packages.mindustry.game.EventType.WithdrawEvent
const SectorCaptureEvent = Packages.mindustry.game.EventType.SectorCaptureEvent
const ZoneConfigureCompleteEvent = Packages.mindustry.game.EventType.ZoneConfigureCompleteEvent
const ZoneRequireCompleteEvent = Packages.mindustry.game.EventType.ZoneRequireCompleteEvent
const PlayerChatEvent = Packages.mindustry.game.EventType.PlayerChatEvent
const CommandIssueEvent = Packages.mindustry.game.EventType.CommandIssueEvent
const LaunchItemEvent = Packages.mindustry.game.EventType.LaunchItemEvent
const WorldLoadEvent = Packages.mindustry.game.EventType.WorldLoadEvent
const ClientLoadEvent = Packages.mindustry.game.EventType.ClientLoadEvent
const BlockInfoEvent = Packages.mindustry.game.EventType.BlockInfoEvent const BlockInfoEvent = Packages.mindustry.game.EventType.BlockInfoEvent
const CoreItemDeliverEvent = Packages.mindustry.game.EventType.CoreItemDeliverEvent const CoreItemDeliverEvent = Packages.mindustry.game.EventType.CoreItemDeliverEvent
const TurretAmmoDeliverEvent = Packages.mindustry.game.EventType.TurretAmmoDeliverEvent const TurretAmmoDeliverEvent = Packages.mindustry.game.EventType.TurretAmmoDeliverEvent
@@ -123,17 +131,13 @@ const PlayEvent = Packages.mindustry.game.EventType.PlayEvent
const DisposeEvent = Packages.mindustry.game.EventType.DisposeEvent const DisposeEvent = Packages.mindustry.game.EventType.DisposeEvent
const ContentReloadEvent = Packages.mindustry.game.EventType.ContentReloadEvent const ContentReloadEvent = Packages.mindustry.game.EventType.ContentReloadEvent
const ServerLoadEvent = Packages.mindustry.game.EventType.ServerLoadEvent const ServerLoadEvent = Packages.mindustry.game.EventType.ServerLoadEvent
const ClientLoadEvent = Packages.mindustry.game.EventType.ClientLoadEvent
const ClientCreateEvent = Packages.mindustry.game.EventType.ClientCreateEvent const ClientCreateEvent = Packages.mindustry.game.EventType.ClientCreateEvent
const SaveLoadEvent = Packages.mindustry.game.EventType.SaveLoadEvent const SaveLoadEvent = Packages.mindustry.game.EventType.SaveLoadEvent
const ZoneConfigureCompleteEvent = Packages.mindustry.game.EventType.ZoneConfigureCompleteEvent
const ZoneRequireCompleteEvent = Packages.mindustry.game.EventType.ZoneRequireCompleteEvent
const PlayerChatEvent = Packages.mindustry.game.EventType.PlayerChatEvent
const CommandIssueEvent = Packages.mindustry.game.EventType.CommandIssueEvent
const MapPublishEvent = Packages.mindustry.game.EventType.MapPublishEvent const MapPublishEvent = Packages.mindustry.game.EventType.MapPublishEvent
const MapMakeEvent = Packages.mindustry.game.EventType.MapMakeEvent const MapMakeEvent = Packages.mindustry.game.EventType.MapMakeEvent
const LaunchItemEvent = Packages.mindustry.game.EventType.LaunchItemEvent const ResizeEvent = Packages.mindustry.game.EventType.ResizeEvent
const LaunchEvent = Packages.mindustry.game.EventType.LaunchEvent const LaunchEvent = Packages.mindustry.game.EventType.LaunchEvent
const LoseEvent = Packages.mindustry.game.EventType.LoseEvent const LoseEvent = Packages.mindustry.game.EventType.LoseEvent
const WinEvent = Packages.mindustry.game.EventType.WinEvent const WinEvent = Packages.mindustry.game.EventType.WinEvent
const TurnEvent = Packages.mindustry.game.EventType.TurnEvent
const Trigger = Packages.mindustry.game.EventType.Trigger const Trigger = Packages.mindustry.game.EventType.Trigger

Binary file not shown.

Before

Width:  |  Height:  |  Size: 724 B

After

Width:  |  Height:  |  Size: 761 B

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More