Merge remote-tracking branch 'origin/master'

This commit is contained in:
Anuken
2022-09-09 14:28:45 -04:00
45 changed files with 70 additions and 14 deletions

View File

@@ -1153,6 +1153,7 @@ rules.coreincinerates = Core Incinerates Overflow
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Schematics Allowed rules.schematic = Schematics Allowed
rules.wavetimer = Wave Timer rules.wavetimer = Wave Timer
rules.wavesending = Wave Sending
rules.waves = Waves rules.waves = Waves
rules.attack = Attack Mode rules.attack = Attack Mode
rules.rtsai = RTS AI rules.rtsai = RTS AI
@@ -2114,7 +2115,7 @@ lst.getblock = Get tile data at any location.
lst.setblock = Set tile data at any location. lst.setblock = Set tile data at any location.
lst.spawnunit = Spawn unit at a location. lst.spawnunit = Spawn unit at a location.
lst.applystatus = Apply or clear a status effect from a unit. lst.applystatus = Apply or clear a status effect from a unit.
lst.spawnwave = Simulate a wave being spawned at an arbitrary location.\nWill not increment the wave counter. lst.spawnwave = Spawn a wave.
lst.explosion = Create an explosion at a location. lst.explosion = Create an explosion at a location.
lst.setrate = Set processor execution speed in instructions/tick. lst.setrate = Set processor execution speed in instructions/tick.
lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count. lst.fetch = Lookup units, cores, players or buildings by index.\nIndices start at 0 and end at their returned count.

View File

@@ -1132,6 +1132,7 @@ rules.coreincinerates = Core Incinerates Overflow
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Schematics Allowed rules.schematic = Schematics Allowed
rules.wavetimer = Інтэрвал хваляў rules.wavetimer = Інтэрвал хваляў
rules.wavesending = Wave Sending
rules.waves = Хвалі rules.waves = Хвалі
rules.attack = Рэжым атакі rules.attack = Рэжым атакі
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1142,6 +1142,7 @@ rules.coreincinerates = Унищожаване на Ресурси при Пре
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Позволена Употребата на Схеми rules.schematic = Позволена Употребата на Схеми
rules.wavetimer = Таймер за Вълни rules.wavetimer = Таймер за Вълни
rules.wavesending = Wave Sending
rules.waves = Вълни rules.waves = Вълни
rules.attack = Режим Атака rules.attack = Режим Атака
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1147,6 +1147,7 @@ rules.coreincinerates = El nucli incinera els excedents
rules.disableworldprocessors = Desactiva els processadors integrats rules.disableworldprocessors = Desactiva els processadors integrats
rules.schematic = Permetre lús desquemes rules.schematic = Permetre lús desquemes
rules.wavetimer = Temporitzador donades rules.wavetimer = Temporitzador donades
rules.wavesending = Wave Sending
rules.waves = Onades rules.waves = Onades
rules.attack = Mode datac rules.attack = Mode datac
rules.rtsai = IA avançada (RTS AI) rules.rtsai = IA avançada (RTS AI)

View File

