simple calculations with factionScores

This commit is contained in:
Nut.andor
2025-12-20 19:52:46 +01:00
parent ceb2b8e31e
commit cf6a1ade95
3 changed files with 63 additions and 1 deletions

View File

@@ -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";

View File

@@ -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 {

View File

@@ -9,6 +9,12 @@ public final class ScriptEffect {
, actorConditionImmunity
, alignmentChange
, alignmentSet
, alignmentToAkku
, alignmentFromAkku
, alignmentAdd
, alignmentSub
, alignmentMult
, alignmentDiv
, giveItem
, createTimer
, spawnAll