Jump to content
Tero

Doram for PRE-RE!

Recommended Posts

If you've used a relatively recent client for a pre-renewal server, you've probably been greeted by this while creating a character.

IWantCats.png.7d0046b11c25cd24a5e19775dd64318a.png

Coming soon?  What a tease!  This is a 20-year old game, we've waited long enough.  Soon is now.  Here's how to add the Doram to PRE-RE.

 

What you'll need:

GRF Editor

Server Database Editor, or SDE

Some basic understanding of how to modify Rathena's configuration files.

 

Getting started:

First thing's first, we need to get rid of that Coming Soon message.  This requires GRF Editor.  The problem lies inside our pre20190427.grf file, or whatever your pre-re grf file is called.  We need to navigate to data/lua files/luafiles514/service_korea folder, specifically inside ExternalSettings_kr.lub.  There's a line in this file that says:

MakeableRace = { Doram = false }

We need to change the "false" to "true".  You can't directly change .lub files with GRF Editor.  You can click on it, select all the text, paste it into notepad, make your changes, save it with the same name, then just drag it into GRF editor and save your GRF to make the update.  

We can now try to create Doram via the character select screen!  The problem is, when you try to create one, you'll get "rejected from server".  This is because the server is not configured to accept Doram.  This is also easy to fix.  We need to go to char.athena.conf within the PRE-RE server folder, under conf.  Find this line.

//allowed_job_flag: 3

Uncomment this to allow Doram.  You can now actually create one!  Doram exist!

 

Spawn location for Doram:

There's still a lot of problems though.  The first is that Doram don't have a proper spawn location.  By default, they attempt to spawn in Lasagna, but it doesn't exist in PRE-RE, so the server tosses them into Prontera instead.  This is functional, but not very cool.  Let's instead send them to the training area, where everyone else goes.

Find the "start_point_doram" line, also inside char_athena.conf.  Make it this.

start_point_doram: new_1-1,53,111:new_2-1,53,111:new_3-1,53,111:new_4-1,53,111:new_5-1,53,111

Now the Doram start inside the training area.  However, some of it doesn't work so great for them because it's designed for humans.  Never fear, I've created a new version of the training area that handles them.  You can download it from the bottom of the post, it's called novice.txt.  This goes inside rathena_PRERE\npc\pre-re\jobs\novice

CatTutorial.png.50fb0f96d41e2f1b4c62b0c107c40dc8.png

 

Equipment for Doram:

Another problem is that Doram use their own weapons, which aren't present in PRE-RE, so right now they can only punch.  Let's fix that now.

All of the Doram equipment is present in renewal, so we can simply grab it from renewal's item database, at db/re/item-db.txt.  However, you have to know what items to grab, so I've made this even easier and done it for you.  Copy the following into your pre-re/item-db.txt.  Anywhere is fine, you can put them at the end if you want.

1681,Short_Foxtail_Staff,Short Foxtail Staff,5,300,,20,40,,1,3,0x80000000,7,2,2,1,1,1,10,{ bonus bMatkRate,10; },{},{}
1683,Enriched_Foxtail_Staff,Enriched Foxtail Staff,5,4000,,200,50,,1,3,0x80000000,7,2,2,2,12,1,10,{ bonus bMaxSP,50;bonus bMatkRate,15; },{},{}
1684,Long_Foxtail_Staff,Long Foxtail Staff,5,4000,,200,70,,2,3,0x80000000,7,2,2,2,12,1,10,{ bonus bLongAtkRate,5; bonus bMaxHP,200; },{},{}
1685,Dragonfly_Sitting_Foxtail_Staff,Dragonfly Sitting Foxtail Staff,5,8000,,300,60,,1,2,0x80000000,7,2,2,3,30,1,10,{ bonus bInt,1; bonus bMaxHP,100; bonus bMaxSP,150;bonus bMatkRate,15; },{},{}
1686,Large_Foxtail_Staff,Large Foxtail Staff,5,8000,,300,90,,2,2,0x80000000,7,2,2,3,30,1,10,{ bonus bLongAtkRate,8; bonus bDex,1; bonus bMaxHP,200; bonus bMaxSP,100; },{},{}
1687,Short_Foxtail_Staff_,Short Foxtail Staff,5,300,,20,40,,1,4,0x80000000,7,2,2,1,1,1,10,{ bonus bMatkRate,10; },{},{}
1690,Mysterious_Foxtail_Staff,Mysterious Foxtail Staff,5,40000,,400,70,,1,1,0x80000000,7,2,2,4,60,1,10,{ bonus bMaxSP,300; bonus bMatkRate,20; },{},{}
1694,Foxtail_Model,Foxtail Model,5,40000,,300,130,,2,1,0x80000000,7,2,2,4,60,1,10,{ bonus bLongAtkRate,10; bonus bMaxHP,500; },{},{}
1697,Heavenly_Foxtail,Heavenly Foxtail,5,60000,,500,150,,2,0,0x80000000,7,2,2,4,85,1,10,{ bonus bLongAtkRate,15; bonus bMatkRate,25; },{},{}
15126,Female_Poring_Balloon,Doram Suit,4,20,,700,,5,,1,0x80000000,7,2,16,,18,1,,{ bonus bMaxHP,500; bonus bMaxSP,100; },{},{}
20788,Private_Doram_Manteau,Doram Manteau,4,20,,300,,3,,1,0x80000000,7,2,4,,18,1,,{ bonus bFlee,5; },{},{}
22077,Red_Eco-Friendly_Shoes,Doram Shoes,4,20,,100,,2,,1,0x80000000,7,2,64,,18,1,,{ bonus bCritical,5; },{},{}