@@ -1144,6 +1144,7 @@ rules.coreincinerates = Jádro Spaluje Nadbytečné Suroviny
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Šablony povoleny rules.schematic = Šablony povoleny
rules.wavetimer = Časovač vln rules.wavetimer = Časovač vln
rules.wavesending = Wave Sending
rules.waves = Vlny rules.waves = Vlny
rules.attack = Režim útoku rules.attack = Režim útoku
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1132,6 +1132,7 @@ rules.coreincinerates = Core Incinerates Overflow
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Skabeloner tilladt rules.schematic = Skabeloner tilladt
rules.wavetimer = Bølge-æggeur rules.wavetimer = Bølge-æggeur
rules.wavesending = Wave Sending
rules.waves = Bølger rules.waves = Bølger
rules.attack = Angrebsmode rules.attack = Angrebsmode
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1147,6 +1147,7 @@ rules.coreincinerates = Kern verbrennt überflüssige Materialien
rules.disableworldprocessors = Deaktiviere Weltprozessoren rules.disableworldprocessors = Deaktiviere Weltprozessoren
rules.schematic = Entwürfe erlaubt rules.schematic = Entwürfe erlaubt
rules.wavetimer = Wellen-Timer rules.wavetimer = Wellen-Timer
rules.wavesending = Wave Sending
rules.waves = Wellen rules.waves = Wellen
rules.attack = Angriff-Modus rules.attack = Angriff-Modus
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1152,6 +1152,7 @@ rules.coreincinerates = Incinerar exceso de recursos en el Núcleo
rules.disableworldprocessors = Desactivar procesadores integrados rules.disableworldprocessors = Desactivar procesadores integrados
rules.schematic = Permitir esquemas rules.schematic = Permitir esquemas
rules.wavetimer = Temporizador de oleadas rules.wavetimer = Temporizador de oleadas
rules.wavesending = Wave Sending
rules.waves = Oleadas rules.waves = Oleadas
rules.attack = Modo de ataque rules.attack = Modo de ataque
rules.rtsai = IA enemiga avanzada (RTS AI) rules.rtsai = IA enemiga avanzada (RTS AI)

View File

@@ -1132,6 +1132,7 @@ rules.coreincinerates = Core Incinerates Overflow
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Schematics Allowed rules.schematic = Schematics Allowed
rules.wavetimer = Kasuta taimerit rules.wavetimer = Kasuta taimerit
rules.wavesending = Wave Sending
rules.waves = Kasuta lahingulaineid rules.waves = Kasuta lahingulaineid
rules.attack = Mänguviis "Rünnak" rules.attack = Mänguviis "Rünnak"
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1132,6 +1132,7 @@ rules.coreincinerates = Core Incinerates Overflow
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Schematics Allowed rules.schematic = Schematics Allowed
rules.wavetimer = Boladen denboragailua rules.wavetimer = Boladen denboragailua
rules.wavesending = Wave Sending
rules.waves = Boladak rules.waves = Boladak
rules.attack = Eraso modua rules.attack = Eraso modua
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1132,6 +1132,7 @@ rules.coreincinerates = Ydin höyrystää ylivuodon
rules.disableworldprocessors = Poista maailmaprosessorit käytöstä rules.disableworldprocessors = Poista maailmaprosessorit käytöstä
rules.schematic = Salli kaaviot rules.schematic = Salli kaaviot
rules.wavetimer = Tasojen aikaraja rules.wavetimer = Tasojen aikaraja
rules.wavesending = Wave Sending
rules.waves = Tasot rules.waves = Tasot
rules.attack = Hyökkäystila rules.attack = Hyökkäystila
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1132,6 +1132,7 @@ rules.coreincinerates = Core Incinerates Overflow
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Schematics Allowed rules.schematic = Schematics Allowed
rules.wavetimer = Wave Timer rules.wavetimer = Wave Timer
rules.wavesending = Wave Sending
rules.waves = Waves rules.waves = Waves
rules.attack = Attack Mode rules.attack = Attack Mode
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1152,6 +1152,7 @@ rules.coreincinerates = Incinération des surplus du Noyau
rules.disableworldprocessors = Désactiver les Processeurs Globaux rules.disableworldprocessors = Désactiver les Processeurs Globaux
rules.schematic = Schémas autorisés rules.schematic = Schémas autorisés
rules.wavetimer = Compte à rebours des vagues rules.wavetimer = Compte à rebours des vagues
rules.wavesending = Wave Sending
rules.waves = Vagues rules.waves = Vagues
rules.attack = Mode « Attaque » rules.attack = Mode « Attaque »
rules.rtsai = IA de RTS rules.rtsai = IA de RTS

View File

