Files
JAVA-RPG/README.md
T
2026-05-11 13:08:48 +03:30

157 lines
5.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Java RPG
A turn-based RPG built in Java where you choose your hero, battle monsters across treacherous locations, collect keys from fallen enemies, and ultimately face the Dragon boss.
---
## Overview
Three heroes. Three locations. Three enemies standing between you and the Dragon.
Defeat a Goblin, a Skeleton, and a Vampire to collect their keys — only then can you challenge the Dragon and claim victory. Each hero plays completely differently, each enemy has unique mechanics, and every fight demands smart resource management.
### Features
- **3 playable characters** — Assassin, Knight, Wizard — each with unique abilities, weapons, and armor mechanics
- **4 enemies** — Goblin, Skeleton, Vampire, and the Dragon boss
- **3 locations** — Jungle, China, Iran — each with different enemy pools
- **Key collection system** — defeat one of each enemy type to unlock the Dragon
- **Rich combat** — light attacks, heavy attacks, defend, heal, special abilities, and flasks
- **Leveling system** — gain XP from victories, level up to increase max HP and MP
- **Special enemy mechanics** — Skeleton revives, Vampire lifesteals, Dragon charges fire breath
---
## How to Run
### Requirements
- Java 17 or higher
- Any Java IDE (IntelliJ IDEA, Eclipse, VS Code) or the command line
### Run from an IDE
1. Clone or download the repository
2. Open the project in your IDE
3. Run `Main.java`
---
## Gameplay Guide
### Choosing your hero
At the start you'll pick one of three characters. Your choice determines your weapon, armor type, flask, and special ability.
### The goal
Explore locations, fight enemies, and collect a key from each enemy type (Goblin, Skeleton, Vampire). Once all three keys are in hand, you'll be offered the chance to challenge the Dragon. Win that fight — and the game is yours.
### Combat actions
Each turn you choose one of six actions:
| # | Action | Description |
|---|--------|-------------|
| 1 | **Light attack** | Always free, no MP cost. May trigger a weapon bonus |
| 2 | **Heavy attack** | Costs MP. Deals boosted damage |
| 3 | **Defend** | Costs MP. Reduces incoming damage this turn |
| 4 | **Heal** | Costs MP. Restores 10 HP |
| 5 | **Special ability** | Costs MP. Unique per character |
| 6 | **Flask** | Free. Uses a consumable charge |
If an action fails due to insufficient MP, you'll be prompted to choose again — your turn is not wasted.
### Locations
| Location | Enemies |
|----------|---------|
| Jungle | Goblin, Skeleton, Vampire |
| China | Goblin, Skeleton |
| Iran | Skeleton, Vampire |
The enemy you face is chosen randomly from the location's pool each visit.
---
## Heroes
### Assassin
*Weapon: Dagger (8 dmg) — Flask: Health Flask (10 HP × 3)*
A high-risk, high-reward fighter. Most actions cost MP, but the special ability unlocks a devastating free strike.
- **Light attack** — 30% chance to critical hit for 1.5x damage
- **Heavy attack** — 1.4x damage, costs MP. If shadow step is active: 1.8x and free
- **Defend** — costs 12 MP, blocks with 70% damage reduction
- **Special ability** — costs 25 MP, activates Shadow Step: enemy skips their next turn, and your next heavy attack becomes 1.8x and free
- **Armor passive** — when below 40% HP, all incoming damage is halved
### Knight
*Weapon: Sword (12 dmg) — Flask: Mana Flask (20 MP × 3)*
A durable tank who punishes attackers. High defend rate and reliable damage output.
- **Light attack** — every 3rd swing triggers a Charged Strike for 1.4x damage
- **Heavy attack** — 1.5x damage, costs MP
- **Defend** — costs 16 MP, blocks with 90% damage reduction
- **Special ability** — costs 30 MP, delivers a 2x damage strike
- **Armor passive** — reflects 15% of received damage back at the attacker
### Wizard
*Weapon: Bow (15 dmg) — Flask: Mana Flask (30 MP × 3)*
A glass cannon with the highest damage ceiling and a unique mana-shield defense.
- **Light attack** — every 4th shot triggers a Charged Strike: fires twice at 1.4x
- **Heavy attack** — 1.3x damage, costs MP
- **Defend** — costs 15 MP, blocks with 60% damage reduction
- **Special ability** — costs 20 MP, fires an empowered 1.6x shot and restores 10 HP
- **Armor passive** — every 10 MP absorbs 1 incoming damage (as long as armor holds)
---
## Enemies
| Enemy | HP | MP | Special |
|-------|----|----|---------|
| Goblin | 80 | 100 | Always attacks at 1.8x multiplier |
| Skeleton | 70 | 100 | Revives at 35 HP the first time it dies |
| Vampire | 90 | 90 | Lifesteals 30% of damage dealt each attack |
| Dragon | 200 | 150 | Every 3rd attack is an unavoidable Fire Breath at 2x damage |
---
## Architecture
The project is structured around a clean inheritance hierarchy:
```
Entity (interface)
├── Player (abstract)
│ ├── Assassin
│ ├── Knight
│ └── Wizard
└── Enemy (abstract)
├── Goblin
├── Skeleton
├── Vampire
└── Dragon
Item (interface)
├── Weapon (abstract)
│ ├── Sword
│ ├── Bow
│ └── Dagger
├── Armor (abstract)
│ ├── KnightArmor
│ ├── WizardArmor
│ └── AssassinArmor
└── Consumable (abstract)
├── Flask
└── RepairKit
Location
Game (orchestrator)
```