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:0.015
60 selector:@selector(EventLoopFS:)
91 -(void)doubleClickBCL:(id)sender{
112 for(int i = 0;i < slctedUnitNum;i++){
116 if (MC[chipNum[possionX][possionY]].type == MC_ANTEI) {
118 if(BC[U->C.S->list[crBCL]-1].type == BC_ANTEI){
124 if (MC[chipNum[possionX][possionY]].type == MC_CHIKURIN) {
126 if(BC[U->C.S->list[crBCL]-1].type == BC_CHIKURIN){
132 if (MC[chipNum[possionX][possionY]].type == MC_ASASE) {
134 if(BC[U->C.S->list[crBCL]-1].type == BC_ASASE){
140 if(BC[U->C.S->list[crBCL]].type == BC_SONOTA){
146 if(buildNum[possionX][possionY] >= 0){
152 if(P[0].resource >= BC[U->C.S->list[crBCL]-1].Csupply){
153 if(P[0].food >= BC[U->C.S->list[crBCL]-1].Cfood){
154 if (P[0].money >= BC[U->C.S->list[crBCL]-1].Cmoney) {
155 P[0].resource -= BC[U->C.S->list[crBCL]-1].Csupply;
156 P[0].food -= BC[U->C.S->list[crBCL]-1].Cfood;
157 P[0].money -= BC[U->C.S->list[crBCL]-1].Cmoney;
159 buildNum[possionX][possionY] = U->C.S->list[crBCL]-1;
161 buildTeam[possionX][possionY] = 0;
164 [self addBuildStatus];
172 if(P[1].resource >= BC[U->C.S->list[crBCL]-1].Csupply){
173 if(P[1].food >= BC[U->C.S->list[crBCL]-1].Cfood){
174 if (P[1].money >= BC[U->C.S->list[crBCL]-1].Cmoney) {
175 P[1].resource -= BC[U->C.S->list[crBCL]-1].Csupply;
176 P[1].food -= BC[U->C.S->list[crBCL]-1].Cfood;
177 P[1].money -= BC[U->C.S->list[crBCL]-1].Cmoney;
179 buildNum[possionX][possionY] = U->C.S->list[crBCL]-1;
181 buildTeam[possionX][possionY] = 2;
183 [self addBuildStatus];
195 -(void)clickBCL:(id)sender{
196 crBCL = (int)[BCreateListTV clickedRow];
203 -(void)doubleClickCSL:(id)sender{
206 for(int i = 0;i < slctedUnitNum;i++){
211 SKILL *sTop = U->C.S;
213 if(U->C.S->type == 2) break;
214 U->C.S = U->C.S->next;
223 if(U->C.S->cost[crCSL] <= U->C.S_C.MP){
224 //U->C.S_C.MP -= U->C.S->cost[crCSL];
225 CSLUC = UC[U->C.S->list[crCSL]-1];
230 //unitColorInitFlag = true;
233 if(U->C.S->cost[crCSL] <= U->C.S_C.MP){
235 //U->C.S_C.MP -= U->C.S->cost[crCSL];
236 CSLUC = UC[U->C.S->list[crCSL]-1];
241 //unitColorInitFlag = true;
248 -(void)clickCSL:(id)sender{
249 crCSL = (int)[CSummonListTV clickedRow];
254 -(void)doubleClickCAL:(id)sender{
256 if([CAttackListTV clickedRow] < 0) return;
261 int postCAL1 = crCAL1;
262 int postCAL2 = crCAL2;
264 if(!battleSet1Flag && !battleSet2Flag){
266 while (!(AUN[1] == U->number)) {
272 if(U->chipNumberL < 0){
274 ATTACK *aTop = U->C.A;
276 crCAL = (int)[CAttackListTV clickedRow];
277 crCAL1 = (int)[CAttackListTV clickedRow];
278 for(int i = 0;i < crCAL;i++){
279 U->C.A = U->C.A->next;
282 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
283 costVIG = U->C.A->vigor;
285 if(costMP <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
286 if(U->C.A->extent > 0){
287 atkExtentFlag = true;
289 atkExtentFlag = false;
299 ATTACK *aTop = U->CL.A;
300 crCAL = (int)[CAttackListTV clickedRow];
301 crCAL1 = (int)[CAttackListTV clickedRow];
302 for(int i = 0;i < crCAL;i++){
303 U->CL.A = U->CL.A->next;
306 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
307 costVIG = U->CL.A->vigor;
309 if(costMP <= U->CL.S_C.EN && costVIG <= U->C.S_C.vigor){
311 if(U->CL.A->extent > 0){
312 atkExtentFlag = true;
314 atkExtentFlag = false;
325 if(battleSet1Flag && !battleSet2PushedFlag){
329 while (!(AUN[1] == U->number)) {
333 if(U->chipNumberL < 0){
334 ATTACK *aTop = U->C.A;
335 crCAL1 = (int)[CAttackListTV clickedRow];
336 for(int i = 0;i < crCAL1;i++){
337 U->C.A = U->C.A->next;
340 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
341 costVIG = U->C.A->vigor;
344 if(costMP <= U->C.S_C.MP && U->atkRange >= U->C.A->rangeA
345 && U->atkRange <= U->C.A->rangeB && costVIG >= U->C.S_C.vigor){
357 ATTACK *aTop = U->CL.A;
358 crCAL1 = (int)[CAttackListTV clickedRow];
359 for(int i = 0;i < crCAL1;i++){
360 U->CL.A = U->CL.A->next;
363 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
364 costVIG = U->C.A->vigor;
366 if(costMP <= U->CL.S_C.EN && U->atkRange >= U->CL.A->rangeA
367 && U->atkRange <= U->CL.A->rangeB && costVIG >= U->C.S_C.vigor){
381 if(battleSet2Flag && battleSet2PushedFlag){
383 while (!(AUN[1] == U->number)) {
387 if(U->chipNumberL < 0){
390 while (!(AUN[1] == U->number)) {
394 int omgRange = U->atkRange;
397 while (!(DUN[1] == U->number)) {
401 U->atkRange = omgRange;
403 ATTACK *aTop = U->C.A;
404 crCAL2 = (int)[CAttackListTV clickedRow];
405 for(int i = 0;i < crCAL2;i++){
406 U->C.A = U->C.A->next;
409 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
410 costVIG = U->C.A->vigor;
413 if(costMP <= U->C.S_C.MP && U->atkRange >= U->C.A->rangeA
414 && U->atkRange <= U->C.A->rangeB && U->C.S_C.vigor){
427 while (!(AUN[1] == U->number)) {
431 int omgRange = U->atkRange;
434 while (!(DUN[1] == U->number)) {
438 U->atkRange = omgRange;
440 ATTACK *aTop = U->CL.A;
441 crCAL2 = (int)[CAttackListTV clickedRow];
442 for(int i = 0;i < crCAL2;i++){
443 U->CL.A = U->CL.A->next;
446 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
447 costVIG = U->C.A->vigor;
449 if(costMP <= U->CL.S_C.EN && U->atkRange >= U->CL.A->rangeA
450 && U->atkRange <= U->CL.A->rangeB && U->C.S_C.vigor){
473 -(void)clickCAL:(id)sender{
475 crCAL = (int)[CAttackListTV clickedRow];
477 if(!battleSetFlag){crCAL = crCAL1;
478 crCAL1 = (int)[CAttackListTV clickedRow];
481 while (!(AUN[1] == U->number)) {
484 }else if(battleSetFlag){crCAL = crCAL2;
485 crCAL2 = (int)[CAttackListTV clickedRow];
488 while (!(DUN[1] == U->number)) {
494 if(U->chipNumberL >= 0) {
496 [self initCAttackSelect2];
498 else if(U->chipNumber >= 0) {
500 [self initCAttackSelect];
505 -(void)initCAttackSelect{
509 while (!(AUN[1] == U->number)) {
512 if(!battleSetFlag){crCAL = crCAL1;
513 //crCAL1 = (int)[CAttackListTV clickedRow];
516 while (!(AUN[1] == U->number)) {
519 }else if(battleSetFlag){crCAL = crCAL2;
520 //crCAL2 = (int)[CAttackListTV clickedRow];
523 while (!(DUN[1] == U->number)) {
531 [CAttackListAC setSelectionIndex:crCAL];
532 crCAL = (int)[CAttackListTV clickedRow];
533 ATTACK *aTop = U->C.A;
534 for(int i = 0;i < crCAL;i++){
535 U->C.A = U->C.A->next;
539 [bullet setStringValue:[NSString stringWithFormat:@"---/---"]];
540 [costP setStringValue:[NSString stringWithFormat:@"---(%g)", U->C.S_C.MP]];
541 [costV setStringValue:[NSString stringWithFormat:@"---(%d)", U->C.S_C.vigor]];
542 [region setStringValue:[NSString stringWithFormat:@"陸-- 宙-- 海-- 空--"]];
543 [crytical setStringValue:@""];
544 [atkProperty setStringValue:@""];
549 if(U->C.A->bullet > 0) [bullet setStringValue:[NSString stringWithFormat:@"%d/%d", U->C.A->bulletC, U->C.A->bullet]];
550 else [bullet setStringValue:[NSString stringWithFormat:@"---/---"]];
551 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]];
552 else [costP setStringValue:[NSString stringWithFormat:@"---(%g)", U->C.S_C.MP]];
553 if(U->C.A->vigor > 0) [costV setStringValue:[NSString stringWithFormat:@"%d(%d)", U->C.A->vigor, U->C.S_C.vigor]];
554 else [costV setStringValue:[NSString stringWithFormat:@"---(%d)", U->C.S_C.vigor]];
556 NSString *Riku, *Chu, *Umi, *Sora;
558 switch (U->C.A->riku) {
560 Riku = [@"A" retain];
578 Riku = [@"SS"retain];
581 switch (U->C.A->chu) {
601 Chu = [@"SS" retain];
604 switch (U->C.A->umi) {
624 Umi = [@"SS" retain];
627 switch (U->C.A->sora) {
629 Sora = [@"A" retain];
632 Sora = [@"B" retain];
635 Sora = [@"C" retain];
638 Sora = [@"D" retain];
641 Sora = [@"E" retain];
644 Sora = [@"S" retain];
647 Sora = [@"SS" retain];
658 [region setStringValue:[NSString stringWithFormat:@"陸%@ 宙%@ 海%@ 空%@", Riku, Chu, Umi, Sora]];
659 [crytical setStringValue:@""];
660 [atkProperty setStringValue:@""];
666 -(void)initCAttackSelect2{
670 while (!(AUN[1] == U->number)) {
674 //crCAL1 = (int)[CAttackListTV clickedRow];
676 while (!(AUN[1] == U->number)) {
681 //crCAL2 = (int)[CAttackListTV clickedRow];
683 while (!(DUN[1] == U->number)) {
689 ATTACK *aTop = U->CL.A;
690 for(int i = 0;i < crCAL;i++){
691 U->CL.A = U->CL.A->next;
699 if(U->CL.A->bullet > 0) [bullet setStringValue:[NSString stringWithFormat:@"%d/%d", U->CL.A->bulletC, U->CL.A->bullet]];
700 else [bullet setStringValue:[NSString stringWithFormat:@"---/---"]];
701 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]];
702 else [costP setStringValue:[NSString stringWithFormat:@"---(%g)", U->CL.S_C.EN]];
703 if(U->CL.A->vigor > 0) [costV setStringValue:[NSString stringWithFormat:@"%d(%d)", U->CL.A->vigor, U->C.S_C.vigor]];
704 else [costV setStringValue:[NSString stringWithFormat:@"---(%d)", U->C.S_C.vigor]];
706 NSString *Riku, *Chu, *Umi, *Sora;
708 switch (U->CL.A->riku) {
731 switch (U->CL.A->chu) {
754 switch (U->CL.A->umi) {
777 switch (U->CL.A->sora) {
808 [region setStringValue:[NSString stringWithFormat:@"陸%@ 宙%@ 海%@ 空%@", Riku, Chu, Umi, Sora]];
809 [crytical setStringValue:@""];
810 [atkProperty setStringValue:@""];
817 -(void)doubleClickCRL:(id)sender{
819 if(crCRL == -1) return;
821 if(unitBreak->team == 0)
822 if(P[0].resource >= BRU->S_M.cSupply && P[0].food >= BRU->S_M.cFood && P[0].money >= BRU->S_M.cMoney){
824 P[0].resource -= BRU->S_M.cSupply;
825 P[0].food -= BRU->S_M.cFood;
826 P[0].money -= BRU->S_M.cMoney;
828 unitNum[possionX][possionY] = BRUindex;
829 if(researchTeam == 0) unitTeam[possionX][possionY] = 0;
830 if(researchTeam == 2) unitTeam[possionX][possionY] = 2;
832 [self addUnitStatus];
834 unitColorInitFlag = true;
836 [researchPanel close];
839 if(unitBreak->team == 2)
840 if(P[1].resource >= BRU->S_M.cSupply && P[1].food >= BRU->S_M.cFood && P[1].money >= BRU->S_M.cMoney){
842 P[1].resource -= BRU->S_M.cSupply;
843 P[1].food -= BRU->S_M.cFood;
844 P[1].money -= BRU->S_M.cMoney;
846 unitNum[possionX][possionY] = BRUindex;
847 if(researchTeam == 0) unitTeam[possionX][possionY] = 0;
848 if(researchTeam == 2) unitTeam[possionX][possionY] = 2;
850 [self addUnitStatus];
852 unitColorInitFlag = true;
854 [researchPanel close];
859 -(void)clickCRL:(id)sender{
861 crCRL = (int)[CResearchListTV clickedRow];
865 B = &BC[buildNum[possionX][possionY]];
875 for(int i = 0;i <= crCRL;i++){
878 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", BU->S_M.ATK]];
879 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", BU->S_M.DEF]];
880 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", BU->S_M.CAP]];
881 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", BU->S_M.ACU]];
882 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", BU->S_M.EVA]];
883 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", BU->S_M.MOV]];
884 [researchIMG setImage:BU->imgb];
885 [researchIMG setImageScaling:NSScaleToFit];
891 for (int i = 0; BRU->nameID != UC[i].nameID;i++) {
897 -(void)SetStatusFunc{
906 double S, V, A, D, M, I;
1027 S = U->C.S_C.STR + STRfix;
1028 V = U->C.S_C.VIT + VITfix;
1029 A = U->C.S_C.AGI + AGIfix;
1030 D = U->C.S_C.DEX + DEXfix;
1031 M = U->C.S_C.MEN + MENfix;
1032 I = U->C.S_C.INT + INTfix;
1034 U->C.S_C.ATK = (S*5 + D*2 + A)/8;
1035 U->C.S_C.DEF = (V*5 + M*2 + S)/8;
1036 U->C.S_C.CAP = (I*4 + D*1 + M*2)/7;
1037 U->C.S_C.ACU = (D*4 + A*1 + M)/6;
1038 U->C.S_C.EVA = (A*4 + A*1 + M)/6;
1040 U->C.S_C.ATK += 0.5;
1041 U->C.S_C.DEF += 0.5;
1042 U->C.S_C.CAP += 0.5;
1043 U->C.S_C.ACU += 0.5;
1044 U->C.S_C.EVA += 0.5;
1046 U->C.S_C.ATK = floor(U->C.S_C.ATK);
1047 U->C.S_C.DEF = floor(U->C.S_C.DEF);
1048 U->C.S_C.CAP = floor(U->C.S_C.CAP);
1049 U->C.S_C.ACU = floor(U->C.S_C.ACU);
1050 U->C.S_C.EVA = floor(U->C.S_C.EVA);
1057 -(void)initMapscript{
1059 for(int i = 0;i < 9999;i++){
1063 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
1064 MAPSCRIPTD *MSDtop = MS.D;
1067 MAPSCRIPT0 *MSDPt = MS.D->P;
1070 MS.D->endFlag = false;
1073 double deltaET = floor(MS.D->ET2) - floor(MS.D->ET1);
1075 if(deltaET < 0) deltaET = 0;
1077 if(MS.D->ET1 <= eventTime && MS.D->ET2 >= eventTime){
1078 if(deltaET > 0) deltaR = rand()%(int)deltaET;
1081 MS.D->ET3 = MS.D->ET1 + (double)deltaR;
1085 MS.D->P->endFlag = false;
1086 MS.D->P = MS.D->P->next;
1095 MF[MFselectedRow+1].MS = MS;
1099 initImgFlag = false;
1100 initStringNum = false;
1101 bugFixFlag1 = false;
1102 bugFixFlag2 = false;
1103 bugFixFlag3 = false;
1109 -(void)EventLoopFS:(NSTimer*)time{
1115 for(int i = 0;i < DUN[1];i++){
1120 if(Utarget) NSLog(@"PX %d PY %d UX %d UY %d", possionX, possionY, Utarget->x, Utarget->y);
1125 static int lmao = 0;
1137 if(extentBattleFlag){
1140 battleSet1Flag = false;
1141 battleSet2Flag = false;
1142 battleSettingFlag = false;
1143 [self AttackDisplay];
1144 windowPoint.x = [mapWindow frame].origin.x;
1145 windowPoint.y = [mapWindow frame].origin.y;
1146 [battleWindow setFrameOrigin:windowPoint];
1147 [battleWindow makeKeyAndOrderFront:nil];
1148 extentBattleFlag = false;
1149 extentBattleFlag2 = true;
1151 if(cpuAtkExtendFlag2){
1154 battleSet1Flag = false;
1155 battleSet2Flag = false;
1156 battleSettingFlag = false;
1157 [self AttackDisplay];
1158 windowPoint.x = [mapWindow frame].origin.x;
1159 windowPoint.y = [mapWindow frame].origin.y;
1160 [battleWindow setFrameOrigin:windowPoint];
1161 [battleWindow makeKeyAndOrderFront:nil];
1162 extentBattleFlag = false;
1163 extentBattleFlag2 = true;
1164 cpuAtkExtendFlag = false;
1165 cpuAtkExtendFlag2 = false;
1166 [battlePanel close];
1167 }if(extentBattleFlag2){
1171 if(!setBattleModeFlag){
1172 if(!battleReadyUpFlag){battleReadyUpFlag = true;
1174 P[0].resource = 500;
1177 P[1].resource = 500;
1180 P[2].resource = 500;
1187 if(setBattleModeFlag){
1188 if(!battleReadyUpFlag){battleReadyUpFlag = true;
1189 [battleReadyUpPN1 setStringValue:P[0].name];
1190 [battleReadyUpPN2 setStringValue:P[1].name];
1192 NSString *string = @"";
1193 string = [string stringByAppendingFormat:@"%@の勝利条件\n", P[0].name];
1194 if(MF[MFselectedRow+1].MS.EGClight.endType1 == 1){
1195 string = [string stringByAppendingString:@"敵の壊滅\n"];
1197 }else if(MF[MFselectedRow+1].MS.EGClight.endType1 == 2){
1198 string = [string stringByAppendingString:@"味方の壊滅\n"];
1202 string = [string stringByAppendingString:@"\n"];
1204 string = [string stringByAppendingFormat:@"%@の勝利条件\n", P[1].name];
1205 if(MF[MFselectedRow+1].MS.EGCdark.endType1 == 2){
1206 string = [string stringByAppendingString:@"敵の壊滅\n"];
1207 }else if(MF[MFselectedRow+1].MS.EGClight.endType1 == 1){
1208 string = [string stringByAppendingString:@"味方の壊滅\n"];
1213 [battleReadyUpSupply1 setIntValue:P[0].resource];
1214 [battleReadyUpFood1 setIntValue:P[0].food];
1215 [battleReadyUpMoney1 setIntValue:P[0].money];
1217 [battleReadyUpSupply2 setIntValue:P[1].resource];
1218 [battleReadyUpFood2 setIntValue:P[1].food];
1219 [battleReadyUpMoney2 setIntValue:P[1].money];
1221 if(MF[MFselectedRow+1].MS.playerSet1 == 0){
1222 [battleReadyUpMAN1A setEnabled:YES];
1223 [battleReadyUpMAN1B setEnabled:YES];
1224 [battleReadyUpMAN1A setState:1];
1225 [battleReadyUpMAN1B setState:0];
1227 }else if(MF[MFselectedRow+1].MS.playerSet1 == 1){
1228 [battleReadyUpMAN1A setEnabled:NO];
1229 [battleReadyUpMAN1B setEnabled:NO];
1230 [battleReadyUpMAN1A setState:1];
1231 [battleReadyUpMAN1B setState:0];
1232 }else if(MF[MFselectedRow+1].MS.playerSet1 == 2){
1233 [battleReadyUpMAN1A setEnabled:NO];
1234 [battleReadyUpMAN1B setEnabled:NO];
1235 [battleReadyUpMAN1A setState:0];
1236 [battleReadyUpMAN1B setState:1];
1239 if(MF[MFselectedRow+1].MS.playerSet2 == 0){
1240 [battleReadyUpMAN2A setEnabled:YES];
1241 [battleReadyUpMAN2B setEnabled:YES];
1242 [battleReadyUpMAN2A setState:1];
1243 [battleReadyUpMAN2B setState:0];
1245 }else if(MF[MFselectedRow+1].MS.playerSet2 == 1){
1246 [battleReadyUpMAN2A setEnabled:NO];
1247 [battleReadyUpMAN2B setEnabled:NO];
1248 [battleReadyUpMAN2A setState:1];
1249 [battleReadyUpMAN2B setState:0];
1250 }else if(MF[MFselectedRow+1].MS.playerSet2 == 2){
1251 [battleReadyUpMAN2A setEnabled:NO];
1252 [battleReadyUpMAN2B setEnabled:NO];
1253 [battleReadyUpMAN2A setState:0];
1254 [battleReadyUpMAN2B setState:1];
1258 if([battleReadyUpMAN1A state] != 0)
1259 MF[MFselectedRow+1].MS.playerSet1 = 1;
1261 MF[MFselectedRow+1].MS.playerSet1 = 2;
1264 if([battleReadyUpMAN2A state] != 0)
1265 MF[MFselectedRow+1].MS.playerSet2 = 1;
1267 MF[MFselectedRow+1].MS.playerSet2 = 2;
1274 if(buildNum[possionX][possionY] < 0){
1275 [selectMesh setImage:MC[chipNum[possionX][possionY]].img];
1276 [selectMeshText setStringValue:MC[chipNum[possionX][possionY]].name];
1277 [selectMeshValue setStringValue:[NSString stringWithFormat:@"%d%", MC[chipNum[possionX][possionY]].dmgfix]];
1279 [selectMesh setImage:BC[buildNum[possionX][possionY]].img];
1280 [selectMeshText setStringValue:BC[buildNum[possionX][possionY]].name];
1281 [selectMeshValue setStringValue:[NSString stringWithFormat:@"%d%", BC[buildNum[possionX][possionY]].dmgfix]];
1283 [self SetStatusFunc];
1289 if(U->x == possionX && U->y == possionY && U->dead == true){
1296 if(U->chipNumberL < 0){
1297 if(U->x == possionX && U->y == possionY && U->dead == false && Uselected){
1299 if(U->x == Uselected->x && U->y == Uselected->y && U->team == 0){
1300 [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[0].name]];
1302 if(U->x == Uselected->x && U->y == Uselected->y && U->team == 2){
1303 [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[1].name]];
1306 [tfName setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
1307 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
1308 [HPbarLI setIntValue:[[NSString stringWithFormat:@"%g", U->C.S_C.HP/U->C.S_M.HP*100 + 0.5] intValue]];
1309 [MPbarTF setStringValue:[NSString stringWithFormat:@"MP %g/%g", U->C.S_C.MP, U->C.S_M.MP]];
1310 [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 %g", U->C.S_C.ATK]];
1311 [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 %g", U->C.S_C.DEF]];
1312 [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 %g", U->C.S_C.CAP]];
1313 [tfHit setStringValue:[NSString stringWithFormat:@"命中値 %g", U->C.S_C.ACU]];
1314 [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 %g", U->C.S_C.EVA]];
1315 [tfMove setStringValue:[NSString stringWithFormat:@"移動力 %d", U->C.S_C.MOV]];
1316 [tfWait setStringValue:[NSString stringWithFormat:@"WT %g", U->C.S_C.WT]];
1317 [selectChara setImage:U->C.imgb];
1318 [selectChara setImageScaling:NSScaleToFit];
1323 [tfName setStringValue:[NSString stringWithFormat:@"----"]];
1324 [tfArmy setStringValue:[NSString stringWithFormat:@"----"]];
1325 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP ----"]];
1326 [HPbarLI setIntValue:[[NSString stringWithFormat:@"0"] intValue]];
1327 [MPbarTF setStringValue:[NSString stringWithFormat:@"MP ----"]];
1328 [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
1329 [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
1330 [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
1331 [tfHit setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
1332 [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
1333 [tfMove setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
1334 [tfWait setStringValue:[NSString stringWithFormat:@"WT ----"]];
1335 [selectChara setImage:NULL];
1340 if(U->x == possionX && U->y == possionY && U->dead == false && Uselected){
1342 if(U->x == Uselected->x && U->y == Uselected->y && U->team == 0){
1343 [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[0].name]];
1345 if(U->x == Uselected->x && U->y == Uselected->y && U->team == 2){
1346 [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[1].name]];
1349 [tfName setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
1350 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
1351 [HPbarLI setIntValue:[[NSString stringWithFormat:@"%g", U->CL.S_C.HP/U->CL.S_M.HP*100 + 0.5] intValue]];
1352 [MPbarTF setStringValue:[NSString stringWithFormat:@"EN %g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
1353 [tfAttack setStringValue:[NSString stringWithFormat:@"移動力 %d", U->CL.S_C.MOV]];
1354 [tfDefence setStringValue:[NSString stringWithFormat:@"運動性 %g", U->CL.S_C.MOB]];
1355 [tfCalc setStringValue:[NSString stringWithFormat:@"装甲 %g", U->CL.S_C.ARM]];
1356 [tfHit setStringValue:[NSString stringWithFormat:@"限界 %g", U->CL.S_C.LIM]];
1357 [tfDodge setStringValue:[NSString stringWithFormat:@""]];
1358 [tfMove setStringValue:[NSString stringWithFormat:@""]];
1359 [tfWait setStringValue:[NSString stringWithFormat:@"WT %g", U->CL.S_C.WT]];
1360 [selectChara setImage:U->CL.imgb];
1361 [selectChara setImageScaling:NSScaleToFit];
1365 [tfName setStringValue:[NSString stringWithFormat:@"----"]];
1366 [tfArmy setStringValue:[NSString stringWithFormat:@"----"]];
1367 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP ----"]];
1368 [HPbarLI setIntValue:[[NSString stringWithFormat:@"0"] intValue]];
1369 [MPbarTF setStringValue:[NSString stringWithFormat:@"MP ----"]];
1370 [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
1371 [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
1372 [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
1373 [tfHit setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
1374 [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
1375 [tfMove setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
1376 [tfWait setStringValue:[NSString stringWithFormat:@"WT ----"]];
1377 [selectChara setImage:NULL];
1393 if(unitBreak->team == 0){
1394 [tfResource setStringValue:[NSString stringWithFormat:@"資源 %d", P[0].resource]];
1395 [tfFood setStringValue:[NSString stringWithFormat:@"食料 %d", P[0].food]];
1396 [tfMoney setStringValue:[NSString stringWithFormat:@"資金 %d", P[0].money]];
1397 }else if(unitBreak->team == 2){
1398 [tfResource setStringValue:[NSString stringWithFormat:@"資源 %d", P[1].resource]];
1399 [tfFood setStringValue:[NSString stringWithFormat:@"食料 %d", P[1].food]];
1400 [tfMoney setStringValue:[NSString stringWithFormat:@"資金 %d", P[1].money]];
1404 if(menuDisplayFlag){
1406 [self initBCreateList];
1407 [self initCSummonList];
1410 if (initMapFlag && !initStatusFlag) {
1411 [self initUnitStatus];
1412 [self initBuildStatus];
1414 //NSLog(@"%d", unitNum[1][1]);
1418 U->C.S_C.HP = U->C.S_M.HP;
1424 initStatusFlag = true;
1426 TeamCountFlag = true;
1428 unitColorInitFlag = true;
1431 for (int i = 1;i < 512;i++) {
1432 if([[SC[storyNumb].nameMAP objectAtIndex:scenarioNumb] isEqualToString:[NSString stringWithFormat:@"%@", MF[i].fileName]])
1436 [self setTargetList];
1439 [self initMapscript];
1441 initMapEventFlag = true;
1442 fieldViewBattleInitFlag = true;
1445 for(int i = 0;i < 255;i++){
1459 wtMovedFlag = false;
1460 wtAttackedFlag = false;
1463 if(!U->dead) U->C.S_C.WT -= 1;
1465 U->C.S_C.WT = 999999;
1468 if(U->C.S_C.WT <= 0 && !U->dead){//WTターン周り
1470 wtUnitNum = U->number;
1475 possionX = unitBreak->x;
1476 possionY = unitBreak->y;
1481 if(buildNum[U->x][U->y] >= 0){
1485 if(B->x == U->x && B->y == U->y){
1498 U->C.S_C.HP += floor(U->C.S_M.HP*B->C.recHP/100);
1499 if(U->C.S_C.HP >= U->C.S_M.HP) U->C.S_C.HP = U->C.S_M.HP;
1503 U->C.S_C.MP += floor(U->C.S_M.MP*B->C.recMP/100);
1504 if(U->C.S_C.MP >= U->C.S_M.MP) U->C.S_C.MP = U->C.S_M.MP;
1508 U->CL.S_C.EN += floor(U->CL.S_M.EN*B->C.recEN/100);
1509 if(U->CL.S_C.EN >= U->CL.S_M.EN) U->CL.S_C.EN = U->CL.S_M.EN;
1512 if(B->C.recHPL > 0){
1513 U->CL.S_C.HP += floor(U->CL.S_M.HP*B->C.recHPL/100);
1514 if(U->CL.S_C.HP >= U->CL.S_M.HP) U->CL.S_C.HP = U->CL.S_M.HP;
1530 if(!B->dead) B->C.S_C.WTE -= 1;
1531 if(B->C.S_C.WTE <= 0){
1534 P[0].resource += B->C.Esupply;
1535 P[0].food += B->C.Efood;
1536 P[0].money += B->C.Emoney;
1539 P[1].resource += B->C.Esupply;
1540 P[1].food += B->C.Efood;
1541 P[1].money += B->C.Emoney;
1544 P[2].resource += B->C.Esupply;
1545 P[2].food += B->C.Efood;
1546 P[2].money += B->C.Emoney;
1549 B->C.S_C.WTE = B->C.S_M.WTE;
1562 if(battleWindowFlag){battleFlag = true; battleWindowFlag = false;
1569 static int openWait = 0;
1579 if(!battleSettingFlag){
1580 windowPoint.x = [mapWindow frame].origin.x;
1581 windowPoint.y = [mapWindow frame].origin.y;
1582 [battlePanel setFrameOrigin:windowPoint];
1583 [battlePanel makeKeyAndOrderFront:nil];
1585 [self setBattlePanel];
1590 if(!battleSetUpIgnore){
1591 [self AttackDisplay];
1593 windowPoint.x = [mapWindow frame].origin.x;
1594 windowPoint.y = [mapWindow frame].origin.y;
1595 [battleWindow setFrameOrigin:windowPoint];
1596 [battleWindow makeKeyAndOrderFront:nil];
1599 [mapWindow makeKeyAndOrderFront:nil];
1606 [self DisplayMessage];
1609 if(buildSelectedFlag){
1610 windowPoint.x = [mapWindow frame].origin.x;
1611 windowPoint.y = [mapWindow frame].origin.y;
1612 [researchPanel setFrameOrigin:windowPoint];
1613 if([self setBuildList]){
1614 [researchPanel makeKeyAndOrderFront:nil];
1616 buildSelectedFlag = false;
1619 if(mapChipDataLoadFail){
1621 [endGamePanel close];
1622 [esWindow makeKeyAndOrderFront:nil];
1625 endGameCondition = false;
1626 initMapFlag = false;
1627 TeamCountFlag = false;
1628 initStatusFlag = false;
1629 battleBegin = false;
1633 blueWinFlag = false;
1637 mapChipDataLoadFail = false;
1641 if(TeamCountFlag && !endGameCondition){
1646 if((U->team == 0 || U->team == 1) && !U->dead){
1649 else if(U->team == 2 && !U->dead){
1657 if(targType1cnt[1] == 0 || targType2cnt[1] == 0){
1658 endGameCondition = true;
1660 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[1].name]];
1663 if(targType1cnt[0] == 0 || targType2cnt[0] == 0){
1664 endGameCondition = true;
1666 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
1671 endGameCondition = true;
1673 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[1].name]];
1677 endGameCondition = true;
1679 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
1683 if(TeamCount0 == 0 && (MF[MFselectedRow+1].MS.EGCdark.endType1 == 2 || MF[MFselectedRow+1].MS.EGCdark.endType2 == 2)){
1684 endGameCondition = true;
1686 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[1].name]];
1688 if(TeamCount2 == 0 && (MF[MFselectedRow+1].MS.EGClight.endType1 == 1 || MF[MFselectedRow+1].MS.EGClight.endType2 == 1)){
1689 endGameCondition = true;
1691 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
1697 static int endGamePanelWait = 100;
1699 if(endGameCondition && !battleRdy){
1701 if(redWinFlag && blueWinFlag){
1705 windowPoint.x = [mapWindow frame].origin.x+30;
1706 windowPoint.y = [mapWindow frame].origin.y+200;
1707 [endGamePanel setFrameOrigin:windowPoint];
1708 [endGamePanel makeKeyAndOrderFront:nil];
1710 if(endGamePanelWait > 0) return;
1713 [endGamePanel close];
1714 [esWindow makeKeyAndOrderFront:nil];
1719 endGameCondition = false;
1720 initMapFlag = false;
1721 TeamCountFlag = false;
1722 initStatusFlag = false;
1723 battleBegin = false;
1726 cpuModeMOVEflag = false;
1727 cpuModeATTACKflag = false;
1730 blueWinFlag = false;
1731 cpuAImodeflag = false;
1732 cpuTurnEndFlag = true;
1733 waitSwtichFlag = false;
1738 endGamePanelWait = 100;
1739 stageClearFlag = false;
1740 stageClearFlag2 = false;
1741 battleReadyUpFlag = false;
1742 setBattleModeFlag = false;
1746 [titleWindow makeKeyAndOrderFront:nil];
1751 endGameCondition = false;
1752 initMapFlag = false;
1753 TeamCountFlag = false;
1754 initStatusFlag = false;
1755 battleBegin = false;
1758 cpuModeMOVEflag = false;
1759 cpuModeATTACKflag = false;
1762 blueWinFlag = false;
1763 cpuAImodeflag = false;
1764 cpuTurnEndFlag = true;
1765 backTitleFlag = false;
1766 backTitleFlag2 = true;
1767 waitSwtichFlag = false;
1768 battleReadyUpFlag = false;
1769 setBattleModeFlag = false;
1775 }if(stageClearFlag){
1777 if(stageClearFlag2){
1779 endGameCondition = true;
1781 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
1788 [esWindow makeKeyAndOrderFront:nil];
1793 endGameCondition = false;
1794 initMapFlag = false;
1795 TeamCountFlag = false;
1796 initStatusFlag = false;
1797 battleBegin = false;
1800 cpuModeMOVEflag = false;
1801 cpuModeATTACKflag = false;
1804 blueWinFlag = false;
1805 cpuAImodeflag = false;
1806 cpuTurnEndFlag = true;
1807 stageClearFlag = false;
1808 waitSwtichFlag = false;
1809 battleReadyUpFlag = false;
1810 setBattleModeFlag = false;
1820 [GameOverIV setImage:gaov.img];
1823 [GameOverWindow makeKeyAndOrderFront:nil];
1826 endGameCondition = false;
1827 initMapFlag = false;
1828 TeamCountFlag = false;
1829 initStatusFlag = false;
1830 battleBegin = false;
1833 cpuModeMOVEflag = false;
1834 cpuModeATTACKflag = false;
1837 blueWinFlag = false;
1838 cpuAImodeflag = false;
1839 cpuTurnEndFlag = true;
1840 backTitleFlag = false;
1841 gameOverFlag = false;
1842 gameOverFlag2 = true;
1843 waitSwtichFlag = false;
1844 battleReadyUpFlag = false;
1845 setBattleModeFlag = false;
1854 if(!Uselected->dead){
1858 while (U->number != wtUnitNum) {
1862 if(!wtMovedFlag && !wtAttackedFlag){
1863 U->C.S_C.WT = floor(U->C.S_M.WT/4 + 0.5);
1864 }else if(wtMovedFlag && wtAttackedFlag){
1865 U->C.S_C.WT = floor(U->C.S_M.WT + 0.5);
1866 }else if(wtMovedFlag){
1867 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
1868 }else if(wtAttackedFlag){
1869 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
1882 [self addSummonStatus];
1888 SKILL *sTop = U->C.S;
1891 if(U->C.S->type == 2) break;
1892 U->C.S = U->C.S->next;
1895 U->C.S_C.MP -= U->C.S->cost[crCSL];
1904 unitNum[possionX][possionY] = U->C.S->list[crCSL]-1;
1905 unitTeam[possionX][possionY] = 0;
1908 unitColorInitFlag = true;
1912 SKILL *sTop = U->C.S;
1915 if(U->C.S->type == 2) break;
1916 U->C.S = U->C.S->next;
1919 U->C.S_C.MP -= U->C.S->cost[crCSL];
1927 unitNum[possionX][possionY] = U->C.S->list[crCSL]-1;
1928 unitTeam[possionX][possionY] = 2;
1931 unitColorInitFlag = true;
1934 summonRdyFlag = false;
1942 if(unitMoveEndFlag){
1943 pussyLoopFlag = false;
1947 if(unitBreak->team == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2){
1948 unitBreak->CPU = true;
1949 cpuAImodeflag = true;
1951 }else if(unitBreak->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2){
1952 unitBreak->CPU = true;
1953 cpuAImodeflag = true;
1955 }else if(unitBreak->team == 1){
1956 unitBreak->CPU = true;
1957 cpuAImodeflag = true;
1961 unitBreak->CPU = false;
1962 cpuAImodeflag = false;
1966 if(battleBegin && !pussyLoopFlag){
1967 bool proccessTrue = false;
1968 static bool onlyBigin = false;
1969 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
1984 int proccesType = -1;
1986 bool EventFailFlag = false;
1987 static bool PtopFlag = false;
2012 if(MS.D->P->endFlag)
2013 MS.D->P = MS.D->P->next;
2018 MS.D->endFlag = true;
2019 messageDialog = false;
2020 [self setMessage:NULL];
2025 MAPSCRIPT0 *MSDPT = MS.D->P;
2027 if(MS.D->ETtype == 0){
2029 }else if(MS.D->ETtype == 1){
2030 bool resultFailFlag = false;
2032 if(!MS.D->P->endFlag)
2033 resultFailFlag = true;
2034 MS.D->P = MS.D->P->next;
2039 MS.D->P->endFlag = false;
2040 MS.D->P = MS.D->P->next;
2043 }else if(MS.D->ETtype == 2){
2045 bool resultFailFlag = false;
2047 if(!MS.D->P->succeessfulFlag)
2048 resultFailFlag = true;
2049 MS.D->P = MS.D->P->next;
2054 MS.D->P->endFlag = false;
2055 MS.D->P = MS.D->P->next;
2057 }else if(MS.D->ETtype == 3){
2059 bool resultFailFlag = false;
2061 if(!MS.D->P->succeessfulFlag){
2062 resultFailFlag = false;
2065 MS.D->P = MS.D->P->next;
2066 resultFailFlag = true;
2071 MS.D->P->endFlag = false;
2072 MS.D->P = MS.D->P->next;
2074 //NSLog(@"%d", UTop->x);
2075 }else if(MS.D->ETtype == 4){
2077 MS.D->P->endFlag = false;
2078 MS.D->P = MS.D->P->next;
2097 for(int i = 0;*(MS.D->switch1+i)>0;i++){
2098 if(Suicchi[*(MS.D->switch1+i)])
2101 EventFailFlag = true;
2105 for(int i = 0;*(MS.D->switch2+i)>0;i++){
2106 if(!Suicchi[*(MS.D->switch2+i)])
2109 EventFailFlag = true;
2113 if(MS.D->ET3 <= eventTime)
2114 proccessTrue = true;
2117 if(MS.D->type == -1 && !EventFailFlag)
2118 proccesType = ENTIRE_MAP;
2119 if(MS.D->type == 0 && pushStanbyFlag && (Uselected->x == MS.D->x && Uselected->y == MS.D->y) && !EventFailFlag)
2120 proccesType = CENTER_POINT;
2121 else if(MS.D->type == 0){
2122 proccesType = CENTER_POINT;
2123 proccessTrue = false;
2124 EventFailFlag = true;
2133 MS.D->P->endFlag = true;
2134 MS.D->P = MS.D->P->next;
2142 switch (proccesType) {
2145 MS.D->P = [self setEvent:MS.D->P];
2151 if(waitSwtichFlag) {
2160 }if(stageClearFlag){
2174 MS.D->P = [self setEvent:MS.D->P];
2180 if(waitSwtichFlag) {
2189 }if(stageClearFlag){
2215 MAPSCRIPT0 *MSDPT = MS.D->P;
2216 if(MS.D->ETtype == 0){
2218 MS.D->P->succeessfulFlag = true;
2219 MS.D->endFlag = true;
2220 MS.D->P = MS.D->P->next;
2222 }else if(MS.D->ETtype == 1){
2223 bool resultFailFlag = false;
2225 if(!MS.D->P->endFlag)
2226 resultFailFlag = true;
2227 MS.D->P = MS.D->P->next;
2232 MS.D->P->succeessfulFlag = false;
2233 MS.D->endFlag = false;
2234 MS.D->P = MS.D->P->next;
2237 }else if(MS.D->ETtype == 2){
2239 bool resultFailFlag = false;
2241 if(!MS.D->P->succeessfulFlag)
2242 resultFailFlag = true;
2243 MS.D->P = MS.D->P->next;
2248 MS.D->P->succeessfulFlag = false;
2249 MS.D->endFlag = false;
2250 MS.D->P = MS.D->P->next;
2252 }else if(MS.D->ETtype == 3){
2254 bool resultFailFlag = false;
2256 if(!MS.D->P->succeessfulFlag){
2257 resultFailFlag = false;
2260 resultFailFlag = true;
2261 MS.D->P = MS.D->P->next;
2266 MS.D->P->succeessfulFlag = false;
2267 MS.D->endFlag = false;
2268 MS.D->P = MS.D->P->next;
2270 }else if(MS.D->ETtype == 4){
2272 MS.D->P->succeessfulFlag = false;
2273 MS.D->endFlag = false;
2274 MS.D->P = MS.D->P->next;
2286 MF[MFselectedRow+1].MS.D = MS.D;
2287 cpuTurnEndFlag = false;
2288 battleSetUpIgnore = false;
2292 if(CPUAttackSubmitFlag){
2294 CPUAttackSubmitFlag = false;
2295 windowPoint.x = [mapWindow frame].origin.x;
2296 windowPoint.y = [mapWindow frame].origin.y;
2297 [atkPanel setFrameOrigin:windowPoint];
2301 static int oopsCnt = 20;
2309 ((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
2310 (unitBreak->team == 2 && Utarget->team == 1) || (unitBreak->team == 1 && Utarget->team == 2) ||
2311 (unitBreak->team == 1 && Utarget->team == 1) || (unitBreak->team == 2 && Utarget->team == 2))
2317 oopsCnt = 50;//cpu攻撃ナビ
2322 battleSet1Flag = false;
2323 battleSet2Flag = false;
2324 battleSettingFlag = false;
2325 [self AttackDisplay];
2326 windowPoint.x = [mapWindow frame].origin.x;
2327 windowPoint.y = [mapWindow frame].origin.y;
2328 [battleWindow setFrameOrigin:windowPoint];
2329 [battleWindow makeKeyAndOrderFront:nil];
2330 [battlePanel close];
2335 ((Utarget && MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
2336 (unitBreak->team == 2 && Utarget->team == 1) || (unitBreak->team == 1 && Utarget->team == 2) ||
2337 (unitBreak->team == 1 && Utarget->team == 1) || (unitBreak->team == 2 && Utarget->team == 2)
2345 oopsCnt = 50;//cpu攻撃準備
2356 -(MAPSCRIPT0*)setEvent:(MAPSCRIPT0*)MS0{
2370 APPEARANCE_FLAG = 22,
2371 DISSAPPEARANCE_FLAG = 23,
2376 STAGECLEAR_FLAG = 36,
2383 Proc = MESSAGE_FLAG;
2385 Proc = SELECTION_FLAG;
2387 Proc = INPUTNUMBER_FLAG;
2399 Proc = LABELJUMP_FLAG;
2401 Proc = COMMENT_FLAG;
2403 Proc = RESOURCE_FLAG;
2405 Proc = APPEARANCE_FLAG;
2407 Proc = DISSAPPEARANCE_FLAG;
2415 Proc = GAMEOVER_FLAG;
2417 Proc = STAGECLEAR_FLAG;
2424 messageDialog = true;
2425 [self setMessage:MS0];
2428 case SELECTION_FLAG:
2429 MS0 = [self setSelection:MS0];
2432 case INPUTNUMBER_FLAG:
2433 MS0 = [self setDefault:MS0];
2438 MS0 = [self setSwitch:MS0];
2441 MS0 = [self setDefault:MS0];
2444 MS0 = [self setDefault:MS0];
2447 MS0 = [self setBranch:MS0];
2450 MS0 = [self setLabel:MS0];
2452 case LABELJUMP_FLAG:
2453 MS0 = [self setLabelJump:MS0];
2456 MS0 = [self setComment:MS0];
2459 MS0 = [self setResource:MS0];
2461 case APPEARANCE_FLAG:
2462 MS0 = [self setAppearance:MS0];
2464 case DISSAPPEARANCE_FLAG:
2465 MS0 = [self setDissappearance:MS0];
2468 MS0 = [self setWait:MS0];
2471 MS0 = [self setBGM:MS0];
2474 MS0 = [self setSE:MS0];
2477 MS0 = [self setGameOver:MS0];
2480 case STAGECLEAR_FLAG:
2481 MS0 = [self setStageClear:MS0];
2484 MS0 = [self setTitleBack:MS0];
2494 -(void)setTargetList{
2496 targType1cnt[0] = -1;
2497 targType1cnt[1] = -1;
2498 targType2cnt[0] = -1;
2499 targType2cnt[1] = -1;
2500 targType2Lflag = false;
2501 targType2Dflag = false;
2504 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
2508 for (int i = 0;i < 64;i++) {
2509 if(!MS.EGClight.etValue1[i]) break;
2510 NSArray *array1 = [MS.EGClight.etValue1[i] componentsSeparatedByString:@"["];
2511 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
2513 int Tx = [[array2 objectAtIndex:0] intValue];
2514 int Ty = [[array2 objectAtIndex:1] intValue];
2515 if(MS.EGClight.endType1 == 3){
2518 if(U->x == Tx && U->y == Ty){
2519 U->targType1L = true;
2520 if(targType1cnt[0] < 0)
2521 targType1cnt[0] = 0;
2528 if(MS.EGClight.endType1 == 4){
2531 if(U->x == Tx && U->y == Ty){
2532 U->targType2L = true;
2533 if(targType2cnt[0] < 0)
2534 targType2cnt[0] = 0;
2542 for (int i = 0;i < 64;i++) {
2543 if(!MS.EGClight.etValue2[i]) break;
2544 NSArray *array1 = [MS.EGClight.etValue2[i] componentsSeparatedByString:@"["];
2545 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
2547 int Tx = [[array2 objectAtIndex:0] intValue];
2548 int Ty = [[array2 objectAtIndex:1] intValue];
2550 if(MS.EGClight.endType2 == 3){
2553 if(U->x == Tx && U->y == Ty){
2554 U->targType1L = true;
2555 if(targType1cnt[0] < 0)
2556 targType1cnt[0] = 0;
2563 if(MS.EGClight.endType2 == 4){
2566 if(U->x == Tx && U->y == Ty){
2567 U->targType2L = true;
2568 if(targType2cnt[0] < 0)
2569 targType2cnt[0] = 0;
2577 for (int i = 0;i < 64;i++) {
2578 if(!MS.EGCdark.etValue1[i]) break;
2579 NSArray *array1 = [MS.EGCdark.etValue1[i] componentsSeparatedByString:@"["];
2580 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
2582 int Tx = [[array2 objectAtIndex:0] intValue];
2583 int Ty = [[array2 objectAtIndex:1] intValue];
2585 if(MS.EGCdark.endType1 == 3){
2588 if(U->x == Tx && U->y == Ty){
2589 U->targType1D = true;
2590 if(targType1cnt[1] < 0)
2591 targType1cnt[1] = 0;
2598 if(MS.EGCdark.endType1 == 4){
2601 if(U->x == Tx && U->y == Ty){
2602 U->targType2D = true;
2603 if(targType2cnt[1] < 0)
2604 targType2cnt[1] = 0;
2612 for (int i = 0;i < 64;i++) {
2613 if(!MS.EGCdark.etValue2[i]) break;
2614 NSArray *array1 = [MS.EGCdark.etValue2[i] componentsSeparatedByString:@"["];
2615 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
2617 int Tx = [[array2 objectAtIndex:0] intValue];
2618 int Ty = [[array2 objectAtIndex:1] intValue];
2620 if(MS.EGCdark.endType2 == 3){
2623 if(U->x == Tx && U->y == Ty){
2624 U->targType1D = true;
2625 if(targType1cnt[1] < 0)
2626 targType1cnt[1] = 0;
2633 if(MS.EGCdark.endType2 == 4){
2636 if(U->x == Tx && U->y == Ty){
2637 U->targType2D = true;
2638 if(targType2cnt[1] < 0)
2639 targType2cnt[1] = 0;
2655 -(bool)setBuildList{
2657 [self willChangeValueForKey:@"CResearchListMA"];
2658 [CResearchListMA removeAllObjects];
2659 [self didChangeValueForKey:@"CResearchListMA"];
2665 while (B && B->x != possionX && B->y != possionY) {
2668 B0 = &BC[buildNum[possionX][possionY]];
2682 if(B->makeLv >= B0->R->Lv){
2683 NSMutableDictionary* dict = [NSMutableDictionary new];
2684 [dict setValue:[NSString stringWithFormat:@"%@", BU->nameClass] forKey:@"name"];
2685 [dict setValue:[NSString stringWithFormat:@"%g", BU->S_M.HP] forKey:@"HP"];
2686 [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d", BU->S_M.cSupply, BU->S_M.cFood, BU->S_M.cMoney] forKey:@"cost"];
2687 [dict setValue:BU->img forKey:@"img"];
2690 [self willChangeValueForKey:@"CResearchListMA"];
2691 [CResearchListMA addObject:dict];
2692 [self didChangeValueForKey:@"CResearchListMA"];
2694 B0->R = B0->R->next;
2702 B = &BC[buildNum[possionX][possionY]];
2710 for(int i = 0;i <= crCRL;i++){
2713 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", BU->S_M.ATK]];
2714 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", BU->S_M.DEF]];
2715 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", BU->S_M.CAP]];
2716 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", BU->S_M.ACU]];
2717 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", BU->S_M.EVA]];
2718 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", BU->S_M.MOV]];
2719 [researchIMG setImage:BU->imgb];
2720 [researchIMG setImageScaling:NSScaleToFit];
2731 [self setCommandPanel];
2732 [menuPanel makeKeyAndOrderFront:nil];
2735 -(IBAction)pushMove:(id)sender{menuDisplayFlag = false;
2742 -(IBAction)pushAttack:(id)sender{menuDisplayFlag = false;
2746 windowPoint.x = [mapWindow frame].origin.x;
2747 windowPoint.y = [mapWindow frame].origin.y;
2748 [atkPanel setFrameOrigin:windowPoint];
2751 while (!(AUN[1] == U->number)) {
2755 if(U->chipNumberL >= 0){
2757 [self initCAttackList2];
2758 [self initCAttackSelect2];
2760 else if(U->chipNumber >= 0) {
2762 [self initCAttackList];
2763 [self initCAttackSelect];
2766 [atkPanel makeKeyAndOrderFront:nil];
2768 -(IBAction)pushStandby:(id)sender{menuDisplayFlag = false;
2772 while (U->number != wtUnitNum) {
2776 if(!wtMovedFlag && !wtAttackedFlag){
2777 U->C.S_C.WT = floor(U->C.S_M.WT/4 + 0.5);
2778 }else if(wtMovedFlag && wtAttackedFlag){
2779 U->C.S_C.WT = floor(U->C.S_M.WT + 0.5);
2780 }else if(wtMovedFlag){
2781 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
2782 }else if(wtAttackedFlag){
2783 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
2788 if(B->x == possionX && B->y == possionY && B->C.capture){
2789 buildCaptureFlag = true;
2790 unitMoveEndFlag = true;
2798 pushStanbyFlag = true;
2799 pussyLoopFlag = false;
2802 -(IBAction)pushCreate:(id)sender{menuDisplayFlag = false;
2807 windowPoint.x = [mapWindow frame].origin.x;
2808 windowPoint.y = [mapWindow frame].origin.y;
2809 [createPanel setFrameOrigin:windowPoint];
2811 [self initBCreateList];
2812 [createPanel makeKeyAndOrderFront:nil];
2815 -(IBAction)pushSummon:(id)sender{menuDisplayFlag = false;
2820 windowPoint.x = [mapWindow frame].origin.x;
2821 windowPoint.y = [mapWindow frame].origin.y;
2822 [summonPanel setFrameOrigin:windowPoint];
2824 [self initCSummonList];
2825 [summonPanel makeKeyAndOrderFront:nil];
2830 -(void)initStatusWindow{
2834 [STIV setImage:Uselected->C.imgb];
2835 [STnameTF setStringValue:Uselected->C.name];
2836 [STclassTF setStringValue:Uselected->C.nameClass];
2837 [SThpTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", Uselected->C.S_C.HP, Uselected->C.S_M.HP]];
2838 [STmpTF setStringValue:[NSString stringWithFormat:@"MP %g/%g", Uselected->C.S_C.MP, Uselected->C.S_M.MP]];
2839 [STatkTF setStringValue:[NSString stringWithFormat:@"ATK %g", Uselected->C.S_C.ATK]];
2840 [STdefTF setStringValue:[NSString stringWithFormat:@"DEF %g", Uselected->C.S_C.DEF]];
2841 [STcapTF setStringValue:[NSString stringWithFormat:@"CAP %g", Uselected->C.S_C.CAP]];
2842 [STacuTF setStringValue:[NSString stringWithFormat:@"ACU %g", Uselected->C.S_C.ACU]];
2843 [STevaTF setStringValue:[NSString stringWithFormat:@"EVA %g", Uselected->C.S_C.EVA]];
2844 [STstrTF setStringValue:[NSString stringWithFormat:@"STR %g", Uselected->C.S_C.STR]];
2845 [STvitTF setStringValue:[NSString stringWithFormat:@"VIT %g", Uselected->C.S_C.VIT]];
2846 [STagiTF setStringValue:[NSString stringWithFormat:@"AGI %g", Uselected->C.S_C.AGI]];
2847 [STdexTF setStringValue:[NSString stringWithFormat:@"DEX %g", Uselected->C.S_C.DEX]];
2848 [STmenTF setStringValue:[NSString stringWithFormat:@"MEN %g", Uselected->C.S_C.MEN]];
2849 [STintTF setStringValue:[NSString stringWithFormat:@"INT %g", Uselected->C.S_C.INT]];
2850 [STmelTF setStringValue:[NSString stringWithFormat:@"MEL %g", Uselected->C.S_C.MEL]];
2851 [STmisTF setStringValue:[NSString stringWithFormat:@"MIS %g", Uselected->C.S_C.MIS]];
2852 [SThitTF setStringValue:[NSString stringWithFormat:@"HIT %g", Uselected->C.S_C.HIT]];
2853 [STdodTF setStringValue:[NSString stringWithFormat:@"DOD %g", Uselected->C.S_C.DOD]];
2854 [STreaTF setStringValue:[NSString stringWithFormat:@"REA %g", Uselected->C.S_C.REA]];
2855 [STskiTF setStringValue:[NSString stringWithFormat:@"SKI %g", Uselected->C.S_C.SKI]];
2856 [STvigTF setStringValue:[NSString stringWithFormat:@"VIG %d", Uselected->C.S_C.vigor]];
2867 -(IBAction)pushStatus:(id)sender{menuDisplayFlag = false;
2869 [self initStatusWindow];
2871 windowPoint.x = [mapWindow frame].origin.x;
2872 windowPoint.y = [mapWindow frame].origin.y;
2873 [STwindow setFrameOrigin:windowPoint];
2874 [STwindow makeKeyAndOrderFront:nil];
2881 -(IBAction)STsubmit:(id)sender{
2886 -(IBAction)pushCancel:(id)sender{menuDisplayFlag = false;
2892 -(IBAction)pushCancelCAL:(id)sender{
2897 -(IBAction)pushCancelBCL:(id)sender{
2899 [createPanel close];
2902 -(IBAction)pushCancelCSL:(id)sender{
2904 [summonPanel close];
2907 -(void)addBuildStatus{
2912 while (B->next) {omgCnt++;
2916 B = calloc(1, sizeof(BUILD));
2920 B->next = calloc(1, sizeof(BUILD));
2924 B->number = registerNumB;
2927 B->chipNumber = BC[buildNum[possionX][possionY]].chipNumb;
2930 B->C = BC[buildNum[possionX][possionY]];
2931 B->img = [BC[buildNum[possionX][possionY]].img retain];
2932 unitColorInitFlag = true;
2934 if(buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1){
2936 if(unitTeam[possionX][possionY] == 0){
2937 U->joinArmyFromNext = true;
2938 U->persuasion = true;
2941 if(buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3){
2944 if(buildTeam[possionX][possionY] == 4 || buildTeam[possionX][possionY] == 5){
2947 if(buildTeam[possionX][possionY] == -1){
2957 -(void)addUnitStatus{
2960 while (U->next) {omgCnt++;
2963 U->next = calloc(1, sizeof(UNIT));
2966 if(omgCnt == 0) UTop = U;
2967 U->number = registerNum;
2969 for(int i = 0;i < UCN;i++){
2970 if([U->C.nameID isEqualToString:UC[i].nameID])
2974 U->chipNumber = unitNum[possionX][possionY];
2975 U->chipNumberL = loadNum[possionX][possionY];
2976 U->C.chipNumb = unitNum[possionX][possionY];
2977 U->CL.chipNumb = loadNum[possionX][possionY];
2981 if(unitTeam[possionX][possionY] == 0 || unitTeam[possionX][possionY] == 1){
2983 if(unitTeam[possionX][possionY] == 1){
2984 U->joinArmyFromNext = true;
2985 U->persuasion = true;
2988 if(MF[MFselectedRow+1].MS.playerSet1 == 2){
2992 if(unitTeam[possionX][possionY] == 2 || unitTeam[possionX][possionY] == 3){
2994 if(unitTeam[possionX][possionY] == 3){
2995 U->joinArmyFromNext = true;
2996 U->persuasion = true;
2999 if(MF[MFselectedRow+1].MS.playerSet2 == 2){
3003 if(unitTeam[possionX][possionY] == 4 || unitTeam[possionX][possionY] == 5){
3005 if(unitTeam[possionX][possionY] == 5){
3006 U->joinArmyFromNext = true;
3007 U->persuasion = true;
3011 if(unitTeam[possionX][possionY] == -1){
3013 if(unitTeam[possionX][possionY] == 0){
3014 U->joinArmyFromNext = false;
3015 U->persuasion = true;
3021 [self SetUnitStatus:unitNum[possionX][possionY]];
3026 -(void)addSummonStatus{
3030 while (U->next) {omgCnt++;
3033 U->next = calloc(1, sizeof(UNIT));
3036 if(omgCnt == 0) UTop = U;
3043 if(unitTeam[CSLU->x][CSLU->y] == 0 || unitTeam[CSLU->x][CSLU->y] == 1){
3045 if(unitTeam[CSLU->x][CSLU->y] == 1){
3046 U->joinArmyFromNext = true;
3047 U->persuasion = true;
3050 if(unitTeam[CSLU->x][CSLU->y] == 2 || unitTeam[CSLU->x][CSLU->y] == 3){
3052 if(unitTeam[CSLU->x][CSLU->y] == 3){
3053 U->joinArmyFromNext = true;
3054 U->persuasion = true;
3057 if(unitTeam[CSLU->x][CSLU->y] == 4 || unitTeam[CSLU->x][CSLU->y] == 5){
3059 if(unitTeam[CSLU->x][CSLU->y] == 5){
3060 U->joinArmyFromNext = true;
3061 U->persuasion = true;
3064 if(unitTeam[CSLU->x][CSLU->y] == -1){
3066 if(unitTeam[CSLU->x][CSLU->y] == 0){
3067 U->joinArmyFromNext = false;
3068 U->persuasion = true;
3072 [self SetUnitStatus:unitNum[possionX][possionY]];
3074 for(int i = 0;i < UCN;i++){
3075 if([U->C.nameID isEqualToString:UC[i].nameID])
3078 for(int i = 0;i < LCN;i++){
3079 if([U->CL.nameID isEqualToString:LC[i].nameID])
3082 for(int i = 0;i < UCN;i++){
3083 if([U->C.nameID isEqualToString:UC[i].nameID])
3086 for(int i = 0;i < LCN;i++){
3087 if([U->CL.nameID isEqualToString:LC[i].nameID])
3096 -(void)initUnitStatus{
3100 for(int i=1;i <= chipHeight;i++){
3101 for(int j=1;j<= chipWidth;j++){
3102 if(unitNum[j][i] >= 0 || loadNum[j][i] >= 0){
3103 if(registerNum == 1){
3104 U = calloc(1, sizeof(UNIT));
3111 U->number = registerNum;
3112 U->chipNumber = unitNum[j][i];
3113 U->chipNumberL = loadNum[j][i];
3114 U->C.chipNumb = U->chipNumber;
3115 U->CL.chipNumb = U->chipNumberL;
3118 if(unitTeam[j][i] == 0 || unitTeam[j][i] == 1){
3120 if(unitTeam[j][i] == 1){
3121 U->joinArmyFromNext = true;
3122 U->persuasion = true;
3124 if(MF[MFselectedRow+1].MS.playerSet1 == 2)
3127 if(unitTeam[j][i] == 2 || unitTeam[j][i] == 3){
3129 if(unitTeam[i][j] == 2){
3130 U->joinArmyFromNext = true;
3131 U->persuasion = true;
3133 if(MF[MFselectedRow+1].MS.playerSet2 == 2)
3136 if(unitTeam[j][i] == 4 || unitTeam[j][i] == 5){
3138 if(unitTeam[j][i] == 5){
3139 U->joinArmyFromNext = true;
3140 U->persuasion = true;
3144 if(unitTeam[j][i] == -1){
3146 if(unitTeam[j][i] == -1){
3147 U->joinArmyFromNext = false;
3148 U->persuasion = true;
3152 if(unitNum[j][i] >= 0) [self SetUnitStatus:unitNum[j][i]];
3153 if(loadNum[j][i] >= 0) [self SetUnitStatus2:loadNum[j][i]];
3155 U->next = calloc(1, sizeof(UNIT));
3166 if(Ucrnt->x == U->x && Ucrnt->y == U->y){
3178 if(U) U->next = NULL;
3183 -(void)initBuildStatus{
3187 for(int i=1;i <= chipHeight;i++){
3188 for(int j=1;j<= chipWidth;j++){
3189 if(buildNum[j][i] >= 0){
3190 if(registerNumB == 1){
3191 B = calloc(1, sizeof(BUILD));
3194 if(registerNumB > 1)
3198 B->number = registerNumB;
3199 B->chipNumber = buildNum[j][i];
3202 if(buildTeam[j][i] == 0 || buildTeam[j][i] == 1){
3206 if(buildTeam[j][i] == 2 || buildTeam[j][i] == 3){
3210 if(buildTeam[j][i] == 4 || buildTeam[j][i] == 5){
3214 if(buildTeam[j][i] == -1){
3218 //[self SetUnitStatus:unitNum[j][i]];
3220 B->C = BC[buildNum[j][i]];
3222 B->next = calloc(1, sizeof(BUILD));
3228 if(B) B->next = NULL;
3233 -(void)SetUnitStatus:(int)UN{
3236 U->C.S_C.vigor = 100;
3243 AtopE1 = UC[UN].eHandL.A;
3244 AtopE2 = UC[UN].eHandR.A;
3245 U->C.A = calloc(1, sizeof(ATTACK));
3251 while(UC[UN].eHandR.A != NULL){ow1 = true;
3252 *U->C.A = *UC[UN].eHandR.A;
3253 U->C.A->next = calloc(1, sizeof(ATTACK));
3254 U->C.A->next->next = NULL;
3255 if(UC[UN].eHandR.A->next != NULL) U->C.A = U->C.A->next;
3256 UC[UN].eHandR.A = UC[UN].eHandR.A->next;
3257 U->C.attackListNum++;
3259 UC[UN].eHandR.A = AtopE2;
3263 U->C.A = U->C.A->next;
3266 while(UC[UN].eHandL.A != NULL){ow2 = true;
3267 *U->C.A = *UC[UN].eHandL.A;
3268 U->C.A->next = calloc(1, sizeof(ATTACK));
3269 U->C.A->next->next = NULL;
3270 if(UC[UN].eHandL.A->next != NULL) U->C.A = U->C.A->next;
3271 UC[UN].eHandL.A = UC[UN].eHandL.A->next;
3272 U->C.attackListNum++;
3274 UC[UN].eHandL.A = AtopE1;
3277 U->C.A = U->C.A->next;
3280 while(UC[UN].A != NULL){
3281 *U->C.A = *UC[UN].A;
3282 U->C.A->next = calloc(1, sizeof(ATTACK));
3283 U->C.A->next->next = NULL;
3284 if(UC[UN].A->next != NULL) U->C.A = U->C.A->next;
3285 UC[UN].A = UC[UN].A->next;
3287 U->C.A->next = NULL;
3290 if(U->C.A) if(!U->C.A->name)
3295 -(void)SetUnitStatus2:(int)UN{
3302 U->CL.A = calloc(1, sizeof(ATTACK));
3304 while(LC[UN].A != NULL){
3305 *U->CL.A = *LC[UN].A;
3306 U->CL.A->next = calloc(1, sizeof(ATTACK));
3307 U->CL.A->next->next = NULL;
3308 if(LC[UN].A->next != NULL) U->CL.A = U->CL.A->next;
3309 LC[UN].A = LC[UN].A->next;
3311 U->CL.A->next = NULL;
3318 -(void)initCAttackList2{
3321 CAttackListMA = [NSMutableArray new];
3323 [self willChangeValueForKey:@"CAttackListMA"];
3324 [CAttackListMA removeAllObjects];
3325 [self didChangeValueForKey:@"CAttackListMA"];
3328 if(!battleSet2PushedFlag){
3330 while (!(AUN[1] == U->number)) {
3334 for(int i = 0;i < U->CL.attackListNum;i++){
3336 NSMutableDictionary* dict = [NSMutableDictionary new];
3337 [dict setValue:[NSString stringWithFormat:@"%@", U->CL.A->name] forKey:@"name"];
3338 [dict setValue:[NSString stringWithFormat:@"%g", U->CL.A->totalD] forKey:@"atk"];
3339 if(U->CL.A->rangeA != U->CL.A->rangeB){
3340 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->CL.A->rangeA, U->CL.A->rangeB] forKey:@"range"];
3342 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->rangeA] forKey:@"range"];
3344 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->hitPercent] forKey:@"hit"];
3345 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
3347 [self willChangeValueForKey:@"CAttackListMA"];
3348 [CAttackListMA addObject:dict];
3349 [self didChangeValueForKey:@"CAttackListMA"];
3351 U->CL.A = U->CL.A->next;
3357 while (!(DUN[1] == U->number)) {
3361 for(int i = 0;i < U->CL.attackListNum;i++){
3364 U->CL.attackListNum = i;
3367 NSMutableDictionary* dict = [NSMutableDictionary new];
3368 [dict setValue:[NSString stringWithFormat:@"%@", U->CL.A->name] forKey:@"name"];
3369 [dict setValue:[NSString stringWithFormat:@"%g", U->CL.A->totalD] forKey:@"atk"];
3370 if(U->CL.A->rangeA != U->CL.A->rangeB){
3371 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->CL.A->rangeA, U->CL.A->rangeB] forKey:@"range"];
3373 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->rangeA] forKey:@"range"];
3375 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->hitPercent] forKey:@"hit"];
3376 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
3378 [self willChangeValueForKey:@"CAttackListMA"];
3379 [CAttackListMA addObject:dict];
3380 [self didChangeValueForKey:@"CAttackListMA"];
3382 U->CL.A = U->CL.A->next;
3390 [CAttackListAC setSelectionIndex:crCAL];
3392 [self initCAttackSelect2];
3399 -(void)initCAttackList{
3401 CAttackListMA = [NSMutableArray new];
3403 [self willChangeValueForKey:@"CAttackListMA"];
3404 [CAttackListMA removeAllObjects];
3405 [self didChangeValueForKey:@"CAttackListMA"];
3408 if(!battleSet2PushedFlag){
3410 while (!(AUN[1] == U->number)) {
3414 for(int i = 0;i < U->C.attackListNum;i++){
3416 U->C.attackListNum = i;
3419 NSMutableDictionary* dict = [NSMutableDictionary new];
3420 [dict setValue:[NSString stringWithFormat:@"%@", U->C.A->name] forKey:@"name"];
3421 [dict setValue:[NSString stringWithFormat:@"%g", U->C.A->totalD] forKey:@"atk"];
3422 if(U->C.A->rangeA != U->C.A->rangeB){
3423 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->C.A->rangeA, U->C.A->rangeB] forKey:@"range"];
3425 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->rangeA] forKey:@"range"];
3427 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->hitPercent] forKey:@"hit"];
3428 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
3430 [self willChangeValueForKey:@"CAttackListMA"];
3431 [CAttackListMA addObject:dict];
3432 [self didChangeValueForKey:@"CAttackListMA"];
3434 U->C.A = U->C.A->next;
3441 while (!(DUN[1] == U->number)) {
3445 for(int i = 0;i < U->C.attackListNum;i++){
3446 NSMutableDictionary* dict = [NSMutableDictionary new];
3447 [dict setValue:[NSString stringWithFormat:@"%@", U->C.A->name] forKey:@"name"];
3448 [dict setValue:[NSString stringWithFormat:@"%g", U->C.A->totalD] forKey:@"atk"];
3449 if(U->C.A->rangeA != U->C.A->rangeB){
3450 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->C.A->rangeA, U->C.A->rangeB] forKey:@"range"];
3452 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->rangeA] forKey:@"range"];
3454 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->hitPercent] forKey:@"hit"];
3455 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
3457 [self willChangeValueForKey:@"CAttackListMA"];
3458 [CAttackListMA addObject:dict];
3459 [self didChangeValueForKey:@"CAttackListMA"];
3461 U->C.A = U->C.A->next;
3469 [CAttackListAC setSelectionIndex:crCAL];
3471 [self initCAttackSelect];
3474 -(void)initBCreateList{
3475 BCreateListMA = [NSMutableArray new];
3477 [self willChangeValueForKey:@"BCreateListMA"];
3478 [BCreateListMA removeAllObjects];
3479 [self didChangeValueForKey:@"BCreateListMA"];
3480 buildSkillFlag = false;
3484 while (!(AUN[1] == U->number)) {
3492 while (U->C.S->type != 1 && U->C.S->next) {
3493 U->C.S = U->C.S->next;
3495 if(U->C.S->type != 1) {
3500 for(int i = 0;U->C.S->list[i] > 0;i++){
3501 NSMutableDictionary* dict = [NSMutableDictionary new];
3502 [dict setValue:[NSString stringWithFormat:@"%@", BC[U->C.S->list[i]-1].name] forKey:@"name"];
3503 [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d",
3504 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"];
3505 [dict setValue:BC[U->C.S->list[i]-1].img forKey:@"img"];
3507 [self willChangeValueForKey:@"BCreateListMA"];
3508 [BCreateListMA addObject:dict];
3509 [self didChangeValueForKey:@"BCreateListMA"];
3511 buildSkillFlag = true;
3517 -(void)initCSummonList{
3518 CSummonListMA = [NSMutableArray new];
3520 [self willChangeValueForKey:@"CSummonListMA"];
3521 [CSummonListMA removeAllObjects];
3522 [self didChangeValueForKey:@"CSummonListMA"];
3524 summonSkillFlag = false;
3528 while (!(AUN[1] == U->number)) {
3536 while (U->C.S->type != 2 && U->C.S->next) {
3537 U->C.S = U->C.S->next;
3539 if(U->C.S->type != 2) {
3544 for(int i = 0;U->C.S->list[i] > 0;i++){
3545 NSMutableDictionary* dict = [NSMutableDictionary new];
3546 [dict setValue:[NSString stringWithFormat:@"%@", UC[U->C.S->list[i]-1].nameClass] forKey:@"name"];
3547 [dict setValue:[NSString stringWithFormat:@"%g", UC[U->C.S->list[i]-1].S_M.HP] forKey:@"HP"];
3548 [dict setValue:[NSString stringWithFormat:@"%g", U->C.S->cost[i]] forKey:@"cost"];
3549 [dict setValue:UC[U->C.S->list[i]-1].img forKey:@"img"];
3551 [self willChangeValueForKey:@"CSummonListMA"];
3552 [CSummonListMA addObject:dict];
3553 [self didChangeValueForKey:@"CSummonListMA"];
3555 summonSkillFlag = true;
3563 -(void)AttackDisplay{
3565 if(battleRdy) return;
3568 while (!(AUN[1] == U->number)) {
3571 [bplayer1 setImage:U->C.imgb];
3572 [bplayer1 setImageScaling:NSScaleToFit];
3573 [nplayer1 setStringValue:U->C.name];
3574 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
3575 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
3576 [iplayer1 setImage:MC[chipNum[U->x][U->y]].img];
3577 [mplayer1 setStringValue:MC[chipNum[U->x][U->y]].name];
3578 [rplayer1 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U->x][U->y]].dmgfix]];
3584 while (!(DUN[1] == U->number)) {
3587 [bplayer2 setImage:U->C.imgb];
3588 [bplayer1 setImageScaling:NSScaleToFit];
3589 [nplayer2 setStringValue:U->C.name];
3590 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
3591 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
3592 [iplayer2 setImage:MC[chipNum[U->x][U->y]].img];
3593 [mplayer2 setStringValue:MC[chipNum[U->x][U->y]].name];
3594 [rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U->x][U->y]].dmgfix]];
3597 [self AttackDisplay2];
3600 [battleDialog setStringValue:@"攻撃開始!"];
3606 -(void)AttackDisplay2{
3610 while (!(DUN[1] == U->number)) {
3615 while (!(AUN[1] == U->number)) {
3620 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){U = UTop;
3623 while (!(AUN[1] == U->number)) {
3626 [bplayer1 setImage:U->CL.imgb];
3627 [bplayer1 setImageScaling:NSScaleToFit];
3628 [nplayer1 setStringValue:U->CL.name];
3629 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
3630 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
3636 while (!(DUN[1] == U->number)) {
3639 [bplayer2 setImage:U->CL.imgb];
3640 [bplayer1 setImageScaling:NSScaleToFit];
3641 [nplayer2 setStringValue:U->CL.name];
3642 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
3643 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
3647 }else if(U->chipNumberL >= 0 && U2->chipNumberL < 0){U = UTop;
3649 while (!(AUN[1] == U->number)) {
3652 [bplayer1 setImage:U->CL.imgb];
3653 [bplayer1 setImageScaling:NSScaleToFit];
3654 [nplayer1 setStringValue:U->CL.name];
3655 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
3656 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
3662 while (!(DUN[1] == U->number)) {
3665 [bplayer2 setImage:U->C.imgb];
3666 [bplayer1 setImageScaling:NSScaleToFit];
3667 [nplayer2 setStringValue:U->C.name];
3668 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
3669 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
3675 }else if(U->chipNumberL < 0 && U2->chipNumberL >= 0){U = UTop;
3677 while (!(AUN[1] == U->number)) {
3680 [bplayer1 setImage:U->C.imgb];
3681 [bplayer1 setImageScaling:NSScaleToFit];
3682 [nplayer1 setStringValue:U->C.name];
3683 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
3684 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
3690 while (!(DUN[1] == U->number)) {
3693 [bplayer2 setImage:U->CL.imgb];
3694 [bplayer1 setImageScaling:NSScaleToFit];
3695 [nplayer2 setStringValue:U->CL.name];
3696 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
3697 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
3705 -(void)setBattlePanel{
3709 while (!(DUN[1] == U->number)) {
3714 while (!(AUN[1] == U->number)) {
3718 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){
3720 [self setBattlePanelT2];
3722 }else if(U->chipNumberL >= 0 && U2->chipNumberL <= 0){
3724 [self setBattlePanelT3];
3726 }else if(U->chipNumberL <= 0 && U2->chipNumberL >= 0){
3728 [self setBattlePanelT4];
3733 while (!(AUN[1] == U->number)) {
3737 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 || MF[MFselectedRow+1].MS.playerSet2 == 2)){
3738 cpuModeBATTLEflag = false;
3744 ATTACK *aTop2 = U->C.A;
3756 double urSupposedToGet;
3758 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
3762 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
3765 double oopsIsRight = 0;
3769 oopsIsRight = U->C.S_C.MEL;
3771 oopsIsRight = U->C.S_C.MIS;
3773 oopsIsRight = oopsIsRight/100;
3775 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
3777 if(!U2->C.aura && U->C.A->D){
3778 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
3779 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
3780 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
3781 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
3782 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
3783 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
3784 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
3785 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
3786 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
3787 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
3788 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
3789 }else if(U->C.A->D){
3790 double val = val = 1/log(3+U2->C.S_C.MP/64);
3791 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
3792 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
3793 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
3794 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
3795 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
3796 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
3797 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
3798 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
3799 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
3800 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
3801 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
3803 double val2 = log(3+U2->C.S_C.MP/64);
3805 mostDmg2 = mostDmg2*val2;
3808 if(U->C.A->D->fix == 2){
3809 mostDmg2 = mostDmg2/2 + U->C.S_C.HIT/2;
3811 }else if(U->C.A->D->fix == 1){
3812 mostDmg2 = mostDmg2/2 + (U->C.S_C.ATK/2 + U->C.S_C.HIT)/2/2;
3814 }else if(U->C.A->D->fix == 0){
3815 mostDmg2 = mostDmg2/2 + U->C.S_C.ATK/2;
3819 costVIG = U->C.A->vigor;
3822 mostDmg2 = [self dmgResist:mostDmg2];
3824 //NSLog(@"crCAL1 %d", crCAL1);
3825 if(mostDmg2 < 0) mostDmg2 = 1;
3828 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){
3832 //mostDmg = U->C.A->totalD;
3836 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){
3837 //mostDmg = U->C.A->totalD;
3838 mostHit = U->C.A->hitPercent;
3841 U->C.A = U->C.A->next;
3846 for(int i = 0;i < mostNum;i++){
3847 U->C.A = U->C.A->next;
3849 if(U->C.A->extent == 0 && mostNum > 0 && !CPUmostDmgChoice){
3853 for(int i = 0;i < mostNum;i++){
3854 U->C.A = U->C.A->next;
3860 for(int i = 0;i < crCAL1;i++){
3861 U->C.A = U->C.A->next;
3865 CPUmostDmgChoice = false;
3868 mostNumSub = mostNum;
3871 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
3872 costVIG = U->C.A->vigor;
3874 if(U->C.A->rangeA <= unitBreak->atkRange && U->C.A->rangeB >= unitBreak->atkRange
3875 && mpCost <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
3885 while (!(AUN[1] == U->number)) {
3890 ATTACK *aTop = U->C.A;
3893 for(int i = 0;i < crCAL1;i++){
3894 U->C.A = U->C.A->next;
3897 //NSLog(@"%@", U->C.A->name);
3901 for (int i = 0;i < crCAL1;i++) {
3902 U->C.A = U->C.A->next;
3907 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
3908 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
3909 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
3910 //NSLog(@"crCAL1 %d", crCAL1);
3912 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
3915 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
3916 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
3917 double oops = U->C.S_C.HP/U->C.S_M.HP*100;
3918 [combatLHP1 setIntValue:(int)oops];
3919 oops = U->C.S_C.MP/U->C.S_M.MP*100;
3920 [combatLMP1 setIntValue:(int)oops];
3922 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
3923 //NSLog(@"mostNumSub %d crCAL1 %d", mostNumSub, crCAL1);
3924 hitFix = U->C.A->hitPercent;
3930 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
3931 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
3932 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
3933 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
3934 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
3935 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
3936 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
3939 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
3940 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
3941 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
3942 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
3943 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
3944 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
3945 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
3956 while (!(DUN[1] == U->number)) {
3960 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
3962 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
3965 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
3967 if(battleDod2Flag) hit = hit / 2;
3970 if(hit > 100) hit = 100;
3971 if(hit < 0) hit = 0;
3973 if(u2A->D->sort == 1){
3976 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
3977 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
3986 ATTACK *aTop2 = U->C.A;
3992 double urSupposedToGet;
3994 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
3997 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
3999 double oopsIsRight = 0;
4003 oopsIsRight = U->C.S_C.MEL;
4005 oopsIsRight = U->C.S_C.MIS;
4007 oopsIsRight = oopsIsRight/100;
4009 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
4011 if(!U2->C.aura && U->C.A->D){
4012 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
4013 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4014 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
4015 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4016 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
4017 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4018 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
4019 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4020 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
4021 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
4022 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
4023 }else if(U->C.A->D){
4024 double val = val = 1/log(3+U2->C.S_C.MP/64);
4025 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
4026 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
4027 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
4028 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
4029 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
4030 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
4031 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
4032 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
4033 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
4034 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
4035 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
4037 double val2 = log(3+U2->C.S_C.MP/64);
4039 mostDmg2 = mostDmg2*val2;
4042 if(U->C.A->D->fix == 2){
4043 mostDmg2 = mostDmg2/2 + U->C.S_C.HIT/2;
4045 }else if(U->C.A->D->fix == 1){
4046 mostDmg2 = mostDmg2/2 + (U->C.S_C.ATK/2 + U->C.S_C.HIT)/2/2;
4048 }else if(U->C.A->D->fix == 0){
4049 mostDmg2 = mostDmg2/2 + U->C.S_C.ATK/2;
4055 mostDmg2 = [self dmgResist:mostDmg2];
4058 costVIG = U->C.A->vigor;
4061 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){
4065 //mostDmg = U->C.A->totalD;
4069 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){
4070 //mostDmg = U->C.A->totalD;
4071 mostHit = U->C.A->hitPercent;
4074 U->C.A = U->C.A->next;
4082 mostNumSub = mostNum;
4084 for(int i = 0;i < mostNum;i++){
4085 U->C.A = U->C.A->next;
4087 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
4090 costVIG = U->C.A->vigor;
4093 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){
4095 }else while(U->C.A){
4096 U->C.A = U->C.A->next;
4105 //NSLog(@"%@", U->C.name);
4106 for (int i = 0;i < crCAL2;i++) {
4107 U->C.A = U->C.A->next;
4112 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
4113 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4114 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
4115 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4116 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4117 double oops2 = U->C.S_C.HP/U->C.S_M.HP*100;
4118 [combatLHP2 setIntValue:(int)oops2];
4119 oops2 = U->C.S_C.MP/U->C.S_M.MP*100;
4120 [combatLMP2 setIntValue:(int)oops2];
4125 mpCost2 = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
4126 costVIG = U->C.A->vigor;
4129 if(U->C.A && U->C.A->D){
4130 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){
4131 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
4132 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
4133 hitFix = U->C.A->hitPercent;
4135 }else if(u2A->D->sort == 1 || !U->C.A || U->C.A->D->sort == 1){
4136 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
4139 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
4145 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
4146 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4147 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
4148 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4149 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
4150 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4151 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4155 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
4156 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4157 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
4158 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4159 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
4160 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4161 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4165 while (!(DUN[1] == U->number)) {
4171 while (!(AUN[1] == U->number)) {
4177 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
4180 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
4183 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
4184 if(battleDod1Flag) hit /= 2;
4187 if(hit > 100) hit = 100;
4188 if(hit < 0) hit = 0;
4190 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
4191 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4194 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4199 if(CPUAttackSubmitFlag){
4200 if(unitCPUAttackFlag){
4201 [battleCancelBtn setEnabled:NO];
4202 [battleCancelBtn setTransparent:YES];
4204 [battleCancelBtn setEnabled:YES];
4205 [battleCancelBtn setTransparent:NO];
4210 while (!(AUN[1] == U->number)) {
4215 [battleAttackBtn1 setEnabled:NO];
4216 [battleAttackBtn1 setTransparent:YES];
4217 [battleGuardBtn1 setEnabled:NO];
4218 [battleGuardBtn1 setTransparent:YES];
4219 [battleDodgeBtn1 setEnabled:NO];
4220 [battleDodgeBtn1 setTransparent:YES];
4222 [battleAttackBtn1 setEnabled:YES];
4223 [battleAttackBtn1 setTransparent:NO];
4224 [battleGuardBtn1 setEnabled:YES];
4225 [battleGuardBtn1 setTransparent:NO];
4226 [battleDodgeBtn1 setEnabled:YES];
4227 [battleDodgeBtn1 setTransparent:NO];
4231 while (!(DUN[1] == U->number)) {
4235 [battleAttackBtn2 setEnabled:NO];
4236 [battleAttackBtn2 setTransparent:YES];
4237 [battleGuardBtn2 setEnabled:NO];
4238 [battleGuardBtn2 setTransparent:YES];
4239 [battleDodgeBtn2 setEnabled:NO];
4240 [battleDodgeBtn2 setTransparent:YES];
4242 [battleAttackBtn2 setEnabled:YES];
4243 [battleAttackBtn2 setTransparent:NO];
4244 [battleGuardBtn2 setEnabled:YES];
4245 [battleGuardBtn2 setTransparent:NO];
4246 [battleDodgeBtn2 setEnabled:YES];
4247 [battleDodgeBtn2 setTransparent:NO];
4254 for (int i = 1; i < DUN[1]; i++) {
4260 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4261 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
4263 [battleStartBtn setEnabled:NO];
4264 [battleStartBtn setTransparent:YES];
4266 [battleStartBtn setEnabled:YES];
4267 [battleStartBtn setTransparent:NO];
4272 avPlayerFlag1 = false;
4273 avPlayerFlag2 = false;
4276 -(void)setBattlePanelT2{
4280 ATTACK *aTop2 = U->CL.A;
4281 while (!(AUN[1] == U->number)) {
4285 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 || MF[MFselectedRow+1].MS.playerSet2 == 2)){
4286 cpuModeBATTLEflag = false;
4293 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
4294 costVIG = U->C.A->vigor;
4295 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){
4296 mostDmg = U->CL.A->totalD;
4299 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){
4300 //mostDmg = U->C.A->totalD;
4301 mostHit = U->CL.A->hitPercent;
4304 U->CL.A = U->CL.A->next;
4309 for(int i = 0;i < crCAL1;i++){
4310 U->CL.A = U->CL.A->next;
4313 ATTACK *ua = U->CL.A;
4317 mostNumSub = mostNum;
4321 for(int i = 0;i < mostNum;i++){
4322 U->C.A = U->CL.A->next;
4324 if(U->CL.A->extent == 0){
4328 for(int i = 0;i < mostNum;i++){
4329 U->CL.A = U->CL.A->next;
4335 for(int i = 0;i < crCAL1;i++){
4336 U->CL.A = U->CL.A->next;
4344 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
4345 costVIG = U->C.A->vigor;
4348 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){
4350 }else while(U->CL.A){
4351 U->CL.A = U->CL.A->next;
4358 while (!(AUN[1] == U->number)) {
4363 ATTACK *aTop = U->CL.A;
4369 for(int i = 0;i < crCAL1;i++){
4370 U->CL.A = U->CL.A->next;
4377 for (int i = 0;i < crCAL1;i++) {
4378 U->CL.A = U->CL.A->next;
4383 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
4384 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4385 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
4386 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
4387 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4388 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4389 double oops = U->CL.S_C.HP/U->CL.S_M.HP*100;
4390 [combatLHP1 setIntValue:(int)oops];
4391 oops = U->CL.S_C.EN/U->CL.S_M.EN*100;
4392 [combatLMP1 setIntValue:(int)oops];
4394 hit = U->CL.S_C.MOB + U->C.S_C.HIT*U->C.S_C.HP/U->C.S_M.HP;
4395 hitFix = U->CL.A->hitPercent;
4401 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
4402 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4403 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
4404 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
4405 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4406 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4407 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4410 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
4411 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4412 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
4413 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
4414 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4415 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4416 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4427 while (!(DUN[1] == U->number)) {
4431 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;
4432 if(battleDod2Flag) hit = hit / 2;
4435 if(hit > 100) hit = 100;
4436 if(hit < 0) hit = 0;
4438 if(u2A->D->sort == 1){
4441 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
4442 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4450 costVIG = U->C.A->vigor;
4452 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
4453 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){
4454 mostDmg = U->CL.A->totalD;
4457 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){
4458 //mostDmg = U->C.A->totalD;
4459 mostHit = U->CL.A->hitPercent;
4462 U->CL.A = U->CL.A->next;
4468 mostNumSub = mostNum;
4471 for(int i = 0;i < mostNum;i++){
4472 U->CL.A = U->CL.A->next;
4479 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
4480 costVIG = U->C.A->vigor;
4483 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){
4485 }else while(U->CL.A){
4486 U->CL.A = U->CL.A->next;
4496 for (int i = 0;i < crCAL2;i++) {
4497 U->CL.A = U->CL.A->next;
4503 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
4504 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4505 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
4506 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4507 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4508 double oops2 = U->CL.S_C.HP/U->CL.S_M.HP*100;
4509 [combatLHP2 setIntValue:(int)oops2];
4510 oops2 = U->CL.S_C.EN/U->CL.S_M.EN*100;
4511 [combatLMP2 setIntValue:(int)oops2];
4515 if(U->CL.A && U->CL.A->D){
4519 mpCost2 = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
4522 if(U->CL.A && !(u2A->D->sort == 1) && U->CL.A->D->sort != 1 && mpCost2 <= U->CL.S_C.EN){
4523 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
4524 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
4525 hitFix = U->CL.A->hitPercent;
4527 }else if(u2A->D->sort == 1 || !U->CL.A || U->CL.A->D->sort == 1){
4528 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
4532 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
4535 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
4540 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
4541 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4542 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
4543 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4544 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
4545 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4546 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4550 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
4551 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4552 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
4553 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4554 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
4555 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4556 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4560 while (!(AUN[1] == U->number)) {
4565 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;
4566 if(battleDod1Flag) hit /= 2;
4569 if(hit > 100) hit = 100;
4570 if(hit < 0) hit = 0;
4572 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
4573 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4576 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4580 while (!(AUN[1] == U->number)) {
4585 [battleAttackBtn1 setEnabled:NO];
4586 [battleAttackBtn1 setTransparent:YES];
4587 [battleGuardBtn1 setEnabled:NO];
4588 [battleGuardBtn1 setTransparent:YES];
4589 [battleDodgeBtn1 setEnabled:NO];
4590 [battleDodgeBtn1 setTransparent:YES];
4592 [battleAttackBtn1 setEnabled:YES];
4593 [battleAttackBtn1 setTransparent:NO];
4594 [battleGuardBtn1 setEnabled:YES];
4595 [battleGuardBtn1 setTransparent:NO];
4596 [battleDodgeBtn1 setEnabled:YES];
4597 [battleDodgeBtn1 setTransparent:NO];
4601 while (!(DUN[1] == U->number)) {
4605 [battleAttackBtn2 setEnabled:NO];
4606 [battleAttackBtn2 setTransparent:YES];
4607 [battleGuardBtn2 setEnabled:NO];
4608 [battleGuardBtn2 setTransparent:YES];
4609 [battleDodgeBtn2 setEnabled:NO];
4610 [battleDodgeBtn2 setTransparent:YES];
4612 [battleAttackBtn2 setEnabled:YES];
4613 [battleAttackBtn2 setTransparent:NO];
4614 [battleGuardBtn2 setEnabled:YES];
4615 [battleGuardBtn2 setTransparent:NO];
4616 [battleDodgeBtn2 setEnabled:YES];
4617 [battleDodgeBtn2 setTransparent:NO];
4622 for (int i = 1; i < DUN[1]; i++) {
4627 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4628 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
4630 [battleStartBtn setEnabled:NO];
4631 [battleStartBtn setTransparent:YES];
4633 [battleStartBtn setEnabled:YES];
4634 [battleStartBtn setTransparent:NO];
4639 avPlayerFlag1 = false;
4640 avPlayerFlag2 = false;
4643 -(void)setBattlePanelT3{
4647 while (!(AUN[1] == U->number)) {
4651 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 &&MF[MFselectedRow+1].MS.playerSet2 == 2)){
4652 cpuModeBATTLEflag = false;
4657 ATTACK *aTop2 = U->C.A;
4660 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
4662 costVIG = U->C.A->vigor;
4664 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){
4665 mostDmg = U->C.A->totalD;
4669 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){
4670 //mostDmg = U->C.A->totalD;
4671 mostHit = U->C.A->hitPercent;
4674 U->C.A = U->C.A->next;
4679 for(int i = 0;i < crCAL1;i++){
4680 U->C.A = U->C.A->next;
4683 ATTACK *ua = U->C.A;
4687 mostNumSub = mostNum;
4690 for(int i = 0;i < mostNum;i++){
4691 U->C.A = U->C.A->next;
4693 if(U->C.A->extent == 0 && mostNum > 0){
4697 for(int i = 0;i < mostNum;i++){
4698 U->C.A = U->C.A->next;
4704 for(int i = 0;i < crCAL1;i++){
4705 U->C.A = U->C.A->next;
4708 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
4709 costVIG = U->C.A->vigor;
4712 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){
4721 while (!(AUN[1] == U->number)) {
4727 ATTACK *aTop = U->CL.A;
4733 for(int i = 0;i < crCAL1;i++){
4734 U->CL.A = U->CL.A->next;
4740 for (int i = 0;i < crCAL1;i++) {
4741 U->CL.A = U->CL.A->next;
4746 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
4747 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4748 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
4749 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
4750 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4751 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4752 double oops = U->CL.S_C.HP/U->CL.S_M.HP*100;
4753 [combatLHP1 setIntValue:(int)oops];
4754 oops = U->CL.S_C.EN/U->CL.S_M.EN*100;
4755 [combatLMP1 setIntValue:(int)oops];
4757 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
4758 hitFix = U->CL.A->hitPercent;
4764 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
4765 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4766 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
4767 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
4768 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4769 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4770 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4773 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
4774 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
4775 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
4776 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
4777 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4778 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4779 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4788 while (!(AUN[1] == U->number)) {
4794 while (!(DUN[1] == U->number)) {
4798 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
4800 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
4803 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
4804 if(battleDod2Flag) hit = hit / 2;
4807 if(hit > 100) hit = 100;
4808 if(hit < 0) hit = 0;
4810 if(u2A->D->sort == 1){
4813 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
4814 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4822 ATTACK *aTop2 = U->C.A;
4826 costVIG = U->C.A->vigor;
4828 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
4830 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){
4831 mostDmg = U->C.A->totalD;
4835 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){
4836 //mostDmg = U->C.A->totalD;
4837 mostHit = U->C.A->hitPercent;
4840 U->C.A = U->C.A->next;
4846 mostNumSub = mostNum;
4848 for(int i = 0;i < mostNum;i++){
4849 U->C.A = U->C.A->next;
4851 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
4852 costVIG = U->C.A->vigor;
4854 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){
4856 }else while(U->C.A){
4857 U->C.A = U->C.A->next;
4865 for (int i = 0;i < crCAL2;i++) {
4866 U->C.A = U->C.A->next;
4872 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
4873 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4874 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
4875 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4876 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4877 double oops2 = U->C.S_C.HP/U->C.S_M.HP*100;
4878 [combatLHP2 setIntValue:(int)oops2];
4879 oops2 = U->C.S_C.MP/U->C.S_M.MP*100;
4880 [combatLMP2 setIntValue:(int)oops2];
4885 mpCost2 = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
4886 costVIG = U->C.A->vigor;
4889 if(U->C.A &&U->C.A->D){
4890 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){
4891 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
4892 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
4893 hitFix = U->C.A->hitPercent;
4895 }else if(u2A->D->sort == 1 || !U->C.A || U->C.A->D->sort == 1){
4896 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
4898 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
4904 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
4905 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4906 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
4907 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4908 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
4909 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4910 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4914 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
4915 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
4916 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
4917 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
4918 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
4919 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
4920 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4924 while (!(AUN[1] == U->number)) {
4929 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;
4930 if(battleDod1Flag) hit /= 2;
4933 if(hit > 100) hit = 100;
4934 if(hit < 0) hit = 0;
4936 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
4937 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4940 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
4944 while (!(AUN[1] == U->number)) {
4949 [battleAttackBtn1 setEnabled:NO];
4950 [battleAttackBtn1 setTransparent:YES];
4951 [battleGuardBtn1 setEnabled:NO];
4952 [battleGuardBtn1 setTransparent:YES];
4953 [battleDodgeBtn1 setEnabled:NO];
4954 [battleDodgeBtn1 setTransparent:YES];
4956 [battleAttackBtn1 setEnabled:YES];
4957 [battleAttackBtn1 setTransparent:NO];
4958 [battleGuardBtn1 setEnabled:YES];
4959 [battleGuardBtn1 setTransparent:NO];
4960 [battleDodgeBtn1 setEnabled:YES];
4961 [battleDodgeBtn1 setTransparent:NO];
4965 while (!(DUN[1] == U->number)) {
4969 [battleAttackBtn2 setEnabled:NO];
4970 [battleAttackBtn2 setTransparent:YES];
4971 [battleGuardBtn2 setEnabled:NO];
4972 [battleGuardBtn2 setTransparent:YES];
4973 [battleDodgeBtn2 setEnabled:NO];
4974 [battleDodgeBtn2 setTransparent:YES];
4976 [battleAttackBtn2 setEnabled:YES];
4977 [battleAttackBtn2 setTransparent:NO];
4978 [battleGuardBtn2 setEnabled:YES];
4979 [battleGuardBtn2 setTransparent:NO];
4980 [battleDodgeBtn2 setEnabled:YES];
4981 [battleDodgeBtn2 setTransparent:NO];
4987 for (int i = 1; i < DUN[1]; i++) {
4991 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4992 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
4994 [battleStartBtn setEnabled:NO];
4995 [battleStartBtn setTransparent:YES];
4997 [battleStartBtn setEnabled:YES];
4998 [battleStartBtn setTransparent:NO];
5003 avPlayerFlag1 = false;
5004 avPlayerFlag2 = false;
5007 -(void)setBattlePanelT4{
5011 while (!(AUN[1] == U->number)) {
5015 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2)){
5016 cpuModeBATTLEflag = false;
5021 ATTACK *aTop2 = U->CL.A;
5024 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
5025 costVIG = U->C.A->vigor;
5026 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){
5027 mostDmg = U->CL.A->totalD;
5030 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){
5031 //mostDmg = U->C.A->totalD;
5032 mostHit = U->CL.A->hitPercent;
5035 U->CL.A = U->CL.A->next;
5039 mostNumSub = mostNum;
5042 for(int i = 0;i < mostNum;i++){
5043 U->CL.A = U->CL.A->next;
5045 if(U->CL.A->extent == 0){
5049 for(int i = 0;i < mostNum;i++){
5050 U->CL.A = U->CL.A->next;
5056 for(int i = 0;i < crCAL1;i++){
5057 U->CL.A = U->CL.A->next;
5060 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
5061 costVIG = U->C.A->vigor;
5062 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){
5064 }else while(U->CL.A){
5065 U->CL.A = U->CL.A->next;
5072 while (!(AUN[1] == U->number)) {
5077 ATTACK *aTop = U->C.A;
5083 for(int i = 0;i < crCAL1;i++){
5084 U->C.A = U->C.A->next;
5090 for (int i = 0;i < crCAL1;i++) {
5091 U->C.A = U->C.A->next;
5096 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
5097 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
5098 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
5099 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
5100 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5101 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5102 double oops = U->C.S_C.HP/U->C.S_M.HP*100;
5103 [combatLHP1 setIntValue:(int)oops];
5104 oops = U->C.S_C.MP/U->C.S_M.MP*100;
5105 [combatLMP1 setIntValue:(int)oops];
5107 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
5108 hitFix = U->C.A->hitPercent;
5114 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
5115 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
5116 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
5117 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
5118 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5119 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5120 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5123 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
5124 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
5125 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
5126 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
5127 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5128 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5129 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5140 while (!(DUN[1] == U->number)) {
5144 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;
5145 if(battleDod2Flag) hit = hit / 2;
5148 if(hit > 100) hit = 100;
5149 if(hit < 0) hit = 0;
5151 if(u2A->D->sort == 1){
5154 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
5155 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5163 ATTACK *aTop2 = U->CL.A;
5166 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
5167 costVIG = U->C.A->vigor;
5168 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){
5169 mostDmg = U->CL.A->totalD;
5172 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){
5173 //mostDmg = U->C.A->totalD;
5174 mostHit = U->CL.A->hitPercent;
5177 U->CL.A = U->CL.A->next;
5181 mostNumSub = mostNum;
5185 for(int i = 0;i < mostNum;i++){
5186 U->CL.A = U->CL.A->next;
5188 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
5189 costVIG = U->C.A->vigor;
5190 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){
5192 }else while(U->CL.A){
5193 U->CL.A = U->CL.A->next;
5201 for (int i = 0;i < crCAL2;i++) {
5202 U->CL.A = U->CL.A->next;
5208 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
5209 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
5210 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
5211 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5212 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5213 double oops2 = U->CL.S_C.HP/U->CL.S_M.HP*100;
5214 [combatLHP2 setIntValue:(int)oops2];
5215 oops2 = U->CL.S_C.EN/U->CL.S_M.EN*100;
5216 [combatLMP2 setIntValue:(int)oops2];
5221 mpCost2 = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
5224 if(U->CL.A && U->CL.A->D){
5225 if(U->CL.A && !(u2A->D->sort == 1) && U->CL.A->D->sort != 1 && mpCost2 <= U->CL.S_C.EN){
5226 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
5227 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
5228 hitFix = U->CL.A->hitPercent;
5230 }else if(u2A->D->sort == 1 || !U->CL.A || U->CL.A->D->sort == 1){
5231 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
5233 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
5239 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
5240 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
5241 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
5242 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5243 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
5244 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5245 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5249 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
5250 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
5251 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
5252 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
5253 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
5254 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
5255 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5260 while (!(DUN[1] == U->number)) {
5266 while (!(AUN[1] == U->number)) {
5272 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
5274 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
5277 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
5278 if(battleDod1Flag) hit /= 2;
5281 if(hit > 100) hit = 100;
5282 if(hit < 0) hit = 0;
5284 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
5285 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5288 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
5292 while (!(AUN[1] == U->number)) {
5297 [battleAttackBtn1 setEnabled:NO];
5298 [battleAttackBtn1 setTransparent:YES];
5299 [battleGuardBtn1 setEnabled:NO];
5300 [battleGuardBtn1 setTransparent:YES];
5301 [battleDodgeBtn1 setEnabled:NO];
5302 [battleDodgeBtn1 setTransparent:YES];
5304 [battleAttackBtn1 setEnabled:YES];
5305 [battleAttackBtn1 setTransparent:NO];
5306 [battleGuardBtn1 setEnabled:YES];
5307 [battleGuardBtn1 setTransparent:NO];
5308 [battleDodgeBtn1 setEnabled:YES];
5309 [battleDodgeBtn1 setTransparent:NO];
5313 while (!(DUN[1] == U->number)) {
5317 [battleAttackBtn2 setEnabled:NO];
5318 [battleAttackBtn2 setTransparent:YES];
5319 [battleGuardBtn2 setEnabled:NO];
5320 [battleGuardBtn2 setTransparent:YES];
5321 [battleDodgeBtn2 setEnabled:NO];
5322 [battleDodgeBtn2 setTransparent:YES];
5324 [battleAttackBtn2 setEnabled:YES];
5325 [battleAttackBtn2 setTransparent:NO];
5326 [battleGuardBtn2 setEnabled:YES];
5327 [battleGuardBtn2 setTransparent:NO];
5328 [battleDodgeBtn2 setEnabled:YES];
5329 [battleDodgeBtn2 setTransparent:NO];
5335 for (int i = 1; i < DUN[1]; i++) {
5339 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
5340 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
5342 [battleStartBtn setEnabled:NO];
5343 [battleStartBtn setTransparent:YES];
5345 [battleStartBtn setEnabled:YES];
5346 [battleStartBtn setTransparent:NO];
5351 avPlayerFlag1 = false;
5352 avPlayerFlag2 = false;
5355 -(void)DisplayMessage{
5360 if(AVpreview.rate > 0){
5361 [battleWindow setIgnoresMouseEvents:YES];
5362 [battleWindow makeKeyAndOrderFront:nil];
5363 //NSLog(@"%g", AVpreview.rate);
5366 [battleWindow setIgnoresMouseEvents:NO];
5367 //NSLog(@"%g", AVpreview.rate);
5371 [AVPV setHidden:YES];
5373 else if(avPlayerFlag2){
5374 [AVPV setHidden:YES];
5380 animationFlag1 = false;
5385 animationFlag2 = false;
5387 U->C.A = attackTop2;
5391 if(animationFlag1 || animationFlag2){
5396 double def2 = (double)31/32;
5397 NSString *message = @"";
5415 static bool extentbool = false;
5416 static bool extentbool2 = false;
5417 if(!extentbool && extentBattleFlag2){
5419 extentMPcostFlag = false;
5422 if(!extentBattleFlag2){
5426 switch (messageProcess) {
5428 if(bLoopFlag) break;
5430 [battleDialog setStringValue:@"攻撃開始!"];
5437 while (!(DUN[DUNnum] == U->number)) {
5443 while (!(AUN[1] == U->number)) {
5447 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){
5449 [self DisplayMessageMod1A];
5451 }else if(U->chipNumberL >= 0 && U2->chipNumberL < 0){
5453 [self DisplayMessageMod2A];
5455 }else if(U->chipNumberL < 0 && U2->chipNumberL >= 0){
5457 [self DisplayMessageMod3A];
5463 if(bLoopFlag) break;
5465 while (!(AUN[1] == U->number)) {
5468 ATTACK *aTop = U->C.A;
5470 for(int i = 0;i < crCAL1;i++){
5471 U->C.A = U->C.A->next;
5476 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
5479 [bplayer2 setImage:U2->C.imgb];
5480 [bplayer2 setImageScaling:NSScaleToFit];
5481 [nplayer2 setStringValue:U2->C.name];
5482 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U2->C.S_C.HP, U2->C.S_M.HP]];
5483 [lplayer2 setIntValue:U2->C.S_C.HP/U2->C.S_M.HP*100];
5484 [iplayer2 setImage:MC[chipNum[U2->x][U2->y]].img];
5485 [mplayer2 setStringValue:MC[chipNum[U2->x][U2->y]].name];
5486 [rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U2->x][U2->y]].dmgfix]];
5488 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){
5489 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
5491 NSString *path = @"data/AttackList/ALdata";
5493 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
5495 path = [path stringByAppendingFormat:@"/"];
5497 path = [path stringByAppendingString:U->C.A->AN.movName];
5499 NSData *AVData = [NSData dataWithContentsOfFile:path];
5502 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
5507 NSString *path = @"data/AttackList3/IALdata";
5509 path = [path stringByAppendingFormat:@"%dE", U->C.A->indexE];
5511 path = [path stringByAppendingFormat:@"/"];
5513 path = [path stringByAppendingString:U->C.A->AN.movName];
5516 NSData *AVData = [NSData dataWithContentsOfFile:path];
5519 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
5525 AVPV.player = [AVpreview retain];
5531 [AVPV setHidden:NO];
5533 [battleDialog setStringValue:message];
5535 avPlayerFlag1 = true;
5541 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->C.A->AN.ANI && !animationFlag3 && DUNnum == 1){
5543 [battleDialog setStringValue:message];
5544 animationFlag1 = true;
5551 double urSupposedToGet;
5553 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
5556 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
5560 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
5561 else oopsIsRight = U->C.S_C.MIS;
5563 oopsIsRight = oopsIsRight/100;
5565 if(!U2->C.aura && U->C.A->D){
5566 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
5567 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
5568 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
5569 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
5570 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
5571 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
5572 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
5573 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
5574 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
5575 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
5576 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
5577 }else if(U->C.A->D){
5578 val = 1/log(3+U2->C.S_C.MP/64);
5579 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
5580 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
5581 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
5582 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
5583 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
5584 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
5585 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
5586 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
5587 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
5588 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
5589 if(U->C.A->D->type == 5) dmg = U->C.A->totalD*val;
5591 double val2 = log(3+U2->C.S_C.MP/64);
5597 if(U->C.A->D->fix == 2){
5598 dmg = dmg/2 + U->C.S_C.HIT/2;
5600 }else if(U->C.A->D->fix == 1){
5601 dmg = dmg/2 + (U->C.S_C.ATK/2 + U->C.S_C.HIT)/2/2;
5603 }else if(U->C.A->D->fix == 0){
5604 dmg = dmg/2 + U->C.S_C.ATK/2;
5606 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
5608 if(extentMPcostFlag && extentBattleFlag2){
5611 U->C.S_C.MP -= costMP;
5612 extentMPcostFlag = true;
5615 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
5616 hitFix = U->C.A->hitPercent;
5622 while (!(AUN[1] == U->number)) {
5628 while (!(DUN[DUNnum] == U->number)) {
5632 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
5634 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
5637 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
5638 if(hit > 100) hit = 100;
5639 if(hit < 0) hit = 0;
5640 if(U2A->D->sort == 1){
5647 if(battleDod2Flag) wtf = 50;
5648 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
5650 if(U2A->D->sort == 0){
5651 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);
5652 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);
5653 NSLog(@"修正前のダメージ:%g", dmg);
5654 dmg = [self dmgResist:dmg];
5655 NSLog(@"属性後のダメージ:%g", dmg);
5656 def2 = pow(def2, U->C.S_C.DEF);
5657 int omfg = rand()%100;
5658 NSLog(@"ダメージ幅:%g〜%g", floor(dmg), floor(dmg + dmg/10));
5659 dmg = (dmg*omfg/100/10 + dmg);
5660 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
5661 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
5662 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
5664 if(U->C.S_C.typeMOVE == RIKU){
5665 if(U2A->riku == A) dmg = dmg*1.2;
5666 if(U2A->riku == B) dmg = dmg*1.0;
5667 if(U2A->riku == C) dmg = dmg*0.6;
5668 if(U2A->riku == D) dmg = dmg*0.2;
5669 if(U2A->riku == E) dmg = 0;
5670 if(U2A->riku == S) dmg = dmg*1.5;
5671 if(U2A->riku == SS) dmg = dmg*2.0;
5672 } if(U->C.S_C.typeMOVE == UMI &&
5673 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
5674 if(U2A->umi == A) dmg = dmg*1.2;
5675 if(U2A->umi == B) dmg = dmg*1.0;
5676 if(U2A->umi == C) dmg = dmg*0.6;
5677 if(U2A->umi == D) dmg = dmg*0.2;
5678 if(U2A->umi == E) dmg = 0;
5679 if(U2A->umi == S) dmg = dmg*1.5;
5680 if(U2A->umi == SS) dmg = dmg*2.0;
5681 }else if(U->C.S_C.typeMOVE == UMI){
5682 if(U2A->riku == A) dmg = dmg*1.2;
5683 if(U2A->riku == B) dmg = dmg*1.0;
5684 if(U2A->riku == C) dmg = dmg*0.6;
5685 if(U2A->riku == D) dmg = dmg*0.2;
5686 if(U2A->riku == E) dmg = 0;
5687 if(U2A->riku == S) dmg = dmg*1.5;
5688 if(U2A->riku == SS) dmg = dmg*2.0;
5690 } if(U->C.S_C.typeMOVE == CHU){
5691 if(U2A->chu == A) dmg = dmg*1.2;
5692 if(U2A->chu == B) dmg = dmg*1.0;
5693 if(U2A->chu == C) dmg = dmg*0.6;
5694 if(U2A->chu == D) dmg = dmg*0.2;
5695 if(U2A->chu == E) dmg = 0;
5696 if(U2A->chu == S) dmg = dmg*1.5;
5697 if(U2A->chu == SS) dmg = dmg*2.0;
5698 } if(U->C.S_C.typeMOVE == SORA){
5699 if(U2A->sora == A) dmg = dmg*1.2;
5700 if(U2A->sora == B) dmg = dmg*1.0;
5701 if(U2A->sora == C) dmg = dmg*0.6;
5702 if(U2A->sora == D) dmg = dmg*0.2;
5703 if(U2A->sora == E) dmg = 0;
5704 if(U2A->sora == S) dmg = dmg*1.5;
5705 if(U2A->sora == SS) dmg = dmg*2.0;
5708 NSLog(@"ユニットの地形適用後:%g", dmg);
5709 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
5710 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
5714 if(graze > omfg && !healFlag) {dmg = dmg/5;
5717 if(battleDef2Flag) dmg -= dmg*0.5;
5718 battleDef2Flag = false;
5720 if(dmg < 0) dmg = 0;
5724 }else if(U2A->D->sort == 1){
5725 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
5729 if(U->C.S_C.HP > U->C.S_M.HP) U->C.S_C.HP = U->C.S_M.HP;
5734 if(U->C.S_C.HP <= 0) {
5736 U2->C.S_C.vigor += 5;
5747 targType2Lflag = true;
5754 targType2Dflag = true;
5762 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
5763 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
5765 if(![U2A->msg isEqualToString:@""]){
5767 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
5768 [self originalMessage:U2A->msg subj:U2->C.name obje:U->C.name]]];
5772 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
5773 if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
5774 else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->C.name, dmg]];
5775 }else if(battleDef1Flag){
5779 while (!(AUN[1] == U->number)) {
5784 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
5787 }else if(battleDod1Flag){
5790 while (!(AUN[1] == U->number)) {
5794 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
5799 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
5802 [battleDialog setStringValue:message];
5809 if(!extentBattleFlag2){
5814 }else if(extentBattleFlag2){
5817 if(DUN[DUNnum] == -1){
5821 extentBattleFlag2 = false;
5823 extentMPcostFlag = false;
5827 avPlayerFlag1 = false;
5828 animationFlag3 = false;
5835 while (!(DUN[1] == U->number)) {
5840 while (!(AUN[1] == U->number)) {
5844 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){
5846 [self DisplayMessageMod1B];
5848 }else if(U->chipNumberL >= 0 && U2->chipNumberL < 0){
5850 [self DisplayMessageMod2B];
5852 }else if(U->chipNumberL < 0 && U2->chipNumberL >= 0){
5854 [self DisplayMessageMod3B];
5859 if(bLoopFlag) break;
5862 while (!(AUN[1] == U->number)) {
5869 while (!(DUN[1] == U->number)) {
5873 ATTACK *aTop2 = U->C.A;
5881 if(!U->C.A) goto SKIP3;
5885 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
5887 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
5890 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
5891 else oopsIsRight = U->C.S_C.MIS;
5893 oopsIsRight = oopsIsRight/100;
5896 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
5899 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
5900 if(!U2->C.aura && U->C.A->D){
5901 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
5902 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
5903 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
5904 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
5905 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
5906 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
5907 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
5908 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
5909 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
5910 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
5911 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
5912 }else if(U->C.A->D){
5913 val = 1/log(3+U2->C.S_C.MP/64);
5914 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
5915 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
5916 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
5917 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
5918 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
5919 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
5920 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
5921 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor)*asItIs*val;
5922 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
5923 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
5924 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
5926 double val2 = log(3+U2->C.S_C.MP/64);
5928 mostDmg2 = mostDmg2*val2;
5931 if(U->C.A->D->fix == 2){
5932 mostDmg2 = mostDmg2/2 + U->C.S_C.HIT/2;
5934 }else if(U->C.A->D->fix == 1){
5935 mostDmg2 = mostDmg2/2 + (U->C.S_C.ATK/2 + U->C.S_C.HIT)/2/2;
5936 }else if(U->C.A->D->fix == 0){
5937 mostDmg2 = mostDmg2/2 + U->C.S_C.ATK/2;
5943 mostDmg2 = [self dmgResist:mostDmg2];
5946 costVIG = U->C.A->vigor;
5948 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){
5954 //mostDmg = U->C.A->totalD;
5957 U->C.A = U->C.A->next;
5963 if(!battleSet2PushedFlag){
5964 for(int i = 0;i < mostNumSub;i++){
5965 U->C.A = U->C.A->next;
5969 for(int i = 0;i < crCAL2;i++){
5970 U->C.A = U->C.A->next;
5976 if(U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1){
5978 }else while(U->C.A){
5979 U->C.A = U->C.A->next;
5985 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
5990 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
5992 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL){
5993 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
5995 NSString *path = @"data/AttackList/ALdata";
5997 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
5999 path = [path stringByAppendingFormat:@"/"];
6001 path = [path stringByAppendingString:U->C.A->AN.movName];
6004 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
6007 AVPV.player = [AVpreview retain];
6012 [AVPV setControlsStyle:0];
6013 [AVPV setHidden:NO];
6015 [battleDialog setStringValue:message];
6017 avPlayerFlag2 = true;
6022 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->C.A->AN.ANI && !animationFlag3){
6025 animationFlag2 = true;
6035 if(U->C.A->D->type == 0) dmg = U->C.S_C.ATK + U->C.A->totalD;
6036 if(U->C.A->D->type == 1) dmg = U->C.S_C.DEF + U->C.A->totalD;
6037 if(U->C.A->D->type == 2) dmg = U->C.S_C.ACU + U->C.A->totalD;
6038 if(U->C.A->D->type == 3) dmg = U->C.S_C.EVA + U->C.A->totalD;
6039 if(U->C.A->D->type == 4) dmg = U->C.S_C.CAP + U->C.A->totalD;
6040 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
6045 while (!(AUN[1] == U->number)) {
6050 while (!(DUN[1] == U->number)) {
6053 NSString *string = [U2A->name retain];
6054 while (![U->C.A->name isEqualToString:string] && U->C.A) {
6055 U->C.A = U->C.A->next;
6058 if(!U->C.A) U->C.A = aTop2;
6060 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
6062 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
6065 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
6066 else oopsIsRight = U->C.S_C.MIS;
6068 oopsIsRight = oopsIsRight/100;
6071 if(!U2->C.aura && U->C.A->D){
6072 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
6073 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6074 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
6075 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6076 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
6077 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
6078 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
6079 - U2->C.S_C.ACU*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 == 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
6081 - U2->C.S_C.CAP*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 == 5) dmg = U->C.A->totalD;
6083 }else if(U->C.A->D){
6084 double val = val = 1/log(3+U2->C.S_C.MP/64);
6085 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
6086 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6087 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
6088 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6089 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
6090 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
6091 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
6092 - U2->C.S_C.ACU*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 == 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
6094 - U2->C.S_C.CAP*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 == 5) dmg = U->C.A->totalD*val;
6097 val2 = log(3+U2->C.S_C.MP/64);
6102 if(U->C.A->D->fix == 2){
6103 dmg = dmg/2 + U->C.S_C.HIT/2;
6105 }else if(U->C.A->D->fix == 1){
6106 dmg = dmg/2 + (U->C.S_C.ATK/2 + U->C.S_C.HIT)/2/2;
6108 }else if(U->C.A->D->fix == 0){
6109 dmg = dmg/2 + U->C.S_C.ATK/2;
6111 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
6112 U->C.S_C.MP -= costMP;
6114 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
6115 hitFix = U->C.A->hitPercent;
6122 while (!(DUN[1] == U->number)) {
6128 while (!(AUN[1] == U->number)) {
6132 hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
6134 hi = U->C.S_C.LUK - U2->C.S_C.LUK;
6137 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
6138 if(hit > 100) hit = 100;
6139 if(hit < 0) hit = 0;
6141 battleDod1Flag = false;
6144 while (!(DUN[1] == U->number)) {
6150 while (!(AUN[1] == U->number)) {
6155 if(battleDod1Flag) omg = 50;
6157 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
6158 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);
6159 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);
6160 NSLog(@"修正前のダメージ:%g", dmg);
6161 dmg = [self dmgResist:dmg];
6162 NSLog(@"属性後のダメージ:%g", dmg);
6163 def2 = pow(def2, U->C.S_C.DEF);
6164 int omfg = rand()%100;
6165 NSLog(@"ダメージ幅:%g〜%g", floor(dmg), floor(dmg + dmg/10));
6166 dmg = (dmg*omfg/100/10 + dmg);
6167 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
6168 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
6169 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
6171 if(U->C.S_C.typeMOVE == RIKU){
6172 if(U2A->riku == A) dmg = dmg*1.2;
6173 if(U2A->riku == B) dmg = dmg*1.0;
6174 if(U2A->riku == C) dmg = dmg*0.6;
6175 if(U2A->riku == D) dmg = dmg*0.2;
6176 if(U2A->riku == E) dmg = 0;
6177 if(U2A->riku == S) dmg = dmg*1.5;
6178 if(U2A->riku == SS) dmg = dmg*2.0;
6179 } if(U->C.S_C.typeMOVE == UMI &&
6180 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
6181 if(U2A->umi == A) dmg = dmg*1.2;
6182 if(U2A->umi == B) dmg = dmg*1.0;
6183 if(U2A->umi == C) dmg = dmg*0.6;
6184 if(U2A->umi == D) dmg = dmg*0.2;
6185 if(U2A->umi == E) dmg = 0;
6186 if(U2A->umi == S) dmg = dmg*1.5;
6187 if(U2A->umi == SS) dmg = dmg*2.0;
6188 }else if(U->C.S_C.typeMOVE == UMI){
6189 if(U2A->riku == A) dmg = dmg*1.2;
6190 if(U2A->riku == B) dmg = dmg*1.0;
6191 if(U2A->riku == C) dmg = dmg*0.6;
6192 if(U2A->riku == D) dmg = dmg*0.2;
6193 if(U2A->riku == E) dmg = 0;
6194 if(U2A->riku == S) dmg = dmg*1.5;
6195 if(U2A->riku == SS) dmg = dmg*2.0;
6197 } if(U->C.S_C.typeMOVE == CHU){
6198 if(U2A->chu == A) dmg = dmg*1.2;
6199 if(U2A->chu == B) dmg = dmg*1.0;
6200 if(U2A->chu == C) dmg = dmg*0.6;
6201 if(U2A->chu == D) dmg = dmg*0.2;
6202 if(U2A->chu == E) dmg = 0;
6203 if(U2A->chu == S) dmg = dmg*1.5;
6204 if(U2A->chu == SS) dmg = dmg*2.0;
6205 } if(U->C.S_C.typeMOVE == SORA){
6206 if(U2A->sora == A) dmg = dmg*1.2;
6207 if(U2A->sora == B) dmg = dmg*1.0;
6208 if(U2A->sora == C) dmg = dmg*0.6;
6209 if(U2A->sora == D) dmg = dmg*0.2;
6210 if(U2A->sora == E) dmg = 0;
6211 if(U2A->sora == S) dmg = dmg*1.5;
6212 if(U2A->sora == SS) dmg = dmg*2.0;
6215 NSLog(@"ユニットの地形適用後:%g", dmg);
6217 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
6221 if(graze > omfg && !healFlag) {dmg = dmg/5;
6225 if(battleDef1Flag) dmg -= dmg*0.5;
6226 battleDef1Flag = false;
6228 if(dmg < 0) dmg = 0;
6234 if(U->C.S_C.HP <= 0) {
6236 U2->C.S_C.vigor += 5;
6247 targType2Lflag = true;
6254 targType2Dflag = true;
6264 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
6266 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
6268 if(![U2A->msg isEqualToString:@""]){
6269 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
6270 [self originalMessage:U2A->msg subj:U2->C.name obje:U->C.name]]];
6276 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
6278 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
6280 }else if(battleDef2Flag){
6284 while (!(DUN[1] == U->number)) {
6289 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
6292 }else if(battleDod2Flag){
6295 while (!(DUN[1] == U->number)) {
6299 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
6304 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
6307 [battleDialog setStringValue:message];
6313 avPlayerFlag2 = false;
6314 animationFlag3 = false;
6317 if(bLoopFlag) break;
6318 battleSetUp = false;
6319 battleSetFlag = false;
6322 battleSet2PushedFlag = false;
6323 cpuModeBATTLEendFlag = true;
6326 [battleWindow close];
6327 pussyLoopFlag = false;
6328 cpuAtkExtendFlag3 = false;
6329 cpuOMFGmoveATKfixFlag = false;
6330 unitNoMoveFlag = false;
6335 cpuIsAttackingFlag = false;
6336 for(int g = 0;g < chipWidth;g++){
6337 for(int k = 0;k < chipHeight;k++){
6338 g_attackRangeExtent[g][k] = 0;
6348 UCselected = UC[-1];
6353 -(void)DisplayMessageMod1A{//両方モビール
6355 double def2 = (double)31/32;
6356 NSString *message = @"";
6377 if(bLoopFlag) return;
6379 while (!(AUN[1] == U->number)) {
6383 ATTACK *aTop = U->CL.A;
6384 for(int i = 0;i < crCAL1;i++){
6385 U->CL.A = U->CL.A->next;
6389 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
6391 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
6392 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
6394 NSString *path = @"data/AttackList/ALdata";
6396 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
6398 path = [path stringByAppendingFormat:@"/"];
6400 path = [path stringByAppendingString:U->CL.A->AN.movName];
6402 NSData *AVData = [NSData dataWithContentsOfFile:path];
6405 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
6410 NSString *path = @"data/AttackList3/IALdata";
6412 path = [path stringByAppendingFormat:@"%dE", U->CL.A->indexE];
6414 path = [path stringByAppendingFormat:@"/"];
6416 path = [path stringByAppendingString:U->CL.A->AN.movName];
6419 NSData *AVData = [NSData dataWithContentsOfFile:path];
6422 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
6428 AVPV.player = [AVpreview retain];
6434 [AVPV setHidden:NO];
6436 [battleDialog setStringValue:message];
6438 avPlayerFlag1 = true;
6444 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->CL.A->AN.ANI && !animationFlag3){
6446 [battleDialog setStringValue:message];
6447 animationFlag1 = true;
6454 dmg = U->CL.A->totalD;
6456 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
6457 U->CL.S_C.EN -= costMP;
6459 hit = U->CL.S_C.MOB+U->C.S_C.HIT;
6460 hitFix = U->CL.A->hitPercent;
6466 while (!(DUN[1] == U->number)) {
6469 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;
6470 if(hit > 100) hit = 100;
6471 if(U2A->D->sort == 1){
6478 if(battleDod2Flag) wtf = 50;
6479 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
6481 if(U2A->D->sort == 0){
6482 NSLog(@"修正前のダメージ:%g", dmg);
6483 dmg = [self dmgResist:dmg];
6484 NSLog(@"属性後のダメージ:%g", dmg);
6485 def2 = pow(def2, U->CL.S_C.ARM);
6486 int omfg = rand()%100;
6487 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->CL.S_C.ARM);
6489 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg + dmg - U->CL.S_C.ARM));
6490 dmg = (dmg*omfg/100 + dmg - U->CL.S_C.ARM);
6491 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
6492 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
6493 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
6495 if(U->CL.S_C.typeMOVE == RIKU){
6496 if(U2A->riku == A) dmg = dmg*1.2;
6497 if(U2A->riku == B) dmg = dmg*1.0;
6498 if(U2A->riku == C) dmg = dmg*0.6;
6499 if(U2A->riku == D) dmg = dmg*0.2;
6500 if(U2A->riku == E) dmg = 0;
6501 if(U2A->riku == S) dmg = dmg*1.5;
6502 if(U2A->riku == SS) dmg = dmg*2.0;
6503 } if(U->CL.S_C.typeMOVE == UMI &&
6504 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
6505 if(U2A->umi == A) dmg = dmg*1.2;
6506 if(U2A->umi == B) dmg = dmg*1.0;
6507 if(U2A->umi == C) dmg = dmg*0.6;
6508 if(U2A->umi == D) dmg = dmg*0.2;
6509 if(U2A->umi == E) dmg = 0;
6510 if(U2A->umi == S) dmg = dmg*1.5;
6511 if(U2A->umi == SS) dmg = dmg*2.0;
6512 }else if(U->CL.S_C.typeMOVE == UMI){
6513 if(U2A->riku == A) dmg = dmg*1.2;
6514 if(U2A->riku == B) dmg = dmg*1.0;
6515 if(U2A->riku == C) dmg = dmg*0.6;
6516 if(U2A->riku == D) dmg = dmg*0.2;
6517 if(U2A->riku == E) dmg = 0;
6518 if(U2A->riku == S) dmg = dmg*1.5;
6519 if(U2A->riku == SS) dmg = dmg*2.0;
6521 } if(U->CL.S_C.typeMOVE == CHU){
6522 if(U2A->chu == A) dmg = dmg*1.2;
6523 if(U2A->chu == B) dmg = dmg*1.0;
6524 if(U2A->chu == C) dmg = dmg*0.6;
6525 if(U2A->chu == D) dmg = dmg*0.2;
6526 if(U2A->chu == E) dmg = 0;
6527 if(U2A->chu == S) dmg = dmg*1.5;
6528 if(U2A->chu == SS) dmg = dmg*2.0;
6529 } if(U->CL.S_C.typeMOVE == SORA){
6530 if(U2A->sora == A) dmg = dmg*1.2;
6531 if(U2A->sora == B) dmg = dmg*1.0;
6532 if(U2A->sora == C) dmg = dmg*0.6;
6533 if(U2A->sora == D) dmg = dmg*0.2;
6534 if(U2A->sora == E) dmg = 0;
6535 if(U2A->sora == S) dmg = dmg*1.5;
6536 if(U2A->sora == SS) dmg = dmg*2.0;
6539 NSLog(@"ユニットの地形適用後:%g", dmg);
6540 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
6541 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
6545 if(graze > omfg && !healFlag) {dmg = dmg/5;
6548 if(battleDef2Flag) dmg -= dmg*0.5;
6549 battleDef2Flag = false;
6551 if(dmg < 0) dmg = 0;
6552 U->CL.S_C.HP -= dmg;
6555 }else if(U2A->D->sort == 1){
6556 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
6559 U->CL.S_C.HP += dmg;
6561 if(U->CL.S_C.HP > U->CL.S_M.HP) U->CL.S_C.HP = U->CL.S_M.HP;
6566 if(U->CL.S_C.HP <= 0) {
6568 U2->C.S_C.vigor += 5;
6579 targType2Lflag = true;
6586 targType2Dflag = true;
6594 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
6595 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
6597 if(![U2A->msg isEqualToString:@""]){
6599 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
6600 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->CL.name]]];
6604 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
6605 if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
6606 else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->CL.name, dmg]];
6607 }else if(battleDef1Flag){
6611 while (!(AUN[1] == U->number)) {
6616 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
6619 }else if(battleDod1Flag){
6622 while (!(AUN[1] == U->number)) {
6626 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
6631 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
6634 [battleDialog setStringValue:message];
6650 -(void)DisplayMessageMod1B{
6652 double def2 = (double)31/32;
6653 NSString *message = @"";
6673 if(bLoopFlag) return;
6676 while (!(AUN[1] == U->number)) {
6683 while (!(DUN[1] == U->number)) {
6687 ATTACK *aTop2 = U->CL.A;
6693 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
6694 costVIG = U->C.A->vigor;
6697 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
6698 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){
6699 mostDmg = U->CL.A->totalD;
6702 U->CL.A = U->CL.A->next;
6708 if(!battleSet2PushedFlag){
6709 for(int i = 0;i < mostNumSub;i++){
6710 U->CL.A = U->CL.A->next;
6714 for(int i = 0;i < crCAL2;i++){
6715 U->CL.A = U->CL.A->next;
6724 if(U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1){
6725 }else while(U->CL.A){
6726 U->CL.A = U->CL.A->next;
6733 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
6737 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
6740 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
6741 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
6743 NSString *path = @"data/AttackList/ALdata";
6745 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
6747 path = [path stringByAppendingFormat:@"/"];
6749 path = [path stringByAppendingString:U->CL.A->AN.movName];
6752 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
6755 AVPV.player = [AVpreview retain];
6760 [AVPV setControlsStyle:0];
6761 [AVPV setHidden:NO];
6763 [battleDialog setStringValue:message];
6765 avPlayerFlag2 = true;
6770 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->CL.A->AN.ANI && !animationFlag3){
6773 animationFlag2 = true;
6781 dmg = U->CL.A->totalD;
6783 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
6784 U->CL.S_C.EN -= costMP;
6786 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
6787 hitFix = U->CL.A->hitPercent;
6794 while (!(AUN[1] == U->number)) {
6799 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;
6800 if(hit > 100) hit = 100;
6802 battleDod1Flag = false;
6805 if(battleDod1Flag) omg = 50;
6807 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
6808 NSLog(@"修正前のダメージ:%g", dmg);
6809 dmg = [self dmgResist:dmg];
6810 NSLog(@"属性後のダメージ:%g", dmg);
6811 def2 = pow(def2, U->CL.S_C.ARM);
6812 int omfg = rand()%100;
6813 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->CL.S_C.ARM);
6814 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg + dmg - U->CL.S_C.ARM));
6815 dmg = (dmg*omfg/100 + dmg - U->CL.S_C.ARM);
6818 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
6819 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
6820 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
6822 if(U->CL.S_C.typeMOVE == RIKU){
6823 if(U2A->riku == A) dmg = dmg*1.2;
6824 if(U2A->riku == B) dmg = dmg*1.0;
6825 if(U2A->riku == C) dmg = dmg*0.6;
6826 if(U2A->riku == D) dmg = dmg*0.2;
6827 if(U2A->riku == E) dmg = 0;
6828 if(U2A->riku == S) dmg = dmg*1.5;
6829 if(U2A->riku == SS) dmg = dmg*2.0;
6830 } if(U->CL.S_C.typeMOVE == UMI &&
6831 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
6832 if(U2A->umi == A) dmg = dmg*1.2;
6833 if(U2A->umi == B) dmg = dmg*1.0;
6834 if(U2A->umi == C) dmg = dmg*0.6;
6835 if(U2A->umi == D) dmg = dmg*0.2;
6836 if(U2A->umi == E) dmg = 0;
6837 if(U2A->umi == S) dmg = dmg*1.5;
6838 if(U2A->umi == SS) dmg = dmg*2.0;
6839 }else if(U->CL.S_C.typeMOVE == UMI){
6840 if(U2A->riku == A) dmg = dmg*1.2;
6841 if(U2A->riku == B) dmg = dmg*1.0;
6842 if(U2A->riku == C) dmg = dmg*0.6;
6843 if(U2A->riku == D) dmg = dmg*0.2;
6844 if(U2A->riku == E) dmg = 0;
6845 if(U2A->riku == S) dmg = dmg*1.5;
6846 if(U2A->riku == SS) dmg = dmg*2.0;
6848 } if(U->CL.S_C.typeMOVE == CHU){
6849 if(U2A->chu == A) dmg = dmg*1.2;
6850 if(U2A->chu == B) dmg = dmg*1.0;
6851 if(U2A->chu == C) dmg = dmg*0.6;
6852 if(U2A->chu == D) dmg = dmg*0.2;
6853 if(U2A->chu == E) dmg = 0;
6854 if(U2A->chu == S) dmg = dmg*1.5;
6855 if(U2A->chu == SS) dmg = dmg*2.0;
6856 } if(U->CL.S_C.typeMOVE == SORA){
6857 if(U2A->sora == A) dmg = dmg*1.2;
6858 if(U2A->sora == B) dmg = dmg*1.0;
6859 if(U2A->sora == C) dmg = dmg*0.6;
6860 if(U2A->sora == D) dmg = dmg*0.2;
6861 if(U2A->sora == E) dmg = 0;
6862 if(U2A->sora == S) dmg = dmg*1.5;
6863 if(U2A->sora == SS) dmg = dmg*2.0;
6866 NSLog(@"ユニットの地形適用後:%g", dmg);
6868 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
6872 if(graze > omfg && !healFlag) {dmg = dmg/5;
6876 if(battleDef1Flag) dmg -= dmg*0.5;
6877 battleDef1Flag = false;
6879 if(dmg < 0) dmg = 0;
6880 U->CL.S_C.HP -= dmg;
6884 if(U->CL.S_C.HP <= 0) {
6886 U2->C.S_C.vigor += 5;
6897 targType2Lflag = true;
6904 targType2Dflag = true;
6914 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
6916 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
6918 if(![U2A->msg isEqualToString:@""]){
6919 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
6920 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->CL.name]]];
6926 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
6928 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
6930 }else if(battleDef2Flag){
6934 while (!(DUN[1] == U->number)) {
6939 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
6942 }else if(battleDod2Flag){
6945 while (!(DUN[1] == U->number)) {
6949 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
6954 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
6957 [battleDialog setStringValue:message];
6966 -(void)DisplayMessageMod2A{//攻撃側モビール
6968 double def2 = (double)31/32;
6969 NSString *message = @"";
6989 if(bLoopFlag) return;
6992 while (!(DUN[1] == U->number)) {
6998 while (!(AUN[1] == U->number)) {
7002 ATTACK *aTop = U->CL.A;
7003 for(int i = 0;i < crCAL1;i++){
7004 U->CL.A = U->CL.A->next;
7008 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
7010 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
7011 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
7013 NSString *path = @"data/AttackList/ALdata";
7015 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
7017 path = [path stringByAppendingFormat:@"/"];
7019 path = [path stringByAppendingString:U->CL.A->AN.movName];
7021 NSData *AVData = [NSData dataWithContentsOfFile:path];
7024 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
7029 NSString *path = @"data/AttackList3/IALdata";
7031 path = [path stringByAppendingFormat:@"%dE", U->CL.A->indexE];
7033 path = [path stringByAppendingFormat:@"/"];
7035 path = [path stringByAppendingString:U->CL.A->AN.movName];
7038 NSData *AVData = [NSData dataWithContentsOfFile:path];
7041 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
7047 AVPV.player = [AVpreview retain];
7053 [AVPV setHidden:NO];
7055 [battleDialog setStringValue:message];
7057 avPlayerFlag1 = true;
7063 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->CL.A->AN.ANI && !animationFlag3){
7065 [battleDialog setStringValue:message];
7066 animationFlag1 = true;
7073 dmg = U->CL.A->totalD;
7074 double val = 1/log(3+U2->C.S_C.MP/64);
7079 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
7080 U->CL.S_C.EN -= costMP;
7082 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
7083 hitFix = U->CL.A->hitPercent;
7089 while (!(DUN[1] == U->number)) {
7093 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
7095 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
7098 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
7099 if(hit > 100) hit = 100;
7100 if(U2A->D->sort == 1){
7107 if(battleDod2Flag) wtf = 50;
7108 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
7110 if(U2A->D->sort == 0){
7111 NSLog(@"修正前のダメージ:%g", dmg);
7112 dmg = [self dmgResist:dmg];
7113 NSLog(@"属性後のダメージ:%g", dmg);
7114 def2 = pow(def2, U->C.S_C.DEF);
7115 int omfg = rand()%100;
7116 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->C.S_C.DEF);
7117 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->C.S_C.DEF), (dmg/10 + dmg - U->C.S_C.DEF));
7118 dmg = (dmg*omfg/100/10 + dmg - U->C.S_C.DEF);
7119 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
7120 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
7121 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
7123 if(U->C.S_C.typeMOVE == RIKU){
7124 if(U2A->riku == A) dmg = dmg*1.2;
7125 if(U2A->riku == B) dmg = dmg*1.0;
7126 if(U2A->riku == C) dmg = dmg*0.6;
7127 if(U2A->riku == D) dmg = dmg*0.2;
7128 if(U2A->riku == E) dmg = 0;
7129 if(U2A->riku == S) dmg = dmg*1.5;
7130 if(U2A->riku == SS) dmg = dmg*2.0;
7131 } if(U->C.S_C.typeMOVE == UMI &&
7132 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
7133 if(U2A->umi == A) dmg = dmg*1.2;
7134 if(U2A->umi == B) dmg = dmg*1.0;
7135 if(U2A->umi == C) dmg = dmg*0.6;
7136 if(U2A->umi == D) dmg = dmg*0.2;
7137 if(U2A->umi == E) dmg = 0;
7138 if(U2A->umi == S) dmg = dmg*1.5;
7139 if(U2A->umi == SS) dmg = dmg*2.0;
7140 }else if(U->C.S_C.typeMOVE == UMI){
7141 if(U2A->riku == A) dmg = dmg*1.2;
7142 if(U2A->riku == B) dmg = dmg*1.0;
7143 if(U2A->riku == C) dmg = dmg*0.6;
7144 if(U2A->riku == D) dmg = dmg*0.2;
7145 if(U2A->riku == E) dmg = 0;
7146 if(U2A->riku == S) dmg = dmg*1.5;
7147 if(U2A->riku == SS) dmg = dmg*2.0;
7149 } if(U->C.S_C.typeMOVE == CHU){
7150 if(U2A->chu == A) dmg = dmg*1.2;
7151 if(U2A->chu == B) dmg = dmg*1.0;
7152 if(U2A->chu == C) dmg = dmg*0.6;
7153 if(U2A->chu == D) dmg = dmg*0.2;
7154 if(U2A->chu == E) dmg = 0;
7155 if(U2A->chu == S) dmg = dmg*1.5;
7156 if(U2A->chu == SS) dmg = dmg*2.0;
7157 } if(U->C.S_C.typeMOVE == SORA){
7158 if(U2A->sora == A) dmg = dmg*1.2;
7159 if(U2A->sora == B) dmg = dmg*1.0;
7160 if(U2A->sora == C) dmg = dmg*0.6;
7161 if(U2A->sora == D) dmg = dmg*0.2;
7162 if(U2A->sora == E) dmg = 0;
7163 if(U2A->sora == S) dmg = dmg*1.5;
7164 if(U2A->sora == SS) dmg = dmg*2.0;
7167 NSLog(@"ユニットの地形適用後:%g", dmg);
7168 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
7169 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
7173 if(graze > omfg && !healFlag) {dmg = dmg/5;
7176 if(battleDef2Flag) dmg -= dmg*0.5;
7177 battleDef2Flag = false;
7179 if(dmg < 0) dmg = 0;
7183 }else if(U2A->D->sort == 1){
7184 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
7187 U->CL.S_C.HP += dmg;
7189 if(U->CL.S_C.HP > U->CL.S_M.HP) U->CL.S_C.HP = U->CL.S_M.HP;
7194 if(U->C.S_C.HP <= 0) {
7196 U2->C.S_C.vigor += 5;
7207 targType2Lflag = true;
7214 targType2Dflag = true;
7222 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7223 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
7225 if(![U2A->msg isEqualToString:@""]){
7227 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
7228 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->C.name]]];
7232 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
7233 if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
7234 else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->C.name, dmg]];
7235 }else if(battleDef1Flag){
7239 while (!(AUN[1] == U->number)) {
7244 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
7247 }else if(battleDod1Flag){
7250 while (!(AUN[1] == U->number)) {
7254 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
7259 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
7262 [battleDialog setStringValue:message];
7279 -(void)DisplayMessageMod2B{
7281 double def2 = (double)31/32;
7282 NSString *message = @"";
7302 if(bLoopFlag) return;
7305 while (!(AUN[1] == U->number)) {
7312 while (!(DUN[1] == U->number)) {
7316 ATTACK *aTop2 = U->C.A;
7322 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
7323 costVIG = U->C.A->vigor;
7326 costVIG = U->C.A->vigor;
7328 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
7330 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){
7331 mostDmg = U->C.A->totalD;
7334 U->C.A = U->C.A->next;
7340 if(!battleSet2PushedFlag){
7341 for(int i = 0;i < mostNumSub;i++){
7342 U->C.A = U->C.A->next;
7345 if(mostNum < 0) U->C.A = NULL;
7347 for(int i = 0;i < crCAL2;i++){
7348 U->C.A = U->C.A->next;
7353 if(U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1){
7354 }else while(U->CL.A){
7355 U->C.A = U->C.A->next;
7361 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
7367 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
7371 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
7374 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL){
7375 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
7377 NSString *path = @"data/AttackList/ALdata";
7379 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
7381 path = [path stringByAppendingFormat:@"/"];
7383 path = [path stringByAppendingString:U->C.A->AN.movName];
7386 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
7389 AVPV.player = [AVpreview retain];
7394 [AVPV setControlsStyle:0];
7395 [AVPV setHidden:NO];
7397 [battleDialog setStringValue:message];
7399 avPlayerFlag2 = true;
7404 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->C.A->AN.ANI && !animationFlag3){
7407 animationFlag2 = true;
7417 if(U->C.A->D->type == 0) dmg = U->C.S_C.ATK + U->C.A->totalD;
7418 if(U->C.A->D->type == 1) dmg = U->C.S_C.DEF + U->C.A->totalD;
7419 if(U->C.A->D->type == 2) dmg = U->C.S_C.ACU + U->C.A->totalD;
7420 if(U->C.A->D->type == 3) dmg = U->C.S_C.EVA + U->C.A->totalD;
7421 if(U->C.A->D->type == 4) dmg = U->C.S_C.CAP + U->C.A->totalD;
7422 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
7425 double urSupposedToGet;
7427 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
7430 bool lolFlag = false;
7432 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
7433 else oopsIsRight = U->C.S_C.MIS;
7436 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;
7437 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;
7438 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;
7439 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;
7440 if(U->C.A->D->type == 4) {
7442 dmg = (U->C.S_C.CAP + urSupposedToGet)*oopsIsRight/100;
7444 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
7446 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
7447 U->C.S_C.MP -= costMP;
7449 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
7450 hitFix = U->C.A->hitPercent;
7456 while (!(AUN[1] == U->number)) {
7460 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;
7461 if(hit > 100) hit = 100;
7463 battleDod1Flag = false;
7466 if(battleDod1Flag) omg = 50;
7468 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
7469 NSLog(@"修正前のダメージ:%g, %g", dmg, U2A->D->seed);
7471 dmg = [self dmgResist:dmg];
7472 NSLog(@"属性後のダメージ:%g", dmg);
7473 def2 = pow(def2, U->CL.S_C.ARM);
7474 int omfg = rand()%100;
7475 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->CL.S_C.ARM);
7476 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg/10 + dmg - U->CL.S_C.ARM));
7477 if(lolFlag) dmg = (dmg*omfg/100/10 + dmg);
7478 else dmg = (dmg*omfg/100/10+ dmg - U->CL.S_C.ARM);
7481 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
7482 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
7483 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
7485 if(U->CL.S_C.typeMOVE == RIKU){
7486 if(U2A->riku == A) dmg = dmg*1.2;
7487 if(U2A->riku == B) dmg = dmg*1.0;
7488 if(U2A->riku == C) dmg = dmg*0.6;
7489 if(U2A->riku == D) dmg = dmg*0.2;
7490 if(U2A->riku == E) dmg = 0;
7491 if(U2A->riku == S) dmg = dmg*1.5;
7492 if(U2A->riku == SS) dmg = dmg*2.0;
7493 } if(U->CL.S_C.typeMOVE == UMI &&
7494 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
7495 if(U2A->umi == A) dmg = dmg*1.2;
7496 if(U2A->umi == B) dmg = dmg*1.0;
7497 if(U2A->umi == C) dmg = dmg*0.6;
7498 if(U2A->umi == D) dmg = dmg*0.2;
7499 if(U2A->umi == E) dmg = 0;
7500 if(U2A->umi == S) dmg = dmg*1.5;
7501 if(U2A->umi == SS) dmg = dmg*2.0;
7502 }else if(U->CL.S_C.typeMOVE == UMI){
7503 if(U2A->riku == A) dmg = dmg*1.2;
7504 if(U2A->riku == B) dmg = dmg*1.0;
7505 if(U2A->riku == C) dmg = dmg*0.6;
7506 if(U2A->riku == D) dmg = dmg*0.2;
7507 if(U2A->riku == E) dmg = 0;
7508 if(U2A->riku == S) dmg = dmg*1.5;
7509 if(U2A->riku == SS) dmg = dmg*2.0;
7511 } if(U->CL.S_C.typeMOVE == CHU){
7512 if(U2A->chu == A) dmg = dmg*1.2;
7513 if(U2A->chu == B) dmg = dmg*1.0;
7514 if(U2A->chu == C) dmg = dmg*0.6;
7515 if(U2A->chu == D) dmg = dmg*0.2;
7516 if(U2A->chu == E) dmg = 0;
7517 if(U2A->chu == S) dmg = dmg*1.5;
7518 if(U2A->chu == SS) dmg = dmg*2.0;
7519 } if(U->CL.S_C.typeMOVE == SORA){
7520 if(U2A->sora == A) dmg = dmg*1.2;
7521 if(U2A->sora == B) dmg = dmg*1.0;
7522 if(U2A->sora == C) dmg = dmg*0.6;
7523 if(U2A->sora == D) dmg = dmg*0.2;
7524 if(U2A->sora == E) dmg = 0;
7525 if(U2A->sora == S) dmg = dmg*1.5;
7526 if(U2A->sora == SS) dmg = dmg*2.0;
7529 NSLog(@"ユニットの地形適用後:%g", dmg);
7531 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
7535 if(graze > omfg && !healFlag) {dmg = dmg/5;
7539 if(battleDef1Flag) dmg -= dmg*0.5;
7540 battleDef1Flag = false;
7542 if(dmg < 0) dmg = 0;
7543 U->CL.S_C.HP -= dmg;
7547 if(U->CL.S_C.HP <= 0) {
7549 U2->C.S_C.vigor += 5;
7560 targType2Lflag = true;
7567 targType2Dflag = true;
7577 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7579 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
7581 if(![U2A->msg isEqualToString:@""]){
7582 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
7583 [self originalMessage:U2A->msg subj:U2->C.name obje:U->CL.name]]];
7589 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
7591 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
7593 }else if(battleDef2Flag){
7597 while (!(DUN[1] == U->number)) {
7602 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
7605 }else if(battleDod2Flag){
7608 while (!(DUN[1] == U->number)) {
7612 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
7617 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
7620 [battleDialog setStringValue:message];
7630 -(void)DisplayMessageMod3A{//防御側モビール
7632 double def2 = (double)31/32;
7633 NSString *message = @"";
7652 static bool extentbool3 = false;
7653 static bool extentbool4 = false;
7654 if(!extentbool3 && extentBattleFlag2){
7656 extentMPcostFlag = false;
7659 if(!extentBattleFlag2){
7663 if(bLoopFlag) return;
7666 while (!(DUN[DUNnum] == U->number)) {
7672 while (!(AUN[1] == U->number)) {
7676 ATTACK *aTop = U->C.A;
7677 for(int i = 0;i < crCAL1;i++){
7678 U->C.A = U->C.A->next;
7682 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
7685 [bplayer2 setImage:U2->CL.imgb];
7686 //[bplayer2 setImageScaling:NSScaleToFit];
7687 [nplayer2 setStringValue:U2->CL.name];
7688 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U2->CL.S_C.HP, U2->CL.S_M.HP]];
7689 [lplayer2 setIntValue:U2->CL.S_C.HP/U2->CL.S_M.HP*100];
7690 [iplayer2 setImage:MC[chipNum[U2->x][U2->y]].img];
7691 [mplayer2 setStringValue:MC[chipNum[U2->x][U2->y]].name];
7692 [rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U2->x][U2->y]].dmgfix]];
7694 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){
7695 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
7697 NSString *path = @"data/AttackList/ALdata";
7699 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
7701 path = [path stringByAppendingFormat:@"/"];
7703 path = [path stringByAppendingString:U->C.A->AN.movName];
7705 NSData *AVData = [NSData dataWithContentsOfFile:path];
7708 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
7713 NSString *path = @"data/AttackList3/IALdata";
7715 path = [path stringByAppendingFormat:@"%dE", U->C.A->indexE];
7717 path = [path stringByAppendingFormat:@"/"];
7719 path = [path stringByAppendingString:U->C.A->AN.movName];
7722 NSData *AVData = [NSData dataWithContentsOfFile:path];
7725 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
7731 AVPV.player = [AVpreview retain];
7737 [AVPV setHidden:NO];
7739 [battleDialog setStringValue:message];
7741 avPlayerFlag1 = true;
7747 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->C.A->AN.ANI && !animationFlag3 && DUN[DUNnum] == 1){
7749 [battleDialog setStringValue:message];
7750 animationFlag1 = true;
7758 if(U->C.A->D->type == 0) dmg = U->C.S_C.ATK + U->C.A->totalD;
7759 if(U->C.A->D->type == 1) dmg = U->C.S_C.DEF + U->C.A->totalD;
7760 if(U->C.A->D->type == 2) dmg = U->C.S_C.ACU + U->C.A->totalD;
7761 if(U->C.A->D->type == 3) dmg = U->C.S_C.EVA + U->C.A->totalD;
7762 if(U->C.A->D->type == 4) dmg = U->C.S_C.CAP + U->C.A->totalD;
7763 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
7766 double urSupposedToGet;
7768 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
7772 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
7773 else oopsIsRight = U->C.S_C.MIS;
7774 bool lolflag = false;
7776 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;
7777 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;
7778 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;
7779 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;
7781 if(U->C.A->D->type == 4){
7783 dmg = (U->C.S_C.CAP + U->C.A->totalD)*oopsIsRight/100;
7786 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
7787 double val2 = log(3+U2->C.S_C.MP/64);
7792 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
7794 if(extentMPcostFlag && extentBattleFlag2){
7797 U->C.S_C.MP -= costMP;
7798 extentMPcostFlag = true;
7801 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
7802 hitFix = U->C.A->hitPercent;
7808 while (!(DUN[DUNnum] == U->number)) {
7811 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;
7812 if(hit > 100) hit = 100;
7813 if(U2A->D->sort == 1){
7820 if(battleDod2Flag) wtf = 50;
7821 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
7823 if(U2A->D->sort == 0){
7824 NSLog(@"修正前のダメージ:%g", dmg);
7825 dmg = [self dmgResist:dmg];
7826 NSLog(@"属性後のダメージ:%g", dmg);
7827 def2 = pow(def2, U->CL.S_C.ARM);
7828 int omfg = rand()%100;
7829 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, (U->CL.S_C.ARM));
7830 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg/10 + dmg - U->CL.S_C.ARM));
7831 if(lolflag) dmg = (dmg*omfg/100/10 + dmg);
7832 else dmg = (dmg*omfg/100/10 + dmg - U->CL.S_C.ARM);
7833 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
7834 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
7835 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
7837 if(U->CL.S_C.typeMOVE == RIKU){
7838 if(U2A->riku == A) dmg = dmg*1.2;
7839 if(U2A->riku == B) dmg = dmg*1.0;
7840 if(U2A->riku == C) dmg = dmg*0.6;
7841 if(U2A->riku == D) dmg = dmg*0.2;
7842 if(U2A->riku == E) dmg = 0;
7843 if(U2A->riku == S) dmg = dmg*1.5;
7844 if(U2A->riku == SS) dmg = dmg*2.0;
7845 } if(U->CL.S_C.typeMOVE == UMI &&
7846 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
7847 if(U2A->umi == A) dmg = dmg*1.2;
7848 if(U2A->umi == B) dmg = dmg*1.0;
7849 if(U2A->umi == C) dmg = dmg*0.6;
7850 if(U2A->umi == D) dmg = dmg*0.2;
7851 if(U2A->umi == E) dmg = 0;
7852 if(U2A->umi == S) dmg = dmg*1.5;
7853 if(U2A->umi == SS) dmg = dmg*2.0;
7854 }else if(U->CL.S_C.typeMOVE == UMI){
7855 if(U2A->riku == A) dmg = dmg*1.2;
7856 if(U2A->riku == B) dmg = dmg*1.0;
7857 if(U2A->riku == C) dmg = dmg*0.6;
7858 if(U2A->riku == D) dmg = dmg*0.2;
7859 if(U2A->riku == E) dmg = 0;
7860 if(U2A->riku == S) dmg = dmg*1.5;
7861 if(U2A->riku == SS) dmg = dmg*2.0;
7863 } if(U->CL.S_C.typeMOVE == CHU){
7864 if(U2A->chu == A) dmg = dmg*1.2;
7865 if(U2A->chu == B) dmg = dmg*1.0;
7866 if(U2A->chu == C) dmg = dmg*0.6;
7867 if(U2A->chu == D) dmg = dmg*0.2;
7868 if(U2A->chu == E) dmg = 0;
7869 if(U2A->chu == S) dmg = dmg*1.5;
7870 if(U2A->chu == SS) dmg = dmg*2.0;
7871 } if(U->CL.S_C.typeMOVE == SORA){
7872 if(U2A->sora == A) dmg = dmg*1.2;
7873 if(U2A->sora == B) dmg = dmg*1.0;
7874 if(U2A->sora == C) dmg = dmg*0.6;
7875 if(U2A->sora == D) dmg = dmg*0.2;
7876 if(U2A->sora == E) dmg = 0;
7877 if(U2A->sora == S) dmg = dmg*1.5;
7878 if(U2A->sora == SS) dmg = dmg*2.0;
7881 NSLog(@"ユニットの地形適用後:%g", dmg);
7882 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
7883 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
7887 if(graze > omfg && !healFlag) {dmg = dmg/5;
7890 if(battleDef2Flag) dmg -= dmg*0.5;
7891 battleDef2Flag = false;
7893 if(dmg < 0) dmg = 0;
7894 U->CL.S_C.HP -= dmg;
7897 }else if(U2A->D->sort == 1){
7898 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
7902 if(U->C.S_C.HP > U->C.S_M.HP) U->C.S_C.HP = U->C.S_M.HP;
7907 if(U->CL.S_C.HP <= 0) {
7909 U2->C.S_C.vigor += 5;
7920 targType2Lflag = true;
7927 targType2Dflag = true;
7935 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7936 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
7938 if(![U2A->msg isEqualToString:@""]){
7940 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
7941 [self originalMessage:U2A->msg subj:U2->C.name obje:U->CL.name]]];
7945 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
7946 if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
7947 else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->CL.name, dmg]];
7948 }else if(battleDef1Flag){
7952 while (!(AUN[1] == U->number)) {
7957 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
7960 }else if(battleDod1Flag){
7963 while (!(AUN[1] == U->number)) {
7967 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
7972 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
7975 [battleDialog setStringValue:message];
7982 if(!extentBattleFlag2){
7987 }else if(extentBattleFlag2){
7990 if(DUN[DUNnum] == -1){
7994 extentBattleFlag2 = false;
7995 extentbool3 = false;
7996 extentMPcostFlag = false;
8003 -(void)DisplayMessageMod3B{
8006 double def2 = (double)31/32;
8007 NSString *message = @"";
8027 if(bLoopFlag) return;
8031 while (!(AUN[1] == U->number)) {
8037 while (!(DUN[1] == U->number)) {
8040 ATTACK *aTop2 = U->CL.A;
8046 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
8047 costVIG = U->C.A->vigor;
8050 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
8051 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){
8052 mostDmg = U->CL.A->totalD;
8055 U->CL.A = U->CL.A->next;
8059 if(mostNum < 0) U->C.A = NULL;
8063 if(!battleSet2PushedFlag){
8064 for(int i = 0;i < mostNumSub;i++){
8065 U->CL.A = U->CL.A->next;
8070 for(int i = 0;i < crCAL2;i++){
8071 U->CL.A = U->C.A->next;
8075 if(U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1){
8076 }else while(U->CL.A){
8077 U->CL.A = U->CL.A->next;
8083 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
8087 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
8089 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
8090 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
8092 NSString *path = @"data/AttackList/ALdata";
8094 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
8096 path = [path stringByAppendingFormat:@"/"];
8098 path = [path stringByAppendingString:U->CL.A->AN.movName];
8101 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
8104 AVPV.player = [AVpreview retain];
8109 [AVPV setControlsStyle:0];
8110 [AVPV setHidden:NO];
8112 [battleDialog setStringValue:message];
8114 avPlayerFlag2 = true;
8119 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->CL.A->AN.ANI && !animationFlag3){
8122 animationFlag2 = true;
8132 dmg = U->CL.A->totalD;
8134 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
8135 U->CL.S_C.EN -= costMP;
8137 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
8138 hitFix = U->CL.A->hitPercent;
8144 while (!(AUN[1] == U->number)) {
8148 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
8150 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
8153 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
8154 if(hit > 100) hit = 100;
8156 battleDod1Flag = false;
8159 if(battleDod1Flag) omg = 50;
8161 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
8162 NSLog(@"修正前のダメージ:%g", dmg);
8163 dmg = [self dmgResist:dmg];
8164 NSLog(@"属性後のダメージ:%g", dmg);
8165 def2 = pow(def2, U->C.S_C.DEF);
8166 int omfg = rand()%100;
8167 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->C.S_C.DEF);
8168 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->C.S_C.DEF), (dmg/10 + dmg - U->C.S_C.DEF));
8169 dmg = (dmg*omfg/100/10 + dmg - U->C.S_C.DEF);
8172 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
8173 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
8174 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
8176 if(U->C.S_C.typeMOVE == RIKU){
8177 if(U2A->riku == A) dmg = dmg*1.2;
8178 if(U2A->riku == B) dmg = dmg*1.0;
8179 if(U2A->riku == C) dmg = dmg*0.6;
8180 if(U2A->riku == D) dmg = dmg*0.2;
8181 if(U2A->riku == E) dmg = 0;
8182 if(U2A->riku == S) dmg = dmg*1.5;
8183 if(U2A->riku == SS) dmg = dmg*2.0;
8184 } if(U->C.S_C.typeMOVE == UMI &&
8185 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
8186 if(U2A->umi == A) dmg = dmg*1.2;
8187 if(U2A->umi == B) dmg = dmg*1.0;
8188 if(U2A->umi == C) dmg = dmg*0.6;
8189 if(U2A->umi == D) dmg = dmg*0.2;
8190 if(U2A->umi == E) dmg = 0;
8191 if(U2A->umi == S) dmg = dmg*1.5;
8192 if(U2A->umi == SS) dmg = dmg*2.0;
8193 }else if(U->C.S_C.typeMOVE == UMI){
8194 if(U2A->riku == A) dmg = dmg*1.2;
8195 if(U2A->riku == B) dmg = dmg*1.0;
8196 if(U2A->riku == C) dmg = dmg*0.6;
8197 if(U2A->riku == D) dmg = dmg*0.2;
8198 if(U2A->riku == E) dmg = 0;
8199 if(U2A->riku == S) dmg = dmg*1.5;
8200 if(U2A->riku == SS) dmg = dmg*2.0;
8202 } if(U->C.S_C.typeMOVE == CHU){
8203 if(U2A->chu == A) dmg = dmg*1.2;
8204 if(U2A->chu == B) dmg = dmg*1.0;
8205 if(U2A->chu == C) dmg = dmg*0.6;
8206 if(U2A->chu == D) dmg = dmg*0.2;
8207 if(U2A->chu == E) dmg = 0;
8208 if(U2A->chu == S) dmg = dmg*1.5;
8209 if(U2A->chu == SS) dmg = dmg*2.0;
8210 } if(U->C.S_C.typeMOVE == SORA){
8211 if(U2A->sora == A) dmg = dmg*1.2;
8212 if(U2A->sora == B) dmg = dmg*1.0;
8213 if(U2A->sora == C) dmg = dmg*0.6;
8214 if(U2A->sora == D) dmg = dmg*0.2;
8215 if(U2A->sora == E) dmg = 0;
8216 if(U2A->sora == S) dmg = dmg*1.5;
8217 if(U2A->sora == SS) dmg = dmg*2.0;
8220 NSLog(@"ユニットの地形適用後:%g", dmg);
8222 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
8226 if(graze > omfg && !healFlag) {dmg = dmg/5;
8230 if(battleDef1Flag) dmg -= dmg*0.5;
8231 battleDef1Flag = false;
8233 if(dmg < 0) dmg = 0;
8238 if(U->C.S_C.HP <= 0) {
8240 U2->C.S_C.vigor += 5;
8251 targType2Lflag = true;
8258 targType2Dflag = true;
8268 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8270 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
8272 if(![U2A->msg isEqualToString:@""]){
8273 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
8274 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->C.name]]];
8280 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
8282 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
8284 }else if(battleDef2Flag){
8288 while (!(DUN[1] == U->number)) {
8293 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
8296 }else if(battleDod2Flag){
8299 while (!(DUN[1] == U->number)) {
8303 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
8308 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
8311 [battleDialog setStringValue:message];
8320 -(NSString*)originalMessage:(NSString*)str subj:(NSString*)subj obje:(NSString*)obje{
8324 NSString *result = @"";
8326 string = [str copy];
8328 array = [string componentsSeparatedByString:@"$subj"];
8330 for(int i = 0;i < [array count];i++){
8332 result = [[result stringByAppendingString:[NSString stringWithFormat:@"%@", subj]] retain];
8334 result = [[result stringByAppendingString:[array objectAtIndex:i]] retain];
8337 string = [result copy];
8339 array = [string componentsSeparatedByString:@"$obje"];
8343 for(int i = 0;i < [array count];i++){
8345 result = [[result stringByAppendingString:[NSString stringWithFormat:@"%@", obje]] retain];
8347 result = [[result stringByAppendingString:[array objectAtIndex:i]] retain];
8350 //NSLog(@"%@", result);
8357 -(double)dmgResist:(double)DMG{
8360 if(U2A->D->seed == 0) DMG = DMG * U->C.R_C.blow/100;
8361 if(U2A->D->seed == 1) DMG = DMG * U->C.R_C.slash/100;
8362 if(U2A->D->seed == 2) DMG = DMG * U->C.R_C.stub/100;
8363 if(U2A->D->seed == 3) DMG = DMG * U->C.R_C.arrow/100;
8364 if(U2A->D->seed == 4) DMG = DMG * U->C.R_C.gun/100;
8365 if(U2A->D->seed == 5) DMG = DMG * U->C.R_C.shell/100;
8367 if(U2A->D->seed == 6) DMG = DMG * U->C.R_C.flame/100;
8368 if(U2A->D->seed == 7) DMG = DMG * U->C.R_C.cold/100;
8369 if(U2A->D->seed == 8) DMG = DMG * U->C.R_C.electoric/100;
8370 if(U2A->D->seed == 9) DMG = DMG * U->C.R_C.air/100;
8371 if(U2A->D->seed == 10) DMG = DMG * U->C.R_C.water/100;
8372 if(U2A->D->seed == 11) DMG = DMG * U->C.R_C.gas/100;
8373 if(U2A->D->seed == 12) DMG = DMG * U->C.R_C.holy/100;
8374 if(U2A->D->seed == 13) DMG = DMG * U->C.R_C.dark/100;
8375 if(U2A->D->seed == 14) DMG = DMG * U->C.R_C.explosion/100;
8376 if(U2A->D->seed == 15) DMG = DMG * U->C.R_C.blood/100;
8378 if(U2A->D->seed == 16) DMG = DMG * U->C.R_C.paralysis/100;
8379 if(U2A->D->seed == 17) DMG = DMG * U->C.R_C.confusion/100;
8380 if(U2A->D->seed == 18) DMG = DMG * U->C.R_C.poison/100;
8381 if(U2A->D->seed == 19) DMG = DMG * U->C.R_C.sleep/100;
8382 if(U2A->D->seed == 20) DMG = DMG * U->C.R_C.charm/100;
8383 if(U2A->D->seed == 21) DMG = DMG * U->C.R_C.silent/100;
8388 -(IBAction)battleStart:(id)sender{
8391 battleSet1Flag = false;
8392 battleSet2Flag = false;
8393 battleSettingFlag = false;
8395 [battlePanel close];
8399 -(void)battleStartCPU{
8402 battleSet1Flag = false;
8403 battleSet2Flag = false;
8404 battleSettingFlag = false;
8406 [self AttackDisplay];
8408 windowPoint.x = [mapWindow frame].origin.x;
8409 windowPoint.y = [mapWindow frame].origin.y;
8410 [battleWindow setFrameOrigin:windowPoint];
8411 [battleWindow makeKeyAndOrderFront:nil];
8412 [battlePanel close];
8415 -(IBAction)battleSet1:(id)sender{
8416 battleSetFlag = false;
8417 battleSet1Flag = true;
8418 battleDef1Flag = false;
8419 battleDod1Flag = false;
8420 battleSettingFlag = true;
8421 battleSet2PushedFlag = false;
8424 while (!(AUN[1] == U->number)) {
8427 if(U->chipNumberL >= 0)
8430 [self initCAttackList2];
8431 [self initCAttackSelect2];
8433 else if(U->chipNumber >= 0) {
8435 [self initCAttackList];
8436 [self initCAttackSelect];
8440 [atkPanel makeKeyAndOrderFront:nil];
8442 -(IBAction)battleDef1:(id)sender{
8443 battleDef1Flag = true;
8444 battleSet1Flag = false;
8445 battleDod1Flag = false;
8447 -(IBAction)battleDod1:(id)sender{
8448 battleDod1Flag = true;
8449 battleDef1Flag = false;
8450 battleSet1Flag = false;
8452 -(IBAction)battleSet2:(id)sender{
8453 battleSetFlag = true;
8454 battleSet2Flag = true;
8455 battleDef2Flag = false;
8456 battleDod2Flag = false;
8457 battleSettingFlag = true;
8458 battleSet2PushedFlag = true;
8461 while (!(DUN[1] == U->number)) {
8465 if(U->chipNumberL >= 0){
8467 [self initCAttackList2];
8468 [self initCAttackSelect2];
8470 else if(U->chipNumber >= 0) {
8472 [self initCAttackList];
8473 [self initCAttackSelect];
8476 [atkPanel makeKeyAndOrderFront:nil];
8478 -(IBAction)battleDef2:(id)sender{
8479 battleDef2Flag = true;
8480 battleSet2Flag = false;
8481 battleDod2Flag = false;
8483 -(IBAction)battleDod2:(id)sender{
8484 battleDod2Flag = true;
8485 battleDef2Flag = false;
8486 battleSet2Flag = false;
8489 -(IBAction)battleCancel:(id)sender{
8491 battleSettingFlag = false;
8493 battleSet2PushedFlag = false;
8495 [battlePanel close];
8498 -(IBAction)researchCancel:(id)sender{
8499 [researchPanel close];
8502 -(void)setCommandPanel{
8504 if(buildSkillFlag) cIncludeCreateFlag = true;
8505 else cIncludeCreateFlag = false;
8506 if(summonSkillFlag) cIncludeSummonFlag = true;
8507 else cIncludeSummonFlag = false;
8509 menuPoint.x = [mapWindow frame].origin.x + 200;
8510 menuPoint.y = [mapWindow frame].origin.y + 200;
8512 int plusBtnValue = 0;
8514 if(cIncludeCreateFlag && cIncludeSummonFlag){
8517 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
8520 plusBtnValue -= moveBtn.frame.size.height + 12;
8521 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8522 [[commandPanel contentView] addSubview:moveBtn];
8524 plusBtnValue -= attackBtn.frame.size.height + 2;
8525 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8526 [[commandPanel contentView] addSubview:attackBtn];
8528 plusBtnValue -= stanbyBtn.frame.size.height + 2;
8529 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8530 [[commandPanel contentView] addSubview:stanbyBtn];
8532 [createBtn setTransparent: NO];
8533 [createBtn setEnabled: YES];
8534 plusBtnValue -= createBtn.frame.size.height + 2;
8535 [createBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8536 [[commandPanel contentView] addSubview:createBtn];
8538 [summonBtn setTransparent: NO];
8539 [summonBtn setEnabled: YES];
8540 plusBtnValue -= summonBtn.frame.size.height + 2;
8541 [summonBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8542 [[commandPanel contentView] addSubview:summonBtn];
8544 plusBtnValue -= statusBtn.frame.size.height + 2;
8545 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8546 [[commandPanel contentView] addSubview:statusBtn];
8548 plusBtnValue -= cancelBtn.frame.size.height + 2;
8549 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8550 [[commandPanel contentView] addSubview:cancelBtn];
8553 else if(cIncludeCreateFlag && !cIncludeSummonFlag){
8555 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
8557 plusBtnValue -= moveBtn.frame.size.height + 12;
8558 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8559 [[commandPanel contentView] addSubview:moveBtn];
8561 plusBtnValue -= attackBtn.frame.size.height + 2;
8562 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8563 [[commandPanel contentView] addSubview:attackBtn];
8565 plusBtnValue -= stanbyBtn.frame.size.height + 2;
8566 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8567 [[commandPanel contentView] addSubview:stanbyBtn];
8569 [createBtn setTransparent: NO];
8570 [createBtn setEnabled: YES];
8571 plusBtnValue -= createBtn.frame.size.height + 2;
8572 [createBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8573 [[commandPanel contentView] addSubview:createBtn];
8575 [summonBtn setTransparent: YES];
8576 [summonBtn setEnabled: NO];
8578 plusBtnValue -= statusBtn.frame.size.height + 2;
8579 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8580 [[commandPanel contentView] addSubview:statusBtn];
8582 plusBtnValue -= cancelBtn.frame.size.height + 2;
8583 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8584 [[commandPanel contentView] addSubview:cancelBtn];
8587 }else if(cIncludeSummonFlag && !cIncludeCreateFlag){
8589 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, 210) display:YES];
8592 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
8595 plusBtnValue -= moveBtn.frame.size.height + 12;
8596 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8597 [[commandPanel contentView] addSubview:moveBtn];
8599 plusBtnValue -= attackBtn.frame.size.height + 2;
8600 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8601 [[commandPanel contentView] addSubview:attackBtn];
8603 plusBtnValue -= stanbyBtn.frame.size.height + 2;
8604 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8605 [[commandPanel contentView] addSubview:stanbyBtn];
8607 [createBtn setTransparent: YES];
8608 [createBtn setEnabled: NO];
8610 [summonBtn setTransparent: NO];
8611 [summonBtn setEnabled: YES];
8612 plusBtnValue -= summonBtn.frame.size.height + 2;
8613 [summonBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8614 [[commandPanel contentView] addSubview:summonBtn];
8616 plusBtnValue -= statusBtn.frame.size.height + 2;
8617 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8618 [[commandPanel contentView] addSubview:statusBtn];
8620 plusBtnValue -= cancelBtn.frame.size.height + 2;
8621 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8622 [[commandPanel contentView] addSubview:cancelBtn];
8626 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
8628 plusBtnValue -= moveBtn.frame.size.height + 12;
8629 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8630 [[commandPanel contentView] addSubview:moveBtn];
8632 plusBtnValue -= attackBtn.frame.size.height + 2;
8633 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8634 [[commandPanel contentView] addSubview:attackBtn];
8636 plusBtnValue -= stanbyBtn.frame.size.height + 2;
8637 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8638 [[commandPanel contentView] addSubview:stanbyBtn];
8640 [createBtn setTransparent: YES];
8641 [createBtn setEnabled: NO];
8643 [summonBtn setTransparent: YES];
8644 [summonBtn setEnabled: NO];
8646 plusBtnValue -= statusBtn.frame.size.height + 2;
8647 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8648 [[commandPanel contentView] addSubview:statusBtn];
8650 plusBtnValue -= cancelBtn.frame.size.height + 2;
8651 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
8652 [[commandPanel contentView] addSubview:cancelBtn];
8659 [IVimage setHidden:NO];
8660 [TFname setHidden:NO];
8661 [TFmessage setHidden:NO];
8662 [BXname setHidden:NO];
8663 [BXmessage setHidden:NO];
8664 [IVimage setEnabled:YES];
8665 [TFname setEnabled:YES];
8666 [TFmessage setEnabled:YES];
8669 -(void)closeMessage{
8670 [IVimage setHidden:YES];
8671 [TFname setHidden:YES];
8672 [TFmessage setHidden:YES];
8673 [BXname setHidden:YES];
8674 [BXmessage setHidden:YES];
8675 [IVimage setEnabled:NO];
8676 [TFname setEnabled:NO];
8677 [TFmessage setEnabled:NO];
8680 -(MAPSCRIPT0*)setMessage:(MAPSCRIPT0*)MS0{
8684 [self closeMessage];
8691 initStringNum = true;
8694 NSString *string = @"";
8696 string = [MS0->S1.str retain];
8697 msgMax = (int)[string length];
8704 [IVimage setImage:MS0->S1.img];
8705 [TFname setStringValue:MS0->S1.name];
8707 if(msgCnt <= msgMax){
8708 [TFmessage setStringValue:[string substringToIndex:msgCnt]];
8714 MS0->endFlag = true;
8715 messageEndFlag = false;
8716 messageDialog = false;
8717 MS0->succeessfulFlag = true;
8718 [self setMessage:NULL];
8730 NSString *directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
8731 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
8733 NSString *path = @"Map/";
8734 NSString *fileData = nil;
8735 NSArray *fileDataArray;
8737 path = [path stringByAppendingFormat:@"%@" ,MF[MFselectedRow+1].fileName];
8739 fileData = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
8741 fileDataArray = [fileData componentsSeparatedByString:@"\n"];
8743 MAPSCRIPT0 *MS00 = MF[MFselectedRow+1].MS.D->P;
8744 MAPSCRIPT0 *m00Top = MS00;
8745 for (int i = 0; i < [fileDataArray count]; i++) {
8747 NSRange range = [[fileDataArray objectAtIndex:i] rangeOfString:@"◆"];
8748 if(range.location != NSNotFound){
8750 NSArray *array2 = [[fileDataArray objectAtIndex:i] componentsSeparatedByString:@","];
8753 MS00->S1.iName = [[array2 objectAtIndex:2] retain];
8755 for(int k = 0; k < UCN;k++){
8757 if([MS00->S1.iName isEqualToString:UC[k].nameClass]){
8758 MS00->S1.img = [UC[k].imgb retain];
8774 -(MAPSCRIPT0*)setSwitch:(MAPSCRIPT0*)MS0{
8777 for(int i = 0;*(MS0->switch1 + i) >0;i++){
8778 Suicchi[*(MS0->switch1+i)] = true;
8782 for(int i = 0;*(MS0->switch2 + i) >0;i++){
8783 Suicchi[*(MS0->switch2+i)] = false;
8787 MS0->succeessfulFlag = true;
8788 MS0->endFlag = true;
8792 -(MAPSCRIPT0*)setBranch:(MAPSCRIPT0*)MS0{
8794 MAPSCRIPT0 *CRMS0 = MS0;
8795 bool branchEndFlag = false;
8796 bool branchSuceedFlag = false;
8797 bool trueFlag = true;
8805 if(MS0->S4.suicchiFlag){
8806 if(MS0->S4.suicchiONOFF == 0){
8808 for (int i = 0;*(MS0->S4.suicchi + i);i++) {
8809 if(!Suicchi[*(MS0->S4.suicchi + i)]){
8815 for (int i = 0;*(MS0->S4.suicchi + i);i++) {
8816 if(Suicchi[*(MS0->S4.suicchi + i)]){
8823 if(MS0->S4.hensuFlag){
8825 if(MS0->S4.teisuFlag){
8826 if(MS0->S4.hensuType == 0){
8827 if([Hensuu[MS0->S4.hensu1] intValue] == MS0->S4.teisuValue){
8832 }else if(MS0->S4.hensuType == 1){
8833 if([Hensuu[MS0->S4.hensu1] intValue] >= MS0->S4.teisuValue){
8838 }else if(MS0->S4.hensuType == 2){
8839 if([Hensuu[MS0->S4.hensu1] intValue] <= MS0->S4.teisuValue){
8844 }else if(MS0->S4.hensuType == 3){
8845 if([Hensuu[MS0->S4.hensu1] intValue] > MS0->S4.teisuValue){
8850 }else if(MS0->S4.hensuType == 4){
8851 if([Hensuu[MS0->S4.hensu1] intValue] < MS0->S4.teisuValue){
8856 }else if(MS0->S4.hensuType == 5){
8857 if([Hensuu[MS0->S4.hensu1] intValue] != MS0->S4.teisuValue){
8864 }if(MS0->S4.hensu2flag){
8865 if(MS0->S4.hensuType == 0){
8866 if([Hensuu[MS0->S4.hensu1] isEqualToString:Hensuu[MS0->S4.hensu2]]){
8871 }else if(MS0->S4.hensuType == 1){
8872 if([Hensuu[MS0->S4.hensu1] intValue] >= [Hensuu[MS0->S4.hensu2] intValue]){
8877 }else if(MS0->S4.hensuType == 2){
8878 if([Hensuu[MS0->S4.hensu1] intValue] <= [Hensuu[MS0->S4.hensu2] intValue]){
8883 }else if(MS0->S4.hensuType == 3){
8884 if([Hensuu[MS0->S4.hensu1] intValue] > [Hensuu[MS0->S4.hensu2] intValue]){
8889 }else if(MS0->S4.hensuType == 4){
8890 if([Hensuu[MS0->S4.hensu1] intValue] < [Hensuu[MS0->S4.hensu2] intValue]){
8895 }else if(MS0->S4.hensuType == 5){
8896 if(![Hensuu[MS0->S4.hensu1] isEqualToString:Hensuu[MS0->S4.hensu2]]){
8905 if(MS0->S4.timerFlag){
8907 if(MS0->S4.timerType == 0){
8908 if(MS0->S4.timerMin <= cntTimerMin){
8910 }else if(MS0->S4.timerSec <= cntTimerSec && MS0->S4.timerMin <= cntTimerMin){
8919 if(MS0->S4.timerMin >= cntTimerMin){
8921 }else if(MS0->S4.timerSec >= cntTimerSec && MS0->S4.timerMin >= cntTimerMin){
8932 if(MS0->S4.unitNumFlag){
8942 int objeSCSunitCnt = 0;
8944 if(MS0->S4.objeFlag){
8946 UNIT2 *objeT = MS0->S4.obje;
8948 while (MS0->S4.obje) {
8953 static bool okflag = true;
8955 for (int i = 0;i < 1002;i++) {
8956 for (int k = 0;k < 1002;k++) {
8960 [self checkPlaceHani:MS0->S4.objeRange+1 tX:MS0->S4.obje->y tY:MS0->S4.obje->x aMap:objeR u:U scsCnt:&objeSCSunitCnt];
8964 for(int bx=1;bx<=chipWidth;bx++){
8965 for(int by=1;by<=chipHeight;by++){
8966 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
8968 if(objeR[U->x][U->y] > 0){
8970 if(Unum < Cnum) goto omfgUnitOver2;
8984 if(UP->x == U->x && UP->y == U->y){
8997 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
8999 while(UP->next) UP = UP->next;
9004 UP->next = calloc(1, sizeof(UNITPOINT));
9018 //NSLog(@"%@, %d, %d", U->C.name, objeSCSunitCnt, objeR[0][0]);
9023 MS0->S4.obje = MS0->S4.obje->next;
9025 MS0->S4.obje = objeT;
9029 if(MS0->S4.buildFlag){
9030 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
9034 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
9035 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
9036 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
9044 if(MS0->S4.team == 0){
9045 if(!MS0->S4.objeFlag && !MS0->S4.placeFlag){
9048 if(U->team == 0 && !U->dead)
9053 if(MS0->S4.unitType == 0){
9054 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team0num = MS0->S4.unitNum;
9056 if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == objeSCSunitCnt)){
9058 }else if((MS0->S4.unitNum == team0num) && !MS0->S4.objeFlag){
9063 }else if(MS0->S4.unitType == 1){
9064 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team0num = 65000;
9066 if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= objeSCSunitCnt)){
9068 }else if((MS0->S4.unitNum <= team0num) && !MS0->S4.objeFlag){
9073 }else if(MS0->S4.unitType == 2){
9074 if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= objeSCSunitCnt)){
9076 }else if((MS0->S4.unitNum >= team0num) && !MS0->S4.objeFlag){
9084 }else if(MS0->S4.team == 1){
9085 if(!MS0->S4.objeFlag && !MS0->S4.placeFlag){
9088 if(U->team == 1 && !U->dead)
9093 if(MS0->S4.unitType == 0){
9094 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team1num = MS0->S4.unitNum;
9096 if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum == objeSCSunitCnt)){
9098 }else if((MS0->S4.unitNum == team1num) && !MS0->S4.objeFlag){
9103 }else if(MS0->S4.unitType == 1){
9104 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team1num = 65000;
9105 if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= objeSCSunitCnt)){
9107 }else if((MS0->S4.unitNum <= team1num) && !MS0->S4.objeFlag){
9112 }else if(MS0->S4.unitType == 2){
9114 if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= objeSCSunitCnt)){
9116 }else if((MS0->S4.unitNum >= team1num) && !MS0->S4.objeFlag){
9122 }else if(MS0->S4.team == 2){
9123 if(!MS0->S4.objeFlag && !MS0->S4.placeFlag){
9126 if(U->team == 2 && !U->dead)
9131 if(MS0->S4.unitType == 0){
9132 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team2num = MS0->S4.unitNum;
9134 if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == objeSCSunitCnt)){
9136 }else if((MS0->S4.unitNum == team2num) && !MS0->S4.objeFlag){
9141 }else if(MS0->S4.unitType == 1){
9142 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team2num = 65000;
9144 if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= objeSCSunitCnt)){
9146 }else if((MS0->S4.unitNum <= team2num) && !MS0->S4.objeFlag){
9151 }else if(MS0->S4.unitType == 2){
9152 if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= objeSCSunitCnt)){
9154 }else if((MS0->S4.unitNum >= team2num) && !MS0->S4.objeFlag){
9166 if(MS0->S4.unitTypeFlag && MS0->S4.unitNumFlag){
9167 UNIT2 *sjt = MS0->S4.subj;
9168 UNIT *chosen = NULL;
9169 UNIT *chosenT = NULL;
9172 while(MS0->S4.subj){
9175 if(MS0->S4.subj->x == U->ix && MS0->S4.subj->y == U->iy && U->iz == 1){
9177 chosen->next = calloc(1, sizeof(UNIT));
9182 chosen = chosen->next;
9185 chosen = calloc(1, sizeof(UNIT));
9189 chosen->C.name = U->C.name;
9200 MS0->S4.subj = MS0->S4.subj->next;
9201 }MS0->S4.subj = sjt;
9204 int objeSCSunitCnt = 0;
9212 chosen = chosen->next;
9215 if(MS0->S4.unitTypeFlag && MS0->S4.objeFlag){
9217 UNIT2 *objeT = MS0->S4.obje;
9219 while (MS0->S4.obje) {
9224 static bool okflag = true;
9226 for (int i = 0;i < 1002;i++) {
9227 for (int k = 0;k < 1002;k++) {
9231 [self checkPlaceHani:MS0->S4.objeRange+1 tX:MS0->S4.obje->y tY:MS0->S4.obje->x aMap:objeR u:chosen scsCnt:&objeSCSunitCnt];
9235 for(int bx=1;bx<=chipWidth;bx++){
9236 for(int by=1;by<=chipHeight;by++){
9237 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
9239 if(objeR[chosen->x][chosen->y] > 0){
9241 if(Unum < Cnum) goto omfgUnitOver3;
9255 if(UP->x == chosen->x && UP->y == chosen->y){
9268 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
9270 while(UP->next) UP = UP->next;
9275 UP->next = calloc(1, sizeof(UNITPOINT));
9289 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
9291 chosen = chosen->next;
9294 MS0->S4.obje = MS0->S4.obje->next;
9296 MS0->S4.obje = objeT;
9297 }else if(MS0->S4.objeFlag){
9299 UNIT2 *objeT = MS0->S4.obje;
9301 while (MS0->S4.obje) {
9306 static bool okflag = true;
9308 if(U->team != MS0->S4.team){
9312 for (int i = 0;i < 1002;i++) {
9313 for (int k = 0;k < 1002;k++) {
9317 [self checkPlaceHani:MS0->S4.objeRange+1 tX:MS0->S4.obje->y tY:MS0->S4.obje->x aMap:objeR u:U scsCnt:&objeSCSunitCnt];
9321 for(int bx=1;bx<=chipWidth;bx++){
9322 for(int by=1;by<=chipHeight;by++){
9323 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
9325 if(objeR[chosen->x][chosen->y] > 0){
9327 if(Unum < Cnum) goto omfgUnitOver30;
9341 if(UP->x == chosen->x && UP->y == chosen->y){
9354 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
9356 while(UP->next) UP = UP->next;
9361 UP->next = calloc(1, sizeof(UNITPOINT));
9375 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
9377 chosen = chosen->next;
9380 MS0->S4.obje = MS0->S4.obje->next;
9382 MS0->S4.obje = objeT;
9390 if(MS0->S4.team == 0){
9391 if(!MS0->S4.unitTypeFlag){
9394 if(U->team == 0 && !U->dead)
9399 if(MS0->S4.unitType == 0){
9400 if(MS0->S4.unitTypeFlag) team0num = MS0->S4.unitNum;
9402 if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == cntUnit)
9403 && (MS0->S4.unitNum == objeSCSunitCnt)){
9405 }else if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == cntUnit) && !MS0->S4.objeFlag){
9410 }else if(MS0->S4.unitType == 1){
9411 if(MS0->S4.unitTypeFlag) team0num = 65000;
9413 if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= cntUnit)
9414 && (MS0->S4.unitNum <= objeSCSunitCnt)){
9416 }else if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= cntUnit) && !MS0->S4.objeFlag){
9421 }else if(MS0->S4.unitType == 2){
9422 if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= cntUnit)
9423 && (MS0->S4.unitNum >= objeSCSunitCnt)){
9425 }else if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= cntUnit) && !MS0->S4.objeFlag){
9433 }else if(MS0->S4.team == 1){
9434 if(!MS0->S4.unitTypeFlag){
9437 if(U->team == 1 && !U->dead)
9442 if(MS0->S4.unitType == 0){
9443 if(MS0->S4.unitTypeFlag) team1num = MS0->S4.unitNum;
9445 if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum == cntUnit)
9446 && (MS0->S4.unitNum == objeSCSunitCnt)){
9448 }else if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum == cntUnit) && !MS0->S4.objeFlag){
9453 }else if(MS0->S4.unitType == 1){
9454 if(MS0->S4.unitTypeFlag) team1num = 65000;
9456 if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= cntUnit)
9457 && (MS0->S4.unitNum <= objeSCSunitCnt)){
9459 }else if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= cntUnit) && !MS0->S4.objeFlag){
9464 }else if(MS0->S4.unitType == 2){
9465 if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= cntUnit)
9466 && (MS0->S4.unitNum >= objeSCSunitCnt)){
9468 }else if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= cntUnit) && !MS0->S4.objeFlag){
9474 }else if(MS0->S4.team == 2){
9475 if(!MS0->S4.unitTypeFlag){
9478 if(U->team == 2 && !U->dead)
9483 if(MS0->S4.unitType == 0){
9484 if(MS0->S4.unitTypeFlag) team2num = MS0->S4.unitNum;
9486 if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == cntUnit)
9487 && (MS0->S4.unitNum == objeSCSunitCnt)){
9489 }else if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == cntUnit) && !MS0->S4.objeFlag){
9494 }else if(MS0->S4.unitType == 1){
9495 if(MS0->S4.unitTypeFlag) team2num = 65000;
9497 if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= cntUnit)
9498 && (MS0->S4.unitNum <= objeSCSunitCnt)){
9500 }else if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= cntUnit) && !MS0->S4.objeFlag){
9505 }else if(MS0->S4.unitType == 2){
9506 if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= cntUnit)
9507 && (MS0->S4.unitNum >= objeSCSunitCnt)){
9509 }else if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= cntUnit) && !MS0->S4.objeFlag){
9527 if(MS0->S4.placeFlag && MS0->S4.unitNumFlag){
9537 UNIT2 *sjt = MS0->S4.subj;
9538 UNIT *chosen = NULL;
9539 UNIT *chosenT = NULL;
9542 if(MS0->S4.unitTypeFlag){
9543 while(MS0->S4.subj){
9546 if(MS0->S4.subj->x == U->ix && MS0->S4.subj->y == U->iy && U->iz == 1){
9548 chosen->next = calloc(1, sizeof(UNIT));
9553 chosen = chosen->next;
9556 chosen = calloc(1, sizeof(UNIT));
9560 chosen->C.name = U->C.name;
9571 MS0->S4.subj = MS0->S4.subj->next;
9572 }MS0->S4.subj = sjt;
9580 chosen = chosen->next;
9586 PLACEMENT *wpt = MS0->S4.wayp;
9589 bool waypSCS = false;
9590 int waypSCSunitCnt = 0;
9593 if(!MS0->S4.unitTypeFlag){
9595 while (MS0->S4.wayp) {
9601 if(MS0->S4.wayp->type == 0){
9604 if(U->team != MS0->S4.team){
9608 if(MS0->S4.wayp->x == U->x && MS0->S4.wayp->y == U->y){
9616 }else if(MS0->S4.wayp->type == 1){
9618 static bool okflag = true;
9620 if(U->team != MS0->S4.team){
9624 for (int i = 0;i < 1002;i++) {
9625 for (int k = 0;k < 1002;k++) {
9629 [self checkPlaceHani:MS0->S4.wayp->z+1 tX:MS0->S4.wayp->y tY:MS0->S4.wayp->x aMap:waypR u:U scsCnt:&waypSCSunitCnt];
9633 for(int bx=1;bx<=chipWidth;bx++){
9634 for(int by=1;by<=chipHeight;by++){
9635 if(waypR[bx][by] != 999 && waypR[bx][by] > 0){
9637 if(waypR[U->x][U->y] > 0){
9639 if(Unum < Cnum) goto omfgUnitOver;
9653 if(UP->x == U->x && UP->y == U->y){
9666 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
9668 while(UP->next) UP = UP->next;
9673 UP->next = calloc(1, sizeof(UNITPOINT));
9686 // NSLog(@"%d", waypSCSunitCnt);
9694 }else if(MS0->S4.wayp->type == 2){
9697 static bool okflag = true;
9699 if(U->team != MS0->S4.team){
9703 if((MS0->S4.wayp->x <= U->x) && (MS0->S4.wayp->x2 >= U->x) &&
9704 (MS0->S4.wayp->y <= U->y) && (MS0->S4.wayp->y2 >= U->y)){
9711 if(Unum < Cnum) goto omfgUnitOver;
9725 if(UP->x == U->x && UP->y == U->y){
9738 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
9740 while(UP->next) UP = UP->next;
9745 UP->next = calloc(1, sizeof(UNITPOINT));
9761 MS0->S4.wayp = MS0->S4.wayp->next;
9762 }MS0->S4.wayp = wpt;
9763 // NSLog(@"%d", waypSCSunitCnt);
9765 if(waypSCScnt >= waypCnt)
9768 }else if(MS0->S4.unitTypeFlag){
9770 while (MS0->S4.wayp) {
9776 if(MS0->S4.wayp->type == 0){
9779 if(MS0->S4.wayp->x == chosen->x && MS0->S4.wayp->y == chosen->y){
9784 chosen = chosen->next;
9787 }else if(MS0->S4.wayp->type == 1){
9789 static bool okflag = true;
9791 for (int i = 0;i < 1002;i++) {
9792 for (int k = 0;k < 1002;k++) {
9796 [self checkPlaceHani:MS0->S4.wayp->z+1 tX:MS0->S4.wayp->y tY:MS0->S4.wayp->x aMap:waypR u:chosen scsCnt:&waypSCSunitCnt];
9800 for(int bx=1;bx<=chipWidth;bx++){
9801 for(int by=1;by<=chipHeight;by++){
9802 if(waypR[bx][by] != 999 && waypR[bx][by] > 0){
9804 if(waypR[chosen->x][chosen->y] > 0){
9806 if(Unum < Cnum) goto omfgUnitOver5;
9820 if(UP->x == chosen->x && UP->y == chosen->y){
9833 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
9835 while(UP->next) UP = UP->next;
9840 UP->next = calloc(1, sizeof(UNITPOINT));
9854 // NSLog(@"%d", waypSCSunitCnt);
9856 chosen = chosen->next;
9862 }else if(MS0->S4.wayp->type == 2){
9865 static bool okflag = true;
9867 if((MS0->S4.wayp->x <= chosen->x) && (MS0->S4.wayp->x2 >= chosen->x) &&
9868 (MS0->S4.wayp->y <= chosen->y) && (MS0->S4.wayp->y2 >= chosen->y)){
9875 if(Unum < Cnum) goto omfgUnitOver;
9889 if(UP->x == chosen->x && UP->y == chosen->y){
9902 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
9904 while(UP->next) UP = UP->next;
9909 UP->next = calloc(1, sizeof(UNITPOINT));
9920 chosen = chosen->next;
9925 MS0->S4.wayp = MS0->S4.wayp->next;
9926 }MS0->S4.wayp = wpt;
9927 // NSLog(@"%d", waypSCSunitCnt);
9929 if(waypSCScnt >= waypCnt)
9941 if(MS0->S4.team == 0){
9942 if(!MS0->S4.placeFlag){
9945 if(U->team == 0 && !U->dead)
9950 if(MS0->S4.unitType == 0){
9951 if(MS0->S4.placeFlag) team0num = MS0->S4.unitNum;
9953 if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == waypSCSunitCnt)){
9958 }else if(MS0->S4.unitType == 1){
9959 if(MS0->S4.placeFlag) team0num = 65000;
9961 if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= waypSCSunitCnt)){
9966 }else if(MS0->S4.unitType == 2){
9967 if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= waypSCSunitCnt)){
9975 }else if(MS0->S4.team == 1){
9976 if(!MS0->S4.placeFlag){
9979 if(U->team == 1 && !U->dead)
9984 if(MS0->S4.unitType == 0){
9985 if(MS0->S4.placeFlag) team1num = MS0->S4.unitNum;
9987 if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum = waypSCSunitCnt)){
9992 }else if(MS0->S4.unitType == 1){
9993 if(MS0->S4.placeFlag) team1num = 65000;
9995 if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= waypSCSunitCnt)){
10000 }else if(MS0->S4.unitType == 2){
10001 if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= waypSCSunitCnt)){
10007 }else if(MS0->S4.team == 2){
10008 if(!MS0->S4.placeFlag){
10011 if(U->team == 2 && !U->dead)
10016 if(MS0->S4.unitType == 0){
10017 if(MS0->S4.placeFlag) team2num = MS0->S4.unitNum;
10019 if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == waypSCSunitCnt)){
10024 }else if(MS0->S4.unitType == 1){
10025 if(MS0->S4.placeFlag) team2num = 65000;
10027 if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= waypSCSunitCnt)){
10032 }else if(MS0->S4.unitType == 2){
10033 if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= waypSCSunitCnt)){
10044 if(MS0->S4.unitCMDflag){
10046 UNIT2 *sjt = MS0->S4.subj;
10047 UNIT *chosen = NULL;
10048 UNIT *chosenT = NULL;
10051 while(MS0->S4.subj){
10054 if(MS0->S4.subj->x == U->ix && MS0->S4.subj->y == U->iy && U->iz == 1){
10056 chosen->next = calloc(1, sizeof(UNIT));
10061 chosen = chosen->next;
10064 chosen = calloc(1, sizeof(UNIT));
10068 chosen->C.name = U->C.name;
10079 MS0->S4.subj = MS0->S4.subj->next;
10080 }MS0->S4.subj = sjt;
10083 int objeSCSunitCnt = 0;
10091 chosen = chosen->next;
10094 if(MS0->S4.unitTypeFlag && MS0->S4.objeFlag){
10096 UNIT2 *objeT = MS0->S4.obje;
10098 while (MS0->S4.obje) {
10103 static bool okflag = true;
10105 for (int i = 0;i < 1002;i++) {
10106 for (int k = 0;k < 1002;k++) {
10110 [self checkPlaceHani:MS0->S4.objeRange+1 tX:MS0->S4.obje->y tY:MS0->S4.obje->x aMap:objeR u:chosen scsCnt:&objeSCSunitCnt];
10114 for(int bx=1;bx<=chipWidth;bx++){
10115 for(int by=1;by<=chipHeight;by++){
10116 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
10118 if(objeR[chosen->x][chosen->y] > 0){
10120 if(Unum < Cnum) goto omfgUnitOver31;
10134 if(UP->x == chosen->x && UP->y == chosen->y){
10147 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
10149 while(UP->next) UP = UP->next;
10154 UP->next = calloc(1, sizeof(UNITPOINT));
10168 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
10170 chosen = chosen->next;
10173 MS0->S4.obje = MS0->S4.obje->next;
10175 MS0->S4.obje = objeT;
10176 }else if(MS0->S4.objeFlag){
10178 UNIT2 *objeT = MS0->S4.obje;
10180 while (MS0->S4.obje) {
10185 static bool okflag = true;
10187 if(U->team != MS0->S4.team){
10191 for (int i = 0;i < 1002;i++) {
10192 for (int k = 0;k < 1002;k++) {
10196 [self checkPlaceHani:MS0->S4.objeRange+1 tX:MS0->S4.obje->y tY:MS0->S4.obje->x aMap:objeR u:U scsCnt:&objeSCSunitCnt];
10200 for(int bx=1;bx<=chipWidth;bx++){
10201 for(int by=1;by<=chipHeight;by++){
10202 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
10204 if(objeR[chosen->x][chosen->y] > 0){
10206 if(Unum < Cnum) goto omfgUnitOver32;
10220 if(UP->x == chosen->x && UP->y == chosen->y){
10233 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
10235 while(UP->next) UP = UP->next;
10240 UP->next = calloc(1, sizeof(UNITPOINT));
10254 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
10256 chosen = chosen->next;
10259 MS0->S4.obje = MS0->S4.obje->next;
10261 MS0->S4.obje = objeT;
10265 if(MS0->S4.team == 0){
10267 if(!MS0->S4.subj && !MS0->S4.obje && !MS0->S4.build){
10269 if(MS0->S4.unitCMD == 0){
10270 if(pushStanbyFlag){
10275 }else if(MS0->S4.unitCMD == 1){
10277 battleSetUpIgnore = true;
10281 }else if(MS0->S4.unitCMD == 2){
10286 }else if(!MS0->S4.subj && !MS0->S4.obje && MS0->S4.build){
10290 BUILD2 *bldt = MS0->S4.build;
10292 while(MS0->S4.build){
10293 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
10295 if(MS0->S4.unitCMD == 0){
10296 if(pushStanbyFlag){
10301 }else if(MS0->S4.unitCMD == 1){
10303 battleSetUpIgnore = true;
10309 }else if(MS0->S4.unitCMD == 2){
10316 MS0->S4.build = MS0->S4.build->next;
10317 }MS0->S4.build = bldt;
10320 }else if(MS0->S4.subj && !MS0->S4.obje){
10323 UNIT2 *sbjt = MS0->S4.subj;
10325 while(MS0->S4.subj){
10326 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1){
10328 if(MS0->S4.unitCMD == 0){
10329 if(pushStanbyFlag){
10334 }else if(MS0->S4.unitCMD == 1){
10336 battleSetUpIgnore = true;
10342 }else if(MS0->S4.unitCMD == 2){
10350 MS0->S4.subj = MS0->S4.subj->next;
10351 }MS0->S4.subj = sbjt;
10354 }else if(MS0->S4.subj && MS0->S4.obje){
10356 UNIT2 *sbjt = MS0->S4.subj;
10357 UNIT2 *objt = MS0->S4.obje;
10359 while(MS0->S4.subj){
10360 while(MS0->S4.obje){
10361 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
10362 Utarget->ix == MS0->S4.obje->x && Utarget->iy == MS0->S4.obje->y && Utarget->iz == 1){
10364 if(MS0->S4.unitCMD == 0){
10366 if(MS0->S4.unitType == 0){
10367 if(objeSCSunitCnt == MS0->S4.unitNum){
10369 if(pushStanbyFlag){
10376 }else if(MS0->S4.unitType == 1){
10377 if(objeSCSunitCnt >= MS0->S4.unitNum){
10379 if(pushStanbyFlag){
10386 }else if(MS0->S4.unitType == 2){
10387 if(objeSCSunitCnt <= MS0->S4.unitNum){
10389 if(pushStanbyFlag){
10397 }else if(MS0->S4.unitCMD == 1){
10399 if(MS0->S4.unitType == 0){
10400 if(objeSCSunitCnt == MS0->S4.unitNum){
10403 battleSetUpIgnore = true;
10409 }else if(MS0->S4.unitType == 1){
10410 if(objeSCSunitCnt >= MS0->S4.unitNum){
10413 battleSetUpIgnore = true;
10419 }else if(MS0->S4.unitType == 2){
10420 if(objeSCSunitCnt <= MS0->S4.unitNum){
10423 battleSetUpIgnore = true;
10430 }else if(MS0->S4.unitCMD == 2 && objeSCSunitCnt > 0){
10442 MS0->S4.obje = MS0->S4.obje->next;
10443 }MS0->S4.obje = objt;
10444 MS0->S4.subj = MS0->S4.subj->next;
10445 }MS0->S4.subj = sbjt;
10447 }if(MS0->S4.subj && MS0->S4.build){
10450 UNIT2 *sbjt = MS0->S4.subj;
10451 BUILD2 *bldt = MS0->S4.build;
10453 while(MS0->S4.subj){
10454 while(MS0->S4.build){
10455 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
10456 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
10457 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
10459 if(MS0->S4.unitCMD == 0){
10460 if(pushStanbyFlag){
10465 }else if(MS0->S4.unitCMD == 1){
10467 battleSetUpIgnore = true;
10473 }else if(MS0->S4.unitCMD == 2){
10482 MS0->S4.build = MS0->S4.build->next;
10483 }MS0->S4.build = bldt;
10485 MS0->S4.subj = MS0->S4.subj->next;
10487 MS0->S4.subj = sbjt;
10490 }else if(MS0->S4.team == 1){
10491 if(!MS0->S4.subj && !MS0->S4.obje && !MS0->S4.build){
10493 if(MS0->S4.unitCMD == 0){
10494 if(pushStanbyFlag){
10499 }else if(MS0->S4.unitCMD == 1){
10501 battleSetUpIgnore = true;
10505 }else if(MS0->S4.unitCMD == 2){
10510 }else if(!MS0->S4.subj && !MS0->S4.obje && MS0->S4.build){
10514 BUILD2 *bldt = MS0->S4.build;
10515 while(MS0->S4.build){
10516 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
10518 if(MS0->S4.unitCMD == 0){
10519 if(pushStanbyFlag){
10524 }else if(MS0->S4.unitCMD == 1){
10526 battleSetUpIgnore = true;
10532 }else if(MS0->S4.unitCMD == 2){
10539 MS0->S4.build = MS0->S4.build->next;
10540 }MS0->S4.build = bldt;
10543 }else if(MS0->S4.subj && !MS0->S4.obje){
10547 UNIT2 *sbjt = MS0->S4.subj;
10549 while(MS0->S4.subj){
10550 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1){
10552 if(MS0->S4.unitCMD == 0){
10553 if(pushStanbyFlag){
10558 }else if(MS0->S4.unitCMD == 1){
10560 battleSetUpIgnore = true;
10566 }else if(MS0->S4.unitCMD == 2){
10574 MS0->S4.subj = MS0->S4.subj->next;
10575 }MS0->S4.subj = sbjt;
10577 }else if(MS0->S4.subj && MS0->S4.obje){
10579 UNIT2 *sbjt = MS0->S4.subj;
10580 UNIT2 *objt = MS0->S4.obje;
10582 while(MS0->S4.subj){
10583 while(MS0->S4.obje){
10584 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
10585 Utarget->ix == MS0->S4.obje->x && Utarget->iy == MS0->S4.obje->y && Utarget->iz == 1){
10587 if(MS0->S4.unitCMD == 0){
10589 if(MS0->S4.unitType == 0){
10590 if(objeSCSunitCnt == MS0->S4.unitNum){
10592 if(pushStanbyFlag){
10599 }else if(MS0->S4.unitType == 1){
10600 if(objeSCSunitCnt >= MS0->S4.unitNum){
10602 if(pushStanbyFlag){
10609 }else if(MS0->S4.unitType == 2){
10610 if(objeSCSunitCnt <= MS0->S4.unitNum){
10612 if(pushStanbyFlag){
10620 }else if(MS0->S4.unitCMD == 1){
10622 if(MS0->S4.unitType == 0){
10623 if(objeSCSunitCnt == MS0->S4.unitNum){
10626 battleSetUpIgnore = true;
10632 }else if(MS0->S4.unitType == 1){
10633 if(objeSCSunitCnt >= MS0->S4.unitNum){
10636 battleSetUpIgnore = true;
10642 }else if(MS0->S4.unitType == 2){
10643 if(objeSCSunitCnt <= MS0->S4.unitNum){
10646 battleSetUpIgnore = true;
10653 }else if(MS0->S4.unitCMD == 2 && objeSCSunitCnt > 0){
10666 MS0->S4.obje = MS0->S4.obje->next;
10667 }MS0->S4.obje = objt;
10668 MS0->S4.subj = MS0->S4.subj->next;
10669 }MS0->S4.subj = sbjt;
10671 }if(MS0->S4.subj && MS0->S4.build){
10673 UNIT2 *sbjt = MS0->S4.subj;
10674 BUILD2 *bldt = MS0->S4.build;
10675 while(MS0->S4.subj){
10676 while(MS0->S4.build){
10677 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
10678 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
10679 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
10681 if(MS0->S4.unitCMD == 0){
10682 if(pushStanbyFlag){
10687 }else if(MS0->S4.unitCMD == 1){
10689 battleSetUpIgnore = true;
10695 }else if(MS0->S4.unitCMD == 2){
10704 MS0->S4.build = MS0->S4.build->next;
10705 }MS0->S4.build = bldt;
10706 MS0->S4.subj = MS0->S4.subj->next;
10707 }MS0->S4.subj = sbjt;
10709 }else if(MS0->S4.team == 2){
10710 if(!MS0->S4.subj && !MS0->S4.obje && !MS0->S4.build){
10712 if(MS0->S4.unitCMD == 0){
10713 if(pushStanbyFlag){
10718 }else if(MS0->S4.unitCMD == 1){
10720 battleSetUpIgnore = true;
10724 }else if(MS0->S4.unitCMD == 2){
10729 }else if(!MS0->S4.subj && !MS0->S4.obje && MS0->S4.build){
10733 BUILD2 *bldt = MS0->S4.build;
10734 while(MS0->S4.build){
10735 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
10737 if(MS0->S4.unitCMD == 0){
10738 if(pushStanbyFlag){
10743 }else if(MS0->S4.unitCMD == 1){
10745 battleSetUpIgnore = true;
10751 }else if(MS0->S4.unitCMD == 2){
10758 MS0->S4.build = MS0->S4.build->next;
10759 }MS0->S4.build = bldt;
10762 }else if(MS0->S4.subj && !MS0->S4.obje){
10764 UNIT2 *sbjt = MS0->S4.subj;
10766 while(MS0->S4.subj){
10767 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1){
10769 if(MS0->S4.unitCMD == 0){
10770 if(pushStanbyFlag){
10775 }else if(MS0->S4.unitCMD == 1){
10777 battleSetUpIgnore = true;
10783 }else if(MS0->S4.unitCMD == 2){
10790 MS0->S4.subj = MS0->S4.subj->next;
10791 }MS0->S4.subj = sbjt;
10793 }else if(MS0->S4.subj && MS0->S4.obje){
10795 UNIT2 *sbjt = MS0->S4.subj;
10796 UNIT2 *objt = MS0->S4.obje;
10798 while(MS0->S4.subj){
10799 while(MS0->S4.obje){
10800 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
10801 Utarget->ix == MS0->S4.obje->x && Utarget->iy == MS0->S4.obje->y && Utarget->iz == 1){
10803 if(MS0->S4.unitCMD == 0){
10805 if(MS0->S4.unitType == 0){
10806 if(objeSCSunitCnt == MS0->S4.unitNum){
10808 if(pushStanbyFlag){
10815 }else if(MS0->S4.unitType == 1){
10816 if(objeSCSunitCnt >= MS0->S4.unitNum){
10818 if(pushStanbyFlag){
10825 }else if(MS0->S4.unitType == 2){
10826 if(objeSCSunitCnt <= MS0->S4.unitNum){
10828 if(pushStanbyFlag){
10836 }else if(MS0->S4.unitCMD == 1){
10838 if(MS0->S4.unitType == 0){
10839 if(objeSCSunitCnt == MS0->S4.unitNum){
10842 battleSetUpIgnore = true;
10848 }else if(MS0->S4.unitType == 1){
10849 if(objeSCSunitCnt >= MS0->S4.unitNum){
10852 battleSetUpIgnore = true;
10858 }else if(MS0->S4.unitType == 2){
10859 if(objeSCSunitCnt <= MS0->S4.unitNum){
10862 battleSetUpIgnore = true;
10869 }else if(MS0->S4.unitCMD == 2 && objeSCSunitCnt > 0){
10877 MS0->S4.obje = MS0->S4.obje->next;
10878 }MS0->S4.obje = objt;
10879 MS0->S4.subj = MS0->S4.subj->next;
10880 }MS0->S4.subj = sbjt;
10881 }if(MS0->S4.subj && MS0->S4.build){
10883 UNIT2 *sbjt = MS0->S4.subj;
10884 BUILD2 *bldt = MS0->S4.build;
10885 while(MS0->S4.subj){
10886 while(MS0->S4.build){
10887 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
10888 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
10889 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
10891 if(MS0->S4.unitCMD == 0){
10892 if(pushStanbyFlag){
10897 }else if(MS0->S4.unitCMD == 1){
10899 battleSetUpIgnore = true;
10905 }else if(MS0->S4.unitCMD == 2){
10914 MS0->S4.build = MS0->S4.build->next;
10915 }MS0->S4.build = bldt;
10916 MS0->S4.subj = MS0->S4.subj->next;
10917 }MS0->S4.subj = sbjt;
10955 branchEndFlag = true;
10956 MS0->succeessfulFlag = false;
10958 branchSuceedFlag = true;
10959 MS0->succeessfulFlag = true;
10961 MS0->succeessfulFlag = false;
10966 if(!branchSuceedFlag){
10969 MS0->endFlag = false;
10974 MS0->endFlag = true;
10977 if([CRMS0->S4.FAILrabel isEqualToString:MS0->label]){
10978 MS0->succeessfulFlag = false;
10979 MS0->endFlag = false;
10985 if([CRMS0->S4.FAILrabel isEqualToString:MS0->next->label]){
10986 if(MS0->type == 6 && MS0->endFlag){
10989 MS0->succeessfulFlag = true;
10991 MS0->endFlag = true;
10995 if(MS0->type == 6 && MS0->endFlag){
10998 MS0->succeessfulFlag = true;
11000 MS0->endFlag = true;
11010 }else if(branchSuceedFlag){
11013 MS0->endFlag = false;
11018 MS0->endFlag = true;
11022 if([CRMS0->S4.COMPrabel isEqualToString:MS0->label]){
11023 MS0->succeessfulFlag = false;
11024 MS0->endFlag = false;
11030 if([CRMS0->S4.COMPrabel isEqualToString:MS0->next->label]){
11032 if(MS0->type == 6 && MS0->endFlag){
11035 MS0->succeessfulFlag = true;
11037 MS0->endFlag = true;
11042 if(MS0->type == 6 && MS0->endFlag){
11045 MS0->succeessfulFlag = true;
11047 MS0->endFlag = true;
11059 //NSLog(@"%d", MSDPtop->succeessfulFlag);
11064 -(void)checkPlaceHani:(int)cnsPow tX:(int)startX tY:(int)startY aMap:(int[][1002])aMap u:(UNIT*)u scsCnt:(int*)scsCnt{
11066 if(cnsPow < 0) return;
11070 if(aMap[startY][startX] <= cnsPow)
11071 aMap[startY][startX] = cnsPow;
11073 if(startY < 0) startY = 0;
11074 if(startX < 0) startX = 0;
11075 if(cnsPow < 0) cnsPow = 0;
11079 if(aMap[startY-1][startX] >= 0 && cnsPow > 0)
11080 [self checkPlaceHani:i0 tX:startX tY:startY-1 aMap:aMap u:u scsCnt:j0];
11083 if(aMap[startY+1][startX] >= 0 && cnsPow > 0)
11084 [self checkPlaceHani:i0 tX:startX tY:startY+1 aMap:aMap u:u scsCnt:j0];
11087 if(aMap[startY][startX-1] >= 0 && cnsPow > 0)
11088 [self checkPlaceHani:i0 tX:startX-1 tY:startY aMap:aMap u:u scsCnt:j0];
11091 if(aMap[startY][startX+1] >= 0 && cnsPow > 0)
11092 [self checkPlaceHani:i0 tX:startX+1 tY:startY aMap:aMap u:u scsCnt:j0];
11097 -(MAPSCRIPT0*)setLabelJump:(MAPSCRIPT0*)MS0{
11099 MAPSCRIPT0 *CRMS0 = MS0;
11102 MS0->endFlag = false;
11106 MS0->endFlag = true;
11107 MS0->succeessfulFlag = true;
11111 if([CRMS0->labelJump isEqualToString:MS0->label]){
11112 MS0->succeessfulFlag = false;
11113 MS0->endFlag = false;
11119 if([CRMS0->labelJump isEqualToString:MS0->next->label]){
11120 if(MS0->type == 6 && MS0->endFlag){
11123 MS0->succeessfulFlag = true;
11125 MS0->endFlag = true;
11129 if(MS0->type == 6 && MS0->endFlag){
11132 MS0->succeessfulFlag = true;
11134 MS0->endFlag = true;
11146 -(MAPSCRIPT0*)setDefault:(MAPSCRIPT0*)MS0{
11148 MS0->succeessfulFlag = true;
11149 MS0->endFlag = true;
11153 -(MAPSCRIPT0*)setResource:(MAPSCRIPT0*)MS0{
11155 if(MS0->S6.team == 0){
11157 if(MS0->S6.RCsupply){
11158 if(MS0->S6.RCsupplyS){
11159 if(MS0->S6.RCsupplyAdd)
11160 P[0].resource += MS0->S6.RCsupplyValue;
11162 P[0].resource -= MS0->S6.RCsupplyValue;
11164 if(MS0->S6.RCsupplyAdd)
11165 P[0].resource += [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
11167 P[0].resource -= [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
11170 if(MS0->S6.RCfood){
11171 if(MS0->S6.RCfoodS){
11172 if(MS0->S6.RCfoodAdd)
11173 P[0].food += MS0->S6.RCfoodValue;
11175 P[0].food -= MS0->S6.RCfoodValue;
11177 if(MS0->S6.RCfoodAdd)
11178 P[0].food += [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
11180 P[0].food -= [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
11183 if(MS0->S6.RCmoney){
11184 if(MS0->S6.RCmoneyS){
11185 if(MS0->S6.RCmoneyAdd)
11186 P[0].money += MS0->S6.RCmoneyValue;
11188 P[0].money -= MS0->S6.RCmoneyValue;
11190 if(MS0->S6.RCmoneyAdd)
11191 P[0].money += [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
11193 P[0].money -= [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
11197 }else if(MS0->S6.team == 1){
11198 if(MS0->S6.RCsupply){
11199 if(MS0->S6.RCsupplyS){
11200 if(MS0->S6.RCsupplyAdd)
11201 P[1].resource += MS0->S6.RCsupplyValue;
11203 P[1].resource -= MS0->S6.RCsupplyValue;
11205 if(MS0->S6.RCsupplyAdd)
11206 P[1].resource += [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
11208 P[1].resource -= [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
11211 if(MS0->S6.RCfood){
11212 if(MS0->S6.RCfoodS){
11213 if(MS0->S6.RCfoodAdd)
11214 P[1].food += MS0->S6.RCfoodValue;
11216 P[1].food -= MS0->S6.RCfoodValue;
11218 if(MS0->S6.RCfoodAdd)
11219 P[1].food += [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
11221 P[1].food -= [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
11224 if(MS0->S6.RCmoney){
11225 if(MS0->S6.RCmoneyS){
11226 if(MS0->S6.RCmoneyAdd)
11227 P[1].money += MS0->S6.RCmoneyValue;
11229 P[1].money -= MS0->S6.RCmoneyValue;
11231 if(MS0->S6.RCmoneyAdd)
11232 P[1].money += [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
11234 P[1].money -= [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
11237 }else if(MS0->S6.team == 2){
11238 if(MS0->S6.RCsupply){
11239 if(MS0->S6.RCsupplyS){
11240 if(MS0->S6.RCsupplyAdd)
11241 P[2].resource += MS0->S6.RCsupplyValue;
11243 P[2].resource -= MS0->S6.RCsupplyValue;
11245 if(MS0->S6.RCsupplyAdd)
11246 P[2].resource += [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
11248 P[2].resource -= [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
11252 if(MS0->S6.RCfood){
11253 if(MS0->S6.RCfoodS){
11254 if(MS0->S6.RCfoodAdd)
11255 P[2].food += MS0->S6.RCfoodValue;
11257 P[2].food -= MS0->S6.RCfoodValue;
11259 if(MS0->S6.RCfoodAdd)
11260 P[2].food += [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
11262 P[2].food -= [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
11265 if(MS0->S6.RCmoney){
11266 if(MS0->S6.RCmoneyS){
11267 if(MS0->S6.RCmoneyAdd)
11268 P[2].money += MS0->S6.RCmoneyValue;
11270 P[2].money -= MS0->S6.RCmoneyValue;
11272 if(MS0->S6.RCmoneyAdd)
11273 P[2].money += [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
11275 P[2].money -= [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
11280 MS0->succeessfulFlag = true;
11281 MS0->endFlag = true;
11285 -(MAPSCRIPT0*)setLabel:(MAPSCRIPT0*)MS0{
11287 //NSLog(@"%d", MSDP0top->succeessfulFlag);
11288 MS0->succeessfulFlag = true;
11289 MS0->endFlag = true;
11293 -(MAPSCRIPT0*)setComment:(MAPSCRIPT0*)MS0{
11295 MS0->succeessfulFlag = true;
11296 MS0->endFlag = true;
11301 -(MAPSCRIPT0*)setSelection:(MAPSCRIPT0*)MS0{
11303 static bool initFlag = false;
11308 MAPSCRIPT2 *MS2top = MS0->S2;
11310 slctPoint.x = [mapWindow frame].origin.x + 100;
11311 slctPoint.y = [mapWindow frame].origin.y + 300;
11313 [slctBtn1 setHidden:YES];
11314 [slctBtn2 setHidden:YES];
11315 [slctBtn3 setHidden:YES];
11316 [slctBtn4 setHidden:YES];
11317 [slctBtn5 setHidden:YES];
11318 [slctBtn6 setHidden:YES];
11319 [slctBtn7 setHidden:YES];
11320 [slctBtn8 setHidden:YES];
11321 [slctBtn9 setHidden:YES];
11323 for(int i = 1;MS0->S2;i++){
11326 [slctBtn1 setTitle:MS0->S2->selection];
11327 [slctBtn1 setHidden:NO];
11328 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 60) display:YES];
11331 [slctBtn2 setTitle:MS0->S2->selection];
11332 [slctBtn2 setHidden:NO];
11333 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 90) display:YES];
11336 [slctBtn3 setTitle:MS0->S2->selection];
11337 [slctBtn3 setHidden:NO];
11338 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 120) display:YES];
11342 [slctBtn4 setTitle:MS0->S2->selection];
11343 [slctBtn4 setHidden:NO];
11344 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 150) display:YES];
11347 [slctBtn5 setTitle:MS0->S2->selection];
11348 [slctBtn5 setHidden:NO];
11349 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 180) display:YES];
11352 [slctBtn6 setTitle:MS0->S2->selection];
11353 [slctBtn6 setHidden:NO];
11354 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 210) display:YES];
11357 [slctBtn7 setTitle:MS0->S2->selection];
11358 [slctBtn7 setHidden:NO];
11359 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 240) display:YES];
11362 [slctBtn8 setTitle:MS0->S2->selection];
11363 [slctBtn8 setHidden:NO];
11364 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 270) display:YES];
11367 [slctBtn9 setTitle:MS0->S2->selection];
11368 [slctBtn9 setHidden:NO];
11369 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 300) display:YES];
11374 MS0->S2 = MS0->S2->next;
11380 [selectionWindow makeKeyAndOrderFront:nil];
11384 if(slctedBtnNum > 0){
11385 MAPSCRIPT0 *CRMS0 = MS0;
11389 MS0->endFlag = false;
11393 MAPSCRIPT2 *MS2top = MS0->S2;
11396 for(int i = 1;i < slctedBtnNum;i++){
11397 MS0->S2 = MS0->S2->next;
11404 if([CRMS2->labelJump isEqualToString:MS0->label]){
11405 MS0->endFlag = false;
11411 if([CRMS2->labelJump isEqualToString:MS0->next->label]){
11412 if(MS0->type == 6 && MS0->endFlag){
11415 MS0->succeessfulFlag = true;
11417 MS0->endFlag = true;
11421 if(MS0->type == 6 && MS0->endFlag){
11424 MS0->succeessfulFlag = true;
11426 MS0->endFlag = true;
11435 MS0->endFlag = true;
11436 MS0->succeessfulFlag = true;
11444 -(MAPSCRIPT0*)setAppearance:(MAPSCRIPT0*)MS0{
11454 if(unitNum[x][y] == -1){
11460 unitTeam[x][y] = MS0->S3->team;
11461 unitNum[x][y] = u.chipNumb;
11462 loadNum[x][y] = u.chipNumb;
11463 [self addAppearanceStatus:u x:x y:y];
11471 int *p = calloc(1, sizeof(int));
11472 int *o = calloc(1, sizeof(int));
11473 appearanceSAIKIflag = false;
11476 for (int i = 0;i < 1002;i++) {
11477 for (int k = 0;k < 1002;k++) {
11482 [self checkAppearanceRange:5 tX:y tY:x aMap:apprR];
11485 for (int i = 0;i < 1002;i++) {
11486 for (int k = 0;k < 1002;k++) {
11487 if(apprR[i][k] > postInt && unitNum[i][k] == -1){
11488 postInt = apprR[i][k];
11495 if(*p > 0 && *o >0){
11498 unitTeam[x][y] = MS0->S3->team;
11499 unitNum[x][y] = u.chipNumb;
11500 loadNum[x][y] = u.chipNumb;
11501 [self addAppearanceStatus:u x:x y:y];
11503 MS0->succeessfulFlag = false;
11504 MS0->endFlag = true;
11510 MS0->S3 = MS0->S3->next;
11512 unitColorInitFlag = true;
11514 MS0->succeessfulFlag = true;
11515 MS0->endFlag = true;
11519 -(MAPSCRIPT0*)setDissappearance:(MAPSCRIPT0*)MS0{
11532 if(MS0->S5->unitNum >= 0){
11533 unitNum[x][y] = -1;
11534 unitTeam[x][y] = -1;
11535 unitNum[x][y] = -1;
11536 loadNum[x][y] = -1;
11540 if(U->ix == x && U->iy == y)
11550 MS0->succeessfulFlag = false;
11551 MS0->endFlag = true;
11557 MS0->S5 = MS0->S5->next;
11559 unitColorInitFlag = true;
11561 MS0->succeessfulFlag = true;
11562 MS0->endFlag = true;
11567 -(void)checkAppearanceRange:(int)cnsPow tX:(int)startX tY:(int)startY aMap:(int[][1002])aMap{
11569 if(cnsPow < 0) return;
11572 if(aMap[startY][startX] <= cnsPow)
11573 aMap[startY][startX] = cnsPow;
11575 if(startY < 0) startY = 0;
11576 if(startX < 0) startX = 0;
11577 if(cnsPow < 0) cnsPow = 0;
11581 if(aMap[startY-1][startX] >= 0 && cnsPow > 0)
11582 [self checkAppearanceRange:i0 tX:startX tY:startY-1 aMap:aMap];
11585 if(aMap[startY+1][startX] >= 0 && cnsPow > 0)
11586 [self checkAppearanceRange:i0 tX:startX tY:startY+1 aMap:aMap];
11589 if(aMap[startY][startX-1] >= 0 && cnsPow > 0)
11590 [self checkAppearanceRange:i0 tX:startX-1 tY:startY aMap:aMap];
11593 if(aMap[startY][startX+1] >= 0 && cnsPow > 0)
11594 [self checkAppearanceRange:i0 tX:startX+1 tY:startY aMap:aMap];
11598 -(void)addAppearanceStatus:(UNITCHIP)u x:(int)x y:(int)y{
11602 while (U->next) {omgCnt++;
11605 U->next = calloc(1, sizeof(UNIT));
11608 if(omgCnt == 0) UTop = U;
11609 U->number = registerNum;
11610 U->chipNumber = -1;
11611 U->chipNumberL = -1;
11612 U->C.chipNumb = -1;
11613 U->CL.chipNumb = -1;
11619 if(unitTeam[x][y] == 0 || unitTeam[x][y] == 1){
11621 if(unitTeam[x][y] == 1){
11622 U->joinArmyFromNext = true;
11623 U->persuasion = true;
11625 if(MF[MFselectedRow+1].MS.playerSet1 == 2)
11629 if(unitTeam[x][y] == 2 || unitTeam[x][y] == 3){
11631 if(unitTeam[x][y] == 3){
11632 U->joinArmyFromNext = true;
11633 U->persuasion = true;
11635 if(MF[MFselectedRow+1].MS.playerSet2 == 2)
11639 if(unitTeam[x][y] == 4 || unitTeam[x][y] == 5){
11641 if(unitTeam[x][y] == 5){
11642 U->joinArmyFromNext = true;
11643 U->persuasion = true;
11647 if(unitTeam[x][y] == -1){
11649 if(unitTeam[x][y] == 0){
11650 U->joinArmyFromNext = false;
11651 U->persuasion = true;
11655 unitNum[x][y] = u.chipNumb;
11656 [self SetUnitStatus:unitNum[x][y]];
11658 for(int i = 0;i < UCN;i++){
11659 if([U->C.nameID isEqualToString:UC[i].nameID])
11662 for(int i = 0;i < LCN;i++){
11663 if([U->CL.nameID isEqualToString:LC[i].nameID])
11664 U->chipNumberL = i;
11666 for(int i = 0;i < UCN;i++){
11667 if([U->C.nameID isEqualToString:UC[i].nameID])
11670 for(int i = 0;i < LCN;i++){
11671 if([U->CL.nameID isEqualToString:LC[i].nameID])
11672 U->CL.chipNumb = i;
11681 -(MAPSCRIPT0*)setWait:(MAPSCRIPT0*)MS0{
11683 static bool waitin = false;
11687 waitinTime = MS0->wait;
11692 waitSwtichFlag = true;
11694 if(waitAllOverFlag){
11695 MS0->succeessfulFlag = true;
11696 MS0->endFlag = true;
11697 waitAllOverFlag = false;
11698 waitSwtichFlag = false;
11700 waitx10flag = false;
11707 -(MAPSCRIPT0*)setBGM:(MAPSCRIPT0*)MS0{
11709 // if(BGMsub) [BGMsub stop];
11710 BGMsub = [MS0->BGM.snd retain];
11714 MS0->succeessfulFlag = true;
11715 MS0->endFlag = true;
11720 -(MAPSCRIPT0*)setSE:(MAPSCRIPT0*)MS0{
11724 SEsub = [MS0->SE.snd retain];
11728 MS0->succeessfulFlag = true;
11729 MS0->endFlag = true;
11734 -(MAPSCRIPT0*)setTitleBack:(MAPSCRIPT0*)MS0{
11736 backTitleFlag = true;
11737 battleBegin = false;
11739 MS0->succeessfulFlag = true;
11740 MS0->endFlag = true;
11745 -(MAPSCRIPT0*)setStageClear:(MAPSCRIPT0*)MS0{
11747 stageClearFlag = true;
11749 if(MS0->sc.edcdFlag)
11750 stageClearFlag2 = true;
11751 battleBegin = false;
11753 MS0->succeessfulFlag = true;
11754 MS0->endFlag = true;
11759 -(MAPSCRIPT0*)setGameOver:(MAPSCRIPT0*)MS0{
11761 gaov.img = MS0->gaov.img;
11763 gameOverFlag = true;
11764 battleBegin = false;
11766 MS0->succeessfulFlag = true;
11767 MS0->endFlag = true;
11772 -(IBAction)gameOverSubmit:(id)sender{
11779 [GameOverWindow close];
11780 [titleWindow makeKeyAndOrderFront:nil];
11784 -(IBAction)battleReadyUpStartBtn:(id)sender{
11787 P[0].resource = [battleReadyUpSupply1 intValue];
11788 P[0].food = [battleReadyUpFood1 intValue];
11789 P[0].money = [battleReadyUpMoney1 intValue];
11791 P[1].resource = [battleReadyUpSupply2 intValue];
11792 P[1].food = [battleReadyUpFood2 intValue];
11793 P[1].money = [battleReadyUpMoney2 intValue];
11795 setBattleModeFlag = false;
11800 -(IBAction)battleReadyUpState1:(id)sender{
11801 retardhelp1 = true;
11803 -(IBAction)battleReadyUpState2:(id)sender{
11804 retardhelp2 = true;
11813 -(IBAction)selectionBtn1:(id)sender{
11815 [selectionWindow close];
11817 -(IBAction)selectionBtn2:(id)sender{
11819 [selectionWindow close];
11821 -(IBAction)selectionBtn3:(id)sender{
11823 [selectionWindow close];
11825 -(IBAction)selectionBtn4:(id)sender{
11827 [selectionWindow close];
11829 -(IBAction)selectionBtn5:(id)sender{
11831 [selectionWindow close];
11833 -(IBAction)selectionBtn6:(id)sender{
11835 [selectionWindow close];
11837 -(IBAction)selectionBtn7:(id)sender{
11839 [selectionWindow close];
11841 -(IBAction)selectionBtn8:(id)sender{
11843 [selectionWindow close];
11845 -(IBAction)selectionBtn9:(id)sender{
11847 [selectionWindow close];
11854 NSString *directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
11855 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
11858 NSData *InitialData = [NSData dataWithContentsOfFile:@"data/Others/var.txt"];
11859 NSString *pathVar = @"data/Others/var.txt";
11860 NSString *fileData = @"";
11863 [[NSFileManager defaultManager] createFileAtPath:pathVar contents:nil attributes:nil];
11867 fileData = [NSString stringWithContentsOfFile:pathVar encoding:NSUTF8StringEncoding error:nil];
11868 NSArray *fileDataArray = [fileData componentsSeparatedByString:@"\n"];
11870 for(int i = 0;i < [fileDataArray count];i++){
11872 NSArray *item = [[fileDataArray objectAtIndex:i] componentsSeparatedByString:@","];
11874 Hensuu[i] = [[item objectAtIndex:1] retain];
11875 HensuuName[i] = [[item objectAtIndex:2] retain];
11887 @implementation FieldSceneEF
11894 - (id)initWithFrame:(NSRect)frame
11896 self = [super initWithFrame:frame];
11898 // Initialization code here.
11900 scheduledTimerWithTimeInterval:0.015
11902 selector:@selector(EventLoopBV:)
11911 -(void)EventLoopBV:(NSTimer*)timer{
11913 static int aniFrame = 0;
11915 if(animationFlag3){
11921 if(!animationFlag1 && !animationFlag2){
11932 U->C.A = attackCR2;
11934 static bool pussyMikoto = false;
11938 ani = U->C.A->AN.ANI;
11941 for (int i = 0; i < aniFrameCnt;i++) {
11946 [ani->snd setCurrentTime:0];
11948 ani->snd.loops = NO;
11951 pussyMikoto = true;
11955 U->C.A->AN.ANI = ani;
11958 if(aniFrame < U->C.A->AN.frame){
11964 pussyMikoto = false;
11965 animationFlag3 = true;
11973 [self setNeedsDisplay:YES];
11976 -(void)DrawImage:(NSImage*)image x:(float)x y:(float)y a:(float)a{
11978 frRect.size.height = image.size.height;
11979 frRect.size.width = image.size.width;
11981 frRect.origin.x = 0;
11982 frRect.origin.y = 0;
11985 drRect.origin.x = x;
11986 drRect.origin.y = y;
11987 drRect.size.height = image.size.height;
11988 drRect.size.width = image.size.width;
11990 [image drawInRect:drRect fromRect:frRect operation:NSCompositeSourceOver fraction:a respectFlipped:YES hints:nil];
11994 - (void)drawRect:(NSRect)dirtyRect
11996 // Drawing code here.
11997 if(animationFlag3) return;
12002 if(animationFlag1 || animationFlag2){
12008 U->C.A = attackCR2;
12010 ani = U->C.A->AN.ANI;
12015 for (int i = 0; i < aniFrameCnt;i++) {
12023 [self DrawImage:ani->img x:ani->x + ani->ax y:ani->y + ani->ay a:1.0f];