Core zone tutorial hint
This commit is contained in:
@@ -2130,6 +2130,7 @@ hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatical
|
|||||||
hint.generator = :combustion-generator: [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with :power-node: [accent]Power Nodes[].
|
hint.generator = :combustion-generator: [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with :power-node: [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 :graphite: [accent]Graphite[] :duo:Duo/:salvo:Salvo ammunition to take Guardians down.
|
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 :graphite: [accent]Graphite[] :duo:Duo/:salvo:Salvo ammunition to take Guardians down.
|
||||||
hint.coreUpgrade = Cores can be upgraded by [accent]placing higher-tier cores over them[].\n\nPlace a :core-foundation: [accent]Foundation[] core over the :core-shard: [accent]Shard[] core. Make sure it is free from nearby obstructions.
|
hint.coreUpgrade = Cores can be upgraded by [accent]placing higher-tier cores over them[].\n\nPlace a :core-foundation: [accent]Foundation[] core over the :core-shard: [accent]Shard[] core. Make sure it is free from nearby obstructions.
|
||||||
|
hint.serpuloCoreZone = Additional cores may be constructed on :core-zone: [accent]Core Zone[] tiles.
|
||||||
hint.cannotUpgrade = A [red]:tree:[] icon over a payload unit indicates that its upgraded version is not researched yet.\n\nUnit upgrades must be researched in the [accent]:tree: tech tree[] before they can be produced in reconstructors.
|
hint.cannotUpgrade = A [red]:tree:[] icon over a payload unit indicates that its upgraded version is not researched yet.\n\nUnit upgrades must be researched in the [accent]:tree: tech tree[] before they can be produced in reconstructors.
|
||||||
hint.presetLaunch = Gray [accent]landing zone sectors[], such as [accent]Frozen Forest[], can be launched to from anywhere. They do not require capture of nearby territory.\n\n[accent]Numbered sectors[], such as this one, are [accent]optional[].
|
hint.presetLaunch = Gray [accent]landing zone sectors[], such as [accent]Frozen Forest[], can be launched to from anywhere. They do not require capture of nearby territory.\n\n[accent]Numbered sectors[], such as this one, are [accent]optional[].
|
||||||
hint.presetDifficulty = This sector has a [scarlet]high enemy threat level[].\nLaunching to such sectors is [accent]not recommended[] without proper technology and preparation.
|
hint.presetDifficulty = This sector has a [scarlet]high enemy threat level[].\nLaunching to such sectors is [accent]not recommended[] without proper technology and preparation.
|
||||||
|
|||||||
@@ -172,6 +172,12 @@ public class Logic implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Events.on(BlockDestroyEvent.class, e -> {
|
||||||
|
if(e.tile.team() != state.rules.defaultTeam){
|
||||||
|
state.stats.destroyedBlockCount.increment(e.tile.block());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
Events.on(UnitDestroyEvent.class, e -> {
|
Events.on(UnitDestroyEvent.class, e -> {
|
||||||
if(e.unit.team() != state.rules.defaultTeam){
|
if(e.unit.team() != state.rules.defaultTeam){
|
||||||
state.stats.enemyUnitsDestroyed ++;
|
state.stats.enemyUnitsDestroyed ++;
|
||||||
|
|||||||
@@ -555,7 +555,7 @@ public class EventType{
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Called right before a block is destroyed.
|
/** Called right before a block is destroyed.
|
||||||
* The tile entity of the tile in this event cannot be null when this happens.*/
|
* The building of the tile in this event cannot be null when this happens.*/
|
||||||
public static class BlockDestroyEvent{
|
public static class BlockDestroyEvent{
|
||||||
public final Tile tile;
|
public final Tile tile;
|
||||||
|
|
||||||
|
|||||||
@@ -19,9 +19,19 @@ public class GameStats{
|
|||||||
public int unitsCreated;
|
public int unitsCreated;
|
||||||
/** Record of blocks that have been placed by count. Used for objectives only. */
|
/** Record of blocks that have been placed by count. Used for objectives only. */
|
||||||
public ObjectIntMap<Block> placedBlockCount = new ObjectIntMap<>();
|
public ObjectIntMap<Block> placedBlockCount = new ObjectIntMap<>();
|
||||||
|
/** Record of enemy blocks that have been destroyed (from any source) by count. */
|
||||||
|
public ObjectIntMap<Block> destroyedBlockCount = new ObjectIntMap<>();
|
||||||
/**
|
/**
|
||||||
* Record of items that have entered the core through transport blocks. Used for objectives only.
|
* Record of items that have entered the core through transport blocks. Used for objectives only.
|
||||||
* This can easily be ""spoofed"" with unloaders, so don't use it for anything remotely important.
|
* This can easily be ""spoofed"" with unloaders, so don't use it for anything remotely important.
|
||||||
* */
|
* */
|
||||||
public ObjectIntMap<Item> coreItemCount = new ObjectIntMap<>();
|
public ObjectIntMap<Item> coreItemCount = new ObjectIntMap<>();
|
||||||
|
|
||||||
|
public int getPlaced(Block block){
|
||||||
|
return placedBlockCount.get(block, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getDestroyed(Block block){
|
||||||
|
return destroyedBlockCount.get(block, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -196,6 +196,10 @@ public class HintsFragment{
|
|||||||
&& state.rules.defaultTeam.core().block == Blocks.coreShard
|
&& state.rules.defaultTeam.core().block == Blocks.coreShard
|
||||||
&& state.rules.defaultTeam.core().items.has(Blocks.coreFoundation.requirements),
|
&& state.rules.defaultTeam.core().items.has(Blocks.coreFoundation.requirements),
|
||||||
() -> ui.hints.placedBlocks.contains(Blocks.coreFoundation)),
|
() -> ui.hints.placedBlocks.contains(Blocks.coreFoundation)),
|
||||||
|
serpuloCoreZone(() -> state.isCampaign() && state.getPlanet() == Planets.serpulo && Vars.indexer.isBlockPresent(Blocks.coreZone) &&
|
||||||
|
(!state.rules.attackMode || state.stats.getDestroyed(Blocks.coreShard) + state.stats.getDestroyed(Blocks.coreFoundation) + state.stats.getDestroyed(Blocks.coreNucleus) > 0),
|
||||||
|
() -> state.rules.defaultTeam.cores().size > 1),
|
||||||
|
|
||||||
presetLaunch(() -> state.isCampaign()
|
presetLaunch(() -> state.isCampaign()
|
||||||
&& state.getSector().preset == null,
|
&& state.getSector().preset == null,
|
||||||
() -> state.isCampaign() && state.getSector().preset == SectorPresets.frozenForest),
|
() -> state.isCampaign() && state.getSector().preset == SectorPresets.frozenForest),
|
||||||
|
|||||||
Reference in New Issue
Block a user