Now the Doram have some weapons and armor.  Currently, none of this drops from enemies and none of the shops sell it.  If you wish, open up SDE, and add some of these items to the drop tables of various enemies.  I added them to various cat and fox-themed enemies like Wild Rose, Nine Tail, Cat O Nine Tail, Leaf Cat, Civil Servant, and Moonlight Flower, but you can add them anywhere you want. 

I also made the prontera weapon shop sell item 1681, this is inside npc/merchants/shops.txt  Add 

,1681:-1

To the end of the prontera weapon seller to make him sell 3 slot Short Foxtail Staves.  The 4 slot version can drop from an enemy.

 

By the way, these items probably won't have descriptions yet.  This is because the descriptions are stored inside System/iteminfo.lua inside your Ragnarok Online client folder.  If you want, I've attached a text document containing their descriptions called DoramDescriptions.txt, which you can merge into your iteminfo file by replacing the existing description stubs (use Ctrl-F and look for the item number inside square brackets, like this [1981]  )

 

Point Caps, HP and Skills for Doram:

We're making good progress, but there are still more things to fix.  For starters, as renewal classes, Doram are allowed to increase their stats past 99.  This does not fit with PRE-RE, so let's fix it.

This is in conf/battle/player.conf.  Find this line:

max_summoner_parameter

And set the value after the colon to be 99.

 

Now we need to fix their HP.  Currently, the Doram are using a stubbed out value for HP and SP that is way too low.  This is in job_basehpsp_db.txt.

First, search for :4218 (it will appear near the bottom of the file) and remove it, to removed the stubbed values.

Next, paste these into the document, at the bottom:

