What's new
Choice of Mods

Join our amazing community to find Choicescript games and modifications to improve your gameplay!

Guide on how to mod the stats on Wips

Foulwarden

Well-known member
Member
Does anyone know how to add elements or skills in this game?
● Just add (scenes) with your link like this, to find the stat choose (choicescript_stats.txt) https://dashingdon.com/play/matt-fusin-/hs-tales-/mygame/scenes
● When you put it in the console make sure the first letter is small.
● put this in console:
stats.hp=80
stats.strength=80
stats.speed=80
stats.technique=80
stats.endurance=80
stats.battleiq=80
stats.intelligence=80
stats.naturalenergy=80
Here are the other stats
1000662924.jpg
 

ZephyrX

New member
Member
● Just add (scenes) with your link like this, to find the stat choose (choicescript_stats.txt) https://dashingdon.com/play/matt-fusin-/hs-tales-/mygame/scenes
● When you put it in the console make sure the first letter is small.
● put this in console:
stats.hp=80
stats.strength=80
stats.speed=80
stats.technique=80
stats.endurance=80
stats.battleiq=80
stats.intelligence=80
stats.naturalenergy=80
Here are the other stats
View attachment 2285
I meant these stats
 

Attachments

  • Screenshot_20240517_122546_Kiwi Browser.jpg
    Screenshot_20240517_122546_Kiwi Browser.jpg
    60.6 KB · Views: 31

namesenpai

Well-known member
Member
@Itachi the Kinslayer Add this to the guide. So, I just got an iOS device, and after some looking around, apparently you just need to download an extension from the App Store called DevTools Extension. After enabling it on Safari, when you are on the game page, just tap on the extensions setting icon in the bottom right corner, and voila! It will open the console in a popup. It's such a convenient way, even easier than on Android. I have attached some screenshots. IMG_0970.png IMG_0966_l2.jpeg IMG_0968.jpeg PenultimateFullSizeRender_l2.jpeg
 

KratosTheTrueGod

Active member
Member
I'll copy and paste what I said in another thread to just so it is archived in a pinned thread.

Hi everyone. I just discovered something, though I am not certain if it will work in all cases, but it did for mine. Typically when we want to modify a game stat/variable, we would access the stat object directly through the window object, i.e. window.stat.varname = value. This has, for cogdemos, changed, though I am not certain if it was intentionally changed to deter cheaters, or it was an implementation they wanted to test for future updates to the cogdemos server. It seems that there is an extra layer/object you would need to go through before you can modify stats, which is the "0" object, note that this is a zero and not a capital letter o. This means that you can't access it directly since it is a numerical, i.e. window.0.stats.varname = value, but would have to index it instead. You have to enter window["0"].stats.varname = value. Everything else remains the same. I hope that helps someone, and gods speed (my cheaters).

kratos-anger.gif