@@ -1141,6 +1141,7 @@ rules.coreincinerates = Túlcsorduló itemek megsemmisítse a magban
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Schematicok rules.schematic = Schematicok
rules.wavetimer = Hullám időzítő rules.wavetimer = Hullám időzítő
rules.wavesending = Wave Sending
rules.waves = Hullámok rules.waves = Hullámok
rules.attack = Támadás mód rules.attack = Támadás mód
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1152,6 +1152,7 @@ rules.coreincinerates = Penghangusan Luapan Inti
rules.disableworldprocessors = Nonaktifkan Prosesor Dunia rules.disableworldprocessors = Nonaktifkan Prosesor Dunia
rules.schematic = Bagan Diperbolehkan rules.schematic = Bagan Diperbolehkan
rules.wavetimer = Pengaturan Waktu Gelombang rules.wavetimer = Pengaturan Waktu Gelombang
rules.wavesending = Wave Sending
rules.waves = Gelombang rules.waves = Gelombang
rules.attack = Mode Penyerangan rules.attack = Mode Penyerangan
rules.rtsai = A.I. RTS rules.rtsai = A.I. RTS

View File

@@ -1139,6 +1139,7 @@ rules.coreincinerates = Core Incinerates Overflow
rules.disableworldprocessors = Disabilita processori rules.disableworldprocessors = Disabilita processori
rules.schematic = Schematiche Consentite rules.schematic = Schematiche Consentite
rules.wavetimer = Timer Ondate rules.wavetimer = Timer Ondate
rules.wavesending = Wave Sending
rules.waves = Ondate rules.waves = Ondate
rules.attack = Modalità Attacco rules.attack = Modalità Attacco
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1144,6 +1144,7 @@ rules.coreincinerates = 余剰アイテムの焼却
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = 設計図を許可 rules.schematic = 設計図を許可
rules.wavetimer = ウェーブの自動進行 rules.wavetimer = ウェーブの自動進行
rules.wavesending = Wave Sending
rules.waves = ウェーブ rules.waves = ウェーブ
rules.attack = アタックモード rules.attack = アタックモード
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1145,6 +1145,7 @@ rules.coreincinerates = 코어 방화 비허용
rules.disableworldprocessors = 월드 프로세서 비활성화 rules.disableworldprocessors = 월드 프로세서 비활성화
rules.schematic = 설계도 허용 rules.schematic = 설계도 허용
rules.wavetimer = 시간 제한이 있는 단계 rules.wavetimer = 시간 제한이 있는 단계
rules.wavesending = Wave Sending
rules.waves = 단계 rules.waves = 단계
rules.attack = 공격 모드 rules.attack = 공격 모드
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1132,6 +1132,7 @@ rules.coreincinerates = Core Incinerates Overflow
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Schematics Allowed rules.schematic = Schematics Allowed
rules.wavetimer = Bangų Laikmatis rules.wavetimer = Bangų Laikmatis
rules.wavesending = Wave Sending
rules.waves = Bangos rules.waves = Bangos
rules.attack = Puolimo Režimas rules.attack = Puolimo Režimas
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1132,6 +1132,7 @@ rules.coreincinerates = Core Incinerates Overflow
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Schematics Allowed rules.schematic = Schematics Allowed
rules.wavetimer = Ronde timer rules.wavetimer = Ronde timer
rules.wavesending = Wave Sending
rules.waves = Rondes rules.waves = Rondes
rules.attack = Aanval modus rules.attack = Aanval modus
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1132,6 +1132,7 @@ rules.coreincinerates = Core Incinerates Overflow
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Schematics Allowed rules.schematic = Schematics Allowed
rules.wavetimer = Wave Timer rules.wavetimer = Wave Timer
rules.wavesending = Wave Sending
rules.waves = Waves rules.waves = Waves
rules.attack = Attack Mode rules.attack = Attack Mode
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1143,6 +1143,7 @@ rules.coreincinerates = Rdzeń Spala Nadmiarowe Przedmioty
rules.disableworldprocessors = Wyłącz Procesor Świata rules.disableworldprocessors = Wyłącz Procesor Świata
rules.schematic = Zezwalaj na schematy rules.schematic = Zezwalaj na schematy
rules.wavetimer = Zegar Fal rules.wavetimer = Zegar Fal
rules.wavesending = Wave Sending
rules.waves = Fale rules.waves = Fale
rules.attack = Tryb Ataku rules.attack = Tryb Ataku
rules.rtsai = RTS SI rules.rtsai = RTS SI

