Jump to content

Playtester

Developer
  • Posts

    822
  • Joined

  • Last visited

  • Days Won

    22

Everything posted by Playtester

  1. My mistake. battle.c if( ((d_tbl && check_distance_bl(target, d_tbl, sc->data[SC_DEVOTION]->val3)) || e_tbl) && damage > 0 && skill_id != PA_PRESSURE && skill_id != CR_REFLECTSHIELD ) damage = 0; skill.c if (tsc && skill_id != PA_PRESSURE && skill_id != HW_GRAVITATION && skill_id != NPC_EVILLAND) {
  2. Pressure already is coded to ignore devotion. See skill.c: if( sc && sc->data[SC_DEVOTION] && skill_id != PA_PRESSURE ) { If it doesn't work, I guess starting to debug here might help.
  3. There's no need for that. If you enable the PRERE define at top, everything else is automatically disabled.
  4. You can just expand the pre-re mob db with renewal mobs by using their IDs. You'll have to put the stats and stuff yourself, though. Or copy those monsters over from renewal, but renewal stats usually don't fit into pre-renewal.
  5. Every MDEF reduces 1% duration.
  6. Do you mean exp.conf? There are two separate settings for exp: https://github.com/rathena/rathena/blob/master/conf/battle/exp.conf
  7. At least give the thread a proper title if you merge them all together. =D Edit: Done.
  8. On official servers the damage of an attack and what status effects it causes it determined at the beginning of the attack. So even if you change equip during the attack, neither damage nor effect will change. On eAthena, the damage of an attack is calculated at the start of the attack but status effects are calculated only the moment when the damage is actually applied (HP substracted). So in eAthena it was possible to start an attack with a strong weapon and during the attack switch to a weak weapon that causes status changes and then deal the high damage of the strong weapon and causing the status changes at the same time. rAthena implemented a system that blocks your status from being recalculated during an attack and solves that issue this way (the code above).
  9. The easiest way to do that is to go to status.c and remove that part: if (bl->type == BL_PC && ((TBL_PC*)bl)->delayed_damage != 0) { if (opt&SCO_FORCE) ((TBL_PC*)bl)->state.hold_recalc = 0; /* Clear and move on */ else { ((TBL_PC*)bl)->state.hold_recalc = 1; /* Flag and stop */ return; } }
  10. Max drop rate 10000 is actually correct. That's 100%, more doesn't make sense. It's not the max rate for the drop rate. The base card drop rate is 0.01%. So 40x rates would result in a 0.4% drop rate. If you are using renewal you might have a 50% drop penalty which would explain why it's 0.2% for you.
  11. They are all independent already. Depending on where you stand only some meteors might hit you and others not.
  12. MDEF already reduces the duration of Freeze. See: https://raw.githubusercontent.com/rathena/rathena/master/src/map/status.c status_get_sc_def case SC_FREEZE: sc_def = status->mdef*100; sc_def2 = status->luk*10 + status_get_lv(bl)*10 - status_get_lv(src)*10; tick_def2 = status_src->luk*-10; // Caster can increase final duration with luk break; As tick_def isn't defined it will use the same as sc_def as explained at the top: /// 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; No, but as you can see in the formula quoted above. LUCK of the caster can increase the freeze duration. LUCK of the target reduces chance to be affected but not duration.
  13. What do you mean by "Showing"?
  14. If that's the only thing you've changed it should work just fine. That the ASPD is 193 indicates you must have made another modification. Making Knife or Cotton Shirt give +100% ASPD would cause this. Or messing with the pre-re/job_db1.txt file.
  15. Maybe you are GM and set it so that GMs can't attack monsters?
  16. You have to put the code further down at the end of function "battle_calc_weapon_attack". Probably below "wd = battle_calc_weapon_final_atk_modifiers(wd, src, target, skill_id, skill_lv);". Like... if(skill_id == MC_MAMMONITE) wd.damage = cap_value(wd.damage, INT_MIN, 80000);
  17. I don't know what value i is. Assuming you want to put the code here: status->amotion = cap_value(amotion,pc_maxaspd(sd),2000); Then adding below something like... if (sc->data[SC_EDP]) { if (sc->data[SC_EDP]->val1 == 5) status->amotion = cap_value(amotion,pc_maxaspd(sd)+20,2000); else if (sc->data[SC_EDP]->val1 == 4) status->amotion = cap_value(amotion,pc_maxaspd(sd)+10,2000); } should do the trick.
  18. You might need to refresh OR your client isn't diffed to display aura on higher levels.
  19. Yes whenever you modify any c file you need to compile again.
  20. The option you put there only affects Magnum Break's direct damage. The bonus damage is hardcoded, you can only set the duration in skill_cast_db: //-- SM_MAGNUM 7,0,0,0,2000,10000,2000 The code for the elemental damage bonus is in battle.c if (sc && sc->data[SC_WATK_ELEMENT] && (wd.damage || wd.damage2)) { // Descriptions indicate this means adding a percent of a normal attack in another element. [Skotlex] int64 damage = battle_calc_base_damage(sstatus, &sstatus->rhw, sc, tstatus->size, sd, (is_skill_using_arrow(src, skill_id)?2:0)) * sc->data[SC_WATK_ELEMENT]->val2 / 100; wd.damage += battle_attr_fix(src, target, damage, sc->data[SC_WATK_ELEMENT]->val1, tstatus->def_ele, tstatus->ele_lv); if (is_attack_left_handed(src, skill_id)) { damage = battle_calc_base_damage(sstatus, &sstatus->lhw, sc, tstatus->size, sd, (is_skill_using_arrow(src, skill_id)?2:0)) * sc->data[SC_WATK_ELEMENT]->val2 / 100; wd.damage2 += battle_attr_fix(src, target, damage, sc->data[SC_WATK_ELEMENT]->val1, tstatus->def_ele, tstatus->ele_lv); } } You can mess around there if you want to change how it works, but I don't really have time to write you a complete solution for what you want. Maybe if you remove the requirement for there to be wd.damage or wd.damage2 it might work on a miss?
  21. Maybe just use skill_damage_db, that's easiest: https://github.com/rathena/rathena/blob/master/db/skill_damage_db.txt You can also edit the damage formula in battle.c, search for GS_GROUNDDRIFT, you'll find both the percentual damage formula for renewal and the absolute damage addition for pre-renewal.
  22. Im on Pre-re. A 50 dex Crusader Magnum still miss on a 287 flee sinx. is that normal? Because now i now that Magnum isn't ignore flee, but only add final hitrates... case MS_MAGNUM: case SM_MAGNUM: hitrate += hitrate * 10 * skill_lv / 100; Yes, that's normal. Assuming the crusader is level 99, with 50 dex, he has 149 hit. You base hit chance is 80% + 149% = 229%. So against 229 flee or more, your hit chance already reached 0. Even if you increase that chance by 10%, it's still 0%, because 10% of nothing is still nothing. @Azeroth Just refer to the documentation, should be self explanatory: nk for Magnum is 0x2 right now, if you make it 0x42, it would ignore flee.
  23. Give sample HIT and FLEE for test then I tell you the hit chance. Don't forget to say if you are using pre-re or re.
  24. It's official, in pre-re there is no SP recovery delay. You want to customize it?
×
×
  • Create New...