safeIs this safe i am getting malware warings?
But it needs an update.Is this safe i am getting malware warings?
Isn't it? The DLC had the two new clans added, which are present here.But it needs an update.
There are a few missions that are missing, as well as a portrait—the werewolf portrait.Isn't it? The DLC had the two new clans added, which are present here.
Or i'm missing something.
Any chance for an update?@ziel it's already fixed. just download again.
You can also play on a PC.This mod is just for the android version?
Step-by-step guide with pictures on how to play any DanFabulich mods on PC: https://choiceofmods.com/threads/i-the-forgotten-one-v1-2-5-mod-menu.960/page-2#post-7079This mod is just for the android version?
index.html.<script>
function setupNav() {
const lines = allScenes[_global.nav.getStartupScene()].lines;
const achievements = [];
for (let i = 0; i < lines.length; i++) {
const line = lines[i].trim();
if (line.startsWith('*achievement')) {
const parts = line.split(/\s+/);
const achievementName = parts[1];
const isVisible = parts[2] === 'visible';
const points = parseInt(parts[3], 10);
const title = parts.slice(4).join(' ');
const desc1 = (lines[i + 1] || '').trim().replace(/^\t/, '');
const desc2 = (lines[i + 2] || '').trim().replace(/^\t/, '');
achievements.push([
achievementName,
isVisible,
points,
title,
desc2,
desc1
]);
}
}
const purchases = {};
for (const chapter of Object.keys(allScenes)) {
purchases[chapter] = 'adfree';
}
const sceneList = [];
let inSceneList = false;
for (let line of lines) {
const trimmed = line.trim();
if (trimmed.startsWith('*scene_list')) {
inSceneList = true;
continue;
}
if (inSceneList && trimmed.startsWith('*') && !trimmed.startsWith('*scene_list')) {
break;
}
if (inSceneList) {
if (trimmed === '') continue;
const sceneName = trimmed.replace(/^\$?\s*/, '');
sceneList.push(sceneName);
}
}
nav = new SceneNavigator(sceneList);
nav.setStartingStatsClone(stats);
if (achievements.length) {
nav.loadAchievements(achievements);
}
if (nav.loadProducts) nav.loadProducts([], purchases);
document.querySelector('#achievementsButton').removeAttribute('style');
}
setupNav();
</script>
did you try triggering any achievement to see if it works ?If you extracted the APK and play on the browser like me, then this code should hopefully fix the achievements and missing variable errors. You can add it to the bottom ofindex.html.
I only tested it with Vampire The Masquerade — Parliament of Knives and Choice of Magics, so I'm not sure if it will work with every game uploaded by @DanFabulich.
HTML:<script> function setupNav() { const lines = allScenes[_global.nav.getStartupScene()].lines; const achievements = []; for (let i = 0; i < lines.length; i++) { const line = lines[i].trim(); if (line.startsWith('*achievement')) { const parts = line.split(/\s+/); const achievementName = parts[1]; const isVisible = parts[2] === 'visible'; const points = parseInt(parts[3], 10); const title = parts.slice(4).join(' '); const desc1 = (lines[i + 1] || '').trim().replace(/^\t/, ''); const desc2 = (lines[i + 2] || '').trim().replace(/^\t/, ''); achievements.push([ achievementName, isVisible, points, title, desc2, desc1 ]); } } const purchases = {}; for (const chapter of Object.keys(allScenes)) { purchases[chapter] = 'adfree'; } const sceneList = []; let inSceneList = false; for (let line of lines) { const trimmed = line.trim(); if (trimmed.startsWith('*scene_list')) { inSceneList = true; continue; } if (inSceneList && trimmed.startsWith('*') && !trimmed.startsWith('*scene_list')) { break; } if (inSceneList) { if (trimmed === '') continue; const sceneName = trimmed.replace(/^\$?\s*/, ''); sceneList.push(sceneName); } } nav = new SceneNavigator(sceneList); nav.setStartingStatsClone(stats); if (achievements.length) { nav.loadAchievements(achievements); } if (nav.loadProducts) nav.loadProducts([], purchases); document.querySelector('#achievementsButton').removeAttribute('style'); } setupNav(); </script>
did you try triggering any achievement to see if it works ?
index.html:nav = new SceneNavigator(["startup"]);
stats = {};
nav object with the default "startup" scene. You can see that this is the default code for any ChoiceScript game:mygame.js that initializes nav with all the proper variables and achievements. To use Vampire The Masquerade — Parliament of Knives as an example, this is the mygame.js that comes with the game:nav = new SceneNavigator(
[
"startup",
"ch1_incursion",
"ch2_misgivings",
"ch3_collusion",
"ch4_council",
"ch5_exhibition",
all the other scenes...
]
);
stats =
{
"choice_title": "Parliament of Knives",
"primer_obtained": "false",
"chapter": "1",
"return_to_previous_chapter": "false",
"restore_function_toggled_on": "false",
"name_and_clan_chosen": "false",
"name": "Nameless",
"last_name": "nil",
all the other variables...
}
;
purchases =
{
"ch4_council": "adfree",
"ch5_exhibition": "adfree",
all the other purchase keys...
}
;
achievements =
[
[
"surprise_attack",
true,
10,
"Surprise Attack!",
"Reached Ward without being spotted first.",
"Locate Ward during the Blood Hunt without being seen."
],
all the other achievement arrays...
]
;
nav.setStartingStatsClone(stats);
if (achievements.length) {
nav.loadAchievements(achievements);
}
if (nav.loadProducts) nav.loadProducts([], purchases);
index.html, you moved all JavaScript files and game scene files into one easily distributable index.html file, but you forgot to include the code from the custom mygame.js. This leads to an issue where whenever you refresh the page, or exit and come back, the nav object is not properly set up.nav properly, but the second you refresh or exit, that nav object is lost, and because you resume from a later part in the game, the code to fix nav never runs.mygame.js is supposed to do. I get the startup code from allScenes[_global.nav.getStartupScene()].lines, and from the ChoiceScript code itself, extract the achievements and scenes. The purchase keys don't seem to be present in the game's code, so I just set all scenes to "adfree". The stats variable seems to be saved in the browser itself, so I don't need to extract it from the game's code. After I have the sceneList, the stats, the achievements, and the purchases, I can then recreate the nav object properly. I also unhide the achievements button.document.querySelector('#achievementsButton').removeAttribute('style'); to throw an error.