瀏覽代碼

- 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://svn.code.sf.net/p/rathena/svn/trunk@6607 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex 19 年之前
父節點
當前提交
96c03caf7e
共有 4 個文件被更改,包括 44 次插入36 次删除
  1. 7 0
      Changelog-Trunk.txt
  2. 1 0
      db/Changelog.txt
  3. 15 15
      db/skill_cast_db.txt
  4. 21 21
      src/map/skill.c

+ 7 - 0
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

+ 1 - 0
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

+ 15 - 15
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

+ 21 - 21
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;
 }