Also, some of the games no longer allow you to view all the scene files available in one page (I believe it varies by author and what they allowed when submitting their work to cog games). So instead of entering "https://cogdemos.ink/play/*/*/mygame/scenes/" to see all the available scenes, you need to instead enter "https://cogdemos.ink/play/*/*/mygame/scenes/startup.txt", or "https://cogdemos.ink/play/*/*/mygame/scenes/choicescript_stats.txt" instead, since most if not all cog games have them. From there you can search for keyword "*goto_scene" which should give you the file names of other scene files, such as "*goto_scene MainOne", which you can use to determine the other scene files, for the example provided, that would be "https://cogdemos.ink/play/*/*/mygame/scenes/MainOne.txt". It is more tedious, as you have to manually search for the necessary files, but it works.
You could also use the devtools "Network" tab to get the scene files, but that would require you to play the whole game first (scene files are requested on a need by need basis, so if there is 10 chapters, and you have only played through 5, you probably won't see the chapters 6, 7, and etc. until they have been requested), then look through ALL the network logs to find the ones that call the scene files and get the files manually from there using the discovered name, that would for the example above be "https://cogdemos.ink/play/*/*/mygame/scenes/MainOne.txt"., so I typically prefer the former method. Cheers.

HELP: How do I unlink the links above, they are invalid and a safety hazard as is?
 
Last edited:

KratosTheTrueGod

Active member
Member
If you have firefox nightly edition and can get violent monkey, you can circumvent the need to have a developer console in your browser to modify stats. But you would need a little experience in Javascript and/or HTML (I'm not that well versed in these) to add the ability to dynamically change stats while reading (for example bringing up a popup to modify stats or some such). I'll post a script I currently have going for me now.
 

GrumpyTheFrog

Active member
Member
I'll copy and paste what I said in another thread to just so it is archived in a pinned thread.

Hi everyone. I just discovered something, though I am not certain if it will work in all cases, but it did for mine. Typically when we want to modify a game stat/variable, we would access the stat object directly through the window object, i.e. window.stat.varname = value. This has, for cogdemos, changed, though I am not certain if it was intentionally changed to deter cheaters, or it was an implementation they wanted to test for future updates to the cogdemos server. It seems that there is an extra layer/object you would need to go through before you can modify stats, which is the "0" object, note that this is a zero and not a capital letter o. This means that you can't access it directly since it is a numerical, i.e. window.0.stats.varname = value, but would have to index it instead. You have to enter window["0"].stats.varname = value. Everything else remains the same. I hope that helps someone, and gods speed (my cheaters).

kratos-anger.gif

Also, some of the games no longer allow you to view all the scene files available in one page (I believe it varies by author and what they allowed when submitting their work to cog games). So instead of entering "https://cogdemos.ink/play/*/*/mygame/scenes/" to see all the available scenes, you need to instead enter "https://cogdemos.ink/play/*/*/mygame/scenes/startup.txt", or "https://cogdemos.ink/play/*/*/mygame/scenes/choicescript_stats.txt" instead, since most if not all cog games have them. From there you can search for keyword "*goto_scene" which should give you the file names of other scene files, such as "*goto_scene MainOne", which you can use to determine the other scene files, for the example provided, that would be "https://cogdemos.ink/play/*/*/mygame/scenes/MainOne.txt". It is more tedious, as you have to manually search for the necessary files, but it works.
You could also use the devtools "Network" tab to get the scene files, but that would require you to play the whole game first (scene files are requested on a need by need basis, so if there is 10 chapters, and you have only played through 5, you probably won't see the chapters 6, 7, and etc. until they have been requested), then look through ALL the network logs to find the ones that call the scene files and get the files manually from there using the discovered name, that would for the example above be "https://cogdemos.ink/play/*/*/mygame/scenes/MainOne.txt"., so I typically prefer the former method. Cheers.

HELP: How do I unlink the links above, they are invalid and a safety hazard as is?
It seems really counterproductive to not allow plays to modify stats to play however they want 🤔 but each of their own, I guess.

Also, thanks for your input. People of this site are lifesavers 👽
 

Kay

Member
Member
I'll copy and paste what I said in another thread to just so it is archived in a pinned thread.

Hi everyone. I just discovered something, though I am not certain if it will work in all cases, but it did for mine. Typically when we want to modify a game stat/variable, we would access the stat object directly through the window object, i.e. window.stat.varname = value. This has, for cogdemos, changed, though I am not certain if it was intentionally changed to deter cheaters, or it was an implementation they wanted to test for future updates to the cogdemos server. It seems that there is an extra layer/object you would need to go through before you can modify stats, which is the "0" object, note that this is a zero and not a capital letter o. This means that you can't access it directly since it is a numerical, i.e. window.0.stats.varname = value, but would have to index it instead. You have to enter window["0"].stats.varname = value. Everything else remains the same. I hope that helps someone, and gods speed (my cheaters).

kratos-anger.gif

Also, some of the games no longer allow you to view all the scene files available in one page (I believe it varies by author and what they allowed when submitting their work to cog games). So instead of entering "https://cogdemos.ink/play/*/*/mygame/scenes/" to see all the available scenes, you need to instead enter "https://cogdemos.ink/play/*/*/mygame/scenes/startup.txt", or "https://cogdemos.ink/play/*/*/mygame/scenes/choicescript_stats.txt" instead, since most if not all cog games have them. From there you can search for keyword "*goto_scene" which should give you the file names of other scene files, such as "*goto_scene MainOne", which you can use to determine the other scene files, for the example provided, that would be "https://cogdemos.ink/play/*/*/mygame/scenes/MainOne.txt". It is more tedious, as you have to manually search for the necessary files, but it works.
You could also use the devtools "Network" tab to get the scene files, but that would require you to play the whole game first (scene files are requested on a need by need basis, so if there is 10 chapters, and you have only played through 5, you probably won't see the chapters 6, 7, and etc. until they have been requested), then look through ALL the network logs to find the ones that call the scene files and get the files manually from there using the discovered name, that would for the example above be "https://cogdemos.ink/play/*/*/mygame/scenes/MainOne.txt"., so I typically prefer the former method. Cheers.

HELP: How do I unlink the links above, they are invalid and a safety hazard as is?
Yeah i use android and i think you're right. The old methods not working anymore maybe because of the new website. Also i think you should post picture example tp Cheat i Think many people's still not understand
 

KratosTheTrueGod

Active member
Member
// ==UserScript==
// @name Modifying Input Var
// @namespace Violentmonkey Scripts
// @match *://*/play/*/mygame/*
// @match https://cogdemos.ink/play/*
// @match https://dashingdon.com/play/*
// @match https://*/play/*/index.html
// @match *://*/*/mygame/index.html
// @grant none
// @version 1.0
// @author -
// ==/UserScript==

(async function() {
function wait(time) {
//alert(`Waiting ${time} seconds.`)
return new Promise((resolve) => { setTimeout(resolve, time*1000)})
}
await wait(5)
let buttonContainer

// Create overlay
const overlay = document.createElement('div');
overlay.style.visibility = "collapse";
overlay.style.position = 'fixed';
overlay.style.top = '0';
overlay.style.left = '0';
overlay.style.width = '100%';
overlay.style.height = '100%';
overlay.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
overlay.style.zIndex = '999';
overlay.style.display = 'flex';
overlay.style.alignItems = 'center';
overlay.style.justifyContent = 'center';
overlay.style.maxWidth = "100%"

// Create popup container
const popup = document.createElement('div');
popup.style.padding = '20px';
popup.style.backgroundColor = 'white';
popup.style.border = '1px solid #ccc';
popup.style.boxShadow = '0 4px 8px rgba(0, 0, 0, 0.2)';
popup.style.zIndex = '1000';
popup.style.textAlign = 'center';
popup.style.maxWidth = "100%"

// Add message to popup
const message = document.createElement('p');
popup.appendChild(message);

// Append popup to overlay
overlay.appendChild(popup);
// Append overlay to body
document.body.appendChild(overlay);

function createButtonCont() {
// Create custom buttons container
if (buttonContainer) {buttonContainer.remove();}
buttonContainer = document.createElement('div');
buttonContainer.style.display = 'block flex';
buttonContainer.style.justifyContent = 'flex-start';
buttonContainer.style.overflowX = "auto" //Enable horizontal scrolling
buttonContainer.style.maxWidth = "100%"
buttonContainer.style.whiteSpace = "nowrap"
popup.appendChild(buttonContainer);
}

window.inputVarName = function() {
function confirmVar(key) {
if (typeof stats[key] == "undefined") {
alert(`Variable "${key}" is undefined.`)
buttonContainer.remove();
overlay.style.visibility = "collapse"
return;
}
else if (typeof stats[key] == "number") {
input.type = "number"; input.value = stats[key]; input.step = "any";
}
else if (typeof stats[key] == "boolean") {
input.type = "checkbox"; input.id = "bool"; input.checked = stats[key];
let label = document.createElement("label"); label.for = "bool"; label.textContent = stats[key];
}
else if (typeof stats[key] == "string") {
input.value = stats[key];
}
input.focus();
message.textContent = `Please enter the value you would like to set to the variable, "${key}". (It is currently set to "${stats[key]}")`
confirm.onclick = function() {
//document.removeEventListener("keydown", clickConf);
if (input.type == "checkbox") {
stats[key] = input.checked;
} else {
stats[key] = input.value;
}
overlay.style.visibility = "collapse"
}
}

message.textContent = "Please enter the name/identifier of the game variable you would like to modify."
overlay.style.visibility = "visible"
createButtonCont();
let input = document.createElement("input"); input.type = "text"; input.minlength = "1"; input.style.width = "70%"; input.value = ""; input.focus();
buttonContainer.appendChild(input);
let confirm = document.createElement("button"); confirm.textContent = "Confirm"; confirm.style.whiteSpace = "nowrap";
confirm.onclick = function() {
confirmVar(input.value)
}
buttonContainer.appendChild(confirm);
let exitBtn = document.createElement("button"); exitBtn.textContent = "Return"; exitBtn.style.whiteSpace = "nowrap";
exitBtn.onclick = function() {
//document.removeEventListener("keydown", clickConf);
overlay.style.visibility = "collapse"
}
buttonContainer.appendChild(exitBtn);

/*
// Adding functionality to allow the enter character on a keyboard to imitate clicking the confirm button
function clickConf(e) {
if (e.keyCode == 13) {
confirm.click();
}
}
document.addEventListener("keydown", clickConf)
*/
}

let btns = document.getElementById("buttons");
btns.innerHTML = btns.innerHTML + "<button id='cheatButton' class='spacedLink' onclick='inputVarName()'>Modify Input Var</button>";
})()

This script will need you to know the variables you want to modify beforehand, which you can get by doing what I have already explained in my post above (https://choiceofmods.com/threads/guide-on-how-to-mod-the-stats-on-wips.253/post-33519). You could also make it less tedious by creating a static array with all the variables you want to modify, and add buttons for them instead of having to manually type a variable name each time.
I tried to make it a bit more user friendly, but you can modify it to suit your tastes, and also add the ability to process temporary scene variables, "stats.scene.temps[stat]", if you wish. (Quoting it removed formatting, i.e. indentation)
 
Last edited:

KratosTheTrueGod

Active member
Member
Yeah i use android and i think you're right. The old methods not working anymore maybe because of the new website. Also i think you should post picture example tp Cheat i Think many people's still not understand
I'm not sure whether or not that will really hold. I just tried it on my mobile right now (using Kiwi Browser) and it seems to work without the need to specify 'window["0"]', so I assume they have either reverted to using the window object directly without the need for an additional object, or it is random/user dependent. The part for viewing scene files still seems to work (for now at least).
For Kiwi Browser, you need to click the three dots on the right, and click on the developer tools option. At the top of the new popup, there will be tabs (it may vary from 2 or more depending on screen width I assume) which you use to select the tool you want to use. You want to find the "console" tool. If you can't see it in the two options at the top, you can click on the ">>" symbol to bring view the other available tools and select it there. This should open the tool allowing you to enter the cheat scriplets/scripts you want, such as "stats.strength = 5".
 
  • Like
Reactions: Kay

KratosTheTrueGod

Active member
Member
I currently have two scripts for cog games. The one above is the one that requires direct user interaction (you could probably also use the "Object.entries()" method to bring back a list of all the available variables and select one to modify from the list, but depending on the game, those could potentially be 1000+ or even 3000+ variables you would need to sift through). I will paste my other script below.

(async function() {
function wait(time) {
//alert(`Waiting ${time} seconds.`)
return new Promise((resolve) => { setTimeout(resolve, time*1000)})
}
await wait(5)
let statChange = ["time", "feed"] // Array with temporary scene variable names
let permStatChange = [] // Array with global game variable names

// Create overlay
const overlay = document.createElement('div');
overlay.style.visibility = "collapse";
overlay.style.position = 'fixed';
overlay.style.top = '0';
overlay.style.left = '0';
overlay.style.width = '100%';
overlay.style.height = '100%';
overlay.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
overlay.style.zIndex = '999';
overlay.style.display = 'flex';
overlay.style.alignItems = 'center';
overlay.style.justifyContent = 'center';
overlay.style.maxWidth = "100%"

// Create popup container
const popup = document.createElement('div');
popup.style.padding = '20px';
popup.style.backgroundColor = 'white';
popup.style.border = '1px solid #ccc';
popup.style.boxShadow = '0 4px 8px rgba(0, 0, 0, 0.2)';
popup.style.zIndex = '1000';
popup.style.textAlign = 'center';
popup.style.maxWidth = "100%"

// Add message to popup
const message = document.createElement('p');
popup.appendChild(message);

// Append popup to overlay
overlay.appendChild(popup);
// Append overlay to body
document.body.appendChild(overlay);

let buttonContainer
function createButtonCont() {
// Create custom buttons container
if (buttonContainer) {buttonContainer.remove();}
buttonContainer = document.createElement('div');
buttonContainer.style.display = 'block flex';
buttonContainer.style.justifyContent = 'flex-start';
buttonContainer.style.overflowX = "auto" //Enable horizontal scrolling
buttonContainer.style.maxWidth = "100%"
buttonContainer.style.whiteSpace = "nowrap"
popup.appendChild(buttonContainer);
}

window.selectVar = function() {
overlay.style.visibility = "visible";
createButtonCont();
for (let i = 0; i < permStatChange.length; i++) {
if (typeof window.stats[permStatChange] === 'undefined') {
continue
}
const statButton = document.createElement('button');
statButton.textContent = permStatChange + "(" + window.stats[permStatChange] + ")";
//statButton.style.padding = '10px 20px';
//statButton.style.marginTop = '10px';
statButton.style.cursor = 'pointer';
statButton.style.whiteSpace = "nowrap"
statButton.onclick = function() {
buttonContainer.remove();
window.permCheat(permStatChange);
};
buttonContainer.appendChild(statButton);
}
for (let i = 0; i < statChange.length; i++) {
if (typeof window.stats.scene.temps[statChange] === 'undefined') {
continue
}
const statButton = document.createElement('button');
statButton.textContent = "(*)" + statChange + "(" + window.stats.scene.temps[statChange] + ")";
//statButton.style.padding = '10px 20px';
//statButton.style.marginTop = '10px';
statButton.style.cursor = 'pointer';
statButton.style.whiteSpace = "nowrap"
statButton.onclick = function() {
buttonContainer.remove();
window.tempCheat(statChange);
};
buttonContainer.appendChild(statButton);
}
const statButton = document.createElement('button');
statButton.textContent = "Return";
//statButton.style.padding = '10px 20px';
//statButton.style.marginTop = '10px';
statButton.style.cursor = 'pointer';
statButton.style.whiteSpace = "nowrap"
statButton.onclick = function() {
buttonContainer.remove();
overlay.style.visibility = "collapse"
};
buttonContainer.appendChild(statButton);

message.textContent = "Please select the stat you would like to modify. \"*\" indicates a temp stat.";

popup.appendChild(buttonContainer);

// Append popup to overlay
overlay.appendChild(popup);

// Append overlay to body
document.body.appendChild(overlay);
}

window.tempCheat = function(stat) {
createButtonCont();
message.textContent = `Please enter the value you would like to set to the variable, "${stat}". (It is currently set to "${window.stats.scene.temps[stat]}")`

let input = document.createElement("input"); input.style.width = "70%";
if (typeof window.stats.scene.temps[stat] == "number") {
input.type = "number"; input.value = window.stats.scene.temps[stat]; input.step = "any";
}
else if (typeof window.stats.scene.temps[stat] == "boolean") {
input.type = "checkbox"; input.id = "bool"; input.checked = window.stats.scene.temps[stat];
let label = document.createElement("label"); label.for = "bool"; label.textContent = stat;
}
else if (typeof window.stats.scene.temps[stat] == "string") {
input.value = window.stats.scene.temps[stat];
}
input.focus();
buttonContainer.appendChild(input);

let confirm = document.createElement("button"); confirm.textContent = "Confirm"; confirm.style.whiteSpace = "nowrap";
confirm.onclick = function() {
document.removeEventListener("keydown", clickConf);
if (input.type == "checkbox") {
window.stats.scene.temps[stat] = input.checked;
} else {
window.stats.scene.temps[stat] = input.value;
}
overlay.style.visibility = "collapse"
}
buttonContainer.appendChild(confirm);
let exitBtn = document.createElement("button"); exitBtn.textContent = "Return"; exitBtn.style.whiteSpace = "nowrap";
exitBtn.onclick = function() {
document.removeEventListener("keydown", clickConf);
overlay.style.visibility = "collapse"
}
buttonContainer.appendChild(exitBtn);

// Adding functionality to allow the enter character on a keyboard to imitate clicking the confirm button
function clickConf(e) {
if (e.keyCode == 13) {
confirm.click();
}
}
document.addEventListener("keydown", clickConf)
}

window.permCheat = function(stat) {
createButtonCont();
message.textContent = `Please enter the value you would like to set to the variable, "${stat}". (It is currently set to "${stats[stat]}")`

let input = document.createElement("input"); input.style.width = "70%";
if (typeof stats[stat] == "number") {
input.type = "number"; input.value = stats[stat]; input.step = "any";
}
else if (typeof stats[stat] == "boolean") {
input.type = "checkbox"; input.id = "bool"; input.checked = stats[stat];
let label = document.createElement("label"); label.for = "bool"; label.textContent = stat;
}
else if (typeof stats[stat] == "string") {
input.value = stats[stat]; input.minlength = "1";
}
input.focus();
buttonContainer.appendChild(input);

let confirm = document.createElement("button"); confirm.textContent = "Confirm"; confirm.style.whiteSpace = "nowrap";
confirm.onclick = function() {
document.removeEventListener("keydown", clickConf);
if (input.type == "checkbox") {
stats[stat] = input.checked;
} else {
stats[stat] = input.value;
}
overlay.style.visibility = "collapse"
}
buttonContainer.appendChild(confirm);
let exitBtn = document.createElement("button"); exitBtn.textContent = "Return"; exitBtn.style.whiteSpace = "nowrap";
exitBtn.onclick = function() {
document.removeEventListener("keydown", clickConf);
overlay.style.visibility = "collapse"
}
buttonContainer.appendChild(exitBtn);

// Adding functionality to allow the enter character on a keyboard to imitate clicking the confirm button
function clickConf(e) {
if (e.keyCode == 13) {
confirm.click();
}
}
document.addEventListener("keydown", clickConf)
}

let btns = document.getElementById("buttons");
btns.innerHTML = btns.innerHTML + "<button id='cheatButton' class='spacedLink' onclick='selectVar()'>Modify Pre-Selected Vars</button>";
})()

The script above is static, though, as it gives up the dynamic ability to change whatever variable at any point in the game, and instead gives a list of variables you can choose from, without giving a list of 1000+ variables using the "Object.entries()" method. Though the disadvantage is that you would need to insert the variable name in one of the two arrays, "statChange" (delegated for temporary scene variables) and/or "permStatChange" (delegated for permanent game variables), and refresh the page so the script can be reloaded into the webpage. Add the "==UserScript==" portion from the above script (character limit exceeded).
 
Last edited:

Garm

Active member
Member
I'm not sure whether or not that will really hold. I just tried it on my mobile right now (using Kiwi Browser) and it seems to work without the need to specify 'window["0"]', so I assume they have either reverted to using the window object directly without the need for an additional object, or it is random/user dependent. The part for viewing scene files still seems to work (for now at least).
For Kiwi Browser, you need to click the three dots on the right, and click on the developer tools option. At the top of the new popup, there will be tabs (it may vary from 2 or more depending on screen width I assume) which you use to select the tool you want to use. You want to find the "console" tool. If you can't see it in the two options at the top, you can click on the ">>" symbol to bring view the other available tools and select it there. This should open the tool allowing you to enter the cheat scriplets/scripts you want, such as "stats.strength = 5".
Just tried to do it on mine and it's not working (mobile, kiwi). You just typed what's at the bottom of your post right?

Edit: fixed it, just had to add "window [0]"
 
Last edited:

KratosTheTrueGod

Active member
Member
If you want to play it on Phone you can try adding /mygame in the link of the game
I'll copy and paste what I said in another thread to just so it is archived in a pinned thread.

Hi everyone. I just discovered something, though I am not certain if it will work in all cases, but it did for mine. Typically when we want to modify a game stat/variable, we would access the stat object directly through the window object, i.e. window.stat.varname = value. This has, for cogdemos, changed, though I am not certain if it was intentionally changed to deter cheaters, or it was an implementation they wanted to test for future updates to the cogdemos server. It seems that there is an extra layer/object you would need to go through before you can modify stats, which is the "0" object, note that this is a zero and not a capital letter o. This means that you can't access it directly since it is a numerical, i.e. window.0.stats.varname = value, but would have to index it instead. You have to enter window["0"].stats.varname = value. Everything else remains the same. I hope that helps someone, and gods speed (my cheaters).

kratos-anger.gif

Also, some of the games no longer allow you to view all the scene files available in one page (I believe it varies by author and what they allowed when submitting their work to cog games). So instead of entering "https://cogdemos.ink/play/*/*/mygame/scenes/" to see all the available scenes, you need to instead enter "https://cogdemos.ink/play/*/*/mygame/scenes/startup.txt", or "https://cogdemos.ink/play/*/*/mygame/scenes/choicescript_stats.txt" instead, since most if not all cog games have them. From there you can search for keyword "*goto_scene" which should give you the file names of other scene files, such as "*goto_scene MainOne", which you can use to determine the other scene files, for the example provided, that would be "https://cogdemos.ink/play/*/*/mygame/scenes/MainOne.txt". It is more tedious, as you have to manually search for the necessary files, but it works.
You could also use the devtools "Network" tab to get the scene files, but that would require you to play the whole game first (scene files are requested on a need by need basis, so if there is 10 chapters, and you have only played through 5, you probably won't see the chapters 6, 7, and etc. until they have been requested), then look through ALL the network logs to find the ones that call the scene files and get the files manually from there using the discovered name, that would for the example above be "https://cogdemos.ink/play/*/*/mygame/scenes/MainOne.txt"., so I typically prefer the former method. Cheers.

HELP: How do I unlink the links above, they are invalid and a safety hazard as is?
The method for code diving I mentioned here no longer works (I was informed by @Hackett Thrail ). It now has an extra step where you would need to manually find a token in the games HTML, and add it as a header when performing your request (I believe it is used to ascertain whether or not you are requesting the scene file to advance your game, or just to code dive). You can still code dive, but it would require some experience with javascript requests, so you can add the token to your own request's headers, or a script created by someone else to automate this process.
 

Drumbell

Active member
Member
The method for code diving I mentioned here no longer works (I was informed by @Hackett Thrail ). It now has an extra step where you would need to manually find a token in the games HTML, and add it as a header when performing your request (I believe it is used to ascertain whether or not you are requesting the scene file to advance your game, or just to code dive). You can still code dive, but it would require some experience with javascript requests, so you can add the token to your own request's headers, or a script created by someone else to automate this process.
Can u plz explain how?
 

Foulwarden

Well-known member
Member
The method for code diving I mentioned here no longer works (I was informed by @Hackett Thrail ). It now has an extra step where you would need to manually find a token in the games HTML, and add it as a header when performing your request (I believe it is used to ascertain whether or not you are requesting the scene file to advance your game, or just to code dive). You can still code dive, but it would require some experience with javascript requests, so you can add the token to your own request's headers, or a script created by someone else to automate this process.
I just HATE COGDEMOOOO
 
Top