From 2d5536f49322233375b1eb7e4e535671eb0f2512 Mon Sep 17 00:00:00 2001 From: celest Date: Sat, 13 Nov 2004 18:47:19 +0000 Subject: Updated some skills. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/athena@162 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 3 +++ db/skill_db.txt | 2 +- src/map/battle.c | 14 +++++++++++--- src/map/pc.c | 2 +- src/map/skill.c | 18 +++++++++++++----- 5 files changed, 29 insertions(+), 10 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 3ce254878..6250356e9 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -3,6 +3,9 @@ Date Added * Updated & Optimized TXT Login from FREYA. (need to do SQL now) [Codemaster] * Removed compile warnings in intif.c. [Valaris] * Fixed chrif_changesex and @changesex, now uses packet 0x3000. [MC Cameri] + * Updated some skills, credits to orn and midas. [celest] + - Magnum Break, Throw Stone, Sprinkle Sand, Magic Power, Memorise, Quagmire, + Spider Web, Reject Sword, and assassin's Dodge. 11/12 * added folder: /save-tmpl, removed folder /save diff --git a/db/skill_db.txt b/db/skill_db.txt index 101169615..040f0403e 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -91,7 +91,7 @@ 89,8,6,2,1,1,10,1,yes,0,0,0,magic,2 //WZ_STORMGUST#ストームガスト# 90,8,8,1,2,0,5,1:2:3:4:5,yes,0,0,0,magic,0 //WZ_EARTHSPIKE#アーススパイク# 91,8,8,2,2,0,5,1:2:3:4:5,yes,0,0,0,magic,0 //WZ_HEAVENDRIVE#ヘヴンズドライブ# -92,8,6,2,2,1,5,1,yes,0,0,0,magic,0 //WZ_QUAGMIRE#クァグマイア# +92,8,6,2,2,1,5,1,yes,0,0,3,magic,0 //WZ_QUAGMIRE#クァグマイア# 93,8,6,1,0,1,1,1,yes,0,0,0,magic,0 //WZ_ESTIMATION#モンスター情報# 94,0,0,0,0,0,5,0,no,0,0,0,weapon,0 //BS_IRON#鉄製造# 95,0,0,0,0,0,5,0,no,0,0,0,weapon,0 //BS_STEEL#鋼鉄製造# diff --git a/src/map/battle.c b/src/map/battle.c index 2751e931b..e9b16bce5 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -1565,7 +1565,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i // リジェクトソード if(sc_data[SC_REJECTSWORD].timer!=-1 && damage > 0 && flag&BF_WEAPON && ((src->type==BL_PC && ((struct map_session_data *)src)->status.weapon == (1 || 2 || 3)) || src->type==BL_MOB )){ - if(rand()%100 < (10+5*sc_data[SC_REJECTSWORD].val1)){ //反射確率は10+5*Lv + if(rand()%100 < (15*sc_data[SC_REJECTSWORD].val1)){ //反射確率は15*Lv damage = damage*50/100; battle_damage(bl,src,damage,0); //ダメージを与えたのは良いんだが、ここからどうして表示するんだかわかんねぇ @@ -1575,6 +1575,12 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i skill_status_change_end(bl, SC_REJECTSWORD, -1); } } + if(sc_data[SC_SPIDERWEB].timer!=-1 && damage > 0) // [Celest] + if ((flag&BF_SKILL && skill_get_pl(skill_num)==3) || + (!flag&BF_SKILL && battle_get_attack_element(src)==3)) { + damage<<=1; + skill_status_change_end(bl, SC_SPIDERWEB, -1); + } } if(class == 1288 || class == 1287 || class == 1286 || class == 1285) { @@ -1644,7 +1650,8 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int // デーモンベイン(+3 〜 +30) vs 不死 or 悪魔 (死人は含めない?) if((skill = pc_checkskill(sd,AL_DEMONBANE)) > 0 && (battle_check_undead(race,battle_get_elem_type(target)) || race==6) ) - damage += (skill * 3); + damage += (skill*(int)(3+(sd->status.base_level+1)*0.05)); // submitted by orn + //damage += (skill * 3); // ビーストベイン(+4 〜 +40) vs 動物 or 昆虫 if((skill = pc_checkskill(sd,HT_BEASTBANE)) > 0 && (race==2 || race==4) ) @@ -2588,7 +2595,8 @@ static struct Damage battle_calc_mob_weapon_attack( t_def = def2*8/10; if(battle_check_undead(s_race,battle_get_elem_type(src)) || s_race==6) if(tsd && (skill=pc_checkskill(tsd,AL_DP)) > 0 ) - t_def += skill*3; + t_def += skill* (int) (3 + (tsd->status.base_level+1)*0.04); // submitted by orn + //t_def += skill*3; vitbonusmax = (t_vit/20)*(t_vit/20)-1; if(battle_config.monster_defense_type) { diff --git a/src/map/pc.c b/src/map/pc.c index 40ae26ae3..a642eaf8a 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -1677,7 +1677,7 @@ int pc_calcstatus(struct map_session_data* sd,int first) if(sd->status.class==12||sd->status.class==17||sd->status.class==4013||sd->status.class==4018) sd->flee += skill*4; if(sd->status.class==12||sd->status.class==4013) - sd->speed -= sd->speed *(skill*.5)/100; + sd->speed -= sd->speed *(skill*1.5)/100; } if( (skill=pc_checkskill(sd,MO_DODGE))>0 ) // 見切り sd->flee += (skill*3)>>1; diff --git a/src/map/skill.c b/src/map/skill.c index c714d7511..6f9076f88 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1035,12 +1035,12 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl,int s skill_status_change_start(bl,SC_SLEEP,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0); break; case TF_SPRINKLESAND: /* 砂まき */ - if( rand()%100 < 15*sc_def_int/100 ) + if( rand()%100 < 20*sc_def_int/100 ) skill_status_change_start(bl,SC_BLIND,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0); break; case TF_THROWSTONE: /* 石投げ */ - if( rand()%100 < 5*sc_def_vit/100 ) + if( rand()%100 < 7*sc_def_vit/100 ) skill_status_change_start(bl,SC_STAN,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0); break; @@ -2106,6 +2106,7 @@ int skill_castend_damage_id( struct block_list* src, struct block_list *bl,int s if(skilllv <= 0) return 0; struct map_session_data *sd=NULL; + struct status_change *sc_data = battle_get_sc_data(src); int i; nullpo_retr(1, src); @@ -2359,6 +2360,8 @@ int skill_castend_damage_id( struct block_list* src, struct block_list *bl,int s bl->m,x-ar,y-ar,x+ar,y+ar,0, src,skillid,skilllv,tick, flag|BCT_ENEMY|1, skill_castend_damage_id); + if (skillid == SM_MAGNUM) // fire element for 10 seconds + skill_status_change_start(src,SC_FLAMELAUNCHER,0,0,0,0,10000,0); } break; @@ -2624,6 +2627,10 @@ int skill_castend_damage_id( struct block_list* src, struct block_list *bl,int s map_freeblock_unlock(); return 1; } + if(sc_data) { + if (sc_data[SC_MAGICPOWER].timer != -1 && skillid != HW_MAGICPOWER) //マジックパワ?の?果終了 + skill_status_change_end(src,SC_MAGICPOWER,-1); + } map_freeblock_unlock(); return 0; @@ -6333,6 +6340,7 @@ int skill_check_condition(struct map_session_data *sd,int type) } } break; + case WZ_QUAGMIRE: case MG_FIREWALL: /* ファイアーウォール */ case WZ_FIREPILLAR: // celest /* 数制限 */ @@ -6841,7 +6849,7 @@ int skill_use_id( struct map_session_data *sd, int target_id, //メモライズ状態ならキャストタイムが1/3 if(sc_data && sc_data[SC_MEMORIZE].timer != -1 && casttime > 0){ - casttime = casttime/3; + casttime = casttime/2; if((--sc_data[SC_MEMORIZE].val2)<=0) skill_status_change_end(&sd->bl, SC_MEMORIZE, -1); } @@ -6894,8 +6902,8 @@ int skill_use_id( struct map_session_data *sd, int target_id, } //マジックパワーの効果終了 - if(sc_data && sc_data[SC_MAGICPOWER].timer != -1 && skill_num != HW_MAGICPOWER) - skill_status_change_end(&sd->bl,SC_MAGICPOWER,-1); + //if(sc_data && sc_data[SC_MAGICPOWER].timer != -1 && skill_num != HW_MAGICPOWER) + // skill_status_change_end(&sd->bl,SC_MAGICPOWER,-1); // moved return 0; } -- cgit v1.2.3-70-g09d2