Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions GameList.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ Cleft of Dimensions
Clessidra
DarkMists
Dragonfire MUD
DreamLand
Federation 2 Community Edition
Fierymud
God Wars II
Expand Down
117 changes: 84 additions & 33 deletions TGameDetails.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,16 @@ struct GameDetail
QString websiteInfo;
QString icon;
QString description;
// the game's bundled loader installs the game's own full interface, so
// the generic starter UI is not preinstalled for it:
bool providesOwnUi = false;
// how the game installs its own full interface, if it does - the generic
// starter UI is then not preinstalled for it:
enum class OwnUi {
None,
// a loader bundled with Mudlet fetches the interface itself
BundledLoader,
// the game sends a Client.GUI package, often only after login
ClientGui
};
OwnUi ownUi = OwnUi::None;
// other hostnames the game is reachable under:
QStringList alternateHostUrls;
};
Expand Down Expand Up @@ -65,14 +72,14 @@ class TGameDetails
return result;
}

inline static bool gameProvidesOwnUi(const QString& hostUrl)
inline static GameDetail::OwnUi gameOwnUi(const QString& hostUrl)
{
for (const auto& game : scmDefaultGames) {
if (game.providesOwnUi && (!game.hostUrl.compare(hostUrl, Qt::CaseInsensitive) || game.alternateHostUrls.contains(hostUrl, Qt::CaseInsensitive))) {
return true;
if (game.ownUi != GameDetail::OwnUi::None && (!game.hostUrl.compare(hostUrl, Qt::CaseInsensitive) || game.alternateHostUrls.contains(hostUrl, Qt::CaseInsensitive))) {
return game.ownUi;
}
}
return false;
return GameDetail::OwnUi::None;
}

// clang-format off
Expand Down Expand Up @@ -117,8 +124,8 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"If you are interested in a completely free, immersive RP/PK experience, in a vibrant land filled "
"with lore/intrigue, where you can forge long-lasting friendships and bitter rivalries, and have an "
"opportunity to leave your lasting mark and be remembered forever, then welcome ye to the "
"Abandoned Realms.")
},
"Abandoned Realms."),
GameDetail::OwnUi::ClientGui},
{qsl("Avalon.de"), // Name
qsl("avalon.mud.de"), // address to connect to
23, // port to connect on
Expand Down Expand Up @@ -217,7 +224,34 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"playerkilling is an integral part of character growth, rewarding "
"wit, courage, and ambition. The world continues to evolve with "
"new discoveries and challenges. Come carve out your legacy in "
"Dark Mists.")},
"Dark Mists."),
GameDetail::OwnUi::ClientGui},

{qsl("DreamLand"),
qsl("dreamland.rocks"),
9000,
false,
qsl("<a href='https://dreamland.rocks'>Website</a><br>"
"<a href='https://discord.gg/Ds46EpdKaF'>Discord</a>"),
qsl(":/icons/banner_dreamland.png"),
qsl("Two gods built Thera as a mirror copy of someone else's world. Several "
"epochs and a great many funerals later, the copy has stopped taking notes "
"and started taking lives."
"\n\n"
"23 races, 13 classes, alignment, ethos and 44 gods and cults add up to "
"over 30,000 builds, and each one plays differently. Every random drop, "
"quest reward and crafted piece sits on one power scale. Forge your own "
"blades, cut gems, ink tattoos. Endless personal quests, 56 area quests, "
"tiered mobs that call their friends and cast at you from the next room, "
"remort, and ten clans, most with skills nobody else gets."
"\n\n"
"The whole game is in English, Ukrainian and Russian: one world, and every "
"player sees it in their own language. Many of our regulars are blind, so "
"everything works with a screen reader. Mudlet gets our own interface on "
"connect: bars, chat tabs and the panels from our web client."
"\n\n"
"Dying is part of the tutorial."),
GameDetail::OwnUi::ClientGui},

{qsl("God Wars II"),
qsl("godwars2.org"),
Expand Down Expand Up @@ -279,7 +313,8 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"提剑跨骑挥鬼雨,白骨如山鸟惊飞。\n"
"尘事如潮人如水,只叹江湖几人回。"
"\n\n"
"中文开源武侠MUD炎黄群侠传,游戏包括25大门派和5大世家,正邪只在一念间;近千门武学等你学习,上百种任务随你体验;让自己成为一代宗师,江湖笑,恩怨了。")},
"中文开源武侠MUD炎黄群侠传,游戏包括25大门派和5大世家,正邪只在一念间;近千门武学等你学习,上百种任务随你体验;让自己成为一代宗师,江湖笑,恩怨了。"),
GameDetail::OwnUi::ClientGui},

