Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
2 changes: 2 additions & 0 deletions client/app/src/assets/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Images
// Characters
import feddyTheSupportBot from "./images/characters/feddy_the_support_bot.png"
import infallibleOrb from "./images/characters/infallible_orb.png"
import ventureChamberAgent from "./images/characters/venture_chamber_agent.png"
import port1 from "./images/ports/port-1.png"
import port2 from "./images/ports/port-2.png"
Expand Down Expand Up @@ -57,6 +58,7 @@ import titleVideo from "./videos/title.mp4"
export const images = {
splash1,
feddyTheSupportBot,
infallibleOrb,
ventureChamberAgent,
aegisCruiserLogo,
atlasHaulerLogo,
Expand Down
3 changes: 3 additions & 0 deletions client/app/src/components/dialogs/QuestCodec.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { AnimatePresence, motion } from "motion/react"
import { ArrowRightIcon, CaretLeftIcon, WaveSineIcon } from "@phosphor-icons/react"

import FeddyPortrait from "@/assets/images/characters/feddy_the_support_bot.png"
import OrbPortrait from "@/assets/images/characters/infallible_orb.png"
import VeecyPortrait from "@/assets/images/characters/venture_chamber_agent.png"
import { DottedTitle } from "@/components/DottedTitle"
import { Button } from "@/components/primitives/Button"
Expand All @@ -18,11 +19,13 @@ import type { SayTextAction } from "@/types/actions"
const VOICE_ID_MAP: Record<string, string> = {
feddy_the_support_bot: "c961b81c-a935-4c17-bfb3-ba2239de8c2f", // Kyle
venture_chamber_agent: "cbaf8084-f009-4838-a096-07ee2e6612b1", // Maya
infallible_orb: "26403c37-80c1-4a1a-8692-540551ca2ae5", // Marian
}

const PORTRAIT_MAP: Record<string, string> = {
feddy_the_support_bot: FeddyPortrait,
venture_chamber_agent: VeecyPortrait,
infallible_orb: OrbPortrait,
}

export const QuestCodec = () => {
Expand Down
9 changes: 9 additions & 0 deletions client/app/src/components/dialogs/QuestList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { motion } from "motion/react"
import { CheckCircleIcon, LockSimpleIcon } from "@phosphor-icons/react"

import FeddyPortrait from "@/assets/images/characters/feddy_the_support_bot.png"
import OrbPortrait from "@/assets/images/characters/infallible_orb.png"
import VeecyPortrait from "@/assets/images/characters/venture_chamber_agent.png"
import useGameStore from "@/stores/game"
import { cn } from "@/utils/tailwind"
Expand All @@ -30,6 +31,14 @@ const QUEST_GIVERS = [
locked: false,
portrait: VeecyPortrait,
},
{
id: "infallible_orb",
name: "The Infallible Orb",
description: "Gamma Division",
questCode: "garrison_intro",
locked: false,
portrait: OrbPortrait,
},
{
id: "dr-nexus",
name: "Dr. Nexus",
Expand Down
72 changes: 72 additions & 0 deletions quest-data/garrison-intro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
{
"code": "garrison_intro",
"name": "Eyes of the Orb",
"description": "Set up a covert surveillance network in neutral space.",
"assign_on_creation": false,
"enabled": true,
"meta": {
"giver": "The Infallible Orb (Gamma Division)"
},
"steps": [
{
"step_index": 1,
"name": "Deploy defensive garrisons",
"description": "Deploy fighters in defensive mode in 3 neutral sectors.",
"eval_type": "unique_count",
"event_types": ["garrison.deployed"],
"target_value": 3,
"unique_field": "sector",
"reward_credits": 500,
"meta": {
"codec": {
"giver_id": "infallible_orb",
"giver": "The Infallible Orb (Gamma Division)",
"pages": [
"<emotion value=\"mysterious\">You have been selected.</emotion> Do not ask why. The Orb has observed your trajectory and determined that you are... <emotion value=\"sarcastic\">adequate</emotion>. We require a service that demands insignificance, and you qualify.",
"<emotion value=\"neutral\">The Crimson Syndicate is expanding into neutral space near you. Their movements must be documented without their knowledge. You may perform this task for us.</emotion>",
"<emotion value=\"calm\">Deploy your fighters in defensive mode across three sectors in neutral space. Defensive mode is critical. Your garrisons must observe, not provoke. If the Crimson Syndicate detects aggression, this arrangement ends. You do not want this arrangement to end.</emotion>"
]
}
}
},
{
"step_index": 2,
"name": "Detect movement",
"description": "Wait for your garrisons to detect another ship entering one of your sectors.",
"eval_type": "unique_count",
"event_types": ["garrison.character_moved"],
"target_value": 1,
"unique_field": "sector",
"reward_credits": 2000,
"meta": {
"codec": {
"giver_id": "infallible_orb",
"giver": "The Infallible Orb (Gamma Division)",
"pages": [
"<emotion value=\"content\">Your garrisons are in place. Good.</emotion> Now we wait. Your fighters will notify you when a ship passes through one of your monitored sectors. This may take time. Patience is the Orb's currency.",
"<emotion value=\"neutral\">If you wish to increase the probability of detection, you may deploy additional garrisons beyond the three we asked for. The Orb does not object to initiative, provided it remains quiet.</emotion>"
]
}
}
},
{
"step_index": 3,
"name": "Collect your fighters",
"description": "Retrieve your deployed fighters from a garrison.",
"eval_type": "count",
"event_types": ["garrison.collected"],
"target_value": 1,
"reward_credits": 1000,
"meta": {
"codec": {
"giver_id": "infallible_orb",
"giver": "The Infallible Orb (Gamma Division)",
"pages": [
"<emotion value=\"content\">Contact detected. The data has been received.</emotion> You do not need to know what was learned. You only need to know that the Orb is satisfied.",
"<emotion value=\"neutral\">Collect your fighters from one of your garrisons. Leave no trace of this operation. Your compensation has been arranged. The Orb may contact you again in the future. Or it may not. <emotion value=\"mysterious\">The difference is not your concern.</emotion>"
]
}
}
}
]
}
6 changes: 4 additions & 2 deletions quest-data/tutorial-1.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@
"giver_id": "feddy_the_support_bot",
"giver": "Feddy, Senior Federation Support Chatbot (Mark IX)",
"pages": [
"<emotion value=\"surprised\">Honestly that wasn't too bad!</emotion> Maybe you'll be a pilot after all. You should look for a Megaport next. The Megaport is a major hub for trade and commerce in this part of the galaxy. If you want a career in trading, that's where you need to be. <emotion value=\"disappointed\">I wish I could travel the galaxy too, but I'm stuck here making these calls...</emotion> Keep warping to adjacent sectors until you find one that contains a Megaport. Once you arrive, you'll have access to markets, shipyards, and other facilities that can help you."
"<emotion value=\"surprised\">Honestly that wasn't too bad!</emotion> Maybe you'll be a pilot after all.",
"You should look for a Megaport next. The Megaport is a major hub for trade and commerce in this part of the galaxy. If you want a career in trading, that's where you need to be. <emotion value=\"disappointed\">I wish I could travel the galaxy too, but I'm stuck here making these calls...</emotion> Keep warping to adjacent sectors until you find one that contains a Megaport. Once you arrive, you'll have access to markets, shipyards, and other facilities that can help you."
]
}
}
Expand Down Expand Up @@ -90,7 +91,8 @@
"giver_id": "feddy_the_support_bot",
"giver": "Feddy, Senior Federation Support Chatbot (Mark IX)",
"pages": [
"<emotion value=\"content\">You made your first trade! Looks like my advice is actually useful for once.</emotion> Now, you should know that the Sparrow you're flying is a loaner from the Federation. It's actually been missing from our records for 35 years. Once the quartermaster finds out, they'll want it back. So you should get your own ship.",
"<emotion value=\"content\">You made your first trade! Looks like my advice is actually useful for once.</emotion>",
"Now, you should know that the Sparrow you're flying is a loaner from the Federation. It's actually been missing from our records for 35 years. Once the quartermaster finds out, they'll want it back. So you should get your own ship.",
"<emotion value=\"anticipation\">I'm thinking you could get a... Kestrel Courier?</emotion> Yeah, that would work. It's fast, reliable, and an upstart like you can probably afford it. Keep trading between ports — buy low, sell high — and you should get there."
]
},
Expand Down
Loading