5 // Created by Killery on 2013/02/22.
6 // Copyright (c) 2013年 Killery. All rights reserved.
11 @implementation FieldScene
15 [CAttackListTV setTarget:self];
16 [CAttackListTV setDoubleAction:@selector(doubleClickCAL:)];
17 [CAttackListTV setTarget:self];
18 [CAttackListTV setAction:@selector(clickCAL:)];
20 [CResearchListTV setTarget:self];
21 [CResearchListTV setDoubleAction:@selector(doubleClickCRL:)];
22 [CResearchListTV setTarget:self];
23 [CResearchListTV setAction:@selector(clickCRL:)];
25 [BCreateListTV setTarget:self];
26 [BCreateListTV setDoubleAction:@selector(doubleClickBCL:)];
27 [BCreateListTV setTarget:self];
28 [BCreateListTV setAction:@selector(clickBCL:)];
30 [CSummonListTV setTarget:self];
31 [CSummonListTV setDoubleAction:@selector(doubleClickCSL:)];
32 [CSummonListTV setTarget:self];
33 [CSummonListTV setAction:@selector(clickCSL:)];
37 CAttackListMA = [NSMutableArray new];
38 CResearchListMA = [NSMutableArray new];
39 BCreateListMA = [NSMutableArray new];
40 CSummonListMA = [NSMutableArray new];
43 [IVimage setHidden:YES];
44 [TFname setHidden:YES];
45 [TFmessage setHidden:YES];
46 [BXname setHidden:YES];
47 [BXmessage setHidden:YES];
48 [IVimage setEnabled:NO];
49 [TFname setEnabled:NO];
50 [TFmessage setEnabled:NO];
58 scheduledTimerWithTimeInterval:1.0/30
60 selector:@selector(EventLoopFS:)
94 -(void)doubleClickBCL:(id)sender{
115 for(int i = 0;i < slctedUnitNum;i++){
119 if (MC[chipNum[possionX][possionY]].type == MC_ANTEI) {
121 if(BC[U->C.S->list[crBCL]-1].type == BC_ANTEI){
127 if (MC[chipNum[possionX][possionY]].type == MC_CHIKURIN) {
129 if(BC[U->C.S->list[crBCL]-1].type == BC_CHIKURIN){
135 if (MC[chipNum[possionX][possionY]].type == MC_ASASE) {
137 if(BC[U->C.S->list[crBCL]-1].type == BC_ASASE){
143 if(BC[U->C.S->list[crBCL]].type == BC_SONOTA){
149 if(buildNum[possionX][possionY] >= 0){
155 if(P[0].resource >= BC[U->C.S->list[crBCL]-1].Csupply){
156 if(P[0].food >= BC[U->C.S->list[crBCL]-1].Cfood){
157 if (P[0].money >= BC[U->C.S->list[crBCL]-1].Cmoney) {
158 P[0].resource -= BC[U->C.S->list[crBCL]-1].Csupply;
159 P[0].food -= BC[U->C.S->list[crBCL]-1].Cfood;
160 P[0].money -= BC[U->C.S->list[crBCL]-1].Cmoney;
162 buildNum[possionX][possionY] = U->C.S->list[crBCL]-1;
164 buildTeam[possionX][possionY] = 0;
167 [self addBuildStatus];
175 if(P[1].resource >= BC[U->C.S->list[crBCL]-1].Csupply){
176 if(P[1].food >= BC[U->C.S->list[crBCL]-1].Cfood){
177 if (P[1].money >= BC[U->C.S->list[crBCL]-1].Cmoney) {
178 P[1].resource -= BC[U->C.S->list[crBCL]-1].Csupply;
179 P[1].food -= BC[U->C.S->list[crBCL]-1].Cfood;
180 P[1].money -= BC[U->C.S->list[crBCL]-1].Cmoney;
182 buildNum[possionX][possionY] = U->C.S->list[crBCL]-1;
184 buildTeam[possionX][possionY] = 2;
186 [self addBuildStatus];
198 -(void)clickBCL:(id)sender{
199 crBCL = (int)[BCreateListTV clickedRow];
206 -(void)doubleClickCSL:(id)sender{
209 for(int i = 0;i < slctedUnitNum;i++){
214 SKILL *sTop = U->C.S;
216 if(U->C.S->type == 2) break;
217 U->C.S = U->C.S->next;
226 if(U->C.S->cost[crCSL] <= U->C.S_C.MP){
227 //U->C.S_C.MP -= U->C.S->cost[crCSL];
228 CSLUC = UC[U->C.S->list[crCSL]-1];
233 //unitColorInitFlag = true;
236 if(U->C.S->cost[crCSL] <= U->C.S_C.MP){
238 //U->C.S_C.MP -= U->C.S->cost[crCSL];
239 CSLUC = UC[U->C.S->list[crCSL]-1];
244 //unitColorInitFlag = true;
251 -(void)clickCSL:(id)sender{
252 crCSL = (int)[CSummonListTV clickedRow];
257 -(void)doubleClickCAL:(id)sender{
259 if([CAttackListTV clickedRow] < 0) return;
264 int postCAL1 = crCAL1;
265 int postCAL2 = crCAL2;
267 if(!battleSet1Flag && !battleSet2Flag){
269 while (!(AUN[1] == U->number)) {
275 if(U->chipNumberL < 0){
277 ATTACK *aTop = U->C.A;
279 crCAL = (int)[CAttackListTV clickedRow];
280 crCAL1 = (int)[CAttackListTV clickedRow];
281 for(int i = 0;i < crCAL;i++){
282 U->C.A = U->C.A->next;
285 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
286 costVIG = U->C.A->vigor;
288 if(costMP <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
289 if(U->C.A->extent > 0){
290 atkExtentFlag = true;
292 atkExtentFlag = false;
302 ATTACK *aTop = U->CL.A;
303 crCAL = (int)[CAttackListTV clickedRow];
304 crCAL1 = (int)[CAttackListTV clickedRow];
305 for(int i = 0;i < crCAL;i++){
306 U->CL.A = U->CL.A->next;
309 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
310 costVIG = U->CL.A->vigor;
312 if(costMP <= U->CL.S_C.EN && costVIG <= U->C.S_C.vigor){
314 if(U->CL.A->extent > 0){
315 atkExtentFlag = true;
317 atkExtentFlag = false;
328 if(battleSet1Flag && !battleSet2PushedFlag){
332 while (!(AUN[1] == U->number)) {
336 if(U->chipNumberL < 0){
337 ATTACK *aTop = U->C.A;
338 crCAL1 = (int)[CAttackListTV clickedRow];
339 for(int i = 0;i < crCAL1;i++){
340 U->C.A = U->C.A->next;
343 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
344 costVIG = U->C.A->vigor;
347 if(costMP <= U->C.S_C.MP && U->atkRange >= U->C.A->rangeA
348 && U->atkRange <= U->C.A->rangeB && costVIG >= U->C.S_C.vigor){
360 ATTACK *aTop = U->CL.A;
361 crCAL1 = (int)[CAttackListTV clickedRow];
362 for(int i = 0;i < crCAL1;i++){
363 U->CL.A = U->CL.A->next;
366 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
367 costVIG = U->C.A->vigor;
369 if(costMP <= U->CL.S_C.EN && U->atkRange >= U->CL.A->rangeA
370 && U->atkRange <= U->CL.A->rangeB && costVIG >= U->C.S_C.vigor){
384 if(battleSet2Flag && battleSet2PushedFlag){
386 while (!(AUN[1] == U->number)) {
390 if(U->chipNumberL < 0){
393 while (!(AUN[1] == U->number)) {
397 int omgRange = U->atkRange;
400 while (!(DUN[1] == U->number)) {
404 U->atkRange = omgRange;
406 ATTACK *aTop = U->C.A;
407 crCAL2 = (int)[CAttackListTV clickedRow];
408 for(int i = 0;i < crCAL2;i++){
409 U->C.A = U->C.A->next;
412 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
413 costVIG = U->C.A->vigor;
416 if(costMP <= U->C.S_C.MP && U->atkRange >= U->C.A->rangeA
417 && U->atkRange <= U->C.A->rangeB && U->C.S_C.vigor){
430 while (!(AUN[1] == U->number)) {
434 int omgRange = U->atkRange;
437 while (!(DUN[1] == U->number)) {
441 U->atkRange = omgRange;
443 ATTACK *aTop = U->CL.A;
444 crCAL2 = (int)[CAttackListTV clickedRow];
445 for(int i = 0;i < crCAL2;i++){
446 U->CL.A = U->CL.A->next;
449 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
450 costVIG = U->C.A->vigor;
452 if(costMP <= U->CL.S_C.EN && U->atkRange >= U->CL.A->rangeA
453 && U->atkRange <= U->CL.A->rangeB && U->C.S_C.vigor){
476 -(void)clickCAL:(id)sender{
478 crCAL = (int)[CAttackListTV clickedRow];
480 if(!battleSetFlag){crCAL = crCAL1;
481 crCAL1 = (int)[CAttackListTV clickedRow];
484 while (!(AUN[1] == U->number)) {
487 }else if(battleSetFlag){crCAL = crCAL2;
488 crCAL2 = (int)[CAttackListTV clickedRow];
491 while (!(DUN[1] == U->number)) {
497 if(U->chipNumberL >= 0) {
499 [self initCAttackSelect2];
501 else if(U->chipNumber >= 0) {
503 [self initCAttackSelect];
508 -(void)initCAttackSelect{
512 while (!(AUN[1] == U->number)) {
515 if(!battleSetFlag){crCAL = crCAL1;
516 //crCAL1 = (int)[CAttackListTV clickedRow];
519 while (!(AUN[1] == U->number)) {
522 }else if(battleSetFlag){crCAL = crCAL2;
523 //crCAL2 = (int)[CAttackListTV clickedRow];
526 while (!(DUN[1] == U->number)) {
534 [CAttackListAC setSelectionIndex:crCAL];
535 crCAL = (int)[CAttackListTV clickedRow];
536 ATTACK *aTop = U->C.A;
537 for(int i = 0;i < crCAL;i++){
538 U->C.A = U->C.A->next;
542 [bullet setStringValue:[NSString stringWithFormat:@"---/---"]];
543 [costP setStringValue:[NSString stringWithFormat:@"---(%g)", U->C.S_C.MP]];
544 [costV setStringValue:[NSString stringWithFormat:@"---(%d)", U->C.S_C.vigor]];
545 [region setStringValue:[NSString stringWithFormat:@"陸-- 宙-- 海-- 空--"]];
546 [crytical setStringValue:@""];
547 [atkProperty setStringValue:@""];
552 if(U->C.A->bullet > 0) [bullet setStringValue:[NSString stringWithFormat:@"%d/%d", U->C.A->bulletC, U->C.A->bullet]];
553 else [bullet setStringValue:[NSString stringWithFormat:@"---/---"]];
554 if(U->C.A->MP > 0) [costP setStringValue:[NSString stringWithFormat:@"%g(%g)", U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100+0.5), U->C.S_C.MP]];
555 else [costP setStringValue:[NSString stringWithFormat:@"---(%g)", U->C.S_C.MP]];
556 if(U->C.A->vigor > 0) [costV setStringValue:[NSString stringWithFormat:@"%d(%d)", U->C.A->vigor, U->C.S_C.vigor]];
557 else [costV setStringValue:[NSString stringWithFormat:@"---(%d)", U->C.S_C.vigor]];
559 NSString *Riku, *Chu, *Umi, *Sora;
561 switch (U->C.A->riku) {
563 Riku = [@"A" retain];
581 Riku = [@"SS"retain];
584 switch (U->C.A->chu) {
604 Chu = [@"SS" retain];
607 switch (U->C.A->umi) {
627 Umi = [@"SS" retain];
630 switch (U->C.A->sora) {
632 Sora = [@"A" retain];
635 Sora = [@"B" retain];
638 Sora = [@"C" retain];
641 Sora = [@"D" retain];
644 Sora = [@"E" retain];
647 Sora = [@"S" retain];
650 Sora = [@"SS" retain];
661 [region setStringValue:[NSString stringWithFormat:@"陸%@ 宙%@ 海%@ 空%@", Riku, Chu, Umi, Sora]];
662 [crytical setStringValue:@""];
663 [atkProperty setStringValue:@""];
669 -(void)initCAttackSelect2{
673 while (!(AUN[1] == U->number)) {
677 //crCAL1 = (int)[CAttackListTV clickedRow];
679 while (!(AUN[1] == U->number)) {
684 //crCAL2 = (int)[CAttackListTV clickedRow];
686 while (!(DUN[1] == U->number)) {
692 ATTACK *aTop = U->CL.A;
693 for(int i = 0;i < crCAL;i++){
694 U->CL.A = U->CL.A->next;
702 if(U->CL.A->bullet > 0) [bullet setStringValue:[NSString stringWithFormat:@"%d/%d", U->CL.A->bulletC, U->CL.A->bullet]];
703 else [bullet setStringValue:[NSString stringWithFormat:@"---/---"]];
704 if(U->CL.A->EN > 0) [costP setStringValue:[NSString stringWithFormat:@"%g(%g)", U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100+0.5), U->CL.S_C.EN]];
705 else [costP setStringValue:[NSString stringWithFormat:@"---(%g)", U->CL.S_C.EN]];
706 if(U->CL.A->vigor > 0) [costV setStringValue:[NSString stringWithFormat:@"%d(%d)", U->CL.A->vigor, U->C.S_C.vigor]];
707 else [costV setStringValue:[NSString stringWithFormat:@"---(%d)", U->C.S_C.vigor]];
709 NSString *Riku, *Chu, *Umi, *Sora;
711 switch (U->CL.A->riku) {
734 switch (U->CL.A->chu) {
757 switch (U->CL.A->umi) {
780 switch (U->CL.A->sora) {
811 [region setStringValue:[NSString stringWithFormat:@"陸%@ 宙%@ 海%@ 空%@", Riku, Chu, Umi, Sora]];
812 [crytical setStringValue:@""];
813 [atkProperty setStringValue:@""];
820 -(void)doubleClickCRL:(id)sender{
822 if(crCRL == -1) return;
824 if(unitBreak->team == 0)
825 if(P[0].resource >= BRU->S_M.cSupply && P[0].food >= BRU->S_M.cFood && P[0].money >= BRU->S_M.cMoney){
827 P[0].resource -= BRU->S_M.cSupply;
828 P[0].food -= BRU->S_M.cFood;
829 P[0].money -= BRU->S_M.cMoney;
831 unitNum[possionX][possionY] = BRUindex;
832 if(researchTeam == 0) unitTeam[possionX][possionY] = 0;
833 if(researchTeam == 2) unitTeam[possionX][possionY] = 2;
835 [self addUnitStatus];
837 unitColorInitFlag = true;
839 [researchPanel close];
842 if(unitBreak->team == 2)
843 if(P[1].resource >= BRU->S_M.cSupply && P[1].food >= BRU->S_M.cFood && P[1].money >= BRU->S_M.cMoney){
845 P[1].resource -= BRU->S_M.cSupply;
846 P[1].food -= BRU->S_M.cFood;
847 P[1].money -= BRU->S_M.cMoney;
849 unitNum[possionX][possionY] = BRUindex;
850 if(researchTeam == 0) unitTeam[possionX][possionY] = 0;
851 if(researchTeam == 2) unitTeam[possionX][possionY] = 2;
853 [self addUnitStatus];
855 unitColorInitFlag = true;
857 [researchPanel close];
862 -(void)clickCRL:(id)sender{
864 crCRL = (int)[CResearchListTV clickedRow];
869 B = &BC[buildNum[possionX][possionY]];
879 for(int i = 0;i <= crCRL;i++){
882 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", BU->S_M.ATK]];
883 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", BU->S_M.DEF]];
884 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", BU->S_M.CAP]];
885 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", BU->S_M.ACU]];
886 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", BU->S_M.EVA]];
887 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", BU->S_M.MOV]];
888 [researchIMG setImage:BU->imgb];
889 [researchIMG setImageScaling:NSScaleToFit];
895 for (int i = 0; BRU->nameID != UC[i].nameID && i < UCN;i++) {
902 if(buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1){
911 for(int i = k;i <= crCRL;i++){
913 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ATK]];
914 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.DEF]];
915 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.CAP]];
916 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ACU]];
917 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.EVA]];
918 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp1 + i - k)-1].S_M.MOV]];
919 [researchIMG setImage:UC[*(GuildDisp1 + i - k)-1].imgb];
920 [researchIMG setImageScaling:NSScaleToFit];
925 for (int i = 0; UC[*(GuildDisp1 + crCRL - k)-1].nameID != UC[i].nameID && i < UCN;i++) {
927 }BRU = &UC[BRUindex];
931 }else if(buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3){
940 for(int i = k;i <= crCRL;i++){
942 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ATK]];
943 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.DEF]];
944 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.CAP]];
945 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ACU]];
946 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.EVA]];
947 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp2 + i - k)-1].S_M.MOV]];
948 [researchIMG setImage:UC[*(GuildDisp2 + i - k)-1].imgb];
949 [researchIMG setImageScaling:NSScaleToFit];
955 for (int i = 0; UC[*(GuildDisp2 + crCRL - k)-1].nameID != UC[i].nameID && i < UCN;i++) {
957 }BRU = &UC[BRUindex];
966 -(void)SetStatusFunc{
975 double S, V, A, D, M, I;
1096 S = U->C.S_C.STR + STRfix;
1097 V = U->C.S_C.VIT + VITfix;
1098 A = U->C.S_C.AGI + AGIfix;
1099 D = U->C.S_C.DEX + DEXfix;
1100 M = U->C.S_C.MEN + MENfix;
1101 I = U->C.S_C.INT + INTfix;
1103 U->C.S_C.ATK = (S*5 + D*2 + A)/8;
1104 U->C.S_C.DEF = (V*5 + M*2 + S)/8;
1105 U->C.S_C.CAP = (I*4 + D*1 + M*2)/7;
1106 U->C.S_C.ACU = (D*4 + A*1 + M)/6;
1107 U->C.S_C.EVA = (A*4 + A*1 + M)/6;
1109 U->C.S_C.ATK += 0.5;
1110 U->C.S_C.DEF += 0.5;
1111 U->C.S_C.CAP += 0.5;
1112 U->C.S_C.ACU += 0.5;
1113 U->C.S_C.EVA += 0.5;
1115 U->C.S_C.ATK = floor(U->C.S_C.ATK);
1116 U->C.S_C.DEF = floor(U->C.S_C.DEF);
1117 U->C.S_C.CAP = floor(U->C.S_C.CAP);
1118 U->C.S_C.ACU = floor(U->C.S_C.ACU);
1119 U->C.S_C.EVA = floor(U->C.S_C.EVA);
1126 -(void)initMapscript{
1128 for(int i = 0;i < 9999;i++){
1132 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
1133 MAPSCRIPTD *MSDtop = MS.D;
1136 MAPSCRIPT0 *MSDPt = MS.D->P;
1139 MS.D->endFlag = false;
1142 double deltaET = floor(MS.D->ET2) - floor(MS.D->ET1);
1144 if(deltaET < 0) deltaET = 0;
1146 if(MS.D->ET1 <= eventTime && MS.D->ET2 >= eventTime){
1147 if(deltaET > 0) deltaR = rand()%(int)deltaET;
1150 MS.D->ET3 = MS.D->ET1 + (double)deltaR;
1151 MS.D->ET4 = MS.D->ET3;
1155 MS.D->P->endFlag = false;
1156 MS.D->P = MS.D->P->next;
1165 MF[MFselectedRow+1].MS = MS;
1169 initImgFlag = false;
1170 initStringNum = false;
1171 bugFixFlag1 = false;
1172 bugFixFlag2 = false;
1173 bugFixFlag3 = false;
1179 -(void)EventLoopFS:(NSTimer*)time{
1185 for(int i = 0;i < DUN[1];i++){
1190 //if(Utarget) NSLog(@"PX %d PY %d UX %d UY %d", possionX, possionY, Utarget->x, Utarget->y);
1195 static int lmao = 0;
1207 if(extentBattleFlag){
1210 battleSet1Flag = false;
1211 battleSet2Flag = false;
1212 battleSettingFlag = false;
1213 [self AttackDisplay];
1214 windowPoint.x = [mapWindow frame].origin.x;
1215 windowPoint.y = [mapWindow frame].origin.y;
1216 [battleWindow setFrameOrigin:windowPoint];
1217 [battleWindow makeKeyAndOrderFront:nil];
1218 extentBattleFlag = false;
1219 extentBattleFlag2 = true;
1221 if(cpuAtkExtendFlag2){
1224 battleSet1Flag = false;
1225 battleSet2Flag = false;
1226 battleSettingFlag = false;
1227 [self AttackDisplay];
1228 windowPoint.x = [mapWindow frame].origin.x;
1229 windowPoint.y = [mapWindow frame].origin.y;
1230 [battleWindow setFrameOrigin:windowPoint];
1231 [battleWindow makeKeyAndOrderFront:nil];
1232 extentBattleFlag = false;
1233 extentBattleFlag2 = true;
1234 cpuAtkExtendFlag2 = false;
1235 [battlePanel close];
1236 }if(extentBattleFlag2){
1240 if(!setBattleModeFlag){
1241 if(!battleReadyUpFlag){battleReadyUpFlag = true;
1243 P[0].resource = 500;
1246 P[1].resource = 500;
1249 P[2].resource = 500;
1256 if(setBattleModeFlag){
1257 if(!battleReadyUpFlag){battleReadyUpFlag = true;
1258 [battleReadyUpPN1 setStringValue:P[0].name];
1259 [battleReadyUpPN2 setStringValue:P[1].name];
1261 NSString *string = @"";
1262 string = [string stringByAppendingFormat:@"%@の勝利条件\n", P[0].name];
1263 if(MF[MFselectedRow+1].MS.EGClight.endType1 == 1){
1264 string = [string stringByAppendingString:@"敵の壊滅\n"];
1266 }else if(MF[MFselectedRow+1].MS.EGClight.endType1 == 2){
1267 string = [string stringByAppendingString:@"味方の壊滅\n"];
1271 string = [string stringByAppendingString:@"\n"];
1273 string = [string stringByAppendingFormat:@"%@の勝利条件\n", P[1].name];
1274 if(MF[MFselectedRow+1].MS.EGCdark.endType1 == 2){
1275 string = [string stringByAppendingString:@"敵の壊滅\n"];
1276 }else if(MF[MFselectedRow+1].MS.EGClight.endType1 == 1){
1277 string = [string stringByAppendingString:@"味方の壊滅\n"];
1282 [battleReadyUpSupply1 setIntValue:P[0].resource];
1283 [battleReadyUpFood1 setIntValue:P[0].food];
1284 [battleReadyUpMoney1 setIntValue:P[0].money];
1286 [battleReadyUpSupply2 setIntValue:P[1].resource];
1287 [battleReadyUpFood2 setIntValue:P[1].food];
1288 [battleReadyUpMoney2 setIntValue:P[1].money];
1290 if(MF[MFselectedRow+1].MS.playerSet1 == 0){
1291 [battleReadyUpMAN1A setEnabled:YES];
1292 [battleReadyUpMAN1B setEnabled:YES];
1293 [battleReadyUpMAN1A setState:1];
1294 [battleReadyUpMAN1B setState:0];
1296 }else if(MF[MFselectedRow+1].MS.playerSet1 == 1){
1297 [battleReadyUpMAN1A setEnabled:NO];
1298 [battleReadyUpMAN1B setEnabled:NO];
1299 [battleReadyUpMAN1A setState:1];
1300 [battleReadyUpMAN1B setState:0];
1301 }else if(MF[MFselectedRow+1].MS.playerSet1 == 2){
1302 [battleReadyUpMAN1A setEnabled:NO];
1303 [battleReadyUpMAN1B setEnabled:NO];
1304 [battleReadyUpMAN1A setState:0];
1305 [battleReadyUpMAN1B setState:1];
1308 if(MF[MFselectedRow+1].MS.playerSet2 == 0){
1309 [battleReadyUpMAN2A setEnabled:YES];
1310 [battleReadyUpMAN2B setEnabled:YES];
1311 [battleReadyUpMAN2A setState:1];
1312 [battleReadyUpMAN2B setState:0];
1314 }else if(MF[MFselectedRow+1].MS.playerSet2 == 1){
1315 [battleReadyUpMAN2A setEnabled:NO];
1316 [battleReadyUpMAN2B setEnabled:NO];
1317 [battleReadyUpMAN2A setState:1];
1318 [battleReadyUpMAN2B setState:0];
1319 }else if(MF[MFselectedRow+1].MS.playerSet2 == 2){
1320 [battleReadyUpMAN2A setEnabled:NO];
1321 [battleReadyUpMAN2B setEnabled:NO];
1322 [battleReadyUpMAN2A setState:0];
1323 [battleReadyUpMAN2B setState:1];
1327 if([battleReadyUpMAN1A state] != 0)
1328 MF[MFselectedRow+1].MS.playerSet1 = 1;
1330 MF[MFselectedRow+1].MS.playerSet1 = 2;
1333 if([battleReadyUpMAN2A state] != 0)
1334 MF[MFselectedRow+1].MS.playerSet2 = 1;
1336 MF[MFselectedRow+1].MS.playerSet2 = 2;
1343 if(buildNum[possionX][possionY] < 0){
1344 [selectMesh setImage:MC[chipNum[possionX][possionY]].img];
1345 [selectMeshText setStringValue:MC[chipNum[possionX][possionY]].name];
1346 [selectMeshValue setStringValue:[NSString stringWithFormat:@"%d%", MC[chipNum[possionX][possionY]].dmgfix]];
1348 [selectMesh setImage:BC[buildNum[possionX][possionY]].img];
1349 [selectMeshText setStringValue:BC[buildNum[possionX][possionY]].name];
1350 [selectMeshValue setStringValue:[NSString stringWithFormat:@"%d%", BC[buildNum[possionX][possionY]].dmgfix]];
1352 [self SetStatusFunc];
1363 if(Uselected->chipNumberL < 0){
1364 if(!Uselected->dead){
1366 if(Uselected->team == 0){
1367 [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[0].name]];
1369 if(Uselected->team == 2){
1370 [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[1].name]];
1373 [tfName setStringValue:[NSString stringWithFormat:@"%@", Uselected->C.name]];
1374 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", Uselected->C.S_C.HP, Uselected->C.S_M.HP]];
1375 [HPbarLI setIntValue:[[NSString stringWithFormat:@"%g", Uselected->C.S_C.HP/Uselected->C.S_M.HP*100 + 0.5] intValue]];
1376 [MPbarTF setStringValue:[NSString stringWithFormat:@"MP %g/%g", Uselected->C.S_C.MP, Uselected->C.S_M.MP]];
1377 [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 %g", Uselected->C.S_C.ATK]];
1378 [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 %g", Uselected->C.S_C.DEF]];
1379 [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 %g", Uselected->C.S_C.CAP]];
1380 [tfHit setStringValue:[NSString stringWithFormat:@"命中値 %g", Uselected->C.S_C.ACU]];
1381 [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 %g", Uselected->C.S_C.EVA]];
1382 [tfMove setStringValue:[NSString stringWithFormat:@"移動力 %d", Uselected->C.S_C.MOV]];
1383 [tfWait setStringValue:[NSString stringWithFormat:@"WT %g", Uselected->C.S_C.WT]];
1384 [selectChara setImage:Uselected->C.imgb];
1385 [selectChara setImageScaling:NSScaleToFit];
1390 [tfName setStringValue:[NSString stringWithFormat:@"----"]];
1391 [tfArmy setStringValue:[NSString stringWithFormat:@"----"]];
1392 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP ----"]];
1393 [HPbarLI setIntValue:[[NSString stringWithFormat:@"0"] intValue]];
1394 [MPbarTF setStringValue:[NSString stringWithFormat:@"MP ----"]];
1395 [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
1396 [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
1397 [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
1398 [tfHit setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
1399 [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
1400 [tfMove setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
1401 [tfWait setStringValue:[NSString stringWithFormat:@"WT ----"]];
1402 [selectChara setImage:NULL];
1407 if(!Uselected->dead){
1409 if(Uselected->team == 0){
1410 [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[0].name]];
1412 if(Uselected->team == 2){
1413 [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[1].name]];
1416 [tfName setStringValue:[NSString stringWithFormat:@"%@", Uselected->CL.name]];
1417 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", Uselected->CL.S_C.HP, Uselected->CL.S_M.HP]];
1418 [HPbarLI setIntValue:[[NSString stringWithFormat:@"%g", Uselected->CL.S_C.HP/Uselected->CL.S_M.HP*100 + 0.5] intValue]];
1419 [MPbarTF setStringValue:[NSString stringWithFormat:@"EN %g/%g", Uselected->CL.S_C.EN, Uselected->CL.S_M.EN]];
1420 [tfAttack setStringValue:[NSString stringWithFormat:@"移動力 %d", Uselected->CL.S_C.MOV]];
1421 [tfDefence setStringValue:[NSString stringWithFormat:@"運動性 %g", Uselected->CL.S_C.MOB]];
1422 [tfCalc setStringValue:[NSString stringWithFormat:@"装甲 %g", Uselected->CL.S_C.ARM]];
1423 [tfHit setStringValue:[NSString stringWithFormat:@"限界 %g", Uselected->CL.S_C.LIM]];
1424 [tfDodge setStringValue:[NSString stringWithFormat:@""]];
1425 [tfMove setStringValue:[NSString stringWithFormat:@""]];
1426 [tfWait setStringValue:[NSString stringWithFormat:@"WT %g", Uselected->CL.S_C.WT]];
1427 [selectChara setImage:Uselected->CL.imgb];
1428 [selectChara setImageScaling:NSScaleToFit];
1432 [tfName setStringValue:[NSString stringWithFormat:@"----"]];
1433 [tfArmy setStringValue:[NSString stringWithFormat:@"----"]];
1434 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP ----"]];
1435 [HPbarLI setIntValue:[[NSString stringWithFormat:@"0"] intValue]];
1436 [MPbarTF setStringValue:[NSString stringWithFormat:@"MP ----"]];
1437 [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
1438 [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
1439 [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
1440 [tfHit setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
1441 [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
1442 [tfMove setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
1443 [tfWait setStringValue:[NSString stringWithFormat:@"WT ----"]];
1444 [selectChara setImage:NULL];
1452 [tfName setStringValue:[NSString stringWithFormat:@"----"]];
1453 [tfArmy setStringValue:[NSString stringWithFormat:@"----"]];
1454 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP ----"]];
1455 [HPbarLI setIntValue:[[NSString stringWithFormat:@"0"] intValue]];
1456 [MPbarTF setStringValue:[NSString stringWithFormat:@"MP ----"]];
1457 [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
1458 [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
1459 [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
1460 [tfHit setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
1461 [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
1462 [tfMove setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
1463 [tfWait setStringValue:[NSString stringWithFormat:@"WT ----"]];
1464 [selectChara setImage:NULL];
1472 if(unitBreak->team == 0){
1473 [tfResource setStringValue:[NSString stringWithFormat:@"資源 %d", P[0].resource]];
1474 [tfFood setStringValue:[NSString stringWithFormat:@"食料 %d", P[0].food]];
1475 [tfMoney setStringValue:[NSString stringWithFormat:@"資金 %d", P[0].money]];
1476 }else if(unitBreak->team == 2){
1477 [tfResource setStringValue:[NSString stringWithFormat:@"資源 %d", P[1].resource]];
1478 [tfFood setStringValue:[NSString stringWithFormat:@"食料 %d", P[1].food]];
1479 [tfMoney setStringValue:[NSString stringWithFormat:@"資金 %d", P[1].money]];
1483 if(menuDisplayFlag){
1485 [self initBCreateList];
1486 [self initCSummonList];
1489 if (initMapFlag && !initStatusFlag) {
1490 [self initUnitStatus];
1491 [self initBuildStatus];
1493 //NSLog(@"%d", unitNum[1][1]);
1497 U->C.S_C.HP = U->C.S_M.HP;
1503 initStatusFlag = true;
1505 TeamCountFlag = true;
1507 unitColorInitFlag = true;
1510 for (int i = 1;i < 512;i++) {
1511 if([[SC[storyNumb].nameMAP objectAtIndex:scenarioNumb] isEqualToString:[NSString stringWithFormat:@"%@", MF[i].fileName]])
1515 [self setTargetList];
1518 [self initMapscript];
1520 initMapEventFlag = true;
1521 fieldViewBattleInitFlag = true;
1524 for(int i = 0;i < 255;i++){
1529 [self initGuildList];
1530 cpuTurnEndFlag = false;
1531 mapChipDataLoadProc = 0;
1535 if(unitBreak->team == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2){
1536 unitBreak->CPU = true;
1537 cpuAImodeflag = true;
1539 }else if(unitBreak->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2){
1540 unitBreak->CPU = true;
1541 cpuAImodeflag = true;
1543 }else if(unitBreak->team == 1){
1544 unitBreak->CPU = true;
1545 cpuAImodeflag = true;
1549 unitBreak->CPU = false;
1550 cpuAImodeflag = false;
1556 if(!cpuTurnEndFlag && wtRdy && unitBreak->C.S_C.WT == 0){
1557 [fieldView modeCPUturn];
1559 //NSLog(@"%d", U->x);
1570 [self EventFunc:true];
1576 if(battleBegin && !wtRdy2)
1582 if(!U->dead && U->C.S_C.WT > 0) U->C.S_C.WT -= 1;
1584 U->C.S_C.WT = 999999;
1587 if(U->C.S_C.WT <= 0 && !U->dead){//WTターン周り
1591 wtUnitNum = U->number;
1598 possionX = unitBreak->x;
1599 possionY = unitBreak->y;
1602 wtMovedFlag = false;
1603 wtAttackedFlag = false;
1607 [fieldView scrollPoint:NSMakePoint((wtPx-8)*32, (wtPy-8)*32)];
1609 if(buildNum[U->x][U->y] >= 0){
1613 if(B->x == U->x && B->y == U->y){
1626 U->C.S_C.HP += floor(U->C.S_M.HP*B->C.recHP/100);
1627 if(U->C.S_C.HP >= U->C.S_M.HP) U->C.S_C.HP = U->C.S_M.HP;
1631 U->C.S_C.MP += floor(U->C.S_M.MP*B->C.recMP/100);
1632 if(U->C.S_C.MP >= U->C.S_M.MP) U->C.S_C.MP = U->C.S_M.MP;
1636 U->CL.S_C.EN += floor(U->CL.S_M.EN*B->C.recEN/100);
1637 if(U->CL.S_C.EN >= U->CL.S_M.EN) U->CL.S_C.EN = U->CL.S_M.EN;
1640 if(B->C.recHPL > 0){
1641 U->CL.S_C.HP += floor(U->CL.S_M.HP*B->C.recHPL/100);
1642 if(U->CL.S_C.HP >= U->CL.S_M.HP) U->CL.S_C.HP = U->CL.S_M.HP;
1652 [self EventFunc:false];
1653 pussyCumsOnlyOnceFlag = false;
1664 if(!B->dead) B->C.S_C.WTE -= 1;
1665 if(B->C.S_C.WTE <= 0){
1668 P[0].resource += B->C.Esupply;
1669 P[0].food += B->C.Efood;
1670 P[0].money += B->C.Emoney;
1673 P[1].resource += B->C.Esupply;
1674 P[1].food += B->C.Efood;
1675 P[1].money += B->C.Emoney;
1678 P[2].resource += B->C.Esupply;
1679 P[2].food += B->C.Efood;
1680 P[2].money += B->C.Emoney;
1683 B->C.S_C.WTE = B->C.S_M.WTE;
1692 [self EventFunc:false];
1694 pussyCumsOnlyOnceFlag = false;
1703 if(battleWindowFlag){battleFlag = true; battleWindowFlag = false;
1710 static int openWait = 0;
1720 if(!battleSettingFlag){
1721 windowPoint.x = [mapWindow frame].origin.x;
1722 windowPoint.y = [mapWindow frame].origin.y;
1723 [battlePanel setFrameOrigin:windowPoint];
1724 [battlePanel makeKeyAndOrderFront:nil];
1726 [self setBattlePanel];
1731 if(!battleSetUpIgnore){
1732 [self AttackDisplay];
1734 windowPoint.x = [mapWindow frame].origin.x;
1735 windowPoint.y = [mapWindow frame].origin.y;
1736 [battleWindow setFrameOrigin:windowPoint];
1737 [battleWindow makeKeyAndOrderFront:nil];
1740 [mapWindow makeKeyAndOrderFront:nil];
1747 [self DisplayMessage];
1750 if(buildSelectedFlag){
1751 windowPoint.x = [mapWindow frame].origin.x;
1752 windowPoint.y = [mapWindow frame].origin.y;
1753 [researchPanel setFrameOrigin:windowPoint];
1754 if([self setBuildList]){
1755 [researchPanel makeKeyAndOrderFront:nil];
1757 buildSelectedFlag = false;
1760 if(mapChipDataLoadFail){
1761 [endGamePanel close];
1763 endGameCondition = false;
1764 initMapFlag = false;
1765 TeamCountFlag = false;
1766 initStatusFlag = false;
1767 battleBegin = false;
1771 blueWinFlag = false;
1775 mapChipDataLoadFail = false;
1777 }else if(initMapFlag){
1778 mapChipDataLoadProc++;
1781 if(mapChipDataLoadProc > 2)
1782 mapChipDataLoadProc = 2;
1784 if(mapChipDataLoadProc == 1){
1785 [fsWindow makeKeyAndOrderFront:nil];
1787 [titleWindow close];
1788 mapChipDataLoadProc++;
1791 if(TeamCountFlag && !endGameCondition){
1796 if((U->team == 0 || U->team == 1) && !U->dead){
1799 else if(U->team == 2 && !U->dead){
1807 if(targType1cnt[1] == 0 || targType2cnt[1] == 0){
1808 endGameCondition = true;
1810 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[1].name]];
1813 if(targType1cnt[0] == 0 || targType2cnt[0] == 0){
1814 endGameCondition = true;
1816 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
1821 endGameCondition = true;
1823 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[1].name]];
1827 endGameCondition = true;
1829 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
1833 if(TeamCount0 == 0 && (MF[MFselectedRow+1].MS.EGCdark.endType1 == 2 || MF[MFselectedRow+1].MS.EGCdark.endType2 == 2)){
1834 endGameCondition = true;
1836 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[1].name]];
1838 if(TeamCount2 == 0 && (MF[MFselectedRow+1].MS.EGClight.endType1 == 1 || MF[MFselectedRow+1].MS.EGClight.endType2 == 1)){
1839 endGameCondition = true;
1841 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
1847 static int endGamePanelWait = 100;
1849 if(endGameCondition && !battleRdy){
1851 if(redWinFlag && blueWinFlag){
1855 windowPoint.x = [mapWindow frame].origin.x+30;
1856 windowPoint.y = [mapWindow frame].origin.y+200;
1857 [endGamePanel setFrameOrigin:windowPoint];
1858 [endGamePanel makeKeyAndOrderFront:nil];
1860 if(endGamePanelWait > 0) return;
1863 [endGamePanel close];
1871 endGameCondition = false;
1872 initMapFlag = false;
1873 TeamCountFlag = false;
1874 initStatusFlag = false;
1875 battleBegin = false;
1878 cpuModeMOVEflag = false;
1879 cpuModeATTACKflag = false;
1882 blueWinFlag = false;
1883 cpuAImodeflag = false;
1884 cpuTurnEndFlag = true;
1885 waitSwtichFlag = false;
1891 endGamePanelWait = 100;
1892 stageClearFlag = false;
1893 stageClearFlag2 = false;
1894 battleReadyUpFlag = false;
1895 setBattleModeFlag = false;
1899 [titleWindow makeKeyAndOrderFront:nil];
1906 endGameCondition = false;
1907 initMapFlag = false;
1908 TeamCountFlag = false;
1909 initStatusFlag = false;
1910 battleBegin = false;
1913 cpuModeMOVEflag = false;
1914 cpuModeATTACKflag = false;
1917 blueWinFlag = false;
1918 cpuAImodeflag = false;
1919 cpuTurnEndFlag = true;
1920 backTitleFlag = false;
1921 backTitleFlag2 = true;
1922 waitSwtichFlag = false;
1923 battleReadyUpFlag = false;
1924 setBattleModeFlag = false;
1932 }if(stageClearFlag){
1934 if(stageClearFlag2){
1936 endGameCondition = true;
1938 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
1951 endGameCondition = false;
1952 initMapFlag = false;
1953 TeamCountFlag = false;
1954 initStatusFlag = false;
1955 battleBegin = false;
1958 cpuModeMOVEflag = false;
1959 cpuModeATTACKflag = false;
1962 blueWinFlag = false;
1963 cpuAImodeflag = false;
1964 cpuTurnEndFlag = true;
1965 stageClearFlag = false;
1966 waitSwtichFlag = false;
1967 battleReadyUpFlag = false;
1968 setBattleModeFlag = false;
1981 [GameOverIV setImage:gaov.img];
1984 [GameOverWindow makeKeyAndOrderFront:nil];
1987 endGameCondition = false;
1988 initMapFlag = false;
1989 TeamCountFlag = false;
1990 initStatusFlag = false;
1991 battleBegin = false;
1994 cpuModeMOVEflag = false;
1995 cpuModeATTACKflag = false;
1998 blueWinFlag = false;
1999 cpuAImodeflag = false;
2000 cpuTurnEndFlag = true;
2001 backTitleFlag = false;
2002 gameOverFlag = false;
2003 gameOverFlag2 = true;
2004 waitSwtichFlag = false;
2005 battleReadyUpFlag = false;
2006 setBattleModeFlag = false;
2016 if(!Uselected->dead){
2020 while (U->number != wtUnitNum) {
2024 if(!wtMovedFlag && !wtAttackedFlag){
2025 U->C.S_C.WT = floor(U->C.S_M.WT/4 + 0.5);
2026 }else if(wtMovedFlag && wtAttackedFlag){
2027 U->C.S_C.WT = floor(U->C.S_M.WT + 0.5);
2028 }else if(wtMovedFlag){
2029 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
2030 }else if(wtAttackedFlag){
2031 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
2044 [self addSummonStatus];
2050 SKILL *sTop = U->C.S;
2053 if(U->C.S->type == 2) break;
2054 U->C.S = U->C.S->next;
2057 U->C.S_C.MP -= U->C.S->cost[crCSL];
2066 unitNum[possionX][possionY] = U->C.S->list[crCSL]-1;
2067 unitTeam[possionX][possionY] = 0;
2070 unitColorInitFlag = true;
2074 SKILL *sTop = U->C.S;
2077 if(U->C.S->type == 2) break;
2078 U->C.S = U->C.S->next;
2081 U->C.S_C.MP -= U->C.S->cost[crCSL];
2089 unitNum[possionX][possionY] = U->C.S->list[crCSL]-1;
2090 unitTeam[possionX][possionY] = 2;
2093 unitColorInitFlag = true;
2096 summonRdyFlag = false;
2104 if(unitMoveEndFlag){
2105 pussyLoopFlag = false;
2111 if(CPUAttackSubmitFlag){
2113 CPUAttackSubmitFlag = false;
2114 windowPoint.x = [mapWindow frame].origin.x;
2115 windowPoint.y = [mapWindow frame].origin.y;
2116 [atkPanel setFrameOrigin:windowPoint];
2120 static int oopsCnt = 30;
2128 ((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
2129 (unitBreak->team == 2 && Utarget->team == 1) || (unitBreak->team == 1 && Utarget->team == 2) ||
2130 (unitBreak->team == 1 && Utarget->team == 1) || (unitBreak->team == 2 && Utarget->team == 2))
2132 if(!(AVpreview.rate > 0) && !animationFlag1 && !animationFlag2)
2137 oopsCnt = 30;//cpu攻撃ナビ
2142 battleSet1Flag = false;
2143 battleSet2Flag = false;
2144 battleSettingFlag = false;
2145 [self AttackDisplay];
2146 windowPoint.x = [mapWindow frame].origin.x;
2147 windowPoint.y = [mapWindow frame].origin.y;
2148 [battleWindow setFrameOrigin:windowPoint];
2149 [battleWindow makeKeyAndOrderFront:nil];
2150 [battlePanel close];
2155 ((Utarget && MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
2156 (unitBreak->team == 2 && Utarget->team == 1) || (unitBreak->team == 1 && Utarget->team == 2) ||
2157 (unitBreak->team == 1 && Utarget->team == 1) || (unitBreak->team == 2 && Utarget->team == 2)
2161 if(!(AVpreview.rate > 0) && !animationFlag1 && !animationFlag2)
2166 oopsCnt = 30;//cpu攻撃準備
2177 -(void)EventFunc:(bool)eventLoopProcFlag{
2179 if(battleBegin && !pussyLoopFlag){
2181 bool proccessTrue = false;
2182 static bool onlyBigin = false;
2183 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
2200 int proccesType = -1;
2202 bool EventFailFlag = false;
2203 static bool PtopFlag = false;
2228 if(MS.D->P->endFlag)
2229 MS.D->P = MS.D->P->next;
2234 MS.D->endFlag = true;
2235 messageDialog = false;
2236 [self setMessage:NULL];
2241 MAPSCRIPT0 *MSDPT = MS.D->P;
2243 if(MS.D->ETtype == 0){
2245 }else if(MS.D->ETtype == 1){
2246 bool resultFailFlag = false;
2248 if(!MS.D->P->endFlag)
2249 resultFailFlag = true;
2250 MS.D->P = MS.D->P->next;
2255 MS.D->P->endFlag = false;
2256 MS.D->P = MS.D->P->next;
2259 }else if(MS.D->ETtype == 2){
2261 bool resultFailFlag = false;
2263 if(!MS.D->P->succeessfulFlag)
2264 resultFailFlag = true;
2265 MS.D->P = MS.D->P->next;
2270 MS.D->P->endFlag = false;
2271 MS.D->P = MS.D->P->next;
2273 }else if(MS.D->ETtype == 3){
2275 bool resultFailFlag = false;
2277 if(!MS.D->P->succeessfulFlag){
2278 resultFailFlag = false;
2281 MS.D->P = MS.D->P->next;
2282 resultFailFlag = true;
2287 MS.D->P->endFlag = false;
2288 MS.D->P = MS.D->P->next;
2290 //NSLog(@"%d", UTop->x);
2291 }else if(MS.D->ETtype == 4){
2293 MS.D->P->endFlag = false;
2294 MS.D->P = MS.D->P->next;
2313 for(int i = 0;*(MS.D->switch1+i)>0;i++){
2314 if(Suicchi[*(MS.D->switch1+i)])
2317 EventFailFlag = true;
2321 for(int i = 0;*(MS.D->switch2+i)>0;i++){
2322 if(!Suicchi[*(MS.D->switch2+i)])
2325 EventFailFlag = true;
2329 if(eventTime == MS.D->ET4 || MS.D->ET4 == 0){
2330 proccessTrue = true;
2333 double deltaET = floor(MS.D->ET2) - floor(MS.D->ET1);
2335 if(deltaET < 0) deltaET = 0;
2337 if(MS.D->ET1 <= eventTime && MS.D->ET2 >= eventTime){
2338 if(deltaET > 0) deltaR = rand()%(int)deltaET;
2341 MS.D->ET3 = MS.D->ET1 + (double)deltaR;
2343 MS.D->ET4 += MS.D->ET3;
2346 // NSLog(@"%g %d", eventTime, P[0].resource);
2356 if(MS.D->type == -1 && !EventFailFlag)
2357 proccesType = ENTIRE_MAP;
2358 if(MS.D->type == 0 && pushStanbyFlag && (Uselected->x == MS.D->x && Uselected->y == MS.D->y) && !EventFailFlag)
2359 proccesType = CENTER_POINT;
2360 else if(MS.D->type == 0){
2361 proccesType = CENTER_POINT;
2362 proccessTrue = false;
2363 EventFailFlag = true;
2369 if(!MS.D->ET4 == 0 && pussyCumsOnlyOnceFlag){
2370 EventFailFlag = true;
2373 if(EventFailFlag || !proccessTrue){
2375 //MS.D->P->endFlag = true;
2376 MS.D->P = MS.D->P->next;
2384 switch (proccesType) {
2387 MS.D->P = [self setEvent:MS.D->P];
2393 if(waitSwtichFlag) {
2402 }if(stageClearFlag){
2416 MS.D->P = [self setEvent:MS.D->P];
2422 if(waitSwtichFlag) {
2431 }if(stageClearFlag){
2457 MAPSCRIPT0 *MSDPT = MS.D->P;
2458 if(MS.D->ETtype == 0){
2460 MS.D->P->succeessfulFlag = true;
2461 MS.D->endFlag = true;
2462 MS.D->P = MS.D->P->next;
2464 }else if(MS.D->ETtype == 1){
2465 bool resultFailFlag = false;
2467 if(!MS.D->P->endFlag)
2468 resultFailFlag = true;
2469 MS.D->P = MS.D->P->next;
2474 MS.D->P->succeessfulFlag = false;
2475 MS.D->endFlag = false;
2476 MS.D->P = MS.D->P->next;
2479 }else if(MS.D->ETtype == 2){
2481 bool resultFailFlag = false;
2483 if(!MS.D->P->succeessfulFlag)
2484 resultFailFlag = true;
2485 MS.D->P = MS.D->P->next;
2490 MS.D->P->succeessfulFlag = false;
2491 MS.D->endFlag = false;
2492 MS.D->P = MS.D->P->next;
2494 }else if(MS.D->ETtype == 3){
2496 bool resultFailFlag = false;
2498 if(!MS.D->P->succeessfulFlag){
2499 resultFailFlag = false;
2502 resultFailFlag = true;
2503 MS.D->P = MS.D->P->next;
2508 MS.D->P->succeessfulFlag = false;
2509 MS.D->endFlag = false;
2510 MS.D->P = MS.D->P->next;
2512 }else if(MS.D->ETtype == 4){
2514 MS.D->P->succeessfulFlag = false;
2515 MS.D->endFlag = false;
2516 MS.D->P = MS.D->P->next;
2528 MF[MFselectedRow+1].MS.D = MS.D;
2529 cpuTurnEndFlag = false;
2530 battleSetUpIgnore = false;
2531 if(!eventLoopProcFlag)
2532 pussyCumsOnlyOnceFlag = true;
2539 -(MAPSCRIPT0*)setEvent:(MAPSCRIPT0*)MS0{
2553 APPEARANCE_FLAG = 22,
2554 DISSAPPEARANCE_FLAG = 23,
2559 STAGECLEAR_FLAG = 36,
2566 Proc = MESSAGE_FLAG;
2568 Proc = SELECTION_FLAG;
2570 Proc = INPUTNUMBER_FLAG;
2582 Proc = LABELJUMP_FLAG;
2584 Proc = COMMENT_FLAG;
2586 Proc = RESOURCE_FLAG;
2588 Proc = APPEARANCE_FLAG;
2590 Proc = DISSAPPEARANCE_FLAG;
2598 Proc = GAMEOVER_FLAG;
2600 Proc = STAGECLEAR_FLAG;
2610 messageDialog = true;
2611 [self setMessage:MS0];
2614 case SELECTION_FLAG:
2616 MS0 = [self setSelection:MS0];
2619 case INPUTNUMBER_FLAG:
2620 MS0 = [self setDefault:MS0];
2625 MS0 = [self setSwitch:MS0];
2628 MS0 = [self setDefault:MS0];
2631 MS0 = [self setDefault:MS0];
2634 MS0 = [self setBranch:MS0];
2637 MS0 = [self setLabel:MS0];
2639 case LABELJUMP_FLAG:
2640 MS0 = [self setLabelJump:MS0];
2643 MS0 = [self setComment:MS0];
2646 MS0 = [self setResource:MS0];
2648 case APPEARANCE_FLAG:
2649 MS0 = [self setAppearance:MS0];
2651 case DISSAPPEARANCE_FLAG:
2652 MS0 = [self setDissappearance:MS0];
2655 MS0 = [self setWait:MS0];
2658 MS0 = [self setBGM:MS0];
2661 MS0 = [self setSE:MS0];
2664 MS0 = [self setGameOver:MS0];
2667 case STAGECLEAR_FLAG:
2668 MS0 = [self setStageClear:MS0];
2671 MS0 = [self setTitleBack:MS0];
2681 -(void)setTargetList{
2683 targType1cnt[0] = -1;
2684 targType1cnt[1] = -1;
2685 targType2cnt[0] = -1;
2686 targType2cnt[1] = -1;
2687 targType2Lflag = false;
2688 targType2Dflag = false;
2691 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
2695 for (int i = 0;i < 64;i++) {
2696 if(!MS.EGClight.etValue1[i]) break;
2697 NSArray *array1 = [MS.EGClight.etValue1[i] componentsSeparatedByString:@"["];
2698 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
2700 int Tx = [[array2 objectAtIndex:0] intValue];
2701 int Ty = [[array2 objectAtIndex:1] intValue];
2702 if(MS.EGClight.endType1 == 3){
2705 if(U->x == Tx && U->y == Ty){
2706 U->targType1L = true;
2707 if(targType1cnt[0] < 0)
2708 targType1cnt[0] = 0;
2715 if(MS.EGClight.endType1 == 4){
2718 if(U->x == Tx && U->y == Ty){
2719 U->targType2L = true;
2720 if(targType2cnt[0] < 0)
2721 targType2cnt[0] = 0;
2729 for (int i = 0;i < 64;i++) {
2730 if(!MS.EGClight.etValue2[i]) break;
2731 NSArray *array1 = [MS.EGClight.etValue2[i] componentsSeparatedByString:@"["];
2732 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
2734 int Tx = [[array2 objectAtIndex:0] intValue];
2735 int Ty = [[array2 objectAtIndex:1] intValue];
2737 if(MS.EGClight.endType2 == 3){
2740 if(U->x == Tx && U->y == Ty){
2741 U->targType1L = true;
2742 if(targType1cnt[0] < 0)
2743 targType1cnt[0] = 0;
2750 if(MS.EGClight.endType2 == 4){
2753 if(U->x == Tx && U->y == Ty){
2754 U->targType2L = true;
2755 if(targType2cnt[0] < 0)
2756 targType2cnt[0] = 0;
2764 for (int i = 0;i < 64;i++) {
2765 if(!MS.EGCdark.etValue1[i]) break;
2766 NSArray *array1 = [MS.EGCdark.etValue1[i] componentsSeparatedByString:@"["];
2767 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
2769 int Tx = [[array2 objectAtIndex:0] intValue];
2770 int Ty = [[array2 objectAtIndex:1] intValue];
2772 if(MS.EGCdark.endType1 == 3){
2775 if(U->x == Tx && U->y == Ty){
2776 U->targType1D = true;
2777 if(targType1cnt[1] < 0)
2778 targType1cnt[1] = 0;
2785 if(MS.EGCdark.endType1 == 4){
2788 if(U->x == Tx && U->y == Ty){
2789 U->targType2D = true;
2790 if(targType2cnt[1] < 0)
2791 targType2cnt[1] = 0;
2799 for (int i = 0;i < 64;i++) {
2800 if(!MS.EGCdark.etValue2[i]) break;
2801 NSArray *array1 = [MS.EGCdark.etValue2[i] componentsSeparatedByString:@"["];
2802 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
2804 int Tx = [[array2 objectAtIndex:0] intValue];
2805 int Ty = [[array2 objectAtIndex:1] intValue];
2807 if(MS.EGCdark.endType2 == 3){
2810 if(U->x == Tx && U->y == Ty){
2811 U->targType1D = true;
2812 if(targType1cnt[1] < 0)
2813 targType1cnt[1] = 0;
2820 if(MS.EGCdark.endType2 == 4){
2823 if(U->x == Tx && U->y == Ty){
2824 U->targType2D = true;
2825 if(targType2cnt[1] < 0)
2826 targType2cnt[1] = 0;
2842 -(bool)setBuildList{
2846 [self willChangeValueForKey:@"CResearchListMA"];
2847 [CResearchListMA removeAllObjects];
2848 [self didChangeValueForKey:@"CResearchListMA"];
2850 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
2851 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
2852 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
2853 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
2854 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
2855 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
2861 while (B && B->x != possionX && B->y != possionY) {
2864 B0 = &BC[buildNum[possionX][possionY]];
2872 if(buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1){
2881 }else if(buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3){
2895 if(B->makeLv >= B0->R->Lv){
2896 NSMutableDictionary* dict = [NSMutableDictionary new];
2897 [dict setValue:[NSString stringWithFormat:@"%@", BU->nameClass] forKey:@"name"];
2898 [dict setValue:[NSString stringWithFormat:@"%g", BU->S_M.HP] forKey:@"HP"];
2899 [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d", BU->S_M.cSupply, BU->S_M.cFood, BU->S_M.cMoney] forKey:@"cost"];
2900 [dict setValue:BU->img forKey:@"img"];
2903 [self willChangeValueForKey:@"CResearchListMA"];
2904 [CResearchListMA addObject:dict];
2905 [self didChangeValueForKey:@"CResearchListMA"];
2907 B0->R = B0->R->next;
2915 B = &BC[buildNum[possionX][possionY]];
2924 for(int i = 0;i <= crCRL && B->R;i++){
2927 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", BU->S_M.ATK]];
2928 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", BU->S_M.DEF]];
2929 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", BU->S_M.CAP]];
2930 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", BU->S_M.ACU]];
2931 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", BU->S_M.EVA]];
2932 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", BU->S_M.MOV]];
2933 [researchIMG setImage:BU->imgb];
2934 [researchIMG setImageScaling:NSScaleToFit];
2941 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
2943 if(B->GuildFlag &&( buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1)){
2945 int a = MS.guildListRegistNum12 - MS.guildListRegistNum11;
2950 Gnum1 = MS.guildListRegistNum11 + arc4random()%(MS.guildListRegistNum12 - MS.guildListRegistNum11+1);
2952 Gnum1 = MS.guildListRegistNum12;
2954 if(Gnum1 > GCnum1+1)
2959 saveGuildList = calloc((GCnum1+1), sizeof(int));
2960 if(!guildRE1) GuildDisp1 = calloc(Gnum1, sizeof(int));
2961 for(int i = 0;i < Gnum1;i++){
2964 n = [self chooseGuildList:GuildChosen1 gcnum:GCnum1];
2967 *(GuildDisp1 + i) = *(GuildChosen1 + n);
2970 if(*(GuildDisp1 + i) <= 0)
2973 NSMutableDictionary* dict = [NSMutableDictionary new];
2974 [dict setValue:[NSString stringWithFormat:@"%@", UC[*(GuildDisp1 + i)-1].name] forKey:@"name"];
2975 [dict setValue:[NSString stringWithFormat:@"%g", UC[*(GuildDisp1 + i)-1].S_M.HP] forKey:@"HP"];
2976 [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d", UC[*(GuildDisp1 + i)-1].S_M.cSupply, UC[*(GuildDisp1 + i)-1].S_M.cFood, UC[*(GuildDisp1 + i)-1].S_M.cMoney] forKey:@"cost"];
2977 [dict setValue:UC[*(GuildDisp1 + i)-1].img forKey:@"img"];
2980 [self willChangeValueForKey:@"CResearchListMA"];
2981 [CResearchListMA addObject:dict];
2982 [self didChangeValueForKey:@"CResearchListMA"];
2996 for(int i = k;i <= crCRL;i++){
2998 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ATK]];
2999 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.DEF]];
3000 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.CAP]];
3001 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ACU]];
3002 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.EVA]];
3003 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp1 + i - k)-1].S_M.MOV]];
3004 [researchIMG setImage:UC[*(GuildDisp1 + i - k)-1].imgb];
3005 [researchIMG setImageScaling:NSScaleToFit];
3010 }else if(B->GuildFlag && (buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3)){
3012 int a = MS.guildListRegistNum22 - MS.guildListRegistNum21;
3017 Gnum2 = MS.guildListRegistNum21 + arc4random()%(MS.guildListRegistNum22 - MS.guildListRegistNum21+1);
3019 Gnum2 = MS.guildListRegistNum22;
3021 if(Gnum2 > GCnum2+1)
3027 saveGuildList = calloc((GCnum2+1), sizeof(int));
3028 if(!guildRE2) GuildDisp2 = calloc(Gnum2, sizeof(int));
3029 for(int i = 0;i < Gnum2;i++){
3031 n = [self chooseGuildList:GuildChosen2 gcnum:GCnum2];
3034 *(GuildDisp2 + i) = *(GuildChosen2 + n);
3037 if(*(GuildDisp2 + i) <= 0)
3040 NSMutableDictionary* dict = [NSMutableDictionary new];
3041 [dict setValue:[NSString stringWithFormat:@"%@", UC[*(GuildDisp2 + i)-1].name] forKey:@"name"];
3042 [dict setValue:[NSString stringWithFormat:@"%g", UC[*(GuildDisp2 + i)-1].S_M.HP] forKey:@"HP"];
3043 [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d", UC[*(GuildDisp2 + i)-1].S_M.cSupply, UC[*(GuildDisp2 + i)-1].S_M.cFood, UC[*(GuildDisp2 + i)-1].S_M.cMoney] forKey:@"cost"];
3044 [dict setValue:UC[*(GuildDisp2 + i)-1].img forKey:@"img"];
3047 [self willChangeValueForKey:@"CResearchListMA"];
3048 [CResearchListMA addObject:dict];
3049 [self didChangeValueForKey:@"CResearchListMA"];
3059 for(int i = k;i <= crCRL;i++){
3061 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ATK]];
3062 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.DEF]];
3063 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.CAP]];
3064 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ACU]];
3065 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.EVA]];
3066 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp2 + i - k)-1].S_M.MOV]];
3067 [researchIMG setImage:UC[*(GuildDisp2 + i - k)-1].imgb];
3068 [researchIMG setImageScaling:NSScaleToFit];
3085 -(int)chooseGuildList:(int*)value gcnum:(int)gcnum{
3089 bool sameFlag = false;
3090 bool sameFlag2 = false;
3092 if(guildc >= gcnum+1){
3097 a = arc4random()%(gcnum+1);
3099 for(int i = 0;i < guildc;i++){
3100 if(*(saveGuildList+i) == a){
3109 *(saveGuildList+guildc) = a;
3115 if([UC[*(value + a)-1].nameID isEqualToString:U->C.nameID]){
3130 -(void)initGuildList{
3132 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
3134 GuildChosen1 = calloc(UCN, sizeof(int));
3135 GuildChosen2 = calloc(UCN, sizeof(int));
3138 for (int i = 0;i < UCN;i++) {
3139 if(MS.guildListRegist[i]){
3141 *(GuildChosen1 + GCnum1) = i+1;
3145 for (int i = 0;i < UCN;i++) {
3146 if(MS.guildListRegist2[i]){
3148 *(GuildChosen2 + GCnum2) = i+1;
3157 [self setCommandPanel];
3158 [menuPanel makeKeyAndOrderFront:nil];
3161 -(IBAction)pushMove:(id)sender{menuDisplayFlag = false;
3168 -(IBAction)pushAttack:(id)sender{menuDisplayFlag = false;
3172 windowPoint.x = [mapWindow frame].origin.x;
3173 windowPoint.y = [mapWindow frame].origin.y;
3174 [atkPanel setFrameOrigin:windowPoint];
3177 while (!(AUN[1] == U->number)) {
3181 if(U->chipNumberL >= 0){
3183 [self initCAttackList2];
3184 [self initCAttackSelect2];
3186 else if(U->chipNumber >= 0) {
3188 [self initCAttackList];
3189 [self initCAttackSelect];
3192 [atkPanel makeKeyAndOrderFront:nil];
3194 -(IBAction)pushStandby:(id)sender{menuDisplayFlag = false;
3198 while (U->number != wtUnitNum) {
3202 if(!wtMovedFlag && !wtAttackedFlag){
3203 U->C.S_C.WT = floor(U->C.S_M.WT/4 + 0.5);
3204 }else if(wtMovedFlag && wtAttackedFlag){
3205 U->C.S_C.WT = floor(U->C.S_M.WT + 0.5);
3206 }else if(wtMovedFlag){
3207 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
3208 }else if(wtAttackedFlag){
3209 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
3214 if(B->x == possionX && B->y == possionY && B->C.capture){
3215 buildCaptureFlag = true;
3216 unitMoveEndFlag = true;
3225 pushStanbyFlag = true;
3226 pussyLoopFlag = false;
3229 -(IBAction)pushCreate:(id)sender{menuDisplayFlag = false;
3234 windowPoint.x = [mapWindow frame].origin.x;
3235 windowPoint.y = [mapWindow frame].origin.y;
3236 [createPanel setFrameOrigin:windowPoint];
3238 [self initBCreateList];
3239 [createPanel makeKeyAndOrderFront:nil];
3242 -(IBAction)pushSummon:(id)sender{menuDisplayFlag = false;
3247 windowPoint.x = [mapWindow frame].origin.x;
3248 windowPoint.y = [mapWindow frame].origin.y;
3249 [summonPanel setFrameOrigin:windowPoint];
3251 [self initCSummonList];
3252 [summonPanel makeKeyAndOrderFront:nil];
3257 -(void)initStatusWindow{
3261 [STIV setImage:Uselected->C.imgb];
3262 [STnameTF setStringValue:Uselected->C.name];
3263 [STclassTF setStringValue:Uselected->C.nameClass];
3264 [SThpTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", Uselected->C.S_C.HP, Uselected->C.S_M.HP]];
3265 [STmpTF setStringValue:[NSString stringWithFormat:@"MP %g/%g", Uselected->C.S_C.MP, Uselected->C.S_M.MP]];
3266 [STatkTF setStringValue:[NSString stringWithFormat:@"ATK %g", Uselected->C.S_C.ATK]];
3267 [STdefTF setStringValue:[NSString stringWithFormat:@"DEF %g", Uselected->C.S_C.DEF]];
3268 [STcapTF setStringValue:[NSString stringWithFormat:@"CAP %g", Uselected->C.S_C.CAP]];
3269 [STacuTF setStringValue:[NSString stringWithFormat:@"ACU %g", Uselected->C.S_C.ACU]];
3270 [STevaTF setStringValue:[NSString stringWithFormat:@"EVA %g", Uselected->C.S_C.EVA]];
3271 [STstrTF setStringValue:[NSString stringWithFormat:@"STR %g", Uselected->C.S_C.STR]];
3272 [STvitTF setStringValue:[NSString stringWithFormat:@"VIT %g", Uselected->C.S_C.VIT]];
3273 [STagiTF setStringValue:[NSString stringWithFormat:@"AGI %g", Uselected->C.S_C.AGI]];
3274 [STdexTF setStringValue:[NSString stringWithFormat:@"DEX %g", Uselected->C.S_C.DEX]];
3275 [STmenTF setStringValue:[NSString stringWithFormat:@"MEN %g", Uselected->C.S_C.MEN]];
3276 [STintTF setStringValue:[NSString stringWithFormat:@"INT %g", Uselected->C.S_C.INT]];
3277 [STmelTF setStringValue:[NSString stringWithFormat:@"MEL %g", Uselected->C.S_C.MEL]];
3278 [STmisTF setStringValue:[NSString stringWithFormat:@"MIS %g", Uselected->C.S_C.MIS]];
3279 [SThitTF setStringValue:[NSString stringWithFormat:@"HIT %g", Uselected->C.S_C.HIT]];
3280 [STdodTF setStringValue:[NSString stringWithFormat:@"DOD %g", Uselected->C.S_C.DOD]];
3281 [STreaTF setStringValue:[NSString stringWithFormat:@"REA %g", Uselected->C.S_C.REA]];
3282 [STskiTF setStringValue:[NSString stringWithFormat:@"SKI %g", Uselected->C.S_C.SKI]];
3283 [STvigTF setStringValue:[NSString stringWithFormat:@"VIG %d", Uselected->C.S_C.vigor]];
3294 -(IBAction)pushStatus:(id)sender{menuDisplayFlag = false;
3296 [self initStatusWindow];
3298 windowPoint.x = [mapWindow frame].origin.x;
3299 windowPoint.y = [mapWindow frame].origin.y;
3300 [STwindow setFrameOrigin:windowPoint];
3301 [STwindow makeKeyAndOrderFront:nil];
3308 -(IBAction)STsubmit:(id)sender{
3313 -(IBAction)pushCancel:(id)sender{menuDisplayFlag = false;
3319 -(IBAction)pushCancelCAL:(id)sender{
3324 -(IBAction)pushCancelBCL:(id)sender{
3326 [createPanel close];
3329 -(IBAction)pushCancelCSL:(id)sender{
3331 [summonPanel close];
3334 -(void)addBuildStatus{
3339 if(registerNumB == 1){
3340 B = calloc(1, sizeof(BUILD));
3347 while (B->next) {omgCnt++;
3350 if(registerNumB != 1){
3351 B->next = calloc(1, sizeof(BUILD));
3352 if(registerNumB == 2)
3358 B->number = registerNumB;
3361 B->chipNumber = BC[buildNum[possionX][possionY]].chipNumb;
3364 B->C = BC[buildNum[possionX][possionY]];
3365 B->img = [BC[buildNum[possionX][possionY]].img retain];
3366 unitColorInitFlag = true;
3368 if(buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1){
3370 if(unitTeam[possionX][possionY] == 0){
3371 U->joinArmyFromNext = true;
3372 U->persuasion = true;
3375 if(buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3){
3378 if(buildTeam[possionX][possionY] == 4 || buildTeam[possionX][possionY] == 5){
3381 if(buildTeam[possionX][possionY] == -1){
3390 -(void)addUnitStatus{
3393 while (U->next) {omgCnt++;
3396 U->next = calloc(1, sizeof(UNIT));
3399 if(omgCnt == 0) UTop = U;
3400 U->number = registerNum;
3402 for(int i = 0;i < UCN;i++){
3403 if([U->C.nameID isEqualToString:UC[i].nameID])
3407 U->chipNumber = unitNum[possionX][possionY];
3408 U->chipNumberL = loadNum[possionX][possionY];
3409 U->C.chipNumb = unitNum[possionX][possionY];
3410 U->CL.chipNumb = loadNum[possionX][possionY];
3414 if(unitTeam[possionX][possionY] == 0 || unitTeam[possionX][possionY] == 1){
3416 if(unitTeam[possionX][possionY] == 1){
3417 U->joinArmyFromNext = true;
3418 U->persuasion = true;
3421 if(MF[MFselectedRow+1].MS.playerSet1 == 2){
3425 if(unitTeam[possionX][possionY] == 2 || unitTeam[possionX][possionY] == 3){
3427 if(unitTeam[possionX][possionY] == 3){
3428 U->joinArmyFromNext = true;
3429 U->persuasion = true;
3432 if(MF[MFselectedRow+1].MS.playerSet2 == 2){
3436 if(unitTeam[possionX][possionY] == 4 || unitTeam[possionX][possionY] == 5){
3438 if(unitTeam[possionX][possionY] == 5){
3439 U->joinArmyFromNext = true;
3440 U->persuasion = true;
3444 if(unitTeam[possionX][possionY] == -1){
3446 if(unitTeam[possionX][possionY] == 0){
3447 U->joinArmyFromNext = false;
3448 U->persuasion = true;
3454 [self SetUnitStatus:unitNum[possionX][possionY]];
3459 -(void)addSummonStatus{
3463 while (U->next) {omgCnt++;
3466 U->next = calloc(1, sizeof(UNIT));
3469 if(omgCnt == 0) UTop = U;
3476 if(unitTeam[CSLU->x][CSLU->y] == 0 || unitTeam[CSLU->x][CSLU->y] == 1){
3478 if(unitTeam[CSLU->x][CSLU->y] == 1){
3479 U->joinArmyFromNext = true;
3480 U->persuasion = true;
3483 if(unitTeam[CSLU->x][CSLU->y] == 2 || unitTeam[CSLU->x][CSLU->y] == 3){
3485 if(unitTeam[CSLU->x][CSLU->y] == 3){
3486 U->joinArmyFromNext = true;
3487 U->persuasion = true;
3490 if(unitTeam[CSLU->x][CSLU->y] == 4 || unitTeam[CSLU->x][CSLU->y] == 5){
3492 if(unitTeam[CSLU->x][CSLU->y] == 5){
3493 U->joinArmyFromNext = true;
3494 U->persuasion = true;
3497 if(unitTeam[CSLU->x][CSLU->y] == -1){
3499 if(unitTeam[CSLU->x][CSLU->y] == 0){
3500 U->joinArmyFromNext = false;
3501 U->persuasion = true;
3505 [self SetUnitStatus:unitNum[possionX][possionY]];
3507 for(int i = 0;i < UCN;i++){
3508 if([U->C.nameID isEqualToString:UC[i].nameID])
3511 for(int i = 0;i < LCN;i++){
3512 if([U->CL.nameID isEqualToString:LC[i].nameID])
3515 for(int i = 0;i < UCN;i++){
3516 if([U->C.nameID isEqualToString:UC[i].nameID])
3519 for(int i = 0;i < LCN;i++){
3520 if([U->CL.nameID isEqualToString:LC[i].nameID])
3529 -(void)initUnitStatus{
3533 for(int i=1;i <= chipHeight;i++){
3534 for(int j=1;j<= chipWidth;j++){
3535 if(unitNum[j][i] >= 0 || loadNum[j][i] >= 0){
3536 if(registerNum == 1){
3537 U = calloc(1, sizeof(UNIT));
3544 U->number = registerNum;
3545 U->chipNumber = unitNum[j][i];
3546 U->chipNumberL = loadNum[j][i];
3547 U->C.chipNumb = U->chipNumber;
3548 U->CL.chipNumb = U->chipNumberL;
3551 if(unitTeam[j][i] == 0 || unitTeam[j][i] == 1){
3553 if(unitTeam[j][i] == 1){
3554 U->joinArmyFromNext = true;
3555 U->persuasion = true;
3557 if(MF[MFselectedRow+1].MS.playerSet1 == 2)
3560 if(unitTeam[j][i] == 2 || unitTeam[j][i] == 3){
3562 if(unitTeam[i][j] == 2){
3563 U->joinArmyFromNext = true;
3564 U->persuasion = true;
3566 if(MF[MFselectedRow+1].MS.playerSet2 == 2)
3569 if(unitTeam[j][i] == 4 || unitTeam[j][i] == 5){
3571 if(unitTeam[j][i] == 5){
3572 U->joinArmyFromNext = true;
3573 U->persuasion = true;
3577 if(unitTeam[j][i] == -1){
3579 if(unitTeam[j][i] == -1){
3580 U->joinArmyFromNext = false;
3581 U->persuasion = true;
3585 if(unitNum[j][i] >= 0) [self SetUnitStatus:unitNum[j][i]];
3586 if(loadNum[j][i] >= 0) [self SetUnitStatus2:loadNum[j][i]];
3588 U->next = calloc(1, sizeof(UNIT));
3599 if(Ucrnt->x == U->x && Ucrnt->y == U->y){
3611 if(U) U->next = NULL;
3616 -(void)initBuildStatus{
3619 for(int i=1;i <= chipHeight;i++){
3620 for(int j=1;j<= chipWidth;j++){
3621 if(buildNum[j][i] >= 0){
3623 if(registerNumB == 1){
3624 B = calloc(1, sizeof(BUILD));
3627 if(registerNumB > 1)
3631 B->number = registerNumB;
3632 B->chipNumber = buildNum[j][i];
3634 if(buildTeam[j][i] == 0 || buildTeam[j][i] == 1){
3638 if(buildTeam[j][i] == 2 || buildTeam[j][i] == 3){
3642 if(buildTeam[j][i] == 4 || buildTeam[j][i] == 5){
3646 if(buildTeam[j][i] == -1){
3650 //[self SetUnitStatus:unitNum[j][i]];
3652 B->C = BC[buildNum[j][i]];
3654 B->next = calloc(1, sizeof(BUILD));
3660 if(B) B->next = NULL;
3665 -(void)SetUnitStatus:(int)UN{
3668 U->C.S_C.vigor = 100;
3675 AtopE1 = UC[UN].eHandL.A;
3676 AtopE2 = UC[UN].eHandR.A;
3677 U->C.A = calloc(1, sizeof(ATTACK));
3683 while(UC[UN].eHandR.A != NULL){ow1 = true;
3684 *U->C.A = *UC[UN].eHandR.A;
3685 U->C.A->next = calloc(1, sizeof(ATTACK));
3686 U->C.A->next->next = NULL;
3687 if(UC[UN].eHandR.A->next != NULL) U->C.A = U->C.A->next;
3688 UC[UN].eHandR.A = UC[UN].eHandR.A->next;
3689 U->C.attackListNum++;
3691 UC[UN].eHandR.A = AtopE2;
3695 U->C.A = U->C.A->next;
3698 while(UC[UN].eHandL.A != NULL){ow2 = true;
3699 *U->C.A = *UC[UN].eHandL.A;
3700 U->C.A->next = calloc(1, sizeof(ATTACK));
3701 U->C.A->next->next = NULL;
3702 if(UC[UN].eHandL.A->next != NULL) U->C.A = U->C.A->next;
3703 UC[UN].eHandL.A = UC[UN].eHandL.A->next;
3704 U->C.attackListNum++;
3706 UC[UN].eHandL.A = AtopE1;
3709 U->C.A = U->C.A->next;
3712 while(UC[UN].A != NULL){
3713 *U->C.A = *UC[UN].A;
3714 U->C.A->next = calloc(1, sizeof(ATTACK));
3715 U->C.A->next->next = NULL;
3716 if(UC[UN].A->next != NULL) U->C.A = U->C.A->next;
3717 UC[UN].A = UC[UN].A->next;
3719 U->C.A->next = NULL;
3722 if(U->C.A) if(!U->C.A->name)
3727 -(void)SetUnitStatus2:(int)UN{
3734 U->CL.A = calloc(1, sizeof(ATTACK));
3736 while(LC[UN].A != NULL){
3737 *U->CL.A = *LC[UN].A;
3738 U->CL.A->next = calloc(1, sizeof(ATTACK));
3739 U->CL.A->next->next = NULL;
3740 if(LC[UN].A->next != NULL) U->CL.A = U->CL.A->next;
3741 LC[UN].A = LC[UN].A->next;
3743 U->CL.A->next = NULL;
3750 -(void)initCAttackList2{
3753 CAttackListMA = [NSMutableArray new];
3755 [self willChangeValueForKey:@"CAttackListMA"];
3756 [CAttackListMA removeAllObjects];
3757 [self didChangeValueForKey:@"CAttackListMA"];
3760 if(!battleSet2PushedFlag){
3762 while (!(AUN[1] == U->number)) {
3766 for(int i = 0;i < U->CL.attackListNum;i++){
3768 NSMutableDictionary* dict = [NSMutableDictionary new];
3769 [dict setValue:[NSString stringWithFormat:@"%@", U->CL.A->name] forKey:@"name"];
3770 [dict setValue:[NSString stringWithFormat:@"%g", U->CL.A->totalD] forKey:@"atk"];
3771 if(U->CL.A->rangeA != U->CL.A->rangeB){
3772 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->CL.A->rangeA, U->CL.A->rangeB] forKey:@"range"];
3774 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->rangeA] forKey:@"range"];
3776 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->hitPercent] forKey:@"hit"];
3777 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
3779 [self willChangeValueForKey:@"CAttackListMA"];
3780 [CAttackListMA addObject:dict];
3781 [self didChangeValueForKey:@"CAttackListMA"];
3783 U->CL.A = U->CL.A->next;
3789 while (!(DUN[1] == U->number)) {
3793 for(int i = 0;i < U->CL.attackListNum;i++){
3796 U->CL.attackListNum = i;
3799 NSMutableDictionary* dict = [NSMutableDictionary new];
3800 [dict setValue:[NSString stringWithFormat:@"%@", U->CL.A->name] forKey:@"name"];
3801 [dict setValue:[NSString stringWithFormat:@"%g", U->CL.A->totalD] forKey:@"atk"];
3802 if(U->CL.A->rangeA != U->CL.A->rangeB){
3803 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->CL.A->rangeA, U->CL.A->rangeB] forKey:@"range"];
3805 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->rangeA] forKey:@"range"];
3807 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->hitPercent] forKey:@"hit"];
3808 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
3810 [self willChangeValueForKey:@"CAttackListMA"];
3811 [CAttackListMA addObject:dict];
3812 [self didChangeValueForKey:@"CAttackListMA"];
3814 U->CL.A = U->CL.A->next;
3822 [CAttackListAC setSelectionIndex:crCAL];
3824 [self initCAttackSelect2];
3831 -(void)initCAttackList{
3833 CAttackListMA = [NSMutableArray new];
3835 [self willChangeValueForKey:@"CAttackListMA"];
3836 [CAttackListMA removeAllObjects];
3837 [self didChangeValueForKey:@"CAttackListMA"];
3840 if(!battleSet2PushedFlag){
3842 while (!(AUN[1] == U->number)) {
3846 for(int i = 0;i < U->C.attackListNum;i++){
3848 U->C.attackListNum = i;
3851 NSMutableDictionary* dict = [NSMutableDictionary new];
3852 [dict setValue:[NSString stringWithFormat:@"%@", U->C.A->name] forKey:@"name"];
3853 [dict setValue:[NSString stringWithFormat:@"%g", U->C.A->totalD] forKey:@"atk"];
3854 if(U->C.A->rangeA != U->C.A->rangeB){
3855 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->C.A->rangeA, U->C.A->rangeB] forKey:@"range"];
3857 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->rangeA] forKey:@"range"];
3859 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->hitPercent] forKey:@"hit"];
3860 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
3862 [self willChangeValueForKey:@"CAttackListMA"];
3863 [CAttackListMA addObject:dict];
3864 [self didChangeValueForKey:@"CAttackListMA"];
3866 U->C.A = U->C.A->next;
3873 while (!(DUN[1] == U->number)) {
3877 for(int i = 0;i < U->C.attackListNum;i++){
3878 NSMutableDictionary* dict = [NSMutableDictionary new];
3879 [dict setValue:[NSString stringWithFormat:@"%@", U->C.A->name] forKey:@"name"];
3880 [dict setValue:[NSString stringWithFormat:@"%g", U->C.A->totalD] forKey:@"atk"];
3881 if(U->C.A->rangeA != U->C.A->rangeB){
3882 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->C.A->rangeA, U->C.A->rangeB] forKey:@"range"];
3884 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->rangeA] forKey:@"range"];
3886 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->hitPercent] forKey:@"hit"];
3887 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
3889 [self willChangeValueForKey:@"CAttackListMA"];
3890 [CAttackListMA addObject:dict];
3891 [self didChangeValueForKey:@"CAttackListMA"];
3893 U->C.A = U->C.A->next;
3901 [CAttackListAC setSelectionIndex:crCAL];
3903 [self initCAttackSelect];
3906 -(void)initBCreateList{
3907 BCreateListMA = [NSMutableArray new];
3909 [self willChangeValueForKey:@"BCreateListMA"];
3910 [BCreateListMA removeAllObjects];
3911 [self didChangeValueForKey:@"BCreateListMA"];
3912 buildSkillFlag = false;
3916 while (!(AUN[1] == U->number)) {
3924 while (U->C.S->type != 1 && U->C.S->next) {
3925 U->C.S = U->C.S->next;
3927 if(U->C.S->type != 1) {
3932 for(int i = 0;U->C.S->list[i] > 0;i++){
3933 NSMutableDictionary* dict = [NSMutableDictionary new];
3934 [dict setValue:[NSString stringWithFormat:@"%@", BC[U->C.S->list[i]-1].name] forKey:@"name"];
3935 [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d",
3936 BC[U->C.S->list[i]-1].Csupply, BC[U->C.S->list[i]-1].Cfood, BC[U->C.S->list[i]-1].Cmoney] forKey:@"cost"];
3937 [dict setValue:BC[U->C.S->list[i]-1].img forKey:@"img"];
3939 [self willChangeValueForKey:@"BCreateListMA"];
3940 [BCreateListMA addObject:dict];
3941 [self didChangeValueForKey:@"BCreateListMA"];
3943 buildSkillFlag = true;
3949 -(void)initCSummonList{
3950 CSummonListMA = [NSMutableArray new];
3952 [self willChangeValueForKey:@"CSummonListMA"];
3953 [CSummonListMA removeAllObjects];
3954 [self didChangeValueForKey:@"CSummonListMA"];
3956 summonSkillFlag = false;
3960 while (!(AUN[1] == U->number)) {
3968 while (U->C.S->type != 2 && U->C.S->next) {
3969 U->C.S = U->C.S->next;
3971 if(U->C.S->type != 2) {
3976 for(int i = 0;U->C.S->list[i] > 0;i++){
3977 NSMutableDictionary* dict = [NSMutableDictionary new];
3978 [dict setValue:[NSString stringWithFormat:@"%@", UC[U->C.S->list[i]-1].nameClass] forKey:@"name"];
3979 [dict setValue:[NSString stringWithFormat:@"%g", UC[U->C.S->list[i]-1].S_M.HP] forKey:@"HP"];
3980 [dict setValue:[NSString stringWithFormat:@"%g", U->C.S->cost[i]] forKey:@"cost"];
3981 [dict setValue:UC[U->C.S->list[i]-1].img forKey:@"img"];
3983 [self willChangeValueForKey:@"CSummonListMA"];
3984 [CSummonListMA addObject:dict];
3985 [self didChangeValueForKey:@"CSummonListMA"];
3987 summonSkillFlag = true;
3995 -(void)AttackDisplay{
3997 if(battleRdy) return;
4000 while (!(AUN[1] == U->number)) {
4003 [bplayer1 setImage:U->C.imgb];
4004 [bplayer1 setImageScaling:NSScaleToFit];
4005 [nplayer1 setStringValue:U->C.name];
4006 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4007 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
4008 [iplayer1 setImage:MC[chipNum[U->x][U->y]].img];
4009 [mplayer1 setStringValue:MC[chipNum[U->x][U->y]].name];
4010 [rplayer1 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U->x][U->y]].dmgfix]];
4016 while (!(DUN[1] == U->number)) {
4019 [bplayer2 setImage:U->C.imgb];
4020 [bplayer1 setImageScaling:NSScaleToFit];
4021 [nplayer2 setStringValue:U->C.name];
4022 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4023 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
4024 [iplayer2 setImage:MC[chipNum[U->x][U->y]].img];
4025 [mplayer2 setStringValue:MC[chipNum[U->x][U->y]].name];
4026 [rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U->x][U->y]].dmgfix]];
4029 [self AttackDisplay2];
4032 [battleDialog setStringValue:@"攻撃開始!"];
4038 -(void)AttackDisplay2{
4042 while (!(DUN[1] == U->number)) {
4047 while (!(AUN[1] == U->number)) {
4052 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){U = UTop;
4055 while (!(AUN[1] == U->number)) {
4058 [bplayer1 setImage:U->CL.imgb];
4059 [bplayer1 setImageScaling:NSScaleToFit];
4060 [nplayer1 setStringValue:U->CL.name];
4061 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4062 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
4068 while (!(DUN[1] == U->number)) {
4071 [bplayer2 setImage:U->CL.imgb];
4072 [bplayer1 setImageScaling:NSScaleToFit];
4073 [nplayer2 setStringValue:U->CL.name];
4074 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4075 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
4079 }else if(U->chipNumberL >= 0 && U2->chipNumberL < 0){U = UTop;
4081 while (!(AUN[1] == U->number)) {
4084 [bplayer1 setImage:U->CL.imgb];
4085 [bplayer1 setImageScaling:NSScaleToFit];
4086 [nplayer1 setStringValue:U->CL.name];
4087 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4088 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
4094 while (!(DUN[1] == U->number)) {
4097 [bplayer2 setImage:U->C.imgb];
4098 [bplayer1 setImageScaling:NSScaleToFit];
4099 [nplayer2 setStringValue:U->C.name];
4100 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4101 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
4107 }else if(U->chipNumberL < 0 && U2->chipNumberL >= 0){U = UTop;
4109 while (!(AUN[1] == U->number)) {
4112 [bplayer1 setImage:U->C.imgb];
4113 [bplayer1 setImageScaling:NSScaleToFit];
4114 [nplayer1 setStringValue:U->C.name];
4115 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4116 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
4122 while (!(DUN[1] == U->number)) {
4125 [bplayer2 setImage:U->CL.imgb];
4126 [bplayer1 setImageScaling:NSScaleToFit];
4127 [nplayer2 setStringValue:U->CL.name];
4128 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4129 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
4137 -(void)setBattlePanel{
4141 while (!(DUN[1] == U->number)) {
4146 while (!(AUN[1] == U->number)) {
4150 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){
4152 [self setBattlePanelT2];
4154 }else if(U->chipNumberL >= 0 && U2->chipNumberL <= 0){
4156 [self setBattlePanelT3];
4158 }else if(U->chipNumberL <= 0 && U2->chipNumberL >= 0){
4160 [self setBattlePanelT4];
4165 while (!(AUN[1] == U->number)) {
4169 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 || MF[MFselectedRow+1].MS.playerSet2 == 2)){
4170 cpuModeBATTLEflag = false;
4176 ATTACK *aTop2 = U->C.A;
4188 double urSupposedToGet;
4190 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
4194 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
4197 double oopsIsRight = 0;
4201 oopsIsRight = U->C.S_C.MEL;
4203 oopsIsRight = U->C.S_C.MIS;
4205 oopsIsRight = oopsIsRight/100;
4207 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
4209 if(!U2->C.aura && U->C.A->D){
4210 if(U->C.A->D->type == 0) mostDmg2 = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4211 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4212 if(U->C.A->D->type == 1) mostDmg2 = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4213 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4214 if(U->C.A->D->type == 2) mostDmg2 = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4215 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4216 if(U->C.A->D->type == 3) mostDmg2 = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4217 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4218 if(U->C.A->D->type == 4) mostDmg2 = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4219 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4220 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
4221 }else if(U->C.A->D){
4222 double val = val = 1/log(3+U2->C.S_C.MP/64);
4223 if(U->C.A->D->type == 0) mostDmg2 = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4224 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
4225 if(U->C.A->D->type == 1) mostDmg2 = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4226 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
4227 if(U->C.A->D->type == 2) mostDmg2 = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4228 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
4229 if(U->C.A->D->type == 3) mostDmg2 = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4230 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
4231 if(U->C.A->D->type == 4) mostDmg2 = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4232 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
4233 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
4235 double val2 = log(3+U2->C.S_C.MP/64);
4237 mostDmg2 = mostDmg2*val2;
4240 if(U->C.A->D->fix == 2){
4241 mostDmg2 = mostDmg2/2 + (U->C.S_C.HIT/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
4243 if(U->C.A->D->type == 0) mostDmg2 -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4244 if(U->C.A->D->type == 1) mostDmg2 -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4245 if(U->C.A->D->type == 2) mostDmg2 -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4246 if(U->C.A->D->type == 3) mostDmg2 -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4247 if(U->C.A->D->type == 4) mostDmg2 -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4250 }else if(U->C.A->D->fix == 1){
4251 mostDmg2 = mostDmg2/2 + ((U->C.S_C.ATK/2+U->C.S_C.HIT/2)/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
4253 if(U->C.A->D->type == 0) mostDmg2 -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4254 if(U->C.A->D->type == 1) mostDmg2 -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4255 if(U->C.A->D->type == 2) mostDmg2 -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4256 if(U->C.A->D->type == 3) mostDmg2 -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4257 if(U->C.A->D->type == 4) mostDmg2 -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4259 }else if(U->C.A->D->fix == 0){
4266 costVIG = U->C.A->vigor;
4269 mostDmg2 = [self dmgResist:mostDmg2];
4271 //NSLog(@"crCAL1 %d", crCAL1);
4272 if(mostDmg2 < 0) mostDmg2 = 1;
4275 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){
4279 //mostDmg = U->C.A->totalD;
4283 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){
4284 //mostDmg = U->C.A->totalD;
4285 mostHit = U->C.A->hitPercent;
4288 U->C.A = U->C.A->next;
4293 if(U->C.A->extent == 0 && mostNum >= 0 && !CPUmostDmgChoice){
4297 for(int i = 0;i < mostNum;i++){
4298 U->C.A = U->C.A->next;
4304 for(int i = 0;i < crCAL1;i++){
4305 U->C.A = U->C.A->next;
4309 CPUmostDmgChoice = false;
4312 mostNumSub = mostNum;
4315 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
4316 costVIG = U->C.A->vigor;
4318 if(U->C.A->rangeA <= unitBreak->atkRange && U->C.A->rangeB >= unitBreak->atkRange
4319 && mpCost <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
4329 while (!(AUN[1] == U->number)) {
4334 ATTACK *aTop = U->C.A;
4337 for(int i = 0;i < crCAL1;i++){
4338 U->C.A = U->C.A->next;
4341 //NSLog(@"%@", U->C.A->name);
4345 for (int i = 0;i < crCAL1;i++) {
4346 U->C.A = U->C.A->next;
4351 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
4352 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4353 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
4354 //NSLog(@"crCAL1 %d", crCAL1);
4356 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
4359 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4360 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4361 double oops = U->C.S_C.HP/U->C.S_M.HP*100;
4362 [combatLHP1 setIntValue:(int)oops];
4363 oops = U->C.S_C.MP/U->C.S_M.MP*100;
4364 [combatLMP1 setIntValue:(int)oops];
4366 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
4367 //NSLog(@"mostNumSub %d crCAL1 %d", mostNumSub, crCAL1);
4368 hitFix = U->C.A->hitPercent;
4374 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
4375 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4376 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
4377 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
4378 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4379 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4380 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4383 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
4384 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4385 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
4386 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
4387 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4388 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4389 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4400 while (!(DUN[1] == U->number)) {
4404 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
4406 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
4409 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
4411 if(battleDod2Flag) hit = hit / 2;
4414 if(hit > 100) hit = 100;
4415 if(hit < 0) hit = 0;
4417 if(u2A->D->sort == 1){
4420 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
4421 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4430 ATTACK *aTop2 = U->C.A;
4436 double urSupposedToGet;
4438 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
4441 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
4443 double oopsIsRight = 0;
4447 oopsIsRight = U->C.S_C.MEL;
4449 oopsIsRight = U->C.S_C.MIS;
4451 oopsIsRight = oopsIsRight/100;
4453 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
4455 if(!U2->C.aura && U->C.A->D){
4456 if(U->C.A->D->type == 0) mostDmg2 = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4457 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4458 if(U->C.A->D->type == 1) mostDmg2 = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4459 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4460 if(U->C.A->D->type == 2) mostDmg2 = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4461 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4462 if(U->C.A->D->type == 3) mostDmg2 = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4463 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4464 if(U->C.A->D->type == 4) mostDmg2 = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4465 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4466 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
4467 }else if(U->C.A->D){
4468 double val = val = 1/log(3+U2->C.S_C.MP/64);
4469 if(U->C.A->D->type == 0) mostDmg2 = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4470 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
4471 if(U->C.A->D->type == 1) mostDmg2 = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4472 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
4473 if(U->C.A->D->type == 2) mostDmg2 = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4474 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
4475 if(U->C.A->D->type == 3) mostDmg2 = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4476 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
4477 if(U->C.A->D->type == 4) mostDmg2 = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
4478 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
4479 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
4481 double val2 = log(3+U2->C.S_C.MP/64);
4483 mostDmg2 = mostDmg2*val2;
4486 if(U->C.A->D->fix == 2){
4487 mostDmg2 = mostDmg2/2 + (U->C.S_C.HIT/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
4489 if(U->C.A->D->type == 0) mostDmg2 -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4490 if(U->C.A->D->type == 1) mostDmg2 -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4491 if(U->C.A->D->type == 2) mostDmg2 -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4492 if(U->C.A->D->type == 3) mostDmg2 -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4493 if(U->C.A->D->type == 4) mostDmg2 -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4496 }else if(U->C.A->D->fix == 1){
4497 mostDmg2 = mostDmg2/2 + ((U->C.S_C.ATK/2+U->C.S_C.HIT/2)/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
4499 if(U->C.A->D->type == 0) mostDmg2 -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4500 if(U->C.A->D->type == 1) mostDmg2 -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4501 if(U->C.A->D->type == 2) mostDmg2 -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4502 if(U->C.A->D->type == 3) mostDmg2 -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4503 if(U->C.A->D->type == 4) mostDmg2 -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4505 }else if(U->C.A->D->fix == 0){
4514 mostDmg2 = [self dmgResist:mostDmg2];
4517 costVIG = U->C.A->vigor;
4520 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){
4524 //mostDmg = U->C.A->totalD;
4528 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){
4529 //mostDmg = U->C.A->totalD;
4530 mostHit = U->C.A->hitPercent;
4533 U->C.A = U->C.A->next;
4541 mostNumSub = mostNum;
4543 for(int i = 0;i < mostNum;i++){
4544 U->C.A = U->C.A->next;
4546 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
4549 costVIG = U->C.A->vigor;
4552 if(U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
4554 }else while(U->C.A){
4555 U->C.A = U->C.A->next;
4564 //NSLog(@"%@", U->C.name);
4565 for (int i = 0;i < crCAL2;i++) {
4566 U->C.A = U->C.A->next;
4571 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
4572 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4573 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
4574 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4575 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4576 double oops2 = U->C.S_C.HP/U->C.S_M.HP*100;
4577 [combatLHP2 setIntValue:(int)oops2];
4578 oops2 = U->C.S_C.MP/U->C.S_M.MP*100;
4579 [combatLMP2 setIntValue:(int)oops2];
4584 mpCost2 = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
4585 costVIG = U->C.A->vigor;
4588 if(U->C.A && U->C.A->D){
4589 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){
4590 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
4591 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
4592 hitFix = U->C.A->hitPercent;
4594 }else if(u2A->D->sort == 1 || !U->C.A || U->C.A->D->sort == 1){
4595 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
4598 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
4604 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
4605 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4606 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
4607 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4608 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
4609 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4610 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4614 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
4615 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4616 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
4617 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4618 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
4619 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4620 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4624 while (!(DUN[1] == U->number)) {
4630 while (!(AUN[1] == U->number)) {
4636 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
4639 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
4642 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
4643 if(battleDod1Flag) hit /= 2;
4646 if(hit > 100) hit = 100;
4647 if(hit < 0) hit = 0;
4649 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
4650 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4653 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4658 if(CPUAttackSubmitFlag){
4659 if(unitCPUAttackFlag){
4660 [battleCancelBtn setEnabled:NO];
4661 [battleCancelBtn setTransparent:YES];
4663 [battleCancelBtn setEnabled:YES];
4664 [battleCancelBtn setTransparent:NO];
4669 while (!(AUN[1] == U->number)) {
4674 [battleAttackBtn1 setEnabled:NO];
4675 [battleAttackBtn1 setTransparent:YES];
4676 [battleGuardBtn1 setEnabled:NO];
4677 [battleGuardBtn1 setTransparent:YES];
4678 [battleDodgeBtn1 setEnabled:NO];
4679 [battleDodgeBtn1 setTransparent:YES];
4681 [battleAttackBtn1 setEnabled:YES];
4682 [battleAttackBtn1 setTransparent:NO];
4683 [battleGuardBtn1 setEnabled:YES];
4684 [battleGuardBtn1 setTransparent:NO];
4685 [battleDodgeBtn1 setEnabled:YES];
4686 [battleDodgeBtn1 setTransparent:NO];
4690 while (!(DUN[1] == U->number)) {
4694 [battleAttackBtn2 setEnabled:NO];
4695 [battleAttackBtn2 setTransparent:YES];
4696 [battleGuardBtn2 setEnabled:NO];
4697 [battleGuardBtn2 setTransparent:YES];
4698 [battleDodgeBtn2 setEnabled:NO];
4699 [battleDodgeBtn2 setTransparent:YES];
4701 [battleAttackBtn2 setEnabled:YES];
4702 [battleAttackBtn2 setTransparent:NO];
4703 [battleGuardBtn2 setEnabled:YES];
4704 [battleGuardBtn2 setTransparent:NO];
4705 [battleDodgeBtn2 setEnabled:YES];
4706 [battleDodgeBtn2 setTransparent:NO];
4713 for (int i = 1; i < DUN[1]; i++) {
4719 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4720 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
4722 [battleStartBtn setEnabled:NO];
4723 [battleStartBtn setTransparent:YES];
4725 [battleStartBtn setEnabled:YES];
4726 [battleStartBtn setTransparent:NO];
4731 avPlayerFlag1 = false;
4732 avPlayerFlag2 = false;
4735 -(void)setBattlePanelT2{
4739 ATTACK *aTop2 = U->CL.A;
4740 while (!(AUN[1] == U->number)) {
4744 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 || MF[MFselectedRow+1].MS.playerSet2 == 2)){
4745 cpuModeBATTLEflag = false;
4752 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
4753 costVIG = U->C.A->vigor;
4754 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){
4755 mostDmg = U->CL.A->totalD;
4758 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){
4759 //mostDmg = U->C.A->totalD;
4760 mostHit = U->CL.A->hitPercent;
4763 U->CL.A = U->CL.A->next;
4768 for(int i = 0;i < crCAL1;i++){
4769 U->CL.A = U->CL.A->next;
4772 ATTACK *ua = U->CL.A;
4776 mostNumSub = mostNum;
4780 for(int i = 0;i < mostNum;i++){
4781 U->C.A = U->CL.A->next;
4783 if(U->CL.A->extent == 0){
4787 for(int i = 0;i < mostNum;i++){
4788 U->CL.A = U->CL.A->next;
4794 for(int i = 0;i < crCAL1;i++){
4795 U->CL.A = U->CL.A->next;
4803 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
4804 costVIG = U->C.A->vigor;
4807 if(U->CL.A->rangeA <= unitBreak->atkRange && U->CL.A->rangeB >= unitBreak->atkRange && mpCost <= U->CL.S_C.EN && costVIG <= U->C.S_C.vigor){
4809 }else while(U->CL.A){
4810 U->CL.A = U->CL.A->next;
4817 while (!(AUN[1] == U->number)) {
4822 ATTACK *aTop = U->CL.A;
4828 for(int i = 0;i < crCAL1;i++){
4829 U->CL.A = U->CL.A->next;
4836 for (int i = 0;i < crCAL1;i++) {
4837 U->CL.A = U->CL.A->next;
4842 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
4843 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4844 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
4845 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
4846 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4847 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4848 double oops = U->CL.S_C.HP/U->CL.S_M.HP*100;
4849 [combatLHP1 setIntValue:(int)oops];
4850 oops = U->CL.S_C.EN/U->CL.S_M.EN*100;
4851 [combatLMP1 setIntValue:(int)oops];
4853 hit = U->CL.S_C.MOB + U->C.S_C.HIT*U->C.S_C.HP/U->C.S_M.HP;
4854 hitFix = U->CL.A->hitPercent;
4860 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
4861 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4862 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
4863 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
4864 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4865 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4866 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4869 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
4870 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4871 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
4872 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
4873 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4874 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4875 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4886 while (!(DUN[1] == U->number)) {
4890 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;
4891 if(battleDod2Flag) hit = hit / 2;
4894 if(hit > 100) hit = 100;
4895 if(hit < 0) hit = 0;
4897 if(u2A->D->sort == 1){
4900 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
4901 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4909 costVIG = U->C.A->vigor;
4911 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
4912 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){
4913 mostDmg = U->CL.A->totalD;
4916 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){
4917 //mostDmg = U->C.A->totalD;
4918 mostHit = U->CL.A->hitPercent;
4921 U->CL.A = U->CL.A->next;
4927 mostNumSub = mostNum;
4930 for(int i = 0;i < mostNum;i++){
4931 U->CL.A = U->CL.A->next;
4938 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
4939 costVIG = U->C.A->vigor;
4942 if(U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && costVIG <= U->C.S_C.vigor){
4944 }else while(U->CL.A){
4945 U->CL.A = U->CL.A->next;
4955 for (int i = 0;i < crCAL2;i++) {
4956 U->CL.A = U->CL.A->next;
4962 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
4963 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4964 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
4965 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4966 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4967 double oops2 = U->CL.S_C.HP/U->CL.S_M.HP*100;
4968 [combatLHP2 setIntValue:(int)oops2];
4969 oops2 = U->CL.S_C.EN/U->CL.S_M.EN*100;
4970 [combatLMP2 setIntValue:(int)oops2];
4974 if(U->CL.A && U->CL.A->D){
4978 mpCost2 = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
4981 if(U->CL.A && !(u2A->D->sort == 1) && U->CL.A->D->sort != 1 && mpCost2 <= U->CL.S_C.EN){
4982 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
4983 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
4984 hitFix = U->CL.A->hitPercent;
4986 }else if(u2A->D->sort == 1 || !U->CL.A || U->CL.A->D->sort == 1){
4987 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
4991 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
4994 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
4999 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
5000 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
5001 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
5002 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5003 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
5004 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5005 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5009 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
5010 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
5011 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
5012 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5013 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
5014 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5015 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5019 while (!(AUN[1] == U->number)) {
5024 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;
5025 if(battleDod1Flag) hit /= 2;
5028 if(hit > 100) hit = 100;
5029 if(hit < 0) hit = 0;
5031 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
5032 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5035 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5039 while (!(AUN[1] == U->number)) {
5044 [battleAttackBtn1 setEnabled:NO];
5045 [battleAttackBtn1 setTransparent:YES];
5046 [battleGuardBtn1 setEnabled:NO];
5047 [battleGuardBtn1 setTransparent:YES];
5048 [battleDodgeBtn1 setEnabled:NO];
5049 [battleDodgeBtn1 setTransparent:YES];
5051 [battleAttackBtn1 setEnabled:YES];
5052 [battleAttackBtn1 setTransparent:NO];
5053 [battleGuardBtn1 setEnabled:YES];
5054 [battleGuardBtn1 setTransparent:NO];
5055 [battleDodgeBtn1 setEnabled:YES];
5056 [battleDodgeBtn1 setTransparent:NO];
5060 while (!(DUN[1] == U->number)) {
5064 [battleAttackBtn2 setEnabled:NO];
5065 [battleAttackBtn2 setTransparent:YES];
5066 [battleGuardBtn2 setEnabled:NO];
5067 [battleGuardBtn2 setTransparent:YES];
5068 [battleDodgeBtn2 setEnabled:NO];
5069 [battleDodgeBtn2 setTransparent:YES];
5071 [battleAttackBtn2 setEnabled:YES];
5072 [battleAttackBtn2 setTransparent:NO];
5073 [battleGuardBtn2 setEnabled:YES];
5074 [battleGuardBtn2 setTransparent:NO];
5075 [battleDodgeBtn2 setEnabled:YES];
5076 [battleDodgeBtn2 setTransparent:NO];
5081 for (int i = 1; i < DUN[1]; i++) {
5086 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
5087 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
5089 [battleStartBtn setEnabled:NO];
5090 [battleStartBtn setTransparent:YES];
5092 [battleStartBtn setEnabled:YES];
5093 [battleStartBtn setTransparent:NO];
5098 avPlayerFlag1 = false;
5099 avPlayerFlag2 = false;
5102 -(void)setBattlePanelT3{
5106 while (!(AUN[1] == U->number)) {
5110 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 &&MF[MFselectedRow+1].MS.playerSet2 == 2)){
5111 cpuModeBATTLEflag = false;
5116 ATTACK *aTop2 = U->C.A;
5119 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
5121 costVIG = U->C.A->vigor;
5123 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){
5124 mostDmg = U->C.A->totalD;
5128 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){
5129 //mostDmg = U->C.A->totalD;
5130 mostHit = U->C.A->hitPercent;
5133 U->C.A = U->C.A->next;
5138 for(int i = 0;i < crCAL1;i++){
5139 U->C.A = U->C.A->next;
5142 ATTACK *ua = U->C.A;
5146 mostNumSub = mostNum;
5149 for(int i = 0;i < mostNum;i++){
5150 U->C.A = U->C.A->next;
5152 if(U->C.A->extent == 0 && mostNum > 0){
5156 for(int i = 0;i < mostNum;i++){
5157 U->C.A = U->C.A->next;
5163 for(int i = 0;i < crCAL1;i++){
5164 U->C.A = U->C.A->next;
5167 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
5168 costVIG = U->C.A->vigor;
5171 if(U->C.A->rangeA <= unitBreak->atkRange && U->C.A->rangeB >= unitBreak->atkRange && mpCost <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
5180 while (!(AUN[1] == U->number)) {
5186 ATTACK *aTop = U->CL.A;
5192 for(int i = 0;i < crCAL1;i++){
5193 U->CL.A = U->CL.A->next;
5199 for (int i = 0;i < crCAL1;i++) {
5200 U->CL.A = U->CL.A->next;
5205 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
5206 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
5207 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
5208 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
5209 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5210 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5211 double oops = U->CL.S_C.HP/U->CL.S_M.HP*100;
5212 [combatLHP1 setIntValue:(int)oops];
5213 oops = U->CL.S_C.EN/U->CL.S_M.EN*100;
5214 [combatLMP1 setIntValue:(int)oops];
5216 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
5217 hitFix = U->CL.A->hitPercent;
5223 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
5224 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
5225 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
5226 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
5227 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5228 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5229 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5232 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
5233 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
5234 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
5235 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
5236 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5237 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5238 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5247 while (!(AUN[1] == U->number)) {
5253 while (!(DUN[1] == U->number)) {
5257 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
5259 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
5262 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
5263 if(battleDod2Flag) hit = hit / 2;
5266 if(hit > 100) hit = 100;
5267 if(hit < 0) hit = 0;
5269 if(u2A->D->sort == 1){
5272 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
5273 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5281 ATTACK *aTop2 = U->C.A;
5285 costVIG = U->C.A->vigor;
5287 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
5289 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){
5290 mostDmg = U->C.A->totalD;
5294 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){
5295 //mostDmg = U->C.A->totalD;
5296 mostHit = U->C.A->hitPercent;
5299 U->C.A = U->C.A->next;
5305 mostNumSub = mostNum;
5307 for(int i = 0;i < mostNum;i++){
5308 U->C.A = U->C.A->next;
5310 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
5311 costVIG = U->C.A->vigor;
5313 if(U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
5315 }else while(U->C.A){
5316 U->C.A = U->C.A->next;
5324 for (int i = 0;i < crCAL2;i++) {
5325 U->C.A = U->C.A->next;
5331 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
5332 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
5333 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
5334 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5335 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5336 double oops2 = U->C.S_C.HP/U->C.S_M.HP*100;
5337 [combatLHP2 setIntValue:(int)oops2];
5338 oops2 = U->C.S_C.MP/U->C.S_M.MP*100;
5339 [combatLMP2 setIntValue:(int)oops2];
5344 mpCost2 = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
5345 costVIG = U->C.A->vigor;
5348 if(U->C.A &&U->C.A->D){
5349 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){
5350 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
5351 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
5352 hitFix = U->C.A->hitPercent;
5354 }else if(u2A->D->sort == 1 || !U->C.A || U->C.A->D->sort == 1){
5355 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
5357 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
5363 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
5364 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
5365 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
5366 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5367 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
5368 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5369 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5373 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
5374 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
5375 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
5376 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5377 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
5378 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5379 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5383 while (!(AUN[1] == U->number)) {
5388 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;
5389 if(battleDod1Flag) hit /= 2;
5392 if(hit > 100) hit = 100;
5393 if(hit < 0) hit = 0;
5395 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
5396 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5399 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5403 while (!(AUN[1] == U->number)) {
5408 [battleAttackBtn1 setEnabled:NO];
5409 [battleAttackBtn1 setTransparent:YES];
5410 [battleGuardBtn1 setEnabled:NO];
5411 [battleGuardBtn1 setTransparent:YES];
5412 [battleDodgeBtn1 setEnabled:NO];
5413 [battleDodgeBtn1 setTransparent:YES];
5415 [battleAttackBtn1 setEnabled:YES];
5416 [battleAttackBtn1 setTransparent:NO];
5417 [battleGuardBtn1 setEnabled:YES];
5418 [battleGuardBtn1 setTransparent:NO];
5419 [battleDodgeBtn1 setEnabled:YES];
5420 [battleDodgeBtn1 setTransparent:NO];
5424 while (!(DUN[1] == U->number)) {
5428 [battleAttackBtn2 setEnabled:NO];
5429 [battleAttackBtn2 setTransparent:YES];
5430 [battleGuardBtn2 setEnabled:NO];
5431 [battleGuardBtn2 setTransparent:YES];
5432 [battleDodgeBtn2 setEnabled:NO];
5433 [battleDodgeBtn2 setTransparent:YES];
5435 [battleAttackBtn2 setEnabled:YES];
5436 [battleAttackBtn2 setTransparent:NO];
5437 [battleGuardBtn2 setEnabled:YES];
5438 [battleGuardBtn2 setTransparent:NO];
5439 [battleDodgeBtn2 setEnabled:YES];
5440 [battleDodgeBtn2 setTransparent:NO];
5446 for (int i = 1; i < DUN[1]; i++) {
5450 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
5451 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
5453 [battleStartBtn setEnabled:NO];
5454 [battleStartBtn setTransparent:YES];
5456 [battleStartBtn setEnabled:YES];
5457 [battleStartBtn setTransparent:NO];
5462 avPlayerFlag1 = false;
5463 avPlayerFlag2 = false;
5466 -(void)setBattlePanelT4{
5470 while (!(AUN[1] == U->number)) {
5474 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2)){
5475 cpuModeBATTLEflag = false;
5480 ATTACK *aTop2 = U->CL.A;
5483 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
5484 costVIG = U->C.A->vigor;
5485 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){
5486 mostDmg = U->CL.A->totalD;
5489 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){
5490 //mostDmg = U->C.A->totalD;
5491 mostHit = U->CL.A->hitPercent;
5494 U->CL.A = U->CL.A->next;
5498 mostNumSub = mostNum;
5501 for(int i = 0;i < mostNum;i++){
5502 U->CL.A = U->CL.A->next;
5504 if(U->CL.A->extent == 0){
5508 for(int i = 0;i < mostNum;i++){
5509 U->CL.A = U->CL.A->next;
5515 for(int i = 0;i < crCAL1;i++){
5516 U->CL.A = U->CL.A->next;
5519 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
5520 costVIG = U->C.A->vigor;
5521 if(U->CL.A->rangeA <= unitBreak->atkRange && U->CL.A->rangeB >= unitBreak->atkRange && mpCost <= U->CL.S_C.EN && costVIG <= U->C.S_C.vigor){
5523 }else while(U->CL.A){
5524 U->CL.A = U->CL.A->next;
5531 while (!(AUN[1] == U->number)) {
5536 ATTACK *aTop = U->C.A;
5542 for(int i = 0;i < crCAL1;i++){
5543 U->C.A = U->C.A->next;
5549 for (int i = 0;i < crCAL1;i++) {
5550 U->C.A = U->C.A->next;
5555 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
5556 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
5557 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
5558 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
5559 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5560 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5561 double oops = U->C.S_C.HP/U->C.S_M.HP*100;
5562 [combatLHP1 setIntValue:(int)oops];
5563 oops = U->C.S_C.MP/U->C.S_M.MP*100;
5564 [combatLMP1 setIntValue:(int)oops];
5566 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
5567 hitFix = U->C.A->hitPercent;
5573 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
5574 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
5575 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
5576 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
5577 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5578 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5579 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5582 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
5583 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
5584 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
5585 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
5586 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5587 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5588 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5599 while (!(DUN[1] == U->number)) {
5603 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;
5604 if(battleDod2Flag) hit = hit / 2;
5607 if(hit > 100) hit = 100;
5608 if(hit < 0) hit = 0;
5610 if(u2A->D->sort == 1){
5613 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
5614 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5622 ATTACK *aTop2 = U->CL.A;
5625 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
5626 costVIG = U->C.A->vigor;
5627 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){
5628 mostDmg = U->CL.A->totalD;
5631 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){
5632 //mostDmg = U->C.A->totalD;
5633 mostHit = U->CL.A->hitPercent;
5636 U->CL.A = U->CL.A->next;
5640 mostNumSub = mostNum;
5644 for(int i = 0;i < mostNum;i++){
5645 U->CL.A = U->CL.A->next;
5647 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
5648 costVIG = U->C.A->vigor;
5649 if(U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && costVIG <= U->C.S_C.vigor){
5651 }else while(U->CL.A){
5652 U->CL.A = U->CL.A->next;
5660 for (int i = 0;i < crCAL2;i++) {
5661 U->CL.A = U->CL.A->next;
5667 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
5668 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
5669 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
5670 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5671 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5672 double oops2 = U->CL.S_C.HP/U->CL.S_M.HP*100;
5673 [combatLHP2 setIntValue:(int)oops2];
5674 oops2 = U->CL.S_C.EN/U->CL.S_M.EN*100;
5675 [combatLMP2 setIntValue:(int)oops2];
5680 mpCost2 = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
5683 if(U->CL.A && U->CL.A->D){
5684 if(U->CL.A && !(u2A->D->sort == 1) && U->CL.A->D->sort != 1 && mpCost2 <= U->CL.S_C.EN){
5685 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
5686 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
5687 hitFix = U->CL.A->hitPercent;
5689 }else if(u2A->D->sort == 1 || !U->CL.A || U->CL.A->D->sort == 1){
5690 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
5692 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
5698 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
5699 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
5700 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
5701 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5702 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
5703 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5704 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5708 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
5709 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
5710 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
5711 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5712 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
5713 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5714 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5719 while (!(DUN[1] == U->number)) {
5725 while (!(AUN[1] == U->number)) {
5731 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
5733 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
5736 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
5737 if(battleDod1Flag) hit /= 2;
5740 if(hit > 100) hit = 100;
5741 if(hit < 0) hit = 0;
5743 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
5744 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5747 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5751 while (!(AUN[1] == U->number)) {
5756 [battleAttackBtn1 setEnabled:NO];
5757 [battleAttackBtn1 setTransparent:YES];
5758 [battleGuardBtn1 setEnabled:NO];
5759 [battleGuardBtn1 setTransparent:YES];
5760 [battleDodgeBtn1 setEnabled:NO];
5761 [battleDodgeBtn1 setTransparent:YES];
5763 [battleAttackBtn1 setEnabled:YES];
5764 [battleAttackBtn1 setTransparent:NO];
5765 [battleGuardBtn1 setEnabled:YES];
5766 [battleGuardBtn1 setTransparent:NO];
5767 [battleDodgeBtn1 setEnabled:YES];
5768 [battleDodgeBtn1 setTransparent:NO];
5772 while (!(DUN[1] == U->number)) {
5776 [battleAttackBtn2 setEnabled:NO];
5777 [battleAttackBtn2 setTransparent:YES];
5778 [battleGuardBtn2 setEnabled:NO];
5779 [battleGuardBtn2 setTransparent:YES];
5780 [battleDodgeBtn2 setEnabled:NO];
5781 [battleDodgeBtn2 setTransparent:YES];
5783 [battleAttackBtn2 setEnabled:YES];
5784 [battleAttackBtn2 setTransparent:NO];
5785 [battleGuardBtn2 setEnabled:YES];
5786 [battleGuardBtn2 setTransparent:NO];
5787 [battleDodgeBtn2 setEnabled:YES];
5788 [battleDodgeBtn2 setTransparent:NO];
5794 for (int i = 1; i < DUN[1]; i++) {
5798 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
5799 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
5801 [battleStartBtn setEnabled:NO];
5802 [battleStartBtn setTransparent:YES];
5804 [battleStartBtn setEnabled:YES];
5805 [battleStartBtn setTransparent:NO];
5810 avPlayerFlag1 = false;
5811 avPlayerFlag2 = false;
5814 -(void)DisplayMessage{
5816 if(!battleVeryBegunFlag){
5817 [btHITtf1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5818 [btDMGtf1 setStringValue:[NSString stringWithFormat:@"ダメージ値 ----"]];
5819 [btHITtf2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5820 [btDMGtf2 setStringValue:[NSString stringWithFormat:@"ダメージ値 ----"]];
5822 battleVeryBegunFlag = true;
5825 if(AVpreview.rate > 0){
5826 //[battleWindow setIgnoresMouseEvents:YES];
5827 [battleWindow makeKeyAndOrderFront:nil];
5828 //NSLog(@"%g", AVpreview.rate);
5831 //[battleWindow setIgnoresMouseEvents:NO];
5832 //NSLog(@"%g", AVpreview.rate);
5836 [AVPV setHidden:YES];
5838 else if(avPlayerFlag2){
5839 [AVPV setHidden:YES];
5845 animationFlag1 = false;
5850 animationFlag2 = false;
5852 U->C.A = attackTop2;
5856 if(animationFlag1 || animationFlag2){
5861 double def2 = (double)31/32;
5862 NSString *message = @"";
5880 static bool extentbool = false;
5881 static bool extentbool2 = false;
5884 if(cpuAtkExtendFlag){
5885 extentBattleFlag2 = true;
5888 if(!extentbool && extentBattleFlag2){
5890 extentMPcostFlag = false;
5894 switch (messageProcess) {
5896 if(bLoopFlag) break;
5898 [battleDialog setStringValue:@"攻撃開始!"];
5899 if(!baseDistanceCompFlag)
5908 if(bLoopFlag) break;
5914 btHitExtendFlag1 = true;
5916 if(btHitExtendProc1 >= 3){
5917 btHitExtendProc1 = 0;
5921 BTunitAttackFlag1 = true;
5922 if(battleDef1Flag || battleDod1Flag)
5923 BTunitAttackFlag1 = false;
5926 while (!(DUN[DUNnum] == U->number)) {
5932 while (!(AUN[1] == U->number)) {
5936 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){
5938 [self DisplayMessageMod1A];
5940 }else if(U->chipNumberL >= 0 && U2->chipNumberL < 0){
5942 [self DisplayMessageMod2A];
5944 }else if(U->chipNumberL < 0 && U2->chipNumberL >= 0){
5946 [self DisplayMessageMod3A];
5952 if(bLoopFlag) break;
5955 while (!(AUN[1] == U->number)) {
5958 ATTACK *aTop = U->C.A;
5960 for(int i = 0;i < crCAL1;i++){
5961 U->C.A = U->C.A->next;
5966 if(btAttackMoveValue1 < 2 && BTunitAttackFlag1){
5968 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
5970 [battleDialog setStringValue:message];
5977 if(btHitExtendFlag1 && btHitExtendProc1 < 2){
5988 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
5991 [bplayer2 setImage:U2->C.imgb];
5992 [bplayer2 setImageScaling:NSScaleToFit];
5993 [nplayer2 setStringValue:U2->C.name];
5994 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U2->C.S_C.HP, U2->C.S_M.HP]];
5995 [lplayer2 setIntValue:U2->C.S_C.HP/U2->C.S_M.HP*100];
5996 [iplayer2 setImage:MC[chipNum[U2->x][U2->y]].img];
5997 [mplayer2 setStringValue:MC[chipNum[U2->x][U2->y]].name];
5998 [rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U2->x][U2->y]].dmgfix]];
6000 if(!battleDef1Flag && !battleDod1Flag && !battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL && DUNnum == 1){
6001 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
6003 NSString *path = @"data/AttackList/ALdata";
6005 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
6007 path = [path stringByAppendingFormat:@"/"];
6009 path = [path stringByAppendingString:U->C.A->AN.movName];
6011 NSData *AVData = [NSData dataWithContentsOfFile:path];
6014 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
6019 NSString *path = @"data/AttackList3/IALdata";
6021 path = [path stringByAppendingFormat:@"%dE", U->C.A->indexE];
6023 path = [path stringByAppendingFormat:@"/"];
6025 path = [path stringByAppendingString:U->C.A->AN.movName];
6028 NSData *AVData = [NSData dataWithContentsOfFile:path];
6031 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
6037 AVPV.player = [AVpreview retain];
6043 [AVPV setHidden:NO];
6045 [battleDialog setStringValue:message];
6047 avPlayerFlag1 = true;
6053 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->C.A->AN.ANI && !animationFlag3 && DUNnum == 1){
6055 [battleDialog setStringValue:message];
6056 animationFlag1 = true;
6063 double urSupposedToGet;
6065 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
6068 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
6072 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
6073 else oopsIsRight = U->C.S_C.MIS;
6075 oopsIsRight = oopsIsRight/100;
6077 if(!U2->C.aura && U->C.A->D){
6078 if(U->C.A->D->type == 0) dmg = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6079 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6080 if(U->C.A->D->type == 1) dmg = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6081 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6082 if(U->C.A->D->type == 2) dmg = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6083 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6084 if(U->C.A->D->type == 3) dmg = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6085 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6086 if(U->C.A->D->type == 4) dmg = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6087 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6088 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
6089 }else if(U->C.A->D){
6090 val = 1/log(3+U2->C.S_C.MP/64);
6091 if(U->C.A->D->type == 0) dmg = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6092 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6093 if(U->C.A->D->type == 1) dmg = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6094 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6095 if(U->C.A->D->type == 2) dmg = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6096 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6097 if(U->C.A->D->type == 3) dmg = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6098 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6099 if(U->C.A->D->type == 4) dmg = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6100 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6101 if(U->C.A->D->type == 5) dmg = U->C.A->totalD*val;
6103 double val2 = log(3+U2->C.S_C.MP/64);
6109 if(U->C.A->D->fix == 2){
6110 dmg = dmg/2 + (U->C.S_C.HIT/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
6112 if(U->C.A->D->type == 0) dmg -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6113 if(U->C.A->D->type == 1) dmg -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6114 if(U->C.A->D->type == 2) dmg -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6115 if(U->C.A->D->type == 3) dmg -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6116 if(U->C.A->D->type == 4) dmg -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6119 }else if(U->C.A->D->fix == 1){
6120 dmg = dmg/2 + ((U->C.S_C.ATK/2+U->C.S_C.HIT/2)/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
6122 if(U->C.A->D->type == 0) dmg -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6123 if(U->C.A->D->type == 1) dmg -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6124 if(U->C.A->D->type == 2) dmg -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6125 if(U->C.A->D->type == 3) dmg -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6126 if(U->C.A->D->type == 4) dmg -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6128 }else if(U->C.A->D->fix == 0){
6132 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
6134 if(extentMPcostFlag && extentBattleFlag2){
6137 U->C.S_C.MP -= costMP;
6138 extentMPcostFlag = true;
6141 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
6142 hitFix = U->C.A->hitPercent;
6148 while (!(AUN[1] == U->number)) {
6154 while (!(DUN[DUNnum] == U->number)) {
6158 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
6160 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
6163 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
6164 if(hit > 100) hit = 100;
6165 if(hit < 0) hit = 0;
6166 if(U2A->D->sort == 1){
6173 if(battleDod2Flag) wtf = 50;
6174 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
6176 if(U2A->D->sort == 0){
6177 if(U2A->D->type == 0) NSLog(@"計算式:((%g+%g)*%g-%g)*%g*%g", U2->C.S_C.ATK,U2A->totalD,oopsIsRight,U->C.S_C.DEF, val, val2);
6178 if(U2A->D->type == 4) NSLog(@"計算式:((%g+%g)*%g-%g)*%g*%g", U2->C.S_C.CAP,U2A->totalD,oopsIsRight,U->C.S_C.CAP, val, val2);
6179 NSLog(@"修正前のダメージ:%g", dmg);
6180 dmg = [self dmgResist:dmg];
6181 NSLog(@"属性後のダメージ:%g", dmg);
6182 def2 = pow(def2, U->C.S_C.DEF);
6183 int omfg = rand()%100;
6184 NSLog(@"ダメージ幅:%g〜%g", floor(dmg), floor(dmg + dmg/10));
6185 dmg = (dmg*omfg/100/10 + dmg);
6186 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
6187 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
6188 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
6190 if(U->C.S_C.typeMOVE == RIKU){
6191 if(U2A->riku == A) dmg = dmg*1.2;
6192 if(U2A->riku == B) dmg = dmg*1.0;
6193 if(U2A->riku == C) dmg = dmg*0.6;
6194 if(U2A->riku == D) dmg = dmg*0.2;
6195 if(U2A->riku == E) dmg = 0;
6196 if(U2A->riku == S) dmg = dmg*1.5;
6197 if(U2A->riku == SS) dmg = dmg*2.0;
6198 } if(U->C.S_C.typeMOVE == UMI &&
6199 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
6200 if(U2A->umi == A) dmg = dmg*1.2;
6201 if(U2A->umi == B) dmg = dmg*1.0;
6202 if(U2A->umi == C) dmg = dmg*0.6;
6203 if(U2A->umi == D) dmg = dmg*0.2;
6204 if(U2A->umi == E) dmg = 0;
6205 if(U2A->umi == S) dmg = dmg*1.5;
6206 if(U2A->umi == SS) dmg = dmg*2.0;
6207 }else if(U->C.S_C.typeMOVE == UMI){
6208 if(U2A->riku == A) dmg = dmg*1.2;
6209 if(U2A->riku == B) dmg = dmg*1.0;
6210 if(U2A->riku == C) dmg = dmg*0.6;
6211 if(U2A->riku == D) dmg = dmg*0.2;
6212 if(U2A->riku == E) dmg = 0;
6213 if(U2A->riku == S) dmg = dmg*1.5;
6214 if(U2A->riku == SS) dmg = dmg*2.0;
6216 } if(U->C.S_C.typeMOVE == CHU){
6217 if(U2A->chu == A) dmg = dmg*1.2;
6218 if(U2A->chu == B) dmg = dmg*1.0;
6219 if(U2A->chu == C) dmg = dmg*0.6;
6220 if(U2A->chu == D) dmg = dmg*0.2;
6221 if(U2A->chu == E) dmg = 0;
6222 if(U2A->chu == S) dmg = dmg*1.5;
6223 if(U2A->chu == SS) dmg = dmg*2.0;
6224 } if(U->C.S_C.typeMOVE == SORA){
6225 if(U2A->sora == A) dmg = dmg*1.2;
6226 if(U2A->sora == B) dmg = dmg*1.0;
6227 if(U2A->sora == C) dmg = dmg*0.6;
6228 if(U2A->sora == D) dmg = dmg*0.2;
6229 if(U2A->sora == E) dmg = 0;
6230 if(U2A->sora == S) dmg = dmg*1.5;
6231 if(U2A->sora == SS) dmg = dmg*2.0;
6234 NSLog(@"ユニットの地形適用後:%g", dmg);
6235 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
6236 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
6240 if(graze > omfg && !healFlag) {dmg = dmg/5;
6243 if(battleDef2Flag) dmg -= dmg*0.5;
6244 battleDef2Flag = false;
6246 if(dmg < 0) dmg = 0;
6250 [btHITtf1 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
6251 [btDMGtf1 setStringValue:[NSString stringWithFormat:@"ダメージ値 %g", dmg]];
6255 }else if(U2A->D->sort == 1){
6256 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
6260 if(U->C.S_C.HP > U->C.S_M.HP) U->C.S_C.HP = U->C.S_M.HP;
6265 if(U->C.S_C.HP <= 0) {
6267 U2->C.S_C.vigor += 5;
6278 targType2Lflag = true;
6285 targType2Dflag = true;
6293 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
6294 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
6296 if(![U2A->msg isEqualToString:@""]){
6298 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
6299 [self originalMessage:U2A->msg subj:U2->C.name obje:U->C.name]]];
6303 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
6305 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
6309 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->C.name, dmg]];
6312 }else if(battleDef1Flag){
6316 while (!(AUN[1] == U->number)) {
6321 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
6325 }else if(battleDod1Flag){
6328 while (!(AUN[1] == U->number)) {
6332 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
6337 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
6341 [battleDialog setStringValue:message];
6343 [btHITtf1 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
6349 if(!extentBattleFlag2){
6354 }else if(extentBattleFlag2){
6355 if(btHitExtendProc1 == 2)
6356 btHitExtendProc1 = 3;
6357 if(btHitExtendProc1 >= 2)
6358 btHitExtendFix1 = 1;
6363 if(DUN[DUNnum] <= 0){
6366 extentBattleFlag2 = false;
6368 extentMPcostFlag = false;
6372 avPlayerFlag1 = false;
6373 animationFlag3 = false;
6378 if(bLoopFlag) break;
6379 BTunitAttackFlag1 = false;
6380 BTunitAttackFlag2 = true;
6381 if(battleDef2Flag || battleDod2Flag)
6382 BTunitAttackFlag2 = false;
6387 while (!(DUN[1] == U->number)) {
6392 while (!(AUN[1] == U->number)) {
6396 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){
6398 [self DisplayMessageMod1B];
6400 }else if(U->chipNumberL >= 0 && U2->chipNumberL < 0){
6402 [self DisplayMessageMod2B];
6404 }else if(U->chipNumberL < 0 && U2->chipNumberL >= 0){
6406 [self DisplayMessageMod3B];
6411 if(bLoopFlag) break;
6414 while (!(AUN[1] == U->number)) {
6421 while (!(DUN[1] == U->number)) {
6425 ATTACK *aTop2 = U->C.A;
6433 if(!U->C.A) goto SKIP3;
6437 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
6439 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
6442 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
6443 else oopsIsRight = U->C.S_C.MIS;
6445 oopsIsRight = oopsIsRight/100;
6448 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
6451 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
6452 if(!U2->C.aura && U->C.A->D){
6453 if(U->C.A->D->type == 0) mostDmg2 = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6454 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6455 if(U->C.A->D->type == 1) mostDmg2 = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6456 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6457 if(U->C.A->D->type == 2) mostDmg2 = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6458 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6459 if(U->C.A->D->type == 3) mostDmg2 = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6460 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6461 if(U->C.A->D->type == 4) mostDmg2 = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6462 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6463 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
6464 }else if(U->C.A->D){
6465 val = 1/log(3+U2->C.S_C.MP/64);
6466 if(U->C.A->D->type == 0) mostDmg2 = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6467 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6468 if(U->C.A->D->type == 1) mostDmg2 = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6469 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6470 if(U->C.A->D->type == 2) mostDmg2 = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6471 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6472 if(U->C.A->D->type == 3) mostDmg2 = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6473 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor)*asItIs*val;
6474 if(U->C.A->D->type == 4) mostDmg2 = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6475 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6476 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
6478 double val2 = log(3+U2->C.S_C.MP/64);
6480 mostDmg2 = mostDmg2*val2;
6483 if(U->C.A->D->fix == 2){
6484 mostDmg2 = mostDmg2/2 + (U->C.S_C.HIT/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
6486 if(U->C.A->D->type == 0) mostDmg2 -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6487 if(U->C.A->D->type == 1) mostDmg2 -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6488 if(U->C.A->D->type == 2) mostDmg2 -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6489 if(U->C.A->D->type == 3) mostDmg2 -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6490 if(U->C.A->D->type == 4) mostDmg2 -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6493 }else if(U->C.A->D->fix == 1){
6494 mostDmg2 = mostDmg2/2 + ((U->C.S_C.ATK/2+U->C.S_C.HIT/2)/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
6496 if(U->C.A->D->type == 0) mostDmg2 -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6497 if(U->C.A->D->type == 1) mostDmg2 -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6498 if(U->C.A->D->type == 2) mostDmg2 -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6499 if(U->C.A->D->type == 3) mostDmg2 -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6500 if(U->C.A->D->type == 4) mostDmg2 -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6502 }else if(U->C.A->D->fix == 0){
6510 mostDmg2 = [self dmgResist:mostDmg2];
6513 costVIG = U->C.A->vigor;
6515 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){
6521 //mostDmg = U->C.A->totalD;
6524 U->C.A = U->C.A->next;
6530 if(!battleSet2PushedFlag){
6531 for(int i = 0;i < mostNumSub;i++){
6532 U->C.A = U->C.A->next;
6536 for(int i = 0;i < crCAL2;i++){
6537 U->C.A = U->C.A->next;
6543 if(U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1){
6545 }else while(U->C.A){
6546 U->C.A = U->C.A->next;
6552 BTunitAttackFlag2 = false;
6553 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
6559 if(btAttackMoveValue2 < 2 && BTunitAttackFlag2){
6561 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
6563 [battleDialog setStringValue:message];
6570 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
6572 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL){
6573 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
6575 NSString *path = @"data/AttackList/ALdata";
6577 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
6579 path = [path stringByAppendingFormat:@"/"];
6581 path = [path stringByAppendingString:U->C.A->AN.movName];
6584 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
6587 AVPV.player = [AVpreview retain];
6592 [AVPV setControlsStyle:0];
6593 [AVPV setHidden:NO];
6595 [battleDialog setStringValue:message];
6597 avPlayerFlag2 = true;
6602 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->C.A->AN.ANI && !animationFlag3){
6605 animationFlag2 = true;
6615 if(U->C.A->D->type == 0) dmg = U->C.S_C.ATK + U->C.A->totalD;
6616 if(U->C.A->D->type == 1) dmg = U->C.S_C.DEF + U->C.A->totalD;
6617 if(U->C.A->D->type == 2) dmg = U->C.S_C.ACU + U->C.A->totalD;
6618 if(U->C.A->D->type == 3) dmg = U->C.S_C.EVA + U->C.A->totalD;
6619 if(U->C.A->D->type == 4) dmg = U->C.S_C.CAP + U->C.A->totalD;
6620 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
6625 while (!(AUN[1] == U->number)) {
6630 while (!(DUN[1] == U->number)) {
6633 NSString *string = [U2A->name retain];
6634 while (![U->C.A->name isEqualToString:string] && U->C.A) {
6635 U->C.A = U->C.A->next;
6638 if(!U->C.A) U->C.A = aTop2;
6640 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
6642 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
6645 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
6646 else oopsIsRight = U->C.S_C.MIS;
6648 oopsIsRight = oopsIsRight/100;
6651 if(!U2->C.aura && U->C.A->D){
6652 if(U->C.A->D->type == 0) dmg = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6653 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6654 if(U->C.A->D->type == 1) dmg = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6655 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6656 if(U->C.A->D->type == 2) dmg = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6657 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6658 if(U->C.A->D->type == 3) dmg = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6659 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6660 if(U->C.A->D->type == 4) dmg = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6661 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6662 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
6663 }else if(U->C.A->D){
6664 double val = val = 1/log(3+U2->C.S_C.MP/64);
6665 if(U->C.A->D->type == 0) dmg = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6666 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6667 if(U->C.A->D->type == 1) dmg = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6668 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6669 if(U->C.A->D->type == 2) dmg = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6670 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6671 if(U->C.A->D->type == 3) dmg = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6672 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6673 if(U->C.A->D->type == 4) dmg = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight
6674 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6675 if(U->C.A->D->type == 5) dmg = U->C.A->totalD*val;
6677 val2 = log(3+U2->C.S_C.MP/64);
6682 if(U->C.A->D->fix == 2){
6683 dmg = dmg/2 + (U->C.S_C.HIT/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
6685 if(U->C.A->D->type == 0) dmg -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6686 if(U->C.A->D->type == 1) dmg -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6687 if(U->C.A->D->type == 2) dmg -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6688 if(U->C.A->D->type == 3) dmg -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6689 if(U->C.A->D->type == 4) dmg -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6692 }else if(U->C.A->D->fix == 1){
6693 dmg = dmg/2 + ((U->C.S_C.ATK/2+U->C.S_C.HIT/2)/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
6695 if(U->C.A->D->type == 0) dmg -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6696 if(U->C.A->D->type == 1) dmg -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6697 if(U->C.A->D->type == 2) dmg -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6698 if(U->C.A->D->type == 3) dmg -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6699 if(U->C.A->D->type == 4) dmg -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6701 }else if(U->C.A->D->fix == 0){
6705 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
6706 U->C.S_C.MP -= costMP;
6708 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
6709 hitFix = U->C.A->hitPercent;
6716 while (!(DUN[1] == U->number)) {
6722 while (!(AUN[1] == U->number)) {
6726 hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
6728 hi = U->C.S_C.LUK - U2->C.S_C.LUK;
6731 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
6732 if(hit > 100) hit = 100;
6733 if(hit < 0) hit = 0;
6735 battleDod1Flag = false;
6738 while (!(DUN[1] == U->number)) {
6744 while (!(AUN[1] == U->number)) {
6749 if(battleDod1Flag) omg = 50;
6751 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
6752 if(U2A->D->type == 0) NSLog(@"計算式:((%g+%g)*%g-%g)*%g*%g", U2->C.S_C.ATK,U2A->totalD,oopsIsRight,U->C.S_C.DEF, val, val2);
6753 if(U2A->D->type == 4) NSLog(@"計算式:((%g+%g)*%g-%g)*%g%g", U2->C.S_C.CAP,U2A->totalD,oopsIsRight,U->C.S_C.CAP, val, val2);
6754 NSLog(@"修正前のダメージ:%g", dmg);
6755 dmg = [self dmgResist:dmg];
6756 NSLog(@"属性後のダメージ:%g", dmg);
6757 def2 = pow(def2, U->C.S_C.DEF);
6758 int omfg = rand()%100;
6759 NSLog(@"ダメージ幅:%g〜%g", floor(dmg), floor(dmg + dmg/10));
6760 dmg = (dmg*omfg/100/10 + dmg);
6761 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
6762 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
6763 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
6765 if(U->C.S_C.typeMOVE == RIKU){
6766 if(U2A->riku == A) dmg = dmg*1.2;
6767 if(U2A->riku == B) dmg = dmg*1.0;
6768 if(U2A->riku == C) dmg = dmg*0.6;
6769 if(U2A->riku == D) dmg = dmg*0.2;
6770 if(U2A->riku == E) dmg = 0;
6771 if(U2A->riku == S) dmg = dmg*1.5;
6772 if(U2A->riku == SS) dmg = dmg*2.0;
6773 } if(U->C.S_C.typeMOVE == UMI &&
6774 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
6775 if(U2A->umi == A) dmg = dmg*1.2;
6776 if(U2A->umi == B) dmg = dmg*1.0;
6777 if(U2A->umi == C) dmg = dmg*0.6;
6778 if(U2A->umi == D) dmg = dmg*0.2;
6779 if(U2A->umi == E) dmg = 0;
6780 if(U2A->umi == S) dmg = dmg*1.5;
6781 if(U2A->umi == SS) dmg = dmg*2.0;
6782 }else if(U->C.S_C.typeMOVE == UMI){
6783 if(U2A->riku == A) dmg = dmg*1.2;
6784 if(U2A->riku == B) dmg = dmg*1.0;
6785 if(U2A->riku == C) dmg = dmg*0.6;
6786 if(U2A->riku == D) dmg = dmg*0.2;
6787 if(U2A->riku == E) dmg = 0;
6788 if(U2A->riku == S) dmg = dmg*1.5;
6789 if(U2A->riku == SS) dmg = dmg*2.0;
6791 } if(U->C.S_C.typeMOVE == CHU){
6792 if(U2A->chu == A) dmg = dmg*1.2;
6793 if(U2A->chu == B) dmg = dmg*1.0;
6794 if(U2A->chu == C) dmg = dmg*0.6;
6795 if(U2A->chu == D) dmg = dmg*0.2;
6796 if(U2A->chu == E) dmg = 0;
6797 if(U2A->chu == S) dmg = dmg*1.5;
6798 if(U2A->chu == SS) dmg = dmg*2.0;
6799 } if(U->C.S_C.typeMOVE == SORA){
6800 if(U2A->sora == A) dmg = dmg*1.2;
6801 if(U2A->sora == B) dmg = dmg*1.0;
6802 if(U2A->sora == C) dmg = dmg*0.6;
6803 if(U2A->sora == D) dmg = dmg*0.2;
6804 if(U2A->sora == E) dmg = 0;
6805 if(U2A->sora == S) dmg = dmg*1.5;
6806 if(U2A->sora == SS) dmg = dmg*2.0;
6809 NSLog(@"ユニットの地形適用後:%g", dmg);
6812 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
6816 if(graze > omfg && !healFlag) {dmg = dmg/5;
6820 if(battleDef1Flag) dmg -= dmg*0.5;
6821 battleDef1Flag = false;
6823 if(dmg < 0) dmg = 0;
6827 [btHITtf2 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
6828 [btDMGtf2 setStringValue:[NSString stringWithFormat:@"ダメージ値 %g", dmg]];
6831 if(U->C.S_C.HP <= 0) {
6833 U2->C.S_C.vigor += 5;
6844 targType2Lflag = true;
6851 targType2Dflag = true;
6861 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
6863 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
6865 if(![U2A->msg isEqualToString:@""]){
6866 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
6867 [self originalMessage:U2A->msg subj:U2->C.name obje:U->C.name]]];
6873 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
6875 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
6878 }else if(battleDef2Flag){
6882 while (!(DUN[1] == U->number)) {
6887 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
6890 }else if(battleDod2Flag){
6893 while (!(DUN[1] == U->number)) {
6897 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
6902 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
6906 [battleDialog setStringValue:message];
6909 [btHITtf2 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
6913 avPlayerFlag2 = false;
6914 animationFlag3 = false;
6917 if(bLoopFlag) break;
6918 if(cpuAImodeflag && !cpuTurnEndFlag) {
6922 battleSetUp = false;
6923 battleSetFlag = false;
6926 battleSet2PushedFlag = false;
6927 cpuModeBATTLEendFlag = true;
6930 [battleWindow close];
6931 pussyLoopFlag = false;
6932 cpuAtkExtendFlag3 = false;
6933 cpuOMFGmoveATKfixFlag = false;
6934 unitNoMoveFlag = false;
6937 CPUmostDmgChoice = false;
6939 cpuIsAttackingFlag = false;
6940 for(int g = 0;g < chipWidth;g++){
6941 for(int k = 0;k < chipHeight;k++){
6942 g_attackRangeExtent[g][k] = 0;
6948 BTunitAttackFlag1 = false;
6949 BTunitAttackFlag2 = false;
6950 BTunitAttackFlag1 = false;
6951 btAttackMoveValue1 = 0;
6952 btAttackMoveValue2 = 0;
6957 btHitExtendFlag1 = false;
6958 btHitExtendProc1 = 0;
6959 btHitExtendMove1 = 0;
6960 btHitExtendFlag2 = false;
6961 btHitExtendProc2 = 0;
6962 btHitExtendMove2 = 0;
6963 baseDistanceCompFlag = false;
6964 battleVeryBegunFlag = false;
6972 UCselected = UC[-1];
6977 -(void)DisplayMessageMod1A{//両方モビール
6979 double def2 = (double)31/32;
6980 NSString *message = @"";
7001 if(bLoopFlag) return;
7003 while (!(AUN[1] == U->number)) {
7007 ATTACK *aTop = U->CL.A;
7008 for(int i = 0;i < crCAL1;i++){
7009 U->CL.A = U->CL.A->next;
7013 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
7015 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
7016 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
7018 NSString *path = @"data/AttackList/ALdata";
7020 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
7022 path = [path stringByAppendingFormat:@"/"];
7024 path = [path stringByAppendingString:U->CL.A->AN.movName];
7026 NSData *AVData = [NSData dataWithContentsOfFile:path];
7029 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
7034 NSString *path = @"data/AttackList3/IALdata";
7036 path = [path stringByAppendingFormat:@"%dE", U->CL.A->indexE];
7038 path = [path stringByAppendingFormat:@"/"];
7040 path = [path stringByAppendingString:U->CL.A->AN.movName];
7043 NSData *AVData = [NSData dataWithContentsOfFile:path];
7046 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
7052 AVPV.player = [AVpreview retain];
7058 [AVPV setHidden:NO];
7060 [battleDialog setStringValue:message];
7062 avPlayerFlag1 = true;
7068 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->CL.A->AN.ANI && !animationFlag3){
7070 [battleDialog setStringValue:message];
7071 animationFlag1 = true;
7078 dmg = U->CL.A->totalD;
7080 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
7081 U->CL.S_C.EN -= costMP;
7083 hit = U->CL.S_C.MOB+U->C.S_C.HIT;
7084 hitFix = U->CL.A->hitPercent;
7090 while (!(DUN[1] == U->number)) {
7093 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;
7094 if(hit > 100) hit = 100;
7095 if(U2A->D->sort == 1){
7102 if(battleDod2Flag) wtf = 50;
7103 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
7105 if(U2A->D->sort == 0){
7106 NSLog(@"修正前のダメージ:%g", dmg);
7107 dmg = [self dmgResist:dmg];
7108 NSLog(@"属性後のダメージ:%g", dmg);
7109 def2 = pow(def2, U->CL.S_C.ARM);
7110 int omfg = rand()%100;
7111 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->CL.S_C.ARM);
7113 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg + dmg - U->CL.S_C.ARM));
7114 dmg = (dmg*omfg/100 + dmg - U->CL.S_C.ARM);
7115 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
7116 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
7117 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
7119 if(U->CL.S_C.typeMOVE == RIKU){
7120 if(U2A->riku == A) dmg = dmg*1.2;
7121 if(U2A->riku == B) dmg = dmg*1.0;
7122 if(U2A->riku == C) dmg = dmg*0.6;
7123 if(U2A->riku == D) dmg = dmg*0.2;
7124 if(U2A->riku == E) dmg = 0;
7125 if(U2A->riku == S) dmg = dmg*1.5;
7126 if(U2A->riku == SS) dmg = dmg*2.0;
7127 } if(U->CL.S_C.typeMOVE == UMI &&
7128 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
7129 if(U2A->umi == A) dmg = dmg*1.2;
7130 if(U2A->umi == B) dmg = dmg*1.0;
7131 if(U2A->umi == C) dmg = dmg*0.6;
7132 if(U2A->umi == D) dmg = dmg*0.2;
7133 if(U2A->umi == E) dmg = 0;
7134 if(U2A->umi == S) dmg = dmg*1.5;
7135 if(U2A->umi == SS) dmg = dmg*2.0;
7136 }else if(U->CL.S_C.typeMOVE == UMI){
7137 if(U2A->riku == A) dmg = dmg*1.2;
7138 if(U2A->riku == B) dmg = dmg*1.0;
7139 if(U2A->riku == C) dmg = dmg*0.6;
7140 if(U2A->riku == D) dmg = dmg*0.2;
7141 if(U2A->riku == E) dmg = 0;
7142 if(U2A->riku == S) dmg = dmg*1.5;
7143 if(U2A->riku == SS) dmg = dmg*2.0;
7145 } if(U->CL.S_C.typeMOVE == CHU){
7146 if(U2A->chu == A) dmg = dmg*1.2;
7147 if(U2A->chu == B) dmg = dmg*1.0;
7148 if(U2A->chu == C) dmg = dmg*0.6;
7149 if(U2A->chu == D) dmg = dmg*0.2;
7150 if(U2A->chu == E) dmg = 0;
7151 if(U2A->chu == S) dmg = dmg*1.5;
7152 if(U2A->chu == SS) dmg = dmg*2.0;
7153 } if(U->CL.S_C.typeMOVE == SORA){
7154 if(U2A->sora == A) dmg = dmg*1.2;
7155 if(U2A->sora == B) dmg = dmg*1.0;
7156 if(U2A->sora == C) dmg = dmg*0.6;
7157 if(U2A->sora == D) dmg = dmg*0.2;
7158 if(U2A->sora == E) dmg = 0;
7159 if(U2A->sora == S) dmg = dmg*1.5;
7160 if(U2A->sora == SS) dmg = dmg*2.0;
7163 NSLog(@"ユニットの地形適用後:%g", dmg);
7164 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
7165 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
7169 if(graze > omfg && !healFlag) {dmg = dmg/5;
7172 if(battleDef2Flag) dmg -= dmg*0.5;
7173 battleDef2Flag = false;
7175 if(dmg < 0) dmg = 0;
7176 U->CL.S_C.HP -= dmg;
7179 }else if(U2A->D->sort == 1){
7180 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
7183 U->CL.S_C.HP += dmg;
7185 if(U->CL.S_C.HP > U->CL.S_M.HP) U->CL.S_C.HP = U->CL.S_M.HP;
7190 if(U->CL.S_C.HP <= 0) {
7192 U2->C.S_C.vigor += 5;
7203 targType2Lflag = true;
7210 targType2Dflag = true;
7218 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7219 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
7221 if(![U2A->msg isEqualToString:@""]){
7223 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
7224 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->CL.name]]];
7228 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
7229 if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
7230 else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->CL.name, dmg]];
7231 }else if(battleDef1Flag){
7235 while (!(AUN[1] == U->number)) {
7240 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
7243 }else if(battleDod1Flag){
7246 while (!(AUN[1] == U->number)) {
7250 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
7255 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
7258 [battleDialog setStringValue:message];
7274 -(void)DisplayMessageMod1B{
7276 double def2 = (double)31/32;
7277 NSString *message = @"";
7297 if(bLoopFlag) return;
7300 while (!(AUN[1] == U->number)) {
7307 while (!(DUN[1] == U->number)) {
7311 ATTACK *aTop2 = U->CL.A;
7317 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
7318 costVIG = U->C.A->vigor;
7321 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
7322 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){
7323 mostDmg = U->CL.A->totalD;
7326 U->CL.A = U->CL.A->next;
7332 if(!battleSet2PushedFlag){
7333 for(int i = 0;i < mostNumSub;i++){
7334 U->CL.A = U->CL.A->next;
7338 for(int i = 0;i < crCAL2;i++){
7339 U->CL.A = U->CL.A->next;
7348 if(U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1){
7349 }else while(U->CL.A){
7350 U->CL.A = U->CL.A->next;
7357 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
7361 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
7364 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
7365 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
7367 NSString *path = @"data/AttackList/ALdata";
7369 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
7371 path = [path stringByAppendingFormat:@"/"];
7373 path = [path stringByAppendingString:U->CL.A->AN.movName];
7376 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
7379 AVPV.player = [AVpreview retain];
7384 [AVPV setControlsStyle:0];
7385 [AVPV setHidden:NO];
7387 [battleDialog setStringValue:message];
7389 avPlayerFlag2 = true;
7394 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->CL.A->AN.ANI && !animationFlag3){
7397 animationFlag2 = true;
7405 dmg = U->CL.A->totalD;
7407 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
7408 U->CL.S_C.EN -= costMP;
7410 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
7411 hitFix = U->CL.A->hitPercent;
7418 while (!(AUN[1] == U->number)) {
7423 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;
7424 if(hit > 100) hit = 100;
7426 battleDod1Flag = false;
7429 if(battleDod1Flag) omg = 50;
7431 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
7432 NSLog(@"修正前のダメージ:%g", dmg);
7433 dmg = [self dmgResist:dmg];
7434 NSLog(@"属性後のダメージ:%g", dmg);
7435 def2 = pow(def2, U->CL.S_C.ARM);
7436 int omfg = rand()%100;
7437 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->CL.S_C.ARM);
7438 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg + dmg - U->CL.S_C.ARM));
7439 dmg = (dmg*omfg/100 + dmg - U->CL.S_C.ARM);
7442 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
7443 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
7444 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
7446 if(U->CL.S_C.typeMOVE == RIKU){
7447 if(U2A->riku == A) dmg = dmg*1.2;
7448 if(U2A->riku == B) dmg = dmg*1.0;
7449 if(U2A->riku == C) dmg = dmg*0.6;
7450 if(U2A->riku == D) dmg = dmg*0.2;
7451 if(U2A->riku == E) dmg = 0;
7452 if(U2A->riku == S) dmg = dmg*1.5;
7453 if(U2A->riku == SS) dmg = dmg*2.0;
7454 } if(U->CL.S_C.typeMOVE == UMI &&
7455 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
7456 if(U2A->umi == A) dmg = dmg*1.2;
7457 if(U2A->umi == B) dmg = dmg*1.0;
7458 if(U2A->umi == C) dmg = dmg*0.6;
7459 if(U2A->umi == D) dmg = dmg*0.2;
7460 if(U2A->umi == E) dmg = 0;
7461 if(U2A->umi == S) dmg = dmg*1.5;
7462 if(U2A->umi == SS) dmg = dmg*2.0;
7463 }else if(U->CL.S_C.typeMOVE == UMI){
7464 if(U2A->riku == A) dmg = dmg*1.2;
7465 if(U2A->riku == B) dmg = dmg*1.0;
7466 if(U2A->riku == C) dmg = dmg*0.6;
7467 if(U2A->riku == D) dmg = dmg*0.2;
7468 if(U2A->riku == E) dmg = 0;
7469 if(U2A->riku == S) dmg = dmg*1.5;
7470 if(U2A->riku == SS) dmg = dmg*2.0;
7472 } if(U->CL.S_C.typeMOVE == CHU){
7473 if(U2A->chu == A) dmg = dmg*1.2;
7474 if(U2A->chu == B) dmg = dmg*1.0;
7475 if(U2A->chu == C) dmg = dmg*0.6;
7476 if(U2A->chu == D) dmg = dmg*0.2;
7477 if(U2A->chu == E) dmg = 0;
7478 if(U2A->chu == S) dmg = dmg*1.5;
7479 if(U2A->chu == SS) dmg = dmg*2.0;
7480 } if(U->CL.S_C.typeMOVE == SORA){
7481 if(U2A->sora == A) dmg = dmg*1.2;
7482 if(U2A->sora == B) dmg = dmg*1.0;
7483 if(U2A->sora == C) dmg = dmg*0.6;
7484 if(U2A->sora == D) dmg = dmg*0.2;
7485 if(U2A->sora == E) dmg = 0;
7486 if(U2A->sora == S) dmg = dmg*1.5;
7487 if(U2A->sora == SS) dmg = dmg*2.0;
7490 NSLog(@"ユニットの地形適用後:%g", dmg);
7492 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
7496 if(graze > omfg && !healFlag) {dmg = dmg/5;
7500 if(battleDef1Flag) dmg -= dmg*0.5;
7501 battleDef1Flag = false;
7503 if(dmg < 0) dmg = 0;
7504 U->CL.S_C.HP -= dmg;
7508 if(U->CL.S_C.HP <= 0) {
7510 U2->C.S_C.vigor += 5;
7521 targType2Lflag = true;
7528 targType2Dflag = true;
7538 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7540 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
7542 if(![U2A->msg isEqualToString:@""]){
7543 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
7544 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->CL.name]]];
7550 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
7552 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
7554 }else if(battleDef2Flag){
7558 while (!(DUN[1] == U->number)) {
7563 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
7566 }else if(battleDod2Flag){
7569 while (!(DUN[1] == U->number)) {
7573 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
7578 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
7581 [battleDialog setStringValue:message];
7590 -(void)DisplayMessageMod2A{//攻撃側モビール
7592 double def2 = (double)31/32;
7593 NSString *message = @"";
7613 if(bLoopFlag) return;
7616 while (!(DUN[1] == U->number)) {
7622 while (!(AUN[1] == U->number)) {
7626 ATTACK *aTop = U->CL.A;
7627 for(int i = 0;i < crCAL1;i++){
7628 U->CL.A = U->CL.A->next;
7632 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
7634 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
7635 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
7637 NSString *path = @"data/AttackList/ALdata";
7639 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
7641 path = [path stringByAppendingFormat:@"/"];
7643 path = [path stringByAppendingString:U->CL.A->AN.movName];
7645 NSData *AVData = [NSData dataWithContentsOfFile:path];
7648 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
7653 NSString *path = @"data/AttackList3/IALdata";
7655 path = [path stringByAppendingFormat:@"%dE", U->CL.A->indexE];
7657 path = [path stringByAppendingFormat:@"/"];
7659 path = [path stringByAppendingString:U->CL.A->AN.movName];
7662 NSData *AVData = [NSData dataWithContentsOfFile:path];
7665 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
7671 AVPV.player = [AVpreview retain];
7677 [AVPV setHidden:NO];
7679 [battleDialog setStringValue:message];
7681 avPlayerFlag1 = true;
7687 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->CL.A->AN.ANI && !animationFlag3){
7689 [battleDialog setStringValue:message];
7690 animationFlag1 = true;
7697 dmg = U->CL.A->totalD;
7698 double val = 1/log(3+U2->C.S_C.MP/64);
7703 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
7704 U->CL.S_C.EN -= costMP;
7706 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
7707 hitFix = U->CL.A->hitPercent;
7713 while (!(DUN[1] == U->number)) {
7717 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
7719 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
7722 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
7723 if(hit > 100) hit = 100;
7724 if(U2A->D->sort == 1){
7731 if(battleDod2Flag) wtf = 50;
7732 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
7734 if(U2A->D->sort == 0){
7735 NSLog(@"修正前のダメージ:%g", dmg);
7736 dmg = [self dmgResist:dmg];
7737 NSLog(@"属性後のダメージ:%g", dmg);
7738 def2 = pow(def2, U->C.S_C.DEF);
7739 int omfg = rand()%100;
7740 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->C.S_C.DEF);
7741 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->C.S_C.DEF), (dmg/10 + dmg - U->C.S_C.DEF));
7742 dmg = (dmg*omfg/100/10 + dmg - U->C.S_C.DEF);
7743 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
7744 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
7745 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
7747 if(U->C.S_C.typeMOVE == RIKU){
7748 if(U2A->riku == A) dmg = dmg*1.2;
7749 if(U2A->riku == B) dmg = dmg*1.0;
7750 if(U2A->riku == C) dmg = dmg*0.6;
7751 if(U2A->riku == D) dmg = dmg*0.2;
7752 if(U2A->riku == E) dmg = 0;
7753 if(U2A->riku == S) dmg = dmg*1.5;
7754 if(U2A->riku == SS) dmg = dmg*2.0;
7755 } if(U->C.S_C.typeMOVE == UMI &&
7756 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
7757 if(U2A->umi == A) dmg = dmg*1.2;
7758 if(U2A->umi == B) dmg = dmg*1.0;
7759 if(U2A->umi == C) dmg = dmg*0.6;
7760 if(U2A->umi == D) dmg = dmg*0.2;
7761 if(U2A->umi == E) dmg = 0;
7762 if(U2A->umi == S) dmg = dmg*1.5;
7763 if(U2A->umi == SS) dmg = dmg*2.0;
7764 }else if(U->C.S_C.typeMOVE == UMI){
7765 if(U2A->riku == A) dmg = dmg*1.2;
7766 if(U2A->riku == B) dmg = dmg*1.0;
7767 if(U2A->riku == C) dmg = dmg*0.6;
7768 if(U2A->riku == D) dmg = dmg*0.2;
7769 if(U2A->riku == E) dmg = 0;
7770 if(U2A->riku == S) dmg = dmg*1.5;
7771 if(U2A->riku == SS) dmg = dmg*2.0;
7773 } if(U->C.S_C.typeMOVE == CHU){
7774 if(U2A->chu == A) dmg = dmg*1.2;
7775 if(U2A->chu == B) dmg = dmg*1.0;
7776 if(U2A->chu == C) dmg = dmg*0.6;
7777 if(U2A->chu == D) dmg = dmg*0.2;
7778 if(U2A->chu == E) dmg = 0;
7779 if(U2A->chu == S) dmg = dmg*1.5;
7780 if(U2A->chu == SS) dmg = dmg*2.0;
7781 } if(U->C.S_C.typeMOVE == SORA){
7782 if(U2A->sora == A) dmg = dmg*1.2;
7783 if(U2A->sora == B) dmg = dmg*1.0;
7784 if(U2A->sora == C) dmg = dmg*0.6;
7785 if(U2A->sora == D) dmg = dmg*0.2;
7786 if(U2A->sora == E) dmg = 0;
7787 if(U2A->sora == S) dmg = dmg*1.5;
7788 if(U2A->sora == SS) dmg = dmg*2.0;
7791 NSLog(@"ユニットの地形適用後:%g", dmg);
7792 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
7793 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
7797 if(graze > omfg && !healFlag) {dmg = dmg/5;
7800 if(battleDef2Flag) dmg -= dmg*0.5;
7801 battleDef2Flag = false;
7803 if(dmg < 0) dmg = 0;
7807 }else if(U2A->D->sort == 1){
7808 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
7811 U->CL.S_C.HP += dmg;
7813 if(U->CL.S_C.HP > U->CL.S_M.HP) U->CL.S_C.HP = U->CL.S_M.HP;
7818 if(U->C.S_C.HP <= 0) {
7820 U2->C.S_C.vigor += 5;
7831 targType2Lflag = true;
7838 targType2Dflag = true;
7846 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7847 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
7849 if(![U2A->msg isEqualToString:@""]){
7851 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
7852 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->C.name]]];
7856 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
7857 if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
7858 else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->C.name, dmg]];
7859 }else if(battleDef1Flag){
7863 while (!(AUN[1] == U->number)) {
7868 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
7871 }else if(battleDod1Flag){
7874 while (!(AUN[1] == U->number)) {
7878 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
7883 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
7886 [battleDialog setStringValue:message];
7903 -(void)DisplayMessageMod2B{
7905 double def2 = (double)31/32;
7906 NSString *message = @"";
7926 if(bLoopFlag) return;
7929 while (!(AUN[1] == U->number)) {
7936 while (!(DUN[1] == U->number)) {
7940 ATTACK *aTop2 = U->C.A;
7946 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
7947 costVIG = U->C.A->vigor;
7950 costVIG = U->C.A->vigor;
7952 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
7954 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){
7955 mostDmg = U->C.A->totalD;
7958 U->C.A = U->C.A->next;
7964 if(!battleSet2PushedFlag){
7965 for(int i = 0;i < mostNumSub;i++){
7966 U->C.A = U->C.A->next;
7969 if(mostNum < 0) U->C.A = NULL;
7971 for(int i = 0;i < crCAL2;i++){
7972 U->C.A = U->C.A->next;
7977 if(U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1){
7978 }else while(U->CL.A){
7979 U->C.A = U->C.A->next;
7985 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
7991 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
7995 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
7998 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL){
7999 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
8001 NSString *path = @"data/AttackList/ALdata";
8003 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
8005 path = [path stringByAppendingFormat:@"/"];
8007 path = [path stringByAppendingString:U->C.A->AN.movName];
8010 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
8013 AVPV.player = [AVpreview retain];
8018 [AVPV setControlsStyle:0];
8019 [AVPV setHidden:NO];
8021 [battleDialog setStringValue:message];
8023 avPlayerFlag2 = true;
8028 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->C.A->AN.ANI && !animationFlag3){
8031 animationFlag2 = true;
8041 if(U->C.A->D->type == 0) dmg = U->C.S_C.ATK + U->C.A->totalD;
8042 if(U->C.A->D->type == 1) dmg = U->C.S_C.DEF + U->C.A->totalD;
8043 if(U->C.A->D->type == 2) dmg = U->C.S_C.ACU + U->C.A->totalD;
8044 if(U->C.A->D->type == 3) dmg = U->C.S_C.EVA + U->C.A->totalD;
8045 if(U->C.A->D->type == 4) dmg = U->C.S_C.CAP + U->C.A->totalD;
8046 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
8049 double urSupposedToGet;
8051 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
8054 bool lolFlag = false;
8056 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
8057 else oopsIsRight = U->C.S_C.MIS;
8060 if(U->C.A->D->type == 0) dmg = (U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP + urSupposedToGet)*oopsIsRight/100;
8061 if(U->C.A->D->type == 1) dmg = (U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP + urSupposedToGet)*oopsIsRight/100;
8062 if(U->C.A->D->type == 2) dmg = (U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP + urSupposedToGet)*oopsIsRight/100;
8063 if(U->C.A->D->type == 3) dmg = (U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP + urSupposedToGet)*oopsIsRight/100;
8064 if(U->C.A->D->type == 4) {
8066 dmg = (U->C.S_C.CAP + urSupposedToGet)*oopsIsRight/100;
8068 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
8070 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
8071 U->C.S_C.MP -= costMP;
8073 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
8074 hitFix = U->C.A->hitPercent;
8080 while (!(AUN[1] == U->number)) {
8084 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;
8085 if(hit > 100) hit = 100;
8087 battleDod1Flag = false;
8090 if(battleDod1Flag) omg = 50;
8092 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
8093 NSLog(@"修正前のダメージ:%g, %g", dmg, U2A->D->seed);
8095 dmg = [self dmgResist:dmg];
8096 NSLog(@"属性後のダメージ:%g", dmg);
8097 def2 = pow(def2, U->CL.S_C.ARM);
8098 int omfg = rand()%100;
8099 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->CL.S_C.ARM);
8100 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg/10 + dmg - U->CL.S_C.ARM));
8101 if(lolFlag) dmg = (dmg*omfg/100/10 + dmg);
8102 else dmg = (dmg*omfg/100/10+ dmg - U->CL.S_C.ARM);
8105 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
8106 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
8107 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
8109 if(U->CL.S_C.typeMOVE == RIKU){
8110 if(U2A->riku == A) dmg = dmg*1.2;
8111 if(U2A->riku == B) dmg = dmg*1.0;
8112 if(U2A->riku == C) dmg = dmg*0.6;
8113 if(U2A->riku == D) dmg = dmg*0.2;
8114 if(U2A->riku == E) dmg = 0;
8115 if(U2A->riku == S) dmg = dmg*1.5;
8116 if(U2A->riku == SS) dmg = dmg*2.0;
8117 } if(U->CL.S_C.typeMOVE == UMI &&
8118 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
8119 if(U2A->umi == A) dmg = dmg*1.2;
8120 if(U2A->umi == B) dmg = dmg*1.0;
8121 if(U2A->umi == C) dmg = dmg*0.6;
8122 if(U2A->umi == D) dmg = dmg*0.2;
8123 if(U2A->umi == E) dmg = 0;
8124 if(U2A->umi == S) dmg = dmg*1.5;
8125 if(U2A->umi == SS) dmg = dmg*2.0;
8126 }else if(U->CL.S_C.typeMOVE == UMI){
8127 if(U2A->riku == A) dmg = dmg*1.2;
8128 if(U2A->riku == B) dmg = dmg*1.0;
8129 if(U2A->riku == C) dmg = dmg*0.6;
8130 if(U2A->riku == D) dmg = dmg*0.2;
8131 if(U2A->riku == E) dmg = 0;
8132 if(U2A->riku == S) dmg = dmg*1.5;
8133 if(U2A->riku == SS) dmg = dmg*2.0;
8135 } if(U->CL.S_C.typeMOVE == CHU){
8136 if(U2A->chu == A) dmg = dmg*1.2;
8137 if(U2A->chu == B) dmg = dmg*1.0;
8138 if(U2A->chu == C) dmg = dmg*0.6;
8139 if(U2A->chu == D) dmg = dmg*0.2;
8140 if(U2A->chu == E) dmg = 0;
8141 if(U2A->chu == S) dmg = dmg*1.5;
8142 if(U2A->chu == SS) dmg = dmg*2.0;
8143 } if(U->CL.S_C.typeMOVE == SORA){
8144 if(U2A->sora == A) dmg = dmg*1.2;
8145 if(U2A->sora == B) dmg = dmg*1.0;
8146 if(U2A->sora == C) dmg = dmg*0.6;
8147 if(U2A->sora == D) dmg = dmg*0.2;
8148 if(U2A->sora == E) dmg = 0;
8149 if(U2A->sora == S) dmg = dmg*1.5;
8150 if(U2A->sora == SS) dmg = dmg*2.0;
8153 NSLog(@"ユニットの地形適用後:%g", dmg);
8155 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
8159 if(graze > omfg && !healFlag) {dmg = dmg/5;
8163 if(battleDef1Flag) dmg -= dmg*0.5;
8164 battleDef1Flag = false;
8166 if(dmg < 0) dmg = 0;
8167 U->CL.S_C.HP -= dmg;
8171 if(U->CL.S_C.HP <= 0) {
8173 U2->C.S_C.vigor += 5;
8184 targType2Lflag = true;
8191 targType2Dflag = true;
8201 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8203 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
8205 if(![U2A->msg isEqualToString:@""]){
8206 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
8207 [self originalMessage:U2A->msg subj:U2->C.name obje:U->CL.name]]];
8213 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
8215 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
8217 }else if(battleDef2Flag){
8221 while (!(DUN[1] == U->number)) {
8226 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
8229 }else if(battleDod2Flag){
8232 while (!(DUN[1] == U->number)) {
8236 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
8241 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
8244 [battleDialog setStringValue:message];
8254 -(void)DisplayMessageMod3A{//防御側モビール
8256 double def2 = (double)31/32;
8257 NSString *message = @"";
8276 static bool extentbool3 = false;
8277 static bool extentbool4 = false;
8278 if(!extentbool3 && extentBattleFlag2){
8280 extentMPcostFlag = false;
8283 if(!extentBattleFlag2){
8287 if(bLoopFlag) return;
8290 while (!(DUN[DUNnum] == U->number)) {
8296 while (!(AUN[1] == U->number)) {
8300 ATTACK *aTop = U->C.A;
8301 for(int i = 0;i < crCAL1;i++){
8302 U->C.A = U->C.A->next;
8306 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
8309 [bplayer2 setImage:U2->CL.imgb];
8310 //[bplayer2 setImageScaling:NSScaleToFit];
8311 [nplayer2 setStringValue:U2->CL.name];
8312 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U2->CL.S_C.HP, U2->CL.S_M.HP]];
8313 [lplayer2 setIntValue:U2->CL.S_C.HP/U2->CL.S_M.HP*100];
8314 [iplayer2 setImage:MC[chipNum[U2->x][U2->y]].img];
8315 [mplayer2 setStringValue:MC[chipNum[U2->x][U2->y]].name];
8316 [rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U2->x][U2->y]].dmgfix]];
8318 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL && DUN[DUNnum] == 1){
8319 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
8321 NSString *path = @"data/AttackList/ALdata";
8323 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
8325 path = [path stringByAppendingFormat:@"/"];
8327 path = [path stringByAppendingString:U->C.A->AN.movName];
8329 NSData *AVData = [NSData dataWithContentsOfFile:path];
8332 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
8337 NSString *path = @"data/AttackList3/IALdata";
8339 path = [path stringByAppendingFormat:@"%dE", U->C.A->indexE];
8341 path = [path stringByAppendingFormat:@"/"];
8343 path = [path stringByAppendingString:U->C.A->AN.movName];
8346 NSData *AVData = [NSData dataWithContentsOfFile:path];
8349 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
8355 AVPV.player = [AVpreview retain];
8361 [AVPV setHidden:NO];
8363 [battleDialog setStringValue:message];
8365 avPlayerFlag1 = true;
8371 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->C.A->AN.ANI && !animationFlag3 && DUN[DUNnum] == 1){
8373 [battleDialog setStringValue:message];
8374 animationFlag1 = true;
8382 if(U->C.A->D->type == 0) dmg = U->C.S_C.ATK + U->C.A->totalD;
8383 if(U->C.A->D->type == 1) dmg = U->C.S_C.DEF + U->C.A->totalD;
8384 if(U->C.A->D->type == 2) dmg = U->C.S_C.ACU + U->C.A->totalD;
8385 if(U->C.A->D->type == 3) dmg = U->C.S_C.EVA + U->C.A->totalD;
8386 if(U->C.A->D->type == 4) dmg = U->C.S_C.CAP + U->C.A->totalD;
8387 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
8390 double urSupposedToGet;
8392 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
8396 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
8397 else oopsIsRight = U->C.S_C.MIS;
8398 bool lolflag = false;
8400 if(U->C.A->D->type == 0) dmg = (U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP + urSupposedToGet)*oopsIsRight/100;
8401 if(U->C.A->D->type == 1) dmg = (U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP + urSupposedToGet)*oopsIsRight/100;
8402 if(U->C.A->D->type == 2) dmg = (U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP + urSupposedToGet)*oopsIsRight/100;
8403 if(U->C.A->D->type == 3) dmg = (U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP + urSupposedToGet)*oopsIsRight/100;
8405 if(U->C.A->D->type == 4){
8407 dmg = (U->C.S_C.CAP + U->C.A->totalD)*oopsIsRight/100;
8410 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
8411 double val2 = log(3+U2->C.S_C.MP/64);
8416 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
8418 if(extentMPcostFlag && extentBattleFlag2){
8421 U->C.S_C.MP -= costMP;
8422 extentMPcostFlag = true;
8425 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
8426 hitFix = U->C.A->hitPercent;
8432 while (!(DUN[DUNnum] == U->number)) {
8435 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;
8436 if(hit > 100) hit = 100;
8437 if(U2A->D->sort == 1){
8444 if(battleDod2Flag) wtf = 50;
8445 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
8447 if(U2A->D->sort == 0){
8448 NSLog(@"修正前のダメージ:%g", dmg);
8449 dmg = [self dmgResist:dmg];
8450 NSLog(@"属性後のダメージ:%g", dmg);
8451 def2 = pow(def2, U->CL.S_C.ARM);
8452 int omfg = rand()%100;
8453 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, (U->CL.S_C.ARM));
8454 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg/10 + dmg - U->CL.S_C.ARM));
8455 if(lolflag) dmg = (dmg*omfg/100/10 + dmg);
8456 else dmg = (dmg*omfg/100/10 + dmg - U->CL.S_C.ARM);
8457 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
8458 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
8459 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
8461 if(U->CL.S_C.typeMOVE == RIKU){
8462 if(U2A->riku == A) dmg = dmg*1.2;
8463 if(U2A->riku == B) dmg = dmg*1.0;
8464 if(U2A->riku == C) dmg = dmg*0.6;
8465 if(U2A->riku == D) dmg = dmg*0.2;
8466 if(U2A->riku == E) dmg = 0;
8467 if(U2A->riku == S) dmg = dmg*1.5;
8468 if(U2A->riku == SS) dmg = dmg*2.0;
8469 } if(U->CL.S_C.typeMOVE == UMI &&
8470 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
8471 if(U2A->umi == A) dmg = dmg*1.2;
8472 if(U2A->umi == B) dmg = dmg*1.0;
8473 if(U2A->umi == C) dmg = dmg*0.6;
8474 if(U2A->umi == D) dmg = dmg*0.2;
8475 if(U2A->umi == E) dmg = 0;
8476 if(U2A->umi == S) dmg = dmg*1.5;
8477 if(U2A->umi == SS) dmg = dmg*2.0;
8478 }else if(U->CL.S_C.typeMOVE == UMI){
8479 if(U2A->riku == A) dmg = dmg*1.2;
8480 if(U2A->riku == B) dmg = dmg*1.0;
8481 if(U2A->riku == C) dmg = dmg*0.6;
8482 if(U2A->riku == D) dmg = dmg*0.2;
8483 if(U2A->riku == E) dmg = 0;
8484 if(U2A->riku == S) dmg = dmg*1.5;
8485 if(U2A->riku == SS) dmg = dmg*2.0;
8487 } if(U->CL.S_C.typeMOVE == CHU){
8488 if(U2A->chu == A) dmg = dmg*1.2;
8489 if(U2A->chu == B) dmg = dmg*1.0;
8490 if(U2A->chu == C) dmg = dmg*0.6;
8491 if(U2A->chu == D) dmg = dmg*0.2;
8492 if(U2A->chu == E) dmg = 0;
8493 if(U2A->chu == S) dmg = dmg*1.5;
8494 if(U2A->chu == SS) dmg = dmg*2.0;
8495 } if(U->CL.S_C.typeMOVE == SORA){
8496 if(U2A->sora == A) dmg = dmg*1.2;
8497 if(U2A->sora == B) dmg = dmg*1.0;
8498 if(U2A->sora == C) dmg = dmg*0.6;
8499 if(U2A->sora == D) dmg = dmg*0.2;
8500 if(U2A->sora == E) dmg = 0;
8501 if(U2A->sora == S) dmg = dmg*1.5;
8502 if(U2A->sora == SS) dmg = dmg*2.0;
8505 NSLog(@"ユニットの地形適用後:%g", dmg);
8506 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
8507 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
8511 if(graze > omfg && !healFlag) {dmg = dmg/5;
8514 if(battleDef2Flag) dmg -= dmg*0.5;
8515 battleDef2Flag = false;
8517 if(dmg < 0) dmg = 0;
8518 U->CL.S_C.HP -= dmg;
8521 }else if(U2A->D->sort == 1){
8522 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
8526 if(U->C.S_C.HP > U->C.S_M.HP) U->C.S_C.HP = U->C.S_M.HP;
8531 if(U->CL.S_C.HP <= 0) {
8533 U2->C.S_C.vigor += 5;
8544 targType2Lflag = true;
8551 targType2Dflag = true;
8559 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8560 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
8562 if(![U2A->msg isEqualToString:@""]){
8564 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
8565 [self originalMessage:U2A->msg subj:U2->C.name obje:U->CL.name]]];
8569 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
8570 if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
8571 else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->CL.name, dmg]];
8572 }else if(battleDef1Flag){
8576 while (!(AUN[1] == U->number)) {
8581 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
8584 }else if(battleDod1Flag){
8587 while (!(AUN[1] == U->number)) {
8591 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
8596 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
8599 [battleDialog setStringValue:message];
8606 if(!extentBattleFlag2){
8611 }else if(extentBattleFlag2){
8614 if(DUN[DUNnum] <= 0){
8618 extentBattleFlag2 = false;
8619 extentbool3 = false;
8620 extentMPcostFlag = false;
8627 -(void)DisplayMessageMod3B{
8630 double def2 = (double)31/32;
8631 NSString *message = @"";
8651 if(bLoopFlag) return;
8655 while (!(AUN[1] == U->number)) {
8661 while (!(DUN[1] == U->number)) {
8664 ATTACK *aTop2 = U->CL.A;
8670 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
8671 costVIG = U->C.A->vigor;
8674 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
8675 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){
8676 mostDmg = U->CL.A->totalD;
8679 U->CL.A = U->CL.A->next;
8683 if(mostNum < 0) U->C.A = NULL;
8687 if(!battleSet2PushedFlag){
8688 for(int i = 0;i < mostNumSub;i++){
8689 U->CL.A = U->CL.A->next;
8694 for(int i = 0;i < crCAL2;i++){
8695 U->CL.A = U->C.A->next;
8699 if(U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1){
8700 }else while(U->CL.A){
8701 U->CL.A = U->CL.A->next;
8708 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
8712 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
8714 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
8715 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
8717 NSString *path = @"data/AttackList/ALdata";
8719 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
8721 path = [path stringByAppendingFormat:@"/"];
8723 path = [path stringByAppendingString:U->CL.A->AN.movName];
8726 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
8729 AVPV.player = [AVpreview retain];
8734 [AVPV setControlsStyle:0];
8735 [AVPV setHidden:NO];
8737 [battleDialog setStringValue:message];
8739 avPlayerFlag2 = true;
8744 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->CL.A->AN.ANI && !animationFlag3){
8747 animationFlag2 = true;
8757 dmg = U->CL.A->totalD;
8759 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
8760 U->CL.S_C.EN -= costMP;
8762 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
8763 hitFix = U->CL.A->hitPercent;
8769 while (!(AUN[1] == U->number)) {
8773 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
8775 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
8778 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
8779 if(hit > 100) hit = 100;
8781 battleDod1Flag = false;
8784 if(battleDod1Flag) omg = 50;
8786 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
8787 NSLog(@"修正前のダメージ:%g", dmg);
8788 dmg = [self dmgResist:dmg];
8789 NSLog(@"属性後のダメージ:%g", dmg);
8790 def2 = pow(def2, U->C.S_C.DEF);
8791 int omfg = rand()%100;
8792 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->C.S_C.DEF);
8793 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->C.S_C.DEF), (dmg/10 + dmg - U->C.S_C.DEF));
8794 dmg = (dmg*omfg/100/10 + dmg - U->C.S_C.DEF);
8797 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
8798 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
8799 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
8801 if(U->C.S_C.typeMOVE == RIKU){
8802 if(U2A->riku == A) dmg = dmg*1.2;
8803 if(U2A->riku == B) dmg = dmg*1.0;
8804 if(U2A->riku == C) dmg = dmg*0.6;
8805 if(U2A->riku == D) dmg = dmg*0.2;
8806 if(U2A->riku == E) dmg = 0;
8807 if(U2A->riku == S) dmg = dmg*1.5;
8808 if(U2A->riku == SS) dmg = dmg*2.0;
8809 } if(U->C.S_C.typeMOVE == UMI &&
8810 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
8811 if(U2A->umi == A) dmg = dmg*1.2;
8812 if(U2A->umi == B) dmg = dmg*1.0;
8813 if(U2A->umi == C) dmg = dmg*0.6;
8814 if(U2A->umi == D) dmg = dmg*0.2;
8815 if(U2A->umi == E) dmg = 0;
8816 if(U2A->umi == S) dmg = dmg*1.5;
8817 if(U2A->umi == SS) dmg = dmg*2.0;
8818 }else if(U->C.S_C.typeMOVE == UMI){
8819 if(U2A->riku == A) dmg = dmg*1.2;
8820 if(U2A->riku == B) dmg = dmg*1.0;
8821 if(U2A->riku == C) dmg = dmg*0.6;
8822 if(U2A->riku == D) dmg = dmg*0.2;
8823 if(U2A->riku == E) dmg = 0;
8824 if(U2A->riku == S) dmg = dmg*1.5;
8825 if(U2A->riku == SS) dmg = dmg*2.0;
8827 } if(U->C.S_C.typeMOVE == CHU){
8828 if(U2A->chu == A) dmg = dmg*1.2;
8829 if(U2A->chu == B) dmg = dmg*1.0;
8830 if(U2A->chu == C) dmg = dmg*0.6;
8831 if(U2A->chu == D) dmg = dmg*0.2;
8832 if(U2A->chu == E) dmg = 0;
8833 if(U2A->chu == S) dmg = dmg*1.5;
8834 if(U2A->chu == SS) dmg = dmg*2.0;
8835 } if(U->C.S_C.typeMOVE == SORA){
8836 if(U2A->sora == A) dmg = dmg*1.2;
8837 if(U2A->sora == B) dmg = dmg*1.0;
8838 if(U2A->sora == C) dmg = dmg*0.6;
8839 if(U2A->sora == D) dmg = dmg*0.2;
8840 if(U2A->sora == E) dmg = 0;
8841 if(U2A->sora == S) dmg = dmg*1.5;
8842 if(U2A->sora == SS) dmg = dmg*2.0;
8845 NSLog(@"ユニットの地形適用後:%g", dmg);
8847 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
8851 if(graze > omfg && !healFlag) {dmg = dmg/5;
8855 if(battleDef1Flag) dmg -= dmg*0.5;
8856 battleDef1Flag = false;
8858 if(dmg < 0) dmg = 0;
8863 if(U->C.S_C.HP <= 0) {
8865 U2->C.S_C.vigor += 5;
8876 targType2Lflag = true;
8883 targType2Dflag = true;
8893 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8895 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
8897 if(![U2A->msg isEqualToString:@""]){
8898 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
8899 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->C.name]]];
8905 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
8907 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
8909 }else if(battleDef2Flag){
8913 while (!(DUN[1] == U->number)) {
8918 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
8921 }else if(battleDod2Flag){
8924 while (!(DUN[1] == U->number)) {
8928 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
8933 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
8936 [battleDialog setStringValue:message];
8945 -(NSString*)originalMessage:(NSString*)str subj:(NSString*)subj obje:(NSString*)obje{
8949 NSString *result = @"";
8951 string = [str copy];
8953 array = [string componentsSeparatedByString:@"$subj"];
8955 for(int i = 0;i < [array count];i++){
8957 result = [[result stringByAppendingString:[NSString stringWithFormat:@"%@", subj]] retain];
8959 result = [[result stringByAppendingString:[array objectAtIndex:i]] retain];
8962 string = [result copy];
8964 array = [string componentsSeparatedByString:@"$obje"];
8968 for(int i = 0;i < [array count];i++){
8970 result = [[result stringByAppendingString:[NSString stringWithFormat:@"%@", obje]] retain];
8972 result = [[result stringByAppendingString:[array objectAtIndex:i]] retain];
8975 //NSLog(@"%@", result);
8982 -(double)dmgResist:(double)DMG{
8986 sd[0] = U->C.R_C.blow + U->C.R_F.blow;
8987 sd[1] = U->C.R_C.slash + U->C.R_F.slash;
8988 sd[2] = U->C.R_C.stub + U->C.R_F.stub;
8989 sd[3] = U->C.R_C.arrow + U->C.R_F.arrow;
8990 sd[4] = U->C.R_C.gun + U->C.R_F.gun;
8991 sd[5] = U->C.R_C.shell + U->C.R_F.shell;
8993 sd[6] = U->C.R_C.flame + U->C.R_F.flame;
8994 sd[7] = U->C.R_C.cold + U->C.R_F.cold;
8995 sd[8] = U->C.R_C.electoric + U->C.R_F.electoric;
8996 sd[9] = U->C.R_C.air + U->C.R_F.air;
8997 sd[10] = U->C.R_C.water + U->C.R_F.water;
8998 sd[11] = U->C.R_C.gas + U->C.R_F.gas;
8999 sd[12] = U->C.R_C.holy + U->C.R_F.holy;
9000 sd[13] = U->C.R_C.dark + U->C.R_F.dark;
9001 sd[14] = U->C.R_C.explosion + U->C.R_F.explosion;
9002 sd[15] = U->C.R_C.blood + U->C.R_F.blood;
9004 sd[16] = U->C.R_C.paralysis + U->C.R_F.paralysis;
9005 sd[17] = U->C.R_C.confusion + U->C.R_F.confusion;
9006 sd[18] = U->C.R_C.poison + U->C.R_F.poison;
9007 sd[19] = U->C.R_C.sleep + U->C.R_F.sleep;
9008 sd[20] = U->C.R_C.charm + U->C.R_F.charm;
9009 sd[21] = U->C.R_C.silent + U->C.R_F.silent;
9013 for(int i = 0;i <= 21;i++)
9014 sd[i] &= ~(sd[i] >> 31);
9018 if(U2A->D->seed == 0) DMG = DMG * sd[0]/100;
9019 if(U2A->D->seed == 1) DMG = DMG * sd[1]/100;
9020 if(U2A->D->seed == 2) DMG = DMG * sd[2]/100;
9021 if(U2A->D->seed == 3) DMG = DMG * sd[3]/100;
9022 if(U2A->D->seed == 4) DMG = DMG * sd[4]/100;
9023 if(U2A->D->seed == 5) DMG = DMG * sd[5]/100;
9025 if(U2A->D->seed == 6) DMG = DMG * sd[6]/100;
9026 if(U2A->D->seed == 7) DMG = DMG * sd[7]/100;
9027 if(U2A->D->seed == 8) DMG = DMG * sd[8]/100;
9028 if(U2A->D->seed == 9) DMG = DMG * sd[9]/100;
9029 if(U2A->D->seed == 10) DMG = DMG * sd[10]/100;
9030 if(U2A->D->seed == 11) DMG = DMG * sd[11]/100;
9031 if(U2A->D->seed == 12) DMG = DMG * sd[12]/100;
9032 if(U2A->D->seed == 13) DMG = DMG * sd[13]/100;
9033 if(U2A->D->seed == 14) DMG = DMG * sd[14]/100;
9034 if(U2A->D->seed == 15) DMG = DMG * sd[15]/100;
9036 if(U2A->D->seed == 16) DMG = DMG * sd[16]/100;
9037 if(U2A->D->seed == 17) DMG = DMG * sd[17]/100;
9038 if(U2A->D->seed == 18) DMG = DMG * sd[18]/100;
9039 if(U2A->D->seed == 19) DMG = DMG * sd[19]/100;
9040 if(U2A->D->seed == 20) DMG = DMG * sd[20]/100;
9041 if(U2A->D->seed == 21) DMG = DMG * sd[21]/100;
9046 -(IBAction)battleStart:(id)sender{
9049 battleSet1Flag = false;
9050 battleSet2Flag = false;
9051 battleSettingFlag = false;
9053 [battlePanel close];
9057 -(void)battleStartCPU{
9060 battleSet1Flag = false;
9061 battleSet2Flag = false;
9062 battleSettingFlag = false;
9064 [self AttackDisplay];
9066 windowPoint.x = [mapWindow frame].origin.x;
9067 windowPoint.y = [mapWindow frame].origin.y;
9068 [battleWindow setFrameOrigin:windowPoint];
9069 [battleWindow makeKeyAndOrderFront:nil];
9070 [battlePanel close];
9073 -(IBAction)battleSet1:(id)sender{
9074 battleSetFlag = false;
9075 battleSet1Flag = true;
9076 battleDef1Flag = false;
9077 battleDod1Flag = false;
9078 battleSettingFlag = true;
9079 battleSet2PushedFlag = false;
9082 while (!(AUN[1] == U->number)) {
9085 if(U->chipNumberL >= 0)
9088 [self initCAttackList2];
9089 [self initCAttackSelect2];
9091 else if(U->chipNumber >= 0) {
9093 [self initCAttackList];
9094 [self initCAttackSelect];
9098 [atkPanel makeKeyAndOrderFront:nil];
9100 -(IBAction)battleDef1:(id)sender{
9101 battleDef1Flag = true;
9102 battleSet1Flag = false;
9103 battleDod1Flag = false;
9105 -(IBAction)battleDod1:(id)sender{
9106 battleDod1Flag = true;
9107 battleDef1Flag = false;
9108 battleSet1Flag = false;
9110 -(IBAction)battleSet2:(id)sender{
9111 battleSetFlag = true;
9112 battleSet2Flag = true;
9113 battleDef2Flag = false;
9114 battleDod2Flag = false;
9115 battleSettingFlag = true;
9116 battleSet2PushedFlag = true;
9119 while (!(DUN[1] == U->number)) {
9123 if(U->chipNumberL >= 0){
9125 [self initCAttackList2];
9126 [self initCAttackSelect2];
9128 else if(U->chipNumber >= 0) {
9130 [self initCAttackList];
9131 [self initCAttackSelect];
9134 [atkPanel makeKeyAndOrderFront:nil];
9136 -(IBAction)battleDef2:(id)sender{
9137 battleDef2Flag = true;
9138 battleSet2Flag = false;
9139 battleDod2Flag = false;
9141 -(IBAction)battleDod2:(id)sender{
9142 battleDod2Flag = true;
9143 battleDef2Flag = false;
9144 battleSet2Flag = false;
9147 -(IBAction)battleCancel:(id)sender{
9149 battleSettingFlag = false;
9151 battleSet2PushedFlag = false;
9153 [battlePanel close];
9156 -(IBAction)researchCancel:(id)sender{
9157 [researchPanel close];
9160 -(void)setCommandPanel{
9162 menuPoint.x = [mapWindow frame].origin.x + possionLocalX*32;
9163 menuPoint.y = [mapWindow frame].origin.y + possionLocalY*32 - 180;
9166 if(buildSkillFlag) {
9167 cIncludeCreateFlag = true;
9169 }else cIncludeCreateFlag = false;
9170 if(summonSkillFlag) {
9171 cIncludeSummonFlag = true;
9173 }else cIncludeSummonFlag = false;
9174 int plusBtnValue = 0;
9176 if(cIncludeCreateFlag && cIncludeSummonFlag){
9179 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
9182 plusBtnValue -= moveBtn.frame.size.height + 12;
9183 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9184 [[commandPanel contentView] addSubview:moveBtn];
9186 plusBtnValue -= attackBtn.frame.size.height + 2;
9187 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9188 [[commandPanel contentView] addSubview:attackBtn];
9190 plusBtnValue -= stanbyBtn.frame.size.height + 2;
9191 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9192 [[commandPanel contentView] addSubview:stanbyBtn];
9194 [createBtn setTransparent: NO];
9195 [createBtn setEnabled: YES];
9196 plusBtnValue -= createBtn.frame.size.height + 2;
9197 [createBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9198 [[commandPanel contentView] addSubview:createBtn];
9200 [summonBtn setTransparent: NO];
9201 [summonBtn setEnabled: YES];
9202 plusBtnValue -= summonBtn.frame.size.height + 2;
9203 [summonBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9204 [[commandPanel contentView] addSubview:summonBtn];
9206 plusBtnValue -= statusBtn.frame.size.height + 2;
9207 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9208 [[commandPanel contentView] addSubview:statusBtn];
9210 plusBtnValue -= cancelBtn.frame.size.height + 2;
9211 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9212 [[commandPanel contentView] addSubview:cancelBtn];
9215 else if(cIncludeCreateFlag && !cIncludeSummonFlag){
9217 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
9219 plusBtnValue -= moveBtn.frame.size.height + 12;
9220 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9221 [[commandPanel contentView] addSubview:moveBtn];
9223 plusBtnValue -= attackBtn.frame.size.height + 2;
9224 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9225 [[commandPanel contentView] addSubview:attackBtn];
9227 plusBtnValue -= stanbyBtn.frame.size.height + 2;
9228 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9229 [[commandPanel contentView] addSubview:stanbyBtn];
9231 [createBtn setTransparent: NO];
9232 [createBtn setEnabled: YES];
9233 plusBtnValue -= createBtn.frame.size.height + 2;
9234 [createBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9235 [[commandPanel contentView] addSubview:createBtn];
9237 [summonBtn setTransparent: YES];
9238 [summonBtn setEnabled: NO];
9240 plusBtnValue -= statusBtn.frame.size.height + 2;
9241 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9242 [[commandPanel contentView] addSubview:statusBtn];
9244 plusBtnValue -= cancelBtn.frame.size.height + 2;
9245 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9246 [[commandPanel contentView] addSubview:cancelBtn];
9249 }else if(cIncludeSummonFlag && !cIncludeCreateFlag){
9251 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, 210) display:YES];
9254 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
9257 plusBtnValue -= moveBtn.frame.size.height + 12;
9258 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9259 [[commandPanel contentView] addSubview:moveBtn];
9261 plusBtnValue -= attackBtn.frame.size.height + 2;
9262 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9263 [[commandPanel contentView] addSubview:attackBtn];
9265 plusBtnValue -= stanbyBtn.frame.size.height + 2;
9266 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9267 [[commandPanel contentView] addSubview:stanbyBtn];
9269 [createBtn setTransparent: YES];
9270 [createBtn setEnabled: NO];
9272 [summonBtn setTransparent: NO];
9273 [summonBtn setEnabled: YES];
9274 plusBtnValue -= summonBtn.frame.size.height + 2;
9275 [summonBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9276 [[commandPanel contentView] addSubview:summonBtn];
9278 plusBtnValue -= statusBtn.frame.size.height + 2;
9279 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9280 [[commandPanel contentView] addSubview:statusBtn];
9282 plusBtnValue -= cancelBtn.frame.size.height + 2;
9283 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9284 [[commandPanel contentView] addSubview:cancelBtn];
9288 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
9290 plusBtnValue -= moveBtn.frame.size.height + 12;
9291 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9292 [[commandPanel contentView] addSubview:moveBtn];
9294 plusBtnValue -= attackBtn.frame.size.height + 2;
9295 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9296 [[commandPanel contentView] addSubview:attackBtn];
9298 plusBtnValue -= stanbyBtn.frame.size.height + 2;
9299 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9300 [[commandPanel contentView] addSubview:stanbyBtn];
9302 [createBtn setTransparent: YES];
9303 [createBtn setEnabled: NO];
9305 [summonBtn setTransparent: YES];
9306 [summonBtn setEnabled: NO];
9308 plusBtnValue -= statusBtn.frame.size.height + 2;
9309 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9310 [[commandPanel contentView] addSubview:statusBtn];
9312 plusBtnValue -= cancelBtn.frame.size.height + 2;
9313 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
9314 [[commandPanel contentView] addSubview:cancelBtn];
9321 [IVimage setHidden:NO];
9322 [TFname setHidden:NO];
9323 [TFmessage setHidden:NO];
9324 [BXname setHidden:NO];
9325 [BXmessage setHidden:NO];
9326 [IVimage setEnabled:YES];
9327 [TFname setEnabled:YES];
9328 [TFmessage setEnabled:YES];
9331 -(void)closeMessage{
9332 [IVimage setHidden:YES];
9333 [TFname setHidden:YES];
9334 [TFmessage setHidden:YES];
9335 [BXname setHidden:YES];
9336 [BXmessage setHidden:YES];
9337 [IVimage setEnabled:NO];
9338 [TFname setEnabled:NO];
9339 [TFmessage setEnabled:NO];
9342 -(MAPSCRIPT0*)setMessage:(MAPSCRIPT0*)MS0{
9346 [self closeMessage];
9353 initStringNum = true;
9356 NSString *string = @"";
9358 string = [MS0->S1.str retain];
9359 msgMax = (int)[string length];
9366 [IVimage setImage:MS0->S1.img];
9367 [TFname setStringValue:MS0->S1.name];
9369 if(msgCnt <= msgMax){
9370 [TFmessage setStringValue:[string substringToIndex:msgCnt]];
9376 MS0->endFlag = true;
9377 messageEndFlag = false;
9378 messageDialog = false;
9379 MS0->succeessfulFlag = true;
9380 [self setMessage:NULL];
9392 NSString *directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
9393 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
9395 NSString *path = @"Map/";
9396 NSString *fileData = nil;
9397 NSArray *fileDataArray;
9399 path = [path stringByAppendingFormat:@"%@" ,MF[MFselectedRow+1].fileName];
9401 fileData = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
9403 fileDataArray = [fileData componentsSeparatedByString:@"\n"];
9405 MAPSCRIPT0 *MS00 = MF[MFselectedRow+1].MS.D->P;
9406 MAPSCRIPT0 *m00Top = MS00;
9407 for (int i = 0; i < [fileDataArray count]; i++) {
9409 NSRange range = [[fileDataArray objectAtIndex:i] rangeOfString:@"◆"];
9410 if(range.location != NSNotFound){
9412 NSArray *array2 = [[fileDataArray objectAtIndex:i] componentsSeparatedByString:@","];
9415 MS00->S1.iName = [[array2 objectAtIndex:2] retain];
9417 for(int k = 0; k < UCN;k++){
9419 if([MS00->S1.iName isEqualToString:UC[k].nameClass]){
9420 MS00->S1.img = [UC[k].imgb retain];
9436 -(MAPSCRIPT0*)setSwitch:(MAPSCRIPT0*)MS0{
9439 for(int i = 0;*(MS0->switch1 + i) >0;i++){
9440 Suicchi[*(MS0->switch1+i)] = true;
9444 for(int i = 0;*(MS0->switch2 + i) >0;i++){
9445 Suicchi[*(MS0->switch2+i)] = false;
9449 MS0->succeessfulFlag = true;
9450 MS0->endFlag = true;
9454 -(MAPSCRIPT0*)setBranch:(MAPSCRIPT0*)MS0{
9456 MAPSCRIPT0 *CRMS0 = MS0;
9457 bool branchEndFlag = false;
9458 bool branchSuceedFlag = false;
9459 bool trueFlag = true;
9467 if(MS0->S4.suicchiFlag){
9468 if(MS0->S4.suicchiONOFF == 0){
9470 for (int i = 0;*(MS0->S4.suicchi + i);i++) {
9471 if(!Suicchi[*(MS0->S4.suicchi + i)]){
9477 for (int i = 0;*(MS0->S4.suicchi + i);i++) {
9478 if(Suicchi[*(MS0->S4.suicchi + i)]){
9485 if(MS0->S4.hensuFlag){
9487 if(MS0->S4.teisuFlag){
9488 if(MS0->S4.hensuType == 0){
9489 if([Hensuu[MS0->S4.hensu1] intValue] == MS0->S4.teisuValue){
9494 }else if(MS0->S4.hensuType == 1){
9495 if([Hensuu[MS0->S4.hensu1] intValue] >= MS0->S4.teisuValue){
9500 }else if(MS0->S4.hensuType == 2){
9501 if([Hensuu[MS0->S4.hensu1] intValue] <= MS0->S4.teisuValue){
9506 }else if(MS0->S4.hensuType == 3){
9507 if([Hensuu[MS0->S4.hensu1] intValue] > MS0->S4.teisuValue){
9512 }else if(MS0->S4.hensuType == 4){
9513 if([Hensuu[MS0->S4.hensu1] intValue] < MS0->S4.teisuValue){
9518 }else if(MS0->S4.hensuType == 5){
9519 if([Hensuu[MS0->S4.hensu1] intValue] != MS0->S4.teisuValue){
9526 }if(MS0->S4.hensu2flag){
9527 if(MS0->S4.hensuType == 0){
9528 if([Hensuu[MS0->S4.hensu1] isEqualToString:Hensuu[MS0->S4.hensu2]]){
9533 }else if(MS0->S4.hensuType == 1){
9534 if([Hensuu[MS0->S4.hensu1] intValue] >= [Hensuu[MS0->S4.hensu2] intValue]){
9539 }else if(MS0->S4.hensuType == 2){
9540 if([Hensuu[MS0->S4.hensu1] intValue] <= [Hensuu[MS0->S4.hensu2] intValue]){
9545 }else if(MS0->S4.hensuType == 3){
9546 if([Hensuu[MS0->S4.hensu1] intValue] > [Hensuu[MS0->S4.hensu2] intValue]){
9551 }else if(MS0->S4.hensuType == 4){
9552 if([Hensuu[MS0->S4.hensu1] intValue] < [Hensuu[MS0->S4.hensu2] intValue]){
9557 }else if(MS0->S4.hensuType == 5){
9558 if(![Hensuu[MS0->S4.hensu1] isEqualToString:Hensuu[MS0->S4.hensu2]]){
9567 if(MS0->S4.timerFlag){
9569 if(MS0->S4.timerType == 0){
9570 if(MS0->S4.timerMin <= cntTimerMin){
9572 }else if(MS0->S4.timerSec <= cntTimerSec && MS0->S4.timerMin <= cntTimerMin){
9581 if(MS0->S4.timerMin >= cntTimerMin){
9583 }else if(MS0->S4.timerSec >= cntTimerSec && MS0->S4.timerMin >= cntTimerMin){
9594 if(MS0->S4.unitNumFlag){
9604 int objeSCSunitCnt = 0;
9606 if(MS0->S4.objeFlag){
9608 UNIT2 *objeT = MS0->S4.obje;
9610 while (MS0->S4.obje) {
9615 static bool okflag = true;
9617 for (int i = 0;i < 1002;i++) {
9618 for (int k = 0;k < 1002;k++) {
9622 [self checkPlaceHani:MS0->S4.objeRange+1 tX:MS0->S4.obje->y tY:MS0->S4.obje->x aMap:objeR u:U scsCnt:&objeSCSunitCnt];
9626 for(int bx=1;bx<=chipWidth;bx++){
9627 for(int by=1;by<=chipHeight;by++){
9628 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
9630 if(objeR[U->x][U->y] > 0){
9632 if(Unum < Cnum) goto omfgUnitOver2;
9646 if(UP->x == U->x && UP->y == U->y){
9659 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
9661 while(UP->next) UP = UP->next;
9666 UP->next = calloc(1, sizeof(UNITPOINT));
9680 //NSLog(@"%@, %d, %d", U->C.name, objeSCSunitCnt, objeR[0][0]);
9685 MS0->S4.obje = MS0->S4.obje->next;
9687 MS0->S4.obje = objeT;
9691 if(MS0->S4.buildFlag){
9692 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
9696 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
9697 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
9698 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
9706 if(MS0->S4.team == 0){
9707 if(!MS0->S4.objeFlag && !MS0->S4.placeFlag){
9710 if(U->team == 0 && !U->dead)
9715 if(MS0->S4.unitType == 0){
9716 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team0num = MS0->S4.unitNum;
9718 if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == objeSCSunitCnt)){
9720 }else if((MS0->S4.unitNum == team0num) && !MS0->S4.objeFlag){
9725 }else if(MS0->S4.unitType == 1){
9726 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team0num = 65000;
9728 if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= objeSCSunitCnt)){
9730 }else if((MS0->S4.unitNum <= team0num) && !MS0->S4.objeFlag){
9735 }else if(MS0->S4.unitType == 2){
9736 if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= objeSCSunitCnt)){
9738 }else if((MS0->S4.unitNum >= team0num) && !MS0->S4.objeFlag){
9746 }else if(MS0->S4.team == 1){
9747 if(!MS0->S4.objeFlag && !MS0->S4.placeFlag){
9750 if(U->team == 1 && !U->dead)
9755 if(MS0->S4.unitType == 0){
9756 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team1num = MS0->S4.unitNum;
9758 if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum == objeSCSunitCnt)){
9760 }else if((MS0->S4.unitNum == team1num) && !MS0->S4.objeFlag){
9765 }else if(MS0->S4.unitType == 1){
9766 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team1num = 65000;
9767 if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= objeSCSunitCnt)){
9769 }else if((MS0->S4.unitNum <= team1num) && !MS0->S4.objeFlag){
9774 }else if(MS0->S4.unitType == 2){
9776 if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= objeSCSunitCnt)){
9778 }else if((MS0->S4.unitNum >= team1num) && !MS0->S4.objeFlag){
9784 }else if(MS0->S4.team == 2){
9785 if(!MS0->S4.objeFlag && !MS0->S4.placeFlag){
9788 if(U->team == 2 && !U->dead)
9793 if(MS0->S4.unitType == 0){
9794 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team2num = MS0->S4.unitNum;
9796 if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == objeSCSunitCnt)){
9798 }else if((MS0->S4.unitNum == team2num) && !MS0->S4.objeFlag){
9803 }else if(MS0->S4.unitType == 1){
9804 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team2num = 65000;
9806 if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= objeSCSunitCnt)){
9808 }else if((MS0->S4.unitNum <= team2num) && !MS0->S4.objeFlag){
9813 }else if(MS0->S4.unitType == 2){
9814 if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= objeSCSunitCnt)){
9816 }else if((MS0->S4.unitNum >= team2num) && !MS0->S4.objeFlag){
9828 if(MS0->S4.unitTypeFlag && MS0->S4.unitNumFlag){
9829 UNIT2 *sjt = MS0->S4.subj;
9830 UNIT *chosen = NULL;
9831 UNIT *chosenT = NULL;
9834 while(MS0->S4.subj){
9837 if(MS0->S4.subj->x == U->ix && MS0->S4.subj->y == U->iy && U->iz == 1){
9839 chosen->next = calloc(1, sizeof(UNIT));
9844 chosen = chosen->next;
9847 chosen = calloc(1, sizeof(UNIT));
9851 chosen->C.name = U->C.name;
9862 MS0->S4.subj = MS0->S4.subj->next;
9863 }MS0->S4.subj = sjt;
9866 int objeSCSunitCnt = 0;
9874 chosen = chosen->next;
9877 if(MS0->S4.unitTypeFlag && MS0->S4.objeFlag){
9879 UNIT2 *objeT = MS0->S4.obje;
9881 while (MS0->S4.obje) {
9886 static bool okflag = true;
9888 for (int i = 0;i < 1002;i++) {
9889 for (int k = 0;k < 1002;k++) {
9893 [self checkPlaceHani:MS0->S4.objeRange+1 tX:MS0->S4.obje->y tY:MS0->S4.obje->x aMap:objeR u:chosen scsCnt:&objeSCSunitCnt];
9897 for(int bx=1;bx<=chipWidth;bx++){
9898 for(int by=1;by<=chipHeight;by++){
9899 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
9901 if(objeR[chosen->x][chosen->y] > 0){
9903 if(Unum < Cnum) goto omfgUnitOver3;
9917 if(UP->x == chosen->x && UP->y == chosen->y){
9930 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
9932 while(UP->next) UP = UP->next;
9937 UP->next = calloc(1, sizeof(UNITPOINT));
9951 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
9953 chosen = chosen->next;
9956 MS0->S4.obje = MS0->S4.obje->next;
9958 MS0->S4.obje = objeT;
9959 }else if(MS0->S4.objeFlag){
9961 UNIT2 *objeT = MS0->S4.obje;
9963 while (MS0->S4.obje) {
9968 static bool okflag = true;
9970 if(U->team != MS0->S4.team){
9974 for (int i = 0;i < 1002;i++) {
9975 for (int k = 0;k < 1002;k++) {
9979 [self checkPlaceHani:MS0->S4.objeRange+1 tX:MS0->S4.obje->y tY:MS0->S4.obje->x aMap:objeR u:U scsCnt:&objeSCSunitCnt];
9983 for(int bx=1;bx<=chipWidth;bx++){
9984 for(int by=1;by<=chipHeight;by++){
9985 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
9987 if(objeR[chosen->x][chosen->y] > 0){
9989 if(Unum < Cnum) goto omfgUnitOver30;
10003 if(UP->x == chosen->x && UP->y == chosen->y){
10016 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
10018 while(UP->next) UP = UP->next;
10023 UP->next = calloc(1, sizeof(UNITPOINT));
10037 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
10039 chosen = chosen->next;
10042 MS0->S4.obje = MS0->S4.obje->next;
10044 MS0->S4.obje = objeT;
10052 if(MS0->S4.team == 0){
10053 if(!MS0->S4.unitTypeFlag){
10056 if(U->team == 0 && !U->dead)
10061 if(MS0->S4.unitType == 0){
10062 if(MS0->S4.unitTypeFlag) team0num = MS0->S4.unitNum;
10064 if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == cntUnit)
10065 && (MS0->S4.unitNum == objeSCSunitCnt)){
10067 }else if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == cntUnit) && !MS0->S4.objeFlag){
10072 }else if(MS0->S4.unitType == 1){
10073 if(MS0->S4.unitTypeFlag) team0num = 65000;
10075 if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= cntUnit)
10076 && (MS0->S4.unitNum <= objeSCSunitCnt)){
10078 }else if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= cntUnit) && !MS0->S4.objeFlag){
10083 }else if(MS0->S4.unitType == 2){
10084 if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= cntUnit)
10085 && (MS0->S4.unitNum >= objeSCSunitCnt)){
10087 }else if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= cntUnit) && !MS0->S4.objeFlag){
10095 }else if(MS0->S4.team == 1){
10096 if(!MS0->S4.unitTypeFlag){
10099 if(U->team == 1 && !U->dead)
10104 if(MS0->S4.unitType == 0){
10105 if(MS0->S4.unitTypeFlag) team1num = MS0->S4.unitNum;
10107 if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum == cntUnit)
10108 && (MS0->S4.unitNum == objeSCSunitCnt)){
10110 }else if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum == cntUnit) && !MS0->S4.objeFlag){
10115 }else if(MS0->S4.unitType == 1){
10116 if(MS0->S4.unitTypeFlag) team1num = 65000;
10118 if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= cntUnit)
10119 && (MS0->S4.unitNum <= objeSCSunitCnt)){
10121 }else if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= cntUnit) && !MS0->S4.objeFlag){
10126 }else if(MS0->S4.unitType == 2){
10127 if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= cntUnit)
10128 && (MS0->S4.unitNum >= objeSCSunitCnt)){
10130 }else if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= cntUnit) && !MS0->S4.objeFlag){
10136 }else if(MS0->S4.team == 2){
10137 if(!MS0->S4.unitTypeFlag){
10140 if(U->team == 2 && !U->dead)
10145 if(MS0->S4.unitType == 0){
10146 if(MS0->S4.unitTypeFlag) team2num = MS0->S4.unitNum;
10148 if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == cntUnit)
10149 && (MS0->S4.unitNum == objeSCSunitCnt)){
10151 }else if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == cntUnit) && !MS0->S4.objeFlag){
10156 }else if(MS0->S4.unitType == 1){
10157 if(MS0->S4.unitTypeFlag) team2num = 65000;
10159 if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= cntUnit)
10160 && (MS0->S4.unitNum <= objeSCSunitCnt)){
10162 }else if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= cntUnit) && !MS0->S4.objeFlag){
10167 }else if(MS0->S4.unitType == 2){
10168 if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= cntUnit)
10169 && (MS0->S4.unitNum >= objeSCSunitCnt)){
10171 }else if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= cntUnit) && !MS0->S4.objeFlag){
10189 if(MS0->S4.placeFlag && MS0->S4.unitNumFlag){
10199 UNIT2 *sjt = MS0->S4.subj;
10200 UNIT *chosen = NULL;
10201 UNIT *chosenT = NULL;
10204 if(MS0->S4.unitTypeFlag){
10205 while(MS0->S4.subj){
10208 if(MS0->S4.subj->x == U->ix && MS0->S4.subj->y == U->iy && U->iz == 1){
10210 chosen->next = calloc(1, sizeof(UNIT));
10215 chosen = chosen->next;
10218 chosen = calloc(1, sizeof(UNIT));
10222 chosen->C.name = U->C.name;
10233 MS0->S4.subj = MS0->S4.subj->next;
10234 }MS0->S4.subj = sjt;
10242 chosen = chosen->next;
10248 PLACEMENT *wpt = MS0->S4.wayp;
10250 int waypSCScnt = 0;
10251 bool waypSCS = false;
10252 int waypSCSunitCnt = 0;
10255 if(!MS0->S4.unitTypeFlag){
10257 while (MS0->S4.wayp) {
10263 if(MS0->S4.wayp->type == 0){
10266 if(U->team != MS0->S4.team){
10270 if(MS0->S4.wayp->x == U->x && MS0->S4.wayp->y == U->y){
10278 }else if(MS0->S4.wayp->type == 1){
10280 static bool okflag = true;
10282 if(U->team != MS0->S4.team){
10286 for (int i = 0;i < 1002;i++) {
10287 for (int k = 0;k < 1002;k++) {
10291 [self checkPlaceHani:MS0->S4.wayp->z+1 tX:MS0->S4.wayp->y tY:MS0->S4.wayp->x aMap:waypR u:U scsCnt:&waypSCSunitCnt];
10295 for(int bx=1;bx<=chipWidth;bx++){
10296 for(int by=1;by<=chipHeight;by++){
10297 if(waypR[bx][by] != 999 && waypR[bx][by] > 0){
10299 if(waypR[U->x][U->y] > 0){
10301 if(Unum < Cnum) goto omfgUnitOver;
10315 if(UP->x == U->x && UP->y == U->y){
10328 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
10330 while(UP->next) UP = UP->next;
10335 UP->next = calloc(1, sizeof(UNITPOINT));
10348 // NSLog(@"%d", waypSCSunitCnt);
10356 }else if(MS0->S4.wayp->type == 2){
10358 waypSCSunitCnt = 0;
10359 static bool okflag = true;
10361 if(U->team != MS0->S4.team){
10365 if((MS0->S4.wayp->x <= U->x) && (MS0->S4.wayp->x2 >= U->x) &&
10366 (MS0->S4.wayp->y <= U->y) && (MS0->S4.wayp->y2 >= U->y)){
10373 if(Unum < Cnum) goto omfgUnitOver;
10387 if(UP->x == U->x && UP->y == U->y){
10400 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
10402 while(UP->next) UP = UP->next;
10407 UP->next = calloc(1, sizeof(UNITPOINT));
10423 MS0->S4.wayp = MS0->S4.wayp->next;
10424 }MS0->S4.wayp = wpt;
10425 // NSLog(@"%d", waypSCSunitCnt);
10427 if(waypSCScnt >= waypCnt)
10430 }else if(MS0->S4.unitTypeFlag){
10432 while (MS0->S4.wayp) {
10438 if(MS0->S4.wayp->type == 0){
10441 if(MS0->S4.wayp->x == chosen->x && MS0->S4.wayp->y == chosen->y){
10446 chosen = chosen->next;
10449 }else if(MS0->S4.wayp->type == 1){
10451 static bool okflag = true;
10453 for (int i = 0;i < 1002;i++) {
10454 for (int k = 0;k < 1002;k++) {
10458 [self checkPlaceHani:MS0->S4.wayp->z+1 tX:MS0->S4.wayp->y tY:MS0->S4.wayp->x aMap:waypR u:chosen scsCnt:&waypSCSunitCnt];
10462 for(int bx=1;bx<=chipWidth;bx++){
10463 for(int by=1;by<=chipHeight;by++){
10464 if(waypR[bx][by] != 999 && waypR[bx][by] > 0){
10466 if(waypR[chosen->x][chosen->y] > 0){
10468 if(Unum < Cnum) goto omfgUnitOver5;
10482 if(UP->x == chosen->x && UP->y == chosen->y){
10495 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
10497 while(UP->next) UP = UP->next;
10502 UP->next = calloc(1, sizeof(UNITPOINT));
10516 // NSLog(@"%d", waypSCSunitCnt);
10518 chosen = chosen->next;
10524 }else if(MS0->S4.wayp->type == 2){
10526 waypSCSunitCnt = 0;
10527 static bool okflag = true;
10529 if((MS0->S4.wayp->x <= chosen->x) && (MS0->S4.wayp->x2 >= chosen->x) &&
10530 (MS0->S4.wayp->y <= chosen->y) && (MS0->S4.wayp->y2 >= chosen->y)){
10537 if(Unum < Cnum) goto omfgUnitOver;
10551 if(UP->x == chosen->x && UP->y == chosen->y){
10564 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
10566 while(UP->next) UP = UP->next;
10571 UP->next = calloc(1, sizeof(UNITPOINT));
10582 chosen = chosen->next;
10587 MS0->S4.wayp = MS0->S4.wayp->next;
10588 }MS0->S4.wayp = wpt;
10589 // NSLog(@"%d", waypSCSunitCnt);
10591 if(waypSCScnt >= waypCnt)
10603 if(MS0->S4.team == 0){
10604 if(!MS0->S4.placeFlag){
10607 if(U->team == 0 && !U->dead)
10612 if(MS0->S4.unitType == 0){
10613 if(MS0->S4.placeFlag) team0num = MS0->S4.unitNum;
10615 if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == waypSCSunitCnt)){
10620 }else if(MS0->S4.unitType == 1){
10621 if(MS0->S4.placeFlag) team0num = 65000;
10623 if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= waypSCSunitCnt)){
10628 }else if(MS0->S4.unitType == 2){
10629 if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= waypSCSunitCnt)){
10637 }else if(MS0->S4.team == 1){
10638 if(!MS0->S4.placeFlag){
10641 if(U->team == 1 && !U->dead)
10646 if(MS0->S4.unitType == 0){
10647 if(MS0->S4.placeFlag) team1num = MS0->S4.unitNum;
10649 if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum = waypSCSunitCnt)){
10654 }else if(MS0->S4.unitType == 1){
10655 if(MS0->S4.placeFlag) team1num = 65000;
10657 if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= waypSCSunitCnt)){
10662 }else if(MS0->S4.unitType == 2){
10663 if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= waypSCSunitCnt)){
10669 }else if(MS0->S4.team == 2){
10670 if(!MS0->S4.placeFlag){
10673 if(U->team == 2 && !U->dead)
10678 if(MS0->S4.unitType == 0){
10679 if(MS0->S4.placeFlag) team2num = MS0->S4.unitNum;
10681 if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == waypSCSunitCnt)){
10686 }else if(MS0->S4.unitType == 1){
10687 if(MS0->S4.placeFlag) team2num = 65000;
10689 if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= waypSCSunitCnt)){
10694 }else if(MS0->S4.unitType == 2){
10695 if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= waypSCSunitCnt)){
10706 if(MS0->S4.unitCMDflag){
10708 UNIT2 *sjt = MS0->S4.subj;
10709 UNIT *chosen = NULL;
10710 UNIT *chosenT = NULL;
10713 while(MS0->S4.subj){
10716 if(MS0->S4.subj->x == U->ix && MS0->S4.subj->y == U->iy && U->iz == 1){
10718 chosen->next = calloc(1, sizeof(UNIT));
10723 chosen = chosen->next;
10726 chosen = calloc(1, sizeof(UNIT));
10730 chosen->C.name = U->C.name;
10741 MS0->S4.subj = MS0->S4.subj->next;
10742 }MS0->S4.subj = sjt;
10745 int objeSCSunitCnt = 0;
10753 chosen = chosen->next;
10756 if(MS0->S4.unitTypeFlag && MS0->S4.objeFlag){
10758 UNIT2 *objeT = MS0->S4.obje;
10760 while (MS0->S4.obje) {
10765 static bool okflag = true;
10767 for (int i = 0;i < 1002;i++) {
10768 for (int k = 0;k < 1002;k++) {
10772 [self checkPlaceHani:MS0->S4.objeRange+1 tX:MS0->S4.obje->y tY:MS0->S4.obje->x aMap:objeR u:chosen scsCnt:&objeSCSunitCnt];
10776 for(int bx=1;bx<=chipWidth;bx++){
10777 for(int by=1;by<=chipHeight;by++){
10778 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
10780 if(objeR[chosen->x][chosen->y] > 0){
10782 if(Unum < Cnum) goto omfgUnitOver31;
10796 if(UP->x == chosen->x && UP->y == chosen->y){
10809 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
10811 while(UP->next) UP = UP->next;
10816 UP->next = calloc(1, sizeof(UNITPOINT));
10830 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
10832 chosen = chosen->next;
10835 MS0->S4.obje = MS0->S4.obje->next;
10837 MS0->S4.obje = objeT;
10838 }else if(MS0->S4.objeFlag){
10840 UNIT2 *objeT = MS0->S4.obje;
10842 while (MS0->S4.obje) {
10847 static bool okflag = true;
10849 if(U->team != MS0->S4.team){
10853 for (int i = 0;i < 1002;i++) {
10854 for (int k = 0;k < 1002;k++) {
10858 [self checkPlaceHani:MS0->S4.objeRange+1 tX:MS0->S4.obje->y tY:MS0->S4.obje->x aMap:objeR u:U scsCnt:&objeSCSunitCnt];
10862 for(int bx=1;bx<=chipWidth;bx++){
10863 for(int by=1;by<=chipHeight;by++){
10864 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
10866 if(objeR[chosen->x][chosen->y] > 0){
10868 if(Unum < Cnum) goto omfgUnitOver32;
10882 if(UP->x == chosen->x && UP->y == chosen->y){
10895 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
10897 while(UP->next) UP = UP->next;
10902 UP->next = calloc(1, sizeof(UNITPOINT));
10916 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
10918 chosen = chosen->next;
10921 MS0->S4.obje = MS0->S4.obje->next;
10923 MS0->S4.obje = objeT;
10927 if(MS0->S4.team == 0){
10929 if(!MS0->S4.subj && !MS0->S4.obje && !MS0->S4.build){
10931 if(MS0->S4.unitCMD == 0){
10932 if(pushStanbyFlag){
10937 }else if(MS0->S4.unitCMD == 1){
10939 battleSetUpIgnore = true;
10943 }else if(MS0->S4.unitCMD == 2){
10948 }else if(!MS0->S4.subj && !MS0->S4.obje && MS0->S4.build){
10952 BUILD2 *bldt = MS0->S4.build;
10954 while(MS0->S4.build){
10955 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
10957 if(MS0->S4.unitCMD == 0){
10958 if(pushStanbyFlag){
10963 }else if(MS0->S4.unitCMD == 1){
10965 battleSetUpIgnore = true;
10971 }else if(MS0->S4.unitCMD == 2){
10978 MS0->S4.build = MS0->S4.build->next;
10979 }MS0->S4.build = bldt;
10982 }else if(MS0->S4.subj && !MS0->S4.obje){
10985 UNIT2 *sbjt = MS0->S4.subj;
10987 while(MS0->S4.subj){
10988 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1){
10990 if(MS0->S4.unitCMD == 0){
10991 if(pushStanbyFlag){
10996 }else if(MS0->S4.unitCMD == 1){
10998 battleSetUpIgnore = true;
11004 }else if(MS0->S4.unitCMD == 2){
11012 MS0->S4.subj = MS0->S4.subj->next;
11013 }MS0->S4.subj = sbjt;
11016 }else if(MS0->S4.subj && MS0->S4.obje){
11018 UNIT2 *sbjt = MS0->S4.subj;
11019 UNIT2 *objt = MS0->S4.obje;
11021 while(MS0->S4.subj){
11022 while(MS0->S4.obje){
11023 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
11024 Utarget->ix == MS0->S4.obje->x && Utarget->iy == MS0->S4.obje->y && Utarget->iz == 1){
11026 if(MS0->S4.unitCMD == 0){
11028 if(MS0->S4.unitType == 0){
11029 if(objeSCSunitCnt == MS0->S4.unitNum){
11031 if(pushStanbyFlag){
11038 }else if(MS0->S4.unitType == 1){
11039 if(objeSCSunitCnt >= MS0->S4.unitNum){
11041 if(pushStanbyFlag){
11048 }else if(MS0->S4.unitType == 2){
11049 if(objeSCSunitCnt <= MS0->S4.unitNum){
11051 if(pushStanbyFlag){
11059 }else if(MS0->S4.unitCMD == 1){
11061 if(MS0->S4.unitType == 0){
11062 if(objeSCSunitCnt == MS0->S4.unitNum){
11065 battleSetUpIgnore = true;
11071 }else if(MS0->S4.unitType == 1){
11072 if(objeSCSunitCnt >= MS0->S4.unitNum){
11075 battleSetUpIgnore = true;
11081 }else if(MS0->S4.unitType == 2){
11082 if(objeSCSunitCnt <= MS0->S4.unitNum){
11085 battleSetUpIgnore = true;
11092 }else if(MS0->S4.unitCMD == 2 && objeSCSunitCnt > 0){
11104 MS0->S4.obje = MS0->S4.obje->next;
11105 }MS0->S4.obje = objt;
11106 MS0->S4.subj = MS0->S4.subj->next;
11107 }MS0->S4.subj = sbjt;
11109 }if(MS0->S4.subj && MS0->S4.build){
11112 UNIT2 *sbjt = MS0->S4.subj;
11113 BUILD2 *bldt = MS0->S4.build;
11115 while(MS0->S4.subj){
11116 while(MS0->S4.build){
11117 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
11118 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
11119 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
11121 if(MS0->S4.unitCMD == 0){
11122 if(pushStanbyFlag){
11127 }else if(MS0->S4.unitCMD == 1){
11129 battleSetUpIgnore = true;
11135 }else if(MS0->S4.unitCMD == 2){
11144 MS0->S4.build = MS0->S4.build->next;
11145 }MS0->S4.build = bldt;
11147 MS0->S4.subj = MS0->S4.subj->next;
11149 MS0->S4.subj = sbjt;
11152 }else if(MS0->S4.team == 1){
11153 if(!MS0->S4.subj && !MS0->S4.obje && !MS0->S4.build){
11155 if(MS0->S4.unitCMD == 0){
11156 if(pushStanbyFlag){
11161 }else if(MS0->S4.unitCMD == 1){
11163 battleSetUpIgnore = true;
11167 }else if(MS0->S4.unitCMD == 2){
11172 }else if(!MS0->S4.subj && !MS0->S4.obje && MS0->S4.build){
11176 BUILD2 *bldt = MS0->S4.build;
11177 while(MS0->S4.build){
11178 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
11180 if(MS0->S4.unitCMD == 0){
11181 if(pushStanbyFlag){
11186 }else if(MS0->S4.unitCMD == 1){
11188 battleSetUpIgnore = true;
11194 }else if(MS0->S4.unitCMD == 2){
11201 MS0->S4.build = MS0->S4.build->next;
11202 }MS0->S4.build = bldt;
11205 }else if(MS0->S4.subj && !MS0->S4.obje){
11209 UNIT2 *sbjt = MS0->S4.subj;
11211 while(MS0->S4.subj){
11212 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1){
11214 if(MS0->S4.unitCMD == 0){
11215 if(pushStanbyFlag){
11220 }else if(MS0->S4.unitCMD == 1){
11222 battleSetUpIgnore = true;
11228 }else if(MS0->S4.unitCMD == 2){
11236 MS0->S4.subj = MS0->S4.subj->next;
11237 }MS0->S4.subj = sbjt;
11239 }else if(MS0->S4.subj && MS0->S4.obje){
11241 UNIT2 *sbjt = MS0->S4.subj;
11242 UNIT2 *objt = MS0->S4.obje;
11244 while(MS0->S4.subj){
11245 while(MS0->S4.obje){
11246 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
11247 Utarget->ix == MS0->S4.obje->x && Utarget->iy == MS0->S4.obje->y && Utarget->iz == 1){
11249 if(MS0->S4.unitCMD == 0){
11251 if(MS0->S4.unitType == 0){
11252 if(objeSCSunitCnt == MS0->S4.unitNum){
11254 if(pushStanbyFlag){
11261 }else if(MS0->S4.unitType == 1){
11262 if(objeSCSunitCnt >= MS0->S4.unitNum){
11264 if(pushStanbyFlag){
11271 }else if(MS0->S4.unitType == 2){
11272 if(objeSCSunitCnt <= MS0->S4.unitNum){
11274 if(pushStanbyFlag){
11282 }else if(MS0->S4.unitCMD == 1){
11284 if(MS0->S4.unitType == 0){
11285 if(objeSCSunitCnt == MS0->S4.unitNum){
11288 battleSetUpIgnore = true;
11294 }else if(MS0->S4.unitType == 1){
11295 if(objeSCSunitCnt >= MS0->S4.unitNum){
11298 battleSetUpIgnore = true;
11304 }else if(MS0->S4.unitType == 2){
11305 if(objeSCSunitCnt <= MS0->S4.unitNum){
11308 battleSetUpIgnore = true;
11315 }else if(MS0->S4.unitCMD == 2 && objeSCSunitCnt > 0){
11328 MS0->S4.obje = MS0->S4.obje->next;
11329 }MS0->S4.obje = objt;
11330 MS0->S4.subj = MS0->S4.subj->next;
11331 }MS0->S4.subj = sbjt;
11333 }if(MS0->S4.subj && MS0->S4.build){
11335 UNIT2 *sbjt = MS0->S4.subj;
11336 BUILD2 *bldt = MS0->S4.build;
11337 while(MS0->S4.subj){
11338 while(MS0->S4.build){
11339 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
11340 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
11341 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
11343 if(MS0->S4.unitCMD == 0){
11344 if(pushStanbyFlag){
11349 }else if(MS0->S4.unitCMD == 1){
11351 battleSetUpIgnore = true;
11357 }else if(MS0->S4.unitCMD == 2){
11366 MS0->S4.build = MS0->S4.build->next;
11367 }MS0->S4.build = bldt;
11368 MS0->S4.subj = MS0->S4.subj->next;
11369 }MS0->S4.subj = sbjt;
11371 }else if(MS0->S4.team == 2){
11372 if(!MS0->S4.subj && !MS0->S4.obje && !MS0->S4.build){
11374 if(MS0->S4.unitCMD == 0){
11375 if(pushStanbyFlag){
11380 }else if(MS0->S4.unitCMD == 1){
11382 battleSetUpIgnore = true;
11386 }else if(MS0->S4.unitCMD == 2){
11391 }else if(!MS0->S4.subj && !MS0->S4.obje && MS0->S4.build){
11395 BUILD2 *bldt = MS0->S4.build;
11396 while(MS0->S4.build){
11397 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
11399 if(MS0->S4.unitCMD == 0){
11400 if(pushStanbyFlag){
11405 }else if(MS0->S4.unitCMD == 1){
11407 battleSetUpIgnore = true;
11413 }else if(MS0->S4.unitCMD == 2){
11420 MS0->S4.build = MS0->S4.build->next;
11421 }MS0->S4.build = bldt;
11424 }else if(MS0->S4.subj && !MS0->S4.obje){
11426 UNIT2 *sbjt = MS0->S4.subj;
11428 while(MS0->S4.subj){
11429 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1){
11431 if(MS0->S4.unitCMD == 0){
11432 if(pushStanbyFlag){
11437 }else if(MS0->S4.unitCMD == 1){
11439 battleSetUpIgnore = true;
11445 }else if(MS0->S4.unitCMD == 2){
11452 MS0->S4.subj = MS0->S4.subj->next;
11453 }MS0->S4.subj = sbjt;
11455 }else if(MS0->S4.subj && MS0->S4.obje){
11457 UNIT2 *sbjt = MS0->S4.subj;
11458 UNIT2 *objt = MS0->S4.obje;
11460 while(MS0->S4.subj){
11461 while(MS0->S4.obje){
11462 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
11463 Utarget->ix == MS0->S4.obje->x && Utarget->iy == MS0->S4.obje->y && Utarget->iz == 1){
11465 if(MS0->S4.unitCMD == 0){
11467 if(MS0->S4.unitType == 0){
11468 if(objeSCSunitCnt == MS0->S4.unitNum){
11470 if(pushStanbyFlag){
11477 }else if(MS0->S4.unitType == 1){
11478 if(objeSCSunitCnt >= MS0->S4.unitNum){
11480 if(pushStanbyFlag){
11487 }else if(MS0->S4.unitType == 2){
11488 if(objeSCSunitCnt <= MS0->S4.unitNum){
11490 if(pushStanbyFlag){
11498 }else if(MS0->S4.unitCMD == 1){
11500 if(MS0->S4.unitType == 0){
11501 if(objeSCSunitCnt == MS0->S4.unitNum){
11504 battleSetUpIgnore = true;
11510 }else if(MS0->S4.unitType == 1){
11511 if(objeSCSunitCnt >= MS0->S4.unitNum){
11514 battleSetUpIgnore = true;
11520 }else if(MS0->S4.unitType == 2){
11521 if(objeSCSunitCnt <= MS0->S4.unitNum){
11524 battleSetUpIgnore = true;
11531 }else if(MS0->S4.unitCMD == 2 && objeSCSunitCnt > 0){
11539 MS0->S4.obje = MS0->S4.obje->next;
11540 }MS0->S4.obje = objt;
11541 MS0->S4.subj = MS0->S4.subj->next;
11542 }MS0->S4.subj = sbjt;
11543 }if(MS0->S4.subj && MS0->S4.build){
11545 UNIT2 *sbjt = MS0->S4.subj;
11546 BUILD2 *bldt = MS0->S4.build;
11547 while(MS0->S4.subj){
11548 while(MS0->S4.build){
11549 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
11550 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
11551 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
11553 if(MS0->S4.unitCMD == 0){
11554 if(pushStanbyFlag){
11559 }else if(MS0->S4.unitCMD == 1){
11561 battleSetUpIgnore = true;
11567 }else if(MS0->S4.unitCMD == 2){
11576 MS0->S4.build = MS0->S4.build->next;
11577 }MS0->S4.build = bldt;
11578 MS0->S4.subj = MS0->S4.subj->next;
11579 }MS0->S4.subj = sbjt;
11617 branchEndFlag = true;
11618 MS0->succeessfulFlag = false;
11620 branchSuceedFlag = true;
11621 MS0->succeessfulFlag = true;
11623 MS0->succeessfulFlag = false;
11628 if(!branchSuceedFlag){
11631 MS0->endFlag = false;
11636 MS0->endFlag = true;
11639 if([CRMS0->S4.FAILrabel isEqualToString:MS0->label]){
11640 MS0->succeessfulFlag = false;
11641 MS0->endFlag = false;
11647 if([CRMS0->S4.FAILrabel isEqualToString:MS0->next->label]){
11648 if(MS0->type == 6 && MS0->endFlag){
11651 MS0->succeessfulFlag = true;
11653 MS0->endFlag = true;
11657 if(MS0->type == 6 && MS0->endFlag){
11660 MS0->succeessfulFlag = true;
11662 MS0->endFlag = true;
11672 }else if(branchSuceedFlag){
11675 MS0->endFlag = false;
11680 MS0->endFlag = true;
11684 if([CRMS0->S4.COMPrabel isEqualToString:MS0->label]){
11685 MS0->succeessfulFlag = false;
11686 MS0->endFlag = false;
11692 if([CRMS0->S4.COMPrabel isEqualToString:MS0->next->label]){
11694 if(MS0->type == 6 && MS0->endFlag){
11697 MS0->succeessfulFlag = true;
11699 MS0->endFlag = true;
11704 if(MS0->type == 6 && MS0->endFlag){
11707 MS0->succeessfulFlag = true;
11709 MS0->endFlag = true;
11721 //NSLog(@"%d", MSDPtop->succeessfulFlag);
11726 -(void)checkPlaceHani:(int)cnsPow tX:(int)startX tY:(int)startY aMap:(int[][1002])aMap u:(UNIT*)u scsCnt:(int*)scsCnt{
11728 if(cnsPow < 0) return;
11732 if(aMap[startY][startX] <= cnsPow)
11733 aMap[startY][startX] = cnsPow;
11735 if(startY < 0) startY = 0;
11736 if(startX < 0) startX = 0;
11737 if(cnsPow < 0) cnsPow = 0;
11741 if(aMap[startY-1][startX] >= 0 && cnsPow > 0)
11742 [self checkPlaceHani:i0 tX:startX tY:startY-1 aMap:aMap u:u scsCnt:j0];
11745 if(aMap[startY+1][startX] >= 0 && cnsPow > 0)
11746 [self checkPlaceHani:i0 tX:startX tY:startY+1 aMap:aMap u:u scsCnt:j0];
11749 if(aMap[startY][startX-1] >= 0 && cnsPow > 0)
11750 [self checkPlaceHani:i0 tX:startX-1 tY:startY aMap:aMap u:u scsCnt:j0];
11753 if(aMap[startY][startX+1] >= 0 && cnsPow > 0)
11754 [self checkPlaceHani:i0 tX:startX+1 tY:startY aMap:aMap u:u scsCnt:j0];
11759 -(MAPSCRIPT0*)setLabelJump:(MAPSCRIPT0*)MS0{
11761 MAPSCRIPT0 *CRMS0 = MS0;
11764 MS0->endFlag = false;
11768 MS0->endFlag = true;
11769 MS0->succeessfulFlag = true;
11773 if([CRMS0->labelJump isEqualToString:MS0->label]){
11774 MS0->succeessfulFlag = false;
11775 MS0->endFlag = false;
11781 if([CRMS0->labelJump isEqualToString:MS0->next->label]){
11782 if(MS0->type == 6 && MS0->endFlag){
11785 MS0->succeessfulFlag = true;
11787 MS0->endFlag = true;
11791 if(MS0->type == 6 && MS0->endFlag){
11794 MS0->succeessfulFlag = true;
11796 MS0->endFlag = true;
11808 -(MAPSCRIPT0*)setDefault:(MAPSCRIPT0*)MS0{
11810 MS0->succeessfulFlag = true;
11811 MS0->endFlag = true;
11815 -(MAPSCRIPT0*)setResource:(MAPSCRIPT0*)MS0{
11817 if(MS0->S6.team == 0){
11819 if(MS0->S6.RCsupply){
11820 if(MS0->S6.RCsupplyS){
11821 if(MS0->S6.RCsupplyAdd)
11822 P[0].resource += MS0->S6.RCsupplyValue;
11824 P[0].resource -= MS0->S6.RCsupplyValue;
11826 if(MS0->S6.RCsupplyAdd)
11827 P[0].resource += [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
11829 P[0].resource -= [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
11832 if(MS0->S6.RCfood){
11833 if(MS0->S6.RCfoodS){
11834 if(MS0->S6.RCfoodAdd)
11835 P[0].food += MS0->S6.RCfoodValue;
11837 P[0].food -= MS0->S6.RCfoodValue;
11839 if(MS0->S6.RCfoodAdd)
11840 P[0].food += [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
11842 P[0].food -= [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
11845 if(MS0->S6.RCmoney){
11846 if(MS0->S6.RCmoneyS){
11847 if(MS0->S6.RCmoneyAdd)
11848 P[0].money += MS0->S6.RCmoneyValue;
11850 P[0].money -= MS0->S6.RCmoneyValue;
11852 if(MS0->S6.RCmoneyAdd)
11853 P[0].money += [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
11855 P[0].money -= [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
11859 }else if(MS0->S6.team == 1){
11860 if(MS0->S6.RCsupply){
11861 if(MS0->S6.RCsupplyS){
11862 if(MS0->S6.RCsupplyAdd)
11863 P[1].resource += MS0->S6.RCsupplyValue;
11865 P[1].resource -= MS0->S6.RCsupplyValue;
11867 if(MS0->S6.RCsupplyAdd)
11868 P[1].resource += [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
11870 P[1].resource -= [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
11873 if(MS0->S6.RCfood){
11874 if(MS0->S6.RCfoodS){
11875 if(MS0->S6.RCfoodAdd)
11876 P[1].food += MS0->S6.RCfoodValue;
11878 P[1].food -= MS0->S6.RCfoodValue;
11880 if(MS0->S6.RCfoodAdd)
11881 P[1].food += [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
11883 P[1].food -= [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
11886 if(MS0->S6.RCmoney){
11887 if(MS0->S6.RCmoneyS){
11888 if(MS0->S6.RCmoneyAdd)
11889 P[1].money += MS0->S6.RCmoneyValue;
11891 P[1].money -= MS0->S6.RCmoneyValue;
11893 if(MS0->S6.RCmoneyAdd)
11894 P[1].money += [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
11896 P[1].money -= [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
11899 }else if(MS0->S6.team == 2){
11900 if(MS0->S6.RCsupply){
11901 if(MS0->S6.RCsupplyS){
11902 if(MS0->S6.RCsupplyAdd)
11903 P[2].resource += MS0->S6.RCsupplyValue;
11905 P[2].resource -= MS0->S6.RCsupplyValue;
11907 if(MS0->S6.RCsupplyAdd)
11908 P[2].resource += [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
11910 P[2].resource -= [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
11914 if(MS0->S6.RCfood){
11915 if(MS0->S6.RCfoodS){
11916 if(MS0->S6.RCfoodAdd)
11917 P[2].food += MS0->S6.RCfoodValue;
11919 P[2].food -= MS0->S6.RCfoodValue;
11921 if(MS0->S6.RCfoodAdd)
11922 P[2].food += [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
11924 P[2].food -= [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
11927 if(MS0->S6.RCmoney){
11928 if(MS0->S6.RCmoneyS){
11929 if(MS0->S6.RCmoneyAdd)
11930 P[2].money += MS0->S6.RCmoneyValue;
11932 P[2].money -= MS0->S6.RCmoneyValue;
11934 if(MS0->S6.RCmoneyAdd)
11935 P[2].money += [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
11937 P[2].money -= [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
11942 if(P[0].resource < 0) P[0].resource = 0;
11943 if(P[1].resource < 0) P[1].resource = 0;
11944 if(P[2].resource < 0) P[2].resource = 0;
11946 if(P[0].food < 0) P[0].food = 0;
11947 if(P[1].food < 0) P[1].food = 0;
11948 if(P[2].food < 0) P[2].food = 0;
11950 if(P[0].money < 0) P[0].money = 0;
11951 if(P[1].money < 0) P[1].money = 0;
11952 if(P[2].money < 0) P[2].money = 0;
11954 MS0->succeessfulFlag = true;
11955 MS0->endFlag = true;
11959 -(MAPSCRIPT0*)setLabel:(MAPSCRIPT0*)MS0{
11961 //NSLog(@"%d", MSDP0top->succeessfulFlag);
11962 MS0->succeessfulFlag = true;
11963 MS0->endFlag = true;
11967 -(MAPSCRIPT0*)setComment:(MAPSCRIPT0*)MS0{
11969 MS0->succeessfulFlag = true;
11970 MS0->endFlag = true;
11975 -(MAPSCRIPT0*)setSelection:(MAPSCRIPT0*)MS0{
11977 static bool initFlag = false;
11982 MAPSCRIPT2 *MS2top = MS0->S2;
11984 slctPoint.x = [mapWindow frame].origin.x + 100;
11985 slctPoint.y = [mapWindow frame].origin.y + 300;
11987 [slctBtn1 setHidden:YES];
11988 [slctBtn2 setHidden:YES];
11989 [slctBtn3 setHidden:YES];
11990 [slctBtn4 setHidden:YES];
11991 [slctBtn5 setHidden:YES];
11992 [slctBtn6 setHidden:YES];
11993 [slctBtn7 setHidden:YES];
11994 [slctBtn8 setHidden:YES];
11995 [slctBtn9 setHidden:YES];
11997 for(int i = 1;MS0->S2;i++){
12000 [slctBtn1 setTitle:MS0->S2->selection];
12001 [slctBtn1 setHidden:NO];
12002 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 60) display:YES];
12005 [slctBtn2 setTitle:MS0->S2->selection];
12006 [slctBtn2 setHidden:NO];
12007 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 90) display:YES];
12010 [slctBtn3 setTitle:MS0->S2->selection];
12011 [slctBtn3 setHidden:NO];
12012 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 120) display:YES];
12016 [slctBtn4 setTitle:MS0->S2->selection];
12017 [slctBtn4 setHidden:NO];
12018 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 150) display:YES];
12021 [slctBtn5 setTitle:MS0->S2->selection];
12022 [slctBtn5 setHidden:NO];
12023 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 180) display:YES];
12026 [slctBtn6 setTitle:MS0->S2->selection];
12027 [slctBtn6 setHidden:NO];
12028 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 210) display:YES];
12031 [slctBtn7 setTitle:MS0->S2->selection];
12032 [slctBtn7 setHidden:NO];
12033 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 240) display:YES];
12036 [slctBtn8 setTitle:MS0->S2->selection];
12037 [slctBtn8 setHidden:NO];
12038 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 270) display:YES];
12041 [slctBtn9 setTitle:MS0->S2->selection];
12042 [slctBtn9 setHidden:NO];
12043 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 300) display:YES];
12048 MS0->S2 = MS0->S2->next;
12054 [selectionWindow makeKeyAndOrderFront:nil];
12058 if(slctedBtnNum > 0){
12059 MAPSCRIPT0 *CRMS0 = MS0;
12063 MS0->endFlag = false;
12067 MAPSCRIPT2 *MS2top = MS0->S2;
12070 for(int i = 1;i < slctedBtnNum;i++){
12071 MS0->S2 = MS0->S2->next;
12078 if([CRMS2->labelJump isEqualToString:MS0->label]){
12079 MS0->endFlag = false;
12085 if([CRMS2->labelJump isEqualToString:MS0->next->label]){
12086 if(MS0->type == 6 && MS0->endFlag){
12089 MS0->succeessfulFlag = true;
12091 MS0->endFlag = true;
12095 if(MS0->type == 6 && MS0->endFlag){
12098 MS0->succeessfulFlag = true;
12100 MS0->endFlag = true;
12109 MS0->endFlag = true;
12110 MS0->succeessfulFlag = true;
12118 -(MAPSCRIPT0*)setAppearance:(MAPSCRIPT0*)MS0{
12128 if(unitNum[x][y] == -1){
12134 unitTeam[x][y] = MS0->S3->team;
12135 unitNum[x][y] = u.chipNumb;
12136 loadNum[x][y] = u.chipNumb;
12137 [self addAppearanceStatus:u x:x y:y];
12145 int *p = calloc(1, sizeof(int));
12146 int *o = calloc(1, sizeof(int));
12147 appearanceSAIKIflag = false;
12150 for (int i = 0;i < 1002;i++) {
12151 for (int k = 0;k < 1002;k++) {
12156 [self checkAppearanceRange:5 tX:y tY:x aMap:apprR];
12159 for (int i = 0;i < 1002;i++) {
12160 for (int k = 0;k < 1002;k++) {
12161 if(apprR[i][k] > postInt && unitNum[i][k] == -1){
12162 postInt = apprR[i][k];
12169 if(*p > 0 && *o >0){
12172 unitTeam[x][y] = MS0->S3->team;
12173 unitNum[x][y] = u.chipNumb;
12174 loadNum[x][y] = u.chipNumb;
12175 [self addAppearanceStatus:u x:x y:y];
12177 MS0->succeessfulFlag = false;
12178 MS0->endFlag = true;
12184 MS0->S3 = MS0->S3->next;
12186 unitColorInitFlag = true;
12188 MS0->succeessfulFlag = true;
12189 MS0->endFlag = true;
12193 -(MAPSCRIPT0*)setDissappearance:(MAPSCRIPT0*)MS0{
12206 if(MS0->S5->unitNum >= 0){
12207 unitNum[x][y] = -1;
12208 unitTeam[x][y] = -1;
12209 unitNum[x][y] = -1;
12210 loadNum[x][y] = -1;
12214 if(U->ix == x && U->iy == y)
12224 MS0->succeessfulFlag = false;
12225 MS0->endFlag = true;
12231 MS0->S5 = MS0->S5->next;
12233 unitColorInitFlag = true;
12235 MS0->succeessfulFlag = true;
12236 MS0->endFlag = true;
12241 -(void)checkAppearanceRange:(int)cnsPow tX:(int)startX tY:(int)startY aMap:(int[][1002])aMap{
12243 if(cnsPow < 0) return;
12246 if(aMap[startY][startX] <= cnsPow)
12247 aMap[startY][startX] = cnsPow;
12249 if(startY < 0) startY = 0;
12250 if(startX < 0) startX = 0;
12251 if(cnsPow < 0) cnsPow = 0;
12255 if(aMap[startY-1][startX] >= 0 && cnsPow > 0)
12256 [self checkAppearanceRange:i0 tX:startX tY:startY-1 aMap:aMap];
12259 if(aMap[startY+1][startX] >= 0 && cnsPow > 0)
12260 [self checkAppearanceRange:i0 tX:startX tY:startY+1 aMap:aMap];
12263 if(aMap[startY][startX-1] >= 0 && cnsPow > 0)
12264 [self checkAppearanceRange:i0 tX:startX-1 tY:startY aMap:aMap];
12267 if(aMap[startY][startX+1] >= 0 && cnsPow > 0)
12268 [self checkAppearanceRange:i0 tX:startX+1 tY:startY aMap:aMap];
12272 -(void)addAppearanceStatus:(UNITCHIP)u x:(int)x y:(int)y{
12276 while (U->next) {omgCnt++;
12279 U->next = calloc(1, sizeof(UNIT));
12282 if(omgCnt == 0) UTop = U;
12283 U->number = registerNum;
12284 U->chipNumber = -1;
12285 U->chipNumberL = -1;
12286 U->C.chipNumb = -1;
12287 U->CL.chipNumb = -1;
12293 if(unitTeam[x][y] == 0 || unitTeam[x][y] == 1){
12295 if(unitTeam[x][y] == 1){
12296 U->joinArmyFromNext = true;
12297 U->persuasion = true;
12299 if(MF[MFselectedRow+1].MS.playerSet1 == 2)
12303 if(unitTeam[x][y] == 2 || unitTeam[x][y] == 3){
12305 if(unitTeam[x][y] == 3){
12306 U->joinArmyFromNext = true;
12307 U->persuasion = true;
12309 if(MF[MFselectedRow+1].MS.playerSet2 == 2)
12313 if(unitTeam[x][y] == 4 || unitTeam[x][y] == 5){
12315 if(unitTeam[x][y] == 5){
12316 U->joinArmyFromNext = true;
12317 U->persuasion = true;
12321 if(unitTeam[x][y] == -1){
12323 if(unitTeam[x][y] == 0){
12324 U->joinArmyFromNext = false;
12325 U->persuasion = true;
12329 unitNum[x][y] = u.chipNumb;
12330 [self SetUnitStatus:unitNum[x][y]];
12332 for(int i = 0;i < UCN;i++){
12333 if([U->C.nameID isEqualToString:UC[i].nameID])
12336 for(int i = 0;i < LCN;i++){
12337 if([U->CL.nameID isEqualToString:LC[i].nameID])
12338 U->chipNumberL = i;
12340 for(int i = 0;i < UCN;i++){
12341 if([U->C.nameID isEqualToString:UC[i].nameID])
12344 for(int i = 0;i < LCN;i++){
12345 if([U->CL.nameID isEqualToString:LC[i].nameID])
12346 U->CL.chipNumb = i;
12355 -(MAPSCRIPT0*)setWait:(MAPSCRIPT0*)MS0{
12357 static bool waitin = false;
12361 waitinTime = MS0->wait;
12366 waitSwtichFlag = true;
12368 if(waitAllOverFlag){
12369 MS0->succeessfulFlag = true;
12370 MS0->endFlag = true;
12371 waitAllOverFlag = false;
12372 waitSwtichFlag = false;
12374 waitx10flag = false;
12381 -(MAPSCRIPT0*)setBGM:(MAPSCRIPT0*)MS0{
12383 // if(BGMsub) [BGMsub stop];
12384 BGMsub = [MS0->BGM.snd retain];
12388 MS0->succeessfulFlag = true;
12389 MS0->endFlag = true;
12394 -(MAPSCRIPT0*)setSE:(MAPSCRIPT0*)MS0{
12398 SEsub = [MS0->SE.snd retain];
12402 MS0->succeessfulFlag = true;
12403 MS0->endFlag = true;
12408 -(MAPSCRIPT0*)setTitleBack:(MAPSCRIPT0*)MS0{
12410 backTitleFlag = true;
12411 battleBegin = false;
12413 MS0->succeessfulFlag = true;
12414 MS0->endFlag = true;
12419 -(MAPSCRIPT0*)setStageClear:(MAPSCRIPT0*)MS0{
12421 stageClearFlag = true;
12423 if(MS0->sc.edcdFlag)
12424 stageClearFlag2 = true;
12425 battleBegin = false;
12427 MS0->succeessfulFlag = true;
12428 MS0->endFlag = true;
12433 -(MAPSCRIPT0*)setGameOver:(MAPSCRIPT0*)MS0{
12435 gaov.img = MS0->gaov.img;
12437 gameOverFlag = true;
12438 battleBegin = false;
12440 MS0->succeessfulFlag = true;
12441 MS0->endFlag = true;
12446 -(IBAction)gameOverSubmit:(id)sender{
12453 [GameOverWindow close];
12454 [titleWindow makeKeyAndOrderFront:nil];
12458 -(IBAction)battleReadyUpStartBtn:(id)sender{
12461 P[0].resource = [battleReadyUpSupply1 intValue];
12462 P[0].food = [battleReadyUpFood1 intValue];
12463 P[0].money = [battleReadyUpMoney1 intValue];
12465 P[1].resource = [battleReadyUpSupply2 intValue];
12466 P[1].food = [battleReadyUpFood2 intValue];
12467 P[1].money = [battleReadyUpMoney2 intValue];
12469 setBattleModeFlag = false;
12474 -(IBAction)battleReadyUpState1:(id)sender{
12475 retardhelp1 = true;
12477 -(IBAction)battleReadyUpState2:(id)sender{
12478 retardhelp2 = true;
12487 -(IBAction)selectionBtn1:(id)sender{
12489 [selectionWindow close];
12491 -(IBAction)selectionBtn2:(id)sender{
12493 [selectionWindow close];
12495 -(IBAction)selectionBtn3:(id)sender{
12497 [selectionWindow close];
12499 -(IBAction)selectionBtn4:(id)sender{
12501 [selectionWindow close];
12503 -(IBAction)selectionBtn5:(id)sender{
12505 [selectionWindow close];
12507 -(IBAction)selectionBtn6:(id)sender{
12509 [selectionWindow close];
12511 -(IBAction)selectionBtn7:(id)sender{
12513 [selectionWindow close];
12515 -(IBAction)selectionBtn8:(id)sender{
12517 [selectionWindow close];
12519 -(IBAction)selectionBtn9:(id)sender{
12521 [selectionWindow close];
12528 NSString *directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
12529 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
12532 NSData *InitialData = [NSData dataWithContentsOfFile:@"data/Others/var.txt"];
12533 NSString *pathVar = @"data/Others/var.txt";
12534 NSString *fileData = @"";
12537 [[NSFileManager defaultManager] createFileAtPath:pathVar contents:nil attributes:nil];
12541 fileData = [NSString stringWithContentsOfFile:pathVar encoding:NSUTF8StringEncoding error:nil];
12542 NSArray *fileDataArray = [fileData componentsSeparatedByString:@"\n"];
12544 for(int i = 0;i < [fileDataArray count];i++){
12546 NSArray *item = [[fileDataArray objectAtIndex:i] componentsSeparatedByString:@","];
12548 Hensuu[i] = [[item objectAtIndex:1] retain];
12549 HensuuName[i] = [[item objectAtIndex:2] retain];
12561 @implementation FieldSceneEF
12568 - (id)initWithFrame:(NSRect)frame
12570 self = [super initWithFrame:frame];
12572 // Initialization code here.
12574 scheduledTimerWithTimeInterval:0.015
12576 selector:@selector(EventLoopBV:)
12585 -(void)scrollWheel:(NSEvent *)theEvent{
12591 -(void)EventLoopBV:(NSTimer*)timer{
12593 [battleView setNeedsDisplay:YES];
12595 static int aniFrame = 0;
12597 if(animationFlag3){
12603 if(!animationFlag1 && !animationFlag2){
12614 U->C.A = attackCR2;
12616 static bool pussyMikoto = false;
12620 ani = U->C.A->AN.ANI;
12623 for (int i = 0; i < aniFrameCnt;i++) {
12628 [ani->snd setCurrentTime:0];
12630 ani->snd.loops = NO;
12633 pussyMikoto = true;
12637 U->C.A->AN.ANI = ani;
12640 if(aniFrame < U->C.A->AN.frame){
12646 pussyMikoto = false;
12647 animationFlag3 = true;
12655 [self setNeedsDisplay:YES];
12660 -(void)DrawImage:(NSImage*)image x:(float)x y:(float)y a:(float)a{
12662 frRect.size.height = image.size.height;
12663 frRect.size.width = image.size.width;
12665 frRect.origin.x = 0;
12666 frRect.origin.y = 0;
12669 drRect.origin.x = x;
12670 drRect.origin.y = y;
12671 drRect.size.height = image.size.height;
12672 drRect.size.width = image.size.width;
12674 [image drawInRect:drRect fromRect:frRect operation:NSCompositeSourceOver fraction:a respectFlipped:YES hints:nil];
12678 - (void)drawRect:(NSRect)dirtyRect
12680 // Drawing code here.
12681 if(animationFlag3) return;
12686 if(animationFlag1 || animationFlag2){
12692 U->C.A = attackCR2;
12694 ani = U->C.A->AN.ANI;
12699 for (int i = 0; i < aniFrameCnt;i++) {
12707 [self DrawImage:ani->img x:ani->x + ani->ax y:ani->y + ani->ay a:1.0f];