summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt7
-rw-r--r--db/Changelog.txt1
-rw-r--r--db/skill_cast_db.txt30
-rw-r--r--src/map/skill.c42
4 files changed, 44 insertions, 36 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 91225d32e..4f81b16c9 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -4,6 +4,13 @@ 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/05/15
+ * KA* skills can now be casted on other Soul Linkers as well without the
+ Spirit requirement. [Skotlex]
+ * Soul Drain will now show the SP drained regardless of drain display
+ settings. [Skotlex]
+ * 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) [Skotlex]
* Fixed Option_Wedding in const.txt (0x1000 won't work, it has to be 4096)
[Skotlex]
* Fixed the nocast flag 2 (not usable in pvp) returning true in pk-mode
diff --git a/db/Changelog.txt b/db/Changelog.txt
index e217939c1..3b7cdd2f3 100644
--- a/db/Changelog.txt
+++ b/db/Changelog.txt
@@ -27,6 +27,7 @@
=========================
05/15
+ * Spirit skills now have 500ms delay. [Skotlex]
* Changed speed of G_Khalitzburg (very fast now) [Playtester]
* Improved some skills of Amon Ra [Playtester]
05/14
diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt
index 5bfef5c23..06b00bc57 100644
--- a/db/skill_cast_db.txt
+++ b/db/skill_cast_db.txt
@@ -707,39 +707,39 @@
//===== Soul Linker ========================
//-- SL_ALCHEMIST
-445,1000,0,0,150000:200000:250000:300000:350000,0
+445,1000,500,0,150000:200000:250000:300000:350000,0
//-- AM_BERSERKPITCHER - Copy of AM_POTIONPITCHER for now
446,0,500,0,0,0
//-- SL_MONK
-447,1000,0,0,150000:200000:250000:300000:350000,0
+447,1000,500,0,150000:200000:250000:300000:350000,0
//-- SL_STAR
-448,1000,0,0,150000:200000:250000:300000:350000,0
+448,1000,500,0,150000:200000:250000:300000:350000,0
//-- SL_SAGE
-449,1000,0,0,150000:200000:250000:300000:350000,0
+449,1000,500,0,150000:200000:250000:300000:350000,0
//-- SL_CRUSADER
-450,1000,0,0,150000:200000:250000:300000:350000,0
+450,1000,500,0,150000:200000:250000:300000:350000,0
//-- SL_SUPERNOVICE
-451,1000,0,0,150000:200000:250000:300000:350000,0
+451,1000,500,0,150000:200000:250000:300000:350000,0
//-- SL_KNIGHT
-452,1000,0,0,150000:200000:250000:300000:350000,0
+452,1000,500,0,150000:200000:250000:300000:350000,0
//-- SL_WIZARD
-453,1000,0,0,150000:200000:250000:300000:350000,0
+453,1000,500,0,150000:200000:250000:300000:350000,0
//-- SL_PRIEST
-454,1000,0,0,150000:200000:250000:300000:350000,0
+454,1000,500,0,150000:200000:250000:300000:350000,0
//-- SL_BARDDANCER
-455,1000,0,0,150000:200000:250000:300000:350000,0
+455,1000,500,0,150000:200000:250000:300000:350000,0
//-- SL_ROGUE
-456,1000,0,0,150000:200000:250000:300000:350000,0
+456,1000,500,0,150000:200000:250000:300000:350000,0
//-- SL_ASSASSIN
-457,1000,0,0,150000:200000:250000:300000:350000,0
+457,1000,500,0,150000:200000:250000:300000:350000,0
//-- SL_BLACKSMITH
-458,1000,0,0,150000:200000:250000:300000:350000,0
+458,1000,500,0,150000:200000:250000:300000:350000,0
//-- BS_ADRENALINE2
459,0,0,0,150000,0
//-- SL_HUNTER
-460,1000,0,0,150000:200000:250000:300000:350000,0
+460,1000,500,0,150000:200000:250000:300000:350000,0
//-- SL_SOULLINKER
-461,1000,0,0,150000:200000:250000:300000:350000,0
+461,1000,500,0,150000:200000:250000:300000:350000,0
//-- SL_KAIZEL
462,4500:4000:3500:3000:2500:2000:1500,0,0,1800000,2000
//-- SL_KAAHI
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;
}