diff options
author | celest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2005-03-01 13:36:04 +0000 |
---|---|---|
committer | celest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2005-03-01 13:36:04 +0000 |
commit | 2d6a0efbee3592cbee5df858da70f6652fda086e (patch) | |
tree | 8f1076df797e48b063b131ad28fb6b47b3fa232d | |
parent | df34f4498984a4d2d37faebe8809fddcd6f8e475 (diff) | |
download | hercules-2d6a0efbee3592cbee5df858da70f6652fda086e.tar.gz hercules-2d6a0efbee3592cbee5df858da70f6652fda086e.tar.bz2 hercules-2d6a0efbee3592cbee5df858da70f6652fda086e.tar.xz hercules-2d6a0efbee3592cbee5df858da70f6652fda086e.zip |
* Effects from dancer/bard skills will stay for 20 seconds after leaving the skill area
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@1196 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r-- | Changelog-SVN.txt | 2 | ||||
-rw-r--r-- | src/map/skill.c | 39 |
2 files changed, 22 insertions, 19 deletions
diff --git a/Changelog-SVN.txt b/Changelog-SVN.txt index 4778e345c..b7497c9fd 100644 --- a/Changelog-SVN.txt +++ b/Changelog-SVN.txt @@ -1,6 +1,8 @@ Date Added 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 /mm /mapmove being useable by all players [celest] * Fixed some compile errors in mob_once_spawn [celest] diff --git a/src/map/skill.c b/src/map/skill.c index 58af63888..2c44cda7c 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -3279,31 +3279,29 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int break; case MO_ABSORBSPIRITS: // ?�D i=0; - if(sd && dstsd) { - if(sd == dstsd || map[sd->bl.m].flag.pvp || map[sd->bl.m].flag.gvg) { + if(dstsd) { + if((sd && sd == dstsd) || map[src->m].flag.pvp || map[src->m].flag.gvg) { if(dstsd->spiritball > 0) { clif_skill_nodamage(src,bl,skillid,skilllv,1); i = dstsd->spiritball * 7; pc_delspiritball(dstsd,dstsd->spiritball,0); if(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; - } + } } - }else if(sd && dstmd){ //?�ۂ������X�^?�̏ꍇ + } else if (dstmd){ //?�ۂ������X�^?�̏ꍇ //20%�̊m����?�ۂ�Lv*2��SP������B���������Ƃ��̓^?�Q�b�g(��?�D?)��????!! if(rand()%100<20){ i=2*mob_db[dstmd->class_].lv; mob_target(dstmd,src,0); } } - if(i){ - sd->status.sp += i; - clif_heal(sd->fd,SP_SP,i); - } - else - clif_skill_nodamage(src,bl,skillid,skilllv,0); + if(i && sd){ + sd->status.sp += i; + clif_heal(sd->fd,SP_SP,i); + } else clif_skill_nodamage(src,bl,skillid,skilllv,0); break; case AC_MAKINGARROW: /* ��쐬 */ @@ -5688,11 +5686,17 @@ int skill_unit_onout(struct skill_unit *src,struct block_list *bl,unsigned int t case 0x9e: /* �q��S */ case 0x9f: /* �j�����h�̉� */ case 0xa0: /* �i���̍��� */ - case 0xa1: /* ?���ۂ̋��� */ - case 0xa2: /* �j?�x�����O�̎w�� */ + case 0xa1: /* �푾�ۂ̋��� */ + case 0xa2: /* �j�[�x�����O�̎w�� */ case 0xa3: /* ���L�̋��� */ case 0xa4: /* �[���̒��� */ - case 0xa5: /* �s���g�̃W?�N�t��?�h */ + case 0xa5: /* �s���g�̃W�[�N�t���[�h */ + case 0xad: /* ����Y��Ȃ��Łc */ + if (sc_data[type].timer!=-1 && sc_data[type].val4==(int)src) { + status_change_end(bl,type,-1); + } + break; + case 0xa6: /* �s���a�� */ case 0xa7: /* ���J */ case 0xa8: /* �[�z�̃A�T�V���N���X */ @@ -5700,13 +5704,10 @@ int skill_unit_onout(struct skill_unit *src,struct block_list *bl,unsigned int t case 0xaa: /* �C�h�D���̗ь� */ case 0xab: /* ��������ȃ_���X */ case 0xac: /* �n�~���O */ - case 0xad: /* ����Y��Ȃ��Łc */ case 0xae: /* �K�^�̃L�X */ case 0xaf: /* �T?�r�X�t�H?��? */ - if (sc_data[type].timer!=-1 && sc_data[type].val4==(int)src) { - status_change_end(bl,type,-1); - } - break; + status_change_start(bl,SkillStatusChangeTable[sg->skill_id],sg->skill_lv,0,0,0,20000,0 ); + break; case 0xb4: // Basilica if (sc_data[type].timer!=-1 && sc_data[type].val4==(int)sg) { |