v1.3.0: ascension challenge now better controls enemy numbers and aggro
This commit is contained in:
@@ -415,12 +415,17 @@ public class Dungeon {
|
|||||||
PathFinder.setMapSize(level.width(), level.height());
|
PathFinder.setMapSize(level.width(), level.height());
|
||||||
|
|
||||||
Dungeon.level = level;
|
Dungeon.level = level;
|
||||||
|
hero.pos = pos;
|
||||||
|
|
||||||
Mob.restoreAllies( level, pos );
|
Mob.restoreAllies( level, pos );
|
||||||
|
|
||||||
|
if (hero.buff(AscensionChallenge.class) != null){
|
||||||
|
hero.buff(AscensionChallenge.class).onLevelSwitch();
|
||||||
|
}
|
||||||
|
|
||||||
Actor.init();
|
Actor.init();
|
||||||
|
|
||||||
level.addRespawner();
|
level.addRespawner();
|
||||||
|
|
||||||
hero.pos = pos;
|
|
||||||
|
|
||||||
for(Mob m : level.mobs){
|
for(Mob m : level.mobs){
|
||||||
if (m.pos == hero.pos){
|
if (m.pos == hero.pos){
|
||||||
@@ -439,10 +444,6 @@ public class Dungeon {
|
|||||||
|
|
||||||
hero.curAction = hero.lastAction = null;
|
hero.curAction = hero.lastAction = null;
|
||||||
|
|
||||||
if (hero.buff(AscensionChallenge.class) != null){
|
|
||||||
hero.buff(AscensionChallenge.class).onLevelSwitch();
|
|
||||||
}
|
|
||||||
|
|
||||||
observe();
|
observe();
|
||||||
try {
|
try {
|
||||||
saveAll();
|
saveAll();
|
||||||
|
|||||||
+14
-2
@@ -89,12 +89,14 @@ public class AscensionChallenge extends Buff {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//mobs get constantly beckoned to the hero at 2.5+ stacks
|
//distant mobs get constantly beckoned to the hero at 2.5+ stacks
|
||||||
public static void beckonEnemies(){
|
public static void beckonEnemies(){
|
||||||
if (Dungeon.hero.buff(AscensionChallenge.class) != null
|
if (Dungeon.hero.buff(AscensionChallenge.class) != null
|
||||||
&& Dungeon.hero.buff(AscensionChallenge.class).stacks >= 2.5f){
|
&& Dungeon.hero.buff(AscensionChallenge.class).stacks >= 2.5f){
|
||||||
for (Mob m : Dungeon.level.mobs){
|
for (Mob m : Dungeon.level.mobs){
|
||||||
if (m.alignment == Char.Alignment.ENEMY) m.beckon(Dungeon.hero.pos);
|
if (m.alignment == Char.Alignment.ENEMY && m.distance(Dungeon.hero) > 8) {
|
||||||
|
m.beckon(Dungeon.hero.pos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -204,6 +206,16 @@ public class AscensionChallenge extends Buff {
|
|||||||
} else if (stacks >= 2.5f){
|
} else if (stacks >= 2.5f){
|
||||||
toSay = Messages.get(this, "beckon");
|
toSay = Messages.get(this, "beckon");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//clears any existing mobs from the level and adds one initial one
|
||||||
|
//this helps balance difficulty between levels with lots of mobs left, and ones with few
|
||||||
|
for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) {
|
||||||
|
if (!mob.reset()) {
|
||||||
|
Dungeon.level.mobs.remove( mob );
|
||||||
|
}
|
||||||
|
Dungeon.level.spawnMob(12);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -650,11 +650,11 @@ public abstract class Level implements Bundlable {
|
|||||||
public float respawnCooldown(){
|
public float respawnCooldown(){
|
||||||
if (Statistics.amuletObtained){
|
if (Statistics.amuletObtained){
|
||||||
if (Dungeon.depth == 1){
|
if (Dungeon.depth == 1){
|
||||||
//very fast spawns on floor 1! 0/2/4/6/8/10, etc.
|
//very fast spawns on floor 1! 2/4/6/8/10/12, etc.
|
||||||
return Dungeon.level.mobCount() * (TIME_TO_RESPAWN / 25f);
|
return (1+Dungeon.level.mobCount()) * (TIME_TO_RESPAWN / 25f);
|
||||||
} else {
|
} else {
|
||||||
//respawn time is 0/6/13/19/25/25, etc.
|
//respawn time is 5/10/15/20/25/25, etc.
|
||||||
return Math.round(Math.min(Dungeon.level.mobCount() * (TIME_TO_RESPAWN / 8f), TIME_TO_RESPAWN / 2f));
|
return Math.round(Math.min((1+Dungeon.level.mobCount()) * (TIME_TO_RESPAWN / 10f), TIME_TO_RESPAWN / 2f));
|
||||||
}
|
}
|
||||||
} else if (Dungeon.level.feeling == Feeling.DARK){
|
} else if (Dungeon.level.feeling == Feeling.DARK){
|
||||||
return 2*TIME_TO_RESPAWN/3f;
|
return 2*TIME_TO_RESPAWN/3f;
|
||||||
|
|||||||
Reference in New Issue
Block a user