//Summoner HP
1,500,4218,0,60,69,80,92,105,119,134,150,167,185,204,224,245,267,291,315,341,368,395,423,453,483,515,548,582,617,653,690,728,767,807,848,890,933,978,1023,1070,1118,1166,1215,1266,1317,1370,1424,1479,1535,1592,1650,1709,1769,1830,1892,1955,2019,2085,2151,2219,2288,2357,2427,2499,2571,2645,2720,2796,2873,2951,3030,3110,3191,3273,3356,3440,3525,3612,3699,3788,3878,3968,4059,4152,4245,4340,4436,4533,4631,4730,4830,4931,5033,5136,5240,5345,5451,5559,5667,5777,5888,5999,6111,6225,6339,6455,6572,6690,6809,6929,7050,7172,7295,7419,7544,7670,7797,7926,8055,8186,8318,8450,8583,8718,8853,8990,9128,9267,9407,9548,9690,9833,9977,10122,10268,10415,10563,10713,10863,11015,11168,11321,11475,11631,11787,11945,12104,12264,12425,12587,12750,12914,13079,13245,13412,13580,13749,13920,14091,14264,14438,14612,14787,14964,15141,15320,15500,15681,15863,16046,16230,16415,16601,16788,16976,17165,17355,17547,17739,17931,18123,18315,18507,18699,18891,19083,19275,19467,19659,19851,20043,20235,20427,20619,20811,21003,21195,21387,21579,21771,21963,22155,22347,22539,22731,22923,23115,23307,23499,23691,23883,24075,24267,24459,24651,24843,25035,25227,25419,25611,25803,25995,26187,26379,26571,26763,26955,27147,27339,27531,27723,27915,28107,28299,28491,28683,28875,29067,29259,29451,29643,29835,30027,30219,30411,30603,30795,30987,31179,31371,31563,31755,31947,32139,32331,32523,32715,32907,33099,33291,33483,33675,33867,34059,34251,34443,34635,34827,35019,35211,35403,35595,35787,35979,36171,36363,36555,36747,36939,37131,37323,37515,37707,37899,38091,38283,38475,38667,38859,39051,39243,39435,39627,39819,40011,40203,40395,40587,40779,40971,41163,41355,41547,41739,41931,42123,42315,42507,42699,42891,43083,43275,43467,43659,43851,44043,44235,44427,44619,44811,45003,45195,45387,45579,45771,45963,46155,46347,46539,46731,46923,47115,47307,47499,47691,47883,48075,48267,48459,48651,48843,49035,49227,49419,49611,49803,49995,50187,50379,50571,50763,50955,51147,51339,51531,51723,51915,52107,52299,52491,52683,52875,53067,53259,53451,53643,53835,54027,54219,54411,54603,54795,54987,55179,55371,55563,55755,55947,56139,56331,56523,56715,56907,57099,57291,57483,57675,57867,58059,58251,58443,58635,58827,59019,59211,59403,59595,59787,59979,60171,60363,60555,60747,60939,61131,61323,61515,61707,61899,62091,62283,62475,62667,62859,63051,63243,63435,63627,63819,64011,64203,64395,64587,64779,64971,65163,65355,65547,65739,65931,66123,66315,66507,66699,66891,67083,67275,67467,67659,67851,68043,68235,68427,68619,68811,69003,69195,69387,69579,69771,69963,70155,70347,70539,70731,70923,71115,71307,71499,71691,71883,72075,72267,72459,72651,72843,73035,73227,73419,73611,73803,73995,74187,74379,74571,74763,74955,75147,75339,75531,75723,75915,76107,76299,76491,76683,76875,77067,77259,77451,77643,77835,78027,78219,78411,78603,78795,78987,79179,79371,79563,79755,79947

//Summoner SP
1,500,4218,1,8,10,13,15,18,20,23,25,28,30,33,35,38,40,43,45,48,50,53,55,58,60,63,65,68,70,73,75,78,80,83,85,88,90,93,95,98,100,103,105,108,110,113,115,118,120,123,125,128,130,133,135,138,140,143,145,148,150,153,155,158,160,163,165,168,170,173,175,178,180,183,185,188,190,193,195,198,200,203,205,208,210,213,215,218,220,223,225,228,230,233,235,238,240,243,245,248,250,253,255,258,260,263,265,268,270,273,275,278,280,283,285,288,290,293,295,298,300,303,305,308,310,313,315,318,320,323,325,328,330,333,335,338,340,343,345,348,350,353,355,358,360,363,365,368,370,373,375,378,380,383,385,388,390,393,395,398,400,403,405,408,410,413,415,418,420,423,425,428,430,433,435,438,440,443,445,448,450,453,455,458,460,463,465,468,470,473,475,478,480,483,485,488,490,493,495,498,500,503,505,508,510,513,515,518,520,523,525,528,530,533,535,538,540,543,545,548,550,553,555,558,560,563,565,568,570,573,575,578,580,583,585,588,590,593,595,598,600,603,605,608,610,613,615,618,620,623,625,628,630,633,635,638,640,643,645,648,650,653,655,658,660,663,665,668,670,673,675,678,680,683,685,688,690,693,695,698,700,703,705,708,710,713,715,718,720,723,725,728,730,733,735,738,740,743,745,748,750,753,755,758,760,763,765,768,770,773,775,778,780,783,785,788,790,793,795,798,800,803,805,808,810,813,815,818,820,823,825,828,830,833,835,838,840,843,845,848,850,853,855,858,860,863,865,868,870,873,875,878,880,883,885,888,890,893,895,898,900,903,905,908,910,913,915,918,920,923,925,928,930,933,935,938,940,943,945,948,950,953,955,958,960,963,965,968,970,973,975,978,980,983,985,988,990,993,995,998,1000,1003,1005,1008,1010,1013,1015,1018,1020,1023,1025,1028,1030,1033,1035,1038,1040,1043,1045,1048,1050,1053,1055,1058,1060,1063,1065,1068,1070,1073,1075,1078,1080,1083,1085,1088,1090,1093,1095,1098,1100,1103,1105,1108,1110,1113,1115,1118,1120,1123,1125,1128,1130,1133,1135,1138,1140,1143,1145,1148,1150,1153,1155,1158,1160,1163,1165,1168,1170,1173,1175,1178,1180,1183,1185,1188,1190,1193,1195,1198,1200,1203,1205,1208,1210,1213,1215,1218,1220,1223,1225,1228,1230,1233,1235,1238,1240,1243,1245,1248,1250,1253,1255

 

