full module descriptions in setup

This commit is contained in:
uprightbass360
2025-11-03 20:41:44 -05:00
parent 6d0759d0e9
commit 37c96731f7
3 changed files with 37 additions and 151 deletions

View File

@@ -11,8 +11,7 @@
"post_install_hooks": [],
"config_cleanup": [
"playerbots.conf*"
],
"depends_on": []
]
},
{
"key": "MODULE_AOE_LOOT",
@@ -24,8 +23,7 @@
"post_install_hooks": [],
"config_cleanup": [
"mod_aoe_loot.conf*"
],
"depends_on": []
]
},
{
"key": "MODULE_LEARN_SPELLS",
@@ -37,8 +35,7 @@
"post_install_hooks": [],
"config_cleanup": [
"mod_learnspells.conf*"
],
"depends_on": []
]
},
{
"key": "MODULE_FIREWORKS",
@@ -50,8 +47,7 @@
"post_install_hooks": [],
"config_cleanup": [
"mod_fireworks.conf*"
],
"depends_on": []
]
},
{
"key": "MODULE_INDIVIDUAL_PROGRESSION",
@@ -63,8 +59,7 @@
"post_install_hooks": [],
"config_cleanup": [
"individual_progression.conf*"
],
"depends_on": []
]
},
{
"key": "MODULE_AHBOT",
@@ -76,8 +71,7 @@
"post_install_hooks": [],
"config_cleanup": [
"mod_ahbot.conf*"
],
"depends_on": []
]
},
{
"key": "MODULE_AUTOBALANCE",
@@ -89,7 +83,6 @@
"config_cleanup": [
"AutoBalance.conf*"
],
"depends_on": [],
"description": "Adjusts creature health and damage in real time to keep fights tuned for the current party size"
},
{
@@ -102,7 +95,6 @@
"config_cleanup": [
"transmog.conf*"
],
"depends_on": [],
"description": "Adds a transmogrification vendor so players can restyle gear without changing stats"
},
{
@@ -115,7 +107,6 @@
"config_cleanup": [
"npc_buffer.conf*"
],
"depends_on": [],
"description": "Provides a ready-to-use buff NPC who hands out class buffs, food, and utility spells"
},
{
@@ -128,7 +119,6 @@
"config_cleanup": [
"Individual-XP.conf*"
],
"depends_on": [],
"description": "Tweaks XP gain based on population or custom rules to keep leveling flexible"
},
{
@@ -141,7 +131,6 @@
"config_cleanup": [
"SoloLfg.conf*"
],
"depends_on": [],
"description": "A solo-friendly queue that lets every player run dungeons without needing a premade group"
},
{
@@ -154,7 +143,6 @@
"config_cleanup": [
"1v1arena.conf*"
],
"depends_on": [],
"description": "Creates a structured 1v1 ranked arena ladder for duel enthusiasts"
},
{
@@ -167,7 +155,6 @@
"config_cleanup": [
"phasedduels.conf*"
],
"depends_on": [],
"description": "Moves duelers into their own phase to block interference and griefing"
},
{
@@ -180,7 +167,6 @@
"config_cleanup": [
"breaking_news.conf*"
],
"depends_on": [],
"description": "Replaces the client breaking-news panel with server-managed announcements"
},
{
@@ -193,7 +179,6 @@
"config_cleanup": [
"boss_announcer.conf*"
],
"depends_on": [],
"description": "Broadcasts dramatic messages when raid bosses fall to your players"
},
{
@@ -206,7 +191,6 @@
"config_cleanup": [
"account_achievements.conf*"
],
"depends_on": [],
"description": "Shares achievements across characters on the same account for persistent milestones"
},
{
@@ -219,7 +203,6 @@
"config_cleanup": [
"AutoRevive.conf*"
],
"depends_on": [],
"description": "Automatically resurrects characters on death\u2014handy for casual PvE or testing realms"
},
{
@@ -232,7 +215,6 @@
"config_cleanup": [
"GainHonorGuard.conf*"
],
"depends_on": [],
"description": "Awards honor when players kill city guards, spicing up world PvP raids"
},
{
@@ -247,7 +229,6 @@
"config_cleanup": [
"mod_eluna.conf*"
],
"depends_on": [],
"description": "Adds Eluna Lua scripting engine for creating custom gameplay mechanics"
},
{
@@ -260,7 +241,6 @@
"config_cleanup": [
"mod-time_is_time.conf*"
],
"depends_on": [],
"description": "Adds experimental time-twisting mechanics suited for custom events"
},
{
@@ -275,7 +255,6 @@
"config_cleanup": [
"pocketportal.conf*"
],
"depends_on": [],
"description": "Gives players a portal gadget for quick travel to configured destinations"
},
{
@@ -288,7 +267,6 @@
"config_cleanup": [
"RandomEnchants.conf*"
],
"depends_on": [],
"description": "Rolls randomized stat bonuses on loot to add Diablo-style gear chasing"
},
{
@@ -301,7 +279,6 @@
"config_cleanup": [
"Solocraft.conf*"
],
"depends_on": [],
"description": "Automatically scales dungeon and raid encounters for solo players or small teams"
},
{
@@ -311,13 +288,13 @@
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"depends_on": [
"MODULE_ELUNA"
],
"config_cleanup": [
"mod_pvptitles.conf*"
],
"description": "Restores classic honor titles with a configurable ranking ladder"
"description": "Restores classic honor titles with a configurable ranking ladder",
"requires": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_NPC_BEASTMASTER",
@@ -331,7 +308,6 @@
"config_cleanup": [
"npc_beastmaster.conf*"
],
"depends_on": [],
"description": "Adds an NPC who can teach, reset, and manage hunter pets for convenience"
},
{
@@ -344,7 +320,6 @@
"config_cleanup": [
"npc_enchanter.conf*"
],
"depends_on": [],
"description": "Introduces an enchanting vendor who applies enchants directly for a fee"
},
{
@@ -357,7 +332,6 @@
"config_cleanup": [
"instance-reset.conf*"
],
"depends_on": [],
"description": "Adds commands to reset instances quickly\u2014useful for testing or events"
},
{
@@ -370,7 +344,6 @@
"config_cleanup": [
"levelGrant.conf*"
],
"depends_on": [],
"description": "Enables leveling exclusively through questing by awarding tokens after quest completion"
},
{
@@ -383,7 +356,6 @@
"config_cleanup": [
"arac.conf*"
],
"depends_on": [],
"description": "Unlocks every race/class pairing so players can roll any combination"
},
{
@@ -393,7 +365,6 @@
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"depends_on": [],
"description": "Spawns an all-purpose assistant NPC with heirlooms, professions, and convenience commands"
},
{
@@ -403,7 +374,6 @@
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"depends_on": [],
"description": "Lets players stash crafting reagents with a dedicated banker NPC"
},
{
@@ -418,9 +388,6 @@
"post_install_hooks": [
"black-market-setup"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Backports the Mists-era Black Market Auction House via Eluna scripts"
},
{
@@ -430,7 +397,6 @@
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"depends_on": [],
"description": "Implements keystone-style timed runs with leaderboards and scaling modifiers"
},
{
@@ -440,7 +406,6 @@
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"depends_on": [],
"description": "Connects playerbots to an Ollama LLM so they can chat with humans organically"
},
{
@@ -453,7 +418,6 @@
"MODULE_PLAYERBOTS"
],
"post_install_hooks": [],
"depends_on": [],
"description": "Keeps bot levels spread evenly across configured brackets"
},
{
@@ -465,7 +429,6 @@
"post_install_hooks": [
"fix-statbooster-api"
],
"depends_on": [],
"description": "Lets players refine gear stats by rerolling random enchantments with special materials"
},
{
@@ -477,7 +440,6 @@
"status": "blocked",
"block_reason": "Upstream override signature mismatch (OnBeforeTeleport); awaiting fix",
"post_install_hooks": [],
"depends_on": [],
"description": "Teleports dead players back to the dungeon entrance instead of a distant graveyard"
},
{
@@ -487,7 +449,6 @@
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"depends_on": [],
"description": "Provides a minimal AzerothCore module scaffold for building new features"
},
{
@@ -496,11 +457,11 @@
"repo": "https://github.com/Helias/mod-bg-slaveryvalley.git",
"needs_build": true,
"type": "cpp",
"depends_on": [
"MODULE_ELUNA"
],
"post_install_hooks": [],
"description": "Adds the Slavery Valley battleground complete with objectives and queue hooks"
"description": "Adds the Slavery Valley battleground complete with objectives and queue hooks",
"requires": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_AZEROTHSHARD",
@@ -509,7 +470,6 @@
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"depends_on": [],
"description": "Bundles AzerothShard tweaks: utility NPCs, scripted events, and gameplay improvements"
},
{
@@ -518,11 +478,11 @@
"repo": "https://github.com/heyitsbench/mod-worgoblin.git",
"needs_build": true,
"type": "cpp",
"depends_on": [
"MODULE_ELUNA"
],
"post_install_hooks": [],
"description": "Enables Worgen and Goblin characters with DB/DBC adjustments"
"description": "Enables Worgen and Goblin characters with DB/DBC adjustments",
"requires": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_ELUNA_TS",
@@ -534,9 +494,6 @@
"MODULE_ELUNA"
],
"post_install_hooks": [],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Adds a TS-to-Lua workflow so Eluna scripts can be authored with modern tooling"
},
{
@@ -547,7 +504,6 @@
"type": "cpp",
"notes": "Azeroth Interface Override - enables client-server interface communication",
"post_install_hooks": [],
"depends_on": [],
"description": "Pure Lua server-client communication system for bidirectional data transmission"
},
{
@@ -562,9 +518,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Collection of Lua scripts for creating custom gameplay mechanics and features"
},
{
@@ -579,9 +532,6 @@
"post_install_hooks": [
"copy-aio-lua"
],
"depends_on": [
"MODULE_AIO"
],
"description": "Transmogrification system built with AIO and Eluna for changing equipment appearance"
},
{
@@ -596,9 +546,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Lua scripts that spawn custom NPCs with scripted combat and community events"
},
{
@@ -613,9 +560,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Rewards players with in-game mail when reaching certain levels"
},
{
@@ -630,9 +574,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Shares achievements, currency, mounts, and reputation across account characters"
},
{
@@ -647,9 +588,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Spawns a customizable NPC vendor that exchanges materials based on settings"
},
{
@@ -664,9 +602,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Implements Recruit-a-Friend system with rewards for reaching level milestones"
},
{
@@ -681,9 +616,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Enables characters to reset to level one for prestige rewards with optional spell selection"
},
{
@@ -698,9 +630,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Automated auction house bot for buying and selling items"
},
{
@@ -715,9 +644,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Implements hardcore mode system allowing activation via NPC token"
},
{
@@ -732,9 +658,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Provides gear templates, transmog clearing, and chat features for NPC bots"
},
{
@@ -749,9 +672,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Enables multiple NPC merchants with database integration"
},
{
@@ -766,9 +686,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Allows GMs to create and manage treasure chests with custom loot"
},
{
@@ -783,9 +700,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Populates artificial world and guild chat to make servers feel more lively"
},
{
@@ -800,9 +714,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Spawns loot chests containing gear and gold when players die in PvP"
},
{
@@ -817,9 +728,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Diablo II-inspired crafting system with item synthesis and transmutation"
},
{
@@ -834,9 +742,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Enables creating character copies at specific progression points for twinking"
},
{
@@ -851,9 +756,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Allows GMs to create temporary server announcements that repeat at intervals"
},
{
@@ -868,9 +770,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Checks player zones and automatically removes players from restricted areas"
},
{
@@ -885,9 +784,6 @@
"post_install_hooks": [
"copy-aio-lua"
],
"depends_on": [
"MODULE_AIO"
],
"description": "Implements a Blackjack game for players to gamble against an NPC dealer"
},
{
@@ -902,9 +798,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Allows admins to send soulbound items to players via command"
},
{
@@ -919,9 +812,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Provides auction house alternative with dynamic pricing"
},
{
@@ -936,9 +826,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Implements customizable lottery system where players can win prizes"
},
{
@@ -953,9 +840,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Relays in-game chat events to Discord channels"
},
{
@@ -970,9 +854,6 @@
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
],
"description": "Allows access to bank, mailbox, and auction house from anywhere via chat commands"
}
]

