Page 1 of 1

Custom Ability / Spell / Trait limitations

Posted: Thu Oct 06, 2016 5:58 am
by foowater
Hi all,

So I finally decided to set up my own server for the first time and play around with the scripting / programming.
I wanted to have some fun and see what my limitations are for creating new abilities / spells etc.

First of all, I know that you can't for example add "Fire" to Warrior as stated here: https://wiki.dspt.info/index.php/Custom ... _change.3F
Which is too bad, but moving on.

I've tried to add Dual Wield to Warrior by adding a row to the traits table, but even though the traits shows up in the Job Traits menu it doesn't seem to work. Is this not possible? Also a client limitation?

Then I tried adding Meditate to Warrior. This was possible, however if I wanted both Warrior and Samurai to have this Ability. To achieve this I had to remove the PRIMARY KEY constraint from the abilities table.

I wanted to change the effect of Meditate for Warrior, for example activate Berserk instead. I don't however want this to affect Samurai. I noticed that there's a name column in the abilities table and I thought that was mapped to the ability Lua scripts, however after changing the name to "meditate_war" and creating mediate_war.lua it still ended up using plain meditate. How are these abilities mapped to Lua?

So in the end I've only been able to add existing Job Abilities to other Jobs, but I would like to create "new" abilities instead and add Traits, is this somehow possible?

Sorry if these questions have already been asked, I tried looking through the forums / documentation but couldn't really find much. Most people just want retail FFXI so I understand.

Re: Custom Ability / Spell / Trait limitations

Posted: Sat Oct 08, 2016 11:29 pm
by TeoTwawki
The client restricts spells and equipment, but will accept any Job Ability, Job Trait, or Weaponskill on any job class you assign it to from the server's end with only a few exceptions - like Dual Wield. The reason why your dual wield wouldn't "work" on a warrior is the client knows warrior doesn't get that natively. You can give it to thf at lv 1 though, because later at high lv thf does get that natively and it doesn't constrain it by level on the client side.

If you try to make new abilities or traits, without modifying the client right now you can only barrow other text strings in the same dat file (rom\0181\72.dat it also has all the weaponskills, which the packet for weaponskills has only 8 bits for the ID so no ws can be above ID 255)

For your alternate warrior version of meditate (not really sure why you wanna do that but eh w/e) I say let'em use the same script but toss in a conditional check for the job in its effect script.

Code: Select all

if (player:getMainJob() == JOBS.SAM) then
    -- samurai code here
elseif (player:getMainJob() == JOBS.WAR) then
    -- warrior code here
end

Re: Custom Ability / Spell / Trait limitations

Posted: Sun Oct 09, 2016 11:11 am
by foowater
I was hoping that such conditionals wouldn't be necessary but it seems I have no choice. Also the reason I'd want this is so I can add /new/ abilities to jobs and have simply have fun :).

It's too bad that the client limits us to what we can do, would be cool to reverse engineer it and try to lift these limitations. I've never really been good at this low level stuff sadly.

Anyway thanks a lot for your reply, I really appreciate the work you guys do at Darkstar :)

Re: Custom Ability / Spell / Trait limitations

Posted: Fri Jun 29, 2018 6:56 pm
by KigenAngelo
I know this is a necro bump but it is possible to say give "Fire" to WHM. It requires editing ROM\118\114.dat as well as any server side edits to the spell_list table.

If you take a look at the Windower\ResourceExtractor you can see how they pack the spells resources.
proof of concept.png
Having "Fire" show up in the menu as a199 WHM