Free game against rival dungeon masters (green, blue) and/or the humans

- One opponent on maps up to 128x128, two on bigger maps; with a chance of one in two one of
  them is the humans' gate instead of a rival master
- Simplified rival masters (rival.rs): own soul core and dungeon (lair, treasury to loot) that
  grows ring by ring, creatures appear and get stronger over time, guard the dungeon and attack
  in groups - the player, the other master or the humans' gate; a fallen core puts the master
  out and frees its ground
- The humans attack everybody: waves now and then march on a rival master
- Sides for units: all other sides are enemies; towers and contested ground follow them; the
  hand cannot pick up rival creatures; the flag next to a rival core attacks it
- Difficulty (easy / medium / hard) in the New Game dialog
- Colours: green and blue floors, cores, unit rings, minimap, HUD bars of the rival cores
- Victory in free games: every rival core and the gate (if any) destroyed
- Tests for setups, growth and attacks, elimination and victory, humans against rivals

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-03 14:11:23 +01:00
1 parent 52c4d1caf8
commit dd16c684e5
11 files changed
+771 -38

No files matched your search

+22
View File
@@ -577,3 +577,25 @@ job.make_bed = Setting up its bed
job.fetch_wage = Fetching its wage
msg.payday_walk = Payday! {0} creatures fetch their wages from the treasury ({1} gold incl. training).
msg.wage_unpaid = Your {0} found no gold for its wage and is furious!
owner.rival1 = held by the green master
owner.rival2 = held by the blue master
# rival masters (free game)
newgame.difficulty = Opponents
diff.0 = Easy
diff.1 = Medium
diff.2 = Hard
newgame.opponents1 = One opponent: a rival dungeon master or - by chance - the humans' gate.
newgame.opponents2 = Two opponents: two rival masters, or - by chance - one master and the humans' gate.
msg.welcome_rivals = A rival dungeon master is near ({0} in all): destroy every rival soul core to win.
msg.welcome_both = A rival master and the humans' gate oppose you: destroy the rival soul core and the gate.
msg.welcome_humans = The humans' gate opposes you: destroy it.
msg.rival1_attack = The green master sends {0} creatures against you!
msg.rival2_attack = The blue master sends {0} creatures against you!
msg.rival1_out = The green master is defeated - his soul core has shattered!
msg.rival2_out = The blue master is defeated - his soul core has shattered!
msg.rival_unit_slain = A {0} of a rival master falls! +{1} gold.
msg.wave_on_rival1 = Wave {0}: {1} heroes march on the green master.
msg.wave_on_rival2 = Wave {0}: {1} heroes march on the blue master.
hud.rival1 = Green
hud.rival2 = Blue