summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-05-15 19:30:35 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-05-15 19:30:35 +0000
commit6cc1d4e8c5bbc053e74f2663c210d0232c10378e (patch)
tree8495d3069cc32e7082940f384b180c86ca5fd5de /src
parent9c4cd8538cd3163d1deb5d1f3f569f0799fb51e1 (diff)
downloadhercules-6cc1d4e8c5bbc053e74f2663c210d0232c10378e.tar.gz
hercules-6cc1d4e8c5bbc053e74f2663c210d0232c10378e.tar.bz2
hercules-6cc1d4e8c5bbc053e74f2663c210d0232c10378e.tar.xz
hercules-6cc1d4e8c5bbc053e74f2663c210d0232c10378e.zip
- Soul Drain will now show the SP drained regardless of drain display settings.
- SC_COMBO state will now end in skill_attack rather than skill_check_condition (as it is required there to apply damage bonuses based on combo-casted skills) - Spirit skills now have 500ms delay. - KA skills can now be casted on other Soul Linkers as well without the Spirit requirement. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6607 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r--src/map/skill.c42
1 files changed, 21 insertions, 21 deletions
diff --git a/src/map/skill.c b/src/map/skill.c
index 1437b2a13..02194d081 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -1461,12 +1461,11 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
if (pc_issit(sd)) pc_setstand(sd); //Character stuck in attacking animation while 'sitting' fix. [Skotlex]
clif_skill_nodamage(src,bl,HW_SOULDRAIN,rate,1);
sp = (status_get_lv(bl))*(95+15*rate)/100;
- if (sp > 0) {
- if(sd->status.sp + sp > sd->status.max_sp)
- sp = sd->status.max_sp - sd->status.sp;
+ if(sp > sd->status.max_sp - sd->status.sp)
+ sp = sd->status.max_sp - sd->status.sp;
+ if (sp) {
sd->status.sp += sp;
- if (sp > 0 && battle_config.show_hp_sp_gain)
- clif_heal(sd->fd,SP_SP,sp);
+ clif_heal(sd->fd,SP_SP,sp);
}
}
@@ -1814,6 +1813,22 @@ int skill_attack( int attack_type, struct block_list* src, struct block_list *ds
if(sd) {
//Sorry for removing the Japanese comments, but they were actually distracting
//from the actual code and I couldn't understand a thing anyway >.< [Skotlex]
+ if (sd->sc.data[SC_COMBO].timer!=-1)
+ { //End combo state after skill is invoked. [Skotlex]
+ switch (skillid) {
+ case TK_TURNKICK:
+ case TK_STORMKICK:
+ case TK_DOWNKICK:
+ case TK_COUNTER:
+ //set this skill as previous one.
+ sd->skillid_old = skillid;
+ sd->skilllv_old = skilllv;
+ if (pc_istop10fame(sd->char_id,MAPID_TAEKWON))
+ break; //Do not end combo state.
+ default:
+ status_change_end(src,SC_COMBO,-1);
+ }
+ }
switch(skillid)
{
case MO_TRIPLEATTACK:
@@ -4058,6 +4073,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
if (sd) {
if (!dstsd || !(
(sd->sc.data[SC_SPIRIT].timer != -1 && sd->sc.data[SC_SPIRIT].val2 == SL_SOULLINKER) ||
+ (dstsd->class_&MAPID_BASEMASK) == MAPID_SOUL_LINKER ||
dstsd->char_id == sd->char_id ||
dstsd->char_id == sd->status.partner_id ||
dstsd->char_id == sd->status.child
@@ -8214,22 +8230,6 @@ int skill_check_condition(struct map_session_data *sd,int skill, int lv, int typ
if(spiritball > 0) // Ÿ†‹…?Á”ï
pc_delspiritball(sd,spiritball,0);
- if (sd->sc.data[SC_COMBO].timer!=-1)
- { //End combo state after skill is invoked. [Skotlex]
- switch (skill) {
- case TK_TURNKICK:
- case TK_STORMKICK:
- case TK_DOWNKICK:
- case TK_COUNTER:
- //set this skill as previous one.
- sd->skillid_old = skill;
- sd->skilllv_old = lv;
- if (pc_istop10fame(sd->char_id,MAPID_TAEKWON))
- break; //Do not end combo state.
- default:
- status_change_end(&sd->bl,SC_COMBO,-1);
- }
- }
return 1;
}