-
Posts
446 -
Joined
-
Last visited
-
Days Won
34
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by Mabuhay
-
-
1 hour ago, Humble_Bee said:
When a player reaches max level (201 for me), I want the game to give them 217 extra stat points to play with
You can adjust stat points in rathena/db/pre(re)/statpoint.txt
Go to the line (Line 201 for level 201) that you want to add stats points and manually add +217 to current value until you reach the max level.
-
Novice vs Zombie - Yet another version
UPDATE:
version 1 = I removed all my modifications on this script version 2 = Has timers and will most likely be in-conflict with other event scripts i made.
Works the same with my other event scripts.
Regular Novice v Zombie script. I just updated it and added some features.
Enjoy.
I dont know who exactly made this idea so i cant credit him properly.
This is a response post from this topic:
-
Submitter
-
Submitted11/19/2019
-
Category
-
Video
-
Content AuthorMabuhay
-
-
11 minutes ago, Veilside said:
Hello @Mabuhay you have a typo on line 101, missing semi colon ( ; )
I'm also testing this script
Is there a way to safely, end the event?
it is here.
mapannounce strnpcinfo(4), "<Last Man Standing> Last Man Standing wins the event!", bc_blue
just add ;
mapannounce strnpcinfo(4), "<Last Man Standing> Last Man Standing wins the event!", bc_blue;
For now, i will leave it as is.
Maybe I will update this with the same pattern as my other event scripts previously posted.
-
- 1
-
1.They need to be in the guild. Prior to that, guild leader should register their guild first.
2. Dying players will automatically respawn after x seconds back to the event map.
1. Max guild member registration and Gepard Check might or might not be added. Depends on my mood actually xD. As I said on the original post :
On 11/6/2019 at 3:40 PM, Mabuhay said:For modifications, you can freely adjust by yourself. I may or may not upgrade this script.
2. Yes.. 1 kill = 1 point.
-
- script jklasdf -1,{ OnInit: setarray .mobid, 1002, 1001; setarray .map$, "prt_fild08", "prontera"; end; OnNPCKillEvent: .@index = inarray(.mobid[0], killedrid ); if ( strcharinfo(3) == .map$[.@index] ) { announce strcharinfo(0) +""+ ( strcharinfo(1) ? " of party "+ strcharinfo(1):"" ) +" has killed "+ getmonsterinfo(killedrid,MOB_NAME)+" at "+ strcharinfo(3), bc_all; } end; }
list down all mvps and match the maplist corresponding to the spawn id. This may cause trouble on mvp with multiple spawn maps like Atroce but will help you at least (untested).
-
6 hours ago, Mightymik said:
can someone help me to fix the problem thanks.
Please post the problem so we dont need to run it on a server.
-
@go/@warp delay when hit - Updated
Here is an updated @go and @warp delay when hit.
-
Submitter
-
Submitted11/18/2019
-
Category
-
Video
-
Content AuthorMabuhay
- 4
- 1
-
-
[UPDATE] +7 and above refined item no drop
This is an update to the original post :
and a response to this topic :
Currently working on Git Hash : ea54670
-
Submitter
-
Submitted11/18/2019
-
Category
-
Video
-
Content AuthorElliott, Mabuhay
- 1
-
-
On 11/9/2019 at 3:09 PM, mathlister said:
As The Title Said ..
Is there Any chance???
im searching for it..
I updated from the original post :
- 1
-
14 minutes ago, arthurcunha said:
Could someone help me out, I'm looking for a script that adds Team Slot by ZENY, have you ever seen it? just like the RONDEL that transforms to [1] I just want the vacant slot.
I dont get what Team Slot means.
I assume you meant these?
https://github.com/rathena/rathena/blob/master/npc/merchants/socket_enchant.txt
https://github.com/rathena/rathena/blob/master/npc/merchants/socket_enchant2.txt
-
- script script_gh -1,{ OnAtCmd: .@gid = getcharid(2); if( !getmapflag(strcharinfo(3),mf_town)) { dispbottom "@"+.@atcmd_command$+" failed. Can only be used in towns.", 0xff0000; end; } for( .@i = 0; .@i <= 30; .@i++ ) if ( getd( "$GROOM" + .@i ) == .@gid || getd( "$GROOMB" + .@i ) == .@gid ) .@owned++; // Checks if owns a guild room.. if ( .@owned ) warp "sanctum",56,61; else dispbottom "Your guild does not own a room"; end; OnInit: bindatcmd("guildhouse",strnpcinfo(0)+"::OnAtCmd"); }
You should have checked your mapserver. It will tell you your problem.
Your original code has missing curlys just by the look of it.
-
1 minute ago, Surefirer said:
Is there anyway to apply the exp penalty on MVP monster? Like you said, its too fast to level up by kill MVP.
There should be. I haven't tested or done myself but surely there is a way.
Still need to read the src to see how level penalties are applied.
If someone who knows might be able to help you with that.
For now, I dont have the luxury time to check the src for this.
- 1
-
3 minutes ago, Surefirer said:
Thanks. This make sense for me.
I have tried to set level penalty for kill boss but I still receive same exp after I kill boss even the level penalty file has the info below, do you know why?
1,CLASS_BOSS,16,40
1,CLASS_BOSS,15,115
1,CLASS_BOSS,14,120
1,CLASS_BOSS,13,125
1,CLASS_BOSS,12,130
1,CLASS_BOSS,11,135
1,CLASS_BOSS,10,140
1,CLASS_BOSS,9,135
1,CLASS_BOSS,8,130
1,CLASS_BOSS,7,125
1,CLASS_BOSS,6,120
1,CLASS_BOSS,5,115
1,CLASS_BOSS,4,110
1,CLASS_BOSS,3,105
1,CLASS_BOSS,0,100
1,CLASS_BOSS,-1,100
1,CLASS_BOSS,-6,95
1,CLASS_BOSS,-11,90
1,CLASS_BOSS,-16,85
1,CLASS_BOSS,-21,60
1,CLASS_BOSS,-26,35
1,CLASS_BOSS,-31,10Thanks.
Not sure but in renewal, i dont think penalty applies? That's why ppl can level up faster if they go kill an MVP rather than killing mobs.
If it does, perhaps only a little will be applied?
-
21 minutes ago, Surefirer said:
Hello,
I am not quite understand what's inside the level penalty file.
// EXP modifiers due to level difference
1,CLASS_NORMAL,16,40
1,CLASS_NORMAL,15,115
1,CLASS_NORMAL,14,120
1,CLASS_NORMAL,13,125
1,CLASS_NORMAL,12,130
1,CLASS_NORMAL,11,135
1,CLASS_NORMAL,10,140
1,CLASS_NORMAL,9,135
1,CLASS_NORMAL,8,130
1,CLASS_NORMAL,7,125
1,CLASS_NORMAL,6,120
1,CLASS_NORMAL,5,115
1,CLASS_NORMAL,4,110
1,CLASS_NORMAL,3,105
1,CLASS_NORMAL,0,100
1,CLASS_NORMAL,-1,100
1,CLASS_NORMAL,-6,95
1,CLASS_NORMAL,-11,90
1,CLASS_NORMAL,-16,85
/1,CLASS_NORMAL,-21,60
1,CLASS_NORMAL,-26,35
1,CLASS_NORMAL,-31,10I understand 1=experience. Class_Normal=player. But what 16,15,14,13,12,11...mean? Does it mean Level 16, or every 16 level difference, For example, from Lv1-Lv16 you receive 40%of total experience. from Lv17(+15) - Lv32 you receive 115% of total experience, from Lv33(+14) - Lv47 you receive 120% of total experience and so one? But why there is -1,-6,-11?
Thanks.
+/positive when you have the level lower than the target
-/negative when you have the level higher than the target.
When you have 31 levels higher than the target, you only get 10% of exp.
This is only based on how I understand. Maybe someone more knowledgeable might correct me if I am wrong.
-
6 hours ago, Bringer said:
can anyone help to change this script to Max Stats NOT By Level
Request to Mod this script
- Max All Stats 300
- get_unique_id
- Char Base Rewards
- 3 Winners For Each Jobs
/////////////////////////////////////////////////////// // ___________ _____.__ // \__ ___/__.__.________/ ____\__| ____ ____ // | | < | |\_ __ \ __\| |/ \ / ___\ // | | \___ | | | \/| | | | | \/ /_/ > // |____| / ____| |__| |__| |__|___| /\___ / // \/ Scripts \//_____/ // //===================================================== // Name: Race to Max Level // // Description: // This NPC allows for Game Masters to set a reward to // be given to the first player of each 2nd class that // reaches maximum level (base and class). //===================================================== /////////////////////////////////////////////////////// morocc,159,91,5 script Race to Max Level 58,{ set .@gm_level, 99; // GM level required to set the reward set .@maxbase, 99; set .@maxjob, 50; set .@defaultreward, 510; setarray .@rewardablejobs[0], Job_Lord_Knight, Job_High_Priest, Job_High_Wizard, Job_Whitesmith, Job_Sniper, Job_Assassin_Cross, Job_Paladin, Job_Champion, Job_Professor, Job_Stalker, Job_Creator, Job_Clown, Job_Gypsy; Begin: clear; mes "[ ^0099ccRace to Max Level^000000 ]"; mes "Hello, " + ((getgmlevel() >= .@gm_level) ? "master! What do you want to do today?" : "are you here for your reward?"); switch(select(((getgmlevel() >= .@gm_level) ? "Set Reward:Restart Race" : ":") + ":YES!:...Reward?:Who was rewarded?:Cancel")) { case 1: goto SetReward; case 2: goto RestartRace; case 3: goto GetReward; case 4: goto ExplainRace; case 5: goto ShowRewarded; default: end; } SetReward: clear; mes "[ ^0099ccRace to Max Level^000000 ]"; if ($reward == 0) set $reward, .@defaultreward; mes "The reward is " + getitemname($reward) + " (ID: " + $reward + ")."; mes "Do you want to change it?"; if (select("Yes:No") == 1) { clear; mes "[ ^0099ccRace to Max Level^000000 ]"; mes "Please enter the new reward item ID."; input .@rewardid; clear; mes "[ ^0099ccRace to Max Level^000000 ]"; mes "Set " + getitemname(.@rewardid) + " as the reward?"; if(select("Yes:No") == 1) { set $reward, .@rewardid; } } goto Begin; RestartRace: clear; mes "[ ^0099ccRace to Max Level^000000 ]"; mes "Are you sure you want to restart the race?"; if (select("Yes:No") == 1) { for (.@i = 0; .@i < getarraysize(.@rewardablejobs); .@i++) { set $rewarded$[.@rewardablejobs[.@i]], ""; } announce "The Race to Max Level has begun! Claim a reward once you reach " + .@maxbase + " base and " + .@maxjob + " class!", bc_all; } goto Begin; GetReward: next; mes "[ ^0099ccRace to Max Level^000000 ]"; mes "Let's see... " + strcharinfo(0) + ", huh?"; set .@competitioner, 0; for (.@i = 0; .@i < getarraysize(.@rewardablejobs); .@i++) { if (Class == .@rewardablejobs[.@i]) { set .@competitioner, 1; if (BaseLevel < .@maxbase || JobLevel < .@maxjob) { mes "I'm sorry, but you still need to level a bit more."; } else if ($rewarded$[Class] == strcharinfo(0)) { mes "You have already claimed your reward."; } else if ($rewarded$[Class] != "") { mes "Too late!"; mes "The reward for " + jobname(Class) + " was already claimed by " + $rewarded$[Class] + "."; } else goto GiveReward; } } if (.@competitioner == 0) mes "[ ^0099ccRace to Max Level^000000 ]"; mes "You need to change your job."; close; GiveReward: set $rewarded$[Class], strcharinfo(0); clear; mes "[ ^0099ccRace to Max Level^000000 ]"; mes "Congratulations! You were the first " + jobname(Class) + " to reach " + .@maxbase + " base and " + .@maxjob + " class!"; getitem $reward, 1; announce strcharinfo(0) + " (" + jobname(Class) + ") reached Max. Level and received " + getitemname($reward) + "!", bc_all; close; ExplainRace: clear; mes "[ ^0099ccRace to Max Level^000000 ]"; mes "Yes! When you reach the maximum level for your class, talk to me and you'll be rewarded with a special item."; next; goto Begin; ShowRewarded: clear; mes "[ ^0099ccRace to Max Level^000000 ]"; for (.@i = 0; .@i < getarraysize(.@rewardablejobs); .@i++) { mes jobname(.@rewardablejobs[.@i]) + ": " + (($rewarded$[.@rewardablejobs[.@i]] != "") ? $rewarded$[.@rewardablejobs[.@i]] : "^ff0000Nobody^000000"); } next; goto Begin; }
/////////////////////////////////////////////////////// // ___________ _____.__ // \__ ___/__.__.________/ ____\__| ____ ____ // | | < | |\_ __ \ __\| |/ \ / ___\ // | | \___ | | | \/| | | | | \/ /_/ > // |____| / ____| |__| |__| |__|___| /\___ / // \/ Scripts \//_____/ // //===================================================== // Name: Race to Max Level // // Description: // This NPC allows for Game Masters to set a reward to // be given to the first player of each 2nd class that // reaches maximum level (base and class). //===================================================== /////////////////////////////////////////////////////// morocc,159,91,5 script Race to Max Level 58,{ set .@gm_level, 99; // GM level required to set the reward set .@maxbase, 99; set .@maxjob, 50; set .@defaultreward, 510; set .@uniqueid$, get_unique_id(); setarray .@rewardablejobs[0], Job_Lord_Knight, Job_High_Priest, Job_High_Wizard, Job_Whitesmith, Job_Sniper, Job_Assassin_Cross, Job_Paladin, Job_Champion, Job_Professor, Job_Stalker, Job_Creator, Job_Clown, Job_Gypsy; Begin: mes "[ ^0099ccRace to Max Level^000000 ]"; mes "Hello, " + ((getgmlevel() >= .@gm_level) ? "master! What do you want to do today?" : "are you here for your reward?"); next; switch(select(((getgmlevel() >= .@gm_level) ? "Set Reward:Restart Race" : ":") + ":YES!:...Reward?:Who was rewarded?:Cancel")) { case 1: goto SetReward; case 2: goto RestartRace; case 3: goto GetReward; case 4: goto ExplainRace; case 5: goto ShowRewarded; default: end; } SetReward: mes "[ ^0099ccRace to Max Level^000000 ]"; if ($reward == 0) set $reward, .@defaultreward; mes "The reward is " + getitemname($reward) + " (ID: " + $reward + ")."; mes "Do you want to change it?"; next; if (select("Yes:No") == 1) { mes "[ ^0099ccRace to Max Level^000000 ]"; mes "Please enter the new reward item ID."; input .@rewardid; mes "[ ^0099ccRace to Max Level^000000 ]"; mes "Set " + getitemname(.@rewardid) + " as the reward?"; next; if(select("Yes:No") == 1) { set $reward, .@rewardid; } } goto Begin; RestartRace: mes "[ ^0099ccRace to Max Level^000000 ]"; mes "Are you sure you want to restart the race?"; next; if (select("Yes:No") == 1) { for (.@i = 0; .@i < getarraysize(.@rewardablejobs); .@i++) { set $rewarded$[.@rewardablejobs[.@i]], ""; } announce "The Race to Max Level has begun! Claim a reward once you reach " + .@maxbase + " base and " + .@maxjob + " class!", bc_all; } goto Begin; GetReward: next; mes "[ ^0099ccRace to Max Level^000000 ]"; mes "Let's see... " + strcharinfo(0) + ", huh?"; next; set .@competitioner, 0; for (.@i = 0; .@i < getarraysize(.@rewardablejobs); .@i++) { if (Class == .@rewardablejobs[.@i]) { set .@competitioner, 1; if ( readparam(bStr) < 300 || readparam(bVit) < 300 || readparam(bInt) < 300 || readparam(bAgi) < 300 || readparam(bLuk) < 300 || readparam(bDex) < 300 ) { mes "You need to have 300 for all Stats."; } else if ($rewarded$[Class] == strcharinfo(0)+":"+.@uniqueid$ ) { mes "You have already claimed your reward."; } else if ($rewarded$[Class] != "") { mes "Too late!"; mes "The reward for " + jobname(Class) + " was already claimed by " + $rewarded$[Class] + "."; } else goto GiveReward; } } if (.@competitioner == 0) mes "[ ^0099ccRace to Max Level^000000 ]"; mes "You need to change your job."; close; GiveReward: set $rewarded$[Class], strcharinfo(0)+":"+.@uniqueid$; mes "[ ^0099ccRace to Max Level^000000 ]"; mes "Congratulations! You were the first " + jobname(Class) + " to reach " + .@maxbase + " base and " + .@maxjob + " class!"; getitem $reward, 1; announce strcharinfo(0) + " (" + jobname(Class) + ") reached Max. Level and received " + getitemname($reward) + "!", bc_all; close; ExplainRace: mes "[ ^0099ccRace to Max Level^000000 ]"; mes "Yes! When you reach the maximum level for your class, talk to me and you'll be rewarded with a special item."; next; goto Begin; ShowRewarded: mes "[ ^0099ccRace to Max Level^000000 ]"; for (.@i = 0; .@i < getarraysize(.@rewardablejobs); .@i++) { explode(.@rewarded$, $rewarded$[.@rewardablejobs[.@i]], ":"); mes jobname(.@rewardablejobs[.@i]) + ": " + (($rewarded$[.@rewardablejobs[.@i]] != "") ? .@rewarded$[0] : "^ff0000Nobody^000000"); } next; goto Begin; }
Todo:
Spoiler- 3 winners to each job ( I didnt do it because it is quite a hassle for me )
- Edit the npc dialogues.
-
ahh i see, didnt read the script. My bad.
-
<map name>,<x>,<y>,<facing>%TAB%shop%TAB%<NPC Name>%TAB%<sprite id>,<itemid>:<price>{,<itemid>:<price>...}
^ why not use that?
- 1
-
15 hours ago, Takuyakii said:
on this new version , the event are not auto starting.
Same fix done from Poring Catcher :
- 1
-
15 hours ago, Takuyakii said:
on this new version , the event are not auto starting.
Err this should be the fix for that :
Tested and working.
- 1
-
3 hours ago, idLaZ said:
Hi @Mabuhay maybe you know why commenting this code didn't heals the emp?
Commenting that part will enable healing to Emp.
Not sure why but this might be caused by the WoE maps not showing damage. Meaning, Emp is healing correctly but the values are not exactly shown correctly. I never tried doing this modification.
-
On 11/13/2019 at 10:11 PM, Takuyakii said:
Poring are now auto starting the problem is the next schedule after the event, the timer will not shown
edit
.event_time = .@timer + .event_cd - 1; // deduct 1 sec from current time
to
.event_time = .@time + .event_cd - 1; // deduct 1 sec from current time
- 1
-
1 minute ago, IsabelaFernandez said:
Thank you very much @Mabuhay you always fast and helpful to the whole community, thanks again and congratulations
Just a good timing that i am online and not quite busy.
-
16 minutes ago, IsabelaFernandez said:
Hello everyone, I would like instead of the price to be zeny, I wanted item ID 7420 as price to be using the NPC service.
Thanks!
// credits to Annieruru - script Stylist -1,{ mes .npc_name$; mes "Eu posso mudar sua aparência."; if( .item_size ){ mes " "; mes "^777777[ TAXAS DO SERVIÇO ]^000000"; for( .@i = 0; .@i < .menu_size; .@i++ ) if( .npc_mode & ( 1 << .@i ) ) if( .item[.@i] ) mes "^0055FF"+.menu_name$[.@i]+" : ^777777"+ .item[.@i] +" x "+getitemname(7420)+"^000000"; else mes "^0055FF"+.menu_name$[.@i]+" : ^777777Free of Charge^000000"; } next; .@style = ( select( .npc_menu$ ) - 1 ); .@style_value = getlook( .look_type[.@style] ); deletearray .@blacklist; switch( .@style ){ Case 0: .@blacklist$ = ","+getd( ".blacklist_hairstyle_"+Sex+"$" )+","; break; Case 1: .@blacklist$ = ","+getd( ".blacklist_haircolor_"+Sex+"$" )+","; break; Case 2: .@blacklist$ = ","+getd( ".blacklist_clothe_"+Sex+"$" )+","; break; default: break; } .@style_number = .min_style[.@style]; do{ next; mes .npc_name$; mes "Current "+.menu_name$[.@style]+" : ^0055FF"+.@style_number+"th^000000"; mes " "; .@removed = 0; if( compare( .@blacklist$,","+.@style_number+"," ) ){ mes "^FF0000NOTE : This style REMOVED^000000"; .@removed = 1; setlook .look_type[.@style],.min_style[.@style]; }else{ setlook .look_type[.@style],.@style_number; if( .item[.@style] ){ mes "Cost : ^777777"+ .item[.@style] +" x "+getitemname(7420)+"^000000"; mes " "; } } .@next = .@style_number + 1; .@prev = .@style_number - 1; if( .@next > .max_style[.@style] ) .@next = .min_style[.@style]; if( .@prev < .min_style[.@style] ) .@prev = .max_style[.@style]; .@select = prompt( "Próximo - [ ^777777"+.@next+"th Style^000000 ]", "Voltar - [ ^777777"+.@prev+"th Style^000000 ]", "Pular para...", ( .@removed )?"":"^0055FFCerto, eu quero esse "+.menu_name$[.@style]+"^000000" ); switch( .@select ){ Case 1: .@style_number = .@next; break; Case 2: .@style_number = .@prev; break; Case 3: mes "Available Style : ^0055FF"+.min_style[.@style]+" ~ "+.max_style[.@style]+"^000000."; input .@style_number,.min_style[.@style],.max_style[.@style]; break; Case 4: if( .@style_value == .@style_number ){ mes "Swt..this is your original hairstyles."; } else if( .item[.@style] && countitem(7420) < .item[.@style] ){ mes "You dont have enough "+getitemname(7420)+" to change this "+.menu_name$[.@style]+"."; }else{ mes "Aproveite seu ^0055FFNEW "+.menu_name$[.@style]+" !!"; if( .item[.@style] ) delitem 7420, .item[.@style]; .@style_value = .@style_number; } default: setlook .look_type[.@style],.@style_value; break; } }while( .@select != 4 && .@select != 255 ); close; OnInit: // NPC name .npc_name$ = "[^0055FF ::: Estilista ::: ^000000]"; // NPC Mode ( Bitmask ) // 1 - Enable Hairstyle // 2 - Enable Hair Color // 4 - Enable Cloth Color .npc_mode = 7; // Menu Name setarray .menu_name$, "Cor do Cabelo", "Cor do Cabelo", "Cor da Roupa"; // Payment (7420) setarray .item, 100000, // Hairstyle 0, // Hair Color 35000; // Cloth Color // Blacklisted Style for each style and each gender. // --- Female --- .blacklist_hairstyle_0$ = "2,4,6"; .blacklist_haircolor_0$ = "1,3,5"; .blacklist_cloth_0$ = "143,188,261"; // --- Male --- .blacklist_hairstyle_1$ = "3,5,7"; .blacklist_haircolor_1$ = "2,4,6"; .blacklist_cloth_1$ = "143,188,261"; // Dont edit setarray .min_style,getbattleflag( "min_hair_style" ),getbattleflag( "min_hair_color" ),getbattleflag( "min_cloth_color" ); setarray .max_style,getbattleflag( "max_hair_style" ),getbattleflag( "max_hair_color" ),getbattleflag( "max_cloth_color" ); .menu_size = getarraysize( .menu_name$ ); .item_size = getarraysize( .item ); setarray .look_type,LOOK_HAIR,LOOK_HAIR_COLOR,LOOK_CLOTHES_COLOR; for( .npc_menu$ = ""; .@i < .menu_size; .@i++ ) .npc_menu$ = .npc_menu$ + ( ( .npc_mode & ( 1 << .@i ) )? .menu_name$[.@i]:"" ) +":"; end; } // NPC Lists prontera,175,202,4 duplicate(Stylist) Estilista#4 878
Dont forget to edit this part :
// Payment (7420) = item amount setarray .item, 100000, // Hairstyle 0, // Hair Color 35000; // Cloth Color
- 1
Can Anyone See My Error?
in Source Support
Posted
Oh yah i forgot about that.
Anyways, this is how I understand the original code :
else //Default increase return ((level+15) / 5);
translate to :
((1 level up + 15) / 5) per level up
Meaning, every level up would give player + 3 status points.
supposedly it should be around 3.8 but since the emulator cannot read decimal, it automatically rounds down(?)
if you want to add +217 status points, you may be looking at the wrong area.
Im not sure because i havent tested but if you could, try looking for this part on pc.cpp
int pc_checkbaselevelup(struct map_session_data *sd) .... next = pc_gets_status_point(sd->status.base_level); sd->status.base_level++; sd->status.status_point += next;
add this below
if ( sd->status.base_level == 201 ) sd->status.status_point += 217;
Tell me how is it.