Jump to content

Playtester

Developer
  • Posts

    905
  • Joined

  • Last visited

  • Days Won

    26

Everything posted by Playtester

  1. Well, isn't it what many server owners do? Trying to change certain aspects of RO to make it better? If you really mean that it's basically a new game, but some of the aspect from RO are used. Well, I think there are a bunch of things you could copy from RO: 1. The stat system is really nice and well balanced, if you combine some ideas from pre-renewal with some ideas from renewal, it could be the perfect stat system. 2. Remember RO in the old days? It didn't tell you what to do or where to go and you only coincidentally stumbled upon quests occasionally. There need to be more games like this. 3. RO's spawn system. The fact that most monsters respawn instantly but always on a completely random position on the whole map makes gameplay interesting. You actually have to move around to find more monsters rather than stay next to respawn points. But the great things about RO only work for MMORPGs. Trying to use them for offline games is bound to fail. And making an MMORPG is very hard.
  2. No, I meant like hackers do. A tool that can connects to the server and sends requests, pretending to be the client. Then you just need to know how a skill request looks like. I'm not too deep into that topic, but I know some people can do that.
  3. It's much easier, you just need to know: A = 10 B = 11 C = 12 D = 13 E = 14 F = 15 0x(000001+000010+000020+000080+000200+001000+002000+004000+080000+200000) = 0x2872B1 You simply calculate per digit, no carrying over needed. That's the great thing about hex.
  4. There's nothing server-sided that prevents you from casting skills while auto-attacking. The client simply won't send skill requests. Only solution would be to write your own client. But it's easier to just not use autoattack I guess. Well, you could also use a tool to manually send skill requests.
  5. If you're using renewal, then the 2400 at the end is correct as that's the fixed cast time part. The "2000:3000:3000:4000:4000:5000:5000:6000:6000:7000" is more important, that was 500 previously and would result in the behavior you described.
  6. Link: https://github.com/rathena/rathena/blob/master/doc/mob_db_mode_list.txt
  7. That's not a glitch, but official behavior. But you can switch that off if you want. There are a bunch of config settings regarding this: monster.conf // How often should a monster rethink its chase? // 0: Every 100ms (MIN_MOBTHINKTIME) // 1: Every cell moved // 2: Every 2 cells moved // 3: Every 3 cells moved (official) // x: Every x cells moved // Regardless of this setting, a monster will always rethink its chase if it has // reached its target. Increase this value if you want to make monsters continue // moving after they lost their target (hide, no line of sight, etc.). monster_chase_refresh: 3 misc.conf // Determines max number of characters that can stack within a single cell. // Official - Only affects the walking routines of characters, including monsters. // If a unit stops walking and is on a cell with more than stack limit // characters on it, it will walk to the closest free cell. // Set to 0 for no cell stacking checks and free movement. // Custom - This variation will make every full cell to be considered a wall. // NOTE: For the custom setting to take effect you have to use a server compiled // with Cell Stack Limit support (see src/map/map.h) official_cell_stack_limit: 1 custom_cell_stack_limit: 1
  8. Read the comment above what the variables mean: /// Resistance rate: 10000 = 100% /// Example: 50% (5000) -> sc_def = 5000 -> 25%; /// 5000ms -> tick_def = 5000 -> 2500ms int sc_def = 0, tick_def = -1; // -1 = use sc_def /// Fixed resistance value (after rate calculation) /// Example: 25% (2500) -> sc_def2 = 2000 -> 5%; /// 2500ms -> tick_def2=2000 -> 500ms int sc_def2 = 0, tick_def2 = 0; So for freeze sc_def is 100*mdef which equal 1% per MDEF. As tick_def is -1, it's the same as sc_def so 1% per MDEF. sc_def2 is absolute resistance which is "Each LUK -0.1% chance, each base level of target -0.1% chance, each base level of source +0.1% chance". tick_def2 is absolute duration resistance, as it's negative it's "Each LUK of caster increases duration by 10ms".
  9. Probably better to keep it at 40% base damage rather than upping it to 100%, though. skillratio += -60 + status_get_lv(src)/2;
  10. I assume you forgot to update some files related to an update because you have custom changes in it. e.g. skill_cast_db 83,15000,2000:3000:3000:4000:4000:5000:5000:6000:6000:7000,0,2000:3000:3000:4000:4000:5000:5000:6000:6000:7000,5000,0
  11. Depends on if he means the animation delay or the actual after cast delay. Like Lex Aeterna simply has a long aftercast delay that also applies to autocasts. It doesn't stop you from attacking, just from using a skill.
  12. It uses the same level of hits as Blitz Beat: 129,5,8,1,0,0x42,1,5,1:2:3:4:5,yes,0,0x40000,0,misc,0,0x80, HT_BLITZBEAT,Blitz Beat Maybe you only learned Blitz Beat Level 1?
  13. You mean you want to visualize them on the client? That's a client modification, not a database issue.
  14. Which spell are you casting with 1 Dex and how long was the cast time?
  15. Why would you want to reduce it? In renewal the damage reduction from mdef is completely differently. It has a much lower effect on the damage.
  16. You can edit the calculation in status.c "status_calc_bl_main" and the ASPD function called from there.
  17. Yeah, you probably created an overflow when the rate is multiplied with your setting. The highest value you even need is 2000 actually. Because the lowest possible success chance is 5%. If you multiply that by 20, you already have 100%.
  18. Try to use @showexp and do the math yourself to see what the correct EXP gained should be. There are too many factors here to tell from outside. e.g. it could be EXP penalty if you are on renewal. Maybe you leveled during the process. Or the EXP requirements go down on the next level. Or you put some kind of 10x EXP tap bonus, etc.
  19. Maximum value is INT_MAX, so 900M should still be okay, but try to just put something like 10000 for now (100x) rate. Then you can debug here: } else { // Weapon Forging - skill bonuses are straight from kRO website, other things from a jRO calculator [DracoRPG] make_per = 5000 + ((sd->class_&JOBL_THIRD)?1400:sd->status.job_level*20) + status->dex*10 + status->luk*10; // Base make_per += pc_checkskill(sd,skill_id)*500; // Smithing skills bonus: +5/+10/+15 make_per += pc_checkskill(sd,BS_WEAPONRESEARCH)*100 +((wlv >= 3)? pc_checkskill(sd,BS_ORIDEOCON)*100:0); // Weaponry Research bonus: +1/+2/+3/+4/+5/+6/+7/+8/+9/+10, Oridecon Research bonus (custom): +1/+2/+3/+4/+5 make_per -= (ele?2000:0) + sc*1500 + (wlv>1?wlv*1000:0); // Element Stone: -20%, Star Crumb: -15% each, Weapon level malus: -0/-20/-30 if (pc_search_inventory(sd,ITEMID_EMPERIUM_ANVIL) > 0) make_per+= 1000; // Emperium Anvil: +10 else if (pc_search_inventory(sd,ITEMID_GOLDEN_ANVIL) > 0) make_per+= 500; // Golden Anvil: +5 else if (pc_search_inventory(sd,ITEMID_ORIDECON_ANVIL) > 0) make_per+= 300; // Oridecon Anvil: +3 else if (pc_search_inventory(sd,ITEMID_ANVIL) > 0) make_per+= 0; // Anvil: +0? if (battle_config.wp_rate != 100) make_per = make_per * battle_config.wp_rate / 100; } Here you can check what make_per is before wp_rate is applied and after.
  20. Just search for the corresponding skills in skill.c. case SO_ARRULLO: { int rate = (15 + 5 * skill_lv) + status_get_int(src) / 5 + (sd ? sd->status.job_level / 5 : 0) - status_get_int(bl) / 6 - status_get_luk(bl) / 10; clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); sc_start(src, bl, type, rate, skill_lv, skill_get_time(skill_id, skill_lv)); } break; If you know some maths, it should be self-explanatory.
  21. Hmm haven't heard of such a bug before. Maybe your server has a feature that makes monsters level up when they kill players?
  22. Did you modify your job_basehpsp_db? https://raw.githubusercontent.com/rathena/rathena/master/db/pre-re/job_basehpsp_db.txt The first number is the start level, it needs to be 1 or higher.
  23. Deep Sleep duration can be reduced to 0 easily just by having a high level, that's official. If you want it to not be shorter than 5 seconds then put a min duration for it too. Like this: case SC_ANKLE: case SC_MARSHOFABYSS: case SC_DEEPSLEEP: tick = max(tick, 5000); // Minimum duration 5s break; For Voice of Siren, see link above. For editing Ice Pick effect, you'll have to search for is_attack_piercing in battle.c: static int is_attack_piercing(struct Damage wd, struct block_list *src, struct block_list *target, int skill_id, int skill_lv, short weapon_position) { if (skill_id == ???) return 0; If you add something like this at top, you can make certain skills never pierce (ignore Ice Pick effect).
  24. You already quoted the code part that calculates the damage, just modify it like you want?
  25. Depends on how much damage GC does. If you have high INT even 150 VIT shouldn't be enough to reduce it to 0. But of course if you only have say 30 INT, then it would.
×
×
  • Create New...