mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-02-11 11:17:11 +07:00
RTS max squad size
This commit is contained in:
parent
567394aced
commit
72b36d97bd
@ -1106,6 +1106,7 @@ rules.waves = Waves
|
||||
rules.attack = Attack Mode
|
||||
rules.rtsai = RTS AI
|
||||
rules.rtsminsquadsize = Min Squad Size
|
||||
rules.rtsmaxsquadsize = Max Squad Size
|
||||
rules.rtsminattackweight = Min Attack Weight
|
||||
rules.cleanupdeadteams = Clean Up Defeated Team Buildings (PvP)
|
||||
rules.corecapture = Capture Core On Destruction
|
||||
|
@ -109,6 +109,9 @@ public class RtsAI{
|
||||
if(unit.isCommandable() && !unit.command().hasCommand() && used.add(unit.id)){
|
||||
squad.clear();
|
||||
data.tree().intersect(unit.x - squadRadius/2f, unit.y - squadRadius/2f, squadRadius, squadRadius, squad);
|
||||
|
||||
squad.truncate(data.team.rules().rtsMaxSquad);
|
||||
|
||||
//remove overlapping squads
|
||||
squad.removeAll(u -> (u != unit && used.contains(u.id)) || !u.isCommandable() || u.command().hasCommand());
|
||||
//mark used so other squads can't steal them
|
||||
|
@ -2,6 +2,7 @@ package mindustry.entities.abilities;
|
||||
|
||||
import arc.graphics.*;
|
||||
import arc.util.*;
|
||||
import mindustry.*;
|
||||
import mindustry.content.*;
|
||||
import mindustry.entities.*;
|
||||
import mindustry.gen.*;
|
||||
@ -34,7 +35,7 @@ public class MoveEffectAbility extends Ability{
|
||||
@Override
|
||||
public void update(Unit unit){
|
||||
counter += Time.delta;
|
||||
if(unit.vel.len2() >= minVelocity * minVelocity && (counter >= interval)){
|
||||
if(unit.vel.len2() >= minVelocity * minVelocity && (counter >= interval) && !unit.inFogTo(Vars.player.team())){
|
||||
Tmp.v1.trns(unit.rotation - 90f, x, y);
|
||||
counter %= interval;
|
||||
effect.at(Tmp.v1.x + unit.x, Tmp.v1.y + unit.y, (rotateEffect ? unit.rotation : effectParam) + rotation, teamColor ? unit.team.color : color, parentizeEffects ? unit : null);
|
||||
|
@ -234,6 +234,8 @@ public class Rules{
|
||||
public boolean rtsAi;
|
||||
/** Minimum size of attack squads. */
|
||||
public int rtsMinSquad = 4;
|
||||
/** Maximum size of attack squads. */
|
||||
public int rtsMaxSquad = 1000;
|
||||
/** Minimum "advantage" needed for a squad to attack. Higher -> more cautious. */
|
||||
public float rtsMinWeight = 1.2f;
|
||||
|
||||
|
@ -269,6 +269,7 @@ public class CustomRulesDialog extends BaseDialog{
|
||||
|
||||
check("@rules.rtsai", b -> teams.rtsAi = b, () -> teams.rtsAi, () -> team != rules.defaultTeam);
|
||||
numberi("@rules.rtsminsquadsize", f -> teams.rtsMinSquad = f, () -> teams.rtsMinSquad, () -> teams.rtsAi, 0, 100);
|
||||
numberi("@rules.rtsmaxsquadsize", f -> teams.rtsMaxSquad = f, () -> teams.rtsMaxSquad, () -> teams.rtsAi, 1, 1000);
|
||||
number("@rules.rtsminattackweight", f -> teams.rtsMinWeight = f, () -> teams.rtsMinWeight, () -> teams.rtsAi);
|
||||
|
||||
check("@rules.infiniteresources", b -> teams.infiniteResources = b, () -> teams.infiniteResources);
|
||||
|
@ -10,9 +10,7 @@ import mindustry.type.*;
|
||||
import mindustry.world.consumers.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
/**
|
||||
* A generator that just takes in certain items or liquids. Basically SingleTypeGenerator, but not unreliable garbage.
|
||||
*/
|
||||
/** A generator that just takes in certain items or liquids. */
|
||||
public class ConsumeGenerator extends PowerGenerator{
|
||||
/** The time in number of ticks during which a single item will produce power. */
|
||||
public float itemDuration = 120f;
|
||||
|
Loading…
Reference in New Issue
Block a user