Pedestal with Excalibur

Artifact Emporium

An isometric autochess-style shop game built with Python and Pygame. Browse a finite pool of procedurally-drawn artifacts, mine ore for gold, and manage your collection.

Python 3.12 Pygame 2.6 Procedural Art
45
Unique Items
17
Sprite Types
5
Rarity Tiers
~600
Lines of Code
Item showcase

Legendary · Epic · Rare · Uncommon · Common

Rarity Tiers

Common
Common
8 copies · 2-12g
Uncommon
Uncommon
6 copies · 13-23g
Rare
Rare
4 copies · 24-34g
Epic
Epic
3 copies · 36-50g
Legendary
Legendary
1 copy · 60-80g

Game Mechanics

Finite Item Pool

Items are drawn from a shared pool. Rarity determines copies available. Buying depletes the pool; refreshing returns unsold items and reshuffles. Strategy emerges from scarcity.

Ore Mining

A rock pile provides supplemental income: 1-3 gold per mine with a cooldown. 15 charges that visually deplete. 3 charges restock on each shop refresh.

🔨
Salvage Hammer

A useable item that converts any inventory item into 75% of its gold value. Click the hammer, then click a target. Both are consumed. Enables gold recovery from bad purchases.

🎒
Extensible Effect System

Items carry optional effect dicts with trigger types: on_buy (consumed at purchase) and use_on_target (activated from inventory). New effects need only a template and a handler.

Sprite Gallery

All sprites are procedurally generated at 32×32 using pygame.draw primitives. Shown here at 4× scale. Rarity tints the accent colour.

Project Structure

main.py — Game Loop

Event handling, game state, effect dispatch, and targeting mode. Contains Game, Notification, and Particle classes.

items.py — Items & Sprites

45 item templates with the extensible effect system. 17 procedural sprite draw functions with lazy caching by (kind, rarity).

renderer.py

All drawing: isometric floor, pedestals, items, ore pile, UI panels, tooltips, particles, targeting visuals.

shop.py

Finite pool management. Creates items from templates, handles display slots, draw, buy, and refresh.

config.py

All constants: screen dimensions, colours, rarity definitions, pool sizes, layout positions, ore settings.

Controls

1-5
Quick Buy
R
Refresh Shop
Click
Buy / Mine / Use
ESC
Cancel / Quit

Run It

$ pip install pygame
$ python main.py