Ver código fonte

* Remove some unnecessary checks in battle.c
* Added some checks to prevent novices still allowed to attack when using Trick Dead

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

celest 20 anos atrás
pai
commit
9eaf6d76d6
4 arquivos alterados com 16 adições e 9 exclusões
  1. 3 0
      Changelog.txt
  2. 8 8
      src/map/battle.c
  3. 2 1
      src/map/clif.c
  4. 3 0
      src/map/skill.c

+ 3 - 0
Changelog.txt

@@ -1,5 +1,8 @@
 Date	Added
 01/07
+        * Remove some unnecessary checks in battle.c [celest]
+        * Added some checks to prevent novices still allowed to attack when using
+          Trick Dead [celest]
         * Added 'summon' script command. Syntax:
 
           	summon <monster name>,<monster id>[,<event>];

+ 8 - 8
src/map/battle.c

@@ -1932,7 +1932,7 @@ static struct Damage battle_calc_pet_weapon_attack(
 	if(t_sc_data != NULL && t_sc_data[SC_SLEEP].timer!=-1 )
 		cri <<=1;
 
-	if(skill_num == 0 && skill_lv >= 0 && battle_config.enemy_critical && (rand() % 1000) < cri)
+	if(skill_num == 0 && battle_config.enemy_critical && (rand() % 1000) < cri)
 	{
 		damage += atkmax;
 		type = 0x0a;
@@ -2250,7 +2250,7 @@ static struct Damage battle_calc_pet_weapon_attack(
 
 	// 完全回避の判定
 	if(battle_config.enemy_perfect_flee) {
-		if(skill_num == 0 && skill_lv >= 0 && tmd!=NULL && rand()%1000 < battle_get_flee2(target) ){
+		if(skill_num == 0 && tmd!=NULL && rand()%1000 < battle_get_flee2(target) ){
 			damage=0;
 			type=0x0b;
 			dmg_lv = ATK_LUCKY;
@@ -2782,14 +2782,14 @@ static struct Damage battle_calc_mob_weapon_attack(
 	}
 
 	// 完全回避の判定
-	if(skill_num == 0 && skill_lv >= 0 && tsd!=NULL && rand()%1000 < battle_get_flee2(target) ){
+	if(skill_num == 0 && tsd!=NULL && rand()%1000 < battle_get_flee2(target) ){
 		damage=0;
 		type=0x0b;
 		dmg_lv = ATK_LUCKY;
 	}
 
 	if(battle_config.enemy_perfect_flee) {
-		if(skill_num == 0 && skill_lv >= 0 && tmd!=NULL && rand()%1000 < battle_get_flee2(target) ){
+		if(skill_num == 0 && tmd!=NULL && rand()%1000 < battle_get_flee2(target) ){
 			damage=0;
 			type=0x0b;
 			dmg_lv = ATK_LUCKY;
@@ -2984,11 +2984,11 @@ static struct Damage battle_calc_pc_weapon_attack(
 
 	//三段掌
 	//if(skill_num == 0 && skill_lv >= 0 && (skill = pc_checkskill(sd,MO_TRIPLEATTACK)) > 0 && sd->status.weapon <= 16 && !sd->state.arrow_atk) {
-	if(skill_num == 0 && skill_lv >= 0 && (skill = pc_checkskill(sd,MO_TRIPLEATTACK)) > 0 && sd->status.weapon <= 16) { // triple blow works with bows ^^ [celest]
+	if(skill_num == 0 && (skill = pc_checkskill(sd,MO_TRIPLEATTACK)) > 0 && sd->status.weapon <= 16) { // triple blow works with bows ^^ [celest]
 			da = (rand()%100 < (30 - skill)) ? 2:0;
 	}
 
-	if(sd->double_rate > 0 && da == 0 && skill_num == 0 && skill_lv >= 0)
+	if(sd->double_rate > 0 && da == 0 && skill_num == 0)
 		da = (rand()%100 < sd->double_rate) ? 1:0;
 
 	// 過剰精錬ボーナス
@@ -3915,7 +3915,7 @@ static struct Damage battle_calc_pc_weapon_attack(
 	}
 
 	// 完全回避の判定
-	if(skill_num == 0 && skill_lv >= 0 && tsd!=NULL && div_ < 255 && rand()%1000 < battle_get_flee2(target) ){
+	if(skill_num == 0 && tsd!=NULL && div_ < 255 && rand()%1000 < battle_get_flee2(target) ){
 		damage=damage2=0;
 		type=0x0b;
 		dmg_lv = ATK_LUCKY;
@@ -3923,7 +3923,7 @@ static struct Damage battle_calc_pc_weapon_attack(
 
 	// 対象が完全回避をする設定がONなら
 	if(battle_config.enemy_perfect_flee) {
-		if(skill_num == 0 && skill_lv >= 0 && tmd!=NULL && div_ < 255 && rand()%1000 < battle_get_flee2(target) ) {
+		if(skill_num == 0 && tmd!=NULL && div_ < 255 && rand()%1000 < battle_get_flee2(target) ) {
 			damage=damage2=0;
 			type=0x0b;
 			dmg_lv = ATK_LUCKY;

+ 2 - 1
src/map/clif.c

@@ -8041,7 +8041,8 @@ void clif_parse_ActionRequest(int fd, struct map_session_data *sd) {
 	}
 	if (sd->npc_id != 0 || sd->opt1 > 0 || sd->status.option & 2 ||
 	    (sd->sc_data &&
-	     (sd->sc_data[SC_AUTOCOUNTER].timer != -1 || //オートカウンター
+	     (sd->sc_data[SC_TRICKDEAD].timer != -1 ||
+		  sd->sc_data[SC_AUTOCOUNTER].timer != -1 || //オートカウンター
 	      sd->sc_data[SC_BLADESTOP].timer != -1 || //白刃取り
 	      sd->sc_data[SC_DANCING].timer != -1))) //ダンス中
 		return;

+ 3 - 0
src/map/skill.c

@@ -9749,6 +9749,9 @@ int skill_status_change_start(struct block_list *bl, int type, int val1, int val
 			calc_flag = 1;
 			break;
 		case SC_TRICKDEAD:			/* 死んだふり */
+			if (bl->type == BL_PC) {
+				pc_stopattack((struct map_session_data *)sd);
+			}			
 			break;
 		case SC_QUAGMIRE:			/* クァグマイア */
 			calc_flag = 1;