僔乕僩斣崋是什么字体转换器在线转换

Development Platform
& View Code
pc.c:Code Content
x=atn_rand()%(map[m].xs-2)+1;
y=atn_rand()%(map[m].ys-2)+1;
}&while(map_getcell(m,x,y,CELL_CHKNOPASS));
if(m&==&sd-&bl.m)&{
//&摨偠儅僢僾側偺偱僟儞僗儐僯僢僩堷偒宲偓
sd-&ud.to_x&=&x;
sd-&ud.to_y&=&y;
skill_stop_dancing(&sd-&bl,&2);&//堏摦愭偵儐僯僢僩傪堏摦偡傞偐偳偆偐偺敾抐傕偡傞
//&堘偆儅僢僾側偺偱僟儞僗儐僯僢僩嶍彍
skill_stop_dancing(&sd-&bl,&1);
if(strlen(sd-&mapname)&&&4) //怴婯儘僌僀儞帪偼false偲偟偰flag傪梌偊側偄
if(sd-&bl.prev&!=&NULL){
unit_remove_map(&sd-&bl,clrtype);
if(sd-&status.pet_id&&&0&&&&sd-&pd)&{
if(sd-&pd-&bl.m&!=&m&&&&sd-&pet.intimate&&=&0)&{
unit_free(&sd-&pd-&bl,&0);
intif_delete_petdata(sd-&status.pet_id);
sd-&status.pet_id&=&0;
sd-&pd&=&NULL;
sd-&petDB&=&NULL;
if(battle_config.pet_status_support)
status_calc_pc(sd,2);
else&if(sd-&pet.intimate&&&0)&{
unit_remove_map(&&sd-&pd-&bl,&clrtype&0xffff&);
if(sd-&status.homun_id&&&0&&&&sd-&hd){
unit_remove_map(&&sd-&hd-&bl,&clrtype&0xffff&);
clif_changemap(sd,mapname,x,y);
memcpy(sd-&mapname,mapname,24);
sd-&bl.m&=&m;
sd-&bl.x&=&x;
sd-&bl.y&=&y;
if(sd-&status.option&2)
status_change_end(&sd-&bl,&SC_HIDING,&-1);
if(pc_iscloaking(sd))
status_change_end(&sd-&bl,&SC_CLOAKING,&-1);
if(pc_ischasewalk(sd))
status_change_end(&sd-&bl,&SC_CHASEWALK,&-1);
//&儁僢僩偺堏摦
if(sd-&status.pet_id&&&0&&&&sd-&pd&&&&sd-&pet.intimate&&&0)&{
sd-&pd-&bl.m&=&m;
sd-&pd-&bl.x&=&sd-&pd-&ud.to_x&=&x;
sd-&pd-&bl.y&=&sd-&pd-&ud.to_y&=&y;
sd-&pd-&dir&=&sd-&
//&儂儉偺堏摦
if(sd-&status.homun_id&&&0&&&&sd-&hd){
sd-&hd-&bl.m&=&m;
sd-&hd-&bl.x&=&sd-&hd-&ud.to_x&=&x;
sd-&hd-&bl.y&=&sd-&hd-&ud.to_y&=&y;
sd-&hd-&dir&&=&sd-&
//OnPCMoveMap僀儀儞僩
if(flag&&&&battle_config.pc_movemap_script)
npc_event_doall_id(&OnPCMoveMap&,sd-&bl.id,sd-&bl.m);
// map_addblock(&sd-&bl); ///&僽儘僢僋搊榐偲spawn偼
// clif_spawnpc(sd);
//&clif_parse_LoadEndAck偱峴偆
* 僊儖僪僗僉儖偺桳岠僠僃僢僋
* 曄壔偑偁傟偽僗僥乕僞僗偺嵞寁嶼
int&pc_check_guild_skill_effective_range(struct&map_session_data&*sd)
int&mi,dx,dy,range,min_
struct&map_session_data&*&gmsd&=&NULL;
struct&map_session_data&*&member&=&NULL;
struct&guild*&&g&=NULL;
nullpo_retr(0,&sd);
//僊儖僪偵擖偭偰偄側偄
if(sd-&status.guild_id&==&0)
//僊儖僪僗僉儖偑柍岠
if(!battle_config.guild_hunting_skill_available)
//僊儖僪庢摼偱偒側偐偭偨
if((g&=&guild_search(sd-&status.guild_id))==NULL)
//儅僗僞乕愙懕偟偰偄側偄
if((gmsd&=&g-&member[0].sd)==NULL){
//岠壥斖埻撪偩偭偨
if(sd-&under_the_influence_of_the_guild_skill&&&0)
status_calc_pc(sd,0);
//僗僉儖侾埲忋
if(pc_checkskill(gmsd,GD_LEADERSHIP)&&&0&||&pc_checkskill(gmsd,GD_SOULCOLD)&&&0
||&pc_checkskill(gmsd,GD_GLORYWOUNDS)&&&0&||&pc_checkskill(gmsd,GD_HAWKEYES)&&&0)
min_range&=&999;
if(sd&==&gmsd)//帺暘偑僊儖儅僗
if(battle_config.allow_me_guild_skill&&&&sd-&under_the_influence_of_the_guild_skill&==&0)
status_calc_pc(sd,0);
//僗僉儖嫍棧敾掕
for(mi&=&1;mi&&&g-&max_mi++)
member&=&g-&member[mi].
//儊儞僶乕愙懕側偟
if(member&==&NULL)
//儅僢僾偑堘偆
if(sd-&bl.m&!=&member-&bl.m)
//慜夞偼岠壥斖埻撪偩偭偨
if(member-&under_the_influence_of_the_guild_skill&&&0)
status_calc_pc(sd,0);
dx&=&abs(sd-&bl.x&-&member-&bl.x);
dy&=&abs(sd-&bl.y&-&member-&bl.y);
if(battle_config.guild_skill_effective_range&&&0)//僗僉儖傪摨堦嫍棧敾掕偡傞
range&=&battle_config.guild_skill_effective_
if(dx&&=range&&&&&dy&&=&range)//斖埻撪
if(member-&under_the_influence_of_the_guild_skill==0)///岠壥奜偩偭偨
status_calc_pc(member,0);
}else{//斖埻奜
if(member-&under_the_influence_of_the_guild_skill&0)//岠壥撪偩偭偨
status_calc_pc(member,0);
}else{//僗僉儖傪屄暿偵嫍棧敾掕偡傞
min_range&=&999;
range&=&skill_get_range(GD_LEADERSHIP,guild_skill_get_lv(g,GD_LEADERSHIP));
if(guild_skill_get_lv(g,GD_LEADERSHIP)&&&0&&&&dx&&=range&&&&&dy&&=&range)
if(min_range&&&range)&min_range&=&
range&=&skill_get_range(GD_SOULCOLD,guild_skill_get_lv(g,GD_SOULCOLD));
if(guild_skill_get_lv(g,GD_SOULCOLD)&&&0&&&&dx&&=range&&&&&dy&&=&range)
if(min_range&&&range)&min_range&=&
range&=&skill_get_range(GD_GLORYWOUNDS,guild_skill_get_lv(g,GD_GLORYWOUNDS));
if(guild_skill_get_lv(g,GD_GLORYWOUNDS)&&&0&&&&dx&&=range&&&&&dy&&=&range)
if(min_range&&&range)&min_range&=&
range&=&skill_get_range(GD_HAWKEYES,guild_skill_get_lv(g,GD_HAWKEYES));
if(guild_skill_get_lv(g,GD_HAWKEYES)&&&0&&&&dx&&=range&&&&&dy&&=&range)
if(min_range&&&range)&min_range&=&
if(min_range&==&999)&//岠壥斖埻奜
//慜偼岠壥斖埻撪偩偭偨
if(member-&under_the_influence_of_the_guild_skill&0)
status_calc_pc(member,0);
}else{&//岠壥斖埻撪
if(&member-&under_the_influence_of_the_guild_skill==0)//慜偼斖埻奜偩偭偨
status_calc_pc(member,0);
} //慜偼斖埻撪偱崱夞嫍棧偑曄傢偭偨-&婔偮偐岠壥曄摦
else&if((min_range+1)&!=&member-&under_the_influence_of_the_guild_skill)
status_calc_pc(member,0);
}else{//僊儖儊儞
//摨堦儅僢僾
if(sd-&bl.m&==&gmsd-&bl.m)
dx&=&abs(sd-&bl.x&-&gmsd-&bl.x);
dy&=&abs(sd-&bl.y&-&gmsd-&bl.y);
if(battle_config.guild_skill_effective_range&&&0)//僗僉儖傪摨堦嫍棧敾掕偡傞
range&=&battle_config.guild_skill_effective_
if(dx&&=range&&&&&dy&&=&range)//斖埻撪
if(sd-&under_the_influence_of_the_guild_skill==0)///岠壥奜偩偭偨
status_calc_pc(sd,0);
}else{//斖埻奜
if(sd-&under_the_influence_of_the_guild_skill&0)//岠壥撪偩偭偨
status_calc_pc(sd,0);
}else{//僗僉儖傪屄暿偵嫍棧敾掕偡傞
min_range&=&999;
range&=&skill_get_range(GD_LEADERSHIP,guild_skill_get_lv(g,GD_LEADERSHIP));
if(guild_skill_get_lv(g,GD_LEADERSHIP)&&&0&&&&dx&&=range&&&&&dy&&=&range)
if(min_range&&&range)&min_range&=&
range&=&skill_get_range(GD_SOULCOLD,guild_skill_get_lv(g,GD_SOULCOLD));
if(guild_skill_get_lv(g,GD_SOULCOLD)&&&0&&&&dx&&=range&&&&&dy&&=&range)
if(min_range&&&range)&min_range&=&
range&=&skill_get_range(GD_GLORYWOUNDS,guild_skill_get_lv(g,GD_GLORYWOUNDS));
if(guild_skill_get_lv(g,GD_GLORYWOUNDS)&&&0&&&&dx&&=range&&&&&dy&&=&range)
if(min_range&&&range)&min_range&=&
range&=&skill_get_range(GD_HAWKEYES,guild_skill_get_lv(g,GD_HAWKEYES));
if(guild_skill_get_lv(g,GD_HAWKEYES)&&&0&&&&dx&&=range&&&&&dy&&=&range)
if(min_range&&&range)&min_range&=&
if(min_range&==&999)&//岠壥斖埻奜
//慜偼岠壥斖埻撪偩偭偨
if(sd-&under_the_influence_of_the_guild_skill&0)
status_calc_pc(sd,0);
}else{&//岠壥斖埻撪
if(&sd-&under_the_influence_of_the_guild_skill==0)//慜偼斖埻奜偩偭偨
status_calc_pc(sd,0);
} //慜偼斖埻撪偱崱夞嫍棧偑曄傢偭偨-&婔偮偐岠壥曄摦
else&if((min_range+1)&!=&sd-&under_the_influence_of_the_guild_skill)
status_calc_pc(sd,0);
}else{//儅僢僾偑堘偆
if(sd-&under_the_influence_of_the_guild_skill&0)//慜偼岠壥斖埻撪偩偭偨
status_calc_pc(sd,0);
/*==========================================
&*&PC偺儔儞僟儉儚乕僾
&*------------------------------------------
int&pc_randomwarp(struct&map_session_data&*sd,int&type)
int&x,y,i=0;
nullpo_retr(0,&sd);
m=sd-&bl.m;
if(map[sd-&bl.m].flag.noteleport) //&僥儗億乕僩嬛巭
x=atn_rand()%(map[m].xs-2)+1;
y=atn_rand()%(map[m].ys-2)+1;
}while(&map_getcell(m,x,y,CELL_CHKNOPASS)&&&(i++)&1000&);
if(i&1000)
pc_setpos(sd,map[m].name,x,y,type);
/*==========================================
&*&尰嵼埵抲偺儊儌
&*------------------------------------------
void&pc_memo(struct&map_session_data&*sd,int&i)
int&skill,&j;
nullpo_retv(sd);
if(map[sd-&bl.m].flag.nomemo){
clif_skill_teleportmessage(sd,1);
skill&=&pc_checkskill(sd,&AL_WARP);
if&(skill&&&1)&{
clif_skill_memo(sd,&2);&//&00:&success&to&take&memo.,&01:&insuffisant&skill&level.,&02:&You&don't&know&warp&skill.
if&(skill&&&2&||&(i&!=&-1&&&&(i&&&0&||&i&&=&MAX_PORTAL_MEMO)))&{
clif_skill_memo(sd,1);
for(j&=&0;&j&&&MAX_PORTAL_MEMO;&j++)&{
if(strcmp(sd-&status.memo_point[j].map,map[sd-&bl.m].name)==0){
if(i==-1){
for(i&=&skill&-&3;&i&&=&0;&i--)&{
memcpy(&sd-&status.memo_point[i+1],&sd-&status.memo_point[i],
sizeof(struct&point));
memcpy(sd-&status.memo_point[i].map,map[sd-&bl.m].name,24);
sd-&status.memo_point[i].x=sd-&bl.x;
sd-&status.memo_point[i].y=sd-&bl.y;
clif_skill_memo(sd,0);
/*==========================================
&*&pc嬱偗懌梫媮
&*------------------------------------------
int&pc_runtodir(struct&map_session_data&*sd)
int&i,to_x,to_y,dir_x,dir_y;
nullpo_retr(0,&sd);
to_x&=&sd-&bl.x;
to_y&=&sd-&bl.y;
dir_x&=&dirx[(int)sd-&dir];
dir_y&=&diry[(int)sd-&dir];
for(i=0;i&AREA_SIZE;i++)
if(map_getcell(sd-&bl.m,to_x+dir_x,to_y+dir_y,CELL_CHKNOPASS))
if(map_getcell(sd-&bl.m,to_x+dir_x,to_y+dir_y,CELL_CHKPASS))
to_x&+=&dir_x;
to_y&+=&dir_y;
//恑傔側偄応崌丂嬱偗懌廔椆丂忈奞暔偱巭傑偭偨応崌僗僷乕僩忬懺夝彍
if(to_x&==&sd-&bl.x&&&&to_y&==&sd-&bl.y)
if(sd-&sc_data&&&&sd-&sc_data[SC_RUN].timer!=-1)
status_change_end(&sd-&bl,SC_RUN,-1);
if(sd-&sc_data&&&&sd-&sc_data[SC_SPURT].timer!=-1)
status_change_end(&sd-&bl,SC_SPURT,-1);
unit_walktoxy(&&sd-&bl,&to_x,&to_y);
/*==========================================
&*&PC偺岦嫃偰偄傞傎偆偵step暘曕偔
&*------------------------------------------
int&pc_walktodir(struct&map_session_data&*sd,int&step)
int&i,to_x,to_y,dir_x,dir_y;
nullpo_retr(0,&sd);
to_x&=&sd-&bl.x;
to_y&=&sd-&bl.y;
dir_x&=&dirx[(int)sd-&dir];
dir_y&=&diry[(int)sd-&dir];
for(i=0;i&i++)
if(map_getcell(sd-&bl.m,to_x+dir_x,to_y+dir_y,CELL_CHKNOPASS))
if(map_getcell(sd-&bl.m,to_x+dir_x,to_y+dir_y,CELL_CHKPASS))
to_x&+=&dir_x;
to_y&+=&dir_y;
unit_walktoxy(&sd-&bl,&to_x,&to_y);
/*==========================================
&*&pc憱傝崅挼傃梫媮
&*------------------------------------------
int&pc_highjumptoxy(struct&map_session_data&*sd,int&x,int&y)
nullpo_retr(0,&sd);
unit_walktoxy(&&sd-&bl,&x,&y);
int&pc_highjumptodir(struct&map_session_data&*sd,int&distance)
int&i,to_x,to_y,dir_x,dir_y;
nullpo_retr(0,&sd);
to_x&=&sd-&bl.x;
to_y&=&sd-&bl.y;
dir_x&=&dirx[(int)sd-&dir];
dir_y&=&diry[(int)sd-&dir];
for(i=i&1;i--)
if(map_getcell(sd-&bl.m,sd-&bl.x+dir_x*i,sd-&bl.y+dir_y*i,CELL_CHKPASS))
to_x&=&sd-&bl.x+dir_x*(i-1);
to_y&=&sd-&bl.y+dir_y*(i-1);
if(sd-&sc_data)
sd-&sc_data[SC_HIGHJUMP].val4=0;
unit_walktoxy(&&sd-&bl,&to_x,&to_y);
//&晲婍愴摤
/*==========================================
&*&僗僉儖偺専嶕&強桳偟偰偄偨応崌Lv偑曉傞
&*------------------------------------------
int&pc_checkskill(struct&map_session_data&*sd,int&skill_id)
if(sd&==&NULL)&return&0;
if(&skill_id&=10000&){
struct&guild&*g;
if(&sd-&status.guild_id&0&&&&(g=guild_search(sd-&status.guild_id))!=NULL)
return&guild_checkskill(g,skill_id);
if(skill_id&&&0&||&skill_id&&=&MAX_SKILL)&return&0;
if(sd-&cloneskill_id&0&&&&skill_id==sd-&cloneskill_id)
return&(sd-&cloneskill_lv&&&sd-&status.skill[skill_id].lv&?
&&&&&&&&sd-&cloneskill_lv&:&sd-&status.skill[skill_id].lv);
}else&if(sd-&status.skill[skill_id].id&==&skill_id)
if(sd-&status.class==PC_CLASS_TK&&&&sd-&status.skill[skill_id].flag==0&&&&pc_checkskill2(sd,TK_MISSION)&0&&&&sd-&status.base_level&=90&&&
&&&sd-&status.skill_point==0&&&&ranking_get_pc_rank(sd,RK_TAEKWON))
return&skill_get_max(skill_id);
return&(sd-&status.skill[skill_id].lv);
/*==========================================
&*&僗僉儖偺専嶕&強桳偟偰偄偨応崌Lv偑曉傞
&*------------------------------------------
int&pc_checkskill2(struct&map_session_data&*sd,int&skill_id)
if(sd&==&NULL)&return&0;
if(&skill_id&=10000&){
struct&guild&*g;
if(&sd-&status.guild_id&0&&&&(g=guild_search(sd-&status.guild_id))!=NULL)
return&guild_checkskill(g,skill_id);
if(skill_id&&&0&||&skill_id&&=&MAX_SKILL)&return&0;
if(sd-&status.skill[skill_id].id&==&skill_id)
return&(sd-&status.skill[skill_id].lv);
/*==========================================
&*&晲婍曄峏偵傛傞僗僉儖偺宲懕僠僃僢僋
&*&&&struct&map_session_data&*sd 僙僢僔儑儞僨乕僞
&*&&&int&nameid
&*------------------------------------------
int&pc_checkallowskill(struct&map_session_data&*sd)
nullpo_retr(0,&sd);
if(&sd-&sc_data&==&NULL&)
if(!(skill_get_weapontype(KN_TWOHANDQUICKEN)&(1&&sd-&status.weapon))&&&&sd-&sc_data[SC_TWOHANDQUICKEN].timer!=-1)&{ //&2HQ
status_change_end(&sd-&bl,SC_TWOHANDQUICKEN,-1); //&2HQ傪夝彍
if(!(skill_get_weapontype(KN_ONEHAND)&(1&&sd-&status.weapon))&&&&sd-&sc_data[SC_ONEHAND].timer!=-1)&{ //&1HQ
status_change_end(&sd-&bl,SC_ONEHAND,-1); //&1HQ傪夝彍
if(!(skill_get_weapontype(LK_AURABLADE)&(1&&sd-&status.weapon))&&&&sd-&sc_data[SC_AURABLADE].timer!=-1)&{ /*&僆乕儔僽儗乕僪&*/
status_change_end(&sd-&bl,SC_AURABLADE,-1); /*&僆乕儔僽儗乕僪傪夝彍&*/
if(!(skill_get_weapontype(LK_PARRYING)&(1&&sd-&status.weapon))&&&&sd-&sc_data[SC_PARRYING].timer!=-1)&{ /*&僷儕僀儞僌&*/
status_change_end(&sd-&bl,SC_PARRYING,-1); /*&僷儕僀儞僌傪夝彍&*/
if(!(skill_get_weapontype(LK_CONCENTRATION)&(1&&sd-&status.weapon))&&&&sd-&sc_data[SC_CONCENTRATION].timer!=-1)&{ /*&僐儞僙儞僩儗乕僔儑儞&*/
status_change_end(&sd-&bl,SC_CONCENTRATION,-1); /*&僐儞僙儞僩儗乕僔儑儞傪夝彍&*/
if(!(skill_get_weapontype(CR_SPEARQUICKEN)&(1&&sd-&status.weapon))&&&&sd-&sc_data[SC_SPEARSQUICKEN].timer!=-1){ //&僗僺傾僋傿僢働儞
status_change_end(&sd-&bl,SC_SPEARSQUICKEN,-1); //&僗僺傾僋僀僢働儞傪夝彍
if(!(skill_get_weapontype(BS_ADRENALINE)&(1&&sd-&status.weapon))&&&&sd-&sc_data[SC_ADRENALINE].timer!=-1){ //&傾僪儗僫儕儞儔僢僔儏
status_change_end(&sd-&bl,SC_ADRENALINE,-1); //&傾僪儗僫儕儞儔僢僔儏傪夝彍
if(!(skill_get_weapontype(BS_ADRENALINE2)&(1&&sd-&status.weapon))&&&&sd-&sc_data[SC_ADRENALINE2].timer!=-1){ //&僼儖傾僪儗僫儕儞儔僢僔儏
status_change_end(&sd-&bl,SC_ADRENALINE2,-1); //&僼儖傾僪儗僫儕儞儔僢僔儏傪夝彍
if(!(skill_get_weapontype(GS_GATLINGFEVER)&(1&&sd-&status.weapon))&&&&sd-&sc_data[SC_GATLINGFEVER].timer!=-1){ //&僈僩儕儞僌僼傿乕僶乕
status_change_end(&sd-&bl,SC_GATLINGFEVER,-1); //&僈僩儕儞僌僼傿乕僶乕傪夝彍
if((sd-&weapontype1&!=&0&||&sd-&weapontype2&!=&0)&&&&sd-&sc_data[SC_SPURT].timer!=-1){
status_change_end(&sd-&bl,SC_SPURT,-1); //&嬱偗懌STR
if(sd-&status.shield&&=&0)&{
if(sd-&sc_data[SC_AUTOGUARD].timer!=-1){ //&僆乕僩僈乕僪
status_change_end(&sd-&bl,SC_AUTOGUARD,-1);
if(sd-&sc_data[SC_DEFENDER].timer!=-1){ //&僨傿僼僃儞僟乕
status_change_end(&sd-&bl,SC_DEFENDER,-1);
if(sd-&sc_data[SC_REFLECTSHIELD].timer!=-1){&//儕僼儗僋僩僔乕儖僪
status_change_end(&sd-&bl,SC_REFLECTSHIELD,-1);
/*==========================================
&*&憰旛昳偺僠僃僢僋
&*------------------------------------------
int&pc_checkequip(struct&map_session_data&*sd,int&pos)
nullpo_retr(-1,&sd);
for(i=0;i&11;i++){
if(pos&&&equip_pos[i])
return&sd-&equip_index[i];
return&-1;
/*==========================================
&*&揮惗怑傗梴巕怑偺尦偺怑嬈傪曉偡
&*------------------------------------------
struct&pc_base_job&pc_calc_base_job(int&b_class)
struct&pc_base_job&
//揮惗傗梴巕偺応崌偺尦偺怑嬈傪嶼弌偡傞
if(b_class&&=&PC_CLASS_SNV&||&b_class==PC_CLASS_GS&||&b_class==PC_CLASS_NJ&)
bj.job&=&b_
bj.upper&=&0;
else&if(b_class&&=&PC_CLASS_BASE2&&&&b_class&&&PC_CLASS_BASE3)
bj.job&=&b_class&-&PC_CLASS_BASE2;
bj.upper&=&1;
else&if(b_class&&=&PC_CLASS_BASE3&&&&b_class&&PC_CLASS_SNV3)
bj.job&=&b_class&-&PC_CLASS_BASE3;
bj.upper&=&2;
}else&if(b_class&==&PC_CLASS_SNV3)
bj.job&&&=&23;
bj.upper&=&2;
else&if(b_class&=PC_CLASS_TK&&&&b_class&=&PC_CLASS_SL)//僥僐儞乣
bj.job&=&24&+&b_class&-&PC_CLASS_TK;
bj.upper&=&0;
if(battle_config.enable_upper_class==0){&//conf偱柍岠偵側偭偰偄偨傜upper=0
bj.upper&=&0;
if(bj.job&==&0){
bj.type&=&0;
}else&if(bj.job&&&7&||&bj.job==23&||&bj.job==24&||&bj.job==28&||&bj.job==29){
bj.type&=&1;
bj.type&=&2;
int&pc_checkbaselevelup(struct&map_session_data&*sd)
int&next&=&pc_nextbaseexp(sd);
nullpo_retr(0,&sd);
if(sd-&status.base_exp&&=&next&&&&next&&&0){
struct&pc_base_job&s_class&=&pc_calc_base_job(sd-&status.class);
//&base懁儗儀儖傾僢僾張棟
sd-&status.base_exp&-=&
sd-&status.base_level&++;
sd-&status.status_point&+=&(sd-&status.base_level+14)&/&5&;
clif_updatestatus(sd,SP_STATUSPOINT);
clif_updatestatus(sd,SP_BASELEVEL);
clif_updatestatus(sd,SP_NEXTBASEEXP);
status_calc_pc(sd,0);
pc_heal(sd,sd-&status.max_hp,sd-&status.max_sp);
//僗僷僲價偼僉儕僄丄僀儉億丄儅僯僺丄僌儘丄僒僼儔偑偐偐傞
if(s_class.job&==&23){
status_change_start(&sd-&bl,SkillStatusChangeTable[PR_KYRIE],10,0,0,0,skill_get_time(PR_KYRIE,10),0&);
status_change_start(&sd-&bl,SkillStatusChangeTable[PR_IMPOSITIO],5,0,0,0,skill_get_time(PR_IMPOSITIO,5),0&);
status_change_start(&sd-&bl,SkillStatusChangeTable[PR_MAGNIFICAT],5,0,0,0,skill_get_time(PR_MAGNIFICAT,5),0&);
status_change_start(&sd-&bl,SkillStatusChangeTable[PR_GLORIA],5,0,0,0,skill_get_time(PR_GLORIA,5),0&);
status_change_start(&sd-&bl,SkillStatusChangeTable[PR_SUFFRAGIUM],3,0,0,0,skill_get_time(PR_SUFFRAGIUM,3),0&);
clif_misceffect(&sd-&bl,7); //&僗僷僲價揤巊
else&if(s_class.job&=PC_CLASS_TK&&&&s_class.job&=&PC_CLASS_SL)
clif_misceffect(&sd-&bl,9); //&僥僐儞宯揤巊
clif_misceffect(&sd-&bl,0);
//儗儀儖傾僢僾偟偨偺偱僷乕僥傿乕忣曬傪峏怴偡傞
//(岞暯斖埻僠僃僢僋)
party_send_movemap(sd);
int&pc_checkjoblevelup(struct&map_session_data&*sd)
int&next&=&pc_nextjobexp(sd);
nullpo_retr(0,&sd);
if(sd-&status.job_exp&&=&next&&&&next&&&0){
//&job懁儗儀儖傾僢僾張棟
sd-&status.job_exp&-=&
sd-&status.job_level&++;
clif_updatestatus(sd,SP_JOBLEVEL);
clif_updatestatus(sd,SP_NEXTJOBEXP);
sd-&status.skill_point&++;
clif_updatestatus(sd,SP_SKILLPOINT);
status_calc_pc(sd,0);
if(sd-&status.class&==&23)
clif_misceffect(&sd-&bl,8);
clif_misceffect(&sd-&bl,1);
/*==========================================
&*&宱尡抣庢摼
&*------------------------------------------
int&pc_gainexp(struct&map_session_data&*sd,struct&mob_data&*md,int&base_exp,int&job_exp)
char&output[128];
atn_bignumber&bexp=base_exp,&jexp=job_
atn_bignumber&
nullpo_retr(0,&sd);
if(sd-&bl.prev&==&NULL&||&unit_isdead(&sd-&bl))
int&race_id&=&status_get_race(&md-&bl);
int&tk_exp_rate&=&0;
if(sd-&sc_data[SC_MIRACLE].timer!=-1){&//&懢梲偲寧偲惎偺婏愓
tk_exp_rate&=&20*pc_checkskill(sd,SG_STAR_BLESS);
}else{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&懢梲偺廽暉丄寧偺廽暉丄惎偺廽暉
if((battle_config.allow_skill_without_day&||&is_day_of_sun())&&&&md-&class&==&sd-&hate_mob[0])
tk_exp_rate&=&10*pc_checkskill(sd,SG_SUN_BLESS);
else&if((battle_config.allow_skill_without_day&||&is_day_of_moon())&&&&md-&class&==&sd-&hate_mob[1])
tk_exp_rate&=&10*pc_checkskill(sd,SG_MOON_BLESS);
else&if((battle_config.allow_skill_without_day&||&is_day_of_star())&&&&md-&class&==&sd-&hate_mob[2])
tk_exp_rate&=&20*pc_checkskill(sd,SG_STAR_BLESS);
bexp&=&bexp*(100&+&sd-&exp_rate[race_id]+tk_exp_rate)/100;
jexp&=&jexp*(100&+&sd-&job_rate[race_id]+tk_exp_rate)/100;
if(md-&sc_data&&&&md-&sc_data[SC_RICHMANKIM].timer&!=&-1)&{
bexp&=&bexp*(125&+&md-&sc_data[SC_RICHMANKIM].val1*11)/100;
jexp&=&jexp*(125&+&md-&sc_data[SC_RICHMANKIM].val1*11)/100;
if(sd-&sc_data[SC_MEAL_INCEXP].timer&!=&-1)&{
bexp&=&bexp*sd-&sc_data[SC_MEAL_INCEXP].val1/100;
if(sd-&sc_data[SC_MEAL_INCJOB].timer&!=&-1)&{
jexp&=&jexp*sd-&sc_data[SC_MEAL_INCJOB].val1/100;
base_exp&=&(bexp&0x7fffffff)?&0x7fffffff:&(int)
job_exp&&=&(jexp&0x7fffffff)?&0x7fffffff:&(int)
if(sd-&status.guild_id&0){ //&僊儖僪偵忋擺
base_exp-=guild_payexp(sd,base_exp);
if(base_exp&&&0)
base_exp&=&0;
if(battle_config.disp_experience&&&&(base_exp&||&job_exp)){
snprintf(output,&sizeof&output,
msg_txt(131),base_exp,job_exp);
clif_disp_onlyself(sd,output,strlen(output));
//-------------&Base&----------------
per&=&battle_config.next_exp_
if(base_exp&0){
if((next=pc_nextbaseexp(sd))&0){
while((sd-&status.base_exp&+&base_exp)&&=&next){ //&LvUP
temp_exp&=&next&-&sd-&status.base_
if(&(per-(100-(atn_bignumber)sd-&status.base_exp*100/next))&&0)
per&-=&(100-(atn_bignumber)sd-&status.base_exp*100/next);
sd-&status.base_exp&=&
if(!pc_checkbaselevelup(sd)&||&(next&=&pc_nextbaseexp(sd))&=0)&
base_exp&-=&temp_
if((next=pc_nextbaseexp(sd))&0&&&&((atn_bignumber)base_exp&*&100&/&next)&&&per)
sd-&status.base_exp&=&(int)(&next&*&per&/&100&);
sd-&status.base_exp&+=&base_
if(sd-&status.base_exp&&&0)
sd-&status.base_exp&=&0;
pc_checkbaselevelup(sd);
sd-&status.base_exp&+=&base_
clif_updatestatus(sd,SP_BASEEXP);
//-------------&Job&----------------
per&=&battle_config.next_exp_
if(job_exp&0){
if((next&=&pc_nextjobexp(sd))&0){
while((sd-&status.job_exp&+&job_exp)&&=&next){ //&LvUP
temp_exp&=&next&-&sd-&status.job_
if(&(per-(100-(atn_bignumber)sd-&status.job_exp*100&/&next))&=0)
per&-=&(100-(atn_bignumber)sd-&status.job_exp*100&/&next);
sd-&status.job_exp&=&
if(!pc_checkjoblevelup(sd)&||&(next&=&pc_nextjobexp(sd))&=0)&
job_exp&-=&temp_
if((next&=&pc_nextjobexp(sd))&0&&&&((atn_bignumber)job_exp&*&100&/&next)&&&per)
sd-&status.job_exp&=&(int)(&next&*&per&/&100&);
sd-&status.job_exp&+=&job_
if(sd-&status.job_exp&&&0)
sd-&status.job_exp&=&0;
pc_checkjoblevelup(sd);
sd-&status.job_exp&+=&job_
clif_updatestatus(sd,SP_JOBEXP);
/*==========================================
&*&base&level懁昁梫宱尡抣寁嶼
&*------------------------------------------
int&pc_nextbaseexp(struct&map_session_data&*sd)
nullpo_retr(0,&sd);
if(sd-&status.base_level&=MAX_LEVEL&||&sd-&status.base_level&=0)
if(sd-&status.class==0)&i=0;
else&if(sd-&status.class&=6)&i=1;
else&if(sd-&status.class&=22)&i=2;
else&if(sd-&status.class==23)&i=3;
else&if(sd-&status.class==&PC_CLASS_GS)&&&&&&&&i=3;//僈儞僗儕儞僈乕
else&if(sd-&status.class==&PC_CLASS_NJ)&&&&&&&&i=3;//擡幰
else&if(sd-&status.class==PC_CLASS_BASE2)&&&&&&i=4;
else&if(sd-&status.class&=PC_CLASS_BASE2&+&6)&&i=5;
else&if(sd-&status.class&=PC_CLASS_BASE2&+&21)&i=6;
else&if(sd-&status.class&==&PC_CLASS_BASE3)&&&&i=0;//梴巕僲價
else&if(sd-&status.class&=&PC_CLASS_BASE3+6)&&&i=1;//梴巕堦師
else&if(sd-&status.class&=&PC_CLASS_BASE3+21)&&i=2;//梴巕擇師
else&if(sd-&status.class==&PC_CLASS_SNV3)&&&&&&i=3;//梴巕僗僷僲價
else&if(sd-&status.class&=&PC_CLASS_SL)&&&&&&&&i=1;//捛壛怑&揮惗慜偺抣
else&&i=1;//偦傟埲奜側傜揮惗慜
return&exp_table[i][sd-&status.base_level-1];
/*==========================================
&*&job&level懁昁梫宱尡抣寁嶼
&*------------------------------------------
int&pc_nextjobexp(struct&map_session_data&*sd)
nullpo_retr(0,&sd);
if(sd-&status.job_level&=MAX_LEVEL&||&sd-&status.job_level&=0)
if(sd-&status.class==0)&i=7;
else&if(sd-&status.class&=6)&i=8;
else&if(sd-&status.class&=22)&i=9;
else&if(sd-&status.class==23)&i=10;
else&if(sd-&status.class==&PC_CLASS_GS)&&&&&&&&i=15;//僈儞僗儕儞僈乕
else&if(sd-&status.class==&PC_CLASS_NJ)&&&&&&&&i=15;//擡幰
else&if(sd-&status.class==PC_CLASS_BASE2)&&&&&&i=11;
else&if(sd-&status.class&=PC_CLASS_BASE2&+&6)&&i=12;
else&if(sd-&status.class&=PC_CLASS_BASE2&+&21)&i=13;
else&if(sd-&status.class&==&PC_CLASS_BASE3)&&&&i=7;&//梴巕僲價
else&if(sd-&status.class&=&PC_CLASS_BASE3+6)&&&i=8;&//梴巕堦師
else&if(sd-&status.class&=&PC_CLASS_BASE3+21)&&i=9;//梴巕擇師
else&if(sd-&status.class==&PC_CLASS_SNV3)&&&&&&i=10;//梴巕僗僷僲價
else&if(sd-&status.class==&PC_CLASS_TK)&&&&&&&&i=8;//僥僐儞
else&if(sd-&status.class&=&PC_CLASS_SG2)&&&&&&&i=9;//働儞僙僀
else&if(sd-&status.class==&PC_CLASS_SL)&&&&&&&&i=14;//僜僂儖儕儞僇乕
else&i&=&9;//偦傟埲奜側傜擇師僥乕僽儖
return&exp_table[i][sd-&status.job_level-1];
/*==========================================
&*&昁梫僗僥乕僞僗億僀儞僩寁嶼
&*------------------------------------------
int&pc_need_status_point(struct&map_session_data&*sd,int&type)
nullpo_retr(-1,&sd);
if(type&SP_STR&||&type&SP_LUK)
return&-1;
type==SP_STR&?&sd-&status.str&:
type==SP_AGI&?&sd-&status.agi&:
type==SP_VIT&?&sd-&status.vit&:
type==SP_INT&?&sd-&status.int_:
type==SP_DEX&?&sd-&status.dex&:&sd-&status.
return&(val+9)/10+1;
/*==========================================
&*&擻椡抣惉挿
&*------------------------------------------
void&pc_statusup(struct&map_session_data&*sd,&unsigned&short&type)
int&val&=&0,&is_
nullpo_retv(sd);
need=pc_need_status_point(sd,type);
if(type&SP_STR&||&type&SP_LUK&||&need&0&||&need&sd-&status.status_point){
clif_statusupack(sd,type,0,0);
is_baby&=&pc_isbaby(sd);
switch(type){
case&SP_STR:
if(sd-&status.str&&=&battle_config.max_parameter_str)&{
clif_statusupack(sd,type,0,0);
if(is_baby&&&&sd-&status.str&&=&battle_config.baby_status_max)&{//梴巕
clif_statusupack(sd,type,0,0);
val=&++sd-&status.
case&SP_AGI:
if(sd-&status.agi&&=&battle_config.max_parameter_agi)&{
clif_statusupack(sd,type,0,0);
if(is_baby&&&&sd-&status.agi&&=&battle_config.baby_status_max)&{//梴巕
clif_statusupack(sd,type,0,0);
val=&++sd-&status.
case&SP_VIT:
if(sd-&status.vit&&=&battle_config.max_parameter_vit)&{
clif_statusupack(sd,type,0,0);
if(is_baby&&&&sd-&status.vit&&=&battle_config.baby_status_max)&{//梴巕
clif_statusupack(sd,type,0,0);
val=&++sd-&status.
case&SP_INT:
if(sd-&status.int_&&=&battle_config.max_parameter_int)&{
clif_statusupack(sd,type,0,0);
if(is_baby&&&&sd-&status.int_&&=&battle_config.baby_status_max)&{//梴巕
clif_statusupack(sd,type,0,0);
val=&++sd-&status.int_;
case&SP_DEX:
if(sd-&status.dex&&=&battle_config.max_parameter_dex)&{
clif_statusupack(sd,type,0,0);
if(is_baby&&&&sd-&status.dex&&=&battle_config.baby_status_max)&{//梴巕
clif_statusupack(sd,type,0,0);
val=&++sd-&status.
case&SP_LUK:
if(sd-&status.luk&&=&battle_config.max_parameter_luk)&{
clif_statusupack(sd,type,0,0);
if(is_baby&&&&sd-&status.luk&&=&battle_config.baby_status_max)&{//梴巕
clif_statusupack(sd,type,0,0);
val=&++sd-&status.
sd-&status.status_point-=
if(need!=pc_need_status_point(sd,type)){
clif_updatestatus(sd,type-SP_STR+SP_USTR);
//&if&player&have&max&in&all&stats,&don't&give&status_point
if&((sd-&status.str&&&=&battle_config.max_parameter_str&||&(is_baby&&&&sd-&status.str&&&=&battle_config.baby_status_max))&&&
&&&&(sd-&status.agi&&&=&battle_config.max_parameter_agi&||&(is_baby&&&&sd-&status.agi&&&=&battle_config.baby_status_max))&&&
&&&&(sd-&status.vit&&&=&battle_config.max_parameter_vit&||&(is_baby&&&&sd-&status.vit&&&=&battle_config.baby_status_max))&&&
&&&&(sd-&status.int_&&=&battle_config.max_parameter_int&||&(is_baby&&&&sd-&status.int_&&=&battle_config.baby_status_max))&&&
&&&&(sd-&status.dex&&&=&battle_config.max_parameter_dex&||&(is_baby&&&&sd-&status.dex&&&=&battle_config.baby_status_max))&&&
&&&&(sd-&status.luk&&&=&battle_config.max_parameter_luk&||&(is_baby&&&&sd-&status.luk&&&=&battle_config.baby_status_max)))
sd-&status.status_point&=&0;
clif_updatestatus(sd,SP_STATUSPOINT);
clif_updatestatus(sd,type);
status_calc_pc(sd,0);
clif_statusupack(sd,type,1,val);
//揮惗怑偐敾掕傪偡傞
int&pc_isupper(struct&map_session_data&*sd)
nullpo_retr(0,&sd);
if(sd-&status.class&&=&PC_CLASS_NV2&&&&sd-&status.class&&&PC_CLASS_NV3)
//梴巕偐敾掕偡傞
int&pc_isbaby(struct&map_session_data&*sd)
nullpo_retr(0,&sd);
if(sd-&status.class&&=&PC_CLASS_NV3&&&&sd-&status.class&&=&PC_CLASS_SNV3)
/*==========================================
&*&擻椡抣惉挿
&*------------------------------------------
int&pc_statusup2(struct&map_session_data&*sd,int&type,int&val)
nullpo_retr(0,&sd);
if(type&SP_STR&||&type&SP_LUK){
clif_statusupack(sd,type,0,0);
switch(type){
case&SP_STR:
if(sd-&status.str&+&val&&=&battle_config.max_parameter)
val&=&battle_config.max_
else&if(sd-&status.str&+&val&&&1)
val&+=&sd-&status.
sd-&status.str&=&
case&SP_AGI:
if(sd-&status.agi&+&val&&=&battle_config.max_parameter)
val&=&battle_config.max_
else&if(sd-&status.agi&+&val&&&1)
val&+=&sd-&status.
sd-&status.agi&=&
case&SP_VIT:
if(sd-&status.vit&+&val&&=&battle_config.max_parameter)
val&=&battle_config.max_
else&if(sd-&status.vit&+&val&&&1)
val&+=&sd-&status.
sd-&status.vit&=&
case&SP_INT:
if(sd-&status.int_&+&val&&=&battle_config.max_parameter)
val&=&battle_config.max_
else&if(sd-&status.int_&+&val&&&1)
val&+=&sd-&status.int_;
sd-&status.int_&=&
case&SP_DEX:
if(sd-&status.dex&+&val&&=&battle_config.max_parameter)
val&=&battle_config.max_
else&if(sd-&status.dex&+&val&&&1)
val&+=&sd-&status.
sd-&status.dex&=&
case&SP_LUK:
if(sd-&status.luk&+&val&&=&battle_config.max_parameter)
val&=&battle_config.max_
else&if(sd-&status.luk&+&val&&&1)
val&=&sd-&status.luk&+&
sd-&status.luk&=&
clif_updatestatus(sd,type-SP_STR+SP_USTR);
clif_updatestatus(sd,type);
status_calc_pc(sd,0);
clif_statusupack(sd,type,1,val);
/*==========================================
&*&僗僉儖億僀儞僩妱傝怳傝
&*------------------------------------------
void&pc_skillup(struct&map_session_data&*sd,&int&skill_num)
nullpo_retv(sd);
if&(skill_num&&&0&||&skill_num&&=&MAX_SKILL)
if(battle_config.skillup_type&&&&pc_check_skillup(sd,skill_num)==0)
clif_skillup(sd,skill_num);
clif_updatestatus(sd,SP_SKILLPOINT);
clif_skillinfoblock(sd);
if(&sd-&status.skill_point&0&&&
sd-&status.skill[skill_num].id!=0&&&
sd-&status.skill[skill_num].lv&&&skill_get_max(skill_num)&)
sd-&status.skill[skill_num].lv++;
sd-&status.skill_point--;
status_calc_pc(sd,0);
clif_skillup(sd,skill_num);
clif_updatestatus(sd,SP_SKILLPOINT);
clif_skillinfoblock(sd);
/*==========================================
&*&/allskill
&*------------------------------------------
int&pc_allskillup(struct&map_session_data&*sd)
int&c=0,&s=0;
//揮惗傗梴巕偺応崌偺尦偺怑嬈傪嶼弌偡傞
struct&pc_base_job&s_
nullpo_retr(0,&sd);
s_class&=&pc_calc_base_job(sd-&status.class);
c&=&s_class.
s&=&(s_class.upper==1)?1:0;&//揮惗埲奜偼捠忢偺僗僉儖丠
for(i=0;i&MAX_SKILL;i++){
sd-&status.skill[i].id=0;
if&(sd-&status.skill[i].flag&&&&sd-&status.skill[i].flag&!=&13){ //&card僗僉儖側傜丄
sd-&status.skill[i].lv=(sd-&status.skill[i].flag==1)?0:sd-&status.skill[i].flag-2; //&杮摉偺lv偵
sd-&status.skill[i].flag=0; //&flag偼0偵偟偰偍偔
if&(battle_config.gm_allskill&&&0&&&&pc_isGM(sd)&&=&battle_config.gm_allskill){
//&慡偰偺僗僉儖
for(i=1;i&158;i++)
sd-&status.skill[i].lv=skill_get_max(i);
for(i=210;i&291;i++)
sd-&status.skill[i].lv=skill_get_max(i);
if(battle_config.gm_allskill_addabra)&{
for(i=291;i&304;i++)
sd-&status.skill[i].lv=skill_get_max(i);
for(i=304;i&MAX_SKILL;i++)
if(i&!=&SG_DEVIL)//懢梲偲寧偲惎偺埆杺丂彍奜&(儁僫儖僥傿偺塱懕埫埮偑偒偮偄偺偱)
sd-&status.skill[i].lv=skill_get_max(i);
for(i=0;(id=skill_tree[s][c][i].id)&0;i++){
if(id&==&SG_DEVIL)&//偙偙偱彍奜張棟
if(sd-&status.skill[id].id==0&&&&(!(skill_get_inf2(id)&0x01)&||&battle_config.quest_skill_learn)&)
sd-&status.skill[id].lv=skill_get_max(id);
status_calc_pc(sd,0);
/*==========================================
&*&/resetstate
&*------------------------------------------
void&pc_resetstate(struct&map_session_data*&sd)
#define&sumsp(a)&((a)*((a-2)/10+2)&-&5*((a-2)/10)*((a-2)/10)&-&6*((a-2)/10)&-2)
int&add=0;
nullpo_retv(sd);
add&+=&sumsp(sd-&status.str);
add&+=&sumsp(sd-&status.agi);
add&+=&sumsp(sd-&status.vit);
add&+=&sumsp(sd-&status.int_);
add&+=&sumsp(sd-&status.dex);
add&+=&sumsp(sd-&status.luk);
sd-&status.status_point+=
clif_updatestatus(sd,SP_STATUSPOINT);
sd-&status.str=1;
sd-&status.agi=1;
sd-&status.vit=1;
sd-&status.int_=1;
sd-&status.dex=1;
sd-&status.luk=1;
clif_updatestatus(sd,SP_STR);
clif_updatestatus(sd,SP_AGI);
clif_updatestatus(sd,SP_VIT);
clif_updatestatus(sd,SP_INT);
clif_updatestatus(sd,SP_DEX);
clif_updatestatus(sd,SP_LUK);
status_calc_pc(sd,0);
/*==========================================
&*&/resetskill
&*------------------------------------------
void&pc_resetskill(struct&map_session_data*&sd)
nullpo_retv(sd);
for(i=1;i&MAX_SKILL;i++){
if(&(skill&=&pc_checkskill2(sd,i))&&&0)&{
if(!(skill_get_inf2(i)&0x01)&||&battle_config.quest_skill_learn)&{
if(!sd-&status.skill[i].flag)
sd-&status.skill_point&+=&
else&if(sd-&status.skill[i].flag&&&2&&&&sd-&status.skill[i].flag&!=&CLONE_SKILL_FLAG)&{
sd-&status.skill_point&+=&(sd-&status.skill[i].flag&-&2);
sd-&status.skill[i].lv&=&0;
else&if(battle_config.quest_skill_reset)
sd-&status.skill[i].lv&=&0;
sd-&status.skill[i].flag&=&0;
sd-&status.skill[i].lv&=&0;
sd-&cloneskill_id&=&0;
sd-&cloneskill_lv&=&0;
clif_updatestatus(sd,SP_SKILLPOINT);
clif_skillinfoblock(sd);
status_calc_pc(sd,0);
/*==========================================
&*&pc偵僟儊乕僕傪梌偊傞
&*------------------------------------------
int&pc_damage(struct&block_list&*src,struct&map_session_data&*sd,int&damage)
int&i=0,j=0;
struct&pc_base_job&s_
int&raise_flag&=&0;
int&raise_hp_per&=&0;
int&raise_sp_per&=&0;
int&raise_sp_rec_flag&=&0;
struct&map_session_data&*ssd&=&NULL;
nullpo_retr(0,&sd);
if(src&&&&src-&type==BL_PC)
ssd&=&(struct&map_session_data&*)
//揮惗傗梴巕偺応崌偺尦偺怑嬈傪嶼弌偡傞
s_class&=&pc_calc_base_job(sd-&status.class);
//&婛偵巰傫偱偄偨傜柍岠
if(unit_isdead(&sd-&bl))
//&嵗偭偰偨傜棫偪忋偑傞
if(pc_issit(sd))&{
pc_setstand(sd);
skill_gangsterparadise(sd,0);
//&曕偄偰偄偨傜懌傪巭傔傞
if(sd-&sc_data[SC_ENDURE].timer&==&-1&&&&sd-&sc_data[SC_BERSERK].timer&==&-1&&&&!sd-&special_state.infinite_endure)
unit_stop_walking(&sd-&bl,battle_config.pc_hit_stop_type);
//&墘憈/僟儞僗偺拞抐
if(damage&&&sd-&status.max_hp&&2)
skill_stop_dancing(&sd-&bl,0);
if(damage&0)
skill_stop_gravitation(&sd-&bl);
//&愭惂偝傟偨応崌僟儊乕僕-1偱愴摤嶲壛幰擖傝(0偵偡傞偲儕僗僩枹搊榐偺NULL偲偐傇偭偰崲傞)
if(src&&&&src-&type&==&BL_MOB&&&&linkdb_search(&&((struct&mob_data*)src)-&dmglog,&(void*)sd-&status.char_id&)&==&NULL)
linkdb_insert(&&((struct&mob_data*)src)-&dmglog,&(void*)sd-&status.char_id,&(void*)-1&);
sd-&status.hp-=
if(sd-&status.pet_id&&&0&&&&sd-&pd&&&&sd-&petDB&&&&battle_config.pet_damage_support)
pet_target_check(sd,src,1);
if(sd-&status.option&2)
status_change_end(&sd-&bl,&SC_HIDING,&-1);
if(pc_iscloaking(sd))
status_change_end(&sd-&bl,&SC_CLOAKING,&-1);
if(pc_ischasewalk(sd))
status_change_end(&sd-&bl,&SC_CHASEWALK,&-1);
//揋偺峌寕傪庴偗傞偲堦掕妋棪偱憰旛偑夡傟傞
if(sd-&loss_equip_flag&0x1000&&&&damage&&&0)//杺朄偱傕夡傟傞
for(i=0;i&11;i++)
if(atn_rand()%10000&&&sd-&break_myequip_rate_when_hit[i])
pc_break_equip2(sd,(unsigned&short)i);
//揋偺峌寕傪庴偗傞偲堦掕妋棪偱憰旛偑徚柵
if(sd-&loss_equip_flag&0x0020&&&&damage&&&0)
for(i=0;i&11;i++)
if(atn_rand()%10000&&&sd-&loss_equip_rate_when_hit[i])
pc_lossequipitem(sd,i,0);
if(sd-&status.hp&0){
//&傑偩惗偒偰偄傞側傜HP峏怴
clif_updatestatus(sd,SP_HP);
if(sd-&status.hp&sd-&status.max_hp&&2&&&&sd-&sc_data&&&&sd-&sc_data[SC_AUTOBERSERK].timer!=-1&&&&pc_checkskill(sd,SM_AUTOBERSERK)&0&&&
(sd-&sc_data[SC_PROVOKE].timer==-1&||&sd-&sc_data[SC_PROVOKE].val2==0&))
//&僆乕僩僶乕僒乕僋敪摦
status_change_start(&sd-&bl,SC_PROVOKE,10,1,0,0,0,0);
//僗僷僲價偑Exp99%偱HP偑0偵側傞偲HP偑夞暅偟偰嬥崉忬懺偵側傞
if(s_class.job&==&23&&&&pc_nextbaseexp(sd)&&&&100*sd-&status.base_exp/pc_nextbaseexp(sd)&=99&&&&sd-&sc_data&&&&sd-&sc_data[SC_STEELBODY].timer==-1){
clif_skill_nodamage(&sd-&bl,&sd-&bl,MO_STEELBODY,5,1);
status_change_start(&sd-&bl,SkillStatusChangeTable[MO_STEELBODY],5,0,0,0,skill_get_time(MO_STEELBODY,5),0&);
sd-&status.hp&=&sd-&status.max_
clif_updatestatus(sd,SP_HP);
//巰朣慜張棟
//OnPCDie僀儀儞僩
if(battle_config.pc_die_script)
npc_event_doall_id(&OnPCDie&,sd-&bl.id,sd-&bl.m);
//嶦奞幰偺ID庢摼偍傛傃OnPCKill僀儀儞僩
if(ssd&&&&ssd&!=&sd)&{
if(battle_config.set_pckillerid)
pc_setglobalreg(sd,&PC_KILLER_ID&,ssd-&status.account_id);
if(battle_config.pc_kill_script)
npc_event_doall_id(&OnPCKill&,sd-&bl.id,sd-&bl.m);
//僇僀僛儖
if(sd-&sc_data&&&&sd-&sc_data[SC_KAIZEL].timer!=-1&&&&map[sd-&bl.m].flag.gvg==0&&&&map[sd-&bl.m].flag.pvp==0)
clif_skill_nodamage(&sd-&bl,&sd-&bl,ALL_RESURRECTION,4,1);
sd-&status.hp&=&sd-&status.max_hp*sd-&sc_data[SC_KAIZEL].val1*10/100;
clif_updatestatus(sd,SP_HP);
status_change_end(&sd-&bl,SC_KAIZEL,-1);
clif_skill_nodamage(&sd-&bl,&sd-&bl,PR_KYRIE,sd-&sc_data[SC_KAIZEL].val1,1);
status_change_start(&sd-&bl,SC_KYRIE,sd-&sc_data[SC_KAIZEL].val1,0,0,0,2000,0);
//帺摦慼惗
if(atn_rand()%10000&&&sd-&autoraise.rate)
raise_flag&=&1;
raise_hp_per&&&&&&=&sd-&autoraise.hp_
raise_sp_per&&&&&&=&sd-&autoraise.sp_
raise_sp_rec_flag&=&sd-&autoraise.
//傾僀僥儉徚柵
if(sd-&loss_equip_flag&0x0001)
for(i=0;i&11;i++)
if(atn_rand()%10000&&&sd-&loss_equip_rate_when_die[i])
pc_lossequipitem(sd,i,0);
if(raise_flag)
//敾傝偵偔偄偺偱儕僓偺僄僼僃僋僩
clif_skill_nodamage(&sd-&bl,&sd-&bl,ALL_RESURRECTION,4,1);
//HPSP夞暅
sd-&status.hp&=&sd-&status.max_hp*raise_hp_per/100;
if(sd-&status.hp&&&1)&sd-&status.hp&=&1;
if(sd-&status.hp&&&sd-&status.max_hp)&sd-&status.hp&=&sd-&status.max_
clif_updatestatus(sd,SP_HP);
if(raise_sp_rec_flag){
sd-&status.sp&=&sd-&status.max_sp*raise_sp_per/100;
if(sd-&status.sp&&&0)&sd-&status.sp&=&0;
if(sd-&status.sp&&&sd-&status.max_sp)&sd-&status.sp&=&sd-&status.max_
clif_updatestatus(sd,SP_SP);
sd-&status.hp&=&0;
if(sd-&vender_id)
vending_closevending(sd);
if(sd-&status.pet_id&&&0&&&&sd-&pd)&{
if(sd-&petDB)&{
sd-&pet.intimate&-=&sd-&petDB-&
if(sd-&pet.intimate&&&0)
sd-&pet.intimate&=&0;
clif_send_petdata(sd,1,sd-&pet.intimate);
unit_stop_walking(&sd-&bl,0);
unit_skillcastcancel(&sd-&bl,0); //&塺彞偺拞巭
skill_stop_dancing(&sd-&bl,&0);
clif_clearchar_area(&sd-&bl,1);
skill_unit_move(&sd-&bl,gettick(),0);
if(sd-&sc_data[SC_BLADESTOP].timer!=-1)//敀恘偼帠慜偵夝彍
status_change_end(&sd-&bl,SC_BLADESTOP,-1);
if(sd-&sc_data[SC_CLOSECONFINE].timer!=-1)//敀恘偼帠慜偵夝彍
status_change_end(&sd-&bl,SC_CLOSECONFINE,-1);
if(sd-&sc_data[SC_HOLDWEB].timer!=-1)
status_change_end(&sd-&bl,SC_HOLDWEB,-1);
pc_setglobalreg(sd,&PC_DIE_COUNTER&,++sd-&die_counter);&//巰偵僇僂儞僞乕彂偒崬傒
status_change_clear(&sd-&bl,0); //&僗僥乕僞僗堎忢傪夝彍偡傞
pc_setdead(sd);
if(s_class.job&==&0)&{
if(battle_config.restart_hp_rate&&=&50)
//僲價偱儗乕僩50埲壓偼敿暘夞暅
sd-&status.hp&=&sd-&status.max_hp&/&2;
sd-&status.hp&=&sd-&status.max_hp&*&battle_config.restart_hp_rate&/100;
clif_updatestatus(sd,SP_HP);
status_calc_pc(sd,0);
if(battle_config.bone_drop==2
||&(battle_config.bone_drop==1&&&&map[sd-&bl.m].flag.pvp)){ //&僪僋儘僪儘僢僾
struct&item&item_
memset(&item_tmp,0,sizeof(item_tmp));
if(battle_config.bone_drop_itemid)&item_tmp.nameid=battle_config.bone_drop_
else&item_tmp.nameid&=&7005;
item_tmp.identify=1;
item_tmp.card[0]=0x00
item_tmp.card[1]=0;
*((unsigned&long&*)(&item_tmp.card[2]))=sd-&char_ /*&僉儍儔ID&*/
map_addflooritem(&item_tmp,1,sd-&bl.m,sd-&bl.x,sd-&bl.y,NULL,NULL,NULL,0);
for(i=0;i&5;i++)
if(sd-&dev.val1[i]){
status_change_end(&map_id2sd(sd-&dev.val1[i])-&bl,SC_DEVOTION,-1);
sd-&dev.val1[i]&=&sd-&dev.val2[i]=0;
if(battle_config.death_penalty_type&1)&{
if(s_class.job&!=&0&&&&!map[sd-&bl.m].flag.nopenalty&&&&!map[sd-&bl.m].flag.gvg){
int&per&=&100;
int&loss_base=0,loss_job=0;
if(sd-&sc_data[SC_REDEMPTIO].timer!=-1){
per&-=&sd-&sc_data[SC_REDEMPTIO].val1;
if(sd-&sc_data[SC_BABY].timer!=-1){
if(battle_config.death_penalty_type&2&&&&battle_config.death_penalty_base&&&0){
loss_base&=&(int)((atn_bignumber)pc_nextbaseexp(sd)&*&battle_config.death_penalty_base/10000*per/100);
sd-&status.base_exp&-=&(int)((atn_bignumber)pc_nextbaseexp(sd)&*&battle_config.death_penalty_base/10000*per/100);
}else&if(battle_config.death_penalty_base&&&0)&{
if(pc_nextbaseexp(sd)&&&0){
loss_base&=&(int)((atn_bignumber)sd-&status.base_exp&*&battle_config.death_penalty_base/10000*per/100);
if(sd-&status.base_exp&&&loss_base)
loss_base&=&sd-&status.base_
sd-&status.base_exp&-=&(int)((atn_bignumber)sd-&status.base_exp&*&battle_config.death_penalty_base/10000*per/100);
if(sd-&status.base_exp&&&0)
sd-&status.base_exp&=&0;
clif_updatestatus(sd,SP_BASEEXP);
if(battle_config.death_penalty_type&2&&&&battle_config.death_penalty_job&&&0){
loss_job&=&(int)((atn_bignumber)pc_nextjobexp(sd)&*&battle_config.death_penalty_job/10000*per/100);
sd-&status.job_exp&-=&(int)((atn_bignumber)pc_nextjobexp(sd)&*&battle_config.death_penalty_job/10000*per/100);
else&if(battle_config.death_penalty_job&&&0)&{
if(pc_nextjobexp(sd)&&&0){
loss_job&=&(int)((atn_bignumber)sd-&status.job_exp&*&battle_config.death_penalty_job/10000*per/100);
if(sd-&status.job_exp&&&loss_job)
loss_job&=&sd-&status.job_
sd-&status.job_exp&-=&(int)((atn_bignumber)sd-&status.job_exp&*&battle_config.death_penalty_job/10000*per/100);
if(sd-&status.job_exp&&&0)
sd-&status.job_exp&=&0;
clif_updatestatus(sd,SP_JOBEXP);
//pk儅僢僾偱峌寕偑恖娫偐偮帺暘偱側偄(GX側偳偺懳嶔)
if(ssd&&&&map[sd-&bl.m].flag.pk&&&&per&0&&&&sd-&bl.id&!=&ssd-&bl.id&&&&ranking_get_point(ssd,RK_PK)&=100)
if(loss_base&0&||&loss_job&0)
pc_gainexp(ssd,NULL,loss_base,loss_job);
if(sd-&sc_data[SC_BABY].timer!=-1)
status_change_end(&sd-&bl,SC_BABY,-1);
if(sd-&sc_data[SC_REDEMPTIO].timer!=-1)
status_change_end(&sd-&bl,SC_REDEMPTIO,0);
if(map[sd-&bl.m].flag.pk){
//儔儞僉儞僌寁嶼
if(!map[sd-&bl.m].flag.pk_nocalcrank){
sd-&pvp_point-=5;
if(src&&&&src-&type==BL_PC&)
((struct&map_session_data&*)src)-&pvp_point++;
//僫僀僩儊傾儌乕僪傾僀僥儉僪儘僢僾
if(ssd&&&&ssd!=sd&&&&map[sd-&bl.m].flag.pk_nightmaredrop){
for(j=0;j&MAX_DROP_PER_MAP;j++){
int&id&&=&-1;//map[sd-&bl.m].drop_list[j].drop_
int&type=&&2;//map[sd-&bl.m].drop_list[j].drop_
int&per&=&1000;//map[sd-&bl.m].drop_list[j].drop_
if(id&==&0)
if(id&==&-1){//儔儞僟儉僪儘僢僾
int&eq_num=0,eq_n[MAX_INVENTORY];
memset(eq_n,0,sizeof(eq_n));
//愭偢憰旛偟偰偄傞傾僀僥儉悢傪僇僂儞僩
for(i=0;i&MAX_INVENTORY;i++){
if(&(type&==&1&&&&!sd-&status.inventory[i].equip)
||&(type&==&2&&&&sd-&status.inventory[i].equip)
||&&type&==&3){
//InventoryIndex傪奿擺
for(k=0;k&MAX_INVENTORY;k++){
if(eq_n[k]&&=&0){
eq_n[k]=i;
if(eq_num&&&0){
int&n&=&eq_n[atn_rand()%eq_num];//奩摉傾僀僥儉偺拞偐傜儔儞僟儉
if(atn_rand()%10000&&&per){
if(sd-&status.inventory[n].equip)
pc_unequipitem(sd,n,0);
pc_dropitem(sd,n,1);
else&if(id&&&0){
for(i=0;i&MAX_INVENTORY;i++){
if(sd-&status.inventory[i].nameid&==&id&&&&&&&&&&&&&&//ItemID偑堦抳偟偰偄偰
&&&atn_rand()%10000&&&per&&&&&&&&&&&&&&&&&&&&&&&&&//僪儘僢僾棪敾掕傕OK偱
&&&((type&==&1&&&&!sd-&status.inventory[i].equip)&//僞僀僾敾掕傕OK側傜僪儘僢僾
||(type&==&2&&&&sd-&status.inventory[i].equip)
||&type&==&3)
if(sd-&status.inventory[i].equip)
pc_unequipitem(sd,i,0);
pc_dropitem(sd,i,1);
pc_setdead(sd);
if(ssd&&&&ssd!=sd){
//旐媠嶦幰
ranking_gain_point(sd,RK_PK,-5);
ranking_setglobalreg(sd,RK_PK);
ranking_update(sd,RK_PK);
ranking_gain_point(ssd,RK_PK,1);
ranking_setglobalreg(ssd,RK_PK);//MOB側偳峏怴夞悢偑懡偄偄応崌偼掕婜揑偵峏怴
ranking_update(ssd,RK_PK);
//MOB側偳峏怴夞悢偑懡偄偄応崌偼掕婜揑偵峏怴
status_change_start(&ssd-&bl,SC_PK_PENALTY,0,0,0,0,battle_config.pk_penalty_time,0);
if(&map[sd-&bl.m].flag.pvp){
//儔儞僉儞僌寁嶼
if(!map[sd-&bl.m].flag.pvp_nocalcrank){
sd-&pvp_point-=5;
if(src&&&&src-&type==BL_PC&)
((struct&map_session_data&*)src)-&pvp_point++;
//僫僀僩儊傾儌乕僪傾僀僥儉僪儘僢僾
if(map[sd-&bl.m].flag.pvp_nightmaredrop){
for(j=0;j&MAX_DROP_PER_MAP;j++){
int&id&&=&map[sd-&bl.m].drop_list[j].drop_
int&type=&map[sd-&bl.m].drop_list[j].drop_
int&per&=&map[sd-&bl.m].drop_list[j].drop_
if(id&==&0)
if(id&==&-1){//儔儞僟儉僪儘僢僾
int&eq_num=0,eq_n[MAX_INVENTORY];
memset(eq_n,0,sizeof(eq_n));
//愭偢憰旛偟偰偄傞傾僀僥儉悢傪僇僂儞僩
for(i=0;i&MAX_INVENTORY;i++){
if(&(type&==&1&&&&!sd-&status.inventory[i].equip)
||&(type&==&2&&&&sd-&status.inventory[i].equip)
||&&type&==&3){
//InventoryIndex傪奿擺
for(k=0;k&MAX_INVENTORY;k++){
if(eq_n[k]&&=&0){
eq_n[k]=i;
if(eq_num&&&0){
int&n&=&eq_n[atn_rand()%eq_num];//奩摉傾僀僥儉偺拞偐傜儔儞僟儉
if(atn_rand()%10000&&&per){
if(sd-&status.inventory[n].equip)
pc_unequipitem(sd,n,0);
pc_dropitem(sd,n,1);
else&if(id&&&0){
for(i=0;i&MAX_INVENTORY;i++){
if(sd-&status.inventory[i].nameid&==&id&&&&&&&&&&&&&&//ItemID偑堦抳偟偰偄偰
&&&atn_rand()%10000&&&per&&&&&&&&&&&&&&&&&&&&&&&&&//僪儘僢僾棪敾掕傕OK偱
&&&((type&==&1&&&&!sd-&status.inventory[i].equip)&//僞僀僾敾掕傕OK側傜僪儘僢僾
||(type&==&2&&&&sd-&status.inventory[i].equip)
||&type&==&3)
if(sd-&status.inventory[i].equip)
pc_unequipitem(sd,i,0);
pc_dropitem(sd,i,1);
pc_setdead(sd);
//儔儞僉儞僌僒儞僾儖
if(src-&type&==&BL_PC){
struct&map_session_data*&ssd&=&(struct&map_session_data*)
ranking_gain_point(ssd,RK_PVP,1);
ranking_setglobalreg(ssd,RK_PVP); //MOB側偳峏怴夞悢偑懡偄偄応崌偼掕婜揑偵峏怴
ranking_update(ssd,RK_PVP);
//MOB側偳峏怴夞悢偑懡偄偄応崌偼掕婜揑偵峏怴
//巰傫偩応崌億僀儞僩傪尭傜偡側傜
//if(ranking_get_point(sd,RK_PVP)&=1){
// ranking_gain_point(sd,RK_PVP,-1);
// ranking_setglobalreg(sd,RK_PVP); //MOB側偳峏怴夞悢偑懡偄偄応崌偼掕婜揑偵峏怴
// ranking_update(sd,RK_PVP);
//MOB側偳峏怴夞悢偑懡偄偄応崌偼掕婜揑偵峏怴
//&嫮惂憲娨
if(&sd-&pvp_point&&&0&){
sd-&pvp_point=0;
pc_setstand(sd);
pc_setrestartvalue(sd,3);
pc_setpos(sd,sd-&status.save_point.map,sd-&status.save_point.x,sd-&status.save_point.y,0);
//GvG傕偟偔偼norevive愝掕
if(map[sd-&bl.m].flag.gvg&||&map[sd-&bl.m].flag.norevive){
pc_setstand(sd);
pc_setrestartvalue(sd,3);
pc_setpos(sd,sd-&status.save_point.map,sd-&status.save_point.x,sd-&status.save_point.y,0);
//&script娭楢
/*==========================================
&*&script梡PC僗僥乕僞僗撉傒弌偟
&*------------------------------------------
int&pc_readparam(struct&map_session_data&*sd,int&type)
int&val=0;
struct&pc_base_job&s_
nullpo_retr(0,&sd);
s_class&=&pc_calc_base_job(sd-&status.class);
switch(type){
case&SP_SKILLPOINT:
val=&sd-&status.skill_
case&SP_STATUSPOINT:
val=&sd-&status.status_
case&SP_ZENY:
val=&sd-&status.
case&SP_BASELEVEL:
val=&sd-&status.base_
case&SP_JOBLEVEL:
val=&sd-&status.job_
case&SP_CLASS:
val=&s_class.
case&SP_UPPER:
val=&s_class.
case&SP_SEX:
case&SP_WEIGHT:
case&SP_MAXWEIGHT:
val=&sd-&max_
case&SP_BASEEXP:
val=&sd-&status.base_
case&SP_JOBEXP:
val=&sd-&status.job_
case&SP_NEXTBASEEXP:
val=&pc_nextbaseexp(sd);
case&SP_NEXTJOBEXP:
val=&pc_nextjobexp(sd);
case&SP_HP:
val=&sd-&status.
case&SP_MAXHP:
val=&sd-&status.max_
case&SP_SP:
val=&sd-&status.
case&SP_MAXSP:
val=&sd-&status.max_
case&SP_PARTNER:
val=&sd-&status.partner_
case&SP_CART:
val=&sd-&status.option&CART_MASK;
case&SP_STR:
val=&sd-&status.
case&SP_AGI:
val=&sd-&status.
case&SP_VIT:
val=&sd-&status.
case&SP_INT:
val=&sd-&status.int_;
case&SP_DEX:
val=&sd-&status.
case&SP_LUK:
val=&sd-&status.
case&SP_SPEED:
case&SP_ATK1:
case&SP_ATK2:
val=&sd-&watk2;
case&SP_MATK1:
val=&sd-&matk1;
case&SP_MATK2:
val=&sd-&matk2;
case&SP_DEF1:
case&SP_DEF2:
val=&sd-&def2;
case&SP_MDEF1:
case&SP_MDEF2:
val=&sd-&mdef2;
case&SP_HIT:
case&SP_FLEE1:
case&SP_FLEE2:
val=&sd-&flee2;
case&SP_CRITICAL:
case&SP_ASPD:
/*==========================================
&*&script梡PC僗僥乕僞僗愝掕
&*------------------------------------------
int&pc_setparam(struct&map_session_data&*sd,int&type,int&val)
int&i&=&0,up_level&=&50;
struct&pc_base_job&s_
nullpo_retr(0,&sd);
s_class&=&pc_calc_base_job(sd-&status.class);
switch(type){
case&SP_BASELEVEL:
if&(val&&&sd-&status.base_level)&{
for&(i&=&1;&i&&=&(val&-&sd-&status.base_level);&i++)
sd-&status.status_point&+=&(sd-&status.base_level&+&i&+&14)&/&5;
sd-&status.base_level&=&
sd-&status.base_exp&=&0;
clif_updatestatus(sd,&SP_BASELEVEL);
clif_updatestatus(sd,&SP_NEXTBASEEXP);
clif_updatestatus(sd,&SP_STATUSPOINT);
clif_updatestatus(sd,&SP_BASEEXP);
status_calc_pc(sd,&0);
pc_heal(sd,&sd-&status.max_hp,&sd-&status.max_sp);
case&SP_JOBLEVEL:
if&(s_class.job&==&0)
up_level&-=&40;
if&((s_class.job&==&23)&||&(s_class.upper&==&1&&&&s_class.type&==&2))
up_level&+=&20;
if&(val&&=&sd-&status.job_level)&{
if&(val&&&up_level)val&=&up_
sd-&status.skill_point&+=&(val-sd-&status.job_level);
sd-&status.job_level&=&
sd-&status.job_exp&=&0;
clif_updatestatus(sd,&SP_JOBLEVEL);
clif_updatestatus(sd,&SP_NEXTJOBEXP);
clif_updatestatus(sd,&SP_JOBEXP);
clif_updatestatus(sd,&SP_SKILLPOINT);
status_calc_pc(sd,&0);
clif_misceffect(&sd-&bl,&1);
sd-&status.job_level&=&
sd-&status.job_exp&=&0;
clif_updatestatus(sd,&SP_JOBLEVEL);
clif_updatestatus(sd,&SP_NEXTJOBEXP);
clif_updatestatus(sd,&SP_JOBEXP);
status_calc_pc(sd,&0);
clif_updatestatus(sd,type);
case&SP_SKILLPOINT:
sd-&status.skill_point&=&
case&SP_STATUSPOINT:
sd-&status.status_point&=&
case&SP_ZENY:
if(val&&=&MAX_ZENY)&{
//&MAX_ZENY&埲壓側傜戙擖
sd-&status.zeny&=&
if(sd-&status.zeny&&&val)&{
//&Zeny&偑尭彮偟偰偄傞側傜戙擖
sd-&status.zeny&=&
}&else&if(sd-&status.zeny&&=&MAX_ZENY)&{
//&Zeny&偑憹壛偟偰偄偰丄尰嵼偺抣偑MAX_ZENY&埲壓側傜MAX_ZENY
sd-&status.zeny&=&MAX_ZENY;
//&Zeny&偑憹壛偟偰偄偰丄尰嵼偺抣偑MAX_ZENY&傛傝壓側傜憹壛暘傪柍帇
case&SP_BASEEXP:
if(pc_nextbaseexp(sd)&&&0)&{
sd-&status.base_exp&=&
if(sd-&status.base_exp&&&0)
sd-&status.base_exp=0;
pc_checkbaselevelup(sd);
case&SP_JOBEXP:
if(pc_nextjobexp(sd)&&&0)&{
sd-&status.job_exp&=&
if(sd-&status.job_exp&&&0)
sd-&status.job_exp=0;
pc_checkjoblevelup(sd);
clif_updatestatus(sd,type);
/*==========================================
&*&HP/SP夞暅
&*------------------------------------------
int&pc_heal(struct&map_session_data&*sd,int&hp,int&sp)
// if(battle_config.battle_log)
printf(&heal&%d&%dn&,hp,sp);
nullpo_retr(0,&sd);
if(pc_checkoverhp(sd))&{
if(hp&&&0)
if(pc_checkoversp(sd))&{
if(sp&&&0)
//&僶乕僒乕僋拞偼夞暅偝偣側偄
if(sd-&sc_data&&&&sd-&sc_data[SC_BERSERK].timer!=-1)&{
if&(sp&&&0)
if&(hp&&&0)
if(hp+sd-&status.hp&&&sd-&status.max_hp)
hp&=&sd-&status.max_hp&-&sd-&status.
if(sp+sd-&status.sp&&&sd-&status.max_sp)
sp&=&sd-&status.max_sp&-&sd-&status.
sd-&status.hp+=
if(sd-&status.hp&&=&0)&{
sd-&status.hp&=&0;
pc_damage(NULL,sd,1);
sd-&status.sp+=
if(sd-&status.sp&&=&0)
sd-&status.sp&=&0;
clif_updatestatus(sd,SP_HP);
if(sd-&status.party_id&&&0)&{
struct&party&*p;
p&=&party_search(sd-&status.party_id);
if&(p&!=&NULL)
clif_party_hp(p,sd);
clif_updatestatus(sd,SP_SP);
return&hp&+&
/*==========================================
&*&HP/SP夞暅
&*------------------------------------------
int&pc_itemheal(struct&map_session_data&*sd,int&hp,int&sp)
// if(battle_config.battle_log)
printf(&heal&%d&%dn&,hp,sp);
nullpo_retr(0,&sd);
if(sd-&state.potionpitcher_flag)&{
sd-&potion_hp&=&
sd-&potion_sp&=&
if(pc_checkoverhp(sd))&{
if(hp&&&0)
if(pc_checkoversp(sd))&{
if(sp&&&0)
if(hp&&&0)&{
bonus&=&(sd-&paramc[2]&&1)&+&100&+&pc_checkskill(sd,SM_RECOVERY)*10;
if(bonus&!=&100)
hp&=&hp&*&bonus&/&100;
bonus&=&100&+&pc_checkskill(sd,AM_LEARNINGPOTION)*5;
if(bonus&!=&100)
hp&=&hp&*&bonus&/&100;
bonus&=&100&+&sd-&itemheal_rate[itemdb_group(sd-&use_itemid)];
if(bonus&!=&100)
hp&=&hp&*&bonus&/&100;
if(sd-&use_nameditem&&&&ranking_get_id2rank(sd-&use_nameditem,RK_ALCHEMIST))
if(sd-&sc_data&&&&sd-&sc_data[SC_ROGUE].timer!=-1)
hp&=&hp&*&2;
hp&=&hp&*&150&/&100;
if(sp&&&0)&{
bonus&=&(sd-&paramc[3]&&1)&+&100&+&pc_checkskill(sd,MG_SRECOVERY)*10;
if(bonus&!=&100)
sp&=&sp&*&bonus&/&100;
bonus&=&100&+&pc_checkskill(sd,AM_LEARNINGPOTION)*5;
if(bonus&!=&100)
sp&=&sp&*&bonus&/&100;
bonus&=&100&+&sd-&itemheal_rate[itemdb_group(sd-&use_itemid)];
if(bonus&!=&100)
sp&&=&sp&*&bonus&/&100;
if(sd-&use_nameditem&&&&ranking_get_id2rank(sd-&use_nameditem,RK_ALCHEMIST))
if(sd-&sc_data&&&&sd-&sc_data[SC_ROGUE].timer!=-1)
sp&=&sp&*&2;
sp&&=&sp&*&150&/&100;
if(hp+sd-&status.hp&&&sd-&status.max_hp)
hp&=&sd-&status.max_hp&-&sd-&status.
if(sp+sd-&status.sp&&&sd-&status.max_sp)
sp&=&sd-&status.max_sp&-&sd-&status.
sd-&status.hp+=
if(sd-&status.hp&&=&0)&{
sd-&status.hp&=&0;
pc_damage(NULL,sd,1);
sd-&status.sp+=
if(sd-&status.sp&&=&0)
sd-&status.sp&=&0;
clif_updatestatus(sd,SP_HP);
clif_updatestatus(sd,SP_SP);
/*==========================================
&*&HP/SP夞暅
&*------------------------------------------
int&pc_percentheal(struct&map_session_data&*sd,int&hp,int&sp)
nullpo_retr(0,&sd);
if(sd-&state.potionpitcher_flag)&{
sd-&potion_per_hp&=&
sd-&potion_per_sp&=&
if(pc_checkoverhp(sd))&{
if(hp&&&0)
if(pc_checkoversp(sd))&{
if(sp&&&0)
if(hp&&=&100)&{
sd-&status.hp&=&sd-&status.max_
else&if(hp&&=&-100)&{
sd-&status.hp&=&0;
pc_damage(NULL,sd,1);
sd-&status.hp&+=&sd-&status.max_hp*hp/100;
if(sd-&status.hp&&&sd-&status.max_hp)
sd-&status.hp&=&sd-&status.max_
if(sd-&status.hp&&=&0)&{
sd-&status.hp&=&0;
pc_damage(NULL,sd,1);
if(sp&&=&100)&{
sd-&status.sp&=&sd-&status.max_
else&if(sp&&=&-100)&{
sd-&status.sp&=&0;
sd-&status.sp&+=&sd-&status.max_sp*sp/100;
if(sd-&status.sp&&&sd-&status.max_sp)
sd-&status.sp&=&sd-&status.max_
if(sd-&status.sp&&&0)
sd-&status.sp&=&0;
clif_updatestatus(sd,SP_HP);
clif_updatestatus(sd,SP_SP);
/*==========================================
&*&堷悢 job&怑嬈&0乣23
upper&捠忢&0,&揮惗&1,&梴巕&2,&偦偺傑傑&-1
&*------------------------------------------
int&pc_jobchange(struct&map_session_data&*sd,int&job,&int&upper)
int&b_class&=&0;
int&joblv_nochange&=&0;
struct&pc_base_job&s_
nullpo_retr(0,&sd);
//揮惗傗梴巕偺応崌偺尦偺怑嬈傪嶼弌偡傞
s_class&=&pc_calc_base_job(sd-&status.class);
if(job&&=&MAX_VALID_PC_CLASS)
//僥僐儞丄僈儞僗儕儞僈乕丄擡幰
if(job&&=&24)
upper&=&0;
//梴巕&-&揮惗慜偺応崌JOB1偵偟側偄
if(s_class.upper!=1&&&&upper!=1&&&&s_class.job&==&job)
joblv_nochange&=&1;
if(battle_config.enable_upper_class==0){&//conf偱柍岠偵側偭偰偄偨傜upper=0
upper&=&0;
if(upper&&&0)&//尰嵼揮惗偐偳偆偐傪敾抐偡傞
upper&=&s_class.
if(upper&==&0){&//捠忢怑側傜job偦偺傑傫傑
if(job&&=&24&&&&job&&=&27)
b_class&=&job&+&PC_CLASS_BASE3&-&1;
b_class&=&
}else&if(upper&==&1){
if(job&&=&PC_CLASS_SNV){&//揮惗偵僗僷僲價埲崀偼懚嵼偟側偄偺偱偍抐傝
b_class&=&job&+&PC_CLASS_BASE2;
}else&if(upper&==&2){&//梴巕偵寢崶偼側偄偗偳偳偆偣師偱廟傜傟傞偐傜偄偄傗
b_class&=&(job&=23)?(job&+&(PC_CLASS_BASE3&-&1)):(job&+&PC_CLASS_BASE3);
if((sd-&sex&==&0&&&&job&==&19)&||&(sd-&sex&==&1&&&&job&==&20)&||
&&&job&==&13&||&job&==&21&||&job&==22&||&job&==26&||&sd-&status.class&==&b_class)&//亰偼僶乕僪偵側傟側偄丄亯偼僟儞僒乕偵側傟側偄丄寢崶堖徶傕偍抐傝
sd-&status.class&=&sd-&view_class&=&b_
if(sd-&status.class&==&PC_CLASS_GS&||&sd-&status.class&==PC_CLASS_NJ)
sd-&view_class&=&sd-&status.class-4;
clif_changelook(&sd-&bl,LOOK_BASE,sd-&view_class);
if(sd-&status.clothes_color&&&0)
clif_changelook(&sd-&bl,LOOK_CLOTHES_COLOR,sd-&status.clothes_color);
if(sd-&status.manner&&&0)
clif_changestatus(&sd-&bl,SP_MANNER,sd-&status.manner);
if(joblv_nochange==0)
sd-&status.job_level=1;
sd-&status.job_exp=0;
clif_updatestatus(sd,SP_JOBLEVEL);
clif_updatestatus(sd,SP_JOBEXP);
clif_updatestatus(sd,SP_NEXTJOBEXP);
for(i=0;i&11;i++)&{
if(sd-&equip_index[i]&&=&0)
if(!pc_isequip(sd,sd-&equip_index[i]))
pc_unequipitem(sd,sd-&equip_index[i],1); //&憰旛奜偟
status_calc_pc(sd,0);
pc_checkallowskill(sd);
pc_equiplookall(sd);
clif_equiplist(sd);
/*==========================================
&*&尒偨栚曄峏
&*------------------------------------------
int&pc_equiplookall(struct&map_session_data&*sd)
nullpo_retr(0,&sd);
#if&PACKETVER&&&4
clif_changelook(&sd-&bl,LOOK_WEAPON,sd-&status.weapon);
clif_changelook(&sd-&bl,LOOK_SHIELD,sd-&status.shield);
clif_changelook(&sd-&bl,LOOK_WEAPON,0);
clif_changelook(&sd-&bl,LOOK_SHOES,0);
clif_changelook(&sd-&bl,LOOK_HEAD_BOTTOM,sd-&status.head_bottom);
clif_changelook(&sd-&bl,LOOK_HEAD_TOP,sd-&status.head_top);
clif_changelook(&sd-&bl,LOOK_HEAD_MID,sd-&status.head_mid);
/*==========================================
&*&尒偨栚曄峏
&*------------------------------------------
int&pc_changelook(struct&map_session_data&*sd,int&type,int&val)
nullpo_retr(0,&sd);
switch(type){
case&LOOK_HAIR:
sd-&status.hair=
case&LOOK_WEAPON:
sd-&status.weapon=
case&LOOK_HEAD_BOTTOM:
sd-&status.head_bottom=
case&LOOK_HEAD_TOP:
sd-&status.head_top=
case&LOOK_HEAD_MID:
sd-&status.head_mid=
case&LOOK_HAIR_COLOR:
sd-&status.hair_color=
case&LOOK_CLOTHES_COLOR:
sd-&status.clothes_color=
case&LOOK_SHIELD:
sd-&status.shield=
case&LOOK_SHOES:
case&LOOK_MOB:
clif_changelook(&sd-&bl,type,val);
if(type&==&LOOK_CLOTHES_COLOR&&&&sd-&status.clothes_color&==&0)
clif_changelook(&sd-&bl,LOOK_BASE,val);
/*==========================================
&*&晅懏昳(戦,儁僐,僇乕僩)愝掕
&*------------------------------------------
void&pc_setoption(struct&map_session_data&*sd,&short&type)
nullpo_retv(sd);
sd-&status.option=
clif_changeoption(&sd-&bl);
clif_changelook(&sd-&bl,LOOK_CLOTHES_COLOR,sd-&status.clothes_color);
status_calc_pc(sd,0);
/*==========================================
&*&僇乕僩愝掕
&*------------------------------------------
void&pc_setcart(struct&map_session_data&*sd,&unsigned&short&type)
short&cart[6]&=&{0x8,0x0,0x0};
nullpo_retv(sd);
if&(type&&=&(sizeof(cart)&/&sizeof(cart[0])))&//&unsigned&short:&don't&check&'type&&&0'
if&(type&==&0)&{&//&I&have&nerver&see&type&0,&but&we&know...
if&(pc_iscarton(sd))
pc_setoption(sd,&sd-&status.option&&&~((short)CART_MASK));&//&suppress&actual&&conserv&other&options
if(pc_checkskill(sd,MC_PUSHCART)&0){&//&僾僢僔儏僇乕僩僗僉儖強帩
if(!pc_iscarton(sd)){&//&僇乕僩傪晅偗偰偄側偄
pc_setoption(sd,&sd-&status.option&|&cart[type]);
clif_cart_itemlist(sd);
clif_cart_equiplist(sd);
clif_updatestatus(sd,SP_CARTINFO);
clif_status_change(&sd-&bl,0x0c,0);
sd-&status.option&&=&~((short)CART_MASK);&//&suppress&actual&&conserv&other&options
pc_setoption(sd,&sd-&status.option&|&cart[type]);
/*==========================================
&*------------------------------------------
int&pc_setfalcon(struct&map_session_data&*sd)
if(pc_checkskill(sd,HT_FALCON)&0){ //&僼傽儖僐儞儅僗僞儕乕僗僉儖強帩
pc_setoption(sd,0x0010);
/*==========================================
&*&儁僐儁僐愝掕
&*------------------------------------------
int&pc_setriding(struct&map_session_data&*sd)
if(pc_checkskill(sd,KN_RIDING)&0){&//&儔僀僨傿儞僌僗僉儖強帩
pc_setoption(sd,0x0020);
/*==========================================
&*&GM偺傾僀僥儉僪儘僢僾壜斲敾掕
&*------------------------------------------
int&pc_candrop(struct&map_session_data&*sd,int&item_id)
if(pc_isGM(sd)&&&&pc_isGM(sd)&&&battle_config.gm_can_drop_lv)
/*==========================================
&*&script梡曄悢偺抣傪撉傓
&*------------------------------------------
int&pc_readreg(struct&map_session_data&*sd,int&reg)
nullpo_retr(0,&sd);
for(i=0;i&sd-&reg_i++)
if(sd-&reg[i].index==reg)
return&sd-&reg[i].
/*==========================================
&*&script梡曄悢偺抣傪愝掕
&*------------------------------------------
int&pc_setreg(struct&map_session_data&*sd,int&reg,int&val)
nullpo_retr(0,&sd);
for&(i&=&0;&i&&&sd-&reg_&i++)&{
if&(sd-&reg[i].index&==&reg){
sd-&reg[i].data&=&
sd-&reg_num++;
sd-&reg&=&(struct&script_reg&*)aRealloc(sd-&reg,&sizeof(*(sd-&reg))&*&sd-&reg_num);
/* memset(sd-&reg&+&(sd-&reg_num&-&1)&*&sizeof(*(sd-&reg)),&0,
sizeof(*(sd-&reg)));
sd-&reg[i].index&=&
sd-&reg[i].data&=&
/*==========================================
&*&script梡暥帤楍曄悢偺抣傪撉傓
&*------------------------------------------
char&*pc_readregstr(struct&map_session_data&*sd,int&reg)
nullpo_retr(0,&sd);
for(i=0;i&sd-&regstr_i++)
if(sd-&regstr[i].index==reg)
return&sd-&regstr[i].
return&NULL;
/*==========================================
&*&script梡暥帤楍曄悢偺抣傪愝掕
&*------------------------------------------
int&pc_setregstr(struct&map_session_data&*sd,int&reg,char&*str)
nullpo_retr(0,&sd);
if(strlen(str)+1&&=&sizeof(sd-&regstr[0].data)){
printf(&pc_setregstr:&string&too&long&!n&);
for(i=0;i&sd-&regstr_i++)
if(sd-&regstr[i].index==reg){
strncpy(sd-&regstr[i].data,str,256);
sd-&regstr_num++;
sd-&regstr&=&(struct&script_regstr&*)aRealloc(sd-&regstr,&sizeof(sd-&regstr[0])&*&sd-&regstr_num);
/* memset(sd-&reg&+&(sd-&reg_num&-&1)&*&sizeof(*(sd-&reg)),&0,
sizeof(*(sd-&reg)));
sd-&regstr[i].index=
strncpy(sd-&regstr[i].data,str,256);
/*==========================================
&*&script梡僌儘乕僶儖曄悢偺抣傪撉傓
&*------------------------------------------
int&pc_readglobalreg(struct&map_session_data&*sd,char&*reg)
nullpo_retr(0,&sd);
for(i=0;i&sd-&status.global_reg_i++){
if(strcmp(sd-&status.global_reg[i].str,reg)==0)
return&sd-&status.global_reg[i].
/*==========================================
&*&script梡僌儘乕僶儖曄悢偺抣傪愝掕
&*------------------------------------------
int&pc_setglobalreg(struct&map_session_data&*sd,char&*reg,int&val)
nullpo_retr(0,&sd);
//PC_DIE_COUNTER偑僗僋儕僾僩側偳偱曄峏偝傟偨帪偺張棟
if(strcmp(reg,&PC_DIE_COUNTER&)&==&0&&&&sd-&die_counter&!=&val){
sd-&die_counter&=&
status_calc_pc(sd,0);
if(val==0){
for(i=0;i&sd-&status.global_reg_i++){
if(strcmp(sd-&status.global_reg[i].str,reg)==0){
sd-&status.global_reg[i]=sd-&status.global_reg[sd-&status.global_reg_num-1];
sd-&status.global_reg_num--;
for(i=0;i&sd-&status.global_reg_i++){
if(strcmp(sd-&status.global_reg[i].str,reg)==0){
sd-&status.global_reg[i].value=
if(sd-&status.global_reg_num&GLOBAL_REG_NUM){
strncpy(sd-&status.global_reg[i].str,reg,32);
sd-&status.global_reg[i].value=
sd-&status.global_reg_num++;
if(battle_config.error_log)
printf(&pc_setglobalreg&:&couldn't&set&%s&(GLOBAL_REG_NUM&=&%d)n&,&reg,&GLOBAL_REG_NUM);
/*==========================================
&*&script梡傾僇僂儞僩曄悢偺抣傪撉傓
&*------------------------------------------
int&pc_readaccountreg(struct&map_session_data&*sd,char&*reg)
nullpo_retr(0,&sd);
for(i=0;i&sd-&status.account_reg_i++){
if(strcmp(sd-&status.account_reg[i].str,reg)==0)
return&sd-&status.account_reg[i].
/*==========================================
&*&script梡傾僇僂儞僩曄悢偺抣傪愝掕
&*------------------------------------------
int&pc_setaccountreg(struct&map_session_data&*sd,char&*reg,int&val)
nullpo_retr(0,&sd);
if(val==0){
for(i=0;i&sd-&status.account_reg_i++){
if(strcmp(sd-&status.account_reg[i].str,reg)==0){
sd-&status.account_reg[i]=sd-&status.account_reg[sd-&status.account_reg_num-1];
sd-&status.account_reg_num--;
intif_saveaccountreg(sd);
for(i=0;i&sd-&status.account_reg_i++){
if(strcmp(sd-&status.account_reg[i].str,reg)==0){
sd-&status.account_reg[i].value=
intif_saveaccountreg(sd);
if(sd-&status.account_reg_num&ACCOUNT_REG_NUM){
strncpy(sd-&status.account_reg[i].str,reg,32);
sd-&status.account_reg[i].value=
sd-&status.account_reg_num++;
intif_saveaccountreg(sd);
if(battle_config.error_log)
printf(&pc_setaccountreg&:&couldn't&set&%s&(ACCOUNT_REG_NUM&=&%d)n&,&reg,&ACCOUNT_REG_NUM);
/*==========================================
&*&script梡傾僇僂儞僩曄悢2偺抣傪撉傓
&*------------------------------------------
int&pc_readaccountreg2(struct&map_session_data&*sd,char&*reg)
nullpo_retr(0,&sd);
for(i=0;i&sd-&status.account_reg2_i++){
if(strcmp(sd-&status.account_reg2[i].str,reg)==0)
return&sd-&status.account_reg2[i].
/*==========================================
&*&script梡傾僇僂儞僩曄悢2偺抣傪愝掕
&*------------------------------------------
int&pc_setaccountreg2(struct&map_session_data&*sd,char&*reg,int&val)
nullpo_retr(1,&sd);
if(val==0){
for(i=0;i&sd-&status.account_reg2_i++){
if(strcmp(sd-&status.account_reg2[i].str,reg)==0){
sd-&status.account_reg2[i]=sd-&status.account_reg2[sd-&status.account_reg2_num-1];
sd-&status.account_reg2_num--;
chrif_saveaccountreg2(sd);
for(i=0;i&sd-&status.account_reg2_i++){
if(strcmp(sd-&status.account_reg2[i].str,reg)==0){
sd-&status.account_reg2[i].value=
chrif_saveaccountreg2(sd);
if(sd-&status.account_reg2_num&ACCOUNT_REG2_NUM){
strncpy(sd-&status.account_reg2[i].str,reg,32);
sd-&status.account_reg2[i].value=
sd-&status.account_reg2_num++;
chrif_saveaccountreg2(sd);
if(battle_config.error_log)
printf(&pc_setaccountreg2&:&couldn't&set&%s&(ACCOUNT_REG2_NUM&=&%d)n&,&reg,&ACCOUNT_REG2_NUM);
/*==========================================
&*&僀儀儞僩僞僀儅乕張棟
&*------------------------------------------
int&pc_eventtimer(int&tid,unsigned&int&tick,int&id,int&data)
struct&map_session_data&*sd=map_id2sd(id);
char&*p&=&(char&*)
if(sd==NULL)
for(i=0;i&MAX_EVENTTIMER;i++){
if(&sd-&eventtimer[i]==tid&){
sd-&eventtimer[i]=-1;
npc_event(sd,p);
if(i==MAX_EVENTTIMER)&{
if(battle_config.error_log)
printf(&pc_eventtimer:&no&such&event&timern&);
/*==========================================
&*&僀儀儞僩僞僀儅乕捛壛
&*------------------------------------------
int&pc_addeventtimer(struct&map_session_data&*sd,int&tick,const&char&*name)
nullpo_retr(0,&sd);
for(i=0;i&MAX_EVENTTIMER;i++)
if(&sd-&eventtimer[i]==-1&)
if(i&MAX_EVENTTIMER){
char&*evname=strdup(name);
sd-&eventtimer[i]=add_timer(gettick()+tick,
pc_eventtimer,sd-&bl.id,(int)evname);
if(battle_config.error_log)
printf(&pc_addtimer:&event&timer&is&full&!n&);
/*==========================================
&*&僀儀儞僩僞僀儅乕嶍彍
&*------------------------------------------
int&pc_deleventtimer(struct&map_session_data&*sd,const&char&*name)
nullpo_retr(0,&sd);
for(i=0;i&MAX_EVENTTIMER;i++)
if(&sd-&eventtimer[i]!=-1&)&{
char&*p&=&(char&*)(get_timer(sd-&eventtimer[i])-&data);
if(strcmp(p,&name)==0)&{
delete_timer(sd-&eventtimer[i],pc_eventtimer);
sd-&eventtimer[i]=-1;
/*==========================================
&*&僀儀儞僩僞僀儅乕僇僂儞僩抣捛壛
&*------------------------------------------
int&pc_addeventtimercount(struct&map_session_data&*sd,const&char&*name,int&tick)
nullpo_retr(0,&sd);
for(i=0;i&MAX_EVENTTIMER;i++)
if(&sd-&eventtimer[i]!=-1&&&&strcmp(
(char&*)(get_timer(sd-&eventtimer[i])-&data),&name)==0&){
addtick_timer(sd-&eventtimer[i],tick);
/*==========================================
&*&僀儀儞僩僞僀儅乕慡嶍彍
&*------------------------------------------
int&pc_cleareventtimer(struct&map_session_data&*sd)
nullpo_retr(0,&sd);
for(i=0;i&MAX_EVENTTIMER;i++)
if(&sd-&eventtimer[i]!=-1&){
if(get_timer(sd-&eventtimer[i])==NULL)
p&=&(char&*)(get_timer(sd-&eventtimer[i])-&data);
delete_timer(sd-&eventtimer[i],pc_eventtimer);
sd-&eventtimer[i]=-1;
/*==========================================
&*&傾僀僥儉傪憰旛偡傞
&*------------------------------------------
void&pc_equipitem(struct&map_session_data&*sd,&int&n,&int&pos)
struct&item_data&*
//揮惗傗梴巕偺応崌偺尦偺怑嬈傪嶼弌偡傞
struct&pc_base_job&s_
nullpo_retv(sd);
s_class&=&pc_calc_base_job(sd-&status.class);
nameid&=&sd-&status.inventory[n].
id&=&sd-&inventory_data[n];
nullpo_retv(id);
pos&=&pc_equippoint(sd,n);
if(battle_config.battle_log)
printf(&equip&%d(%d)&%x:%xn&,nameid,n,id-&equip,pos);
if(!pc_isequip(sd,n)&||&!pos)&{
clif_equipitemack(sd,n,0,0); //&fail
if(pos==0x88){&//&傾僋僙僒儕梡椺奜張棟
int&epor=0;
if(sd-&equip_index[0]&&=&0)
epor&|=&sd-&status.inventory[sd-&equip_index[0]].
if(sd-&equip_index[1]&&=&0)
epor&|=&sd-&status.inventory[sd-&equip_index[1]].
epor&&=&0x88;
pos&=&epor&==&0x08&?&0x80&:&0x08;
//&擇搧棳張棟
if&((pos==0x22)&//&堦墳丄憰旛梫媮売強偑擇搧棳晲婍偐僠僃僢僋偡傞
&&&&(id-&equip==2) //&扨庤晲婍
&&&&(pc_checkskill(sd,&AS_LEFT)&&&0&||&s_class.job&==&12)&)&//&嵍庤廋楤桳
int&tpos=0;
if(sd-&equip_index[8]&&=&0)
tpos&|=&sd-&status.inventory[sd-&equip_index[8]].
if(sd-&equip_index[9]&&=&0)
tpos&|=&sd-&status.inventory[sd-&equip_index[9]].
tpos&&=&0x02;
pos&=&tpos&==&0x02&?&0x20&:&0x02;
for(i=0;i&11;i++)&{
if(sd-&equip_index[i]&&=&0&&&&sd-&status.inventory[sd-&equip_index[i]].equip&pos)&{
pc_unequipitem(sd,sd-&equip_index[i],1);
//&媩栴憰旛
if(pos==0x8000){
clif_arrowequip(sd,n);
clif_arrow_fail(sd,3); //&3=栴偑憰旛偱偒傑偟偨
clif_equipitemack(sd,n,pos,1);
for(i=0;i&11;i++)&{
if(pos&&&equip_pos[i])
sd-&equip_index[i]&=&n;
sd-&status.inventory[n].equip=
if(sd-&status.inventory[n].equip&&&0x0002)&{
if(sd-&inventory_data[n])
sd-&weapontype1&=&sd-&inventory_data[n]-&
sd-&weap

我要回帖

更多关于 字体识别 的文章

 

随机推荐