Compare commits

..

29 Commits

Author SHA1 Message Date
Nut.andor
af737c6362 liches from Antison 2026-01-01 14:02:02 +01:00
Nut.andor
e44b2b5cd2 Merge branch 'pulls/1829009049/98' into AT_Source_Next_Release 2025-12-28 19:32:47 +01:00
Nut.andor
307bdcb8f0 debug items 2025-12-28 03:29:31 +01:00
Nut.andor
eb19cfb1eb Scores +bonemeal usage 2025-12-28 01:47:30 +01:00
Nut.andor
4f1250e8ad Scores 2025-12-26 21:09:52 +01:00
Nut.andor
8525829f0f Merge branch 'AT_Source_Next_Release' into pulls/1829009049/98 2025-12-26 19:14:25 +01:00
Nut.andor
36e4552822 try to fix an exploit to speed up rounds 2025-12-26 18:55:32 +01:00
Nut.andor
97099791c2 teleport buttons to projects 2025-12-26 18:53:03 +01:00
Nut.andor
ceac7e6eb5 Scores 2025-12-26 18:09:39 +01:00
Nut.andor
4ec7c576b3 Pull Request #98: try to fix an exploit to speed up rounds 2025-12-26 17:34:24 +01:00
a2c2731061 try to fix an exploit to speed up rounds
this can be triggered by
 - walking up to an enemy
 - get the popup to attack it
 - cancel it, which finishes the round
 - repeat

with this it is very easy to for example use a heal over time food in a very short time or getting rid of an unwanted actor condition

the fix tries to just not grant a finished round when closing the window asking if the player wants to start attacking

Signed-off-by: OMGeeky <git@omgeeky.de>
2025-12-26 17:17:26 +01:00
Nut.andor
c0d7e973f2 moved temporary teleport buttons logic to projects 2025-12-23 23:53:31 +01:00
Nut
20984f75ce improve faction score math code
improve faction score math code
2025-12-21 17:31:56 +01:00
a8c3aad4b0 improve faction score math code
Signed-off-by: OMGeeky <git@omgeeky.de>
2025-12-21 17:04:48 +01:00
Nut.andor
a5b44e0dea simple calculations with factionScores 2025-12-21 02:53:27 +01:00
Nut.andor
3622584134 simple calculations with factionScores 2025-12-21 02:30:34 +01:00
Nut.andor
cf6a1ade95 simple calculations with factionScores 2025-12-21 02:18:50 +01:00
Nut.andor
ceb2b8e31e Teleport redesigned 2025-12-14 21:54:48 +01:00
Nut.andor
84411f9ac4 added sprites 2025-12-07 01:02:14 +01:00
Nut.andor
3efa527665 btn #6 2025-12-07 00:56:52 +01:00
Nut.andor
87a4feb2af new map sprites 2025-12-04 21:56:06 +01:00
Nut.andor
e8f89c55fb map_brightport.png changes 2025-11-21 21:22:40 +01:00
Nut.andor
a5fc31e18c new sprites 2025-11-04 00:05:50 +01:00
Nut.andor
d5266aabad Revert "Debug buttons for brightport2"
This reverts commit 56f63400cb.
2025-11-02 23:05:56 +01:00
Nut.andor
56f63400cb Debug buttons for brightport2 2025-11-02 23:05:05 +01:00
Nut.andor
a0772e2702 Merge branch 'master' into AT_Source_Next_Release 2025-11-02 23:00:39 +01:00
Nut.andor
182e95e847 prepared next version 0.8.16 (83) 2025-11-02 22:59:06 +01:00
Nut.andor
e1a62f38e3 Merge branch 'v0.8.15' 2025-11-01 19:36:07 +01:00
Nut.andor
4d73d67cda gitignore 2025-11-01 19:35:43 +01:00
27 changed files with 956 additions and 1859 deletions

View File

@@ -50,5 +50,6 @@ gradle-app.setting
/AndorsTrail/gradle/wrapper
/AndorsTrail/app/build/
/AndorsTrail/app/debug/
/AndorsTrail/app/beta/
/AndorsTrail/app/release/
/AndorsTrail/app/beta/

View File

@@ -3,8 +3,8 @@
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gpl.rpg.AndorsTrail"
android:versionCode="82"
android:versionName="0.8.15"
android:versionCode="83"
android:versionName="0.8.16"
android:installLocation="auto"
>

View File

