Mari's guided journal software.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

82 lines
2.0 KiB

import {schema} from "../schemata/SchemaData.js";
export enum Persona {
HEART = "Heart",
SUCCUBUS = "Succubus",
CHILD = "Child",
NURSE = "Nurse",
SORCERESS = "Sorceress",
LADY = "Lady",
SHADOW = "Shadow",
}
export const PERSONAS: Persona[] = [Persona.HEART, Persona.SUCCUBUS, Persona.CHILD, Persona.NURSE, Persona.SORCERESS, Persona.LADY, Persona.SHADOW]
export type PersonaJTD = typeof PersonaJTD
export const PersonaJTD = schema({
schema: {
enum: PERSONAS
},
key: "persona",
references: [],
})
export interface PersonaPrompt {
readonly persona?: Persona
}
export function personaPronoun(persona: Persona | undefined): string {
switch (persona) {
case undefined:
return "you"
default:
return "she"
}
}
export function personaPronounPossessive(persona: Persona | undefined): string {
switch (persona) {
case undefined:
return "your"
default:
return "her"
}
}
export function personaPronounObject(persona: Persona | undefined): string {
switch (persona) {
case undefined:
return "you"
default:
return "her"
}
}
export function personaName(persona: Persona | undefined): string {
switch (persona) {
case undefined:
return "you"
case Persona.HEART:
return "Reya Heart"
default:
return persona + " Reya"
}
}
export function personaPossessive(persona: Persona | undefined): string {
switch (persona) {
case undefined:
return "your"
case Persona.HEART:
return "Reya Heart's"
default:
return persona + " Reya's"
}
}
export function personaVerb(persona: Persona | undefined, secondPerson: string, thirdPerson: string): string {
switch (persona) {
case undefined:
return secondPerson
default:
return thirdPerson
}
}