* Effects from dancer/bard skills will stay for 20 seconds after leaving the skill area

git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@1196 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
celest 2005-03-01 13:36:04 +00:00
parent 79084575ce
commit 0744166f19
2 changed files with 22 additions and 19 deletions

View File

@ -1,6 +1,8 @@
Date Added Date Added
03/01 03/01
* Effects from dancer/bard skills will stay for 20 seconds after leaving the
skill area [celest]
* Fixed /resetstate /resetskill being unuseable at all [celest] * Fixed /resetstate /resetskill being unuseable at all [celest]
* Fixed /mm /mapmove being useable by all players [celest] * Fixed /mm /mapmove being useable by all players [celest]
* Fixed some compile errors in mob_once_spawn [celest] * Fixed some compile errors in mob_once_spawn [celest]

View File

@ -3279,31 +3279,29 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int
break; break;
case MO_ABSORBSPIRITS: // ?奪 case MO_ABSORBSPIRITS: // ?奪
i=0; i=0;
if(sd && dstsd) { if(dstsd) {
if(sd == dstsd || map[sd->bl.m].flag.pvp || map[sd->bl.m].flag.gvg) { if((sd && sd == dstsd) || map[src->m].flag.pvp || map[src->m].flag.gvg) {
if(dstsd->spiritball > 0) { if(dstsd->spiritball > 0) {
clif_skill_nodamage(src,bl,skillid,skilllv,1); clif_skill_nodamage(src,bl,skillid,skilllv,1);
i = dstsd->spiritball * 7; i = dstsd->spiritball * 7;
pc_delspiritball(dstsd,dstsd->spiritball,0); pc_delspiritball(dstsd,dstsd->spiritball,0);
if(i > 0x7FFF) if(i > 0x7FFF)
i = 0x7FFF; i = 0x7FFF;
if(sd->status.sp + i > sd->status.max_sp) if(sd && sd->status.sp + i > sd->status.max_sp)
i = sd->status.max_sp - sd->status.sp; i = sd->status.max_sp - sd->status.sp;
} }
} }
}else if(sd && dstmd){ //?象がモンスタ?の場合 } else if (dstmd){ //?象がモンスタ?の場合
//20%の確率で?象のLv*2のSPを回復する。成功したときはタ?ゲット(σ?Д?)σ????!! //20%の確率で?象のLv*2のSPを回復する。成功したときはタ?ゲット(σ?Д?)σ????!!
if(rand()%100<20){ if(rand()%100<20){
i=2*mob_db[dstmd->class_].lv; i=2*mob_db[dstmd->class_].lv;
mob_target(dstmd,src,0); mob_target(dstmd,src,0);
} }
} }
if(i){ if(i && sd){
sd->status.sp += i; sd->status.sp += i;
clif_heal(sd->fd,SP_SP,i); clif_heal(sd->fd,SP_SP,i);
} } else clif_skill_nodamage(src,bl,skillid,skilllv,0);
else
clif_skill_nodamage(src,bl,skillid,skilllv,0);
break; break;
case AC_MAKINGARROW: /* 矢作成 */ case AC_MAKINGARROW: /* 矢作成 */
@ -5688,11 +5686,17 @@ int skill_unit_onout(struct skill_unit *src,struct block_list *bl,unsigned int t
case 0x9e: /* 子守唄 */ case 0x9e: /* 子守唄 */
case 0x9f: /* ニヨルドの宴 */ case 0x9f: /* ニヨルドの宴 */
case 0xa0: /* 永遠の混沌 */ case 0xa0: /* 永遠の混沌 */
case 0xa1: /* ?太鼓の響き */ case 0xa1: /* 太鼓の響き */
case 0xa2: /* ニ?ベルングの指輪 */ case 0xa2: /* ニベルングの指輪 */
case 0xa3: /* ロキの叫び */ case 0xa3: /* ロキの叫び */
case 0xa4: /* 深淵の中に */ case 0xa4: /* 深淵の中に */
case 0xa5: /* 不死身のジ?クフリ?ド */ case 0xa5: /* 不死身のジークフリード */
case 0xad: /* 私を忘れないで… */
if (sc_data[type].timer!=-1 && sc_data[type].val4==(int)src) {
status_change_end(bl,type,-1);
}
break;
case 0xa6: /* 不協和音 */ case 0xa6: /* 不協和音 */
case 0xa7: /* 口笛 */ case 0xa7: /* 口笛 */
case 0xa8: /* 夕陽のアサシンクロス */ case 0xa8: /* 夕陽のアサシンクロス */
@ -5700,12 +5704,9 @@ int skill_unit_onout(struct skill_unit *src,struct block_list *bl,unsigned int t
case 0xaa: /* イドゥンの林檎 */ case 0xaa: /* イドゥンの林檎 */
case 0xab: /* 自分勝手なダンス */ case 0xab: /* 自分勝手なダンス */
case 0xac: /* ハミング */ case 0xac: /* ハミング */
case 0xad: /* 私を忘れないで… */
case 0xae: /* 幸運のキス */ case 0xae: /* 幸運のキス */
case 0xaf: /* サ?ビスフォ?ユ? */ case 0xaf: /* サ?ビスフォ?ユ? */
if (sc_data[type].timer!=-1 && sc_data[type].val4==(int)src) { status_change_start(bl,SkillStatusChangeTable[sg->skill_id],sg->skill_lv,0,0,0,20000,0 );
status_change_end(bl,type,-1);
}
break; break;
case 0xb4: // Basilica case 0xb4: // Basilica