@@ -29,9 +29,6 @@ public final class DebugInterface {
private final WorldContext world;
private DebugButton[] buttons;
private List<DebugButton> tpButtons = new ArrayList<DebugButton>();
private List<DebugButton> tpButtons2 = new ArrayList<DebugButton>();
private List<DebugButton> tpButtons3 = new ArrayList<DebugButton>();
public DebugInterface(ControllerContext controllers, WorldContext world, MainActivity mainActivity) {
this.controllerContext = controllers;
@@ -53,36 +50,23 @@ public final class DebugInterface {
for (int i = 1; i < buttons.length; i++) {
buttons[i].b.setVisibility(hidden ? View.GONE : View.VISIBLE);
}
for (DebugButton b : tpButtons) {
b.b.setVisibility(View.GONE);
}
for (DebugButton b : tpButtons2) {
b.b.setVisibility(View.GONE);
}
for (DebugButton b : tpButtons3) {
b.b.setVisibility(View.GONE);
}
}
})
,new DebugButton("teleport", new OnClickListener() {
public void onClick(View arg0) {
for (int i = 0; i < buttons.length; i++) {
buttons[i].b.setVisibility(View.GONE);
}
for (DebugButton tpButton : tpButtons) {
tpButton.b.setVisibility(View.VISIBLE);
}
}
})
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "debugmap", "entry", 0, 0);
}
})
,new DebugButton("dmg", new OnClickListener() {
@Override
public void onClick(View arg0) {
world.model.player.damagePotential.set(500, 500);
world.model.player.attackChance = 500;
world.model.player.attackCost = 1;
showToast(mainActivity, "DEBUG: damagePotential=500, chance=500%, cost=1", Toast.LENGTH_SHORT);
}
})
@Override
public void onClick(View arg0) {
world.model.player.damagePotential.set(500, 500);
world.model.player.attackChance = 500;
world.model.player.attackCost = 1;
showToast(mainActivity, "DEBUG: damagePotential=500, chance=500%, cost=1", Toast.LENGTH_SHORT);
}
})
/*,new DebugButton("dmg=1", new OnClickListener() {
@Override
public void onClick(View arg0) {
@@ -91,378 +75,78 @@ public final class DebugInterface {
}
})*/
,new DebugButton("itm", new OnClickListener() {
@Override
public void onClick(View arg0) {
for (ItemType item : world.itemTypes.UNITTEST_getAllItemTypes().values()) {
world.model.player.inventory.addItem(item, 10);
}
world.model.player.inventory.gold += 50000;
showToast(mainActivity, "DEBUG: added items", Toast.LENGTH_SHORT);
}
})
@Override
public void onClick(View arg0) {
for (ItemType item : world.itemTypes.UNITTEST_getAllItemTypes().values()) {
world.model.player.inventory.addItem(item, 10);
}
world.model.player.inventory.gold += 50000;
showToast(mainActivity, "DEBUG: added items", Toast.LENGTH_SHORT);
}
})
,new DebugButton("xp", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.actorStatsController.addExperience(10000);
showToast(mainActivity, "DEBUG: given 10000 exp", Toast.LENGTH_SHORT);
}
})
@Override
public void onClick(View arg0) {
controllerContext.actorStatsController.addExperience(10000);
showToast(mainActivity, "DEBUG: given 10000 exp", Toast.LENGTH_SHORT);
}
})
,new DebugButton("rst", new OnClickListener() {
@Override
public void onClick(View arg0) {
for(PredefinedMap map : world.maps.getAllMaps()) {
map.resetTemporaryData();
}
showToast(mainActivity, "DEBUG: maps respawned", Toast.LENGTH_SHORT);
}
})
@Override
public void onClick(View arg0) {
for(PredefinedMap map : world.maps.getAllMaps()) {
map.resetTemporaryData();
}
showToast(mainActivity, "DEBUG: maps respawned", Toast.LENGTH_SHORT);
}
})
,new DebugButton("hp", new OnClickListener() {
@Override
public void onClick(View arg0) {
world.model.player.baseTraits.maxHP = 500;
world.model.player.health.max = world.model.player.baseTraits.maxHP;
controllerContext.actorStatsController.setActorMaxHealth(world.model.player);
world.model.player.conditions.clear();
showToast(mainActivity, "DEBUG: hp set to max", Toast.LENGTH_SHORT);
}
})
@Override
public void onClick(View arg0) {
world.model.player.baseTraits.maxHP = 500;
world.model.player.health.max = world.model.player.baseTraits.maxHP;
controllerContext.actorStatsController.setActorMaxHealth(world.model.player);
world.model.player.conditions.clear();
showToast(mainActivity, "DEBUG: hp set to max", Toast.LENGTH_SHORT);
}
})
,new DebugButton("skl", new OnClickListener() {
@Override
public void onClick(View arg0) {
world.model.player.availableSkillIncreases += 10;
showToast(mainActivity, "DEBUG: 10 skill points", Toast.LENGTH_SHORT);
}
})
@Override
public void onClick(View arg0) {
world.model.player.availableSkillIncreases += 10;
showToast(mainActivity, "DEBUG: 10 skill points", Toast.LENGTH_SHORT);
}
})
,new DebugButton("spd", new OnClickListener() {
boolean fast = Constants.MINIMUM_INPUT_INTERVAL == Constants.MINIMUM_INPUT_INTERVAL_FAST;
@Override
public void onClick(View arg0) {
fast = !fast;
if (fast) {
Constants.MINIMUM_INPUT_INTERVAL = Constants.MINIMUM_INPUT_INTERVAL_FAST;
} else {
Constants.MINIMUM_INPUT_INTERVAL = Constants.MINIMUM_INPUT_INTERVAL_STD;
}
MainView.SCROLL_DURATION = Constants.MINIMUM_INPUT_INTERVAL;
AndorsTrailApplication.getApplicationFromActivity(mainActivity).getControllerContext().movementController.resetMovementHandler();
}
})
boolean fast = Constants.MINIMUM_INPUT_INTERVAL == Constants.MINIMUM_INPUT_INTERVAL_FAST;
@Override
public void onClick(View arg0) {
fast = !fast;
if (fast) {
Constants.MINIMUM_INPUT_INTERVAL = Constants.MINIMUM_INPUT_INTERVAL_FAST;
} else {
Constants.MINIMUM_INPUT_INTERVAL = Constants.MINIMUM_INPUT_INTERVAL_STD;
}
MainView.SCROLL_DURATION = Constants.MINIMUM_INPUT_INTERVAL;
AndorsTrailApplication.getApplicationFromActivity(mainActivity).getControllerContext().movementController.resetMovementHandler();
}
})
,new DebugButton("map", new OnClickListener() {
@Override
public void onClick(View arg0) {
showToast(mainActivity, "DEBUG: map=" + world.model.currentMaps.map.name , Toast.LENGTH_SHORT);
}
})
@Override
public void onClick(View arg0) {
showToast(mainActivity, "DEBUG: map=" + world.model.currentMaps.map.name , Toast.LENGTH_SHORT);
}
})
,new DebugButton("tim", new OnClickListener() {
@Override
public void onClick(View arg0) {
world.model.worldData.tickWorldTime(10);
}
})
}));
tpButtons.addAll(Arrays.asList(new DebugButton[] {
new DebugButton("teleport", new OnClickListener() {
@Override
public void onClick(View arg0) {
for (DebugButton tpButton : tpButtons2) {
tpButton.b.setVisibility(View.VISIBLE);
}
for (DebugButton tpButton : tpButtons) {
tpButton.b.setVisibility(View.GONE);
}
world.model.worldData.tickWorldTime(10);
}
})
,new DebugButton("cg", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "crossglen", "hall", 0, 0);
}
})
,new DebugButton("vg", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "vilegard_s", "tavern", 0, 0);
}
})
,new DebugButton("cr", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "crossroads", "middle", 0, 0);
}
})
,new DebugButton("lf", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "loneford9", "south", 0, 0);
}
})
,new DebugButton("fh", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "fallhaven_ne", "clothes", 0, 0);
}
})
,new DebugButton("prm", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "blackwater_mountain29", "south", 0, 0);
}
})
,new DebugButton("bwm", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "blackwater_mountain43", "south", 0, 0);
}
})
,new DebugButton("rmg", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "remgard0", "east", 0, 0);
}
})
,new DebugButton("chr", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "waytolostmine2", "minerhouse4", 0, 0);
}
})
,new DebugButton("ldr", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "lodarhouse0", "lodarhouse", 0, 0);
}
})
,new DebugButton("sf", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "wild20", "south2", 0, 0);
}
})
,new DebugButton("gm", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "guynmart_wood_1", "farmhouse", 0, 0);
}
})
}));
buttonList.addAll(tpButtons);
tpButtons2.addAll(Arrays.asList(new DebugButton[] {
new DebugButton("teleport", new OnClickListener() {
@Override
public void onClick(View arg0) {
for (DebugButton tpButton : tpButtons3) {
tpButton.b.setVisibility(View.VISIBLE);
}
for (DebugButton tpButton : tpButtons2) {
tpButton.b.setVisibility(View.GONE);
}
}
})
,new DebugButton("brv", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "brimhaven4", "south2", 0, 0);
}
})
,new DebugButton("aru", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "mountainlake5", "north", 0, 0);
}
})
,new DebugButton("ws", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "woodsettlement0", "east", 0, 0);
}
})
,new DebugButton("sul", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "sullengard2", "south", 0, 0);
}
})
,new DebugButton("gal", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "galmore_19", "south", 0, 0);
}
})
,new DebugButton("apl", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "sullengard_apple_farm_east", "house", 0, 0);
}
})
,new DebugButton("wch", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "lake_shore_road_0", "west", 0, 0);
}
})
,new DebugButton("la1", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "laerothisland2", "south2", 0, 0);
}
})
,new DebugButton("la2", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "island3", "cave", 0, 0);
}
})
,new DebugButton("wx", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "wexlow_village", "north", 0, 0);
}
})
,new DebugButton("fey", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "guynmart_wood_17", "north", 0, 0);
}
})
}));
buttonList.addAll(tpButtons2);
tpButtons3.addAll(Arrays.asList(new DebugButton[] {
new DebugButton("teleport", new OnClickListener() {
@Override
public void onClick(View arg0) {
for (int i = 0; i < buttons.length; i++) {
buttons[i].b.setVisibility(View.VISIBLE);
}
for (DebugButton tpButton : tpButtons) {
tpButton.b.setVisibility(View.GONE);
}
for (DebugButton tpButton : tpButtons2) {
tpButton.b.setVisibility(View.GONE);
}
for (DebugButton tpButton : tpButtons3) {
tpButton.b.setVisibility(View.GONE);
}
}
})
,new DebugButton("#1", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "lake_shore_road_9", "north", 5, 0);
}
})
,new DebugButton("#2", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "undertell_3_lava_01", "west", 0, 0);
}
})
,new DebugButton("#3", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "galmore_cavea", "up", 0, 0);
}
})
,new DebugButton("#4", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "galmore_35", "south", 11, 0);
}
})
,new DebugButton("#5", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "way_to_sullengard_west_5", "east", 0, 5);
}
})
,new DebugButton("#6", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "galmore_32", "south", 19, 0);
}
})
,new DebugButton("#7", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "cabin_norcity_road1", "north", 5, 0);
}
})
,new DebugButton("#8", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "wayto_feygard_duleian_2", "south", 0, 5);
}
})
,new DebugButton("#9", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "galmore_58", "north", 0, 0);
}
})
,new DebugButton("#10", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "moesforest_03", "north1", 0, 0);
}
})
,new DebugButton("#11", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "galmore_17", "outside", 0, 0);
}
})
,new DebugButton("#12", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "galmore_48", "west", 0, 10);
}
})
,new DebugButton("#13", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "feygard_outside1", "south", 6, 0);
}
})
}));
buttonList.addAll(tpButtons3);
buttons = buttonList.toArray(new DebugButton[buttonList.size()]);
addDebugButtons(buttons);
for (DebugButton b : tpButtons) {
b.b.setVisibility(View.GONE);
}
for (DebugButton b : tpButtons2) {
b.b.setVisibility(View.GONE);
}
for (DebugButton b : tpButtons3) {
b.b.setVisibility(View.GONE);
}
}
private void showToast(Context context, String msg, int duration) {

View File

@@ -139,7 +139,7 @@ public final class MainActivity
if (resultCode == Activity.RESULT_OK) {
controllers.combatController.enterCombat(CombatController.BeginTurnAs.player);
} else {
controllers.combatController.exitCombat(false);
controllers.combatController.exitCombat(false, true);
}
break;
case INTENTREQUEST_CONVERSATION:

View File

@@ -57,6 +57,9 @@ public final class CombatController implements VisualEffectCompletedCallback {
else continueTurn();
}
public void exitCombat(boolean pickupLootBags) {
exitCombat(pickupLootBags, false);
}
public void exitCombat(boolean pickupLootBags, boolean canceledCombat) {
setCombatSelection(null, null);
world.model.uiSelections.isInCombat = false;
if (pickupLootBags) {
@@ -66,7 +69,7 @@ public final class CombatController implements VisualEffectCompletedCallback {
controllers.actorStatsController.setActorMaxAP(world.model.player);
world.model.uiSelections.selectedPosition = null;
world.model.uiSelections.selectedMonster = null;
if (world.model.player.isDead()) {
if (world.model.player.isDead() || canceledCombat) {
controllers.gameRoundController.resetRoundTimers();
} else {
endOfCombatRound();

View File

@@ -48,9 +48,16 @@ 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_REG1 = "$reg1";
public static final String PLACEHOLDER_REG2 = "$reg2";
public static final String PLACEHOLDER_REG3 = "$reg3";
public static final String CHEAT_DETECTION_FOLDER = "dEAGyGE3YojqXjI3x4x7";
public static final String PASSIVE_ACHIEVEMENT_CHECK_PHRASE = "passive_achievement_check";
public static final String FACTION_SCORE_CALC_REGISTER1_NAME = "reg1";
public static final String FACTION_SCORE_CALC_REGISTER2_NAME = "reg2";
public static final String FACTION_SCORE_CALC_REGISTER3_NAME = "reg3";
public static final String SAVEGAME_FILE_MIME_TYPE = "application/octet-stream";
public static final String WORLDMAP_FILE_MIME_TYPE = "image/png";
public static final String NO_FILE_EXTENSION_MIME_TYPE = "application/no_file_extension_mime_type";

View File

@@ -100,6 +100,30 @@ public final class ConversationController {
case alignmentSet:
setAlignmentReward(player, effect.effectID, effect.value);
break;
case alignmentToReg1:
toAkkuAlignmentReward(player, effect.effectID, Constants.FACTION_SCORE_CALC_REGISTER1_NAME);
break;
case alignmentToReg2:
toAkkuAlignmentReward(player, effect.effectID, Constants.FACTION_SCORE_CALC_REGISTER2_NAME);
break;
case alignmentToReg3:
toAkkuAlignmentReward(player, effect.effectID, Constants.FACTION_SCORE_CALC_REGISTER3_NAME);
break;
case alignmentFromReg1:
fromAkkuAlignmentReward(player, effect.effectID, Constants.FACTION_SCORE_CALC_REGISTER1_NAME);
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 +219,47 @@ public final class ConversationController {
MovementController.refreshMonsterAggressiveness(world.model.currentMaps.map, world.model.player);
}
private void toAkkuAlignmentReward(Player player, String faction, String reg) {
Integer i = player.getAlignment(faction);
player.setAlignment(reg, i);
}
private void fromAkkuAlignmentReward(Player player, String faction, String reg) {
Integer i = player.getAlignment(reg);
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(Constants.FACTION_SCORE_CALC_REGISTER1_NAME, i);
}
private void subAlignmentReward(Player player, String faction) {
Integer i = -1 * player.getAlignment(faction);
player.addAlignment(Constants.FACTION_SCORE_CALC_REGISTER1_NAME, i);
}
/// @param multiplier multiplies the faction alignment before dividing. Use 100 for percentages.
private void divAlignmentReward(Player player, String faction, int multiplier ) {
Integer i1, i2;
if (multiplier == 0) { multiplier = 1; }
i1 = player.getAlignment(Constants.FACTION_SCORE_CALC_REGISTER1_NAME) * multiplier;
i2 = player.getAlignment(faction);
if (i2 != 0)
{
player.setAlignment(Constants.FACTION_SCORE_CALC_REGISTER1_NAME, i1 / i2 );
}
}
/// @param multiplier the factor to multiply by. If 0, uses the faction score from the {@link Constants.FACTION_SCORE_CALC_REGISTER1_NAME} as multiplier.
private void multAlignmentReward(Player player, String faction, int multiplier ) {
Integer i;
if (multiplier == 0) { multiplier = player.getAlignment(Constants.FACTION_SCORE_CALC_REGISTER1_NAME); }
i = player.getAlignment(faction) * multiplier;
player.setAlignment(Constants.FACTION_SCORE_CALC_REGISTER1_NAME, 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 +437,10 @@ 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_REG1, String.valueOf(player.getAlignment(Constants.FACTION_SCORE_CALC_REGISTER1_NAME)))
.replace(Constants.PLACEHOLDER_REG2, String.valueOf(player.getAlignment(Constants.FACTION_SCORE_CALC_REGISTER2_NAME)))
.replace(Constants.PLACEHOLDER_REG3, String.valueOf(player.getAlignment(Constants.FACTION_SCORE_CALC_REGISTER3_NAME)));
}
public static final class ConversationStatemachine {

View File

@@ -9,6 +9,16 @@ public final class ScriptEffect {
, actorConditionImmunity
, alignmentChange
, alignmentSet
, alignmentToReg1
, alignmentToReg2
, alignmentToReg3
, alignmentFromReg1
, alignmentFromReg2
, alignmentFromReg3
, alignmentAdd
, alignmentSub
, alignmentMult
, alignmentDiv
, giveItem
, createTimer
, spawnAll

View File

@@ -263,6 +263,7 @@ public final class ResourceLoader {
final Size sz7x4 = new Size(7, 4);
final Size sz8x3 = new Size(8, 3);
final Size sz8x4 = new Size(8, 4);
final Size sz10x2 = new Size(10, 2);
final Size sz16x8 = new Size(16, 8);
final Size sz16x10 = new Size(16, 10);
final Size sz20x12 = new Size(20, 12);
@@ -387,6 +388,7 @@ public final class ResourceLoader {
loader.prepareTileset(R.drawable.monsters_phoenix01, "monsters_phoenix01", sz16x8, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.monsters_cats, "monsters_cats", new Size(10, 2), sz1x1, mTileSize);
loader.prepareTileset(R.drawable.monsters_1x2, "monsters_1x2", new Size(10, 5), sz1x2, mTileSize);
loader.prepareTileset(R.drawable.monsters_antison, "monsters_antison", sz10x2, sz1x1, mTileSize);
/*INSERT_NPCS_TILESETS_HERE*/
loader.prepareTileset(R.drawable.map_bed_1, "map_bed_1", sz16x10, sz1x1, mTileSize);
@@ -423,6 +425,7 @@ public final class ResourceLoader {
loader.prepareTileset(R.drawable.map_ground_7, "map_ground_7", mapTileSize, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_ground_8, "map_ground_8", mapTileSize, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_ground_9, "map_ground_9", mapTileSize, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_ground_10, "map_ground_10", mapTileSize, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_guynmart, "map_guynmart", mapTileSize, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_house_1, "map_house_1", mapTileSize, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_house_2, "map_house_2", mapTileSize, sz1x1, mTileSize);
@@ -454,6 +457,7 @@ public final class ResourceLoader {
loader.prepareTileset(R.drawable.map_sign_ladder_omi2, "map_sign_ladder_omi2", new Size(8, 4), sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_table_1, "map_table_1", mapTileSize, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_table_2, "map_table_2", new Size(14, 8), sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_table_3, "map_table_3", new Size(12, 10), sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_temple_1, "map_temple_1", new Size(23, 16), sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_trail_1, "map_trail_1", mapTileSize, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_transition_1, "map_transition_1", mapTileSize, sz1x1, mTileSize);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -1,47 +1,2 @@
[
{
"id": "chaotic_grip",
"iconID": "actorconditions_1:96",
"name": "Chaotic grip",
"category": "mental",
"abilityEffect": {
"increaseBlockChance": -10,
"increaseDamageResistance": -1
}
},
{
"id": "chaotic_test",
"iconID": "actorconditions_1:95",
"name": "Chaotic test",
"category": "mental",
"abilityEffect": {
"increaseBlockChance": -10,
"increaseDamageResistance": -1
}
},
{
"id": "chaotic_test2",
"iconID": "actorconditions_1:94",
"name": "Chaotic test2",
"category": "mental",
"abilityEffect": {
"increaseBlockChance": -10,
"increaseDamageResistance": -1
}
},
{
"id": "chaotic_curse",
"iconID": "actorconditions_1:89",
"name": "Chaotic curse",
"category": "mental",
"abilityEffect": {
"increaseMaxAP": -1,
"increaseAttackDamage": {
"min": -1,
"max": -1
},
"increaseBlockChance": -10,
"increaseDamageResistance": -1
}
}
]

View File

@@ -1,485 +1,270 @@
[
{
"id": "debugshop",
"message": "Welcome adventurer!",
"replies": [
{
"text": "Trade items very very long text",
"nextPhraseID": "S"
},
{
"text": "Bye",
"nextPhraseID": "X"
},
{
"text": "Fight",
"nextPhraseID": "F"
}
]
"id": "dbg_teleport",
"message": "Where do you want to travel?",
"replies": [{ "text": "Project Undertell", "nextPhraseID": "dbg_teleport_prj_undertell" },
{ "text": "Project Brightport", "nextPhraseID": "dbg_teleport_prj_brightport2" },
{ "text": "More Projects", "nextPhraseID": "dbg_teleport_prj" },
{ "text": "Crossglen", "nextPhraseID": "dbg_teleport_crossglen" },
{ "text": "Fallhaven", "nextPhraseID": "dbg_teleport_fallhaven" },
{ "text": "Vilegard", "nextPhraseID": "dbg_teleport_vilegard" },
{ "text": "Crossroads", "nextPhraseID": "dbg_teleport_crossroads" },
{ "text": "Loneford", "nextPhraseID": "dbg_teleport_loneford" },
{ "text": "BWM", "nextPhraseID": "dbg_teleport_bwm" },
{ "text": "Prim", "nextPhraseID": "dbg_teleport_prim" },
{ "text": "Remgard", "nextPhraseID": "dbg_teleport_remgard" },
{ "text": "Charwood", "nextPhraseID": "dbg_teleport_charwood" },
{ "text": "Lodar", "nextPhraseID": "dbg_teleport_lodar" },
{ "text": "Stoutford", "nextPhraseID": "dbg_teleport_stoutford" },
{ "text": "Feygard", "nextPhraseID": "dbg_teleport_feygard" },
{ "text": "Nor City", "nextPhraseID": "dbg_teleport_norcity" },
{ "text": "More locations", "nextPhraseID": "dbg_teleport_loc" },
{ "text": "Bye", "nextPhraseID": "X" }]
},
{
"id": "debugquest",
"message": "Debug quest start\nTest.",
"rewards": [
{
"rewardType": "questProgress",
"rewardID": "debugquest",
"value": 10
}
],
"replies": [
{
"text": "Iron sword*2",
"nextPhraseID": "debugquest2",
"requires": [
{
"requireType": "inventoryRemove",
"requireID": "dagger0",
"value": 1
}
]
},
{
"text": "Progress+=10",
"nextPhraseID": "debugquest4"
},
{
"text": "Progress=100",
"nextPhraseID": "debugquest1",
"requires": [
{
"requireType": "questProgress",
"requireID": "debugquest",
"value": "100"
}
]
}
]
"id": "dbg_teleport_loc",
"message": "Other locations",
"replies": [{ "text": "Brightport", "nextPhraseID": "dbg_teleport_brightport" },
{ "text": "Guynmart", "nextPhraseID": "dbg_teleport_guynmart" },
{ "text": "Brimhaven", "nextPhraseID": "dbg_teleport_brimhaven" },
{ "text": "Arulir Mountain", "nextPhraseID": "dbg_teleport_arulir" },
{ "text": "Wood settlement", "nextPhraseID": "dbg_teleport_woodsettlement" },
{ "text": "Sullengard", "nextPhraseID": "dbg_teleport_sullengard" },
{ "text": "Mt. Galmore", "nextPhraseID": "dbg_teleport_galmore" },
{ "text": "Deebo's Apple Orchard", "nextPhraseID": "dbg_teleport_applefarm" },
{ "text": "Witch house", "nextPhraseID": "dbg_teleport_witchhouse" },
{ "text": "Lake Laeroth - Manor", "nextPhraseID": "dbg_teleport_laerot1" },
{ "text": "Lake Laeroth - Not Pony Island", "nextPhraseID": "dbg_teleport_laerot2" },
{ "text": "Wexlow Village", "nextPhraseID": "dbg_teleport_wexlow" },
{ "text": "Back", "nextPhraseID": "dbg_teleport" }]
},
{
"id": "debugquest1",
"message": "Yes, you have already completed this quest.",
"rewards": [
{
"rewardType": "dropList",
"rewardID": "debuglist1"
}
],
"replies": [
{
"text": "Next",
"nextPhraseID": "debugquest3"
}
]
"id":"dbg_teleport_crossglen",
"rewards":[{ "rewardType":"mapchange", "rewardID":"hall", "mapName":"crossglen" }]
},
{
"id": "debugquest2",
"message": "Thank you for the items.",
"rewards": [
{
"rewardType": "questProgress",
"rewardID": "debugquest",
"value": 100
}
],
"replies": [
{
"text": "Next",
"nextPhraseID": "debugquest3"
}
]
"id":"dbg_teleport_fallhaven",
"rewards":[{ "rewardType":"mapchange", "rewardID":"clothes", "mapName":"fallhaven_ne" }]
},
{
"id": "debugquest3",
"message": "Quest is now completed.",
"replies": [
{
"text": "Bye",
"nextPhraseID": "X"
}
]
"id":"dbg_teleport_vilegard",
"rewards":[{ "rewardType":"mapchange", "rewardID":"tavern", "mapName":"vilegard_s" }]
},
{
"id": "debugquest4",
"message": "More info. Quest progress should now be updated to 20.",
"rewards": [
{
"rewardType": "questProgress",
"rewardID": "debugquest",
"value": 20
}
],
"replies": [
{
"text": "Back",
"nextPhraseID": "debugquest"
}
]
"id":"dbg_teleport_crossroads",
"rewards":[{ "rewardType":"mapchange", "rewardID":"middle", "mapName":"crossroads" }]
},
{
"id": "debugsign",
"message": "This should be a signpost."
"id":"dbg_teleport_loneford",
"rewards":[{ "rewardType":"mapchange", "rewardID":"south", "mapName":"loneford9" }]
},
{
"id": "debugrequireskey",
"message": "This tile requires a quest progress."
},
{
"id": "debugrequires10gold",
"replies": [
{
"text": "Too bad.",
"nextPhraseID": "X"
},
{
"text": "Well, gimme 10 gold then !",
"nextPhraseID": "debugrequires10gold_1"
}
],
"message": "This tile costs 10 gold !"
},
{
"id": "debugrequires10gold_1",
"replies": [
{
"requires": [
{
"requireType": "spentGold",
"requireID": "gold",
"value": 100
}
],
"nextPhraseID": "debugrequires10gold_3"
},
{
"nextPhraseID": "debugrequires10gold_2"
}
]
},
{
"id": "debugrequires10gold_2",
"rewards": [
{
"rewardType": "dropList",
"rewardID": "debugrequires10gold_droplist"
}
],
"replies": [
{
"text": "When I come to debugmap, I always feel like a star.",
"nextPhraseID": "X"
}
],
"message": "OK. But only because it's you M. Coder."
},
{
"id": "debugrequires10gold_3",
"replies": [
{
"text": "Damn.",
"nextPhraseID": "X"
}
],
"message": "Sorry. You already spent 100 gold..."
},
{
"message":"Hmm... beer...",
"id":"signbeer"
"id":"dbg_teleport_prim",
"rewards":[{ "rewardType":"mapchange", "rewardID":"south", "mapName":"blackwater_mountain29" }]
},
{
"message":"Do you want beer?",
"id":"npc3_0",
"replies":[
{
"nextPhraseID":"npc3_1",
"text":"Beer!"
},
{
"nextPhraseID":"npc3_3",
"text":"No filter!"
},
{
"nextPhraseID":"npc3_5",
"text":"Black 20%!"
},
{
"nextPhraseID":"npc3_6",
"text":"Black 40%!"
},
{
"nextPhraseID":"npc3_7",
"text":"Black 60%!"
},
{
"nextPhraseID":"npc3_2",
"text":"Black 80%!"
},
{
"nextPhraseID":"npc3_4",
"text":"Red ligths!"
},
{
"nextPhraseID":"npc3_9",
"text":"Green ligths!"
},
{
"nextPhraseID":"npc3_10",
"text":"Blue ligths!"
},
{
"nextPhraseID":"npc3_11",
"text":"Black & White!"
},
{
"nextPhraseID":"npc3_8",
"text":"Invert!"
}
]
"id":"dbg_teleport_bwm",
"rewards":[{ "rewardType":"mapchange", "rewardID":"south", "mapName":"blackwater_mountain43" }]
},
{
"message":"Bees & beer !",
"id":"npc3_1",
"rewards":[
{
"rewardID":"debug_insect_inactive",
"mapName":"debugmap",
"rewardType":"spawnAll"
},
{
"rewardID":"Inactive",
"mapName":"debugmap",
"rewardType":"activateMapObjectGroup"
},
{
"rewardID":"Active",
"mapName":"debugmap",
"rewardType":"deactivateMapObjectGroup"
}
]
"id":"dbg_teleport_remgard",
"rewards":[{ "rewardType":"mapchange", "rewardID":"east", "mapName":"remgard0" }]
},
{
"message":"No beer for you !",
"id":"signnobeer"
"id":"dbg_teleport_charwood",
"rewards":[{ "rewardType":"mapchange", "rewardID":"minerhouse4", "mapName":"waytolostmine2" }]
},
{
"id":"npc3_2",
"message":"OK.",
"rewards":[
{
"rewardType":"changeMapFilter",
"rewardID":"black80",
"mapName":"debugmap"
}
]
},
{
"id":"npc3_3",
"message":"OK.",
"rewards":[
{
"rewardType":"changeMapFilter",
"rewardID":"none",
"mapName":"debugmap"
}
]
},
{
"id":"npc3_4",
"message":"OK.",
"rewards":[
{
"rewardType":"changeMapFilter",
"rewardID":"redtint",
"mapName":"debugmap"
}
]
},
{
"id":"npc3_5",
"message":"OK.",
"rewards":[
{
"rewardType":"changeMapFilter",
"rewardID":"black20",
"mapName":"debugmap"
}
]
},
{
"id":"npc3_6",
"message":"OK.",
"rewards":[
{
"rewardType":"changeMapFilter",
"rewardID":"black40",
"mapName":"debugmap"
}
]
},
{
"id":"npc3_7",
"message":"OK.",
"rewards":[
{
"rewardType":"changeMapFilter",
"rewardID":"black60",
"mapName":"debugmap"
}
]
},
{
"id":"npc3_8",
"message":"OK.",
"rewards":[
{
"rewardType":"changeMapFilter",
"rewardID":"invert",
"mapName":"debugmap"
}
]
},
{
"id":"npc3_9",
"message":"OK.",
"rewards":[
{
"rewardType":"changeMapFilter",
"rewardID":"greentint",
"mapName":"debugmap"
}
]
},
{
"id":"npc3_10",
"message":"OK.",
"rewards":[
{
"rewardType":"changeMapFilter",
"rewardID":"bluetint",
"mapName":"debugmap"
}
]
},
{
"id":"npc3_11",
"message":"OK.",
"rewards":[
{
"rewardType":"changeMapFilter",
"rewardID":"bw",
"mapName":"debugmap"
}
]
},
{
"id":"chaotic_rewarder_0",
"message":"What do you want?",
"replies":[
{
"text":"Apply condition",
"nextPhraseID":"chaotic_rewarder_1"
},
{
"text":"Clear condition",
"nextPhraseID":"chaotic_rewarder_2"
},
{
"text":"Give 5 rounds of immunity",
"nextPhraseID":"chaotic_rewarder_3"
},
{
"text":"Infinite immunity",
"nextPhraseID":"chaotic_rewarder_4"
},
{
"text":"Apply condition forever",
"nextPhraseID":"chaotic_rewarder_5"
}
]
"id":"dbg_teleport_lodar",
"rewards":[{ "rewardType":"mapchange", "rewardID":"lodarhouse", "mapName":"lodarhouse0" }]
},
{
"id":"chaotic_rewarder_1",
"message":"Applied.",
"replies":[
{
"text":"N",
"nextPhraseID":"chaotic_rewarder_0"
}
],
"rewards":[
{
"rewardType":"actorCondition",
"rewardID":"chaotic_grip",
"value":5
}
]
"id":"dbg_teleport_stoutford",
"rewards":[{ "rewardType":"mapchange", "rewardID":"south2", "mapName":"wild20" }]
},
{
"id":"chaotic_rewarder_2",
"message":"Cleared.",
"replies":[
{
"text":"N",
"nextPhraseID":"chaotic_rewarder_0"
}
],
"rewards":[
{
"rewardType":"actorCondition",
"rewardID":"chaotic_grip",
"value":-99
}
]
"id":"dbg_teleport_guynmart",
"rewards":[{ "rewardType":"mapchange", "rewardID":"farmhouse", "mapName":"guynmart_wood_1" }]
},
{
"id":"chaotic_rewarder_3",
"message":"5 rounds immune!",
"replies":[
{
"text":"N",
"nextPhraseID":"chaotic_rewarder_0"
}
],
"rewards":[
{
"rewardType":"actorConditionImmunity",
"rewardID":"chaotic_grip",
"value":5
}
]
"id":"dbg_teleport_brimhaven",
"rewards":[{ "rewardType":"mapchange", "rewardID":"south2", "mapName":"brimhaven4" }]
},
{
"id":"chaotic_rewarder_4",
"message":"Immune forever !",
"replies":[
{
"text":"N",
"nextPhraseID":"chaotic_rewarder_0"
}
],
"rewards":[
{
"rewardType":"actorConditionImmunity",
"rewardID":"chaotic_grip",
"value":999
}
]
"id":"dbg_teleport_brightport",
"rewards":[{ "rewardType":"mapchange", "rewardID":"east", "mapName":"brightport1" }]
},
{
"id":"chaotic_rewarder_5",
"message":"Punished forever !",
"replies":[
{
"text":"N",
"nextPhraseID":"chaotic_rewarder_0"
}
],
"rewards":[
{
"rewardType":"actorCondition",
"rewardID":"chaotic_grip",
"value":999
}
]
}
"id":"dbg_teleport_arulir",
"rewards":[{ "rewardType":"mapchange", "rewardID":"north", "mapName":"mountainlake5" }]
},
{
"id":"dbg_teleport_woodsettlement",
"rewards":[{ "rewardType":"mapchange", "rewardID":"woodhouse2", "east":"woodsettlement0" }]
},
{
"id":"dbg_teleport_sullengard",
"rewards":[{ "rewardType":"mapchange", "rewardID":"south", "mapName":"sullengard2" }]
},
{
"id":"dbg_teleport_galmore",
"rewards":[{ "rewardType":"mapchange", "rewardID":"south", "mapName":"galmore_19" }]
},
{
"id":"dbg_teleport_applefarm",
"rewards":[{ "rewardType":"mapchange", "rewardID":"house", "mapName":"sullengard_apple_farm_east" }]
},
{
"id":"dbg_teleport_witchhouse",
"rewards":[{ "rewardType":"mapchange", "rewardID":"north", "mapName":"lake_shore_road_0" }]
},
{
"id":"dbg_teleport_laerot1",
"rewards":[{ "rewardType":"mapchange", "rewardID":"south2", "mapName":"laerothisland2" }]
},
{
"id":"dbg_teleport_laerot2",
"rewards":[{ "rewardType":"mapchange", "rewardID":"cave", "mapName":"island3" }]
},
{
"id":"dbg_teleport_wexlow",
"rewards":[{ "rewardType":"mapchange", "rewardID":"north", "mapName":"wexlow_village" }]
},
{
"id":"dbg_teleport_feygard",
"rewards":[{ "rewardType":"mapchange", "rewardID":"south", "mapName":"wayto_feygard_duleian_2" }]
},
{
"id":"dbg_teleport_norcity",
"rewards":[{ "rewardType":"mapchange", "rewardID":"north", "mapName":"cabin_norcity_road4" }]
},
{
"id": "dbg_teleport_prj",
"message": "Other projects",
"replies": [{ "text": "Project Way to Feygard", "nextPhraseID": "dbg_teleport_prj_feygard_3" },
{ "text": "Project Way to Nor City", "nextPhraseID": "dbg_teleport_prj_nor_city" },
{ "text": "Back", "nextPhraseID": "dbg_teleport" }]
},
{
"id": "dbg_teleport_prj_nor_city",
"message": "*** norcity ***",
"replies": [{ "text": "Back", "nextPhraseID": "dbg_teleport" }]
},
{
"id": "dbg_shop",
"message": "What do you need?",
"replies": [{ "text": "Gold", "nextPhraseID": "dbg_shop_gold" },
{ "text": "Potions", "nextPhraseID": "dbg_shop_pot" },
{ "text": "Animal parts", "nextPhraseID": "dbg_shop_animalparts" },
{ "text": "Project undertell", "nextPhraseID": "dbg_shop_prj_undertell" },
{ "text": "Project brightport2", "nextPhraseID": "dbg_shop_prj_brightport2" },
{ "text": "Project feygard_3", "nextPhraseID": "dbg_shop_prj_feygard_3" },
{ "text": "Project nor_city", "nextPhraseID": "dbg_shop_prj_nor_city" },
{ "text": "Project moeston", "nextPhraseID": "dbg_shop_prj_moeston" },
{ "text": "Project z_biasZebra", "nextPhraseID": "dbg_shop_prj_z_biasZebra" },
{ "text": "Bye", "nextPhraseID": "X" }]
},
{
"id": "dbg_shop_prj_undertell",
"message": "*** undertell ***",
"replies": [{ "text": "Back", "nextPhraseID": "dbg_shop" }]
},
{
"id": "dbg_shop_prj_brightport2",
"message": "*** brightport2 ***",
"replies": [{ "text": "20 lizardman bones", "nextPhraseID": "dbg_shop_prj_brightport2",
"requires":[{ "requireType":"inventoryRemove", "requireID":"brightport_bone", "value":-20 }] },
{ "text": "Back", "nextPhraseID": "dbg_shop" }]
},
{
"id": "dbg_shop_prj_feygard_3",
"message": "*** feygard_3 ***",
"replies": [{ "text": "Back", "nextPhraseID": "dbg_shop" }]
},
{
"id": "dbg_shop_prj_nor_city",
"message": "*** nor_city ***",
"replies": [{ "text": "Back", "nextPhraseID": "dbg_shop" }]
},
{
"id": "dbg_shop_prj_moeston",
"message": "*** moeston ***",
"replies": [{ "text": "Back", "nextPhraseID": "dbg_shop" }]
},
{
"id": "dbg_shop_prj_z_biasZebra",
"message": "*** z_biasZebra ***",
"replies": [{ "text": "Back", "nextPhraseID": "dbg_shop" }]
},
{
"id": "dbg_shop_gold",
"message": "How much gold?",
"replies": [{ "text": "100000", "nextPhraseID": "dbg_shop_gold", "requires":[{ "requireType":"inventoryRemove", "requireID":"gold", "value":-100000 }] },
{ "text": "10000", "nextPhraseID": "dbg_shop_gold", "requires":[{ "requireType":"inventoryRemove", "requireID":"gold", "value":-10000 }] },
{ "text": "1000", "nextPhraseID": "dbg_shop_gold", "requires":[{ "requireType":"inventoryRemove", "requireID":"gold", "value":-1000 }] },
{ "text": "-10", "nextPhraseID": "dbg_shop_gold", "requires":[{ "requireType":"inventoryRemove", "requireID":"gold", "value":10 }] },
{ "text": "-100", "nextPhraseID": "dbg_shop_gold", "requires":[{ "requireType":"inventoryRemove", "requireID":"gold", "value":100 }] },
{ "text": "-1000", "nextPhraseID": "dbg_shop_gold", "requires":[{ "requireType":"inventoryRemove", "requireID":"gold", "value":1000 }] },
{ "text": "-10000", "nextPhraseID": "dbg_shop_gold", "requires":[{ "requireType":"inventoryRemove", "requireID":"gold", "value":10000 }] },
{ "text": "-100000", "nextPhraseID": "dbg_shop_gold", "requires":[{ "requireType":"inventoryRemove", "requireID":"gold", "value":100000 }] },
{ "text": "Back", "nextPhraseID": "dbg_shop" }]
},
{
"id": "dbg_shop_pot",
"message": "Let's get a drink ...",
"replies": [{ "text": "Major potion of health", "nextPhraseID": "dbg_shop_pot",
"requires":[{ "requireType":"inventoryRemove", "requireID":"health_major2", "value":-1000 }] },
{ "text": "Back", "nextPhraseID": "dbg_shop" }]
},
{
"id": "dbg_shop_animalparts",
"message": "Let's find some animal parts",
"replies": [{ "text": "5 normal bones", "nextPhraseID": "dbg_shop_animalparts",
"requires":[{ "requireType":"inventoryRemove", "requireID":"bone", "value":-5 }] },
{ "text": "5 insect wings", "nextPhraseID": "dbg_shop_animalparts",
"requires":[{ "requireType":"inventoryRemove", "requireID":"insectwing", "value":-5 }] },
{ "text": "Back", "nextPhraseID": "dbg_shop" }]
},
{
"id": "dbg_scores",
"message":"Current scores:\n\n Shadow: $reg1 / $reg3 = $reg2%",
"replies":[ { "text": "12: Absolute Shadow hater", "nextPhraseID": "dbg_scores_10", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":12 }] },
{ "text": "13: Shadow hater", "nextPhraseID": "dbg_scores_10", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":13 }] },
{ "text": "15: Balanced Shadow feelings", "nextPhraseID": "dbg_scores_10", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":15 }] },
{ "text": "17: Shadow fan", "nextPhraseID": "dbg_scores_10", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":17 }] },
{ "text": "18: Absolute Shadow fan", "nextPhraseID": "dbg_scores_10", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":18 }] },
{ "text": "10: (Shadow score fixed)", "nextPhraseID": "dbg_scores_10", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":10 }] }],
"rewards":[ { "rewardType":"alignmentToReg1", "rewardID":"fsc_shd" },
{ "rewardType":"alignmentToReg2", "rewardID":"fsc_shd2" },
{ "rewardType":"alignmentToReg3", "rewardID":"fsc_shd9" }]
},
{
"id": "dbg_scores_10",
"message":" Feygard: $reg1 / $reg3 = $reg2%",
"replies":[ { "text": "22: Absolute Feygard hater", "nextPhraseID": "dbg_scores_20", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":22 }] },
{ "text": "23: Feygard hater", "nextPhraseID": "dbg_scores_20", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":23 }] },
{ "text": "25: Balanced Feygard feelings", "nextPhraseID": "dbg_scores_20", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":25 }] },
{ "text": "27: Feygard fan", "nextPhraseID": "dbg_scores_20", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":27 }] },
{ "text": "28: Absolute Feygard fan", "nextPhraseID": "dbg_scores_20", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":28 }] },
{ "text": "20: (Feygard score fixed)", "nextPhraseID": "dbg_scores_20", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":20 }] }],
"rewards":[ { "rewardType":"alignmentToReg1", "rewardID":"fsc_fey" },
{ "rewardType":"alignmentToReg2", "rewardID":"fsc_fey2" },
{ "rewardType":"alignmentToReg3", "rewardID":"fsc_fey9" }]
},
{
"id": "dbg_scores_20",
"message":" Thieves: $reg1 / $reg3 = $reg2%",
"replies":[ { "text": "32: Absolute Thieves Guild hater", "nextPhraseID": "dbg_scores_30", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":32 }] },
{ "text": "33: Thieves Guild hater", "nextPhraseID": "dbg_scores_30", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":33 }] },
{ "text": "35: Balanced Thieves Guild feelings", "nextPhraseID": "dbg_scores_30", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":35 }] },
{ "text": "37: Thieves Guild fan", "nextPhraseID": "dbg_scores_30", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":37 }] },
{ "text": "38: Absolute Thieves Guild fan", "nextPhraseID": "dbg_scores_30", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":38 }] },
{ "text": "30: (Thieves Guild score fixed)", "nextPhraseID": "dbg_scores_30", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":30 }] }],
"rewards":[ { "rewardType":"alignmentToReg1", "rewardID":"fsc_thv" },
{ "rewardType":"alignmentToReg2", "rewardID":"fsc_thv2" },
{ "rewardType":"alignmentToReg3", "rewardID":"fsc_thv9" }]
},
{
"id": "dbg_scores_30"
}
]

View File

@@ -2262,9 +2262,11 @@
]
},
{
"id":"faction_scores"
},
{
"id":"faction_scores"
"id":"faction_scores",
"replies":[
{
"nextPhraseID":"fsc_calc"
}
]
}
]

View File

@@ -0,0 +1,127 @@
[{ "id":"fsc_calc", "replies":[{ "nextPhraseID":"fsc_andor_914" }], "rewards":[{ "rewardType":"alignmentSet", "rewardID":"fsc_shd", "value":0 },{ "rewardType":"alignmentSet", "rewardID":"fsc_shd9", "value":0 },{ "rewardType":"alignmentSet", "rewardID":"fsc_fey", "value":0 },{ "rewardType":"alignmentSet", "rewardID":"fsc_fey9", "value":0 },{ "rewardType":"alignmentSet", "rewardID":"fsc_thv", "value":0 },{ "rewardType":"alignmentSet", "rewardID":"fsc_thv9", "value":0 }] },
{ "id":"fsc_andor_914", "replies":[{ "nextPhraseID":"fsc_andor_914_r", "requires":[{ "requireType":"questProgress", "requireID":"andor", "value":914 }] }, { "nextPhraseID":"fsc_vacor_60" }]}, { "id":"fsc_andor_914_r", "replies":[{ "nextPhraseID":"fsc_vacor_60" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":1 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":1 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":1 }] },
{ "id":"fsc_vacor_60", "replies":[{ "nextPhraseID":"fsc_vacor_60_r", "requires":[{ "requireType":"questProgress", "requireID":"vacor", "value":60 }] }, { "nextPhraseID":"fsc_vacor_61" }]}, { "id":"fsc_vacor_60_r", "replies":[{ "nextPhraseID":"fsc_vacor_61" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 }] },
{ "id":"fsc_vacor_61", "replies":[{ "nextPhraseID":"fsc_vacor_61_r", "requires":[{ "requireType":"questProgress", "requireID":"vacor", "value":61 }] }, { "nextPhraseID":"fsc_bonemeal_100" }]}, { "id":"fsc_vacor_61_r", "replies":[{ "nextPhraseID":"fsc_bonemeal_100" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 }] },
{ "id":"fsc_bonemeal_100", "replies":[{ "nextPhraseID":"fsc_bonemeal_100_r", "requires":[{ "requireType":"questProgress", "requireID":"bonemeal", "value":100 }] }, { "nextPhraseID":"fsc_bonemeal_110" }]}, { "id":"fsc_bonemeal_100_r", "replies":[{ "nextPhraseID":"fsc_bonemeal_110" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 }] },
{ "id":"fsc_bonemeal_110", "replies":[{ "nextPhraseID":"fsc_bonemeal_110_r", "requires":[{ "requireType":"questProgress", "requireID":"bonemeal", "value":110 }] }, { "nextPhraseID":"fsc_guynmart_210" }]}, { "id":"fsc_bonemeal_110_r", "replies":[{ "nextPhraseID":"fsc_guynmart_210" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 }] },
{ "id":"fsc_guynmart_210", "replies":[{ "nextPhraseID":"fsc_guynmart_210_r", "requires":[{ "requireType":"questProgress", "requireID":"guynmart", "value":210 }] }, { "nextPhraseID":"fsc_guynmart_211" }]}, { "id":"fsc_guynmart_210_r", "replies":[{ "nextPhraseID":"fsc_guynmart_211" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":3 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":3 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":3 }] },
{ "id":"fsc_guynmart_211", "replies":[{ "nextPhraseID":"fsc_guynmart_211_r", "requires":[{ "requireType":"questProgress", "requireID":"guynmart", "value":211 }] }, { "nextPhraseID":"fsc_kaverin_21" }]}, { "id":"fsc_guynmart_211_r", "replies":[{ "nextPhraseID":"fsc_kaverin_21" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":3 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":3 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":3 }] },
{ "id":"fsc_kaverin_21", "replies":[{ "nextPhraseID":"fsc_kaverin_21_r", "requires":[{ "requireType":"questProgress", "requireID":"kaverin", "value":21 }] }, { "nextPhraseID":"fsc_kaverin_100" }]}, { "id":"fsc_kaverin_21_r", "replies":[{ "nextPhraseID":"fsc_kaverin_100" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 }] },
{ "id":"fsc_kaverin_100", "replies":[{ "nextPhraseID":"fsc_kaverin_100_r", "requires":[{ "requireType":"questProgress", "requireID":"kaverin", "value":100 }] }, { "nextPhraseID":"fsc_feygard_shipment_80" }]}, { "id":"fsc_kaverin_100_r", "replies":[{ "nextPhraseID":"fsc_feygard_shipment_80" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 }] },
{ "id":"fsc_feygard_shipment_80", "replies":[{ "nextPhraseID":"fsc_feygard_shipment_80_r", "requires":[{ "requireType":"questProgress", "requireID":"feygard_shipment", "value":80 }] }, { "nextPhraseID":"fsc_feygard_shipment_82" }]}, { "id":"fsc_feygard_shipment_80_r", "replies":[{ "nextPhraseID":"fsc_feygard_shipment_82" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 }] },
{ "id":"fsc_feygard_shipment_82", "replies":[{ "nextPhraseID":"fsc_feygard_shipment_82_r", "requires":[{ "requireType":"questProgress", "requireID":"feygard_shipment", "value":82 }] }, { "nextPhraseID":"fsc_thieves_hidden_80" }]}, { "id":"fsc_feygard_shipment_82_r", "replies":[{ "nextPhraseID":"fsc_thieves_hidden_80" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 }] },
{ "id":"fsc_thieves_hidden_80", "replies":[{ "nextPhraseID":"fsc_thieves_hidden_80_r", "requires":[{ "requireType":"questProgress", "requireID":"thieves_hidden", "value":80 }] }, { "nextPhraseID":"fsc_stoutford_castle_50" }]}, { "id":"fsc_thieves_hidden_80_r", "replies":[{ "nextPhraseID":"fsc_stoutford_castle_50" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_thv", "value":1 },{ "rewardType":"alignmentChange", "rewardID":"fsc_thv9", "value":1 }] },
{ "id":"fsc_stoutford_castle_50", "replies":[{ "nextPhraseID":"fsc_stoutford_castle_60" }]},
{ "id":"fsc_stoutford_castle_60", "replies":[{ "nextPhraseID":"fsc_stoutford_castle_70" }]},
{ "id":"fsc_stoutford_castle_70", "replies":[{ "nextPhraseID":"fsc_Thieves03_32" }]},
{ "id":"fsc_Thieves03_32", "replies":[{ "nextPhraseID":"fsc_Thieves03_32_r", "requires":[{ "requireType":"questProgress", "requireID":"Thieves03", "value":32 }] }, { "nextPhraseID":"fsc_darkprotector_70" }]}, { "id":"fsc_Thieves03_32_r", "replies":[{ "nextPhraseID":"fsc_darkprotector_70" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_thv", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_thv9", "value":4 }] },
{ "id":"fsc_darkprotector_70", "replies":[{ "nextPhraseID":"fsc_darkprotector_40" }]},
{ "id":"fsc_darkprotector_40", "replies":[{ "nextPhraseID":"fsc_darkprotector_40_r", "requires":[{ "requireType":"questProgress", "requireID":"darkprotector", "value":40 }] }, { "nextPhraseID":"fsc_darkprotector_41" }]}, { "id":"fsc_darkprotector_40_r", "replies":[{ "nextPhraseID":"fsc_darkprotector_41" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":5 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":5 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 }] },
{ "id":"fsc_darkprotector_41", "replies":[{ "nextPhraseID":"fsc_darkprotector_41_r", "requires":[{ "requireType":"questProgress", "requireID":"darkprotector", "value":41 }] }, { "nextPhraseID":"fsc_xulviir_20" }]}, { "id":"fsc_darkprotector_41_r", "replies":[{ "nextPhraseID":"fsc_xulviir_20" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 }] },
{ "id":"fsc_xulviir_20", "replies":[{ "nextPhraseID":"fsc_xulviir_20_r", "requires":[{ "requireType":"questProgress", "requireID":"xulviir", "value":20 }] }, { "nextPhraseID":"fsc_xulviir_30" }]}, { "id":"fsc_xulviir_20_r", "replies":[{ "nextPhraseID":"fsc_xulviir_30" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 }] },
{ "id":"fsc_xulviir_30", "replies":[{ "nextPhraseID":"fsc_xulviir_30_r", "requires":[{ "requireType":"questProgress", "requireID":"xulviir", "value":30 }] }, { "nextPhraseID":"fsc_rogorn_50" }]}, { "id":"fsc_xulviir_30_r", "replies":[{ "nextPhraseID":"fsc_rogorn_50" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 }] },
{ "id":"fsc_rogorn_50", "replies":[{ "nextPhraseID":"fsc_rogorn_50_r", "requires":[{ "requireType":"questProgress", "requireID":"rogorn", "value":50 }] }, { "nextPhraseID":"fsc_rogorn_55" }]}, { "id":"fsc_rogorn_50_r", "replies":[{ "nextPhraseID":"fsc_rogorn_55" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":3 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":3 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":3 }] },
{ "id":"fsc_rogorn_55", "replies":[{ "nextPhraseID":"fsc_rogorn_55_r", "requires":[{ "requireType":"questProgress", "requireID":"rogorn", "value":55 }] }, { "nextPhraseID":"fsc_loneford_55" }]}, { "id":"fsc_rogorn_55_r", "replies":[{ "nextPhraseID":"fsc_loneford_55" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":3 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":3 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":3 }] },
{ "id":"fsc_loneford_55", "replies":[{ "nextPhraseID":"fsc_loneford_55_r", "requires":[{ "requireType":"questProgress", "requireID":"loneford", "value":55 }] }, { "nextPhraseID":"fsc_loneford_60" }]}, { "id":"fsc_loneford_55_r", "replies":[{ "nextPhraseID":"fsc_loneford_60" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":1 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":1 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":1 }] },
{ "id":"fsc_loneford_60", "replies":[{ "nextPhraseID":"fsc_loneford_60_r", "requires":[{ "requireType":"questProgress", "requireID":"loneford", "value":60 }] }, { "nextPhraseID":"fsc_wanted_men_65" }]}, { "id":"fsc_loneford_60_r", "replies":[{ "nextPhraseID":"fsc_wanted_men_65" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":1 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":1 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":1 }] },
{ "id":"fsc_wanted_men_65", "replies":[{ "nextPhraseID":"fsc_wanted_men_65_r", "requires":[{ "requireType":"questProgress", "requireID":"wanted_men", "value":65 }] }, { "nextPhraseID":"fsc_wanted_men_80" }]}, { "id":"fsc_wanted_men_65_r", "replies":[{ "nextPhraseID":"fsc_wanted_men_80" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_thv9", "value":8 }] },
{ "id":"fsc_wanted_men_80", "replies":[{ "nextPhraseID":"fsc_wanted_men_80_r", "requires":[{ "requireType":"questProgress", "requireID":"wanted_men", "value":80 }] }, { "nextPhraseID":"fsc_Thieves02_75" }]}, { "id":"fsc_wanted_men_80_r", "replies":[{ "nextPhraseID":"fsc_Thieves02_75" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_thv", "value":3 },{ "rewardType":"alignmentChange", "rewardID":"fsc_thv9", "value":3 }] },
{ "id":"fsc_Thieves02_75", "replies":[{ "nextPhraseID":"fsc_Thieves02_75_r", "requires":[{ "requireType":"questProgress", "requireID":"Thieves02", "value":75 }] }, { "nextPhraseID":"fsc_Thieves02_76" }]}, { "id":"fsc_Thieves02_75_r", "replies":[{ "nextPhraseID":"fsc_Thieves02_76" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_thv", "value":5 },{ "rewardType":"alignmentChange", "rewardID":"fsc_thv9", "value":5 }] },
{ "id":"fsc_Thieves02_76", "replies":[{ "nextPhraseID":"fsc_Thieves02_76_r", "requires":[{ "requireType":"questProgress", "requireID":"Thieves02", "value":76 }] }, { "nextPhraseID":"fsc_Thieves01_51" }]}, { "id":"fsc_Thieves02_76_r", "replies":[{ "nextPhraseID":"fsc_Thieves01_51" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_thv9", "value":5 }] },
{ "id":"fsc_Thieves01_51", "replies":[{ "nextPhraseID":"fsc_Thieves01_51_r", "requires":[{ "requireType":"questProgress", "requireID":"Thieves01", "value":51 }] }, { "nextPhraseID":"fsc_Thieves01_55" }]}, { "id":"fsc_Thieves01_51_r", "replies":[{ "nextPhraseID":"fsc_Thieves01_55" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_thv9", "value":1 }] },
{ "id":"fsc_Thieves01_55", "replies":[{ "nextPhraseID":"fsc_Thieves01_55_r", "requires":[{ "requireType":"questProgress", "requireID":"Thieves01", "value":55 }] }, { "nextPhraseID":"fsc_farrik_70" }]}, { "id":"fsc_Thieves01_55_r", "replies":[{ "nextPhraseID":"fsc_farrik_70" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_thv", "value":1 },{ "rewardType":"alignmentChange", "rewardID":"fsc_thv9", "value":1 }] },
{ "id":"fsc_farrik_70", "replies":[{ "nextPhraseID":"fsc_farrik_70_r", "requires":[{ "requireType":"questProgress", "requireID":"farrik", "value":70 }] }, { "nextPhraseID":"fsc_farrik_90" }]}, { "id":"fsc_farrik_70_r", "replies":[{ "nextPhraseID":"fsc_farrik_90" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_thv", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_thv9", "value":4 }] },
{ "id":"fsc_farrik_90", "replies":[{ "nextPhraseID":"fsc_farrik_90_r", "requires":[{ "requireType":"questProgress", "requireID":"farrik", "value":90 }] }, { "nextPhraseID":"fsc_jolnor_20" }]}, { "id":"fsc_farrik_90_r", "replies":[{ "nextPhraseID":"fsc_jolnor_20" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_thv9", "value":4 }] },
{ "id":"fsc_jolnor_20", "replies":[{ "nextPhraseID":"fsc_jolnor_20_r", "requires":[{ "requireType":"questProgress", "requireID":"jolnor", "value":20 }] }, { "nextPhraseID":"fsc_jolnor_21" }]}, { "id":"fsc_jolnor_20_r", "replies":[{ "nextPhraseID":"fsc_jolnor_21" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":1 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":1 }] },
{ "id":"fsc_jolnor_21", "replies":[{ "nextPhraseID":"fsc_jolnor_21_r", "requires":[{ "requireType":"questProgress", "requireID":"jolnor", "value":21 }] }, { "nextPhraseID":"fsc_beer_bootlegging_90" }]}, { "id":"fsc_jolnor_21_r", "replies":[{ "nextPhraseID":"fsc_beer_bootlegging_90" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":1 }] },
{ "id":"fsc_beer_bootlegging_90", "replies":[{ "nextPhraseID":"fsc_beer_bootlegging_90_r", "requires":[{ "requireType":"questProgress", "requireID":"beer_bootlegging", "value":90 }] }, { "nextPhraseID":"fsc_beer_bootlegging_100" }]}, { "id":"fsc_beer_bootlegging_90_r", "replies":[{ "nextPhraseID":"fsc_beer_bootlegging_100" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_thv9", "value":4 }] },
{ "id":"fsc_beer_bootlegging_100", "replies":[{ "nextPhraseID":"fsc_beer_bootlegging_100_r", "requires":[{ "requireType":"questProgress", "requireID":"beer_bootlegging", "value":100 }] }, { "nextPhraseID":"fsc_beer_bootlegging_110" }]}, { "id":"fsc_beer_bootlegging_100_r", "replies":[{ "nextPhraseID":"fsc_beer_bootlegging_110" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":5 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":5 },{ "rewardType":"alignmentChange", "rewardID":"fsc_thv9", "value":5 }] },
{ "id":"fsc_beer_bootlegging_110", "replies":[{ "nextPhraseID":"fsc_beer_bootlegging_110_r", "requires":[{ "requireType":"questProgress", "requireID":"beer_bootlegging", "value":110 }] }, { "nextPhraseID":"fsc_beer_bootlegging_120" }]}, { "id":"fsc_beer_bootlegging_110_r", "replies":[{ "nextPhraseID":"fsc_beer_bootlegging_120" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_thv9", "value":4 }] },
{ "id":"fsc_beer_bootlegging_120", "replies":[{ "nextPhraseID":"fsc_beer_bootlegging_120_r", "requires":[{ "requireType":"questProgress", "requireID":"beer_bootlegging", "value":120 }] }, { "nextPhraseID":"fsc_darkness_in_daylight_280" }]}, { "id":"fsc_beer_bootlegging_120_r", "replies":[{ "nextPhraseID":"fsc_darkness_in_daylight_280" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_thv", "value":5 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":4 },{ "rewardType":"alignmentChange", "rewardID":"fsc_thv9", "value":5 }] },
{ "id":"fsc_darkness_in_daylight_280", "replies":[{ "nextPhraseID":"fsc_darkness_in_daylight_280_r", "requires":[{ "requireType":"questProgress", "requireID":"darkness_in_daylight", "value":280 }] }, { "nextPhraseID":"fsc_shadows_260" }]}, { "id":"fsc_darkness_in_daylight_280_r", "replies":[{ "nextPhraseID":"fsc_shadows_260" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":2 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":2 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":2 }] },
{ "id":"fsc_shadows_260", "replies":[{ "nextPhraseID":"fsc_shadows_260_r", "requires":[{ "requireType":"questProgress", "requireID":"shadows", "value":260 }] }, { "nextPhraseID":"fsc_end_of_list" }]}, { "id":"fsc_shadows_260_r", "replies":[{ "nextPhraseID":"fsc_end_of_list" }], "rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":2 },{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":2 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":2 }] },
{ "id":"fsc_end_of_list","replies":[{ "nextPhraseID":"fsc_calc_bmp_1000", "requires":[{ "requireType":"consumedBonemeals", "requireID":"x", "value":1000 }] }, { "nextPhraseID":"fsc_calc_bmp_100", "requires":[{ "requireType":"consumedBonemeals", "requireID":"x", "value":100 }] }, { "nextPhraseID":"fsc_calc_bmp_10", "requires":[{ "requireType":"consumedBonemeals", "requireID":"x", "value":10 }] }, { "nextPhraseID":"fsc_calc_bmp_1", "requires":[{ "requireType":"consumedBonemeals", "requireID":"x", "value":1 }] }, { "nextPhraseID":"fsc_calc_bmp_0" }],"rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd9", "value":9 }, { "rewardType":"alignmentChange", "rewardID":"fsc_fey9", "value":9 }] },
{ "id":"fsc_calc_bmp_1000","replies":[{ "nextPhraseID":"fsc_calc_bmp_x" }],"rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":9 }] },
{ "id":"fsc_calc_bmp_100","replies":[{ "nextPhraseID":"fsc_calc_bmp_x" }],"rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":7 }] },
{ "id":"fsc_calc_bmp_10","replies":[{ "nextPhraseID":"fsc_calc_bmp_x" }],"rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":5 }] },
{ "id":"fsc_calc_bmp_1","replies":[{ "nextPhraseID":"fsc_calc_bmp_x" }],"rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_shd", "value":3 },{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":3 }] },
{ "id":"fsc_calc_bmp_0","replies":[{ "nextPhraseID":"fsc_calc_bmp_x" }],"rewards":[{ "rewardType":"alignmentChange", "rewardID":"fsc_fey", "value":9 }] },
{ "id":"fsc_calc_bmp_x","replies":[{ "nextPhraseID":"fsc_calc_shd_x", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":10 }] }, { "nextPhraseID":"fsc_calc_shd" }],"rewards":[{ "rewardType":"alignmentToReg1", "rewardID":"fsc_shd" }, { "rewardType":"alignmentDiv", "rewardID":"fsc_shd9", "value":100 }, { "rewardType":"alignmentFromReg1", "rewardID":"fsc_shd2" }] },
{ "id":"fsc_calc_shd", "replies":[{ "nextPhraseID":"fsc_calc_shd_5", "requires":[{ "requireType":"factionScore", "requireID":"fsc_shd9", "value":11, "negate":true }] },{ "nextPhraseID":"fsc_calc_shd_8", "requires":[{ "requireType":"factionScore", "requireID":"fsc_shd2", "value":90 }] },{ "nextPhraseID":"fsc_calc_shd_7", "requires":[{ "requireType":"factionScore", "requireID":"fsc_shd2", "value":60 }] },{ "nextPhraseID":"fsc_calc_shd_5", "requires":[{ "requireType":"factionScore", "requireID":"fsc_shd2", "value":40 }] },{ "nextPhraseID":"fsc_calc_shd_3", "requires":[{ "requireType":"factionScore", "requireID":"fsc_shd2", "value":10 }] },{ "nextPhraseID":"fsc_calc_shd_2" }] },
{ "id":"fsc_calc_shd_2", "replies":[{ "nextPhraseID":"fsc_calc_shd_x" }], "rewards":[{ "rewardType":"questProgress", "rewardID":"scores", "value":12 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":13 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":15 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":17 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":18 }] },
{ "id":"fsc_calc_shd_3", "replies":[{ "nextPhraseID":"fsc_calc_shd_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":12 }, { "rewardType":"questProgress", "rewardID":"scores", "value":13 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":15 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":17 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":18 }] },
{ "id":"fsc_calc_shd_5", "replies":[{ "nextPhraseID":"fsc_calc_shd_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":12 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":13 }, { "rewardType":"questProgress", "rewardID":"scores", "value":15 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":17 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":18 }] },
{ "id":"fsc_calc_shd_7", "replies":[{ "nextPhraseID":"fsc_calc_shd_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":12 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":13 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":15 }, { "rewardType":"questProgress", "rewardID":"scores", "value":17 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":18 }] },
{ "id":"fsc_calc_shd_8", "replies":[{ "nextPhraseID":"fsc_calc_shd_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":12 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":13 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":15 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":17 }, { "rewardType":"questProgress", "rewardID":"scores", "value":18 }] },
{ "id":"fsc_calc_shd_x", "replies":[{ "nextPhraseID":"fsc_calc_fey_x", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":20 }] }, { "nextPhraseID":"fsc_calc_fey" }],"rewards":[{ "rewardType":"alignmentToReg1", "rewardID":"fsc_fey" }, { "rewardType":"alignmentDiv", "rewardID":"fsc_fey9", "value":100 }, { "rewardType":"alignmentFromReg1", "rewardID":"fsc_fey2" }] },
{ "id":"fsc_calc_fey", "replies":[{ "nextPhraseID":"fsc_calc_fey_5", "requires":[{ "requireType":"factionScore", "requireID":"fsc_fey9", "value":11, "negate":true }] },{ "nextPhraseID":"fsc_calc_fey_8", "requires":[{ "requireType":"factionScore", "requireID":"fsc_fey2", "value":90 }] },{ "nextPhraseID":"fsc_calc_fey_7", "requires":[{ "requireType":"factionScore", "requireID":"fsc_fey2", "value":60 }] },{ "nextPhraseID":"fsc_calc_fey_5", "requires":[{ "requireType":"factionScore", "requireID":"fsc_fey2", "value":40 }] },{ "nextPhraseID":"fsc_calc_fey_3", "requires":[{ "requireType":"factionScore", "requireID":"fsc_fey2", "value":10 }] },{ "nextPhraseID":"fsc_calc_fey_2" }] },
{ "id":"fsc_calc_fey_2", "replies":[{ "nextPhraseID":"fsc_calc_fey_x" }], "rewards":[{ "rewardType":"questProgress", "rewardID":"scores", "value":22 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":23 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":25 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":27 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":28 }] },
{ "id":"fsc_calc_fey_3", "replies":[{ "nextPhraseID":"fsc_calc_fey_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":22 }, { "rewardType":"questProgress", "rewardID":"scores", "value":23 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":25 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":27 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":28 }] },
{ "id":"fsc_calc_fey_5", "replies":[{ "nextPhraseID":"fsc_calc_fey_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":22 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":23 }, { "rewardType":"questProgress", "rewardID":"scores", "value":25 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":27 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":28 }] },
{ "id":"fsc_calc_fey_7", "replies":[{ "nextPhraseID":"fsc_calc_fey_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":22 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":23 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":25 }, { "rewardType":"questProgress", "rewardID":"scores", "value":27 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":28 }] },
{ "id":"fsc_calc_fey_8", "replies":[{ "nextPhraseID":"fsc_calc_fey_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":22 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":23 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":25 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":27 }, { "rewardType":"questProgress", "rewardID":"scores", "value":28 }] },
{ "id":"fsc_calc_fey_x", "replies":[{ "nextPhraseID":"fsc_calc_thv_x", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":30 }] }, { "nextPhraseID":"fsc_calc_thv" }],"rewards":[{ "rewardType":"alignmentToReg1", "rewardID":"fsc_thv" }, { "rewardType":"alignmentDiv", "rewardID":"fsc_thv9", "value":100 }, { "rewardType":"alignmentFromReg1", "rewardID":"fsc_thv2" }] },
{ "id":"fsc_calc_thv", "replies":[{ "nextPhraseID":"fsc_calc_thv_5", "requires":[{ "requireType":"factionScore", "requireID":"fsc_thv9", "value":11, "negate":true }] },{ "nextPhraseID":"fsc_calc_thv_8", "requires":[{ "requireType":"factionScore", "requireID":"fsc_thv2", "value":90 }] },{ "nextPhraseID":"fsc_calc_thv_7", "requires":[{ "requireType":"factionScore", "requireID":"fsc_thv2", "value":60 }] },{ "nextPhraseID":"fsc_calc_thv_5", "requires":[{ "requireType":"factionScore", "requireID":"fsc_thv2", "value":40 }] },{ "nextPhraseID":"fsc_calc_thv_3", "requires":[{ "requireType":"factionScore", "requireID":"fsc_thv2", "value":10 }] },{ "nextPhraseID":"fsc_calc_thv_2" }] },
{ "id":"fsc_calc_thv_2", "replies":[{ "nextPhraseID":"fsc_calc_thv_x" }], "rewards":[{ "rewardType":"questProgress", "rewardID":"scores", "value":32 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":33 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":35 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":37 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":38 }] },
{ "id":"fsc_calc_thv_3", "replies":[{ "nextPhraseID":"fsc_calc_thv_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":32 }, { "rewardType":"questProgress", "rewardID":"scores", "value":33 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":35 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":37 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":38 }] },
{ "id":"fsc_calc_thv_5", "replies":[{ "nextPhraseID":"fsc_calc_thv_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":32 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":33 }, { "rewardType":"questProgress", "rewardID":"scores", "value":35 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":37 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":38 }] },
{ "id":"fsc_calc_thv_7", "replies":[{ "nextPhraseID":"fsc_calc_thv_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":32 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":33 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":35 }, { "rewardType":"questProgress", "rewardID":"scores", "value":37 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":38 }] },
{ "id":"fsc_calc_thv_8", "replies":[{ "nextPhraseID":"fsc_calc_thv_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":32 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":33 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":35 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":37 }, { "rewardType":"questProgress", "rewardID":"scores", "value":38 }] },
{ "id":"fsc_calc_thv_x", "replies":[{ "nextPhraseID":"fsc_calc_shd1_x", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":10 }] }, { "nextPhraseID":"fsc_calc_shd1" }] },
{ "id":"fsc_calc_shd1", "replies":[{ "nextPhraseID":"fsc_calc_shd1_5", "requires":[{ "requireType":"factionScore", "requireID":"fsc_shd9", "value":11, "negate":true }] },{ "nextPhraseID":"fsc_calc_shd1_8", "requires":[{ "requireType":"factionScore", "requireID":"fsc_shd2", "value":90 }] },{ "nextPhraseID":"fsc_calc_shd1_7", "requires":[{ "requireType":"factionScore", "requireID":"fsc_shd2", "value":60 }] },{ "nextPhraseID":"fsc_calc_shd1_5", "requires":[{ "requireType":"factionScore", "requireID":"fsc_shd2", "value":40 }] },{ "nextPhraseID":"fsc_calc_shd1_3", "requires":[{ "requireType":"factionScore", "requireID":"fsc_shd2", "value":10 }] },{ "nextPhraseID":"fsc_calc_shd1_2" }] },
{ "id":"fsc_calc_shd1_2", "replies":[{ "nextPhraseID":"fsc_calc_shd1_x" }], "rewards":[{ "rewardType":"questProgress", "rewardID":"scores", "value":112 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":113 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":115 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":117 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":118 }] },
{ "id":"fsc_calc_shd1_3", "replies":[{ "nextPhraseID":"fsc_calc_shd1_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":112 }, { "rewardType":"questProgress", "rewardID":"scores", "value":113 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":115 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":117 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":118 }] },
{ "id":"fsc_calc_shd1_5", "replies":[{ "nextPhraseID":"fsc_calc_shd1_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":112 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":113 }, { "rewardType":"questProgress", "rewardID":"scores", "value":115 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":117 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":118 }] },
{ "id":"fsc_calc_shd1_7", "replies":[{ "nextPhraseID":"fsc_calc_shd1_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":112 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":113 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":115 }, { "rewardType":"questProgress", "rewardID":"scores", "value":117 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":118 }] },
{ "id":"fsc_calc_shd1_8", "replies":[{ "nextPhraseID":"fsc_calc_shd1_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":112 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":113 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":115 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":117 }, { "rewardType":"questProgress", "rewardID":"scores", "value":118 }] },
{ "id":"fsc_calc_shd1_x", "replies":[{ "nextPhraseID":"fsc_calc_fey1_x", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":20 }] }, { "nextPhraseID":"fsc_calc_fey1" }] },
{ "id":"fsc_calc_fey1", "replies":[{ "nextPhraseID":"fsc_calc_fey1_5", "requires":[{ "requireType":"factionScore", "requireID":"fsc_fey9", "value":11, "negate":true }] },{ "nextPhraseID":"fsc_calc_fey1_8", "requires":[{ "requireType":"factionScore", "requireID":"fsc_fey2", "value":90 }] },{ "nextPhraseID":"fsc_calc_fey1_7", "requires":[{ "requireType":"factionScore", "requireID":"fsc_fey2", "value":60 }] },{ "nextPhraseID":"fsc_calc_fey1_5", "requires":[{ "requireType":"factionScore", "requireID":"fsc_fey2", "value":40 }] },{ "nextPhraseID":"fsc_calc_fey1_3", "requires":[{ "requireType":"factionScore", "requireID":"fsc_fey2", "value":10 }] },{ "nextPhraseID":"fsc_calc_fey1_2" }] },
{ "id":"fsc_calc_fey1_2", "replies":[{ "nextPhraseID":"fsc_calc_fey1_x" }], "rewards":[{ "rewardType":"questProgress", "rewardID":"scores", "value":122 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":123 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":125 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":127 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":128 }] },
{ "id":"fsc_calc_fey1_3", "replies":[{ "nextPhraseID":"fsc_calc_fey1_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":122 }, { "rewardType":"questProgress", "rewardID":"scores", "value":123 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":125 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":127 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":128 }] },
{ "id":"fsc_calc_fey1_5", "replies":[{ "nextPhraseID":"fsc_calc_fey1_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":122 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":123 }, { "rewardType":"questProgress", "rewardID":"scores", "value":125 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":127 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":128 }] },
{ "id":"fsc_calc_fey1_7", "replies":[{ "nextPhraseID":"fsc_calc_fey1_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":122 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":123 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":125 }, { "rewardType":"questProgress", "rewardID":"scores", "value":127 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":128 }] },
{ "id":"fsc_calc_fey1_8", "replies":[{ "nextPhraseID":"fsc_calc_fey1_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":122 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":123 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":125 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":127 }, { "rewardType":"questProgress", "rewardID":"scores", "value":128 }] },
{ "id":"fsc_calc_fey1_x", "replies":[{ "nextPhraseID":"fsc_calc_thv1_x", "requires":[{ "requireType":"questProgress", "requireID":"scores", "value":30 }] }, { "nextPhraseID":"fsc_calc_thv1" }] },
{ "id":"fsc_calc_thv1", "replies":[{ "nextPhraseID":"fsc_calc_thv1_5", "requires":[{ "requireType":"factionScore", "requireID":"fsc_thv9", "value":11, "negate":true }] },{ "nextPhraseID":"fsc_calc_thv1_8", "requires":[{ "requireType":"factionScore", "requireID":"fsc_shd2", "value":90 }] },{ "nextPhraseID":"fsc_calc_thv1_7", "requires":[{ "requireType":"factionScore", "requireID":"fsc_shd2", "value":60 }] },{ "nextPhraseID":"fsc_calc_thv1_5", "requires":[{ "requireType":"factionScore", "requireID":"fsc_shd2", "value":40 }] },{ "nextPhraseID":"fsc_calc_thv1_3", "requires":[{ "requireType":"factionScore", "requireID":"fsc_thv2", "value":10 }] },{ "nextPhraseID":"fsc_calc_thv1_2" }] },
{ "id":"fsc_calc_thv1_2", "replies":[{ "nextPhraseID":"fsc_calc_thv1_x" }], "rewards":[{ "rewardType":"questProgress", "rewardID":"scores", "value":132 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":133 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":135 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":137 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":138 }] },
{ "id":"fsc_calc_thv1_3", "replies":[{ "nextPhraseID":"fsc_calc_thv1_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":132 }, { "rewardType":"questProgress", "rewardID":"scores", "value":133 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":135 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":137 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":138 }] },
{ "id":"fsc_calc_thv1_5", "replies":[{ "nextPhraseID":"fsc_calc_thv1_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":132 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":133 }, { "rewardType":"questProgress", "rewardID":"scores", "value":135 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":137 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":138 }] },
{ "id":"fsc_calc_thv1_7", "replies":[{ "nextPhraseID":"fsc_calc_thv1_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":132 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":133 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":135 }, { "rewardType":"questProgress", "rewardID":"scores", "value":137 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":138 }] },
{ "id":"fsc_calc_thv1_8", "replies":[{ "nextPhraseID":"fsc_calc_thv1_x" }], "rewards":[{ "rewardType":"removeQuestProgress", "rewardID":"scores", "value":132 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":133 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":135 }, { "rewardType":"removeQuestProgress", "rewardID":"scores", "value":137 }, { "rewardType":"questProgress", "rewardID":"scores", "value":138 }] },
{ "id":"fsc_calc_thv1_x" }]

View File

@@ -1,185 +1,2 @@
[
{
"id": "debugshop1",
"items": [
{
"itemID": "club1",
"quantity": {
"min": 10,
"max": 10
},
"chance": "100"
},
{
"itemID": "club3",
"quantity": {
"min": 5,
"max": 5
},
"chance": "100"
},
{
"itemID": "hammer0",
"quantity": {
"min": 5,
"max": 5
},
"chance": "100"
},
{
"itemID": "hammer1",
"quantity": {
"min": 5,
"max": 5
},
"chance": "100"
},
{
"itemID": "shirt1",
"quantity": {
"min": 5,
"max": 5
},
"chance": "100"
},
{
"itemID": "shirt2",
"quantity": {
"min": 5,
"max": 5
},
"chance": "100"
},
{
"itemID": "dagger0",
"quantity": {
"min": 5,
"max": 5
},
"chance": "100"
}
]
},
{
"id": "debuglist1",
"items": [
{
"itemID": "gold",
"quantity": {
"min": 3,
"max": 3
},
"chance": "100"
},
{
"itemID": "dagger0",
"quantity": {
"min": 1,
"max": 1
},
"chance": "100"
},
{
"itemID": "shirt1",
"quantity": {
"min": 1,
"max": 1
},
"chance": "100"
},
{
"itemID": "club3",
"quantity": {
"min": 1,
"max": 1
},
"chance": "100"
}
]
},
{
"id": "debuglist2",
"items": [{
"itemID": "gold",
"quantity": {
"min": 3,
"max": 3
},
"chance": "100"
}]
},
{
"id": "startitems",
"items": [
{
"itemID": "gold",
"quantity": {
"min": 12,
"max": 12
},
"chance": "100"
},
{
"itemID": "club1",
"quantity": {
"min": 1,
"max": 1
},
"chance": "100"
},
{
"itemID": "shirt1",
"quantity": {
"min": 5,
"max": 5
},
"chance": "100"
},
{
"itemID": "dagger0",
"quantity": {
"min": 1,
"max": 1
},
"chance": "100"
},
{
"itemID": "debug_dagger1",
"quantity": {
"min": 1,
"max": 1
},
"chance": "100"
},
{
"itemID": "debug_ring1",
"quantity": {
"min": 1,
"max": 1
},
"chance": "100"
},
{
"itemID": "shadow_slayer",
"quantity": {
"min": 1,
"max": 1
},
"chance": "100"
}
]
},
{
"id": "debugrequires10gold_droplist",
"items": [
{
"quantity": {
"min": 10,
"max": 10
},
"itemID": "gold",
"chance": "100"
}
]
}
]

View File

@@ -1,199 +1,2 @@
[
{
"id": "debug_dagger1",
"iconID": "items_weapons:20",
"name": "Black heart dagger",
"category": "dagger",
"displaytype": "extraordinary",
"hasManualPrice": 1,
"baseMarketCost": 6,
"equipEffect": {
"increaseAttackCost": 2,
"increaseAttackChance": 100,
"increaseCriticalSkill": 30,
"setCriticalMultiplier": 3,
"increaseAttackDamage": {
"min": 5,
"max": 10
}
}
},
{
"id": "debug_ring1",
"iconID": "items_jewelry:4",
"name": "Black heart ring",
"category": "ring",
"displaytype": "quest",
"hasManualPrice": 1,
"baseMarketCost": 3,
"equipEffect": {
"increaseAttackChance": 50,
"increaseAttackDamage": {
"min": 10,
"max": 10
}
}
},
{
"id":"choatic_potion",
"iconID":"items_consumables:62",
"name":"Chaotic Potion",
"category":"pot",
"useEffect":{
"conditionsSource":[
{
"condition":"chaotic_grip",
"magnitude":1,
"duration":5,
"chance":"100"
}
]
}
},
{
"id":"choatic_cure",
"iconID":"items_consumables:65",
"name":"Chaotic Cure",
"category":"pot",
"useEffect":{
"conditionsSource":[
{
"condition":"chaotic_grip",
"magnitude":-99,
"duration": 0,
"chance":"100"
}
]
}
},
{
"id":"choatic_vaccine",
"iconID":"items_consumables:65",
"name":"Chaotic Vaccine",
"category":"pot",
"useEffect":{
"conditionsSource":[
{
"condition":"chaotic_grip",
"magnitude":-99,
"duration": 5,
"chance":"100"
}
]
}
},
{
"id": "chaotic_redeemer",
"iconID": "items_weapons:61",
"name": "Chaotic redeemer",
"category": "lsword",
"displaytype": "extraordinary",
"hasManualPrice": 1,
"baseMarketCost": 0,
"equipEffect": {
"increaseMaxAP": 2,
"increaseAttackCost": 7,
"increaseAttackChance": 25,
"increaseCriticalSkill": 10,
"setCriticalMultiplier": 2,
"increaseAttackDamage": {
"min": 5,
"max": 9
},
"addedConditions":[
{
"condition":"chaotic_grip",
"magnitude":-99
}
]
},
"killEffect": {
"increaseCurrentHP": {
"min": 1,
"max": 1
}
}
},
{
"id": "chaotic_penalty",
"iconID": "items_weapons:61",
"name": "Chaotic Penalty",
"category": "lsword",
"displaytype": "extraordinary",
"hasManualPrice": 1,
"baseMarketCost": 0,
"equipEffect": {
"increaseMaxAP": 2,
"increaseAttackCost": 7,
"increaseAttackChance": 25,
"increaseCriticalSkill": 10,
"setCriticalMultiplier": 2,
"increaseAttackDamage": {
"min": 5,
"max": 9
},
"addedConditions":[
{
"condition":"chaotic_grip",
"magnitude": 5
}
]
},
"killEffect": {
"increaseCurrentHP": {
"min": 1,
"max": 1
}
},
"hitEffect":{
"conditionsTarget":[
{
"condition":"chaotic_test",
"magnitude":5,
"duration":2,
"chance":"100"
}
]
},
"hitReceivedEffect" : {
"increaseCurrentHP": {
"min": 1,
"max": 1
},
"increaseCurrentAP": {
"min": 1,
"max": 1
},
"increaseAttackerCurrentHP": {
"min": 1,
"max": 1
},
"increaseAttackerCurrentAP": {
"min": 1,
"max": 1
},
"conditionsSource":[
{
"condition":"chaotic_grip",
"magnitude": 2,
"duration": 5,
"chance":"50"
}
],
"conditionsTarget":[
{
"condition":"chaotic_grip",
"magnitude": 2,
"duration": 5,
"chance":"80"
},
{
"condition":"chaotic_test2",
"magnitude":3,
"duration":4,
"chance":"50"
}
]
}
}
]

View File

@@ -1,137 +1,2 @@
[
{
"id": "traveller1",
"iconID": "monsters_man1:0",
"name": "Traveller1",
"spawnGroup": "debugNPC1",
"monsterClass": "humanoid",
"unique": 1,
"maxHP": 10,
"maxAP": 10,
"moveCost": 10,
"attackCost": 10,
"attackChance": 50,
"droplistID": "debugshop1",
"phraseID": "debugshop",
"movementAggressionType":"wholeMap",
"attackDamage": {
"min": 1,
"max": 2
}
},
{
"id": "traveller2",
"iconID": "monsters_man1:0",
"name": "Traveller2",
"spawnGroup": "debugNPC2",
"monsterClass": "humanoid",
"unique": 1,
"maxHP": 10,
"maxAP": 10,
"moveCost": 10,
"attackCost": 10,
"attackChance": 50,
"droplistID": "debugshop1",
"phraseID": "debugquest",
"attackDamage": {
"min": 1,
"max": 2
}
},
{
"id": "traveller3",
"iconID": "monsters_man1:0",
"name": "Traveller3",
"spawnGroup": "debugNPC3",
"monsterClass": "humanoid",
"unique": 1,
"maxHP": 10,
"maxAP": 10,
"moveCost": 10,
"attackCost": 10,
"attackChance": 50,
"phraseID": "npc3_0",
"attackDamage": {
"min": 1,
"max": 2
}
},
{
"id": "debug_black_ant",
"iconID": "monsters_insects:0",
"name": "Ant",
"spawnGroup": "debug_insect",
"monsterClass": "insect",
"maxHP": 10,
"maxAP": 10,
"moveCost": 3,
"attackCost": 3,
"attackChance": 50,
"droplistID": "debuglist1",
"movementAggressionType": "helpOthers",
"attackDamage": {
"min": 1,
"max": 2
}
},
{
"id": "debug_small_wasp",
"iconID": "monsters_insects:1",
"name": "Pitiful debug bug with long name",
"spawnGroup": "debug_insect",
"monsterClass": "insect",
"maxHP": 10,
"maxAP": 10,
"moveCost": 5,
"attackCost": 10,
"attackChance": 50,
"droplistID": "debuglist1",
"movementAggressionType":"wholeMap",
"attackDamage": {
"min": 1,
"max": 2
}
},
{
"id": "debug_winged_demon",
"iconID": "monsters_demon1:0",
"name": "Winged demon",
"spawnGroup": "debug_demon",
"size": "2x2",
"monsterClass": "demon",
"maxHP": 10,
"maxAP": 10,
"moveCost": 10,
"attackCost": 10,
"attackChance": 50,
"droplistID": "debuglist1",
"attackDamage": {
"min": 10,
"max": 20
}
},
{
"id": "debug_troll",
"iconID": "monsters_misc:5",
"name": "Troll",
"spawnGroup": "debug_troll",
"monsterClass": "giant",
"maxHP": 10,
"maxAP": 10,
"moveCost": 10,
"attackCost": 2,
"attackChance": 50,
"droplistID": "debuglist2",
"attackDamage": {
"min": 1,
"max": 2
}
},
{
"id":"chaotic_rewarder",
"name":"Chaotic rewarder",
"iconID":"monsters_men2:5",
"spawnGroup":"chaotic_rewarder",
"phraseID":"chaotic_rewarder_0"
}
]

View File

@@ -1,552 +1,545 @@
[
{
"id":"scores",
"name":"scores",
"showInLog":0,
"stages":[
"id": "scores",
"name": "scores",
"showInLog": 1,
"stages": [
{
"progress":12,
"logText":"Absolute Shadow hater"
"progress": 10,
"logText": "Shadow score fixed"
},
{
"progress":13,
"logText":"Shadow hater"
"progress": 12,
"logText": "Absolute Shadow hater"
},
{
"progress":15,
"logText":"Balanced Shadow feelings"
"progress": 13,
"logText": "Shadow hater"
},
{
"progress":17,
"logText":"Shadow fan"
"progress": 15,
"logText": "Balanced Shadow feelings"
},
{
"progress":18,
"logText":"Absolute Shadow fan"
"progress": 17,
"logText": "Shadow fan"
},
{
"progress":22,
"logText":"Absolute Feygard hater"
"progress": 18,
"logText": "Absolute Shadow fan"
},
{
"progress":23,
"logText":"Feygard hater"
"progress": 20,
"logText": "Feygard score fixed"
},
{
"progress":25,
"logText":"Balanced Feygard feelings"
"progress": 22,
"logText": "Absolute Feygard hater"
},
{
"progress":27,
"logText":"Feygard fan"
"progress": 23,
"logText": "Feygard hater"
},
{
"progress":28,
"logText":"Absolute Feygard fan"
"progress": 25,
"logText": "Balanced Feygard feelings"
},
{
"progress":32,
"logText":"Absolute Thieves guild hater"
"progress": 27,
"logText": "Feygard fan"
},
{
"progress":33,
"logText":"Thieves guild hater"
"progress": 28,
"logText": "Absolute Feygard fan"
},
{
"progress":35,
"logText":"Balanced Thieves guild feelings"
"progress": 30,
"logText": "Thieves score fixed"
},
{
"progress":37,
"logText":"Thieves guild fan"
"progress": 32,
"logText": "Absolute Thieves guild hater"
},
{
"progress":38,
"logText":"Absolute Thieves guild fan"
"progress": 33,
"logText": "Thieves guild hater"
},
{
"progress":101,
"logText":"Clear preference: Shadow over Feygard"
"progress": 35,
"logText": "Balanced Thieves guild feelings"
},
{
"progress":102,
"logText":"Clear preference: Feygard over Shadow"
"progress": 37,
"logText": "Thieves guild fan"
},
{
"progress":999,
"logText":"-"
"progress": 38,
"logText": "Absolute Thieves guild fan"
},
{
"progress": 101,
"logText": "Clear preference: Shadow over Feygard"
},
{
"progress": 102,
"logText": "Clear preference: Feygard over Shadow"
},
{
"progress": 112,
"logText": "Max Absolute Shadow hater"
},
{
"progress": 113,
"logText": "Max Shadow hater"
},
{
"progress": 115,
"logText": "Max Balanced Shadow feelings"
},
{
"progress": 117,
"logText": "Max Shadow fan"
},
{
"progress": 118,
"logText": "Max Absolute Shadow fan"
},
{
"progress": 122,
"logText": "Max Absolute Feygard hater"
},
{
"progress": 123,
"logText": "Max Feygard hater"
},
{
"progress": 125,
"logText": "Max Balanced Feygard feelings"
},
{
"progress": 127,
"logText": "Max Feygard fan"
},
{
"progress": 128,
"logText": "Max Absolute Feygard fan"
},
{
"progress": 132,
"logText": "Max Absolute Thieves guild hater"
},
{
"progress": 133,
"logText": "Max Thieves guild hater"
},
{
"progress": 135,
"logText": "Max Balanced Thieves guild feelings"
},
{
"progress": 137,
"logText": "Max Thieves guild fan"
},
{
"progress": 138,
"logText": "Max Absolute Thieves guild fan"
},
{
"progress": 999,
"logText": "-"
}
]
},
{
"id":"faction_count_shadow",
"name":"faction_count_shadow",
"showInLog":0,
"stages":[
"id": "faction_count_shadow",
"name": "faction_count_shadow",
"showInLog": 0,
"stages": [
{
"progress":0,
"logText":"Ranges 30:max | 18:very high | 6:high | -5:low | -14:very low | -23:even lower"
"progress": 0,
"logText": "Ranges 30:max | 18:very high | 6:high | -5:low | -14:very low | -23:even lower"
},
{
"progress":10,
"logText":" 4 vacor:61 Killed Vacor"
"progress": 10,
"logText": " 4 vacor:61 Killed Vacor"
},
{
"progress":20,
"logText":" 4- vacor:60 Killed Unzel"
"progress": 20,
"logText": " 4- vacor:60 Killed Unzel"
},
{
"progress":30,
"logText":" 4- kaverin:21 Declined to help Kaverin ->0"
"progress": 30,
"logText": " 4- kaverin:21 Declined to help Kaverin ->0"
},
{
"progress":32,
"logText":" 4 kaverin:40 Delivered Message to Unzel"
"progress": 32,
"logText": " 4 kaverin:40 Delivered Message to Unzel"
},
{
"progress":34,
"logText":" 4- kaverin:40 Delivered Message to Vacor"
"progress": 34,
"logText": " 4- kaverin:40 Delivered Message to Vacor"
},
{
"progress":40,
"logText":" 4 feygard_shipment:82 Reported back to Ailshara"
"progress": 40,
"logText": " 4 feygard_shipment:82 Reported back to Ailshara"
},
{
"progress":42,
"logText":" 4- feygard_shipment:80 Reported back to Gandoren"
"progress": 42,
"logText": " 4- feygard_shipment:80 Reported back to Gandoren"
},
{
"progress":50,
"logText":" 1 thieves_hidden:80 Talked about thieves to Thoronir"
"progress": 50,
"logText": " 1 thieves_hidden:80 Talked about thieves to Thoronir"
},
{
"progress":60,
"logText":" 4 stoutford_castle:50 Yolgen examined the ring"
"progress": 60,
"logText": " 4 stoutford_castle:50 Yolgen examined the ring"
},
{
"progress":70,
"logText":" 4- stoutford_castle:60 Kept the ring for myself, which upset Yolgen"
"progress": 70,
"logText": " 4- stoutford_castle:60 Kept the ring for myself, which upset Yolgen"
},
{
"progress":80,
"logText":" 4- stoutford_castle:70 Kept the ring for myself and didn't tell Yolgen"
"progress": 80,
"logText": " 4- stoutford_castle:70 Kept the ring for myself and didn't tell Yolgen"
},
{
"progress":90,
"logText":" "
"progress": 90,
"logText": " "
},
{
"progress":100,
"logText":" 4 kaverin:100 Found Vacor's old hideout"
"progress": 100,
"logText": " 4 kaverin:100 Found Vacor's old hideout"
},
{
"progress":110,
"logText":" 4 Thieves03:32 The patrol sergeant has left to call for backup"
"progress": 110,
"logText": " 4 Thieves03:32 The patrol sergeant has left to call for backup"
},
{
"progress":120,
"logText":" 4- darkprotector:70 Restored the helmet"
"progress": 120,
"logText": " 4- darkprotector:70 Restored the helmet"
},
{
"progress":130,
"logText":" 5 darkprotector:40 Ulirfendor has given me the dark blessing of the Shadow"
"progress": 130,
"logText": " 5 darkprotector:40 Ulirfendor has given me the dark blessing of the Shadow"
},
{
"progress":140,
"logText":" 4 darkprotector:41 Ulirfendor wanted to give me the dark blessing of the Shadow, but I declined"
"progress": 140,
"logText": " 4 darkprotector:41 Ulirfendor wanted to give me the dark blessing of the Shadow, but I declined"
},
{
"progress":150,
"logText":" 4 xulviir:30 Destroyed the Xul'viir"
"progress": 150,
"logText": " 4 xulviir:30 Destroyed the Xul'viir"
},
{
"progress":160,
"logText":" 4- xulviir:20 Restored the Xul'viir"
"progress": 160,
"logText": " 4- xulviir:20 Restored the Xul'viir"
},
{
"progress":170,
"logText":" 3- rogorn:50 Killed Rogorn"
"progress": 170,
"logText": " 3- rogorn:50 Killed Rogorn"
},
{
"progress":180,
"logText":" 3 rogorn:55 Lie about Rogorn killed"
"progress": 180,
"logText": " 3 rogorn:55 Lie about Rogorn killed"
},
{
"progress":190,
"logText":" 1- loneford:55 Talked to Kuldan about the illness"
"progress": 190,
"logText": " 1- loneford:55 Talked to Kuldan about the illness"
},
{
"progress":200,
"logText":" 1 loneford:60 Didn't tell Kuldan about the illness"
"progress": 200,
"logText": " 1 loneford:60 Didn't tell Kuldan about the illness"
},
{
"progress":210,
"logText":" "
"progress": 210,
"logText": " "
},
{
"progress":220,
"logText":" "
"progress": 220,
"logText": " "
},
{
"progress":230,
"logText":" "
"progress": 230,
"logText": " "
},
{
"progress":240,
"logText":" "
"progress": 240,
"logText": " "
},
{
"progress":250,
"logText":" "
"progress": 250,
"logText": " "
},
{
"progress":260,
"logText":" "
"progress": 260,
"logText": " "
},
{
"progress":270,
"logText":" "
"progress": 270,
"logText": " "
},
{
"progress":280,
"logText":" "
"progress": 280,
"logText": " "
},
{
"progress":290,
"logText":" "
"progress": 290,
"logText": " "
}
]
},
{
"id":"faction_count_feygard",
"name":"faction_count_feygard",
"showInLog":0,
"stages":[
"id": "faction_count_feygard",
"name": "faction_count_feygard",
"showInLog": 0,
"stages": [
{
"progress":0,
"logText":"Ranges: ..."
"progress": 0,
"logText": "Ranges: ..."
},
{
"progress":10,
"logText":" "
"progress": 10,
"logText": " "
},
{
"progress":20,
"logText":" "
"progress": 20,
"logText": " "
},
{
"progress":30,
"logText":" "
"progress": 30,
"logText": " "
},
{
"progress":40,
"logText":" "
"progress": 40,
"logText": " "
},
{
"progress":50,
"logText":" "
"progress": 50,
"logText": " "
},
{
"progress":60,
"logText":" "
"progress": 60,
"logText": " "
},
{
"progress":70,
"logText":" "
"progress": 70,
"logText": " "
},
{
"progress":80,
"logText":" "
"progress": 80,
"logText": " "
},
{
"progress":90,
"logText":" "
"progress": 90,
"logText": " "
},
{
"progress":100,
"logText":" "
"progress": 100,
"logText": " "
},
{
"progress":110,
"logText":" "
"progress": 110,
"logText": " "
},
{
"progress":120,
"logText":" "
"progress": 120,
"logText": " "
},
{
"progress":130,
"logText":" "
"progress": 130,
"logText": " "
},
{
"progress":140,
"logText":" "
"progress": 140,
"logText": " "
},
{
"progress":150,
"logText":" "
"progress": 150,
"logText": " "
},
{
"progress":160,
"logText":" "
"progress": 160,
"logText": " "
},
{
"progress":170,
"logText":" "
"progress": 170,
"logText": " "
},
{
"progress":180,
"logText":" "
"progress": 180,
"logText": " "
},
{
"progress":190,
"logText":" "
"progress": 190,
"logText": " "
},
{
"progress":200,
"logText":" "
"progress": 200,
"logText": " "
},
{
"progress":210,
"logText":" "
"progress": 210,
"logText": " "
},
{
"progress":220,
"logText":" "
"progress": 220,
"logText": " "
},
{
"progress":230,
"logText":" "
"progress": 230,
"logText": " "
},
{
"progress":240,
"logText":" "
"progress": 240,
"logText": " "
},
{
"progress":250,
"logText":" "
"progress": 250,
"logText": " "
},
{
"progress":260,
"logText":" "
"progress": 260,
"logText": " "
},
{
"progress":270,
"logText":" "
"progress": 270,
"logText": " "
},
{
"progress":280,
"logText":" "
"progress": 280,
"logText": " "
},
{
"progress":290,
"logText":" "
"progress": 290,
"logText": " "
}
]
},
{
"id":"faction_count_thieves",
"name":"faction_count_thieves",
"showInLog":0,
"stages":[
"id": "faction_count_thieves",
"name": "faction_count_thieves",
"showInLog": 0,
"stages": [
{
"progress":0,
"logText":"Ranges: ..."
"progress": 0,
"logText": "Ranges: ..."
},
{
"progress":10,
"logText":" 8- wanted_men:65 Returned fake key to Troublemaker"
"progress": 10,
"logText": " 8- wanted_men:65 Returned fake key to Troublemaker"
},
{
"progress":20,
"logText":" 3 wanted_men:80 Defy and his men killed"
"progress": 20,
"logText": " 3 wanted_men:80 Defy and his men killed"
},
{
"progress":30,
"logText":" "
"progress": 30,
"logText": " "
},
{
"progress":40,
"logText":" "
"progress": 40,
"logText": " "
},
{
"progress":50,
"logText":" "
"progress": 50,
"logText": " "
},
{
"progress":60,
"logText":" "
"progress": 60,
"logText": " "
},
{
"progress":70,
"logText":" "
"progress": 70,
"logText": " "
},
{
"progress":80,
"logText":" "
"progress": 80,
"logText": " "
},
{
"progress":90,
"logText":" "
"progress": 90,
"logText": " "
},
{
"progress":100,
"logText":" "
"progress": 100,
"logText": " "
},
{
"progress":110,
"logText":" "
"progress": 110,
"logText": " "
},
{
"progress":120,
"logText":" "
"progress": 120,
"logText": " "
},
{
"progress":130,
"logText":" "
"progress": 130,
"logText": " "
},
{
"progress":140,
"logText":" "
"progress": 140,
"logText": " "
},
{
"progress":150,
"logText":" "
"progress": 150,
"logText": " "
},
{
"progress":160,
"logText":" "
"progress": 160,
"logText": " "
},
{
"progress":170,
"logText":" "
"progress": 170,
"logText": " "
},
{
"progress":180,
"logText":" "
"progress": 180,
"logText": " "
},
{
"progress":190,
"logText":" "
"progress": 190,
"logText": " "
},
{
"progress":200,
"logText":" "
"progress": 200,
"logText": " "
},
{
"progress":210,
"logText":" "
"progress": 210,
"logText": " "
},
{
"progress":220,
"logText":" "
"progress": 220,
"logText": " "
},
{
"progress":230,
"logText":" "
"progress": 230,
"logText": " "
},
{
"progress":240,
"logText":" "
"progress": 240,
"logText": " "
},
{
"progress":250,
"logText":" "
"progress": 250,
"logText": " "
},
{
"progress":260,
"logText":" "
"progress": 260,
"logText": " "
},
{
"progress":270,
"logText":" "
"progress": 270,
"logText": " "
},
{
"progress":280,
"logText":" "
"progress": 280,
"logText": " "
},
{
"progress":290,
"logText":" "
}
]
},
{
"id":"scores",
"name":"scores",
"showInLog":0,
"stages":[
{
"progress":12,
"logText":"Absolute Shadow hater"
},
{
"progress":13,
"logText":"Shadow hater"
},
{
"progress":15,
"logText":"Balanced Shadow feelings"
},
{
"progress":17,
"logText":"Shadow fan"
},
{
"progress":18,
"logText":"Absolute Shadow fan"
},
{
"progress":22,
"logText":"Absolute Feygard hater"
},
{
"progress":23,
"logText":"Feygard hater"
},
{
"progress":25,
"logText":"Balanced Feygard feelings"
},
{
"progress":27,
"logText":"Feygard fan"
},
{
"progress":28,
"logText":"Absolute Feygard fan"
},
{
"progress":32,
"logText":"Absolute Thieves guild hater"
},
{
"progress":33,
"logText":"Thieves guild hater"
},
{
"progress":35,
"logText":"Balanced Thieves guild feelings"
},
{
"progress":37,
"logText":"Thieves guild fan"
},
{
"progress":38,
"logText":"Absolute Thieves guild fan"
},
{
"progress":101,
"logText":"Clear preference: Shadow over Feygard"
},
{
"progress":102,
"logText":"Clear preference: Feygard over Shadow"
},
{
"progress":999,
"logText":"-"
"progress": 290,
"logText": " "
}
]
}

View File

@@ -480,6 +480,8 @@
<item>@raw/conversationlist_mt_galmore2</item>
<!--Added by ATCS v0.6.24 for project next_release-->
<item>@raw/conversationlist_next_release</item>
<item>@raw/conversationlist_debug</item>
<item>@raw/conversationlist_fsc_calc</item>
</array>
<array name="loadresource_monsters">
@@ -1687,6 +1689,7 @@
<item>@xml/stoutford_filler_2</item>
<item>@xml/stoutford_filler_3</item>
<item>@xml/stoutford_filler_4</item>
<item>@xml/debugmap</item>
</array>
</resources>

View File

@@ -1,283 +1,249 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" renderorder="right-down" width="18" height="18" tilewidth="32" tileheight="32" nextobjectid="18">
<tileset firstgid="1" name="map_bed_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_bed_1.png" width="512" height="256"/>
<map version="1.5" tiledversion="1.7.2" orientation="orthogonal" renderorder="right-down" width="18" height="18" tilewidth="32" tileheight="32" infinite="0" nextlayerid="11" nextobjectid="25">
<tileset firstgid="1" name="map_bed_1" tilewidth="32" tileheight="32" tilecount="160" columns="16">
<image source="../drawable/map_bed_1.png" width="512" height="320"/>
</tileset>
<tileset firstgid="129" name="map_border_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="161" name="map_border_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_border_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="257" name="map_bridge_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="289" name="map_bridge_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_bridge_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="385" name="map_bridge_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="417" name="map_bridge_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_bridge_2.png" width="512" height="256"/>
</tileset>
<tileset firstgid="513" name="map_broken_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="545" name="map_broken_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_broken_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="641" name="map_cavewall_1" tilewidth="32" tileheight="32" tilecount="108" columns="18">
<tileset firstgid="673" name="map_cavewall_1" tilewidth="32" tileheight="32" tilecount="108" columns="18">
<image source="../drawable/map_cavewall_1.png" width="576" height="192"/>
</tileset>
<tileset firstgid="749" name="map_cavewall_2" tilewidth="32" tileheight="32" tilecount="108" columns="18">
<tileset firstgid="781" name="map_cavewall_2" tilewidth="32" tileheight="32" tilecount="108" columns="18">
<image source="../drawable/map_cavewall_2.png" width="576" height="192"/>
</tileset>
<tileset firstgid="857" name="map_cavewall_3" tilewidth="32" tileheight="32" tilecount="108" columns="18">
<tileset firstgid="889" name="map_cavewall_3" tilewidth="32" tileheight="32" tilecount="108" columns="18">
<image source="../drawable/map_cavewall_3.png" width="576" height="192"/>
</tileset>
<tileset firstgid="965" name="map_cavewall_4" tilewidth="32" tileheight="32" tilecount="108" columns="18">
<tileset firstgid="997" name="map_cavewall_4" tilewidth="32" tileheight="32" tilecount="108" columns="18">
<image source="../drawable/map_cavewall_4.png" width="576" height="192"/>
</tileset>
<tileset firstgid="1073" name="map_chair_table_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="1105" name="map_chair_table_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_chair_table_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="1201" name="map_chair_table_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="1233" name="map_chair_table_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_chair_table_2.png" width="512" height="256"/>
</tileset>
<tileset firstgid="1329" name="map_crate_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="1361" name="map_crate_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_crate_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="1457" name="map_cupboard_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="1489" name="map_cupboard_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_cupboard_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="1585" name="map_curtain_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="1617" name="map_curtain_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_curtain_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="1713" name="map_entrance_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="1745" name="map_entrance_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_entrance_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="1841" name="map_entrance_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="1873" name="map_entrance_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_entrance_2.png" width="512" height="256"/>
</tileset>
<tileset firstgid="1969" name="map_fence_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="2001" name="map_fence_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_fence_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="2097" name="map_fence_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="2129" name="map_fence_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_fence_2.png" width="512" height="256"/>
</tileset>
<tileset firstgid="2225" name="map_fence_3" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="2257" name="map_fence_3" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_fence_3.png" width="512" height="256"/>
</tileset>
<tileset firstgid="2353" name="map_fence_4" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="2385" name="map_fence_4" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_fence_4.png" width="512" height="256"/>
</tileset>
<tileset firstgid="2481" name="map_ground_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="2513" name="map_ground_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_ground_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="2609" name="map_ground_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="2641" name="map_ground_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_ground_2.png" width="512" height="256"/>
</tileset>
<tileset firstgid="2737" name="map_ground_3" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="2769" name="map_ground_3" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_ground_3.png" width="512" height="256"/>
</tileset>
<tileset firstgid="2865" name="map_ground_4" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="2897" name="map_ground_4" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_ground_4.png" width="512" height="256"/>
</tileset>
<tileset firstgid="2993" name="map_ground_5" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="3025" name="map_ground_5" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_ground_5.png" width="512" height="256"/>
</tileset>
<tileset firstgid="3121" name="map_ground_6" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="3153" name="map_ground_6" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_ground_6.png" width="512" height="256"/>
</tileset>
<tileset firstgid="3249" name="map_ground_7" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="3281" name="map_ground_7" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_ground_7.png" width="512" height="256"/>
</tileset>
<tileset firstgid="3377" name="map_ground_8" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="3409" name="map_ground_8" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_ground_8.png" width="512" height="256"/>
</tileset>
<tileset firstgid="3505" name="map_house_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="3537" name="map_house_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_house_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="3633" name="map_house_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="3665" name="map_house_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_house_2.png" width="512" height="256"/>
</tileset>
<tileset firstgid="3761" name="map_indoor_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="3793" name="map_indoor_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_indoor_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="3889" name="map_indoor_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="3921" name="map_indoor_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_indoor_2.png" width="512" height="256"/>
</tileset>
<tileset firstgid="4017" name="map_kitchen_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="4049" name="map_kitchen_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_kitchen_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="4145" name="map_outdoor_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="4177" name="map_outdoor_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_outdoor_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="4273" name="map_pillar_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="4305" name="map_pillar_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_pillar_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="4401" name="map_pillar_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="4433" name="map_pillar_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_pillar_2.png" width="512" height="256"/>
</tileset>
<tileset firstgid="4529" name="map_plant_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="4561" name="map_plant_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_plant_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="4657" name="map_plant_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="4689" name="map_plant_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_plant_2.png" width="512" height="256"/>
</tileset>
<tileset firstgid="4785" name="map_rock_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="4817" name="map_rock_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_rock_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="4913" name="map_rock_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="4945" name="map_rock_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_rock_2.png" width="512" height="256"/>
</tileset>
<tileset firstgid="5041" name="map_roof_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="5073" name="map_roof_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_roof_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="5169" name="map_roof_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="5201" name="map_roof_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_roof_2.png" width="512" height="256"/>
</tileset>
<tileset firstgid="5297" name="map_roof_3" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="5329" name="map_roof_3" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_roof_3.png" width="512" height="256"/>
</tileset>
<tileset firstgid="5425" name="map_shop_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="5457" name="map_shop_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_shop_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="5553" name="map_sign_ladder_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="5585" name="map_sign_ladder_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_sign_ladder_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="5681" name="map_table_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="5713" name="map_table_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_table_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="5809" name="map_trail_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="5841" name="map_trail_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_trail_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="5937" name="map_transition_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="5969" name="map_transition_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_transition_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="6065" name="map_transition_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="6097" name="map_transition_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_transition_2.png" width="512" height="256"/>
</tileset>
<tileset firstgid="6193" name="map_transition_3" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="6225" name="map_transition_3" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_transition_3.png" width="512" height="256"/>
</tileset>
<tileset firstgid="6321" name="map_transition_4" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="6353" name="map_transition_4" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_transition_4.png" width="512" height="256"/>
</tileset>
<tileset firstgid="6449" name="map_transition_5" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="6481" name="map_transition_5" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_transition_5.png" width="512" height="256"/>
</tileset>
<tileset firstgid="6577" name="map_tree_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="6609" name="map_tree_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_tree_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="6705" name="map_tree_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="6737" name="map_tree_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_tree_2.png" width="512" height="256"/>
</tileset>
<tileset firstgid="6833" name="map_wall_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="6865" name="map_wall_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_wall_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="6961" name="map_wall_2" tilewidth="32" tileheight="32" tilecount="120" columns="15">
<tileset firstgid="6993" name="map_wall_2" tilewidth="32" tileheight="32" tilecount="120" columns="15">
<image source="../drawable/map_wall_2.png" width="480" height="256"/>
</tileset>
<tileset firstgid="7081" name="map_wall_3" tilewidth="32" tileheight="32" tilecount="120" columns="15">
<tileset firstgid="7113" name="map_wall_3" tilewidth="32" tileheight="32" tilecount="120" columns="15">
<image source="../drawable/map_wall_3.png" width="480" height="256"/>
</tileset>
<tileset firstgid="7201" name="map_wall_4" tilewidth="32" tileheight="32" tilecount="120" columns="15">
<tileset firstgid="7233" name="map_wall_4" tilewidth="32" tileheight="32" tilecount="120" columns="15">
<image source="../drawable/map_wall_4.png" width="480" height="256"/>
</tileset>
<tileset firstgid="7321" name="map_window_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="7353" name="map_window_1" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_window_1.png" width="512" height="256"/>
</tileset>
<tileset firstgid="7449" name="map_window_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<tileset firstgid="7481" name="map_window_2" tilewidth="32" tileheight="32" tilecount="128" columns="16">
<image source="../drawable/map_window_2.png" width="512" height="256"/>
</tileset>
<tileset firstgid="7577" name="map_dynamic_placeholders" tilewidth="32" tileheight="32" tilecount="20" columns="10">
<tileset firstgid="7609" name="map_dynamic_placeholders" tilewidth="32" tileheight="32" tilecount="20" columns="10">
<image source="../drawable/map_dynamic_placeholders.png" width="320" height="64"/>
</tileset>
<layer name="Ground" width="18" height="18">
<layer id="9" name="Base" width="18" height="18">
<data encoding="base64" compression="zlib">
eJzbyMnAsHEU48Q53AwMFwaBO2B4CxIezOYcGyD3jOJRTAkGAOdR634=
eJy7yMnAcHEUE41fcSHwcDJnFI/iUczAAADzLBTi
</data>
</layer>
<layer name="Objects" width="18" height="18">
<layer id="1" name="Ground" width="18" height="18">
<data encoding="base64" compression="zlib">
eJzjFGOAg5OiCLYrK8OAg3AW6pt5VZSwGnqBvUwDa7+CIHXMMcBiDpcYptgoGBrgJP9Au2DgAADprgS2
eJy7yMnAcHGY45tcDAy3kPBtIAYBUs15CdUHA6+HiTk/gfp+IeHfZJozikfxUMcArNsJrA==
</data>
</layer>
<layer name="Above" width="18" height="18">
<layer id="2" name="Objects" width="18" height="18">
<data encoding="base64" compression="zlib">
eJxjYBgFIxXMlB1oF4yCUTC4AAA1SQC3
eJxjYBg5gFVsoF0AAamsEJpDGEJ/FB04t4yCUTAKEAAA9WABpw==
</data>
</layer>
<layer name="Walkable" width="18" height="18">
<layer id="3" name="Above" width="18" height="18">
<data encoding="base64" compression="zlib">
eJxjYBgFAwU2ig20C0bBKBgFyAAAzSQAyA==
eJxjYBgFo2AUjIJRAAIABRAAAQ==
</data>
</layer>
<objectgroup name="Object Layer 1">
<object id="1" name="debugsign" type="sign" x="192" y="96" width="32" height="32"/>
<object id="2" name="start" type="rest" x="96" y="64" width="32" height="32"/>
<object id="3" name="Unopenable key area" type="key" x="32" y="128" width="32" height="32">
<layer id="4" name="Walkable" width="18" height="18">
<data encoding="base64" compression="zlib">
eJxjYBgFo2AUjIJRAAIABRAAAQ==
</data>
</layer>
<objectgroup id="5" name="Mapevents">
<object id="18" name="entry" type="mapchange" x="160" y="160" width="32" height="32"/>
<object id="24" name="fsc_calc" type="script" x="128" y="64" width="96" height="96">
<properties>
<property name="phrase" value="debugrequireskey"/>
<property name="requireId" value="no_quest"/>
<property name="when" value="enter"/>
</properties>
</object>
</objectgroup>
<objectgroup id="10" name="Keys">
<object id="21" name="dbg_shop" type="key" x="96" y="160" width="32" height="32">
<properties>
<property name="phrase" value="dbg_shop"/>
<property name="requireId" value="andor"/>
<property name="requireNegation" value="true"/>
<property name="requireType" value="questProgress"/>
<property name="requireValue" value="10"/>
<property name="requireValue" value="1"/>
</properties>
</object>
<object id="4" name="Openable by quest" type="key" x="0" y="128" width="32" height="32">
<object id="22" name="dbg_teleport" type="key" x="224" y="160" width="32" height="32">
<properties>
<property name="phrase" value="debugrequireskey"/>
<property name="requireId" value="debugquest"/>
<property name="phrase" value="dbg_teleport"/>
<property name="requireId" value="andor"/>
<property name="requireNegation" value="true"/>
<property name="requireType" value="questProgress"/>
<property name="requireValue" value="100"/>
<property name="requireValue" value="1"/>
</properties>
</object>
<object id="5" name="place2" type="mapchange" x="192" y="256" width="32" height="32">
<object id="23" name="dbg_scores" type="key" x="160" y="96" width="32" height="32">
<properties>
<property name="map" value="debugmap"/>
<property name="place" value="place1"/>
</properties>
</object>
<object id="6" name="place1" type="mapchange" x="0" y="0" width="32" height="32">
<properties>
<property name="map" value="debugmap"/>
<property name="place" value="place2"/>
</properties>
</object>
<object id="7" name="startitems" type="container" x="192" y="0" width="32" height="32"/>
<object id="8" name="Toll both. 10 gold." type="key" x="96" y="0" width="32" height="32">
<properties>
<property name="phrase" value="debugrequires10gold"/>
<property name="requireId" value="gold"/>
<property name="requireType" value="inventoryRemove"/>
<property name="requireValue" value="10"/>
<property name="phrase" value="dbg_scores"/>
<property name="requireId" value="andor"/>
<property name="requireNegation" value="true"/>
<property name="requireType" value="questProgress"/>
<property name="requireValue" value="1"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Spawn">
<object id="9" name="debug_insect" type="spawn" x="384" y="128" width="192" height="160">
<properties>
<property name="quantity" value="15"/>
</properties>
</object>
<object id="10" name="debug_troll" type="spawn" x="512" y="256" width="64" height="64">
<properties>
<property name="quantity" value="3"/>
</properties>
</object>
<object id="11" name="debugNPC1" type="spawn" x="288" y="0" width="32" height="32"/>
<object id="12" name="debugNPC2" type="spawn" x="256" y="0" width="32" height="32"/>
<object id="13" name="debugNPC3" type="spawn" x="32" y="448" width="32" height="32"/>
<object id="14" name="chaotic_dialogue" type="spawn" x="256" y="64" width="32" height="32">
<properties>
<property name="spawngroup" value="chaotic_rewarder"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Inactive">
<properties>
<property name="active" value="false"/>
</properties>
<object id="15" name="signbeer" type="sign" x="288" y="448" width="32" height="32"/>
<object id="16" name="debug_insect_inactive" type="spawn" x="96" y="416" width="160" height="96">
<properties>
<property name="active" value="false"/>
<property name="quantity" value="11"/>
<property name="spawngroup" value="debug_insect"/>
</properties>
</object>
</objectgroup>
<objectgroup name="Active">
<object id="17" name="signnobeer" type="sign" x="288" y="448" width="32" height="32"/>
</objectgroup>
<objectgroup id="6" name="Spawn"/>
</map>

View File

@@ -827,7 +827,11 @@ A **dialogue** ***can*** have the following fields defined:
- A **reward** ***must*** have the following fields defined:
- "rewardType" with one of the following values: "**questProgress**", "**removeQuestProgress**", "**dropList**", "**skillIncrease**", "**actorCondition**", "**actorConditionImmunity**", "**alignmentChange**", "**alignmentSet**", "**giveItem**", "**createTimer**", "**spawnAll**", "**removeSpawnArea**", "**deactivateSpawnArea**", "**activateMapObjectGroup**", "**deactivateMapObjectGroup**", "**changeMapFilter**", "**mapchange**". Explanation for all rewards type, and associated constraints on the other fields of a reply definition is below.
- "rewardType" with one of the following values: "**questProgress**", "**removeQuestProgress**", "**dropList**", "**skillIncrease**",
"**actorCondition**", "**actorConditionImmunity**", "**alignmentChange**", "**alignmentSet**", "**alignmentToReg1**", "**alignmentFromReg1**",
"**alignmentAdd**", "**alignmentSub**", "**alignmentMult**", "**alignmentDiv**", "**giveItem**", "**createTimer**", "**spawnAll**",
"**removeSpawnArea**", "**deactivateSpawnArea**", "**activateMapObjectGroup**", "**deactivateMapObjectGroup**", "**changeMapFilter**",
"**mapchange**". Explanation for all rewards type, and associated constraints on the other fields of a reply definition is below.
- "rewardID" with a textual value generally matching the ID of a game object. As it depends on the "**rewardType**" selected, see below for details.