View File

@@ -157,12 +157,6 @@ def build_state(env_path: Path, manifest_path: Path) -> ModuleCollectionState:
raise ValueError(f"Manifest entry {key} has non-list 'requires'")
requires = [str(dep) for dep in requires]
depends_on = entry.get("depends_on") or []
if not isinstance(depends_on, list):
raise ValueError(f"Manifest entry {key} has non-list 'depends_on'")
depends_on = [str(dep) for dep in depends_on]
if depends_on:
requires = list(dict.fromkeys(requires + depends_on))
status = entry.get("status", "active")
block_reason = entry.get("block_reason")
post_install_hooks = entry.get("post_install_hooks") or []

View File

@@ -359,6 +359,7 @@ declare -A MODULE_BLOCK_REASON_MAP=()
declare -A MODULE_NEEDS_BUILD_MAP=()
declare -A MODULE_REQUIRES_MAP=()
declare -A MODULE_NOTES_MAP=()
declare -A MODULE_DESCRIPTION_MAP=()
declare -A MODULE_DEFAULT_VALUES=()
declare -A KNOWN_MODULE_LOOKUP=()
declare -A ENV_TEMPLATE_VALUES=()
@@ -417,8 +418,13 @@ PY
exit 1
fi
while IFS=$'\t' read -r key name needs_build module_type status block_reason requires notes; do
while IFS=$'\t' read -r key name needs_build module_type status block_reason requires notes description; do
[ -n "$key" ] || continue
# Convert placeholder back to empty string
[ "$block_reason" = "-" ] && block_reason=""
[ "$requires" = "-" ] && requires=""
[ "$notes" = "-" ] && notes=""
[ "$description" = "-" ] && description=""
MODULE_NAME_MAP["$key"]="$name"
MODULE_NEEDS_BUILD_MAP["$key"]="$needs_build"
MODULE_TYPE_MAP["$key"]="$module_type"
@@ -426,6 +432,7 @@ PY
MODULE_BLOCK_REASON_MAP["$key"]="$block_reason"
MODULE_REQUIRES_MAP["$key"]="$requires"
MODULE_NOTES_MAP["$key"]="$notes"
MODULE_DESCRIPTION_MAP["$key"]="$description"
KNOWN_MODULE_LOOKUP["$key"]=1
done < <(
python3 - "$MODULE_MANIFEST_PATH" <<'PY'
@@ -436,8 +443,8 @@ manifest_path = Path(sys.argv[1])
manifest = json.loads(manifest_path.read_text())
def clean(value):
if value is None:
return ""
if value is None or value == "":
return "-"
return str(value).replace("\t", " ").replace("\n", " ").strip()
for entry in manifest.get("modules", []):
@@ -446,18 +453,18 @@ for entry in manifest.get("modules", []):
continue
name = clean(entry.get("name", key))
needs_build = "1" if entry.get("needs_build") else "0"
module_type = clean(entry.get("type", ""))
module_type = clean(entry.get("type", "")) or "-"
status = clean(entry.get("status", "active"))
block_reason = clean(entry.get("block_reason", ""))
requires = entry.get("requires") or []
depends_on = entry.get("depends_on") or []
ordered = []
for dep in list(requires) + list(depends_on):
for dep in list(requires):
if dep and dep not in ordered:
ordered.append(dep)
requires_csv = ",".join(ordered)
requires_csv = ",".join(ordered) if ordered else "-"
notes = clean(entry.get("notes", ""))
print("\t".join([key, name, needs_build, module_type, status or "active", block_reason, requires_csv, notes]))
description = clean(entry.get("description", ""))
print("\t".join([key, name, needs_build, module_type, status, block_reason, requires_csv, notes, description]))
PY
)
@@ -1145,6 +1152,10 @@ fi
if [ "${MODULE_NEEDS_BUILD_MAP[$key]}" = "1" ]; then
prompt_label="${prompt_label} (requires build)"
fi
local description="${MODULE_DESCRIPTION_MAP[$key]:-}"
if [ -n "$description" ]; then
printf '%b\n' "${BLUE} ${MODULE_NAME_MAP[$key]:-$key}: ${description}${NC}"
fi
local default_answer
default_answer="$(module_default "$key")"
local response