Browse Source

- Trick Dead makes you stop walking now.
- Falcon Assault only does 1 hit now.
- Soul Burn is not affected by Lex Aeterna, not affected by target's cards.
- Freeze and Stone take preference over Benedictio
- Opt1 inducing SCs fail if the target has already another Opt1
- Fixed areamonster when the passed class is negative
- Removed the clear screen when launching the server.


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

skotlex 19 years ago
parent
commit
1d94ae4856
7 changed files with 28 additions and 18 deletions
  1. 7 0
      Changelog-Trunk.txt
  2. 2 0
      db/Changelog.txt
  3. 1 1
      db/skill_db.txt
  4. 2 1
      src/common/core.c
  5. 3 2
      src/map/battle.c
  6. 1 1
      src/map/mob.c
  7. 12 13
      src/map/status.c

+ 7 - 0
Changelog-Trunk.txt

@@ -5,6 +5,13 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.  EV
 GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
 
 2006/02/01
+	* Trick Dead makes you stop walking now. [Skotlex]
+	* Soul Burn is not affected by Lex Aeterna, not affected by target's cards
+	  neither. [Skotlex]
+	* Freeze and Stone take preference over Benedictio. [Skotlex]
+	* Sleep/Stun/Petrify/Freeze block each other out. [Skotlex]
+	* Fixed areamonster when the passed class is negative. [Skotlex]
+	* Removed the clear screen when launching the server.  [Skotlex]
 	* Integrated the status change variables into a single structure for easier
 	  management. [Skotlex]
 	* Break fall should no longer trigger when inflicted by freeze/stone/etc

+ 2 - 0
db/Changelog.txt

@@ -27,6 +27,8 @@
 
 =========================
 
+02/01
+	* Falcon Assault only does one hit now. [Skotlex]
 01/31
 	* Changed Lady Tany's skills a bit and removed the CANWALK from her mode [MasterOfMuppets]
 	* Changed Vesper's mode to boss [MasterOfMuppets]

+ 1 - 1
db/skill_db.txt

@@ -397,7 +397,7 @@
 378,0,6,4,5,1,5,1,no,0,1024,0,weapon,0	//ASC_EDP#Deadly Poison Enchantment#
 379,5,6,1,-1,0,10,1,yes,0,0,0,weapon,0	//ASC_BREAKER#Soul Destroyer#
 380,0,6,4,0,1,10,1,no,0,0,0,weapon,0	//SN_SIGHT#Falcon Eyes#
-381,5,8,1,0,0,5,1:2:3:4:5,yes,0,0,0,misc,0	//SN_FALCONASSAULT#Falcon Assault#
+381,5,8,1,0,0,5,1,yes,0,0,0,misc,0	//SN_FALCONASSAULT#Falcon Assault#
 382,4,8,1,-1,0,5,1,yes,0,0,0,weapon,0	//SN_SHARPSHOOTING#Focused Arrow Strike#
 383,0,6,4,0,1,10,1,yes,0,0,0,weapon,0	//SN_WINDWALK#Wind Walker#
 384,0,0,4,0,1,10,1,yes,0,0,0,weapon,0	//WS_MELTDOWN#Shattering Strike#

+ 2 - 1
src/common/core.c

@@ -157,7 +157,8 @@ const char* get_svn_revision(void)
 
 static void display_title(void)
 {
-	ClearScreen(); // clear screen and go up/left (0, 0 position in text)
+	//The clearscreeen is usually more of an annoyance than anything else... [Skotlex]
+//	ClearScreen(); // clear screen and go up/left (0, 0 position in text)
 	ShowMessage(""CL_WTBL"          (=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=)"CL_CLL""CL_NORMAL"\n"); // white writing (37) on blue background (44), \033[K clean until end of file
 	ShowMessage(""CL_XXBL"          ("CL_BT_YELLOW"        (c)2005 eAthena Development Team presents        "CL_XXBL")"CL_CLL""CL_NORMAL"\n"); // yellow writing (33)
 	ShowMessage(""CL_XXBL"          ("CL_BOLD"       ______  __    __                                  "CL_XXBL")"CL_CLL""CL_NORMAL"\n"); // 1: bold char, 0: normal char

+ 3 - 2
src/map/battle.c

@@ -620,7 +620,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i
 			return 0;
 
 		//Now damage increasing effects
-		if(sc->data[SC_AETERNA].timer!=-1 && skill_num != PA_PRESSURE){
+		if(sc->data[SC_AETERNA].timer!=-1 && skill_num != PA_PRESSURE && skill_num != PF_SOULBURN){
 			damage<<=1;
 			if (skill_num != ASC_BREAKER || flag & BF_MAGIC) //Only end it on the second attack of breaker. [Skotlex]
 				status_change_end( bl,SC_AETERNA,-1 );
@@ -2655,7 +2655,8 @@ struct Damage battle_calc_magic_attack(
 			MATK_RATE(cardfix);
 		}
 
-		if (tsd && skill_num != HW_GRAVITATION) { //Card fixes always apply on the target side. [Skotlex]
+		if (tsd && skill_num != HW_GRAVITATION && skill_num != PF_SOULBURN)
+	  	{ //Card fixes always apply on the target side. [Skotlex]
 			short s_race2=status_get_race2(src);
 			short s_class= status_get_class(src);
 			short cardfix=100;

+ 1 - 1
src/map/mob.c

@@ -287,7 +287,7 @@ int mob_once_spawn_area(struct map_session_data *sd,char *mapname,
 	max=(y1-y0+1)*(x1-x0+1)*3;
 	if(max>1000)max=1000;
 
-	if(m<0 || amount<=0 || mob_db(class_) == mob_dummy)	// A summon is stopped if a value is unusual
+	if (m < 0 || amount <= 0 || (class_ >= 0 && class_ <= 1000) || class_ > MAX_MOB_DB + 2*MAX_MOB_DB)	// 値が異常なら召喚を止める
 		return 0;
 
 	for(i=0;i<amount;i++){

+ 12 - 13
src/map/status.c

@@ -3326,12 +3326,12 @@ int status_get_element(struct block_list *bl)
 	nullpo_retr(20, bl);
 
 	if(sc && sc->count) {
-		if( sc->data[SC_BENEDICTIO].timer!=-1 )	// 聖体降福
-			return 26;
 		if( sc->data[SC_FREEZE].timer!=-1 )	// 凍結
 			return 21;
 		if( sc->data[SC_STONE].timer!=-1 && sc->data[SC_STONE].val2==0)
 			return 22;
+		if( sc->data[SC_BENEDICTIO].timer!=-1 )	// 聖体降福
+			return 26;
 	}
 	if(bl->type==BL_MOB)	// 10の位=Lv*2、1の位=属性
 		return ((struct mob_data *)bl)->def_ele;
@@ -3689,6 +3689,15 @@ int status_change_start(struct block_list *bl,int type,int val1,int val2,int val
 		}
 	}
 
+	if (sc->opt1)
+		switch (type) {
+			case SC_STONE:
+			case SC_FREEZE:
+			case SC_SLEEP:
+			case SC_STAN:
+				return 0; //Cannot override other opt1 status changes. [Skotlex]
+		}
+
 	if((type==SC_FREEZE || type==SC_STONE) && undead_flag && !(flag&1))
 	//I've been informed that undead chars are inmune to stone curse too. [Skotlex]
 		return 0;
@@ -3732,7 +3741,7 @@ int status_change_start(struct block_list *bl,int type,int val1,int val2,int val
 	}
 
 	if(type==SC_FREEZE || type==SC_STAN || type==SC_SLEEP || type==SC_STOP || type == SC_CONFUSION ||
-		type==SC_CLOSECONFINE || type==SC_CLOSECONFINE2)
+		type==SC_CLOSECONFINE || type==SC_CLOSECONFINE2 || type ==SC_TRICKDEAD)
 		battle_stopwalking(bl,1);
 
 	// クアグマイア/私を忘れないで中は無効なスキル
@@ -4628,16 +4637,6 @@ int status_change_start(struct block_list *bl,int type,int val1,int val2,int val
 
 			battle_stopattack(bl);	/* 攻?停止 */
 			skill_stop_dancing(bl);	/* 演奏/ダンスの中? */
-			{	/* 同時に掛からないステ?タス異常を解除 */
-				int i;
-				for(i = SC_STONE; i <= SC_SLEEP; i++){
-					if(sc->data[i].timer != -1){
-						(sc->count)--;
-						delete_timer(sc->data[i].timer, status_change_timer);
-						sc->data[i].timer = -1;
-					}
-				}
-			}
 			if(type == SC_STONE)
 				sc->opt1 = OPT1_STONEWAIT;
 			else