v3.3.5: fixed distortion traps not possibly spawning all rare mob alts
This commit is contained in:
@@ -28,6 +28,7 @@ import com.watabou.utils.Random;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class MobSpawner extends Actor {
|
public class MobSpawner extends Actor {
|
||||||
{
|
{
|
||||||
@@ -245,24 +246,31 @@ public class MobSpawner extends Actor {
|
|||||||
for (int i = 0; i < rotation.size(); i++) {
|
for (int i = 0; i < rotation.size(); i++) {
|
||||||
if (Random.Float() < altChance) {
|
if (Random.Float() < altChance) {
|
||||||
Class<? extends Mob> cl = rotation.get(i);
|
Class<? extends Mob> cl = rotation.get(i);
|
||||||
if (cl == Rat.class) cl = Albino.class;
|
Class<? extends Mob> alt = RARE_ALTS.get(cl);
|
||||||
else if (cl == Gnoll.class) cl = GnollExile.class;
|
if (alt != null) {
|
||||||
else if (cl == Crab.class) cl = HermitCrab.class;
|
|
||||||
else if (cl == Slime.class) cl = CausticSlime.class;
|
|
||||||
|
|
||||||
else if (cl == Thief.class) cl = Bandit.class;
|
|
||||||
else if (cl == Necromancer.class) cl = SpectralNecromancer.class;
|
|
||||||
|
|
||||||
else if (cl == Brute.class) cl = ArmoredBrute.class;
|
|
||||||
else if (cl == DM200.class) cl = DM201.class;
|
|
||||||
|
|
||||||
else if (cl == Monk.class) cl = Senior.class;
|
|
||||||
//chaos elemental spawning happens in Elemental.Random
|
|
||||||
|
|
||||||
else if (cl == Scorpio.class) cl = Acidic.class;
|
|
||||||
|
|
||||||
rotation.set(i, cl);
|
rotation.set(i, cl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final HashMap<Class<?extends Mob>, Class<?extends Mob>> RARE_ALTS = new HashMap<>();
|
||||||
|
static {
|
||||||
|
RARE_ALTS.put(Rat.class, Albino.class);
|
||||||
|
RARE_ALTS.put(Gnoll.class, GnollExile.class);
|
||||||
|
RARE_ALTS.put(Crab.class, HermitCrab.class);
|
||||||
|
RARE_ALTS.put(Slime.class, CausticSlime.class);
|
||||||
|
|
||||||
|
RARE_ALTS.put(Thief.class, Bandit.class);
|
||||||
|
RARE_ALTS.put(Necromancer.class, SpectralNecromancer.class);
|
||||||
|
|
||||||
|
RARE_ALTS.put(Brute.class, ArmoredBrute.class);
|
||||||
|
RARE_ALTS.put(DM200.class, DM201.class);
|
||||||
|
|
||||||
|
RARE_ALTS.put(Monk.class, Senior.class);
|
||||||
|
//swapping to chaos elemental actually happens in Elemental.random
|
||||||
|
RARE_ALTS.put(Elemental.class, Elemental.ChaosElemental.class);
|
||||||
|
|
||||||
|
RARE_ALTS.put(Scorpio.class, Acidic.class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,13 +59,6 @@ public class DistortionTrap extends Trap{
|
|||||||
shape = LARGE_DOT;
|
shape = LARGE_DOT;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final ArrayList<Class<?extends Mob>> RARE = new ArrayList<>(Arrays.asList(
|
|
||||||
Albino.class, CausticSlime.class,
|
|
||||||
Bandit.class,
|
|
||||||
ArmoredBrute.class, DM201.class,
|
|
||||||
Elemental.ChaosElemental.class, Senior.class,
|
|
||||||
Acidic.class));
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void activate() {
|
public void activate() {
|
||||||
|
|
||||||
@@ -134,7 +127,7 @@ public class DistortionTrap extends Trap{
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
mob = Reflection.newInstance(Random.element(RARE));
|
mob = Reflection.newInstance(Random.element(MobSpawner.RARE_ALTS.values()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user