summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog.txt2
-rw-r--r--db/skill_cast_db.txt2
-rw-r--r--src/map/battle.c10
-rw-r--r--src/map/pc.c2
-rw-r--r--src/map/skill.c21
-rw-r--r--src/map/skill.h8
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
-