There's another problem.  Doram have no skills.  Their skills should already exist within db/pre-re/skill-db.txt, but they are not specified within skill-tree.txt,  Paste the following at the bottom to give skills to the Doram.

//Summoner
4218,5018,1,0,0,0,0,0,0,0,0,0,0 //SU_BASIC_SKILL##
4218,5019,1,5018,1,0,0,0,0,0,0,0,0 //SU_BITE##
4218,5020,1,5019,1,0,0,0,0,0,0,0,0 //SU_HIDE##
4218,5021,3,5020,1,0,0,0,0,0,0,0,0 //SU_SCRATCH##
4218,5022,1,5021,3,0,0,0,0,0,0,0,0 //SU_STOOP##
4218,5023,3,5022,1,0,0,0,0,0,0,0,0 //SU_LOPE##
4218,5024,1,5023,3,0,0,0,0,0,0,0,0 //SU_SPRITEMABLE##
4218,5025,1,5027,3,0,0,0,0,0,0,0,0 //SU_POWEROFLAND##
4218,5026,5,5024,1,0,0,0,0,0,0,0,0 //SU_SV_STEMSPEAR##
4218,5027,5,5028,3,0,0,0,0,0,0,0,0 //SU_CN_POWDERING##
4218,5028,5,5029,3,0,0,0,0,0,0,0,0 //SU_CN_METEOR##
4218,5029,5,5026,3,0,0,0,0,0,0,0,0 //SU_SV_ROOTTWIST##
4218,5031,1,5036,3,0,0,0,0,0,0,0,0 //SU_POWEROFLIFE##
4218,5032,5,5035,3,0,0,0,0,0,0,0,0 //SU_SCAROFTAROU##
4218,5033,5,5024,1,0,0,0,0,0,0,0,0 //SU_PICKYPECK##
4218,5035,5,5033,3,0,0,0,0,0,0,0,0 //SU_ARCLOUSEDASH##
4218,5036,5,5032,3,0,0,0,0,0,0,0,0 //SU_LUNATICCARROTBEAT##
4218,5037,1,5039,3,0,0,0,0,0,0,0,0 //SU_POWEROFSEA##
4218,5038,5,5040,3,0,0,0,0,0,0,0,0 //SU_TUNABELLY##
4218,5039,5,5038,3,0,0,0,0,0,0,0,0 //SU_TUNAPARTY##
4218,5040,5,5041,3,0,0,0,0,0,0,0,0 //SU_BUNCHOFSHRIMP##
4218,5041,5,5024,1,0,0,0,0,0,0,0,0 //SU_FRESHSHRIMP##
4218,5044,1,5024,1,0,0,0,0,0,0,0,0 //SU_SOULATTACK##
4218,5045,5,5047,5,0,0,0,0,0,0,0,0 //SU_POWEROFFLOCK##
4218,5046,5,5045,5,0,0,0,0,0,0,0,0 //SU_SVG_SPIRIT##
4218,5047,5,5031,1,0,0,0,0,0,0,0,0 //SU_HISS##
4218,5048,5,5053,1,0,0,0,0,0,0,0,0 //SU_NYANGGRASS##
4218,5049,5,5037,1,0,0,0,0,0,0,0,0 //SU_GROOMING##
4218,5050,5,5049,1,0,0,0,0,0,0,0,0 //SU_PURRING##
4218,5051,5,5050,1,0,0,0,0,0,0,0,0 //SU_SHRIMPARTY##
4218,5052,1,5046,5,5047,5,5045,5,0,0,0,0 //SU_SPIRITOFLIFE##
4218,5053,5,5025,1,0,0,0,0,0,0,0,0 //SU_MEOWMEOW##
4218,5054,1,5048,5,5053,5,5055,5,0,0,0,0 //SU_SPIRITOFLAND##
4218,5055,5,5025,1,0,0,0,0,0,0,0,0 //SU_CHATTERING##
4218,5056,1,5051,5,5050,5,5049,5,0,0,0,0 //SU_SPIRITOFSEA##
4218,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
//Baby Summoner
4220,5018,1,0,0,0,0,0,0,0,0,0,0 //SU_BASIC_SKILL##
4220,5019,1,5018,1,0,0,0,0,0,0,0,0 //SU_BITE##
4220,5020,1,5019,1,0,0,0,0,0,0,0,0 //SU_HIDE##
4220,5021,3,5020,1,0,0,0,0,0,0,0,0 //SU_SCRATCH##
4220,5022,1,5021,3,0,0,0,0,0,0,0,0 //SU_STOOP##
4220,5023,3,5022,1,0,0,0,0,0,0,0,0 //SU_LOPE##
4220,5024,1,5023,3,0,0,0,0,0,0,0,0 //SU_SPRITEMABLE##
4220,5025,1,5027,3,0,0,0,0,0,0,0,0 //SU_POWEROFLAND##
4220,5026,5,5024,1,0,0,0,0,0,0,0,0 //SU_SV_STEMSPEAR##
4220,5027,5,5028,3,0,0,0,0,0,0,0,0 //SU_CN_POWDERING##
4220,5028,5,5029,3,0,0,0,0,0,0,0,0 //SU_CN_METEOR##
4220,5029,5,5026,3,0,0,0,0,0,0,0,0 //SU_SV_ROOTTWIST##
4220,5031,1,5036,3,0,0,0,0,0,0,0,0 //SU_POWEROFLIFE##
4220,5032,5,5035,3,0,0,0,0,0,0,0,0 //SU_SCAROFTAROU##
4220,5033,5,5024,1,0,0,0,0,0,0,0,0 //SU_PICKYPECK##
4220,5035,5,5033,3,0,0,0,0,0,0,0,0 //SU_ARCLOUSEDASH##
4220,5036,5,5032,3,0,0,0,0,0,0,0,0 //SU_LUNATICCARROTBEAT##
4220,5037,1,5039,3,0,0,0,0,0,0,0,0 //SU_POWEROFSEA##
4220,5038,5,5040,3,0,0,0,0,0,0,0,0 //SU_TUNABELLY##
4220,5039,5,5038,3,0,0,0,0,0,0,0,0 //SU_TUNAPARTY##
4220,5040,5,5041,3,0,0,0,0,0,0,0,0 //SU_BUNCHOFSHRIMP##
4220,5041,5,5024,1,0,0,0,0,0,0,0,0 //SU_FRESHSHRIMP##
4220,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
4220,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
4220,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#

