diff --git a/rslib/src/scheduler/fsrs/retention.rs b/rslib/src/scheduler/fsrs/retention.rs
index ce93fae5b..b26fa25e0 100644
--- a/rslib/src/scheduler/fsrs/retention.rs
+++ b/rslib/src/scheduler/fsrs/retention.rs
@@ -55,12 +55,23 @@ impl Collection {
}
let (mut config, cards) = self.simulate_request_to_config(&req)?;
+ dbg!(&target_type);
if let Some(Kind::Memorized(settings)) = target_type {
let loss_aversion = settings.loss_aversion;
+ dbg!(&loss_aversion);
+
config.relearning_step_transitions[0][0] *= loss_aversion;
config.relearning_step_transitions[1][0] *= loss_aversion;
config.relearning_step_transitions[2][0] *= loss_aversion;
+
+ config.learning_step_transitions[0][0] *= loss_aversion;
+ config.learning_step_transitions[1][0] *= loss_aversion;
+ config.learning_step_transitions[2][0] *= loss_aversion;
+
+ config.state_rating_costs[0][0] *= loss_aversion;
+ config.state_rating_costs[1][0] *= loss_aversion;
+ config.state_rating_costs[2][0] *= loss_aversion;
}
Ok(fsrs
diff --git a/ts/routes/deck-options/SimulatorModal.svelte b/ts/routes/deck-options/SimulatorModal.svelte
index 80fa6518e..fc57c4650 100644
--- a/ts/routes/deck-options/SimulatorModal.svelte
+++ b/ts/routes/deck-options/SimulatorModal.svelte
@@ -49,7 +49,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
export let onPresetChange: () => void;
let cmrrTargetType = DEFAULT_CMRR_TARGET;
- $: if (simulateFsrsRequest?.target) {
+ let lastCmrrTargetType = cmrrTargetType;
+ $: if (simulateFsrsRequest?.target && cmrrTargetType !== lastCmrrTargetType) {
switch (cmrrTargetType) {
case "memorized":
simulateFsrsRequest.target.kind = {
@@ -66,6 +67,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
};
break;
}
+ lastCmrrTargetType = cmrrTargetType;
}
const config = state.currentConfig;
@@ -449,6 +451,15 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
+
+ {#if simulateFsrsRequest.target?.kind.case === "memorized"}
+
+
+ {"Fail Cost Multiplier: "}
+
+
+ {/if}