PROGRESS LOG (4/13 - 4/14 2025)
I was out most of yesterday, but I poked more at SAGE and other zone edit tools with Raithel, mostly troubleshooting EQGZI type of stuff.
- So far, it seems doing anything LANTERN related for edits is a lot more convoluted.
- Raithel introduced to me his new tool EQZoneCreator that simplifies working with Quail to convert models into blend files, allowing quick edits in blender, then recompiling the quail back into EQG.
- SAGE is still troublesome - any edits I make seem to not work on S3D zones when converting to EQG - so my NRO edits will just not take. May have to wait for the S3D compatibility to finish.
So, for now, I have a few tools at my disposal for playing around with creating custom zones, but doing direct zone edits in old classic zones may have to wait further.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- Went ahead and rebuilt server from scratch using Manual Installer, hopefully allowing me more control over compiling - I would like to use it as a dev environment that I can take and push changes over to the Spire install, but that will take some setting up.
- Apart from everything else, I'm working on building starting points for all race / class combinations that make sense.
Ex. Humans who want to be beastlords, shamans or berserkers will start in Halas. (Made the most sense.)
Ex. Dark Elf bards start in The Maiden's Fancy (and I need to build Bard GM / Vendors)
Dark Elf Beastlords and Shamans can start in Neriak because there were some GMs in the Foreign Quarter at one point - I just spawned them in for now, may just set them to non-combat to prevent city killers from going after them.
Also found some caves in Neriak Foreign Quarter to host a Monk Guild
Also found some places in Neriak Third Gate to host a Paladin Guild
Druids and Rangers, I may outpost in Nektulos exclusively near the city tunnel.
***** but yeah... lots of work to be done per race / class matchup, but hope to have that done this week.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Recompiled Server Files using Manual Install with previously mentioned adjustments to classes.cpp, classes.h and client.cpp
MERGE SUCCESSFUL
So we can now see that there are indeed entries for the adjustments on server side when we do a search for classes #find class
However, we need to adjust them in the array to make sure we're not overwriting any hidden class information.
PEQ reflects class 17 as "Banker" - so let's move Rune Knight and Rune Knight GM to classes 74 and 75, as listed on PEQ Editor.
-UPDATE- Realizing an error of my own, EQ::ValueWithin is checking class IDs between Warrior and Berserker (1 thru 16) by default. If we're using ID 74 for Rune Knight and appending the EQ:ValueWithin to check until Rune Knight, we're actually setting all classes as IsPlayerClass.
Checking the database, luckily, nothing is actually using class 17 or class 36, so we can recompile those values back to 17 and 36 respectably and we should be fine, and thus, not making every class a player class.
- Edited classes.h for Rune Knight 17 and 36.
- Added Rune Knight classes 17 and 36 to PEQ Database data.php - so that it reflects correctly on the editor and doesn't throw warnings at me. (We just want things to be clean!)
- Added to db_str in SQL - entry 36389: id 17, type 13 "Runeknights" (17^13^Runeknights^0)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
// npc_scale_manager.cpp
- Added Switch cases in for Rune Knights (literally just a copy of Shadowknight) :: GetClassLevelDamageMod (Line 415)
// npc.cpp
- Line 4338 - Added RuneKnight to RuneKnightGM link under IsGuildMasterForClient
// mob.cpp
- Line 1011 - Added Runeknight and RuneknightGM to IsIntelligenceCasterClass switch case list.
- Line 1056 - Added Runeknight and RuneknightGM to IsWarriorClass switch case list. (I guess a lot of mobs derive from "Warrior".)
- Line 1107 - Added RuneKnight and RuneKnightGM to Hybrid Archtype switch case list.
- Line 1233 - Added RuneKnightGM to SetSpawnLastNameByClass switch case list. (Cool, all RuneKnightGMs will now automatically get that last name in parenthesis underneath them.)
- Line 1473 - Added RuneKnightGM to the "AllowCrossClassTrainers" check. (Not sure if I'll use this, but good to plug.)
- Line 4692 - Added RuneKnight to CanThisClassTripleAttack GetLevel >60 check.
- Line 5271 - Added RuneKnight to >50 SpellCastTime "good effect". (Maybe this is some kind of innate spell haste effect?)
- Line 8442 - Added Runeknight to "Plural Class" switch case list.
- Line 8766 - Added RuneKnightGM to IsGuildMaster switch case list.
//client_process.cpp
- Added inclusion for RuneKnightGM for OPGMTraining
- Added inclusion for RuneKnightGM for OPGMEndTraining
- Added inclusion for RuneKnightGM for OPGMTrainSkill
//client_mods.cpp
- Line 1072 - Added RuneKnight to gain MR calculations like WAR/BER
//lua_client.cpp + lua_client.h
- Line 155, set GetClassBitMask to expect int32 instead of int16 (May be necessary if it needs to read bitmasks beyond 65535)
//perl_client.cpp
- Line 2005 set Perl_Client_GetClassBitmask to expect uint32 instead of uint16 (May be necessary if it needs to read bitmasks beyond 65535)
|