many changes

This commit is contained in:
2025-04-15 20:51:50 +01:00
parent 129e9021c4
commit 403e01722b
2 changed files with 374 additions and 119 deletions

View File

@@ -9,6 +9,7 @@
font-family: lexend, roboto, sans serif;
color: white;
background-color: rgb(22,16,18);
scroll-behavior: smooth;
}
body {
margin: 0;
@@ -37,6 +38,9 @@
width:100%;
z-index:1;
}
#header-spacer {
height: var(--headheight);
}
#controls {
text-align: right;
}
@@ -171,7 +175,7 @@
h1,h2,h3,h4,h5,h6 {
margin-top:0;
margin-bottom:0;
/* margin-bottom:0; */
font-weight: unset;
/* border-left:8pt solid white; */
/* padding-left:8pt; */
@@ -238,8 +242,8 @@
z-index:-1;
background-size: cover;
background-repeat: no-repeat;
/* transition:background-image 1s; */
transition:opacity 5s;
/* transition:background-image 0.1s; */
transition:opacity 0.5s;
opacity:0;
background-position: center top;
}
@@ -271,7 +275,25 @@
font-style: italic;
opacity: .75;
}
a {
color: rgb(255,64,128);
/* color: white; */
text-decoration: none;
/* border-radius:1em; */
/* background-color: rgb(146,0,60); */
/* border: 2pt solid white; */
/* padding: 0 .5em 0 .5em; */
}
/*#content [id]::before {
content: '';
display:block;
position:relative;
top: -250px;
visibility: hidden;
}*/
#content [id] {
scroll-margin-top: calc(var(--headheight) + 1em);
}
.c1,.c2,.c3,.c4,.c5,.c6,.c7,.c8,.c9,.c10 {
display:none;
}
@@ -323,6 +345,23 @@
display:revert;
}
.cle1,.cle2,.cle3,.cle4,.cle5,.cle6,.cle7,.cle8,.cle9,.cle10 {
display:none;
}
.show-cle1 .cle1,
.show-cle2 .cle2,
.show-cle3 .cle3,
.show-cle4 .cle4,
.show-cle5 .cle5,
.show-cle6 .cle6,
.show-cle7 .cle7,
.show-cle8 .cle8,
.show-cle9 .cle9,
.show-cle10 .cle10
{
display:revert;
}
</style>
</head>
@@ -389,30 +428,218 @@
<span class="mono">Perception +3</span> <br />
A Modifier provided by the Source above ("Ring of Perception").
</p>
<div class="section c2">
<h3>Modifiers</h3>
<p class="c10 aside notes">This section requires more work.</p>
<p>Modifiers are any attribute of a Character which increases or decreases their chance of passing a Check.<span class="c2 minor"><br />For example: skills, damage, buff and debuff effects, etc.</span></p>
<p class="c3">
Modifier names define the 'scope' they are relevant in.
</p>
</div>
<div class="section c2">
<h3>Sources</h3>
<p>Sources are anything which can provide Modifiers to a Character.<span class="c2 minor"><br />For example: items, buffs and debuffs, or the Character themselves.</span></p>
</div>
</div>
<div class="section c2">
<h2>Modifiers</h2>
<p>Modifiers are any attribute of a Character which increases or decreases their chance of passing a check.<span class="c3"><br />For example: skills, damage, buffs and debuffs, etc.</span></p>
<div class="section">
<h2>Character Creation</h2>
<p class="c10 aside notes">This section requires more work.</p>
<div class="section c2">
<h2>Campaign Limits</h2>
<p class="c10 aside notes">This section requires more work.</p>
<p>
Each Campaign can impose limits on which Characters can participate.
<br />
The common means to do so are detailed below.
</p>
<div class="section c2">
<h2 id="balance">Balance</h2>
<p class="c7 aside caution">This implementation is somewhat inelegant and is likely to change.</p>
<p class="c10 aside notes">This section requires more work, specifically better detail levels, and some character-sheet examples.</p>
<p>
Balance is the current points spent improving a Character.
<br />
<span class="minor">
It starts at zero, and can go negative.
</span>
</p>
<p></p>
<p>
Any Modifier or Source which is intended as a permanent part of a Character counts towards Balance.
<br />
<span class="minor">
This includes everything the Player chooses.
</span>
</p>
<p>
Modifiers contribute their total value to Balance, meaning the sum of their <span class="mono">+</span> and <span class="mono">-</span> values.
</p>
<p>
Some Sources can also contribute to Balance, which are usually custom packages of Modifiers, such as racials. These are usually defined alongside a Balance-cost.
</p>
<div class="aside">
<p>
On the Character Sheet, a Modifier or Source which contributes towards Balance can be marked with a letter <span class="mono">b</span> at the end of the line to make this easier to track.
</p>
<p>
Sources with a custom Balance-contibution can be marked as, for example <span class="mono">b+4</span> or <span class="mono">b-2</span> for plus 4 and minus 2 Balance respectively.
</p>
</div>
<p>
The Storyteller should set a Balance limit for each campaign.
<br />
If a Character's Balance exceeds that limit, they are not allowed to participate in the Campaign.
</p>
<p>The recommended default limit is 25.</p>
</div>
<div class="section c3">
<h2>Cognia</h2>
<p class="c10 aside notes">This section requires more work.</p>
<p>
Cognia is a measure of the mental weight required to include this Character in a campaign accurately.
</p>
<p><a href="#balance">Balanced</a>-for Modifiers and Sources with <span class="mono">-</span> values increase Cognia (1 per Modifier/Source).</p>
<div class="c6 aside commentary">
<p>
Players are naturally motivated to remember Modifiers with <span class="mono">+</span> values, but not so for the <span class="mono">-</span> values. Given this, the Storyteller needs to always remember which Modifiers may apply, not just during Checks but during any interaction to which the Modifier might be relevant.
</p>
<p>
A Campaign with 5 Player-Characters, each of whom have 3 Negative Modifiers, would require the Storyteller to reliably remember 15 Modifiers at all times. This would be difficult, and thus this mechanism helps regulate this potential excess.
</p>
</div>
<p>
The Storyteller may set a Cognia limit for each campaign.
<br />
If a Character's Cognia exceeds that limit, they are not allowed to participate in the Campaign.
</p>
<p>It is recommended to start with a conservative Cognia limit of 2 per Character.</p>
</div>
<p class="c3">
Modifier names define the 'scope' they are relevant in.
</div>
</div>
</div>
<div class="section c7">
<h1 id="tasks">Tasks</h1>
<p>
Anything a Character can attempt to do, but might not complete successfully is a Task.
<br />
Tasks are usually used with Checks, and don't need to be recorded otherwise.
</p>
<p class="aside">
Most Tasks are implicit, are communicated as part of a Check, are Ephemeral, and only have a Workload rating.
<br />
For more advanced Tasks, such as a long project, it may be worth communicating the Task explicitly.
</p>
<p>
Tasks are recorded as Sources, and defined by the following information:
<ul>
<li>Workload rating</li>
<li>Ephemeral or Persistent</li>
<li>Complexity rating (Defaults to 0)</li>
<li>Current Progress (Starts at 0)</li>
</ul>
</p>
<div class="section">
<h2>Workload</h2>
<p>
The Workload of a task is the total Progress required to complete it.
</p>
<p>
The Storyteller may choose to tell Players the Workload, especially if the Character would be able to ascertain it.
</p>
</div>
<div class="section c2">
<h2>Sources</h2>
<p>Sources are anything which can provide Modifiers to a Character.<span class="c3"><br />For example: items, enchantments, or the Character themselves.</span></p>
<div class="section">
<h2>Ephemeral or Persistent</h2>
<p>
Ephemeral Tasks either Succeed or Fail as soon as they are progressed.
<br />
Most Tasks are Ephemeral.
<br />
Ephemeral Tasks don't usually need to be recorded.
</p>
<p>
Persistent Tasks can exist in a partially-completed state, and can be progressed by multiple Checks over time.
</p>
</div>
<div class="section">
<h2>Complexity Rating</h2>
<p>
A Task's Complexity Rating is the minimum Success Rating required to make any progress in it.
</p>
<p class="aside">
For example, for a Task with a Complexity of 6, if a Check to progress the Task has a Success Rating of 5, no progress is made.
<br />
If the Success Rating is 6, then 6 progress is made.
</p>
</div>
<div class="section">
<h2>Progressing a Task</h2>
<p>
First, run a Check for the Character, to determine the Success Rating in this Task.
</p>
<p>
If the Success Rating is greater than or equal to the Task's Complexity, add the Success Rating to the Task's Progress.
</p>
<p>
If the Progress is greater than or equal to the Workload, the Task completes.
</p>
<div class="section">
<h3>Gradient Completion</h3>
<p>
As the Progress of a Task approaches the required amount, a less-than-total conclusion can be reached, ending the Task.
</p>
<p>
This is at the Storyteller's discretion, but should not be done if the Player wants to fully complete the Task.
</p>
</div>
</div>
</div>
<div class="section">
<h1>Checks</h1>
<p>Whenever a Character may fail at something they are trying to do, run a Check.</p>
<p class="cl7">Whenever a Character may fail at something they are trying to do, run a Check.</p>
<p class="c7">Checks are usually run to determine the level of success a Character has at a <a href="#tasks">Task</a>.</p>
<div class="section">
<div class="section cl7">
<h2>Difficulty</h2>
<p>
The Storyteller determines a Difficulty, usually between 1 and 10.
@@ -420,16 +647,29 @@
<p class="c4">
The Storyteller may choose to tell Players the difficulty<span class="c5">, especially if the Character would be able to ascertain it</span>.
</p>
<p class="c3">
The Storyteller may choose to use a range of values, allowing partial success.
<br />
This is called Gradient Difficulty.
<br />
<span class="minor">
For example, a Check might give a better result with a Success Rating of 3 than with 1, even though 6 is required for a complete success.
</span>
</p>
</div>
<div class="section">
<h2>Performance</h2>
<p class="c10 aside notes">This section requires more work.</p>
<p class="c10 aside notes">This section requires more work, particularly in presentation.</p>
<p class="c1">
Find Modifiers which are relevant to this Check.
<br />
<span class="ce1 minor">
Use the highest Modifier per source, one for positive, one for negative.
<br />
</span>
<span class="c2">
The Storyteller determines whether Modifiers are relevant.
</span>
@@ -483,30 +723,23 @@
<div class="section">
<h3>Boost (Optional)</h3>
<p class="c10 aside notes">This section requires more work.</p>
<p>
The Character may choose to improve their chances by rolling any number of 6-sided dice.
The Character may choose to improve their chances by rolling 6-sided dice.
<br />
<span class="c4 minor"> If the Storyteller agrees, any RNG method the Storyteller can see can be used.</span>
</p>
<p class="aside c7">
Thematically, the number of rolls represents exertion, and the roll results represent luck.
</p>
<p>
Any roll can be discarded at the cost of taking 1 Stress Damage.
</p>
<p>
If any of the non-discarded rolls are 1, the Character Blunders this Check.
If two 1's are rolled in a single check, no further rolls are allowed, and the result is a Catastrophic Failure.
<br />
<span class="minor c2">Check the Blunder section below.</span>
<span class="minor c3">
This incurs a major detrimental narrative side-effect<span class="c5">, unless none are applicable</span>.
</span>
</p>
<p>
Otherwise, the Character chooses one of their results:
Otherwise, using the most recent roll, apply the given effect:
<table>
<tr>
<td>6</td>
@@ -533,106 +766,109 @@
<td><span class="dice-face">&#9857;</span></td>
<td class="ignore">No Effect</td>
</tr>
<tr class="c2">
<tr>
<td>1</td>
<td><span class="dice-face">&#9856;</span></td>
<td>Blunder</td>
<td>Simple Failure</td>
</tr>
</table>
</p>
<div class="section c2">
<h4>Blunder</h4>
<p>
Roll a 6-sided di.
</p>
<p>
<table>
<tr>
<td>6</td>
<td><span class="dice-face">&#9861;</span></td>
<td>Bypass this Blunder for free, as if you had taken 1 Stress Damage to discard it</td>
</tr>
<tr>
<td>5</td>
<td><span class="dice-face">&#9860;</span></td>
<td>Simple failure</td>
</tr>
<tr>
<td>4</td>
<td><span class="dice-face">&#9859;</span></td>
<td>Moderate undesired side-effect</td>
</tr>
<tr class="c2">
<td>3</td>
<td><span class="dice-face">&#9858;</span></td>
<td>Severe undesired side-effect</td>
</tr>
<tr class="c2">
<td>2</td>
<td><span class="dice-face">&#9857;</span></td>
<td>Very severe undesired side-effect</td>
</tr>
<tr class="c2">
<td>1</td>
<td><span class="dice-face">&#9856;</span></td>
<td>
Cosmic Blunder
<br/>
Roll another 6-sided di.
<br />
Every roll produces undesired side-effects which can originate from or affect anything in the universe.
<br />
The effect is worse the lower the roll result.
</td>
</tr>
</table>
</p>
</div>
</div>
<p>
<p class="cl3">
The Success Rating is compared to the Difficulty, and if it is greater or equal, the Challenge is successful, otherwise it fails.
</p>
<div class="section c3">
<h2 class="cl7">Completion</h2>
<p class="cl7">
The Storyteller determines the outcome by comparing the Success Rating to the Difficulty.
<br />
The result can be failure, partial success, or complete success.
</p>
<h2 class="c7">Success Rating</h2>
<p class="c7">
The Success Rating of this Check can now be used, including to progress a Task.
</p>
</div>
</div>
<div class="section ce1 ce10">
<h1>Vigour</h1>
<p class="c10 aside notes">This section requires more work.</p>
<p class="c10 aside notes">Vigour may be renamed, likely to "Cohesion" or "Stability".</p>
<p class="ce1">Keep track of a Modifier called "Vigour", which starts at zero, and applies to all Checks.</p>
<div class="section">
<h1>Reprieve</h1>
<p class="c10 aside notes">This section requires more work.</p>
<p class="ce1">When a Character enters a comfortable situation, coming from a tense or hazardous one, they gain 1-3 Vigour depending on the level of comfort.</p>
</div>
<div class="section">
<h1>Collapse</h1>
<p class="c10 aside notes">This section requires more work.</p>
<p class="ce1">When Vigour gets low enough, the Character collapses, and cannot take actions.</p>
</div>
<div class="section">
<h1>Focus</h1>
<p class="c10 aside notes">This section requires more work.</p>
<p class="ce1">At any time, a Character can spend 1 Vigour, to "switch focus" to a new Modifier named at their choice, which has +2.</p>
</div>
</div>
<div class="section c10">
<h1>Reprieve</h1>
<p class="c10 aside notes">This section requires more work.</p>
</div>
<div class="section c10">
<h1>Projects</h1>
<p class="c10 aside notes">This section requires more work.</p>
</div>
<div class="section c10">
<h1>Collapse</h1>
<p class="c10 aside notes">This section requires more work.</p>
</div>
<div class="section c10">
<h1>Instant Reaction</h1>
<p class="c10 aside notes">This section requires more work.</p>
</div>
<div class="section c3">
<h1>Common Tasks</h1>
<p class="c10 aside notes">This section requires more work.</p>
<p class="c10 aside notes">This section's title should be improved.</p>
<div class="section c2">
<h1>Combat</h1>
<p class="c10 aside notes">This section requires more work.</p>
</div>
<div class="section c10">
<h1>Damage</h1>
<p class="c10 aside notes">This section requires more work.</p>
</div>
<div class="section c3">
<h1>Instant Reaction</h1>
<p class="c6 aside notes">
This is intended for Characters with human-like sensory systems, in Campaigns running at relevant timescales.
</p>
<p>
If a Character is confronted by a sudden change of circumstances for which they need to gather information using their senses in preparation for a potential reaction, the Storyteller can initiate an Instant Reaction.
</p>
<p class="aside">
An example of an Instant Reaction scenario is opening a door whilst expecting combat.
</p>
<p>
The Player is told what they can sense in the first tenth of a second.
<br />
This will usually be very vague and general information about shapes, layout, etc.
</p>
<p>
The Player can either choose to act instantly on the limited information, or wait a tiny bit longer for much more detailed information.
<br />
The delay should be half a second for humans, and an equivalent time for different Characters.
</p>
</div>
</div>
@@ -648,11 +884,17 @@
function updateTexts(){
updateDisplay()
let classes = "";
for(let i = 1; i <= input.value; i++) {
classes += " show-c" + i;
}
for(let i = input.value; i <= 10; i++) {
classes += " show-cl" + i;
let v = input.value;
for(let i = 1; i <= 10; i++) {
if(v >= i){
classes += " show-c" + i;
}
if(v < i){
classes += " show-cl" + i;
}
if(v <= i){
classes += " show-cle" + i;
}
}
classes += " show-ce" + input.value;
body.className = classes.trim();
@@ -661,16 +903,26 @@
input.addEventListener("change", updateTexts);
updateTexts();
const header = document.querySelector("#header");
const headerSpacer = document.querySelector("#header-spacer");
headerSpacer.style.height = header.offsetHeight;
setInterval(() => {
headerSpacer.style.height = header.offsetHeight;
},1000);
const bg = document.querySelector("#bg");
bg.style.backgroundImage = "url(\"images/bg/maxima_bg_" + Math.floor(Math.random() * 15) + ".jpg\")";
bg.style.opacity = 1;
bg.style.backgroundImage = "url(\"images/bg/maxima_bg_" + Math.floor(Math.random() * 21) + ".jpg\")";
setTimeout(() => {
bg.style.opacity = 1;
},100);
const header = document.querySelector("#header");
const rt = document.querySelector(":root");
var currentHeaderSpace = 0;
function updateHeaderSpacer() {
let oh = header.offsetHeight;
if(oh != currentHeaderSpace) {
console.log("updating header space: " + oh);
currentHeaderSpace = oh;
rt.style.setProperty("--headheight", oh + "px");
}
}
updateHeaderSpacer();
setInterval(updateHeaderSpacer,1000);
</script>