Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 08/16/17 in all areas

  1. DISCONTINUED Since I updated some of NEMO's easy-to-update patches, I think the community would benefit from them too. Don't expect much though Download updated patches on my fork of NEMO. (Commit logs) These patches are distributed "as is", without warranty of any kind. In no event shall I be liable for any claims, damages or other liabilities. If you'd like to buy me a symbolic beer, feel free to donate to my PayPal. Symbolic beer hall of fame: (Thank you for the kind donation) @Hurtsky @renniw @Radian @Haziel
    2 points
  2. emulating aegis status effects is for sure quite a task.. there are so many bugs and pitfalls that are hard to work around, i am here to share information with devs/community. hopefully, https://github.com/rathena/rathena/pull/1685 can be updated i wanted to add the following in aegis the status config has different special properties but a lot are hardcoded. luckily one thing that's not is what's removed by certain skills (almost..) https://paste2.org/fFA7ck03 information i dug in regards to status_change_clear. some of the uses are weird, such as how the tarot card SCC is the same as trickdead's.. and that gospel instead of clearing with dispel or debuffs, it uses the trickdead dispel. currently we have this ugly status_change_clear_buffs flags that don't match at all - but it'd be so easy to make it match! (note that this info is from old zone so it lacks info about vanishing buster and lux anima rune.) another issue that has come up and is unfortunately not handled properly on our side - atkPercentInfo defPercentInfo, mDefPercentInfo matkPercentInfo. on aegis, it's another stat that players have that's a bit weird. basically it's stored as a std::map indexed by the skill id causing it, containing time left, and the actual value (in the case of curse, it'd be -25 for atkPercentInfo). a player can be tarot carded to have lowered atkPercentInfo, say -25. It can be repeated with the value of -50 with another card. since it'll find tarot card with the -25 in it before, it'll overwrite (based on the highest absolute value between the 2). but if a person receives PA_GOSPEL, whcih will SetAtkPercentInfo to -50, it adds the new entry for PA_GOSPEL an the timer for the tarot card is still ticking. it appears to use the summation of these values. in renewal, it operates on the status m/def/m/atk, but in pre-re i'd assume it's just all at once. the difference is significant because certain skills, such as MO_EXTREMITYFIST, ignore AtkPercentInfo, which makes things like SC_CURSE or SC_PROVOKE not work on it. currently SC_INCATKRATE is used for a similar purpose, but the fact that it doesn't store all the different values and looks ugly with negatives, it'd be good to make progress on that.. ahhh! the following are known to modify AtkPercentInfo: LK_CONCENTRATION (5*skLevel) SC_CURSE (-25) SM_PROVOKE(5-32)/SELFPROVOKE(32)/MER_PROVOKE(32) PA_GOSPEL (varies) LK_JOINTBEAT (-25) SN_SIGHT (25) CG_TAROTCARD (varieS) EL_WATERBARRIER (-3) SC_INERVATION (-30/-40/-50) MH_EQC (skLevel*5) MH_VOLCANIC_ASH (-50) RG_STRIPWEAPON (-10 against mobs) SL_SKE (300) GD_GUARDUP (2*skLevel+8) NPC_INVINCIBLE (100) NPC_POWERUP (200) WS_MELTDOWN (-25, on mobs) RK_STONEHARDSKIN (-25 on mobs) HAMI_BLOODLUST (10*skLevel+2) HFLI_FLEET (5*skLevel+1) known to use DefPercentInfo: Heavy Poison (-25) LK_CONCENTRATION (-5*skLevel) LK_JOINTBEAT (-50 or -25, depends) BD_ETERNALCHAOS (0?) CG_TAROTCARD (-20 on the one card) LG_EARTHDRIVE (-25) NC_ANALYZE (14/28/42) NC_NEUTRALBARRIER (15/20/25) WL_MARSHOFABYSS (either 0 or tarJOBLEVEL / 2 - tarINT / 10 - 10) frost misty or "freezing" (-10 on NPC type, -30 on players) LG_FORCEOFVANGUARD (sorry im lazy) MI_ECHOSONG (6*skLevel+jLevel/4+WM_LESSON level) WM_SATURDAY_NIGHT_FEVER (-20/-30/-40/-50/-60) MH_NEEDLE_OF_PARALYZE (-5*skLevel) MH_EQC (-5*skLevel) RG_STRIPSHIELD (on mobs, -15) SL_SKE (-50) SM_PROVOKE/SELFPROVOKE/MER_PROVOKE EL_WATERBARRIER (30) ...i can dig more up later! i've work to attend to Q_Q some statuses don't get properly cancelled in pc_checkallowskill by gear switching, these are: SC_LKCONCENTRATION, tension relax, max overthrust, exeed break. attention concentrate should recalculate when a person changes gears, but i'm not sure if that's handled.. oh another thing, quagmire should removes SC_LOUD. i've checked in the code, and it's even noted on irowiki for what that's worth. if you have anything to add about status effects with missing info, please add them here and we can work on a pr to update sc_config and fix these bugs!
    1 point
  3. Hey, that was really boring to do, but I want to share the warps for this town, may be its not perfect, but there is :
    1 point
  4. - script Controller -1,{ OnPcDieEvent: if (strcharinfo(3) == instance_mapname("geffen")) { 'chance++; if ('chance == 3) mapwarp instance_mapname("geffen"),"prontera",150,150; else mapannounce instance_mapname("geffen"), "" + strcharinfo(0) + " has died! you only have " + (3 - 'chance) + " lives remaining.", bc_all; } end; } should work. About the script with the timer : forget it. After reading the commit, https://github.com/rathena/rathena/commit/9c46f3e6ba288c71f098b12834ea25779eadbc0e just prevent to duplicate npcs with script event in instance. Notes: - strcharinfo(3) return the real map name of the player. - instance_mapname doc : If no instance ID is specified, the instance the script is attached to is used. If the script is not attached to an instance, the instance of the currently attached player is used (if it is a character, party, guild or clan mode). Within your OnPCDieEvent instance_mapname will use by default the instance id attached to the player. EDIT: @crazyarashi please double check your script before posting!
    1 point
  5. You can try to use setunitdata and getunitdata. monster "prontera",149,190,"Poring",1002,1; .GID = $@mobid[0]; getunitdata .GID,.@por_arr; unittalk .GID,"Max HP: "+.@por_arr[UMOB_MAXHP]; unittalk .GID,"Current HP: "+.@por_arr[UMOB_HP]; sleep 10000; // Try to do some damage after 10 seconds getunitdata .GID,.@por_arr; unittalk .GID,"Current HP: "+.@por_arr[UMOB_HP]; end;
    1 point
  6. Check your import folder for duplicate of old red box. Also before you make the code run, be sure to reloaditemdb and reloadscript afterward in that order. I will give you code later make it very easy to config, with instruction also. When I get home in maybe 2 hours. I will try put as much info as possible so you can learn how to do it also in the future, or maybe even improve it. Good luck. Edit: Note: This might not be working 100% because I had no time to test it, feel free to message me or reply to this topic for support. Hope this helps. And i've added as much information I could put to make it easily configurable, it might look ugly and dirty, but it should work, hopefully. DB: 501,Red_Potion,Red Potion,0,50,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "CustomBox",501,512; },{},{} Script: function script CustomBox { //start of settings //amount and chances .@req_amt = 1; //change to how many items is needed to open .@good_chance = 10; //10 = 10% .@best_chance = 1; //1 = 1% .@announce = 1; //change to 0 if you want to turn off or 1 to turn on announce //arrays setarray .@rew_basic,501,502,503,504,505; //your reward items id [basic] setarray .@rew_good,501,502,503,504,505; //your reward items id [good] setarray .@rew_best,501,502,503,504,505; //your reward items id [best] setarray .@rew_amt_basic,1,2,3,4,5; //your reward amount [basic] setarray .@rew_amt_good,1,2,3,4,5; //your reward amount [good] setarray .@rew_amt_best,1,2,3,4,5; //your reward amount [best /* Note #1: This can still be simplified into a more compact snippet, but for sake of basicness, i will not make it into that */ /* Note #2: Make sure your amount and rewards match, if you have 5 items in the reward category, make sure you have 5 amounts in your amount category too */ //size of arrays .@basic_size = getarraysize(.@rew_basic) - 1; .@good_size = getarraysize(.@rew_good) - 1; .@best_size = getarraysize(.@rew_best) - 1; /* Note: Why we do this is because we want subtract one value from the output of getarraysize, because our array index starts at 0 (we did not specify it to start at 1)*/ //end of settings if(getarg(1) < 1){ //if required amount is less than 1, warning will pop up and consumed item will be returned message strcharinfo(0),"You require [ "+getitemname(getarg(1))+" ] x"+.@req_amt+" to open this item."; getitem 501,1; end; } .@rand = rand(0,100); //randomize chance to get rewards above delitem getarg(1),.@req_amt; //required item is deleted before giving out rewards if(.@rand <= .@best_chance){ //this produces the "best" items .@item = rand(0,.@best_size); //item is randomly chosen from the list if(.@announce) //if announce is active or 1, will announce announce "Congratulations! "+strcharinfo(0)+" has won "+getitemname(.@item)+" from opening a [ "+getitemname(getarg(0))+" ] !!",0; getitem .@rew_best[.@item],.@rew_amt_best[.@item]; end; } if(.@rand <= .@good_chance){ //since we already catch anything that is either 1 or 0 above, no need to add check for <= 1 .@item = rand(0,.@good_size); //item is randomly chosen from the list if(.@announce) //if announce is active or 1, will announce announce "Congratulations! "+strcharinfo(0)+" has won "+getitemname(.@item)+" from opening a [ "+getitemname(getarg(0))+" ] !!",0; getitem .@rew_good[.@item],.@rew_amt_good[.@item]; end; } //they get basic reward .@item = rand(0,.@basic_size); //item is randomly chosen from the list if(.@announce) //if announce is active or 1, will announce announce "Congratulations! "+strcharinfo(0)+" has won "+getitemname(.@item)+" from opening a [ "+getitemname(getarg(0))+" ] !!",0; getitem .@rew_basic[.@item],.@rew_amt_basic[.@item]; end; }
    1 point
  7. On Wednesday 9th August at 6pm GMT, the forums will go offline for a period of approximately 5 hours. This downtime will give us the opportunity to upgrade the forum software and then to tweak new settings for our use. Github and discord will be unaffected by this outage and links will be placed into the maintenance message. I will be providing periodical status updates via our discord server.
    1 point
  8. (Solved) Ich bin wohl überarbeitet in letzter Zeit... Danke Rynbef
    1 point
  9. 1 point
×
×
  • Create New...