Comments (9)
I liked your proposal.
Bringing the skillratio to the skill data base is a great idea, it makes the entire structure more organized.
My server has many customized skills, so having this facility in manipulating the skillratio through skill_db is interesting, very intuitive indeed.
Simple formulas (that do not require a special formula) simply vary the % by the skill level.
For those who want to change the default balancing, it seems very practical to me.
It wouldn't be possible to include formulas with attributes, right? In this case we would use CustomSkillRatio for more elaborate calculations.
(BaseRatio and RatioPerLevel is also excellent*)
from hercules.
Thanks for the feedback.
About attributes (I believe you meant stats like STR/AGI/etc), you are right, it would need the use of custom formula.
Since we are not doing formula evaluation in db, I think moving stats as having their own fields would bring too much clutter to the skill db, and usually they are not very straightforward in formulas. Some gives % to ratios, some needs like 10 points for 1% and so on. Doing that via db seems like too much. We would need to make too many names and conditionals that would make it hard to maintain.
In the other hand, one could make a custom ratio formula that uses skill data somehow for that. For example, a custom ratio that does SkillRatio + STR * SkillData1
. I made an example in the main post (check the repo link) where I did something like that for ninja charms instead of str.
Edit: link to charms example - guilherme-gm@265fe57#diff-759fea9dcd40522e86217dd352aadd687488dff49c67aa880610d4aeaaeb89c0R955
from hercules.
oh yes, the idea already includes being able to create personalized formulas (using str, agi, among other conditions), so it's great.
well... ease of manipulating the skillratio with improved organization and customization support.
I can't think of an example where it wouldn't work.
great job.
from hercules.
I also think is a nice idea and a first step towards having a one skill-one function structure. It also helps removing skill related stuff from battle.c.
The second alternative for the conf structure seems a bit alien. The first one goes better with what we already have, even if it's a little bit more verbose.
On another note, skill.c is already 25k lines long. Maybe it's better to add another file for this purpose? Something like skillratio.c, as it would also host quite a few custom functions. Maybe we should also split skill_db.conf into separate files.
from hercules.
Yeah, I like your points. Totally agree with new files too.
I am not sure about how we could split skill_db.conf, the cleaner way seems to be by category like jobs/npc/homun/etc. but there are gaps in the middle, which may make it harder to find gaps where skill ids are empty.
For example, after DC_SERVICEFORYOU, there are 3 NPC skills, followed by 3 marriage skills, 1 item skill, and back to a few NPC skills.
If we wanted to keep the ID order, we would need 4 files here (Npc1, Marriage1, Item1, Npc2).
Another option would be to split by ID range, but in this case we would have every file with a mix of types of skills
Yet another option would be to simply group by NPC / Jobs / Marriage / etc, but in this case we would have something like that: (All ids are made up)
Job.conf : IDs 1 .. 100 , 150 .. 200, 1000 .. 1100
Npc.conf : IDs 101..110 , 400 .. 600, 1300 .. 1500
And it would be harder to, for example, tell that there is a gap between 110 and 150. One could still go to source and check the enum, though (which seem easier than reading the db anyway)
from hercules.
I may have spoken too fast about splitting skill_db.conf. Seems like, contrary to source files, configuration files that share the same settings/properties, have no problem being too large. It's plain text after all.
It does break the blame tool of github though, that's the only disadvantage I see.
from hercules.
I do like the idea of splitting if we have a good approach xD although it works in a single file, too big text files is still hard to deal with
from hercules.
I remember that they once posted something similar on the Hercules forum but it had other settings besides the skillratio, I think it would be very interesting if this were applied and not just limited to the skillratio. It would greatly avoid using the compiler to make changes to skills
Here is the link, the person who wrote about it was Beret
https://board.herc.ws/topic/15716-new-fields-in-skill-db/?tab=comments#comment-86650
from hercules.
I remember that they once posted something similar on the Hercules forum but it had other settings besides the skillratio, I think it would be very interesting if this were applied and not just limited to the skillratio. It would greatly avoid using the compiler to make changes to skills
Here is the link, the person who wrote about it was Beret
https://board.herc.ws/topic/15716-new-fields-in-skill-db/?tab=comments#comment-86650
I lke this and agree. But I would rather take one step at time than do everything at once
from hercules.
Related Issues (20)
- Possible bug on item package randomness
- HULD don't work when called by timers HOT 2
- Make the MD_BOSS have the flag that boss_monster have
- Storm Gust counter (sg_counter) does not refresh on Mob death HOT 2
- Compiler warnings when SECURE_NPCTIMEOUT enabled
- Renewal skill rebalance.
- Monsters attack after death HOT 2
- Temp skills are not clearing from skill tree
- [ Offer ] Get GID of playerattached homunculus HOT 1
- I dont know how to coonect to server? HOT 1
- Status Effect refactoring for cleaner code HOT 12
- Flee reduction doesn't match official/iRO Classic Wiki HOT 1
- Quest Log System Packet Error to Clients after 2019-06-05f HOT 2
- Shield sprite view is not showing HOT 3
- Auto Shadow Spell Nullpo Error HOT 1
- Rogue Skill is Reset after copying Backstab from another Rogue HOT 2
- @reloadskilldb bug HOT 1
- Char Server Crash from Guild Storage(?) HOT 3
- SC_DEFENDER typo
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hercules.