View File

@@ -1139,6 +1139,7 @@ rules.coreincinerates = Core Incinerates Overflow
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Permitir Esquemas rules.schematic = Permitir Esquemas
rules.wavetimer = Tempo de horda rules.wavetimer = Tempo de horda
rules.wavesending = Wave Sending
rules.waves = Hordas rules.waves = Hordas
rules.attack = Modo de ataque rules.attack = Modo de ataque
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1132,6 +1132,7 @@ rules.coreincinerates = Core Incinerates Overflow
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Schematics Allowed rules.schematic = Schematics Allowed
rules.wavetimer = Tempo de horda rules.wavetimer = Tempo de horda
rules.wavesending = Wave Sending
rules.waves = Hordas rules.waves = Hordas
rules.attack = Modo de ataque rules.attack = Modo de ataque
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1144,6 +1144,7 @@ rules.coreincinerates = Nucleul Incinerează Resursele în Plus
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Se Pot Folosi Scheme rules.schematic = Se Pot Folosi Scheme
rules.wavetimer = Valuri pe Timp rules.wavetimer = Valuri pe Timp
rules.wavesending = Wave Sending
rules.waves = Valuri rules.waves = Valuri
rules.attack = Modul Atac rules.attack = Modul Atac
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1142,6 +1142,7 @@ rules.coreincinerates = Ядро сжигает избыток ресурсов
rules.disableworldprocessors = Отключить мировые процессоры rules.disableworldprocessors = Отключить мировые процессоры
rules.schematic = Схемы разрешены rules.schematic = Схемы разрешены
rules.wavetimer = Интервал волн rules.wavetimer = Интервал волн
rules.wavesending = Wave Sending
rules.waves = Волны rules.waves = Волны
rules.attack = Режим атаки rules.attack = Режим атаки
rules.rtsai = ИИ в реальном времени rules.rtsai = ИИ в реальном времени

View File

@@ -1144,6 +1144,7 @@ rules.coreincinerates = Core Incinerates Overflow
rules.disableworldprocessors = Onesposobi Svetovne Procesore rules.disableworldprocessors = Onesposobi Svetovne Procesore
rules.schematic = Šeme Su Dozvoljene rules.schematic = Šeme Su Dozvoljene
rules.wavetimer = Wave Timer rules.wavetimer = Wave Timer
rules.wavesending = Wave Sending
rules.waves = Talasi rules.waves = Talasi
rules.attack = Mod Napada rules.attack = Mod Napada
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1132,6 +1132,7 @@ rules.coreincinerates = Core Incinerates Overflow
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Schematics Allowed rules.schematic = Schematics Allowed
rules.wavetimer = Vågtimer rules.wavetimer = Vågtimer
rules.wavesending = Wave Sending
rules.waves = Vågor rules.waves = Vågor
rules.attack = Attack Mode rules.attack = Attack Mode
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1144,6 +1144,7 @@ rules.coreincinerates = แกนกลางเผาทรัพยากร
rules.disableworldprocessors = ปิดการทำงานของตัวประมวลผลโลก rules.disableworldprocessors = ปิดการทำงานของตัวประมวลผลโลก
rules.schematic = อนุญาตแผนผัง rules.schematic = อนุญาตแผนผัง
rules.wavetimer = นับถอยหลังการปล่อยคลื่น rules.wavetimer = นับถอยหลังการปล่อยคลื่น
rules.wavesending = Wave Sending
rules.waves = คลื่น rules.waves = คลื่น
rules.attack = โหมดการโจมตี rules.attack = โหมดการโจมตี
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1132,6 +1132,7 @@ rules.coreincinerates = Core Incinerates Overflow
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Schematics Allowed rules.schematic = Schematics Allowed
rules.wavetimer = Wave Timer rules.wavetimer = Wave Timer
rules.wavesending = Wave Sending
rules.waves = Waves rules.waves = Waves
rules.attack = Attack Mode rules.attack = Attack Mode
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1144,6 +1144,7 @@ rules.coreincinerates = Merkez Taşanları Eritir
rules.disableworldprocessors = Evrensel İşlemcileri Devredışı Bırak rules.disableworldprocessors = Evrensel İşlemcileri Devredışı Bırak
rules.schematic = Şema Kullanılabilir rules.schematic = Şema Kullanılabilir
rules.wavetimer = Dalga Zamanlayıcısı rules.wavetimer = Dalga Zamanlayıcısı
rules.wavesending = Wave Sending
rules.waves = Dalgalar rules.waves = Dalgalar
rules.attack = Saldırı Modu rules.attack = Saldırı Modu
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1147,6 +1147,7 @@ rules.coreincinerates = Ядро спалює надлишкові предме
rules.disableworldprocessors = Вимкнути світові процесори rules.disableworldprocessors = Вимкнути світові процесори
rules.schematic = Використання схем дозволено rules.schematic = Використання схем дозволено
rules.wavetimer = Таймер для хвиль rules.wavetimer = Таймер для хвиль
rules.wavesending = Wave Sending
rules.waves = Хвилі rules.waves = Хвилі
rules.attack = Режим атаки rules.attack = Режим атаки
rules.rtsai = ШІ зі стратегій реального часу rules.rtsai = ШІ зі стратегій реального часу