It's possible that you might not have the entries for skill-cast-db.txt or skill-require-db.txt either.  If you don't see Doram skills here, find the equivalent files in the db/re folder, and copy any summoner skills into these files.  I would give you the ones I have, but I changed a bunch of the values.

 

We're almost done!  The only problem now is that some of these skills still don't show up properly in-game.  This is because the skills need to be added to the client files that display the skill trees.  These are skilldescript.lub, skillinfolist.lub, and skilltreeview.lub.

First, find these files within your renewal grf file.  They are in data/lua files/skillinfoz.  As before, we'll need to copy the text from GRF editor to a notepad file to change it.

Some of the data for the Doram is already there, but it's incomplete, at least in the version I have.  The doram only have their pre-level 99 skills, skills like Chattering are not present.  If you want these skills, you'll need to add them.  I've attached some txt files to this post that have the entries you need to add.  These are not complete files, you'll need to merge these entries into the files that you have, then add them back to the grf and save.

 

And done!  If I didn't forget too many steps (I probably forgot a couple, I coded this quite some time ago), you should now have cats!

FinallyCats.png.15b739287c986203d8ca83e7fdf624fa.png

By the way, if you want colours for your cats, as by default they have only one palette available, I made a post that has some colour palettes for the cats elsewhere on the forum.

