OSDN Git Service

攻撃適応修正
authorKillery <Killery@kiritani-no-mac-mini.local>
Mon, 27 Jun 2016 12:20:30 +0000 (21:20 +0900)
committerKillery <Killery@kiritani-no-Mac-mini.local>
Mon, 27 Jun 2016 12:20:30 +0000 (21:20 +0900)
Awars III/FieldScene.h
Awars III/FieldScene.m

index 6f8e970..97f9890 100755 (executable)
 #import "LevelList.h"
 #import "LoadChipList.h"
 
+#define FIELD_TYPE_A 0
+#define FIELD_TYPE_B 1
+#define FIELD_TYPE_C 2
+#define FIELD_TYPE_D 3
+#define FIELD_TYPE_E 4
+#define FIELD_TYPE_S 5
+#define FIELD_TYPE_SS 6
+
+#define MOVE_TYPE_RIKU 0
+#define MOVE_TYPE_UMI 1
+#define MOVE_TYPE_CHU 2
+#define MOVE_TYPE_SORA 3
+
 typedef struct _STATUS2{
     
     double HP;
index a8c400c..ddc7fb7 100755 (executable)
@@ -4335,6 +4335,22 @@ ahhh:{}
     U = UTop;
 }
 
+-(bool)sortEcheck:(ATTACK*)AT opponent:(UNIT*)UT{
+    
+    if(AT->riku == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_RIKU)
+        return true;
+    if(AT->umi == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_UMI)
+        return true;
+    if(AT->chu == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_CHU)
+        return true;
+    if(AT->sora == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_SORA)
+        return true;
+    
+    
+    
+    return false;
+}
+
 -(void)setBattlePanel{
     //おまんちん
     U = UTop;
@@ -4473,7 +4489,7 @@ ahhh:{}
         if(mostDmg2 < 0) mostDmg2 = 1;
         U = oops;
         if(U->C.A->D)
-        if(mostDmg < mostDmg2 && U->C.A->rangeA <= unitBreak->atkRange && U->C.A->rangeB >= unitBreak->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor){
+        if(mostDmg < mostDmg2 && U->C.A->rangeA <= unitBreak->atkRange && U->C.A->rangeB >= unitBreak->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
             
             mostDmg = mostDmg2;
             
@@ -4481,7 +4497,7 @@ ahhh:{}
             mostNum = num;
         }
         if(U->C.A->D)
-        if(mostHit < U->C.A->hitPercent && hit < 50 && mostDmg/2 < mostDmg2 && U->C.A->rangeA <= unitBreak->atkRange && U->C.A->rangeB >= unitBreak->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor){
+        if(mostHit < U->C.A->hitPercent && hit < 50 && mostDmg/2 < mostDmg2 && U->C.A->rangeA <= unitBreak->atkRange && U->C.A->rangeB >= unitBreak->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
             //mostDmg = U->C.A->totalD;
             mostHit = U->C.A->hitPercent;
             mostNum = num;
@@ -4618,6 +4634,9 @@ ahhh:{}
     if(u2A->D->sort == 1){
         hit = 100;
     }
+    
+    if([self sortEcheck:u2A opponent:U])
+        hit = 0;
     [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
     if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
     
@@ -4711,14 +4730,14 @@ ahhh:{}
         U2A = U->C.A;
         
         UNIT *oops = U;
-        U = U2;
+        //U = U2;
         mostDmg2 = [self dmgResist:mostDmg2];
         U = oops;
         
         costVIG = U->C.A->vigor;
 
         if(U->C.A->D)
-        if(mostDmg < mostDmg2 && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor){
+        if(mostDmg < mostDmg2 && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
             
             mostDmg = mostDmg2;
             
@@ -4726,7 +4745,7 @@ ahhh:{}
             mostNum = num;
         }
         if(U->C.A->D)
-        if(mostHit < U->C.A->hitPercent && hit < 50 && mostDmg/2 < mostDmg2 && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 &&costVIG <= U->C.S_C.vigor){
+        if(mostHit < U->C.A->hitPercent && hit < 50 && mostDmg/2 < mostDmg2 && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 &&costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
             //mostDmg = U->C.A->totalD;
             mostHit = U->C.A->hitPercent;
             mostNum = num;
@@ -4787,18 +4806,18 @@ ahhh:{}
         
     }
     if(U->C.A && U->C.A->D){
-    if(U->C.A && !(u2A->D->sort == 1) && U->C.A->D->sort != 1 && mpCost2 <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
+    if(U->C.A && !(u2A->D->sort == 1) && U->C.A->D->sort != 1 && mpCost2 <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U]){
         [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
         hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
         hitFix = U->C.A->hitPercent;
         counter = true;
-    }else if(u2A->D->sort == 1 || !U->C.A || U->C.A->D->sort == 1){
+    }else if(u2A->D->sort == 1 || !U->C.A || U->C.A->D->sort == 1 || [self sortEcheck:U->C.A opponent:U]){
         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
     }
     }else{
         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
     }
-    
+    U2A = U->C.A;
     U->C.A = aTop2;
     
     if(battleDef2Flag){
@@ -4847,6 +4866,9 @@ ahhh:{}
         if(hit > 100) hit = 100;
         if(hit < 0) hit = 0;
         
+        if([self sortEcheck:U2A opponent:U])
+            hit = 0;
+        
         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
         if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
         
@@ -4958,11 +4980,11 @@ ahhh:{}
     while(U->CL.A){
         mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
         costVIG = U->C.A->vigor;
-        if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= unitBreak->atkRange && U->CL.A->rangeB >= unitBreak->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor){
+        if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
             mostDmg = U->CL.A->totalD;
             mostNum = num;
         }
-        if(mostHit < U->CL.A->hitPercent && mostDmg/2 < U->CL.A->totalD && U->CL.A->rangeA <= unitBreak->atkRange && U->CL.A->rangeB >= unitBreak->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor){
+        if(mostHit < U->CL.A->hitPercent && mostDmg/2 < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
             //mostDmg = U->C.A->totalD;
             mostHit = U->CL.A->hitPercent;
             mostNum = num;
@@ -5104,6 +5126,9 @@ ahhh:{}
     if(u2A->D->sort == 1){
         hit = 100;
     }
+    
+    if([self sortEcheck:u2A opponent:U])
+        hit = 0;
     [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
     if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
     
@@ -5116,11 +5141,11 @@ ahhh:{}
     costVIG = U->C.A->vigor;
     while(U->CL.A){
         mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
-        if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor){
+        if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
             mostDmg = U->CL.A->totalD;
             mostNum = num;
         }
-        if(mostHit < U->CL.A->hitPercent && mostDmg/2 < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor){
+        if(mostHit < U->CL.A->hitPercent && mostDmg/2 < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
             //mostDmg = U->C.A->totalD;
             mostHit = U->CL.A->hitPercent;
             mostNum = num;
@@ -5185,12 +5210,12 @@ ahhh:{}
         mpCost2 = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
         
     }
-    if(U->CL.A && !(u2A->D->sort == 1) && U->CL.A->D->sort != 1 && mpCost2 <= U->CL.S_C.EN){
+    if(U->CL.A && !(u2A->D->sort == 1) && U->CL.A->D->sort != 1 && mpCost2 <= U->CL.S_C.EN && ![self sortEcheck:U->CL.A opponent:U2]){
         [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
         hit = U->CL.S_C.MOB + U->C.S_C.HIT;
         hitFix = U->CL.A->hitPercent;
         counter = true;
-    }else if(u2A->D->sort == 1 || !U->CL.A || U->CL.A->D->sort == 1){
+    }else if(u2A->D->sort == 1 || !U->CL.A || U->CL.A->D->sort == 1 || [self sortEcheck:U->CL.A opponent:U2]){
         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
     }
     
@@ -5200,6 +5225,7 @@ ahhh:{}
     }else{
         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
     }
+    U2A = U->CL.A;
     U->CL.A = aTop2;
     
     if(battleDef2Flag){
@@ -5234,7 +5260,8 @@ ahhh:{}
         
         if(hit > 100) hit = 100;
         if(hit < 0) hit = 0;
-        
+        if([self sortEcheck:U2A opponent:U])
+            hit = 0;
         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
         if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
         
@@ -5329,12 +5356,12 @@ ahhh:{}
         
         costVIG = U->C.A->vigor;
         if(U->C.A->D)
-        if(mostDmg < U->C.A->totalD && U->C.A->rangeA <= unitBreak->atkRange && U->C.A->rangeB >= unitBreak->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor){
+        if(mostDmg < U->C.A->totalD && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
             mostDmg = U->C.A->totalD;
             mostNum = num;
         }
         if(U->C.A->D)
-        if(mostHit < U->C.A->hitPercent && mostDmg/2 < U->C.A->totalD && U->C.A->rangeA <= unitBreak->atkRange && U->C.A->rangeB >= unitBreak->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor){
+        if(mostHit < U->C.A->hitPercent && mostDmg/2 < U->C.A->totalD && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
             //mostDmg = U->C.A->totalD;
             mostHit = U->C.A->hitPercent;
             mostNum = num;
@@ -5478,6 +5505,8 @@ ahhh:{}
     if(u2A->D->sort == 1){
         hit = 100;
     }
+    if([self sortEcheck:u2A opponent:U])
+        hit = 0;
     [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
     if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
     
@@ -5495,12 +5524,12 @@ ahhh:{}
         
         mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
         if(U->C.A->D)
-        if(mostDmg < U->C.A->totalD && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor){
+        if(mostDmg < U->C.A->totalD && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
             mostDmg = U->C.A->totalD;
             mostNum = num;
         }
         if(U->C.A->D)
-        if(mostHit < U->C.A->hitPercent && mostDmg/2 < U->C.A->totalD && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor){
+        if(mostHit < U->C.A->hitPercent && mostDmg/2 < U->C.A->totalD && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
             //mostDmg = U->C.A->totalD;
             mostHit = U->C.A->hitPercent;
             mostNum = num;
@@ -5555,17 +5584,17 @@ ahhh:{}
 
     }
     if(U->C.A &&U->C.A->D){
-    if(U->C.A && !(u2A->D->sort == 1) && U->C.A->D->sort != 1 && mpCost2 <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
+    if(U->C.A && !(u2A->D->sort == 1) && U->C.A->D->sort != 1 && mpCost2 <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
         [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
         hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
         hitFix = U->C.A->hitPercent;
         counter = true;
-    }else if(u2A->D->sort == 1 || !U->C.A || U->C.A->D->sort == 1){
+    }else if(u2A->D->sort == 1 || !U->C.A || U->C.A->D->sort == 1 || [self sortEcheck:U->C.A opponent:U2]){
         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
     }}else{
         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
     }
-    
+    U2A = U->C.A;
     U->C.A = aTop2;
     
     if(battleDef2Flag){
@@ -5600,7 +5629,8 @@ ahhh:{}
         
         if(hit > 100) hit = 100;
         if(hit < 0) hit = 0;
-        
+        if([self sortEcheck:U2A opponent:U])
+            hit = 0;
         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
         if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
         
@@ -5693,11 +5723,11 @@ ahhh:{}
     while(U->CL.A){
         mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
         costVIG = U->C.A->vigor;
-        if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= unitBreak->atkRange && U->CL.A->rangeB >= unitBreak->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor){
+        if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self :U->CL.A opponent:U2]){
             mostDmg = U->CL.A->totalD;
             mostNum = num;
         }
-        if(mostHit < U->CL.A->hitPercent && mostDmg/2 < U->CL.A->totalD && U->CL.A->rangeA <= unitBreak->atkRange && U->CL.A->rangeB >= unitBreak->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor){
+        if(mostHit < U->CL.A->hitPercent && mostDmg/2 < U->CL.A->totalD && U->CL.A->rangeA <= unitBreak->atkRange && U->CL.A->rangeB >= unitBreak->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
             //mostDmg = U->C.A->totalD;
             mostHit = U->CL.A->hitPercent;
             mostNum = num;
@@ -5821,6 +5851,8 @@ ahhh:{}
     if(u2A->D->sort == 1){
         hit = 100;
     }
+    if([self sortEcheck:u2A opponent:U])
+        hit = 0;
     [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
     if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
     
@@ -5835,11 +5867,11 @@ ahhh:{}
     while(U->CL.A){
         mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
         costVIG = U->C.A->vigor;
-        if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor){
+        if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
             mostDmg = U->CL.A->totalD;
             mostNum = num;
         }
-        if(mostHit < U->CL.A->hitPercent && mostDmg/2 < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor){
+        if(mostHit < U->CL.A->hitPercent && mostDmg/2 < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
             //mostDmg = U->C.A->totalD;
             mostHit = U->CL.A->hitPercent;
             mostNum = num;
@@ -5892,17 +5924,17 @@ ahhh:{}
         
     }
     if(U->CL.A && U->CL.A->D){
-    if(U->CL.A && !(u2A->D->sort == 1) && U->CL.A->D->sort != 1 && mpCost2 <= U->CL.S_C.EN){
+    if(U->CL.A && !(u2A->D->sort == 1) && U->CL.A->D->sort != 1 && mpCost2 <= U->CL.S_C.EN && ![self sortEcheck:U->CL.A opponent:U2]){
         [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
         hit = U->CL.S_C.MOB + U->C.S_C.HIT;
         hitFix = U->CL.A->hitPercent;
         counter = true;
-    }else if(u2A->D->sort == 1 || !U->CL.A || U->CL.A->D->sort == 1){
+    }else if(u2A->D->sort == 1 || !U->CL.A || U->CL.A->D->sort == 1 || [self sortEcheck:U->CL.A opponent:U2]){
         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
     }}else{
         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
     }
-    
+    U2A = U->CL.A;
     U->CL.A = aTop2;
     
     if(battleDef2Flag){
@@ -5950,7 +5982,8 @@ ahhh:{}
         
         if(hit > 100) hit = 100;
         if(hit < 0) hit = 0;
-        
+        if([self sortEcheck:U2A opponent:U])
+            hit = 0;
         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
         if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
         
@@ -6420,6 +6453,8 @@ ahhh:{}
             if(U2A->D->sort == 1){
                 hit = 100;
             }
+            if([self sortEcheck:U2A opponent:U])
+                hit = 0;
             
             healFlag = false;
             
@@ -6773,7 +6808,7 @@ ahhh:{}
                 
                 costVIG = U->C.A->vigor;
                 if(U->C.A->D)
-                if(mostDmg < mostDmg2 && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1 && mpCost <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
+                if(mostDmg < mostDmg2 && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1 && mpCost <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
                     
             
                     mostDmg = mostDmg2;
@@ -6801,7 +6836,7 @@ ahhh:{}
             
             }
             if(U->C.A->D){
-            if(U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1){
+            if(U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1 && ![self sortEcheck:U->C.A opponent:U2]){
             
             }else while(U->C.A){
                 U->C.A = U->C.A->next;
@@ -7002,6 +7037,8 @@ ahhh:{}
             hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
             if(hit > 100) hit = 100;
             if(hit < 0) hit = 0;
+            if([self sortEcheck:U2A opponent:U])
+                hit = 0;
             
             battleDod1Flag = false;
             
@@ -7370,6 +7407,8 @@ avAWESOME1A:{}
     if(U2A->D->sort == 1){
         hit = 100;
     }
+    if([self sortEcheck:U2A opponent:U])
+        hit = 0;
     
     healFlag = false;
     
@@ -7594,7 +7633,7 @@ avAWESOME1A:{}
     }
     while(U->CL.A){
         mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
-        if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1 && mpCost <= U->CL.S_C.EN && costVIG <= U->C.S_C.vigor){
+        if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1 && mpCost <= U->CL.S_C.EN && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
             mostDmg = U->CL.A->totalD;
             mostNum = num;
         }
@@ -7620,7 +7659,7 @@ avAWESOME1A:{}
         U->CL.A = NULL;
     }
     if(U->CL.A){
-    if(U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1){
+    if(U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1 && ![self sortEcheck:U->CL.A opponent:U2]){
     }else while(U->CL.A){
         U->CL.A = U->CL.A->next;
     }
@@ -7698,6 +7737,9 @@ avAWESOME1B:{}
     hit = 60 + hit/(U->CL.S_C.MOB*U->C.S_C.DOD/100)*10 - (U->CL.S_C.MOB*U->C.S_C.DOD/100)/hit*10 + hitFix;
     if(hit > 100) hit = 100;
     
+    if([self sortEcheck:U2A opponent:U])
+        hit = 0;
+    
     battleDod1Flag = false;
     
     int omg = 100;
@@ -7999,6 +8041,8 @@ avAWESOME2A:{}
     if(U2A->D->sort == 1){
         hit = 100;
     }
+    if([self sortEcheck:U2A opponent:U])
+        hit = 0;
     
     healFlag = false;
     
@@ -8226,7 +8270,7 @@ avAWESOME2A:{}
 
         mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
         if(U->C.A->D)
-        if(mostDmg < U->C.A->totalD && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1 && mpCost <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
+        if(mostDmg < U->C.A->totalD && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1 && mpCost <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
             mostDmg = U->C.A->totalD;
             mostNum = num;
         }
@@ -8249,7 +8293,7 @@ avAWESOME2A:{}
     }
     if(U->C.A){
         if(U->C.A->D){
-    if(U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1){
+    if(U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1 && ![self sortEcheck:U->C.A opponent:U2]){
     }else while(U->CL.A){
         U->C.A = U->C.A->next;
     }}
@@ -8359,6 +8403,9 @@ avAWESOME2B:{}
     hit = 60 + hit/(U->CL.S_C.MOB*U->C.S_C.DOD/100)*10 - (U->CL.S_C.MOB*U->C.S_C.DOD/100)/hit*10 + hitFix;
     if(hit > 100) hit = 100;
     
+    if([self sortEcheck:U2A opponent:U])
+        hit = 0;
+    
     battleDod1Flag = false;
     
     int omg = 100;
@@ -8712,6 +8759,8 @@ avAWESOME3A:{}
     if(U2A->D->sort == 1){
         hit = 100;
     }
+    if([self sortEcheck:U2A opponent:U])
+        hit = 0;
     
     healFlag = false;
     
@@ -8947,7 +8996,7 @@ avAWESOME3A:{}
     }
     while(U->CL.A){
         mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
-        if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1 && mpCost <= U->CL.S_C.EN && costVIG <= U->C.S_C.vigor){
+        if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1 && mpCost <= U->CL.S_C.EN && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
             mostDmg = U->CL.A->totalD;
             mostNum = num;
         }
@@ -8971,7 +9020,7 @@ avAWESOME3A:{}
         }
     }
     
-    if(U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1){
+    if(U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1 && ![self sortEcheck:U->CL.A opponent:U2]){
     }else while(U->CL.A){
         U->CL.A = U->CL.A->next;
     }
@@ -9053,6 +9102,9 @@ avAWESOME3B:{}
     hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
     if(hit > 100) hit = 100;
     
+    if([self sortEcheck:U2A opponent:U])
+        hit = 0;
+    
     battleDod1Flag = false;
     
     int omg = 100;