Jump to content

Playtester

Developer
  • Posts

    802
  • Joined

  • Last visited

  • Days Won

    21

Everything posted by Playtester

  1. Official servers have a drop penalty on level difference, but many private server remove that "feature". I only play on pre-renewal servers so not sure how many there are that actually have a drop penalty.
  2. It's basically is the max of both values. So if aDelay is 76ms and aMotion is 384ms, then the delay between the attacks is 384ms. Basically "aDelay" determines the time a monster has to wait until it can attack again. "aMotion" determines the time a monster cannot do anything at all after an attack. If aMotion is higher than aDelay, the monster has to stand still until it can attack again (aMotion). If aDelay is higher than aMotion, then the monster can already move again after aMotion milliseconds, but still cannot attack until after aDelay milliseconds. Divine Pride currently has incorrect ASPD display because it only considers aMotion, not aDelay. So you cannot get the aDelay value from Divine Pride at all. I notified Dia, he will fix it on Divine Pride.
  3. 1) You add the numbers together that you want it enabled for. For example if you only want Heal and Sactuary to be boosted by this bonus, then you would put "3" (1+2). If you want everything to be affected from that list you put 1+2+4+8+16+32+64+128+256=511. 2) If you are running renewal, you can define the exp and drop penalty here: https://github.com/rathena/rathena/blob/master/db/re/level_penalty.yml
  4. If the config files are enough then I recommend using them. If you want a special implementation, you'd need to modify the source code. The right position in the code depends a bit on how you want to modify it.
  5. The condition for a status change is in status_get_sc_def: if (skill != nullptr && skill->skill_type == BF_MAGIC && // Basic magic skill !skill->inf2[INF2_IGNOREGTB] && // Specific skill to bypass ((skill->inf == INF_ATTACK_SKILL || skill->inf == INF_GROUND_SKILL || skill->inf == INF_SUPPORT_SKILL) || // Target skills should get blocked even when cast on self (skill->inf == INF_SELF_SKILL && src != bl))) // Self skills should get blocked on all targets except self return 0; If you really changed the skill used to "misc" then the status should never be blocked by GTB. Even easier would be to just use the "IgnoreGTB" flag. If it still doesn't work, then maybe it's already blocked in skill.cpp by something. Easiest is to just debug it. Put a breakpoint on the line I quoted above (first line) and see if it even reaches that code when you use the scroll.
  6. The "0x" in front of the number is the indicator that the number is in hex by the way.
  7. Need more info. You want to increase BB's range? In PVP only?
  8. I would assume in status.cpp: void status_calc_misc(struct block_list *bl, struct status_data *status, int level) // Flee stat = status->flee; stat += level + status->agi; status->flee = cap_value(stat, 1, SHRT_MAX); Change formula to whatever you want. 50% AGI would be: // Flee stat = status->flee; stat += level + status->agi/2; status->flee = cap_value(stat, 1, SHRT_MAX); Luk does not increase flee in pre-renewal anyway. Perfect flee you find as Flee2.
  9. Not sure what the default is, maybe better set bonus to 0 instead of removing the whole line. Make sure to set it to 0 for all levels.
  10. Officially, Ragnarok Online has a interval of 20ms. If you use rAthena, you can customize the intervals for different things yourself by adjusting some constants. A while ago I set the base timer interval to the official value by default. // If the server can't handle processing thousands of monsters // or many connected clients, please increase TIMER_MIN_INTERVAL. // The official interval of 20ms is however strongly recommended, // as it is needed for perfect server-client syncing. const t_tick TIMER_MIN_INTERVAL = 20; const t_tick TIMER_MAX_INTERVAL = 1000; Examples: - Unit skills like Firewall and Heat can hit 50 times a second if there's no knockback - Skills with an interval not dividable by 20, such as the interval between each waterball hitting will alternate their delays (in case of waterball it's 140->160->140->160 instead of 150ms)
  11. You need to recalculate the renewal def to pre-renewal def through a formula if you want it to result in the same % damage reduction. For example 214 DEF and 134 MDEF in Renewal is the same as 32 DEF and 52 MDEF in pre-renewal. I've attached a tool with which you can convert all the values you want. prerenewal.zip
  12. You should list if you are using renewal or pre-renewal and at least give the item's YAML entry that reduces the DEF.
  13. Your refine.yml seems pretty old, are you sure you don't get errors when started map server about outdated files? I can't spot any error in the file like lacking armor bonus at level 10 but it's clearly outdated (only 6.6 def bonus on +10 instead of +7). And this is version 1 while the current source code would expect version 2. So maybe your server version is old and has this as a bug that's already been fixed or you updated your server and it expects version 2 but you are still using version 1.
  14. Hmm works fine for me in pre-re compile without any changes. You probably need to check your refine.yml files. Maybe they are outdated (you should see that in your map-server log) or maybe you customized it but forgot to define the bonus for level 10. - Level: 10 Bonus: 700 BlacksmithBlessingAmount: 4 Chances: - Type: Normal Rate: 1000 Price: 2000 Material: Elunium BreakingRate: 10000 - Type: Enriched Rate: 2000 Price: 2000 Material: Enriched_Elunium BreakingRate: 10000
  15. Resistance from items is applied after the stat resistance. It's multiplicatively, not additively. 100% reduced by 90% = 10% 10% reduced by 20% = 8%
  16. It's actually both in pre-renewal. It's HardDef+SoftDef basically. ATK_RATE2(wd->damage, wd->damage2, attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_R) ?100:(is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_R) ? (int64)is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_R)*(def1+vit_def) : (100-def1)), attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_L) ?100:(is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_L) ? (int64)is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_L)*(def1+vit_def) : (100-def1)) ); Only need to change the (def1+vit_def) part if you want to customize it.
  17. As for the latest file you can always get it from here: https://github.com/rathena/rathena/ Also if you didn't check your changes into Git then you can just use a diff tool to compare the changes and undo them (I use TortoiseGit for it).
  18. Hmm, there's a exe diff to restore the old dance effects, maybe this could be used to remove this effect.
  19. Well, you can certainly use the GRF from iRO if you want for example the iRO translation. But keep in mind that iRO might have customizations in the descriptions that don't apply to kRO and thus are not in rAthena. As for the executables, you probably can't use iRO ones unless they are really old and not encrypted.
  20. Calc flags only determines when your stats get recalculated, but you still need to implement the actual bonus you want to give it.
  21. It's possible but it requires quite some coding. Basically you'd need to add a variable in the md to the link to a sd (or bl). Then send all the "clif" information that involves the md only to the player linked to the sd / bl in the md data. Also all attack and damage commands from other sources then need to be ignored, otherwise other players could still damage it with AoE effects.
  22. If it crashes you probably have a syntax error in the file. Make sure you used spaces instead of tabs and the number of spaces is correct. That's the most common mistake I make. Looks like you put too many spaces before the script part.
  23. Hmm this also works for me. I tried vs. Medusa and with Evil Druid Card or Medusa Card, I never get petrified. The code is also in place in status.cpp: case SC_STONE: case SC_STONEWAIT: case SC_FREEZE: // Undead are immune to Freeze/Stone if (undead_flag && !(flag&SCSTART_NOAVOID)) return 0; break; You could debug there and check why it doesn't reach the "return 0" part in your test case. For Medusa Card the could would be in status_get_sc_def: // Item resistance (only applies to rate%) if (sd) { for (const auto &it : sd->reseff) { if (it.id == type) rate -= rate * it.val / 10000; } if (sd->sc.data[SC_COMMONSC_RESIST] && SC_COMMON_MIN <= type && type <= SC_COMMON_MAX) rate -= rate*sd->sc.data[SC_COMMONSC_RESIST]->val1/100; } Note: That if you set undead_detect_type to "race", then of course Evil Druid Card doesn't protect you from Stone (has nothing to do with mobs, though). Medusa card would work either way.
  24. Red is deleted lines and green is added lines, yes. But I honestly don't recommend manually updating things and rather learn to work with diff files or just keep rAthena up-to-date, because many fixes are not just one commit but also have follow-up fixes. You will really want to merge all fixes done to rAthena. Usually it shouldn't be too hard, as said even if you have local changes, you can stash them, then pull and then stash pop and you have your custom changes back in (only if the same line was changed you need to do manual merging). Maybe you can try it in a local copy.
×
×
  • Create New...