Merge branch 'master' into 'master'

Allow defining AI profile for Adventure monsters.

See merge request core-developers/forge!6495
This commit is contained in:
Michael Kamensky
2022-04-07 03:05:46 +00:00
4 changed files with 25 additions and 6 deletions

View File

@@ -226,7 +226,6 @@ public class StaticData {
}
public void attemptToLoadCard(String cardName, String setCode) {
CardRules rules = cardReader.attemptToLoadCard(cardName);
CardRules customRules = null;
if (rules != null) {
if (rules.isVariant()) {
variantCards.loadCard(cardName, setCode, rules);

View File

@@ -12,6 +12,7 @@ public class EnemyData {
public String name;
public String sprite;
public String deck;
public String ai;
public float spawnRate;
public float difficulty;
public float speed;
@@ -27,6 +28,7 @@ public class EnemyData {
name =enemyData.name;
sprite =enemyData.sprite;
deck =enemyData.deck;
ai =enemyData.ai;
spawnRate =enemyData.spawnRate;
difficulty =enemyData.difficulty ;
speed =enemyData.speed;

View File

@@ -107,12 +107,11 @@ public class DuelScene extends ForgeScene {
humanPlayer.setStartingLife(Current.player().getLife());
Current.setLatestDeck(enemy.getData().generateDeck());
RegisteredPlayer aiPlayer = RegisteredPlayer.forVariants(2, appliedVariants, Current.latestDeck(), null, false, null, null);
LobbyPlayer enemyPlayer = GamePlayerUtil.createAiPlayer();
LobbyPlayer enemyPlayer = GamePlayerUtil.createAiPlayer(this.enemy.getData().name, selectAI(this.enemy.getData().ai));
FSkin.getAvatars().put(90000, this.enemy.getAvatar());
enemyPlayer.setAvatarIndex(90000);
enemyPlayer.setName(this.enemy.getData().name);
aiPlayer.setPlayer(enemyPlayer);
aiPlayer.setStartingLife(Math.round((float)enemy.getData().life*Current.player().getDifficulty().enemyLifeFactor));
@@ -184,8 +183,6 @@ public class DuelScene extends ForgeScene {
return MatchController.getView();
}
public void setEnemy(EnemySprite data) {
this.enemy = data;
}
@@ -193,5 +190,25 @@ public class DuelScene extends ForgeScene {
public void setPlayer(PlayerSprite sprite) {
this.player = sprite;
}
private String selectAI(String ai) { //Decide opponent AI.
String AI = ""; //Use user settings if it's null.
if (ai != null){
switch (ai.toLowerCase()) { //We use this way to ensure capitalization is exact.
//We don't want misspellings here.
case "default":
AI = "Default"; break;
case "reckless":
AI = "Reckless"; break;
case "cautious":
AI = "Cautious"; break;
case "experimental":
AI = "Experimental"; break;
default:
AI = ""; //User settings.
}
}
return AI;
}
}

View File

@@ -2999,6 +2999,7 @@
"deck": "decks/wurm.json",
"spawnRate": 0.2,
"difficulty": 0.1,
"ai": "reckless",
"speed": 15,
"life": 19,
"rewards": [
@@ -3313,4 +3314,4 @@
}
]
}
]
]