Playtester

Developer
  • Content Count

    686
  • Avg. Content Per Day

    0
  • Joined

  • Last visited

  • Days Won

    17

Playtester last won the day on January 12 2017

Playtester had the most liked content!

Community Reputation

185 Excellent

About Playtester

  • Rank
    Deviling

Profile Information

  • Gender
    Male

Recent Profile Visitors

3,888 profile views
  1. Playtester

    Monster 'Mode' data

    For some reason this reply displayed for me today. Maybe some bug with the year? Anyway, if you still want the answer - I honestly don't understand how you can even reach that conclusion. When adding hexadecimals there's no number over flow. You just add per digit. Take a look at the second digit from the right, you will have: 0 + 1 + 2 + 8 + 0 + 0 + 0 + 0 + 0 +0 = 11 11 in hexidecimal is a B. So the result for the second digit from the right is B. You do the same for every digit.
  2. Playtester

    How i do make a invencible mob?

    There's also that invincible spell: 1929,Great Demon [email protected]_INVINCIBLE,idle,685,1,10000,1000,60000,no,self,always,0,,,,,,,19 1929,Great Demon [email protected]_INVINCIBLE,chase,685,1,10000,1000,60000,no,self,always,0,,,,,,,19 1929,Great Demon [email protected]_INVINCIBLE,attack,685,1,10000,1000,60000,no,self,always,0,,,,,,,19 Or just make the monster cast NPC_ALLHEAL when wounded. Usually plant mode (all the MD_IGNORE bitsets) and sufficient HP should really do the trick though. That's how they do it on official servers too.
  3. Basically developers bored and crazy enough to work for no money whatsoever recoded the whole server engine of the Ragnarok Online MMORPG, mainly due to legal reasons and to be able to easily add customization. Then that project split up into many different projects because people who are not getting paid have the tendency to get into pointless fights about how to approach certain things. And language barrier.
  4. Playtester

    How big of a difference is pre-renewal to renewal?

    Hmm I think later updating might actually work if you don't add any customization to the code. You could compile the server pre-renewal and after a while switch to renewal and recompile. I mean I did that all the time when testing stuff.
  5. Honestly I don't get why donations even need a chargeback option. Donations are donations and not a purchase.
  6. Playtester

    Variable declaration in src

    Just because the code compiles doesn't mean it makes any sense. What you're doing is casting mob_id to a pointer (memory address) and then make the sd pointer point to that address. I explained to you how you can get sd -> by fetching all the players in visible range of the monster.
  7. Playtester

    Variable declaration in src

    sd will just get garbage data like that (it will point to whatever memory that mob_id value is saved on and behind that). sd is only for players not for monsters. Monsters are not human beings, there's no point showing them a label.
  8. Playtester

    Variable declaration in src

    An event is player-specific, but here you are in a mob-specific function, so how should that work? You need to put it in a place that is player-specific. Technically, if you want to get from the monster to a list of player, you would do something like "For all players in view range of the monster", but that's fairly complex, nothing I can write down for you. You can search for "map_foreach" in mob.cpp to see similar applications. For example this part: // Scan area for targets if (!tbl && can_move && mode&MD_LOOTER && md->lootitems && DIFF_TICK(tick, md->ud.canact_tick) > 0 && (md->lootitem_count < LOOTITEM_SIZE || battle_config.monster_loot_type != 1)) { // Scan area for items to loot, avoid trying to loot if the mob is full and can't consume the items. map_foreachinshootrange (mob_ai_sub_hard_lootsearch, &md->bl, view_range, BL_ITEM, md, &tbl); } if ((!tbl && mode&MD_AGGRESSIVE) || md->state.skillstate == MSS_FOLLOW) { map_foreachinallrange (mob_ai_sub_hard_activesearch, &md->bl, view_range, DEFAULT_ENEMY_TYPE(md), md, &tbl, mode); } else if (mode&MD_CHANGECHASE && (md->state.skillstate == MSS_RUSH || md->state.skillstate == MSS_FOLLOW)) { int search_size; search_size = view_range<md->status.rhw.range ? view_range:md->status.rhw.range; map_foreachinallrange (mob_ai_sub_hard_changechase, &md->bl, search_size, DEFAULT_ENEMY_TYPE(md), md, &tbl); } Here is search for all targets in range and calls a function per target found. In that underlying function you will have "bl" of the player from which you can fetch sd. You basically want something similar: "For all players in range -> call new function (you need to define it) -> get sd from bl in new function and then do your function call"
  9. Playtester

    Reduce delay of certain skill

    Refer to this document if you are looking for item bonuses: https://github.com/rathena/rathena/blob/master/doc/item_bonus.txt Cast time/delay --------------- bonus bCastrate,n; Skill cast time rate + n%. (If RENEWAL_CAST is defined, this bonus is equal to bVariableCastrate) bonus2 bCastrate,sk,n; Adjust casting time of skill sk by n%.(If RENEWAL_CAST is defined, this bonus is equal to bVariableCastrate) bonus bFixedCastrate,n; Increases fixed cast time of all skills by n% (has effect in RENEWAL_CAST only) bonus2 bFixedCastrate,sk,n; Increases fixed cast time of skill sk by n% (has effect in RENEWAL_CAST only) bonus bVariableCastrate,n; Increases variable cast time of all skills by n%. (If RENEWAL_CAST is NOT defined, this bonus is equal to bCastrate) bonus2 bVariableCastrate,sk,n; Increases variable cast time of skill sk by n% (If RENEWAL_CAST is NOT defined, this bonus is equal to bCastrate) bonus bFixedCast,t; Increases fixed cast time of all skills by t milliseconds (has effect in RENEWAL_CAST only) bonus2 bSkillFixedCast,sk,t; Increases fixed cast time of skill sk by t milliseconds (has effect in RENEWAL_CAST only) bonus bVariableCast,t; Increases variable cast time of all skills by t milliseconds (has effect in RENEWAL_CAST only) bonus2 bSkillVariableCast,sk,t; Increases variable cast time of skill sk by t milliseconds (has effect in RENEWAL_CAST only) bonus bNoCastCancel,n; Prevents casting from being interrupted when hit (does not work in GvG | n is meaningless) bonus bNoCastCancel2,n; Prevents casting from being interrupted when hit (works even in GvG | n is meaningless) bonus bDelayrate,n; Increases skill delay by n% bonus2 bSkillCooldown,sk,t; Increases cooldown of skill sk by t milliseconds
  10. Playtester

    Instruments don't get wATK from DEX?

    Could be a bug looking at all the sources that say weapon attack of instruments and whips should depend on dex. But currently it's implemented to use STR for all attack with range of 3 or lower. Anything with range 4 or higher uses DEX to calc watk. #ifdef RENEWAL /** * Weapon attack value calculated for Players * @param wa: Weapon attack * @param status: Player status * @return weapon attack */ unsigned int status_weapon_atk(struct weapon_atk wa, struct map_session_data *sd) { float str = sd->base_status.str; int weapon_atk_bonus = 0; if (wa.range > 3 && !pc_checkskill(sd, SU_SOULATTACK)) str = sd->base_status.dex; if (sd->bonus.weapon_atk_rate) weapon_atk_bonus = wa.atk * sd->bonus.weapon_atk_rate / 100; // wa.atk2 = refinement, wa.atk = base equip atk, wa.atk*str/200 = bonus str return wa.atk + wa.atk2 + (int)(wa.atk * (str/200) + weapon_atk_bonus); } #endif
  11. Playtester

    Magnum Break Not Functioning properly

    Keep in mind that it just adds extra damage which is calculated as fire but does not make the attack fire element. It's hard to notice that it's working unless you do the math. Did you try to increase the bonus damage to a higher value to see if it really doesn't increase the damage?
  12. Playtester

    How can i Reduce the Freeze Time?

    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;
  13. Playtester

    How can i Reduce the Freeze Time?

    I'm not sure why you would want that. Freeze would be useless if it only lasted 2 seconds and also makes spells like Storm Gust abusable, BUT if you really insist then find this in status.cpp: 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; And change it to: 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 = 8000 + status->mdef*20; tick_def2 = status_src->luk*-10; // Caster can increase final duration with luk break; That way all Freeze durations are reduced by 5 times, but you still maintain same immunity and other behavior.
  14. Playtester

    SG Miracle skill

    Sorry, I mixed that second part up with Heat, but I realize now you mean dealing a lot of damage with a single attack. I actually don't think that Miracle itself increases the damage. It only allows you to ignore map and target checks. So you won't find much code for it either. To find Miracle code you go here: https://raw.githubusercontent.com/rathena/rathena/master/src/map/skill.cpp And then search for "SC_MIRACLE".
  15. Playtester

    SG Miracle skill

    Pretty sure it only activates on normal attacks. Also the skill was really exploitable when it was first implemented, but it was nerfed several times even before renewal was even added.