Jump to content

Playtester

Developer
  • Posts

    905
  • Joined

  • Last visited

  • Days Won

    26

Posts posted by Playtester

  1. Okay I searched for a while and figured out the root cause is the config change that came with the commit above. It also affects pre-renewal.

    You will need to find battle.conf config file and change:

    // Who should have a baseatk value (makes str affect damage)? (Note 3)
    enable_baseatk: 0x29F

    Back to:

    // Who should have a baseatk value (makes str affect damage)? (Note 3)
    enable_baseatk: 9

     

    • Love 1
  2. Are you on renewal because if you are there are new damage calculations for monsters: https://github.com/rathena/rathena/commit/fe197bfa120aef5fd31c6896122b35fdc06774b4

    Basically the ATK displayed in mobinfo is:

    mob->status.batk + mob->status.rhw.atk, mob->status.batk + mob->status.rhw.atk2

    Base attack for monsters:

    str = dstr + level;

    Atk is 80% of Atk.

    Atk2 is 120% of Atk.

    So let's take a look at lunatic:

    // ID,Sprite_Name,kROName,iROName,LV,HP,SP,EXP,JEXP,Range1,ATK1,ATK2,DEF,MDEF,STR,AGI,VIT,INT,DEX,LUK

    1063,LUNATIC,Lunatic,Lunatic,3,55,1,36,27,1,11,1,18,0,10,3,3,0,8,5

    LEVEL=3
    ATK1=11
    STR=10

    Base attack = 10+3 = 13
    ATK1 = 11 * 0.8 = 8
    ATK2 = 11 * 1.2 = 13

    So Lunatic damage is 21~26.

  3. Just do the modifications you want in the skill_db.txt

    For pre-re it would be this one: https://github.com/rathena/rathena/blob/master/db/pre-re/skill_db.txt

    // 06 nk (skill damage properties):
    //    0x01 - No damage skill
    //    0x02 - Has splash area
    //    0x04 - Damage should be split among targets
    //    0x08 - Skill ignores caster's % damage cards (misc type always ignores)
    //    0x10 - Skill ignores elemental adjustments
    //    0x20 - Skill ignores target's defense (misc type always ignores)
    //    0x40 - Skill ignores target's flee (magic type always ignores)
    // 0x80 - Skill ignores target's def cards

     

  4. Make sure you modify the correct file. If you are compiling on renewal you have to modify /re/skill_cast_db.txt instead.

    //-- CH_SOULCOLLECT
    401,0,0,0,600000,0,0,2000

    Right now it's defined to have a 2 second fixed casting for the skill.

    I don't know what you want to adjust but just put whatever values you want here.

    Columns are described at top:

    // SkillID,CastingTime,AfterCastActDelay,AfterCastWalkDelay,Duration1,Duration2,Cool Down,Fixed Casting Time

     

  5. Remove the call of "clif_skill_nodamage" in skill.cpp.

    In case of AL_HEAL that would be here:

    clif_skill_nodamage (src, bl, skill_id, heal, 1);

    If you don't want to remove it for HLIF_HEAL and AB_HIGHNESSHEAL then you need to write an "if".

    • Upvote 2
  6. Not easily, but if you know to code then the easiest approach is to create a new skill and make the item use that skill. The skill then needs be implemented in:

    int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, t_tick tick, int flag)

    And need some code along those lines:

    if (!status_has_mode(&dstmd->status,MD_AGGRESSIVE))
    	sc_start4(src, bl, SC_MODECHANGE, 100, 1, 0, MD_AGGRESSIVE, 0, 60000);

     

  7. On 5/23/2019 at 3:24 PM, HappyMan said:

    if i set it 600 i cant spam some skill like bowling bash

    Yes, that's what you wanted, no? Not being able to spam skills anymore when using 3rd party tools.

    On 5/23/2019 at 3:24 PM, HappyMan said:

    what i want is to have minimal or a little bit cast for like fire bolt etc.

    If you want cast time, that's possible too but not as easily. However, I want to note that if you want to avoid 3rd party hacks, I recommend using my first suggestion to set that setting above to 600. Then even with 3rd party tools you can't cast the spell more than once every 600ms.

    If you add a small cast time to all skills, then 3rd party tools get even more exploitable as the aftercast delay will be even lower for all the skills. If you still want that, you will have to edit skill.cpp:

    	// return final cast time
    	time = max(time, 0);

    Change to e.g.:

    	// return final cast time
    	time = max(time, 500);

    Then all skills have a cast time of 500ms minimum.

  8. I assume the actual problem is that the health of the icewall is only set for the original cell and not for the others, so the others immediately time out. That's the impression I get when watching the video.

    I don't have a client anymore to test this on a fresh rAthena checkout, though, so I don't know if that's a bug in the emulator or if one of your changes (or a bad merge) are the cause.

    The setting of health happens in skill.cpp here:

    			case WZ_ICEWALL:
    				unit_val1 = 200 + 200*skill_lv;
    				unit_val2 = map_getcell(src->m, ux, uy, CELL_GETTYPE);
    				break;

    I'd try to start debugging there...

  9. Well, I don't like renewal... that's the main reason.

    euRO has no classic server.

    iRO had a classic server on which I actually played, but it's now blocked for EU countries.
    Even if it wasn't blocked I had several issues with it: The client was outdated, so all the quality of life features in renewal weren't supported. And the lag was pretty bad. When I clicked I had to wait 1 second before my character even started moving.

    It's not like I'm still playing RO, but I totally would play again if a new close-to-official pre-renewal server with at least 500 players appeared. I'd play on official too if they offered that and had proper support for it.

    Don't care much about payment model.

  10. On 5/13/2019 at 4:58 PM, OscarScorp said:

    This may sound like a crazy idea but I want your feedback on this:
    Pre-renewal system with 3rd classes but the max level will remain 99. Once the player has reached Transcendent class lv99, it will turn High Novice (again) > High 1st Class (again) > 3rd Class at level 50, with a max level of 99.

    I actually thought about such a system before.

    Basically after you transcend and reach 2nd job you can choose between 2nd job trans or 3rd job non-trans version.

    Of course you'd need to completely rebalance the skills. Not just by reducing damage, but by giving them a utility other than pure force that puts them apart from the 2nd job trans skills without overpowering them.

    • Upvote 1
  11. I would see a high monster variety as a good thing. And to some extend stronger monsters on the map can also be interesting (if there aren't more than say 5). Then it has these "Oh shit, there's a mimic over there" kind of moments.

    I agree that all the maps should be readded (and these could be used to give the remaining monsters their dominant map). And also to have easier monsters near towns.

    • Upvote 1
  12. You would need to implement a level down mechanism for that. That's pretty tough to do as you'd also have to reward the stat points. That means you will need to remember where the character put them last (unless you want this to result in a full stat reset). Would probably require quite some coding.

    I assume you mainly want the insurance to function as money sink.

    But you could have a similar effect by selling long-lasting food items. They give some bonus stats but expire on death. So it's kind of similar to downleveling, as you lose stats on death. And since they are sold, players can invest zeny to get the boost back. That's an easier alternative.

    • Like 1
  13. Pre-renewal and renewal stats don't fit together at all. Renewal monsters have like 5 times less ATK and on higher levels give a lot less EXP. Besides, all the monster levels have been changed.

    Also pre-renewal exp was already pretty unbalanced towards the end. The addition of Anubis, Thor Volcano, the increase of various old monster Exp all resulted in there only being certain regions worth leveling in anymore.

    Also as said the problem is that Gravity tried to make new things more and more worthwhile. Most equip drops from old monsters became useless. While keeping the player base interested in new things might have made sense for official servers which exist for years and mostly contain veteran, for the overall balance or new private servers that's completely counterproductive.

    Not to mention that the exp tables themselves are also a mess (you reach max job level way too early and then are stuck with not getting any skill points for 80% of the game).

    ------------------------

    That being said, if you just wanted to solve the monster exp issue in a pretty easy way, then I'd just use a spreadsheet program that calculates a monster's potential (defensive and offensive) which results in a recommend HP:Exp ratio, then take the Base Exp:Job Exp from pre-renewal and automatically calculate the perfectly balanced Exp/JExp values of each monster.

    I actually had this as a project once. It's fairly easy to calculate defense and damage per second of a monster, where I got stuck was the skills. Monster skills can have a huge impact on their potential. And it might even depend on INT, but only for those that have strong spells (though I guess spell potential isn't very high in renewal anymore?). Plus you would also want to consider monster speed, because if they can be killed from a safe distance, then it's like the damage per second is zero. So plenty of more complex things to consider which isn't that easy to do with a simple spreadsheet formula. You could try to ignore the complexity and just see where it leads, though.

    -------------------------

    Of course nothing beats carefully handcrafted balance.

    But then again, even if I accomplished the perfect balance by putting in hours and hours of work, it will not really be worth it for a private server these days. Why? Because they lack population. What's the point if every single map is 100% balanced? Then players will simply spread around the whole world of Ragnarok and you'll never see any oter person again. The fact that there are only 10-20 useful maps in pre-renewal at least made people meet each other frequently.

    -------------------------

    @Seravy's approach is already a much easier solution to the problem. Give more exp the higher the level of the monster is compared to yours.

    The only issue I see with this is that renewal is WAY too easy early on. If there's no exp penalty for killing monsters above your level, then you can easily go and kill monsters 30 or more levels above you. This is especially true for monsters that are immobile or very slow. The system doesn't account for this at all. It consequently also gives an unfair advantage to ranged classes, which will still just go solo and wouldn't be interested in partying up at all.

    I guess excluding immobile monsters from the bonus and maybe having a lower bonus for slow monsters could work. Or only make the bonus apply in teamwork.

    At the same time monsters should also deal more damage when they are above your level, so you can't easily survive any that are far above.

    Though will still result in pretty boring exp values because renewal exp is streamlined (same level monsters often give same amount of exp) and jexp is still way too high.

  14. Sounds like there isn't really a reason for renewal going by your list. Unless you enjoy a 100% linear experience and NPCs telling you where to go. But if you like that, might as well play any other MMORPG.

    I really gave up on RO after the renewal update because it turned RO from something unique into being just like any other MMORPG just with worse graphics and controls.

    The problem with pre-renewal really was only that its stat, class and equipment system really hit a cap. It got easier and easier to reach instant cast, status change immunity or defensive and resistance values so high you hardly took damage anymore.

    Gravity had to add better and better gear to keep players playing, but it also slowly but steadily ruined game's balance.

    Best of both worlds?

    Honestly not familiar enough with renewal to say what I'd take from it. But what definitely should be taken from pre-renewal was the old pre-trans monster difficulty / exp balance. Basically back then a monsters 2 times harder gave 3 times more exp. There was no exp or drop penalty at all because it wasn't needed. The reason you aimed for fighting stronger monsters was simply because it was more rewarding. You could really just go and play in any location you want. That's why partying up was also so much worth it. Due to the free choice of location, there was no "This region doesn't match my level" or "I'm currently in a different part of the quest so there's not much sense for me to join", you could just randomly make up "Today I'm doing a Glastheim party, who wants to join?" and you could easily find people joining from a wide level range.

    If they could have just managed to keep that feeling and just improve the game's balance rather than turning the whole game into another WoW clone...

    • Upvote 2
  15. Wasn't it always like that? When I last checked this I figured the client refuses to send anything to the server while in auto attack except for move commands. Probably would need to require catching packets from official server for auto attack and see if there's anything different.

  16. Try removing the self-collision part in skill.cpp:

    					// Self-collision
    					if(bl->x >= min_x && bl->x <= max_x && bl->y >= min_y && bl->y <= max_y)
    						skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,(flag&0xFFF)>0?SD_ANIMATION:0);

    Damage you can set in battle.cpp:

    		case KN_BOWLINGBASH:
    		case MS_BOWLINGBASH:
    			skillratio += 40 * skill_lv;
    			break;

    Change it to:

    		case KN_BOWLINGBASH:
    		case MS_BOWLINGBASH:
    			skillratio += 100 + 80 * skill_lv;
    			break;

    For double damage.

    • Upvote 1
×
×
  • Create New...