Adding Bat Lord Cape to Darkflameserver Lego Universe
One of the first steps in modding DarkflameUniverse/DarkflameServer: The main repository for the Darkflame Universe Server Emulator project. is adding a new item. The easiest way to do that is to copy an existing item that is similar to what you want.
There's a great guide on the Internet: Brian's Guide to Manually Modding Items into Lego Universe. It even uses the item I wanted, the Bat Lord Cape, because it's such an obvious choice.
I used sqlitebrowser of course, because while I have the INSERT statements available below, you have to browse and explore to see what is available and what you can use.
After editing the game data, you have to convert the server sqlite back to fdb.
You have to add the item descriptions to locale.xml which is client-side.
There are also a few graphical assets, which I cannot explain because the Google doc does it better than I could. I didn't really know what I was doing aside from the hexediting. Also, NifSkope runs in 64-bit wine just fine.
After making all the changes and distributing to the server and restarting it; and deploying the locale.xml, cdclient.fdb, and graphical assets to the clients; you can give yourself the Bat Lord Cape!
/gmadditem 16922
Screenshot of new Bat Lord Cape in-game
Auxiliary
Make sure you remove table migration_history
from your server's sqlite file before converting to fdb. The TIMESTAMP data type is not supported/implemented by the conversion process and chokes it out.
Listings
Sqldiff
If you know these won't cause conflicts, here's the output of sqldiff
.
files/2024/listings/batlordcape.sqldiff (Source)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
INSERT INTO ComponentsRegistry(rowid,id,component_type,component_id) VALUES(42528,16922,11,7975); INSERT INTO ComponentsRegistry(rowid,id,component_type,component_id) VALUES(42529,16922,9,0); INSERT INTO ComponentsRegistry(rowid,id,component_type,component_id) VALUES(42530,16922,2,15715); INSERT INTO ItemComponent(rowid,id,equipLocation,baseValue,isKitPiece,rarity,itemType,itemInfo,inLootTable,inVendor,isUnique,isBOP,isBOE,reqFlagID,reqSpecialtyID,reqSpecRank,reqAchievementID,stackSize,color1,decal,offsetGroupID,buildTypes,reqPrecondition,animationFlag,equipEffects,readyForQA,itemRating,isTwoHanded,minNumRequired,delResIndex,currencyLOT,altCurrencyCost,subItems,audioEventUse,noEquipAnimation,commendationLOT,commendationCost,audioEquipMetaEventSet,currencyCosts,ingredientInfo,locStatus,forgeType,SellMultiplier) VALUES(7406,7975,'clavicle',11150,1,4,4,5152,0,0,0,1,0,0,0,0,0,1,-1,NULL,27,0,'254',19,NULL,0,0,0,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO ItemSetSkills(rowid,SkillSetID,SkillID,SkillCastType) VALUES(323,118,369,1); INSERT INTO ItemSetSkills(rowid,SkillSetID,SkillID,SkillCastType) VALUES(324,118,378,1); UPDATE ItemSets SET itemIDs='12781, 12686, 13000, 12802, 12678, 16922', skillSetWith4=118, skillSetWith5=101, skillSetWith6=102 WHERE rowid=39; INSERT INTO ObjectSkills(rowid,objectTemplate,skillID,castOnType,AICombatWeight) VALUES(3952,16922,362,1,NULL); INSERT INTO ObjectSkills(rowid,objectTemplate,skillID,castOnType,AICombatWeight) VALUES(3953,16922,371,1,NULL); INSERT INTO ObjectSkills(rowid,objectTemplate,skillID,castOnType,AICombatWeight) VALUES(3954,16922,378,1,NULL); INSERT INTO ObjectSkills(rowid,objectTemplate,skillID,castOnType,AICombatWeight) VALUES(3955,16922,1746,0,NULL); INSERT INTO Objects(rowid,id,name,placeable,type,description,localize,npcTemplateID,displayName,interactionDistance,nametag,_internalNotes,locStatus,gate_version,HQ_valid) VALUES(12987,16922,'Bat Lord Cape',0,'Loot','Complete your Bat Lord outfit',1,NULL,'Bat Lord Cape',NULL,0,'1 LP 3 IP 3 AP',2,'levelprogression',1); INSERT INTO RenderComponent(rowid,id,render_asset,icon_asset,IconID,shader_id,effect1,effect2,effect3,effect4,effect5,effect6,animationGroupIDs,fade,usedropshadow,preloadAnimations,fadeInTime,maxShadowDistance,ignoreCameraCollision,renderComponentLOD1,renderComponentLOD2,gradualSnap,animationFlag,AudioMetaEventSet,billboardHeight,chatBubbleOffset,staticBillboard,LXFMLFolder,attachIndicatorsToNode) VALUES(13691,15715,'animations\\accessories\\cape_07.kfm','..\..\textures\freetrial\ui\inventory\Icons\Cape_BatLord.dds',3258,1,NULL,NULL,NULL,NULL,NULL,NULL,'2024,2025',1,0,0,1.0,0.0,0,NULL,NULL,0,NULL,NULL,NULL,NULL,0,NULL,0); INSERT INTO SkillBehavior(rowid,skillID,locStatus,behaviorID,imaginationcost,cooldowngroup,cooldown,inNpcEditor,skillIcon,oomSkillID,oomBehaviorEffectID,castTypeDesc,imBonusUI,lifeBonusUI,armorBonusUI,damageUI,hideIcon,localize,gate_version,cancelType) VALUES(1522,1746,2,5913,10,21,10.0,0,3680,'426,355,296,293,292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,153,152,151,150,149,148,144,143,296,426,130,1',1102,NULL,NULL,NULL,NULL,NULL,0,1,'levelprogression',NULL); |
Locale changes
3 new descriptions.
files/2024/listings/batlordcape.locale.diff (Source)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
--- locale.2024-11-08.frostburgh.xml 2024-11-08 17:33:58.589138187 -0500 +++ locale.2024-12-20.batlordcape.xml 2024-12-20 16:35:55.823270301 -0500 @@ -5,7 +5,7 @@ <locale>de_DE</locale> <locale>en_GB</locale> </locales> - <phrases count="24841"> + <phrases count="24844"> <phrase id="ACT_RACE_EXIT_THE_RACE?"> <translation locale="en_US">Exit the race?</translation> <translation locale="de_DE">Das Rennen beenden?</translation> @@ -99494,6 +99494,11 @@ <translation locale="de_DE">Cape der Nexus Force</translation> <translation locale="en_GB">Nexus Force Cape</translation> </phrase> + <phrase id="Objects_16922_name"> + <translation locale="en_US">Bat Lord Cape</translation> + <translation locale="de_DE">Cape der Bat Lord</translation> + <translation locale="en_GB">Bat Lord Cape</translation> + </phrase> <phrase id="Objects_9859_description"> <translation locale="en_US">__MG__AG Propery Battle</translation> <translation locale="de_DE">__MG__AG Propery Battle</translation> @@ -107983,6 +107988,16 @@ <translation locale="de_DE">Wurfsternbombardement</translation> <translation locale="en_GB">Shuriken Barrage</translation> </phrase> + <phrase id="SkillBehavior_1746_descriptionUI"> + <translation locale="en_US">%(DamageCombo) 12 %(Description)Throws batarangs that do 12 damage to enemies</translation> + <translation locale="de_DE">%(DamageCombo) 12 %(Description)Wirft Wurfsterne, die deinen Gegnern 12 Schadenspunkte zufügen</translation> + <translation locale="en_GB">%(DamageCombo) 12 %(Description)Throws batarangs that do 12 Damage to enemies.</translation> + </phrase> + <phrase id="SkillBehavior_1746_name"> + <translation locale="en_US">Batarang Barrage</translation> + <translation locale="de_DE">Wurfsternbombardement</translation> + <translation locale="en_GB">Batarang Barrage</translation> + </phrase> <phrase id="SkillBehavior_49_descriptionUI"> <translation locale="en_US">Makes you show some affection</translation> <translation locale="de_DE">Lässt dich ein wenig Zuneigung zeigen</translation> |
References
- Brian's Guide to Manually Modding Items into Lego Universe
- https://fdb.lu-dev.net/
- file:///mnt/public/Games/lego-universe/adding-batlordcape.md
Comments