{qsl("Petria"),
qsl("game.petriamud.com"),
Expand Down Expand Up @@ -348,8 +383,7 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"- it's encouraged. Killing enemies earns warpoints, experience, and their "
"gear. Climb the ranks. Make the topten list. Build your reputation through "
"conquest. If you want the risk of PvP combined with challenging "
"environment combat, you've found your home."),
true}, // ROP loader installs its own custom interface
"environment combat, you've found your home.")},

{qsl("ZombieMUD"),
qsl("zombiemud.org"),
Expand Down Expand Up @@ -454,7 +488,8 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
qsl(":/icons/midnightsun2.png"),
qsl("Midnight Sun is a medieval fantasy LPmud that has been around since 1991. We are a "
"non-PK, hack-and-slash game, cooperative rather than competitive in nature, and "
"with a strong sense of community.")},
"with a strong sense of community."),
GameDetail::OwnUi::ClientGui},

{qsl("Luminari"),
qsl("luminarimud.com"),
Expand Down Expand Up @@ -505,7 +540,8 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"combat is allowed in much of the game. StickMUD was born in Finland in June 1991 "
"and is now hosted in Canada. Our diverse community of players and active game "
"engineers are ready to welcome new players like you to one of the best text-based "
"multi-player games ever!")},
"multi-player games ever!"),
GameDetail::OwnUi::ClientGui},

{qsl("Clessidra"),
qsl("mud.clessidra.it"),
Expand Down Expand Up @@ -534,7 +570,8 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"avanzatissimo sistema di Clan che permettera' guerre e conquiste. Disponibilità di "
"mercenari in caso di poca utenza, sistema di produzione/mercato per ottenere "
"esclusivi oggetti, un interfaccia grafica per aiutarti a giocare, sia per i novizi "
"che gli esperti. Un MUD che si evolve di continuo.")},
"che gli esperti. Un MUD che si evolve di continuo."),
GameDetail::OwnUi::ClientGui},

{qsl("Reinos de Leyenda"),
qsl("reinosdeleyenda.es"),
Expand Down Expand Up @@ -583,7 +620,8 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"completamente de los dioses- y unirte a uno de los reinos que los jugadores se "
"encargan de gobernar para explorar un mundo viviente, sumergirte en los misterios "
"del océano, dar forma a tu legado, forjar maravillas olvidadas para ti -o tus "
"aliados- y luchar por fe, gloria o dinero.")},
"aliados- y luchar por fe, gloria o dinero."),
GameDetail::OwnUi::ClientGui},

{qsl("Fierymud"),
qsl("fierymud.org"),
Expand All @@ -595,14 +633,20 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"players. This new reborne Fiery is a hope to bring back the goals of the past by "
"inflicting certain death on unsuspecting players. FieryMUD will continue to grow "
"and change through the coming years and those players who seek challenge and "
"possess imagination will come in search of what the 3D world fails to offer them.")},

"possess imagination will come in search of what the 3D world fails to offer them."),
GameDetail::OwnUi::ClientGui},

// Deliberately without artwork: the connection dialog draws an entry only as its artwork, so this
// testing aid (it needs Busted, which players lack) is listed and selectable yet invisible, while a
// developer can reach it with --profile="Mudlet self-test" or from "My games" in a debug build.
// An icon or a generated name plate would show it to everybody.
// See https://github.com/Mudlet/Mudlet/issues/6443
{qsl("Mudlet self-test"),
qsl("mudlet.org"),
23,
false,
qsl("<a href='https://www.mudlet.org'>www.mudlet.org"),
QString(), // TODO: https://github.com/Mudlet/Mudlet/issues/6443
QString(), // empty on purpose - see the note above
qsl("This isn't a game profile, but a special one for testing Mudlet itself using "
"Busted. You can also use it as a starting point to create automated tests for your "
"own profiles!")},
Expand Down Expand Up @@ -654,7 +698,7 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
qsl(":/icons/carrionfields.png"),
qsl("Carrion Fields is a unique blend of high-caliber roleplay and complex, hardcore "
"player-versus-player combat that has been running continuously, and 100% free, "
"for over 25 years."
"for over 30 years."
"\n\n"
"Choose from among 21 races, 17 highly customizable classes, and several cabals "
"and religions to suit your playstyle and the story you want to tell. Our "
Expand All @@ -663,10 +707,10 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"\n\n"
"We like to think of ourselves as the Dark Souls of MUDs, with a community that "
"is supportive of new players - unforgiving though our world may be. Join us for a "
"real challenge and real rewards: adrenalin-pumping battles, memorable quests run "
"real challenge and real rewards: adrenaline-pumping battles, memorable quests run "
"by our volunteer immortal staff, and stories that will stick with you for a "
"lifetime."),
true}, // CF-loader installs CFGUI
GameDetail::OwnUi::BundledLoader}, // CF-loader installs CFGUI

