/// import { type Cell, cell, handler, lift, recipe, UI } from "commontools"; const calcAC = (dex: number): number => 20 + Math.floor((dex - 10) / 2); const updateName = handler< { detail: { message: string } }, { characterName: Cell } >( (event, { characterName }) => { characterName.set(event.detail.message); }, ); const rollD6 = () => Math.floor(Math.random() * 6) + 1; const rollDex = handler< unknown, Cell >( (_, dex) => { // Roll 3d6 for new DEX value const roll = rollD6() + rollD6() + rollD6(); dex.set(roll); }, ); export default recipe("state test", () => { const characterName = cell(""); characterName.set("Lady Ellyxir"); const dex = cell(16); const ac = lift(calcAC)(dex); return { [UI]: (

Character name: {characterName}

  • DEX: {dex}{" "} Roll
  • DEX Modifier: {Math.floor((dex - 10) / 2)}
  • AC: {ac}
  • ), }; });