diff options
-rw-r--r-- | Changelog.txt | 2 | ||||
-rw-r--r-- | db/skill_cast_db.txt | 2 | ||||
-rw-r--r-- | src/map/battle.c | 10 | ||||
-rw-r--r-- | src/map/pc.c | 2 | ||||
-rw-r--r-- | src/map/skill.c | 21 | ||||
-rw-r--r-- | src/map/skill.h | 8 |
6 files changed, 34 insertions, 11 deletions
diff --git a/Changelog.txt b/Changelog.txt index 4b91e2230..ed8f7a39e 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -7,6 +7,8 @@ Date Added * Corrected the file type attribute on most of the files in three which fixes the newline issues between linux and dos [MouseJstr] svn propset -R svn:eol-style native . + * Skill changes [celest] + - Corrected steal formula, updated BladeStop, Headcrush. 11/13 * Fixed map-server loading, doesn't require data\resnametable.txt anymore [Wizputer] diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt index df80a6ee3..8a2cd0cbb 100644 --- a/db/skill_cast_db.txt +++ b/db/skill_cast_db.txt @@ -257,7 +257,7 @@ 395,0,0,20000:25000:30000:35000:40000,0 //CG_MOONLIT#月明りの泉に落ちる花びら# 396,0,0,300000,0 //CG_MARIONETTE#マリオネットコントロール# 397,300:500:700:900:1000,1200:1400:1600:1800:2000,0,0 //LK_SPIRALPIERCE#スパイラルピアース# -398,0,500,0,30000 //LK_HEADCRUSH#ヘッドクラッシュ# +398,0,500,0,90000 //LK_HEADCRUSH#ヘッドクラッシュ# 399,0,800:800:800:800:800:1000:1000:1000:1000:1000,0,30000 //LK_JOINTBEAT#ジョイントビート# 400,1700,1000,0,0,0 //HW_NAPALMVULCAN#ナパームバルカン# 401,2000,0,600000,0 //CH_SOULCOLLECT#狂気功# diff --git a/src/map/battle.c b/src/map/battle.c index 6b4f90485..405abaea1 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -4619,10 +4619,12 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target, } } if(t_sc_data && t_sc_data[SC_BLADESTOP_WAIT].timer != -1){ - int lv = t_sc_data[SC_BLADESTOP_WAIT].val1; - skill_status_change_end(target,SC_BLADESTOP_WAIT,-1); - skill_status_change_start(src,SC_BLADESTOP,lv,1,(int)src,(int)target,skill_get_time2(MO_BLADESTOP,lv),0); - skill_status_change_start(target,SC_BLADESTOP,lv,2,(int)target,(int)src,skill_get_time2(MO_BLADESTOP,lv),0); + if (!(src->type = BL_MOB && mob_db[((struct mob_data *)src)->class].mode&0x32)) { + int lv = t_sc_data[SC_BLADESTOP_WAIT].val1; + skill_status_change_end(target,SC_BLADESTOP_WAIT,-1); + skill_status_change_start(src,SC_BLADESTOP,lv,1,(int)src,(int)target,skill_get_time2(MO_BLADESTOP,lv),0); + skill_status_change_start(target,SC_BLADESTOP,lv,2,(int)target,(int)src,skill_get_time2(MO_BLADESTOP,lv),0); + } } if(t_sc_data && t_sc_data[SC_SPLASHER].timer!=-1) //殴ったので対象のベナムスプラッシャー状態を解除 skill_status_change_end(target,SC_SPLASHER,-1); diff --git a/src/map/pc.c b/src/map/pc.c index 83116add7..0c204c707 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -3279,7 +3279,7 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl) if(!md->state.steal_flag && mob_db[md->class].mexp <= 0 && !(mob_db[md->class].mode&0x20) && md->sc_data[SC_STONE].timer == -1 && md->sc_data[SC_FREEZE].timer == -1 && (!(md->class>1324 && md->class<1364))) // prevent stealing from treasure boxes [Valaris] { - skill = sd->paramc[4] - mob_db[md->class].dex + pc_checkskill(sd,TF_STEAL) + 10; + skill = sd->paramc[4] - mob_db[md->class].dex + pc_checkskill(sd,TF_STEAL)*3 + 10; if(0 < skill) { diff --git a/src/map/skill.c b/src/map/skill.c index b1b0ed2fb..433c03a93 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -8224,7 +8224,7 @@ int skill_status_change_timer(int tid, unsigned int tick, int id, int data) else sc_data[type].timer=add_timer(1000+tick,skill_status_change_timer, bl->id, data ); break; - case SC_TENSIONRELAX: /* テンションリラックス */ + case SC_TENSIONRELAX: /* テンションリラックス */ if(sd){ /* SPがあって、HPが?タンでなければ?? */ if( sd->status.sp > 12 && sd->status.max_hp > sd->status.hp ){ /* if(sc_data[type].val2 % (sc_data[type].val1+3) ==0 ){ @@ -8240,6 +8240,25 @@ int skill_status_change_timer(int tid, unsigned int tick, int id, int data) skill_status_change_end(&sd->bl,SC_TENSIONRELAX,-1); } break; + case SC_HEADCRUSH: // temporary damage [celest] +// case SC_BLEEDING: + case SC_POISON2: + if((--sc_data[type].val3) > 0) { + int hp = battle_get_max_hp(bl); + if(bl->type == BL_PC) { + hp = 3 + hp*3/200; + pc_heal((struct map_session_data *)bl,-hp,0); + } + else if(bl->type == BL_MOB) { + struct mob_data *md; + if((md=((struct mob_data *)bl)) == NULL) + break; + hp = 3 + hp/200; + md->hp -= hp; + } + sc_data[type].timer=add_timer(1000+tick,skill_status_change_timer, bl->id, data ); + } + break; /* 時間切れ無し?? */ case SC_AETERNA: diff --git a/src/map/skill.h b/src/map/skill.h index c82a0c932..6ea93f819 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -331,9 +331,10 @@ enum { // struct map_session_data の status_changeの番号テーブル SC_MINDBREAKER =191, SC_SPELLBREAKER =192, - SC_EDP = 114, // [Celest] - SC_MARIONETTE2 = 122, - SC_BLEEDING = 124, + SC_EDP = 114, // [Celest] + SC_MARIONETTE2 = 122, // marionette target + SC_BLEEDING = 124, // temporarily same id as headcrush + SC_POISON2 = 193, // for EDP // -- testing various SC effects // SC_AURABLADE =81, @@ -854,4 +855,3 @@ enum { }; #endif - |