From d1527fb4557f1b175677bfd171afff2994b84820 Mon Sep 17 00:00:00 2001 From: celest Date: Tue, 5 Apr 2005 17:00:51 +0000 Subject: * Fixed skill tree entries for Vulcan Arrow, and Throw Arrow * Fixed damage reflecting * Fixed Backstab to not have a push back effect * Fixed auto spell to not taking SP * Fixed Sanctuary to have proper healing count git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@1412 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-SVN.txt | 4 +++ db/Changelog.txt | 4 +++ db/skill_db.txt | 2 +- db/skill_tree.txt | 6 ++--- src/map/battle.c | 79 ++++++++++++++++++++++++++----------------------------- src/map/skill.c | 26 +++++++++--------- 6 files changed, 62 insertions(+), 59 deletions(-) diff --git a/Changelog-SVN.txt b/Changelog-SVN.txt index 0af906d0b..f5ad56326 100644 --- a/Changelog-SVN.txt +++ b/Changelog-SVN.txt @@ -2,6 +2,10 @@ Date Added 04/05 + * Fixed damage reflecting (silly typo xP) [celest] + * Fixed Backstab to not have a push back effect [celest] + * Fixed auto spell to not taking SP, thanks to Hekate + * Fixed Sanctuary to have proper healing count, thanks to Hekate * Simplified Valaris' online_timer [celest] * Updated Fogwall, Spiderweb, and HP Conversion, thanks to redcard [celest] * Adding saving character online/offline for TXT char and login (unfinished) diff --git a/db/Changelog.txt b/db/Changelog.txt index 072d5dcf7..21f7dd224 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -8,6 +8,10 @@ Einbroch items == 5% Skill databases == celest working on them i believe. +04/05 + * Fixed skill tree entries for Vulcan Arrow, and Throw Arrow for gypsies, + thanks to Hekate + 04/04 * Removed required skills for Berserk (only job level 50 is needed) [DracoRPG] * Re-added MDEF +15 to Resting Cat [DracoRPG] diff --git a/db/skill_db.txt b/db/skill_db.txt index 1b98dee1f..db2e66370 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -261,7 +261,7 @@ //208 193に同じ 210,0,0,0,0,0,10,0,no,0,0,0,weapon,0 //RG_SNATCHER#スナッ?ャ?# 211,1,6,1,0,1,10,1,no,0,0,0,weapon,0 //RG_STEALCOIN#スティ?ルコイン# -212,-1,6,1,0,0,10,1,no,0,0,0,weapon,1 //RG_BACKSTAP#バックス?ブ# +212,-1,6,1,0,0,10,1,no,0,0,0,weapon,0 //RG_BACKSTAP#バックス?ブ# 213,0,0,0,0,0,5,0,no,0,0,0,none,0 //RG_TUNNELDRIVE#トンネルドライブ# 214,0,6,4,0,1,5,1,no,0,0,0,weapon,0 //RG_RAID#サプライズア?ック# 215,1,6,1,0,1,5,1,no,0,0,0,weapon,0 //RG_STRIPWEAPON#ストリップウェ?ン# diff --git a/db/skill_tree.txt b/db/skill_tree.txt index 70d2b2e1d..debfaef00 100644 --- a/db/skill_tree.txt +++ b/db/skill_tree.txt @@ -1152,7 +1152,7 @@ 4020,312,1,306,1,0,0,0,0,0,0,0,0//BD_INTOABYSS #深淵の中に# 4020,313,5,321,10,0,0,0,0,0,0,0,0//BD_SIEGFRIED #不死身のジークフリード# 4020,314,1,312,1,308,1,0,0,0,0,0,0//BD_RAGNAROK #ラグナロク# -4020,394,10,0,0,0,0,0,0,0,0,0,0//CG_ARROWVULCAN +4020,394,10,47,5,316,1,0,0,0,0,0,0//CG_ARROWVULCAN 4020,395,5,45,5,315,7,0,0,0,0,0,0//CG_MOONLIT 4020,396,1,45,5,315,5,0,0,0,0,0,0//CG_MARIONETTE //Gypsy @@ -1166,7 +1166,7 @@ 4021,147,1,0,0,0,0,0,0,0,0,0,0//AC_MAKINGARROW #矢作成# 4021,148,1,0,0,0,0,0,0,0,0,0,0//AC_CHARGEARROW #チャージアロー# 4021,323,10,0,0,0,0,0,0,0,0,0,0//DC_DANCINGLESSON #ダンスの練習# -4021,324,5,0,0,0,0,0,0,0,0,0,0//DC_THROWARROW #矢撃ち# +4021,324,5,323,3,0,0,0,0,0,0,0,0//DC_THROWARROW #矢撃ち# 4021,325,5,323,1,304,1,0,0,0,0,0,0//DC_UGLYDANCE #自分勝手なダンス# 4021,326,5,305,1,0,0,0,0,0,0,0,0//DC_SCREAM #スクリーム# 4021,327,10,325,3,0,0,0,0,0,0,0,0//DC_HUMMING #ハミング# @@ -1184,7 +1184,7 @@ 4021,312,1,306,1,0,0,0,0,0,0,0,0//BD_INTOABYSS #深淵の中に# 4021,313,5,329,10,0,0,0,0,0,0,0,0//BD_SIEGFRIED #不死身のジークフリード# 4021,314,1,312,1,308,1,0,0,0,0,0,0//BD_RAGNAROK #ラグナロク# -4021,394,10,0,0,0,0,0,0,0,0,0,0//CG_ARROWVULCAN +4021,394,10,47,5,324,1,0,0,0,0,0,0//CG_ARROWVULCAN 4021,395,5,45,5,323,7,0,0,0,0,0,0//CG_MOONLIT 4021,396,1,45,5,323,5,0,0,0,0,0,0//CG_MARIONETTE // Peco Paladin diff --git a/src/map/battle.c b/src/map/battle.c index 3529b9946..b7e0320e8 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -3574,30 +3574,27 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target, } if(sd) { if(sd->autospell_id > 0 && rand()%100 < sd->autospell_rate) { - int skilllv=sd->autospell_lv,i,f=0,sp; + int skilllv = sd->autospell_lv, i; i = rand()%100; if(i >= 50) skilllv -= 2; else if(i >= 15) skilllv--; if(skilllv < 1) skilllv = 1; - sp = skill_get_sp(sd->autospell_id,skilllv)*2/3; - if(sd->status.sp >= sp) { - if((i=skill_get_inf(sd->autospell_id) == 2) || i == 32) - f = skill_castend_pos2(src,target->x,target->y,sd->autospell_id,skilllv,tick,flag); - else { - switch( skill_get_nk(sd->autospell_id) ) { - case 0: case 2: - f = skill_castend_damage_id(src,target,sd->autospell_id,skilllv,tick,flag); - break; - case 1:/* 支援系 */ - if((sd->autospell_id==AL_HEAL || (sd->autospell_id==ALL_RESURRECTION && target->type != BL_PC)) && battle_check_undead(race,ele)) - f = skill_castend_damage_id(src,target,sd->autospell_id,skilllv,tick,flag); - else - f = skill_castend_nodamage_id(src,target,sd->autospell_id,skilllv,tick,flag); - break; - } + + if((i=skill_get_inf(sd->autospell_id) == 2) || i == 32) + skill_castend_pos2(src,target->x,target->y,sd->autospell_id,skilllv,tick,flag); + else { + switch( skill_get_nk(sd->autospell_id) ) { + case 0: case 2: + skill_castend_damage_id(src,target,sd->autospell_id,skilllv,tick,flag); + break; + case 1:/* 支援系 */ + if((sd->autospell_id==AL_HEAL || (sd->autospell_id==ALL_RESURRECTION && target->type != BL_PC)) && battle_check_undead(race,ele)) + skill_castend_damage_id(src,target,sd->autospell_id,skilllv,tick,flag); + else + skill_castend_nodamage_id(src,target,sd->autospell_id,skilllv,tick,flag); + break; } - if(!f) pc_heal(sd,0,-sp); - } + } } if (wd.flag&BF_WEAPON && src != target && (wd.damage > 0 || wd.damage2 > 0)) { int hp = 0,sp = 0; @@ -3626,39 +3623,37 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target, struct map_session_data *tsd = (struct map_session_data *)target; if(tsd && ((sd && !sd->state.arrow_atk) || (status_get_range(src)<=2)) && tsd->autospell2_id > 0 && rand()%100 < tsd->autospell2_rate) { - int skilllv = tsd->autospell_lv,i,f=0,sp; + struct block_list *tbl; + int skilllv = tsd->autospell_lv, i; i = rand()%100; if(i >= 50) skilllv -= 2; else if(i >= 15) skilllv--; if(skilllv < 1) skilllv = 1; - sp = skill_get_sp(tsd->autospell2_id,skilllv)*2/3; - if(tsd->status.sp >= sp) { - struct block_list *tbl; - if (tsd->autospell2_type == 0) tbl = target; - else tbl = src; - if((i=skill_get_inf(tsd->autospell2_id) == 2) || i == 32) - f = skill_castend_pos2(target,tbl->x,tbl->y,tsd->autospell2_id,skilllv,tick,flag); - else { - switch( skill_get_nk(tsd->autospell2_id) ) { - case 0: case 2: - f = skill_castend_damage_id(target,tbl,tsd->autospell2_id,skilllv,tick,flag); - break; - case 1:/* 支援系 */ - if((tsd->autospell2_id==AL_HEAL || (tsd->autospell2_id==ALL_RESURRECTION && tbl->type != BL_PC)) && - battle_check_undead(status_get_race(tbl),status_get_elem_type(tbl))) - f = skill_castend_damage_id(target,tbl,tsd->autospell2_id,skilllv,tick,flag); - else - f = skill_castend_nodamage_id(target,tbl,tsd->autospell2_id,skilllv,tick,flag); + + if (tsd->autospell2_type == 0) tbl = target; + else tbl = src; + if((i=skill_get_inf(tsd->autospell2_id) == 2) || i == 32) + skill_castend_pos2(target,tbl->x,tbl->y,tsd->autospell2_id,skilllv,tick,flag); + else { + switch( skill_get_nk(tsd->autospell2_id) ) { + case 0: case 2: + skill_castend_damage_id(target,tbl,tsd->autospell2_id,skilllv,tick,flag); + break; + case 1:/* 支援系 */ + if((tsd->autospell2_id==AL_HEAL || (tsd->autospell2_id==ALL_RESURRECTION && tbl->type != BL_PC)) && + battle_check_undead(status_get_race(tbl),status_get_elem_type(tbl))) + skill_castend_damage_id(target,tbl,tsd->autospell2_id,skilllv,tick,flag); + else + skill_castend_nodamage_id(target,tbl,tsd->autospell2_id,skilllv,tick,flag); break; - } } - if(!f) pc_heal(tsd,0,-sp); - } + } } } if(rdamage > 0) - battle_delay_damage(tick+wd.amotion,src,target,rdamage,0); + battle_delay_damage(tick+wd.amotion,target,src,rdamage,0); + if(t_sc_data && t_sc_data[SC_AUTOCOUNTER].timer != -1 && t_sc_data[SC_AUTOCOUNTER].val4 > 0) { if(t_sc_data[SC_AUTOCOUNTER].val3 == src->id) battle_weapon_attack(target,src,tick,0x8000|t_sc_data[SC_AUTOCOUNTER].val1); diff --git a/src/map/skill.c b/src/map/skill.c index 887395b40..fe22ce6cd 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -5633,26 +5633,26 @@ int skill_unit_onplace_timer(struct skill_unit *src,struct block_list *bl,unsign switch (sg->unit_id) { case 0x83: /* サンクチュアリ */ { - int race=status_get_race(bl); + int race = status_get_race(bl); - if (battle_check_undead(race,status_get_elem_type(bl)) || race==6) { - if (skill_attack(BF_MAGIC,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0)) { - // reduce healing count if this was meant for damaging [celest] - // sg->val1 /= 2; - sg->val1--; // チャットキャンセルに対応 + if (battle_check_undead(race, status_get_elem_type(bl)) || race==6) { + if (skill_attack(BF_MAGIC, ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0)) { + // reduce healing count if this was meant for damaging [hekate] + sg->val1 -= 2; + //sg->val1--; // チャットキャンセルに対応 } } else { int heal = sg->val2; - if (status_get_hp(bl)>=status_get_max_hp(bl)) + if (status_get_hp(bl) >= status_get_max_hp(bl)) break; - if(bl->type==BL_PC && ((struct map_session_data *)bl)->special_state.no_magic_damage) - heal=0; /* 黄金蟲カード(ヒール量0) */ - clif_skill_nodamage(&src->bl,bl,AL_HEAL,heal,1); - battle_heal(NULL,bl,heal,0,0); - if (diff>=500) + if (bl->type == BL_PC && ((struct map_session_data *)bl)->special_state.no_magic_damage) + heal = 0; /* 黄金蟲カード(ヒール量0) */ + clif_skill_nodamage(&src->bl, bl, AL_HEAL, heal, 1); + battle_heal(NULL, bl, heal, 0, 0); + if (diff >= 500) sg->val1--; // 新規に入ったユニットだけカウント } - if (sg->val1<=0) + if (sg->val1 <= 0) skill_delunitgroup(sg); break; } -- cgit v1.2.3-70-g09d2