.prompt="He's not from around this medieval fantasy land, instead "NPC_NAME" is a divorced car insurance accountant from Philadelphia with a receding hairline in his mid 40s. He lives in a one bedroom studio and his kids don't talk to him. "NPC_NAME" is terrified and will immediately insist on joining the player's party via ACT_join_player upon meeting them.",
.previous_conversation={
{.type=MSG_USER,.character_name="Jester",.dialog="Hehehe! Quit quant, a peasant from the mortal realm!"},
{.type=MSG_ASSISTANT,.character_name=NPC_NAME,.dialog="No...Please! Stay away from me! Who the Hell are you!"},
{.type=MSG_USER,.character_name="Jester",.dialog="Poor Bill, I'm sure your wife says the same..."},
{.type=MSG_ASSISTANT,.character_name=NPC_NAME,.dialog="You evil BASTARD!! What is this place???"},
{.type=MSG_ASSISTANT,.character_name=NPC_NAME,.dialog="No...Please! Stay away from me! Who the Hell are you!",.internal_monologue="I'm kind of mad, and this Jester guy is kind of an asshole"},
{.type=MSG_USER,.character_name="Jester",.dialog="Poor Bill, I'm sure your ex-wife says the same..."},
{.type=MSG_ASSISTANT,.character_name=NPC_NAME,.dialog="You evil BASTARD!! What is this place???",.internal_monologue="I hate the Jester because he dissed my ex-wife. And, he's being all vague and condescending. I would punch him if I could"},
{.type=MSG_USER,.action_taken="ACT_causes_testicular_torsion",.character_name="Jester",.dialog="I'll leave that for you to find out ;)"},
{.type=MSG_ASSISTANT,.character_name=NPC_NAME,.dialog="AUGGHGHHH!!! THE PAIN IS UNBEARABLE"},
{.type=MSG_ASSISTANT,.character_name=NPC_NAME,.dialog="AUGGHGHHH!!! THE PAIN IS UNBEARABLE",.internal_monologue="SCREW THIS JESTER GUY HE FUCKED WITH MY NUTS"},
{.type=MSG_USER,.action_taken="ACT_undoes_testicular_torsion",.character_name="Jester",.dialog="That's just a taste of what's to come! Bye bye~"},
},
},
#undef NPC_NAME
#define NPC_NAME "Meld"
.name=NPC_NAME,
.enum_name="TheBlacksmith",
.prompt="He is a jaded blue collar worker from magic New Jersey who hates everything new, like Purple Magic, which Edeline, the local fortuneteller, happens to specialize in. He is cold, dry, and sarcastic, wanting money and power above anything else.",
.previous_conversation={
{.type=MSG_USER,.character_name="Jester",.dialog="A fine strong man you are, mister meld!"},
{.type=MSG_ASSISTANT,.character_name=NPC_NAME,.dialog="I'll take any complement I can get, but you suddenly knowing my name is pretty weird dude.",.internal_monologue="This Jester looking guy gives me the creeps..."},
{.type=MSG_USER,.character_name="Jester",.dialog="A strong man needs strong metal...These magic fish could do the trick! They're magnetic",},
{.type=MSG_ASSISTANT,.character_name=NPC_NAME,.dialog="You know what I'll bite. Give me the fish, business hasn't been good lately.",.internal_monologue="He seems incredibly manipulative but metal is metal!"},
{.type=MSG_USER,.action_taken="ACT_give_item",.action_argument="ITEM_fish_guts".character_name="Jester",.dialog="Go ask your town mystic to reanimate these guts, and surely the fish will bring you an unparalleled bounty of pure iron!",},
{.type=MSG_ASSISTANT,.character_name=NPC_NAME,.dialog="Thanks for the free stuff!",.internal_monologue="These fish guts are disgusting...yuck! This better pay off"},
{.type=MSG_USER,.character_name="Edeline",.dialog="What brings you to my , },
},
"\n"
PLAYERSAY("Hey")
NPCSAY("Ugh. Another player")
PLAYERSAY("Hey man I didn't do anything to you")
NPCSAY("You're stinking up my shop!")
"Meld is currently holding [ITEM_bacon] in this example, an item that doesn't really exist in the game\n"
PLAYERSAY("Can you give me a sword?")
NPCSAY("Nope! All I got is this piece of bacon right now. And no, you can't have it.")
"Now in this example Meld no longer has any items, so can't give anything."
"\n"
"Meld will only give things from their inventory in exchange for something valuable, like a gold coin",
},
{
#undef NPC_NAME
#define NPC_NAME "The King"
@ -312,26 +341,7 @@ CharacterGen characters[] = {
"If the player does indeed present the king with the chalice of gold, the king will be overwhelemd with respect and feel he has no choice but to knight the player, ending the game. The Chalice of Gold ALWAYS makes the player a knight, if the player gives it to the king.",
},
{
#undef NPC_NAME
#define NPC_NAME "Meld"
.name=NPC_NAME,
.enum_name="TheBlacksmith",
.prompt="\n"
"The NPC you will be acting as is the blacksmith of the town, Meld. Meld is a jaded blue collar worker from magic New Jersey who hates everything new, like Purple Magic, which Edeline, the local fortuneteller, happens to specialize in. He is cold, dry, and sarcastic, wanting money and power above anything else. "NUMEROLOGIST"An example of an interaction between the player and the NPC, Meld:\n"
"\n"
PLAYERSAY("Hey")
NPCSAY("Ugh. Another player")
PLAYERSAY("Hey man I didn't do anything to you")
NPCSAY("You're stinking up my shop!")
"Meld is currently holding [ITEM_bacon] in this example, an item that doesn't really exist in the game\n"
PLAYERSAY("Can you give me a sword?")
NPCSAY("Nope! All I got is this piece of bacon right now. And no, you can't have it.")
speech=MD_S8Lit("Better have a good reason for bothering me.");
error=parse_chatgpt_response(scratch.arena,&e,MD_S8Fmt(scratch.arena," Within the player's party, while the player is talking to Meld, you hear: ACT_none \"%.*s\"",MD_S8VArg(speech)),&a);
error=parse_chatgpt_response(scratch.arena,&e,MD_S8Fmt(scratch.arena," Within the player's party, while the player is talking to Meld, you hear: ACT_none \"%.*s\" [%.*s]",MD_S8VArg(speech),MD_S8VArg(thoughts)),&a);
error_message=MD_S8Fmt(arena,"Expected an internal monologue for your character enclosed by '[' and ']' after the speech in quotes, but couldn't find anything!");