summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcelest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec>2005-03-01 13:36:04 +0000
committercelest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec>2005-03-01 13:36:04 +0000
commit2d6a0efbee3592cbee5df858da70f6652fda086e (patch)
tree8f1076df797e48b063b131ad28fb6b47b3fa232d
parentdf34f4498984a4d2d37faebe8809fddcd6f8e475 (diff)
downloadhercules-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.txt2
-rw-r--r--src/map/skill.c39
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) {