Compare commits
63 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a83c0b2e9a | ||
|
|
8f853c8f18 | ||
|
|
b4071f6dcb | ||
|
|
6b70418861 | ||
|
|
de0235ad94 | ||
|
|
c278c632b3 | ||
|
|
6392330e70 | ||
|
|
160ae4e244 | ||
|
|
a6c9bd3182 | ||
|
|
801eadd8a8 | ||
|
|
211dab1297 | ||
|
|
0c3b39ffdc | ||
|
|
c31f88a318 | ||
|
|
e9eb981782 | ||
|
|
83bde8a781 | ||
|
|
52f352bf94 | ||
|
|
b419a96d69 | ||
|
|
eb3d5b62f5 | ||
|
|
1c5f578d88 | ||
|
|
db3aae1388 | ||
|
|
0b08eb72a6 | ||
|
|
cbc81376be | ||
|
|
27e9901d05 | ||
|
|
532c36677c | ||
|
|
0c20c6ecb7 | ||
|
|
fbb3240ebb | ||
|
|
bffae90022 | ||
|
|
61f6368591 | ||
|
|
1027ca2a85 | ||
|
|
5acc42f739 | ||
|
|
1edeaeb94e | ||
|
|
879acc6077 | ||
|
|
4e5d87104c | ||
|
|
e6a24b8ba1 | ||
|
|
fd190c7770 | ||
|
|
d56869aefa | ||
|
|
c8a15bb7e4 | ||
|
|
07c28c3f6d | ||
|
|
855957b099 | ||
|
|
50959317e9 | ||
|
|
20a681a71f | ||
|
|
4e2d558b36 | ||
|
|
0430b908f4 | ||
|
|
a84e9f2aaa | ||
|
|
7ce571e59c | ||
|
|
545a64f7dc | ||
|
|
10c999a4a2 | ||
|
|
d0e026d597 | ||
|
|
0b1e2bf19b | ||
|
|
71c2c7ad05 | ||
|
|
97f5bf3cc4 | ||
|
|
bb9573b85a | ||
|
|
e1f53dfc67 | ||
|
|
87481e0a4d | ||
|
|
f7aa58e385 | ||
|
|
ea5c78f814 | ||
|
|
c93c016e9c | ||
|
|
4bb6664c7e | ||
|
|
9578068a02 | ||
|
|
30e5f2b17d | ||
|
|
f959760c07 | ||
|
|
e7db2350bc | ||
|
|
0585dabf7a |
@@ -52,6 +52,11 @@ public class AndroidLauncher extends AndroidApplication{
|
|||||||
config.depth = 0;
|
config.depth = 0;
|
||||||
Platform.instance = new Platform(){
|
Platform.instance = new Platform(){
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void hide(){
|
||||||
|
moveTaskToBack(true);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void openDonations(){
|
public void openDonations(){
|
||||||
showDonations();
|
showDonations();
|
||||||
@@ -133,7 +138,7 @@ public class AndroidLauncher extends AndroidApplication{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults){
|
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){
|
||||||
if(requestCode == PERMISSION_REQUEST_CODE){
|
if(requestCode == PERMISSION_REQUEST_CODE){
|
||||||
for(int i : grantResults){
|
for(int i : grantResults){
|
||||||
if(i != PackageManager.PERMISSION_GRANTED) return;
|
if(i != PackageManager.PERMISSION_GRANTED) return;
|
||||||
|
|||||||
@@ -7,6 +7,18 @@ import java.lang.annotation.Target;
|
|||||||
|
|
||||||
public class Annotations{
|
public class Annotations{
|
||||||
|
|
||||||
|
@Target({ElementType.METHOD, ElementType.FIELD})
|
||||||
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
|
public @interface Nullable{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Target({ElementType.METHOD, ElementType.FIELD})
|
||||||
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
|
public @interface NonNull{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/** Marks a class as serializable.*/
|
/** Marks a class as serializable.*/
|
||||||
@Target(ElementType.TYPE)
|
@Target(ElementType.TYPE)
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ public class RemoteWriteGenerator{
|
|||||||
for(VariableElement var : elem.getParameters()){
|
for(VariableElement var : elem.getParameters()){
|
||||||
//special case: calling local-only methods uses the local player
|
//special case: calling local-only methods uses the local player
|
||||||
if(index == 0 && methodEntry.where == Loc.client){
|
if(index == 0 && methodEntry.where == Loc.client){
|
||||||
results.append("io.anuke.mindustry.Vars.players[0]");
|
results.append("io.anuke.mindustry.Vars.player");
|
||||||
}else{
|
}else{
|
||||||
results.append(var.getSimpleName());
|
results.append(var.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ public class StructAnnotationProcessor extends AbstractProcessor{
|
|||||||
//floats: need conversion
|
//floats: need conversion
|
||||||
setter.addStatement("return ($T)(($L & $L) | (($T)Float.floatToIntBits(value) << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset);
|
setter.addStatement("return ($T)(($L & $L) | (($T)Float.floatToIntBits(value) << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset);
|
||||||
}else{
|
}else{
|
||||||
cons.append(" | (").append("(").append(structType).append(")").append(varName).append(" << ").append(offset).append("L)");
|
cons.append(" | (((").append(structType).append(")").append(varName).append(" << ").append(offset).append("L)").append(" & ").append(bitString(offset, size, structTotalSize)).append(")");
|
||||||
|
|
||||||
//bytes, shorts, chars, ints
|
//bytes, shorts, chars, ints
|
||||||
setter.addStatement("return ($T)(($L & $L) | (($T)value << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset);
|
setter.addStatement("return ($T)(($L & $L) | (($T)value << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ buildscript{
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies{
|
dependencies{
|
||||||
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.5'
|
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.6'
|
||||||
classpath "com.badlogicgames.gdx:gdx-tools:1.9.9"
|
classpath "com.badlogicgames.gdx:gdx-tools:1.9.9"
|
||||||
classpath "com.badlogicgames.packr:packr:2.1-SNAPSHOT"
|
classpath "com.badlogicgames.packr:packr:2.1-SNAPSHOT"
|
||||||
}
|
}
|
||||||
@@ -25,7 +25,7 @@ allprojects{
|
|||||||
if(!project.hasProperty("versionType")) versionType = 'official'
|
if(!project.hasProperty("versionType")) versionType = 'official'
|
||||||
appName = 'Mindustry'
|
appName = 'Mindustry'
|
||||||
gdxVersion = '1.9.9'
|
gdxVersion = '1.9.9'
|
||||||
roboVMVersion = '2.3.0'
|
roboVMVersion = '2.3.6'
|
||||||
arcHash = null
|
arcHash = null
|
||||||
|
|
||||||
debugged = {
|
debugged = {
|
||||||
@@ -43,7 +43,7 @@ allprojects{
|
|||||||
arcHash = 'git ls-remote https://github.com/Anuken/Arc.git'.execute().text.split("\t")[0]
|
arcHash = 'git ls-remote https://github.com/Anuken/Arc.git'.execute().text.split("\t")[0]
|
||||||
}catch(e){
|
}catch(e){
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
arcHash = "-SNAPSHOT";
|
arcHash = "-SNAPSHOT"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return arcHash
|
return arcHash
|
||||||
@@ -156,6 +156,7 @@ project(":ios"){
|
|||||||
dependencies{
|
dependencies{
|
||||||
compile project(":core")
|
compile project(":core")
|
||||||
compile project(":net")
|
compile project(":net")
|
||||||
|
compileOnly project(":annotations")
|
||||||
|
|
||||||
compile arcModule("backends:backend-robovm")
|
compile arcModule("backends:backend-robovm")
|
||||||
|
|
||||||
|
|||||||
BIN
core/assets-raw/sprites/blocks/defense/mender-top.png
Normal file
|
After Width: | Height: | Size: 1018 B |
BIN
core/assets-raw/sprites/blocks/defense/mender.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 354 B |
|
Before Width: | Height: | Size: 390 B |
BIN
core/assets-raw/sprites/blocks/storage/launch-pad-large.png
Normal file
|
After Width: | Height: | Size: 691 B |
BIN
core/assets-raw/sprites/ui/underline-red.9.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
BIN
core/assets-raw/sprites_replacement/effects/circle-shadow.png
Normal file
|
After Width: | Height: | Size: 9.6 KiB |
@@ -184,7 +184,8 @@ builtin = Built-In
|
|||||||
map.delete.confirm = Are you sure you want to delete this map? This action cannot be undone!
|
map.delete.confirm = Are you sure you want to delete this map? This action cannot be undone!
|
||||||
map.random = [accent]Random Map
|
map.random = [accent]Random Map
|
||||||
map.nospawn = This map does not have any cores for the player to spawn in! Add a[ROYAL] blue[] core to this map in the editor.
|
map.nospawn = This map does not have any cores for the player to spawn in! Add a[ROYAL] blue[] core to this map in the editor.
|
||||||
map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor.
|
map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] non-blue[] cores to this map in the editor.
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = Error loading map: corrupted or invalid map file.
|
map.invalid = Error loading map: corrupted or invalid map file.
|
||||||
editor.brush = Brush
|
editor.brush = Brush
|
||||||
editor.openin = Open In Editor
|
editor.openin = Open In Editor
|
||||||
@@ -286,7 +287,8 @@ donate = Donate
|
|||||||
abandon = Abandon
|
abandon = Abandon
|
||||||
abandon.text = This zone and all its resources will be lost to the enemy.
|
abandon.text = This zone and all its resources will be lost to the enemy.
|
||||||
locked = Locked
|
locked = Locked
|
||||||
complete = [LIGHT_GRAY]Complete:
|
complete = [LIGHT_GRAY]Reach:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]Best Wave: {0}
|
bestwave = [LIGHT_GRAY]Best Wave: {0}
|
||||||
launch = < LAUNCH >
|
launch = < LAUNCH >
|
||||||
@@ -298,7 +300,7 @@ uncover = Uncover
|
|||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
configure.locked = [LIGHT_GRAY]Unlock configuring loadout:\nWave {0}.
|
configure.locked = [LIGHT_GRAY]Unlock configuring loadout:\nWave {0}.
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
||||||
zone.complete = Wave {0} reached:\nNext zone requirements met.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
||||||
zone.resources = Resources Detected:
|
zone.resources = Resources Detected:
|
||||||
add = Add...
|
add = Add...
|
||||||
@@ -340,63 +342,61 @@ no = No
|
|||||||
info.title = Info
|
info.title = Info
|
||||||
error.title = [crimson]An error has occured
|
error.title = [crimson]An error has occured
|
||||||
error.crashtitle = An error has occured
|
error.crashtitle = An error has occured
|
||||||
blocks.outputspeed = Drill Speed: {0}/
|
blocks.input = Input
|
||||||
blocks.efficiency = Efficiency: {0}%
|
blocks.output = Output
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
blocks.booster = Booster
|
||||||
blocks.blockinfo = Block Info
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.powerbalance = Power: {0}
|
|
||||||
blocks.poweroutput = Power Output: {0}
|
|
||||||
blocks.powercapacity = Power Capacity
|
blocks.powercapacity = Power Capacity
|
||||||
blocks.powershot = Power/Shot
|
blocks.powershot = Power/Shot
|
||||||
blocks.targetsair = Targets Air
|
blocks.targetsair = Targets Air
|
||||||
blocks.targetsground = Targets Ground
|
blocks.targetsground = Targets Ground
|
||||||
blocks.items = Items: {0}
|
|
||||||
blocks.itemsmoved = Move Speed
|
blocks.itemsmoved = Move Speed
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = Range
|
blocks.shootrange = Range
|
||||||
blocks.size = Size
|
blocks.size = Size
|
||||||
blocks.liquidcapacity = Liquid Capacity
|
blocks.liquidcapacity = Liquid Capacity
|
||||||
blocks.maxitemssecond = Max Items
|
|
||||||
blocks.powerrange = Power Range
|
blocks.powerrange = Power Range
|
||||||
blocks.poweruse = Power Use
|
blocks.poweruse = Power Use
|
||||||
blocks.powerdamage = Power/Damage
|
blocks.powerdamage = Power/Damage
|
||||||
blocks.inputitemcapacity = Input Item Capacity
|
|
||||||
blocks.outputitemcapacity = Output Item Capacity
|
|
||||||
blocks.itemcapacity = Item Capacity
|
blocks.itemcapacity = Item Capacity
|
||||||
blocks.basepowergeneration = Base Power Generation
|
blocks.basepowergeneration = Base Power Generation
|
||||||
blocks.powertransferspeed = Power Transfer
|
blocks.productiontime = Production Time
|
||||||
blocks.craftspeed = Production Speed
|
blocks.repairtime = Block Full Repair Time
|
||||||
blocks.inputliquid = Input Liquid
|
blocks.speedincrease = Speed Increase
|
||||||
blocks.inputliquidaux = Aux Liquid
|
blocks.range = Range
|
||||||
blocks.inputitem = Input Item
|
|
||||||
blocks.inputitems = Input Items
|
|
||||||
blocks.outputitem = Output Item
|
|
||||||
blocks.drilltier = Drillables
|
blocks.drilltier = Drillables
|
||||||
blocks.drillspeed = Base Drill Speed
|
blocks.drillspeed = Base Drill Speed
|
||||||
|
blocks.boosteffect = Boost Effect
|
||||||
blocks.maxunits = Max Active Units
|
blocks.maxunits = Max Active Units
|
||||||
blocks.liquidoutput = Liquid Output
|
|
||||||
blocks.liquidoutputspeed = Liquid Output Speed
|
|
||||||
blocks.liquiduse = Liquid Use
|
|
||||||
blocks.coolant = Coolant
|
|
||||||
blocks.liquid = Liquid
|
|
||||||
blocks.coolantuse = Coolant Use
|
|
||||||
blocks.inputliquidfuel = Fuel Liquid
|
|
||||||
blocks.liquidfueluse = Liquid Fuel Use
|
|
||||||
blocks.boostitem = Boost Item
|
|
||||||
blocks.boostliquid = Boost Liquid
|
|
||||||
blocks.health = Health
|
blocks.health = Health
|
||||||
blocks.heat = Heat
|
|
||||||
blocks.power = Power
|
|
||||||
blocks.progress = Build Progress
|
|
||||||
blocks.spawned = Units: {0}/{1}
|
|
||||||
blocks.power.satisfaction = Power Satisfaction
|
|
||||||
blocks.inaccuracy = Inaccuracy
|
blocks.inaccuracy = Inaccuracy
|
||||||
blocks.shots = Shots
|
blocks.shots = Shots
|
||||||
blocks.reload = Shots/Second
|
blocks.reload = Shots/Second
|
||||||
blocks.inputfuel = Fuel
|
|
||||||
blocks.fuelburntime = Fuel Burn Time
|
|
||||||
blocks.inputcapacity = Input capacity
|
|
||||||
blocks.outputcapacity = Output capacity
|
|
||||||
blocks.ammo = Ammo
|
blocks.ammo = Ammo
|
||||||
|
|
||||||
|
bar.drillspeed = Drill Speed: {0}/s
|
||||||
|
bar.efficiency = Efficiency: {0}%
|
||||||
|
bar.powerbalance = Power: {0}
|
||||||
|
bar.poweroutput = Power Output: {0}
|
||||||
|
bar.items = Items: {0}
|
||||||
|
bar.liquid = Liquid
|
||||||
|
bar.heat = Heat
|
||||||
|
bar.power = Power
|
||||||
|
bar.progress = Build Progress
|
||||||
|
bar.spawned = Units: {0}/{1}
|
||||||
|
|
||||||
|
bullet.damage = [stat]{0}[lightgray] damage
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x fire rate
|
||||||
|
|
||||||
unit.blocks = blocks
|
unit.blocks = blocks
|
||||||
unit.powersecond = power units/second
|
unit.powersecond = power units/second
|
||||||
unit.liquidsecond = liquid units/second
|
unit.liquidsecond = liquid units/second
|
||||||
@@ -405,6 +405,9 @@ unit.liquidunits = liquid units
|
|||||||
unit.powerunits = power units
|
unit.powerunits = power units
|
||||||
unit.degrees = degrees
|
unit.degrees = degrees
|
||||||
unit.seconds = seconds
|
unit.seconds = seconds
|
||||||
|
unit.persecond = /sec
|
||||||
|
unit.timesspeed = x speed
|
||||||
|
unit.percent = %
|
||||||
unit.items = items
|
unit.items = items
|
||||||
category.general = General
|
category.general = General
|
||||||
category.power = Power
|
category.power = Power
|
||||||
@@ -413,6 +416,7 @@ category.items = Items
|
|||||||
category.crafting = Input/Output
|
category.crafting = Input/Output
|
||||||
category.shooting = Shooting
|
category.shooting = Shooting
|
||||||
category.optional = Optional Enhancements
|
category.optional = Optional Enhancements
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
setting.shadows.name = Shadows
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = Animated Water
|
setting.animatedwater.name = Animated Water
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
||||||
@@ -490,6 +494,20 @@ mode.pvp.name = PvP
|
|||||||
mode.pvp.description = Fight against other players locally.
|
mode.pvp.description = Fight against other players locally.
|
||||||
mode.attack.name = Attack
|
mode.attack.name = Attack
|
||||||
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI (Red Team) Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
|
|
||||||
content.item.name = Items
|
content.item.name = Items
|
||||||
content.liquid.name = Liquids
|
content.liquid.name = Liquids
|
||||||
content.unit.name = Units
|
content.unit.name = Units
|
||||||
@@ -532,7 +550,7 @@ liquid.oil.name = Oil
|
|||||||
liquid.cryofluid.name = Cryofluid
|
liquid.cryofluid.name = Cryofluid
|
||||||
mech.alpha-mech.name = Alpha
|
mech.alpha-mech.name = Alpha
|
||||||
mech.alpha-mech.weapon = Heavy Repeater
|
mech.alpha-mech.weapon = Heavy Repeater
|
||||||
mech.alpha-mech.ability = None
|
mech.alpha-mech.ability = Regeneration
|
||||||
mech.alpha-mech.description = The standard mech. Has decent speed and damage output.
|
mech.alpha-mech.description = The standard mech. Has decent speed and damage output.
|
||||||
mech.delta-mech.name = Delta
|
mech.delta-mech.name = Delta
|
||||||
mech.delta-mech.weapon = Arc Generator
|
mech.delta-mech.weapon = Arc Generator
|
||||||
@@ -567,9 +585,10 @@ unit.speed = [LIGHT_GRAY]Speed: {0}
|
|||||||
mech.weapon = [LIGHT_GRAY]Weapon: {0}
|
mech.weapon = [LIGHT_GRAY]Weapon: {0}
|
||||||
mech.health = [LIGHT_GRAY]Health: {0}
|
mech.health = [LIGHT_GRAY]Health: {0}
|
||||||
mech.itemcapacity = [LIGHT_GRAY]Item Capacity: {0}
|
mech.itemcapacity = [LIGHT_GRAY]Item Capacity: {0}
|
||||||
mech.minespeed = [LIGHT_GRAY]Mining Speed: {0}
|
mech.minespeed = [LIGHT_GRAY]Mining Speed: {0}%
|
||||||
mech.minepower = [LIGHT_GRAY]Mining Power: {0}
|
mech.minepower = [LIGHT_GRAY]Mining Power: {0}
|
||||||
mech.ability = [LIGHT_GRAY]Ability: {0}
|
mech.ability = [LIGHT_GRAY]Ability: {0}
|
||||||
|
mech.buildspeed = [LIGHT_GRAY]Building Speed: {0}%
|
||||||
liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0}
|
liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity: {0}
|
||||||
liquid.viscosity = [LIGHT_GRAY]Viscosity: {0}
|
liquid.viscosity = [LIGHT_GRAY]Viscosity: {0}
|
||||||
liquid.temperature = [LIGHT_GRAY]Temperature: {0}
|
liquid.temperature = [LIGHT_GRAY]Temperature: {0}
|
||||||
@@ -730,6 +749,7 @@ block.blast-drill.name = Airblast Drill
|
|||||||
block.thermal-pump.name = Thermal Pump
|
block.thermal-pump.name = Thermal Pump
|
||||||
block.thermal-generator.name = Thermal Generator
|
block.thermal-generator.name = Thermal Generator
|
||||||
block.alloy-smelter.name = Alloy Smelter
|
block.alloy-smelter.name = Alloy Smelter
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Mend Projector
|
block.mend-projector.name = Mend Projector
|
||||||
block.surge-wall.name = Surge Wall
|
block.surge-wall.name = Surge Wall
|
||||||
block.surge-wall-large.name = Large Surge Wall
|
block.surge-wall-large.name = Large Surge Wall
|
||||||
@@ -745,6 +765,7 @@ block.meltdown.name = Meltdown
|
|||||||
block.container.name = Container
|
block.container.name = Container
|
||||||
block.launch-pad.name = Launch Pad
|
block.launch-pad.name = Launch Pad
|
||||||
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = blue
|
team.blue.name = blue
|
||||||
team.red.name = red
|
team.red.name = red
|
||||||
team.orange.name = orange
|
team.orange.name = orange
|
||||||
@@ -829,7 +850,7 @@ block.silicon-smelter.description = Reduces sand with highly pure coal in order
|
|||||||
block.plastanium-compressor.description = Produces plastanium from oil and titanium.
|
block.plastanium-compressor.description = Produces plastanium from oil and titanium.
|
||||||
block.phase-weaver.description = Produces phase fabric from radioactive thorium and high amounts of sand.
|
block.phase-weaver.description = Produces phase fabric from radioactive thorium and high amounts of sand.
|
||||||
block.alloy-smelter.description = Produces surge alloy from titanium, lead, silicon and copper.
|
block.alloy-smelter.description = Produces surge alloy from titanium, lead, silicon and copper.
|
||||||
block.pulverizer.description = Crushes stone into sand. Useful when there is a lack of natural sand.
|
block.pulverizer.description = Crushes scrap into sand. Useful when there is a lack of natural sand.
|
||||||
block.pyratite-mixer.description = Mixes coal, lead and sand into highly flammable pyratite.
|
block.pyratite-mixer.description = Mixes coal, lead and sand into highly flammable pyratite.
|
||||||
block.blast-mixer.description = Uses oil for transforming pyratite into the less flammable but more explosive blast compound.
|
block.blast-mixer.description = Uses oil for transforming pyratite into the less flammable but more explosive blast compound.
|
||||||
block.cryofluidmixer.description = Combines water and titanium into cryofluid which is much more efficient for cooling.
|
block.cryofluidmixer.description = Combines water and titanium into cryofluid which is much more efficient for cooling.
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ map.delete.confirm = Jsi si jistý žechceš tuto mapu smazat? tato akce je nevr
|
|||||||
map.random = [accent]Náhodná mapa
|
map.random = [accent]Náhodná mapa
|
||||||
map.nospawn = Tato mapa nemá žádná jádra pro hráče ke spawnutí! přidej[ROYAL] blue[] jádro na tuto mapu v editoru.
|
map.nospawn = Tato mapa nemá žádná jádra pro hráče ke spawnutí! přidej[ROYAL] blue[] jádro na tuto mapu v editoru.
|
||||||
map.nospawn.pvp = Tato mapa nemá žádné nepřátelské jádra pro hráče ke spawnutí! přidej[SCARLET] red[] jádro na tuto mapu v editoru.
|
map.nospawn.pvp = Tato mapa nemá žádné nepřátelské jádra pro hráče ke spawnutí! přidej[SCARLET] red[] jádro na tuto mapu v editoru.
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = Chyba v načítání mapy: poškozený nebo neplatný soubor mapy.
|
map.invalid = Chyba v načítání mapy: poškozený nebo neplatný soubor mapy.
|
||||||
editor.brush = Štětec
|
editor.brush = Štětec
|
||||||
editor.openin = Otevřít v editoru.
|
editor.openin = Otevřít v editoru.
|
||||||
@@ -283,6 +284,7 @@ abandon = Abandon
|
|||||||
abandon.text = This zone and all its resources will be lost to the enemy.
|
abandon.text = This zone and all its resources will be lost to the enemy.
|
||||||
locked = Locked
|
locked = Locked
|
||||||
complete = [LIGHT_GRAY]Complete:
|
complete = [LIGHT_GRAY]Complete:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]Best: {0}
|
bestwave = [LIGHT_GRAY]Best: {0}
|
||||||
launch = Launch
|
launch = Launch
|
||||||
@@ -294,7 +296,7 @@ uncover = Uncover
|
|||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
||||||
zone.complete = Zone conditions met.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
||||||
zone.resources = Resources Detected:
|
zone.resources = Resources Detected:
|
||||||
add = Add...
|
add = Add...
|
||||||
@@ -333,18 +335,19 @@ no = Ne
|
|||||||
info.title = Informace
|
info.title = Informace
|
||||||
error.title = [crimson]Objevila se chyba
|
error.title = [crimson]Objevila se chyba
|
||||||
error.crashtitle = Objevila se chyba
|
error.crashtitle = Objevila se chyba
|
||||||
blocks.outputspeed = Drill Speed: {0}/s
|
bar.drillspeed = Drill Speed: {0}/s
|
||||||
blocks.efficiency = Efficiency: {0}%
|
bar.efficiency = Efficiency: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = Informace o bloku
|
blocks.blockinfo = Informace o bloku
|
||||||
blocks.powerbalance = Power: {0}
|
bar.powerbalance = Power: {0}
|
||||||
blocks.poweroutput = Power Output: {0}
|
bar.poweroutput = Power Output: {0}
|
||||||
blocks.powercapacity = Kapacita energie
|
blocks.powercapacity = Kapacita energie
|
||||||
blocks.powershot = Energie na výstřel
|
blocks.powershot = Energie na výstřel
|
||||||
blocks.targetsair = Zaměřuje vzdušné jednotky
|
blocks.targetsair = Zaměřuje vzdušné jednotky
|
||||||
blocks.targetsground = Targets Ground
|
blocks.targetsground = Targets Ground
|
||||||
blocks.items = Items: {0}
|
bar.items = Items: {0}
|
||||||
blocks.itemsmoved = Move Speed
|
blocks.itemsmoved = Move Speed
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = Dostřel
|
blocks.shootrange = Dostřel
|
||||||
blocks.size = velikost
|
blocks.size = velikost
|
||||||
blocks.liquidcapacity = Kapacita tekutin
|
blocks.liquidcapacity = Kapacita tekutin
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = kapacita předmětů
|
|||||||
blocks.basepowergeneration = Základní generování energie
|
blocks.basepowergeneration = Základní generování energie
|
||||||
blocks.powertransferspeed = Přenos energie
|
blocks.powertransferspeed = Přenos energie
|
||||||
blocks.craftspeed = Rychlost produkce
|
blocks.craftspeed = Rychlost produkce
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = Vstupní tekutiny
|
blocks.inputliquid = Vstupní tekutiny
|
||||||
blocks.inputliquidaux = Aux tekutina
|
blocks.inputliquidaux = Aux tekutina
|
||||||
blocks.inputitem = Vstupní předmět
|
blocks.inputitem = Vstupní předmět
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = Výstup tekutin
|
|||||||
blocks.liquidoutputspeed = Rychlost výstupu tekutin
|
blocks.liquidoutputspeed = Rychlost výstupu tekutin
|
||||||
blocks.liquiduse = Spotřebuje tekutin
|
blocks.liquiduse = Spotřebuje tekutin
|
||||||
blocks.coolant = Chlazení
|
blocks.coolant = Chlazení
|
||||||
blocks.liquid = Liquid
|
bar.liquid = Liquid
|
||||||
blocks.coolantuse = Spotřeba chlazení
|
blocks.coolantuse = Spotřeba chlazení
|
||||||
blocks.inputliquidfuel = Palivo-tekutina
|
blocks.inputliquidfuel = Palivo-tekutina
|
||||||
blocks.liquidfueluse = Spotřeba Paliva-tekutiny
|
blocks.liquidfueluse = Spotřeba Paliva-tekutiny
|
||||||
blocks.boostitem = Předmět pro zrychlení
|
blocks.boostitem = Předmět pro zrychlení
|
||||||
blocks.boostliquid = Tekutina pro zrychlení
|
blocks.boostliquid = Tekutina pro zrychlení
|
||||||
blocks.health = Životy
|
blocks.health = Životy
|
||||||
blocks.heat = Heat
|
bar.heat = Heat
|
||||||
blocks.power = Power
|
bar.power = Power
|
||||||
blocks.progress = Build Progress
|
bar.progress = Build Progress
|
||||||
blocks.spawned = Units: {0}/{1}
|
bar.spawned = Units: {0}/{1}
|
||||||
blocks.power.satisfaction = Power Satisfaction
|
blocks.power.satisfaction = Power Satisfaction
|
||||||
blocks.inaccuracy = Nepřesnost/výchylka
|
blocks.inaccuracy = Nepřesnost/výchylka
|
||||||
blocks.shots = Střely
|
blocks.shots = Střely
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = Čas spalování paliva
|
|||||||
blocks.inputcapacity = Vstupní kapacita
|
blocks.inputcapacity = Vstupní kapacita
|
||||||
blocks.outputcapacity = Výstupní kapacita
|
blocks.outputcapacity = Výstupní kapacita
|
||||||
blocks.ammo = Ammo
|
blocks.ammo = Ammo
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = Bloky
|
unit.blocks = Bloky
|
||||||
unit.powersecond = jednotek energie/sekunda
|
unit.powersecond = jednotek energie/sekunda
|
||||||
unit.liquidsecond = jednotek tekutin/sekundu
|
unit.liquidsecond = jednotek tekutin/sekundu
|
||||||
@@ -406,6 +422,7 @@ category.items = Předměty
|
|||||||
category.crafting = Vyžaduje
|
category.crafting = Vyžaduje
|
||||||
category.shooting = Střílí
|
category.shooting = Střílí
|
||||||
category.optional = Volitelné vylepšení
|
category.optional = Volitelné vylepšení
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
setting.shadows.name = Shadows
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = Animated Water
|
setting.animatedwater.name = Animated Water
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
||||||
@@ -483,6 +500,18 @@ mode.pvp.name = PvP
|
|||||||
mode.pvp.description = Bojuj proti ostatním hráčům v lokální síti.
|
mode.pvp.description = Bojuj proti ostatním hráčům v lokální síti.
|
||||||
mode.attack.name = Útok
|
mode.attack.name = Útok
|
||||||
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = Předměty
|
content.item.name = Předměty
|
||||||
content.liquid.name = Tekutiny
|
content.liquid.name = Tekutiny
|
||||||
content.unit.name = jednotky
|
content.unit.name = jednotky
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = Tlakovzdušný vrt
|
|||||||
block.thermal-pump.name = Termální pumpa
|
block.thermal-pump.name = Termální pumpa
|
||||||
block.thermal-generator.name = Termální Generátor
|
block.thermal-generator.name = Termální Generátor
|
||||||
block.alloy-smelter.name = Slitinová pec
|
block.alloy-smelter.name = Slitinová pec
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Opravný projektor
|
block.mend-projector.name = Opravný projektor
|
||||||
block.surge-wall.name = Impulzní stěna
|
block.surge-wall.name = Impulzní stěna
|
||||||
block.surge-wall-large.name = Velká Impulzní stěna
|
block.surge-wall-large.name = Velká Impulzní stěna
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = Meltdown
|
|||||||
block.container.name = Kontejnér
|
block.container.name = Kontejnér
|
||||||
block.launch-pad.name = Launch Pad
|
block.launch-pad.name = Launch Pad
|
||||||
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = modrá
|
team.blue.name = modrá
|
||||||
team.red.name = červená
|
team.red.name = červená
|
||||||
team.orange.name = oranžová
|
team.orange.name = oranžová
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ map.delete.confirm = Bist du sicher, dass du diese Karte löschen willst? Die Ak
|
|||||||
map.random = [accent]Zufällige Karte
|
map.random = [accent]Zufällige Karte
|
||||||
map.nospawn = Diese Karte hat keine Kerne in denen die Spieler beginnen können! Füge einen [ROYAL]blue[] Kern zu dieser Karte im Editor hinzu.
|
map.nospawn = Diese Karte hat keine Kerne in denen die Spieler beginnen können! Füge einen [ROYAL]blue[] Kern zu dieser Karte im Editor hinzu.
|
||||||
map.nospawn.pvp = Diese Karte hat keine gegnerischen Kerne wo Gegner starten könnten! Füge über den Editor [SCARLET] rote[] Kerne zu dieser Karte hinzu.
|
map.nospawn.pvp = Diese Karte hat keine gegnerischen Kerne wo Gegner starten könnten! Füge über den Editor [SCARLET] rote[] Kerne zu dieser Karte hinzu.
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = Fehler beim Laden der Karte: Beschädigtes oder invalide Karten Datei.
|
map.invalid = Fehler beim Laden der Karte: Beschädigtes oder invalide Karten Datei.
|
||||||
editor.brush = Pinsel
|
editor.brush = Pinsel
|
||||||
editor.openin = Öffne im Editor
|
editor.openin = Öffne im Editor
|
||||||
@@ -283,6 +284,7 @@ abandon = Abandon
|
|||||||
abandon.text = This zone and all its resources will be lost to the enemy.
|
abandon.text = This zone and all its resources will be lost to the enemy.
|
||||||
locked = Locked
|
locked = Locked
|
||||||
complete = [LIGHT_GRAY]Complete:
|
complete = [LIGHT_GRAY]Complete:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]Best: {0}
|
bestwave = [LIGHT_GRAY]Best: {0}
|
||||||
launch = Launch
|
launch = Launch
|
||||||
@@ -294,7 +296,7 @@ uncover = Uncover
|
|||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
||||||
zone.complete = Zone conditions met.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
||||||
zone.resources = Resources Detected:
|
zone.resources = Resources Detected:
|
||||||
add = Add...
|
add = Add...
|
||||||
@@ -333,18 +335,19 @@ no = Nein
|
|||||||
info.title = [accent]Info
|
info.title = [accent]Info
|
||||||
error.title = [crimson] Ein Fehler ist aufgetreten
|
error.title = [crimson] Ein Fehler ist aufgetreten
|
||||||
error.crashtitle = Ein Fehler ist aufgetreten!
|
error.crashtitle = Ein Fehler ist aufgetreten!
|
||||||
blocks.outputspeed = Drill Speed: {0}/s
|
bar.drillspeed = Drill Speed: {0}/s
|
||||||
blocks.efficiency = Efficiency: {0}%
|
bar.efficiency = Efficiency: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = Blockinfo:
|
blocks.blockinfo = Blockinfo:
|
||||||
blocks.powerbalance = Power: {0}
|
bar.powerbalance = Power: {0}
|
||||||
blocks.poweroutput = Power Output: {0}
|
bar.poweroutput = Power Output: {0}
|
||||||
blocks.powercapacity = Kapazität
|
blocks.powercapacity = Kapazität
|
||||||
blocks.powershot = Stromverbrauch/Schuss
|
blocks.powershot = Stromverbrauch/Schuss
|
||||||
blocks.targetsair = Visiert Luft Einheiten an
|
blocks.targetsair = Visiert Luft Einheiten an
|
||||||
blocks.targetsground = Targets Ground
|
blocks.targetsground = Targets Ground
|
||||||
blocks.items = Items: {0}
|
bar.items = Items: {0}
|
||||||
blocks.itemsmoved = Move Speed
|
blocks.itemsmoved = Move Speed
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = Reichweite
|
blocks.shootrange = Reichweite
|
||||||
blocks.size = Größe
|
blocks.size = Größe
|
||||||
blocks.liquidcapacity = Flüssigkeitskapazität
|
blocks.liquidcapacity = Flüssigkeitskapazität
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = Materialkapazität
|
|||||||
blocks.basepowergeneration = Basis-Stromerzeugung
|
blocks.basepowergeneration = Basis-Stromerzeugung
|
||||||
blocks.powertransferspeed = Stromübertragung
|
blocks.powertransferspeed = Stromübertragung
|
||||||
blocks.craftspeed = Produktionsgeschwindigkeit
|
blocks.craftspeed = Produktionsgeschwindigkeit
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = Benötigte Flüssigkeit
|
blocks.inputliquid = Benötigte Flüssigkeit
|
||||||
blocks.inputliquidaux = Optionale Flüssigkeit
|
blocks.inputliquidaux = Optionale Flüssigkeit
|
||||||
blocks.inputitem = Akzeptiertes Material
|
blocks.inputitem = Akzeptiertes Material
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = Erzeugte Flüssigkeit
|
|||||||
blocks.liquidoutputspeed = Ausgabegeschwindigkeit
|
blocks.liquidoutputspeed = Ausgabegeschwindigkeit
|
||||||
blocks.liquiduse = Flüssigkeitsverbrauch
|
blocks.liquiduse = Flüssigkeitsverbrauch
|
||||||
blocks.coolant = Kühlmittel
|
blocks.coolant = Kühlmittel
|
||||||
blocks.liquid = Liquid
|
bar.liquid = Liquid
|
||||||
blocks.coolantuse = Kühlmittelverbrauch
|
blocks.coolantuse = Kühlmittelverbrauch
|
||||||
blocks.inputliquidfuel = Kraftstoff
|
blocks.inputliquidfuel = Kraftstoff
|
||||||
blocks.liquidfueluse = Kraftstoffverbrauch
|
blocks.liquidfueluse = Kraftstoffverbrauch
|
||||||
blocks.boostitem = Boost Item
|
blocks.boostitem = Boost Item
|
||||||
blocks.boostliquid = Boost Liquid
|
blocks.boostliquid = Boost Liquid
|
||||||
blocks.health = Lebenspunkte
|
blocks.health = Lebenspunkte
|
||||||
blocks.heat = Heat
|
bar.heat = Heat
|
||||||
blocks.power = Power
|
bar.power = Power
|
||||||
blocks.progress = Build Progress
|
bar.progress = Build Progress
|
||||||
blocks.spawned = Units: {0}/{1}
|
bar.spawned = Units: {0}/{1}
|
||||||
blocks.power.satisfaction = Power Satisfaction
|
blocks.power.satisfaction = Power Satisfaction
|
||||||
blocks.inaccuracy = Ungenauigkeit
|
blocks.inaccuracy = Ungenauigkeit
|
||||||
blocks.shots = Schüsse
|
blocks.shots = Schüsse
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = Kraftstoff Verbrennungs-Zeit
|
|||||||
blocks.inputcapacity = Annahmekapazität
|
blocks.inputcapacity = Annahmekapazität
|
||||||
blocks.outputcapacity = Ausgabekapazität
|
blocks.outputcapacity = Ausgabekapazität
|
||||||
blocks.ammo = Ammo
|
blocks.ammo = Ammo
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = Blöcke
|
unit.blocks = Blöcke
|
||||||
unit.powersecond = Stromeinheiten/Sekunde
|
unit.powersecond = Stromeinheiten/Sekunde
|
||||||
unit.liquidsecond = Flüssigkeitseinheiten/Sekunde
|
unit.liquidsecond = Flüssigkeitseinheiten/Sekunde
|
||||||
@@ -406,6 +422,7 @@ category.items = Materialien
|
|||||||
category.crafting = Erzeugung
|
category.crafting = Erzeugung
|
||||||
category.shooting = Schießen
|
category.shooting = Schießen
|
||||||
category.optional = Optional Enhancements
|
category.optional = Optional Enhancements
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
setting.shadows.name = Shadows
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = Animated Water
|
setting.animatedwater.name = Animated Water
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
||||||
@@ -483,6 +500,18 @@ mode.pvp.name = PvP
|
|||||||
mode.pvp.description = Kämpfe gegen andere Spieler local.
|
mode.pvp.description = Kämpfe gegen andere Spieler local.
|
||||||
mode.attack.name = Attack
|
mode.attack.name = Attack
|
||||||
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = Materialien
|
content.item.name = Materialien
|
||||||
content.liquid.name = Flüssigkeiten
|
content.liquid.name = Flüssigkeiten
|
||||||
content.unit.name = Einheiten
|
content.unit.name = Einheiten
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = Sprengbohrer
|
|||||||
block.thermal-pump.name = Thermische Pumpe
|
block.thermal-pump.name = Thermische Pumpe
|
||||||
block.thermal-generator.name = Thermischer Generator
|
block.thermal-generator.name = Thermischer Generator
|
||||||
block.alloy-smelter.name = Legierungsschmeltzer
|
block.alloy-smelter.name = Legierungsschmeltzer
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Reparaturprojektor
|
block.mend-projector.name = Reparaturprojektor
|
||||||
block.surge-wall.name = Spannungsstoß-Mauer
|
block.surge-wall.name = Spannungsstoß-Mauer
|
||||||
block.surge-wall-large.name = Große Spannungsstoß-Mauer
|
block.surge-wall-large.name = Große Spannungsstoß-Mauer
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = Meltdown
|
|||||||
block.container.name = Container
|
block.container.name = Container
|
||||||
block.launch-pad.name = Launch Pad
|
block.launch-pad.name = Launch Pad
|
||||||
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = Blau
|
team.blue.name = Blau
|
||||||
team.red.name = Rot
|
team.red.name = Rot
|
||||||
team.orange.name = Orange
|
team.orange.name = Orange
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ map.delete.confirm = ¿Estás seguro de querer borrar este mapa? ¡Recuerda que
|
|||||||
map.random = [accent]Mapa Aleatorio
|
map.random = [accent]Mapa Aleatorio
|
||||||
map.nospawn = ¡Este mapa no tiene ningún núcleo en el cual pueda aparecer el jugador! Agrega un núcleo[ROYAL] blue[] al mapa con el editor.
|
map.nospawn = ¡Este mapa no tiene ningún núcleo en el cual pueda aparecer el jugador! Agrega un núcleo[ROYAL] blue[] al mapa con el editor.
|
||||||
map.nospawn.pvp = ¡Este mapa no tiene ningún núcleo enemigo para que aparezca el jugador! Añade un núcleo[SCARLET] red[] a este mapa en el editor.
|
map.nospawn.pvp = ¡Este mapa no tiene ningún núcleo enemigo para que aparezca el jugador! Añade un núcleo[SCARLET] red[] a este mapa en el editor.
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = Error cargando el mapa: archivo corrupto o inválido.
|
map.invalid = Error cargando el mapa: archivo corrupto o inválido.
|
||||||
editor.brush = Pincel
|
editor.brush = Pincel
|
||||||
editor.openin = Abrir en el Editor
|
editor.openin = Abrir en el Editor
|
||||||
@@ -283,6 +284,7 @@ abandon = Abandon
|
|||||||
abandon.text = This zone and all its resources will be lost to the enemy.
|
abandon.text = This zone and all its resources will be lost to the enemy.
|
||||||
locked = Locked
|
locked = Locked
|
||||||
complete = [LIGHT_GRAY]Complete:
|
complete = [LIGHT_GRAY]Complete:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]Best: {0}
|
bestwave = [LIGHT_GRAY]Best: {0}
|
||||||
launch = Launch
|
launch = Launch
|
||||||
@@ -294,7 +296,7 @@ uncover = Uncover
|
|||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
||||||
zone.complete = Zone conditions met.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
||||||
zone.resources = Resources Detected:
|
zone.resources = Resources Detected:
|
||||||
add = Add...
|
add = Add...
|
||||||
@@ -333,18 +335,19 @@ no = No
|
|||||||
info.title = [accent]Información
|
info.title = [accent]Información
|
||||||
error.title = [crimson]Un error ha ocurrido.
|
error.title = [crimson]Un error ha ocurrido.
|
||||||
error.crashtitle = Un error ha ocurrido.
|
error.crashtitle = Un error ha ocurrido.
|
||||||
blocks.outputspeed = Drill Speed: {0}/s
|
bar.drillspeed = Drill Speed: {0}/s
|
||||||
blocks.efficiency = Efficiency: {0}%
|
bar.efficiency = Efficiency: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = Información del Bloque
|
blocks.blockinfo = Información del Bloque
|
||||||
blocks.powerbalance = Power: {0}
|
bar.powerbalance = Power: {0}
|
||||||
blocks.poweroutput = Power Output: {0}
|
bar.poweroutput = Power Output: {0}
|
||||||
blocks.powercapacity = Capacidad de Energía
|
blocks.powercapacity = Capacidad de Energía
|
||||||
blocks.powershot = Energía/Disparo
|
blocks.powershot = Energía/Disparo
|
||||||
blocks.targetsair = Apunta al Aire
|
blocks.targetsair = Apunta al Aire
|
||||||
blocks.targetsground = Targets Ground
|
blocks.targetsground = Targets Ground
|
||||||
blocks.items = Items: {0}
|
bar.items = Items: {0}
|
||||||
blocks.itemsmoved = Move Speed
|
blocks.itemsmoved = Move Speed
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = Rango
|
blocks.shootrange = Rango
|
||||||
blocks.size = Tamaño
|
blocks.size = Tamaño
|
||||||
blocks.liquidcapacity = Capacidad de Líquidos
|
blocks.liquidcapacity = Capacidad de Líquidos
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = Capacidad de Objetos
|
|||||||
blocks.basepowergeneration = Generación de energía base
|
blocks.basepowergeneration = Generación de energía base
|
||||||
blocks.powertransferspeed = Transferencia de Energía
|
blocks.powertransferspeed = Transferencia de Energía
|
||||||
blocks.craftspeed = Velocidad de Producción
|
blocks.craftspeed = Velocidad de Producción
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = Líquidos de Entrada
|
blocks.inputliquid = Líquidos de Entrada
|
||||||
blocks.inputliquidaux = Líquido Auxiliar
|
blocks.inputliquidaux = Líquido Auxiliar
|
||||||
blocks.inputitem = Objeto de Entrada
|
blocks.inputitem = Objeto de Entrada
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = Líquido de Salida
|
|||||||
blocks.liquidoutputspeed = Velocidad de Salida del Líquido
|
blocks.liquidoutputspeed = Velocidad de Salida del Líquido
|
||||||
blocks.liquiduse = Uso de Líquido
|
blocks.liquiduse = Uso de Líquido
|
||||||
blocks.coolant = Refrigerante
|
blocks.coolant = Refrigerante
|
||||||
blocks.liquid = Liquid
|
bar.liquid = Liquid
|
||||||
blocks.coolantuse = Uso del Refrigerante
|
blocks.coolantuse = Uso del Refrigerante
|
||||||
blocks.inputliquidfuel = Combustible Líquido
|
blocks.inputliquidfuel = Combustible Líquido
|
||||||
blocks.liquidfueluse = Uso del Combustible Líquido
|
blocks.liquidfueluse = Uso del Combustible Líquido
|
||||||
blocks.boostitem = Boost Item
|
blocks.boostitem = Boost Item
|
||||||
blocks.boostliquid = Boost Liquid
|
blocks.boostliquid = Boost Liquid
|
||||||
blocks.health = Vida
|
blocks.health = Vida
|
||||||
blocks.heat = Heat
|
bar.heat = Heat
|
||||||
blocks.power = Power
|
bar.power = Power
|
||||||
blocks.progress = Build Progress
|
bar.progress = Build Progress
|
||||||
blocks.spawned = Units: {0}/{1}
|
bar.spawned = Units: {0}/{1}
|
||||||
blocks.power.satisfaction = Power Satisfaction
|
blocks.power.satisfaction = Power Satisfaction
|
||||||
blocks.inaccuracy = Imprecisión
|
blocks.inaccuracy = Imprecisión
|
||||||
blocks.shots = Disparos
|
blocks.shots = Disparos
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = Tiempo de Quemado del Combustible
|
|||||||
blocks.inputcapacity = Capacidad de entrada
|
blocks.inputcapacity = Capacidad de entrada
|
||||||
blocks.outputcapacity = Capacidad de salida
|
blocks.outputcapacity = Capacidad de salida
|
||||||
blocks.ammo = Ammo
|
blocks.ammo = Ammo
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = bloques
|
unit.blocks = bloques
|
||||||
unit.powersecond = unidades de energía/segundo
|
unit.powersecond = unidades de energía/segundo
|
||||||
unit.liquidsecond = unidades de líquido/segundo
|
unit.liquidsecond = unidades de líquido/segundo
|
||||||
@@ -406,6 +422,7 @@ category.items = Objetos
|
|||||||
category.crafting = Fabricación
|
category.crafting = Fabricación
|
||||||
category.shooting = Disparo
|
category.shooting = Disparo
|
||||||
category.optional = Mejoras Opcionales
|
category.optional = Mejoras Opcionales
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
setting.shadows.name = Shadows
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = Animated Water
|
setting.animatedwater.name = Animated Water
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
||||||
@@ -483,6 +500,18 @@ mode.pvp.name = PvP
|
|||||||
mode.pvp.description = Pelea contra otros jugadores localmente.
|
mode.pvp.description = Pelea contra otros jugadores localmente.
|
||||||
mode.attack.name = Attack
|
mode.attack.name = Attack
|
||||||
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = Objetos
|
content.item.name = Objetos
|
||||||
content.liquid.name = Líquidos
|
content.liquid.name = Líquidos
|
||||||
content.unit.name = Unidades
|
content.unit.name = Unidades
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = Taladro de explosión
|
|||||||
block.thermal-pump.name = Bomba Térmica
|
block.thermal-pump.name = Bomba Térmica
|
||||||
block.thermal-generator.name = Generador Térmico
|
block.thermal-generator.name = Generador Térmico
|
||||||
block.alloy-smelter.name = Alloy Smelter
|
block.alloy-smelter.name = Alloy Smelter
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Proyector de reparación
|
block.mend-projector.name = Proyector de reparación
|
||||||
block.surge-wall.name = Surge Wall
|
block.surge-wall.name = Surge Wall
|
||||||
block.surge-wall-large.name = Large Surge Wall
|
block.surge-wall-large.name = Large Surge Wall
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = Meltdown
|
|||||||
block.container.name = Contenedor
|
block.container.name = Contenedor
|
||||||
block.launch-pad.name = Launch Pad
|
block.launch-pad.name = Launch Pad
|
||||||
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = Azul
|
team.blue.name = Azul
|
||||||
team.red.name = Rojo
|
team.red.name = Rojo
|
||||||
team.orange.name = Naranja
|
team.orange.name = Naranja
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ map.delete.confirm = Êtes-vous sûr de supprimer cette carte? Cette action ne p
|
|||||||
map.random = [accent]Carte aléatoire
|
map.random = [accent]Carte aléatoire
|
||||||
map.nospawn = Cette carte n'a pas de base pour que le joueur y apparaisse! Ajouter une [ROYAL]base bleue[] sur cette carte dans l'éditeur.
|
map.nospawn = Cette carte n'a pas de base pour que le joueur y apparaisse! Ajouter une [ROYAL]base bleue[] sur cette carte dans l'éditeur.
|
||||||
map.nospawn.pvp = Cette carte n'a pas de base ennemies pour qu'un joueur ennemi y apparaisse! Ajouter au moins une [SCARLET]Base rouge[] sur cette carte dans l'éditeur.
|
map.nospawn.pvp = Cette carte n'a pas de base ennemies pour qu'un joueur ennemi y apparaisse! Ajouter au moins une [SCARLET]Base rouge[] sur cette carte dans l'éditeur.
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide.
|
map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide.
|
||||||
editor.brush = Pinceau
|
editor.brush = Pinceau
|
||||||
editor.openin = Ouvrir dans l'éditeur
|
editor.openin = Ouvrir dans l'éditeur
|
||||||
@@ -283,6 +284,7 @@ abandon = Abandon
|
|||||||
abandon.text = This zone and all its resources will be lost to the enemy.
|
abandon.text = This zone and all its resources will be lost to the enemy.
|
||||||
locked = Locked
|
locked = Locked
|
||||||
complete = [LIGHT_GRAY]Complete:
|
complete = [LIGHT_GRAY]Complete:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]Best: {0}
|
bestwave = [LIGHT_GRAY]Best: {0}
|
||||||
launch = Launch
|
launch = Launch
|
||||||
@@ -294,7 +296,7 @@ uncover = Uncover
|
|||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
||||||
zone.complete = Zone conditions met.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
||||||
zone.resources = Resources Detected:
|
zone.resources = Resources Detected:
|
||||||
add = Add...
|
add = Add...
|
||||||
@@ -333,18 +335,19 @@ no = Non
|
|||||||
info.title = Info
|
info.title = Info
|
||||||
error.title = [crimson]Une erreur s'est produite
|
error.title = [crimson]Une erreur s'est produite
|
||||||
error.crashtitle = Une erreur s'est produite
|
error.crashtitle = Une erreur s'est produite
|
||||||
blocks.outputspeed = Drill Speed: {0}/s
|
bar.drillspeed = Drill Speed: {0}/s
|
||||||
blocks.efficiency = Efficiency: {0}%
|
bar.efficiency = Efficiency: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = Info sur le bloc
|
blocks.blockinfo = Info sur le bloc
|
||||||
blocks.powerbalance = Power: {0}
|
bar.powerbalance = Power: {0}
|
||||||
blocks.poweroutput = Power Output: {0}
|
bar.poweroutput = Power Output: {0}
|
||||||
blocks.powercapacity = capacité d'énergie
|
blocks.powercapacity = capacité d'énergie
|
||||||
blocks.powershot = Énergie/Tir
|
blocks.powershot = Énergie/Tir
|
||||||
blocks.targetsair = Cible les unités aériennes
|
blocks.targetsair = Cible les unités aériennes
|
||||||
blocks.targetsground = Targets Ground
|
blocks.targetsground = Targets Ground
|
||||||
blocks.items = Items: {0}
|
bar.items = Items: {0}
|
||||||
blocks.itemsmoved = Move Speed
|
blocks.itemsmoved = Move Speed
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = Portée
|
blocks.shootrange = Portée
|
||||||
blocks.size = Taille
|
blocks.size = Taille
|
||||||
blocks.liquidcapacity = Capacité en liquide
|
blocks.liquidcapacity = Capacité en liquide
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = Stockage
|
|||||||
blocks.basepowergeneration = Generation d'énergie minimale
|
blocks.basepowergeneration = Generation d'énergie minimale
|
||||||
blocks.powertransferspeed = Vitesse de transfert d'énergie
|
blocks.powertransferspeed = Vitesse de transfert d'énergie
|
||||||
blocks.craftspeed = Vitesse de production
|
blocks.craftspeed = Vitesse de production
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = Liquide requis
|
blocks.inputliquid = Liquide requis
|
||||||
blocks.inputliquidaux = Liquide optionnel
|
blocks.inputliquidaux = Liquide optionnel
|
||||||
blocks.inputitem = Objets en entrée
|
blocks.inputitem = Objets en entrée
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = Liquide en sortie
|
|||||||
blocks.liquidoutputspeed = Vitesse de production de liquide
|
blocks.liquidoutputspeed = Vitesse de production de liquide
|
||||||
blocks.liquiduse = Quantité de liquide utilisée
|
blocks.liquiduse = Quantité de liquide utilisée
|
||||||
blocks.coolant = Liquide de refroidissement
|
blocks.coolant = Liquide de refroidissement
|
||||||
blocks.liquid = Liquid
|
bar.liquid = Liquid
|
||||||
blocks.coolantuse = Quantité de liquide de refroidissement utilisée
|
blocks.coolantuse = Quantité de liquide de refroidissement utilisée
|
||||||
blocks.inputliquidfuel = Carburant liquide
|
blocks.inputliquidfuel = Carburant liquide
|
||||||
blocks.liquidfueluse = Quantité de carburant liquide utilisé
|
blocks.liquidfueluse = Quantité de carburant liquide utilisé
|
||||||
blocks.boostitem = Boost Item
|
blocks.boostitem = Boost Item
|
||||||
blocks.boostliquid = Boost Liquid
|
blocks.boostliquid = Boost Liquid
|
||||||
blocks.health = Santé
|
blocks.health = Santé
|
||||||
blocks.heat = Heat
|
bar.heat = Heat
|
||||||
blocks.power = Power
|
bar.power = Power
|
||||||
blocks.progress = Build Progress
|
bar.progress = Build Progress
|
||||||
blocks.spawned = Units: {0}/{1}
|
bar.spawned = Units: {0}/{1}
|
||||||
blocks.power.satisfaction = Power Satisfaction
|
blocks.power.satisfaction = Power Satisfaction
|
||||||
blocks.inaccuracy = Précision
|
blocks.inaccuracy = Précision
|
||||||
blocks.shots = Tir
|
blocks.shots = Tir
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = Durée du carburant
|
|||||||
blocks.inputcapacity = Capacité d'entrée
|
blocks.inputcapacity = Capacité d'entrée
|
||||||
blocks.outputcapacity = Capacité de production
|
blocks.outputcapacity = Capacité de production
|
||||||
blocks.ammo = Ammo
|
blocks.ammo = Ammo
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = blocs
|
unit.blocks = blocs
|
||||||
unit.powersecond = Énergie/seconde
|
unit.powersecond = Énergie/seconde
|
||||||
unit.liquidsecond = Liquides/seconde
|
unit.liquidsecond = Liquides/seconde
|
||||||
@@ -406,6 +422,7 @@ category.items = Objets
|
|||||||
category.crafting = Fabrication
|
category.crafting = Fabrication
|
||||||
category.shooting = Défense
|
category.shooting = Défense
|
||||||
category.optional = Optional Enhancements
|
category.optional = Optional Enhancements
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
setting.shadows.name = Shadows
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = Animated Water
|
setting.animatedwater.name = Animated Water
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
||||||
@@ -483,6 +500,18 @@ mode.pvp.name = JcJ
|
|||||||
mode.pvp.description = Battez-vous contre d'autres joueurs en local.
|
mode.pvp.description = Battez-vous contre d'autres joueurs en local.
|
||||||
mode.attack.name = Attack
|
mode.attack.name = Attack
|
||||||
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = Objets
|
content.item.name = Objets
|
||||||
content.liquid.name = Liquides
|
content.liquid.name = Liquides
|
||||||
content.unit.name = Unités
|
content.unit.name = Unités
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = Foreuse à explosion
|
|||||||
block.thermal-pump.name = Pompe thermique
|
block.thermal-pump.name = Pompe thermique
|
||||||
block.thermal-generator.name = Générateur thermique
|
block.thermal-generator.name = Générateur thermique
|
||||||
block.alloy-smelter.name = Fonderie d'alliage superchargé
|
block.alloy-smelter.name = Fonderie d'alliage superchargé
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Projecteur soignant
|
block.mend-projector.name = Projecteur soignant
|
||||||
block.surge-wall.name = mur superchargé
|
block.surge-wall.name = mur superchargé
|
||||||
block.surge-wall-large.name = Grand mur superchargé
|
block.surge-wall-large.name = Grand mur superchargé
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = Meltdown
|
|||||||
block.container.name = Conteneur
|
block.container.name = Conteneur
|
||||||
block.launch-pad.name = Launch Pad
|
block.launch-pad.name = Launch Pad
|
||||||
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = Bleu
|
team.blue.name = Bleu
|
||||||
team.red.name = Rouge
|
team.red.name = Rouge
|
||||||
team.orange.name = Orange
|
team.orange.name = Orange
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ map.delete.confirm = Êtes-vous sûr de vouloir effacer cette carte ? Cette acti
|
|||||||
map.random = [accent]Carte aléatoire
|
map.random = [accent]Carte aléatoire
|
||||||
map.nospawn = Cette carte ne possède pas de base pour que le joueur puisse apparaître !Ajouter un [ROYAL]base bleue[] sur cette carte dans l'éditeur.
|
map.nospawn = Cette carte ne possède pas de base pour que le joueur puisse apparaître !Ajouter un [ROYAL]base bleue[] sur cette carte dans l'éditeur.
|
||||||
map.nospawn.pvp = Cette carte ne contient aucune base ennemi dans lequel le joueur apparaît!\nAjoutez des bases[SCARLET] rouge[] à cette carte dans l'éditeur.
|
map.nospawn.pvp = Cette carte ne contient aucune base ennemi dans lequel le joueur apparaît!\nAjoutez des bases[SCARLET] rouge[] à cette carte dans l'éditeur.
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide.
|
map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide.
|
||||||
editor.brush = Pinceau
|
editor.brush = Pinceau
|
||||||
editor.openin = Ouvrir dans l'éditeur
|
editor.openin = Ouvrir dans l'éditeur
|
||||||
@@ -283,6 +284,7 @@ abandon = Abandon
|
|||||||
abandon.text = This zone and all its resources will be lost to the enemy.
|
abandon.text = This zone and all its resources will be lost to the enemy.
|
||||||
locked = Locked
|
locked = Locked
|
||||||
complete = [LIGHT_GRAY]Complete:
|
complete = [LIGHT_GRAY]Complete:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]Best: {0}
|
bestwave = [LIGHT_GRAY]Best: {0}
|
||||||
launch = Launch
|
launch = Launch
|
||||||
@@ -294,7 +296,7 @@ uncover = Uncover
|
|||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
||||||
zone.complete = Zone conditions met.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
||||||
zone.resources = Resources Detected:
|
zone.resources = Resources Detected:
|
||||||
add = Add...
|
add = Add...
|
||||||
@@ -333,18 +335,19 @@ no = Non
|
|||||||
info.title = Info
|
info.title = Info
|
||||||
error.title = [crimson]Une erreur s'est produite
|
error.title = [crimson]Une erreur s'est produite
|
||||||
error.crashtitle = Une erreur s'est produite
|
error.crashtitle = Une erreur s'est produite
|
||||||
blocks.outputspeed = Drill Speed: {0}/s
|
bar.drillspeed = Drill Speed: {0}/s
|
||||||
blocks.efficiency = Efficiency: {0}%
|
bar.efficiency = Efficiency: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = Info sur le bloc
|
blocks.blockinfo = Info sur le bloc
|
||||||
blocks.powerbalance = Power: {0}
|
bar.powerbalance = Power: {0}
|
||||||
blocks.poweroutput = Power Output: {0}
|
bar.poweroutput = Power Output: {0}
|
||||||
blocks.powercapacity = Capacité d'énergie
|
blocks.powercapacity = Capacité d'énergie
|
||||||
blocks.powershot = Énergie/Tir
|
blocks.powershot = Énergie/Tir
|
||||||
blocks.targetsair = Cible les unités aériennes
|
blocks.targetsair = Cible les unités aériennes
|
||||||
blocks.targetsground = Targets Ground
|
blocks.targetsground = Targets Ground
|
||||||
blocks.items = Items: {0}
|
bar.items = Items: {0}
|
||||||
blocks.itemsmoved = Move Speed
|
blocks.itemsmoved = Move Speed
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = Portée
|
blocks.shootrange = Portée
|
||||||
blocks.size = Taille
|
blocks.size = Taille
|
||||||
blocks.liquidcapacity = Capacité en liquide
|
blocks.liquidcapacity = Capacité en liquide
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = Stockage
|
|||||||
blocks.basepowergeneration = Production d'énergie de base
|
blocks.basepowergeneration = Production d'énergie de base
|
||||||
blocks.powertransferspeed = Vitesse de transfert d'énergie
|
blocks.powertransferspeed = Vitesse de transfert d'énergie
|
||||||
blocks.craftspeed = Vitesse de production
|
blocks.craftspeed = Vitesse de production
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = Liquide requis
|
blocks.inputliquid = Liquide requis
|
||||||
blocks.inputliquidaux = Liquide optionnel
|
blocks.inputliquidaux = Liquide optionnel
|
||||||
blocks.inputitem = Objet utilisé
|
blocks.inputitem = Objet utilisé
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = Liquide en sortie
|
|||||||
blocks.liquidoutputspeed = Vitesse de sortie du liquide
|
blocks.liquidoutputspeed = Vitesse de sortie du liquide
|
||||||
blocks.liquiduse = Quantité de liquide utilisé
|
blocks.liquiduse = Quantité de liquide utilisé
|
||||||
blocks.coolant = Liquide de refroidissement
|
blocks.coolant = Liquide de refroidissement
|
||||||
blocks.liquid = Liquid
|
bar.liquid = Liquid
|
||||||
blocks.coolantuse = Quantité de liquide de refroidissement utilisé
|
blocks.coolantuse = Quantité de liquide de refroidissement utilisé
|
||||||
blocks.inputliquidfuel = Carburant liquide
|
blocks.inputliquidfuel = Carburant liquide
|
||||||
blocks.liquidfueluse = Quantité de carburant liquide utilisé
|
blocks.liquidfueluse = Quantité de carburant liquide utilisé
|
||||||
blocks.boostitem = Objet boostant la production
|
blocks.boostitem = Objet boostant la production
|
||||||
blocks.boostliquid = Liquide boostant la production
|
blocks.boostliquid = Liquide boostant la production
|
||||||
blocks.health = Santé
|
blocks.health = Santé
|
||||||
blocks.heat = Heat
|
bar.heat = Heat
|
||||||
blocks.power = Power
|
bar.power = Power
|
||||||
blocks.progress = Build Progress
|
bar.progress = Build Progress
|
||||||
blocks.spawned = Units: {0}/{1}
|
bar.spawned = Units: {0}/{1}
|
||||||
blocks.power.satisfaction = Power Satisfaction
|
blocks.power.satisfaction = Power Satisfaction
|
||||||
blocks.inaccuracy = Précision
|
blocks.inaccuracy = Précision
|
||||||
blocks.shots = Tirs
|
blocks.shots = Tirs
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = Durée du carburant
|
|||||||
blocks.inputcapacity = Capacité d'entrée
|
blocks.inputcapacity = Capacité d'entrée
|
||||||
blocks.outputcapacity = Capacité de sortie
|
blocks.outputcapacity = Capacité de sortie
|
||||||
blocks.ammo = Ammo
|
blocks.ammo = Ammo
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = Blocs
|
unit.blocks = Blocs
|
||||||
unit.powersecond = Énergie/seconde
|
unit.powersecond = Énergie/seconde
|
||||||
unit.liquidsecond = Liquides/seconde
|
unit.liquidsecond = Liquides/seconde
|
||||||
@@ -406,6 +422,7 @@ category.items = Objets
|
|||||||
category.crafting = Fabrication
|
category.crafting = Fabrication
|
||||||
category.shooting = Défense
|
category.shooting = Défense
|
||||||
category.optional = Améliorations facultatives
|
category.optional = Améliorations facultatives
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
setting.shadows.name = Shadows
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = Animated Water
|
setting.animatedwater.name = Animated Water
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
||||||
@@ -483,6 +500,18 @@ mode.pvp.name = PvP
|
|||||||
mode.pvp.description = Lutter contre d'autres joueurs pour gagner !
|
mode.pvp.description = Lutter contre d'autres joueurs pour gagner !
|
||||||
mode.attack.name = Attaque
|
mode.attack.name = Attaque
|
||||||
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = Objets
|
content.item.name = Objets
|
||||||
content.liquid.name = Liquides
|
content.liquid.name = Liquides
|
||||||
content.unit.name = Unités
|
content.unit.name = Unités
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = Foreuse à explosion
|
|||||||
block.thermal-pump.name = Pompe thermique
|
block.thermal-pump.name = Pompe thermique
|
||||||
block.thermal-generator.name = Générateur thermique
|
block.thermal-generator.name = Générateur thermique
|
||||||
block.alloy-smelter.name = Fonderie d'alliage superchargé
|
block.alloy-smelter.name = Fonderie d'alliage superchargé
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Projecteur soignant
|
block.mend-projector.name = Projecteur soignant
|
||||||
block.surge-wall.name = Mur superchargé
|
block.surge-wall.name = Mur superchargé
|
||||||
block.surge-wall-large.name = Grand mur superchargé
|
block.surge-wall-large.name = Grand mur superchargé
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = Meltdown
|
|||||||
block.container.name = Conteneur
|
block.container.name = Conteneur
|
||||||
block.launch-pad.name = Launch Pad
|
block.launch-pad.name = Launch Pad
|
||||||
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = Bleu
|
team.blue.name = Bleu
|
||||||
team.red.name = Rouge
|
team.red.name = Rouge
|
||||||
team.orange.name = Orange
|
team.orange.name = Orange
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ map.delete.confirm = Are you sure you want to delete this map? This action canno
|
|||||||
map.random = [accent]Random Map
|
map.random = [accent]Random Map
|
||||||
map.nospawn = This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor.
|
map.nospawn = This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor.
|
||||||
map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor.
|
map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = Error loading map: corrupted or invalid map file.
|
map.invalid = Error loading map: corrupted or invalid map file.
|
||||||
editor.brush = Brush
|
editor.brush = Brush
|
||||||
editor.openin = Open In Editor
|
editor.openin = Open In Editor
|
||||||
@@ -283,6 +284,7 @@ abandon = Abandon
|
|||||||
abandon.text = This zone and all its resources will be lost to the enemy.
|
abandon.text = This zone and all its resources will be lost to the enemy.
|
||||||
locked = Locked
|
locked = Locked
|
||||||
complete = [LIGHT_GRAY]Complete:
|
complete = [LIGHT_GRAY]Complete:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]Best: {0}
|
bestwave = [LIGHT_GRAY]Best: {0}
|
||||||
launch = Launch
|
launch = Launch
|
||||||
@@ -294,7 +296,7 @@ uncover = Uncover
|
|||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
||||||
zone.complete = Zone conditions met.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
||||||
zone.resources = Resources Detected:
|
zone.resources = Resources Detected:
|
||||||
add = Add...
|
add = Add...
|
||||||
@@ -333,18 +335,19 @@ no = No
|
|||||||
info.title = [accent]Info
|
info.title = [accent]Info
|
||||||
error.title = [crimson]Telah terjadi kesalahan
|
error.title = [crimson]Telah terjadi kesalahan
|
||||||
error.crashtitle = Telah terjadi kesalahan
|
error.crashtitle = Telah terjadi kesalahan
|
||||||
blocks.outputspeed = Drill Speed: {0}/s
|
bar.drillspeed = Drill Speed: {0}/s
|
||||||
blocks.efficiency = Efficiency: {0}%
|
bar.efficiency = Efficiency: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = Info Blok
|
blocks.blockinfo = Info Blok
|
||||||
blocks.powerbalance = Power: {0}
|
bar.powerbalance = Power: {0}
|
||||||
blocks.poweroutput = Power Output: {0}
|
bar.poweroutput = Power Output: {0}
|
||||||
blocks.powercapacity = Kapasitas Tenaga
|
blocks.powercapacity = Kapasitas Tenaga
|
||||||
blocks.powershot = Tenaga/tembakan
|
blocks.powershot = Tenaga/tembakan
|
||||||
blocks.targetsair = Targets Air
|
blocks.targetsair = Targets Air
|
||||||
blocks.targetsground = Targets Ground
|
blocks.targetsground = Targets Ground
|
||||||
blocks.items = Items: {0}
|
bar.items = Items: {0}
|
||||||
blocks.itemsmoved = Move Speed
|
blocks.itemsmoved = Move Speed
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = Range
|
blocks.shootrange = Range
|
||||||
blocks.size = Ukuran
|
blocks.size = Ukuran
|
||||||
blocks.liquidcapacity = Kapasitas cairan
|
blocks.liquidcapacity = Kapasitas cairan
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = Kapasitas Barang
|
|||||||
blocks.basepowergeneration = Base Power Generation
|
blocks.basepowergeneration = Base Power Generation
|
||||||
blocks.powertransferspeed = Power Transfer
|
blocks.powertransferspeed = Power Transfer
|
||||||
blocks.craftspeed = Production Speed
|
blocks.craftspeed = Production Speed
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = Cairan yang Masuk
|
blocks.inputliquid = Cairan yang Masuk
|
||||||
blocks.inputliquidaux = Aux Liquid
|
blocks.inputliquidaux = Aux Liquid
|
||||||
blocks.inputitem = Barang yang Masuk
|
blocks.inputitem = Barang yang Masuk
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = Liquid Output
|
|||||||
blocks.liquidoutputspeed = Liquid Output Speed
|
blocks.liquidoutputspeed = Liquid Output Speed
|
||||||
blocks.liquiduse = Liquid Use
|
blocks.liquiduse = Liquid Use
|
||||||
blocks.coolant = Coolant
|
blocks.coolant = Coolant
|
||||||
blocks.liquid = Liquid
|
bar.liquid = Liquid
|
||||||
blocks.coolantuse = Coolant Use
|
blocks.coolantuse = Coolant Use
|
||||||
blocks.inputliquidfuel = Fuel Liquid
|
blocks.inputliquidfuel = Fuel Liquid
|
||||||
blocks.liquidfueluse = Liquid Fuel Use
|
blocks.liquidfueluse = Liquid Fuel Use
|
||||||
blocks.boostitem = Boost Item
|
blocks.boostitem = Boost Item
|
||||||
blocks.boostliquid = Boost Liquid
|
blocks.boostliquid = Boost Liquid
|
||||||
blocks.health = Darah
|
blocks.health = Darah
|
||||||
blocks.heat = Heat
|
bar.heat = Heat
|
||||||
blocks.power = Power
|
bar.power = Power
|
||||||
blocks.progress = Build Progress
|
bar.progress = Build Progress
|
||||||
blocks.spawned = Units: {0}/{1}
|
bar.spawned = Units: {0}/{1}
|
||||||
blocks.power.satisfaction = Power Satisfaction
|
blocks.power.satisfaction = Power Satisfaction
|
||||||
blocks.inaccuracy = Ketidaktelitian
|
blocks.inaccuracy = Ketidaktelitian
|
||||||
blocks.shots = Tembakan
|
blocks.shots = Tembakan
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = Fuel Burn Time
|
|||||||
blocks.inputcapacity = Kapasitas masuk
|
blocks.inputcapacity = Kapasitas masuk
|
||||||
blocks.outputcapacity = Kapasitas keluar
|
blocks.outputcapacity = Kapasitas keluar
|
||||||
blocks.ammo = Ammo
|
blocks.ammo = Ammo
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = blocks
|
unit.blocks = blocks
|
||||||
unit.powersecond = power units/second
|
unit.powersecond = power units/second
|
||||||
unit.liquidsecond = liquid units/second
|
unit.liquidsecond = liquid units/second
|
||||||
@@ -406,6 +422,7 @@ category.items = Items
|
|||||||
category.crafting = Crafting
|
category.crafting = Crafting
|
||||||
category.shooting = Shooting
|
category.shooting = Shooting
|
||||||
category.optional = Optional Enhancements
|
category.optional = Optional Enhancements
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
setting.shadows.name = Shadows
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = Animated Water
|
setting.animatedwater.name = Animated Water
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
||||||
@@ -483,6 +500,18 @@ mode.pvp.name = PvP
|
|||||||
mode.pvp.description = fight against other players locally.
|
mode.pvp.description = fight against other players locally.
|
||||||
mode.attack.name = Attack
|
mode.attack.name = Attack
|
||||||
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = Items
|
content.item.name = Items
|
||||||
content.liquid.name = Liquids
|
content.liquid.name = Liquids
|
||||||
content.unit.name = Units
|
content.unit.name = Units
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = Blast Drill
|
|||||||
block.thermal-pump.name = Thermal Pump
|
block.thermal-pump.name = Thermal Pump
|
||||||
block.thermal-generator.name = Thermal Generator
|
block.thermal-generator.name = Thermal Generator
|
||||||
block.alloy-smelter.name = Alloy Smtler
|
block.alloy-smelter.name = Alloy Smtler
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Mend Projector
|
block.mend-projector.name = Mend Projector
|
||||||
block.surge-wall.name = Surge Wall
|
block.surge-wall.name = Surge Wall
|
||||||
block.surge-wall-large.name = Large Surge Wall
|
block.surge-wall-large.name = Large Surge Wall
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = Meltdown
|
|||||||
block.container.name = Container
|
block.container.name = Container
|
||||||
block.launch-pad.name = Launch Pad
|
block.launch-pad.name = Launch Pad
|
||||||
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = blue
|
team.blue.name = blue
|
||||||
team.red.name = red
|
team.red.name = red
|
||||||
team.orange.name = orange
|
team.orange.name = orange
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ map.delete.confirm = Sei sicuro di voler eliminare questa mappa? Non potrai torn
|
|||||||
map.random = [accent]Mappa casuale
|
map.random = [accent]Mappa casuale
|
||||||
map.nospawn = Questa mappa non possiede un nucleo dove spawnare! Aggiungine uno nell'editor.
|
map.nospawn = Questa mappa non possiede un nucleo dove spawnare! Aggiungine uno nell'editor.
|
||||||
map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor.
|
map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = Errore nel caricamento della mappa: file mappa corrotto o non valido.
|
map.invalid = Errore nel caricamento della mappa: file mappa corrotto o non valido.
|
||||||
editor.brush = Pennello
|
editor.brush = Pennello
|
||||||
editor.openin = Apri nell'editor
|
editor.openin = Apri nell'editor
|
||||||
@@ -283,6 +284,7 @@ abandon = Abandon
|
|||||||
abandon.text = This zone and all its resources will be lost to the enemy.
|
abandon.text = This zone and all its resources will be lost to the enemy.
|
||||||
locked = Locked
|
locked = Locked
|
||||||
complete = [LIGHT_GRAY]Complete:
|
complete = [LIGHT_GRAY]Complete:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]Best: {0}
|
bestwave = [LIGHT_GRAY]Best: {0}
|
||||||
launch = Launch
|
launch = Launch
|
||||||
@@ -294,7 +296,7 @@ uncover = Uncover
|
|||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
||||||
zone.complete = Zone conditions met.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
||||||
zone.resources = Resources Detected:
|
zone.resources = Resources Detected:
|
||||||
add = Add...
|
add = Add...
|
||||||
@@ -333,18 +335,19 @@ no = No
|
|||||||
info.title = [accent] Info
|
info.title = [accent] Info
|
||||||
error.title = [crimson]Si è verificato un errore
|
error.title = [crimson]Si è verificato un errore
|
||||||
error.crashtitle = Si è verificato un errore
|
error.crashtitle = Si è verificato un errore
|
||||||
blocks.outputspeed = Drill Speed: {0}/s
|
bar.drillspeed = Drill Speed: {0}/s
|
||||||
blocks.efficiency = Efficiency: {0}%
|
bar.efficiency = Efficiency: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = info sul blocco
|
blocks.blockinfo = info sul blocco
|
||||||
blocks.powerbalance = Power: {0}
|
bar.powerbalance = Power: {0}
|
||||||
blocks.poweroutput = Power Output: {0}
|
bar.poweroutput = Power Output: {0}
|
||||||
blocks.powercapacity = Capacità Energetica
|
blocks.powercapacity = Capacità Energetica
|
||||||
blocks.powershot = Danno/Colpo
|
blocks.powershot = Danno/Colpo
|
||||||
blocks.targetsair = Attacca nemici aerei
|
blocks.targetsair = Attacca nemici aerei
|
||||||
blocks.targetsground = Targets Ground
|
blocks.targetsground = Targets Ground
|
||||||
blocks.items = Items: {0}
|
bar.items = Items: {0}
|
||||||
blocks.itemsmoved = Move Speed
|
blocks.itemsmoved = Move Speed
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = Raggio
|
blocks.shootrange = Raggio
|
||||||
blocks.size = Grandezza
|
blocks.size = Grandezza
|
||||||
blocks.liquidcapacity = Capacità del liquido
|
blocks.liquidcapacity = Capacità del liquido
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = Capacità
|
|||||||
blocks.basepowergeneration = Base Power Generation
|
blocks.basepowergeneration = Base Power Generation
|
||||||
blocks.powertransferspeed = Velocità trasferimento energia
|
blocks.powertransferspeed = Velocità trasferimento energia
|
||||||
blocks.craftspeed = Velocità produzione
|
blocks.craftspeed = Velocità produzione
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = Input del liquido
|
blocks.inputliquid = Input del liquido
|
||||||
blocks.inputliquidaux = Liquidi extra
|
blocks.inputliquidaux = Liquidi extra
|
||||||
blocks.inputitem = Input Oggetto
|
blocks.inputitem = Input Oggetto
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = Uscita liquidi
|
|||||||
blocks.liquidoutputspeed = Liquid Output Speed
|
blocks.liquidoutputspeed = Liquid Output Speed
|
||||||
blocks.liquiduse = Uso liquidi
|
blocks.liquiduse = Uso liquidi
|
||||||
blocks.coolant = Refrigerante
|
blocks.coolant = Refrigerante
|
||||||
blocks.liquid = Liquid
|
bar.liquid = Liquid
|
||||||
blocks.coolantuse = uso refrigerante
|
blocks.coolantuse = uso refrigerante
|
||||||
blocks.inputliquidfuel = carburante liquido
|
blocks.inputliquidfuel = carburante liquido
|
||||||
blocks.liquidfueluse = Utilizzo carburante liquido
|
blocks.liquidfueluse = Utilizzo carburante liquido
|
||||||
blocks.boostitem = Boost Item
|
blocks.boostitem = Boost Item
|
||||||
blocks.boostliquid = Boost Liquid
|
blocks.boostliquid = Boost Liquid
|
||||||
blocks.health = Salute
|
blocks.health = Salute
|
||||||
blocks.heat = Heat
|
bar.heat = Heat
|
||||||
blocks.power = Power
|
bar.power = Power
|
||||||
blocks.progress = Build Progress
|
bar.progress = Build Progress
|
||||||
blocks.spawned = Units: {0}/{1}
|
bar.spawned = Units: {0}/{1}
|
||||||
blocks.power.satisfaction = Power Satisfaction
|
blocks.power.satisfaction = Power Satisfaction
|
||||||
blocks.inaccuracy = Inaccuratezza
|
blocks.inaccuracy = Inaccuratezza
|
||||||
blocks.shots = Colpi
|
blocks.shots = Colpi
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = Tempo combustione carburante
|
|||||||
blocks.inputcapacity = Capacità di ingresso
|
blocks.inputcapacity = Capacità di ingresso
|
||||||
blocks.outputcapacity = Capacità di uscita
|
blocks.outputcapacity = Capacità di uscita
|
||||||
blocks.ammo = Ammo
|
blocks.ammo = Ammo
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = blocchi
|
unit.blocks = blocchi
|
||||||
unit.powersecond = unità energia/secondo
|
unit.powersecond = unità energia/secondo
|
||||||
unit.liquidsecond = unità liquide/secondo
|
unit.liquidsecond = unità liquide/secondo
|
||||||
@@ -406,6 +422,7 @@ category.items = Oggetti
|
|||||||
category.crafting = Produzione
|
category.crafting = Produzione
|
||||||
category.shooting = Potenza di fuoco
|
category.shooting = Potenza di fuoco
|
||||||
category.optional = Optional Enhancements
|
category.optional = Optional Enhancements
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
setting.shadows.name = Shadows
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = Animated Water
|
setting.animatedwater.name = Animated Water
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
||||||
@@ -483,6 +500,18 @@ mode.pvp.name = PvP
|
|||||||
mode.pvp.description = fight against other players locally.
|
mode.pvp.description = fight against other players locally.
|
||||||
mode.attack.name = Attack
|
mode.attack.name = Attack
|
||||||
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = Oggetti
|
content.item.name = Oggetti
|
||||||
content.liquid.name = Liquidi
|
content.liquid.name = Liquidi
|
||||||
content.unit.name = Units
|
content.unit.name = Units
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = Blast Drill
|
|||||||
block.thermal-pump.name = Pompa termica
|
block.thermal-pump.name = Pompa termica
|
||||||
block.thermal-generator.name = Generatore termico
|
block.thermal-generator.name = Generatore termico
|
||||||
block.alloy-smelter.name = Altoforno
|
block.alloy-smelter.name = Altoforno
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Riparatore
|
block.mend-projector.name = Riparatore
|
||||||
block.surge-wall.name = Surge Wall
|
block.surge-wall.name = Surge Wall
|
||||||
block.surge-wall-large.name = Large Surge Wall
|
block.surge-wall-large.name = Large Surge Wall
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = Meltdown
|
|||||||
block.container.name = Container
|
block.container.name = Container
|
||||||
block.launch-pad.name = Launch Pad
|
block.launch-pad.name = Launch Pad
|
||||||
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = blue
|
team.blue.name = blue
|
||||||
team.red.name = red
|
team.red.name = red
|
||||||
team.orange.name = orange
|
team.orange.name = orange
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ map.delete.confirm = マップを削除してもよろしいですか? これは
|
|||||||
map.random = [accent]ランダムマップ
|
map.random = [accent]ランダムマップ
|
||||||
map.nospawn = このマップにはスポーンするためのプレイヤーのコアがありません! [ROYAL]青い[]コアをエディターでマップに追加してください。
|
map.nospawn = このマップにはスポーンするためのプレイヤーのコアがありません! [ROYAL]青い[]コアをエディターでマップに追加してください。
|
||||||
map.nospawn.pvp = このマップには敵がスポーンするためのプレイヤーのコアがありません! [SCARLET]赤い[]コアをエディターでマップに追加してください。
|
map.nospawn.pvp = このマップには敵がスポーンするためのプレイヤーのコアがありません! [SCARLET]赤い[]コアをエディターでマップに追加してください。
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = マップの読み込みエラー: ファイルが無効、または破損しています。
|
map.invalid = マップの読み込みエラー: ファイルが無効、または破損しています。
|
||||||
editor.brush = ブラシ
|
editor.brush = ブラシ
|
||||||
editor.openin = エディターで開く
|
editor.openin = エディターで開く
|
||||||
@@ -283,6 +284,7 @@ abandon = 撤退
|
|||||||
abandon.text = このゾーンとすべての資源が敵に奪われます。
|
abandon.text = このゾーンとすべての資源が敵に奪われます。
|
||||||
locked = ロック
|
locked = ロック
|
||||||
complete = [LIGHT_GRAY]完了:
|
complete = [LIGHT_GRAY]完了:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = 再開ゾーン:\n[LIGHT_GRAY]{0}
|
resume = 再開ゾーン:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]最高ウェーブ: {0}
|
bestwave = [LIGHT_GRAY]最高ウェーブ: {0}
|
||||||
launch = 出撃
|
launch = 出撃
|
||||||
@@ -294,7 +296,7 @@ uncover = 開拓
|
|||||||
configure = 積荷の設定
|
configure = 積荷の設定
|
||||||
configure.locked = [LIGHT_GRAY]ウェーブ {0} を達成すると積荷を設定できるようになります。
|
configure.locked = [LIGHT_GRAY]ウェーブ {0} を達成すると積荷を設定できるようになります。
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} がアンロックされました.
|
zone.unlocked = [LIGHT_GRAY]{0} がアンロックされました.
|
||||||
zone.complete = ゾーンの条件が達成されました。
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = ウェーブ {0} を達成:\n積荷の設定が解除されました。
|
zone.config.complete = ウェーブ {0} を達成:\n積荷の設定が解除されました。
|
||||||
zone.resources = 発見した資源:
|
zone.resources = 発見した資源:
|
||||||
add = 追加...
|
add = 追加...
|
||||||
@@ -333,18 +335,19 @@ no = いいえ
|
|||||||
info.title = 情報
|
info.title = 情報
|
||||||
error.title = [crimson]エラーが発生しました
|
error.title = [crimson]エラーが発生しました
|
||||||
error.crashtitle = エラーが発生しました
|
error.crashtitle = エラーが発生しました
|
||||||
blocks.outputspeed = 採掘速度: {0}/秒
|
bar.drillspeed = 採掘速度: {0}/秒
|
||||||
blocks.efficiency = 効率: {0}%
|
bar.efficiency = 効率: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = ブロック情報
|
blocks.blockinfo = ブロック情報
|
||||||
blocks.powerbalance = 電力: {0}
|
bar.powerbalance = 電力: {0}
|
||||||
blocks.poweroutput = 電力発電量: {0}
|
bar.poweroutput = 電力発電量: {0}
|
||||||
blocks.powercapacity = 電力容量
|
blocks.powercapacity = 電力容量
|
||||||
blocks.powershot = 電力/ショット
|
blocks.powershot = 電力/ショット
|
||||||
blocks.targetsair = 対空攻撃
|
blocks.targetsair = 対空攻撃
|
||||||
blocks.targetsground = 対地攻撃
|
blocks.targetsground = 対地攻撃
|
||||||
blocks.items = アイテム: {0}
|
bar.items = アイテム: {0}
|
||||||
blocks.itemsmoved = 輸送速度
|
blocks.itemsmoved = 輸送速度
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = 範囲
|
blocks.shootrange = 範囲
|
||||||
blocks.size = 大きさ
|
blocks.size = 大きさ
|
||||||
blocks.liquidcapacity = 液体容量
|
blocks.liquidcapacity = 液体容量
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = アイテム容量
|
|||||||
blocks.basepowergeneration = 基本発電量
|
blocks.basepowergeneration = 基本発電量
|
||||||
blocks.powertransferspeed = 電力伝送量
|
blocks.powertransferspeed = 電力伝送量
|
||||||
blocks.craftspeed = 生産速度
|
blocks.craftspeed = 生産速度
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = 必要な液体
|
blocks.inputliquid = 必要な液体
|
||||||
blocks.inputliquidaux = 補助液
|
blocks.inputliquidaux = 補助液
|
||||||
blocks.inputitem = 必要なアイテム
|
blocks.inputitem = 必要なアイテム
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = 搬出液体
|
|||||||
blocks.liquidoutputspeed = 液体搬出速度
|
blocks.liquidoutputspeed = 液体搬出速度
|
||||||
blocks.liquiduse = 液体使用量
|
blocks.liquiduse = 液体使用量
|
||||||
blocks.coolant = 冷却
|
blocks.coolant = 冷却
|
||||||
blocks.liquid = 液体
|
bar.liquid = 液体
|
||||||
blocks.coolantuse = 冷却使用量
|
blocks.coolantuse = 冷却使用量
|
||||||
blocks.inputliquidfuel = 液体燃料
|
blocks.inputliquidfuel = 液体燃料
|
||||||
blocks.liquidfueluse = 液体燃料使用量
|
blocks.liquidfueluse = 液体燃料使用量
|
||||||
blocks.boostitem = 加速アイテム
|
blocks.boostitem = 加速アイテム
|
||||||
blocks.boostliquid = 加速液体
|
blocks.boostliquid = 加速液体
|
||||||
blocks.health = 耐久値
|
blocks.health = 耐久値
|
||||||
blocks.heat = 熱
|
bar.heat = 熱
|
||||||
blocks.power = 電力
|
bar.power = 電力
|
||||||
blocks.progress = 建設状況
|
bar.progress = 建設状況
|
||||||
blocks.spawned = ユニット数: {0}/{1}
|
bar.spawned = ユニット数: {0}/{1}
|
||||||
blocks.power.satisfaction = 電力需要
|
blocks.power.satisfaction = 電力需要
|
||||||
blocks.inaccuracy = 精度のずれ
|
blocks.inaccuracy = 精度のずれ
|
||||||
blocks.shots = ショット
|
blocks.shots = ショット
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = 燃焼時間
|
|||||||
blocks.inputcapacity = 搬入容量
|
blocks.inputcapacity = 搬入容量
|
||||||
blocks.outputcapacity = 搬出容量
|
blocks.outputcapacity = 搬出容量
|
||||||
blocks.ammo = 弾薬
|
blocks.ammo = 弾薬
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = ブロック
|
unit.blocks = ブロック
|
||||||
unit.powersecond = 電力/秒
|
unit.powersecond = 電力/秒
|
||||||
unit.liquidsecond = 液体/秒
|
unit.liquidsecond = 液体/秒
|
||||||
@@ -406,6 +422,7 @@ category.items = アイテム
|
|||||||
category.crafting = 製作速度
|
category.crafting = 製作速度
|
||||||
category.shooting = 攻撃速度
|
category.shooting = 攻撃速度
|
||||||
category.optional = 機能強化オプション
|
category.optional = 機能強化オプション
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
setting.shadows.name = Shadows
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = 水のアニメーション
|
setting.animatedwater.name = 水のアニメーション
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
||||||
@@ -483,6 +500,18 @@ mode.pvp.name = PvP
|
|||||||
mode.pvp.description = ローカル内で他のプレイヤーと戦います。
|
mode.pvp.description = ローカル内で他のプレイヤーと戦います。
|
||||||
mode.attack.name = アタック
|
mode.attack.name = アタック
|
||||||
mode.attack.description = ウェーブがなく、敵の基地を破壊することを目指します。
|
mode.attack.description = ウェーブがなく、敵の基地を破壊することを目指します。
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = アイテム
|
content.item.name = アイテム
|
||||||
content.liquid.name = 液体
|
content.liquid.name = 液体
|
||||||
content.unit.name = ユニット
|
content.unit.name = ユニット
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = エアブラストドリル
|
|||||||
block.thermal-pump.name = サーマルポンプ
|
block.thermal-pump.name = サーマルポンプ
|
||||||
block.thermal-generator.name = サーマル発電機
|
block.thermal-generator.name = サーマル発電機
|
||||||
block.alloy-smelter.name = 合金溶鉱炉
|
block.alloy-smelter.name = 合金溶鉱炉
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = 修復プロジェクター
|
block.mend-projector.name = 修復プロジェクター
|
||||||
block.surge-wall.name = サージの壁
|
block.surge-wall.name = サージの壁
|
||||||
block.surge-wall-large.name = 大きなサージの壁
|
block.surge-wall-large.name = 大きなサージの壁
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = メルトダウン
|
|||||||
block.container.name = コンテナー
|
block.container.name = コンテナー
|
||||||
block.launch-pad.name = 出撃パッド
|
block.launch-pad.name = 出撃パッド
|
||||||
block.launch-pad.description = コアの出撃不要で多くのアイテムを脱出します。これは未完成です。
|
block.launch-pad.description = コアの出撃不要で多くのアイテムを脱出します。これは未完成です。
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = ブルー
|
team.blue.name = ブルー
|
||||||
team.red.name = レッド
|
team.red.name = レッド
|
||||||
team.orange.name = オレンジ
|
team.orange.name = オレンジ
|
||||||
|
|||||||
@@ -181,7 +181,8 @@ builtin = 기본맵
|
|||||||
map.delete.confirm = 이 맵을 삭제하시겠습니까? 이 명령은 취소할 수 없습니다!
|
map.delete.confirm = 이 맵을 삭제하시겠습니까? 이 명령은 취소할 수 없습니다!
|
||||||
map.random = [accent]랜덤 맵
|
map.random = [accent]랜덤 맵
|
||||||
map.nospawn = 이 맵에 플레이어가 스폰 할 코어가 없습니다! 맵 편집기에서 [ROYAL]파란색[]코어를 맵에 추가하세요.
|
map.nospawn = 이 맵에 플레이어가 스폰 할 코어가 없습니다! 맵 편집기에서 [ROYAL]파란색[]코어를 맵에 추가하세요.
|
||||||
map.nospawn.pvp = 이 맵에는 적팀 코어가 없습니다! 에디터에서 [SCARLET]빨간팀[] 코어를 추가하세요.
|
map.nospawn.pvp = 이 맵에는 적팀 코어가 없습니다! 에디터에서 [SCARLET]파란색 팀이 아닌[] 코어를 추가하세요.
|
||||||
|
map.nospawn.attack = 이 맵에는 플레이어가 공격할 수 있는 적의 코어가 없습니다! 에디터에서 [SCARLET] 빨간팀[] 코어를 맵에 추가하세요.
|
||||||
map.invalid = 파일이 잘못되었거나 손상되어 맵을 열 수 없습니다.
|
map.invalid = 파일이 잘못되었거나 손상되어 맵을 열 수 없습니다.
|
||||||
editor.brush = 브러쉬
|
editor.brush = 브러쉬
|
||||||
editor.openin = 편집기 열기
|
editor.openin = 편집기 열기
|
||||||
@@ -199,12 +200,12 @@ waves.waves = 웨이브마다
|
|||||||
waves.perspawn = 스폰.
|
waves.perspawn = 스폰.
|
||||||
waves.to = 부터
|
waves.to = 부터
|
||||||
waves.boss = 이 몹은 보스임.
|
waves.boss = 이 몹은 보스임.
|
||||||
waves.preview = Preview
|
waves.preview = 미리보기
|
||||||
waves.edit = Edit...
|
waves.edit = 편집...
|
||||||
waves.copy = Copy to Clipboard
|
waves.copy = 클립보드로 복사
|
||||||
waves.load = Load from Clipboard
|
waves.load = 클립보드에서 불러오기
|
||||||
waves.invalid = Invalid waves in clipboard.
|
waves.invalid = 클립보드의 잘못된 웨이브 데이터
|
||||||
waves.copied = Waves copied.
|
waves.copied = 웨이브 복사됨
|
||||||
editor.default = [LIGHT_GRAY]<기본값>
|
editor.default = [LIGHT_GRAY]<기본값>
|
||||||
edit = 편집...
|
edit = 편집...
|
||||||
editor.name = 이름:
|
editor.name = 이름:
|
||||||
@@ -214,7 +215,7 @@ editor.errorload = [accent]{0} 파일을 불러오는데 실패했습니다.
|
|||||||
editor.errorsave = [accent]{0} 파일을 저장하는데 실패했습니다.
|
editor.errorsave = [accent]{0} 파일을 저장하는데 실패했습니다.
|
||||||
editor.errorname = 맵에 이름이 지정되어 있지 않습니다.
|
editor.errorname = 맵에 이름이 지정되어 있지 않습니다.
|
||||||
editor.update = 업데이트
|
editor.update = 업데이트
|
||||||
editor.randomize = Randomize
|
editor.randomize = 랜덤
|
||||||
editor.apply = 적용
|
editor.apply = 적용
|
||||||
editor.generate = 생성
|
editor.generate = 생성
|
||||||
editor.resize = 맵 크기조정
|
editor.resize = 맵 크기조정
|
||||||
@@ -283,6 +284,7 @@ abandon = 버리기
|
|||||||
abandon.text = 이 구역과 모든 자원이 적에게 빼앗길 것입니다.
|
abandon.text = 이 구역과 모든 자원이 적에게 빼앗길 것입니다.
|
||||||
locked = 잠김
|
locked = 잠김
|
||||||
complete = [LIGHT_GRAY]완료:
|
complete = [LIGHT_GRAY]완료:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = 지역 계속 플레이:\n[LIGHT_GRAY]{0}
|
resume = 지역 계속 플레이:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]최고 점수: {0}
|
bestwave = [LIGHT_GRAY]최고 점수: {0}
|
||||||
launch = < 출격 >
|
launch = < 출격 >
|
||||||
@@ -294,7 +296,7 @@ uncover = 털어넣기
|
|||||||
configure = 로드아웃 설정
|
configure = 로드아웃 설정
|
||||||
configure.locked = {0} 단계에서 로드아웃을 설정할 수 있음.
|
configure.locked = {0} 단계에서 로드아웃을 설정할 수 있음.
|
||||||
zone.unlocked = [LIGHT_GRAY] 잠금 해제됨.
|
zone.unlocked = [LIGHT_GRAY] 잠금 해제됨.
|
||||||
zone.complete = 지역 조건이 충족됨.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = 웨이브 {0} 달성:\n로드아웃 설정 잠금 해제됨.
|
zone.config.complete = 웨이브 {0} 달성:\n로드아웃 설정 잠금 해제됨.
|
||||||
zone.resources = 자원 감지됨:
|
zone.resources = 자원 감지됨:
|
||||||
add = 추가...
|
add = 추가...
|
||||||
@@ -333,18 +335,19 @@ no = 아니오
|
|||||||
info.title = [accent]정보
|
info.title = [accent]정보
|
||||||
error.title = [crimson]오류가 발생했습니다.
|
error.title = [crimson]오류가 발생했습니다.
|
||||||
error.crashtitle = 오류가 발생했습니다.
|
error.crashtitle = 오류가 발생했습니다.
|
||||||
blocks.outputspeed = 채광 속도: {0}/s
|
bar.outputspeed = 채광 속도: {0}/s
|
||||||
blocks.efficiency = Efficiency: {0}%
|
bar.efficiency = 효율성: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = 블록 정보
|
blocks.blockinfo = 블록 정보
|
||||||
blocks.powerbalance = 전력: {0}
|
bar.powerbalance = 전력: {0}
|
||||||
blocks.poweroutput = 전력 출력: {0}
|
bar.poweroutput = 전력 출력: {0}
|
||||||
blocks.powercapacity = 전력 용량
|
blocks.powercapacity = 전력 용량
|
||||||
blocks.powershot = 1발당 전력 소모량
|
blocks.powershot = 1발당 전력 소모량
|
||||||
blocks.targetsair = 공중공격 가능
|
blocks.targetsair = 공중공격 가능
|
||||||
blocks.targetsground = 지상공격 가능
|
blocks.targetsground = 지상공격 가능
|
||||||
blocks.items = Items: {0}
|
bar.items = Items: {0}
|
||||||
blocks.itemsmoved = 이동 속도
|
blocks.itemsmoved = 이동 속도
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = 사거리
|
blocks.shootrange = 사거리
|
||||||
blocks.size = 크기
|
blocks.size = 크기
|
||||||
blocks.liquidcapacity = 액체 용량
|
blocks.liquidcapacity = 액체 용량
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = 저장 용량
|
|||||||
blocks.basepowergeneration = 기지 전력 생성기
|
blocks.basepowergeneration = 기지 전력 생성기
|
||||||
blocks.powertransferspeed = 전력 전송량
|
blocks.powertransferspeed = 전력 전송량
|
||||||
blocks.craftspeed = 생산 속도
|
blocks.craftspeed = 생산 속도
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = 사용되는 액체
|
blocks.inputliquid = 사용되는 액체
|
||||||
blocks.inputliquidaux = 보조 액체
|
blocks.inputliquidaux = 보조 액체
|
||||||
blocks.inputitem = 사용되는 아이템
|
blocks.inputitem = 사용되는 아이템
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = 액체 출력
|
|||||||
blocks.liquidoutputspeed = 액체 출력속도
|
blocks.liquidoutputspeed = 액체 출력속도
|
||||||
blocks.liquiduse = 액체 사용량
|
blocks.liquiduse = 액체 사용량
|
||||||
blocks.coolant = 냉각제
|
blocks.coolant = 냉각제
|
||||||
blocks.liquid = 액체
|
bar.liquid = 액체
|
||||||
blocks.coolantuse = 냉각제 사용
|
blocks.coolantuse = 냉각제 사용
|
||||||
blocks.inputliquidfuel = 연료 액
|
blocks.inputliquidfuel = 연료 액
|
||||||
blocks.liquidfueluse = 액체 연료 사용
|
blocks.liquidfueluse = 액체 연료 사용
|
||||||
blocks.boostitem = 가속 아이템
|
blocks.boostitem = 가속 아이템
|
||||||
blocks.boostliquid = 가속 액체
|
blocks.boostliquid = 가속 액체
|
||||||
blocks.health = 체력
|
blocks.health = 체력
|
||||||
blocks.heat = 발열
|
bar.heat = 발열
|
||||||
blocks.power = 전력
|
bar.power = 전력
|
||||||
blocks.progress = 건설 진행
|
bar.progress = 건설 진행
|
||||||
blocks.spawned = 유닛: {0}/{1}
|
bar.spawned = 유닛: {0}/{1}
|
||||||
blocks.power.satisfaction = 전력 만족도
|
blocks.power.satisfaction = 전력 만족도
|
||||||
blocks.inaccuracy = 오차각
|
blocks.inaccuracy = 오차각
|
||||||
blocks.shots = 발포 횟수
|
blocks.shots = 발포 횟수
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = 연료 연소 시간
|
|||||||
blocks.inputcapacity = 입력 용량
|
blocks.inputcapacity = 입력 용량
|
||||||
blocks.outputcapacity = 출력 용량
|
blocks.outputcapacity = 출력 용량
|
||||||
blocks.ammo = 탄약
|
blocks.ammo = 탄약
|
||||||
|
bullet.damage = [stat]{0}[lightgray] 데미지
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area 데미지 ~[stat] {1}[lightgray] 타일
|
||||||
|
bullet.incendiary = [stat]방화
|
||||||
|
bullet.homing = [stat]유도탄
|
||||||
|
bullet.shock = [stat]충격탄
|
||||||
|
bullet.frag = [stat]파편
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] 넉백
|
||||||
|
bullet.freezing = [stat]동결
|
||||||
|
bullet.tarred = [stat]타르
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x 탄약 배율
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x 사격 속도
|
||||||
unit.blocks = 블록
|
unit.blocks = 블록
|
||||||
unit.powersecond = 전력/초
|
unit.powersecond = 전력/초
|
||||||
unit.liquidsecond = 액체/초
|
unit.liquidsecond = 액체/초
|
||||||
@@ -406,15 +422,16 @@ category.items = 아이템
|
|||||||
category.crafting = 제작
|
category.crafting = 제작
|
||||||
category.shooting = 사격
|
category.shooting = 사격
|
||||||
category.optional = 보조 아이템
|
category.optional = 보조 아이템
|
||||||
setting.shadows.name = Shadows
|
setting.landscape.name = 가로화면으로 고정
|
||||||
|
setting.shadows.name = 그림자
|
||||||
setting.animatedwater.name = 움직이는 물
|
setting.animatedwater.name = 움직이는 물
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = 안티에일리어싱[LIGHT_GRAY] (재시작 필요)[]
|
||||||
setting.indicators.name = 아군/적 인디게이터 표시
|
setting.indicators.name = 아군/적 인디게이터 표시
|
||||||
setting.autotarget.name = 자동 조준
|
setting.autotarget.name = 자동 조준
|
||||||
setting.fpscap.name = 최대 FPS
|
setting.fpscap.name = 최대 FPS
|
||||||
setting.fpscap.none = 없음
|
setting.fpscap.none = 없음
|
||||||
setting.fpscap.text = FPS
|
setting.fpscap.text = {0}FPS
|
||||||
setting.swapdiagonal.name = Always Diagonal Placement
|
setting.swapdiagonal.name = 항상 대각선 설치
|
||||||
setting.difficulty.training = 훈련
|
setting.difficulty.training = 훈련
|
||||||
setting.difficulty.easy = 쉬움
|
setting.difficulty.easy = 쉬움
|
||||||
setting.difficulty.normal = 보통
|
setting.difficulty.normal = 보통
|
||||||
@@ -427,7 +444,7 @@ setting.sensitivity.name = 컨트롤러 감도
|
|||||||
setting.saveinterval.name = 자동저장 간격
|
setting.saveinterval.name = 자동저장 간격
|
||||||
setting.seconds = 초
|
setting.seconds = 초
|
||||||
setting.fullscreen.name = 전체 화면
|
setting.fullscreen.name = 전체 화면
|
||||||
setting.borderless.name = Borderless Window
|
setting.borderless.name = 테두리 없는 창모드
|
||||||
setting.fps.name = FPS 표시
|
setting.fps.name = FPS 표시
|
||||||
setting.vsync.name = VSync 활성화
|
setting.vsync.name = VSync 활성화
|
||||||
setting.lasers.name = 전력 노드 레이저 표시
|
setting.lasers.name = 전력 노드 레이저 표시
|
||||||
@@ -452,7 +469,7 @@ keybind.screenshot.name = 맵 스크린샷
|
|||||||
keybind.move_x.name = 오른쪽/왼쪽 이동
|
keybind.move_x.name = 오른쪽/왼쪽 이동
|
||||||
keybind.move_y.name = 위 / 아래 중간
|
keybind.move_y.name = 위 / 아래 중간
|
||||||
keybind.select.name = 선택
|
keybind.select.name = 선택
|
||||||
keybind.diagonal_placement.name = Diagonal Placement
|
keybind.diagonal_placement.name = 대각선 설치
|
||||||
keybind.pick.name = 블록 선택
|
keybind.pick.name = 블록 선택
|
||||||
keybind.break_block.name = 블록 파괴
|
keybind.break_block.name = 블록 파괴
|
||||||
keybind.deselect.name = 선택해제
|
keybind.deselect.name = 선택해제
|
||||||
@@ -483,6 +500,18 @@ mode.pvp.name = PvP
|
|||||||
mode.pvp.description = 실제 플레이어와 PvP를 합니다.
|
mode.pvp.description = 실제 플레이어와 PvP를 합니다.
|
||||||
mode.attack.name = 공격
|
mode.attack.name = 공격
|
||||||
mode.attack.description = 일정 시간마다 적이 오는 단계가 없으며, 적의 기지를 파괴하는 것을 목표로 합니다.
|
mode.attack.description = 일정 시간마다 적이 오는 단계가 없으며, 적의 기지를 파괴하는 것을 목표로 합니다.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = 무한 자원
|
||||||
|
rules.wavetimer = 웨이브 타이머
|
||||||
|
rules.waves = 웨이브
|
||||||
|
rules.enemyCheat = 무한 AI 자원
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = 유닛 드롭
|
||||||
|
rules.enemycorebuildradius = 적 코어 건설 금지구역:[LIGHT_GRAY] (타일)
|
||||||
|
rules.respawntime = 리스폰 시간:[LIGHT_GRAY] (초)
|
||||||
|
rules.wavespacing = 웨이브 간격:[LIGHT_GRAY] (초)
|
||||||
|
rules.buildcostmultiplier = 건설 소모 배율
|
||||||
|
rules.buildspeedmultiplier = 건설 속도 배율
|
||||||
content.item.name = 아이템
|
content.item.name = 아이템
|
||||||
content.liquid.name = 액체
|
content.liquid.name = 액체
|
||||||
content.unit.name = 유닛
|
content.unit.name = 유닛
|
||||||
@@ -572,7 +601,7 @@ block.sandrocks.name = 모래 바위
|
|||||||
block.spore-pine.name = 포자 소나무
|
block.spore-pine.name = 포자 소나무
|
||||||
block.sporerocks.name = 포자 바위
|
block.sporerocks.name = 포자 바위
|
||||||
block.rock.name = 바위
|
block.rock.name = 바위
|
||||||
block.snowrock.name = Snow Rock
|
block.snowrock.name = 눈바위
|
||||||
block.shale.name = 이판암
|
block.shale.name = 이판암
|
||||||
block.shale-boulder.name = 둥근 이판암
|
block.shale-boulder.name = 둥근 이판암
|
||||||
block.moss.name = 이끼
|
block.moss.name = 이끼
|
||||||
@@ -589,22 +618,22 @@ block.graphite-press.name = 흑연 압축기
|
|||||||
block.multi-press.name = 다중 압축기
|
block.multi-press.name = 다중 압축기
|
||||||
block.constructing = {0} [LIGHT_GRAY](만드는중)
|
block.constructing = {0} [LIGHT_GRAY](만드는중)
|
||||||
block.spawn.name = 적 스폰지점
|
block.spawn.name = 적 스폰지점
|
||||||
block.core-shard.name = 코어: 공유
|
block.core-shard.name = 코어-공유
|
||||||
block.core-foundation.name = 코어: 기초
|
block.core-foundation.name = 코어-기초
|
||||||
block.core-nucleus.name = 코어: 핵
|
block.core-nucleus.name = 코어-핵
|
||||||
block.deepwater.name = 깊은물
|
block.deepwater.name = 깊은물
|
||||||
block.water.name = 물
|
block.water.name = 물
|
||||||
block.tainted-water.name = Tainted Water
|
block.tainted-water.name = 도색된 물
|
||||||
block.darksand-tainted-water.name = Dark Sand Tainted Water
|
block.darksand-tainted-water.name = 검은 모래로 도색된 물
|
||||||
block.tar.name = 타르
|
block.tar.name = 타르
|
||||||
block.stone.name = 돌
|
block.stone.name = 돌
|
||||||
block.sand.name = 모래
|
block.sand.name = 모래
|
||||||
block.darksand.name = Dark Sand
|
block.darksand.name = 검은 모래
|
||||||
block.ice.name = 얼음
|
block.ice.name = 얼음
|
||||||
block.snow.name = 눈
|
block.snow.name = 눈
|
||||||
block.craters.name = 크레이터
|
block.craters.name = 크레이터
|
||||||
block.sand-water.name = 젖은모래
|
block.sand-water.name = 젖은모래
|
||||||
block.darksand-water.name = Dark Sand Water
|
block.darksand-water.name = 검은모래물
|
||||||
block.char.name = 숯
|
block.char.name = 숯
|
||||||
block.holostone.name = 홀로스톤
|
block.holostone.name = 홀로스톤
|
||||||
block.ice-snow.name = 얼음눈
|
block.ice-snow.name = 얼음눈
|
||||||
@@ -636,8 +665,8 @@ block.thorium-wall-large.name = 대형 토륨벽
|
|||||||
block.door.name = 문
|
block.door.name = 문
|
||||||
block.door-large.name = 대형문
|
block.door-large.name = 대형문
|
||||||
block.duo.name = 듀오
|
block.duo.name = 듀오
|
||||||
block.scorch.name = Scorch
|
block.scorch.name = 스코어치
|
||||||
block.scatter.name = Scatter
|
block.scatter.name = 스캐터
|
||||||
block.hail.name = 헤일
|
block.hail.name = 헤일
|
||||||
block.lancer.name = 랜서
|
block.lancer.name = 랜서
|
||||||
block.conveyor.name = 컨베이어
|
block.conveyor.name = 컨베이어
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = 압축 공기분사 드릴
|
|||||||
block.thermal-pump.name = 화력 펌프
|
block.thermal-pump.name = 화력 펌프
|
||||||
block.thermal-generator.name = 열발전기
|
block.thermal-generator.name = 열발전기
|
||||||
block.alloy-smelter.name = 서지 합금 제련소
|
block.alloy-smelter.name = 서지 합금 제련소
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = 수리 프로젝터
|
block.mend-projector.name = 수리 프로젝터
|
||||||
block.surge-wall.name = 서지 합금벽
|
block.surge-wall.name = 서지 합금벽
|
||||||
block.surge-wall-large.name = 큰 서지 합금벽
|
block.surge-wall-large.name = 큰 서지 합금벽
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = 멜트다운
|
|||||||
block.container.name = 컨테이너
|
block.container.name = 컨테이너
|
||||||
block.launch-pad.name = 발사대
|
block.launch-pad.name = 발사대
|
||||||
block.launch-pad.description = 출격할 필요 없이 아이템을 수송시킵시다. 미완성.
|
block.launch-pad.description = 출격할 필요 없이 아이템을 수송시킵시다. 미완성.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = 블루팀
|
team.blue.name = 블루팀
|
||||||
team.red.name = 레드팀
|
team.red.name = 레드팀
|
||||||
team.orange.name = 오렌지팀
|
team.orange.name = 오렌지팀
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ map.delete.confirm = Are you sure you want to delete this map? This action canno
|
|||||||
map.random = [accent]Random Map
|
map.random = [accent]Random Map
|
||||||
map.nospawn = This map does not have any cores for the player to spawn in! Add a[ROYAL] blue[] core to this map in the editor.
|
map.nospawn = This map does not have any cores for the player to spawn in! Add a[ROYAL] blue[] core to this map in the editor.
|
||||||
map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor.
|
map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = Error loading map: corrupted or invalid map file.
|
map.invalid = Error loading map: corrupted or invalid map file.
|
||||||
editor.brush = Brush
|
editor.brush = Brush
|
||||||
editor.openin = Open In Editor
|
editor.openin = Open In Editor
|
||||||
@@ -283,6 +284,7 @@ abandon = Abandon
|
|||||||
abandon.text = This zone and all its resources will be lost to the enemy.
|
abandon.text = This zone and all its resources will be lost to the enemy.
|
||||||
locked = Locked
|
locked = Locked
|
||||||
complete = [LIGHT_GRAY]Complete:
|
complete = [LIGHT_GRAY]Complete:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]Best Wave: {0}
|
bestwave = [LIGHT_GRAY]Best Wave: {0}
|
||||||
launch = < LAUNCH >
|
launch = < LAUNCH >
|
||||||
@@ -294,7 +296,7 @@ uncover = Uncover
|
|||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
configure.locked = [LIGHT_GRAY]Unlock configuring loadout:\nWave {0}.
|
configure.locked = [LIGHT_GRAY]Unlock configuring loadout:\nWave {0}.
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
||||||
zone.complete = Wave {0} reached:\nNew zone requirements met.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
||||||
zone.resources = Resources Detected:
|
zone.resources = Resources Detected:
|
||||||
add = Add...
|
add = Add...
|
||||||
@@ -333,18 +335,19 @@ no = No
|
|||||||
info.title = Info
|
info.title = Info
|
||||||
error.title = [crimson]An error has occured
|
error.title = [crimson]An error has occured
|
||||||
error.crashtitle = An error has occured
|
error.crashtitle = An error has occured
|
||||||
blocks.outputspeed = Drill Speed: {0}/s
|
bar.drillspeed = Drill Speed: {0}/s
|
||||||
blocks.efficiency = Efficiency: {0}%
|
bar.efficiency = Efficiency: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = Block Info
|
blocks.blockinfo = Block Info
|
||||||
blocks.powerbalance = Power: {0}
|
bar.powerbalance = Power: {0}
|
||||||
blocks.poweroutput = Power Output: {0}
|
bar.poweroutput = Power Output: {0}
|
||||||
blocks.powercapacity = Power Capacity
|
blocks.powercapacity = Power Capacity
|
||||||
blocks.powershot = Power/Shot
|
blocks.powershot = Power/Shot
|
||||||
blocks.targetsair = Targets Air
|
blocks.targetsair = Targets Air
|
||||||
blocks.targetsground = Targets Ground
|
blocks.targetsground = Targets Ground
|
||||||
blocks.items = Items: {0}
|
bar.items = Items: {0}
|
||||||
blocks.itemsmoved = Move Speed
|
blocks.itemsmoved = Move Speed
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = Range
|
blocks.shootrange = Range
|
||||||
blocks.size = Size
|
blocks.size = Size
|
||||||
blocks.liquidcapacity = Liquid Capacity
|
blocks.liquidcapacity = Liquid Capacity
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = Item Capacity
|
|||||||
blocks.basepowergeneration = Base Power Generation
|
blocks.basepowergeneration = Base Power Generation
|
||||||
blocks.powertransferspeed = Power Transfer
|
blocks.powertransferspeed = Power Transfer
|
||||||
blocks.craftspeed = Production Speed
|
blocks.craftspeed = Production Speed
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = Input Liquid
|
blocks.inputliquid = Input Liquid
|
||||||
blocks.inputliquidaux = Aux Liquid
|
blocks.inputliquidaux = Aux Liquid
|
||||||
blocks.inputitem = Input Item
|
blocks.inputitem = Input Item
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = Liquid Output
|
|||||||
blocks.liquidoutputspeed = Liquid Output Speed
|
blocks.liquidoutputspeed = Liquid Output Speed
|
||||||
blocks.liquiduse = Liquid Use
|
blocks.liquiduse = Liquid Use
|
||||||
blocks.coolant = Coolant
|
blocks.coolant = Coolant
|
||||||
blocks.liquid = Liquid
|
bar.liquid = Liquid
|
||||||
blocks.coolantuse = Coolant Use
|
blocks.coolantuse = Coolant Use
|
||||||
blocks.inputliquidfuel = Fuel Liquid
|
blocks.inputliquidfuel = Fuel Liquid
|
||||||
blocks.liquidfueluse = Liquid Fuel Use
|
blocks.liquidfueluse = Liquid Fuel Use
|
||||||
blocks.boostitem = Boost Item
|
blocks.boostitem = Boost Item
|
||||||
blocks.boostliquid = Boost Liquid
|
blocks.boostliquid = Boost Liquid
|
||||||
blocks.health = Health
|
blocks.health = Health
|
||||||
blocks.heat = Heat
|
bar.heat = Heat
|
||||||
blocks.power = Power
|
bar.power = Power
|
||||||
blocks.progress = Build Progress
|
bar.progress = Build Progress
|
||||||
blocks.spawned = Units: {0}/{1}
|
bar.spawned = Units: {0}/{1}
|
||||||
blocks.power.satisfaction = Power Satisfaction
|
blocks.power.satisfaction = Power Satisfaction
|
||||||
blocks.inaccuracy = Inaccuracy
|
blocks.inaccuracy = Inaccuracy
|
||||||
blocks.shots = Shots
|
blocks.shots = Shots
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = Fuel Burn Time
|
|||||||
blocks.inputcapacity = Input capacity
|
blocks.inputcapacity = Input capacity
|
||||||
blocks.outputcapacity = Output capacity
|
blocks.outputcapacity = Output capacity
|
||||||
blocks.ammo = Ammo
|
blocks.ammo = Ammo
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = blocks
|
unit.blocks = blocks
|
||||||
unit.powersecond = power units/second
|
unit.powersecond = power units/second
|
||||||
unit.liquidsecond = liquid units/second
|
unit.liquidsecond = liquid units/second
|
||||||
@@ -406,6 +422,7 @@ category.items = Items
|
|||||||
category.crafting = Crafting
|
category.crafting = Crafting
|
||||||
category.shooting = Shooting
|
category.shooting = Shooting
|
||||||
category.optional = Optional Enhancements
|
category.optional = Optional Enhancements
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
setting.shadows.name = Shadows
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = Animated Water
|
setting.animatedwater.name = Animated Water
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
||||||
@@ -483,6 +500,18 @@ mode.pvp.name = PvP
|
|||||||
mode.pvp.description = Fight against other players locally.
|
mode.pvp.description = Fight against other players locally.
|
||||||
mode.attack.name = Attack
|
mode.attack.name = Attack
|
||||||
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = Items
|
content.item.name = Items
|
||||||
content.liquid.name = Liquids
|
content.liquid.name = Liquids
|
||||||
content.unit.name = Units
|
content.unit.name = Units
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = Airblast Drill
|
|||||||
block.thermal-pump.name = Thermal Pump
|
block.thermal-pump.name = Thermal Pump
|
||||||
block.thermal-generator.name = Thermal Generator
|
block.thermal-generator.name = Thermal Generator
|
||||||
block.alloy-smelter.name = Alloy Smelter
|
block.alloy-smelter.name = Alloy Smelter
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Mend Projector
|
block.mend-projector.name = Mend Projector
|
||||||
block.surge-wall.name = Surge Wall
|
block.surge-wall.name = Surge Wall
|
||||||
block.surge-wall-large.name = Large Surge Wall
|
block.surge-wall-large.name = Large Surge Wall
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = Meltdown
|
|||||||
block.container.name = Container
|
block.container.name = Container
|
||||||
block.launch-pad.name = Launch Pad
|
block.launch-pad.name = Launch Pad
|
||||||
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = blue
|
team.blue.name = blue
|
||||||
team.red.name = red
|
team.red.name = red
|
||||||
team.orange.name = orange
|
team.orange.name = orange
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ map.delete.confirm = Jesteś pewny, że chcesz usunąć tę mapę? Nie będzie m
|
|||||||
map.random = [accent]Losowa mapa
|
map.random = [accent]Losowa mapa
|
||||||
map.nospawn = Ta mapa nie zawiera żadnego rdzenia! Musisz dodać [ROYAL]niebieski[] rdzeń do tej mapy.
|
map.nospawn = Ta mapa nie zawiera żadnego rdzenia! Musisz dodać [ROYAL]niebieski[] rdzeń do tej mapy.
|
||||||
map.nospawn.pvp = Ta mapa nie ma żadnego rdzenia przeciwnika, aby mogli się zrespić przeciwnicy! Dodaj[SCARLET] czerwony[] rdzeń do mapy w edytorze.
|
map.nospawn.pvp = Ta mapa nie ma żadnego rdzenia przeciwnika, aby mogli się zrespić przeciwnicy! Dodaj[SCARLET] czerwony[] rdzeń do mapy w edytorze.
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = Error podczas ładowania mapy: uszkodzony lub niepoprawny plik mapy.
|
map.invalid = Error podczas ładowania mapy: uszkodzony lub niepoprawny plik mapy.
|
||||||
editor.brush = Pędzel
|
editor.brush = Pędzel
|
||||||
editor.openin = Otwórz w edytorze
|
editor.openin = Otwórz w edytorze
|
||||||
@@ -283,6 +284,7 @@ abandon = Opuść
|
|||||||
abandon.text = Ta strefa i wszystkie jej surowce będą przejęte przez przeciwników.
|
abandon.text = Ta strefa i wszystkie jej surowce będą przejęte przez przeciwników.
|
||||||
locked = Zablokowane
|
locked = Zablokowane
|
||||||
complete = [LIGHT_GRAY]Ukończone:
|
complete = [LIGHT_GRAY]Ukończone:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Kontynuuj Strefę:\n[LIGHT_GRAY]{0}
|
resume = Kontynuuj Strefę:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]Najwyższa fala: {0}
|
bestwave = [LIGHT_GRAY]Najwyższa fala: {0}
|
||||||
launch = Wystrzel
|
launch = Wystrzel
|
||||||
@@ -294,7 +296,7 @@ uncover = Uncover
|
|||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
||||||
zone.unlocked = [LIGHT_GRAY] Strefa {0} odblokowana!
|
zone.unlocked = [LIGHT_GRAY] Strefa {0} odblokowana!
|
||||||
zone.complete = Zone conditions met.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
||||||
zone.resources = Resources Detected:
|
zone.resources = Resources Detected:
|
||||||
add = Add...
|
add = Add...
|
||||||
@@ -333,18 +335,19 @@ no = Nie ma mowy!
|
|||||||
info.title = [accent]Informacje
|
info.title = [accent]Informacje
|
||||||
error.title = [crimson]Wystąpił błąd
|
error.title = [crimson]Wystąpił błąd
|
||||||
error.crashtitle = Wystąpił błąd
|
error.crashtitle = Wystąpił błąd
|
||||||
blocks.outputspeed = Drill Speed: {0}/s
|
bar.drillspeed = Drill Speed: {0}/s
|
||||||
blocks.efficiency = Efficiency: {0}%
|
bar.efficiency = Efficiency: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = Informacje o bloku
|
blocks.blockinfo = Informacje o bloku
|
||||||
blocks.powerbalance = Power: {0}
|
bar.powerbalance = Power: {0}
|
||||||
blocks.poweroutput = Power Output: {0}
|
bar.poweroutput = Power Output: {0}
|
||||||
blocks.powercapacity = Pojemność mocy
|
blocks.powercapacity = Pojemność mocy
|
||||||
blocks.powershot = moc/strzał
|
blocks.powershot = moc/strzał
|
||||||
blocks.targetsair = Może namierzać wrogów powietrznych
|
blocks.targetsair = Może namierzać wrogów powietrznych
|
||||||
blocks.targetsground = Targets Ground
|
blocks.targetsground = Targets Ground
|
||||||
blocks.items = Items: {0}
|
bar.items = Items: {0}
|
||||||
blocks.itemsmoved = Move Speed
|
blocks.itemsmoved = Move Speed
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = Zasięg
|
blocks.shootrange = Zasięg
|
||||||
blocks.size = Rozmiar
|
blocks.size = Rozmiar
|
||||||
blocks.liquidcapacity = Pojemność cieczy
|
blocks.liquidcapacity = Pojemność cieczy
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = Pojemność przedmiotów
|
|||||||
blocks.basepowergeneration = Base Power Generation
|
blocks.basepowergeneration = Base Power Generation
|
||||||
blocks.powertransferspeed = Szybość przesyłu prądu
|
blocks.powertransferspeed = Szybość przesyłu prądu
|
||||||
blocks.craftspeed = Szybkość produkcji
|
blocks.craftspeed = Szybkość produkcji
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = Potrzebna ciecz
|
blocks.inputliquid = Potrzebna ciecz
|
||||||
blocks.inputliquidaux = Płyny do produkcji
|
blocks.inputliquidaux = Płyny do produkcji
|
||||||
blocks.inputitem = Potrzebne przedmioty
|
blocks.inputitem = Potrzebne przedmioty
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = Wyprodukowany płyn
|
|||||||
blocks.liquidoutputspeed = Prędkość odpływu cieczy
|
blocks.liquidoutputspeed = Prędkość odpływu cieczy
|
||||||
blocks.liquiduse = Zużycie płynów
|
blocks.liquiduse = Zużycie płynów
|
||||||
blocks.coolant = Płyn chłodzący
|
blocks.coolant = Płyn chłodzący
|
||||||
blocks.liquid = Płyn
|
bar.liquid = Płyn
|
||||||
blocks.coolantuse = Zużycie płynu chłodzącego
|
blocks.coolantuse = Zużycie płynu chłodzącego
|
||||||
blocks.inputliquidfuel = Paliwo
|
blocks.inputliquidfuel = Paliwo
|
||||||
blocks.liquidfueluse = Zużycie paliwa
|
blocks.liquidfueluse = Zużycie paliwa
|
||||||
blocks.boostitem = Boost Item
|
blocks.boostitem = Boost Item
|
||||||
blocks.boostliquid = Boost Liquid
|
blocks.boostliquid = Boost Liquid
|
||||||
blocks.health = Zdrowie
|
blocks.health = Zdrowie
|
||||||
blocks.heat = Heat
|
bar.heat = Heat
|
||||||
blocks.power = Prąd
|
bar.power = Prąd
|
||||||
blocks.progress = Build Progress
|
bar.progress = Build Progress
|
||||||
blocks.spawned = Units: {0}/{1}
|
bar.spawned = Units: {0}/{1}
|
||||||
blocks.power.satisfaction = Zapotrzebowanie Prądu
|
blocks.power.satisfaction = Zapotrzebowanie Prądu
|
||||||
blocks.inaccuracy = Niedokładność
|
blocks.inaccuracy = Niedokładność
|
||||||
blocks.shots = Strzały
|
blocks.shots = Strzały
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = Płonięcie paliwa
|
|||||||
blocks.inputcapacity = Pojemność wejściowa
|
blocks.inputcapacity = Pojemność wejściowa
|
||||||
blocks.outputcapacity = Wydajność wyjściowa
|
blocks.outputcapacity = Wydajność wyjściowa
|
||||||
blocks.ammo = Ammo
|
blocks.ammo = Ammo
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = Klocki
|
unit.blocks = Klocki
|
||||||
unit.powersecond = jednostek prądu na sekundę
|
unit.powersecond = jednostek prądu na sekundę
|
||||||
unit.liquidsecond = jednostek płynów na sekundę
|
unit.liquidsecond = jednostek płynów na sekundę
|
||||||
@@ -406,6 +422,7 @@ category.items = Przedmioty
|
|||||||
category.crafting = Przetwórstwo
|
category.crafting = Przetwórstwo
|
||||||
category.shooting = Strzelanie
|
category.shooting = Strzelanie
|
||||||
category.optional = Ulepszenia Nieobowiąskowe
|
category.optional = Ulepszenia Nieobowiąskowe
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
setting.shadows.name = Shadows
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = Animated Water
|
setting.animatedwater.name = Animated Water
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
||||||
@@ -483,6 +500,18 @@ mode.pvp.name = PvP
|
|||||||
mode.pvp.description = Walcz przeciwko innym graczom.
|
mode.pvp.description = Walcz przeciwko innym graczom.
|
||||||
mode.attack.name = Atak
|
mode.attack.name = Atak
|
||||||
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = Przedmioty
|
content.item.name = Przedmioty
|
||||||
content.liquid.name = Płyny
|
content.liquid.name = Płyny
|
||||||
content.unit.name = Jednostki
|
content.unit.name = Jednostki
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = Wiertło Wybuchowe
|
|||||||
block.thermal-pump.name = Pompa Termalna
|
block.thermal-pump.name = Pompa Termalna
|
||||||
block.thermal-generator.name = Generator Termalny
|
block.thermal-generator.name = Generator Termalny
|
||||||
block.alloy-smelter.name = Piec Mieszający
|
block.alloy-smelter.name = Piec Mieszający
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Projektor Napraw
|
block.mend-projector.name = Projektor Napraw
|
||||||
block.surge-wall.name = Ściana Stopu Energetycznego
|
block.surge-wall.name = Ściana Stopu Energetycznego
|
||||||
block.surge-wall-large.name = Duża Ściana Stopu Energetycznego
|
block.surge-wall-large.name = Duża Ściana Stopu Energetycznego
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = Meltdown
|
|||||||
block.container.name = Kontener
|
block.container.name = Kontener
|
||||||
block.launch-pad.name = Skocznia
|
block.launch-pad.name = Skocznia
|
||||||
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = niebieski
|
team.blue.name = niebieski
|
||||||
team.red.name = czerwony
|
team.red.name = czerwony
|
||||||
team.orange.name = pomarańczowy
|
team.orange.name = pomarańczowy
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ map.delete.confirm = Certeza que quer deletar este mapa? Isto não pode ser desf
|
|||||||
map.random = [accent]Mapa aleatório
|
map.random = [accent]Mapa aleatório
|
||||||
map.nospawn = Esse mapa não contém um [yellow]núcleo[] para o jogador Nascer! [ROYAL]blue[] Coloque um [yellow]núcleo[] no editor de mapa.
|
map.nospawn = Esse mapa não contém um [yellow]núcleo[] para o jogador Nascer! [ROYAL]blue[] Coloque um [yellow]núcleo[] no editor de mapa.
|
||||||
map.nospawn.pvp = Esse mapa não tem núcleos inimigos para os jogadores nascerem! Adicione[SCARLET] Núcleos vermelhos[] no mapa no editor.
|
map.nospawn.pvp = Esse mapa não tem núcleos inimigos para os jogadores nascerem! Adicione[SCARLET] Núcleos vermelhos[] no mapa no editor.
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = Erro ao carregar o mapa: Arquivo de mapa invalido ou corrupto.
|
map.invalid = Erro ao carregar o mapa: Arquivo de mapa invalido ou corrupto.
|
||||||
editor.brush = Pincel
|
editor.brush = Pincel
|
||||||
editor.openin = Abrir no Editor
|
editor.openin = Abrir no Editor
|
||||||
@@ -283,6 +284,7 @@ abandon = Abandonar
|
|||||||
abandon.text = Esta zona e todos os seus recursos serão perdidos para o enimigo.
|
abandon.text = Esta zona e todos os seus recursos serão perdidos para o enimigo.
|
||||||
locked = Trancado
|
locked = Trancado
|
||||||
complete = [LIGHT_GRAY]Complete:
|
complete = [LIGHT_GRAY]Complete:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Resumir Zona:\n[LIGHT_GRAY]{0}
|
resume = Resumir Zona:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]Melhor: {0}
|
bestwave = [LIGHT_GRAY]Melhor: {0}
|
||||||
launch = Lançar
|
launch = Lançar
|
||||||
@@ -294,7 +296,7 @@ uncover = Uncover
|
|||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
||||||
zone.complete = Zone conditions met.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
||||||
zone.resources = Resources Detected:
|
zone.resources = Resources Detected:
|
||||||
add = Add...
|
add = Add...
|
||||||
@@ -333,18 +335,19 @@ no = Não
|
|||||||
info.title = [accent]Informação
|
info.title = [accent]Informação
|
||||||
error.title = [crimson]Ocorreu um Erro.
|
error.title = [crimson]Ocorreu um Erro.
|
||||||
error.crashtitle = Ocorreu um Erro
|
error.crashtitle = Ocorreu um Erro
|
||||||
blocks.outputspeed = Drill Speed: {0}/s
|
bar.drillspeed = Drill Speed: {0}/s
|
||||||
blocks.efficiency = Efficiency: {0}%
|
bar.efficiency = Efficiency: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = Informação do Bloco
|
blocks.blockinfo = Informação do Bloco
|
||||||
blocks.powerbalance = Power: {0}
|
bar.powerbalance = Power: {0}
|
||||||
blocks.poweroutput = Power Output: {0}
|
bar.poweroutput = Power Output: {0}
|
||||||
blocks.powercapacity = Capacidade de Energia
|
blocks.powercapacity = Capacidade de Energia
|
||||||
blocks.powershot = Energia/tiro
|
blocks.powershot = Energia/tiro
|
||||||
blocks.targetsair = Mirar no ar
|
blocks.targetsair = Mirar no ar
|
||||||
blocks.targetsground = Targets Ground
|
blocks.targetsground = Targets Ground
|
||||||
blocks.items = Items: {0}
|
bar.items = Items: {0}
|
||||||
blocks.itemsmoved = Move Speed
|
blocks.itemsmoved = Move Speed
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = Alcance
|
blocks.shootrange = Alcance
|
||||||
blocks.size = Tamanho
|
blocks.size = Tamanho
|
||||||
blocks.liquidcapacity = Capacidade de Líquido
|
blocks.liquidcapacity = Capacidade de Líquido
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = Capacidade de Itens
|
|||||||
blocks.basepowergeneration = Geração de poder base
|
blocks.basepowergeneration = Geração de poder base
|
||||||
blocks.powertransferspeed = Transferência de energia
|
blocks.powertransferspeed = Transferência de energia
|
||||||
blocks.craftspeed = Velocidade de produção
|
blocks.craftspeed = Velocidade de produção
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = Líquido de entrada
|
blocks.inputliquid = Líquido de entrada
|
||||||
blocks.inputliquidaux = Líquido auxiliar
|
blocks.inputliquidaux = Líquido auxiliar
|
||||||
blocks.inputitem = Item de entrada
|
blocks.inputitem = Item de entrada
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = Saida de liquido
|
|||||||
blocks.liquidoutputspeed = Velocidade da saida de líquido
|
blocks.liquidoutputspeed = Velocidade da saida de líquido
|
||||||
blocks.liquiduse = Uso de liquido
|
blocks.liquiduse = Uso de liquido
|
||||||
blocks.coolant = Esfriador
|
blocks.coolant = Esfriador
|
||||||
blocks.liquid = Liquid
|
bar.liquid = Liquid
|
||||||
blocks.coolantuse = Uso do esfriador
|
blocks.coolantuse = Uso do esfriador
|
||||||
blocks.inputliquidfuel = Liquido de combustivel
|
blocks.inputliquidfuel = Liquido de combustivel
|
||||||
blocks.liquidfueluse = Uso do liquido de combustivel
|
blocks.liquidfueluse = Uso do liquido de combustivel
|
||||||
blocks.boostitem = Acelerar item
|
blocks.boostitem = Acelerar item
|
||||||
blocks.boostliquid = Acelerar líquido
|
blocks.boostliquid = Acelerar líquido
|
||||||
blocks.health = Saúde
|
blocks.health = Saúde
|
||||||
blocks.heat = Heat
|
bar.heat = Heat
|
||||||
blocks.power = Poder
|
bar.power = Poder
|
||||||
blocks.progress = Build Progress
|
bar.progress = Build Progress
|
||||||
blocks.spawned = Units: {0}/{1}
|
bar.spawned = Units: {0}/{1}
|
||||||
blocks.power.satisfaction = Power Satisfaction
|
blocks.power.satisfaction = Power Satisfaction
|
||||||
blocks.inaccuracy = Imprecisão
|
blocks.inaccuracy = Imprecisão
|
||||||
blocks.shots = Tiros
|
blocks.shots = Tiros
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = Tempo de queima de combustivel
|
|||||||
blocks.inputcapacity = Capacidade de entrada
|
blocks.inputcapacity = Capacidade de entrada
|
||||||
blocks.outputcapacity = Capacidade de saída
|
blocks.outputcapacity = Capacidade de saída
|
||||||
blocks.ammo = Ammo
|
blocks.ammo = Ammo
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = blocos
|
unit.blocks = blocos
|
||||||
unit.powersecond = Unidades de energia/segundo
|
unit.powersecond = Unidades de energia/segundo
|
||||||
unit.liquidsecond = Unidades de líquido/segundo
|
unit.liquidsecond = Unidades de líquido/segundo
|
||||||
@@ -406,6 +422,7 @@ category.items = Itens
|
|||||||
category.crafting = Construindo
|
category.crafting = Construindo
|
||||||
category.shooting = Atirando
|
category.shooting = Atirando
|
||||||
category.optional = Melhoras opcionais
|
category.optional = Melhoras opcionais
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
setting.shadows.name = Shadows
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = Animated Water
|
setting.animatedwater.name = Animated Water
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
||||||
@@ -483,6 +500,18 @@ mode.pvp.name = PvP
|
|||||||
mode.pvp.description = Lutar contra outros jogadores locais.
|
mode.pvp.description = Lutar contra outros jogadores locais.
|
||||||
mode.attack.name = Ataque
|
mode.attack.name = Ataque
|
||||||
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = Itens
|
content.item.name = Itens
|
||||||
content.liquid.name = Liquidos
|
content.liquid.name = Liquidos
|
||||||
content.unit.name = Units
|
content.unit.name = Units
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = Mineradora de Explosão
|
|||||||
block.thermal-pump.name = Cano termico
|
block.thermal-pump.name = Cano termico
|
||||||
block.thermal-generator.name = Gerador Térmico
|
block.thermal-generator.name = Gerador Térmico
|
||||||
block.alloy-smelter.name = Fundidora de Liga
|
block.alloy-smelter.name = Fundidora de Liga
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Projetor Mend
|
block.mend-projector.name = Projetor Mend
|
||||||
block.surge-wall.name = Parede de Surge
|
block.surge-wall.name = Parede de Surge
|
||||||
block.surge-wall-large.name = Parede de Surge grande
|
block.surge-wall-large.name = Parede de Surge grande
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = Derreter
|
|||||||
block.container.name = Container
|
block.container.name = Container
|
||||||
block.launch-pad.name = Launch Pad
|
block.launch-pad.name = Launch Pad
|
||||||
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = Azul
|
team.blue.name = Azul
|
||||||
team.red.name = Vermelho
|
team.red.name = Vermelho
|
||||||
team.orange.name = Laranja
|
team.orange.name = Laranja
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ map.delete.confirm = Вы действительно хотите удалить
|
|||||||
map.random = [accent]Случайная карта
|
map.random = [accent]Случайная карта
|
||||||
map.nospawn = Эта карта не имеет ядер, в которых игрок может появиться! Добавьте[ROYAL] синее[] ядро на эту карту в редакторе карт.
|
map.nospawn = Эта карта не имеет ядер, в которых игрок может появиться! Добавьте[ROYAL] синее[] ядро на эту карту в редакторе карт.
|
||||||
map.nospawn.pvp = У этой карты нет вражеских ядер, в которых игрок может появиться! Добавьте[SCARLET] красные[] ядра к этой карте в редакторе.
|
map.nospawn.pvp = У этой карты нет вражеских ядер, в которых игрок может появиться! Добавьте[SCARLET] красные[] ядра к этой карте в редакторе.
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = Ошибка загрузки карты: повреждённый или недопустимый файл карты.
|
map.invalid = Ошибка загрузки карты: повреждённый или недопустимый файл карты.
|
||||||
editor.brush = Кисть
|
editor.brush = Кисть
|
||||||
editor.openin = Открыть в редакторе
|
editor.openin = Открыть в редакторе
|
||||||
@@ -283,6 +284,7 @@ abandon = Покинуть
|
|||||||
abandon.text = Эта зона и все ресурсы будут потеряны.
|
abandon.text = Эта зона и все ресурсы будут потеряны.
|
||||||
locked = Заблокировано
|
locked = Заблокировано
|
||||||
complete = [LIGHT_GRAY]Завершено:
|
complete = [LIGHT_GRAY]Завершено:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Возобновить зону:\n[LIGHT_GRAY]{0}
|
resume = Возобновить зону:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]Наилучшая волна: {0}
|
bestwave = [LIGHT_GRAY]Наилучшая волна: {0}
|
||||||
launch = < ЗАПУСК >
|
launch = < ЗАПУСК >
|
||||||
@@ -294,7 +296,7 @@ uncover = Раскрыть
|
|||||||
configure = Выгрузить конфигурацию
|
configure = Выгрузить конфигурацию
|
||||||
configure.locked = [LIGHT_GRAY]Разблокировать настройки выгрузки:\nВолна {0}.
|
configure.locked = [LIGHT_GRAY]Разблокировать настройки выгрузки:\nВолна {0}.
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} разблокировано.
|
zone.unlocked = [LIGHT_GRAY]{0} разблокировано.
|
||||||
zone.complete = {0} волн достигнуто:\nТребования для следующей зоны выполнены.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = {0} волн достигнуто:\nВыгружаемая конфигурация разблокирована
|
zone.config.complete = {0} волн достигнуто:\nВыгружаемая конфигурация разблокирована
|
||||||
zone.resources = Обнаруженные ресурсы:
|
zone.resources = Обнаруженные ресурсы:
|
||||||
add = Добавить...
|
add = Добавить...
|
||||||
@@ -333,18 +335,19 @@ no = Нет
|
|||||||
info.title = Информация
|
info.title = Информация
|
||||||
error.title = [crimson]Произошла ошибка
|
error.title = [crimson]Произошла ошибка
|
||||||
error.crashtitle = Произошла ошибка
|
error.crashtitle = Произошла ошибка
|
||||||
blocks.outputspeed = Скорость сверления: {0}/с
|
bar.drillspeed = Скорость сверления: {0}/с
|
||||||
blocks.efficiency = Эффективность: {0}%
|
bar.efficiency = Эффективность: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = Информация о блоке
|
blocks.blockinfo = Информация о блоке
|
||||||
blocks.powerbalance = Энергия: {0}
|
bar.powerbalance = Энергия: {0}
|
||||||
blocks.poweroutput = Выходная энергия: {0}
|
bar.poweroutput = Выходная энергия: {0}
|
||||||
blocks.powercapacity = Вместимость энергии
|
blocks.powercapacity = Вместимость энергии
|
||||||
blocks.powershot = Энергия/выстрел
|
blocks.powershot = Энергия/выстрел
|
||||||
blocks.targetsair = Воздушные цели
|
blocks.targetsair = Воздушные цели
|
||||||
blocks.targetsground = Наземные цели
|
blocks.targetsground = Наземные цели
|
||||||
blocks.items = Предметы: {0}
|
bar.items = Предметы: {0}
|
||||||
blocks.itemsmoved = Скорость перемещения
|
blocks.itemsmoved = Скорость перемещения
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = Радиус действия
|
blocks.shootrange = Радиус действия
|
||||||
blocks.size = Размер
|
blocks.size = Размер
|
||||||
blocks.liquidcapacity = Вместимость жидкости
|
blocks.liquidcapacity = Вместимость жидкости
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = Вместимость предметов
|
|||||||
blocks.basepowergeneration = Базовая генерация энергии
|
blocks.basepowergeneration = Базовая генерация энергии
|
||||||
blocks.powertransferspeed = Скорость передачи энергии
|
blocks.powertransferspeed = Скорость передачи энергии
|
||||||
blocks.craftspeed = Скорость производства
|
blocks.craftspeed = Скорость производства
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = Прием жидкости
|
blocks.inputliquid = Прием жидкости
|
||||||
blocks.inputliquidaux = Вспом. жидкость
|
blocks.inputliquidaux = Вспом. жидкость
|
||||||
blocks.inputitem = Входящий предмет
|
blocks.inputitem = Входящий предмет
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = Выходящая жидкость
|
|||||||
blocks.liquidoutputspeed = Выходная скорость жидкости
|
blocks.liquidoutputspeed = Выходная скорость жидкости
|
||||||
blocks.liquiduse = Используется жидкости
|
blocks.liquiduse = Используется жидкости
|
||||||
blocks.coolant = Охлаждающая жидкость
|
blocks.coolant = Охлаждающая жидкость
|
||||||
blocks.liquid = Жидкость
|
bar.liquid = Жидкость
|
||||||
blocks.coolantuse = Охлажд. жидкости используется
|
blocks.coolantuse = Охлажд. жидкости используется
|
||||||
blocks.inputliquidfuel = Жидкое топливо
|
blocks.inputliquidfuel = Жидкое топливо
|
||||||
blocks.liquidfueluse = Жидкого топлива используется
|
blocks.liquidfueluse = Жидкого топлива используется
|
||||||
blocks.boostitem = Ускоряющий предмет
|
blocks.boostitem = Ускоряющий предмет
|
||||||
blocks.boostliquid = Ускоряющая жидкость
|
blocks.boostliquid = Ускоряющая жидкость
|
||||||
blocks.health = Здоровье
|
blocks.health = Здоровье
|
||||||
blocks.heat = Температура
|
bar.heat = Температура
|
||||||
blocks.power = Энергия
|
bar.power = Энергия
|
||||||
blocks.progress = Строительство продолжается
|
bar.progress = Строительство продолжается
|
||||||
blocks.spawned = Бой. ед.: {0}/{1}
|
bar.spawned = Бой. ед.: {0}/{1}
|
||||||
blocks.power.satisfaction = Энергия
|
blocks.power.satisfaction = Энергия
|
||||||
blocks.inaccuracy = Разброс
|
blocks.inaccuracy = Разброс
|
||||||
blocks.shots = Выстрелы
|
blocks.shots = Выстрелы
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = Время горения топлива
|
|||||||
blocks.inputcapacity = Макс. вместимость входящих предметов
|
blocks.inputcapacity = Макс. вместимость входящих предметов
|
||||||
blocks.outputcapacity = Макс. вместимость выходящих предметов
|
blocks.outputcapacity = Макс. вместимость выходящих предметов
|
||||||
blocks.ammo = Боеприпасы
|
blocks.ammo = Боеприпасы
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = блоки
|
unit.blocks = блоки
|
||||||
unit.powersecond = единиц энергии/секунду
|
unit.powersecond = единиц энергии/секунду
|
||||||
unit.liquidsecond = жидкостных единиц/секунду
|
unit.liquidsecond = жидкостных единиц/секунду
|
||||||
@@ -406,6 +422,7 @@ category.items = Предметы
|
|||||||
category.crafting = Ввод/вывод
|
category.crafting = Ввод/вывод
|
||||||
category.shooting = Cтрельба
|
category.shooting = Cтрельба
|
||||||
category.optional = Дополнительные улучшения
|
category.optional = Дополнительные улучшения
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
setting.shadows.name = Shadows
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = Анимированная вода
|
setting.animatedwater.name = Анимированная вода
|
||||||
setting.antialias.name = Сглаживание[LIGHT_GRAY] (требует перезапуска)[]
|
setting.antialias.name = Сглаживание[LIGHT_GRAY] (требует перезапуска)[]
|
||||||
@@ -483,6 +500,18 @@ mode.pvp.name = Противо-\nстояние
|
|||||||
mode.pvp.description = боритесь против других игроков.
|
mode.pvp.description = боритесь против других игроков.
|
||||||
mode.attack.name = Атака
|
mode.attack.name = Атака
|
||||||
mode.attack.description = Нет волн, цель - уничтожить базу противника.
|
mode.attack.description = Нет волн, цель - уничтожить базу противника.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = Предметы
|
content.item.name = Предметы
|
||||||
content.liquid.name = Жидкости
|
content.liquid.name = Жидкости
|
||||||
content.unit.name = Боевые единицы
|
content.unit.name = Боевые единицы
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = Воздушная буровая установка
|
|||||||
block.thermal-pump.name = Термальный насос
|
block.thermal-pump.name = Термальный насос
|
||||||
block.thermal-generator.name = Термальный генератор
|
block.thermal-generator.name = Термальный генератор
|
||||||
block.alloy-smelter.name = Плавильня кинетического сплава
|
block.alloy-smelter.name = Плавильня кинетического сплава
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Ремонтирующий гранатомёт
|
block.mend-projector.name = Ремонтирующий гранатомёт
|
||||||
block.surge-wall.name = Стена из кинетического сплава
|
block.surge-wall.name = Стена из кинетического сплава
|
||||||
block.surge-wall-large.name = Большая стена из кинетического сплава
|
block.surge-wall-large.name = Большая стена из кинетического сплава
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = Катастрофа
|
|||||||
block.container.name = Склад
|
block.container.name = Склад
|
||||||
block.launch-pad.name = Стартовая площадка
|
block.launch-pad.name = Стартовая площадка
|
||||||
block.launch-pad.description = Запускает партии предметов без необходимости запуска ядра. Незавершённое.
|
block.launch-pad.description = Запускает партии предметов без необходимости запуска ядра. Незавершённое.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = Синяя
|
team.blue.name = Синяя
|
||||||
team.red.name = Красная
|
team.red.name = Красная
|
||||||
team.orange.name = Оранжевая
|
team.orange.name = Оранжевая
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ map.delete.confirm = Haritayi silmek istedigine emin misin? Bu geri alinamaz!
|
|||||||
map.random = [accent]Rasgele harita
|
map.random = [accent]Rasgele harita
|
||||||
map.nospawn = Haritada Oyncularin cikmasi icin cekirdek yok! Haritaya[ROYAL]Mavi[] cekirdek ekle.
|
map.nospawn = Haritada Oyncularin cikmasi icin cekirdek yok! Haritaya[ROYAL]Mavi[] cekirdek ekle.
|
||||||
map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor.
|
map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = Harita yuklenemedi. Gecersiz yada bozuk dosya.
|
map.invalid = Harita yuklenemedi. Gecersiz yada bozuk dosya.
|
||||||
editor.brush = Firca
|
editor.brush = Firca
|
||||||
editor.openin = Editorde ac
|
editor.openin = Editorde ac
|
||||||
@@ -283,6 +284,7 @@ abandon = Abandon
|
|||||||
abandon.text = This zone and all its resources will be lost to the enemy.
|
abandon.text = This zone and all its resources will be lost to the enemy.
|
||||||
locked = Locked
|
locked = Locked
|
||||||
complete = [LIGHT_GRAY]Complete:
|
complete = [LIGHT_GRAY]Complete:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]Best: {0}
|
bestwave = [LIGHT_GRAY]Best: {0}
|
||||||
launch = Launch
|
launch = Launch
|
||||||
@@ -294,7 +296,7 @@ uncover = Uncover
|
|||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
||||||
zone.complete = Zone conditions met.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
||||||
zone.resources = Resources Detected:
|
zone.resources = Resources Detected:
|
||||||
add = Add...
|
add = Add...
|
||||||
@@ -333,18 +335,19 @@ no = Hayir
|
|||||||
info.title = [accent]Bilgi
|
info.title = [accent]Bilgi
|
||||||
error.title = [crimson]Bir hata olustu
|
error.title = [crimson]Bir hata olustu
|
||||||
error.crashtitle = Bir hata olustu
|
error.crashtitle = Bir hata olustu
|
||||||
blocks.outputspeed = Drill Speed: {0}/s
|
bar.drillspeed = Drill Speed: {0}/s
|
||||||
blocks.efficiency = Efficiency: {0}%
|
bar.efficiency = Efficiency: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = Yapi bilgisi
|
blocks.blockinfo = Yapi bilgisi
|
||||||
blocks.powerbalance = Power: {0}
|
bar.powerbalance = Power: {0}
|
||||||
blocks.poweroutput = Power Output: {0}
|
bar.poweroutput = Power Output: {0}
|
||||||
blocks.powercapacity = Guc kapasitesi
|
blocks.powercapacity = Guc kapasitesi
|
||||||
blocks.powershot = Guc/Saldiri hizi
|
blocks.powershot = Guc/Saldiri hizi
|
||||||
blocks.targetsair = Havayi hedef alir mi?
|
blocks.targetsair = Havayi hedef alir mi?
|
||||||
blocks.targetsground = Targets Ground
|
blocks.targetsground = Targets Ground
|
||||||
blocks.items = Items: {0}
|
bar.items = Items: {0}
|
||||||
blocks.itemsmoved = Move Speed
|
blocks.itemsmoved = Move Speed
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = Menzil
|
blocks.shootrange = Menzil
|
||||||
blocks.size = Buyukluk
|
blocks.size = Buyukluk
|
||||||
blocks.liquidcapacity = Sivi kapasitesi
|
blocks.liquidcapacity = Sivi kapasitesi
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = Esya kapasitesi
|
|||||||
blocks.basepowergeneration = Base Power Generation
|
blocks.basepowergeneration = Base Power Generation
|
||||||
blocks.powertransferspeed = Guc transfer hizi
|
blocks.powertransferspeed = Guc transfer hizi
|
||||||
blocks.craftspeed = Yapilma hizi
|
blocks.craftspeed = Yapilma hizi
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = Giris sivi
|
blocks.inputliquid = Giris sivi
|
||||||
blocks.inputliquidaux = Yardimci sivi
|
blocks.inputliquidaux = Yardimci sivi
|
||||||
blocks.inputitem = Giris esyasi
|
blocks.inputitem = Giris esyasi
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = Sivi cikisi
|
|||||||
blocks.liquidoutputspeed = Liquid Output Speed
|
blocks.liquidoutputspeed = Liquid Output Speed
|
||||||
blocks.liquiduse = Sivi kullanimi
|
blocks.liquiduse = Sivi kullanimi
|
||||||
blocks.coolant = Sogutma sivisi
|
blocks.coolant = Sogutma sivisi
|
||||||
blocks.liquid = Liquid
|
bar.liquid = Liquid
|
||||||
blocks.coolantuse = Sogutma sivi kullanimi
|
blocks.coolantuse = Sogutma sivi kullanimi
|
||||||
blocks.inputliquidfuel = Yakit sivisi
|
blocks.inputliquidfuel = Yakit sivisi
|
||||||
blocks.liquidfueluse = Sivi yakit kullanimi
|
blocks.liquidfueluse = Sivi yakit kullanimi
|
||||||
blocks.boostitem = Boost Item
|
blocks.boostitem = Boost Item
|
||||||
blocks.boostliquid = Boost Liquid
|
blocks.boostliquid = Boost Liquid
|
||||||
blocks.health = Can
|
blocks.health = Can
|
||||||
blocks.heat = Heat
|
bar.heat = Heat
|
||||||
blocks.power = Power
|
bar.power = Power
|
||||||
blocks.progress = Build Progress
|
bar.progress = Build Progress
|
||||||
blocks.spawned = Units: {0}/{1}
|
bar.spawned = Units: {0}/{1}
|
||||||
blocks.power.satisfaction = Power Satisfaction
|
blocks.power.satisfaction = Power Satisfaction
|
||||||
blocks.inaccuracy = sekme
|
blocks.inaccuracy = sekme
|
||||||
blocks.shots = vuruslar
|
blocks.shots = vuruslar
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = Yakit yakilma suresi
|
|||||||
blocks.inputcapacity = Giris kapasitesi
|
blocks.inputcapacity = Giris kapasitesi
|
||||||
blocks.outputcapacity = Cikis kapasitesi
|
blocks.outputcapacity = Cikis kapasitesi
|
||||||
blocks.ammo = Ammo
|
blocks.ammo = Ammo
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = Yapilar
|
unit.blocks = Yapilar
|
||||||
unit.powersecond = saniyede bir
|
unit.powersecond = saniyede bir
|
||||||
unit.liquidsecond = Saniyede bir
|
unit.liquidsecond = Saniyede bir
|
||||||
@@ -406,6 +422,7 @@ category.items = esyalar
|
|||||||
category.crafting = uretim
|
category.crafting = uretim
|
||||||
category.shooting = sikma
|
category.shooting = sikma
|
||||||
category.optional = Optional Enhancements
|
category.optional = Optional Enhancements
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
setting.shadows.name = Shadows
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = Animated Water
|
setting.animatedwater.name = Animated Water
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
||||||
@@ -483,6 +500,18 @@ mode.pvp.name = PvP
|
|||||||
mode.pvp.description = fight against other players locally.
|
mode.pvp.description = fight against other players locally.
|
||||||
mode.attack.name = Attack
|
mode.attack.name = Attack
|
||||||
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = Esyalar
|
content.item.name = Esyalar
|
||||||
content.liquid.name = Sivilar
|
content.liquid.name = Sivilar
|
||||||
content.unit.name = Units
|
content.unit.name = Units
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = Patlatici kazici
|
|||||||
block.thermal-pump.name = Termal pompa
|
block.thermal-pump.name = Termal pompa
|
||||||
block.thermal-generator.name = Magma jeneratoru
|
block.thermal-generator.name = Magma jeneratoru
|
||||||
block.alloy-smelter.name = Alloy eritici
|
block.alloy-smelter.name = Alloy eritici
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Mend koruyucu
|
block.mend-projector.name = Mend koruyucu
|
||||||
block.surge-wall.name = kabarma duvari
|
block.surge-wall.name = kabarma duvari
|
||||||
block.surge-wall-large.name = genis kabarma duvari
|
block.surge-wall-large.name = genis kabarma duvari
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = Meltdown
|
|||||||
block.container.name = Container
|
block.container.name = Container
|
||||||
block.launch-pad.name = Launch Pad
|
block.launch-pad.name = Launch Pad
|
||||||
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = blue
|
team.blue.name = blue
|
||||||
team.red.name = red
|
team.red.name = red
|
||||||
team.orange.name = orange
|
team.orange.name = orange
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ map.delete.confirm = Are you sure you want to delete this map? This action canno
|
|||||||
map.random = [accent]Random Map
|
map.random = [accent]Random Map
|
||||||
map.nospawn = This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor.
|
map.nospawn = This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor.
|
||||||
map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor.
|
map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = Error loading map: corrupted or invalid map file.
|
map.invalid = Error loading map: corrupted or invalid map file.
|
||||||
editor.brush = Brush
|
editor.brush = Brush
|
||||||
editor.openin = Open In Editor
|
editor.openin = Open In Editor
|
||||||
@@ -283,6 +284,7 @@ abandon = Abandon
|
|||||||
abandon.text = This zone and all its resources will be lost to the enemy.
|
abandon.text = This zone and all its resources will be lost to the enemy.
|
||||||
locked = Locked
|
locked = Locked
|
||||||
complete = [LIGHT_GRAY]Complete:
|
complete = [LIGHT_GRAY]Complete:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]Best: {0}
|
bestwave = [LIGHT_GRAY]Best: {0}
|
||||||
launch = Launch
|
launch = Launch
|
||||||
@@ -294,7 +296,7 @@ uncover = Uncover
|
|||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
configure.locked = [LIGHT_GRAY]Reach wave {0}\nto configure loadout.
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
zone.unlocked = [LIGHT_GRAY]{0} unlocked.
|
||||||
zone.complete = Zone conditions met.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
||||||
zone.resources = Resources Detected:
|
zone.resources = Resources Detected:
|
||||||
add = Add...
|
add = Add...
|
||||||
@@ -333,18 +335,19 @@ no = No
|
|||||||
info.title = [Vurgu] Bilgi
|
info.title = [Vurgu] Bilgi
|
||||||
error.title = [crimson] Bir hata oluştu
|
error.title = [crimson] Bir hata oluştu
|
||||||
error.crashtitle = Bir hata oluştu
|
error.crashtitle = Bir hata oluştu
|
||||||
blocks.outputspeed = Drill Speed: {0}/s
|
bar.drillspeed = Drill Speed: {0}/s
|
||||||
blocks.efficiency = Efficiency: {0}%
|
bar.efficiency = Efficiency: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = Blok Bilgisi
|
blocks.blockinfo = Blok Bilgisi
|
||||||
blocks.powerbalance = Power: {0}
|
bar.powerbalance = Power: {0}
|
||||||
blocks.poweroutput = Power Output: {0}
|
bar.poweroutput = Power Output: {0}
|
||||||
blocks.powercapacity = Güç kapasitesi
|
blocks.powercapacity = Güç kapasitesi
|
||||||
blocks.powershot = Güç / atış
|
blocks.powershot = Güç / atış
|
||||||
blocks.targetsair = Targets Air
|
blocks.targetsair = Targets Air
|
||||||
blocks.targetsground = Targets Ground
|
blocks.targetsground = Targets Ground
|
||||||
blocks.items = Items: {0}
|
bar.items = Items: {0}
|
||||||
blocks.itemsmoved = Move Speed
|
blocks.itemsmoved = Move Speed
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = Range
|
blocks.shootrange = Range
|
||||||
blocks.size = Boyut
|
blocks.size = Boyut
|
||||||
blocks.liquidcapacity = Sıvı kapasitesi
|
blocks.liquidcapacity = Sıvı kapasitesi
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = Ürün kapasitesi
|
|||||||
blocks.basepowergeneration = Base Power Generation
|
blocks.basepowergeneration = Base Power Generation
|
||||||
blocks.powertransferspeed = Power Transfer
|
blocks.powertransferspeed = Power Transfer
|
||||||
blocks.craftspeed = Production Speed
|
blocks.craftspeed = Production Speed
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = Giriş sıvı
|
blocks.inputliquid = Giriş sıvı
|
||||||
blocks.inputliquidaux = Aux Liquid
|
blocks.inputliquidaux = Aux Liquid
|
||||||
blocks.inputitem = Giriş öğesi
|
blocks.inputitem = Giriş öğesi
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = Liquid Output
|
|||||||
blocks.liquidoutputspeed = Liquid Output Speed
|
blocks.liquidoutputspeed = Liquid Output Speed
|
||||||
blocks.liquiduse = Liquid Use
|
blocks.liquiduse = Liquid Use
|
||||||
blocks.coolant = Coolant
|
blocks.coolant = Coolant
|
||||||
blocks.liquid = Liquid
|
bar.liquid = Liquid
|
||||||
blocks.coolantuse = Coolant Use
|
blocks.coolantuse = Coolant Use
|
||||||
blocks.inputliquidfuel = Fuel Liquid
|
blocks.inputliquidfuel = Fuel Liquid
|
||||||
blocks.liquidfueluse = Liquid Fuel Use
|
blocks.liquidfueluse = Liquid Fuel Use
|
||||||
blocks.boostitem = Boost Item
|
blocks.boostitem = Boost Item
|
||||||
blocks.boostliquid = Boost Liquid
|
blocks.boostliquid = Boost Liquid
|
||||||
blocks.health = Can
|
blocks.health = Can
|
||||||
blocks.heat = Heat
|
bar.heat = Heat
|
||||||
blocks.power = Power
|
bar.power = Power
|
||||||
blocks.progress = Build Progress
|
bar.progress = Build Progress
|
||||||
blocks.spawned = Units: {0}/{1}
|
bar.spawned = Units: {0}/{1}
|
||||||
blocks.power.satisfaction = Power Satisfaction
|
blocks.power.satisfaction = Power Satisfaction
|
||||||
blocks.inaccuracy = yanlışlık
|
blocks.inaccuracy = yanlışlık
|
||||||
blocks.shots = atışlar
|
blocks.shots = atışlar
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = Fuel Burn Time
|
|||||||
blocks.inputcapacity = Giriş kapasitesi
|
blocks.inputcapacity = Giriş kapasitesi
|
||||||
blocks.outputcapacity = Çıkış kapasitesi
|
blocks.outputcapacity = Çıkış kapasitesi
|
||||||
blocks.ammo = Ammo
|
blocks.ammo = Ammo
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = blocks
|
unit.blocks = blocks
|
||||||
unit.powersecond = power units/second
|
unit.powersecond = power units/second
|
||||||
unit.liquidsecond = liquid units/second
|
unit.liquidsecond = liquid units/second
|
||||||
@@ -406,6 +422,7 @@ category.items = Items
|
|||||||
category.crafting = Crafting
|
category.crafting = Crafting
|
||||||
category.shooting = Shooting
|
category.shooting = Shooting
|
||||||
category.optional = Optional Enhancements
|
category.optional = Optional Enhancements
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
setting.shadows.name = Shadows
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = Animated Water
|
setting.animatedwater.name = Animated Water
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
||||||
@@ -483,6 +500,18 @@ mode.pvp.name = PvP
|
|||||||
mode.pvp.description = fight against other players locally.
|
mode.pvp.description = fight against other players locally.
|
||||||
mode.attack.name = Attack
|
mode.attack.name = Attack
|
||||||
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
mode.attack.description = No waves, with the goal to destroy the enemy base.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = Items
|
content.item.name = Items
|
||||||
content.liquid.name = Liquids
|
content.liquid.name = Liquids
|
||||||
content.unit.name = Units
|
content.unit.name = Units
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = Blast Drill
|
|||||||
block.thermal-pump.name = Thermal Pump
|
block.thermal-pump.name = Thermal Pump
|
||||||
block.thermal-generator.name = Thermal Generator
|
block.thermal-generator.name = Thermal Generator
|
||||||
block.alloy-smelter.name = Alloy Smtler
|
block.alloy-smelter.name = Alloy Smtler
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Mend Projector
|
block.mend-projector.name = Mend Projector
|
||||||
block.surge-wall.name = Surge Wall
|
block.surge-wall.name = Surge Wall
|
||||||
block.surge-wall-large.name = Large Surge Wall
|
block.surge-wall-large.name = Large Surge Wall
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = Meltdown
|
|||||||
block.container.name = Container
|
block.container.name = Container
|
||||||
block.launch-pad.name = Launch Pad
|
block.launch-pad.name = Launch Pad
|
||||||
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = blue
|
team.blue.name = blue
|
||||||
team.red.name = red
|
team.red.name = red
|
||||||
team.orange.name = orange
|
team.orange.name = orange
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ stat.destroyed = Будівель знищено:[accent] {0}
|
|||||||
stat.deconstructed = Будівель декоструйовано[accent] {0}
|
stat.deconstructed = Будівель декоструйовано[accent] {0}
|
||||||
stat.delivered = Ресурсів здобуто:
|
stat.delivered = Ресурсів здобуто:
|
||||||
stat.rank = Фінальний рахунок: [accent]{0}
|
stat.rank = Фінальний рахунок: [accent]{0}
|
||||||
placeline =Ви вибрали блок.\nВи можете[accent] будувати в лінію[] [accent] утримуючи палець протягом декількох секунд[] і потім перетягуючи його.\n\n[scarlet]ЗРОБИ ЦЕ.
|
placeline = Ви вибрали блок.\nВи можете[accent] будувати в лінію[] [accent] утримуючи палець протягом декількох секунд[] і потім перетягуючи його.\n\n[scarlet]ЗРОБИ ЦЕ.
|
||||||
removearea = Ви вибрали режим видалення.\nВи можете[accent] видаляти блоки в обраній області[],[accent] утримуючи палець кілька секунд [] і потім перетягуючи його.\n\n[scarlet]ЗРОБИ ЦЕ.
|
removearea = Ви вибрали режим видалення.\nВи можете[accent] видаляти блоки в обраній області[],[accent] утримуючи палець кілька секунд [] і потім перетягуючи його.\n\n[scarlet]ЗРОБИ ЦЕ.
|
||||||
launcheditems = [accent]Запущені предмети
|
launcheditems = [accent]Запущені предмети
|
||||||
map.delete = Ви впевнені, що хочете видалити мапу "[accent]{0}[]"?
|
map.delete = Ви впевнені, що хочете видалити мапу "[accent]{0}[]"?
|
||||||
@@ -181,7 +181,8 @@ builtin = Bбудована
|
|||||||
map.delete.confirm = Ви впевнені, що хочете видалити цю мапу? Цю дію не можна скасувати!
|
map.delete.confirm = Ви впевнені, що хочете видалити цю мапу? Цю дію не можна скасувати!
|
||||||
map.random = [accent]Випадкова мапа
|
map.random = [accent]Випадкова мапа
|
||||||
map.nospawn = Ця мапа не має жодного ядра для спавну гравця! Додайте[ROYAL] сине[] ядро в цю мапу редакторі.
|
map.nospawn = Ця мапа не має жодного ядра для спавну гравця! Додайте[ROYAL] сине[] ядро в цю мапу редакторі.
|
||||||
map.nospawn.pvp = У цієї мапи немає ворожих ядер, в яких гравець може з'явитися! Додайте[SCARLET] червоне[] ядро до цієї мапи в редакторі.
|
map.nospawn.pvp = У цієї мапи немає ворожих ядер, в яких гравець може з'явитися! Додайте[SCARLET] не сине[] ядро до цієї мапи в редакторі.
|
||||||
|
map.nospawn.attack = У цієї мапи немає ворожих ядер,які гравець може атакувати! Додайте[SCARLET] червоне[] ядро до цієї мапи в редакторі.
|
||||||
map.invalid = Помилка завантаження мапи: пошкоджений або невірний файл мапи.
|
map.invalid = Помилка завантаження мапи: пошкоджений або невірний файл мапи.
|
||||||
editor.brush = Пензлик
|
editor.brush = Пензлик
|
||||||
editor.openin = Відкрити в редакторі
|
editor.openin = Відкрити в редакторі
|
||||||
@@ -283,6 +284,7 @@ abandon = Покинути
|
|||||||
abandon.text = Ця зона і всі її ресурси будуть втрачені для ворога.
|
abandon.text = Ця зона і всі її ресурси будуть втрачені для ворога.
|
||||||
locked = Заблоковано
|
locked = Заблоковано
|
||||||
complete = [LIGHT_GRAY]Завершено:
|
complete = [LIGHT_GRAY]Завершено:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Відновити зону:\n[LIGHT_GRAY]{0}
|
resume = Відновити зону:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]Найкраща хвиля: {0}
|
bestwave = [LIGHT_GRAY]Найкраща хвиля: {0}
|
||||||
launch = < ЗАПУСК >
|
launch = < ЗАПУСК >
|
||||||
@@ -294,7 +296,7 @@ uncover = Розкрити
|
|||||||
configure = Вивантаження
|
configure = Вивантаження
|
||||||
configure.locked = [LIGHT_GRAY]Розблокувати можливість вивантаження ресурсів:\nWave {0}.
|
configure.locked = [LIGHT_GRAY]Розблокувати можливість вивантаження ресурсів:\nWave {0}.
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} розблоковано
|
zone.unlocked = [LIGHT_GRAY]{0} розблоковано
|
||||||
zone.complete = {0} хвиль досягнено:\nВимоги для нової зони виконані.
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = {0} хвиль досягнено. reached:\nРозблоковано можливість вивантаження.
|
zone.config.complete = {0} хвиль досягнено. reached:\nРозблоковано можливість вивантаження.
|
||||||
zone.resources = Виявлені ресурси:
|
zone.resources = Виявлені ресурси:
|
||||||
add = Додати...
|
add = Додати...
|
||||||
@@ -333,18 +335,19 @@ no = Ні
|
|||||||
info.title = Інформація
|
info.title = Інформація
|
||||||
error.title = [crimson]Виникла помилка
|
error.title = [crimson]Виникла помилка
|
||||||
error.crashtitle = Виникла помилка
|
error.crashtitle = Виникла помилка
|
||||||
blocks.outputspeed = Швидкість свердління: {0}/с
|
bar.drillspeed = Швидкість свердління: {0}/с
|
||||||
blocks.efficiency = Ефективність: {0}%
|
bar.efficiency = Ефективність: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = Інформація про блок
|
blocks.blockinfo = Інформація про блок
|
||||||
blocks.powerbalance = Енергія: {0}
|
bar.powerbalance = Енергія: {0}
|
||||||
blocks.poweroutput = Вихідна енергія: {0}
|
bar.poweroutput = Вихідна енергія: {0}
|
||||||
blocks.powercapacity = Місткість енергії
|
blocks.powercapacity = Місткість енергії
|
||||||
blocks.powershot = Енергія/постріл
|
blocks.powershot = Енергія/постріл
|
||||||
blocks.targetsair = Повітряні мішені
|
blocks.targetsair = Повітряні мішені
|
||||||
blocks.targetsground = Наземні мішені
|
blocks.targetsground = Наземні мішені
|
||||||
blocks.items = Предмети: {0}
|
bar.items = Предмети: {0}
|
||||||
blocks.itemsmoved = Швидкість переміщення
|
blocks.itemsmoved = Швидкість переміщення
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = Діапазон дії
|
blocks.shootrange = Діапазон дії
|
||||||
blocks.size = Розмір
|
blocks.size = Розмір
|
||||||
blocks.liquidcapacity = Місткість рідини
|
blocks.liquidcapacity = Місткість рідини
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = Місткість предметів
|
|||||||
blocks.basepowergeneration = Базова генерація енергії
|
blocks.basepowergeneration = Базова генерація енергії
|
||||||
blocks.powertransferspeed = Швидкість передачі енергії
|
blocks.powertransferspeed = Швидкість передачі енергії
|
||||||
blocks.craftspeed = Швидкість виробництва
|
blocks.craftspeed = Швидкість виробництва
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = Прийом рідини
|
blocks.inputliquid = Прийом рідини
|
||||||
blocks.inputliquidaux = Допоміжна рідина
|
blocks.inputliquidaux = Допоміжна рідина
|
||||||
blocks.inputitem = Вхідний предмет
|
blocks.inputitem = Вхідний предмет
|
||||||
@@ -370,17 +375,17 @@ blocks.liquidoutput = Вихідна рідина
|
|||||||
blocks.liquidoutputspeed = Швидкість вихідної рідини
|
blocks.liquidoutputspeed = Швидкість вихідної рідини
|
||||||
blocks.liquiduse = Використовуеться рідин
|
blocks.liquiduse = Використовуеться рідин
|
||||||
blocks.coolant = Охолоджуюча рідина
|
blocks.coolant = Охолоджуюча рідина
|
||||||
blocks.liquid = Рідина
|
bar.liquid = Рідина
|
||||||
blocks.coolantuse = Охолодж. рідини використовуеться
|
blocks.coolantuse = Охолодж. рідини використовуеться
|
||||||
blocks.inputliquidfuel = Рідке паливо
|
blocks.inputliquidfuel = Рідке паливо
|
||||||
blocks.liquidfueluse = Рідкого палива використовуеться
|
blocks.liquidfueluse = Рідкого палива використовуеться
|
||||||
blocks.boostitem = Прискорюючий предмет
|
blocks.boostitem = Прискорюючий предмет
|
||||||
blocks.boostliquid = Прискорююча рідина
|
blocks.boostliquid = Прискорююча рідина
|
||||||
blocks.health = Здоров'я
|
blocks.health = Здоров'я
|
||||||
blocks.heat = Температура
|
bar.heat = Температура
|
||||||
blocks.power = Енергія
|
bar.power = Енергія
|
||||||
blocks.progress = Будівництво триває
|
bar.progress = Будівництво триває
|
||||||
blocks.spawned = Бой. од.: {0}/{1}
|
bar.spawned = Бой. од.: {0}/{1}
|
||||||
blocks.power.satisfaction = Енергія
|
blocks.power.satisfaction = Енергія
|
||||||
blocks.inaccuracy = Розкид
|
blocks.inaccuracy = Розкид
|
||||||
blocks.shots = Постріли
|
blocks.shots = Постріли
|
||||||
@@ -390,6 +395,17 @@ blocks.fuelburntime = Час горіння топлива
|
|||||||
blocks.inputcapacity = Макс. місткість вхідних предметів
|
blocks.inputcapacity = Макс. місткість вхідних предметів
|
||||||
blocks.outputcapacity = Макс. місткість вихідних предметів
|
blocks.outputcapacity = Макс. місткість вихідних предметів
|
||||||
blocks.ammo = Боєприпаси
|
blocks.ammo = Боєприпаси
|
||||||
|
bullet.damage = [stat]{0}[lightgray] шкода
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] шкода по ділянці ~[stat] {1}[lightgray] плитк.
|
||||||
|
bullet.incendiary = [stat]запальний
|
||||||
|
bullet.homing = [stat]самонаведення
|
||||||
|
bullet.shock = [stat]шок
|
||||||
|
bullet.frag = [stat]осколкова граната
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] відкидання
|
||||||
|
bullet.freezing = [stat]заморожування
|
||||||
|
bullet.tarred = [stat]дьогтьовий
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x множник патронів
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x перезаряджання
|
||||||
unit.blocks = блоки
|
unit.blocks = блоки
|
||||||
unit.powersecond = одиниць енергії/секунду
|
unit.powersecond = одиниць енергії/секунду
|
||||||
unit.liquidsecond = рідких одиниць/секунду
|
unit.liquidsecond = рідких одиниць/секунду
|
||||||
@@ -406,7 +422,8 @@ category.items = Предмети
|
|||||||
category.crafting = Введення/виведення
|
category.crafting = Введення/виведення
|
||||||
category.shooting = Стрільба
|
category.shooting = Стрільба
|
||||||
category.optional = Додаткові поліпшення
|
category.optional = Додаткові поліпшення
|
||||||
setting.shadows.name = Shadows
|
setting.landscape.name = Заблокований пейхаж
|
||||||
|
setting.shadows.name = Тіні
|
||||||
setting.animatedwater.name = Анімована вода
|
setting.animatedwater.name = Анімована вода
|
||||||
setting.antialias.name = Згладжування[LIGHT_GRAY] (потребує перезапуску)[]
|
setting.antialias.name = Згладжування[LIGHT_GRAY] (потребує перезапуску)[]
|
||||||
setting.indicators.name = Показувати у сторону ворогів та союзників
|
setting.indicators.name = Показувати у сторону ворогів та союзників
|
||||||
@@ -476,13 +493,25 @@ mode.help.title = Опис режимів
|
|||||||
mode.survival.name = Хвилі
|
mode.survival.name = Хвилі
|
||||||
mode.survival.description = Звичайний режим. В цьому режимі треба самим добувати ресурси та хвилі йдуть беззупинно.
|
mode.survival.description = Звичайний режим. В цьому режимі треба самим добувати ресурси та хвилі йдуть беззупинно.
|
||||||
mode.sandbox.name = Пісочниця
|
mode.sandbox.name = Пісочниця
|
||||||
mode.sandbox.description = В режимі "Пісочниця" бескінечні ресурси(але їх все одно можно добувати) та хвилі йдуть за вашим бажанням.
|
mode.sandbox.description = В режимі "Пісочниця" незкінченні ресурси(але їх все одно можно добувати) та хвилі йдуть за вашим бажанням.
|
||||||
mode.freebuild.name = Вільне\nбудівництво
|
mode.freebuild.name = Вільне\nбудівництво
|
||||||
mode.freebuild.description = В режимі "Пісочниця" треба самим добувати ресурси та хвилі йдуть за вашим бажанням.
|
mode.freebuild.description = В режимі "Пісочниця" треба самим добувати ресурси та хвилі йдуть за вашим бажанням.
|
||||||
mode.pvp.name = PVP
|
mode.pvp.name = PVP
|
||||||
mode.pvp.description = боріться проти інших гравців.
|
mode.pvp.description = боріться проти інших гравців.
|
||||||
mode.attack.name = Атака
|
mode.attack.name = Атака
|
||||||
mode.attack.description = Немає хвиль, мета - знищити базу противника.
|
mode.attack.description = Немає хвиль, мета - знищити базу противника.
|
||||||
|
mode.custom = Користувальницькі правила
|
||||||
|
rules.infiniteresources = Нескінченні ресурси
|
||||||
|
rules.wavetimer = Таймер Хвиль
|
||||||
|
rules.waves = Хвилі
|
||||||
|
rules.enemyCheat = Нескінченні ресурси для ШІ
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Падіння бойових одиниць
|
||||||
|
rules.enemycorebuildradius = Радіус заборони будування для Ворожого Ядра:[LIGHT_GRAY] (плитки)
|
||||||
|
rules.respawntime = Час відродження:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Інтервал хвиль:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Множник затрат на будівництво
|
||||||
|
rules.buildspeedmultiplier = Множник швидкості будування
|
||||||
content.item.name = Предмети
|
content.item.name = Предмети
|
||||||
content.liquid.name = Рідини
|
content.liquid.name = Рідини
|
||||||
content.unit.name = Бойові одиниці
|
content.unit.name = Бойові одиниці
|
||||||
@@ -594,8 +623,8 @@ block.core-foundation.name = Ядро: Штаб
|
|||||||
block.core-nucleus.name = Ядро: Атом
|
block.core-nucleus.name = Ядро: Атом
|
||||||
block.deepwater.name = Глибоководдя
|
block.deepwater.name = Глибоководдя
|
||||||
block.water.name = Вода
|
block.water.name = Вода
|
||||||
block.tainted-water.name = Tainted Water
|
block.tainted-water.name = Забруднена вода
|
||||||
block.darksand-tainted-water.name = Dark Sand Tainted Water
|
block.darksand-tainted-water.name = Темний пісок з забрудненою водою
|
||||||
block.tar.name = Tar
|
block.tar.name = Tar
|
||||||
block.stone.name = Камінь
|
block.stone.name = Камінь
|
||||||
block.sand.name = Пісок
|
block.sand.name = Пісок
|
||||||
@@ -616,10 +645,10 @@ block.pine.name = Сосна
|
|||||||
block.white-tree-dead.name = Мертве Біле Дерево
|
block.white-tree-dead.name = Мертве Біле Дерево
|
||||||
block.white-tree.name = Біле Дерево
|
block.white-tree.name = Біле Дерево
|
||||||
block.spore-cluster.name = Скупчення спор
|
block.spore-cluster.name = Скупчення спор
|
||||||
block.metal-floor.name = Металевий Пол
|
block.metal-floor.name = Металевий Пол 1
|
||||||
block.metal-floor-2.name = Металевий Пол 2
|
block.metal-floor-2.name = Металевий Пол 2
|
||||||
block.metal-floor-3.name = Металевий Пол 3
|
block.metal-floor-3.name = Металевий Пол 3
|
||||||
block.metal-floor-5.name = Металевий Пол 5
|
block.metal-floor-5.name = Металевий Пол 4
|
||||||
block.metal-floor-damaged.name = Пошкоджений Металевий Пол
|
block.metal-floor-damaged.name = Пошкоджений Металевий Пол
|
||||||
block.ignarock.name = Магматичні Гірські Породи
|
block.ignarock.name = Магматичні Гірські Породи
|
||||||
block.hotrock.name = Гарячий Камінь
|
block.hotrock.name = Гарячий Камінь
|
||||||
@@ -722,6 +751,7 @@ block.blast-drill.name = Бурова установка
|
|||||||
block.thermal-pump.name = Тепловий насос
|
block.thermal-pump.name = Тепловий насос
|
||||||
block.thermal-generator.name = Тепловий генератор
|
block.thermal-generator.name = Тепловий генератор
|
||||||
block.alloy-smelter.name = Сплавовий завод
|
block.alloy-smelter.name = Сплавовий завод
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = Ремонту гранатомет
|
block.mend-projector.name = Ремонту гранатомет
|
||||||
block.surge-wall.name = Хвиляста стіна
|
block.surge-wall.name = Хвиляста стіна
|
||||||
block.surge-wall-large.name = Велика хвиляста стіна
|
block.surge-wall-large.name = Велика хвиляста стіна
|
||||||
@@ -737,6 +767,7 @@ block.meltdown.name = Розтоплення
|
|||||||
block.container.name = Склад
|
block.container.name = Склад
|
||||||
block.launch-pad.name = Стартовий майданчик
|
block.launch-pad.name = Стартовий майданчик
|
||||||
block.launch-pad.description = Запускає партії елементів без необхідності запуску ядра. Незакінчено.
|
block.launch-pad.description = Запускає партії елементів без необхідності запуску ядра. Незакінчено.
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = Синя
|
team.blue.name = Синя
|
||||||
team.red.name = Червона
|
team.red.name = Червона
|
||||||
team.orange.name = Помаренчева
|
team.orange.name = Помаренчева
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ showagain = 不再显示
|
|||||||
coreattack = < 核心正在受到攻击! >
|
coreattack = < 核心正在受到攻击! >
|
||||||
nearpoint = [[ [scarlet]LEAVE DROP POINT IMMEDIATELY[] ]\nannihilation imminent
|
nearpoint = [[ [scarlet]LEAVE DROP POINT IMMEDIATELY[] ]\nannihilation imminent
|
||||||
outofbounds = [[ OUT OF BOUNDS ]\n[]self-destruct in {0}
|
outofbounds = [[ OUT OF BOUNDS ]\n[]self-destruct in {0}
|
||||||
database = Core Database
|
database = 核心数据
|
||||||
savegame = 保存游戏
|
savegame = 保存游戏
|
||||||
loadgame = 载入游戏
|
loadgame = 载入游戏
|
||||||
joingame = 加入游戏
|
joingame = 加入游戏
|
||||||
@@ -51,7 +51,7 @@ noname = Pick a[accent] player name[] first.
|
|||||||
filename = 文件名:
|
filename = 文件名:
|
||||||
unlocked = 新方块已解锁!
|
unlocked = 新方块已解锁!
|
||||||
completed = [accent]Completed
|
completed = [accent]Completed
|
||||||
techtree = Tech Tree
|
techtree = 科技树
|
||||||
research.list = [LIGHT_GRAY]Research:
|
research.list = [LIGHT_GRAY]Research:
|
||||||
research = Research
|
research = Research
|
||||||
researched = [LIGHT_GRAY]{0} researched.
|
researched = [LIGHT_GRAY]{0} researched.
|
||||||
@@ -182,6 +182,7 @@ map.delete.confirm = 确认要删除地图吗?这个操作无法撤销!
|
|||||||
map.random = [accent]随机地图
|
map.random = [accent]随机地图
|
||||||
map.nospawn = 这个地图没有核心!请在编辑器中添加一个[ROYAL]蓝色[]的核心。
|
map.nospawn = 这个地图没有核心!请在编辑器中添加一个[ROYAL]蓝色[]的核心。
|
||||||
map.nospawn.pvp = 这个地图没有敌人的核心!请在编辑器中添加一个[ROYAL]红色[]的核心。
|
map.nospawn.pvp = 这个地图没有敌人的核心!请在编辑器中添加一个[ROYAL]红色[]的核心。
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = 地图载入错误:地图文件可能已经损坏。
|
map.invalid = 地图载入错误:地图文件可能已经损坏。
|
||||||
editor.brush = 笔刷
|
editor.brush = 笔刷
|
||||||
editor.openin = 在编辑器中打开
|
editor.openin = 在编辑器中打开
|
||||||
@@ -283,6 +284,7 @@ abandon = Abandon
|
|||||||
abandon.text = 这个区域和它的所有资源会被敌人没收.
|
abandon.text = 这个区域和它的所有资源会被敌人没收.
|
||||||
locked = 已被锁定
|
locked = 已被锁定
|
||||||
complete = [LIGHT_GRAY]完成:
|
complete = [LIGHT_GRAY]完成:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
resume = Resume Zone:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]最好: {0}
|
bestwave = [LIGHT_GRAY]最好: {0}
|
||||||
launch = < 发射 >
|
launch = < 发射 >
|
||||||
@@ -294,7 +296,7 @@ uncover = Uncover
|
|||||||
configure = 设定 Loadout
|
configure = 设定 Loadout
|
||||||
configure.locked = [LIGHT_GRAY]到达第 {0} 波\n才设定 loadout.
|
configure.locked = [LIGHT_GRAY]到达第 {0} 波\n才设定 loadout.
|
||||||
zone.unlocked = [LIGHT_GRAY]{0} 已解锁。
|
zone.unlocked = [LIGHT_GRAY]{0} 已解锁。
|
||||||
zone.complete = 区域条件达成。
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
zone.config.complete = Wave {0} reached:\nLoadout config unlocked.
|
||||||
zone.resources = 已被发现的资源:
|
zone.resources = 已被发现的资源:
|
||||||
add = Add...
|
add = Add...
|
||||||
@@ -308,13 +310,13 @@ error.alreadyconnected = 已连接。
|
|||||||
error.mapnotfound = 找不到地图文件!
|
error.mapnotfound = 找不到地图文件!
|
||||||
error.io = 网络 I/O 错误。
|
error.io = 网络 I/O 错误。
|
||||||
error.any = 未知网络错误。
|
error.any = 未知网络错误。
|
||||||
zone.groundZero.name = Ground Zero
|
zone.groundZero.name = 零号地区
|
||||||
zone.craters.name = The Craters
|
zone.craters.name = 陨石地带
|
||||||
zone.frozenForest.name = Frozen Forest
|
zone.frozenForest.name = 冰冻森林
|
||||||
zone.ruinousShores.name = Ruinous Shores
|
zone.ruinousShores.name = 毁灭海岸
|
||||||
zone.stainedMountains.name = Stained Mountains
|
zone.stainedMountains.name = 绵延群山
|
||||||
zone.desolateRift.name = Desolate Rift
|
zone.desolateRift.name = 荒芜裂谷
|
||||||
zone.nuclearComplex.name = Nuclear Production Complex
|
zone.nuclearComplex.name = 核能生产
|
||||||
settings.language = 语言
|
settings.language = 语言
|
||||||
settings.reset = 恢复默认
|
settings.reset = 恢复默认
|
||||||
settings.rebind = 重新绑定
|
settings.rebind = 重新绑定
|
||||||
@@ -333,18 +335,19 @@ no = 不
|
|||||||
info.title = [accent]详情
|
info.title = [accent]详情
|
||||||
error.title = [crimson]发生了一个错误
|
error.title = [crimson]发生了一个错误
|
||||||
error.crashtitle = 发生了一个错误
|
error.crashtitle = 发生了一个错误
|
||||||
blocks.outputspeed = Drill Speed: {0}/s
|
bar.drillspeed = 挖掘速度: {0}/s
|
||||||
blocks.efficiency = Efficiency: {0}%
|
bar.efficiency = 效率: {0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = 方块详情
|
blocks.blockinfo = 方块详情
|
||||||
blocks.powerbalance = Power: {0}
|
bar.powerbalance = 能量: {0}
|
||||||
blocks.poweroutput = Power Output: {0}
|
bar.poweroutput = 能量输出: {0}
|
||||||
blocks.powercapacity = 能量容量
|
blocks.powercapacity = 能量容量
|
||||||
blocks.powershot = 能量/发射
|
blocks.powershot = 能量/发射
|
||||||
blocks.targetsair = 攻击空中单位
|
blocks.targetsair = 攻击空中单位
|
||||||
blocks.targetsground = Targets Ground
|
blocks.targetsground = 攻击地面单位
|
||||||
blocks.items = Items: {0}
|
bar.items = 物体: {0}
|
||||||
blocks.itemsmoved = 移动速度
|
blocks.itemsmoved = 移动速度
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = 范围
|
blocks.shootrange = 范围
|
||||||
blocks.size = 尺寸
|
blocks.size = 尺寸
|
||||||
blocks.liquidcapacity = 液体容量
|
blocks.liquidcapacity = 液体容量
|
||||||
@@ -358,6 +361,8 @@ blocks.itemcapacity = 物品容量
|
|||||||
blocks.basepowergeneration = 基础能源输出
|
blocks.basepowergeneration = 基础能源输出
|
||||||
blocks.powertransferspeed = 能量传输
|
blocks.powertransferspeed = 能量传输
|
||||||
blocks.craftspeed = 生产速度
|
blocks.craftspeed = 生产速度
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = 液体输入
|
blocks.inputliquid = 液体输入
|
||||||
blocks.inputliquidaux = 辅助液体
|
blocks.inputliquidaux = 辅助液体
|
||||||
blocks.inputitem = 物品输入
|
blocks.inputitem = 物品输入
|
||||||
@@ -365,23 +370,22 @@ blocks.inputitems = 物品输入
|
|||||||
blocks.outputitem = 物品输出
|
blocks.outputitem = 物品输出
|
||||||
blocks.drilltier = 可钻探矿物
|
blocks.drilltier = 可钻探矿物
|
||||||
blocks.drillspeed = 基础钻探速度
|
blocks.drillspeed = 基础钻探速度
|
||||||
blocks.maxunits = Max Active Units
|
blocks.maxunits = 最大单位数量
|
||||||
blocks.liquidoutput = 液体输出
|
blocks.liquidoutput = 液体输出
|
||||||
blocks.liquidoutputspeed = 液体输出速度
|
blocks.liquidoutputspeed = 液体输出速度
|
||||||
blocks.liquiduse = 液体使用速度
|
blocks.liquiduse = 液体使用速度
|
||||||
blocks.coolant = 冷却剂
|
blocks.coolant = 冷却剂
|
||||||
blocks.liquid = Liquid
|
bar.liquid = 液体
|
||||||
blocks.coolantuse = 冷却剂使用速度
|
blocks.coolantuse = 冷却剂使用速度
|
||||||
blocks.inputliquidfuel = 液体燃料输入
|
blocks.inputliquidfuel = 液体燃料输入
|
||||||
blocks.liquidfueluse = 液体燃料使用速度
|
blocks.liquidfueluse = 液体燃料使用速度
|
||||||
blocks.boostitem = 强化物件
|
blocks.boostitem = 强化物件
|
||||||
blocks.boostliquid = 强化液体
|
blocks.boostliquid = 强化液体
|
||||||
blocks.health = 生命值
|
blocks.health = 生命值
|
||||||
blocks.heat = Heat
|
bar.heat = Heat
|
||||||
blocks.power = 电力
|
bar.power = 电力
|
||||||
blocks.progress = Build Progress
|
bar.progress = 制造进度
|
||||||
blocks.spawned = Units: {0}/{1}
|
bar.spawned = 单位数量: {0}/{1}
|
||||||
blocks.power.satisfaction = 电力见面
|
|
||||||
blocks.inaccuracy = 误差
|
blocks.inaccuracy = 误差
|
||||||
blocks.shots = 发射数
|
blocks.shots = 发射数
|
||||||
blocks.reload = 重新装弹
|
blocks.reload = 重新装弹
|
||||||
@@ -390,6 +394,17 @@ blocks.fuelburntime = 燃料燃烧时间
|
|||||||
blocks.inputcapacity = 输入容量
|
blocks.inputcapacity = 输入容量
|
||||||
blocks.outputcapacity = 输出容量
|
blocks.outputcapacity = 输出容量
|
||||||
blocks.ammo = 子弹
|
blocks.ammo = 子弹
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = 方块
|
unit.blocks = 方块
|
||||||
unit.powersecond = 能量单位/秒
|
unit.powersecond = 能量单位/秒
|
||||||
unit.liquidsecond = 液体单位/秒
|
unit.liquidsecond = 液体单位/秒
|
||||||
@@ -406,15 +421,16 @@ category.items = 物品
|
|||||||
category.crafting = 制造
|
category.crafting = 制造
|
||||||
category.shooting = 发射
|
category.shooting = 发射
|
||||||
category.optional = 可选的增强物品
|
category.optional = 可选的增强物品
|
||||||
setting.shadows.name = Shadows
|
setting.landscape.name = 锁定地形
|
||||||
setting.animatedwater.name = Animated Water
|
setting.shadows.name = 影子
|
||||||
|
setting.animatedwater.name = 流动的水
|
||||||
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[]
|
||||||
setting.indicators.name = 队友指示器
|
setting.indicators.name = 队友指示器
|
||||||
setting.autotarget.name = 自动发射
|
setting.autotarget.name = 自动发射
|
||||||
setting.fpscap.name = 最高 FPS
|
setting.fpscap.name = 最高 FPS
|
||||||
setting.fpscap.none = 无
|
setting.fpscap.none = 无
|
||||||
setting.fpscap.text = {0} FPS
|
setting.fpscap.text = {0} FPS
|
||||||
setting.swapdiagonal.name = Always Diagonal Placement
|
setting.swapdiagonal.name = 总是自动铺设
|
||||||
setting.difficulty.training = 训练
|
setting.difficulty.training = 训练
|
||||||
setting.difficulty.easy = 简单
|
setting.difficulty.easy = 简单
|
||||||
setting.difficulty.normal = 普通
|
setting.difficulty.normal = 普通
|
||||||
@@ -452,7 +468,7 @@ keybind.screenshot.name = 地图截图
|
|||||||
keybind.move_x.name = 水平移动
|
keybind.move_x.name = 水平移动
|
||||||
keybind.move_y.name = 垂直移动
|
keybind.move_y.name = 垂直移动
|
||||||
keybind.select.name = 选择
|
keybind.select.name = 选择
|
||||||
keybind.diagonal_placement.name = Diagonal Placement
|
keybind.diagonal_placement.name = 自动铺设
|
||||||
keybind.pick.name = 选择方块
|
keybind.pick.name = 选择方块
|
||||||
keybind.break_block.name = 破坏方块
|
keybind.break_block.name = 破坏方块
|
||||||
keybind.deselect.name = 取消
|
keybind.deselect.name = 取消
|
||||||
@@ -483,6 +499,18 @@ mode.pvp.name = PvP
|
|||||||
mode.pvp.description = 和本地玩家对战.
|
mode.pvp.description = 和本地玩家对战.
|
||||||
mode.attack.name = 攻击
|
mode.attack.name = 攻击
|
||||||
mode.attack.description = 没有波数,但是有吹毁敌人基地的任务.
|
mode.attack.description = 没有波数,但是有吹毁敌人基地的任务.
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = 物品
|
content.item.name = 物品
|
||||||
content.liquid.name = 液体
|
content.liquid.name = 液体
|
||||||
content.unit.name = 部队
|
content.unit.name = 部队
|
||||||
@@ -494,7 +522,7 @@ item.lead.name = 铅
|
|||||||
item.lead.description = 一种基本的起始材料。被广泛用于电子设备和液体运输方块。
|
item.lead.description = 一种基本的起始材料。被广泛用于电子设备和液体运输方块。
|
||||||
item.coal.name = 煤
|
item.coal.name = 煤
|
||||||
item.coal.description = 一种常见并容易获得的燃料。
|
item.coal.description = 一种常见并容易获得的燃料。
|
||||||
item.graphite.name = Graphite
|
item.graphite.name = 石墨
|
||||||
item.titanium.name = 钛
|
item.titanium.name = 钛
|
||||||
item.titanium.description = 一种罕见的超轻金属,被广泛运用于液体运输、钻头和飞机。
|
item.titanium.description = 一种罕见的超轻金属,被广泛运用于液体运输、钻头和飞机。
|
||||||
item.thorium.name = 钍
|
item.thorium.name = 钍
|
||||||
@@ -507,39 +535,39 @@ item.phase-fabric.name = 相织物
|
|||||||
item.phase-fabric.description = 一种接近0重量的物质,用于先进的电子技术和自我修复技术。
|
item.phase-fabric.description = 一种接近0重量的物质,用于先进的电子技术和自我修复技术。
|
||||||
item.surge-alloy.name = 巨浪合金
|
item.surge-alloy.name = 巨浪合金
|
||||||
item.surge-alloy.description = 一种具有独特电气性能的高级合金。
|
item.surge-alloy.description = 一种具有独特电气性能的高级合金。
|
||||||
item.spore-pod.name = Spore Pod
|
item.spore-pod.name = 孢子荚
|
||||||
item.spore-pod.description = Used for conversion into oil, explosives and fuel.
|
item.spore-pod.description = 一种用于制造石油,炸药及燃料的生物质。
|
||||||
item.sand.name = 沙
|
item.sand.name = 沙
|
||||||
item.sand.description = 一种常见的材料,广泛用于冶炼,包括制作合金和助熔剂。
|
item.sand.description = 一种常见的材料,广泛用于冶炼,包括制作合金和助熔剂。
|
||||||
item.blast-compound.name = 爆炸混合物
|
item.blast-compound.name = 爆炸混合物
|
||||||
item.blast-compound.description = 一种用于炸弹和炸药的挥发性混合物。虽然它可以作为燃料燃烧,但不建议这样做。
|
item.blast-compound.description = 一种用于炸弹和炸药的挥发性混合物。虽然它可以作为燃料燃烧,但不建议这样做。
|
||||||
item.pyratite.name = 硫
|
item.pyratite.name = 硫
|
||||||
item.pyratite.description = 一种燃烧武器中使用的极易燃物质。
|
item.pyratite.description = 一种燃烧武器中使用的极易燃物质。
|
||||||
item.metaglass.name = Metaglass
|
item.metaglass.name = 钢化玻璃
|
||||||
item.metaglass.description = 一种超级强硬的复合玻璃。通常用来传送和收藏液体
|
item.metaglass.description = 一种超级强硬的复合玻璃。通常用来传送和收藏液体
|
||||||
item.scrap.name = Scrap
|
item.scrap.name = 废料
|
||||||
item.scrap.description = Leftover remnants of old structures and units. Contains trace amounts of many different metals.
|
item.scrap.description = 一种废弃的建筑物及废弃单位的残骸,富含多种金属元素。
|
||||||
liquid.water.name = 水
|
liquid.water.name = 水
|
||||||
liquid.slag.name = Slag
|
liquid.slag.name = 岩浆
|
||||||
liquid.oil.name = 石油
|
liquid.oil.name = 石油
|
||||||
liquid.cryofluid.name = 冷冻液
|
liquid.cryofluid.name = 冷冻液
|
||||||
mech.alpha-mech.name = Alpha
|
mech.alpha-mech.name = 阿尔法
|
||||||
mech.alpha-mech.weapon = 重型机枪
|
mech.alpha-mech.weapon = 重型机枪
|
||||||
mech.alpha-mech.ability = 无人机群
|
mech.alpha-mech.ability = 无人机群
|
||||||
mech.alpha-mech.description = 标准的机甲。具有不错的速度和伤害输出;,可以制造多达 3 架无人机以提高进攻能力。
|
mech.alpha-mech.description = 标准的机甲。具有不错的速度和伤害输出;,可以制造多达 3 架无人机以提高进攻能力。
|
||||||
mech.delta-mech.name = Delta
|
mech.delta-mech.name = 德尔塔
|
||||||
mech.delta-mech.weapon = 电弧发电机
|
mech.delta-mech.weapon = 电弧发电机
|
||||||
mech.delta-mech.ability = 放电
|
mech.delta-mech.ability = 放电
|
||||||
mech.delta-mech.description = 一种快速,轻便的机甲,一击即退。对结构造成的伤害很小,但可以用弧形闪电武器很快杀死大量敌方单位。
|
mech.delta-mech.description = 一种快速,轻便的机甲,一击即退。对结构造成的伤害很小,但可以用弧形闪电武器很快杀死大量敌方单位。
|
||||||
mech.tau-mech.name = Tau
|
mech.tau-mech.name = 医疗机
|
||||||
mech.tau-mech.weapon = 重构激光
|
mech.tau-mech.weapon = 重构激光
|
||||||
mech.tau-mech.ability = 修复
|
mech.tau-mech.ability = 修复
|
||||||
mech.tau-mech.description = 后勤机甲。治疗友军。可以熄灭火焰并治疗一定范围内的友军。
|
mech.tau-mech.description = 后勤机甲。治疗友军。可以熄灭火焰并治疗一定范围内的友军。
|
||||||
mech.omega-mech.name = Omega
|
mech.omega-mech.name = 欧米茄
|
||||||
mech.omega-mech.weapon = 导弹群
|
mech.omega-mech.weapon = 导弹群
|
||||||
mech.omega-mech.ability = 配置装甲
|
mech.omega-mech.ability = 配置装甲
|
||||||
mech.omega-mech.description = 一种装甲厚重的机甲,用于在前线攻击。它的护甲可以阻挡高达 90% 的伤害。
|
mech.omega-mech.description = 一种装甲厚重的机甲,用于在前线攻击。它的护甲可以阻挡高达 90% 的伤害。
|
||||||
mech.dart-ship.name = Dart
|
mech.dart-ship.name = 沉思者
|
||||||
mech.dart-ship.weapon = 机枪
|
mech.dart-ship.weapon = 机枪
|
||||||
mech.dart-ship.description = 标准飞船。快速轻便,但攻击能力低,采矿速度快。
|
mech.dart-ship.description = 标准飞船。快速轻便,但攻击能力低,采矿速度快。
|
||||||
mech.javelin-ship.name = 标枪
|
mech.javelin-ship.name = 标枪
|
||||||
@@ -549,7 +577,7 @@ mech.javelin-ship.ability = 放电助推器
|
|||||||
mech.trident-ship.name = 三叉戟
|
mech.trident-ship.name = 三叉戟
|
||||||
mech.trident-ship.description = 一种重型轰炸机。有厚装甲。
|
mech.trident-ship.description = 一种重型轰炸机。有厚装甲。
|
||||||
mech.trident-ship.weapon = 炸弹
|
mech.trident-ship.weapon = 炸弹
|
||||||
mech.glaive-ship.name = Glaive
|
mech.glaive-ship.name = 阔剑
|
||||||
mech.glaive-ship.description = 一种大型,装甲厚重的武装直升机。配备燃烧机枪。有优秀的加速能力和最快的速度。
|
mech.glaive-ship.description = 一种大型,装甲厚重的武装直升机。配备燃烧机枪。有优秀的加速能力和最快的速度。
|
||||||
mech.glaive-ship.weapon = 火焰机枪
|
mech.glaive-ship.weapon = 火焰机枪
|
||||||
item.explosiveness = [LIGHT_GRAY]爆炸性:{0}
|
item.explosiveness = [LIGHT_GRAY]爆炸性:{0}
|
||||||
@@ -558,7 +586,7 @@ item.radioactivity = [LIGHT_GRAY]放射性:{0}
|
|||||||
unit.health = [LIGHT_GRAY]生命值:{0}
|
unit.health = [LIGHT_GRAY]生命值:{0}
|
||||||
unit.speed = [LIGHT_GRAY]速度:{0}
|
unit.speed = [LIGHT_GRAY]速度:{0}
|
||||||
mech.weapon = [LIGHT_GRAY]武器:{0}
|
mech.weapon = [LIGHT_GRAY]武器:{0}
|
||||||
mech.health = [LIGHT_GRAY]Health: {0}
|
mech.health = [LIGHT_GRAY]生命值: {0}
|
||||||
mech.itemcapacity = [LIGHT_GRAY]物品容量:{0}
|
mech.itemcapacity = [LIGHT_GRAY]物品容量:{0}
|
||||||
mech.minespeed = [LIGHT_GRAY]采矿速度:{0}
|
mech.minespeed = [LIGHT_GRAY]采矿速度:{0}
|
||||||
mech.minepower = [LIGHT_GRAY]采矿力量:{0}
|
mech.minepower = [LIGHT_GRAY]采矿力量:{0}
|
||||||
@@ -583,15 +611,15 @@ block.scrap-wall-large.name = Large Scrap Wall
|
|||||||
block.scrap-wall-huge.name = Huge Scrap Wall
|
block.scrap-wall-huge.name = Huge Scrap Wall
|
||||||
block.scrap-wall-gigantic.name = Gigantic Scrap Wall
|
block.scrap-wall-gigantic.name = Gigantic Scrap Wall
|
||||||
block.thruster.name = Thruster
|
block.thruster.name = Thruster
|
||||||
block.kiln.name = Kiln
|
block.kiln.name = 熔炉
|
||||||
block.kiln.description = Smelts sand and lead into metaglass. Requires small amounts of power.
|
block.kiln.description = 将铅和沙子熔炼成钢化玻璃,需要少量电力。
|
||||||
block.graphite-press.name = Graphite Press
|
block.graphite-press.name = 石墨压缩机
|
||||||
block.multi-press.name = Multi-Press
|
block.multi-press.name = 大型石墨压缩机
|
||||||
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
|
block.constructing = {0}\n[LIGHT_GRAY](Constructing)
|
||||||
block.spawn.name = 敌人出生点
|
block.spawn.name = 敌人出生点
|
||||||
block.core-shard.name = Core: Shard
|
block.core-shard.name = 小型核心
|
||||||
block.core-foundation.name = Core: Foundation
|
block.core-foundation.name = 中型核心
|
||||||
block.core-nucleus.name = Core: Nucleus
|
block.core-nucleus.name = 大型核心
|
||||||
block.deepwater.name = 深水
|
block.deepwater.name = 深水
|
||||||
block.water.name = 水
|
block.water.name = 水
|
||||||
block.tainted-water.name = Tainted Water
|
block.tainted-water.name = Tainted Water
|
||||||
@@ -627,8 +655,8 @@ block.magmarock.name = Magma Rock
|
|||||||
block.cliffs.name = Cliffs
|
block.cliffs.name = Cliffs
|
||||||
block.copper-wall.name = 铜墙
|
block.copper-wall.name = 铜墙
|
||||||
block.copper-wall-large.name = 大型铜墙
|
block.copper-wall-large.name = 大型铜墙
|
||||||
block.titanium-wall.name = Titanium Wall
|
block.titanium-wall.name = 钛墙
|
||||||
block.titanium-wall-large.name = Large Titanium Wall
|
block.titanium-wall-large.name = 大型钛墙
|
||||||
block.phase-wall.name = 相织布墙
|
block.phase-wall.name = 相织布墙
|
||||||
block.phase-wall-large.name = 大型相织布墙
|
block.phase-wall-large.name = 大型相织布墙
|
||||||
block.thorium-wall.name = 钍墙
|
block.thorium-wall.name = 钍墙
|
||||||
@@ -636,8 +664,8 @@ block.thorium-wall-large.name = 大型钍墙
|
|||||||
block.door.name = 门
|
block.door.name = 门
|
||||||
block.door-large.name = 大门
|
block.door-large.name = 大门
|
||||||
block.duo.name = 双管炮
|
block.duo.name = 双管炮
|
||||||
block.scorch.name = Scorch
|
block.scorch.name = 火焰炮
|
||||||
block.scatter.name = Scatter
|
block.scatter.name = 分裂炮
|
||||||
block.hail.name = 冰雹炮
|
block.hail.name = 冰雹炮
|
||||||
block.lancer.name = 蓝瑟炮
|
block.lancer.name = 蓝瑟炮
|
||||||
block.conveyor.name = 传送带
|
block.conveyor.name = 传送带
|
||||||
@@ -655,29 +683,29 @@ block.pulverizer.name = 粉碎机
|
|||||||
block.cryofluidmixer.name = 冷冻液混合器
|
block.cryofluidmixer.name = 冷冻液混合器
|
||||||
block.melter.name = 熔炉
|
block.melter.name = 熔炉
|
||||||
block.incinerator.name = 焚化炉
|
block.incinerator.name = 焚化炉
|
||||||
block.spore-press.name = Spore Press
|
block.spore-press.name = 孢子压缩机
|
||||||
block.separator.name = 分离机
|
block.separator.name = 分离机
|
||||||
block.power-node.name = 能量节点
|
block.power-node.name = 能量节点
|
||||||
block.power-node-large.name = 大型能量节点
|
block.power-node-large.name = 大型能量节点
|
||||||
block.surge-tower.name = Surge Tower
|
block.surge-tower.name = 远程输电塔
|
||||||
block.battery.name = 电池
|
block.battery.name = 电池
|
||||||
block.battery-large.name = 大型电池
|
block.battery-large.name = 大型电池
|
||||||
block.combustion-generator.name = 燃烧发电机
|
block.combustion-generator.name = 燃烧发电机
|
||||||
block.turbine-generator.name = 涡轮发电机
|
block.turbine-generator.name = 涡轮发电机
|
||||||
block.differential-generator.name = Differential Generator
|
block.differential-generator.name = 差动发电机
|
||||||
block.impact-reactor.name = Impact Reactor
|
block.impact-reactor.name = 冲击反应堆
|
||||||
block.mechanical-drill.name = 机械钻头
|
block.mechanical-drill.name = 机械钻头
|
||||||
block.pneumatic-drill.name = 气动钻头
|
block.pneumatic-drill.name = 气动钻头
|
||||||
block.laser-drill.name = 激光钻头
|
block.laser-drill.name = 激光钻头
|
||||||
block.water-extractor.name = 抽水机
|
block.water-extractor.name = 抽水机
|
||||||
block.cultivator.name = 耕种机
|
block.cultivator.name = 耕种机
|
||||||
block.alpha-dart-mech-pad.name = Alpha-Dart Mech Pad
|
block.alpha-dart-mech-pad.name = 阿尔法-沉思者 机甲平台
|
||||||
block.delta-mech-pad.name = Delta 机甲平台
|
block.delta-mech-pad.name = 德尔塔 机甲平台
|
||||||
block.javelin-ship-pad.name = 标枪 机甲平台
|
block.javelin-ship-pad.name = 标枪 机甲平台
|
||||||
block.trident-ship-pad.name = 三叉戟 机甲平台
|
block.trident-ship-pad.name = 三叉戟 机甲平台
|
||||||
block.glaive-ship-pad.name = Glaive 机甲平台
|
block.glaive-ship-pad.name = 阔剑 机甲平台
|
||||||
block.omega-mech-pad.name = Omega 机甲平台
|
block.omega-mech-pad.name = 欧米茄 机甲平台
|
||||||
block.tau-mech-pad.name = Tau 机甲平台
|
block.tau-mech-pad.name = 医疗机 机甲平台
|
||||||
block.conduit.name = 导管
|
block.conduit.name = 导管
|
||||||
block.mechanical-pump.name = 机械泵
|
block.mechanical-pump.name = 机械泵
|
||||||
block.item-source.name = 物品源
|
block.item-source.name = 物品源
|
||||||
@@ -704,7 +732,7 @@ block.phantom-factory.name = 鬼怪无人机工厂
|
|||||||
block.wraith-factory.name = 幻影战机工厂
|
block.wraith-factory.name = 幻影战机工厂
|
||||||
block.ghoul-factory.name = 食尸鬼轰炸机工厂
|
block.ghoul-factory.name = 食尸鬼轰炸机工厂
|
||||||
block.dagger-factory.name = 尖刀机甲工厂
|
block.dagger-factory.name = 尖刀机甲工厂
|
||||||
block.crawler-factory.name = Crawler Mech Factory
|
block.crawler-factory.name = 爬行者机甲工厂
|
||||||
block.titan-factory.name = 泰坦机甲工厂
|
block.titan-factory.name = 泰坦机甲工厂
|
||||||
block.fortress-factory.name = 堡垒机甲工厂
|
block.fortress-factory.name = 堡垒机甲工厂
|
||||||
block.revenant-factory.name = 亡魂战机工厂
|
block.revenant-factory.name = 亡魂战机工厂
|
||||||
@@ -722,6 +750,7 @@ block.blast-drill.name = 爆破钻头
|
|||||||
block.thermal-pump.name = 热能泵
|
block.thermal-pump.name = 热能泵
|
||||||
block.thermal-generator.name = 热能发电机
|
block.thermal-generator.name = 热能发电机
|
||||||
block.alloy-smelter.name = 合金冶炼厂
|
block.alloy-smelter.name = 合金冶炼厂
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = 修理投影器
|
block.mend-projector.name = 修理投影器
|
||||||
block.surge-wall.name = 波动墙
|
block.surge-wall.name = 波动墙
|
||||||
block.surge-wall-large.name = 大型波动墙
|
block.surge-wall-large.name = 大型波动墙
|
||||||
@@ -735,8 +764,9 @@ block.rtg-generator.name = RTG 发电机
|
|||||||
block.spectre.name = 幽灵
|
block.spectre.name = 幽灵
|
||||||
block.meltdown.name = 熔毁
|
block.meltdown.name = 熔毁
|
||||||
block.container.name = 容器
|
block.container.name = 容器
|
||||||
block.launch-pad.name = Launch Pad
|
block.launch-pad.name = 发射台
|
||||||
block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished.
|
block.launch-pad.description = 不通过核心发射物体。尚未完成。
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = 蓝
|
team.blue.name = 蓝
|
||||||
team.red.name = 红
|
team.red.name = 红
|
||||||
team.orange.name = 橙
|
team.orange.name = 橙
|
||||||
@@ -749,7 +779,7 @@ unit.phantom.name = 鬼怪无人机
|
|||||||
unit.phantom.description = 一种先进的无人机单位。自动开采矿石,收集物品和修理块。比初始无人机有效得多。
|
unit.phantom.description = 一种先进的无人机单位。自动开采矿石,收集物品和修理块。比初始无人机有效得多。
|
||||||
unit.dagger.name = 尖刀
|
unit.dagger.name = 尖刀
|
||||||
unit.dagger.description = 基础的地面单位,在蜂群中很有用。
|
unit.dagger.description = 基础的地面单位,在蜂群中很有用。
|
||||||
unit.crawler.name = Crawler
|
unit.crawler.name = 爬行者
|
||||||
unit.titan.name = 泰坦
|
unit.titan.name = 泰坦
|
||||||
unit.titan.description = 高级的有武装地面单位,使用电石作为弹药.攻击地面单位和空中单位.
|
unit.titan.description = 高级的有武装地面单位,使用电石作为弹药.攻击地面单位和空中单位.
|
||||||
unit.ghoul.name = 食尸鬼轰炸机
|
unit.ghoul.name = 食尸鬼轰炸机
|
||||||
@@ -759,11 +789,11 @@ unit.wraith.description = 一种快速,打了就跑的截击机。
|
|||||||
unit.fortress.name = 堡垒
|
unit.fortress.name = 堡垒
|
||||||
unit.fortress.description = 一种重炮地面部队。
|
unit.fortress.description = 一种重炮地面部队。
|
||||||
unit.revenant.name = 亡魂
|
unit.revenant.name = 亡魂
|
||||||
unit.eruptor.name = Eruptor
|
unit.eruptor.name = 爆发者
|
||||||
unit.chaos-array.name = Chaos Array
|
unit.chaos-array.name = 混沌者
|
||||||
unit.eradicator.name = Eradicator
|
unit.eradicator.name = 根除者
|
||||||
unit.lich.name = Lich
|
unit.lich.name = 尸鬼
|
||||||
unit.reaper.name = Reaper
|
unit.reaper.name = 死神
|
||||||
tutorial.begin = 你的任务是消灭[LIGHT_GRAY] 敌人 [].\n\n首先开始[accent] 采集铜矿 []。点击核心附近的铜矿开始。
|
tutorial.begin = 你的任务是消灭[LIGHT_GRAY] 敌人 [].\n\n首先开始[accent] 采集铜矿 []。点击核心附近的铜矿开始。
|
||||||
tutorial.drill = 手动采矿效率低.\n[accent] 钻头 []可以自动采矿.\n放一个在铜矿上吧.
|
tutorial.drill = 手动采矿效率低.\n[accent] 钻头 []可以自动采矿.\n放一个在铜矿上吧.
|
||||||
tutorial.conveyor = [accent]传送带[] 可以把物资传送到核心.\n请造一个传送线,从钻头到核心.
|
tutorial.conveyor = [accent]传送带[] 可以把物资传送到核心.\n请造一个传送线,从钻头到核心.
|
||||||
@@ -800,7 +830,7 @@ block.overdrive-projector.description = 提高附近建筑物的速度,如钻
|
|||||||
block.force-projector.description = 自身周围创建一个六边形力场,保护建筑物和内部单位免受子弹的伤害。
|
block.force-projector.description = 自身周围创建一个六边形力场,保护建筑物和内部单位免受子弹的伤害。
|
||||||
block.shock-mine.description = 伤害踩到它的敌人。敌人几乎看不到它。
|
block.shock-mine.description = 伤害踩到它的敌人。敌人几乎看不到它。
|
||||||
block.duo.description = 小而便宜的炮塔。
|
block.duo.description = 小而便宜的炮塔。
|
||||||
block.scatter.description = A medium-sized anti-air turret. Sprays clumps of lead or scrap flak at enemy units.
|
block.scatter.description = 中型防空炮塔,向空中单位发射铅或废料。.
|
||||||
block.arc.description = 小型炮塔,发射电弧。
|
block.arc.description = 小型炮塔,发射电弧。
|
||||||
block.hail.description = 小型炮兵炮台。
|
block.hail.description = 小型炮兵炮台。
|
||||||
block.lancer.description = 中型炮塔,发射带电的电子束。
|
block.lancer.description = 中型炮塔,发射带电的电子束。
|
||||||
@@ -827,7 +857,7 @@ block.blast-mixer.description = 用油将硫转化为不易燃但更具爆炸性
|
|||||||
block.cryofluidmixer.description = 水和钛结合到低温流体中,冷却效率更高。
|
block.cryofluidmixer.description = 水和钛结合到低温流体中,冷却效率更高。
|
||||||
block.melter.description = 石头加热到很高的温度以获得熔岩。
|
block.melter.description = 石头加热到很高的温度以获得熔岩。
|
||||||
block.incinerator.description = 用于除掉任何多余的物品或液体。
|
block.incinerator.description = 用于除掉任何多余的物品或液体。
|
||||||
block.spore-press.description = Compresses spore pods into oil.
|
block.spore-press.description = 压缩孢子荚得到石油。
|
||||||
block.separator.description = 将石头暴露在水压下,以获得石头中含有的各种矿物质。
|
block.separator.description = 将石头暴露在水压下,以获得石头中含有的各种矿物质。
|
||||||
block.power-node.description = 连接节点传输电源。最多可连接四个电源,接收器或节点。节点将从任何相邻块接收电力或向其供电。
|
block.power-node.description = 连接节点传输电源。最多可连接四个电源,接收器或节点。节点将从任何相邻块接收电力或向其供电。
|
||||||
block.power-node-large.description = 传输径大于电源节点,最多可连接六个电源,接收器或节点。
|
block.power-node-large.description = 传输径大于电源节点,最多可连接六个电源,接收器或节点。
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ screenshot = 截圖保存到{0}
|
|||||||
gameover = 遊戲結束
|
gameover = 遊戲結束
|
||||||
gameover.pvp = [accent]{0}[]隊獲勝!
|
gameover.pvp = [accent]{0}[]隊獲勝!
|
||||||
highscore = [accent]新的高分紀錄!
|
highscore = [accent]新的高分紀錄!
|
||||||
|
|
||||||
stat.wave = 打敗的波次:[accent]{0}
|
stat.wave = 打敗的波次:[accent]{0}
|
||||||
stat.enemiesDestroyed = 摧毀的敵人:[accent]{0}
|
stat.enemiesDestroyed = 摧毀的敵人:[accent]{0}
|
||||||
stat.built = 建設的建築:[accent]{0}
|
stat.built = 建設的建築:[accent]{0}
|
||||||
@@ -22,10 +21,8 @@ stat.destroyed = 摧毀的建築:[accent]{0}
|
|||||||
stat.deconstructed = 移除的建築:[accent]{0}
|
stat.deconstructed = 移除的建築:[accent]{0}
|
||||||
stat.delivered = 發射的資源:
|
stat.delivered = 發射的資源:
|
||||||
stat.rank = 最終排名:[accent]{0}
|
stat.rank = 最終排名:[accent]{0}
|
||||||
|
|
||||||
placeline = 你選擇了一個方塊。\n[accent]按住你的手指幾秒鐘[]並拖動以[accent]直線放置方塊[]。\n試試吧。
|
placeline = 你選擇了一個方塊。\n[accent]按住你的手指幾秒鐘[]並拖動以[accent]直線放置方塊[]。\n試試吧。
|
||||||
removearea = 你選擇了移除模式。\n[accent]按住你的手指幾秒鐘[]並拖動以[accent]移除矩形中的方塊[]。\n試試吧。
|
removearea = 你選擇了移除模式。\n[accent]按住你的手指幾秒鐘[]並拖動以[accent]移除矩形中的方塊[]。\n試試吧。
|
||||||
|
|
||||||
launcheditems = [accent]發射了的物品
|
launcheditems = [accent]發射了的物品
|
||||||
map.delete = 確認要刪除「[accent]{0}[]」地圖嗎?
|
map.delete = 確認要刪除「[accent]{0}[]」地圖嗎?
|
||||||
level.highscore = 最高分:[accent]{0}
|
level.highscore = 最高分:[accent]{0}
|
||||||
@@ -185,6 +182,7 @@ map.delete.confirm = 確認要刪除地圖嗎?此操作無法撤回!
|
|||||||
map.random = [accent]隨機地圖
|
map.random = [accent]隨機地圖
|
||||||
map.nospawn = 這個地圖沒有核心!請在編輯器中添加一個[ROYAL]藍色[]的核心。
|
map.nospawn = 這個地圖沒有核心!請在編輯器中添加一個[ROYAL]藍色[]的核心。
|
||||||
map.nospawn.pvp = 這個地圖沒有核心讓敵人重生!請在編輯器中添加一個[SCARLET]紅色[]的核心。
|
map.nospawn.pvp = 這個地圖沒有核心讓敵人重生!請在編輯器中添加一個[SCARLET]紅色[]的核心。
|
||||||
|
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
||||||
map.invalid = 地圖載入錯誤:地圖可能已經損壞。
|
map.invalid = 地圖載入錯誤:地圖可能已經損壞。
|
||||||
editor.brush = 粉刷
|
editor.brush = 粉刷
|
||||||
editor.openin = 在編輯器中開啟
|
editor.openin = 在編輯器中開啟
|
||||||
@@ -282,11 +280,11 @@ tutorial = 教學
|
|||||||
editor = 地圖編輯器
|
editor = 地圖編輯器
|
||||||
mapeditor = 地圖編輯器
|
mapeditor = 地圖編輯器
|
||||||
donate = 贊助
|
donate = 贊助
|
||||||
|
|
||||||
abandon = 放棄
|
abandon = 放棄
|
||||||
abandon.text = 此區域及其所有資源將會丟失給敵人。
|
abandon.text = 此區域及其所有資源將會丟失給敵人。
|
||||||
locked = 鎖定
|
locked = 鎖定
|
||||||
complete = [LIGHT_GRAY]完成:
|
complete = [LIGHT_GRAY]完成:
|
||||||
|
zone.requirement = Wave {0} in zone {1}
|
||||||
resume = 繼續區域:\n[LIGHT_GRAY]{0}
|
resume = 繼續區域:\n[LIGHT_GRAY]{0}
|
||||||
bestwave = [LIGHT_GRAY]高分:{0}
|
bestwave = [LIGHT_GRAY]高分:{0}
|
||||||
launch = 發射
|
launch = 發射
|
||||||
@@ -298,12 +296,11 @@ uncover = 揭露
|
|||||||
configure = 配置裝載
|
configure = 配置裝載
|
||||||
configure.locked = [LIGHT_GRAY]到達波次{0}\n以配置裝載。
|
configure.locked = [LIGHT_GRAY]到達波次{0}\n以配置裝載。
|
||||||
zone.unlocked = [LIGHT_GRAY]{0}已解鎖。
|
zone.unlocked = [LIGHT_GRAY]{0}已解鎖。
|
||||||
zone.complete = 符合區域條件。
|
zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met.
|
||||||
zone.config.complete = 到達波次{0}:\n裝載配置已解鎖。
|
zone.config.complete = 到達波次{0}:\n裝載配置已解鎖。
|
||||||
zone.resources = 檢測到的資源:
|
zone.resources = 檢測到的資源:
|
||||||
add = 新增……
|
add = 新增……
|
||||||
boss.health = 頭目血量
|
boss.health = 頭目血量
|
||||||
|
|
||||||
connectfail = [crimson]無法連線到伺服器:[accent]{0}
|
connectfail = [crimson]無法連線到伺服器:[accent]{0}
|
||||||
error.unreachable = 無法到達伺服器。
|
error.unreachable = 無法到達伺服器。
|
||||||
error.invalidaddress = 無效地址。
|
error.invalidaddress = 無效地址。
|
||||||
@@ -313,7 +310,6 @@ error.alreadyconnected = 已連接。
|
|||||||
error.mapnotfound = 找不到地圖!
|
error.mapnotfound = 找不到地圖!
|
||||||
error.io = 網絡輸入輸出錯誤。
|
error.io = 網絡輸入輸出錯誤。
|
||||||
error.any = 未知網絡錯誤。
|
error.any = 未知網絡錯誤。
|
||||||
|
|
||||||
zone.groundZero.name = 歸零地
|
zone.groundZero.name = 歸零地
|
||||||
zone.craters.name = 隕石坑
|
zone.craters.name = 隕石坑
|
||||||
zone.frozenForest.name = 冰凍森林
|
zone.frozenForest.name = 冰凍森林
|
||||||
@@ -321,7 +317,6 @@ zone.ruinousShores.name = 毀滅性的海岸
|
|||||||
zone.stainedMountains.name = 染山
|
zone.stainedMountains.name = 染山
|
||||||
zone.desolateRift.name = 荒涼的裂痕
|
zone.desolateRift.name = 荒涼的裂痕
|
||||||
zone.nuclearComplex.name = 核生產綜合體
|
zone.nuclearComplex.name = 核生產綜合體
|
||||||
|
|
||||||
settings.language = 語言
|
settings.language = 語言
|
||||||
settings.reset = 重設為預設設定
|
settings.reset = 重設為預設設定
|
||||||
settings.rebind = 重新綁定
|
settings.rebind = 重新綁定
|
||||||
@@ -340,18 +335,19 @@ no = 否
|
|||||||
info.title = [accent]資訊
|
info.title = [accent]資訊
|
||||||
error.title = [crimson]發生錯誤
|
error.title = [crimson]發生錯誤
|
||||||
error.crashtitle = 發生錯誤
|
error.crashtitle = 發生錯誤
|
||||||
blocks.outputspeed = 鑽頭速度:{0}/秒
|
bar.drillspeed = 鑽頭速度:{0}/秒
|
||||||
blocks.efficiency = 效率:{0}%
|
bar.efficiency = 效率:{0}%
|
||||||
blocks.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.blockinfo = 方塊資訊
|
blocks.blockinfo = 方塊資訊
|
||||||
blocks.powerbalance = 能量變化:{0}
|
bar.powerbalance = 能量變化:{0}
|
||||||
blocks.poweroutput = 能量輸出:{0}
|
bar.poweroutput = 能量輸出:{0}
|
||||||
blocks.powercapacity = 蓄電量
|
blocks.powercapacity = 蓄電量
|
||||||
blocks.powershot = 能量/射擊
|
blocks.powershot = 能量/射擊
|
||||||
blocks.targetsair = 攻擊空中目標
|
blocks.targetsair = 攻擊空中目標
|
||||||
blocks.targetsground = 攻擊地面
|
blocks.targetsground = 攻擊地面
|
||||||
blocks.items = 物品:{0}
|
bar.items = 物品:{0}
|
||||||
blocks.itemsmoved = 移動速度
|
blocks.itemsmoved = 移動速度
|
||||||
|
blocks.launchtime = Time Between Launches
|
||||||
blocks.shootrange = 範圍
|
blocks.shootrange = 範圍
|
||||||
blocks.size = 尺寸
|
blocks.size = 尺寸
|
||||||
blocks.liquidcapacity = 液體容量
|
blocks.liquidcapacity = 液體容量
|
||||||
@@ -365,6 +361,8 @@ blocks.itemcapacity = 物品容量
|
|||||||
blocks.basepowergeneration = 基本能量生产
|
blocks.basepowergeneration = 基本能量生产
|
||||||
blocks.powertransferspeed = 能量傳輸
|
blocks.powertransferspeed = 能量傳輸
|
||||||
blocks.craftspeed = 產生速度
|
blocks.craftspeed = 產生速度
|
||||||
|
blocks.repairtime = Block Full Repair Time
|
||||||
|
blocks.range = Range
|
||||||
blocks.inputliquid = 輸入液體
|
blocks.inputliquid = 輸入液體
|
||||||
blocks.inputliquidaux = 輔助液體
|
blocks.inputliquidaux = 輔助液體
|
||||||
blocks.inputitem = 輸入物品
|
blocks.inputitem = 輸入物品
|
||||||
@@ -377,17 +375,17 @@ blocks.liquidoutput = 輸出液體
|
|||||||
blocks.liquidoutputspeed = 輸出液體速度
|
blocks.liquidoutputspeed = 輸出液體速度
|
||||||
blocks.liquiduse = 使用液體速度
|
blocks.liquiduse = 使用液體速度
|
||||||
blocks.coolant = 冷卻劑
|
blocks.coolant = 冷卻劑
|
||||||
blocks.liquid = 液體
|
bar.liquid = 液體
|
||||||
blocks.coolantuse = 使用冷卻劑
|
blocks.coolantuse = 使用冷卻劑
|
||||||
blocks.inputliquidfuel = 輸入液體燃料
|
blocks.inputliquidfuel = 輸入液體燃料
|
||||||
blocks.liquidfueluse = 使用液體燃料速度
|
blocks.liquidfueluse = 使用液體燃料速度
|
||||||
blocks.boostitem = 強化物品
|
blocks.boostitem = 強化物品
|
||||||
blocks.boostliquid = 強化液體
|
blocks.boostliquid = 強化液體
|
||||||
blocks.health = 耐久度
|
blocks.health = 耐久度
|
||||||
blocks.heat = 熱
|
bar.heat = 熱
|
||||||
blocks.power = 能量
|
bar.power = 能量
|
||||||
blocks.progress = 建造進度
|
bar.progress = 建造進度
|
||||||
blocks.spawned = 單位:{0}/{1}
|
bar.spawned = 單位:{0}/{1}
|
||||||
blocks.power.satisfaction = 能量滿意度
|
blocks.power.satisfaction = 能量滿意度
|
||||||
blocks.inaccuracy = 誤差
|
blocks.inaccuracy = 誤差
|
||||||
blocks.shots = 射擊數
|
blocks.shots = 射擊數
|
||||||
@@ -397,6 +395,17 @@ blocks.fuelburntime = 燃燒燃料時間
|
|||||||
blocks.inputcapacity = 輸入容量
|
blocks.inputcapacity = 輸入容量
|
||||||
blocks.outputcapacity = 輸出容量
|
blocks.outputcapacity = 輸出容量
|
||||||
blocks.ammo = 彈藥
|
blocks.ammo = 彈藥
|
||||||
|
bullet.damage = [stat]{0}[lightgray] dmg
|
||||||
|
bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles
|
||||||
|
bullet.incendiary = [stat]incendiary
|
||||||
|
bullet.homing = [stat]homing
|
||||||
|
bullet.shock = [stat]shock
|
||||||
|
bullet.frag = [stat]frag
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
|
bullet.freezing = [stat]freezing
|
||||||
|
bullet.tarred = [stat]tarred
|
||||||
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
bullet.reload = [stat]{0}[lightgray]x reload
|
||||||
unit.blocks = 方塊
|
unit.blocks = 方塊
|
||||||
unit.powersecond = 能量單位/秒
|
unit.powersecond = 能量單位/秒
|
||||||
unit.liquidsecond = 液體單位/秒
|
unit.liquidsecond = 液體單位/秒
|
||||||
@@ -413,9 +422,10 @@ category.items = 物品
|
|||||||
category.crafting = 合成
|
category.crafting = 合成
|
||||||
category.shooting = 射擊
|
category.shooting = 射擊
|
||||||
category.optional = 可選的強化
|
category.optional = 可選的強化
|
||||||
|
setting.landscape.name = Lock Landscape
|
||||||
|
setting.shadows.name = Shadows
|
||||||
setting.animatedwater.name = 動畫水
|
setting.animatedwater.name = 動畫水
|
||||||
setting.antialias.name = 消除鋸齒[LIGHT_GRAY](需要重啟)[]
|
setting.antialias.name = 消除鋸齒[LIGHT_GRAY](需要重啟)[]
|
||||||
setting.shadows.name = Shadows
|
|
||||||
setting.indicators.name = 盟友指標
|
setting.indicators.name = 盟友指標
|
||||||
setting.autotarget.name = 自動射擊
|
setting.autotarget.name = 自動射擊
|
||||||
setting.fpscap.name = 最大FPS
|
setting.fpscap.name = 最大FPS
|
||||||
@@ -490,6 +500,18 @@ mode.pvp.name = 對戰
|
|||||||
mode.pvp.description = 和其他玩家鬥爭。
|
mode.pvp.description = 和其他玩家鬥爭。
|
||||||
mode.attack.name = 攻擊
|
mode.attack.name = 攻擊
|
||||||
mode.attack.description = 沒有波次,目標是摧毀敵人的基地。
|
mode.attack.description = 沒有波次,目標是摧毀敵人的基地。
|
||||||
|
mode.custom = Custom Rules
|
||||||
|
rules.infiniteresources = Infinite Resources
|
||||||
|
rules.wavetimer = Wave Timer
|
||||||
|
rules.waves = Waves
|
||||||
|
rules.enemyCheat = Infinite AI Resources
|
||||||
|
rules.pvp = PvP
|
||||||
|
rules.unitdrops = Unit Drops
|
||||||
|
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||||
|
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||||
|
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||||
|
rules.buildcostmultiplier = Build Cost Multiplier
|
||||||
|
rules.buildspeedmultiplier = Build Speed Multiplier
|
||||||
content.item.name = 物品
|
content.item.name = 物品
|
||||||
content.liquid.name = 液體
|
content.liquid.name = 液體
|
||||||
content.unit.name = 機組
|
content.unit.name = 機組
|
||||||
@@ -573,7 +595,6 @@ mech.ability = [LIGHT_GRAY]能力:{0}
|
|||||||
liquid.heatcapacity = [LIGHT_GRAY]熱容量:{0}
|
liquid.heatcapacity = [LIGHT_GRAY]熱容量:{0}
|
||||||
liquid.viscosity = [LIGHT_GRAY]粘性:{0}
|
liquid.viscosity = [LIGHT_GRAY]粘性:{0}
|
||||||
liquid.temperature = [LIGHT_GRAY]温度:{0}
|
liquid.temperature = [LIGHT_GRAY]温度:{0}
|
||||||
|
|
||||||
block.grass.name = 草
|
block.grass.name = 草
|
||||||
block.salt.name = 鹽
|
block.salt.name = 鹽
|
||||||
block.sandrocks.name = 沙岩
|
block.sandrocks.name = 沙岩
|
||||||
@@ -730,6 +751,7 @@ block.blast-drill.name = 爆破鑽頭
|
|||||||
block.thermal-pump.name = 熱能泵
|
block.thermal-pump.name = 熱能泵
|
||||||
block.thermal-generator.name = 熱能發電機
|
block.thermal-generator.name = 熱能發電機
|
||||||
block.alloy-smelter.name = 合金冶煉廠
|
block.alloy-smelter.name = 合金冶煉廠
|
||||||
|
block.mender.name = Mender
|
||||||
block.mend-projector.name = 修理投影器
|
block.mend-projector.name = 修理投影器
|
||||||
block.surge-wall.name = 波動牆
|
block.surge-wall.name = 波動牆
|
||||||
block.surge-wall-large.name = 大型波動牆
|
block.surge-wall-large.name = 大型波動牆
|
||||||
@@ -745,6 +767,7 @@ block.meltdown.name = 熔毀炮
|
|||||||
block.container.name = 容器
|
block.container.name = 容器
|
||||||
block.launch-pad.name = 發射台
|
block.launch-pad.name = 發射台
|
||||||
block.launch-pad.description = 無需從核心發射即可發射物品。未完成。
|
block.launch-pad.description = 無需從核心發射即可發射物品。未完成。
|
||||||
|
block.launch-pad-large.name = Large Launch Pad
|
||||||
team.blue.name = 藍
|
team.blue.name = 藍
|
||||||
team.red.name = 紅
|
team.red.name = 紅
|
||||||
team.orange.name = 橙
|
team.orange.name = 橙
|
||||||
@@ -870,7 +893,6 @@ block.wraith-factory.description = 生產快速、打了就跑的攔截機單位
|
|||||||
block.ghoul-factory.description = 生產重型鋪蓋轟炸機。
|
block.ghoul-factory.description = 生產重型鋪蓋轟炸機。
|
||||||
block.dagger-factory.description = 產生基本地面單位。
|
block.dagger-factory.description = 產生基本地面單位。
|
||||||
block.titan-factory.description = 生產具有裝甲的高級地面單位。
|
block.titan-factory.description = 生產具有裝甲的高級地面單位。
|
||||||
|
|
||||||
block.fortress-factory.description = 生產重型火砲地面單位。
|
block.fortress-factory.description = 生產重型火砲地面單位。
|
||||||
block.revenant-factory.description = 生產重型激光地面單位。
|
block.revenant-factory.description = 生產重型激光地面單位。
|
||||||
block.repair-point.description = 持續治療附近最近的受損單位。
|
block.repair-point.description = 持續治療附近最近的受損單位。
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ uniform sampler2D u_texture;
|
|||||||
varying vec4 v_color;
|
varying vec4 v_color;
|
||||||
varying vec2 v_texCoord;
|
varying vec2 v_texCoord;
|
||||||
|
|
||||||
void main() {
|
void main(){
|
||||||
vec4 color = texture2D(u_texture, v_texCoord.xy);
|
vec4 color = texture2D(u_texture, v_texCoord.xy);
|
||||||
color = vec4(0.0, 0.0, 0.0, 1.0 - color.r);
|
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0 - color.r);
|
||||||
gl_FragColor = color;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ void main() {
|
|||||||
|
|
||||||
if(color.r > 0.01){
|
if(color.r > 0.01){
|
||||||
color = texture2D(u_texture, c + vec2(sin(stime/3.0 + coords.y/0.75) * v.x, 0.0)) * vec4(0.9, 0.9, 1, 1.0);
|
color = texture2D(u_texture, c + vec2(sin(stime/3.0 + coords.y/0.75) * v.x, 0.0)) * vec4(0.9, 0.9, 1, 1.0);
|
||||||
color.a = 1.0;
|
|
||||||
|
|
||||||
float n1 = snoise(coords / 22.0 + vec2(-time) / 540.0);
|
float n1 = snoise(coords / 22.0 + vec2(-time) / 540.0);
|
||||||
float n2 = snoise((coords + vec2(632.0)) / 8.0 + vec2(0.0, time) / 510.0);
|
float n2 = snoise((coords + vec2(632.0)) / 8.0 + vec2(0.0, time) / 510.0);
|
||||||
@@ -65,7 +64,6 @@ void main() {
|
|||||||
|
|
||||||
if(r < -0.3 && r > -0.6){
|
if(r < -0.3 && r > -0.6){
|
||||||
color *= 1.4;
|
color *= 1.4;
|
||||||
color.a = 1.0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -61,14 +61,14 @@ void main() {
|
|||||||
float n2 = snoise((coords + vec2(632.0)) / 25.0 + vec2(0.0, -time) / 190.0);
|
float n2 = snoise((coords + vec2(632.0)) / 25.0 + vec2(0.0, -time) / 190.0);
|
||||||
|
|
||||||
float r = (n1 + n2) * 3.0;
|
float r = (n1 + n2) * 3.0;
|
||||||
|
float tester = mod(float(int(coords.x + coords.y*1.1 + sin(stime / 8.0 + coords.x/5.0 - coords.y/100.0)*2.0)) +
|
||||||
|
sin(stime / 20.0 + coords.y/3.0) * 1.0 +
|
||||||
|
sin(stime / 10.0 + coords.y/2.0) * 2.0 +
|
||||||
|
sin(stime / 7.0 + coords.y/1.0) * 0.5 +
|
||||||
|
sin(coords.x + coords.y) +
|
||||||
|
sin(stime / 20.0 + coords.x/4.0) * 1.0, mscl) + r;
|
||||||
|
|
||||||
if(mod(float(int(coords.x + coords.y*1.1 + sin(stime / 8.0 + coords.x/5.0 - coords.y/100.0)*2.0)) +
|
if(tester < mth){
|
||||||
sin(stime / 20.0 + coords.y/3.0) * 1.0 +
|
|
||||||
sin(stime / 10.0 + coords.y/2.0) * 2.0 +
|
|
||||||
sin(stime / 7.0 + coords.y/1.0) * 0.5 +
|
|
||||||
sin(coords.x + coords.y) +
|
|
||||||
sin(stime / 20.0 + coords.x/4.0) * 1.0, mscl) + r < mth){
|
|
||||||
|
|
||||||
color *= 1.2;
|
color *= 1.2;
|
||||||
color.a = 1.0;
|
color.a = 1.0;
|
||||||
}
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 509 B After Width: | Height: | Size: 505 B |
|
Before Width: | Height: | Size: 727 KiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 244 KiB |
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 981 KiB |
|
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 109 KiB After Width: | Height: | Size: 192 KiB |
|
Before Width: | Height: | Size: 255 KiB After Width: | Height: | Size: 283 KiB |
|
Before Width: | Height: | Size: 267 KiB After Width: | Height: | Size: 535 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 748 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 107 KiB |
@@ -283,6 +283,7 @@
|
|||||||
disabledFontColor: gray,
|
disabledFontColor: gray,
|
||||||
selection: selection,
|
selection: selection,
|
||||||
background: underline,
|
background: underline,
|
||||||
|
invalidBackground: underline-red,
|
||||||
cursor: cursor,
|
cursor: cursor,
|
||||||
messageFont: default-font,
|
messageFont: default-font,
|
||||||
messageFontColor: gray
|
messageFontColor: gray
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ public class Vars{
|
|||||||
public static EntityGroup<BaseUnit>[] unitGroups;
|
public static EntityGroup<BaseUnit>[] unitGroups;
|
||||||
|
|
||||||
/**all local players, currently only has one player. may be used for local co-op in the future*/
|
/**all local players, currently only has one player. may be used for local co-op in the future*/
|
||||||
public static Player[] players = {};
|
public static Player player;
|
||||||
|
|
||||||
public static void init(){
|
public static void init(){
|
||||||
Serialization.init();
|
Serialization.init();
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public class Pathfinder{
|
|||||||
Tile other = world.tile(dx, dy);
|
Tile other = world.tile(dx, dy);
|
||||||
if(other == null) continue;
|
if(other == null) continue;
|
||||||
|
|
||||||
if(values[dx][dy] < value && (target == null || values[dx][dy] < tl) &&
|
if(values[dx][dy] < value && (target == null || values[dx][dy]< tl) &&
|
||||||
!other.solid() &&
|
!other.solid() &&
|
||||||
!(point.x != 0 && point.y != 0 && (world.solid(tile.x + point.x, tile.y) || world.solid(tile.x, tile.y + point.y)))){ //diagonal corner trap
|
!(point.x != 0 && point.y != 0 && (world.solid(tile.x + point.x, tile.y) || world.solid(tile.x, tile.y + point.y)))){ //diagonal corner trap
|
||||||
target = other;
|
target = other;
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import io.anuke.mindustry.entities.Effects;
|
|||||||
import io.anuke.mindustry.entities.type.BaseUnit;
|
import io.anuke.mindustry.entities.type.BaseUnit;
|
||||||
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
|
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
|
||||||
import io.anuke.mindustry.game.SpawnGroup;
|
import io.anuke.mindustry.game.SpawnGroup;
|
||||||
|
import io.anuke.mindustry.net.Net;
|
||||||
import io.anuke.mindustry.world.Pos;
|
import io.anuke.mindustry.world.Pos;
|
||||||
|
|
||||||
import java.io.DataInput;
|
import java.io.DataInput;
|
||||||
@@ -54,7 +55,7 @@ public class WaveSpawner{
|
|||||||
|
|
||||||
/**@return true if the player is near a ground spawn point.*/
|
/**@return true if the player is near a ground spawn point.*/
|
||||||
public boolean playerNear(){
|
public boolean playerNear(){
|
||||||
return groundSpawns.count(g -> Mathf.dst(g.x * tilesize, g.y * tilesize, players[0].x, players[0].y) < maxShockwaveDst) > 0;
|
return groundSpawns.count(g -> Mathf.dst(g.x * tilesize, g.y * tilesize, player.x, player.y) < maxShockwaveDst) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void spawnEnemies(){
|
public void spawnEnemies(){
|
||||||
@@ -105,7 +106,7 @@ public class WaveSpawner{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSpawning(){
|
public boolean isSpawning(){
|
||||||
return spawning;
|
return spawning && !Net.client();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void reset(){
|
private void reset(){
|
||||||
|
|||||||
@@ -3,11 +3,17 @@ package io.anuke.mindustry.content;
|
|||||||
import io.anuke.arc.Core;
|
import io.anuke.arc.Core;
|
||||||
import io.anuke.arc.graphics.Color;
|
import io.anuke.arc.graphics.Color;
|
||||||
import io.anuke.arc.graphics.g2d.Draw;
|
import io.anuke.arc.graphics.g2d.Draw;
|
||||||
|
import io.anuke.arc.graphics.g2d.Lines;
|
||||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||||
|
import io.anuke.arc.math.Mathf;
|
||||||
|
import io.anuke.mindustry.Vars;
|
||||||
import io.anuke.mindustry.game.ContentList;
|
import io.anuke.mindustry.game.ContentList;
|
||||||
import io.anuke.mindustry.graphics.CacheLayer;
|
import io.anuke.mindustry.graphics.CacheLayer;
|
||||||
|
import io.anuke.mindustry.graphics.Pal;
|
||||||
|
import io.anuke.mindustry.graphics.Shaders;
|
||||||
import io.anuke.mindustry.type.Category;
|
import io.anuke.mindustry.type.Category;
|
||||||
import io.anuke.mindustry.type.ItemStack;
|
import io.anuke.mindustry.type.ItemStack;
|
||||||
|
import io.anuke.mindustry.type.LiquidStack;
|
||||||
import io.anuke.mindustry.world.Block;
|
import io.anuke.mindustry.world.Block;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.mindustry.world.blocks.*;
|
import io.anuke.mindustry.world.blocks.*;
|
||||||
@@ -24,9 +30,9 @@ import io.anuke.mindustry.world.blocks.storage.Vault;
|
|||||||
import io.anuke.mindustry.world.blocks.units.MechPad;
|
import io.anuke.mindustry.world.blocks.units.MechPad;
|
||||||
import io.anuke.mindustry.world.blocks.units.RepairPoint;
|
import io.anuke.mindustry.world.blocks.units.RepairPoint;
|
||||||
import io.anuke.mindustry.world.blocks.units.UnitFactory;
|
import io.anuke.mindustry.world.blocks.units.UnitFactory;
|
||||||
import io.anuke.mindustry.world.consumers.ConsumeItemFilter;
|
|
||||||
import io.anuke.mindustry.world.consumers.ConsumeLiquidFilter;
|
import io.anuke.mindustry.world.consumers.ConsumeLiquidFilter;
|
||||||
import io.anuke.mindustry.world.meta.Attribute;
|
import io.anuke.mindustry.world.meta.Attribute;
|
||||||
|
import io.anuke.mindustry.world.modules.LiquidModule;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.state;
|
import static io.anuke.mindustry.Vars.state;
|
||||||
import static io.anuke.mindustry.Vars.world;
|
import static io.anuke.mindustry.Vars.world;
|
||||||
@@ -53,7 +59,7 @@ public class Blocks implements ContentList{
|
|||||||
//defense
|
//defense
|
||||||
scrapWall, scrapWallLarge, scrapWallHuge, scrapWallGigantic, thruster, //ok, these names are getting ridiculous, but at least I don't have humongous walls yet
|
scrapWall, scrapWallLarge, scrapWallHuge, scrapWallGigantic, thruster, //ok, these names are getting ridiculous, but at least I don't have humongous walls yet
|
||||||
copperWall, copperWallLarge, titaniumWall, titaniumWallLarge, thoriumWall, thoriumWallLarge, door, doorLarge,
|
copperWall, copperWallLarge, titaniumWall, titaniumWallLarge, thoriumWall, thoriumWallLarge, door, doorLarge,
|
||||||
phaseWall, phaseWallLarge, surgeWall, surgeWallLarge, mendProjector, overdriveProjector, forceProjector, shockMine,
|
phaseWall, phaseWallLarge, surgeWall, surgeWallLarge, mender, mendProjector, overdriveProjector, forceProjector, shockMine,
|
||||||
|
|
||||||
//transport
|
//transport
|
||||||
conveyor, titaniumConveyor, distributor, junction, itemBridge, phaseConveyor, sorter, router, overflowGate, massDriver,
|
conveyor, titaniumConveyor, distributor, junction, itemBridge, phaseConveyor, sorter, router, overflowGate, massDriver,
|
||||||
@@ -69,7 +75,7 @@ public class Blocks implements ContentList{
|
|||||||
mechanicalDrill, pneumaticDrill, laserDrill, blastDrill, waterExtractor, oilExtractor, cultivator,
|
mechanicalDrill, pneumaticDrill, laserDrill, blastDrill, waterExtractor, oilExtractor, cultivator,
|
||||||
|
|
||||||
//storage
|
//storage
|
||||||
coreShard, coreFoundation, coreNucleus, vault, container, unloader, launchPad,
|
coreShard, coreFoundation, coreNucleus, vault, container, unloader, launchPad, launchPadLarge,
|
||||||
|
|
||||||
//turrets
|
//turrets
|
||||||
duo, scatter, scorch, hail, arc, wave, lancer, swarmer, salvo, fuse, ripple, cyclone, spectre, meltdown,
|
duo, scatter, scorch, hail, arc, wave, lancer, swarmer, salvo, fuse, ripple, cyclone, spectre, meltdown,
|
||||||
@@ -87,6 +93,7 @@ public class Blocks implements ContentList{
|
|||||||
|
|
||||||
air = new Floor("air"){{
|
air = new Floor("air"){{
|
||||||
alwaysReplace = true;
|
alwaysReplace = true;
|
||||||
|
hasShadow = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void draw(Tile tile){}
|
public void draw(Tile tile){}
|
||||||
@@ -199,6 +206,21 @@ public class Blocks implements ContentList{
|
|||||||
blendGroup = stone;
|
blendGroup = stone;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
ignarock = new Floor("ignarock"){{
|
||||||
|
|
||||||
|
}};
|
||||||
|
|
||||||
|
hotrock = new Floor("hotrock"){{
|
||||||
|
attributes.set(Attribute.heat, 0.5f);
|
||||||
|
blendGroup = ignarock;
|
||||||
|
}};
|
||||||
|
|
||||||
|
magmarock = new Floor("magmarock"){{
|
||||||
|
attributes.set(Attribute.heat, 0.75f);
|
||||||
|
updateEffect = Fx.magmasmoke;
|
||||||
|
blendGroup = ignarock;
|
||||||
|
}};
|
||||||
|
|
||||||
sand = new Floor("sand"){{
|
sand = new Floor("sand"){{
|
||||||
itemDrop = Items.sand;
|
itemDrop = Items.sand;
|
||||||
playerUnmineable = true;
|
playerUnmineable = true;
|
||||||
@@ -230,6 +252,7 @@ public class Blocks implements ContentList{
|
|||||||
dragMultiplier = 1f;
|
dragMultiplier = 1f;
|
||||||
speedMultiplier = 1f;
|
speedMultiplier = 1f;
|
||||||
attributes.set(Attribute.water, 0.4f);
|
attributes.set(Attribute.water, 0.4f);
|
||||||
|
edgeStyle = "blocky";
|
||||||
}};
|
}};
|
||||||
|
|
||||||
iceSnow = new Floor("ice-snow"){{
|
iceSnow = new Floor("ice-snow"){{
|
||||||
@@ -337,21 +360,6 @@ public class Blocks implements ContentList{
|
|||||||
variants = 0;
|
variants = 0;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
ignarock = new Floor("ignarock"){{
|
|
||||||
blendGroup = darksand;
|
|
||||||
}};
|
|
||||||
|
|
||||||
hotrock = new Floor("hotrock"){{
|
|
||||||
attributes.set(Attribute.heat, 0.5f);
|
|
||||||
blendGroup = ignarock;
|
|
||||||
}};
|
|
||||||
|
|
||||||
magmarock = new Floor("magmarock"){{
|
|
||||||
attributes.set(Attribute.heat, 0.75f);
|
|
||||||
updateEffect = Fx.magmasmoke;
|
|
||||||
blendGroup = ignarock;
|
|
||||||
}};
|
|
||||||
|
|
||||||
//endregion
|
//endregion
|
||||||
//region ore
|
//region ore
|
||||||
|
|
||||||
@@ -369,7 +377,7 @@ public class Blocks implements ContentList{
|
|||||||
requirements(Category.crafting, ItemStack.with(Items.copper, 150, Items.lead, 60));
|
requirements(Category.crafting, ItemStack.with(Items.copper, 150, Items.lead, 60));
|
||||||
|
|
||||||
craftEffect = Fx.pulverizeMedium;
|
craftEffect = Fx.pulverizeMedium;
|
||||||
output = Items.graphite;
|
outputItem = new ItemStack(Items.graphite, 1);
|
||||||
craftTime = 90f;
|
craftTime = 90f;
|
||||||
size = 2;
|
size = 2;
|
||||||
hasItems = true;
|
hasItems = true;
|
||||||
@@ -381,7 +389,7 @@ public class Blocks implements ContentList{
|
|||||||
requirements(Category.crafting, ItemStack.with(Items.titanium, 200, Items.silicon, 50, Items.lead, 200, Items.graphite, 100));
|
requirements(Category.crafting, ItemStack.with(Items.titanium, 200, Items.silicon, 50, Items.lead, 200, Items.graphite, 100));
|
||||||
|
|
||||||
craftEffect = Fx.pulverizeMedium;
|
craftEffect = Fx.pulverizeMedium;
|
||||||
output = Items.graphite;
|
outputItem = new ItemStack(Items.graphite, 2);
|
||||||
craftTime = 30f;
|
craftTime = 30f;
|
||||||
size = 3;
|
size = 3;
|
||||||
hasItems = true;
|
hasItems = true;
|
||||||
@@ -389,14 +397,14 @@ public class Blocks implements ContentList{
|
|||||||
hasPower = true;
|
hasPower = true;
|
||||||
|
|
||||||
consumes.power(2f);
|
consumes.power(2f);
|
||||||
consumes.item(Items.coal, 2);
|
consumes.item(Items.coal, 4);
|
||||||
consumes.liquid(Liquids.water, 0.1f);
|
consumes.liquid(Liquids.water, 0.1f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
siliconSmelter = new PowerSmelter("silicon-smelter"){{
|
siliconSmelter = new GenericSmelter("silicon-smelter"){{
|
||||||
requirements(Category.crafting, ItemStack.with(Items.copper, 60, Items.lead, 50));
|
requirements(Category.crafting, ItemStack.with(Items.copper, 60, Items.lead, 50));
|
||||||
craftEffect = Fx.smeltsmoke;
|
craftEffect = Fx.smeltsmoke;
|
||||||
output = Items.silicon;
|
outputItem = new ItemStack(Items.silicon, 1);
|
||||||
craftTime = 40f;
|
craftTime = 40f;
|
||||||
size = 2;
|
size = 2;
|
||||||
hasLiquids = false;
|
hasLiquids = false;
|
||||||
@@ -406,10 +414,10 @@ public class Blocks implements ContentList{
|
|||||||
consumes.power(0.50f);
|
consumes.power(0.50f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
kiln = new PowerSmelter("kiln"){{
|
kiln = new GenericSmelter("kiln"){{
|
||||||
requirements(Category.crafting, ItemStack.with(Items.copper, 120, Items.graphite, 60, Items.lead, 60));
|
requirements(Category.crafting, ItemStack.with(Items.copper, 120, Items.graphite, 60, Items.lead, 60));
|
||||||
craftEffect = Fx.smeltsmoke;
|
craftEffect = Fx.smeltsmoke;
|
||||||
output = Items.metaglass;
|
outputItem = new ItemStack(Items.metaglass, 1);
|
||||||
craftTime = 30f;
|
craftTime = 30f;
|
||||||
size = 2;
|
size = 2;
|
||||||
hasPower = hasItems = true;
|
hasPower = hasItems = true;
|
||||||
@@ -419,12 +427,12 @@ public class Blocks implements ContentList{
|
|||||||
consumes.power(0.60f);
|
consumes.power(0.60f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
plastaniumCompressor = new PlastaniumCompressor("plastanium-compressor"){{
|
plastaniumCompressor = new GenericCrafter("plastanium-compressor"){{
|
||||||
requirements(Category.crafting, ItemStack.with(Items.silicon, 160, Items.lead, 230, Items.graphite, 120, Items.titanium, 160));
|
requirements(Category.crafting, ItemStack.with(Items.silicon, 160, Items.lead, 230, Items.graphite, 120, Items.titanium, 160));
|
||||||
hasItems = true;
|
hasItems = true;
|
||||||
liquidCapacity = 60f;
|
liquidCapacity = 60f;
|
||||||
craftTime = 60f;
|
craftTime = 60f;
|
||||||
output = Items.plastanium;
|
outputItem = new ItemStack(Items.plastanium, 1);
|
||||||
size = 2;
|
size = 2;
|
||||||
health = 320;
|
health = 320;
|
||||||
hasPower = hasLiquids = true;
|
hasPower = hasLiquids = true;
|
||||||
@@ -434,23 +442,69 @@ public class Blocks implements ContentList{
|
|||||||
consumes.liquid(Liquids.oil, 0.25f);
|
consumes.liquid(Liquids.oil, 0.25f);
|
||||||
consumes.power(3f);
|
consumes.power(3f);
|
||||||
consumes.item(Items.titanium, 2);
|
consumes.item(Items.titanium, 2);
|
||||||
|
|
||||||
|
int topRegion = reg("-top");
|
||||||
|
|
||||||
|
drawer = tile -> {
|
||||||
|
super.draw(tile);
|
||||||
|
|
||||||
|
GenericCrafterEntity entity = tile.entity();
|
||||||
|
|
||||||
|
Draw.alpha(Mathf.absin(entity.totalProgress, 3f, 0.9f) * entity.warmup);
|
||||||
|
Draw.rect(reg(topRegion), tile.drawx(), tile.drawy());
|
||||||
|
Draw.reset();
|
||||||
|
};
|
||||||
}};
|
}};
|
||||||
|
|
||||||
phaseWeaver = new PhaseWeaver("phase-weaver"){{
|
phaseWeaver = new GenericCrafter("phase-weaver"){{
|
||||||
requirements(Category.crafting, ItemStack.with(Items.silicon, 260, Items.lead, 240, Items.thorium, 150));
|
requirements(Category.crafting, ItemStack.with(Items.silicon, 260, Items.lead, 240, Items.thorium, 150));
|
||||||
craftEffect = Fx.smeltsmoke;
|
craftEffect = Fx.smeltsmoke;
|
||||||
output = Items.phasefabric;
|
outputItem = new ItemStack(Items.phasefabric, 1);
|
||||||
craftTime = 120f;
|
craftTime = 120f;
|
||||||
size = 2;
|
size = 2;
|
||||||
|
|
||||||
consumes.items(new ItemStack(Items.thorium, 4), new ItemStack(Items.sand, 10));
|
consumes.items(new ItemStack(Items.thorium, 4), new ItemStack(Items.sand, 10));
|
||||||
consumes.power(5f);
|
consumes.power(5f);
|
||||||
|
|
||||||
|
int bottomRegion = reg("-bottom"), weaveRegion = reg("-weave");
|
||||||
|
|
||||||
|
drawer = tile -> {
|
||||||
|
GenericCrafterEntity entity = tile.entity();
|
||||||
|
|
||||||
|
Draw.rect(reg(bottomRegion), tile.drawx(), tile.drawy());
|
||||||
|
|
||||||
|
float progress = 0.5f;
|
||||||
|
|
||||||
|
Shaders.build.region = reg(weaveRegion);
|
||||||
|
Shaders.build.progress = progress;
|
||||||
|
Shaders.build.color.set(Pal.accent);
|
||||||
|
Shaders.build.color.a = entity.warmup;
|
||||||
|
Shaders.build.time = -entity.totalProgress / 10f;
|
||||||
|
|
||||||
|
Draw.shader(Shaders.build, false);
|
||||||
|
Shaders.build.apply();
|
||||||
|
Draw.rect(reg(weaveRegion), tile.drawx(), tile.drawy(), entity.totalProgress);
|
||||||
|
Draw.shader();
|
||||||
|
|
||||||
|
Draw.color(Pal.accent);
|
||||||
|
Draw.alpha(entity.warmup);
|
||||||
|
|
||||||
|
Lines.lineAngleCenter(
|
||||||
|
tile.drawx() + Mathf.sin(entity.totalProgress, 6f, Vars.tilesize / 3f * size),
|
||||||
|
tile.drawy(),
|
||||||
|
90,
|
||||||
|
size * Vars.tilesize / 2f);
|
||||||
|
|
||||||
|
Draw.reset();
|
||||||
|
|
||||||
|
Draw.rect(region, tile.drawx(), tile.drawy());
|
||||||
|
};
|
||||||
}};
|
}};
|
||||||
|
|
||||||
surgeSmelter = new PowerSmelter("alloy-smelter"){{
|
surgeSmelter = new GenericSmelter("alloy-smelter"){{
|
||||||
requirements(Category.crafting, ItemStack.with(Items.silicon, 160, Items.lead, 160, Items.thorium, 140));
|
requirements(Category.crafting, ItemStack.with(Items.silicon, 160, Items.lead, 160, Items.thorium, 140));
|
||||||
craftEffect = Fx.smeltsmoke;
|
craftEffect = Fx.smeltsmoke;
|
||||||
output = Items.surgealloy;
|
outputItem = new ItemStack(Items.surgealloy, 1);
|
||||||
craftTime = 75f;
|
craftTime = 75f;
|
||||||
size = 3;
|
size = 3;
|
||||||
|
|
||||||
@@ -458,35 +512,60 @@ public class Blocks implements ContentList{
|
|||||||
consumes.items(new ItemStack(Items.titanium, 2), new ItemStack(Items.lead, 4), new ItemStack(Items.silicon, 3), new ItemStack(Items.copper, 3));
|
consumes.items(new ItemStack(Items.titanium, 2), new ItemStack(Items.lead, 4), new ItemStack(Items.silicon, 3), new ItemStack(Items.copper, 3));
|
||||||
}};
|
}};
|
||||||
|
|
||||||
cryofluidMixer = new LiquidMixer("cryofluidmixer"){{
|
cryofluidMixer = new GenericCrafter("cryofluidmixer"){{
|
||||||
requirements(Category.crafting, ItemStack.with(Items.lead, 130, Items.silicon, 80, Items.thorium, 90));
|
requirements(Category.crafting, ItemStack.with(Items.lead, 130, Items.silicon, 80, Items.thorium, 90));
|
||||||
outputLiquid = Liquids.cryofluid;
|
outputLiquid = new LiquidStack(Liquids.cryofluid, 0.3f);
|
||||||
liquidPerItem = 50f;
|
craftTime = 5f;
|
||||||
size = 2;
|
size = 2;
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
|
hasItems = true;
|
||||||
|
rotate = false;
|
||||||
|
solid = true;
|
||||||
|
outputsLiquid = true;
|
||||||
|
|
||||||
consumes.power(1f);
|
consumes.power(1f);
|
||||||
consumes.item(Items.titanium);
|
consumes.item(Items.titanium);
|
||||||
consumes.liquid(Liquids.water, 0.3f);
|
consumes.liquid(Liquids.water, 0.3f);
|
||||||
|
|
||||||
|
int liquidRegion = reg("-liquid"), topRegion = reg("-top"), bottomRegion = reg("-bottom");
|
||||||
|
|
||||||
|
drawIcons = () -> new TextureRegion[]{Core.atlas.find(name + "-bottom"), Core.atlas.find(name + "-top")};
|
||||||
|
|
||||||
|
drawer = tile -> {
|
||||||
|
LiquidModule mod = tile.entity.liquids;
|
||||||
|
|
||||||
|
int rotation = rotate ? tile.getRotation() * 90 : 0;
|
||||||
|
|
||||||
|
Draw.rect(reg(bottomRegion), tile.drawx(), tile.drawy(), rotation);
|
||||||
|
|
||||||
|
if(mod.total() > 0.001f){
|
||||||
|
Draw.color(outputLiquid.liquid.color);
|
||||||
|
Draw.alpha(mod.get(outputLiquid.liquid) / liquidCapacity);
|
||||||
|
Draw.rect(reg(liquidRegion), tile.drawx(), tile.drawy(), rotation);
|
||||||
|
Draw.color();
|
||||||
|
}
|
||||||
|
|
||||||
|
Draw.rect(reg(topRegion), tile.drawx(), tile.drawy(), rotation);
|
||||||
|
};
|
||||||
}};
|
}};
|
||||||
|
|
||||||
blastMixer = new GenericCrafter("blast-mixer"){{
|
blastMixer = new GenericCrafter("blast-mixer"){{
|
||||||
requirements(Category.crafting, ItemStack.with(Items.lead, 60, Items.titanium, 40));
|
requirements(Category.crafting, ItemStack.with(Items.lead, 60, Items.titanium, 40));
|
||||||
hasItems = true;
|
hasItems = true;
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
output = Items.blastCompound;
|
outputItem = new ItemStack(Items.blastCompound, 1);
|
||||||
size = 2;
|
size = 2;
|
||||||
|
|
||||||
consumes.items(new ItemStack(Items.pyratite, 1), new ItemStack(Items.sporePod, 1));
|
consumes.items(new ItemStack(Items.pyratite, 1), new ItemStack(Items.sporePod, 1));
|
||||||
consumes.power(0.40f);
|
consumes.power(0.40f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
pyratiteMixer = new PowerSmelter("pyratite-mixer"){{
|
pyratiteMixer = new GenericSmelter("pyratite-mixer"){{
|
||||||
requirements(Category.crafting, ItemStack.with(Items.copper, 100, Items.lead, 50));
|
requirements(Category.crafting, ItemStack.with(Items.copper, 100, Items.lead, 50));
|
||||||
flameColor = Color.CLEAR;
|
flameColor = Color.CLEAR;
|
||||||
hasItems = true;
|
hasItems = true;
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
output = Items.pyratite;
|
outputItem = new ItemStack(Items.pyratite, 1);
|
||||||
|
|
||||||
size = 2;
|
size = 2;
|
||||||
|
|
||||||
@@ -494,11 +573,10 @@ public class Blocks implements ContentList{
|
|||||||
consumes.items(new ItemStack(Items.coal, 1), new ItemStack(Items.lead, 2), new ItemStack(Items.sand, 2));
|
consumes.items(new ItemStack(Items.coal, 1), new ItemStack(Items.lead, 2), new ItemStack(Items.sand, 2));
|
||||||
}};
|
}};
|
||||||
|
|
||||||
melter = new PowerCrafter("melter"){{
|
melter = new GenericCrafter("melter"){{
|
||||||
requirements(Category.crafting, ItemStack.with(Items.copper, 60, Items.lead, 70, Items.graphite, 90));
|
requirements(Category.crafting, ItemStack.with(Items.copper, 60, Items.lead, 70, Items.graphite, 90));
|
||||||
health = 200;
|
health = 200;
|
||||||
outputLiquid = Liquids.slag;
|
outputLiquid = new LiquidStack(Liquids.slag, 2f);
|
||||||
outputLiquidAmount = 2f;
|
|
||||||
craftTime = 10f;
|
craftTime = 10f;
|
||||||
hasLiquids = hasPower = true;
|
hasLiquids = hasPower = true;
|
||||||
|
|
||||||
@@ -515,7 +593,7 @@ public class Blocks implements ContentList{
|
|||||||
Items.titanium, 2
|
Items.titanium, 2
|
||||||
);
|
);
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
filterTime = 35f;
|
craftTime = 35f;
|
||||||
spinnerLength = 1.5f;
|
spinnerLength = 1.5f;
|
||||||
spinnerRadius = 3.5f;
|
spinnerRadius = 3.5f;
|
||||||
spinnerThickness = 1.5f;
|
spinnerThickness = 1.5f;
|
||||||
@@ -528,8 +606,8 @@ public class Blocks implements ContentList{
|
|||||||
|
|
||||||
cultivator = new Cultivator("cultivator"){{
|
cultivator = new Cultivator("cultivator"){{
|
||||||
requirements(Category.crafting, ItemStack.with(Items.copper, 20, Items.lead, 50, Items.silicon, 20));
|
requirements(Category.crafting, ItemStack.with(Items.copper, 20, Items.lead, 50, Items.silicon, 20));
|
||||||
output = Items.sporePod;
|
outputItem = new ItemStack(Items.sporePod, 1);
|
||||||
craftTime = 200;
|
craftTime = 160;
|
||||||
size = 2;
|
size = 2;
|
||||||
hasLiquids = true;
|
hasLiquids = true;
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
@@ -539,23 +617,41 @@ public class Blocks implements ContentList{
|
|||||||
consumes.liquid(Liquids.water, 0.15f);
|
consumes.liquid(Liquids.water, 0.15f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
sporePress = new Compressor("spore-press"){{
|
sporePress = new GenericCrafter("spore-press"){{
|
||||||
requirements(Category.crafting, ItemStack.with(Items.lead, 70, Items.silicon, 60));
|
requirements(Category.crafting, ItemStack.with(Items.lead, 70, Items.silicon, 60));
|
||||||
liquidCapacity = 60f;
|
liquidCapacity = 60f;
|
||||||
craftTime = 20f;
|
craftTime = 20f;
|
||||||
outputLiquid = Liquids.oil;
|
outputLiquid = new LiquidStack(Liquids.oil, 4f);
|
||||||
outputLiquidAmount = 2.5f;
|
|
||||||
size = 2;
|
size = 2;
|
||||||
health = 320;
|
health = 320;
|
||||||
hasLiquids = true;
|
hasLiquids = true;
|
||||||
|
|
||||||
consumes.item(Items.sporePod, 1);
|
consumes.item(Items.sporePod, 1);
|
||||||
consumes.power(0.60f);
|
consumes.power(0.60f);
|
||||||
|
|
||||||
|
int[] frameRegions = new int[3];
|
||||||
|
for(int i = 0; i < 3; i++){
|
||||||
|
frameRegions[i] = reg("-frame" + i);
|
||||||
|
}
|
||||||
|
|
||||||
|
int liquidRegion = reg("-liquid");
|
||||||
|
int topRegion =reg("-top");
|
||||||
|
|
||||||
|
drawer = tile -> {
|
||||||
|
GenericCrafterEntity entity = tile.entity();
|
||||||
|
|
||||||
|
Draw.rect(region, tile.drawx(), tile.drawy());
|
||||||
|
Draw.rect(reg(frameRegions[(int) Mathf.absin(entity.totalProgress, 5f, 2.999f)]), tile.drawx(), tile.drawy());
|
||||||
|
Draw.color(Color.CLEAR, tile.entity.liquids.current().color, tile.entity.liquids.total() / liquidCapacity);
|
||||||
|
Draw.rect(reg(liquidRegion), tile.drawx(), tile.drawy());
|
||||||
|
Draw.color();
|
||||||
|
Draw.rect(reg(topRegion), tile.drawx(), tile.drawy());
|
||||||
|
};
|
||||||
}};
|
}};
|
||||||
|
|
||||||
pulverizer = new Pulverizer("pulverizer"){{
|
pulverizer = new GenericCrafter("pulverizer"){{
|
||||||
requirements(Category.crafting, ItemStack.with(Items.copper, 60, Items.lead, 50));
|
requirements(Category.crafting, ItemStack.with(Items.copper, 60, Items.lead, 50));
|
||||||
output = Items.sand;
|
outputItem = new ItemStack(Items.sand, 1);
|
||||||
craftEffect = Fx.pulverize;
|
craftEffect = Fx.pulverize;
|
||||||
craftTime = 40f;
|
craftTime = 40f;
|
||||||
updateEffect = Fx.pulverizeSmall;
|
updateEffect = Fx.pulverizeSmall;
|
||||||
@@ -563,6 +659,15 @@ public class Blocks implements ContentList{
|
|||||||
|
|
||||||
consumes.item(Items.scrap, 1);
|
consumes.item(Items.scrap, 1);
|
||||||
consumes.power(0.50f);
|
consumes.power(0.50f);
|
||||||
|
|
||||||
|
int rotatorRegion = reg("-rotator");
|
||||||
|
|
||||||
|
drawer = tile -> {
|
||||||
|
GenericCrafterEntity entity = tile.entity();
|
||||||
|
|
||||||
|
Draw.rect(region, tile.drawx(), tile.drawy());
|
||||||
|
Draw.rect(reg(rotatorRegion), tile.drawx(), tile.drawy(), entity.totalProgress * 2f);
|
||||||
|
};
|
||||||
}};
|
}};
|
||||||
|
|
||||||
incinerator = new Incinerator("incinerator"){{
|
incinerator = new Incinerator("incinerator"){{
|
||||||
@@ -598,7 +703,7 @@ public class Blocks implements ContentList{
|
|||||||
//endregion
|
//endregion
|
||||||
//region defense
|
//region defense
|
||||||
|
|
||||||
int wallHealthMultiplier = 3;
|
int wallHealthMultiplier = 4;
|
||||||
|
|
||||||
scrapWall = new Wall("scrap-wall"){{
|
scrapWall = new Wall("scrap-wall"){{
|
||||||
health = 60 * wallHealthMultiplier;
|
health = 60 * wallHealthMultiplier;
|
||||||
@@ -695,10 +800,27 @@ public class Blocks implements ContentList{
|
|||||||
size = 2;
|
size = 2;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
mender = new MendProjector("mender"){{
|
||||||
|
requirements(Category.effect, ItemStack.with(Items.lead, 60, Items.copper, 50));
|
||||||
|
consumes.power(0.7f);
|
||||||
|
size = 1;
|
||||||
|
reload = 200f;
|
||||||
|
range = 40f;
|
||||||
|
healPercent = 5f;
|
||||||
|
phaseBoost = 4f;
|
||||||
|
phaseRangeBoost = 20f;
|
||||||
|
health = 80;
|
||||||
|
consumes.item(Items.silicon).optional(true);
|
||||||
|
}};
|
||||||
|
|
||||||
mendProjector = new MendProjector("mend-projector"){{
|
mendProjector = new MendProjector("mend-projector"){{
|
||||||
requirements(Category.effect, ItemStack.with(Items.lead, 200, Items.titanium, 50, Items.silicon, 180));
|
requirements(Category.effect, ItemStack.with(Items.lead, 200, Items.titanium, 50, Items.silicon, 80));
|
||||||
consumes.power(2f);
|
consumes.power(1.8f);
|
||||||
size = 2;
|
size = 2;
|
||||||
|
reload = 250f;
|
||||||
|
range = 85f;
|
||||||
|
healPercent = 14f;
|
||||||
|
health = 80 * size * size;
|
||||||
consumes.item(Items.phasefabric).optional(true);
|
consumes.item(Items.phasefabric).optional(true);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -706,17 +828,18 @@ public class Blocks implements ContentList{
|
|||||||
requirements(Category.effect, ItemStack.with(Items.lead, 200, Items.titanium, 150, Items.silicon, 150, Items.plastanium, 60));
|
requirements(Category.effect, ItemStack.with(Items.lead, 200, Items.titanium, 150, Items.silicon, 150, Items.plastanium, 60));
|
||||||
consumes.power(3.50f);
|
consumes.power(3.50f);
|
||||||
size = 2;
|
size = 2;
|
||||||
consumes.item(Items.phasefabric).optional(true).boost(true);
|
consumes.item(Items.phasefabric).optional(true);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
forceProjector = new ForceProjector("force-projector"){{
|
forceProjector = new ForceProjector("force-projector"){{
|
||||||
requirements(Category.effect, ItemStack.with(Items.lead, 200, Items.titanium, 150, Items.silicon, 250));
|
requirements(Category.effect, ItemStack.with(Items.lead, 200, Items.titanium, 150, Items.silicon, 250));
|
||||||
size = 3;
|
size = 3;
|
||||||
consumes.item(Items.phasefabric).optional(true).boost(true);
|
consumes.item(Items.phasefabric).optional(true);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
shockMine = new ShockMine("shock-mine"){{
|
shockMine = new ShockMine("shock-mine"){{
|
||||||
requirements(Category.effect, ItemStack.with(Items.lead, 50, Items.silicon, 25));
|
requirements(Category.effect, ItemStack.with(Items.lead, 50, Items.silicon, 25));
|
||||||
|
hasShadow = false;
|
||||||
health = 40;
|
health = 40;
|
||||||
damage = 11;
|
damage = 11;
|
||||||
tileDamage = 7f;
|
tileDamage = 7f;
|
||||||
@@ -736,7 +859,7 @@ public class Blocks implements ContentList{
|
|||||||
titaniumConveyor = new Conveyor("titanium-conveyor"){{
|
titaniumConveyor = new Conveyor("titanium-conveyor"){{
|
||||||
requirements(Category.distribution, ItemStack.with(Items.copper, 2, Items.lead, 1, Items.titanium, 1));
|
requirements(Category.distribution, ItemStack.with(Items.copper, 2, Items.lead, 1, Items.titanium, 1));
|
||||||
health = 65;
|
health = 65;
|
||||||
speed = 0.07f;
|
speed = 0.08f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
junction = new Junction("junction"){{
|
junction = new Junction("junction"){{
|
||||||
@@ -901,7 +1024,7 @@ public class Blocks implements ContentList{
|
|||||||
size = 2;
|
size = 2;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
turbineGenerator = new TurbineGenerator("turbine-generator"){{
|
turbineGenerator = new BurnerGenerator("turbine-generator"){{
|
||||||
requirements(Category.power, ItemStack.with(Items.copper, 70, Items.graphite, 50, Items.lead, 80, Items.silicon, 60));
|
requirements(Category.power, ItemStack.with(Items.copper, 70, Items.graphite, 50, Items.lead, 80, Items.silicon, 60));
|
||||||
powerProduction = 6f;
|
powerProduction = 6f;
|
||||||
itemDuration = 30f;
|
itemDuration = 30f;
|
||||||
@@ -910,15 +1033,15 @@ public class Blocks implements ContentList{
|
|||||||
size = 2;
|
size = 2;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
differentialGenerator = new DifferentialGenerator("differential-generator"){{
|
differentialGenerator = new ItemLiquidGenerator(true, true, "differential-generator"){{
|
||||||
requirements(Category.power, ItemStack.with(Items.copper, 140, Items.titanium, 100, Items.lead, 200, Items.silicon, 130, Items.metaglass, 100));
|
requirements(Category.power, ItemStack.with(Items.copper, 140, Items.titanium, 100, Items.lead, 200, Items.silicon, 130, Items.metaglass, 100));
|
||||||
powerProduction = 13f;
|
powerProduction = 13f;
|
||||||
itemDuration = 50f;
|
itemDuration = 50f;
|
||||||
consumes.remove(ConsumeItemFilter.class);
|
hasLiquids = true;
|
||||||
consumes.remove(ConsumeLiquidFilter.class);
|
size = 3;
|
||||||
|
|
||||||
consumes.item(Items.pyratite);
|
consumes.item(Items.pyratite);
|
||||||
consumes.liquid(Liquids.cryofluid, 0.2f);
|
consumes.liquid(Liquids.cryofluid, 0.2f);
|
||||||
size = 3;
|
|
||||||
}};
|
}};
|
||||||
|
|
||||||
rtgGenerator = new DecayGenerator("rtg-generator"){{
|
rtgGenerator = new DecayGenerator("rtg-generator"){{
|
||||||
@@ -953,7 +1076,7 @@ public class Blocks implements ContentList{
|
|||||||
size = 4;
|
size = 4;
|
||||||
health = 900;
|
health = 900;
|
||||||
powerProduction = 80f;
|
powerProduction = 80f;
|
||||||
useTime = 40f;
|
itemDuration = 40f;
|
||||||
consumes.power(23f);
|
consumes.power(23f);
|
||||||
consumes.item(Items.blastCompound);
|
consumes.item(Items.blastCompound);
|
||||||
consumes.liquid(Liquids.cryofluid, 0.8f);
|
consumes.liquid(Liquids.cryofluid, 0.8f);
|
||||||
@@ -968,6 +1091,7 @@ public class Blocks implements ContentList{
|
|||||||
drillTime = 600;
|
drillTime = 600;
|
||||||
size = 2;
|
size = 2;
|
||||||
drawMineItem = true;
|
drawMineItem = true;
|
||||||
|
consumes.liquid(Liquids.water, 0.05f).optional(true);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
pneumaticDrill = new Drill("pneumatic-drill"){{
|
pneumaticDrill = new Drill("pneumatic-drill"){{
|
||||||
@@ -1078,12 +1202,12 @@ public class Blocks implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
unloader = new Unloader("unloader"){{
|
unloader = new Unloader("unloader"){{
|
||||||
requirements(Category.distribution, ItemStack.with(Items.titanium, 50, Items.silicon, 60));
|
requirements(Category.effect, ItemStack.with(Items.titanium, 50, Items.silicon, 60));
|
||||||
speed = 7f;
|
speed = 7f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
launchPad = new LaunchPad("launch-pad"){{
|
launchPad = new LaunchPad("launch-pad"){{
|
||||||
requirements(Category.effect, () -> world.isZone(), ItemStack.with(Items.copper, 500, Items.titanium, 200, Items.silicon, 200, Items.lead, 200));
|
requirements(Category.effect, () -> world.isZone(), ItemStack.with(Items.copper, 500, Items.silicon, 150, Items.lead, 200));
|
||||||
size = 3;
|
size = 3;
|
||||||
itemCapacity = 100;
|
itemCapacity = 100;
|
||||||
launchTime = 60f * 8;
|
launchTime = 60f * 8;
|
||||||
@@ -1091,6 +1215,16 @@ public class Blocks implements ContentList{
|
|||||||
consumes.power(1f);
|
consumes.power(1f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
launchPadLarge = new LaunchPad("launch-pad-large"){{
|
||||||
|
requirements(Category.effect, () -> world.isZone(), ItemStack.with(Items.titanium, 400, Items.silicon, 300, Items.lead, 500, Items.plastanium, 150));
|
||||||
|
size = 4;
|
||||||
|
itemCapacity = 250;
|
||||||
|
launchTime = 60f * 7;
|
||||||
|
hasPower = true;
|
||||||
|
consumes.power(2f);
|
||||||
|
}};
|
||||||
|
|
||||||
|
|
||||||
//endregion
|
//endregion
|
||||||
//region turrets
|
//region turrets
|
||||||
|
|
||||||
@@ -1118,15 +1252,15 @@ public class Blocks implements ContentList{
|
|||||||
Items.scrap, Bullets.flakScrap,
|
Items.scrap, Bullets.flakScrap,
|
||||||
Items.lead, Bullets.flakLead
|
Items.lead, Bullets.flakLead
|
||||||
);
|
);
|
||||||
reload = 43f;
|
reload = 20f;
|
||||||
range = 160f;
|
range = 180f;
|
||||||
size = 2;
|
size = 2;
|
||||||
burstSpacing = 5f;
|
burstSpacing = 5f;
|
||||||
shots = 2;
|
shots = 2;
|
||||||
targetGround = false;
|
targetGround = false;
|
||||||
|
|
||||||
recoil = 2f;
|
recoil = 2f;
|
||||||
rotatespeed = 10f;
|
rotatespeed = 15f;
|
||||||
inaccuracy = 17f;
|
inaccuracy = 17f;
|
||||||
shootCone = 35f;
|
shootCone = 35f;
|
||||||
|
|
||||||
@@ -1141,7 +1275,7 @@ public class Blocks implements ContentList{
|
|||||||
);
|
);
|
||||||
recoil = 0f;
|
recoil = 0f;
|
||||||
reload = 4f;
|
reload = 4f;
|
||||||
range = 53f;
|
range = 60f;
|
||||||
shootCone = 50f;
|
shootCone = 50f;
|
||||||
targetAir = false;
|
targetAir = false;
|
||||||
ammoUseEffect = Fx.none;
|
ammoUseEffect = Fx.none;
|
||||||
@@ -1173,11 +1307,11 @@ public class Blocks implements ContentList{
|
|||||||
);
|
);
|
||||||
size = 2;
|
size = 2;
|
||||||
recoil = 0f;
|
recoil = 0f;
|
||||||
reload = 3f;
|
reload = 2f;
|
||||||
inaccuracy = 5f;
|
inaccuracy = 5f;
|
||||||
shootCone = 50f;
|
shootCone = 50f;
|
||||||
shootEffect = Fx.shootLiquid;
|
shootEffect = Fx.shootLiquid;
|
||||||
range = 100f;
|
range = 110f;
|
||||||
health = 250*size*size;
|
health = 250*size*size;
|
||||||
|
|
||||||
drawer = (tile, entity) -> {
|
drawer = (tile, entity) -> {
|
||||||
@@ -1216,13 +1350,13 @@ public class Blocks implements ContentList{
|
|||||||
arc = new PowerTurret("arc"){{
|
arc = new PowerTurret("arc"){{
|
||||||
requirements(Category.turret, ItemStack.with(Items.copper, 70, Items.lead, 70));
|
requirements(Category.turret, ItemStack.with(Items.copper, 70, Items.lead, 70));
|
||||||
shootType = Bullets.arc;
|
shootType = Bullets.arc;
|
||||||
reload = 25f;
|
reload = 24f;
|
||||||
shootCone = 40f;
|
shootCone = 40f;
|
||||||
rotatespeed = 8f;
|
rotatespeed = 8f;
|
||||||
powerUsed = 1f / 2f;
|
powerUsed = 1f / 2f;
|
||||||
targetAir = false;
|
targetAir = false;
|
||||||
consumes.powerBuffered(80f);
|
consumes.powerBuffered(60f, 60f);
|
||||||
range = 80f;
|
range = 95f;
|
||||||
shootEffect = Fx.lightningShoot;
|
shootEffect = Fx.lightningShoot;
|
||||||
heatColor = Color.RED;
|
heatColor = Color.RED;
|
||||||
recoil = 1f;
|
recoil = 1f;
|
||||||
@@ -1304,8 +1438,8 @@ public class Blocks implements ContentList{
|
|||||||
Items.surgealloy, Bullets.flakSurge
|
Items.surgealloy, Bullets.flakSurge
|
||||||
);
|
);
|
||||||
xRand = 4f;
|
xRand = 4f;
|
||||||
reload = 8f;
|
reload = 7f;
|
||||||
range = 160f;
|
range = 170f;
|
||||||
size = 3;
|
size = 3;
|
||||||
recoil = 3f;
|
recoil = 3f;
|
||||||
rotatespeed = 10f;
|
rotatespeed = 10f;
|
||||||
@@ -1337,7 +1471,6 @@ public class Blocks implements ContentList{
|
|||||||
);
|
);
|
||||||
reload = 6f;
|
reload = 6f;
|
||||||
coolantMultiplier = 0.5f;
|
coolantMultiplier = 0.5f;
|
||||||
maxCoolantUsed = 1.5f;
|
|
||||||
restitution = 0.1f;
|
restitution = 0.1f;
|
||||||
ammoUseEffect = Fx.shellEjectBig;
|
ammoUseEffect = Fx.shellEjectBig;
|
||||||
range = 200f;
|
range = 200f;
|
||||||
@@ -1351,6 +1484,7 @@ public class Blocks implements ContentList{
|
|||||||
shootCone = 24f;
|
shootCone = 24f;
|
||||||
|
|
||||||
health = 155 * size * size;
|
health = 155 * size * size;
|
||||||
|
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 2f)).update(false).optional(true);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
meltdown = new LaserTurret("meltdown"){{
|
meltdown = new LaserTurret("meltdown"){{
|
||||||
|
|||||||
@@ -134,28 +134,32 @@ public class Bullets implements ContentList{
|
|||||||
bulletWidth = bulletHeight = 14f;
|
bulletWidth = bulletHeight = 14f;
|
||||||
collides = true;
|
collides = true;
|
||||||
collidesTiles = true;
|
collidesTiles = true;
|
||||||
splashDamageRadius = 45f;
|
splashDamageRadius = 20f;
|
||||||
splashDamage = 50f;
|
splashDamage = 38f;
|
||||||
backColor = Pal.bulletYellowBack;
|
backColor = Pal.bulletYellowBack;
|
||||||
frontColor = Pal.bulletYellow;
|
frontColor = Pal.bulletYellow;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
flakLead = new FlakBulletType(3.9f, 3){{
|
flakLead = new FlakBulletType(4.2f, 3){{
|
||||||
|
lifetime = 60f;
|
||||||
|
ammoMultiplier = 3f;
|
||||||
shootEffect = Fx.shootSmall;
|
shootEffect = Fx.shootSmall;
|
||||||
bulletWidth = 6f;
|
bulletWidth = 6f;
|
||||||
bulletHeight = 8f;
|
bulletHeight = 8f;
|
||||||
hitEffect = Fx.flakExplosion;
|
hitEffect = Fx.flakExplosion;
|
||||||
splashDamage = 25f;
|
splashDamage = 35f;
|
||||||
splashDamageRadius = 15f;
|
splashDamageRadius = 15f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
flakScrap = new FlakBulletType(3.5f, 3){{
|
flakScrap = new FlakBulletType(4f, 3){{
|
||||||
|
lifetime = 60f;
|
||||||
|
ammoMultiplier = 3f;
|
||||||
shootEffect = Fx.shootSmall;
|
shootEffect = Fx.shootSmall;
|
||||||
reloadMultiplier = 0.5f;
|
reloadMultiplier = 0.5f;
|
||||||
bulletWidth = 6f;
|
bulletWidth = 6f;
|
||||||
bulletHeight = 8f;
|
bulletHeight = 8f;
|
||||||
hitEffect = Fx.flakExplosion;
|
hitEffect = Fx.flakExplosion;
|
||||||
splashDamage = 16f;
|
splashDamage = 26f;
|
||||||
splashDamageRadius = 24f;
|
splashDamageRadius = 24f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -290,7 +294,6 @@ public class Bullets implements ContentList{
|
|||||||
standardDense = new BasicBulletType(3.5f, 18, "bullet"){{
|
standardDense = new BasicBulletType(3.5f, 18, "bullet"){{
|
||||||
bulletWidth = 9f;
|
bulletWidth = 9f;
|
||||||
bulletHeight = 12f;
|
bulletHeight = 12f;
|
||||||
armorPierce = 0.2f;
|
|
||||||
reloadMultiplier = 0.6f;
|
reloadMultiplier = 0.6f;
|
||||||
ammoMultiplier = 2;
|
ammoMultiplier = 2;
|
||||||
}};
|
}};
|
||||||
@@ -298,7 +301,6 @@ public class Bullets implements ContentList{
|
|||||||
standardThorium = new BasicBulletType(4f, 29, "bullet"){{
|
standardThorium = new BasicBulletType(4f, 29, "bullet"){{
|
||||||
bulletWidth = 10f;
|
bulletWidth = 10f;
|
||||||
bulletHeight = 13f;
|
bulletHeight = 13f;
|
||||||
armorPierce = 0.5f;
|
|
||||||
shootEffect = Fx.shootBig;
|
shootEffect = Fx.shootBig;
|
||||||
smokeEffect = Fx.shootBigSmoke;
|
smokeEffect = Fx.shootBigSmoke;
|
||||||
ammoMultiplier = 2;
|
ammoMultiplier = 2;
|
||||||
@@ -344,14 +346,12 @@ public class Bullets implements ContentList{
|
|||||||
standardDenseBig = new BasicBulletType(7f, 42, "bullet"){{
|
standardDenseBig = new BasicBulletType(7f, 42, "bullet"){{
|
||||||
bulletWidth = 15f;
|
bulletWidth = 15f;
|
||||||
bulletHeight = 21f;
|
bulletHeight = 21f;
|
||||||
armorPierce = 0.2f;
|
|
||||||
shootEffect = Fx.shootBig;
|
shootEffect = Fx.shootBig;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
standardThoriumBig = new BasicBulletType(8f, 65, "bullet"){{
|
standardThoriumBig = new BasicBulletType(8f, 65, "bullet"){{
|
||||||
bulletWidth = 16f;
|
bulletWidth = 16f;
|
||||||
bulletHeight = 23f;
|
bulletHeight = 23f;
|
||||||
armorPierce = 0.5f;
|
|
||||||
shootEffect = Fx.shootBig;
|
shootEffect = Fx.shootBig;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -454,11 +454,11 @@ public class Bullets implements ContentList{
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
basicFlame = new BulletType(2.5f, 5){
|
basicFlame = new BulletType(3f, 6f){
|
||||||
{
|
{
|
||||||
ammoMultiplier = 3f;
|
ammoMultiplier = 3f;
|
||||||
hitSize = 7f;
|
hitSize = 7f;
|
||||||
lifetime = 40f;
|
lifetime = 42f;
|
||||||
pierce = true;
|
pierce = true;
|
||||||
drag = 0.05f;
|
drag = 0.05f;
|
||||||
statusDuration = 60f * 4;
|
statusDuration = 60f * 4;
|
||||||
@@ -473,11 +473,11 @@ public class Bullets implements ContentList{
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
pyraFlame = new BulletType(2.7f, 8){
|
pyraFlame = new BulletType(3.3f, 9f){
|
||||||
{
|
{
|
||||||
ammoMultiplier = 4f;
|
ammoMultiplier = 4f;
|
||||||
hitSize = 7f;
|
hitSize = 7f;
|
||||||
lifetime = 40f;
|
lifetime = 42f;
|
||||||
pierce = true;
|
pierce = true;
|
||||||
drag = 0.05f;
|
drag = 0.05f;
|
||||||
statusDuration = 60f * 6;
|
statusDuration = 60f * 6;
|
||||||
@@ -664,7 +664,7 @@ public class Bullets implements ContentList{
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
arc = new BulletType(0.001f, 21){{
|
arc = new BulletType(0.001f, 25){{
|
||||||
lifetime = 1;
|
lifetime = 1;
|
||||||
despawnEffect = Fx.none;
|
despawnEffect = Fx.none;
|
||||||
hitEffect = Fx.hitLancer;
|
hitEffect = Fx.hitLancer;
|
||||||
@@ -675,7 +675,7 @@ public class Bullets implements ContentList{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(Bullet b){
|
public void init(Bullet b){
|
||||||
Lightning.create(b.getTeam(), Pal.lancerLaser, damage, b.x, b.y, b.rot(), 15);
|
Lightning.create(b.getTeam(), Pal.lancerLaser, damage, b.x, b.y, b.rot(), 25);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public class Fx implements ContentList{
|
|||||||
bigShockwave, nuclearShockwave, explosion, blockExplosion, blockExplosionSmoke, shootSmall, shootHeal, shootSmallSmoke, shootBig, shootBig2, shootBigSmoke,
|
bigShockwave, nuclearShockwave, explosion, blockExplosion, blockExplosionSmoke, shootSmall, shootHeal, shootSmallSmoke, shootBig, shootBig2, shootBigSmoke,
|
||||||
shootBigSmoke2, shootSmallFlame, shootPyraFlame, shootLiquid, shellEjectSmall, shellEjectMedium,
|
shootBigSmoke2, shootSmallFlame, shootPyraFlame, shootLiquid, shellEjectSmall, shellEjectMedium,
|
||||||
shellEjectBig, lancerLaserShoot, lancerLaserShootSmoke, lancerLaserCharge, lancerLaserChargeBegin, lightningCharge, lightningShoot,
|
shellEjectBig, lancerLaserShoot, lancerLaserShootSmoke, lancerLaserCharge, lancerLaserChargeBegin, lightningCharge, lightningShoot,
|
||||||
unitSpawn, spawnShockwave, magmasmoke, impactShockwave, impactcloud, impactsmoke, dynamicExplosion;
|
unitSpawn, spawnShockwave, magmasmoke, impactShockwave, impactcloud, impactsmoke, dynamicExplosion, padlaunch;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(){
|
public void load(){
|
||||||
@@ -107,6 +107,13 @@ public class Fx implements ContentList{
|
|||||||
Draw.reset();
|
Draw.reset();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
padlaunch = new Effect(10, e -> {
|
||||||
|
Lines.stroke(4f * e.fout());
|
||||||
|
Draw.color(Pal.accent);
|
||||||
|
Lines.poly(e.x, e.y, 4, 5f + e.fin() * 60f);
|
||||||
|
Draw.reset();
|
||||||
|
});
|
||||||
|
|
||||||
vtolHover = new Effect(40f, e -> {
|
vtolHover = new Effect(40f, e -> {
|
||||||
float len = e.finpow() * 10f;
|
float len = e.finpow() * 10f;
|
||||||
float ang = e.rotation + Mathf.randomSeedRange(e.id, 30f);
|
float ang = e.rotation + Mathf.randomSeedRange(e.id, 30f);
|
||||||
|
|||||||
@@ -14,24 +14,28 @@ public class Items implements ContentList{
|
|||||||
copper = new Item("copper", Color.valueOf("d99d73")){{
|
copper = new Item("copper", Color.valueOf("d99d73")){{
|
||||||
type = ItemType.material;
|
type = ItemType.material;
|
||||||
hardness = 1;
|
hardness = 1;
|
||||||
cost = 0.6f;
|
cost = 0.5f;
|
||||||
alwaysUnlocked = true;
|
alwaysUnlocked = true;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
lead = new Item("lead", Color.valueOf("8c7fa9")){{
|
lead = new Item("lead", Color.valueOf("8c7fa9")){{
|
||||||
type = ItemType.material;
|
type = ItemType.material;
|
||||||
hardness = 1;
|
hardness = 1;
|
||||||
cost = 0.9f;
|
cost = 0.7f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
metaglass = new Item("metaglass", Color.valueOf("ebeef5")){{
|
metaglass = new Item("metaglass", Color.valueOf("ebeef5")){{
|
||||||
type = ItemType.material;
|
type = ItemType.material;
|
||||||
cost = 2f;
|
cost = 1.5f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
graphite = new Item("graphite", Color.valueOf("b2c6d2")){{
|
graphite = new Item("graphite", Color.valueOf("b2c6d2")){{
|
||||||
type = ItemType.material;
|
type = ItemType.material;
|
||||||
cost = 1.3f;
|
cost = 1f;
|
||||||
|
}};
|
||||||
|
|
||||||
|
sand = new Item("sand", Color.valueOf("f7cba4")){{
|
||||||
|
|
||||||
}};
|
}};
|
||||||
|
|
||||||
coal = new Item("coal", Color.valueOf("272727")){{
|
coal = new Item("coal", Color.valueOf("272727")){{
|
||||||
@@ -43,7 +47,7 @@ public class Items implements ContentList{
|
|||||||
titanium = new Item("titanium", Color.valueOf("8da1e3")){{
|
titanium = new Item("titanium", Color.valueOf("8da1e3")){{
|
||||||
type = ItemType.material;
|
type = ItemType.material;
|
||||||
hardness = 3;
|
hardness = 3;
|
||||||
cost = 1.1f;
|
cost = 1f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
thorium = new Item("thorium", Color.valueOf("f9a3c7")){{
|
thorium = new Item("thorium", Color.valueOf("f9a3c7")){{
|
||||||
@@ -51,7 +55,7 @@ public class Items implements ContentList{
|
|||||||
explosiveness = 0.2f;
|
explosiveness = 0.2f;
|
||||||
hardness = 4;
|
hardness = 4;
|
||||||
radioactivity = 1f;
|
radioactivity = 1f;
|
||||||
cost = 1.4f;
|
cost = 1.1f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
scrap = new Item("scrap", Color.valueOf("777777")){{
|
scrap = new Item("scrap", Color.valueOf("777777")){{
|
||||||
@@ -60,19 +64,19 @@ public class Items implements ContentList{
|
|||||||
|
|
||||||
silicon = new Item("silicon", Color.valueOf("53565c")){{
|
silicon = new Item("silicon", Color.valueOf("53565c")){{
|
||||||
type = ItemType.material;
|
type = ItemType.material;
|
||||||
cost = 0.9f;
|
cost = 0.8f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
plastanium = new Item("plastanium", Color.valueOf("cbd97f")){{
|
plastanium = new Item("plastanium", Color.valueOf("cbd97f")){{
|
||||||
type = ItemType.material;
|
type = ItemType.material;
|
||||||
flammability = 0.2f;
|
flammability = 0.1f;
|
||||||
explosiveness = 0.2f;
|
explosiveness = 0.2f;
|
||||||
cost = 1.6f;
|
cost = 1.3f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
phasefabric = new Item("phase-fabric", Color.valueOf("f4ba6e")){{
|
phasefabric = new Item("phase-fabric", Color.valueOf("f4ba6e")){{
|
||||||
type = ItemType.material;
|
type = ItemType.material;
|
||||||
cost = 1.5f;
|
cost = 1.3f;
|
||||||
radioactivity = 0.6f;
|
radioactivity = 0.6f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -84,10 +88,6 @@ public class Items implements ContentList{
|
|||||||
flammability = 1.05f;
|
flammability = 1.05f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
sand = new Item("sand", Color.valueOf("f7cba4")){{
|
|
||||||
|
|
||||||
}};
|
|
||||||
|
|
||||||
blastCompound = new Item("blast-compound", Color.valueOf("ff795e")){{
|
blastCompound = new Item("blast-compound", Color.valueOf("ff795e")){{
|
||||||
flammability = 0.4f;
|
flammability = 0.4f;
|
||||||
explosiveness = 1.2f;
|
explosiveness = 1.2f;
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ public class Mechs implements ContentList{
|
|||||||
mass = 1.2f;
|
mass = 1.2f;
|
||||||
speed = 0.5f;
|
speed = 0.5f;
|
||||||
boostSpeed = 0.85f;
|
boostSpeed = 0.85f;
|
||||||
|
buildPower = 1.2f;
|
||||||
engineColor = Color.valueOf("ffd37f");
|
engineColor = Color.valueOf("ffd37f");
|
||||||
health = 300f;
|
health = 300f;
|
||||||
|
|
||||||
@@ -47,6 +48,11 @@ public class Mechs implements ContentList{
|
|||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateAlt(Player player){
|
||||||
|
player.healBy(Time.delta() * 0.4f);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean alwaysUnlocked(){
|
public boolean alwaysUnlocked(){
|
||||||
return true;
|
return true;
|
||||||
@@ -63,6 +69,7 @@ public class Mechs implements ContentList{
|
|||||||
itemCapacity = 15;
|
itemCapacity = 15;
|
||||||
mass = 0.9f;
|
mass = 0.9f;
|
||||||
health = 250f;
|
health = 250f;
|
||||||
|
buildPower = 0.9f;
|
||||||
weaponOffsetX = -1;
|
weaponOffsetX = -1;
|
||||||
weaponOffsetY = -1;
|
weaponOffsetY = -1;
|
||||||
engineColor = Color.valueOf("d3ddff");
|
engineColor = Color.valueOf("d3ddff");
|
||||||
@@ -110,6 +117,7 @@ public class Mechs implements ContentList{
|
|||||||
boostSpeed = 0.8f;
|
boostSpeed = 0.8f;
|
||||||
canHeal = true;
|
canHeal = true;
|
||||||
health = 200f;
|
health = 200f;
|
||||||
|
buildPower = 1.6f;
|
||||||
engineColor = Pal.heal;
|
engineColor = Pal.heal;
|
||||||
|
|
||||||
weapon = new Weapon("heal-blaster"){{
|
weapon = new Weapon("heal-blaster"){{
|
||||||
@@ -161,6 +169,7 @@ public class Mechs implements ContentList{
|
|||||||
weaponOffsetY = 0;
|
weaponOffsetY = 0;
|
||||||
engineColor = Color.valueOf("feb380");
|
engineColor = Color.valueOf("feb380");
|
||||||
health = 300f;
|
health = 300f;
|
||||||
|
buildPower = 1.5f;
|
||||||
weapon = new Weapon("swarmer"){{
|
weapon = new Weapon("swarmer"){{
|
||||||
length = 1.5f;
|
length = 1.5f;
|
||||||
recoil = 4f;
|
recoil = 4f;
|
||||||
@@ -227,6 +236,7 @@ public class Mechs implements ContentList{
|
|||||||
weaponOffsetY = -1;
|
weaponOffsetY = -1;
|
||||||
engineColor = Pal.lightTrail;
|
engineColor = Pal.lightTrail;
|
||||||
cellTrnsY = 1f;
|
cellTrnsY = 1f;
|
||||||
|
buildPower = 1.1f;
|
||||||
weapon = new Weapon("blaster"){{
|
weapon = new Weapon("blaster"){{
|
||||||
length = 1.5f;
|
length = 1.5f;
|
||||||
reload = 20f;
|
reload = 20f;
|
||||||
@@ -315,6 +325,7 @@ public class Mechs implements ContentList{
|
|||||||
itemCapacity = 30;
|
itemCapacity = 30;
|
||||||
engineColor = Color.valueOf("84f491");
|
engineColor = Color.valueOf("84f491");
|
||||||
cellTrnsY = 1f;
|
cellTrnsY = 1f;
|
||||||
|
buildPower = 2f;
|
||||||
weapon = new Weapon("bomber"){{
|
weapon = new Weapon("bomber"){{
|
||||||
length = 0f;
|
length = 0f;
|
||||||
width = 2f;
|
width = 2f;
|
||||||
@@ -346,6 +357,7 @@ public class Mechs implements ContentList{
|
|||||||
itemCapacity = 60;
|
itemCapacity = 60;
|
||||||
engineColor = Color.valueOf("feb380");
|
engineColor = Color.valueOf("feb380");
|
||||||
cellTrnsY = 1f;
|
cellTrnsY = 1f;
|
||||||
|
buildPower = 1.2f;
|
||||||
|
|
||||||
weapon = new Weapon("bomber"){{
|
weapon = new Weapon("bomber"){{
|
||||||
length = 1.5f;
|
length = 1.5f;
|
||||||
|
|||||||
@@ -19,15 +19,20 @@ public class TechTree implements ContentList{
|
|||||||
node(junction, () -> {
|
node(junction, () -> {
|
||||||
node(itemBridge);
|
node(itemBridge);
|
||||||
node(router, () -> {
|
node(router, () -> {
|
||||||
|
node(launchPad, () -> {
|
||||||
|
node(launchPadLarge, () -> {
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
node(distributor);
|
node(distributor);
|
||||||
node(overflowGate);
|
node(sorter, () -> {
|
||||||
node(sorter);
|
node(overflowGate);
|
||||||
|
});
|
||||||
node(container, () -> {
|
node(container, () -> {
|
||||||
node(unloader);
|
node(unloader);
|
||||||
node(vault, () -> {
|
node(vault, () -> {
|
||||||
node(launchPad, () -> {
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -201,7 +206,9 @@ public class TechTree implements ContentList{
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
node(mender, () -> {
|
||||||
node(mendProjector, () -> {
|
node(mendProjector, () -> {
|
||||||
node(forceProjector, () -> {
|
node(forceProjector, () -> {
|
||||||
node(overdriveProjector, () -> {
|
node(overdriveProjector, () -> {
|
||||||
@@ -263,7 +270,7 @@ public class TechTree implements ContentList{
|
|||||||
private TechNode node(Block block, Runnable children){
|
private TechNode node(Block block, Runnable children){
|
||||||
ItemStack[] requirements = new ItemStack[block.buildRequirements.length];
|
ItemStack[] requirements = new ItemStack[block.buildRequirements.length];
|
||||||
for(int i = 0; i < requirements.length; i++){
|
for(int i = 0; i < requirements.length; i++){
|
||||||
requirements[i] = new ItemStack(block.buildRequirements[i].item, block.buildRequirements[i].amount * 6);
|
requirements[i] = new ItemStack(block.buildRequirements[i].item, block.buildRequirements[i].amount * 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new TechNode(block, requirements, children);
|
return new TechNode(block, requirements, children);
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ public class UnitTypes implements ContentList{
|
|||||||
hitsize = 10f;
|
hitsize = 10f;
|
||||||
rotatespeed = 0.06f;
|
rotatespeed = 0.06f;
|
||||||
targetAir = false;
|
targetAir = false;
|
||||||
health = 800;
|
health = 750;
|
||||||
weapon = new Weapon("artillery"){{
|
weapon = new Weapon("artillery"){{
|
||||||
length = 1f;
|
length = 1f;
|
||||||
reload = 60f;
|
reload = 60f;
|
||||||
@@ -178,8 +178,9 @@ public class UnitTypes implements ContentList{
|
|||||||
drag = 0.01f;
|
drag = 0.01f;
|
||||||
mass = 1.5f;
|
mass = 1.5f;
|
||||||
isFlying = true;
|
isFlying = true;
|
||||||
health = 70;
|
health = 75;
|
||||||
engineOffset = 5.5f;
|
engineOffset = 5.5f;
|
||||||
|
range = 140f;
|
||||||
weapon = new Weapon("chain-blaster"){{
|
weapon = new Weapon("chain-blaster"){{
|
||||||
length = 1.5f;
|
length = 1.5f;
|
||||||
reload = 28f;
|
reload = 28f;
|
||||||
@@ -190,7 +191,7 @@ public class UnitTypes implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
ghoul = new UnitType("ghoul", Ghoul.class, Ghoul::new){{
|
ghoul = new UnitType("ghoul", Ghoul.class, Ghoul::new){{
|
||||||
health = 250;
|
health = 220;
|
||||||
speed = 0.2f;
|
speed = 0.2f;
|
||||||
maxVelocity = 1.4f;
|
maxVelocity = 1.4f;
|
||||||
mass = 3f;
|
mass = 3f;
|
||||||
@@ -198,6 +199,7 @@ public class UnitTypes implements ContentList{
|
|||||||
isFlying = true;
|
isFlying = true;
|
||||||
targetAir = false;
|
targetAir = false;
|
||||||
engineOffset = 7.8f;
|
engineOffset = 7.8f;
|
||||||
|
range = 140f;
|
||||||
weapon = new Weapon("bomber"){{
|
weapon = new Weapon("bomber"){{
|
||||||
length = 0f;
|
length = 0f;
|
||||||
width = 2f;
|
width = 2f;
|
||||||
|
|||||||
@@ -33,8 +33,7 @@ public class Zones implements ContentList{
|
|||||||
craters = new Zone("craters", new MapGenerator("craters", 1).dist(0).decor(new Decoration(Blocks.snow, Blocks.sporeCluster, 0.01))){{
|
craters = new Zone("craters", new MapGenerator("craters", 1).dist(0).decor(new Decoration(Blocks.snow, Blocks.sporeCluster, 0.01))){{
|
||||||
startingItems = ItemStack.list(Items.copper, 200);
|
startingItems = ItemStack.list(Items.copper, 200);
|
||||||
conditionWave = 10;
|
conditionWave = 10;
|
||||||
itemRequirements = ItemStack.with(Items.copper, 2000);
|
zoneRequirements = ZoneRequirement.with(groundZero, 10);
|
||||||
zoneRequirements = new Zone[]{groundZero};
|
|
||||||
blockRequirements = new Block[]{Blocks.router};
|
blockRequirements = new Block[]{Blocks.router};
|
||||||
resources = new Item[]{Items.copper, Items.lead};
|
resources = new Item[]{Items.copper, Items.lead};
|
||||||
rules = () -> new Rules(){{
|
rules = () -> new Rules(){{
|
||||||
@@ -50,8 +49,7 @@ public class Zones implements ContentList{
|
|||||||
baseLaunchCost = ItemStack.with();
|
baseLaunchCost = ItemStack.with();
|
||||||
startingItems = ItemStack.list(Items.copper, 400);
|
startingItems = ItemStack.list(Items.copper, 400);
|
||||||
conditionWave = 10;
|
conditionWave = 10;
|
||||||
zoneRequirements = new Zone[]{craters};
|
zoneRequirements = ZoneRequirement.with(craters, 10);
|
||||||
itemRequirements = ItemStack.with(Items.copper, 4000, Items.lead, 2000);
|
|
||||||
resources = new Item[]{Items.copper, Items.lead, Items.coal};
|
resources = new Item[]{Items.copper, Items.lead, Items.coal};
|
||||||
rules = () -> new Rules(){{
|
rules = () -> new Rules(){{
|
||||||
waves = true;
|
waves = true;
|
||||||
@@ -66,8 +64,7 @@ public class Zones implements ContentList{
|
|||||||
startingItems = ItemStack.list(Items.copper, 400);
|
startingItems = ItemStack.list(Items.copper, 400);
|
||||||
conditionWave = 20;
|
conditionWave = 20;
|
||||||
launchPeriod = 20;
|
launchPeriod = 20;
|
||||||
zoneRequirements = new Zone[]{frozenForest};
|
zoneRequirements = ZoneRequirement.with(frozenForest, 10, craters, 15);
|
||||||
itemRequirements = ItemStack.with(Items.lead, 6000, Items.graphite, 2000);
|
|
||||||
blockRequirements = new Block[]{Blocks.graphitePress, Blocks.combustionGenerator};
|
blockRequirements = new Block[]{Blocks.graphitePress, Blocks.combustionGenerator};
|
||||||
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.sand};
|
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.sand};
|
||||||
rules = () -> new Rules(){{
|
rules = () -> new Rules(){{
|
||||||
@@ -99,9 +96,8 @@ public class Zones implements ContentList{
|
|||||||
startingItems = ItemStack.list(Items.copper, 400, Items.lead, 100);
|
startingItems = ItemStack.list(Items.copper, 400, Items.lead, 100);
|
||||||
conditionWave = 10;
|
conditionWave = 10;
|
||||||
launchPeriod = 10;
|
launchPeriod = 10;
|
||||||
zoneRequirements = new Zone[]{frozenForest};
|
zoneRequirements = ZoneRequirement.with(frozenForest, 15);
|
||||||
blockRequirements = new Block[]{Blocks.pneumaticDrill};
|
blockRequirements = new Block[]{Blocks.pneumaticDrill};
|
||||||
itemRequirements = ItemStack.with(Items.copper, 8000, Items.silicon, 2000);
|
|
||||||
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium};
|
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium};
|
||||||
rules = () -> new Rules(){{
|
rules = () -> new Rules(){{
|
||||||
waves = true;
|
waves = true;
|
||||||
@@ -114,10 +110,9 @@ public class Zones implements ContentList{
|
|||||||
loadout = Loadouts.basicNucleus;
|
loadout = Loadouts.basicNucleus;
|
||||||
baseLaunchCost = ItemStack.with();
|
baseLaunchCost = ItemStack.with();
|
||||||
startingItems = ItemStack.list(Items.copper, 1500);
|
startingItems = ItemStack.list(Items.copper, 1500);
|
||||||
itemRequirements = ItemStack.with(Items.copper, 8000, Items.metaglass, 2000, Items.graphite, 3000);
|
|
||||||
conditionWave = 10;
|
conditionWave = 10;
|
||||||
launchPeriod = 20;
|
launchPeriod = 20;
|
||||||
zoneRequirements = new Zone[]{ruinousShores};
|
zoneRequirements = ZoneRequirement.with(stainedMountains, 20);
|
||||||
blockRequirements = new Block[]{Blocks.thermalGenerator};
|
blockRequirements = new Block[]{Blocks.thermalGenerator};
|
||||||
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.sand};
|
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.sand};
|
||||||
rules = () -> new Rules(){{
|
rules = () -> new Rules(){{
|
||||||
@@ -133,11 +128,10 @@ public class Zones implements ContentList{
|
|||||||
loadout = Loadouts.basicNucleus;
|
loadout = Loadouts.basicNucleus;
|
||||||
baseLaunchCost = ItemStack.with();
|
baseLaunchCost = ItemStack.with();
|
||||||
startingItems = ItemStack.list(Items.copper, 2500, Items.lead, 3000, Items.silicon, 800, Items.metaglass, 400);
|
startingItems = ItemStack.list(Items.copper, 2500, Items.lead, 3000, Items.silicon, 800, Items.metaglass, 400);
|
||||||
itemRequirements = ItemStack.with(Items.copper, 10000, Items.titanium, 8000, Items.metaglass, 6000, Items.plastanium, 2000);
|
|
||||||
conditionWave = 30;
|
conditionWave = 30;
|
||||||
launchPeriod = 15;
|
launchPeriod = 15;
|
||||||
zoneRequirements = new Zone[]{desolateRift};
|
zoneRequirements = ZoneRequirement.with(desolateRift, 20);
|
||||||
blockRequirements = new Block[]{Blocks.blastDrill, Blocks.thermalGenerator};
|
blockRequirements = new Block[]{Blocks.thermalGenerator};
|
||||||
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.thorium, Items.sand};
|
resources = new Item[]{Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.thorium, Items.sand};
|
||||||
rules = () -> new Rules(){{
|
rules = () -> new Rules(){{
|
||||||
waves = true;
|
waves = true;
|
||||||
|
|||||||
@@ -8,7 +8,11 @@ import io.anuke.arc.graphics.GL20;
|
|||||||
import io.anuke.arc.graphics.g2d.Draw;
|
import io.anuke.arc.graphics.g2d.Draw;
|
||||||
import io.anuke.arc.graphics.g2d.TextureAtlas;
|
import io.anuke.arc.graphics.g2d.TextureAtlas;
|
||||||
import io.anuke.arc.input.KeyCode;
|
import io.anuke.arc.input.KeyCode;
|
||||||
import io.anuke.arc.util.*;
|
import io.anuke.arc.scene.ui.TextField;
|
||||||
|
import io.anuke.arc.util.BufferUtils;
|
||||||
|
import io.anuke.arc.util.Interval;
|
||||||
|
import io.anuke.arc.util.Strings;
|
||||||
|
import io.anuke.arc.util.Time;
|
||||||
import io.anuke.mindustry.content.Mechs;
|
import io.anuke.mindustry.content.Mechs;
|
||||||
import io.anuke.mindustry.core.GameState.State;
|
import io.anuke.mindustry.core.GameState.State;
|
||||||
import io.anuke.mindustry.entities.Effects;
|
import io.anuke.mindustry.entities.Effects;
|
||||||
@@ -48,7 +52,7 @@ public class Control implements ApplicationListener{
|
|||||||
private Interval timer = new Interval(2);
|
private Interval timer = new Interval(2);
|
||||||
private boolean hiscore = false;
|
private boolean hiscore = false;
|
||||||
private boolean wasPaused = false;
|
private boolean wasPaused = false;
|
||||||
private InputHandler[] inputs = {};
|
private InputHandler input;
|
||||||
|
|
||||||
public Control(){
|
public Control(){
|
||||||
IntBuffer buf = BufferUtils.newIntBuffer(1);
|
IntBuffer buf = BufferUtils.newIntBuffer(1);
|
||||||
@@ -80,7 +84,7 @@ public class Control implements ApplicationListener{
|
|||||||
"lastBuild", 0
|
"lastBuild", 0
|
||||||
);
|
);
|
||||||
|
|
||||||
addPlayer(0);
|
createPlayer();
|
||||||
|
|
||||||
saves.load();
|
saves.load();
|
||||||
|
|
||||||
@@ -91,21 +95,17 @@ public class Control implements ApplicationListener{
|
|||||||
});
|
});
|
||||||
|
|
||||||
Events.on(PlayEvent.class, event -> {
|
Events.on(PlayEvent.class, event -> {
|
||||||
for(Player player : players){
|
player.add();
|
||||||
player.add();
|
|
||||||
}
|
|
||||||
|
|
||||||
state.set(State.playing);
|
state.set(State.playing);
|
||||||
});
|
});
|
||||||
|
|
||||||
Events.on(WorldLoadEvent.class, event -> {
|
Events.on(WorldLoadEvent.class, event -> {
|
||||||
Core.app.post(() -> Core.camera.position.set(players[0]));
|
Core.app.post(() -> Core.camera.position.set(player));
|
||||||
});
|
});
|
||||||
|
|
||||||
Events.on(ResetEvent.class, event -> {
|
Events.on(ResetEvent.class, event -> {
|
||||||
for(Player player : players){
|
player.reset();
|
||||||
player.reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
hiscore = false;
|
hiscore = false;
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@ public class Control implements ApplicationListener{
|
|||||||
if(state.rules.pvp && !Net.active()){
|
if(state.rules.pvp && !Net.active()){
|
||||||
try{
|
try{
|
||||||
Net.host(port);
|
Net.host(port);
|
||||||
players[0].isAdmin = true;
|
player.isAdmin = true;
|
||||||
}catch(IOException e){
|
}catch(IOException e){
|
||||||
ui.showError(Core.bundle.format("server.error", Strings.parseException(e, false)));
|
ui.showError(Core.bundle.format("server.error", Strings.parseException(e, false)));
|
||||||
Core.app.post(() -> state.set(State.menu));
|
Core.app.post(() -> state.set(State.menu));
|
||||||
@@ -150,7 +150,7 @@ public class Control implements ApplicationListener{
|
|||||||
Events.on(UnlockEvent.class, e -> ui.hudfrag.showUnlock(e.content));
|
Events.on(UnlockEvent.class, e -> ui.hudfrag.showUnlock(e.content));
|
||||||
|
|
||||||
Events.on(BlockBuildEndEvent.class, e -> {
|
Events.on(BlockBuildEndEvent.class, e -> {
|
||||||
if(e.team == players[0].getTeam()){
|
if(e.team == player.getTeam()){
|
||||||
if(e.breaking){
|
if(e.breaking){
|
||||||
state.stats.buildingsDeconstructed++;
|
state.stats.buildingsDeconstructed++;
|
||||||
}else{
|
}else{
|
||||||
@@ -160,19 +160,19 @@ public class Control implements ApplicationListener{
|
|||||||
});
|
});
|
||||||
|
|
||||||
Events.on(BlockDestroyEvent.class, e -> {
|
Events.on(BlockDestroyEvent.class, e -> {
|
||||||
if(e.tile.getTeam() == players[0].getTeam()){
|
if(e.tile.getTeam() == player.getTeam()){
|
||||||
state.stats.buildingsDestroyed ++;
|
state.stats.buildingsDestroyed ++;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Events.on(UnitDestroyEvent.class, e -> {
|
Events.on(UnitDestroyEvent.class, e -> {
|
||||||
if(e.unit.getTeam() != players[0].getTeam()){
|
if(e.unit.getTeam() != player.getTeam()){
|
||||||
state.stats.enemyUnitsDestroyed ++;
|
state.stats.enemyUnitsDestroyed ++;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Events.on(ZoneCompleteEvent.class, e -> {
|
Events.on(ZoneRequireCompleteEvent.class, e -> {
|
||||||
ui.hudfrag.showToast(Core.bundle.format("zone.complete", e.zone.conditionWave));
|
ui.hudfrag.showToast(Core.bundle.format("zone.requirement.complete", state.wave, e.zone.localizedName));
|
||||||
});
|
});
|
||||||
|
|
||||||
Events.on(ZoneConfigureCompleteEvent.class, e -> {
|
Events.on(ZoneConfigureCompleteEvent.class, e -> {
|
||||||
@@ -180,65 +180,29 @@ public class Control implements ApplicationListener{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPlayer(int index){
|
void createPlayer(){
|
||||||
if(players.length != index + 1){
|
player = new Player();
|
||||||
Player[] old = players;
|
|
||||||
players = new Player[index + 1];
|
|
||||||
System.arraycopy(old, 0, players, 0, old.length);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(inputs.length != index + 1){
|
|
||||||
InputHandler[] oldi = inputs;
|
|
||||||
inputs = new InputHandler[index + 1];
|
|
||||||
System.arraycopy(oldi, 0, inputs, 0, oldi.length);
|
|
||||||
}
|
|
||||||
|
|
||||||
Player setTo = (index == 0 ? null : players[0]);
|
|
||||||
|
|
||||||
Player player = new Player();
|
|
||||||
player.name = Core.settings.getString("name");
|
player.name = Core.settings.getString("name");
|
||||||
player.mech = mobile ? Mechs.starterMobile : Mechs.starterDesktop;
|
player.mech = mobile ? Mechs.starterMobile : Mechs.starterDesktop;
|
||||||
player.color.set(Core.settings.getInt("color-" + index));
|
player.color.set(Core.settings.getInt("color-0"));
|
||||||
player.isLocal = true;
|
player.isLocal = true;
|
||||||
player.playerIndex = index;
|
|
||||||
player.isMobile = mobile;
|
player.isMobile = mobile;
|
||||||
players[index] = player;
|
|
||||||
|
|
||||||
if(setTo != null){
|
if(mobile){
|
||||||
player.set(setTo.x, setTo.y);
|
input = new MobileInput();
|
||||||
|
}else{
|
||||||
|
input = new DesktopInput();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!state.is(State.menu)){
|
if(!state.is(State.menu)){
|
||||||
player.add();
|
player.add();
|
||||||
}
|
}
|
||||||
|
|
||||||
InputHandler input;
|
|
||||||
|
|
||||||
if(mobile){
|
|
||||||
input = new MobileInput(player);
|
|
||||||
}else{
|
|
||||||
input = new DesktopInput(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
inputs[index] = input;
|
|
||||||
Core.input.addProcessor(input);
|
Core.input.addProcessor(input);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removePlayer(){
|
public InputHandler input(){
|
||||||
players[players.length - 1].remove();
|
return input;
|
||||||
inputs[inputs.length - 1].remove();
|
|
||||||
|
|
||||||
Player[] old = players;
|
|
||||||
players = new Player[players.length - 1];
|
|
||||||
System.arraycopy(old, 0, players, 0, players.length);
|
|
||||||
|
|
||||||
InputHandler[] oldi = inputs;
|
|
||||||
inputs = new InputHandler[inputs.length - 1];
|
|
||||||
System.arraycopy(oldi, 0, inputs, 0, inputs.length);
|
|
||||||
}
|
|
||||||
|
|
||||||
public InputHandler input(int index){
|
|
||||||
return inputs[index];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void playMap(Map map, Rules rules){
|
public void playMap(Map map, Rules rules){
|
||||||
@@ -259,8 +223,6 @@ public class Control implements ApplicationListener{
|
|||||||
content.dispose();
|
content.dispose();
|
||||||
Net.dispose();
|
Net.dispose();
|
||||||
ui.editor.dispose();
|
ui.editor.dispose();
|
||||||
inputs = new InputHandler[]{};
|
|
||||||
players = new Player[]{};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -304,20 +266,16 @@ public class Control implements ApplicationListener{
|
|||||||
public void update(){
|
public void update(){
|
||||||
saves.update();
|
saves.update();
|
||||||
|
|
||||||
for(InputHandler inputHandler : inputs){
|
input.updateController();
|
||||||
inputHandler.updateController();
|
|
||||||
}
|
|
||||||
|
|
||||||
//autosave global data if it's modified
|
//autosave global data if it's modified
|
||||||
data.checkSave();
|
data.checkSave();
|
||||||
|
|
||||||
if(!state.is(State.menu)){
|
if(!state.is(State.menu)){
|
||||||
for(InputHandler input : inputs){
|
input.update();
|
||||||
input.update();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(world.isZone()){
|
if(world.isZone()){
|
||||||
for(Tile tile : state.teams.get(players[0].getTeam()).cores){
|
for(Tile tile : state.teams.get(player.getTeam()).cores){
|
||||||
for(Item item : content.items()){
|
for(Item item : content.items()){
|
||||||
if(tile.entity.items.has(item)){
|
if(tile.entity.items.has(item)){
|
||||||
data.unlockContent(item);
|
data.unlockContent(item);
|
||||||
@@ -344,10 +302,18 @@ public class Control implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!mobile && Core.input.keyTap(Binding.screenshot) && !(scene.getKeyboardFocus() instanceof TextField) && !ui.chatfrag.chatOpen()){
|
||||||
|
renderer.takeMapScreenshot();
|
||||||
|
}
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
if(!state.isPaused()){
|
if(!state.isPaused()){
|
||||||
Time.update();
|
Time.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!scene.hasDialog() && Core.input.keyTap(KeyCode.BACK)){
|
||||||
|
Platform.instance.hide();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,7 +63,6 @@ public class NetClient implements ApplicationListener{
|
|||||||
public NetClient(){
|
public NetClient(){
|
||||||
|
|
||||||
Net.handleClient(Connect.class, packet -> {
|
Net.handleClient(Connect.class, packet -> {
|
||||||
Player player = players[0];
|
|
||||||
|
|
||||||
player.isAdmin = false;
|
player.isAdmin = false;
|
||||||
|
|
||||||
@@ -188,8 +187,8 @@ public class NetClient implements ApplicationListener{
|
|||||||
|
|
||||||
@Remote(variants = Variant.one)
|
@Remote(variants = Variant.one)
|
||||||
public static void onPositionSet(float x, float y){
|
public static void onPositionSet(float x, float y){
|
||||||
players[0].x = x;
|
player.x = x;
|
||||||
players[0].y = y;
|
player.y = y;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Remote
|
@Remote
|
||||||
@@ -249,6 +248,7 @@ public class NetClient implements ApplicationListener{
|
|||||||
for(int i = 0; i < cores; i++){
|
for(int i = 0; i < cores; i++){
|
||||||
int pos = input.readInt();
|
int pos = input.readInt();
|
||||||
Tile tile = world.tile(pos);
|
Tile tile = world.tile(pos);
|
||||||
|
|
||||||
if(tile != null && tile.entity != null){
|
if(tile != null && tile.entity != null){
|
||||||
tile.entity.items.read(input);
|
tile.entity.items.read(input);
|
||||||
}else{
|
}else{
|
||||||
@@ -333,8 +333,6 @@ public class NetClient implements ApplicationListener{
|
|||||||
void sync(){
|
void sync(){
|
||||||
|
|
||||||
if(timer.get(0, playerSyncTime)){
|
if(timer.get(0, playerSyncTime)){
|
||||||
Player player = players[0];
|
|
||||||
|
|
||||||
BuildRequest[] requests;
|
BuildRequest[] requests;
|
||||||
//limit to 10 to prevent buffer overflows
|
//limit to 10 to prevent buffer overflows
|
||||||
int usedRequests = Math.min(player.getPlaceQueue().size, 10);
|
int usedRequests = Math.min(player.getPlaceQueue().size, 10);
|
||||||
|
|||||||
@@ -458,7 +458,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
byte[] stateBytes = syncStream.toByteArray();
|
byte[] stateBytes = syncStream.toByteArray();
|
||||||
|
|
||||||
//write basic state data.
|
//write basic state data.
|
||||||
Call.onStateSnapshot(player.con.id, state.wavetime, state.wave, state.enemies, (short)stateBytes.length, Net.compressSnapshot(stateBytes));
|
Call.onStateSnapshot(player.con.id, state.wavetime, state.wave, state.enemies(), (short)stateBytes.length, Net.compressSnapshot(stateBytes));
|
||||||
|
|
||||||
viewport.setSize(player.con.viewWidth, player.con.viewHeight).setCenter(player.con.viewX, player.con.viewY);
|
viewport.setSize(player.con.viewWidth, player.con.viewHeight).setCenter(player.con.viewX, player.con.viewY);
|
||||||
|
|
||||||
|
|||||||
@@ -69,6 +69,9 @@ public abstract class Platform {
|
|||||||
*/
|
*/
|
||||||
public void showFileChooser(String text, String content, Consumer<FileHandle> cons, boolean open, String filetype){}
|
public void showFileChooser(String text, String content, Consumer<FileHandle> cons, boolean open, String filetype){}
|
||||||
|
|
||||||
|
/**Hide the app. Android only.*/
|
||||||
|
public void hide(){}
|
||||||
|
|
||||||
/**Forces the app into landscape mode. Currently Android only.*/
|
/**Forces the app into landscape mode. Currently Android only.*/
|
||||||
public void beginForceLandscape(){}
|
public void beginForceLandscape(){}
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,13 @@ package io.anuke.mindustry.core;
|
|||||||
|
|
||||||
import io.anuke.arc.ApplicationListener;
|
import io.anuke.arc.ApplicationListener;
|
||||||
import io.anuke.arc.Core;
|
import io.anuke.arc.Core;
|
||||||
|
import io.anuke.arc.files.FileHandle;
|
||||||
import io.anuke.arc.function.Consumer;
|
import io.anuke.arc.function.Consumer;
|
||||||
import io.anuke.arc.function.Predicate;
|
import io.anuke.arc.function.Predicate;
|
||||||
import io.anuke.arc.graphics.Camera;
|
import io.anuke.arc.graphics.Camera;
|
||||||
import io.anuke.arc.graphics.Color;
|
import io.anuke.arc.graphics.Color;
|
||||||
|
import io.anuke.arc.graphics.Pixmap;
|
||||||
|
import io.anuke.arc.graphics.PixmapIO;
|
||||||
import io.anuke.arc.graphics.g2d.Draw;
|
import io.anuke.arc.graphics.g2d.Draw;
|
||||||
import io.anuke.arc.graphics.g2d.Lines;
|
import io.anuke.arc.graphics.g2d.Lines;
|
||||||
import io.anuke.arc.graphics.g2d.SpriteBatch;
|
import io.anuke.arc.graphics.g2d.SpriteBatch;
|
||||||
@@ -13,6 +16,8 @@ import io.anuke.arc.graphics.glutils.FrameBuffer;
|
|||||||
import io.anuke.arc.math.Mathf;
|
import io.anuke.arc.math.Mathf;
|
||||||
import io.anuke.arc.math.geom.Rectangle;
|
import io.anuke.arc.math.geom.Rectangle;
|
||||||
import io.anuke.arc.math.geom.Vector2;
|
import io.anuke.arc.math.geom.Vector2;
|
||||||
|
import io.anuke.arc.util.BufferUtils;
|
||||||
|
import io.anuke.arc.util.ScreenUtils;
|
||||||
import io.anuke.arc.util.Time;
|
import io.anuke.arc.util.Time;
|
||||||
import io.anuke.arc.util.Tmp;
|
import io.anuke.arc.util.Tmp;
|
||||||
import io.anuke.arc.util.pooling.Pools;
|
import io.anuke.arc.util.pooling.Pools;
|
||||||
@@ -53,7 +58,7 @@ public class Renderer implements ApplicationListener{
|
|||||||
public Renderer(){
|
public Renderer(){
|
||||||
batch = new SpriteBatch(4096);
|
batch = new SpriteBatch(4096);
|
||||||
camera = new Camera();
|
camera = new Camera();
|
||||||
Lines.setCircleVertices(14);
|
Lines.setCircleVertices(20);
|
||||||
Shaders.init();
|
Shaders.init();
|
||||||
|
|
||||||
Effects.setScreenShakeProvider((intensity, duration) -> {
|
Effects.setScreenShakeProvider((intensity, duration) -> {
|
||||||
@@ -113,11 +118,11 @@ public class Renderer implements ApplicationListener{
|
|||||||
if(state.is(State.menu)){
|
if(state.is(State.menu)){
|
||||||
graphics.clear(Color.BLACK);
|
graphics.clear(Color.BLACK);
|
||||||
}else{
|
}else{
|
||||||
Vector2 position = Tmp.v3.set(players[0]);
|
Vector2 position = Tmp.v3.set(player);
|
||||||
|
|
||||||
if(players[0].isDead()){
|
if(player.isDead()){
|
||||||
TileEntity core = players[0].getClosestCore();
|
TileEntity core = player.getClosestCore();
|
||||||
if(core != null && players[0].spawner == null){
|
if(core != null && player.spawner == null){
|
||||||
camera.position.lerpDelta(core.x, core.y, 0.08f);
|
camera.position.lerpDelta(core.x, core.y, 0.08f);
|
||||||
}else{
|
}else{
|
||||||
camera.position.lerpDelta(position, 0.08f);
|
camera.position.lerpDelta(position, 0.08f);
|
||||||
@@ -148,8 +153,8 @@ public class Renderer implements ApplicationListener{
|
|||||||
camera.update();
|
camera.update();
|
||||||
|
|
||||||
if(Float.isNaN(camera.position.x) || Float.isNaN(camera.position.y)){
|
if(Float.isNaN(camera.position.x) || Float.isNaN(camera.position.y)){
|
||||||
camera.position.x = players[0].x;
|
camera.position.x = player.x;
|
||||||
camera.position.y = players[0].y;
|
camera.position.y = player.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
graphics.clear(clearColor);
|
graphics.clear(clearColor);
|
||||||
@@ -169,6 +174,7 @@ public class Renderer implements ApplicationListener{
|
|||||||
blocks.processBlocks();
|
blocks.processBlocks();
|
||||||
|
|
||||||
blocks.drawShadows();
|
blocks.drawShadows();
|
||||||
|
Draw.color();
|
||||||
|
|
||||||
blocks.floor.beginDraw();
|
blocks.floor.beginDraw();
|
||||||
blocks.floor.drawLayer(CacheLayer.walls);
|
blocks.floor.drawLayer(CacheLayer.walls);
|
||||||
@@ -183,6 +189,8 @@ public class Renderer implements ApplicationListener{
|
|||||||
|
|
||||||
blocks.drawBlocks(Layer.overlay);
|
blocks.drawBlocks(Layer.overlay);
|
||||||
|
|
||||||
|
drawGroundShadows();
|
||||||
|
|
||||||
drawAllTeams(false);
|
drawAllTeams(false);
|
||||||
|
|
||||||
blocks.skipLayer(Layer.turret);
|
blocks.skipLayer(Layer.turret);
|
||||||
@@ -223,6 +231,28 @@ public class Renderer implements ApplicationListener{
|
|||||||
Draw.flush();
|
Draw.flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void drawGroundShadows(){
|
||||||
|
Draw.color(0, 0, 0, 0.4f);
|
||||||
|
float rad = 1.6f;
|
||||||
|
|
||||||
|
Consumer<Unit> draw = u -> {
|
||||||
|
float size = Math.max(u.getIconRegion().getWidth(), u.getIconRegion().getHeight()) * Draw.scl;
|
||||||
|
Draw.rect("circle-shadow", u.x, u.y, size * rad, size * rad);
|
||||||
|
};
|
||||||
|
|
||||||
|
for(EntityGroup<? extends BaseUnit> group : unitGroups){
|
||||||
|
if(!group.isEmpty()){
|
||||||
|
drawAndInterpolate(group, unit -> !unit.isDead(), draw::accept);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!playerGroup.isEmpty()){
|
||||||
|
drawAndInterpolate(playerGroup, unit -> !unit.isDead(), draw::accept);
|
||||||
|
}
|
||||||
|
|
||||||
|
Draw.color();
|
||||||
|
}
|
||||||
|
|
||||||
private void drawFlyerShadows(){
|
private void drawFlyerShadows(){
|
||||||
float trnsX = -12, trnsY = -13;
|
float trnsX = -12, trnsY = -13;
|
||||||
Draw.color(0, 0, 0, 0.22f);
|
Draw.color(0, 0, 0, 0.22f);
|
||||||
@@ -271,10 +301,6 @@ public class Renderer implements ApplicationListener{
|
|||||||
EntityDraw.drawWith(group, toDraw, drawer);
|
EntityDraw.drawWith(group, toDraw, drawer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public float cameraScale(){
|
|
||||||
return camerascale;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void scaleCamera(float amount){
|
public void scaleCamera(float amount){
|
||||||
targetscale += amount;
|
targetscale += amount;
|
||||||
clampScale();
|
clampScale();
|
||||||
@@ -282,7 +308,50 @@ public class Renderer implements ApplicationListener{
|
|||||||
|
|
||||||
public void clampScale(){
|
public void clampScale(){
|
||||||
float s = io.anuke.arc.scene.ui.layout.Unit.dp.scl(1f);
|
float s = io.anuke.arc.scene.ui.layout.Unit.dp.scl(1f);
|
||||||
targetscale = Mathf.clamp(targetscale, s * 1.5f, Math.round(s * 5));
|
targetscale = Mathf.clamp(targetscale, s * 1.5f, Math.round(s * 6));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void takeMapScreenshot(){
|
||||||
|
drawGroundShadows();
|
||||||
|
|
||||||
|
int w = world.width()*tilesize, h = world.height()*tilesize;
|
||||||
|
|
||||||
|
boolean isWater = settings.getBool("animatedwater");
|
||||||
|
settings.put("animatedwater", false);
|
||||||
|
|
||||||
|
FrameBuffer buffer = new FrameBuffer(w, h);
|
||||||
|
|
||||||
|
float vpW = camera.width, vpH = camera.height, px = camera.position.x, py = camera.position.y;
|
||||||
|
disableUI = true;
|
||||||
|
camera.width = w;
|
||||||
|
camera.height = h;
|
||||||
|
camera.position.x = w/2f + tilesize/2f;
|
||||||
|
camera.position.y = h/2f + tilesize/2f;
|
||||||
|
Draw.flush();
|
||||||
|
buffer.begin();
|
||||||
|
draw();
|
||||||
|
Draw.flush();
|
||||||
|
buffer.end();
|
||||||
|
disableUI = false;
|
||||||
|
camera.width = vpW;
|
||||||
|
camera.height = vpH;
|
||||||
|
camera.position.set(px, py);
|
||||||
|
buffer.begin();
|
||||||
|
byte[] lines = ScreenUtils.getFrameBufferPixels(0, 0, w, h, true);
|
||||||
|
for(int i = 0; i < lines.length; i+= 4){
|
||||||
|
lines[i + 3] = (byte)255;
|
||||||
|
}
|
||||||
|
buffer.end();
|
||||||
|
Pixmap fullPixmap = new Pixmap(w, h, Pixmap.Format.RGBA8888);
|
||||||
|
BufferUtils.copy(lines, 0, fullPixmap.getPixels(), lines.length);
|
||||||
|
FileHandle file = screenshotDirectory.child("screenshot-" + Time.millis() + ".png");
|
||||||
|
PixmapIO.writePNG(file, fullPixmap);
|
||||||
|
fullPixmap.dispose();
|
||||||
|
ui.showInfoFade(Core.bundle.format("screenshot", file.toString()));
|
||||||
|
|
||||||
|
buffer.dispose();
|
||||||
|
|
||||||
|
settings.put("animatedwater", isWater);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,7 +63,6 @@ public class UI implements ApplicationListener{
|
|||||||
public AdminsDialog admins;
|
public AdminsDialog admins;
|
||||||
public TraceDialog traces;
|
public TraceDialog traces;
|
||||||
public ChangelogDialog changelog;
|
public ChangelogDialog changelog;
|
||||||
public LocalPlayerDialog localplayers;
|
|
||||||
public DatabaseDialog database;
|
public DatabaseDialog database;
|
||||||
public ContentInfoDialog content;
|
public ContentInfoDialog content;
|
||||||
public DeployDialog deploy;
|
public DeployDialog deploy;
|
||||||
@@ -109,6 +108,7 @@ public class UI implements ApplicationListener{
|
|||||||
});
|
});
|
||||||
|
|
||||||
Colors.put("accent", Pal.accent);
|
Colors.put("accent", Pal.accent);
|
||||||
|
Colors.put("stat", Pal.stat);
|
||||||
|
|
||||||
loadCursors();
|
loadCursors();
|
||||||
}
|
}
|
||||||
@@ -175,7 +175,6 @@ public class UI implements ApplicationListener{
|
|||||||
admins = new AdminsDialog();
|
admins = new AdminsDialog();
|
||||||
traces = new TraceDialog();
|
traces = new TraceDialog();
|
||||||
maps = new MapsDialog();
|
maps = new MapsDialog();
|
||||||
localplayers = new LocalPlayerDialog();
|
|
||||||
content = new ContentInfoDialog();
|
content = new ContentInfoDialog();
|
||||||
deploy = new DeployDialog();
|
deploy = new DeployDialog();
|
||||||
tech = new TechTreeDialog();
|
tech = new TechTreeDialog();
|
||||||
@@ -183,7 +182,7 @@ public class UI implements ApplicationListener{
|
|||||||
Group group = Core.scene.root;
|
Group group = Core.scene.root;
|
||||||
|
|
||||||
backfrag.build(group);
|
backfrag.build(group);
|
||||||
control.input(0).getFrag().build(group);
|
control.input().getFrag().build(group);
|
||||||
hudfrag.build(group);
|
hudfrag.build(group);
|
||||||
menufrag.build(group);
|
menufrag.build(group);
|
||||||
chatfrag.container().build(group);
|
chatfrag.container().build(group);
|
||||||
@@ -219,7 +218,7 @@ public class UI implements ApplicationListener{
|
|||||||
cont.margin(30).add(text).padRight(6f);
|
cont.margin(30).add(text).padRight(6f);
|
||||||
TextField field = cont.addField(def, t -> {
|
TextField field = cont.addField(def, t -> {
|
||||||
}).size(170f, 50f).get();
|
}).size(170f, 50f).get();
|
||||||
field.setTextFieldFilter((f, c) -> field.getText().length() < 12 && filter.acceptChar(f, c));
|
field.setFilter((f, c) -> field.getText().length() < 12 && filter.acceptChar(f, c));
|
||||||
Platform.instance.addDialog(field);
|
Platform.instance.addDialog(field);
|
||||||
buttons.defaults().size(120, 54).pad(4);
|
buttons.defaults().size(120, 54).pad(4);
|
||||||
buttons.addButton("$ok", () -> {
|
buttons.addButton("$ok", () -> {
|
||||||
@@ -288,11 +287,11 @@ public class UI implements ApplicationListener{
|
|||||||
|
|
||||||
public String formatAmount(int number){
|
public String formatAmount(int number){
|
||||||
if(number >= 1000000){
|
if(number >= 1000000){
|
||||||
return Strings.toFixed(number / 1000000f, 1) + "[gray]mil[]";
|
return Strings.fixed(number / 1000000f, 1) + "[gray]mil[]";
|
||||||
}else if(number >= 10000){
|
}else if(number >= 10000){
|
||||||
return number / 1000 + "[gray]k[]";
|
return number / 1000 + "[gray]k[]";
|
||||||
}else if(number >= 1000){
|
}else if(number >= 1000){
|
||||||
return Strings.toFixed(number / 1000f, 1) + "[gray]k[]";
|
return Strings.fixed(number / 1000f, 1) + "[gray]k[]";
|
||||||
}else{
|
}else{
|
||||||
return number + "";
|
return number + "";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.anuke.mindustry.core;
|
package io.anuke.mindustry.core;
|
||||||
|
|
||||||
|
import io.anuke.annotations.Annotations.Nullable;
|
||||||
import io.anuke.arc.ApplicationListener;
|
import io.anuke.arc.ApplicationListener;
|
||||||
import io.anuke.arc.Core;
|
import io.anuke.arc.Core;
|
||||||
import io.anuke.arc.Events;
|
import io.anuke.arc.Events;
|
||||||
@@ -96,11 +97,11 @@ public class World implements ApplicationListener{
|
|||||||
return tiles == null ? 0 : tiles[0].length;
|
return tiles == null ? 0 : tiles[0].length;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Tile tile(int pos){
|
public @Nullable Tile tile(int pos){
|
||||||
return tiles == null ? null : tile(Pos.x(pos), Pos.y(pos));
|
return tiles == null ? null : tile(Pos.x(pos), Pos.y(pos));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Tile tile(int x, int y){
|
public @Nullable Tile tile(int x, int y){
|
||||||
if(tiles == null){
|
if(tiles == null){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -112,7 +113,7 @@ public class World implements ApplicationListener{
|
|||||||
return tiles[x][y];
|
return tiles[x][y];
|
||||||
}
|
}
|
||||||
|
|
||||||
public Tile tileWorld(float x, float y){
|
public @Nullable Tile tileWorld(float x, float y){
|
||||||
return tile(Math.round(x / tilesize), Math.round(y / tilesize));
|
return tile(Math.round(x / tilesize), Math.round(y / tilesize));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -258,19 +259,24 @@ public class World implements ApplicationListener{
|
|||||||
invalidMap = false;
|
invalidMap = false;
|
||||||
|
|
||||||
if(!headless){
|
if(!headless){
|
||||||
if(state.teams.get(players[0].getTeam()).cores.size == 0){
|
if(state.teams.get(player.getTeam()).cores.size == 0){
|
||||||
ui.showError("$map.nospawn");
|
ui.showError("$map.nospawn");
|
||||||
invalidMap = true;
|
invalidMap = true;
|
||||||
}else if(state.rules.pvp){ //pvp maps need two cores to be valid
|
}else if(state.rules.pvp){ //pvp maps need two cores to be valid
|
||||||
invalidMap = true;
|
invalidMap = true;
|
||||||
for(Team team : Team.all){
|
for(Team team : Team.all){
|
||||||
if(state.teams.get(team).cores.size != 0 && team != players[0].getTeam()){
|
if(state.teams.get(team).cores.size != 0 && team != player.getTeam()){
|
||||||
invalidMap = false;
|
invalidMap = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(invalidMap){
|
if(invalidMap){
|
||||||
ui.showError("$map.nospawn.pvp");
|
ui.showError("$map.nospawn.pvp");
|
||||||
}
|
}
|
||||||
|
}else if(!state.rules.waves){ //pvp maps need two cores to be valid
|
||||||
|
invalidMap = state.teams.get(waveTeam).cores.isEmpty();
|
||||||
|
if(invalidMap){
|
||||||
|
ui.showError("$map.nospawn.attack");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
invalidMap = true;
|
invalidMap = true;
|
||||||
@@ -451,9 +457,7 @@ public class World implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
for(int x = 0; x < tiles.length; x++){
|
for(int x = 0; x < tiles.length; x++){
|
||||||
for(int y = 0; y < tiles[0].length; y++){
|
System.arraycopy(writeBuffer[x], 0, dark[x], 0, tiles[0].length);
|
||||||
dark[x][y] = writeBuffer[x][y];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import io.anuke.annotations.Annotations.Struct;
|
|||||||
import io.anuke.arc.collection.LongArray;
|
import io.anuke.arc.collection.LongArray;
|
||||||
import io.anuke.mindustry.game.Team;
|
import io.anuke.mindustry.game.Team;
|
||||||
import io.anuke.mindustry.gen.TileOp;
|
import io.anuke.mindustry.gen.TileOp;
|
||||||
|
import io.anuke.mindustry.world.Block;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.mindustry.world.blocks.Floor;
|
import io.anuke.mindustry.world.blocks.Floor;
|
||||||
|
|
||||||
@@ -39,7 +40,11 @@ public class DrawOperation{
|
|||||||
if(type == OpType.floor.ordinal()){
|
if(type == OpType.floor.ordinal()){
|
||||||
tile.setFloor((Floor)content.block(to));
|
tile.setFloor((Floor)content.block(to));
|
||||||
}else if(type == OpType.block.ordinal()){
|
}else if(type == OpType.block.ordinal()){
|
||||||
tile.setBlock(content.block(to));
|
Block block = content.block(to);
|
||||||
|
tile.setBlock(block);
|
||||||
|
if(block.isMultiblock()){
|
||||||
|
editor.updateLinks(block, tile.x, tile.y);
|
||||||
|
}
|
||||||
}else if(type == OpType.rotation.ordinal()){
|
}else if(type == OpType.rotation.ordinal()){
|
||||||
tile.setRotation(to);
|
tile.setRotation(to);
|
||||||
}else if(type == OpType.team.ordinal()){
|
}else if(type == OpType.team.ordinal()){
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public class EditorTile extends Tile{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setBlock(Block type){
|
public void setBlock(Block type){
|
||||||
Block previous = wall == null ? Blocks.air : wall;
|
Block previous =wall;
|
||||||
if(previous == type) return;
|
if(previous == type) return;
|
||||||
super.setBlock(type);
|
super.setBlock(type);
|
||||||
op(TileOp.get(x, y, (byte)OpType.block.ordinal(), previous.id, type.id));
|
op(TileOp.get(x, y, (byte)OpType.block.ordinal(), previous.id, type.id));
|
||||||
|
|||||||
@@ -146,6 +146,27 @@ public class MapEditor{
|
|||||||
return tiles[0].length;
|
return tiles[0].length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateLinks(Block block, int x, int y){
|
||||||
|
int offsetx = -(block.size - 1) / 2;
|
||||||
|
int offsety = -(block.size - 1) / 2;
|
||||||
|
|
||||||
|
for(int dx = 0; dx < block.size; dx++){
|
||||||
|
for(int dy = 0; dy < block.size; dy++){
|
||||||
|
int worldx = dx + offsetx + x;
|
||||||
|
int worldy = dy + offsety + y;
|
||||||
|
|
||||||
|
if(Structs.inBounds(worldx, worldy, width(), height())){
|
||||||
|
Tile tile = tiles[worldx][worldy];
|
||||||
|
|
||||||
|
if(!(worldx == x && worldy == y)){
|
||||||
|
tile.setBlock(Blocks.part);
|
||||||
|
tile.setLinkByte(Pack.byteByte((byte)(dx + offsetx + 8), (byte)(dy + offsety + 8)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void draw(int x, int y, boolean paint){
|
public void draw(int x, int y, boolean paint){
|
||||||
draw(x, y, paint, drawBlock);
|
draw(x, y, paint, drawBlock);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
|
|
||||||
shown(() -> {
|
shown(() -> {
|
||||||
saved = true;
|
saved = true;
|
||||||
Platform.instance.beginForceLandscape();
|
if(!Core.settings.getBool("landscape")) Platform.instance.beginForceLandscape();
|
||||||
editor.clearOp();
|
editor.clearOp();
|
||||||
Core.scene.setScrollFocus(view);
|
Core.scene.setScrollFocus(view);
|
||||||
if(!shownWithMap){
|
if(!shownWithMap){
|
||||||
@@ -195,7 +195,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
hidden(() -> {
|
hidden(() -> {
|
||||||
editor.clearOp();
|
editor.clearOp();
|
||||||
Platform.instance.updateRPC();
|
Platform.instance.updateRPC();
|
||||||
Platform.instance.endForceLandscape();
|
if(!Core.settings.getBool("landscape")) Platform.instance.endForceLandscape();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -233,7 +233,7 @@ public class MapGenerateDialog extends FloatingDialog{
|
|||||||
Tile tile = editor.tile(x, y);
|
Tile tile = editor.tile(x, y);
|
||||||
DummyTile write = writeTiles[x][y];
|
DummyTile write = writeTiles[x][y];
|
||||||
|
|
||||||
tile.setRotation((byte)write.rotation);
|
tile.setRotation(write.rotation);
|
||||||
tile.setFloor((Floor)content.block(write.floor));
|
tile.setFloor((Floor)content.block(write.floor));
|
||||||
tile.setBlock(content.block(write.block));
|
tile.setBlock(content.block(write.block));
|
||||||
tile.setTeam(Team.all[write.team]);
|
tile.setTeam(Team.all[write.team]);
|
||||||
|
|||||||
@@ -72,8 +72,7 @@ public class MapRenderer implements Disposable{
|
|||||||
IndexedRenderer mesh = chunks[x][y];
|
IndexedRenderer mesh = chunks[x][y];
|
||||||
|
|
||||||
if(mesh == null){
|
if(mesh == null){
|
||||||
chunks[x][y] = new IndexedRenderer(chunksize * chunksize * 2);
|
continue;
|
||||||
mesh = chunks[x][y];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mesh.getTransformMatrix().setToTranslation(tx, ty).scale(tw / (width * tilesize), th / (height * tilesize));
|
mesh.getTransformMatrix().setToTranslation(tx, ty).scale(tw / (width * tilesize), th / (height * tilesize));
|
||||||
@@ -140,7 +139,7 @@ public class MapRenderer implements Disposable{
|
|||||||
offsetX = tilesize/2f - region.getWidth()/2f * Draw.scl;
|
offsetX = tilesize/2f - region.getWidth()/2f * Draw.scl;
|
||||||
offsetY = tilesize/2f - region.getHeight()/2f * Draw.scl;
|
offsetY = tilesize/2f - region.getHeight()/2f * Draw.scl;
|
||||||
}else if(wall == Blocks.air && tile.ore() != null){
|
}else if(wall == Blocks.air && tile.ore() != null){
|
||||||
region = tile.ore().editorVariantRegions()[Mathf.randomSeed(idxWall, 0, tile.ore().editorVariantRegions().length-1)];;
|
region = tile.ore().editorVariantRegions()[Mathf.randomSeed(idxWall, 0, tile.ore().editorVariantRegions().length-1)];
|
||||||
}else{
|
}else{
|
||||||
region = Core.atlas.find("clear-editor");
|
region = Core.atlas.find("clear-editor");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ public class WaveInfoDialog extends FloatingDialog{
|
|||||||
}).width(80f);
|
}).width(80f);
|
||||||
|
|
||||||
a.add(" + ");
|
a.add(" + ");
|
||||||
a.addField(Strings.toFixed(Math.max((Mathf.isZero(group.unitScaling) ? 0 : 1f/group.unitScaling), 0), 2), TextFieldFilter.floatsOnly, text -> {
|
a.addField(Strings.fixed(Math.max((Mathf.isZero(group.unitScaling) ? 0 : 1f/group.unitScaling), 0), 2), TextFieldFilter.floatsOnly, text -> {
|
||||||
if(Strings.canParsePositiveFloat(text)){
|
if(Strings.canParsePositiveFloat(text)){
|
||||||
group.unitScaling = 1f / Strings.parseFloat(text);
|
group.unitScaling = 1f / Strings.parseFloat(text);
|
||||||
updateWaves();
|
updateWaves();
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package io.anuke.mindustry.editor.generation;
|
package io.anuke.mindustry.editor.generation;
|
||||||
|
|
||||||
import io.anuke.mindustry.content.Blocks;
|
import io.anuke.mindustry.content.Blocks;
|
||||||
import io.anuke.mindustry.editor.generation.FilterOption.BlockOption;
|
|
||||||
import io.anuke.mindustry.editor.generation.FilterOption.SliderOption;
|
import io.anuke.mindustry.editor.generation.FilterOption.SliderOption;
|
||||||
import io.anuke.mindustry.world.Block;
|
import io.anuke.mindustry.world.Block;
|
||||||
|
|
||||||
|
|||||||
@@ -156,11 +156,11 @@ public class Effects{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static interface EffectProvider{
|
public interface EffectProvider{
|
||||||
void createEffect(Effect effect, Color color, float x, float y, float rotation, Object data);
|
void createEffect(Effect effect, Color color, float x, float y, float rotation, Object data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static interface EffectRenderer{
|
public interface EffectRenderer{
|
||||||
void render(EffectContainer effect);
|
void render(EffectContainer effect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import io.anuke.arc.function.Predicate;
|
|||||||
import io.anuke.arc.graphics.Camera;
|
import io.anuke.arc.graphics.Camera;
|
||||||
import io.anuke.arc.math.geom.Rectangle;
|
import io.anuke.arc.math.geom.Rectangle;
|
||||||
import io.anuke.mindustry.entities.traits.DrawTrait;
|
import io.anuke.mindustry.entities.traits.DrawTrait;
|
||||||
|
import io.anuke.mindustry.entities.traits.Entity;
|
||||||
|
|
||||||
public class EntityDraw{
|
public class EntityDraw{
|
||||||
private static final Rectangle viewport = new Rectangle();
|
private static final Rectangle viewport = new Rectangle();
|
||||||
@@ -42,15 +43,12 @@ public class EntityDraw{
|
|||||||
viewport.set(cam.position.x - cam.width / 2, cam.position.y - cam.height / 2, cam.width, cam.height);
|
viewport.set(cam.position.x - cam.width / 2, cam.position.y - cam.height / 2, cam.width, cam.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
group.forEach(e -> {
|
for(Entity e : group.all()){
|
||||||
if(!(e instanceof DrawTrait)) return;
|
if(!(e instanceof DrawTrait) || !toDraw.test((T)e) || !e.isAdded()) continue;
|
||||||
T t = (T) e;
|
|
||||||
|
|
||||||
if(!toDraw.test(t) || !e.isAdded()) return;
|
|
||||||
|
|
||||||
if(!clip || rect.setSize(((DrawTrait) e).drawSize()).setCenter(e.getX(), e.getY()).overlaps(viewport)){
|
if(!clip || rect.setSize(((DrawTrait) e).drawSize()).setCenter(e.getX(), e.getY()).overlaps(viewport)){
|
||||||
cons.accept(t);
|
cons.accept((T)e);
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,13 +4,6 @@ import io.anuke.arc.Core;
|
|||||||
import io.anuke.arc.graphics.Color;
|
import io.anuke.arc.graphics.Color;
|
||||||
import io.anuke.arc.graphics.g2d.Draw;
|
import io.anuke.arc.graphics.g2d.Draw;
|
||||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||||
import io.anuke.arc.math.Angles;
|
|
||||||
import io.anuke.arc.math.Mathf;
|
|
||||||
import io.anuke.mindustry.entities.Damage;
|
|
||||||
import io.anuke.mindustry.entities.Effects;
|
|
||||||
import io.anuke.mindustry.entities.Units;
|
|
||||||
import io.anuke.mindustry.entities.effect.Lightning;
|
|
||||||
import io.anuke.mindustry.entities.traits.TargetTrait;
|
|
||||||
import io.anuke.mindustry.graphics.Pal;
|
import io.anuke.mindustry.graphics.Pal;
|
||||||
|
|
||||||
/**An extended BulletType for most ammo-based bullets shot from turrets and units.*/
|
/**An extended BulletType for most ammo-based bullets shot from turrets and units.*/
|
||||||
@@ -20,28 +13,9 @@ public class BasicBulletType extends BulletType{
|
|||||||
public float bulletShrink = 0.5f;
|
public float bulletShrink = 0.5f;
|
||||||
public String bulletSprite;
|
public String bulletSprite;
|
||||||
|
|
||||||
public int fragBullets = 9;
|
|
||||||
public float fragVelocityMin = 0.2f, fragVelocityMax = 1f;
|
|
||||||
public BulletType fragBullet = null;
|
|
||||||
|
|
||||||
/**Use a negative value to disable splash damage.*/
|
|
||||||
public float splashDamageRadius = -1f;
|
|
||||||
|
|
||||||
public int incendAmount = 0;
|
|
||||||
public float incendSpread = 8f;
|
|
||||||
public float incendChance = 1f;
|
|
||||||
|
|
||||||
public float homingPower = 0f;
|
|
||||||
public float homingRange = 50f;
|
|
||||||
|
|
||||||
public int lightining;
|
|
||||||
public int lightningLength = 5;
|
|
||||||
|
|
||||||
public TextureRegion backRegion;
|
public TextureRegion backRegion;
|
||||||
public TextureRegion frontRegion;
|
public TextureRegion frontRegion;
|
||||||
|
|
||||||
public float hitShake = 0f;
|
|
||||||
|
|
||||||
public BasicBulletType(float speed, float damage, String bulletSprite){
|
public BasicBulletType(float speed, float damage, String bulletSprite){
|
||||||
super(speed, damage);
|
super(speed, damage);
|
||||||
this.bulletSprite = bulletSprite;
|
this.bulletSprite = bulletSprite;
|
||||||
@@ -63,51 +37,4 @@ public class BasicBulletType extends BulletType{
|
|||||||
Draw.rect(frontRegion, b.x, b.y, bulletWidth, height, b.rot() - 90);
|
Draw.rect(frontRegion, b.x, b.y, bulletWidth, height, b.rot() - 90);
|
||||||
Draw.color();
|
Draw.color();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void update(Bullet b){
|
|
||||||
super.update(b);
|
|
||||||
|
|
||||||
if(homingPower > 0.0001f){
|
|
||||||
TargetTrait target = Units.getClosestTarget(b.getTeam(), b.x, b.y, homingRange);
|
|
||||||
if(target != null){
|
|
||||||
b.velocity().setAngle(Mathf.slerpDelta(b.velocity().angle(), b.angleTo(target), 0.08f));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void hit(Bullet b, float x, float y){
|
|
||||||
super.hit(b, x, y);
|
|
||||||
|
|
||||||
Effects.shake(hitShake, hitShake, b);
|
|
||||||
|
|
||||||
if(fragBullet != null){
|
|
||||||
for(int i = 0; i < fragBullets; i++){
|
|
||||||
float len = Mathf.random(1f, 7f);
|
|
||||||
float a = Mathf.random(360f);
|
|
||||||
Bullet.create(fragBullet, b, x + Angles.trnsx(a, len), y + Angles.trnsy(a, len), a, Mathf.random(fragVelocityMin, fragVelocityMax));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(Mathf.chance(incendChance)){
|
|
||||||
Damage.createIncend(x, y, incendSpread, incendAmount);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(splashDamageRadius > 0){
|
|
||||||
Damage.damage(b.getTeam(), x, y, splashDamageRadius, splashDamage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void despawned(Bullet b){
|
|
||||||
super.despawned(b);
|
|
||||||
if(fragBullet != null || splashDamageRadius > 0){
|
|
||||||
hit(b);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < lightining; i++) {
|
|
||||||
Lightning.create(b.getTeam(), Pal.surge, damage, b.x, b.y, Mathf.random(360f), lightningLength);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,17 @@
|
|||||||
package io.anuke.mindustry.entities.bullet;
|
package io.anuke.mindustry.entities.bullet;
|
||||||
|
|
||||||
|
import io.anuke.arc.math.Angles;
|
||||||
|
import io.anuke.arc.math.Mathf;
|
||||||
|
import io.anuke.mindustry.content.Fx;
|
||||||
|
import io.anuke.mindustry.content.StatusEffects;
|
||||||
|
import io.anuke.mindustry.entities.Damage;
|
||||||
import io.anuke.mindustry.entities.Effects;
|
import io.anuke.mindustry.entities.Effects;
|
||||||
import io.anuke.mindustry.entities.Effects.Effect;
|
import io.anuke.mindustry.entities.Effects.Effect;
|
||||||
import io.anuke.mindustry.content.StatusEffects;
|
import io.anuke.mindustry.entities.Units;
|
||||||
import io.anuke.mindustry.content.Fx;
|
import io.anuke.mindustry.entities.effect.Lightning;
|
||||||
|
import io.anuke.mindustry.entities.traits.TargetTrait;
|
||||||
import io.anuke.mindustry.game.Content;
|
import io.anuke.mindustry.game.Content;
|
||||||
|
import io.anuke.mindustry.graphics.Pal;
|
||||||
import io.anuke.mindustry.type.ContentType;
|
import io.anuke.mindustry.type.ContentType;
|
||||||
import io.anuke.mindustry.type.StatusEffect;
|
import io.anuke.mindustry.type.StatusEffect;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
@@ -41,8 +48,6 @@ public abstract class BulletType extends Content{
|
|||||||
public StatusEffect status = StatusEffects.none;
|
public StatusEffect status = StatusEffects.none;
|
||||||
/**Intensity of applied status effect in terms of duration.*/
|
/**Intensity of applied status effect in terms of duration.*/
|
||||||
public float statusDuration = 60 * 1f;
|
public float statusDuration = 60 * 1f;
|
||||||
/**What fraction of armor is pierced, 0-1*/
|
|
||||||
public float armorPierce = 0f;
|
|
||||||
/**Whether to sync this bullet to clients.*/
|
/**Whether to sync this bullet to clients.*/
|
||||||
public boolean syncable;
|
public boolean syncable;
|
||||||
/**Whether this bullet type collides with tiles.*/
|
/**Whether this bullet type collides with tiles.*/
|
||||||
@@ -56,6 +61,27 @@ public abstract class BulletType extends Content{
|
|||||||
/**Whether velocity is inherited from the shooter.*/
|
/**Whether velocity is inherited from the shooter.*/
|
||||||
public boolean keepVelocity = true;
|
public boolean keepVelocity = true;
|
||||||
|
|
||||||
|
//additional effects
|
||||||
|
|
||||||
|
public int fragBullets = 9;
|
||||||
|
public float fragVelocityMin = 0.2f, fragVelocityMax = 1f;
|
||||||
|
public BulletType fragBullet = null;
|
||||||
|
|
||||||
|
/**Use a negative value to disable splash damage.*/
|
||||||
|
public float splashDamageRadius = -1f;
|
||||||
|
|
||||||
|
public int incendAmount = 0;
|
||||||
|
public float incendSpread = 8f;
|
||||||
|
public float incendChance = 1f;
|
||||||
|
|
||||||
|
public float homingPower = 0f;
|
||||||
|
public float homingRange = 50f;
|
||||||
|
|
||||||
|
public int lightining;
|
||||||
|
public int lightningLength = 5;
|
||||||
|
|
||||||
|
public float hitShake = 0f;
|
||||||
|
|
||||||
public BulletType(float speed, float damage){
|
public BulletType(float speed, float damage){
|
||||||
this.speed = speed;
|
this.speed = speed;
|
||||||
this.damage = damage;
|
this.damage = damage;
|
||||||
@@ -81,12 +107,38 @@ public abstract class BulletType extends Content{
|
|||||||
hit(b, b.x, b.y);
|
hit(b, b.x, b.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void hit(Bullet b, float hitx, float hity){
|
public void hit(Bullet b, float x, float y){
|
||||||
Effects.effect(hitEffect, hitx, hity, b.rot());
|
Effects.effect(hitEffect, x, y, b.rot());
|
||||||
|
|
||||||
|
Effects.shake(hitShake, hitShake, b);
|
||||||
|
|
||||||
|
if(fragBullet != null){
|
||||||
|
for(int i = 0; i < fragBullets; i++){
|
||||||
|
float len = Mathf.random(1f, 7f);
|
||||||
|
float a = Mathf.random(360f);
|
||||||
|
Bullet.create(fragBullet, b, x + Angles.trnsx(a, len), y + Angles.trnsy(a, len), a, Mathf.random(fragVelocityMin, fragVelocityMax));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Mathf.chance(incendChance)){
|
||||||
|
Damage.createIncend(x, y, incendSpread, incendAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(splashDamageRadius > 0){
|
||||||
|
Damage.damage(b.getTeam(), x, y, splashDamageRadius, splashDamage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void despawned(Bullet b){
|
public void despawned(Bullet b){
|
||||||
Effects.effect(despawnEffect, b.x, b.y, b.rot());
|
Effects.effect(despawnEffect, b.x, b.y, b.rot());
|
||||||
|
|
||||||
|
if(fragBullet != null || splashDamageRadius > 0){
|
||||||
|
hit(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < lightining; i++) {
|
||||||
|
Lightning.create(b.getTeam(), Pal.surge, damage, b.x, b.y, Mathf.random(360f), lightningLength);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void draw(Bullet b){
|
public void draw(Bullet b){
|
||||||
@@ -96,6 +148,13 @@ public abstract class BulletType extends Content{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void update(Bullet b){
|
public void update(Bullet b){
|
||||||
|
|
||||||
|
if(homingPower > 0.0001f){
|
||||||
|
TargetTrait target = Units.getClosestTarget(b.getTeam(), b.x, b.y, homingRange);
|
||||||
|
if(target != null){
|
||||||
|
b.velocity().setAngle(Mathf.slerpDelta(b.velocity().angle(), b.angleTo(target), 0.08f));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ public class LiquidBulletType extends BulletType{
|
|||||||
Liquid liquid;
|
Liquid liquid;
|
||||||
|
|
||||||
public LiquidBulletType(Liquid liquid){
|
public LiquidBulletType(Liquid liquid){
|
||||||
super(2.8f, 0);
|
super(3.5f, 0);
|
||||||
this.liquid = liquid;
|
this.liquid = liquid;
|
||||||
|
|
||||||
lifetime = 74f;
|
lifetime = 74f;
|
||||||
|
|||||||
@@ -305,9 +305,10 @@ public class Puddle extends SolidEntity implements SaveTrait, Poolable, DrawTrai
|
|||||||
y = data.readFloat();
|
y = data.readFloat();
|
||||||
liquid = content.liquid(data.readByte());
|
liquid = content.liquid(data.readByte());
|
||||||
targetAmount = data.readShort() / 4f;
|
targetAmount = data.readShort() / 4f;
|
||||||
tile = world.tile(data.readInt());
|
int pos = data.readInt();
|
||||||
|
tile = world.tile(pos);
|
||||||
|
|
||||||
map.put(tile.pos(), this);
|
map.put(pos, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -38,16 +38,21 @@ import java.io.IOException;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
|
import static io.anuke.mindustry.entities.traits.BuilderTrait.BuildDataStatic.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface for units that build, break or mine things.
|
* Interface for units that build, break or mine things.
|
||||||
*/
|
*/
|
||||||
public interface BuilderTrait extends Entity, TeamTrait{
|
public interface BuilderTrait extends Entity, TeamTrait{
|
||||||
//these are not instance variables!
|
//these are not instance variables!
|
||||||
Vector2[] tmptr = new Vector2[]{new Vector2(), new Vector2(), new Vector2(), new Vector2()};
|
|
||||||
float placeDistance = 220f;
|
float placeDistance = 220f;
|
||||||
float mineDistance = 70f;
|
float mineDistance = 70f;
|
||||||
Array<BuildRequest> removal = new Array<>();
|
|
||||||
|
//due to iOS wierdness
|
||||||
|
class BuildDataStatic{
|
||||||
|
static Array<BuildRequest> removal = new Array<>();
|
||||||
|
static Vector2[] tmptr = new Vector2[]{new Vector2(), new Vector2(), new Vector2(), new Vector2()};
|
||||||
|
}
|
||||||
|
|
||||||
/**Returns the queue for storing build requests.*/
|
/**Returns the queue for storing build requests.*/
|
||||||
Queue<BuildRequest> getPlaceQueue();
|
Queue<BuildRequest> getPlaceQueue();
|
||||||
@@ -229,9 +234,9 @@ public interface BuilderTrait extends Entity, TeamTrait{
|
|||||||
if(!Net.client()){
|
if(!Net.client()){
|
||||||
//deconstructing is 2x as fast
|
//deconstructing is 2x as fast
|
||||||
if(current.breaking){
|
if(current.breaking){
|
||||||
entity.deconstruct(unit, core, 2f / entity.buildCost * Time.delta() * getBuildPower(tile));
|
entity.deconstruct(unit, core, 2f / entity.buildCost * Time.delta() * getBuildPower(tile) * state.rules.buildSpeedMultiplier);
|
||||||
}else{
|
}else{
|
||||||
entity.construct(unit, core, 1f / entity.buildCost * Time.delta() * getBuildPower(tile));
|
entity.construct(unit, core, 1f / entity.buildCost * Time.delta() * getBuildPower(tile) * state.rules.buildSpeedMultiplier);
|
||||||
}
|
}
|
||||||
|
|
||||||
current.progress = entity.progress();
|
current.progress = entity.progress();
|
||||||
|
|||||||
@@ -129,7 +129,10 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void targetClosest(){
|
public void targetClosest(){
|
||||||
target = Units.getClosestTarget(team, x, y, Math.max(getWeapon().bullet.range(), type.range), u -> type.targetAir || !u.isFlying());
|
TargetTrait newTarget = Units.getClosestTarget(team, x, y, Math.max(getWeapon().bullet.range(), type.range), u -> type.targetAir || !u.isFlying());
|
||||||
|
if(newTarget != null){
|
||||||
|
target = newTarget;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public TileEntity getClosestEnemyCore(){
|
public TileEntity getClosestEnemyCore(){
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public abstract class FlyingUnit extends BaseUnit{
|
|||||||
attack(type.attackLength);
|
attack(type.attackLength);
|
||||||
|
|
||||||
if((Angles.near(angleTo(target), rotation, type.shootCone) || getWeapon().ignoreRotation) //bombers and such don't care about rotation
|
if((Angles.near(angleTo(target), rotation, type.shootCone) || getWeapon().ignoreRotation) //bombers and such don't care about rotation
|
||||||
&& dst(target) < Math.max(getWeapon().bullet.range(), type.range)){
|
&& dst(target) < getWeapon().bullet.range()){
|
||||||
BulletType ammo = getWeapon().bullet;
|
BulletType ammo = getWeapon().bullet;
|
||||||
|
|
||||||
if(type.rotateWeapon){
|
if(type.rotateWeapon){
|
||||||
@@ -75,8 +75,9 @@ public abstract class FlyingUnit extends BaseUnit{
|
|||||||
targetClosest();
|
targetClosest();
|
||||||
targetClosestEnemyFlag(BlockFlag.target);
|
targetClosestEnemyFlag(BlockFlag.target);
|
||||||
|
|
||||||
if(target != null){
|
if(target != null && !Units.invalidateTarget(target, team, x, y)){
|
||||||
setState(attack);
|
setState(attack);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
target = getClosestCore();
|
target = getClosestCore();
|
||||||
|
|||||||
@@ -54,10 +54,11 @@ public abstract class GroundUnit extends BaseUnit{
|
|||||||
patrol = new UnitState(){
|
patrol = new UnitState(){
|
||||||
public void update(){
|
public void update(){
|
||||||
TileEntity target = getClosestCore();
|
TileEntity target = getClosestCore();
|
||||||
|
|
||||||
if(target != null){
|
if(target != null){
|
||||||
if(dst(target) > 400f){
|
if(dst(target) > 400f){
|
||||||
moveAwayFromCore();
|
moveAwayFromCore();
|
||||||
}else{
|
}else if(!(!Units.invalidateTarget(GroundUnit.this.target, GroundUnit.this) && dst(GroundUnit.this.target) < getWeapon().bullet.range())){
|
||||||
patrol();
|
patrol();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -214,7 +215,7 @@ public abstract class GroundUnit extends BaseUnit{
|
|||||||
|
|
||||||
velocity.add(vec.trns(angleTo(targetTile), type.speed*Time.delta()));
|
velocity.add(vec.trns(angleTo(targetTile), type.speed*Time.delta()));
|
||||||
if(Units.invalidateTarget(target, this)){
|
if(Units.invalidateTarget(target, this)){
|
||||||
rotation = Mathf.slerpDelta(rotation, angle, type.rotatespeed);
|
rotation = Mathf.slerpDelta(rotation, baseRotation, type.rotatespeed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,6 +240,6 @@ public abstract class GroundUnit extends BaseUnit{
|
|||||||
float angle = angleTo(targetTile);
|
float angle = angleTo(targetTile);
|
||||||
|
|
||||||
velocity.add(vec.trns(angleTo(targetTile), type.speed*Time.delta()));
|
velocity.add(vec.trns(angleTo(targetTile), type.speed*Time.delta()));
|
||||||
rotation = Mathf.slerpDelta(rotation, angle, type.rotatespeed);
|
rotation = Mathf.slerpDelta(rotation, baseRotation, type.rotatespeed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,7 +66,6 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
|
|||||||
public SpawnerTrait spawner, lastSpawner;
|
public SpawnerTrait spawner, lastSpawner;
|
||||||
|
|
||||||
public NetConnection con;
|
public NetConnection con;
|
||||||
public int playerIndex = 0;
|
|
||||||
public boolean isLocal = false;
|
public boolean isLocal = false;
|
||||||
public Interval timer = new Interval(4);
|
public Interval timer = new Interval(4);
|
||||||
public TargetTrait target;
|
public TargetTrait target;
|
||||||
@@ -279,7 +278,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
|
|||||||
if(dead) return;
|
if(dead) return;
|
||||||
|
|
||||||
if(!movement.isZero() && moved && !state.isPaused()){
|
if(!movement.isZero() && moved && !state.isPaused()){
|
||||||
walktime += movement.len() / 1f * getFloorOn().speedMultiplier;
|
walktime += movement.len() * getFloorOn().speedMultiplier * 2f;
|
||||||
baseRotation = Mathf.slerpDelta(baseRotation, movement.angle(), 0.13f);
|
baseRotation = Mathf.slerpDelta(baseRotation, movement.angle(), 0.13f);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -585,7 +584,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
|
|||||||
movement.x += xa * speed;
|
movement.x += xa * speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2 vec = Core.input.mouseWorld(control.input(playerIndex).getMouseX(), control.input(playerIndex).getMouseY());
|
Vector2 vec = Core.input.mouseWorld(control.input().getMouseX(), control.input().getMouseY());
|
||||||
pointerX = vec.x;
|
pointerX = vec.x;
|
||||||
pointerY = vec.y;
|
pointerY = vec.y;
|
||||||
updateShooting();
|
updateShooting();
|
||||||
@@ -608,7 +607,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
|
|||||||
rotation = Mathf.slerpDelta(rotation, mech.flying ? velocity.angle() : movement.angle(), 0.13f * baseLerp);
|
rotation = Mathf.slerpDelta(rotation, mech.flying ? velocity.angle() : movement.angle(), 0.13f * baseLerp);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
float angle = control.input(playerIndex).mouseAngle(x, y);
|
float angle = control.input().mouseAngle(x, y);
|
||||||
this.rotation = Mathf.slerpDelta(this.rotation, angle, 0.1f * baseLerp);
|
this.rotation = Mathf.slerpDelta(this.rotation, angle, 0.1f * baseLerp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -727,8 +726,8 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
|
|||||||
}
|
}
|
||||||
|
|
||||||
}else if(isShooting()){
|
}else if(isShooting()){
|
||||||
Vector2 vec = Core.input.mouseWorld(control.input(playerIndex).getMouseX(),
|
Vector2 vec = Core.input.mouseWorld(control.input().getMouseX(),
|
||||||
control.input(playerIndex).getMouseY());
|
control.input().getMouseY());
|
||||||
pointerX = vec.x;
|
pointerX = vec.x;
|
||||||
pointerY = vec.y;
|
pointerY = vec.y;
|
||||||
|
|
||||||
@@ -808,7 +807,6 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
|
|||||||
|
|
||||||
if(isLocal){
|
if(isLocal){
|
||||||
stream.writeByte(mech.id);
|
stream.writeByte(mech.id);
|
||||||
stream.writeByte(playerIndex);
|
|
||||||
stream.writeInt(lastSpawner == null ? noSpawner : lastSpawner.getTile().pos());
|
stream.writeInt(lastSpawner == null ? noSpawner : lastSpawner.getTile().pos());
|
||||||
super.writeSave(stream, false);
|
super.writeSave(stream, false);
|
||||||
}
|
}
|
||||||
@@ -820,14 +818,13 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
|
|||||||
|
|
||||||
if(local && !headless){
|
if(local && !headless){
|
||||||
byte mechid = stream.readByte();
|
byte mechid = stream.readByte();
|
||||||
int index = stream.readByte();
|
|
||||||
int spawner = stream.readInt();
|
int spawner = stream.readInt();
|
||||||
if(world.tile(spawner) != null && world.tile(spawner).entity != null && world.tile(spawner).entity instanceof SpawnerTrait){
|
if(world.tile(spawner) != null && world.tile(spawner).entity != null && world.tile(spawner).entity instanceof SpawnerTrait){
|
||||||
lastSpawner = (SpawnerTrait)(world.tile(spawner).entity);
|
lastSpawner = (SpawnerTrait)(world.tile(spawner).entity);
|
||||||
}
|
}
|
||||||
players[index].readSaveSuper(stream);
|
player.readSaveSuper(stream);
|
||||||
players[index].mech = content.getByID(ContentType.mech, mechid);
|
player.mech = content.getByID(ContentType.mech, mechid);
|
||||||
players[index].dead = false;
|
player.dead = false;
|
||||||
}else if(local){
|
}else if(local){
|
||||||
byte mechid = stream.readByte();
|
byte mechid = stream.readByte();
|
||||||
stream.readByte();
|
stream.readByte();
|
||||||
|
|||||||
@@ -5,17 +5,17 @@ import io.anuke.annotations.Annotations.Remote;
|
|||||||
import io.anuke.arc.Events;
|
import io.anuke.arc.Events;
|
||||||
import io.anuke.arc.collection.Array;
|
import io.anuke.arc.collection.Array;
|
||||||
import io.anuke.arc.collection.ObjectSet;
|
import io.anuke.arc.collection.ObjectSet;
|
||||||
import io.anuke.mindustry.entities.Effects;
|
|
||||||
import io.anuke.mindustry.entities.EntityGroup;
|
|
||||||
import io.anuke.mindustry.entities.impl.BaseEntity;
|
|
||||||
import io.anuke.mindustry.entities.traits.HealthTrait;
|
|
||||||
import io.anuke.arc.math.Mathf;
|
import io.anuke.arc.math.Mathf;
|
||||||
import io.anuke.arc.math.geom.Point2;
|
import io.anuke.arc.math.geom.Point2;
|
||||||
import io.anuke.arc.math.geom.Vector2;
|
import io.anuke.arc.math.geom.Vector2;
|
||||||
import io.anuke.arc.util.Interval;
|
import io.anuke.arc.util.Interval;
|
||||||
import io.anuke.arc.util.Time;
|
import io.anuke.arc.util.Time;
|
||||||
import io.anuke.mindustry.content.Fx;
|
import io.anuke.mindustry.content.Fx;
|
||||||
|
import io.anuke.mindustry.entities.Effects;
|
||||||
|
import io.anuke.mindustry.entities.EntityGroup;
|
||||||
import io.anuke.mindustry.entities.bullet.Bullet;
|
import io.anuke.mindustry.entities.bullet.Bullet;
|
||||||
|
import io.anuke.mindustry.entities.impl.BaseEntity;
|
||||||
|
import io.anuke.mindustry.entities.traits.HealthTrait;
|
||||||
import io.anuke.mindustry.entities.traits.TargetTrait;
|
import io.anuke.mindustry.entities.traits.TargetTrait;
|
||||||
import io.anuke.mindustry.game.EventType.BlockDestroyEvent;
|
import io.anuke.mindustry.game.EventType.BlockDestroyEvent;
|
||||||
import io.anuke.mindustry.game.Team;
|
import io.anuke.mindustry.game.Team;
|
||||||
@@ -24,7 +24,6 @@ import io.anuke.mindustry.world.Block;
|
|||||||
import io.anuke.mindustry.world.Edges;
|
import io.anuke.mindustry.world.Edges;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.mindustry.world.blocks.defense.Wall;
|
import io.anuke.mindustry.world.blocks.defense.Wall;
|
||||||
import io.anuke.mindustry.world.consumers.Consume;
|
|
||||||
import io.anuke.mindustry.world.modules.ConsumeModule;
|
import io.anuke.mindustry.world.modules.ConsumeModule;
|
||||||
import io.anuke.mindustry.world.modules.ItemModule;
|
import io.anuke.mindustry.world.modules.ItemModule;
|
||||||
import io.anuke.mindustry.world.modules.LiquidModule;
|
import io.anuke.mindustry.world.modules.LiquidModule;
|
||||||
@@ -44,6 +43,7 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
public static int sleepingEntities = 0;
|
public static int sleepingEntities = 0;
|
||||||
|
|
||||||
public Tile tile;
|
public Tile tile;
|
||||||
|
public Block block;
|
||||||
public Interval timer;
|
public Interval timer;
|
||||||
public float health;
|
public float health;
|
||||||
public float timeScale = 1f, timeScaleDuration;
|
public float timeScale = 1f, timeScaleDuration;
|
||||||
@@ -63,6 +63,10 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
public static void onTileDamage(Tile tile, float health){
|
public static void onTileDamage(Tile tile, float health){
|
||||||
if(tile.entity != null){
|
if(tile.entity != null){
|
||||||
tile.entity.health = health;
|
tile.entity.health = health;
|
||||||
|
|
||||||
|
if(tile.entity.damaged()){
|
||||||
|
world.indexer.notifyTileDamaged(tile.entity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,10 +81,10 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
this.tile = tile;
|
this.tile = tile;
|
||||||
x = tile.drawx();
|
x = tile.drawx();
|
||||||
y = tile.drawy();
|
y = tile.drawy();
|
||||||
|
block = tile.block();
|
||||||
|
|
||||||
health = tile.block().health;
|
health = block.health;
|
||||||
|
timer = new Interval(block.timers);
|
||||||
timer = new Interval(tile.block().timers);
|
|
||||||
|
|
||||||
if(shouldAdd){
|
if(shouldAdd){
|
||||||
add();
|
add();
|
||||||
@@ -135,7 +139,7 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void collision(Bullet other){
|
public void collision(Bullet other){
|
||||||
tile.block().handleBulletHit(this, other);
|
block.handleBulletHit(this, other);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void kill(){
|
public void kill(){
|
||||||
@@ -147,11 +151,13 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
|
|
||||||
float preHealth = health;
|
float preHealth = health;
|
||||||
|
|
||||||
Call.onTileDamage(tile, health - tile.block().handleDamage(tile, damage));
|
Call.onTileDamage(tile, health - block.handleDamage(tile, damage));
|
||||||
|
|
||||||
if(health <= 0){
|
if(health <= 0){
|
||||||
Call.onTileDestroyed(tile);
|
Call.onTileDestroyed(tile);
|
||||||
}else if(preHealth >= maxHealth() - 0.00001f && health < maxHealth() && world != null){ //when just damaged
|
}
|
||||||
|
|
||||||
|
if(preHealth >= maxHealth() - 0.00001f && health < maxHealth() && world != null){ //when just damaged
|
||||||
world.indexer.notifyTileDamaged(this);
|
world.indexer.notifyTileDamaged(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -164,14 +170,10 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
return tile;
|
return tile;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean consumed(Class<? extends Consume> type){
|
|
||||||
return tile.block().consumes.get(type).valid(tile.block(), this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeFromProximity(){
|
public void removeFromProximity(){
|
||||||
tile.block().onProximityRemoved(tile);
|
block.onProximityRemoved(tile);
|
||||||
|
|
||||||
Point2[] nearby = Edges.getEdges(tile.block().size);
|
Point2[] nearby = Edges.getEdges(block.size);
|
||||||
for(Point2 point : nearby){
|
for(Point2 point : nearby){
|
||||||
Tile other = world.tile(tile.x + point.x, tile.y + point.y);
|
Tile other = world.tile(tile.x + point.x, tile.y + point.y);
|
||||||
//remove this tile from all nearby tile's proximities
|
//remove this tile from all nearby tile's proximities
|
||||||
@@ -189,7 +191,7 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
tmpTiles.clear();
|
tmpTiles.clear();
|
||||||
proximity.clear();
|
proximity.clear();
|
||||||
|
|
||||||
Point2[] nearby = Edges.getEdges(tile.block().size);
|
Point2[] nearby = Edges.getEdges(block.size);
|
||||||
for(Point2 point : nearby){
|
for(Point2 point : nearby){
|
||||||
Tile other = world.tile(tile.x + point.x, tile.y + point.y);
|
Tile other = world.tile(tile.x + point.x, tile.y + point.y);
|
||||||
|
|
||||||
@@ -212,8 +214,8 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
proximity.add(tile);
|
proximity.add(tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
tile.block().onProximityAdded(tile);
|
block.onProximityAdded(tile);
|
||||||
tile.block().onProximityUpdate(tile);
|
block.onProximityUpdate(tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Array<Tile> proximity(){
|
public Array<Tile> proximity(){
|
||||||
@@ -232,7 +234,7 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float maxHealth(){
|
public float maxHealth(){
|
||||||
return tile.block().health;
|
return block.health;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -244,7 +246,6 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
public void onDeath(){
|
public void onDeath(){
|
||||||
if(!dead){
|
if(!dead){
|
||||||
dead = true;
|
dead = true;
|
||||||
Block block = tile.block();
|
|
||||||
|
|
||||||
Events.fire(new BlockDestroyEvent(tile));
|
Events.fire(new BlockDestroyEvent(tile));
|
||||||
block.onDestroyed(tile);
|
block.onDestroyed(tile);
|
||||||
@@ -267,22 +268,22 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
@Override
|
@Override
|
||||||
public void update(){
|
public void update(){
|
||||||
//TODO better smoke effect, this one is awful
|
//TODO better smoke effect, this one is awful
|
||||||
if(health != 0 && health < tile.block().health && !(tile.block() instanceof Wall) &&
|
if(health != 0 && health < block.health && !(block instanceof Wall) &&
|
||||||
Mathf.chance(0.009f * Time.delta() * (1f - health / tile.block().health))){
|
Mathf.chance(0.009f * Time.delta() * (1f - health / block.health))){
|
||||||
Effects.effect(Fx.smoke, x + Mathf.range(4), y + Mathf.range(4));
|
Effects.effect(Fx.smoke, x + Mathf.range(4), y + Mathf.range(4));
|
||||||
}
|
}
|
||||||
|
|
||||||
timeScaleDuration -= Time.delta();
|
timeScaleDuration -= Time.delta();
|
||||||
if(timeScaleDuration <= 0f || !tile.block().canOverdrive){
|
if(timeScaleDuration <= 0f || !block.canOverdrive){
|
||||||
timeScale = 1f;
|
timeScale = 1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(health <= 0){
|
if(health <= 0){
|
||||||
onDeath();
|
onDeath();
|
||||||
}
|
}
|
||||||
Block previous = tile.block();
|
Block previous = block;
|
||||||
tile.block().update(tile);
|
block.update(tile);
|
||||||
if(tile.block() == previous && cons != null){
|
if(block == previous && cons != null){
|
||||||
cons.update();
|
cons.update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import io.anuke.arc.graphics.g2d.Draw;
|
|||||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||||
import io.anuke.arc.math.Mathf;
|
import io.anuke.arc.math.Mathf;
|
||||||
import io.anuke.arc.math.geom.Geometry;
|
import io.anuke.arc.math.geom.Geometry;
|
||||||
import io.anuke.arc.math.geom.Rectangle;
|
|
||||||
import io.anuke.arc.math.geom.Vector2;
|
import io.anuke.arc.math.geom.Vector2;
|
||||||
import io.anuke.arc.util.Time;
|
import io.anuke.arc.util.Time;
|
||||||
import io.anuke.arc.util.Tmp;
|
import io.anuke.arc.util.Tmp;
|
||||||
@@ -15,7 +14,6 @@ import io.anuke.mindustry.content.Blocks;
|
|||||||
import io.anuke.mindustry.content.Fx;
|
import io.anuke.mindustry.content.Fx;
|
||||||
import io.anuke.mindustry.entities.Damage;
|
import io.anuke.mindustry.entities.Damage;
|
||||||
import io.anuke.mindustry.entities.Effects;
|
import io.anuke.mindustry.entities.Effects;
|
||||||
import io.anuke.mindustry.entities.Units;
|
|
||||||
import io.anuke.mindustry.entities.effect.ScorchDecal;
|
import io.anuke.mindustry.entities.effect.ScorchDecal;
|
||||||
import io.anuke.mindustry.entities.impl.DestructibleEntity;
|
import io.anuke.mindustry.entities.impl.DestructibleEntity;
|
||||||
import io.anuke.mindustry.entities.traits.*;
|
import io.anuke.mindustry.entities.traits.*;
|
||||||
@@ -49,9 +47,11 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
|
|||||||
public static final float maxAbsVelocity = 127f / velocityPercision;
|
public static final float maxAbsVelocity = 127f / velocityPercision;
|
||||||
public static final int noSpawner = Pos.get(-1, 1);
|
public static final int noSpawner = Pos.get(-1, 1);
|
||||||
|
|
||||||
private static final Rectangle queryRect = new Rectangle();
|
|
||||||
private static final Vector2 moveVector = new Vector2();
|
private static final Vector2 moveVector = new Vector2();
|
||||||
|
|
||||||
|
private int lastWeightTile = Pos.invalid, lastWeightDelta;
|
||||||
|
private boolean wasFlying = false;
|
||||||
|
|
||||||
public float rotation;
|
public float rotation;
|
||||||
|
|
||||||
protected final Interpolator interpolator = new Interpolator();
|
protected final Interpolator interpolator = new Interpolator();
|
||||||
@@ -140,6 +140,15 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removed(){
|
||||||
|
Tile tile = world.tile(lastWeightTile);
|
||||||
|
|
||||||
|
if(tile != null){
|
||||||
|
tile.weight -= Math.max(lastWeightDelta, tile.weight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isValid(){
|
public boolean isValid(){
|
||||||
return !isDead() && isAdded();
|
return !isDead() && isAdded();
|
||||||
@@ -190,8 +199,8 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void clampPosition(){
|
protected void clampPosition(){
|
||||||
x = Mathf.clamp(x, tilesize, world.width() * tilesize - tilesize);
|
x = Mathf.clamp(x, 0, world.width() * tilesize - tilesize);
|
||||||
y = Mathf.clamp(y, tilesize, world.height() * tilesize - tilesize);
|
y = Mathf.clamp(y, 0, world.height() * tilesize - tilesize);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void kill(){
|
public void kill(){
|
||||||
@@ -219,17 +228,56 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
|
|||||||
return status.hasEffect(effect);
|
return status.hasEffect(effect);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO optimize
|
|
||||||
public void avoidOthers(float scaling){
|
public void avoidOthers(float scaling){
|
||||||
hitbox(queryRect);
|
boolean flying = isFlying();
|
||||||
queryRect.setSize(queryRect.getWidth() * scaling);
|
|
||||||
|
|
||||||
Units.getNearby(queryRect, t -> {
|
if(lastWeightTile != Pos.invalid){
|
||||||
if(t == this || t.isFlying() != isFlying()) return;
|
Tile tile = world.tile(lastWeightTile);
|
||||||
float dst = dst(t);
|
|
||||||
moveVector.set(x, y).sub(t.getX(), t.getY()).setLength(1f * (1f - (dst / queryRect.getWidth())));
|
if(tile != null){
|
||||||
applyImpulse(moveVector.x, moveVector.y);
|
int dec = Math.min(lastWeightDelta, wasFlying ? tile.airWeight : tile.weight);
|
||||||
});
|
if(!wasFlying){
|
||||||
|
tile.weight -= dec;
|
||||||
|
}else{
|
||||||
|
tile.airWeight -= dec;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final int rad = 2;
|
||||||
|
|
||||||
|
moveVector.setZero();
|
||||||
|
for(int cx = -rad; cx <= rad; cx++){
|
||||||
|
for(int cy = -rad; cy <= rad; cy++){
|
||||||
|
Tile tile = world.tileWorld(x + cx*tilesize, y + cy*tilesize);
|
||||||
|
if(tile == null) continue;
|
||||||
|
int weight = flying ? tile.airWeight : tile.weight;
|
||||||
|
float scl = (rad - Mathf.dst(tile.worldx(), tile.worldy(), x, y)/(8f * 1.2f * Mathf.sqrt2)) * 0.1f;
|
||||||
|
|
||||||
|
moveVector.add(Mathf.sign(x - tile.worldx()) * scaling * weight * scl, Mathf.sign(y - tile.worldy()) * scaling * weight * scl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
moveVector.limit(flying ? 0.1f : 0.2f);
|
||||||
|
|
||||||
|
velocity.add(moveVector.x / mass() * Time.delta(), moveVector.y / mass() * Time.delta());
|
||||||
|
|
||||||
|
Tile tile = world.tileWorld(x, y);
|
||||||
|
|
||||||
|
if(tile != null){
|
||||||
|
int tw = flying ? tile.airWeight : tile.weight;
|
||||||
|
lastWeightDelta = Math.min((int)(mass()), 127 - tw);
|
||||||
|
lastWeightTile = tile.pos();
|
||||||
|
if(!flying){
|
||||||
|
tile.weight += lastWeightDelta;
|
||||||
|
}else{
|
||||||
|
tile.airWeight += lastWeightDelta;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
lastWeightTile = Pos.invalid;
|
||||||
|
}
|
||||||
|
wasFlying = flying;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TileEntity getClosestCore(){
|
public TileEntity getClosestCore(){
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ public class Drone extends FlyingUnit implements BuilderTrait{
|
|||||||
|
|
||||||
if(core == null) return;
|
if(core == null) return;
|
||||||
|
|
||||||
if((entity.progress() < 1f || entity.progress() > 0f) && entity.tile.block() instanceof BuildBlock){ //building is valid
|
if((entity.progress() < 1f || entity.progress() > 0f) && entity.block instanceof BuildBlock){ //building is valid
|
||||||
if(!isBuilding() && dst(target) < placeDistance * 0.9f){ //within distance, begin placing
|
if(!isBuilding() && dst(target) < placeDistance * 0.9f){ //within distance, begin placing
|
||||||
if(isBreaking){
|
if(isBreaking){
|
||||||
getPlaceQueue().addLast(new BuildRequest(entity.tile.x, entity.tile.y));
|
getPlaceQueue().addLast(new BuildRequest(entity.tile.x, entity.tile.y));
|
||||||
@@ -127,7 +127,7 @@ public class Drone extends FlyingUnit implements BuilderTrait{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//core full
|
//core full
|
||||||
if(targetItem != null && entity.tile.block().acceptStack(targetItem, 1, entity.tile, Drone.this) == 0){
|
if(targetItem != null && entity.block.acceptStack(targetItem, 1, entity.tile, Drone.this) == 0){
|
||||||
setState(repair);
|
setState(repair);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,12 @@ import io.anuke.mindustry.world.Tile;
|
|||||||
public class EventType{
|
public class EventType{
|
||||||
|
|
||||||
/**Called when a zone's requirements are met.*/
|
/**Called when a zone's requirements are met.*/
|
||||||
public static class ZoneCompleteEvent implements Event{
|
public static class ZoneRequireCompleteEvent implements Event{
|
||||||
public final Zone zone;
|
public final Zone zone, required;
|
||||||
|
|
||||||
public ZoneCompleteEvent(Zone zone){
|
public ZoneRequireCompleteEvent(Zone zone, Zone required){
|
||||||
this.zone = zone;
|
this.zone = zone;
|
||||||
|
this.required = required;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ public enum RulePreset{
|
|||||||
pvp = true;
|
pvp = true;
|
||||||
enemyCoreBuildRadius = 600f;
|
enemyCoreBuildRadius = 600f;
|
||||||
respawnTime = 60 * 10;
|
respawnTime = 60 * 10;
|
||||||
|
buildCostMultiplier = 0.5f;
|
||||||
|
buildSpeedMultiplier = 2f;
|
||||||
}});
|
}});
|
||||||
|
|
||||||
private final Supplier<Rules> rules;
|
private final Supplier<Rules> rules;
|
||||||
|
|||||||
@@ -19,6 +19,10 @@ public class Rules{
|
|||||||
public boolean pvp;
|
public boolean pvp;
|
||||||
/**Whether enemy units drop random items on death.*/
|
/**Whether enemy units drop random items on death.*/
|
||||||
public boolean unitDrops;
|
public boolean unitDrops;
|
||||||
|
/**Multiplier for buildings for the player.*/
|
||||||
|
public float buildCostMultiplier = 1f;
|
||||||
|
/**Multiplier for building speed.*/
|
||||||
|
public float buildSpeedMultiplier = 1f;
|
||||||
/**No-build zone around enemy core radius.*/
|
/**No-build zone around enemy core radius.*/
|
||||||
public float enemyCoreBuildRadius = 400f;
|
public float enemyCoreBuildRadius = 400f;
|
||||||
/**Player respawn time in ticks.*/
|
/**Player respawn time in ticks.*/
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class SpawnGroup implements Serializable{
|
|||||||
}
|
}
|
||||||
float scaling = this.unitScaling;
|
float scaling = this.unitScaling;
|
||||||
|
|
||||||
return Math.min(unitAmount - 1 + Math.max((int) (((wave - begin) / spacing) / scaling), 1), max);
|
return Math.min(unitAmount - 1 + Math.max((int) (((wave - begin + 1) / spacing) / scaling), 1), max);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -4,8 +4,6 @@ import io.anuke.arc.Core;
|
|||||||
import io.anuke.arc.Events;
|
import io.anuke.arc.Events;
|
||||||
import io.anuke.arc.collection.Array;
|
import io.anuke.arc.collection.Array;
|
||||||
import io.anuke.arc.collection.Sort;
|
import io.anuke.arc.collection.Sort;
|
||||||
import io.anuke.mindustry.entities.EntityDraw;
|
|
||||||
import io.anuke.mindustry.entities.EntityGroup;
|
|
||||||
import io.anuke.arc.graphics.Color;
|
import io.anuke.arc.graphics.Color;
|
||||||
import io.anuke.arc.graphics.Texture.TextureFilter;
|
import io.anuke.arc.graphics.Texture.TextureFilter;
|
||||||
import io.anuke.arc.graphics.g2d.Draw;
|
import io.anuke.arc.graphics.g2d.Draw;
|
||||||
@@ -13,7 +11,6 @@ import io.anuke.arc.graphics.g2d.Fill;
|
|||||||
import io.anuke.arc.graphics.glutils.FrameBuffer;
|
import io.anuke.arc.graphics.glutils.FrameBuffer;
|
||||||
import io.anuke.arc.util.Tmp;
|
import io.anuke.arc.util.Tmp;
|
||||||
import io.anuke.mindustry.content.Blocks;
|
import io.anuke.mindustry.content.Blocks;
|
||||||
import io.anuke.mindustry.entities.type.Unit;
|
|
||||||
import io.anuke.mindustry.game.EventType.TileChangeEvent;
|
import io.anuke.mindustry.game.EventType.TileChangeEvent;
|
||||||
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
|
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
|
||||||
import io.anuke.mindustry.game.Team;
|
import io.anuke.mindustry.game.Team;
|
||||||
@@ -26,7 +23,7 @@ import static io.anuke.mindustry.Vars.*;
|
|||||||
public class BlockRenderer{
|
public class BlockRenderer{
|
||||||
private final static int initialRequests = 32 * 32;
|
private final static int initialRequests = 32 * 32;
|
||||||
private final static int expandr = 9;
|
private final static int expandr = 9;
|
||||||
private final static Color shadowColor = new Color(0, 0, 0, 0.19f);
|
private final static Color shadowColor = new Color(0, 0, 0, 0.71f);
|
||||||
|
|
||||||
public final FloorRenderer floor = new FloorRenderer();
|
public final FloorRenderer floor = new FloorRenderer();
|
||||||
|
|
||||||
@@ -37,6 +34,7 @@ public class BlockRenderer{
|
|||||||
private FrameBuffer shadows = new FrameBuffer(2, 2);
|
private FrameBuffer shadows = new FrameBuffer(2, 2);
|
||||||
private FrameBuffer fog = new FrameBuffer(2, 2);
|
private FrameBuffer fog = new FrameBuffer(2, 2);
|
||||||
private Array<Tile> outArray = new Array<>();
|
private Array<Tile> outArray = new Array<>();
|
||||||
|
private Array<Tile> shadowEvents = new Array<>();
|
||||||
|
|
||||||
public BlockRenderer(){
|
public BlockRenderer(){
|
||||||
|
|
||||||
@@ -45,16 +43,36 @@ public class BlockRenderer{
|
|||||||
}
|
}
|
||||||
|
|
||||||
Events.on(WorldLoadEvent.class, event -> {
|
Events.on(WorldLoadEvent.class, event -> {
|
||||||
|
shadowEvents.clear();
|
||||||
lastCamY = lastCamX = -99; //invalidate camera position so blocks get updated
|
lastCamY = lastCamX = -99; //invalidate camera position so blocks get updated
|
||||||
|
|
||||||
|
shadows.getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
|
||||||
|
shadows.resize(world.width(), world.height());
|
||||||
|
shadows.begin();
|
||||||
|
Core.graphics.clear(Color.WHITE);
|
||||||
|
Draw.proj().setOrtho(0, 0, shadows.getWidth(), shadows.getHeight());
|
||||||
|
|
||||||
|
Draw.color(shadowColor);
|
||||||
|
|
||||||
|
for(int x = 0; x < world.width(); x++){
|
||||||
|
for(int y = 0; y < world.height(); y++){
|
||||||
|
Tile tile = world.rawTile(x, y);
|
||||||
|
if(tile.block().hasShadow){
|
||||||
|
Fill.rect(tile.x + 0.5f, tile.y + 0.5f, 1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Draw.flush();
|
||||||
|
Draw.color();
|
||||||
|
shadows.end();
|
||||||
|
|
||||||
fog.getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
|
fog.getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
|
||||||
fog.resize(world.width(), world.height());
|
fog.resize(world.width(), world.height());
|
||||||
fog.begin();
|
fog.begin();
|
||||||
Core.graphics.clear(Color.WHITE);
|
Core.graphics.clear(Color.WHITE);
|
||||||
Draw.proj().setOrtho(0, 0, fog.getWidth(), fog.getHeight());
|
Draw.proj().setOrtho(0, 0, fog.getWidth(), fog.getHeight());
|
||||||
|
|
||||||
//TODO highly inefficient, width*height rectangles isn't great
|
|
||||||
//TODO handle shadow rotation generation with GPU blur/erode algorithm
|
|
||||||
for(int x = 0; x < world.width(); x++){
|
for(int x = 0; x < world.width(); x++){
|
||||||
for(int y = 0; y < world.height(); y++){
|
for(int y = 0; y < world.height(); y++){
|
||||||
Tile tile = world.rawTile(x, y);
|
Tile tile = world.rawTile(x, y);
|
||||||
@@ -71,6 +89,8 @@ public class BlockRenderer{
|
|||||||
});
|
});
|
||||||
|
|
||||||
Events.on(TileChangeEvent.class, event -> {
|
Events.on(TileChangeEvent.class, event -> {
|
||||||
|
shadowEvents.add(event.tile);
|
||||||
|
|
||||||
int avgx = (int)(camera.position.x / tilesize);
|
int avgx = (int)(camera.position.x / tilesize);
|
||||||
int avgy = (int)(camera.position. y / tilesize);
|
int avgy = (int)(camera.position. y / tilesize);
|
||||||
int rangex = (int) (camera.width / tilesize / 2) + 2;
|
int rangex = (int) (camera.width / tilesize / 2) + 2;
|
||||||
@@ -99,43 +119,40 @@ public class BlockRenderer{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void drawShadows(){
|
public void drawShadows(){
|
||||||
if(!Core.settings.getBool("shadows")) return;
|
if(!shadowEvents.isEmpty()){
|
||||||
|
Draw.flush();
|
||||||
|
shadows.begin();
|
||||||
|
Draw.proj().setOrtho(0, 0, shadows.getWidth(), shadows.getHeight());
|
||||||
|
|
||||||
Draw.color();
|
for(Tile tile : shadowEvents){
|
||||||
|
//clear it first
|
||||||
|
Draw.color(Color.WHITE);
|
||||||
|
Fill.rect(tile.x + 0.5f, tile.y + 0.5f, 1, 1);
|
||||||
|
//then draw the shadow
|
||||||
|
Draw.color(!tile.block().hasShadow ? Color.WHITE : shadowColor);
|
||||||
|
Fill.rect(tile.x + 0.5f, tile.y + 0.5f, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
if(!Core.graphics.isHidden() && (shadows.getWidth() != Core.graphics.getWidth() || shadows.getHeight() != Core.graphics.getHeight())){
|
Draw.flush();
|
||||||
shadows.resize(Core.graphics.getWidth(), Core.graphics.getHeight());
|
Draw.color();
|
||||||
|
shadows.end();
|
||||||
|
shadowEvents.clear();
|
||||||
|
|
||||||
|
Draw.proj(camera.projection());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float ww = world.width() * tilesize, wh = world.height() * tilesize;
|
||||||
|
float x = camera.position.x + tilesize/2f, y = camera.position.y + tilesize/2f;
|
||||||
|
float u = (x - camera.width/2f) / ww,
|
||||||
|
v = (y - camera.height/2f) / wh,
|
||||||
|
u2 = (x + camera.width/2f) / ww,
|
||||||
|
v2 = (y + camera.height/2f) / wh;
|
||||||
|
|
||||||
Tmp.tr1.set(shadows.getTexture());
|
Tmp.tr1.set(shadows.getTexture());
|
||||||
Shaders.shadow.color.set(shadowColor);
|
Tmp.tr1.set(u, v2, u2, v);
|
||||||
Shaders.shadow.scl = renderer.cameraScale()/3f;
|
|
||||||
Shaders.shadow.region = Tmp.tr1;
|
|
||||||
|
|
||||||
Draw.flush();
|
Draw.shader(Shaders.fog);
|
||||||
shadows.begin();
|
Draw.rect(Tmp.tr1, camera.position.x, camera.position.y, camera.width, camera.height);
|
||||||
Core.graphics.clear(Color.CLEAR);
|
|
||||||
|
|
||||||
floor.beginDraw();
|
|
||||||
floor.drawLayer(CacheLayer.walls);
|
|
||||||
floor.endDraw();
|
|
||||||
|
|
||||||
drawBlocks(Layer.shadow);
|
|
||||||
|
|
||||||
EntityDraw.drawWith(playerGroup, player -> !player.isDead(), Unit::draw);
|
|
||||||
for(EntityGroup group : unitGroups){
|
|
||||||
EntityDraw.drawWith(group, unit -> !unit.isDead(), Unit::draw);
|
|
||||||
}
|
|
||||||
|
|
||||||
Draw.color();
|
|
||||||
Draw.flush();
|
|
||||||
shadows.end();
|
|
||||||
|
|
||||||
Draw.shader(Shaders.shadow);
|
|
||||||
Draw.rect(Draw.wrap(shadows.getTexture()),
|
|
||||||
camera.position.x,
|
|
||||||
camera.position.y,
|
|
||||||
camera.width, -camera.height);
|
|
||||||
Draw.shader();
|
Draw.shader();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -173,7 +190,6 @@ public class BlockRenderer{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(block.expanded || !expanded){
|
if(block.expanded || !expanded){
|
||||||
addRequest(tile, Layer.shadow);
|
|
||||||
|
|
||||||
if(block.layer != null && block.isLayer(tile)){
|
if(block.layer != null && block.isLayer(tile)){
|
||||||
addRequest(tile, block.layer);
|
addRequest(tile, block.layer);
|
||||||
@@ -214,11 +230,9 @@ public class BlockRenderer{
|
|||||||
BlockRequest req = requests.get(iterateidx);
|
BlockRequest req = requests.get(iterateidx);
|
||||||
Block block = req.tile.block();
|
Block block = req.tile.block();
|
||||||
|
|
||||||
if(req.layer == Layer.shadow){
|
if(req.layer == Layer.block){
|
||||||
block.drawShadow(req.tile);
|
|
||||||
}else if(req.layer == Layer.block){
|
|
||||||
block.draw(req.tile);
|
block.draw(req.tile);
|
||||||
if(block.synthetic() && req.tile.getTeam() != players[0].getTeam()){
|
if(block.synthetic() && req.tile.getTeam() != player.getTeam()){
|
||||||
block.drawTeam(req.tile);
|
block.drawTeam(req.tile);
|
||||||
}
|
}
|
||||||
}else if(req.layer == block.layer){
|
}else if(req.layer == block.layer){
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ public class FloorRenderer{
|
|||||||
int chunksx = Mathf.ceil((float) (world.width()) / chunksize),
|
int chunksx = Mathf.ceil((float) (world.width()) / chunksize),
|
||||||
chunksy = Mathf.ceil((float) (world.height()) / chunksize) ;
|
chunksy = Mathf.ceil((float) (world.height()) / chunksize) ;
|
||||||
cache = new Chunk[chunksx][chunksy];
|
cache = new Chunk[chunksx][chunksy];
|
||||||
SpriteCache sprites = new SpriteCache(world.width() * world.height() * 5, (world.width() / chunksize) * (world.height() / chunksize) * 2, false);
|
SpriteCache sprites = new SpriteCache(world.width() * world.height() * 6, (world.width() / chunksize) * (world.height() / chunksize) * 2, false);
|
||||||
cbatch = new CacheBatch(sprites);
|
cbatch = new CacheBatch(sprites);
|
||||||
|
|
||||||
Time.mark();
|
Time.mark();
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package io.anuke.mindustry.graphics;
|
package io.anuke.mindustry.graphics;
|
||||||
|
|
||||||
public enum Layer{
|
public enum Layer{
|
||||||
/**Drawn under everything.*/
|
|
||||||
shadow,
|
|
||||||
/**Base block layer.*/
|
/**Base block layer.*/
|
||||||
block,
|
block,
|
||||||
/**for placement*/
|
/**for placement*/
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import io.anuke.arc.math.geom.Rectangle;
|
|||||||
import io.anuke.arc.math.geom.Vector2;
|
import io.anuke.arc.math.geom.Vector2;
|
||||||
import io.anuke.arc.util.Time;
|
import io.anuke.arc.util.Time;
|
||||||
import io.anuke.arc.util.Tmp;
|
import io.anuke.arc.util.Tmp;
|
||||||
|
import io.anuke.mindustry.Vars;
|
||||||
import io.anuke.mindustry.content.Blocks;
|
import io.anuke.mindustry.content.Blocks;
|
||||||
import io.anuke.mindustry.entities.Units;
|
import io.anuke.mindustry.entities.Units;
|
||||||
import io.anuke.mindustry.entities.type.Player;
|
import io.anuke.mindustry.entities.type.Player;
|
||||||
@@ -25,20 +26,18 @@ public class OverlayRenderer{
|
|||||||
private float buildFadeTime;
|
private float buildFadeTime;
|
||||||
|
|
||||||
public void drawBottom(){
|
public void drawBottom(){
|
||||||
for(Player player : players){
|
InputHandler input = control.input();
|
||||||
InputHandler input = control.input(player.playerIndex);
|
|
||||||
|
|
||||||
if(!input.isDrawing() || player.isDead()) continue;
|
if(!input.isDrawing() || player.isDead()) return;
|
||||||
|
|
||||||
input.drawOutlined();
|
input.drawOutlined();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawTop(){
|
public void drawTop(){
|
||||||
|
|
||||||
if(Core.settings.getBool("indicators")){
|
if(Core.settings.getBool("indicators")){
|
||||||
for(Player player : playerGroup.all()){
|
for(Player player : playerGroup.all()){
|
||||||
if(player != players[0] && player.getTeam() == players[0].getTeam()){
|
if(Vars.player != player && Vars.player.getTeam() == player.getTeam()){
|
||||||
if(!rect.setSize(Core.camera.width * 0.9f, Core.camera.height * 0.9f)
|
if(!rect.setSize(Core.camera.width * 0.9f, Core.camera.height * 0.9f)
|
||||||
.setCenter(Core.camera.position.x, Core.camera.position.y).contains(player.x, player.y)){
|
.setCenter(Core.camera.position.x, Core.camera.position.y).contains(player.x, player.y)){
|
||||||
|
|
||||||
@@ -52,7 +51,7 @@ public class OverlayRenderer{
|
|||||||
}
|
}
|
||||||
|
|
||||||
Units.allUnits(unit -> {
|
Units.allUnits(unit -> {
|
||||||
if(unit != players[0] && unit.getTeam() != players[0].getTeam() && !rect.setSize(Core.camera.width * 0.9f, Core.camera.height * 0.9f).setCenter(Core.camera.position.x, Core.camera.position.y).contains(unit.x, unit.y)){
|
if(unit != player && unit.getTeam() != player.getTeam() && !rect.setSize(Core.camera.width * 0.9f, Core.camera.height * 0.9f).setCenter(Core.camera.position.x, Core.camera.position.y).contains(unit.x, unit.y)){
|
||||||
Tmp.v1.set(unit.x, unit.y).sub(Core.camera.position.x, Core.camera.position.y).setLength(indicatorLength);
|
Tmp.v1.set(unit.x, unit.y).sub(Core.camera.position.x, Core.camera.position.y).setLength(indicatorLength);
|
||||||
|
|
||||||
Lines.stroke(1f, unit.getTeam().color);
|
Lines.stroke(1f, unit.getTeam().color);
|
||||||
@@ -62,67 +61,66 @@ public class OverlayRenderer{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
for(Player player : players){
|
if(player.isDead()) return; //dead players don't draw
|
||||||
if(player.isDead()) continue; //dead players don't draw
|
|
||||||
|
|
||||||
InputHandler input = control.input(player.playerIndex);
|
InputHandler input = control.input();
|
||||||
|
|
||||||
//draw config selected block
|
//draw config selected block
|
||||||
if(input.frag.config.isShown()){
|
if(input.frag.config.isShown()){
|
||||||
Tile tile = input.frag.config.getSelectedTile();
|
Tile tile = input.frag.config.getSelectedTile();
|
||||||
tile.block().drawConfigure(tile);
|
tile.block().drawConfigure(tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
input.drawTop();
|
input.drawTop();
|
||||||
|
|
||||||
buildFadeTime = Mathf.lerpDelta(buildFadeTime, input.isPlacing() ? 1f : 0f, 0.06f);
|
buildFadeTime = Mathf.lerpDelta(buildFadeTime, input.isPlacing() ? 1f : 0f, 0.06f);
|
||||||
|
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
Lines.stroke(buildFadeTime*2f);
|
Lines.stroke(buildFadeTime*2f);
|
||||||
|
|
||||||
if(buildFadeTime > 0.005f){
|
if(buildFadeTime > 0.005f){
|
||||||
for(Team enemy : state.teams.enemiesOf(player.getTeam())){
|
for(Team enemy : state.teams.enemiesOf(player.getTeam())){
|
||||||
for(Tile core : state.teams.get(enemy).cores){
|
for(Tile core : state.teams.get(enemy).cores){
|
||||||
float dst = Mathf.dst(player.x, player.y, core.drawx(), core.drawy());
|
float dst = Mathf.dst(player.x, player.y, core.drawx(), core.drawy());
|
||||||
if(dst < state.rules.enemyCoreBuildRadius * 1.5f){
|
if(dst < state.rules.enemyCoreBuildRadius * 1.5f){
|
||||||
Draw.color(Color.DARK_GRAY);
|
Draw.color(Color.DARK_GRAY);
|
||||||
Lines.poly(core.drawx(), core.drawy() - 2, 200, state.rules.enemyCoreBuildRadius);
|
Lines.poly(core.drawx(), core.drawy() - 2, 200, state.rules.enemyCoreBuildRadius);
|
||||||
Draw.color(Pal.accent, enemy.color, 0.5f + Mathf.absin(Time.time(), 10f, 0.5f));
|
Draw.color(Pal.accent, enemy.color, 0.5f + Mathf.absin(Time.time(), 10f, 0.5f));
|
||||||
Lines.poly(core.drawx(), core.drawy(), 200, state.rules.enemyCoreBuildRadius);
|
Lines.poly(core.drawx(), core.drawy(), 200, state.rules.enemyCoreBuildRadius);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Draw.reset();
|
||||||
|
|
||||||
|
//draw selected block bars and info
|
||||||
|
if(input.block == null && !Core.scene.hasMouse()){
|
||||||
|
Vector2 vec = Core.input.mouseWorld(input.getMouseX(), input.getMouseY());
|
||||||
|
Tile tile = world.tileWorld(vec.x, vec.y);
|
||||||
|
|
||||||
|
if(tile != null && tile.block() != Blocks.air && tile.target().getTeam() == player.getTeam()){
|
||||||
|
Tile target = tile.target();
|
||||||
|
target.block().drawSelect(target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(input.isDroppingItem()){
|
||||||
|
Vector2 v = Core.input.mouseWorld(input.getMouseX(), input.getMouseY());
|
||||||
|
float size = 8;
|
||||||
|
Draw.rect(player.item().item.icon(Item.Icon.large), v.x, v.y, size, size);
|
||||||
|
Draw.color(Pal.accent);
|
||||||
|
Lines.circle(v.x, v.y, 6 + Mathf.absin(Time.time(), 5f, 1f));
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
|
|
||||||
//draw selected block bars and info
|
Tile tile = world.tileWorld(v.x, v.y);
|
||||||
if(input.block == null && !Core.scene.hasMouse()){
|
if(tile != null) tile = tile.target();
|
||||||
Vector2 vec = Core.input.mouseWorld(input.getMouseX(), input.getMouseY());
|
if(tile != null && tile.interactable(player.getTeam()) && tile.block().acceptStack(player.item().item, player.item().amount, tile, player) > 0){
|
||||||
Tile tile = world.tileWorld(vec.x, vec.y);
|
Draw.color(Pal.place);
|
||||||
|
Lines.square(tile.drawx(), tile.drawy(), tile.block().size * tilesize / 2f + 1 + Mathf.absin(Time.time(), 5f, 1f));
|
||||||
if(tile != null && tile.block() != Blocks.air && tile.target().getTeam() == players[0].getTeam()){
|
Draw.color();
|
||||||
Tile target = tile.target();
|
|
||||||
target.block().drawSelect(target);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(input.isDroppingItem()){
|
|
||||||
Vector2 v = Core.input.mouseWorld(input.getMouseX(), input.getMouseY());
|
|
||||||
float size = 8;
|
|
||||||
Draw.rect(player.item().item.icon(Item.Icon.large), v.x, v.y, size, size);
|
|
||||||
Draw.color(Pal.accent);
|
|
||||||
Lines.circle(v.x, v.y, 6 + Mathf.absin(Time.time(), 5f, 1f));
|
|
||||||
Draw.reset();
|
|
||||||
|
|
||||||
Tile tile = world.tileWorld(v.x, v.y);
|
|
||||||
if(tile != null) tile = tile.target();
|
|
||||||
if(tile != null && tile.interactable(player.getTeam()) && tile.block().acceptStack(player.item().item, player.item().amount, tile, player) > 0){
|
|
||||||
Draw.color(Pal.place);
|
|
||||||
Lines.square(tile.drawx(), tile.drawy(), tile.block().size * tilesize / 2f + 1 + Mathf.absin(Time.time(), 5f, 1f));
|
|
||||||
Draw.color();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ public class Pal{
|
|||||||
heal = Color.valueOf("98ffa9"),
|
heal = Color.valueOf("98ffa9"),
|
||||||
bar = Color.SLATE,
|
bar = Color.SLATE,
|
||||||
accent = Color.valueOf("ffd37f"),
|
accent = Color.valueOf("ffd37f"),
|
||||||
|
stat = Color.valueOf("ffd37f"),
|
||||||
locked = Color.valueOf("989aa4"),
|
locked = Color.valueOf("989aa4"),
|
||||||
accentBack = Color.valueOf("d4816b"),
|
accentBack = Color.valueOf("d4816b"),
|
||||||
place = Color.valueOf("6335f8"),
|
place = Color.valueOf("6335f8"),
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ public enum Binding implements KeyBind{
|
|||||||
menu(Core.app.getType() == ApplicationType.Android ? KeyCode.BACK : KeyCode.ESCAPE),
|
menu(Core.app.getType() == ApplicationType.Android ? KeyCode.BACK : KeyCode.ESCAPE),
|
||||||
pause(KeyCode.SPACE),
|
pause(KeyCode.SPACE),
|
||||||
toggle_menus(KeyCode.C),
|
toggle_menus(KeyCode.C),
|
||||||
|
screenshot(KeyCode.P),
|
||||||
player_list(KeyCode.TAB, "multiplayer"),
|
player_list(KeyCode.TAB, "multiplayer"),
|
||||||
chat(KeyCode.ENTER),
|
chat(KeyCode.ENTER),
|
||||||
chat_history_prev(KeyCode.UP),
|
chat_history_prev(KeyCode.UP),
|
||||||
|
|||||||