{qsl("Cleft of Dimensions"),
qsl("cleftofdimensions.net"),
Expand All @@ -691,7 +735,8 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"\n\n"
"The Cleft opened in July 2000 and has been in active development ever since. We're "
"always innovating. Recent features include Discord integration "
"and areas written with artificial intelligence. Check us out!")},
"and areas written with artificial intelligence. Check us out!"),
GameDetail::OwnUi::ClientGui},

{qsl("Legends of the Jedi"),
qsl("legendsofthejedi.com"),
Expand All @@ -717,7 +762,8 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"LOTJ offers full PVP in both ground and space combat, governed by a set of rules to "
"minimize griefing and ensure that all kills have sufficient in-character cause."
"\n\n"
"What role will you play? The legend awaits!")},
"What role will you play? The legend awaits!"),
GameDetail::OwnUi::ClientGui},

{qsl("Multi-Users in Middle-earth"),
qsl("mume.org"),
Expand All @@ -733,7 +779,8 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"challenging locations across Middle-earth such as Lothlórien, the Shire, Bree, "
"Rivendell, Goblin-town, Mirkwood, Dol Guldur, and the Mines of Moria. The game is "
"completely at no cost to play and has been continually enhanced since its "
"inception in the fall of 1991.")},
"inception in the fall of 1991."),
GameDetail::OwnUi::ClientGui},

{qsl("MorgenGrauen"),
qsl("mud.morgengrauen.info"),
Expand Down Expand Up @@ -765,7 +812,7 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"Unsere freundliche Spielerschaft hilft Dir gerne bei Deinen ersten Schritten."
"\n\n"
"Spiel jetzt oder nie!"),
true, // mg-loader installs MorgenGrauen's own interface
GameDetail::OwnUi::BundledLoader, // mg-loader installs MorgenGrauen's own interface
{qsl("mg.mud.de"), qsl("mg.morgengrauen.info"), qsl("morgengrauen.info")}},

{qsl("Infinity"),
Expand All @@ -779,7 +826,8 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"Infinity LPMud provides willing adventurers and questseekers with a "
"venue of original ideas, mind boggling quests, and bloodcurdling "
"beasts, spinning into realms of power, magic, and technology, "
"and many players with which to share your adventures.")},
"and many players with which to share your adventures."),
GameDetail::OwnUi::ClientGui},

{qsl("Medievia"),
qsl("medievia.com"),
Expand Down Expand Up @@ -810,7 +858,7 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"but it is the most dynamic game ever attempted. The wind affects the ships, where "
"fire spreads, and even how some critters smell you if you are upwind from them.\n\n"
"Do you dare enter?"),
true}, // MedBootstrap installs MedUI
GameDetail::OwnUi::BundledLoader}, // MedBootstrap installs MedUI

{qsl("Dragonfire MUD"),
qsl("dragonfiremud.com"),
Expand All @@ -825,7 +873,8 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"\n\n"
"Explore realms spanning fantasy, modern, future, and shadowy secrets, hunt dragons "
"for experience and loot, and discover hidden areas and guilds. Optional player "
"killing is allowed, and the community welcomes new adventurers and builders alike.")},
"killing is allowed, and the community welcomes new adventurers and builders alike."),
GameDetail::OwnUi::ClientGui},

{qsl("Beyond the Void MUD"),
qsl("voidmud.com"),
Expand All @@ -841,7 +890,8 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"Free to play and ready for adventurers, the game emphasizes classic EverQuest "
"combat in a modern text-only experience. Build a character with up to three "
"classes, pursue epic quests and rebirth bonuses, and enjoy quality-of-life "
"features like a custom Mudlet UI and real-time maps.")},
"features like a custom Mudlet UI and real-time maps."),
GameDetail::OwnUi::ClientGui},

{qsl("Pku XKX MUD"),
qsl("pkuxkx.net"),
Expand Down Expand Up @@ -876,7 +926,7 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"player-driven provinces."
"\n\n"
"Old-school depth. Modern access. New players welcome."),
true}, // icesus-loader installs Icesus' own interface
GameDetail::OwnUi::BundledLoader}, // icesus-loader installs Icesus' own interface
{qsl("PhoenixMUD"),
qsl("phoenixmud.net"),
4000,
Expand All @@ -894,7 +944,8 @@ qsl("<a href='https://abandonedrealms.com'>Website</a><br>"
"fog-of-war and route-finding."
"\n\n"
"No payment of any kind, and character creation is open. Actively developed, with "
"a friendly community that makes room for newcomers. New players welcome.")},
"a friendly community that makes room for newcomers. New players welcome."),
GameDetail::OwnUi::ClientGui},
};
// clang-format on
};
Expand Down