From 10f272a1bfbb0ef56e84d7bdb5bd84282eccf735 Mon Sep 17 00:00:00 2001 From: celest Date: Fri, 3 Dec 2004 11:57:50 +0000 Subject: * Updated Stone Curse, Soul Drain, Auto Berserk * Fixed MVP exp being multiplied twice git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@442 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 4 ++++ db/Changelog.txt | 2 ++ db/skill_db.txt | 4 ++-- db/skill_require_db.txt | 1 + db/skill_tree.txt | 4 ++-- src/map/mob.c | 4 ++-- src/map/pc.c | 6 ++++-- src/map/skill.c | 32 ++++++++++++++++++++++++++++++-- src/map/skill.h | 23 ++++++++++++----------- 9 files changed, 59 insertions(+), 21 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 6b31e8514..86013a941 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,4 +1,8 @@ Date Added +12/3 + * Updated Stone Curse, Soul Drain, Auto Berserk [celest] + * Added a fix for MVP exp being multiplied twice by Gengar + 12/2 * Fixed double login feature, resets online users when map connects to char [Wizputer] * Changed all LOGS inserts to INSERT DELAYED (MySQL has this feature and cache unimportant queries, then diff --git a/db/Changelog.txt b/db/Changelog.txt index 9357a5078..1fcb3c265 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -5,6 +5,8 @@ Ayathoya items == Added but no effect ( all are "ect" itens) Skill databases == celest working on them i believe. +12/3 * corrected Spider Web's maximum level [celest] + * Removed Soul Drain from Professor's skill tree [celest] 12/2 * Updated skill tree prerequisites for the new kRO skills [celest] diff --git a/db/skill_db.txt b/db/skill_db.txt index 2913874c0..42a9d6ee5 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -145,7 +145,7 @@ 143,0,6,4,0,1,1,1,no,0,1,0,none,0 //NV_TRICKDEAD#?んだふり# 144,0,0,0,0,0,1,0,no,0,1,0,none,0 //SM_MOVINGRECOVERY#移動時HP回復# 145,0,0,0,0,0,1,0,no,0,1,0,weapon,0 //SM_FATALBLOW#?所攻撃# -146,0,0,0,0,0,1,0,no,0,1,0,weapon,0 //SM_AUTOBERSERK#オ?トバ?サ?ク# +146,0,6,4,0,1,1,1,no,0,1,0,weapon,0 //SM_AUTOBERSERK#オ?トバ?サ?ク# 147,0,0,4,0,1,1,0,no,0,1,0,weapon,0 //AC_MAKINGARROW#矢作成# 148,-3,6,1,0,2,1,1,no,0,1,0,weapon,6 //AC_CHARGEARROW#?ャ?ジアロ?# 149,8,6,1,2,0,1,1,no,0,1,0,weapon,0 //TF_SPRINKLESAND#砂まき# @@ -439,7 +439,7 @@ 402,8,6,1,0,1,10,1,no,0,0,0,none,0 //PF_MINDBREAKER#?インドブレ?カ?# 403,0,0,4,0,1,1,1,yes,0,0,0,magic,0 //PF_MEMORIZE#メモライズ# 404,3,6,2,2,1,5,1,yes,0,256,1,magic,0 //PF_FOGWALL#フォグウォ?ル# -405,3,6,2,0,1,5,1,no,0,128,2,misc,0 //PF_SPIDERWEB#スパイ??ウェッブ# +405,3,6,2,0,1,1,1,no,0,128,2,misc,0 //PF_SPIDERWEB#スパイ??ウェッブ# 406,-1,6,1,0,2,10,1,no,33,0,0,weapon,0 //ASC_METEORASSAULT#メテオアサルト# 407,0,6,4,0,1,10,0,no,0,0,0,none,0 //ASC_CDP#デッドリ??イズン製造# 408,0,0,4,0,1,1,1,yes,0,0,0,magic,0 //WE_BABY## diff --git a/db/skill_require_db.txt b/db/skill_require_db.txt index 49eb15602..92b9ba12c 100644 --- a/db/skill_require_db.txt +++ b/db/skill_require_db.txt @@ -116,6 +116,7 @@ 142,0,0,3,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#?急手?# 143,0,0,5,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NV_TRICKDEAD#死んだふり# +146,0,0,5,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SM_AUTOBERSERK#オ?トバ?サ?ク# 147,0,0,10,0,0,0,99,recover_weight_rate,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AC_MAKINGARROW#矢作成# 148,0,0,15,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AC_CHARGEARROW#チャ?ジアロ?# 149,0,0,9,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //TF_SPRINKLESAND#砂まき# diff --git a/db/skill_tree.txt b/db/skill_tree.txt index 118b43a4f..e5787b038 100644 --- a/db/skill_tree.txt +++ b/db/skill_tree.txt @@ -1037,14 +1037,14 @@ 4017,288,5,285,3,286,3,287,3,0,0,0,0//SA_LANDPROTECTOR #ランドプロテクター# 4017,289,5,277,3,0,0,0,0,0,0,0,0//SA_DISPELL #ディスペル# 4017,290,10,279,5,288,1,289,1,0,0,0,0//SA_ABRACADABRA #アブラカタブラ# -4017,364,10,9,5,13,7,0,0,0,0,0,0//HW_SOULDRAIN #ソウルドレイン# +//4017,364,10,9,5,13,7,0,0,0,0,0,0//HW_SOULDRAIN #ソウルドレイン# 4017,373,5,9,1,276,1,0,0,0,0,0,0//PF_HPCONVERSION #ライフ置き換え# 4017,374,1,276,3,277,2,0,0,0,0,0,0//PF_SOULCHANGE #ソウルチェンジ# 4017,375,5,275,5,276,3,277,3,0,0,0,0//PF_SOULBURN #ソウルバーン# 4017,402,1,9,3,289,2,0,0,0,0,0,0//PF_MINDBREAKER #マインドブレーカー# 4017,403,1,274,5,278,5,279,1,0,0,0,0//PF_MEMORIZE #メモライズ# 4017,404,1,286,2,287,2,0,0,0,0,0,0//PF_FOGWALL #フォグウォール# -4017,405,5,284,4,0,0,0,0,0,0,0,0//PF_SPIDERWEB #スパイダーウェッブ# +4017,405,1,284,4,0,0,0,0,0,0,0,0//PF_SPIDERWEB #スパイダーウェッブ# //Stalker 4018,1,9,0,0,0,0,0,0,0,0,0,0//NV_BASIC #基本スキル# 4018,142,1,0,0,0,0,0,0,0,0,0,0//NV_FIRSTAID #応急手当# diff --git a/src/map/mob.c b/src/map/mob.c index ef67341f8..2f7d748a8 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -2295,7 +2295,7 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) mob_unlocktarget((struct mob_data *)src,tick); /* ソウルドレイン */ - if(sd && (skill=pc_checkskill(sd,HW_SOULDRAIN))>0){ + if(sd && sd->state.attack_type == BF_MAGIC && (skill=pc_checkskill(sd,HW_SOULDRAIN))>0){ clif_skill_nodamage(src,&md->bl,HW_SOULDRAIN,skill,1); sp = (battle_get_lv(&md->bl))*(65+15*skill)/100; if(sd->status.sp + sp > sd->status.max_sp) @@ -2529,7 +2529,7 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) int log_mvp[2] = {0}; int j; int mexp; - temp = ((double)mob_db[md->class].mexp * (double)battle_config.mvp_exp_rate * (9.+(double)count)/1000.); + temp = ((double)mob_db[md->class].mexp * (9.+(double)count)/10.); //[Gengar] mexp = (temp > 2147483647.)? 0x7fffffff:(int)temp; if(mexp < 1) mexp = 1; clif_mvp_effect(mvp_sd); // エフェクト diff --git a/src/map/pc.c b/src/map/pc.c index 94ee62fbb..f0e2a719f 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -2098,7 +2098,8 @@ int pc_calcstatus(struct map_session_data* sd,int first) before.cart_weight != before.cart_weight || before.cart_max_weight != before.cart_max_weight ) clif_updatestatus(sd,SP_CARTINFO);*/ - if(sd->status.hpstatus.max_hp>>2 && pc_checkskill(sd,SM_AUTOBERSERK)>0 && + //if(sd->status.hpstatus.max_hp>>2 && pc_checkskill(sd,SM_AUTOBERSERK)>0 && + if(sd->status.hpstatus.max_hp>>2 && sd->sc_data[SC_AUTOBERSERK].timer != -1 && (sd->sc_data[SC_PROVOKE].timer==-1 || sd->sc_data[SC_PROVOKE].val2==0 ) && !pc_isdead(sd)) // オ?トバ?サ?ク?動 skill_status_change_start(&sd->bl,SC_PROVOKE,10,1,0,0,0,0); @@ -5339,7 +5340,8 @@ int pc_damage(struct block_list *src,struct map_session_data *sd,int damage) // まだ生きているならHP更新 clif_updatestatus(sd,SP_HP); - if(sd->status.hpstatus.max_hp>>2 && pc_checkskill(sd,SM_AUTOBERSERK)>0 && + //if(sd->status.hpstatus.max_hp>>2 && pc_checkskill(sd,SM_AUTOBERSERK)>0 && + if(sd->status.hpstatus.max_hp>>2 && sd->sc_data[SC_AUTOBERSERK].timer != -1 && (sd->sc_data[SC_PROVOKE].timer==-1 || sd->sc_data[SC_PROVOKE].val2==0 )) // オ?トバ?サ?ク?動 skill_status_change_start(&sd->bl,SC_PROVOKE,10,1,0,0,0,0); diff --git a/src/map/skill.c b/src/map/skill.c index 5be308425..4442ac81c 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1,4 +1,4 @@ -// $Id: skill.c,v 1.8 2004/12/2 12:58:19 AM Celestia Exp $ +// $Id: skill.c,v 1.8 2004/12/3 7:53:42 PM Celestia Exp $ /* スキル?係 */ #include @@ -114,7 +114,7 @@ int SkillStatusChangeTable[]={ /* skill.h SC_SPLASHER, /* ベナムスプラッシャ? */ -1, SC_TRICKDEAD, /* 死んだふり */ - -1,-1,-1,-1,-1,-1, + -1,-1,SC_AUTOBERSERK,-1,-1,-1, /* 150- */ -1,-1,-1,-1,-1, SC_LOUD, /* ラウドボイス */ @@ -3218,6 +3218,19 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int skill_status_change_start(src,SC_BLOCKSKILL,skilllv,0,skillid,0,10000,0 ); break; + case SM_AUTOBERSERK: // Celest + { + struct status_change *tsc_data = battle_get_sc_data(bl); + int sc=SkillStatusChangeTable[skillid]; + clif_skill_nodamage(src,bl,skillid,skilllv,1); + if( tsc_data ){ + if( tsc_data[sc].timer==-1 ) + skill_status_change_start(bl,sc,skilllv,0,0,0,0,0); + else + skill_status_change_end(bl, sc, -1); + } + } + break; case AS_ENCHANTPOISON: // Prevent spamming [Valaris] if(bl->type==BL_PC) { @@ -3693,6 +3706,8 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int skill_status_change_start(bl,SC_STONE,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0); else if(sd) clif_skill_fail(sd,skillid,0,0); + if (dstmd) + mob_target(dstmd,src,skill_get_range(skillid,skilllv)); break; case NV_FIRSTAID: /* ?急手? */ @@ -8542,6 +8557,10 @@ int skill_status_change_end(struct block_list* bl, int type, int tid) case SC_REGENERATION: calc_flag = 1; break; + case SC_AUTOBERSERK: + if (sc_data[SC_PROVOKE].timer != -1) + skill_status_change_end(bl,SC_PROVOKE,-1); + break; case SC_BERSERK: /* バ?サ?ク */ calc_flag = 1; clif_status_change(bl,SC_INCREASEAGI,0); /* アイコン消去 */ @@ -8870,6 +8889,7 @@ int skill_status_change_timer(int tid, unsigned int tick, int id, int data) break; case SC_ENDURE: /* インデュア */ + case SC_AUTOBERSERK: // Celest if(sd && sd->special_state.infinite_endure) { sc_data[type].timer=add_timer( 1000*60+tick,skill_status_change_timer, bl->id, data ); //sc_data[type].val2=1; @@ -9305,6 +9325,14 @@ int skill_status_change_start(struct block_list *bl, int type, int val1, int val calc_flag = 1; // for updating mdef val2 = 7; // [Celest] break; + case SC_AUTOBERSERK: + { + tick = 60*1000; + if (bl->type == BL_PC && sd->status.hpstatus.max_hp>>2 && + (sc_data[SC_PROVOKE].timer==-1 || sc_data[SC_PROVOKE].val2==0)) + skill_status_change_start(bl,SC_PROVOKE,10,1,0,0,0,0); + } + break; case SC_CONCENTRATE: /* 集中力向上 */ calc_flag = 1; break; diff --git a/src/map/skill.h b/src/map/skill.h index a8bf30e3c..ebca40b34 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -1,4 +1,4 @@ -// $Id: skill.h,v 1.5 2004/11/26 5:47:12 PM Celestia Exp $ +// $Id: skill.h,v 1.5 2004/12/3 7:53:26 PM Celestia $ #ifndef _SKILL_H_ #define _SKILL_H_ @@ -326,6 +326,7 @@ enum { // struct map_session_data SC_BROKNARMOR =32, SC_BROKNWEAPON =33, SC_SLOWDOWN =45, // for skill slowdown + SC_AUTOBERSERK =46, SC_SIGHTTRASHER =73, // SC_BASILICA =125, // 125 is the same id as joint break SC_BASILICA =102, // temporarily use this before an actual id is found [celest] @@ -343,18 +344,18 @@ enum { // struct map_session_data SC_SPELLBREAKER =192, SC_DPOISON =193, /* 猛毒 */ SC_BLOCKSKILL =194, // for disallowing the use of a skill for a time period + SC_LEADERSHIP =196, + SC_GLORYWOUNDS =197, + SC_SOULCOLD =198, + SC_HAWKEYES =199, + SC_BATTLEORDERS =200, + SC_REGENERATION =201, + SC_PRESERVE =202, // [Celest] - SC_BLEEDING = 124, // Temporarily same id as headcrush - SC_MOONLIT = 195, - SC_LEADERSHIP = 196, - SC_GLORYWOUNDS = 197, - SC_SOULCOLD = 198, - SC_HAWKEYES = 199, - SC_BATTLEORDERS = 200, - SC_REGENERATION = 201, - SC_PRESERVE = 202, - + SC_BLEEDING = 124, // Temporarily same id as headcrush + SC_MOONLIT =195, + // -- testing various SC effects // SC_AURABLADE =81, // SC_CONCENTRATION =83, -- cgit v1.2.3-60-g2f50