mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
Merge branch 'master' into 'master'
Allow defining AI profile for Adventure monsters. See merge request core-developers/forge!6495
This commit is contained in:
@@ -226,7 +226,6 @@ public class StaticData {
|
|||||||
}
|
}
|
||||||
public void attemptToLoadCard(String cardName, String setCode) {
|
public void attemptToLoadCard(String cardName, String setCode) {
|
||||||
CardRules rules = cardReader.attemptToLoadCard(cardName);
|
CardRules rules = cardReader.attemptToLoadCard(cardName);
|
||||||
CardRules customRules = null;
|
|
||||||
if (rules != null) {
|
if (rules != null) {
|
||||||
if (rules.isVariant()) {
|
if (rules.isVariant()) {
|
||||||
variantCards.loadCard(cardName, setCode, rules);
|
variantCards.loadCard(cardName, setCode, rules);
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ public class EnemyData {
|
|||||||
public String name;
|
public String name;
|
||||||
public String sprite;
|
public String sprite;
|
||||||
public String deck;
|
public String deck;
|
||||||
|
public String ai;
|
||||||
public float spawnRate;
|
public float spawnRate;
|
||||||
public float difficulty;
|
public float difficulty;
|
||||||
public float speed;
|
public float speed;
|
||||||
@@ -27,6 +28,7 @@ public class EnemyData {
|
|||||||
name =enemyData.name;
|
name =enemyData.name;
|
||||||
sprite =enemyData.sprite;
|
sprite =enemyData.sprite;
|
||||||
deck =enemyData.deck;
|
deck =enemyData.deck;
|
||||||
|
ai =enemyData.ai;
|
||||||
spawnRate =enemyData.spawnRate;
|
spawnRate =enemyData.spawnRate;
|
||||||
difficulty =enemyData.difficulty ;
|
difficulty =enemyData.difficulty ;
|
||||||
speed =enemyData.speed;
|
speed =enemyData.speed;
|
||||||
|
|||||||
@@ -107,12 +107,11 @@ public class DuelScene extends ForgeScene {
|
|||||||
humanPlayer.setStartingLife(Current.player().getLife());
|
humanPlayer.setStartingLife(Current.player().getLife());
|
||||||
Current.setLatestDeck(enemy.getData().generateDeck());
|
Current.setLatestDeck(enemy.getData().generateDeck());
|
||||||
RegisteredPlayer aiPlayer = RegisteredPlayer.forVariants(2, appliedVariants, Current.latestDeck(), null, false, null, null);
|
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());
|
FSkin.getAvatars().put(90000, this.enemy.getAvatar());
|
||||||
enemyPlayer.setAvatarIndex(90000);
|
enemyPlayer.setAvatarIndex(90000);
|
||||||
|
|
||||||
enemyPlayer.setName(this.enemy.getData().name);
|
|
||||||
aiPlayer.setPlayer(enemyPlayer);
|
aiPlayer.setPlayer(enemyPlayer);
|
||||||
aiPlayer.setStartingLife(Math.round((float)enemy.getData().life*Current.player().getDifficulty().enemyLifeFactor));
|
aiPlayer.setStartingLife(Math.round((float)enemy.getData().life*Current.player().getDifficulty().enemyLifeFactor));
|
||||||
|
|
||||||
@@ -184,8 +183,6 @@ public class DuelScene extends ForgeScene {
|
|||||||
return MatchController.getView();
|
return MatchController.getView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void setEnemy(EnemySprite data) {
|
public void setEnemy(EnemySprite data) {
|
||||||
this.enemy = data;
|
this.enemy = data;
|
||||||
}
|
}
|
||||||
@@ -193,5 +190,25 @@ public class DuelScene extends ForgeScene {
|
|||||||
public void setPlayer(PlayerSprite sprite) {
|
public void setPlayer(PlayerSprite sprite) {
|
||||||
this.player = 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2999,6 +2999,7 @@
|
|||||||
"deck": "decks/wurm.json",
|
"deck": "decks/wurm.json",
|
||||||
"spawnRate": 0.2,
|
"spawnRate": 0.2,
|
||||||
"difficulty": 0.1,
|
"difficulty": 0.1,
|
||||||
|
"ai": "reckless",
|
||||||
"speed": 15,
|
"speed": 15,
|
||||||
"life": 19,
|
"life": 19,
|
||||||
"rewards": [
|
"rewards": [
|
||||||
|
|||||||
Reference in New Issue
Block a user