diff --git a/AndorsTrail/app/src/main/java/com/gpl/rpg/AndorsTrail/controller/Constants.java b/AndorsTrail/app/src/main/java/com/gpl/rpg/AndorsTrail/controller/Constants.java index 6e0fe9287..0d90c3fd2 100644 --- a/AndorsTrail/app/src/main/java/com/gpl/rpg/AndorsTrail/controller/Constants.java +++ b/AndorsTrail/app/src/main/java/com/gpl/rpg/AndorsTrail/controller/Constants.java @@ -48,6 +48,7 @@ public final class Constants { public static final String FILENAME_WORLDMAP_HTMLFILE_SUFFIX = ".html"; public static final String FILENAME_SAVEGAME_FILENAME_PREFIX = "savegame"; public static final String PLACEHOLDER_PLAYERNAME = "$playername"; + public static final String PLACEHOLDER_AKKU = "$akku"; public static final String CHEAT_DETECTION_FOLDER = "dEAGyGE3YojqXjI3x4x7"; public static final String PASSIVE_ACHIEVEMENT_CHECK_PHRASE = "passive_achievement_check"; diff --git a/AndorsTrail/app/src/main/java/com/gpl/rpg/AndorsTrail/controller/ConversationController.java b/AndorsTrail/app/src/main/java/com/gpl/rpg/AndorsTrail/controller/ConversationController.java index 68d99c347..38115789c 100644 --- a/AndorsTrail/app/src/main/java/com/gpl/rpg/AndorsTrail/controller/ConversationController.java +++ b/AndorsTrail/app/src/main/java/com/gpl/rpg/AndorsTrail/controller/ConversationController.java @@ -100,6 +100,24 @@ public final class ConversationController { case alignmentSet: setAlignmentReward(player, effect.effectID, effect.value); break; + case alignmentToAkku: + toAkkuAlignmentReward(player, effect.effectID); + break; + case alignmentFromAkku: + fromAkkuAlignmentReward(player, effect.effectID); + break; + case alignmentAdd: + addAlignmentReward(player, effect.effectID); + break; + case alignmentSub: + subAlignmentReward(player, effect.effectID); + break; + case alignmentDiv: + divAlignmentReward(player, effect.effectID, effect.value); + break; + case alignmentMult: + multAlignmentReward(player, effect.effectID, effect.value); + break; case giveItem: addItemReward(effect.effectID, effect.value, result); break; @@ -195,6 +213,42 @@ public final class ConversationController { MovementController.refreshMonsterAggressiveness(world.model.currentMaps.map, world.model.player); } + private void toAkkuAlignmentReward(Player player, String faction) { + Integer i = player.getAlignment(faction); + player.setAlignment("Akku", i); + } + + private void fromAkkuAlignmentReward(Player player, String faction) { + Integer i = player.getAlignment("Akku"); + player.setAlignment(faction, i); + MovementController.refreshMonsterAggressiveness(world.model.currentMaps.map, world.model.player); + } + + private void addAlignmentReward(Player player, String faction) { + Integer i = player.getAlignment(faction); + player.addAlignment("Akku", i); + } + + private void subAlignmentReward(Player player, String faction) { + Integer i = -1 * player.getAlignment(faction); + player.addAlignment("Akku", i); + } + + private void divAlignmentReward(Player player, String faction, int delta ) { + Integer m, i1, i2; + if (delta == 0) { m = 1; } else { m = delta; } + i1 = player.getAlignment(faction) * m; + i2 = player.getAlignment("Akku"); + player.setAlignment("Akku", i1 % i2 ); + } + + private void multAlignmentReward(Player player, String faction, int delta ) { + Integer m, i; + if (delta == 0) { m = player.getAlignment("Akku"); } else { m = delta; } + i = player.getAlignment(faction) * m; + player.setAlignment("Akku", i ); + } + private void addQuestProgressReward(Player player, String questID, int questProgress, ScriptEffectResult result) { QuestProgress progress = new QuestProgress(questID, questProgress); boolean added = player.addQuestProgress(progress); @@ -372,7 +426,8 @@ public final class ConversationController { private static String getDisplayMessage(Phrase phrase, Player player) { return replacePlayerName(phrase.message, player); } private static String getDisplayMessage(Reply reply, Player player) { return replacePlayerName(reply.text, player); } private static String replacePlayerName(String s, Player player) { - return s.replace(Constants.PLACEHOLDER_PLAYERNAME, player.getName()); + return s.replace(Constants.PLACEHOLDER_PLAYERNAME, player.getName()) + .replace(Constants.PLACEHOLDER_AKKU, String.valueOf(player.getAlignment("akku"))); } public static final class ConversationStatemachine { diff --git a/AndorsTrail/app/src/main/java/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java b/AndorsTrail/app/src/main/java/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java index ee74a0cc2..db30d7282 100644 --- a/AndorsTrail/app/src/main/java/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java +++ b/AndorsTrail/app/src/main/java/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java @@ -9,6 +9,12 @@ public final class ScriptEffect { , actorConditionImmunity , alignmentChange , alignmentSet + , alignmentToAkku + , alignmentFromAkku + , alignmentAdd + , alignmentSub + , alignmentMult + , alignmentDiv , giveItem , createTimer , spawnAll