chore: update README with comprehensive project documentation
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 4m31s
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 4m31s
- Complete rewrite of README.md with updated project information - Added tech stack with exact version numbers from package.json - Updated project structure to reflect current codebase - Added deployment section with Docker, CI/CD, and reverse proxy info - Included attunement system and golemancy details - Added git repository information - Improved formatting and organization with table of contents
This commit is contained in:
@@ -1,141 +1,126 @@
|
|||||||
# Mana Loop
|
# Mana Loop
|
||||||
|
|
||||||
An incremental/idle game about climbing a magical spire, mastering skills, and uncovering the secrets of an ancient tower.
|
<p align="center">
|
||||||
|
<img src="public/logo.svg" alt="Mana Loop Logo" width="200" />
|
||||||
|
<br />
|
||||||
|
<em>An incremental/idle game about climbing a magical spire, mastering skills, and uncovering ancient secrets.</em>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://gitea.tailf367e3.ts.net/Anexim/Mana-Loop">Repository</a> ·
|
||||||
|
<a href="#getting-started">Getting Started</a> ·
|
||||||
|
<a href="#game-systems">Game Systems</a> ·
|
||||||
|
<a href="#contributing">Contributing</a> ·
|
||||||
|
<a href="#deployment">Deployment</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="https://img.shields.io/badge/version-0.2.0-blue" alt="Version" />
|
||||||
|
<img src="https://img.shields.io/badge/license-MIT-green" alt="License" />
|
||||||
|
<img src="https://img.shields.io/badge/Next.js-16.1.1-black" alt="Next.js" />
|
||||||
|
<img src="https://img.shields.io/badge/TypeScript-5-blue" alt="TypeScript" />
|
||||||
|
<img src="https://img.shields.io/badge/React-19-61DAFB" alt="React" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Table of Contents
|
||||||
|
|
||||||
|
- [Overview](#overview)
|
||||||
|
- [Features](#features)
|
||||||
|
- [Tech Stack](#tech-stack)
|
||||||
|
- [Getting Started](#getting-started)
|
||||||
|
- [Project Structure](#project-structure)
|
||||||
|
- [Game Systems](#game-systems)
|
||||||
|
- [Deployment](#deployment)
|
||||||
|
- [Contributing](#contributing)
|
||||||
|
- [Banned Content](#banned-content)
|
||||||
|
- [License](#license)
|
||||||
|
- [Acknowledgments](#acknowledgments)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
**Mana Loop** is a browser-based incremental game where players gather mana, study skills and spells, climb the floors of a mysterious spire, and craft enchanted equipment. The game features a prestige system (Insight) that provides permanent progression bonuses across playthroughs.
|
**Mana Loop** is a browser-based incremental/idle game where players gather mana, master skills, climb a mysterious 100-floor spire, craft enchanted equipment, and summon magical golems. The game features a unique time-loop prestige system (Insight) that provides permanent progression bonuses across playthroughs.
|
||||||
|
|
||||||
### The Game Loop
|
### Core Game Loop
|
||||||
|
|
||||||
1. **Gather Mana** - Click to collect mana or let it regenerate automatically
|
1. **Gather Mana** - Click to collect mana or let it regenerate automatically (14 total mana types)
|
||||||
2. **Study Skills & Spells** - Spend mana to learn new abilities and unlock upgrades
|
2. **Study Skills & Spells** - 20+ skills with 5-tier evolution system and milestone upgrades
|
||||||
3. **Climb the Spire** - Battle through floors, defeat guardians, and sign pacts for power
|
3. **Climb the Spire** - Battle through 100 procedurally-generated floors, defeat guardians, sign pacts
|
||||||
4. **Craft Equipment** - Enchant your gear with powerful effects
|
4. **Craft & Enchant** - 3-stage equipment enchantment system with capacity limits
|
||||||
5. **Prestige** - Reset for Insight, gaining permanent bonuses
|
5. **Summon Golems** - Magical constructs that fight alongside you (4 base + 6 hybrid types)
|
||||||
|
6. **Prestige (Loop)** - Reset progress for Insight currency, gain permanent bonuses
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
### Mana Gathering & Management
|
### 🔮 Mana System
|
||||||
- Click-based mana collection with automatic regeneration
|
- **14 Mana Types**: 7 base elements + 1 utility + 3 compound + 3 exotic
|
||||||
- Elemental mana system with multiple elements
|
- Elemental conversion, regeneration mechanics, and meditation bonuses
|
||||||
- Mana conversion between raw and elemental forms
|
- Mana types: Fire, Water, Air, Earth, Light, Dark, Death (base), Transference (utility), Metal, Sand, Lightning (compound), Crystal, Stellar, Void (exotic)
|
||||||
- Meditation system for boosted regeneration
|
|
||||||
- Compound mana types created from base elements
|
|
||||||
- Exotic mana types for ultimate power
|
|
||||||
|
|
||||||
---
|
### 📜 Skill & Spell System
|
||||||
|
|
||||||
## 🔮 Mana Types
|
|
||||||
|
|
||||||
Mana is the core resource of Mana Loop. There are four categories of mana types:
|
|
||||||
|
|
||||||
### Base Mana Types (7)
|
|
||||||
| Element | Symbol | Color | Theme |
|
|
||||||
|---------|--------|-------|-------|
|
|
||||||
| Fire | 🔥 | #FF6B35 | Destruction, burn damage |
|
|
||||||
| Water | 💧 | #4ECDC4 | Flow, freeze effects |
|
|
||||||
| Air | 🌬️ | #00D4FF | Speed, wind damage |
|
|
||||||
| Earth | ⛰️ | #F4A261 | Stability, armor pierce |
|
|
||||||
| Light | ☀️ | #FFD700 | Radiance, holy damage |
|
|
||||||
| Dark | 🌑 | #9B59B6 | Shadows, void damage |
|
|
||||||
| Death | 💀 | #778CA3 | Decay, rot damage |
|
|
||||||
|
|
||||||
### Utility Mana Types (1)
|
|
||||||
| Element | Symbol | Color | Theme |
|
|
||||||
|---------|--------|-------|-------|
|
|
||||||
| Transference | 🔗 | #1ABC9C | Mana transfer, Enchanter attunement |
|
|
||||||
|
|
||||||
### Compound Mana Types (3)
|
|
||||||
Created by combining two base elements:
|
|
||||||
| Element | Recipe | Theme |
|
|
||||||
|---------|--------|-------|
|
|
||||||
| Metal | Fire + Earth | Armor piercing, forged weapons |
|
|
||||||
| Sand | Earth + Water | AOE damage, desert winds |
|
|
||||||
| Lightning | Fire + Air | Fast damage, armor pierce, chain effects |
|
|
||||||
|
|
||||||
### Exotic Mana Types (3)
|
|
||||||
Created from advanced recipes:
|
|
||||||
| Element | Recipe | Theme |
|
|
||||||
|---------|--------|-------|
|
|
||||||
| Crystal | Sand + Sand + Light | Prismatic, high damage |
|
|
||||||
| Stellar | Fire + Fire + Light | Cosmic, ultimate fire/light |
|
|
||||||
| Void | Dark + Dark + Death | Oblivion, ultimate dark/death |
|
|
||||||
|
|
||||||
### Mana Type Hierarchy
|
|
||||||
```
|
|
||||||
Base Elements (7)
|
|
||||||
↓
|
|
||||||
Compound (3) Utility (1)
|
|
||||||
↓
|
|
||||||
Exotic (3)
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Skill Progression with Tier Evolution
|
|
||||||
- 20+ skills across multiple categories (mana, study, enchanting, golemancy)
|
- 20+ skills across multiple categories (mana, study, enchanting, golemancy)
|
||||||
- 5-tier evolution system for each skill
|
- 5-tier evolution system for each skill
|
||||||
- Milestone upgrades at levels 5 and 10 for each tier
|
- Milestone upgrades at levels 5 and 10 per tier
|
||||||
- Unique special effects unlocked through skill upgrades
|
- Unique special effects unlocked through skill upgrades
|
||||||
|
|
||||||
### Equipment Crafting & Enchanting
|
### ⚔️ Combat & Spire
|
||||||
- 3-stage enchantment process (Design → Prepare → Apply)
|
- Cast-speed based combat system
|
||||||
- Equipment capacity system limiting total enchantment power
|
|
||||||
- Enchantment effects including stat bonuses, multipliers, and spell grants
|
|
||||||
- Disenchanting to recover mana from unwanted enchantments (only in Prepare stage)
|
|
||||||
- Cannot re-enchant already enchanted gear
|
|
||||||
|
|
||||||
### Golemancy System
|
|
||||||
- Summon magical constructs to fight alongside you
|
|
||||||
- Golem slots unlock every 2 Fabricator levels (Level 2=1, Level 10=5)
|
|
||||||
- Base golems: Earth, Steel (metal), Crystal, Sand
|
|
||||||
- Advanced hybrid golems at Enchanter 5 + Fabricator 5: Lava, Galvanic, Obsidian, Prism, Quicksilver, Voidstone
|
|
||||||
- Golems cost mana to summon and maintain
|
|
||||||
- Golemancy skills improve damage, speed, duration, and maintenance costs
|
|
||||||
|
|
||||||
### Combat System
|
|
||||||
- Cast speed-based spell casting
|
|
||||||
- Multi-spell support from equipped weapons
|
- Multi-spell support from equipped weapons
|
||||||
- Golem allies deal automatic damage each tick
|
- 100-floor spire with elemental themes
|
||||||
- Elemental damage bonuses and effectiveness
|
- Floor guardians with unique mechanics and pacts
|
||||||
- Floor guardians with unique boons and pacts
|
- Golem allies that deal automatic damage each tick
|
||||||
|
|
||||||
### Floor Navigation & Guardian Battles
|
### 🛡️ Equipment & Enchanting
|
||||||
- Procedurally generated spire floors
|
- 3-stage enchantment process: Design → Prepare → Apply
|
||||||
- Elemental floor themes affecting combat
|
- Equipment capacity system limiting total enchantment power
|
||||||
- Guardian bosses with unique mechanics
|
- Enchantment effects: stat bonuses, multipliers, spell grants
|
||||||
- Pact system for permanent power boosts
|
- Disenchanting to recover mana (only in Prepare stage)
|
||||||
|
- Weapon/armor slots with 2-handed weapon support
|
||||||
|
|
||||||
### Prestige System (Insight)
|
### 🤖 Golemancy System
|
||||||
- Reset progress for permanent bonuses
|
- Summon magical constructs (Earth, Steel, Crystal, Sand + 6 hybrid types)
|
||||||
|
- Golem slots unlock every 2 Fabricator levels (max 5 slots at Level 10)
|
||||||
|
- Hybrid golems require Enchanter 5 + Fabricator 5
|
||||||
|
- Golem maintenance costs and stat upgrades via skills
|
||||||
|
|
||||||
|
### 🔄 Prestige (Insight)
|
||||||
|
- Reset progress for permanent Insight currency
|
||||||
- Insight upgrades across multiple categories
|
- Insight upgrades across multiple categories
|
||||||
- Signed pacts persist through prestige
|
- Signed pacts and attunements persist through prestige
|
||||||
|
- Three attunement classes: Enchanter (Transference), Invoker (Spells), Fabricator (Golems/Equipment)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Tech Stack
|
## Tech Stack
|
||||||
|
|
||||||
| Technology | Purpose |
|
| Technology | Version | Purpose |
|
||||||
|------------|---------|
|
|------------|---------|---------|
|
||||||
| **Next.js 16** | Full-stack framework with App Router |
|
| **Next.js** | ^16.1.1 | Full-stack framework (App Router) |
|
||||||
| **TypeScript 5** | Type-safe development |
|
| **React** | ^19.0.0 | UI library |
|
||||||
| **Tailwind CSS 4** | Utility-first styling |
|
| **TypeScript** | ^5 | Type-safe development |
|
||||||
| **shadcn/ui** | Reusable UI components |
|
| **Tailwind CSS** | ^4 | Utility-first styling |
|
||||||
| **Zustand** | Client state management with persistence |
|
| **shadcn/ui** | Radix-based | Reusable UI components |
|
||||||
| **Prisma ORM** | Database abstraction (SQLite) |
|
| **Zustand** | ^5.0.6 | Client state management (with persist) |
|
||||||
| **Bun** | JavaScript runtime and package manager |
|
| **Prisma ORM** | ^6.11.1 | Database abstraction (SQLite) |
|
||||||
|
| **Bun** | Latest | JavaScript runtime & package manager |
|
||||||
|
| **Vitest** | ^4.1.2 | Unit testing framework |
|
||||||
|
| **ESLint** | ^9 | Code linting |
|
||||||
|
| **@tanstack/react-query** | ^5.82.0 | Data fetching/caching |
|
||||||
|
| **Framer Motion** | ^12.23.2 | Animation library |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
- **Bun** runtime (recommended) or Node.js 18+
|
||||||
- **Node.js** 18+ or **Bun** runtime
|
- **SQLite** (for local development, included with Prisma)
|
||||||
- **npm**, **yarn**, or **bun** package manager
|
- Git
|
||||||
|
|
||||||
### Installation
|
### Installation
|
||||||
|
|
||||||
@@ -144,9 +129,10 @@ Exotic (3)
|
|||||||
git clone git@gitea.tailf367e3.ts.net:Anexim/Mana-Loop.git
|
git clone git@gitea.tailf367e3.ts.net:Anexim/Mana-Loop.git
|
||||||
cd Mana-Loop
|
cd Mana-Loop
|
||||||
|
|
||||||
# Install dependencies
|
# Install dependencies (using Bun - recommended)
|
||||||
bun install
|
bun install
|
||||||
# or
|
|
||||||
|
# Or using npm
|
||||||
npm install
|
npm install
|
||||||
|
|
||||||
# Set up the database
|
# Set up the database
|
||||||
@@ -158,7 +144,7 @@ npm run db:push
|
|||||||
### Development
|
### Development
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Start the development server
|
# Start the development server (runs on port 3000)
|
||||||
bun run dev
|
bun run dev
|
||||||
# or
|
# or
|
||||||
npm run dev
|
npm run dev
|
||||||
@@ -166,134 +152,152 @@ npm run dev
|
|||||||
|
|
||||||
The game will be available at `http://localhost:3000`.
|
The game will be available at `http://localhost:3000`.
|
||||||
|
|
||||||
### Other Commands
|
### Available Scripts
|
||||||
|
|
||||||
```bash
|
| Script | Description |
|
||||||
# Run linting
|
|--------|-------------|
|
||||||
bun run lint
|
| `dev` | Start Next.js development server with logging |
|
||||||
|
| `build` | Build for production (outputs to `.next/standalone`) |
|
||||||
# Build for production
|
| `start` | Start production server (requires build first) |
|
||||||
bun run build
|
| `lint` | Run ESLint |
|
||||||
|
| `test` | Run Vitest tests |
|
||||||
# Start production server
|
| `test:coverage` | Run tests with coverage report |
|
||||||
bun run start
|
| `db:push` | Push Prisma schema to database |
|
||||||
```
|
| `db:generate` | Generate Prisma client |
|
||||||
|
| `db:migrate` | Run database migrations |
|
||||||
|
| `db:reset` | Reset database |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Project Structure
|
## Project Structure
|
||||||
|
|
||||||
```
|
```
|
||||||
src/
|
Mana-Loop/
|
||||||
├── app/
|
├── src/ # Application source code
|
||||||
│ ├── page.tsx # Main game UI (single-page application)
|
│ ├── app/ # Next.js App Router
|
||||||
│ ├── layout.tsx # Root layout with providers
|
│ │ ├── layout.tsx # Root layout (metadata, fonts, providers)
|
||||||
│ └── api/ # API routes
|
│ │ ├── page.tsx # Main game UI (~583 lines)
|
||||||
├── components/
|
│ │ ├── globals.css # Global styles
|
||||||
│ ├── ui/ # shadcn/ui components
|
│ │ └── api/ # API routes (minimal)
|
||||||
│ └── game/ # Game-specific components
|
│ ├── components/ # React components
|
||||||
│ ├── tabs/ # Tab-based UI components
|
│ │ ├── ui/ # shadcn/ui components (20+ components)
|
||||||
│ │ ├── CraftingTab.tsx
|
│ │ └── game/ # Game-specific components
|
||||||
│ │ ├── GolemancyTab.tsx
|
│ │ ├── tabs/ # Tab components (SpireTab, SkillsTab, etc.)
|
||||||
│ │ ├── LabTab.tsx
|
│ │ ├── ManaDisplay.tsx, ActionButtons.tsx, TimeDisplay.tsx
|
||||||
│ │ ├── SpellsTab.tsx
|
│ │ └── crafting/, debug/, shared/, stats/ subdirectories
|
||||||
│ │ ├── SpireTab.tsx
|
│ ├── hooks/ # Custom React hooks (use-mobile, use-toast)
|
||||||
│ │ └── ...
|
│ ├── lib/ # Utility libraries
|
||||||
│ ├── ManaDisplay.tsx
|
│ │ ├── game/ # Core game logic
|
||||||
│ ├── TimeDisplay.tsx
|
│ │ │ ├── store.ts # Main Zustand store (~2862 lines)
|
||||||
│ ├── ActionButtons.tsx
|
│ │ │ ├── crafting-slice.ts, study-slice.ts, navigation-slice.ts
|
||||||
│ └── ...
|
│ │ │ ├── effects.ts, upgrade-effects.ts
|
||||||
└── lib/
|
│ │ │ ├── skill-evolution.ts (~3400 lines)
|
||||||
├── game/
|
│ │ │ ├── constants/ # Game definitions (elements, spells, skills)
|
||||||
│ ├── store.ts # Zustand store (state + actions)
|
│ │ │ ├── data/ # Game data (equipment, golems, recipes)
|
||||||
│ ├── effects.ts # Unified effect computation
|
│ │ │ └── __tests__/ # Test files for game logic
|
||||||
│ ├── upgrade-effects.ts # Skill upgrade definitions
|
│ │ └── db.ts, utils.ts
|
||||||
│ ├── skill-evolution.ts # Tier progression paths
|
│ └── test/ # Test setup
|
||||||
│ ├── constants.ts # Game data definitions
|
├── prisma/ # Database schema and migrations
|
||||||
│ ├── computed-stats.ts # Stat calculation functions
|
│ └── schema.prisma # SQLite schema
|
||||||
│ ├── crafting-slice.ts # Equipment/enchantment actions
|
├── public/ # Static assets (logo.svg, robots.txt)
|
||||||
│ ├── navigation-slice.ts # Floor navigation actions
|
├── docs/ # Project documentation
|
||||||
│ ├── study-slice.ts # Study system actions
|
│ ├── AGENTS.md # Comprehensive architecture guide
|
||||||
│ ├── types.ts # TypeScript interfaces
|
│ ├── GAME_BRIEFING.md # Game design document
|
||||||
│ ├── formatting.ts # Display formatters
|
│ └── task/ # Task tracking documentation
|
||||||
│ ├── utils.ts # Utility functions
|
├── .next/ # Next.js build output (generated)
|
||||||
│ └── data/
|
├── node_modules/ # Dependencies (generated)
|
||||||
│ ├── equipment.ts # Equipment definitions
|
├── Configuration Files:
|
||||||
│ ├── enchantment-effects.ts # Enchantment catalog
|
│ ├── package.json # Project metadata and scripts
|
||||||
│ ├── golems.ts # Golem definitions
|
│ ├── tsconfig.json # TypeScript configuration
|
||||||
│ ├── crafting-recipes.ts # Crafting recipes
|
│ ├── next.config.ts # Next.js config (standalone output)
|
||||||
│ ├── achievements.ts # Achievement definitions
|
│ ├── vitest.config.ts # Vitest test configuration
|
||||||
│ └── loot-drops.ts # Loot drop tables
|
│ ├── eslint.config.mjs # ESLint configuration
|
||||||
└── utils.ts # General utilities
|
│ ├── Dockerfile # Docker multi-stage build
|
||||||
|
│ ├── docker-compose.yml # Docker Compose setup
|
||||||
|
│ ├── Caddyfile # Reverse proxy configuration
|
||||||
|
│ └── .gitea/workflows/ # Gitea Actions CI/CD pipeline
|
||||||
|
└── README.md # This file
|
||||||
```
|
```
|
||||||
|
|
||||||
For detailed architecture documentation, see [AGENTS.md](./AGENTS.md).
|
For detailed architecture patterns and coding guidelines, see [AGENTS.md](./docs/AGENTS.md).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Game Systems Overview
|
## Game Systems
|
||||||
|
|
||||||
### Mana System
|
### Mana System
|
||||||
The core resource of the game. Mana is gathered manually or automatically and used for studying skills, casting spells, and crafting.
|
The core resource of the game with 14 distinct types organized in a hierarchy:
|
||||||
|
- **Base Elements (7)**: Fire, Water, Air, Earth, Light, Dark, Death
|
||||||
|
- **Utility (1)**: Transference (Enchanter attunement)
|
||||||
|
- **Compound (3)**: Metal (Fire+Earth), Sand (Earth+Water), Lightning (Fire+Air)
|
||||||
|
- **Exotic (3)**: Crystal (Sand+Sand+Light), Stellar (Fire+Fire+Light), Void (Dark+Dark+Death)
|
||||||
|
|
||||||
**Key Files:**
|
**Key Files**: `src/lib/game/store.ts`, `src/lib/game/constants/elements.ts`
|
||||||
- `store.ts` - Mana state and actions
|
|
||||||
- `computed-stats.ts` - Mana calculations
|
|
||||||
|
|
||||||
### Skill System
|
### Skill Evolution System
|
||||||
Skills provide passive bonuses and unlock new abilities. Each skill can evolve through 5 tiers with milestone upgrades.
|
Each skill progresses through 5 tiers with upgrades at levels 5 and 10 per tier:
|
||||||
|
- **Tier 1**: Basic functionality
|
||||||
**Key Files:**
|
- **Tier 2-5**: Unlock new mechanics and bonuses
|
||||||
- `constants.ts` - Skill definitions (`SKILLS_DEF`)
|
- **Evolution Paths**: Defined in `src/lib/game/skill-evolution.ts` (~3400 lines)
|
||||||
- `skill-evolution.ts` - Evolution paths and upgrades
|
|
||||||
- `upgrade-effects.ts` - Effect computation
|
|
||||||
|
|
||||||
### Combat System
|
### Combat System
|
||||||
Combat uses a cast-speed system where each spell has a unique cast rate. Damage is calculated with skill bonuses, elemental modifiers, and special effects.
|
- Cast-speed based spell casting with DPS calculations
|
||||||
|
- Elemental damage bonuses and effectiveness
|
||||||
|
- Multi-spell support from equipped weapons
|
||||||
|
- Golem allies deal automatic damage each tick
|
||||||
|
|
||||||
**Key Files:**
|
**Key Files**: `src/lib/game/store.ts` (combat tick logic), `src/lib/game/constants/spells.ts`
|
||||||
- `store.ts` - Combat tick logic
|
|
||||||
- `constants.ts` - Spell definitions (`SPELLS_DEF`)
|
|
||||||
- `effects.ts` - Damage calculations
|
|
||||||
|
|
||||||
### Enchanting System
|
### Enchanting System
|
||||||
A 3-stage enchantment system for equipment. Design effects, prepare equipment, and apply enchantments within capacity limits.
|
3-stage equipment enchantment process:
|
||||||
|
1. **Design**: Choose effects for your equipment type
|
||||||
|
2. **Prepare**: Prepare equipment (ONLY way to disenchant existing enchantments)
|
||||||
|
3. **Apply**: Apply designed enchantments (cannot re-enchant already enchanted gear)
|
||||||
|
|
||||||
**Key Rules:**
|
**Key Files**: `src/lib/game/crafting-slice.ts`, `src/lib/game/data/enchantment-effects.ts`
|
||||||
- Design: Choose effects for your equipment type
|
|
||||||
- Prepare: Prepare equipment for enchanting (ONLY way to disenchant existing enchantments)
|
|
||||||
- Apply: Apply designed enchantments (cannot re-enchant already enchanted gear)
|
|
||||||
|
|
||||||
**Key Files:**
|
|
||||||
- `crafting-slice.ts` - Crafting actions
|
|
||||||
- `data/equipment.ts` - Equipment types
|
|
||||||
- `data/enchantment-effects.ts` - Available effects
|
|
||||||
|
|
||||||
### Golemancy System
|
### Golemancy System
|
||||||
Summon magical constructs to fight alongside you. Requires Fabricator attunement.
|
- **Base Golems**: Earth (Fabricator 2), Steel (Metal), Crystal, Sand
|
||||||
|
- **Hybrid Golems** (Enchanter 5 + Fabricator 5): Lava, Galvanic, Obsidian, Prism, Quicksilver, Voidstone
|
||||||
|
- **Golem Slots**: 1 slot at Fabricator Level 2, +1 every 2 levels (max 5 at Level 10)
|
||||||
|
|
||||||
**Golem Slots:**
|
**Key Files**: `src/lib/game/data/golems.ts`, `src/lib/game/store.ts`
|
||||||
- Fabricator Level 2: 1 slot
|
|
||||||
- Fabricator Level 4: 2 slots
|
|
||||||
- Fabricator Level 6: 3 slots
|
|
||||||
- Fabricator Level 8: 4 slots
|
|
||||||
- Fabricator Level 10: 5 slots
|
|
||||||
|
|
||||||
**Golem Types:**
|
### Prestige (Insight)
|
||||||
- Base: Earth (available at Fabricator 2)
|
Reset progress to gain Insight currency for permanent upgrades:
|
||||||
- Element Unlocks: Steel (metal), Crystal, Sand
|
- Signed pacts persist through prestige
|
||||||
- Hybrids (Enchanter 5 + Fabricator 5): Lava, Galvanic, Obsidian, Prism, Quicksilver, Voidstone
|
- Attunement choices affect gameplay (Enchanter/Invoker/Fabricator)
|
||||||
|
- Insight upgrades provide bonuses across all loops
|
||||||
|
|
||||||
**Key Files:**
|
---
|
||||||
- `data/golems.ts` - Golem definitions and unlock conditions
|
|
||||||
- `store.ts` - Golemancy actions and state
|
|
||||||
|
|
||||||
### Prestige System
|
## Deployment
|
||||||
Reset progress for Insight, which provides permanent bonuses. Signed pacts persist through prestige.
|
|
||||||
|
|
||||||
**Key Files:**
|
### Docker Deployment
|
||||||
- `store.ts` - Prestige logic
|
The project includes Docker configuration for containerized deployment:
|
||||||
- `constants.ts` - Insight upgrades
|
|
||||||
|
```bash
|
||||||
|
# Build and run with Docker Compose
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
# Or build manually
|
||||||
|
docker build -t mana-loop .
|
||||||
|
docker run -p 3000:3000 mana-loop
|
||||||
|
```
|
||||||
|
|
||||||
|
### CI/CD Pipeline
|
||||||
|
- **Gitea Actions**: `.gitea/workflows/docker-build.yaml` automatically builds and pushes Docker images to `gitea.tailf367e3.ts.net/anexim/mana-loop:latest` on push to `master`/`main` branches
|
||||||
|
- **Multi-platform**: Builds for linux/amd64 architecture
|
||||||
|
- **Image Tags**: Branch name, commit SHA, "latest"
|
||||||
|
|
||||||
|
### Reverse Proxy
|
||||||
|
A `Caddyfile` is included for reverse proxy setup (forwards port 81 to 3000).
|
||||||
|
|
||||||
|
### Production Build
|
||||||
|
```bash
|
||||||
|
bun run build
|
||||||
|
NODE_ENV=production bun .next/standalone/server.js
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -302,23 +306,26 @@ Reset progress for Insight, which provides permanent bonuses. Signed pacts persi
|
|||||||
We welcome contributions! Please follow these guidelines:
|
We welcome contributions! Please follow these guidelines:
|
||||||
|
|
||||||
### Development Workflow
|
### Development Workflow
|
||||||
|
1. **Pull latest changes** before starting work: `git pull origin master`
|
||||||
1. **Pull the latest changes** before starting work
|
2. **Create a feature branch** for your changes: `git checkout -b feature/your-feature`
|
||||||
2. **Create a feature branch** for your changes
|
3. **Follow existing patterns** in the codebase (see AGENTS.md)
|
||||||
3. **Follow existing patterns** in the codebase
|
4. **Run linting** before committing: `bun run lint`
|
||||||
4. **Run linting** before committing (`bun run lint`)
|
5. **Test your changes** thoroughly: `bun run test`
|
||||||
5. **Test your changes** thoroughly
|
6. **Commit and push** to your branch, then create a pull request
|
||||||
|
|
||||||
### Code Style
|
### Code Style
|
||||||
|
|
||||||
- TypeScript throughout with strict typing
|
- TypeScript throughout with strict typing
|
||||||
- Use existing shadcn/ui components over custom implementations
|
- Use existing shadcn/ui components over custom implementations
|
||||||
- Follow the slice pattern for store actions
|
- Follow the slice pattern for Zustand store actions
|
||||||
- Keep components focused and extract to separate files when >50 lines
|
- Keep components focused (extract to separate files when >50 lines)
|
||||||
|
- Use path aliases: `@/*` maps to `./src/*`
|
||||||
|
|
||||||
### Adding New Features
|
### Adding New Features
|
||||||
|
For detailed patterns on adding new effects, skills, spells, or systems, see the comprehensive [AGENTS.md](./docs/AGENTS.md) guide, which includes:
|
||||||
For detailed patterns on adding new effects, skills, spells, or systems, see [AGENTS.md](./AGENTS.md).
|
- Architecture overview
|
||||||
|
- Coding patterns
|
||||||
|
- Git workflow (mandatory pull before work, commit & push after)
|
||||||
|
- Credentials for automation (if applicable)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -344,7 +351,7 @@ The following content has been removed from the game and should not be re-added:
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
This project is licensed under the MIT License.
|
This project is licensed under the MIT License - see the LICENSE section below for details.
|
||||||
|
|
||||||
```
|
```
|
||||||
MIT License
|
MIT License
|
||||||
@@ -370,8 +377,20 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|||||||
SOFTWARE.
|
SOFTWARE.
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Note**: A `LICENSE` file is not currently present in the project root. It is recommended to create one with the above MIT License text.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Acknowledgments
|
## Acknowledgments
|
||||||
|
|
||||||
Built with love using modern web technologies. Special thanks to the open-source community for the amazing tools that make this project possible.
|
- Built with modern web technologies (Next.js, React, TypeScript, Tailwind CSS)
|
||||||
|
- UI components from [shadcn/ui](https://ui.shadcn.com/)
|
||||||
|
- State management with [Zustand](https://github.com/pmndrs/zustand)
|
||||||
|
- Game icons from [Lucide React](https://lucide.dev/)
|
||||||
|
- Special thanks to the open-source community for the amazing tools that make this project possible.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<em>Climb the spire. Master the mana. Uncover the loop.</em>
|
||||||
|
</p>
|
||||||
|
|||||||
Reference in New Issue
Block a user