Good luck and happy catting!

novice.txt DoramDescriptions.txt skilldescript.txt skillinfolist.txt skilltreeview.txt

Edited by Tero
Added a section about missing HP values.
  • MVP 1
  • Like 1
Link to comment
Share on other sites

Hello, you're not using latest rathena file ?

since I saw above are still using itemdb TXT.

Link to comment
Share on other sites

Oh, that's true, my rathena is a little out of date, and I still have the non-yaml item-db.  I whipped you up a Yaml version.

  - Id: 1681
    AegisName: Short_Foxtail_Staff
    Name: Short Foxtail Staff
    Type: Weapon
    SubType: Staff
    Buy: 300
    Attack: 40
    Range: 1
    Slots: 3
    Jobs:
      Summoner: true
      Spirit_Handler: true
    Locations:
      Right_Hand: true
    WeaponLevel: 1
    EquipLevelMin: 1
    Refineable: true
    Script: |
      bonus bMatkRate,10;
  - Id: 1683
    AegisName: Abundantly_Foxtail
    Name: Enriched Foxtail Staff
    Type: Weapon
    SubType: Staff
    Buy: 4000
    Weight: 200
    Attack: 50
    Range: 1
    Slots: 3
    Jobs:
      Summoner: true
      Spirit_Handler: true
    Locations:
      Right_Hand: true
    WeaponLevel: 2
    EquipLevelMin: 12
    Refineable: true
    Script: |
      bonus bMaxSP,50;
      bonus bMatkRate,15;
  - Id: 1684
    AegisName: Long_Foxtail
    Name: Long Foxtail Staff
    Type: Weapon
    SubType: Staff
    Buy: 4000
    Weight: 200
    Attack: 70
    Range: 2
    Slots: 3
    Jobs:
      Summoner: true
      Spirit_Handler: true
    Locations:
      Right_Hand: true
    WeaponLevel: 2
    EquipLevelMin: 12
    Refineable: true
    Script: |
      bonus bLongAtkRate,5;
      bonus bMaxHP,200;
  - Id: 1685
    AegisName: DragonFry_Foxtail
    Name: Dragonfly Sitting Foxtail Staff
    Type: Weapon
    SubType: Staff
    Buy: 8000
    Weight: 300
    Attack: 60
    Range: 1
    Slots: 2
    Jobs:
      Summoner: true
      Spirit_Handler: true
    Locations:
      Right_Hand: true
    WeaponLevel: 3
    EquipLevelMin: 30
    Refineable: true
    Script: |
      bonus bInt,1;
      bonus bMaxHP,100;
      bonus bMaxSP,150;
      bonus bMatkRate,15;
  - Id: 1686
    AegisName: BigSize_Foxtail
    Name: Large Foxtail Staff
    Type: Weapon
    SubType: Staff
    Buy: 8000
    Weight: 300
    Attack: 90
    Range: 2
    Slots: 2
    Jobs:
      Summoner: true
      Spirit_Handler: true
    Locations:
      Right_Hand: true
    WeaponLevel: 3
    EquipLevelMin: 30
    Refineable: true
    Script: |
      bonus bLongAtkRate,8;
      bonus bDex,1;
      bonus bMaxHP,200;
      bonus bMaxSP,100;
  - Id: 1687
    AegisName: Short_Foxtail_Staff_
    Name: Short Foxtail Staff
    Type: Weapon
    SubType: Staff
    Buy: 300
    Attack: 40
    Range: 1
    Slots: 4
    Jobs:
      Summoner: true
      Spirit_Handler: true
    Locations:
      Right_Hand: true
    WeaponLevel: 1
    EquipLevelMin: 1
    Refineable: true
    Script: |
      bonus bMatkRate,10;
  - Id: 1690
    AegisName: Amazing_Foxtail
    Name: Mysterious Foxtail Staff
    Type: Weapon
    SubType: Staff
    Buy: 40000
    Weight: 400
    Attack: 70
    Range: 1
    Slots: 1
    Jobs:
      Summoner: true
      Spirit_Handler: true
    Locations:
      Right_Hand: true
    WeaponLevel: 4
    EquipLevelMin: 60
    Refineable: true
    Script: |
      bonus bMaxSP,300;
      bonus bMatkRate,20;
  - Id: 1694
    AegisName: Model_Foxtail
    Name: Foxtail Model
    Type: Weapon
    SubType: Staff
    Buy: 40000
    Weight: 300
    Attack: 130
    Range: 2
    Slots: 1
    Jobs:
      Summoner: true
      Spirit_Handler: true
    Locations:
      Right_Hand: true
    WeaponLevel: 4
    EquipLevelMin: 60
    Refineable: true
    Script: |
      bonus bLongAtkRate,10;
      bonus bMaxHP,500;
  - Id: 1697
    AegisName: Ex_Y_Model_Foxtail
    Name: Heavenly_Foxtail
    Type: Weapon
    SubType: Staff
    Buy: 60000
    Weight: 300
    Attack: 150
    Range: 2
    Jobs:
      Summoner: true
      Spirit_Handler: true
    Locations:
      Right_Hand: true
    WeaponLevel: 4
    EquipLevelMin: 85
    Refineable: true
    Script: |
      bonus bLongAtkRate,15;
      bonus bMatkRate,25;
  - Id: 15126
    AegisName: Doram_Only_Suit
    Name: Doram Suit
    Type: Armor
    Buy: 20
    Weight: 700
    Defense: 5
    Slots: 1
    Jobs:
      Summoner: true
      Spirit_Handler: true
    Locations:
      Armor: true
    EquipLevelMin: 18
    Refineable: true
    Script: |
      bonus bMaxHP,500;
      bonus bMaxSP,100;
  - Id: 20788
    AegisName: Doram_Only_Cape
    Name: Doram Manteau
    Type: Armor
    Buy: 20
    Weight: 300
    Defense: 3
    Slots: 1
    Jobs:
      Summoner: true
      Spirit_Handler: true
    Locations:
      Garment: true
    EquipLevelMin: 18
    Refineable: true
    Script: |
      bonus bFlee,5;
  - Id: 22077
    AegisName: Red_Eco_Boots
    Name: Doram Shoes
    Type: Armor
    Buy: 20
    Weight: 100
    Defense: 2
    Slots: 1
    Jobs:
      Summoner: true
      Spirit_Handler: true
    Locations:
      Shoes: true
    ArmorLevel: 1
    EquipLevelMin: 18
    Refineable: true
    Script: |
      bonus bCritical,5;

