From e6d6ac529697433258a6bfa4d8819b371dfd85cb Mon Sep 17 00:00:00 2001 From: skotlex Date: Wed, 5 Jul 2006 16:05:59 +0000 Subject: - Merged some skill db data of NJ skills, thanks to RockmanEXE - Cleaned up some of the skill logic, so that skills that are casted on self, but have a unit id (an entry in skill_unit_db) will automatically re-route themself from a targetted-no-damage-skill to a ground-skill. When this happens, the effect packet is clif_skill_nodamage rather than clif_skill_poseffect (this is because that's how the dance/songs/encores behave). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@7538 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 8 +++ db/skill_cast_db.txt | 8 +-- db/skill_db.txt | 2 +- db/skill_unit_db.txt | 128 +++++++++++++++++++------------------- src/map/skill.c | 169 ++++++++++++++++++++++----------------------------- 5 files changed, 150 insertions(+), 165 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 27a3b9677..053c85662 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,14 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2006/07/05 + * Merged some skill db data of NJ skills, thanks to RockmanEXE [Skotlex] + * Cleaned up some of the skill logic, so that skills that are casted on + self, but have a unit id (an entry in skill_unit_db) will automatically + re-route themself from a targetted-no-damage-skill to a ground-skill. When + this happens, the effect packet is clif_skill_nodamage rather than + clif_skill_poseffect (this is because that's how the dance/songs/encores + behave). The repercussion this will have on Grandcross and the + self-targetted Ninja skills have yet to be tested. [Skotlex] * Updated @refine to take account of MAX_REFINE, thanks to Omega... GM Designer. [Skotlex] - Also optimized the @refine loop for better performance. diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt index 922d474e7..77d3c5058 100644 --- a/db/skill_cast_db.txt +++ b/db/skill_cast_db.txt @@ -897,19 +897,19 @@ 532,0,0,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0 //-- NJ_KOUENKA -534,0,0,0,0,0 +534,700:1400:2100:2800:3500:4200:4900:5600:6300:7000,0,0,0,0 //-- NJ_KAENSIN 535,0,0,0,20000,0 //-- NJ_BAKUENRYU 536,0,0,0,0,0 //-- NJ_HYOUSENSOU -537,0,0,0,0,0 +537,700:1400:2100:2800:3500:4200:4900:5600:6300:7000,0,0,0,0 //-- NJ_SUITON -538,0,0,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,0 +538,3300:3200:3100:3000:2900:2800:2700:2600:2500:2400:2300,0,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,0 //-- NJ_HYOUSYOURAKU 539,0,0,0,0,10000 //-- NJ_HUUJIN -540,0,0,0,0,0 +540,700:1400:2100:2800:3500:4200:4900:5600:6300:7000,0,0,0,0 //-- NJ_RAIGEKISAI 541,0,0,0,0,0 //-- NJ_KAMAITACHI diff --git a/db/skill_db.txt b/db/skill_db.txt index 1dc4d49d6..640120899 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -559,7 +559,7 @@ 535,0,8,4,3,0,2,10,5:5:6:6:7:7:8:8:9:9,no,0,0,0,magic,0 //NJ_KAENSIN#NJ_KAENSIN# 536,9,8,1,3,1,2,5,3,no,0,0,0,magic,0 //NJ_BAKUENRYU#NJ_BAKUENRYU# 537,9,8,1,1,0,0,10,1:2:3:4:5:6:7:7:7:7,no,0,0,0,magic,0 //NJ_HYOUSENSOU#NJ_HYOUSENSOU# -538,2,6,2,0,1,0,10,1,no,0,0,0,magic,0 //NJ_SUITON#NJ_SUITON# +538,9,6,2,0,1,0,10,1,no,0,0,0,magic,0 //NJ_SUITON#NJ_SUITON# 539,0,6,4,1,0,3,5,1,no,0,0,0,magic,0 //NJ_HYOUSYOURAKU#NJ_HYOUSYOURAKU# 540,9,8,1,4,0,0,10,1:2:2:3:3:4:4:5:5:6,no,0,0,0,magic,0 //NJ_HUUJIN#NJ_HUUJIN# 541,0,6,4,0,1,0,5,1,no,0,0,0,magic,0 //NJ_RAIGEKISAI#NJ_RAIGEKISAI# diff --git a/db/skill_unit_db.txt b/db/skill_unit_db.txt index f1bcf0083..815cb3554 100644 --- a/db/skill_unit_db.txt +++ b/db/skill_unit_db.txt @@ -23,64 +23,64 @@ // u1 u2 lay r intr target flag // - 12,0x7e, , 0, 0, -1,all, 0x003 //MG_SAFETYWALL#セイフティウォール - 18,0x7f, , -1, 0, 1,enemy, 0x008 //MG_FIREWALL#ファイアーウォール - 21,0x86, , 0, 2,1000,enemy, 0x008 //MG_THUNDERSTORM#サンダーストーム - 25,0x85, , 1, 0, -1,all, 0x003 //AL_PNEUMA#ニューマ - 27,0x81,0x80, 0, 0, -1,all, 0x006 //AL_WARP#ワープポータル + 12,0x7e, , 0, 0, -1,all, 0x003 //MG_SAFETYWALL + 18,0x7f, , -1, 0, 1,enemy, 0x008 //MG_FIREWALL + 21,0x86, , 0, 2,1000,enemy, 0x008 //MG_THUNDERSTORM + 25,0x85, , 1, 0, -1,all, 0x003 //AL_PNEUMA + 27,0x81,0x80, 0, 0, -1,all, 0x006 //AL_WARP 47,0x86, , 0, 2,1000,enemy, 0x080 //AC_SHOWER - 70,0x83, , -1, 1,1000,all, 0x008 //PR_SANCTUARY#サンクチュアリ - 79,0x84, , -1, 1,3000,enemy, 0x008 //PR_MAGNUS#マグヌスエクソシズム - 80,0x87,0x88, 0, 1,2000,enemy, 0x002 //WZ_FIREPILLAR#ファイアーピラー - 83,0x86, , 0, 3,1000,enemy, 0x000 //WZ_METEOR#メテオストーム - 85,0x86, , 0,6:6:6:6:6:6:6:6:6:6:8,1250,enemy, 0x008 //WZ_VERMILION#ロードオブヴァーミリオン - 87,0x8d, , -1, 0, -1,all, 0x000 //WZ_ICEWALL#アイスウォール - 88,0x86, , 0, 2,1000,enemy, 0x000 //WZ_FROSTNOVA#フロストノヴァ - 89,0x86, , 0, 5, 450,enemy, 0x008 //WZ_STORMGUST#ストームガスト - 91,0x86, , 0, 2,1000,enemy, 0x080 //WZ_HEAVENDRIVE#ヘヴンズドライブ - 92,0x8e, , 2, 0, -1,enemy, 0x000 //WZ_QUAGMIRE#クァグマイア -115,0x90, , 0, 1,1000,enemy, 0x006 //HT_SKIDTRAP#スキッドトラップ -116,0x93, , 0, 1,1000,enemy, 0x006 //HT_LANDMINE#ランドマイン -117,0x91, , 0, 1,1000,enemy, 0x006 //HT_ANKLESNARE#アンクルスネア -118,0x94, , 0, 1,1000,enemy, 0x006 //HT_SHOCKWAVE#ショックウェーブトラップ -119,0x95, , 0, 1,1000,enemy, 0x006 //HT_SANDMAN#サンドマン -120,0x96, , 0, 1,1000,enemy, 0x006 //HT_FLASHER#フラッシャー -121,0x97, , 0, 1,1000,enemy, 0x006 //HT_FREEZINGTRAP#フリージングトラップ -122,0x8f, , 0, 1,1000,enemy, 0x006 //HT_BLASTMINE#ブラストマイン -123,0x98, , 0, 1,1000,enemy, 0x006 //HT_CLAYMORETRAP#クレイモアトラップ -125,0x99, , 0, 1,1000,all, 0x002 //HT_TALKIEBOX#トーキーボックス -140,0x92, , -1, 0,1000,enemy, 0x000 //AS_VENOMDUST#ベナムダスト -220,0xb0, , 0, 0, -1,all, 0x002 //RG_GRAFFITI#グラフィティ -229,0xb1, , 0, 1,1000,enemy, 0x006 //AM_DEMONSTRATION#デモンストレーション -254,0x86, , -1, 0, 400,enemy, 0x000 //CR_GRANDCROSS#グランドクロス -285,0x9a, , 3, 0, -1,all, 0x000 //SA_VOLCANO#ボルケーノ -286,0x9b, , 3, 0, -1,all, 0x000 //SA_DELUGE#デリュージ -287,0x9c, , 3, 0, -1,all, 0x000 //SA_VIOLENTGALE#バイオレントゲイル -288,0x9d,,3:3:4:4:5,0, -1,all, 0x000 //SA_LANDPROTECTOR#ランドプロテクター -306,0x9e, , 4, 0,6000,all, 0x200 //BD_LULLABY#子守歌 -307,0x9f, , 4, 0, -1,enemy, 0x210 //BD_RICHMANKIM#ニヨルドの宴 -308,0xa0, , 4, 0, -1,enemy, 0x200 //BD_ETERNALCHAOS#永遠の混沌 -309,0xa1, , 4, 0, -1,party, 0x200 //BD_DRUMBATTLEFIELD#戦太鼓の響き -310,0xa2, , 4, 0, -1,party, 0x200 //BD_RINGNIBELUNGEN#ニーベルングの指輪 -311,0xa3, , 4, 0, -1,all, 0x200 //BD_ROKISWEIL#ロキの叫び -312,0xa4, , 4, 0, -1,party, 0x220 //BD_INTOABYSS#深淵の中に -313,0xa5, , 4, 0, -1,party, 0x200 //BD_SIEGFRIED#不死身のジークフリード -317,0xa6, , 3, 0,3000,enemy, 0x400 //BA_DISSONANCE#不協和音 -319,0xa7, , 3, 0, -1,all, 0x420 //BA_WHISTLE#口笛 -320,0xa8, , 3, 0, -1,all, 0x420 //BA_ASSASSINCROSS#夕陽のアサシンクロス -321,0xa9, , 3, 0, -1,all, 0x420 //BA_POEMBRAGI#ブラギの詩 -322,0xaa, , 3, 0,6000,all, 0xC20 //BA_APPLEIDUN#イドゥンの林檎 -325,0xab, , 3, 0,3000,enemy, 0x100 //DC_UGLYDANCE#自分勝手なダンス -327,0xac, , 3, 0, -1,all, 0x120 //DC_HUMMING#ハミング -328,0xad, , 3, 0, -1,enemy, 0x100 //DC_DONTFORGETME#私を忘れないで… -329,0xae, , 3, 0, -1,all, 0x120 //DC_FORTUNEKISS#幸運のキス -330,0xaf, , 3, 0, -1,party, 0x100 //DC_SERVICEFORYOU#サービスフォーユー -336,0xb2, , 0,-1, -1,noone, 0x000 //WE_CALLPARTNER#あなたに逢いたい -339,0x86, , -1, 0, 400,enemy, 0x000 //NPC_DARKGRANDCROSS#闇グランドクロス -362,0xb4, , 0, 3, -1,all, 0x000 //HP_BASILICA#バジリカ -369,0xb3, , -1, 0,10000,all, 0x000 //PA_GOSPEL#ゴスペル -404,0xb6, , -1, 0, -1,all, 0x000 //PF_FOGWALL#フォグウォール -405,0xb7, , 0, 1,1000,enemy, 0x000 //PF_SPIDERWEB#スパイダーウェッブ + 70,0x83, , -1, 1,1000,all, 0x008 //PR_SANCTUARY + 79,0x84, , -1, 1,3000,enemy, 0x008 //PR_MAGNUS + 80,0x87,0x88, 0, 1,2000,enemy, 0x002 //WZ_FIREPILLAR + 83,0x86, , 0, 3,1000,enemy, 0x000 //WZ_METEOR + 85,0x86,,0,6:6:6:6:6:6:6:6:6:6:8,1250,enemy,0x008 //WZ_VERMILION + 87,0x8d, , -1, 0, -1,all, 0x000 //WZ_ICEWALL + 88,0x86, , 0, 2,1000,enemy, 0x000 //WZ_FROSTNOVA + 89,0x86, , 0, 5, 450,enemy, 0x008 //WZ_STORMGUST + 91,0x86, , 0, 2,1000,enemy, 0x080 //WZ_HEAVENDRIVE + 92,0x8e, , 2, 0, -1,enemy, 0x000 //WZ_QUAGMIRE +115,0x90, , 0, 1,1000,enemy, 0x006 //HT_SKIDTRAP +116,0x93, , 0, 1,1000,enemy, 0x006 //HT_LANDMINE +117,0x91, , 0, 1,1000,enemy, 0x006 //HT_ANKLESNARE +118,0x94, , 0, 1,1000,enemy, 0x006 //HT_SHOCKWAVE +119,0x95, , 0, 1,1000,enemy, 0x006 //HT_SANDMAN +120,0x96, , 0, 1,1000,enemy, 0x006 //HT_FLASHER +121,0x97, , 0, 1,1000,enemy, 0x006 //HT_FREEZINGTRAP +122,0x8f, , 0, 1,1000,enemy, 0x006 //HT_BLASTMINE +123,0x98, , 0, 1,1000,enemy, 0x006 //HT_CLAYMORETRAP +125,0x99, , 0, 1,1000,all, 0x002 //HT_TALKIEBOX +140,0x92, , -1, 0,1000,enemy, 0x000 //AS_VENOMDUST +220,0xb0, , 0, 0, -1,all, 0x002 //RG_GRAFFITI +229,0xb1, , 0, 1,1000,enemy, 0x006 //AM_DEMONSTRATION +254,0x86, , -1, 0, 400,enemy, 0x000 //CR_GRANDCROSS +285,0x9a, , 3, 0, -1,all, 0x000 //SA_VOLCANO +286,0x9b, , 3, 0, -1,all, 0x000 //SA_DELUGE +287,0x9c, , 3, 0, -1,all, 0x000 //SA_VIOLENTGALE +288,0x9d,,3:3:4:4:5,0, -1,all, 0x000 //SA_LANDPROTECTOR +306,0x9e, , 4, 0,6000,all, 0x200 //BD_LULLABY +307,0x9f, , 4, 0, -1,enemy, 0x210 //BD_RICHMANKIM +308,0xa0, , 4, 0, -1,enemy, 0x200 //BD_ETERNALCHAOS +309,0xa1, , 4, 0, -1,party, 0x200 //BD_DRUMBATTLEFIELD +310,0xa2, , 4, 0, -1,party, 0x200 //BD_RINGNIBELUNGEN +311,0xa3, , 4, 0, -1,all, 0x200 //BD_ROKISWEIL +312,0xa4, , 4, 0, -1,party, 0x220 //BD_INTOABYSS +313,0xa5, , 4, 0, -1,party, 0x200 //BD_SIEGFRIED +317,0xa6, , 3, 0,3000,enemy, 0x400 //BA_DISSONANCE +319,0xa7, , 3, 0, -1,all, 0x420 //BA_WHISTLE +320,0xa8, , 3, 0, -1,all, 0x420 //BA_ASSASSINCROSS +321,0xa9, , 3, 0, -1,all, 0x420 //BA_POEMBRAGI +322,0xaa, , 3, 0,6000,all, 0xC20 //BA_APPLEIDUN +325,0xab, , 3, 0,3000,enemy, 0x100 //DC_UGLYDANCE +327,0xac, , 3, 0, -1,all, 0x120 //DC_HUMMING +328,0xad, , 3, 0, -1,enemy, 0x100 //DC_DONTFORGETME +329,0xae, , 3, 0, -1,all, 0x120 //DC_FORTUNEKISS +330,0xaf, , 3, 0, -1,party, 0x100 //DC_SERVICEFORYOU +336,0xb2, , 0,-1, -1,noone, 0x000 //WE_CALLPARTNER +339,0x86, , -1, 0, 400,enemy, 0x000 //NPC_DARKGRANDCROSS +362,0xb4, , 0, 3, -1,all, 0x000 //HP_BASILICA +369,0xb3, , -1, 0,10000,all, 0x000 //PA_GOSPEL +404,0xb6, , -1, 0, -1,all, 0x000 //PF_FOGWALL +405,0xb7, , 0, 1,1000,enemy, 0x000 //PF_SPIDERWEB 409,0xb2, , 0,-1, -1,noone, 0x000 //WE_CALLBABY 410,0xb2, , 0,-1, -1,noone, 0x000 //WE_CALLPARENT 428,0x86, , 0, 1, 500,enemy, 0x000 //SG_SUN_WARM @@ -88,10 +88,10 @@ 430,0x86, , 0, 1, 500,enemy, 0x000 //SG_STAR_WARM 484,0xb8, , 2, 0,1000,enemy, 0x808 //HW_GRAVITATION 488,0xb9, , 3, 0, -1,all, 0x200 //CG_HERMODE -527,0xbc, , -1, 1,2000,enemy, 0x000 //NJ_TATAMIGAESHI#???_??? -535,0xbd, , 2, 0,2000,enemy, 0x000 //NJ_KAENSIN#???(???) -536,0x86, , 2, 0, 300,enemy, 0x000 //NJ_BAKUENRYU#???(???) -538,0xbb,,1:1:1:2:2:2:3:3:3:4,0, -1,all,0x010 //NJ_SUITON#水遁 -516,0xbc, , 0, 3, 100,enemy, 0x000 //GS_DESPERADO#デスペラード -521,0xc2, , 0, 1,1000,enemy, 0x006 //GS_GROUNDDRIFT#グラウンドドリフト - +527,0xbc, , -1, 1,2000,enemy, 0x000 //NJ_TATAMIGAESHI +535,0xbd, , 2, 0,2000,enemy, 0x000 //NJ_KAENSIN +536,0x86, , 2, 0, 300,enemy, 0x000 //NJ_BAKUENRYU +541,0x86,,0,2:2:3:3:4,1000,enemy,0x000 //NJ_RAIGEKISAI +538,0xbb,,1:1:1:2:2:2:3:3:3:4,0,-1,all,0x010 //NJ_SUITON +516,0xbc, , 0, 3, 100,enemy, 0x000 //GS_DESPERADO +521,0xc2, , 0, 1,1000,enemy, 0x006 //GS_GROUNDDRIFT diff --git a/src/map/skill.c b/src/map/skill.c index abab719c8..9d45bfd9f 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -3051,7 +3051,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int case NJ_HYOUSENSOU: case NJ_HYOUSYOURAKU: case NJ_HUUJIN: - case NJ_RAIGEKISAI: skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); break; case NJ_KAMAITACHI: @@ -3072,7 +3071,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int //case NJ_HYOUSENSOU: //case NJ_HYOUSYOURAKU: //case NJ_HUUJIN: - //case NJ_RAIGEKISAI: //case NJ_KAMAITACHI: case NJ_ISSEN: skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); @@ -3172,14 +3170,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case NPC_SMOKING: //Since it is a self skill, this one ends here rather than in damage_id. [Skotlex] return skill_castend_damage_id (src, bl, skillid, skilllv, tick, flag); //These are actually ground placed. - case CR_GRANDCROSS: - case NPC_GRANDDARKNESS: - //Until they're at right position - gs_ground- [Vicious] - case GS_DESPERADO: - case NJ_KAENSIN: /*轣ォ轤朱劵*/ - case NJ_HYOUSYOURAKU: - case NJ_RAIGEKISAI: - return skill_castend_pos2(src,src->x,src->y,skillid,skilllv,tick,0); + case NJ_BAKUENRYU: //Doesn't works on the default because it is enemy-targetted. + return skill_castend_pos2(src,bl->x,bl->y,skillid,skilllv,tick,0); + default: + if (src == bl && skill_get_unit_flag(skillid)) //Skill is actually ground placed. + return skill_castend_pos2(src,bl->x,bl->y,skillid,skilllv,tick,0); } if (skillid > 0) @@ -4117,29 +4112,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in clif_skill_fail(sd,skillid,0,0); break; - /* 蟇セ蝨ー繧ケ繧ュ繝ォ */ - case BD_LULLABY: /* 蟄仙ョ亥売 */ - case BD_RICHMANKIM: /* 繝九Κ繝ォ繝峨ョ螳エ */ - case BD_ETERNALCHAOS: /* 豌ク驕縺ョ豺キ豐 */ - case BD_DRUMBATTLEFIELD: /* 謌ヲ螟ェ鮠薙ョ髻ソ縺 */ - case BD_RINGNIBELUNGEN: /* 繝九シ繝吶Ν繝ウ繧ー縺ョ謖霈ェ */ - case BD_ROKISWEIL: /* 繝ュ繧ュ縺ョ蜿ォ縺ウ */ - case BD_INTOABYSS: /* 豺ア豺オ縺ョ荳ュ縺ォ */ - case BD_SIEGFRIED: /* 荳肴ュサ霄ォ縺ョ繧ク繝シ繧ッ繝輔Μ繝シ繝 */ - case BA_DISSONANCE: /* 荳榊鵠蜥碁浹 */ - case BA_POEMBRAGI: /* 繝悶Λ繧ョ縺ョ隧ゥ */ - case BA_WHISTLE: /* 蜿」隨 */ - case BA_ASSASSINCROSS: /* 螟暮區縺ョ繧「繧オ繧キ繝ウ繧ッ繝ュ繧ケ */ - case BA_APPLEIDUN: /* 繧、繝峨ぇ繝ウ縺ョ譫玲ェ */ - case DC_UGLYDANCE: /* 閾ェ蛻蜍晄焔縺ェ繝繝ウ繧ケ */ - case DC_HUMMING: /* 繝上Α繝ウ繧ー */ - case DC_DONTFORGETME: /* 遘√r蠢倥l縺ェ縺縺ァ窶ヲ */ - case DC_FORTUNEKISS: /* 蟷ク驕九ョ繧ュ繧ケ */ - case DC_SERVICEFORYOU: /* 繧オ繝シ繝薙せ繝輔か繝シ繝ヲ繝シ */ - clif_skill_nodamage(src,bl,skillid,skilllv,1); - skill_unitsetting(src,skillid,skilllv,src->x,src->y,0); - break; - case HP_BASILICA: /* 繝舌ず繝ェ繧ォ */ case CG_HERMODE: // Wand of Hermode { @@ -5471,12 +5443,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in } break; - case NJ_BAKUENRYU: /* ??? */ - clif_skill_nodamage(src,bl,skillid,skilllv,1); - skill_unitsetting(src,skillid,skilllv,bl->x,bl->y,0); - flag|=1; - break; - default: ShowWarning("skill_castend_nodamage_id: Unknown skill used:%d\n",skillid); map_freeblock_unlock(); @@ -5790,15 +5756,21 @@ int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid, int s sc = status_get_sc(src); //Needed for Magic Power checks. if (sc && !sc->count) sc = NULL; //Unneeded. - - if(skillid != WZ_METEOR && - skillid != MO_BODYRELOCATION && - skillid != CR_CULTIVATION) - clif_skill_poseffect(src,skillid,skilllv,x,y,tick); + switch (skillid) { //Skill effect. + case WZ_METEOR: + case MO_BODYRELOCATION: + case CR_CULTIVATION: + break; //Effect is displayed on respective switch case. + default: + if(skill_get_inf(skillid)&INF_SELF_SKILL) + clif_skill_nodamage(src,src,skillid,skilllv,1); + else + clif_skill_poseffect(src,skillid,skilllv,x,y,tick); + } switch(skillid) { - case PR_BENEDICTIO: /* 閨紋ス馴剄遖 */ + case PR_BENEDICTIO: skill_area_temp[1] = src->id; i = skill_get_splash(skillid, skilllv); map_foreachinarea(skill_area_sub, @@ -5819,7 +5791,7 @@ int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid, int s skill_castend_nodamage_id); break; - case HT_DETECTING: /* 繝繧」繝繧ッ繝繧」繝ウ繧ー */ + case HT_DETECTING: i = skill_get_splash(skillid, skilllv); map_foreachinarea( status_change_timer_sub, src->m, x-i, y-i, x+i,y+i,BL_CHAR, @@ -5829,39 +5801,66 @@ int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid, int s src->m, x-i, y-i, x+i,y+i,BL_SKILL); break; - case MG_SAFETYWALL: /* 繧サ繧、繝輔ユ繧」繧ヲ繧ゥ繝シ繝ォ */ - case MG_FIREWALL: /* 繝輔ぃ繧、繝、繝シ繧ヲ繧ゥ繝シ繝ォ */ - case MG_THUNDERSTORM: /* 繧オ繝ウ繝繝シ繧ケ繝医シ繝 */ - case AL_PNEUMA: /* 繝九Η繝シ繝 */ - case WZ_ICEWALL: /* 繧「繧、繧ケ繧ヲ繧ゥ繝シ繝ォ */ - case WZ_FIREPILLAR: /* 繝輔ぃ繧、繧「繝斐Λ繝シ */ - case WZ_QUAGMIRE: /* 繧ッ繧。繧ー繝槭う繧「 */ - case WZ_VERMILION: /* 繝ュ繝シ繝峨が繝悶Χ繧。繝シ繝溘Μ繧ェ繝ウ */ - case WZ_STORMGUST: /* 繧ケ繝医シ繝繧ャ繧ケ繝 */ - case WZ_HEAVENDRIVE: /* 繝倥Χ繝ウ繧コ繝峨Λ繧、繝 */ - case PR_SANCTUARY: /* 繧オ繝ウ繧ッ繝√Η繧「繝ェ */ - case PR_MAGNUS: /* 繝槭げ繝後せ繧ィ繧ッ繧ス繧キ繧コ繝 */ - case CR_GRANDCROSS: /* 繧ー繝ゥ繝ウ繝峨け繝ュ繧ケ */ - case NPC_GRANDDARKNESS: /*髣繧ー繝ゥ繝ウ繝峨け繝ュ繧ケ*/ - case HT_SKIDTRAP: /* 繧ケ繧ュ繝繝峨ヨ繝ゥ繝繝 */ - case HT_LANDMINE: /* 繝ゥ繝ウ繝峨槭う繝ウ */ - case HT_ANKLESNARE: /* 繧「繝ウ繧ッ繝ォ繧ケ繝阪い */ - case HT_SHOCKWAVE: /* 繧キ繝ァ繝繧ッ繧ヲ繧ァ繝シ繝悶ヨ繝ゥ繝繝 */ - case HT_SANDMAN: /* 繧オ繝ウ繝峨槭Φ */ - case HT_FLASHER: /* 繝輔Λ繝繧キ繝」繝シ */ - case HT_FREEZINGTRAP: /* 繝輔Μ繝シ繧ク繝ウ繧ー繝医Λ繝繝 */ - case HT_BLASTMINE: /* 繝悶Λ繧ケ繝医槭う繝ウ */ - case HT_CLAYMORETRAP: /* 繧ッ繝ャ繧、繝「繧「繝シ繝医Λ繝繝 */ - case AS_VENOMDUST: /* 繝吶ヮ繝繝繧ケ繝 */ - case AM_DEMONSTRATION: /* 繝繝「繝ウ繧ケ繝医Ξ繝シ繧キ繝ァ繝ウ */ - case PF_FOGWALL: /* 繝輔か繧ー繧ヲ繧ゥ繝シ繝ォ */ - case PF_SPIDERWEB: /* 繧ケ繝代う繝繝シ繧ヲ繧ァ繝繝 */ - case HT_TALKIEBOX: /* 繝医シ繧ュ繝シ繝懊ャ繧ッ繧ケ */ + case MG_SAFETYWALL: + case MG_FIREWALL: + case MG_THUNDERSTORM: + case AL_PNEUMA: + case WZ_ICEWALL: + case WZ_FIREPILLAR: + case WZ_QUAGMIRE: + case WZ_VERMILION: + case WZ_STORMGUST: + case WZ_HEAVENDRIVE: + case PR_SANCTUARY: + case PR_MAGNUS: + case CR_GRANDCROSS: + case NPC_GRANDDARKNESS: + case HT_SKIDTRAP: + case HT_LANDMINE: + case HT_ANKLESNARE: + case HT_SHOCKWAVE: + case HT_SANDMAN: + case HT_FLASHER: + case HT_FREEZINGTRAP: + case HT_BLASTMINE: + case HT_CLAYMORETRAP: + case AS_VENOMDUST: + case AM_DEMONSTRATION: + case PF_FOGWALL: + case PF_SPIDERWEB: + case HT_TALKIEBOX: case WE_CALLPARTNER: case WE_CALLPARENT: case WE_CALLBABY: case AC_SHOWER: //Ground-placed skill implementation. + case SA_VOLCANO: + case SA_DELUGE: + case SA_VIOLENTGALE: + case SA_LANDPROTECTOR: + case BD_LULLABY: + case BD_RICHMANKIM: + case BD_ETERNALCHAOS: + case BD_DRUMBATTLEFIELD: + case BD_RINGNIBELUNGEN: + case BD_ROKISWEIL: + case BD_INTOABYSS: + case BD_SIEGFRIED: + case BA_DISSONANCE: + case BA_POEMBRAGI: + case BA_WHISTLE: + case BA_ASSASSINCROSS: + case BA_APPLEIDUN: + case DC_UGLYDANCE: + case DC_HUMMING: + case DC_DONTFORGETME: + case DC_FORTUNEKISS: + case DC_SERVICEFORYOU: case GS_DESPERADO: + case NJ_SUITON: + case NJ_BAKUENRYU: + case NJ_KAENSIN: + case NJ_HYOUSYOURAKU: + case NJ_RAIGEKISAI: flag|=1;//Set flag to 1 to prevent deleting ammo (it will be deleted on group-delete). case GS_GROUNDDRIFT: //Ammo should be deleted right away. skill_unitsetting(src,skillid,skilllv,x,y,0); @@ -5876,14 +5875,6 @@ int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid, int s i = skill_get_splash(skillid, skilllv); map_foreachinarea(skill_graffitiremover,src->m,x-i,y-i,x+i,y+i,BL_SKILL); break; - case SA_VOLCANO: /* 繝懊Ν繧ア繝シ繝 */ - case SA_DELUGE: /* 繝繝ェ繝・繝シ繧ク */ - case SA_VIOLENTGALE: /* 繝舌う繧ェ繝ャ繝ウ繝医ご繧、繝ォ */ - case SA_LANDPROTECTOR: /* 繝ゥ繝ウ繝峨励Ο繝繧ッ繧ソ繝シ */ - case NJ_SUITON: - skill_unitsetting(src,skillid,skilllv,x,y,0); - flag|=1; - break; case WZ_METEOR: //繝。繝繧ェ繧ケ繝医シ繝 { @@ -6041,20 +6032,6 @@ int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid, int s } } break; - - //Until they're at right position - gs_unit- [Vicious] - case NJ_KAENSIN: - case NJ_BAKUENRYU: - case NJ_HYOUSYOURAKU: - skill_unitsetting(src,skillid,skilllv,x,y,0); - flag|=1; - break; - - case NJ_RAIGEKISAI: - map_foreachinrange(skill_attack_area, src, - skill_get_splash(skillid, skilllv), BL_CHAR, - BF_MAGIC, src, src, skillid, skilllv, tick, flag, BCT_ENEMY); - break; } if (sc && sc->data[SC_MAGICPOWER].timer != -1) -- cgit v1.2.3-70-g09d2