mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-02-13 12:16:53 +07:00
New rule modifiers
This commit is contained in:
parent
6de4af727b
commit
148f272500
@ -505,6 +505,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI (Red Team) Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = 웨이브
|
||||
rules.enemyCheat = 무한 AI 자원
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = 유닛 드롭
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = 적 코어 건설 금지구역:[LIGHT_GRAY] (타일)
|
||||
rules.respawntime = 리스폰 시간:[LIGHT_GRAY] (초)
|
||||
rules.wavespacing = 웨이브 간격:[LIGHT_GRAY] (초)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Хвилі
|
||||
rules.enemyCheat = Нескінченні ресурси для ШІ
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Падіння бойових одиниць
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Радіус заборони будування для Ворожого Ядра:[LIGHT_GRAY] (плитки)
|
||||
rules.respawntime = Час відродження:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Інтервал хвиль:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -494,6 +494,9 @@ rules.waves = Waves
|
||||
rules.enemyCheat = Infinite AI Resources
|
||||
rules.pvp = PvP
|
||||
rules.unitdrops = Unit Drops
|
||||
rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier
|
||||
rules.unithealthmultiplier = Unit Health Multiplier
|
||||
rules.playerdamagemultiplier = Player Damage Multiplier
|
||||
rules.enemycorebuildradius = Enemy Core No-Build Radius:[LIGHT_GRAY] (tiles)
|
||||
rules.respawntime = Respawn Time:[LIGHT_GRAY] (sec)
|
||||
rules.wavespacing = Wave Spacing:[LIGHT_GRAY] (sec)
|
||||
|
@ -131,6 +131,17 @@ public class Bullet extends SolidEntity implements DamageTrait, ScaleTrait, Pool
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public float damageMultiplier(){
|
||||
if(owner instanceof Unit){
|
||||
return type.damage * ((Unit) owner).getDamageMultipler();
|
||||
}
|
||||
|
||||
if(owner instanceof Lightning && data instanceof Float){
|
||||
return (Float)data;
|
||||
}
|
||||
return 1f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void absorb(){
|
||||
supressCollision = true;
|
||||
@ -144,16 +155,7 @@ public class Bullet extends SolidEntity implements DamageTrait, ScaleTrait, Pool
|
||||
|
||||
@Override
|
||||
public float damage(){
|
||||
//todo hacky way to get damage, refactor
|
||||
if(owner instanceof Unit){
|
||||
return type.damage * ((Unit) owner).getDamageMultipler();
|
||||
}
|
||||
|
||||
if(owner instanceof Lightning && data instanceof Float){
|
||||
return (Float)data;
|
||||
}
|
||||
|
||||
return type.damage;
|
||||
return type.damage * damageMultiplier();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -125,7 +125,7 @@ public abstract class BulletType extends Content{
|
||||
}
|
||||
|
||||
if(splashDamageRadius > 0){
|
||||
Damage.damage(b.getTeam(), x, y, splashDamageRadius, splashDamage);
|
||||
Damage.damage(b.getTeam(), x, y, splashDamageRadius, splashDamage * b.damageMultiplier());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -217,7 +217,7 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
|
||||
|
||||
@Override
|
||||
public float maxHealth(){
|
||||
return type.health;
|
||||
return type.health * Vars.state.rules.unitHealthMultiplier;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -91,6 +91,11 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{
|
||||
player.mech = (player.isMobile ? Mechs.starterMobile : Mechs.starterDesktop);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getDamageMultipler(){
|
||||
return status.getDamageMultiplier() * state.rules.playerDamageMultiplier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hitbox(Rectangle rectangle){
|
||||
rectangle.setSize(mech.hitsize).setCenter(x, y);
|
||||
|
@ -28,6 +28,9 @@ public enum RulePreset{
|
||||
respawnTime = 60 * 10;
|
||||
buildCostMultiplier = 0.5f;
|
||||
buildSpeedMultiplier = 2f;
|
||||
playerDamageMultiplier = 0.5f;
|
||||
unitBuildSpeedMultiplier = 3f;
|
||||
unitHealthMultiplier = 2f;
|
||||
}});
|
||||
|
||||
private final Supplier<Rules> rules;
|
||||
|
@ -19,6 +19,12 @@ public class Rules{
|
||||
public boolean pvp;
|
||||
/**Whether enemy units drop random items on death.*/
|
||||
public boolean unitDrops;
|
||||
/**How fast unit pads build units.*/
|
||||
public float unitBuildSpeedMultiplier = 1f;
|
||||
/**How much health units start with.*/
|
||||
public float unitHealthMultiplier = 1f;
|
||||
/**How much damage player mechs deal.*/
|
||||
public float playerDamageMultiplier = 1f;
|
||||
/**Multiplier for buildings for the player.*/
|
||||
public float buildCostMultiplier = 1f;
|
||||
/**Multiplier for building speed.*/
|
||||
|
@ -43,6 +43,9 @@ public class CustomRulesDialog extends FloatingDialog{
|
||||
main.row();
|
||||
number("$rules.buildcostmultiplier", f -> rules.buildCostMultiplier = f, () -> rules.buildCostMultiplier);
|
||||
number("$rules.buildspeedmultiplier", f -> rules.buildSpeedMultiplier = f, () -> rules.buildSpeedMultiplier);
|
||||
number("$rules.unitbuildspeedmultiplier", f -> rules.unitBuildSpeedMultiplier = f, () -> rules.unitBuildSpeedMultiplier);
|
||||
number("$rules.unithealthmultiplier", f -> rules.unitHealthMultiplier = f, () -> rules.unitHealthMultiplier);
|
||||
number("$rules.playerdamagemultiplier", f -> rules.playerDamageMultiplier = f, () -> rules.playerDamageMultiplier);
|
||||
number("$rules.enemycorebuildradius", f -> rules.enemyCoreBuildRadius = f*tilesize, () -> Math.min(rules.enemyCoreBuildRadius/tilesize, 200));
|
||||
number("$rules.respawntime", f -> rules.respawnTime = f*60f, () -> rules.respawnTime/60f);
|
||||
number("$rules.wavespacing", f -> rules.waveSpacing = f*60f, () -> rules.waveSpacing/60f);
|
||||
|
@ -31,7 +31,7 @@ import io.anuke.mindustry.world.Tile;
|
||||
import static io.anuke.mindustry.Vars.*;
|
||||
|
||||
public class BlockInventoryFragment extends Fragment{
|
||||
private final static float holdWithdraw = 40f;
|
||||
private final static float holdWithdraw = 20f;
|
||||
|
||||
private Table table;
|
||||
private Tile tile;
|
||||
|
@ -176,8 +176,8 @@ public class UnitFactory extends Block{
|
||||
if(!tile.isEnemyCheat()){
|
||||
//player-made spawners have default behavior
|
||||
if(entity.cons.valid()){
|
||||
entity.time += entity.delta() * entity.speedScl;
|
||||
entity.buildTime += entity.delta() * entity.power.satisfaction;
|
||||
entity.time += entity.delta() * entity.speedScl * Vars.state.rules.unitBuildSpeedMultiplier;
|
||||
entity.buildTime += entity.delta() * entity.power.satisfaction * Vars.state.rules.unitBuildSpeedMultiplier;
|
||||
entity.speedScl = Mathf.lerpDelta(entity.speedScl, 1f, 0.05f);
|
||||
}else{
|
||||
entity.speedScl = Mathf.lerpDelta(entity.speedScl, 0f, 0.05f);
|
||||
|
Loading…
Reference in New Issue
Block a user