Zones instead of road timers: journeys, flights, meeting stone
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
7150b2f89c
commit
0e396ee5d4
7 changed files with 363 additions and 230 deletions
129
content.py
129
content.py
|
|
@ -275,6 +275,9 @@ MOBS = {
|
|||
"princess": {"name": "Princess", "lv": (9, 9), "kind": "beast", "hp": 2.5, "dmg": 1.3, "rare": True,
|
||||
"junk": "Princess's Collar"},
|
||||
"porcine_entourage": {"name": "Porcine Entourage", "lv": (6, 7), "kind": "beast", "junk": "Chunk of Boar Meat"},
|
||||
"young_wolf_pack": {"name": "Prowling Wolf", "lv": (9, 10), "kind": "beast", "hp": 0.7, "junk": "Wolf Fang"},
|
||||
"mother_fang": {"name": "Mother Fang", "lv": (10, 10), "kind": "beast", "hp": 2.5, "dmg": 1.3, "rare": True,
|
||||
"junk": "Silky Spider Leg"},
|
||||
"riverpaw_gnoll": {"name": "Riverpaw Gnoll", "lv": (9, 10), "kind": "humanoid", "junk": "Gnoll Tooth"},
|
||||
"riverpaw_mystic": {"name": "Riverpaw Mystic", "lv": (10, 10), "kind": "humanoid", "hp": 0.8,
|
||||
"abilities": ["healing_wave"], "junk": "Mystic's Charm"},
|
||||
|
|
@ -343,68 +346,70 @@ BOSS_HP, BOSS_DMG = 5.0, 2.8 # on top of the mob's own multipliers
|
|||
|
||||
# --- the world -------------------------------------------------------------
|
||||
|
||||
# Hunts are fights you can repeat. `pulls` are the packs a hunt draws from.
|
||||
PLACES = {
|
||||
"northshire_abbey": {"name": "Northshire Abbey", "zone": "Elwynn Forest", "hub": True, "lv": (1, 5),
|
||||
"links": {"northshire_valley": 1, "northshire_vineyards": 1, "echo_ridge": 1,
|
||||
"goldshire": 4}},
|
||||
"northshire_valley": {"name": "Northshire Valley", "zone": "Elwynn Forest", "lv": (1, 3),
|
||||
"hunts": {"young_wolf": [["young_wolf"]], "kobold_vermin": [["kobold_vermin"]]},
|
||||
"links": {"northshire_abbey": 1}},
|
||||
"northshire_vineyards": {"name": "Northshire Vineyards", "zone": "Elwynn Forest", "lv": (3, 5),
|
||||
"hunts": {"defias_thug": [["defias_thug"]],
|
||||
"garrick_padfoot": [["garrick_padfoot", "defias_thug"]]},
|
||||
"links": {"northshire_abbey": 1}},
|
||||
"echo_ridge": {"name": "Echo Ridge Mine", "zone": "Elwynn Forest", "lv": (3, 5),
|
||||
"hunts": {"kobold_worker": [["kobold_worker"]], "kobold_laborer": [["kobold_laborer"]]},
|
||||
"links": {"northshire_abbey": 1}},
|
||||
"goldshire": {"name": "Goldshire", "zone": "Elwynn Forest", "hub": True, "lv": (5, 10),
|
||||
"links": {"northshire_abbey": 4, "fargodeep": 2, "crystal_lake": 2, "brackwell": 3,
|
||||
"forests_edge": 3, "sentinel_hill": 7}},
|
||||
"fargodeep": {"name": "Fargodeep Mine", "zone": "Elwynn Forest", "lv": (6, 8),
|
||||
"hunts": {"kobold_tunneler": [["kobold_tunneler"]],
|
||||
"kobold_miner": [["kobold_miner"], ["kobold_miner", "kobold_tunneler"]]},
|
||||
"links": {"goldshire": 2}},
|
||||
"crystal_lake": {"name": "Crystal Lake", "zone": "Elwynn Forest", "lv": (7, 9),
|
||||
"hunts": {"murloc_streamrunner": [["murloc_streamrunner"]],
|
||||
"murloc_forager": [["murloc_forager"], ["murloc_forager", "murloc_streamrunner"]]},
|
||||
"links": {"goldshire": 2}},
|
||||
"brackwell": {"name": "Brackwell Pumpkin Patch", "zone": "Elwynn Forest", "lv": (8, 10),
|
||||
"hunts": {"defias_bandit": [["defias_bandit"]],
|
||||
"princess": [["princess", "porcine_entourage", "porcine_entourage"]]},
|
||||
"links": {"goldshire": 3, "forests_edge": 2}},
|
||||
"forests_edge": {"name": "Forest's Edge", "zone": "Elwynn Forest", "lv": (9, 11),
|
||||
"hunts": {"riverpaw_gnoll": [["riverpaw_gnoll"], ["riverpaw_gnoll", "riverpaw_mystic"]],
|
||||
"hogger": [["hogger"]]},
|
||||
"links": {"goldshire": 3, "brackwell": 2, "sentinel_hill": 5}},
|
||||
"sentinel_hill": {"name": "Sentinel Hill", "zone": "Westfall", "hub": True, "lv": (10, 20),
|
||||
"links": {"goldshire": 7, "forests_edge": 5, "saldeans_farm": 2, "molsen_farm": 2,
|
||||
"dust_plains": 3, "gold_coast": 3, "moonbrook": 3}},
|
||||
"saldeans_farm": {"name": "Saldean's Farm", "zone": "Westfall", "lv": (10, 13),
|
||||
"hunts": {"harvest_watcher": [["harvest_watcher"]],
|
||||
"young_fleshripper": [["young_fleshripper"]], "goretusk": [["goretusk"]]},
|
||||
"links": {"sentinel_hill": 2}},
|
||||
"molsen_farm": {"name": "The Molsen Farm", "zone": "Westfall", "lv": (12, 14),
|
||||
"hunts": {"defias_trapper": [["defias_trapper"]],
|
||||
"defias_smuggler": [["defias_smuggler"], ["defias_smuggler", "defias_trapper"]]},
|
||||
"links": {"sentinel_hill": 2}},
|
||||
"dust_plains": {"name": "The Dust Plains", "zone": "Westfall", "lv": (14, 16),
|
||||
"hunts": {"riverpaw_brute": [["riverpaw_brute"], ["riverpaw_brute", "riverpaw_herbalist"]]},
|
||||
"links": {"sentinel_hill": 3, "dagger_hills": 2}},
|
||||
"gold_coast": {"name": "Gold Coast Quarry", "zone": "Westfall", "lv": (15, 16),
|
||||
"hunts": {"murloc_coastrunner": [["murloc_coastrunner"], ["murloc_coastrunner", "murloc_tidecaller"]]},
|
||||
"links": {"sentinel_hill": 3}},
|
||||
"moonbrook": {"name": "Moonbrook", "zone": "Westfall", "lv": (16, 18), "dungeon": "deadmines",
|
||||
"hunts": {"defias_pillager": [["defias_pillager"], ["defias_looter", "defias_pillager"]],
|
||||
"defias_looter": [["defias_looter"]]},
|
||||
"links": {"sentinel_hill": 3, "dagger_hills": 2}},
|
||||
"dagger_hills": {"name": "The Dagger Hills", "zone": "Westfall", "lv": (17, 19),
|
||||
"hunts": {"defias_pathstalker": [["defias_pathstalker"]],
|
||||
"defias_highwayman": [["defias_highwayman"], ["defias_highwayman", "defias_pathstalker"]]},
|
||||
"links": {"moonbrook": 2, "dust_plains": 2}},
|
||||
# A zone is one page: every hunt, quest giver and vendor in it is a tap away.
|
||||
ZONES = {
|
||||
"elwynn": {"name": "Elwynn Forest", "lv": (1, 10), "hub": "goldshire", "start": "northshire_abbey"},
|
||||
"westfall": {"name": "Westfall", "lv": (10, 20), "hub": "sentinel_hill"},
|
||||
}
|
||||
|
||||
# Crossing between zones is a journey: a fight at each stop along the road, in
|
||||
# order (reversed going the other way), each with a chance of the road's rare.
|
||||
ROADS = {
|
||||
"westbrook": {
|
||||
"name": "The Westbrook road", "zones": ("elwynn", "westfall"), "rare": "mother_fang", "rare_odds": 0.1,
|
||||
"stops": [
|
||||
{"name": "Westbrook Garrison", "pulls": [["riverpaw_gnoll"], ["young_wolf_pack", "young_wolf_pack"]]},
|
||||
{"name": "The Westbrook bridge", "pulls": [["murloc_forager", "murloc_streamrunner"],
|
||||
["riverpaw_gnoll", "riverpaw_mystic"]]},
|
||||
{"name": "The Jansen Stead", "pulls": [["young_fleshripper"], ["harvest_watcher"]]},
|
||||
],
|
||||
},
|
||||
}
|
||||
FLIGHT_COST = 50 # copper to fly to a zone you've reached on foot
|
||||
|
||||
# Places are a zone's subzones. Hunts are fights you can repeat; `pulls` are the
|
||||
# packs a hunt draws from.
|
||||
PLACES = {
|
||||
"northshire_abbey": {"name": "Northshire Abbey", "zone": "elwynn", "hub": True, "lv": (1, 5)},
|
||||
"northshire_valley": {"name": "Northshire Valley", "zone": "elwynn", "lv": (1, 3),
|
||||
"hunts": {"young_wolf": [["young_wolf"]], "kobold_vermin": [["kobold_vermin"]]}},
|
||||
"northshire_vineyards": {"name": "Northshire Vineyards", "zone": "elwynn", "lv": (3, 5),
|
||||
"hunts": {"defias_thug": [["defias_thug"]],
|
||||
"garrick_padfoot": [["garrick_padfoot", "defias_thug"]]}},
|
||||
"echo_ridge": {"name": "Echo Ridge Mine", "zone": "elwynn", "lv": (3, 5),
|
||||
"hunts": {"kobold_worker": [["kobold_worker"]], "kobold_laborer": [["kobold_laborer"]]}},
|
||||
"goldshire": {"name": "Goldshire", "zone": "elwynn", "hub": True, "lv": (5, 10)},
|
||||
"fargodeep": {"name": "Fargodeep Mine", "zone": "elwynn", "lv": (6, 8),
|
||||
"hunts": {"kobold_tunneler": [["kobold_tunneler"]],
|
||||
"kobold_miner": [["kobold_miner"], ["kobold_miner", "kobold_tunneler"]]}},
|
||||
"crystal_lake": {"name": "Crystal Lake", "zone": "elwynn", "lv": (7, 9),
|
||||
"hunts": {"murloc_streamrunner": [["murloc_streamrunner"]],
|
||||
"murloc_forager": [["murloc_forager"], ["murloc_forager", "murloc_streamrunner"]]}},
|
||||
"brackwell": {"name": "Brackwell Pumpkin Patch", "zone": "elwynn", "lv": (8, 10),
|
||||
"hunts": {"defias_bandit": [["defias_bandit"]],
|
||||
"princess": [["princess", "porcine_entourage", "porcine_entourage"]]}},
|
||||
"forests_edge": {"name": "Forest's Edge", "zone": "elwynn", "lv": (9, 11),
|
||||
"hunts": {"riverpaw_gnoll": [["riverpaw_gnoll"], ["riverpaw_gnoll", "riverpaw_mystic"]],
|
||||
"hogger": [["hogger"]]}},
|
||||
"sentinel_hill": {"name": "Sentinel Hill", "zone": "westfall", "hub": True, "lv": (10, 20)},
|
||||
"saldeans_farm": {"name": "Saldean's Farm", "zone": "westfall", "lv": (10, 13),
|
||||
"hunts": {"harvest_watcher": [["harvest_watcher"]],
|
||||
"young_fleshripper": [["young_fleshripper"]], "goretusk": [["goretusk"]]}},
|
||||
"molsen_farm": {"name": "The Molsen Farm", "zone": "westfall", "lv": (12, 14),
|
||||
"hunts": {"defias_trapper": [["defias_trapper"]],
|
||||
"defias_smuggler": [["defias_smuggler"], ["defias_smuggler", "defias_trapper"]]}},
|
||||
"dust_plains": {"name": "The Dust Plains", "zone": "westfall", "lv": (14, 16),
|
||||
"hunts": {"riverpaw_brute": [["riverpaw_brute"], ["riverpaw_brute", "riverpaw_herbalist"]]}},
|
||||
"gold_coast": {"name": "Gold Coast Quarry", "zone": "westfall", "lv": (15, 16),
|
||||
"hunts": {"murloc_coastrunner": [["murloc_coastrunner"], ["murloc_coastrunner", "murloc_tidecaller"]]}},
|
||||
"moonbrook": {"name": "Moonbrook", "zone": "westfall", "lv": (16, 18), "dungeon": "deadmines",
|
||||
"hunts": {"defias_pillager": [["defias_pillager"], ["defias_looter", "defias_pillager"]],
|
||||
"defias_looter": [["defias_looter"]]}},
|
||||
"dagger_hills": {"name": "The Dagger Hills", "zone": "westfall", "lv": (17, 19),
|
||||
"hunts": {"defias_pathstalker": [["defias_pathstalker"]],
|
||||
"defias_highwayman": [["defias_highwayman"], ["defias_highwayman", "defias_pathstalker"]]}},
|
||||
}
|
||||
|
||||
GRAVEYARD = {"Elwynn Forest": "goldshire", "Westfall": "sentinel_hill"}
|
||||
|
||||
DUNGEONS = {
|
||||
"deadmines": {
|
||||
|
|
@ -458,7 +463,7 @@ QUESTS = {
|
|||
"name": "Report to Goldshire", "giver": "northshire_abbey", "npc": "Marshal McBride", "lv": 5,
|
||||
"req": ["investigate_echo_ridge"], "ender": "goldshire", "ender_npc": "Marshal Dughan",
|
||||
"text": "Take word of the kobolds to Marshal Dughan in Goldshire.",
|
||||
"obj": [{"visit": "goldshire"}], "xp": 200, "copper": 50},
|
||||
"obj": [], "xp": 200, "copper": 50},
|
||||
"gold_dust_exchange": {
|
||||
"name": "Gold Dust Exchange", "giver": "goldshire", "npc": "Remy \"Two Times\"", "lv": 7,
|
||||
"text": "The kobolds at Fargodeep pan for gold dust. Bring me some, and no questions.",
|
||||
|
|
@ -497,7 +502,7 @@ QUESTS = {
|
|||
"name": "Report to Gryan Stoutmantle", "giver": "goldshire", "npc": "Marshal Dughan", "lv": 10,
|
||||
"req": ["riverpaw_gnoll_bounty"], "ender": "sentinel_hill", "ender_npc": "Gryan Stoutmantle",
|
||||
"text": "The People's Militia at Sentinel Hill needs every sword it can get.",
|
||||
"obj": [{"visit": "sentinel_hill"}], "xp": 400, "copper": 100},
|
||||
"obj": [{"visit": "westfall"}], "xp": 400, "copper": 100},
|
||||
"the_killing_fields": {
|
||||
"name": "The Killing Fields", "giver": "saldeans_farm", "npc": "Farmer Saldean", "lv": 12,
|
||||
"text": "Harvest Watchers turned on us. Smash them.",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue