Sfoglia il codice sorgente

- Added -DMAPREGSQL to Makefile, commented out by default for now.
- Fixed AL_WARP displaying "Unknown Area" selections when you don't have all memo points used up.
- Fixed alive_count not being reset on skill unitsetting, which leads to some groups not being cleared once all their units expire.
- Optimized Kahii, will now only show the amount of HP healed. Moved to skill_counter additional effect so it may trigger even on miss.
- SKA no longer blocks skills.
- Modified the AM_TWILIGHT* skills to require 200 medicine bowls.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6435 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex 19 anni fa
parent
commit
41aa178964
6 ha cambiato i file con 40 aggiunte e 20 eliminazioni
  1. 7 0
      Changelog-Trunk.txt
  2. 1 0
      Makefile
  3. 1 0
      db/Changelog.txt
  4. 3 3
      db/skill_require_db.txt
  5. 23 13
      src/map/skill.c
  6. 5 4
      src/map/status.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/01
+	* Fixed AL_WARP displaying "Unknown Area" selections when you don't have
+	  all memo points used up. [Skotlex]
+	* Fixed alive_count not being reset on skill unitsetting, which leads to
+	  some groups not being cleared once all their units expire. [Skotlex]
+	* Optimized Kaahi/Kahai, will now only show the amount of HP healed. Moved
+	  to skill_counter additional effect so it may trigger even on miss. [Skotlex]
+	* SKA no longer blocks skills. [Skotlex]
 	* Optimized fake npc system. Added npc_checknear back to npc_buysellsel. [Lance]
 
 2006/04/30

+ 1 - 0
Makefile

@@ -23,6 +23,7 @@ OPT += -ffast-math
 # OPT += -fstack-protector
 # OPT += -fomit-frame-pointer
 OPT += -Wall -Wno-sign-compare
+# OPT += -DMAPREGSQL
 # OPT += -DCHRIF_OLDINFO
 # OPT += -DPCRE_SUPPORT
 # OPT += -DGCOLLECT

+ 1 - 0
db/Changelog.txt

@@ -27,6 +27,7 @@
 
 =========================
 05/01
+	* Modified the AM_TWILIGHT* skills to require 200 medicine bowls. [Skotlex]
 	* Added effect of Speed Potion [Playtester]
 	* Removed Kraben Card drop from G_Kraben [Playtester]
 	* Fixed a typo in the Armeyer Dinze card thanks to theultramage [Playtester]

+ 3 - 3
db/skill_require_db.txt

@@ -385,9 +385,9 @@
 493,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//TK_MISSION##
 494,0,0,460:360:260:160:60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SL_HIGH#ˆêŽŸ?ãˆÊ?E‹Æ‚Ì?°#
 495,0,0,100,0,0,0,2,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//KN_ONEHAND#ƒ?ƒ“ƒnƒ“ƒhƒNƒBƒNƒ“#
-496,0,0,200,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//AM_TWILIGHT1#ƒgƒ?ƒCƒ‰ƒCƒgƒtƒ@?[ƒ}ƒV?[1#
-497,0,0,200,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//AM_TWILIGHT2#ƒgƒ?ƒCƒ‰ƒCƒgƒtƒ@?[ƒ}ƒV?[2#
-498,0,0,200,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0//AM_TWILIGHT3#ƒgƒ?ƒCƒ‰ƒCƒgƒtƒ@?[ƒ}ƒV?[3#
+496,0,0,200,0,0,0,99,0,0,none,7134,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//AM_TWILIGHT1#ƒgƒ?ƒCƒ‰ƒCƒgƒtƒ@?[ƒ}ƒV?[1#
+497,0,0,200,0,0,0,99,0,0,none,7134,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//AM_TWILIGHT2#ƒgƒ?ƒCƒ‰ƒCƒgƒtƒ@?[ƒ}ƒV?[2#
+498,0,0,200,0,0,0,99,0,0,none,7134,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0//AM_TWILIGHT3#ƒgƒ?ƒCƒ‰ƒCƒgƒtƒ@?[ƒ}ƒV?[3#
 499,0,0,8,0,0,0,11,1,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//HT_POWER#ƒr?[ƒXƒgƒXƒgƒŒƒCƒsƒ“ƒO#
 //temp plugs
 500,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_GLITTERING

+ 23 - 13
src/map/skill.c

@@ -1016,14 +1016,6 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 				sc_start4(bl,SC_POISON,2*tsc->data[SC_SPLASHER].val1+10,
 					tsc->data[SC_SPLASHER].val1,0,0,0,
 					skill_get_time2(tsc->data[SC_SPLASHER].val2,tsc->data[SC_SPLASHER].val1));