View File

@@ -1144,6 +1144,7 @@ rules.coreincinerates = Hủy vật phẩm khi căn cứ đầy
rules.disableworldprocessors = Disable World Processors rules.disableworldprocessors = Disable World Processors
rules.schematic = Cho phép dùng bản thiết kế rules.schematic = Cho phép dùng bản thiết kế
rules.wavetimer = Đếm ngược đợt rules.wavetimer = Đếm ngược đợt
rules.wavesending = Wave Sending
rules.waves = Đợt rules.waves = Đợt
rules.attack = Chế độ tấn công rules.attack = Chế độ tấn công
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1145,6 +1145,7 @@ rules.coreincinerates = 核心焚烧
rules.disableworldprocessors = 禁用世界处理器 rules.disableworldprocessors = 禁用世界处理器
rules.schematic = 允许使用蓝图 rules.schematic = 允许使用蓝图
rules.wavetimer = 波次计时器 rules.wavetimer = 波次计时器
rules.wavesending = Wave Sending
rules.waves = 波次 rules.waves = 波次
rules.attack = 进攻模式 rules.attack = 进攻模式
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -1152,6 +1152,7 @@ rules.coreincinerates = 核心銷毀物品
rules.disableworldprocessors = 停用世界處理器 rules.disableworldprocessors = 停用世界處理器
rules.schematic = 允許使用藍圖 rules.schematic = 允許使用藍圖
rules.wavetimer = 波次時間 rules.wavetimer = 波次時間
rules.wavesending = Wave Sending
rules.waves = 波次 rules.waves = 波次
rules.attack = 攻擊模式 rules.attack = 攻擊模式
rules.rtsai = RTS AI rules.rtsai = RTS AI

View File

@@ -5,6 +5,7 @@ import arc.util.*;
import mindustry.annotations.Annotations.*; import mindustry.annotations.Annotations.*;
import mindustry.game.*; import mindustry.game.*;
import mindustry.gen.*; import mindustry.gen.*;
import mindustry.type.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
@@ -12,11 +13,14 @@ import static mindustry.Vars.*;
abstract class BoundedComp implements Velc, Posc, Healthc, Flyingc{ abstract class BoundedComp implements Velc, Posc, Healthc, Flyingc{
static final float warpDst = 30f; static final float warpDst = 30f;
@Import UnitType type;
@Import float x, y; @Import float x, y;
@Import Team team; @Import Team team;
@Override @Override
public void update(){ public void update(){
if(!type.bounded) return;
float bot = 0f, left = 0f, top = world.unitHeight(), right = world.unitWidth(); float bot = 0f, left = 0f, top = world.unitHeight(), right = world.unitWidth();
//TODO hidden map rules only apply to player teams? should they? //TODO hidden map rules only apply to player teams? should they?

View File

@@ -380,7 +380,7 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
@Override @Override
public String text(){ public String text(){
return Core.bundle.format("objective.build", count, block.emoji(), block.localizedName); return Core.bundle.format("objective.build", count - state.stats.placedBlockCount.get(block, 0), block.emoji(), block.localizedName);
} }
} }
@@ -403,7 +403,7 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
@Override @Override
public String text(){ public String text(){
return Core.bundle.format("objective.buildunit", count, unit.emoji(), unit.localizedName); return Core.bundle.format("objective.buildunit", count - state.rules.defaultTeam.data().countType(unit), unit.emoji(), unit.localizedName);
} }
} }
@@ -424,7 +424,7 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
@Override @Override
public String text(){ public String text(){
return Core.bundle.format("objective.destroyunits", count); return Core.bundle.format("objective.destroyunits", count - state.stats.enemyUnitsDestroyed);
} }
} }

