Added hint about guards & armor
This commit is contained in:
@@ -22,7 +22,6 @@ gameover.pvp = The[accent] {0}[] team is victorious!
|
|||||||
gameover.waiting = [accent]Waiting for next map...
|
gameover.waiting = [accent]Waiting for next map...
|
||||||
highscore = [accent]New highscore!
|
highscore = [accent]New highscore!
|
||||||
copied = Copied.
|
copied = Copied.
|
||||||
indev.popup = [accent]v6[] is currently in [accent]beta[].\n[lightgray]This means:[]\n[scarlet]- The campaign is unfinished[]\n- Everything you see is subject to change or removal.\n\nReport bugs or crashes on [accent]Github[].
|
|
||||||
indev.notready = This part of the game isn't ready yet
|
indev.notready = This part of the game isn't ready yet
|
||||||
indev.campaign = [accent]You've reached the end of the campaign![]\n\nThis is as far as the content goes. Interplanetary travel will be added in future updates.
|
indev.campaign = [accent]You've reached the end of the campaign![]\n\nThis is as far as the content goes. Interplanetary travel will be added in future updates.
|
||||||
|
|
||||||
@@ -1270,6 +1269,7 @@ hint.payloadDrop = Press [accent]][] to drop a payload.
|
|||||||
hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a payload there.
|
hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a payload there.
|
||||||
hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires.
|
hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires.
|
||||||
hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[].
|
hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[].
|
||||||
|
hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861Duo/\uf859Salvo ammunition to take Guardians down.
|
||||||
|
|
||||||
item.copper.description = Used in all types of construction and ammunition.
|
item.copper.description = Used in all types of construction and ammunition.
|
||||||
item.copper.details = Copper. Abnormally abundant metal on Serpulo. Structurally weak unless reinforced.
|
item.copper.details = Copper. Abnormally abundant metal on Serpulo. Structurally weak unless reinforced.
|
||||||
|
|||||||
Binary file not shown.
@@ -88,7 +88,7 @@ public class Vars implements Loadable{
|
|||||||
/** duration of time between turns in ticks */
|
/** duration of time between turns in ticks */
|
||||||
public static final float turnDuration = 2 * Time.toMinutes;
|
public static final float turnDuration = 2 * Time.toMinutes;
|
||||||
/** chance of an invasion per turn, 1 = 100% */
|
/** chance of an invasion per turn, 1 = 100% */
|
||||||
public static final float baseInvasionChance = 1f / 50f;
|
public static final float baseInvasionChance = 1f / 55f;
|
||||||
/** how many turns have to pass before invasions start */
|
/** how many turns have to pass before invasions start */
|
||||||
public static final int invasionGracePeriod = 20;
|
public static final int invasionGracePeriod = 20;
|
||||||
/** min armor fraction damage; e.g. 0.05 = at least 5% damage */
|
/** min armor fraction damage; e.g. 0.05 = at least 5% damage */
|
||||||
|
|||||||
@@ -198,10 +198,10 @@ public class TechTree implements ContentList{
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
node(illuminator, () -> {
|
node(illuminator, () -> {
|
||||||
|
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -33,9 +33,8 @@ public class GameState{
|
|||||||
/** Current game state. */
|
/** Current game state. */
|
||||||
private State state = State.menu;
|
private State state = State.menu;
|
||||||
|
|
||||||
//TODO optimize
|
|
||||||
public Unit boss(){
|
public Unit boss(){
|
||||||
return Groups.unit.find(u -> u.isBoss() && u.team == rules.waveTeam);
|
return teams.boss;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void set(State astate){
|
public void set(State astate){
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ public class Teams{
|
|||||||
public Seq<TeamData> active = new Seq<>();
|
public Seq<TeamData> active = new Seq<>();
|
||||||
/** Teams with block or unit presence. */
|
/** Teams with block or unit presence. */
|
||||||
public Seq<TeamData> present = new Seq<>(TeamData.class);
|
public Seq<TeamData> present = new Seq<>(TeamData.class);
|
||||||
|
/** Current boss unit. */
|
||||||
|
public @Nullable Unit boss;
|
||||||
|
|
||||||
public Teams(){
|
public Teams(){
|
||||||
active.add(get(Team.crux));
|
active.add(get(Team.crux));
|
||||||
@@ -178,6 +180,10 @@ public class Teams{
|
|||||||
data.units.add(unit);
|
data.units.add(unit);
|
||||||
data.presentFlag = true;
|
data.presentFlag = true;
|
||||||
|
|
||||||
|
if(unit.team == state.rules.waveTeam && unit.isBoss()){
|
||||||
|
boss = unit;
|
||||||
|
}
|
||||||
|
|
||||||
if(data.unitsByType == null || data.unitsByType.length <= unit.type.id){
|
if(data.unitsByType == null || data.unitsByType.length <= unit.type.id){
|
||||||
data.unitsByType = new Seq[content.units().size];
|
data.unitsByType = new Seq[content.units().size];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ public class Universe{
|
|||||||
if(!sector.isAttacked() && turn > invasionGracePeriod && sector.info.hasSpawns){
|
if(!sector.isAttacked() && turn > invasionGracePeriod && sector.info.hasSpawns){
|
||||||
//invasion chance depends on # of nearby bases
|
//invasion chance depends on # of nearby bases
|
||||||
if(Mathf.chance(baseInvasionChance * Math.min(sector.near().count(Sector::hasEnemyBase), 1))){
|
if(Mathf.chance(baseInvasionChance * Math.min(sector.near().count(Sector::hasEnemyBase), 1))){
|
||||||
int waveMax = Math.max(sector.info.winWave, sector.isBeingPlayed() ? state.wave : sector.info.wave + sector.info.wavesPassed) + Mathf.random(2, 5) * 5;
|
int waveMax = Math.max(sector.info.winWave, sector.isBeingPlayed() ? state.wave : sector.info.wave + sector.info.wavesPassed) + Mathf.random(2, 4) * 5;
|
||||||
|
|
||||||
//assign invasion-related things
|
//assign invasion-related things
|
||||||
if(sector.isBeingPlayed()){
|
if(sector.isBeingPlayed()){
|
||||||
|
|||||||
@@ -298,7 +298,7 @@ public class Waves{
|
|||||||
begin = f;
|
begin = f;
|
||||||
end = f + next >= cap ? never : f + next;
|
end = f + next >= cap ? never : f + next;
|
||||||
max = 13;
|
max = 13;
|
||||||
unitScaling = (difficulty < 0.4f ? rand.random(2.5f, 5f) : rand.random(1f, 4f)) * scaling[ctier];
|
unitScaling = (difficulty < 0.4f ? rand.random(2.5f, 4f) : rand.random(1f, 4f)) * scaling[ctier];
|
||||||
shields = shieldAmount;
|
shields = shieldAmount;
|
||||||
shieldScaling = shieldsPerWave;
|
shieldScaling = shieldsPerWave;
|
||||||
spacing = space;
|
spacing = space;
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ public class HintsFragment extends Fragment{
|
|||||||
depositItems(() -> player.unit().hasItem(), () -> !player.unit().hasItem()),
|
depositItems(() -> player.unit().hasItem(), () -> !player.unit().hasItem()),
|
||||||
desktopPause(visibleDesktop, () -> isTutorial.get() && !Vars.net.active(), () -> Core.input.keyTap(Binding.pause)),
|
desktopPause(visibleDesktop, () -> isTutorial.get() && !Vars.net.active(), () -> Core.input.keyTap(Binding.pause)),
|
||||||
research(isTutorial, () -> ui.research.isShown()),
|
research(isTutorial, () -> ui.research.isShown()),
|
||||||
unitControl(() -> state.rules.defaultTeam.data().units.size > 1 && !net.active(), () -> !player.dead() && !player.unit().spawnedByCore),
|
unitControl(() -> state.rules.defaultTeam.data().units.size > 2 && !net.active() && !player.dead(), () -> !player.dead() && !player.unit().spawnedByCore),
|
||||||
respawn(visibleMobile, () -> !player.dead() && !player.unit().spawnedByCore, () -> !player.dead() && player.unit().spawnedByCore),
|
respawn(visibleMobile, () -> !player.dead() && !player.unit().spawnedByCore, () -> !player.dead() && player.unit().spawnedByCore),
|
||||||
launch(() -> isTutorial.get() && state.rules.sector.isCaptured(), () -> ui.planet.isShown()),
|
launch(() -> isTutorial.get() && state.rules.sector.isCaptured(), () -> ui.planet.isShown()),
|
||||||
schematicSelect(visibleDesktop, () -> ui.hints.placedBlocks.contains(Blocks.router), () -> Core.input.keyRelease(Binding.schematic_select) || Core.input.keyTap(Binding.pick)),
|
schematicSelect(visibleDesktop, () -> ui.hints.placedBlocks.contains(Blocks.router), () -> Core.input.keyRelease(Binding.schematic_select) || Core.input.keyTap(Binding.pick)),
|
||||||
@@ -161,6 +161,7 @@ public class HintsFragment extends Fragment{
|
|||||||
payloadDrop(() -> !player.unit().dead && player.unit() instanceof Payloadc p && p.payloads().any(), () -> player.unit() instanceof Payloadc p && p.payloads().isEmpty()),
|
payloadDrop(() -> !player.unit().dead && player.unit() instanceof Payloadc p && p.payloads().any(), () -> player.unit() instanceof Payloadc p && p.payloads().isEmpty()),
|
||||||
waveFire(() -> Groups.fire.size() > 0 && Blocks.wave.unlockedNow(), () -> indexer.getAllied(state.rules.defaultTeam, BlockFlag.extinguisher).size() > 0),
|
waveFire(() -> Groups.fire.size() > 0 && Blocks.wave.unlockedNow(), () -> indexer.getAllied(state.rules.defaultTeam, BlockFlag.extinguisher).size() > 0),
|
||||||
generator(() -> control.input.block == Blocks.combustionGenerator, () -> ui.hints.placedBlocks.contains(Blocks.combustionGenerator)),
|
generator(() -> control.input.block == Blocks.combustionGenerator, () -> ui.hints.placedBlocks.contains(Blocks.combustionGenerator)),
|
||||||
|
guardian(() -> state.boss() != null && state.boss().armor >= 4, () -> state.boss() == null),
|
||||||
;
|
;
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|||||||
Reference in New Issue
Block a user