Merge branch 'temp_dev6' into 'master'

Allow for Seeded RNG in simulation games!

See merge request core-developers/forge!499
This commit is contained in:
Sol
2018-05-01 01:01:30 +00:00
19 changed files with 50 additions and 23 deletions

View File

@@ -2216,7 +2216,9 @@ public class ComputerUtil {
}
return ComputerUtilCard.getBestAI(list);
} else {
return Iterables.getFirst(votes.keySet(), null);
// TODO: This is just picking randomly amongst already picked things. It should probably pick the worst instead.
List<Object> a = Arrays.asList(votes.keySet().toArray());
return a.get(MyRandom.getRandom().nextInt(a.size()));
}
case "Protection":
if (votes.isEmpty()) {

View File

@@ -134,7 +134,11 @@ public class ComputerUtilMana {
Collections.sort(orderedCards, new Comparator<Card>() {
@Override
public int compare(final Card card1, final Card card2) {
return Integer.compare(manaCardMap.get(card1), manaCardMap.get(card2));
int result = Integer.compare(manaCardMap.get(card1), manaCardMap.get(card2));
if(result == 0) {
result = Float.compare(card1.getTimestamp(), card2.getTimestamp());
}
return result;
}
});
@@ -308,7 +312,7 @@ public class ComputerUtilMana {
}
// select which abilities may be used for each shard
Multimap<ManaCostShard, SpellAbility> sourcesForShards = ComputerUtilMana.groupAndOrderToPayShards(ai, manaAbilityMap, cost);
ListMultimap<ManaCostShard, SpellAbility> sourcesForShards = ComputerUtilMana.groupAndOrderToPayShards(ai, manaAbilityMap, cost);
sortManaAbilities(sourcesForShards);
@@ -858,7 +862,6 @@ public class ComputerUtilMana {
}
AiController aic = ((PlayerControllerAi)ai.getController()).getAi();
int chanceToReserve = aic.getIntProperty(AiProps.RESERVE_MANA_FOR_MAIN2_CHANCE);
PhaseType curPhase = ai.getGame().getPhaseHandler().getPhase();
@@ -877,7 +880,8 @@ public class ComputerUtilMana {
// obey mana reservations for Main 2; otherwise, obey mana reservations depending on the "chance to reserve"
// AI profile variable.
if (sa.getSVar("LowPriorityAI").equals("")) {
if (chanceToReserve == 0 || MyRandom.getRandom().nextInt(100) >= chanceToReserve) {
float chanceToReserve = aic.getFloatProperty(AiProps.RESERVE_MANA_FOR_MAIN2_CHANCE);
if (MyRandom.getRandom().nextDouble() >= chanceToReserve) {
return false;
}
}

View File

@@ -5,6 +5,7 @@ import java.util.List;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import forge.ai.ComputerUtilAbility;
import forge.ai.ComputerUtilCard;

View File

@@ -2,6 +2,7 @@ package forge.ai.ability;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import forge.ai.ComputerUtil;
import forge.ai.SpellAbilityAi;
import forge.game.player.Player;

View File

@@ -2,6 +2,7 @@ package forge.ai.ability;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import forge.ai.ComputerUtil;
import forge.ai.ComputerUtilCard;
import forge.ai.SpellAbilityAi;

View File

@@ -2,6 +2,7 @@ package forge.ai.ability;
import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
import forge.ai.ComputerUtil;
import forge.ai.ComputerUtilCost;
import forge.ai.ComputerUtilMana;

View File

@@ -1,6 +1,7 @@
package forge.ai.ability;
import com.google.common.base.Predicates;
import forge.ai.ComputerUtil;
import forge.ai.ComputerUtilCard;
import forge.ai.ComputerUtilMana;

View File

@@ -1,6 +1,7 @@
package forge.ai.ability;
import com.google.common.collect.Iterables;
import forge.ai.SpellAbilityAi;
import forge.game.card.Card;
import forge.game.card.CounterType;

View File

@@ -1,6 +1,7 @@
package forge.ai.ability;
import com.google.common.collect.Maps;
import forge.ai.ComputerUtil;
import forge.ai.ComputerUtilMana;
import forge.ai.SpellAbilityAi;

View File

@@ -1,6 +1,7 @@
package forge.ai.ability;
import com.google.common.base.Predicates;
import forge.ai.ComputerUtil;
import forge.ai.ComputerUtilCard;
import forge.ai.SpellAbilityAi;

View File

@@ -1,6 +1,7 @@
package forge.ai.ability;
import com.google.common.base.Predicate;
import forge.ai.ComputerUtilCard;
import forge.ai.SpecialCardAi;
import forge.ai.SpellAbilityAi;

View File

@@ -1,6 +1,7 @@
package forge.ai.ability;
import com.google.common.base.Predicates;
import forge.ai.ComputerUtilMana;
import forge.ai.SpellAbilityAi;
import forge.game.ability.ApiType;

View File

@@ -1,6 +1,7 @@
package forge.ai.ability;
import com.google.common.base.Predicate;
import forge.ai.ComputerUtilCard;
import forge.ai.SpellAbilityAi;
import forge.card.CardSplitType;