Hopefully this is all correct, I did the conversion by hand and I haven't tested it since my server doesn't use it, so if there's a small error somewhere you might have to edit it a tiny bit.

 

For skill-tree.yml, that's super easy, you can just copy everything summoner related from the renewal one into the pre-re one.  Unlike the one I have, the post-level 100 skills are present here, so you don't need to add anything from scratch.  The one thing you have to do is for the post-level 100 skills, their entries look like this

      - Name: SU_PURRING
        MaxLevel: 5
        BaseLevel: 100
        Requires:
          - Name: SU_GROOMING
            Level: 5

You need to remove the "BaseLevel: 100" line (just completely delete it), because of course it's not possible for your Doram to be over level 100 in Pre-Re.  For skill-cast.yml and skill-require.yml you can similarly just copy from renewal.

 

While reviewing the new version, I also found that job-stats.yml and job-basepoints.yml under pre-re does not have the values for Summoner, you need to copy the summoner values for both of these from the renewal version of the file into the pre-re version.  They don't need any changes.

Edited by Tero
Slight correction.
Link to comment
Share on other sites

I found a couple things during some further testing that experienced users may want to look at.  To perform these changes, you need to be able to make changes to your source code and recompile.  These are not mandatory for Doram to work but some skills will not work quite as intended without them. 

 

In status.cpp, there are some Doram-specific buffs that affect Matk.  These are only applied when in renewal mode, so these buffs have no effect under PRE-RE without a code change.

To make these work, you need to add the following to the method "status_calc_matk" in status.cpp.  

	if (sc->data[SC_CATNIPPOWDER])
		matk -= matk * sc->data[SC_CATNIPPOWDER]->val2 / 100;
	if (sc->data[SC_CHATTERING])
		matk += sc->data[SC_CHATTERING]->val2;
	if (sc->data[SC_DORAM_MATK])
		matk += sc->data[SC_DORAM_MATK]->val1;

They go right before the line:

return (unsigned short)cap_value(matk,0,USHRT_MAX);

 

