Jump to content

Playtester

Developer
  • Posts

    897
  • Joined

  • Last visited

  • Days Won

    26

Playtester last won the day on March 9

Playtester had the most liked content!

About Playtester

Profile Information

  • Gender
    Male

Recent Profile Visitors

9901 profile views

Playtester's Achievements

  1. I don't have a script solution, but I tried around a bit in src. In battle.cpp in the battle_damage function, if you find: if (src) sd = BL_CAST(BL_PC, src); and replace it with: if (src) { sd = BL_CAST(BL_PC, src); unit_data* ud = unit_bl2ud(target); if (src->type == BL_PC && target->type == BL_PC && ud != nullptr && ud->target_count >= 2) status_change_start(target, src, SC_DECREASEAGI, 10000, 10, 0, 0, 0, 10000, SCSTART_NOAVOID); } It's kinda working. However, it only counts autoattackers, not players that use skills on the target. If there are already 2 auto attackers and someone attacks with skill, they also get cursed, though. Would be easier to do if we had the official system of counting attackers that adds them to a list and then deletes them after 3000ms again.
  2. mmo.h #ifndef INVENTORY_BASE_SIZE #define INVENTORY_BASE_SIZE 100 // Amount of inventory slots each player has #endif #ifndef INVENTORY_EXPANSION_SIZE #if PACKETVER_MAIN_NUM >= 20181031 || PACKETVER_RE_NUM >= 20181031 || PACKETVER_ZERO_NUM >= 20181114 #define INVENTORY_EXPANSION_SIZE 100 // Amount of additional inventory slots a player can have #else #define INVENTORY_EXPANSION_SIZE 0 #endif #endif #ifndef MAX_INVENTORY #define MAX_INVENTORY ( INVENTORY_BASE_SIZE + INVENTORY_EXPANSION_SIZE ) // Maximum items in player inventory (in total) #else #if MAX_INVENTORY < ( INVENTORY_BASE_SIZE + INVENTORY_EXPANSION_SIZE ) #error Your custom MAX_INVENTORY define is too low #endif #endif Be aware that this number shouldn't exceed 480. No idea on what's needed client-sided.
  3. Maybe you should elaborate what you mean with "Frost switch".
  4. Probably can be accomplished by just defining RENEWAL_EXP: /// Renewal exp rate algorithms /// (disable by commenting the line) /// /// Leave this line to enable renewal item exp rate algorithms /// While enabled a special modified based on the difference between the player and monster level is applied #define RENEWAL_EXP Then set up level_penalty.yml in db/import.
  5. I never used it but if you compile rAthena it should generate a "yaml2sql" project. That should be it, no?
  6. Not sure if I fully understand. Do you want GTB to block buffs like Blessing and Assumptio or do you NOT want them to be blocked?
  7. My suggestion would be to change this: sc_def = status->mdef*100; To: sc_def = status->mdef*100 + status->luk*30; That makes 300 Luk result in 90% resist, plus -30% fixed reduction, so even if the base chance is 300%, you would fully resist it. Alternatively you could change both sc_def and sc_def2 like this: sc_def = status->mdef*100 + (status->luk*100)/3; sc_def2 = status_get_lv(bl)*10 - status_get_lv(src)*10; This would remove the fixed reduction from luk, but makes sure you have 100% resist at Luk=300.
  8. It's because equipping a new item included unequipping the previous item. Without the armor your HP is halved. Then you equip a new armor that increases your MaxHP, but your normal HP stays the same. This is how it officially works. You could of course recode the system to increase your HP when your MaxHP increases, but it's not that simple and might also be exploitable.
  9. Well as you can see in the code, you need to be a Taekwon (not a job beyond that), your base level needs to be above taekwon_ranker_min_lv (player.conf) and you need to be in the famerank (top 10 usually which you can see with /taekwon).
  10. Works for me in default pre-re rAthena. Here is the check logic: #define pc_is_taekwon_ranker(sd) (((sd)->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && (sd)->status.base_level >= battle_config.taekwon_ranker_min_lv && pc_famerank((sd)->status.char_id,MAPID_TAEKWON)) If you are level 375 then your server has customized the levels, maybe they also changed the required level for the ranker bonus.
  11. In pre-renewal armor gives 0.7 DEF per refine. I strongly advice against increasing this as this allows players to reach 100 DEF which makes them immune to all damage which is super exploitable. Unless you also change the code on how damage reduction works. It do be in pre-re/refine.yml though: Body: - Group: Armor Levels: - Level: 1 RefineLevels: - Level: 1 Bonus: 70 If you want the DEF to be displayed as a fake value that counts "1" per refine even if it really is just 0.7 (like Aegis does), you'd probably need to add something like "clientdef" to the base_status struct and then calculate that in parallel to def with adjusted refine bonus.
  12. Can't you just remove this part of the code in skill.cpp? // bugreport:4888 these songs may only be dispelled if you're not in their song area anymore case SC_WHISTLE: case SC_ASSNCROS: case SC_POEMBRAGI: case SC_APPLEIDUN: case SC_HUMMING: case SC_DONTFORGETME: case SC_FORTUNE: case SC_SERVICE4U: if (!battle_config.dispel_song || tsc->getSCE(status)->val4 == 0) continue; //If in song area don't end it, even if config enabled break;
  13. I can probably look it up for you, but I'd need to know what your previous account was.
  14. Sharp Shooting is a special case. It just deals fake critical damage, which only ignores DEF/FLEE but does not actually count as critical damage. So it neither deals max damage nor is increased by "The Paper" card. Try to test against a monster with very high DEF or FLEE, there you will see the difference. This is official behavior.
  15. I'd put it in void skill_consume_requirement(map_session_data *sd, uint16 skill_id, uint16 skill_lv, int16 type) Under type type&2 section. Maybe it's easier if you set the skill in the db to consume all 3 items but then put an exception here that the third item is not consumed under certain conditions.
×
×
  • Create New...