Jump to content

Playtester

Developer
  • Posts

    765
  • Joined

  • Last visited

  • Days Won

    19

Community Answers

  1. Playtester's post in Max HP Problems was marked as the answer   
    On a sidenote, this was a bug on the emulator which is fixed now:
    https://github.com/rathena/rathena/commit/64f10ed10bfb174709f3a0ed0abe93be20d64cf5
  2. Playtester's post in Giving skills a shared cooldown was marked as the answer   
    The way I'd go about it is use the existing Cooldown functionality. The Cooldown is stored per skill, but you could just make Skill B and Skill C also store their cooldown as "Skill A".
    And then just block Skill B and Skill C when there's a Cooldown for "Skill A".
    All the code you need would be in skill.cpp.
    You could for example take a look at WL_RELEASE because that actually fetches the Cooldown from another skill (the preserved skill) and applies it.
  3. Playtester's post in Increased mob ATK was marked as the answer   
    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  
  4. Playtester's post in Too many columns? was marked as the answer   
    Or if you want pre-renewal ASPD (but still everything else from renewal?), then you could just copy the pre-re/job_db1.txt to re/job_db1.txt.
  5. Playtester's post in How to add a little bit skill cast in all classes was marked as the answer   
    Yes, that's what you wanted, no? Not being able to spam skills anymore when using 3rd party tools.
    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.
  6. Playtester's post in How to change twice damage Bowling Bash skill to single hit was marked as the answer   
    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.
  7. Playtester's post in How can i Reduce the Freeze Time? was marked as the answer   
    Well the resist does not affect the base duration which is different for each skill. But if you want 12 seconds to be reduced to 4-5 seconds then try:
    case SC_FREEZE: sc_def = status->mdef*100; sc_def2 = status->luk*10 + status_get_lv(bl)*10 - status_get_lv(src)*10; tick_def = 6000 + status->mdef*40; tick_def2 = status_src->luk*-10; // Caster can increase final duration with luk break;  
  8. Playtester's post in Stun/Freeze/Stone effect was marked as the answer   
    Well if you want to do it properly and only want to change the duration and nothing else, then you have to do the math.
    How much % reduction should each point in LUK give so that at 320 LUK, you have 100% resist?
    100%/320 = 0.3125%
    Unfortunately that's an odd number the program can't properly work with in its current state. You could give 0.31% reduction per LUK, then at 320 LUK you'd have 320*0.31% = 99.2% reduction.
    So for example for freeze, you could put something like:
    case SC_FREEZE: sc_def = status->mdef*100; sc_def2 = status->luk*10 + status_get_lv(bl)*10 - status_get_lv(src)*10; tick_def = status->luk*31; tick_def2 = 0; break; See the luk*31? There I define that each point in LUK should reduce the duration by 0.31%.
    Keep in mind that MDEF will now only reduce the chance but not the duration anymore.
  9. Playtester's post in [BUG] LAND PROTECTOR + METEOR STORM was marked as the answer   
    It's not a bug, you don't see meteors falling if they would fall on an LP cell. That's how it works on iRO as well.
  10. Playtester's post in Spear Quicken ASPD was marked as the answer   
    You can define the boost of SPEARQUICKEN in status.c for pre-renewal:
    #ifndef RENEWAL_ASPD case SC_SPEARQUICKEN: val2 = 200+10*val1; break; #endif There's no easy way to make it work differently depending on weapon type, though.
  11. Playtester's post in Limit the Max 'bonus2 bSubRace,RC_Player,100;' was marked as the answer   
    If you want to limit the total bonus you could do that in pc.c:
    case SP_SUBRACE: // bonus2 bSubRace,r,x; PC_BONUS_CHK_RACE(type2,SP_SUBRACE); if(sd->state.lr_flag != 2) sd->subrace[type2]+=val; break; For example:
    case SP_SUBRACE: // bonus2 bSubRace,r,x; PC_BONUS_CHK_RACE(type2,SP_SUBRACE); if(sd->state.lr_flag != 2) { sd->subrace[type2]+=val; if(sd->subrace[type2] > 90) sd->subrace[type2] = 90; } break;  
  12. Playtester's post in Errende Ebecee Card Effect was marked as the answer   
    Hmm, not sure, but you only need one | between the flags.
    Try:
    bonus5 bAutoSpellWhenHit,"AL_PNEUMA",1,150,BF_SHORT|BF_LONG|BF_WEAPON|BF_MISC|BF_NORMAL|BF_SKILL,0;  
  13. Playtester's post in Limit the Max MATK was marked as the answer   
    Hmm, I think easiest would be to go to status.c, find function status_calc_matk and change:
    cap_value(matk,0,USHRT_MAX); To:
    cap_value(matk,0,10000); (It appears twice in the function and both parts need to be modified.)
  14. Playtester's post in [Solved]Assassincross range attack. was marked as the answer   
    That database is heavily messed up.
    1,2,3,4,5,6 Someone replaced the official values with 1, 2, 3, 4, 5, 6.
    // ID,AegisName,Name,Type,Buy,Sell,Weight,ATK,DEF,Range,Slots,Job,Class,Gender,Loc,wLV,eLV[:maxLevel],Refineable,View,{ Script },{ OnEquip_Script },{ OnUnequip_Script } The cost of the weapon is 1z, but they sell for 2z. They only weight 0.3. They give only 4 ATK. They give 5 DEF. And they have a range of 6.
    Get the official database here:
    https://raw.githubusercontent.com/rathena/rathena/master/db/pre-re/item_db.txt
  15. Playtester's post in Renewal stats was marked as the answer   
    exp.conf // Use the contents of db/statpoint.txt when doing a stats reset and leveling up? (Note 1) // If no, an equation will be used which preserves statpoints earned/lost // through external means (ie: stat point buyers/sellers) use_statpoint_table: yes https://github.com/rathena/rathena/blob/master/db/re/statpoint.txt
    Should actually be 6058 at level 255 by default? And 52 more stat points when rebirthed.
    In pre-renewal it would be 7237 stat point at level 255 when rebirthed. 7316 must be a server customization.
  16. Playtester's post in All staffs bug ?? was marked as the answer   
    As said, weapons having Matk is a renewal thing. In pre-renewal this doesn't exist. All wands just gave Matk+15%.
  17. Playtester's post in Strengthened Mobs was marked as the answer   
    C'mon it's a normal math formula you don't need me to write that down.
    if(sd) //Player hitrate += sstatus->hit - flee; else //Monster hitrate += sstatus->hit - flee/2;  
  18. Playtester's post in Pj and mob freeze was marked as the answer   
    Maybe the server is running out of RAM.
  19. Playtester's post in Skill sacrifice with fixed damage? was marked as the answer   
    Nope, you are wrong. I have a Royal Guard with 19474 MaxHP and with Matyr's Reckoning active I always deal 1752 damage. Bare-handed, with spear and with racial damage bonus cards. Always 1752 damage. It isn't affected by weapons or cards on official servers.
  20. Playtester's post in status For Land Protector was marked as the answer   
    It isn't enough to connect the status change with the skill, you also have to completely recode Land Protector.
  21. Playtester's post in question about MD_assist mode was marked as the answer   
    Same mob_id. That's why only Andre will attack you when you tank Andre. Pierre and Deniro just don't care.
  22. Playtester's post in How to set up the max level only for Taekwon class? was marked as the answer   
    Should be fairly easy.
    First of all, check the db/import folder. After compiling, you should have a file named job_exp.txt there which is a copy of this file:
    https://github.com/rathena/rathena/blob/master/db/import-tmpl/job_exp.txt
    Now you can really just follow the instruction, but in short you want to uncomment the appropriate line (base exp) and replace x with the job ID of Taekwon (4046). Then just put the max level you want.
    As long as you don't increase the level above 175, no other changes should be required.
  23. Playtester's post in Crit 0 was marked as the answer   
    Doesn't happen on default, maybe you have an item equipped that gives negative crit?
  24. Playtester's post in Champion Combo was marked as the answer   
    So if the player is a super player he should be able to chain combos however he wants?
    If guess you can get group_id via:
    int pc_get_group_id(struct map_session_data *sd); So for example... uh...
    case MO_CHAINCOMBO: if(!sc) return false; if(sc->data[SC_BLADESTOP]) break; if(sc->data[SC_COMBO] && (pc_get_group_id(sd) > 0 || sc->data[SC_COMBO]->val1 == MO_TRIPLEATTACK)) break; return false; Like this maybe?
  25. Playtester's post in Casting Skill knockback when walking was marked as the answer   
    It's not a knockback, the server just send you the correct coordinates so there is no position lag.
    If you rather want position lag you have to stop the client from sending fixpos packets when using a skill. This can be done by calling "unit_stop_walking" without the "1" bitset.
    For example here (unit.c):
    if(!ud->state.running) // Need TK_RUN or WUGDASH handler to be done before that, see bugreport:6026 unit_stop_walking(src, 1); // Even though this is not how official works but this will do the trick. bugreport:6829 And here:
    } unit_stop_walking(src,1); // SC_MAGICPOWER needs to switch states at start of cast skill_toggle_magicpower(src, skill_id); Change the "1" to "0". Might already have the effect you are looking for.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.