Another Matk Bonus is granted by investing 20 or more points in the plant tree while having Power of Land  This too is not applied in PRE-RE.

This is also in status.cpp, in the method status_calc_bl_main.

Right after this code:

	if (bl->type&BL_PC && sd->matk_rate != 100) {
			status->matk_max = status->matk_max * sd->matk_rate/100;
			status->matk_min = status->matk_min * sd->matk_rate/100;
		}

You need to insert the following to apply the Matk bonus:

	if (bl->type&BL_PC && pc_checkskill(sd, SU_POWEROFLAND) > 0) {
			if ((pc_checkskill(sd, SU_SV_STEMSPEAR) + pc_checkskill(sd, SU_CN_POWDERING) + pc_checkskill(sd, SU_CN_METEOR) + pc_checkskill(sd, SU_SV_ROOTTWIST) +
				pc_checkskill(sd, SU_CHATTERING) + pc_checkskill(sd, SU_MEOWMEOW) + pc_checkskill(sd, SU_NYANGGRASS)) > 19)
				status->matk_min += status->matk_min * 20 / 100;
				status->matk_max += status->matk_max * 20 / 100;
		}

By the way, a minor glitch exists here, RO only recalculates your stats, including MAtk, when you learn a passive skill, not an active skill, even though this stat change can be applied by learning an active skill.  You could actually fix this if you wanted (it's in pc_skillup in pc.cpp) with the following changes.

Find this:

	if( !skill_get_inf(skill_id) )
		status_calc_pc(sd,SCO_NONE); // Only recalculate for passive skills.

Change it to this.

	status_calc_pc(sd, SCO_NONE); // Always recalc because of Power of Land
	if (!skill_get_inf(skill_id))
		; // Do nothing to avoid breaking the logic

You now receive the Matk bonus immediately.

 

There is also a mistake in the skill "Picky Peck" in battle.cpp.  Search for this code.

	if (status_get_hp(target) < status_get_max_hp(target) >> 1)
				skillratio *= 2;

This is actually intended to apply to Bite, not Picky Peck (the description states that Bite is the skill that does extra damage on weakened targets).  You can cut these lines and paste them a few lines above under 

	case SU_BITE:
			skillratio += 100 + sd->status.base_level * 10;

 

In the old version of the code only, there's a mistake in checking the heal bonus granted by power of sea.

if (pc_checkskill(sd, SU_TUNABELLY) == 5 && pc_checkskill(sd, SU_TUNAPARTY) == 5 && pc_checkskill(sd, SU_BUNCHOFSHRIMP) == 5 && pc_checkskill(sd, SU_FRESHSHRIMP) == 5)

This does not correctly check the entire seafood skill tree to see if the total is 20 or higher.  Replace it with this.

if ((pc_checkskill(sd, SU_TUNABELLY) + pc_checkskill(sd, SU_TUNAPARTY) + pc_checkskill(sd, SU_BUNCHOFSHRIMP) + pc_checkskill(sd, SU_FRESHSHRIMP) +
			pc_checkskill(sd, SU_GROOMING) + pc_checkskill(sd, SU_PURRING) + pc_checkskill(sd, SU_SHRIMPARTY)) > 19) 

This is fixed in the latest version (the skill counting is refactored into its own method and is correct) so if you're on latest you don't have to do this.

 

Additionally, the skill "Fresh Shrimp" skill has some very strange logic, the wiki states it heals half of Heal Level 5 per tick, but in Rathena's code, the value is simply set to 178, regardless of your stats / skill level / whatever.  This also causes healing bonuses not to be applied and generally makes the skill nearly worthless.

This is also in status.cpp,  Search for 178, the only instance will be in the code we need to alter.

My fix is simply to insert this before the line  "if (sd)"

val2 = skill_calc_heal(src, bl, SU_FRESHSHRIMP, val1, true);

skill_calc_heal already has a heal formula for fresh_shrimp which otherwise goes unused.

Edited by Tero
More corrections.
Link to comment
Share on other sites

Since I have zero experience with scripting/coding I rely on Guides like this one.

So far everything works fine except Catnip Meteor. If I use it the Map Server crashes.... 

Disabled the skill for now since I'm not able to fix it.

Still having a blast with Dorams on PRE-RE 

Big Thanks for the Guide 🙂

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.