feat(gameplay): enforce core SRD d20 rules
Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
@@ -5,6 +5,11 @@ const forceOpen = ref(false)
|
||||
const errorMessage = ref('')
|
||||
const submittedActionIndex = ref<number | null>(null)
|
||||
|
||||
function abilityLabel(score: number) {
|
||||
const modifier = Math.floor((Number(score) - 10) / 2)
|
||||
return modifier >= 0 ? `+${modifier}` : String(modifier)
|
||||
}
|
||||
|
||||
async function submitAction() {
|
||||
if (!currentAction.value.trim() || submitting.value || ready.value) return
|
||||
submitting.value = true
|
||||
@@ -67,8 +72,8 @@ async function continueRound() {
|
||||
</article>
|
||||
<div class="character-sheet">
|
||||
<small>ACTIVE CHARACTER</small><h2>{{ characters[0]?.name }}</h2><p>{{ characters[0]?.concept }}</p>
|
||||
<div class="vitals"><span><b>{{ characters[0]?.hp }}</b>/{{ characters[0]?.maxHp }} HP</span><span><b>{{ characters[0]?.defense }}</b> DEF</span></div>
|
||||
<div class="abilities"><span v-for="(score,key) in characters[0]?.abilities" :key="key"><small>{{ key }}</small><b>{{ score }}</b></span></div>
|
||||
<div class="vitals"><span><b>{{ characters[0]?.hp }}</b>/{{ characters[0]?.maxHp }} HP</span><span><b>{{ characters[0]?.defense }}</b> AC</span></div>
|
||||
<div class="abilities"><span v-for="(score,key) in characters[0]?.abilities" :key="key"><small>{{ key }} {{ abilityLabel(score) }}</small><b>{{ score }}</b></span></div>
|
||||
<details><summary>INVENTORY</summary><ul><li v-for="item in characters[0]?.inventory" :key="item">{{ item }}</li></ul></details>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
Reference in New Issue
Block a user