tag:blogger.com,1999:blog-25818306532654219572024-03-08T10:42:25.811-08:00Ransack GamesJustinhttp://www.blogger.com/profile/14572107921249119502noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-2581830653265421957.post-42513671244510199582024-01-04T08:30:00.000-08:002024-01-08T18:47:56.582-08:00Correcting the Finch Primer<p>I believe the <a href="https://friendorfoe.com/d/Old%20School%20Primer.pdf" target="_blank" rel="nofollow">Finch Primer</a> to be, charitably, a reactionary overcorrection towards corporate D&D.</p>
<p>The following four points are intended to replace those made by the Primer.</p>
<h3>1. <a href="https://idiomdrottning.org/blorb-principles" target="_blank" rel="nofollow">Prep > Rules > Rulings</a></h3>
<p>The Primer mistakenly attempts to claim that rulings are preferable to rules, which is not true. Any worthwhile ruling becomes a game rule. What corporate D&D has done is attempt to present a holistic system that must not be deviated from, and whose rules must be adhered to even if they do not make sense or where game situations would clearly take precedence. The game rules are treated as giving rise to the physics of the game world. Instead, in old school play the game world exists first and the rules act as an overlay.</p>
<p>The Primer further implies that all game problems are solved diegetically in old school play, which is absolutely false. Rules provide a common ground for players to understand complex situations such as combat, and allow common game situations such as lockpicking to be resolved consistently. Diegetic solutions are possible, and often desirable, but these are special precisely because they are exceptional.</p>
<h3>2. Player Skill > Character Sheet</h3>
<p>The Primer mistakenly suggests that player skill does not include effective use of character abilities. This is simply false. However, it is true that corporate D&D is badly designed, insofar as it includes abilities on the character sheet which inform players what they should think and how they should act, favoring a style of roleplaying that is in direct contradiction to successful play.</p>
<p>Moreover, modern systems often include a huge array of character building options which are poorly balanced, and in fact impossible to balance. The result is a dysfunctional game that cannot be played as a game, leaving players with little recourse except to engage in play-acting rather than earnest gaming. Because this is not the case in old school play, the point the Primer makes is irrelevant and incoherent.</p>
<h3>3. Superheroic Play</h3>
<p>In old school play, character progress to superheroic stature by gaining levels and acquiring magical treasures. In modern corporate D&D, in order to guarantee a certain consistency of play, the powers previously afforded by magic items have been baked into character levels.</p>
<p>The Primer mistakenly reacts to this guaranteed suite of powers by insisting the characters never obtain such abilities. This is incorrect. Characters should reach higher levels and should obtain fantastic magic items. So-called "Mudcore" permanent level 1 play is unenjoyable and to be shunned.</p>
<h3>4. Fair Play</h3>
<p>The Primer falsely claims that game balance does not matter. This is only true insofar as game situations might be entirely impossible to overcome via combat, and retreating in the face of excess danger is expected. This often called "Combat-as-War" in old school play, as opposed to "Combat-as-Sport" in new school play.</p>
<p>Nonetheless a certain fairness is expected. The game is still a game, with players facing challenges that they might reasonably find a way to overcome or move past. The game is exactly in the form of a tournament in which the players face off against the content which the referee has prepared. Misapplication of game rules may in fact break the game, and in such cases adjustments can be made to correct the course of play in the interests of fairness.</p>Justin Toddhttp://www.blogger.com/profile/11599492173887891844noreply@blogger.com0tag:blogger.com,1999:blog-2581830653265421957.post-701630425685211522023-08-07T08:47:00.013-07:002023-10-26T06:54:08.271-07:00How to Hide Blocked Discord Messages
<p>Are you annoyed by a steady stream of blocked message indicators?</p>
<div><img src="https://i.snipboard.io/50xXzl.jpg"/></div>
<p><b style="color: lightcoral">First</b>, be sure to exit Discord. We will be modifying the client.</p>
<p><b style="color: lightcoral">Second</b>, navigate to the Discord files on your computer at a location like the one below.</p>
<blockquote><b>C:\Users\Jay\AppData\Local\Discord\app-1.0.9020\modules\discord_krisp-1\discord_krisp</b></blockquote>
Your USERNAME and DISCORD VERSION likely differ. The file you are looking for is <b>index.js</b>.</p>
<p><b style="color: lightcoral">Third</b>, we will add the code shown below in <b style="color: lightgreen">green</b> to <b>index.js</b>.</p>
<pre style="background: #333; border-radius: 5px; padding: 10px;">
<code>const KrispModule = require('./discord_krisp.node');
console.info('Initializing krisp module');
KrispModule._initialize();
KrispModule.getNcModels = function () {
return new Promise((resolve) => {
KrispModule._getNcModels((models) => resolve(models));
});
};
KrispModule.getVadModels = function () {
return new Promise((resolve) => {
KrispModule._getVadModels((models) => resolve(models));
});
};
module.exports = KrispModule;
<b style="color: lightgreen">
const sheet = window.document.styleSheets[0];
const style = `[class^='groupStart']:has([class^='blockedSystemMessage']) { overflow: hidden; height: 0; margin: 0; }`;
sheet.insertRule(style, sheet.cssRules.length);</b></code></pre>
<p><b style="color: lightcoral">Finally,</b> do note these changes may need to be re-applied after an update to Discord.</p>
<br/><hr/>
<p>Addendum: If you rely on the web version of Discord, try the <a href="https://chrome.google.com/webstore/detail/stylus/clngdbkpkpeebahjckkjfobafhncgmne" target="_blank" rel="nofollow">Stylus extension</a> for chromium-based browsers. In this latter case you would simply add the style as follows:</p>
<pre style="background: #333; border-radius: 5px; padding: 10px;">
<code>@-moz-document domain("discord.com") {
[class^='groupStart']:has([class^='blockedSystemMessage']) { overflow: hidden; height: 0; margin: 0; }
}</code></pre>Justin Toddhttp://www.blogger.com/profile/11599492173887891844noreply@blogger.com0tag:blogger.com,1999:blog-2581830653265421957.post-55060079178069308932023-02-21T13:39:00.016-08:002023-12-16T11:15:22.738-08:00Tools for Adventure Gaming<p>Whether Judge or a player, the following tools should prove useful for fantasy adventure gaming.</p>
<h4><a href="https://brave.com/" target="_blank" rel="nofollow">Brave web browser</a></h4>
<p>Brave is similar to Google Chrome or Microsoft Edge, now with built-in security and privacy. Works with all Chrome plugins as the core engine is Chromium. Feels like using the internet back in better days.</p>
<h4><a href="https://notepad-plus-plus.org/downloads/" target="_blank" rel="nofollow">Notepad++</a></h4>
<a href="https://i.imgur.com/SwYeSgJ.png" target="_blank" rel="nofollow">Notepad++ example usage</a>
<p>The simplicity of the classic Notepad application, now supporting multiple open files through tabs, automatic backup and recovery, improved search, and much more for advanced users.
<h4><a href="https://www.getpaint.net/download.html" target="_blank" rel="nofollow">Paint.net</a></h4>
<p>All the basic features of Adobe Photoshop offered for free.</p>
<h4><a href="https://www.sumatrapdfreader.org/download-free-pdf-viewer" target="_blank" rel="nofollow">SumatraPDF</a></h4>
<a href="https://i.imgur.com/BntvB9U.png" target="_blank" rel="nofollow">Sumatra example usage</a>
<p>The best PDF reader by an extraordinary margin, being many times faster than Adobe along every metric. Open an unlimited number of PDFs instantly and scroll anywhere in the document instantly.</p>
<h4><a href="https://discord.com/" target="_blank" rel="nofollow">Discord</a></h4>
<p>Discord is a type of IRC program used through a web browser or Desktop app. Consider joining the general purpose <a href="https://discord.gg/YmZNm9HXeQ" target="_blank" rel="nofollow">Pedantic Gaming</a> discord for adventure game discussion, or the <a href="https://discord.gg/zmKcmPzXG6" target="_blank" rel="nofollow">Ransack Games</a> discord.</p>
<h4><a href="https://docs.google.com/document/u/0/" target="_blank" rel="nofollow">Google docs</a> & <a href="https://docs.google.com/spreadsheets/" target="_blank" rel="nofollow">Google Sheets</a></h4>
<p>Each offers equivalent functionality to Microsoft Word and Excel, now free and in the cloud. Easily share or collaborate with others. For anything you want to create & share be sure to click the 'Share' button in the upper right to set a desired access level. Typically, you want to share with 'anyone with the link' can view.</p>
<h4><a href="https://stackedit.io/" target="_blank" rel="nofollow">StackEdit.io</a></h4>
<a href="https://i.imgur.com/8BgzOso.png" target="_blank" rel="nofollow">StackEdit example usage</a>
<p>An online note-taking application that uses <a href="https://www.markdownguide.org/basic-syntax/" target="_blank" rel="nofollow">Markdown language</a>. Otherwise, similar to Microsoft OneNote or <a href="https://www.literatureandlatte.com/scrivener/overview" target="_blank" rel="nofollow">Scrivener</a>. Be sure to use the Workspace setting to automatically sync your files using Dropbox or Google Drive, allowing you to access and edit from any web browser on any computer.</p>
<h4><a href="https://www.dropbox.com/" target="_blank" rel="nofollow">Dropbox</a></h4>
<p>An online solution to automatically synchronize files across multiple devices, such as a phone, tablet, and computer. Supports up to 2 GB of files and up to 3 devices in free mode.</p>
<h4><a href="https://www.anydice.com/" target="_blank" rel="nofollow">AnyDice</a></h4>
<a href="https://i.imgur.com/FqiMIXY.png" target="_blank" rel="nofollow">AnyDice example usage</a>
<p>Simulates many types of dice rolls, providing graphs and charts of expected probabilities.</p>
<h4><a href="https://donjon.bin.sh/" target="_blank" rel="nofollow">donjon</a></h4>
<a href="https://i.imgur.com/8tOoOGm.png" target="_blank" rel="nofollow">donjon example usage</a>
<p>Huge variety of tools for generating treasure, maps, or more for a variety of game systems including AD&D.</p>
<h4><a href="https://functioncube.com/Functions/Divide-Number" target="_blank" rel="nofollow">Randomly Distribute Numbers</a></h4>
<p>Divide a number into a set of randomized parts, for example to spread 50,000gp across 100 rooms.</p>
<h4><a href="https://www.powerthesaurus.org/" target="_blank" rel="nofollow">Power Thesaurus</a></h4>
<a href="https://i.imgur.com/NjRSa0u.png" target="_blank" rel="nofollow">Power Thesaurus example usage</a>
<p>The only thesaurus you will ever need.</p>
<h4><a href="https://www.fantasynamegenerators.com/" target="_blank" rel="nofollow">Fantasy Name Generators</a></h4>
<a href="https://i.imgur.com/cmjQTLw.png" target="_blank" rel="nofollow">Fantasy Name Generator example usage</a>
<p>Name generation website with a huge number of generators.</p>
<h4><a href="https://probabletrain.itch.io/dungeon-scrawl" target="_blank" rel="nofollow">Dungeon Scrawl</a></h4>
<a href="https://i.imgur.com/DCXoPT4.png" target="_blank" rel="nofollow">Dungeon Scrawl example usage</a>
<p>Free tool for creating dungeon or hex maps. I do not recommend using the newer version just yet. I have recorded a <a href="https://youtu.be/oTMyT9mn9qE" target="_blank" rel="nofollow"> How to Use Dungeon Scrawl V1</a> video on YouTube, with apologies for the poor quality.</p>
<h4><a href="https://www.owlbear.rodeo/" target="_blank" rel="nofollow">Owlbear Rodeo</a></h4>
<a href="https://i.imgur.com/Pxupqqc.png" target="_blank" rel="nofollow">Owlbear example usage</a>
<p>Free virtual tabletop with fog of war. Doesn't support Hexes, unfortunately.</p>
<h4><a href="https://rollem.rocks/" target="_blank" rel="nofollow">Rollem Rocks</a></h4>
<a href="https://i.imgur.com/ldD90fJ.png" target="_blank" rel="nofollow">Rollem Rocks example usage</a>
<p>Discord bot for rolling dice. Greatly preferred in lieu of the <a href="https://github.com/avrae/d20/issues/7" target="_blank" rel="nofollow"> never-fixed, incorrect Avrae</a>.Justin Toddhttp://www.blogger.com/profile/11599492173887891844noreply@blogger.com3tag:blogger.com,1999:blog-2581830653265421957.post-71459946047259640942023-02-13T17:34:00.004-08:002023-02-13T19:02:35.138-08:00Simplified XP Model<div style="font-family: monospace">
<section id="inputs">
<div>
You are a <select id="selectedClass" oninput="process()">
<option>Ransack Fighter</option>
<option>AD&D Fighter </option>
</select> in a party of <input placeholder="#" value="5" id="partySize" oninput="process()" /> total characters.
</div>
<div>
You play a session every <input placeholder="#" id="sessionRate" value="2" oninput="process()" />
<select id="timeUnits" oninput="process()">
<option>weeks</option>
<option>days</option>
</select>
</div>
<div>
<label>Each room has </label><input placeholder="XP per Room" id="roomXp" value="50" oninput="process()" /> XP per level, you find <span id="findRate"></span>% of it.
<input type="range" min="1" max="10" value="7" id="findRateSelector" oninput="updateFindRate(); process()">
</div>
<div>
You clear <input placeholder="#" value="20" id="roomsPerSession" oninput="process()" /> rooms per session.
</div>
</section>
<section id="results-container">
<h2>Results</h2>
<div id="results">
</div>
</section>
</div>
<script>
const FIGHTER_XP = [0, 2, 4, 8, 15, 30, 65, 120, 200, 300, 400, 600, 800];
const ADND_FIGHTER_XP = [0, 20, 40, 80, 180, 350, 700, 1250, 2500, 5000, 7500, 10000, 12500];
updateFindRate();
process();
function updateFindRate() {
let findRate = document.querySelector('#findRateSelector').value;
document.querySelector('#findRate').innerHTML = findRate * 10;
}
function process() {
let earnedXp = 0;
let sessions = 0;
let sessionLevels = [];
let partySize = document.querySelector('#partySize').value;
let roomXp = document.querySelector('#roomXp').value;
let sessionRate = document.querySelector('#sessionRate').value;
let findRate = document.querySelector('#findRateSelector').value / 10;
let roomsPerSession = document.querySelector('#roomsPerSession').value;
let timeUnits = document.querySelector('#timeUnits').value;
let selectedClass = document.querySelector('#selectedClass').value;
let dailyRate = timeUnits == 'weeks' ? sessionRate * 7 : sessionRate;
let classXp = selectedClass == 'AD&D Fighter' ? ADND_FIGHTER_XP : FIGHTER_XP;
let currentLevel = 1;
while (currentLevel < 12 && sessions < 2500) {
let xpPerSession = (roomXp * roomsPerSession * currentLevel * findRate) / partySize / 100;
sessionLevels.push(currentLevel);
earnedXp += xpPerSession;
sessions++;
currentLevel = classXp.indexOf(classXp.find((x) => x > earnedXp));
}
document.querySelector('#results').innerHTML = '';
if (sessions == 2500) {
document.querySelector('#results').innerHTML += `<div>Maxed out at ${sessions} sessions.</div>`;
}
const levelSessions = {};
sessionLevels.forEach(function (x) { levelSessions[x] = (levelSessions[x] || 0) + 1; });
console.log(levelSessions);
let iteratedSessions = 0;
for (let level in levelSessions) {
let sessionsThisLevel = levelSessions[level];
iteratedSessions += sessionsThisLevel;
let weeks = (iteratedSessions * dailyRate) / 7;
let years = 0;
if (weeks > 52) years = weeks / 52;
let duration = `${Math.round(weeks)} weeks`;
if (years > 0) duration += ` (${Math.round(years * 10) / 10} years)`;
let details = `${sessionsThisLevel} sessions at level ${level}, with ${iteratedSessions} total sessions over ${duration}.`;
document.querySelector('#results').innerHTML += `<div>${details}</div>`;
}
// let weeks = (sessions * dailyRate) / 7;
// let years = 0;
// if (weeks > 52) years = weeks / 52;
// let duration = `${Math.round(weeks)} weeks`;
// if (years > 0) duration += ` (${Math.round(years * 10) / 10} years)`;
// document.querySelector('#duration').innerHTML = duration;
// document.querySelector('#sessions').innerHTML = sessions;
}
</script>
<style>
#inputs {
user-select: none;
}
#inputs input {
width: 100px;
}
#inputs input,
#inputs select {
text-align: center;
}
label {
display: inline-block;
text-align: left;
margin-right: 10px;
}
#timeUnits {
width: 100px;
}
#selectedClass {
width: 150px;
}
#findRate {
width: 33px;
display: inline-block;
text-align: right;
}
#processButton {
display: block;
box-shadow: 1px 2px 0px 0px #000000;
border-radius: 5px;
cursor: pointer;
padding: 6px 12px;
margin-top: 12px;
}
#processButton:hover {
background-color: #476e9e;
}
#processButton:active {
position: relative;
top: 2px;
left: 2px;
box-shadow: none;
}
#results-container {
margin-top: 20px;
}
</style>Justin Toddhttp://www.blogger.com/profile/11599492173887891844noreply@blogger.com0tag:blogger.com,1999:blog-2581830653265421957.post-83798410480286866912023-02-04T15:18:00.001-08:002023-05-02T15:42:07.106-07:00Ransack by Justin Todd<p>Good day.</p>
<p>From the rulebook:</p>
<blockquote>Ransack is a fantasy adventure game to be played at a table with friends & family, requiring one participant to act as Judge & at least one other participant to act as a Player. Players control their characters, making decisions for & describing how that character acts, while the Judge presents the game world, interprets the rules, and controls all non-player characters.</blockquote>
<blockquote>Judges must challenge player wits & wiles without being their enemy, offering a world where characters may prove to be heroes.</blockquote>
<p>Find the latest <a href="https://cutt.ly/ransack" target="_blank">Ransack Playtest Rules</a> or use the link in the right side bar.</p>
<p>There is also a Discord widget leading to the <a href="https://discord.gg/KcwrvHJhs7" target="_blank">Ransack Discord</a> where I discuss the rules & run games.</p>
<p>Ransack is my primary focus for the foreseeable future. The plan is to spend 2.5 years to complete a primary draft of the rules which will be split across 2 books totalling at least 300 pages. The 1st book is the primary rules for playing and running the game, which players may read at their discretion. The 2nd book will contain tools for the Judge, such as treasure, monsters, and methods for generating dungeons and wilderness areas. This 2nd book is not yet publicly available. The target date for completion of the primary drafts is June 2024.</p>Justin Toddhttp://www.blogger.com/profile/11599492173887891844noreply@blogger.com0