-			if(tsc->data[SC_KAAHI].timer != -1) {
-				if (dstsd && dstsd->status.sp < 5*tsc->data[SC_KAAHI].val1)
-					; //Not enough SP to cast
-				else {
-					battle_heal(bl, bl, 200*tsc->data[SC_KAAHI].val1, -5*tsc->data[SC_KAAHI].val1, 1);
-					clif_skill_nodamage(NULL,bl,AL_HEAL,200*tsc->data[SC_KAAHI].val1,1);
-				}
-			}
 		}
 	}
 	break;
@@ -1410,7 +1402,8 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
 	int rate;
 	struct map_session_data *sd=NULL;
 	struct map_session_data *dstsd=NULL;
-
+	struct status_change *tsc;
+	
 	nullpo_retr(0, src);
 	nullpo_retr(0, bl);
 
@@ -1422,11 +1415,28 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
 	}
 	if(skillid > 0 && skilllv <= 0) return 0;	// don't forget auto attacks! - celest
 
+	tsc = status_get_sc(bl);
+	if (tsc && !tsc->count)
+		tsc = NULL;
+	
 	BL_CAST(BL_PC, src, sd);
 	BL_CAST(BL_PC, bl, dstsd);
 
 	switch(skillid){
-	case 0: //Normal Attack - Nothing here yet.
+	case 0: //Normal Attack
+		if(tsc && tsc->data[SC_KAAHI].timer != -1) {
+			if (dstsd && dstsd->status.sp < tsc->data[SC_KAAHI].val3)
+				; //Not enough SP to cast
+			else {
+				int hp = status_get_max_hp(bl) - status_get_hp(bl);
+				if (hp > tsc->data[SC_KAAHI].val2)
+					hp = tsc->data[SC_KAAHI].val2;
+				if (hp) {
+					battle_heal(bl, bl, hp, -tsc->data[SC_KAAHI].val3, 1);
+					clif_skill_nodamage(NULL,bl,AL_HEAL,hp,1);
+				}
+			}
+		}
 		break;
 	case MO_EXTREMITYFIST:			/* ˆ¢?C—…”e™€Œ? */
 		//ˆ¢?C—…‚ðŽg‚¤‚Æ5•ªŠÔŽ©‘R‰ñ•œ‚µ‚È‚¢‚悤‚ɂȂé
@@ -6027,9 +6037,9 @@ int skill_castend_pos2( struct block_list *src, int x,int y,int skillid,int skil
 	case AL_WARP:				/* ƒ??ƒvƒ|?ƒ^ƒ‹ */
 		if(sd) {
 			clif_skill_warppoint(sd,skillid,skilllv,mapindex_id2name(sd->status.save_point.map),
-				(skilllv>1)?mapindex_id2name(sd->status.memo_point[0].map):"",
-				(skilllv>2)?mapindex_id2name(sd->status.memo_point[1].map):"",
-				(skilllv>3)?mapindex_id2name(sd->status.memo_point[2].map):"");
+				(skilllv>1 && sd->status.memo_point[0].map)?mapindex_id2name(sd->status.memo_point[0].map):"",
+				(skilllv>2 && sd->status.memo_point[1].map)?mapindex_id2name(sd->status.memo_point[1].map):"",
+				(skilllv>3 && sd->status.memo_point[2].map)?mapindex_id2name(sd->status.memo_point[2].map):"");
 		}
 		break;
 

+ 5 - 4
src/map/status.c

@@ -437,8 +437,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int
 				(sc->data[SC_MARIONETTE2].timer != -1 && skill_num == CG_MARIONETTE) ||
 				sc->data[SC_SILENCE].timer != -1 || 
 				sc->data[SC_STEELBODY].timer != -1 ||
-				sc->data[SC_BERSERK].timer != -1 ||
-				sc->data[SC_SKA].timer != -1
+				sc->data[SC_BERSERK].timer != -1
 			))
 				return 0;
 			//Skill blocking.
@@ -4430,7 +4429,10 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
 				val4 = gettick(); //Store time at which you started running.
 			calc_flag = 1;
 			break;
-
+		case SC_KAAHI:
+			val2 = 200*val1; //HP heal
+			val3 = 5*val1; //SP cost
+			break;
 		case SC_TRICKDEAD:			/* Ž€‚ñ‚¾‚Ó‚è */
 		{
 			struct view_data *vd = status_get_viewdata(bl);
@@ -4561,7 +4563,6 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
 		case SC_CLOSECONFINE:
 		case SC_SKILLRATE_UP:
 		case SC_KAIZEL:
-		case SC_KAAHI:
 		case SC_INTRAVISION:
 		case SC_BASILICA:
 		case SC_MAXOVERTHRUST: