고양이 마을 1단계: 개체 생성·배치·틱 생산·수동 회수
- 품종 8종·패시브·랜덤 개체 생성 (기획서 4.2, 5장) - 부두/벌목장 배치, 적성 0 배치 불가, 적성 비선형 작업량 (4.4) - rAF+델타 타임 엔진(모듈 싱글턴), UI 300ms 동기화 (기술 메모) - 수동 회수(운반 수레 전), localStorage 저장(version 필드) - 회관 Lv1 수용 3마리, 입양 버튼 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
이 커밋은 다음에 포함됨:
@@ -0,0 +1,63 @@
|
||||
import type { AptitudeKey } from "./types";
|
||||
|
||||
// 적성 레벨별 초당 작업량 (기획서 4.4) — BASE_RATE로 전체 속도 스케일 조정
|
||||
export const APTITUDE_RATE = [0, 1.0, 2.2, 4.8, 10.0, 21.0, 45.0];
|
||||
export const BASE_RATE = 0.2;
|
||||
|
||||
export const APTITUDE_LABEL: Record<AptitudeKey, string> = {
|
||||
fishing: "낚시",
|
||||
logging: "벌목",
|
||||
mining: "채굴",
|
||||
foraging: "채집",
|
||||
cooking: "요리",
|
||||
crafting: "제작",
|
||||
grooming: "손질",
|
||||
};
|
||||
|
||||
export interface BreedDef {
|
||||
key: string;
|
||||
name: string;
|
||||
emoji: string;
|
||||
rarity: number; // 별 개수
|
||||
weight: number; // 추첨 가중치
|
||||
bias: AptitudeKey[]; // 적성 편향
|
||||
aptitudeCap: number;
|
||||
appetiteMod: number;
|
||||
}
|
||||
|
||||
// 기획서 4.2 품종표
|
||||
export const BREEDS: BreedDef[] = [
|
||||
{ key: "korean_shorthair", name: "코리안 숏헤어", emoji: "🐱", rarity: 1, weight: 35, bias: [], aptitudeCap: 5, appetiteMod: -1 },
|
||||
{ key: "munchkin", name: "먼치킨", emoji: "😺", rarity: 1, weight: 25, bias: ["foraging", "grooming"], aptitudeCap: 5, appetiteMod: 0 },
|
||||
{ key: "norwegian_forest", name: "노르웨이 숲", emoji: "🐈", rarity: 2, weight: 15, bias: ["logging", "mining"], aptitudeCap: 5, appetiteMod: 1 },
|
||||
{ key: "bengal", name: "뱅갈", emoji: "🐆", rarity: 2, weight: 10, bias: ["fishing", "foraging"], aptitudeCap: 5, appetiteMod: 0 },
|
||||
{ key: "russian_blue", name: "러시안 블루", emoji: "🐈⬛", rarity: 2, weight: 8, bias: ["crafting", "cooking"], aptitudeCap: 5, appetiteMod: 0 },
|
||||
{ key: "persian", name: "페르시안", emoji: "😸", rarity: 3, weight: 4, bias: ["cooking", "grooming"], aptitudeCap: 5, appetiteMod: 0 },
|
||||
{ key: "sphynx", name: "스핑크스", emoji: "🐯", rarity: 3, weight: 2, bias: ["crafting", "mining"], aptitudeCap: 5, appetiteMod: 0 },
|
||||
{ key: "maine_coon", name: "메인쿤", emoji: "🦁", rarity: 4, weight: 1, bias: ["logging", "mining"], aptitudeCap: 6, appetiteMod: 2 },
|
||||
];
|
||||
|
||||
export interface PassiveDef {
|
||||
key: string;
|
||||
name: string;
|
||||
kind: "positive" | "negative" | "tradeoff";
|
||||
desc: string;
|
||||
speedMul: number; // 1단계에서는 작업 속도 효과만 적용
|
||||
}
|
||||
|
||||
// 기획서 5장 중 1단계에서 의미 있는 패시브 위주
|
||||
export const PASSIVES: PassiveDef[] = [
|
||||
{ key: "diligent", name: "부지런함", kind: "positive", desc: "작업 속도 +25%", speedMul: 1.25 },
|
||||
{ key: "sturdy", name: "튼튼함", kind: "positive", desc: "체력 소모 -30%", speedMul: 1 },
|
||||
{ key: "small_eater", name: "소식가", kind: "positive", desc: "식량 소모 -30%", speedMul: 1 },
|
||||
{ key: "lucky", name: "복덩이", kind: "positive", desc: "확률적으로 냥코인 획득", speedMul: 1 },
|
||||
{ key: "lazy", name: "게으름뱅이", kind: "negative", desc: "작업 속도 -30%", speedMul: 0.7 },
|
||||
{ key: "big_eater", name: "대식가", kind: "negative", desc: "식량 소모 +50%", speedMul: 1 },
|
||||
{ key: "workaholic", name: "일중독", kind: "tradeoff", desc: "작업 속도 +60%, 행복도 감소 +40%", speedMul: 1.6 },
|
||||
];
|
||||
|
||||
export const CAT_NAMES = [
|
||||
"치즈", "나비", "콩이", "보리", "두부", "마루", "모찌", "호두",
|
||||
"감자", "앙꼬", "밤이", "구름", "초코", "우유", "깨비", "솜이",
|
||||
"달이", "별이", "쿠키", "만두", "생강", "참깨", "누룽지", "조약돌",
|
||||
];
|
||||
새 이슈에서 참조
사용자 차단