Files
BreakEscape/scenarios/m01_first_contact/ink/m01_npc_sarah.json
Z. Cliffe Schreuders 0cf9e0ba62 Add scenario schema and validation script for Break Escape scenarios
- Introduced `scenario-schema.json` to define the structure and requirements for scenario.json.erb files.
- Implemented `validate_scenario.rb` to render ERB templates to JSON and validate against the schema.
- Created a comprehensive `SCENARIO_JSON_FORMAT_GUIDE.md` to outline the correct format for scenario files, including required fields, room definitions, objectives, and common mistakes.
2025-12-01 15:45:24 +00:00

1 line
5.2 KiB
JSON

{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":["ev",{"VAR?":"met_sarah"},"!","/ev",[{"->":".^.b","c":true},{"b":["\n","ev",true,"/ev",{"VAR=":"met_sarah","re":true},"ev",{"VAR?":"influence"},2,"+",{"VAR=":"influence","re":true},"/ev","^Sarah: Hi! You must be the IT contractor. I'm Sarah, the receptionist.","\n","^Sarah: Let me get you checked in.","\n",{"->":"first_checkin"},{"->":"start.5"},null]}],"nop","\n","ev",{"VAR?":"met_sarah"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Sarah: Hey, need anything else?","\n",{"->":"hub"},{"->":"start.11"},null]}],"nop","\n",null],"first_checkin":[["ev","str","^Thanks. I'm here to audit your network security","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Just point me to IT and I'll get started","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","ev",{"VAR?":"influence"},1,"+",{"VAR=":"influence","re":true},"/ev","^Sarah: Oh good! Kevin mentioned you'd be coming.","\n","^Sarah: Let me print your visitor badge.","\n",{"->":"receive_badge"},null],"c-1":["\n","^Sarah: Sure thing. Let me get your badge first.","\n",{"->":"receive_badge"},null]}],null],"receive_badge":["ev",true,"/ev",{"VAR=":"has_badge","re":true},"#","^give_item:visitor_badge","/#","#","^complete_task:meet_reception","/#","^Sarah: Here you go. This gets you into public areas.","\n","^Sarah: Restricted areas need keycard access or you'll need to ask Kevin.","\n",{"->":"hub"},null],"hub":[["ev","str","^Where can I find Kevin?","/str",{"VAR?":"asked_about_kevin"},"!","/ev",{"*":".^.c-0","flg":5},"ev","str","^Can you tell me about the office layout?","/str",{"VAR?":"asked_about_office"},"!","/ev",{"*":".^.c-1","flg":5},"ev","str","^Anyone working late I should know about?","/str",{"VAR?":"asked_about_derek"},"!",{"VAR?":"influence"},3,">=","&&","/ev",{"*":".^.c-2","flg":5},"ev","str","^Thanks, I'll get started","/str","/ev",{"*":".^.c-3","flg":4},{"c-0":["\n",{"->":"ask_kevin_location"},null],"c-1":["\n",{"->":"ask_office_layout"},null],"c-2":["\n",{"->":"ask_late_workers"},null],"c-3":["\n","#","^exit_conversation","/#","^Sarah: Good luck with the audit!","\n",{"->":"hub"},null]}],null],"ask_kevin_location":[["ev",true,"/ev",{"VAR=":"asked_about_kevin","re":true},"ev",{"VAR?":"influence"},1,"+",{"VAR=":"influence","re":true},"/ev","^Sarah: Kevin's desk is in the main office area—can't miss it. Covered in monitors and coffee cups.","\n","^Sarah: He's usually there this time of day.","\n","ev","str","^What's he like?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Thanks","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"kevin_personality"},null],"c-1":["\n",{"->":"hub"},null]}],null],"kevin_personality":["ev",{"VAR?":"influence"},1,"+",{"VAR=":"influence","re":true},"/ev","^Sarah: Super helpful, kind of overworked. The company relies on him way too much.","\n","^Sarah: He'll appreciate having someone competent help out.","\n",{"->":"hub"},null],"ask_office_layout":[["ev",true,"/ev",{"VAR=":"asked_about_office","re":true},"ev",{"VAR?":"influence"},1,"+",{"VAR=":"influence","re":true},"/ev","^Sarah: Main office is through there—hot-desking setup. Conference room on the west side, break room to the east.","\n","^Sarah: Server room is behind main office, but you'll need Kevin's access for that.","\n","ev","str","^What about executive offices?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Got it, thanks","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"ask_executive_offices"},null],"c-1":["\n",{"->":"hub"},null]}],null],"ask_executive_offices":["ev",{"VAR?":"influence"},1,"+",{"VAR=":"influence","re":true},"/ev","^Sarah: Derek's office is off the main area—he's our Senior Marketing Manager. Usually locks his door when he's out.","\n","^Sarah: Most people just have desk space, but Derek got an office because of client confidentiality stuff.","\n",{"->":"hub"},null],"ask_late_workers":[["ev",true,"/ev",{"VAR=":"asked_about_derek","re":true},"ev",{"VAR?":"influence"},1,"+",{"VAR=":"influence","re":true},"/ev","^Sarah: Derek's usually here late. Like, really late. Sometimes I leave at 6 and he's still working.","\n","^Sarah: He says it's because of client timezones, but...","\n","ev","str","^But what?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Dedication, I guess","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"derek_suspicion"},null],"c-1":["\n",{"->":"hub"},null]}],null],"derek_suspicion":[["ev",{"VAR?":"influence"},2,"+",{"VAR=":"influence","re":true},"/ev","^Sarah: I don't know. It just seems weird, you know? He's marketing, not IT.","\n","^Sarah: And I've seen him in the server room a couple times. Told me he was checking on campaign servers.","\n","ev","str","^That does seem odd","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Maybe he's just thorough","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","ev",{"VAR?":"influence"},1,"+",{"VAR=":"influence","re":true},"/ev","^Sarah: Right? But I'm just the receptionist. What do I know?","\n",{"->":"hub"},null],"c-1":["\n","^Sarah: Maybe. Anyway, Kevin would know more about the technical stuff.","\n",{"->":"hub"},null]}],null],"global decl":["ev",0,{"VAR=":"influence"},false,{"VAR=":"met_sarah"},false,{"VAR=":"has_badge"},false,{"VAR=":"asked_about_derek"},false,{"VAR=":"asked_about_office"},false,{"VAR=":"asked_about_kevin"},"/ev","end",null]}],"listDefs":{}}