• Content Count

  • Avg. Content Per Day

  • Joined

  • Last visited

  • Days Won


Seravy last won the day on May 7

Seravy had the most liked content!

Community Reputation

37 Excellent

About Seravy

  • Rank

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. I see, don't worry I'm good at using hex editors! That seems to have worked for all but Clown which insists to use the same name as the 3rd job no matter what - I guess I have a client version where both had the name Minstrel so they share the text constant. For that, I had to hex $6CD931 to 53 BF D1 and the same for $6CD89F to redirect it to the "Clown" text constant or more precisely one character in front of it because I needed 1 extra character to have "Composer".
  2. I want to rename some classes so i edited jobnamegender.lub but nothing changed. (In fact the file had weird class names in them making it obvious it's not being used) So where/how do I change it then? (A Clown? Why? What does that have to do with music? I rather have a Composer thank you very much lol)
  3. MIN and MAX MATK are calculated values in renewal so changing them without changing the base stats they are calculated from doesn't really work. You have to change the stats they are being calculated from instead : INT, MATK (aka ATK2) and LEVEL. However, that's the theory. In practice, I do remember I had to actually fix/update the source to make it work, as MATK wasn't even available as a thing to read/write on mobs. See : Note this is for MATK specifically, I haven't really tested any of the other stats yet. There is a good chance they are also broken. This is how my script that scales monster strength currently looks like : setunitdata [email protected][[email protected]], UMOB_LEVEL, getmonsterinfo( getarg(1), MOB_LV ) * (100+getarg(3)) / 150; setunitdata [email protected][[email protected]], UMOB_MAXHP, getmonsterinfo( getarg(1), MOB_MAXHP ) * (100+3*getarg(3)) / 150; setunitdata [email protected][[email protected]], UMOB_ATKMIN, getmonsterinfo( getarg(1), MOB_ATK1 ) * (100+3*getarg(3)) / 150; setunitdata [email protected][[email protected]], UMOB_ATKMAX, getmonsterinfo( getarg(1), MOB_ATK2 ) * (100+3*getarg(3)) / 150; setunitdata [email protected][[email protected]], UMOB_MATK, getmonsterinfo( getarg(1), MOB_MATK ) * (100+3*getarg(3)) / 150; setunitdata [email protected][[email protected]], UMOB_STR, getmonsterinfo( getarg(1), MOB_STR ) * (100+getarg(3)) / 150; setunitdata [email protected][[email protected]], UMOB_AGI, getmonsterinfo( getarg(1), MOB_AGI ) * (100+getarg(3)) / 150; setunitdata [email protected][[email protected]], UMOB_VIT, getmonsterinfo( getarg(1), MOB_VIT ) * (100+getarg(3)) / 150; setunitdata [email protected][[email protected]], UMOB_INT, getmonsterinfo( getarg(1), MOB_INT ) * (100+getarg(3)) / 150; setunitdata [email protected][[email protected]], UMOB_DEX, getmonsterinfo( getarg(1), MOB_DEX ) * (100+getarg(3)) / 150; setunitdata [email protected][[email protected]], UMOB_LUK, getmonsterinfo( getarg(1), MOB_LUK ) * (100+getarg(3)) / 150; setunitdata [email protected][[email protected]], UMOB_DEF, getmonsterinfo( getarg(1), MOB_DEF ) * (100+getarg(3)) / 150; setunitdata [email protected][[email protected]], UMOB_MDEF, getmonsterinfo( getarg(1), MOB_MDEF ) * (100+getarg(3)) / 150;
  4. In general, github can turn anything into a patchfile by adding ".patch" to the end of the URL so assuming the compare button produced the correct set of commits... try this :
  5. Are you sure it's not failing because you simply failed to roll a success? You did do your tests with a high enough success rate? I don't see anything else in the quoted code, once the monster type does match the taming item, it's all up to the random roll. The success rate is the preset default (15% in your quoted data), modified by taming rate config, your base level, LUK, the monster's base level and health. It's possible to have a success rate of zero if you're using a level 1 GM character to test because the target is level 99. (well, strictly speaking the lowest you can get is 0.01% but that's pretty close to zero) If your slot machine shows "Failure" that means you didn't roll a success. If it shows success but you still don't get your egg then something else is wrong.
  6. pet 0; is wrong in your item script. So it should be pet 1;
  7. I'm guessing that's the animation for failure through this : In that case, it implies is still true. Which means either "pet" is false or sd->catch_target_class == PET_CATCH_UNIVERSAL is false. I suggest placing a breakpoint on that line and checking which. If pet is false then there is something wrong in the pet db (wrong mob id, wrong file format - I heard yml files aren't exactly user friendly and care about the position of tabs and spaces and stuff- or something like that). Otherwise the taming item/method is inappropriate for the monster ( = isn't generic and only works on a specific monster with a different ID). That's everything I can think of.
  8. I believe that might be the problem. Bosses are status immune. So excluding status immune targets excludes bosses.
  9. [email protected] is the loop variable set by this : so anywhere above that it is zero. However if you bought only one item at a time, then @bought_nameid [0] does reference that item correctly. Otherwise it'll only show the first, as it's displayed outside the loop. furthermore, the loop finds you which item in your Price array was bought - and that's in [email protected] So the correct price is .Price[[email protected]] and again, only inside the loop, below the Line which ensures the variable [email protected] has the correct number.
  10. Similar problem, when monsters hide, the green aura or/or them yelling "Hiding!" reveals their position.
  11. I stopped waiting for the job rebalancing to happen and added whichever parts I truly wanted on a per line basis from the open PR, and implemented the AI for all the missing 1st/2nd/rebirth classes. I'll most likely take a longer break before I work on 3rd jobs and/or spend that time playing the game... Every skill where the AI should be adjusted for official versions of the skills is marked by a comment starting with **Note**, however that's already assuming the official implementation will be so pay extra attention to that.
  12. Check if that's the correct IP address - do you have a fixed IP address or dynamic? Check if your firewall is letting the connection through - maybe it's blocking it.
  13. Seravy


    I want to reduce the time between each waterball created to make the spell finish faster. I tried looking for any uses of WZ_WATERBALL but haven't found any interval. I tried changing the -1 in skill_unit_db but it did nothing either.
  14. Yes, I plan to keep updating this and eventually add the remaining 3rd (or other) jobs. Sure, you can make a patch file but if you do make sure you keep it updated. I haven't had much time to add more to this in the past month but there will be updates sooner or later.
  15. This is for allowing that when soul linked. Remove the line that has SC_SPIRIT if you want it to always work. // Gank if(dstmd && sd->status.weapon != W_BOW && (skill=pc_checkskill(sd,RG_SNATCHER)) > 0 && (skill*15 + 55) + pc_checkskill(sd,TF_STEAL)*10 > rnd()%1000) { if(pc_steal_item(sd,bl,pc_checkskill(sd,TF_STEAL))) clif_skill_nodamage(src,bl,TF_STEAL,skill,1); else clif_skill_fail(sd,RG_SNATCHER,USESKILL_FAIL_LEVEL,0); } // Rogue Spirit enables Gank to steal coin if (sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_ROGUE) if (dstmd && sd->status.weapon != W_BOW && (skill = pc_checkskill(sd, RG_SNATCHER)) > 0 && (skill * 15 + 55) + pc_checkskill(sd, RG_STEALCOIN) * 10 > rnd() % 1000) { if (pc_steal_coin(sd, bl)) clif_skill_nodamage(src, bl, RG_STEALCOIN, skill, 1); else clif_skill_fail(sd, RG_SNATCHER, USESKILL_FAIL_LEVEL, 0); }