Create a renderer for Candela Obscura character sheets #275
|
@ -59,11 +59,15 @@ export type Charsheet = {
|
||||||
style: string,
|
style: string,
|
||||||
catalyst: string,
|
catalyst: string,
|
||||||
question: string,
|
question: string,
|
||||||
role: string,
|
|
||||||
|
|
||||||
nerve: Nerve,
|
nerve: Nerve,
|
||||||
cunning: Cunning,
|
cunning: Cunning,
|
||||||
intuition: Intuition,
|
intuition: Intuition,
|
||||||
|
|
||||||
|
role: string,
|
||||||
|
role_abilities: string[],
|
||||||
|
specialty: string,
|
||||||
|
specialty_abilities: string[],
|
||||||
}
|
}
|
||||||
|
|
||||||
interface CharsheetProps {
|
interface CharsheetProps {
|
||||||
|
@ -129,6 +133,27 @@ const ActionGroupElement = ({ group }: ActionGroupElementProps) => {
|
||||||
</div>)
|
</div>)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface AbilitiesElementProps {
|
||||||
|
role: string
|
||||||
|
role_abilities: string[]
|
||||||
|
specialty: string
|
||||||
|
specialty_abilities: string[]
|
||||||
|
}
|
||||||
|
|
||||||
|
const AbilitiesElement = ({ role, role_abilities, specialty, specialty_abilities }: AbilitiesElementProps) => {
|
||||||
|
return (<div>
|
||||||
|
<h1> ROLE: {role} </h1>
|
||||||
|
<ul>
|
||||||
|
{role_abilities.map((ability) => <li>{ability}</li>)}
|
||||||
|
</ul>
|
||||||
|
<h1> SPECIALTY: {role} </h1>
|
||||||
|
<ul>
|
||||||
|
{specialty_abilities.map((ability) => <li>{ability}</li>)}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const CharsheetElement_ = ({ sheet }: CharsheetProps) => {
|
const CharsheetElement_ = ({ sheet }: CharsheetProps) => {
|
||||||
return (<div>
|
return (<div>
|
||||||
<div className="charsheet__header">
|
<div className="charsheet__header">
|
||||||
|
@ -150,7 +175,7 @@ const CharsheetElement_ = ({ sheet }: CharsheetProps) => {
|
||||||
<ActionGroupElement group={sheet.cunning} />
|
<ActionGroupElement group={sheet.cunning} />
|
||||||
<ActionGroupElement group={sheet.intuition} />
|
<ActionGroupElement group={sheet.intuition} />
|
||||||
</div>
|
</div>
|
||||||
<div> Role and Specialty </div>
|
<div> <AbilitiesElement {...sheet} /> </div>
|
||||||
<div> Marks, Scars, Relationships </div>
|
<div> Marks, Scars, Relationships </div>
|
||||||
</div>
|
</div>
|
||||||
</div>);
|
</div>);
|
||||||
|
@ -165,10 +190,9 @@ export const CharsheetElement = () => {
|
||||||
style: 'dapper gentleman',
|
style: 'dapper gentleman',
|
||||||
catalyst: 'a cursed book',
|
catalyst: 'a cursed book',
|
||||||
question: 'What were the contents of that book?',
|
question: 'What were the contents of that book?',
|
||||||
role: 'Slink',
|
|
||||||
nerve: {
|
nerve: {
|
||||||
type_: "nerve",
|
type_: "nerve",
|
||||||
drives: { current: 2, max: 2 },
|
drives: { current: 1, max: 2 },
|
||||||
resistances: { current: 0, max: 3 },
|
resistances: { current: 0, max: 3 },
|
||||||
move: { gilded: false, score: 2 },
|
move: { gilded: false, score: 2 },
|
||||||
strike: { gilded: false, score: 1 },
|
strike: { gilded: false, score: 1 },
|
||||||
|
@ -189,7 +213,15 @@ export const CharsheetElement = () => {
|
||||||
survey: { gilded: false, score: 0 },
|
survey: { gilded: false, score: 0 },
|
||||||
focus: { gilded: false, score: 0 },
|
focus: { gilded: false, score: 0 },
|
||||||
sense: { gilded: false, score: 0 },
|
sense: { gilded: false, score: 0 },
|
||||||
} as Intuition
|
} as Intuition,
|
||||||
|
role: 'Slink',
|
||||||
|
role_abilities: [
|
||||||
|
'Scout: If you have time to observe a location, you can spend 1 Intuition to ask a question: What do I notice here that others do not see? What in this place might be of use to us? What path should we follow?',
|
||||||
|
],
|
||||||
|
specialty: 'Detective',
|
||||||
|
specialty_abilities: [
|
||||||
|
"Mind Palace: When you want to figure out how two clues might relate or what path they should point you towards, burn 1 Intution resistance. The GM will give you the information you've deduced.",
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
return <CharsheetElement_ sheet={sheet} />
|
return <CharsheetElement_ sheet={sheet} />
|
||||||
|
|
|
@ -16,7 +16,8 @@ export const DriveGuage = ({ current, max }: Guage) => {
|
||||||
<div className="drive-guage__bottom"> </div>}
|
<div className="drive-guage__bottom"> </div>}
|
||||||
</div>)
|
</div>)
|
||||||
}
|
}
|
||||||
components.splice(3, 1, <div className="drive-guage__spacer"> </div>);
|
components.splice(3, 0, <div className="drive-guage__spacer"> </div>);
|
||||||
|
components.splice(7, 0, <div className="drive-guage__spacer"> </div>);
|
||||||
return (<div className="drive-guage">
|
return (<div className="drive-guage">
|
||||||
{components}
|
{components}
|
||||||
</div>)
|
</div>)
|
||||||
|
|
Loading…
Reference in New Issue