generated from nhcarrigan/template
feat: goddess API routes, services, and tests (chunk 4)
Add six new goddess-mode API routes (boss fight, consecration, enlightenment, upgrade purchase, crafting, exploration) alongside matching service modules and full test suites at 100% coverage.
This commit is contained in:
@@ -49,12 +49,22 @@ export type {
|
||||
AuthResponse,
|
||||
BossChallengeRequest,
|
||||
BossChallengeResponse,
|
||||
BuyConsecrationUpgradeRequest,
|
||||
BuyConsecrationUpgradeResponse,
|
||||
BuyEchoUpgradeRequest,
|
||||
BuyEchoUpgradeResponse,
|
||||
BuyEnlightenmentUpgradeRequest,
|
||||
BuyEnlightenmentUpgradeResponse,
|
||||
BuyGoddessUpgradeRequest,
|
||||
BuyGoddessUpgradeResponse,
|
||||
BuyPrestigeUpgradeRequest,
|
||||
BuyPrestigeUpgradeResponse,
|
||||
ConsecrationRequest,
|
||||
ConsecrationResponse,
|
||||
CraftRecipeRequest,
|
||||
CraftRecipeResponse,
|
||||
EnlightenmentRequest,
|
||||
EnlightenmentResponse,
|
||||
ExploreClaimableResponse,
|
||||
ExploreCollectEventResult,
|
||||
ExploreCollectRequest,
|
||||
@@ -63,6 +73,16 @@ export type {
|
||||
ExploreStartResponse,
|
||||
ForceUnlocksResponse,
|
||||
GiteaRelease,
|
||||
GoddessBossChallengeRequest,
|
||||
GoddessBossChallengeResponse,
|
||||
GoddessCraftRequest,
|
||||
GoddessCraftResponse,
|
||||
GoddessExploreClaimableResponse,
|
||||
GoddessExploreCollectEventResult,
|
||||
GoddessExploreCollectRequest,
|
||||
GoddessExploreCollectResponse,
|
||||
GoddessExploreStartRequest,
|
||||
GoddessExploreStartResponse,
|
||||
LeaderboardCategory,
|
||||
LeaderboardEntry,
|
||||
LeaderboardResponse,
|
||||
|
||||
@@ -564,12 +564,196 @@ interface SyncNewContentResponse {
|
||||
*/
|
||||
zonesPatched: number;
|
||||
|
||||
/**
|
||||
* Number of goddess achievements added to the save.
|
||||
*/
|
||||
goddessAchievementsAdded: number;
|
||||
|
||||
/**
|
||||
* Number of goddess bosses added to the save.
|
||||
*/
|
||||
goddessBossesAdded: number;
|
||||
|
||||
/**
|
||||
* Number of goddess disciples added to the save.
|
||||
*/
|
||||
goddessDiscipesAdded: number;
|
||||
|
||||
/**
|
||||
* Number of goddess equipment items added to the save.
|
||||
*/
|
||||
goddessEquipmentAdded: number;
|
||||
|
||||
/**
|
||||
* Number of goddess exploration areas added to the save.
|
||||
*/
|
||||
goddessExplorationAreasAdded: number;
|
||||
|
||||
/**
|
||||
* Number of goddess quests added to the save.
|
||||
*/
|
||||
goddessQuestsAdded: number;
|
||||
|
||||
/**
|
||||
* Number of goddess upgrades added to the save.
|
||||
*/
|
||||
goddessUpgradesAdded: number;
|
||||
|
||||
/**
|
||||
* Number of goddess zones added to the save.
|
||||
*/
|
||||
goddessZonesAdded: number;
|
||||
|
||||
/**
|
||||
* HMAC-SHA256 signature of the updated state for anti-cheat chain continuity.
|
||||
*/
|
||||
signature?: string;
|
||||
}
|
||||
|
||||
interface GoddessBossChallengeRequest {
|
||||
bossId: string;
|
||||
}
|
||||
|
||||
interface GoddessBossChallengeResponse {
|
||||
won: boolean;
|
||||
partyDPS: number;
|
||||
bossDPS: number;
|
||||
bossHpBefore: number;
|
||||
bossMaxHp: number;
|
||||
bossHpAtBattleEnd: number;
|
||||
bossNewHp: number;
|
||||
partyMaxHp: number;
|
||||
partyHpRemaining: number;
|
||||
rewards?: {
|
||||
prayers: number;
|
||||
divinity: number;
|
||||
stardust: number;
|
||||
upgradeIds: Array<string>;
|
||||
equipmentIds: Array<string>;
|
||||
|
||||
/**
|
||||
* One-time divinity bounty awarded for defeating this boss for the very first time.
|
||||
*/
|
||||
bountyDivinity: number;
|
||||
};
|
||||
casualties?: Array<{
|
||||
discipleId: string;
|
||||
killed: number;
|
||||
}>;
|
||||
|
||||
/**
|
||||
* HMAC-SHA256 signature of the updated state for anti-cheat chain continuity.
|
||||
*/
|
||||
signature?: string;
|
||||
}
|
||||
|
||||
type ConsecrationRequest = Record<string, never>;
|
||||
|
||||
interface ConsecrationResponse {
|
||||
|
||||
/**
|
||||
* Divinity earned from this consecration.
|
||||
*/
|
||||
divinityEarned: number;
|
||||
|
||||
// eslint-disable-next-line unicorn/no-keyword-prefix -- API response field name required by client
|
||||
newConsecrationCount: number;
|
||||
}
|
||||
|
||||
interface BuyConsecrationUpgradeRequest {
|
||||
upgradeId: string;
|
||||
}
|
||||
|
||||
interface BuyConsecrationUpgradeResponse {
|
||||
divinityRemaining: number;
|
||||
purchasedUpgradeIds: Array<string>;
|
||||
divinityPrayersMultiplier: number;
|
||||
divinityDisciplesMultiplier: number;
|
||||
divinityCombatMultiplier: number;
|
||||
}
|
||||
|
||||
type EnlightenmentRequest = Record<string, never>;
|
||||
|
||||
interface EnlightenmentResponse {
|
||||
|
||||
/**
|
||||
* Stardust earned from this enlightenment.
|
||||
*/
|
||||
stardustEarned: number;
|
||||
|
||||
// eslint-disable-next-line unicorn/no-keyword-prefix -- API response field name required by client
|
||||
newEnlightenmentCount: number;
|
||||
}
|
||||
|
||||
interface BuyEnlightenmentUpgradeRequest {
|
||||
upgradeId: string;
|
||||
}
|
||||
|
||||
interface BuyEnlightenmentUpgradeResponse {
|
||||
stardustRemaining: number;
|
||||
purchasedUpgradeIds: Array<string>;
|
||||
stardustPrayersMultiplier: number;
|
||||
stardustCombatMultiplier: number;
|
||||
stardustConsecrationThresholdMultiplier: number;
|
||||
stardustConsecrationDivinityMultiplier: number;
|
||||
stardustMetaMultiplier: number;
|
||||
}
|
||||
|
||||
interface BuyGoddessUpgradeRequest {
|
||||
upgradeId: string;
|
||||
}
|
||||
|
||||
interface BuyGoddessUpgradeResponse {
|
||||
prayersRemaining: number;
|
||||
divinityRemaining: number;
|
||||
stardustRemaining: number;
|
||||
}
|
||||
|
||||
interface GoddessCraftRequest {
|
||||
recipeId: string;
|
||||
}
|
||||
|
||||
interface GoddessCraftResponse {
|
||||
recipeId: string;
|
||||
bonusType: string;
|
||||
bonusValue: number;
|
||||
craftedPrayersMultiplier: number;
|
||||
craftedDivinityMultiplier: number;
|
||||
craftedCombatMultiplier: number;
|
||||
materials: Array<{ materialId: string; quantity: number }>;
|
||||
}
|
||||
|
||||
interface GoddessExploreStartRequest {
|
||||
areaId: string;
|
||||
}
|
||||
|
||||
interface GoddessExploreStartResponse {
|
||||
areaId: string;
|
||||
endsAt: number;
|
||||
}
|
||||
|
||||
interface GoddessExploreCollectRequest {
|
||||
areaId: string;
|
||||
}
|
||||
|
||||
interface GoddessExploreCollectEventResult {
|
||||
text: string;
|
||||
prayersChange: number;
|
||||
discipleLostCount: number;
|
||||
materialGained: { materialId: string; quantity: number } | null;
|
||||
}
|
||||
|
||||
interface GoddessExploreCollectResponse {
|
||||
foundNothing: boolean;
|
||||
nothingMessage?: string;
|
||||
materialsFound: Array<{ materialId: string; quantity: number }>;
|
||||
event: GoddessExploreCollectEventResult | null;
|
||||
}
|
||||
|
||||
interface GoddessExploreClaimableResponse {
|
||||
claimable: boolean;
|
||||
}
|
||||
|
||||
export type {
|
||||
AboutResponse,
|
||||
ApiError,
|
||||
@@ -578,12 +762,22 @@ export type {
|
||||
AuthResponse,
|
||||
BossChallengeRequest,
|
||||
BossChallengeResponse,
|
||||
BuyConsecrationUpgradeRequest,
|
||||
BuyConsecrationUpgradeResponse,
|
||||
BuyEchoUpgradeRequest,
|
||||
BuyEchoUpgradeResponse,
|
||||
BuyEnlightenmentUpgradeRequest,
|
||||
BuyEnlightenmentUpgradeResponse,
|
||||
BuyGoddessUpgradeRequest,
|
||||
BuyGoddessUpgradeResponse,
|
||||
BuyPrestigeUpgradeRequest,
|
||||
BuyPrestigeUpgradeResponse,
|
||||
ConsecrationRequest,
|
||||
ConsecrationResponse,
|
||||
CraftRecipeRequest,
|
||||
CraftRecipeResponse,
|
||||
EnlightenmentRequest,
|
||||
EnlightenmentResponse,
|
||||
ExploreClaimableResponse,
|
||||
ExploreCollectEventResult,
|
||||
ExploreCollectRequest,
|
||||
@@ -592,6 +786,16 @@ export type {
|
||||
ExploreStartResponse,
|
||||
ForceUnlocksResponse,
|
||||
GiteaRelease,
|
||||
GoddessBossChallengeRequest,
|
||||
GoddessBossChallengeResponse,
|
||||
GoddessCraftRequest,
|
||||
GoddessCraftResponse,
|
||||
GoddessExploreClaimableResponse,
|
||||
GoddessExploreCollectEventResult,
|
||||
GoddessExploreCollectRequest,
|
||||
GoddessExploreCollectResponse,
|
||||
GoddessExploreStartRequest,
|
||||
GoddessExploreStartResponse,
|
||||
LeaderboardCategory,
|
||||
LeaderboardEntry,
|
||||
LeaderboardResponse,
|
||||
|
||||
Reference in New Issue
Block a user