View File

@@ -25,6 +25,8 @@ public class Rules{
public TeamRules teams = new TeamRules(); public TeamRules teams = new TeamRules();
/** Whether the waves come automatically on a timer. If not, waves come when the play button is pressed. */ /** Whether the waves come automatically on a timer. If not, waves come when the play button is pressed. */
public boolean waveTimer = true; public boolean waveTimer = true;
/** Whether the waves can be manually summoned with the play button. */
public boolean waveSending = true;
/** Whether waves are spawnable at all. */ /** Whether waves are spawnable at all. */
public boolean waves; public boolean waves;
/** Whether the game objective is PvP. Note that this enables automatic hosting. */ /** Whether the game objective is PvP. Note that this enables automatic hosting. */

View File

@@ -1409,6 +1409,7 @@ public class LExecutor{
case wave -> state.wave = exec.numi(value); case wave -> state.wave = exec.numi(value);
case currentWaveTime -> state.wavetime = exec.numf(value) * 60f; case currentWaveTime -> state.wavetime = exec.numf(value) * 60f;
case waves -> state.rules.waves = exec.bool(value); case waves -> state.rules.waves = exec.bool(value);
case waveSending -> state.rules.waveSending = exec.bool(value);
case attackMode -> state.rules.attackMode = exec.bool(value); case attackMode -> state.rules.attackMode = exec.bool(value);
case waveSpacing -> state.rules.waveSpacing = exec.numf(value) * 60f; case waveSpacing -> state.rules.waveSpacing = exec.numf(value) * 60f;
case enemyCoreBuildRadius -> state.rules.enemyCoreBuildRadius = exec.numf(value) * 8f; case enemyCoreBuildRadius -> state.rules.enemyCoreBuildRadius = exec.numf(value) * 8f;
@@ -1641,12 +1642,14 @@ public class LExecutor{
} }
public static class SpawnWaveI implements LInstruction{ public static class SpawnWaveI implements LInstruction{
public int natural;
public int x, y; public int x, y;
public SpawnWaveI(){ public SpawnWaveI(){
} }
public SpawnWaveI(int x, int y){ public SpawnWaveI(int natural, int x, int y){
this.natural = natural;
this.x = x; this.x = x;
this.y = y; this.y = y;
} }
@@ -1655,9 +1658,14 @@ public class LExecutor{
public void run(LExecutor exec){ public void run(LExecutor exec){
if(net.client()) return; if(net.client()) return;
if(exec.bool(natural)){
logic.skipWave();
return;
}
float float
spawnX = World.unconv(exec.numf(x)), spawnX = World.unconv(exec.numf(x)),
spawnY = World.unconv(exec.numf(y)); spawnY = World.unconv(exec.numf(y));
int packed = Point2.pack(exec.numi(x), exec.numi(y)); int packed = Point2.pack(exec.numi(x), exec.numi(y));
for(SpawnGroup group : state.rules.spawns){ for(SpawnGroup group : state.rules.spawns){

View File

@@ -1309,16 +1309,18 @@ public class LStatements{
@RegisterStatement("spawnwave") @RegisterStatement("spawnwave")
public static class SpawnWaveStatement extends LStatement{ public static class SpawnWaveStatement extends LStatement{
public String x = "10", y = "10"; public String x = "10", y = "10", natural = "false";
@Override @Override
public void build(Table table){ public void build(Table table){
table.add("natural ");
fields(table, natural, str -> natural = str);
table.add("x "); table.add("x ").visible(() -> natural.equals("false"));
fields(table, x, str -> x = str); fields(table, x, str -> x = str).visible(() -> natural.equals("false"));
table.add(" y "); table.add(" y ").visible(() -> natural.equals("false"));
fields(table, y, str -> y = str); fields(table, y, str -> y = str).visible(() -> natural.equals("false"));
} }
@Override @Override
@@ -1328,7 +1330,7 @@ public class LStatements{
@Override @Override
public LInstruction build(LAssembler builder){ public LInstruction build(LAssembler builder){
return new SpawnWaveI(builder.var(x), builder.var(y)); return new SpawnWaveI(builder.var(natural), builder.var(x), builder.var(y));
} }
@Override @Override

View File

@@ -6,6 +6,7 @@ public enum LogicRule{
waves, waves,
wave, wave,
waveSpacing, waveSpacing,
waveSending,
attackMode, attackMode,
enemyCoreBuildRadius, enemyCoreBuildRadius,
dropZoneRadius, dropZoneRadius,

View File

@@ -208,6 +208,8 @@ public class UnitType extends UnlockableContent{
hidden = false, hidden = false,
/** if true, this unit is for internal use only and does not have a sprite generated. */ /** if true, this unit is for internal use only and does not have a sprite generated. */
internal = false, internal = false,
/** If false, this unit is not pushed away from map edges. */
bounded = true,
/** if true, this unit is detected as naval - do NOT assign this manually! Initialized in init() */ /** if true, this unit is detected as naval - do NOT assign this manually! Initialized in init() */
naval = false, naval = false,

View File

@@ -25,6 +25,7 @@ public class MissileUnitType extends UnitType{
envEnabled = Env.any; envEnabled = Env.any;
envDisabled = Env.none; envDisabled = Env.none;
physics = false; physics = false;
bounded = false;
trailLength = 7; trailLength = 7;
hidden = true; hidden = true;
speed = 4f; speed = 4f;

View File

@@ -139,6 +139,7 @@ public class CustomRulesDialog extends BaseDialog{
title("@rules.title.waves"); title("@rules.title.waves");
check("@rules.waves", b -> rules.waves = b, () -> rules.waves); check("@rules.waves", b -> rules.waves = b, () -> rules.waves);
check("@rules.wavetimer", b -> rules.waveTimer = b, () -> rules.waveTimer); check("@rules.wavetimer", b -> rules.waveTimer = b, () -> rules.waveTimer);
check("@rules.wavesending", b -> rules.waveSending = b, () -> rules.waveSending);
check("@rules.waitForWaveToEnd", b -> rules.waitEnemies = b, () -> rules.waitEnemies); check("@rules.waitForWaveToEnd", b -> rules.waitEnemies = b, () -> rules.waitEnemies);
number("@rules.wavespacing", false, f -> rules.waveSpacing = f * 60f, () -> rules.waveSpacing / 60f, () -> rules.waveTimer, 1, Float.MAX_VALUE); number("@rules.wavespacing", false, f -> rules.waveSpacing = f * 60f, () -> rules.waveSpacing / 60f, () -> rules.waveTimer, 1, Float.MAX_VALUE);
//this is experimental, because it's not clear that 0 makes it default. //this is experimental, because it's not clear that 0 makes it default.

View File

@@ -908,7 +908,7 @@ public class HudFragment{
} }
private boolean canSkipWave(){ private boolean canSkipWave(){
return state.rules.waves && ((net.server() || player.admin) || !net.active()) && state.enemies == 0 && !spawner.isSpawning(); return state.rules.waves && state.rules.waveSending && ((net.server() || player.admin) || !net.active()) && state.enemies == 0 && !spawner.isSpawning();
} }
} }