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:)];
35 [loadFileOutputListTV setTarget:self];
36 [loadFileOutputListTV setAction:@selector(clickLFOL:)];
38 [saveGameListTV setTarget:self];
39 [saveGameListTV setAction:@selector(clickSGL)];
43 CAttackListMA = [NSMutableArray new];
44 CResearchListMA = [NSMutableArray new];
45 BCreateListMA = [NSMutableArray new];
46 CSummonListMA = [NSMutableArray new];
47 saveFileInputListMA = [NSMutableArray new];
48 loadFileOutputListMA = [NSMutableArray new];
49 saveGameListMA = [NSMutableArray new];
51 SAV = [NSMutableArray new];
53 [IVimage setHidden:YES];
54 [TFname setHidden:YES];
55 [TFmessage setHidden:YES];
56 [BXname setHidden:YES];
57 [BXmessage setHidden:YES];
58 [IVimage setEnabled:NO];
59 [TFname setEnabled:NO];
60 [TFmessage setEnabled:NO];
68 scheduledTimerWithTimeInterval:1.0/30
70 selector:@selector(EventLoopFS:)
76 fieldSceneSelfFlag = true;
79 P[0].name = [@"青軍" retain];
85 P[1].name = [@"赤軍" retain];
91 P[2].name = [@"黄軍" retain];
106 -(void)writeInt:(FILE*)fp val:(int)val{
109 for(counter = INT_MAX;counter > 0;counter>>=8){
110 unsigned char nowData = val&0xFF;
112 fwrite(&nowData, sizeof(unsigned char), 1, fp);
116 -(void)writeNSString:(FILE*)fp str:(NSString*)str{
117 int length = (int)[str length];
118 [self writeInt:fp val:length];
119 fwrite([str UTF8String], sizeof(str), length, fp);
122 -(void)writeNSImage:(FILE*)fp str:(NSImage*)img adCnt:(int*)adCnt adFix:(int*)adFix{
125 NSString *directoryPath;
127 directoryPath = [[NSBundle mainBundle] bundlePath];
128 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
130 NSString* Cpath = @"Contents/Resources/";
131 [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
134 NSData *imgData = [img TIFFRepresentation];
135 NSBitmapImageRep *brep = [NSBitmapImageRep imageRepWithData:imgData];
136 imgData = [brep representationUsingType:NSPNGFileType properties:nil];
137 [imgData writeToFile:@INSTANT_IMG atomically:YES];
139 fpx = fopen(INSTANT_IMG, "rb");
140 [self fcopy:fpx wfp:fp adCnt:adCnt adFix:adFix];
148 -(int)fcopy:(FILE *)rfp wfp:(FILE *)wfp adCnt:(int*)adCnt adFix:(int*)adFix{
150 unsigned char in_buf[1024], out_buf[1024];
159 rinf = (int)fread((void*)in_buf, 1, 1024, rfp);
163 memcpy((void*)out_buf, (void*)in_buf, 1024);
164 rinf = (int)fwrite((void*)out_buf, 1, rinf, wfp);
172 fpt -= ((*adCnt)-1)*1024;
174 [self writeInt:wfp val:*adCnt];
175 [self writeInt:wfp val:*adFix];
180 rinf = (int)fread((void*)in_buf, 1, 1024, rfp);
184 memcpy((void*)out_buf, (void*)in_buf, 1024);
185 rinf = (int)fwrite((void*)out_buf, 1, rinf, wfp);
194 -(void)writeMapScript:(FILE*)fp{
196 [self writeInt:fp val:(int)sdd.MS.EGClight.endType1];
197 [self writeInt:fp val:(int)sdd.MS.EGClight.endType2];
199 for(int i = 0;i < 64;i++)
200 [self writeNSString:fp str:sdd.MS.EGClight.etValue1[i]];
201 for(int i = 0;i < 64;i++)
202 [self writeNSString:fp str:sdd.MS.EGClight.etValue2[i]];
204 [self writeInt:fp val:(int)sdd.MS.EGCdark.endType1];
205 [self writeInt:fp val:(int)sdd.MS.EGCdark.endType2];
207 for(int i = 0;i < 64;i++)
208 [self writeNSString:fp str:sdd.MS.EGCdark.etValue1[i]];
209 for(int i = 0;i < 64;i++)
210 [self writeNSString:fp str:sdd.MS.EGCdark.etValue2[i]];
213 [self writeInt:fp val:(int)sdd.MS.playerSet1];
214 [self writeInt:fp val:(int)sdd.MS.playerSet2];
215 [self writeInt:fp val:(int)sdd.MS.battleSetMode];
216 [self writeInt:fp val:(int)sdd.MS.employAllowedFlag];
217 [self writeInt:fp val:(int)sdd.MS.buildAllowedFlag];
218 [self writeInt:fp val:(int)sdd.MS.summonAllowedFlag];
220 [self writeInt:fp val:(int)sdd.MS.scenarioSetMode];
221 [self writeInt:fp val:(int)sdd.MS.scenarioNumbCrnt];
222 [self writeInt:fp val:(int)sdd.MS.scenarioNumbNext];
224 for(int i = 0;i < 4096;i++)
225 [self writeInt:fp val:sdd.MS.guildListRegist[i]];
226 [self writeInt:fp val:(int)sdd.MS.guildListRegistNum11];
227 [self writeInt:fp val:(int)sdd.MS.guildListRegistNum12];
229 for(int i = 0;i < 4096;i++)
230 [self writeInt:fp val:sdd.MS.guildListRegist2[i]];
231 [self writeInt:fp val:(int)sdd.MS.guildListRegistNum21];
232 [self writeInt:fp val:(int)sdd.MS.guildListRegistNum22];
235 sdd.MS.SCRPTnameCnt = (int)[sdd.MS.SCRPTname count];
237 [self writeInt:fp val:(int)sdd.MS.SCRPTnameCnt];
238 for(int i = 0;i < sdd.MS.SCRPTnameCnt;i++)
239 [self writeNSString:fp str:sdd.MS.SCRPTname[i]];
241 MAPSCRIPTD *SMSDtop = sdd.MS.D;
246 sdd.MS.D = sdd.MS.D->next;
248 [self writeInt:fp val:(int)sdd.MS.Dcnt];
250 for (int i = 0;i < sdd.MS.Dcnt;i++) {
252 sdd.MS.D->SCRPTcnt = (int)[sdd.MS.D->SCRPT count];
253 [self writeInt:fp val:(int)sdd.MS.D->SCRPTcnt];
254 for(int j = 0;j < sdd.MS.D->SCRPTcnt;j++)
255 [self writeNSString:fp str:sdd.MS.D->SCRPT[j]];
257 [self writeInt:fp val:(int)sdd.MS.D->endFlag];
258 [self writeInt:fp val:(int)sdd.MS.D->index];
259 [self writeInt:fp val:(int)sdd.MS.D->x];
260 [self writeInt:fp val:(int)sdd.MS.D->y];
261 [self writeInt:fp val:(int)sdd.MS.D->type];
262 [self writeInt:fp val:(int)sdd.MS.D->ET1];
263 [self writeInt:fp val:(int)sdd.MS.D->ET2];
264 [self writeInt:fp val:(int)sdd.MS.D->ET3];
265 [self writeInt:fp val:(int)sdd.MS.D->ET4];
266 [self writeInt:fp val:(int)sdd.MS.D->ETtype];
267 [self writeInt:fp val:(int)sdd.MS.D->onlyInitialDeley];
268 [self writeInt:fp val:(int)sdd.MS.D->initialDeleyedFlag];
269 [self writeInt:fp val:(int)sdd.MS.D->switch1f];
270 [self writeInt:fp val:(int)sdd.MS.D->switch2f];
272 sdd.MS.D->switch1cnt = 0;
273 if(sdd.MS.D->switch1)
274 for(int j = 0;*(sdd.MS.D->switch1 + j) > 0;j++) {
275 sdd.MS.D->switch1cnt++;
276 }[self writeInt:fp val:(int)sdd.MS.D->switch1cnt];
278 sdd.MS.D->switch2cnt = 0;
279 if(sdd.MS.D->switch2)
280 for(int j = 0;*(sdd.MS.D->switch2 + j) > 0;j++) {
281 sdd.MS.D->switch2cnt++;
282 }[self writeInt:fp val:(int)sdd.MS.D->switch2cnt];
284 for(int j = 0;j < sdd.MS.D->switch1cnt;j++) {
285 [self writeInt:fp val:(int)*(sdd.MS.D->switch1 + j)];
288 for(int j = 0;j < sdd.MS.D->switch2cnt;j++) {
289 [self writeInt:fp val:(int)*(sdd.MS.D->switch2 + j)];
293 MAPSCRIPT0 *SMSPtop = sdd.MS.D->P;
296 while (sdd.MS.D->P) {
298 sdd.MS.D->P = sdd.MS.D->P->next;
299 }sdd.MS.D->P = SMSPtop;
300 [self writeInt:fp val:(int)sdd.MS.D->Pcnt];
302 for (int j = 0;j < sdd.MS.D->Pcnt;j++) {
304 [self writeInt:fp val:sdd.MS.D->P->endFlag];
305 [self writeInt:fp val:sdd.MS.D->P->succeessfulFlag];
306 [self writeInt:fp val:sdd.MS.D->P->indent];
307 [self writeInt:fp val:sdd.MS.D->P->val];
308 [self writeInt:fp val:sdd.MS.D->P->valCnt];
309 [self writeInt:fp val:sdd.MS.D->P->timerMin];
310 [self writeInt:fp val:sdd.MS.D->P->timerSec];
311 [self writeInt:fp val:sdd.MS.D->P->timerEntire];
313 [self writeInt:fp val:sdd.MS.D->P->timerFlag];
314 [self writeInt:fp val:sdd.MS.D->P->timerVisible];
315 [self writeInt:fp val:sdd.MS.D->P->timerRun];
316 [self writeInt:fp val:sdd.MS.D->P->timerMode];
317 [self writeInt:fp val:sdd.MS.D->P->wait];
318 [self writeInt:fp val:sdd.MS.D->P->titleBack];
320 [self writeNSString:fp str:sdd.MS.D->P->label];
321 [self writeNSString:fp str:sdd.MS.D->P->labelJump];
322 [self writeNSString:fp str:sdd.MS.D->P->memo];
326 sdd.MS.D->P->switch1cnt = 0;
327 if(sdd.MS.D->P->switch1)
328 for(int k = 0;*(sdd.MS.D->P->switch1 + k) > 0;k++) {
329 sdd.MS.D->P->switch1cnt++;
330 }[self writeInt:fp val:(int)sdd.MS.D->P->switch1cnt];
332 sdd.MS.D->P->switch2cnt = 0;
333 if(sdd.MS.D->P->switch2)
334 for(int k = 0;*(sdd.MS.D->P->switch2 + k) > 0;k++) {
335 sdd.MS.D->P->switch2cnt++;
336 }[self writeInt:fp val:(int)sdd.MS.D->P->switch2cnt];
338 for(int k = 0;k < sdd.MS.D->P->switch1cnt;k++) {
339 [self writeInt:fp val:(int)*(sdd.MS.D->P->switch1 + k)];
342 for(int k = 0;k < sdd.MS.D->P->switch2cnt;k++) {
343 [self writeInt:fp val:(int)*(sdd.MS.D->P->switch2 + k)];
346 [self writeMapScriptBGM:fp];
347 [self writeMapScriptSE:fp];
348 [self writeMapScriptSC:fp];
349 [self writeMapScriptGAOV:fp];
351 [self writeInt:fp val:sdd.MS.D->P->type];
353 if(sdd.MS.D->P->type == 0)
354 [self writeMapScript1:fp];
356 if(sdd.MS.D->P->type == 1){
357 MAPSCRIPT2 *SMSP2top = sdd.MS.D->P->S2;
359 sdd.MS.D->P->S2cnt = 0;
360 while (sdd.MS.D->P->S2) {
361 sdd.MS.D->P->S2cnt++;
362 sdd.MS.D->P->S2 = sdd.MS.D->P->S2->next;
363 }sdd.MS.D->P->S2 = SMSP2top;
364 [self writeInt:fp val:sdd.MS.D->P->S2cnt];
367 for (int k = 0;k < sdd.MS.D->P->S2cnt;k++) {
368 [self writeMapScript2:fp];
369 sdd.MS.D->P->S2 = sdd.MS.D->P->S2->next;
370 }sdd.MS.D->P->S2 = SMSP2top;
373 if(sdd.MS.D->P->type == 22){
374 MAPSCRIPT3 *SMSP3top = sdd.MS.D->P->S3;
376 sdd.MS.D->P->S3cnt = 0;
377 while (sdd.MS.D->P->S3) {
378 sdd.MS.D->P->S3cnt++;
379 sdd.MS.D->P->S3 = sdd.MS.D->P->S3->next;
380 }sdd.MS.D->P->S3 = SMSP3top;
381 [self writeInt:fp val:sdd.MS.D->P->S3cnt];
384 for (int k = 0;k < sdd.MS.D->P->S3cnt;k++) {
385 [self writeMapScript3:fp];
386 sdd.MS.D->P->S3 = sdd.MS.D->P->S3->next;
387 }sdd.MS.D->P->S3 = SMSP3top;
391 if(sdd.MS.D->P->type == 6)
392 [self writeMapScript4:fp];
394 if(sdd.MS.D->P->type == 23){
395 MAPSCRIPT5 *SMSP5top = sdd.MS.D->P->S5;
397 sdd.MS.D->P->S5cnt = 0;
398 while (sdd.MS.D->P->S5) {
399 sdd.MS.D->P->S5cnt++;
400 sdd.MS.D->P->S5 = sdd.MS.D->P->S5->next;
401 }sdd.MS.D->P->S5 = SMSP5top;
402 [self writeInt:fp val:sdd.MS.D->P->S5cnt];
404 for (int k = 0;k < sdd.MS.D->P->S5cnt;k++) {
405 [self writeMapScript5:fp];
406 sdd.MS.D->P->S5 = sdd.MS.D->P->S5->next;
407 }sdd.MS.D->P->S5 = SMSP5top;
411 if(sdd.MS.D->P->type == 10)
412 [self writeMapScript6:fp];
416 sdd.MS.D->P = sdd.MS.D->P->next;
417 }sdd.MS.D->P = SMSPtop;
420 sdd.MS.D = sdd.MS.D->next;
425 -(void)writeMapScript1:(FILE*)fp{
427 if(!sdd.MS.D->P->S1.name)
428 sdd.MS.D->P->S1.name = [@"" retain];
429 if(!sdd.MS.D->P->S1.str)
430 sdd.MS.D->P->S1.str = [@"" retain];
431 if(!sdd.MS.D->P->S1.iName)
432 sdd.MS.D->P->S1.iName = [@"" retain];
433 if(!sdd.MS.D->P->S1.nameID)
434 sdd.MS.D->P->S1.nameID = [@"" retain];
436 [self writeNSString:fp str:sdd.MS.D->P->S1.name];
437 [self writeNSString:fp str:sdd.MS.D->P->S1.str];
438 [self writeNSString:fp str:sdd.MS.D->P->S1.iName];
439 [self writeNSString:fp str:sdd.MS.D->P->S1.nameID];
450 -(void)writeMapScript2:(FILE*)fp{
452 [self writeNSString:fp str:sdd.MS.D->P->S2->selection];
453 [self writeNSString:fp str:sdd.MS.D->P->S2->labelJump];
456 //struct _MAPSCRIPT2 *next;
463 -(void)writeMapScript3:(FILE*)fp{
465 [self writeInt:fp val:sdd.MS.D->P->S3->x];
466 [self writeInt:fp val:sdd.MS.D->P->S3->y];
467 [self writeInt:fp val:sdd.MS.D->P->S3->flag];
469 [self writeInt:fp val:sdd.MS.D->P->S3->type];
470 [self writeInt:fp val:sdd.MS.D->P->S3->team];
472 [self writeInt:fp val:sdd.MS.D->P->S3->unitNum];
473 [self writeInt:fp val:sdd.MS.D->P->S3->loadInt];
476 //struct _MAPSCRIPT3 *next;
492 -(void)writeMapScript4:(FILE*)fp{
494 [self writeInt:fp val:sdd.MS.D->P->S4.lagFixFlag];
495 [self writeNSString:fp str:sdd.MS.D->P->S4.COMPrabel];
496 [self writeNSString:fp str:sdd.MS.D->P->S4.FAILrabel];
498 [self writeInt:fp val:sdd.MS.D->P->S4.suicchiFlag];
500 sdd.MS.D->P->S4.suicchiCnt = 0;
501 if(sdd.MS.D->P->S4.suicchi)
502 for(int l = 0;*(sdd.MS.D->P->S4.suicchi + l) > 0;l++) {
503 sdd.MS.D->P->S4.suicchiCnt++;
504 }[self writeInt:fp val:(int)sdd.MS.D->P->S4.suicchiCnt];
506 for(int l = 0;l < sdd.MS.D->P->S4.suicchiCnt;l++) {
507 [self writeInt:fp val:(int)*(sdd.MS.D->P->S4.suicchi + l)];
510 [self writeInt:fp val:sdd.MS.D->P->S4.suicchiONOFF];
513 [self writeInt:fp val:sdd.MS.D->P->S4.hensuFlag];
514 [self writeInt:fp val:sdd.MS.D->P->S4.hensu1];
515 [self writeInt:fp val:sdd.MS.D->P->S4.teisuFlag];
516 [self writeInt:fp val:sdd.MS.D->P->S4.teisuValue];
517 [self writeInt:fp val:sdd.MS.D->P->S4.hensu2flag];
518 [self writeInt:fp val:sdd.MS.D->P->S4.hensu2];
519 [self writeInt:fp val:sdd.MS.D->P->S4.hensuType];
521 [self writeInt:fp val:sdd.MS.D->P->S4.timerFlag];
522 [self writeInt:fp val:sdd.MS.D->P->S4.timerMin];
523 [self writeInt:fp val:sdd.MS.D->P->S4.timerSec];
524 [self writeInt:fp val:sdd.MS.D->P->S4.timerType];
526 [self writeInt:fp val:sdd.MS.D->P->S4.unitNumFlag];
527 [self writeInt:fp val:sdd.MS.D->P->S4.team];
528 [self writeInt:fp val:sdd.MS.D->P->S4.unitNum];
529 [self writeInt:fp val:sdd.MS.D->P->S4.unitType];
530 [self writeInt:fp val:sdd.MS.D->P->S4.unitTypeFlag];
533 UNIT2 *subjTop = sdd.MS.D->P->S4.subj;
535 sdd.MS.D->P->S4.subjCnt = 0;
536 while (sdd.MS.D->P->S4.subj) {
537 sdd.MS.D->P->S4.subjCnt++;
538 sdd.MS.D->P->S4.subj = sdd.MS.D->P->S4.subj->next;
539 }sdd.MS.D->P->S4.subj = subjTop;
540 [self writeInt:fp val:sdd.MS.D->P->S4.subjCnt];
542 for (int k = 0;k < sdd.MS.D->P->S4.subjCnt;k++) {
543 [self writeMapScript4subj:fp];
544 sdd.MS.D->P->S4.subj = sdd.MS.D->P->S4.subj->next;
545 }sdd.MS.D->P->S4.subj = subjTop;
550 [self writeInt:fp val:sdd.MS.D->P->S4.placeFlag];
551 PLACEMENT *waypTop = sdd.MS.D->P->S4.wayp;
553 sdd.MS.D->P->S4.waypCnt = 0;
554 while (sdd.MS.D->P->S4.wayp) {
555 sdd.MS.D->P->S4.waypCnt++;
556 sdd.MS.D->P->S4.wayp = sdd.MS.D->P->S4.wayp->next;
557 }sdd.MS.D->P->S4.wayp = waypTop;
558 [self writeInt:fp val:sdd.MS.D->P->S4.waypCnt];
560 for (int k = 0;k < sdd.MS.D->P->S4.waypCnt;k++) {
561 [self writeMapScript4wayp:fp];
562 sdd.MS.D->P->S4.wayp = sdd.MS.D->P->S4.wayp->next;
563 }sdd.MS.D->P->S4.wayp = waypTop;
565 [self writeInt:fp val:sdd.MS.D->P->S4.unitCMDflag];
566 [self writeInt:fp val:sdd.MS.D->P->S4.unitCMD];
569 [self writeInt:fp val:sdd.MS.D->P->S4.objeFlag];
570 UNIT2 *objeTop = sdd.MS.D->P->S4.obje;
572 sdd.MS.D->P->S4.objeCnt = 0;
573 while (sdd.MS.D->P->S4.obje) {
574 sdd.MS.D->P->S4.objeCnt++;
575 sdd.MS.D->P->S4.obje = sdd.MS.D->P->S4.obje->next;
576 }sdd.MS.D->P->S4.obje = objeTop;
577 [self writeInt:fp val:sdd.MS.D->P->S4.objeCnt];
579 for (int k = 0;k < sdd.MS.D->P->S4.objeCnt;k++) {
580 [self writeMapScript4obje:fp];
581 sdd.MS.D->P->S4.obje = sdd.MS.D->P->S4.obje->next;
582 }sdd.MS.D->P->S4.obje = objeTop;
584 [self writeInt:fp val:sdd.MS.D->P->S4.objeRange];
588 [self writeInt:fp val:sdd.MS.D->P->S4.buildFlag];
589 BUILD2 *buildTop = sdd.MS.D->P->S4.build;
591 sdd.MS.D->P->S4.buildCnt = 0;
592 while (sdd.MS.D->P->S4.build) {
593 sdd.MS.D->P->S4.buildCnt++;
594 sdd.MS.D->P->S4.build = sdd.MS.D->P->S4.build->next;
595 }sdd.MS.D->P->S4.build = buildTop;
596 [self writeInt:fp val:sdd.MS.D->P->S4.buildCnt];
598 for (int k = 0;k < sdd.MS.D->P->S4.buildCnt;k++) {
599 [self writeMapScript4build:fp];
600 sdd.MS.D->P->S4.build = sdd.MS.D->P->S4.build->next;
601 }sdd.MS.D->P->S4.build = buildTop;
606 -(void)writeMapScript4subj:(FILE*)fp{
608 [self writeInt:fp val:sdd.MS.D->P->S4.subj->team];
609 [self writeInt:fp val:sdd.MS.D->P->S4.subj->x];
610 [self writeInt:fp val:sdd.MS.D->P->S4.subj->y];
613 //struct _UNIT2 *next;
622 -(void)writeMapScript4wayp:(FILE*)fp{
624 [self writeInt:fp val:sdd.MS.D->P->S4.wayp->type];
625 [self writeInt:fp val:sdd.MS.D->P->S4.wayp->x];
626 [self writeInt:fp val:sdd.MS.D->P->S4.wayp->y];
627 [self writeInt:fp val:sdd.MS.D->P->S4.wayp->z];
628 [self writeInt:fp val:sdd.MS.D->P->S4.wayp->x2];
629 [self writeInt:fp val:sdd.MS.D->P->S4.wayp->y2];
632 //struct _PLACEMENT *next;
643 -(void)writeMapScript4obje:(FILE*)fp{
645 [self writeInt:fp val:sdd.MS.D->P->S4.obje->team];
646 [self writeInt:fp val:sdd.MS.D->P->S4.obje->x];
647 [self writeInt:fp val:sdd.MS.D->P->S4.obje->y];
650 //struct _UNIT2 *next;
659 -(void)writeMapScript4build:(FILE*)fp{
661 [self writeInt:fp val:sdd.MS.D->P->S4.build->team];
662 [self writeInt:fp val:sdd.MS.D->P->S4.build->x];
663 [self writeInt:fp val:sdd.MS.D->P->S4.build->y];
666 //struct _BUILD2 *next;
667 //struct _BUILDCHIP *C;
675 -(void)writeMapScript5:(FILE*)fp{
677 [self writeInt:fp val:sdd.MS.D->P->S5->x];
678 [self writeInt:fp val:sdd.MS.D->P->S5->y];
679 [self writeInt:fp val:sdd.MS.D->P->S5->type];
680 [self writeInt:fp val:sdd.MS.D->P->S5->team];
681 [self writeInt:fp val:sdd.MS.D->P->S5->unitNum];
682 [self writeInt:fp val:sdd.MS.D->P->S5->saveInt];
685 //struct _MAPSCRIPT5 *next;
701 -(void)writeMapScript6:(FILE*)fp{
703 [self writeInt:fp val:sdd.MS.D->P->S6.team];
705 [self writeInt:fp val:sdd.MS.D->P->S6.RCsupply];
706 [self writeInt:fp val:sdd.MS.D->P->S6.RCfood];
707 [self writeInt:fp val:sdd.MS.D->P->S6.RCmoney];
709 [self writeInt:fp val:sdd.MS.D->P->S6.RCsupplyAdd];
710 [self writeInt:fp val:sdd.MS.D->P->S6.RCfoodAdd];
711 [self writeInt:fp val:sdd.MS.D->P->S6.RCmoneyAdd];
713 [self writeInt:fp val:sdd.MS.D->P->S6.RCsupplyValue];
714 [self writeInt:fp val:sdd.MS.D->P->S6.RCfoodValue];
715 [self writeInt:fp val:sdd.MS.D->P->S6.RCmoneyValue];
717 [self writeInt:fp val:sdd.MS.D->P->S6.RCsupplySelect];
718 [self writeInt:fp val:sdd.MS.D->P->S6.RCfoodSelect];
719 [self writeInt:fp val:sdd.MS.D->P->S6.RCmoneySelect];
721 [self writeInt:fp val:sdd.MS.D->P->S6.RCsupplyS];
722 [self writeInt:fp val:sdd.MS.D->P->S6.RCfoodS];
723 [self writeInt:fp val:sdd.MS.D->P->S6.RCmoneyS];
750 -(void)writeMapScriptBGM:(FILE*)fp{
752 [self writeNSString:fp str:sdd.MS.D->P->BGM.name];
753 [self writeNSString:fp str:sdd.MS.D->P->BGM.fName];
762 -(void)writeMapScriptSE:(FILE*)fp{
764 [self writeNSString:fp str:sdd.MS.D->P->SE.name];
765 [self writeNSString:fp str:sdd.MS.D->P->SE.fName];
774 -(void)writeMapScriptSC:(FILE*)fp{
776 [self writeInt:fp val:sdd.MS.D->P->sc.scFlag];
777 [self writeInt:fp val:sdd.MS.D->P->sc.edcdFlag];
785 -(void)writeMapScriptGAOV:(FILE*)fp{
787 [self writeNSString:fp str:sdd.MS.D->P->gaov.fNname];
788 [self writeInt:fp val:sdd.MS.D->P->gaov.gaovFlag];
789 [self writeInt:fp val:sdd.MS.D->P->gaov.edcdFlag];
799 -(int)readInt:(FILE*)fp{
804 for(counter= INT_MAX;counter > 0;counter >>= 8){
805 unsigned char nowData = 0;
806 fread(&nowData, sizeof(unsigned char), 1, fp);
807 result |= (int)nowData << shiftLen;
814 -(NSString*)readNSString:(FILE*)fp strOut:(NSString*)strOut{
815 int length = [self readInt:fp];
817 fread(strOutcc, sizeof(strOut), length, fp);
818 strOut = [[NSString stringWithUTF8String:strOutcc] retain];
823 -(NSImage*)readNSImage:(FILE*)fp imgOut:(NSImage*)imgOut dcnt:(int)dcnt dfix:(int)dfix{
824 unsigned char idat[1024];
827 NSMutableData *binaryData = [NSMutableData dataWithCapacity:sizeof(idat)];
830 for(int i = 0;i < dcnt;i++){
831 size += fread(idat, 1, 1024, fp);
840 NSMutableData* data = [NSMutableData dataWithBytes:idat length:sizeof(unsigned char)*1024];
841 [binaryData appendData:data];
845 imgOut = [[[NSImage alloc] initWithData:binaryData] retain];
850 -(void)readBiuldD:(FILE*)fp row:(int)r{
852 sdd2[datRow].dB[r].number = (int)[self readInt:fp];
853 sdd2[datRow].dB[r].team = (int)[self readInt:fp];
854 sdd2[datRow].dB[r].chipNumber = (int)[self readInt:fp];
855 sdd2[datRow].dB[r].makeLv = (int)[self readInt:fp];
857 sdd2[datRow].dB[r].x = (int)[self readInt:fp];
858 sdd2[datRow].dB[r].y = (int)[self readInt:fp];
859 sdd2[datRow].dB[r].z = (int)[self readInt:fp];
861 sdd2[datRow].dB[r].dead = (int)[self readInt:fp];
863 sdd2[datRow].dB[r].imgAdCnt = (int)[self readInt:fp];
864 sdd2[datRow].dB[r].imgAdFix = (int)[self readInt:fp];
865 sdd2[datRow].dB[r].img = [self readNSImage:fp imgOut:sdd2[datRow].dB[r].img dcnt:sdd2[datRow].dB[r].imgAdCnt dfix:sdd2[datRow].dB[r].imgAdFix];
867 [self readBuildChipD:fp val:&sdd2[datRow].dB[r].C];
870 -(void)readBuildChipD:(FILE*)fp val:(BUILDCHIPD*)val{
872 val->chipNumb = (int)[self readInt:fp];
873 val->name = [[self readNSString:fp strOut:val->name] retain];
874 val->nameID = [[self readNSString:fp strOut:val->nameID] retain];
876 fread(&val->S_C, sizeof(BSTATUS), 1, fp);
878 //NSLog(@"awww man...");
883 -(void)readUnitD:(FILE*)fp row:(int)r{
885 sdd2[datRow].dU[r].CPU = (int)[self readInt:fp];
886 sdd2[datRow].dU[r].number = (int)[self readInt:fp];
887 sdd2[datRow].dU[r].team = (int)[self readInt:fp];
888 sdd2[datRow].dU[r].chipNumber = (int)[self readInt:fp];
889 sdd2[datRow].dU[r].chipNumberL = (int)[self readInt:fp];
891 sdd2[datRow].dU[r].x = (int)[self readInt:fp];
892 sdd2[datRow].dU[r].y = (int)[self readInt:fp];
893 sdd2[datRow].dU[r].z = (int)[self readInt:fp];
895 sdd2[datRow].dU[r].ix = (int)[self readInt:fp];
896 sdd2[datRow].dU[r].iy = (int)[self readInt:fp];
897 sdd2[datRow].dU[r].iz = (int)[self readInt:fp];
899 sdd2[datRow].dU[r].dead = (int)[self readInt:fp];
901 sdd2[datRow].dU[r].loadChipFlag = (int)[self readInt:fp];
903 sdd2[datRow].dU[r].unControlable = (int)[self readInt:fp];
904 sdd2[datRow].dU[r].joinArmyFromNext = (int)[self readInt:fp];
905 sdd2[datRow].dU[r].persuasion = (int)[self readInt:fp];
907 sdd2[datRow].dU[r].targType1L = (int)[self readInt:fp];
908 sdd2[datRow].dU[r].targType2L = (int)[self readInt:fp];
909 sdd2[datRow].dU[r].targType1D = (int)[self readInt:fp];
910 sdd2[datRow].dU[r].targType2D = (int)[self readInt:fp];
912 sdd2[datRow].dU[r].army = [[self readNSString:fp strOut:sdd2[datRow].dU[r].army] retain];
915 sdd2[datRow].dU[r].imgAdCnt = (int)[self readInt:fp];
916 sdd2[datRow].dU[r].imgAdFix = (int)[self readInt:fp];
917 sdd2[datRow].dU[r].img = [self readNSImage:fp imgOut:sdd2[datRow].dU[r].img dcnt:sdd2[datRow].dU[r].imgAdCnt dfix:sdd2[datRow].dU[r].imgAdFix];
920 [self readUnitChipD:fp val:&sdd2[datRow].dU[r].C];
921 [self readUnitChipLD:fp val:&sdd2[datRow].dU[r].CL];
925 -(void)readUnitChipD:(FILE*)fp val:(UNITCHIPD*)val{
927 val->chipNumb = (int)[self readInt:fp];
928 val->name = [[self readNSString:fp strOut:val->name] retain];
929 val->nameNick = [[self readNSString:fp strOut:val->nameNick] retain];
930 val->nameClass = [[self readNSString:fp strOut:val->nameClass] retain];
931 val->nameID = [[self readNSString:fp strOut:val->nameID] retain];
935 fread(&val->R_C, sizeof(RESIST), 1, fp);
936 fread(&val->S_C, sizeof(STATUS), 1, fp);
938 //NSLog(@"creepy jude...");
941 -(void)readUnitChipLD:(FILE*)fp val:(LOADCHIPD*)val{
943 val->chipNumb = (int)[self readInt:fp];
944 val->name = [[self readNSString:fp strOut:val->name] retain];
945 val->nameID = [[self readNSString:fp strOut:val->nameID] retain];
949 fread(&val->R_C, sizeof(RESIST), 1, fp);
950 fread(&val->S_C, sizeof(STATUS2), 1, fp);
952 //NSLog(@"creepy jude...2");
955 -(void)readMapScript:(FILE*)fp{
957 sdd2[datRow].MS.EGClight.endType1 = (int)[self readInt:fp];
958 sdd2[datRow].MS.EGClight.endType2 = (int)[self readInt:fp];
959 for(int i = 0;i < 64;i++)
960 sdd2[datRow].MS.EGClight.etValue1[i] = [[self readNSString:fp strOut:sdd2[datRow].MS.EGClight.etValue1[i]] retain];
961 for(int i = 0;i < 64;i++)
962 sdd2[datRow].MS.EGClight.etValue2[i] = [[self readNSString:fp strOut:sdd2[datRow].MS.EGClight.etValue2[i]] retain];
964 sdd2[datRow].MS.EGCdark.endType1 = (int)[self readInt:fp];
965 sdd2[datRow].MS.EGCdark.endType2 = (int)[self readInt:fp];
966 for(int i = 0;i < 64;i++)
967 sdd2[datRow].MS.EGCdark.etValue1[i] = [[self readNSString:fp strOut:sdd2[datRow].MS.EGCdark.etValue1[i]] retain];
968 for(int i = 0;i < 64;i++)
969 sdd2[datRow].MS.EGCdark.etValue2[i] = [[self readNSString:fp strOut:sdd2[datRow].MS.EGCdark.etValue2[i]] retain];
971 sdd2[datRow].MS.playerSet1 = (int)[self readInt:fp];
972 sdd2[datRow].MS.playerSet2 = (int)[self readInt:fp];
973 sdd2[datRow].MS.battleSetMode = (int)[self readInt:fp];
974 sdd2[datRow].MS.employAllowedFlag = (int)[self readInt:fp];
975 sdd2[datRow].MS.buildAllowedFlag = (int)[self readInt:fp];
976 sdd2[datRow].MS.summonAllowedFlag = (int)[self readInt:fp];
978 sdd2[datRow].MS.scenarioSetMode = (int)[self readInt:fp];
979 sdd2[datRow].MS.scenarioNumbCrnt = (int)[self readInt:fp];
980 sdd2[datRow].MS.scenarioNumbNext = (int)[self readInt:fp];
982 for(int i = 0;i < 4096;i++)
983 sdd2[datRow].MS.guildListRegist[i] = (int)[self readInt:fp];
984 sdd2[datRow].MS.guildListRegistNum11 = (int)[self readInt:fp];
985 sdd2[datRow].MS.guildListRegistNum12 = (int)[self readInt:fp];
987 for(int i = 0;i < 4096;i++)
988 sdd2[datRow].MS.guildListRegist2[i] = (int)[self readInt:fp];
989 sdd2[datRow].MS.guildListRegistNum21 = (int)[self readInt:fp];
990 sdd2[datRow].MS.guildListRegistNum22 = (int)[self readInt:fp];
993 sdd2[datRow].MS.SCRPTnameCnt = (int)[self readInt:fp];
994 sdd2[datRow].MS.SCRPTname = [NSMutableArray new];
995 for(int j = 0;j < sdd2[datRow].MS.SCRPTnameCnt;j++)
996 [sdd2[datRow].MS.SCRPTname addObject:@""];
997 for(int i = 0;i < sdd2[datRow].MS.SCRPTnameCnt;i++)
998 sdd2[datRow].MS.SCRPTname[i] = [[self readNSString:fp strOut:sdd2[datRow].MS.SCRPTname[i]] retain];
1001 MAPSCRIPTD *SMSDtop = sdd2[datRow].MS.D;
1003 sdd2[datRow].MS.Dcnt = (int)[self readInt:fp];
1005 for (int i = 0;i < sdd2[datRow].MS.Dcnt;i++) {
1008 sdd2[datRow].MS.D = calloc(1, sizeof(MAPSCRIPTD));
1009 if(i + 1 < sdd2[datRow].MS.Dcnt)
1010 sdd2[datRow].MS.D->next = calloc(1, sizeof(MAPSCRIPTD));
1011 SMSDtop = sdd2[datRow].MS.D;
1013 }else if(i + 1 < sdd2[datRow].MS.Dcnt)
1014 sdd2[datRow].MS.D->next = calloc(1, sizeof(MAPSCRIPTD));
1016 sdd2[datRow].MS.D->SCRPTcnt = (int)[self readInt:fp];
1017 sdd2[datRow].MS.D->SCRPT = [NSMutableArray new];
1018 for(int j = 0;j < sdd2[datRow].MS.D->SCRPTcnt;j++)
1019 [sdd2[datRow].MS.D->SCRPT addObject:@""];
1020 for(int j = 0;j < sdd2[datRow].MS.D->SCRPTcnt;j++)
1021 sdd2[datRow].MS.D->SCRPT[j] = [[self readNSString:fp strOut:sdd2[datRow].MS.D->SCRPT[j]] retain];
1024 sdd2[datRow].MS.D->endFlag = (int)[self readInt:fp];
1025 sdd2[datRow].MS.D->index = (int)[self readInt:fp];
1026 sdd2[datRow].MS.D->x = (int)[self readInt:fp];
1027 sdd2[datRow].MS.D->y = (int)[self readInt:fp];
1028 sdd2[datRow].MS.D->type = (int)[self readInt:fp];
1029 sdd2[datRow].MS.D->ET1 = (int)[self readInt:fp];
1030 sdd2[datRow].MS.D->ET2 = (int)[self readInt:fp];
1031 sdd2[datRow].MS.D->ET3 = (int)[self readInt:fp];
1032 sdd2[datRow].MS.D->ET4 = (int)[self readInt:fp];
1033 sdd2[datRow].MS.D->ETtype = (int)[self readInt:fp];
1034 sdd2[datRow].MS.D->onlyInitialDeley = (int)[self readInt:fp];
1035 sdd2[datRow].MS.D->initialDeleyedFlag = (int)[self readInt:fp];
1036 sdd2[datRow].MS.D->switch1f = (int)[self readInt:fp];
1037 sdd2[datRow].MS.D->switch2f = (int)[self readInt:fp];
1039 sdd2[datRow].MS.D->switch1cnt = (int)[self readInt:fp];
1040 sdd2[datRow].MS.D->switch2cnt = (int)[self readInt:fp];
1042 if(sdd2[datRow].MS.D->switch1cnt > 0)
1043 sdd2[datRow].MS.D->switch1 = calloc(sdd2[datRow].MS.D->switch1cnt, sizeof(int));
1044 for(int j = 0;j < sdd2[datRow].MS.D->switch1cnt;j++) {
1045 *(sdd2[datRow].MS.D->switch1 + j) = (int)[self readInt:fp];
1047 if(sdd2[datRow].MS.D->switch2cnt > 0)
1048 sdd2[datRow].MS.D->switch2 = calloc(sdd2[datRow].MS.D->switch2cnt, sizeof(int));
1049 for(int j = 0;j < sdd2[datRow].MS.D->switch2cnt;j++) {
1050 *(sdd2[datRow].MS.D->switch2 + j) = (int)[self readInt:fp];
1054 MAPSCRIPT0 *SMSPtop = sdd2[datRow].MS.D->P;
1056 sdd2[datRow].MS.D->Pcnt = (int)[self readInt:fp];
1058 for (int j = 0;j < sdd2[datRow].MS.D->Pcnt;j++) {
1061 sdd2[datRow].MS.D->P = calloc(1, sizeof(MAPSCRIPT0));
1062 if(j + 1 < sdd2[datRow].MS.D->Pcnt)
1063 sdd2[datRow].MS.D->P->next = calloc(1, sizeof(MAPSCRIPT0));
1064 SMSPtop = sdd2[datRow].MS.D->P;
1065 }else if(j + 1 < sdd2[datRow].MS.D->Pcnt)
1066 sdd2[datRow].MS.D->P->next = calloc(1, sizeof(MAPSCRIPT0));
1068 sdd2[datRow].MS.D->P->endFlag = (int)[self readInt:fp];
1069 sdd2[datRow].MS.D->P->succeessfulFlag = (int)[self readInt:fp];
1070 sdd2[datRow].MS.D->P->indent = (int)[self readInt:fp];
1071 sdd2[datRow].MS.D->P->val = (int)[self readInt:fp];
1072 sdd2[datRow].MS.D->P->valCnt = (int)[self readInt:fp];
1073 sdd2[datRow].MS.D->P->timerMin = (int)[self readInt:fp];
1074 sdd2[datRow].MS.D->P->timerSec = (int)[self readInt:fp];
1075 sdd2[datRow].MS.D->P->timerEntire = (int)[self readInt:fp];
1077 sdd2[datRow].MS.D->P->timerFlag = (int)[self readInt:fp];
1078 sdd2[datRow].MS.D->P->timerVisible = (int)[self readInt:fp];
1079 sdd2[datRow].MS.D->P->timerRun = (int)[self readInt:fp];
1080 sdd2[datRow].MS.D->P->timerMode = (int)[self readInt:fp];
1081 sdd2[datRow].MS.D->P->wait = (int)[self readInt:fp];
1082 sdd2[datRow].MS.D->P->titleBack = (int)[self readInt:fp];
1084 sdd2[datRow].MS.D->P->label = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->label] retain];
1085 sdd2[datRow].MS.D->P->labelJump = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->labelJump] retain];
1086 sdd2[datRow].MS.D->P->memo = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->memo] retain];
1088 sdd2[datRow].MS.D->P->switch1cnt = (int)[self readInt:fp];
1089 sdd2[datRow].MS.D->P->switch2cnt = (int)[self readInt:fp];
1091 if(sdd2[datRow].MS.D->P->switch1cnt > 0)
1092 sdd2[datRow].MS.D->P->switch1 = calloc(sdd2[datRow].MS.D->P->switch1cnt, sizeof(int));
1093 for(int k = 0;k < sdd2[datRow].MS.D->P->switch1cnt;k++) {
1094 *(sdd2[datRow].MS.D->P->switch1 + k) = (int)[self readInt:fp];
1097 if(sdd2[datRow].MS.D->P->switch2cnt > 0)
1098 sdd2[datRow].MS.D->P->switch2 = calloc(sdd2[datRow].MS.D->P->switch2cnt, sizeof(int));
1099 for(int k = 0;k < sdd2[datRow].MS.D->P->switch2cnt;k++) {
1100 *(sdd2[datRow].MS.D->P->switch2 + k) = (int)[self readInt:fp];
1103 [self readMapScriptBGM:fp];
1104 [self readMapScriptSE:fp];
1105 [self readMapScriptSC:fp];
1106 [self readMapScriptGAOV:fp];
1108 sdd2[datRow].MS.D->P->type = (int)[self readInt:fp];
1111 if(sdd2[datRow].MS.D->P->type != 7)
1112 sdd2[datRow].MS.D->P->label = NULL;
1113 if(sdd2[datRow].MS.D->P->type != 8)
1114 sdd2[datRow].MS.D->P->labelJump = NULL;
1115 if(sdd2[datRow].MS.D->P->type != 9)
1116 sdd2[datRow].MS.D->P->memo = NULL;
1118 if(sdd2[datRow].MS.D->P->type == 0)
1119 [self readMapScript1:fp];
1121 if(sdd2[datRow].MS.D->P->type == 1){
1122 MAPSCRIPT2 *SMSP2top = sdd2[datRow].MS.D->P->S2;
1124 sdd2[datRow].MS.D->P->S2cnt = (int)[self readInt:fp];
1126 for (int k = 0;k < sdd2[datRow].MS.D->P->S2cnt;k++) {
1128 sdd2[datRow].MS.D->P->S2 = calloc(1, sizeof(MAPSCRIPT2));
1129 if(k + 1 < sdd2[datRow].MS.D->P->S2cnt)
1130 sdd2[datRow].MS.D->P->S2->next = calloc(1, sizeof(MAPSCRIPT2));
1131 SMSP2top = sdd2[datRow].MS.D->P->S2;
1132 }else if(k + 1 < sdd2[datRow].MS.D->P->S2cnt)
1133 sdd2[datRow].MS.D->P->S2->next = calloc(1, sizeof(MAPSCRIPT2));
1134 [self readMapScript2:fp];
1135 sdd2[datRow].MS.D->P->S2 = sdd2[datRow].MS.D->P->S2->next;
1137 if(sdd2[datRow].MS.D->P->S2)
1138 sdd2[datRow].MS.D->P->S2->next = NULL;
1139 sdd2[datRow].MS.D->P->S2 = SMSP2top;
1143 if(sdd2[datRow].MS.D->P->type == 22){
1144 MAPSCRIPT3 *SMSP3top = sdd2[datRow].MS.D->P->S3;
1146 sdd2[datRow].MS.D->P->S3cnt = (int)[self readInt:fp];
1148 for (int k = 0;k < sdd2[datRow].MS.D->P->S3cnt;k++) {
1150 sdd2[datRow].MS.D->P->S3 = calloc(1, sizeof(MAPSCRIPT3));
1151 if(k + 1 < sdd2[datRow].MS.D->P->S3cnt)
1152 sdd2[datRow].MS.D->P->S3->next = calloc(1, sizeof(MAPSCRIPT3));
1153 SMSP3top = sdd2[datRow].MS.D->P->S3;
1154 }else if(k + 1 < sdd2[datRow].MS.D->P->S3cnt)
1155 sdd2[datRow].MS.D->P->S3->next = calloc(1, sizeof(MAPSCRIPT3));
1156 [self readMapScript3:fp];
1157 sdd2[datRow].MS.D->P->S3 = sdd2[datRow].MS.D->P->S3->next;
1158 }sdd2[datRow].MS.D->P->S3 = SMSP3top;
1160 if(sdd2[datRow].MS.D->P->type == 6)
1161 [self readMapScript4:fp];
1163 if(sdd2[datRow].MS.D->P->type == 23){
1164 MAPSCRIPT5 *SMSP5top = sdd2[datRow].MS.D->P->S5;
1166 sdd2[datRow].MS.D->P->S5cnt = (int)[self readInt:fp];
1168 for (int k = 0;k < sdd2[datRow].MS.D->P->S5cnt;k++) {
1170 sdd2[datRow].MS.D->P->S5 = calloc(1, sizeof(MAPSCRIPT5));
1171 if(k + 1 < sdd2[datRow].MS.D->P->S5cnt)
1172 sdd2[datRow].MS.D->P->S5->next = calloc(1, sizeof(MAPSCRIPT5));
1173 SMSP5top = sdd2[datRow].MS.D->P->S5;
1174 }else if(k + 1 < sdd2[datRow].MS.D->P->S5cnt)
1175 sdd2[datRow].MS.D->P->S5->next = calloc(1, sizeof(MAPSCRIPT5));
1176 [self readMapScript5:fp];
1177 sdd2[datRow].MS.D->P->S5 = sdd2[datRow].MS.D->P->S5->next;
1178 }sdd2[datRow].MS.D->P->S5 = SMSP5top;
1181 if(sdd2[datRow].MS.D->P->type == 10)
1182 [self readMapScript6:fp];
1186 sdd2[datRow].MS.D->P = sdd2[datRow].MS.D->P->next;
1188 if(sdd2[datRow].MS.D->P)
1189 sdd2[datRow].MS.D->P->next = NULL;
1191 sdd2[datRow].MS.D->P = SMSPtop;
1194 sdd2[datRow].MS.D = sdd2[datRow].MS.D->next;
1196 if(sdd2[datRow].MS.D)
1197 sdd2[datRow].MS.D->next = NULL;
1199 sdd2[datRow].MS.D = SMSDtop;
1206 -(void)readMapScript1:(FILE*)fp{
1208 sdd2[datRow].MS.D->P->S1.name = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S1.name] retain];
1209 sdd2[datRow].MS.D->P->S1.str = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S1.str] retain];
1210 sdd2[datRow].MS.D->P->S1.iName = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S1.iName] retain];
1211 sdd2[datRow].MS.D->P->S1.nameID = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S1.nameID] retain];
1213 for(int k = 0; k < UCN;k++){
1214 if(sdd2[datRow].MS.D->P->S1.nameID)
1215 if([sdd2[datRow].MS.D->P->S1.nameID isEqualToString:UC[k].nameID]){
1216 sdd2[datRow].MS.D->P->S1.img = [UC[k].imgb retain];
1220 for(int k = 0; k < LCN;k++){
1221 if(sdd2[datRow].MS.D->P->S1.nameID)
1222 if([sdd2[datRow].MS.D->P->S1.nameID isEqualToString:LC[k].nameID]){
1223 sdd2[datRow].MS.D->P->S1.img = [LC[k].imgb retain];
1229 if(sdd2[datRow].MS.D->P->S1.nameID)
1230 if([sdd2[datRow].MS.D->P->S1.nameID isEqualToString:EIMG->name]){
1231 sdd2[datRow].MS.D->P->S1.img = [EIMG->img retain];
1246 -(void)readMapScript2:(FILE*)fp{
1248 sdd2[datRow].MS.D->P->S2->selection = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S2->selection] retain];
1249 sdd2[datRow].MS.D->P->S2->labelJump = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S2->labelJump] retain];
1252 //struct _MAPSCRIPT2 *next;
1254 NSString *selection;
1255 NSString *labelJump;
1259 -(void)readMapScript3:(FILE*)fp{
1261 sdd2[datRow].MS.D->P->S3->x = (int)[self readInt:fp];
1262 sdd2[datRow].MS.D->P->S3->y = (int)[self readInt:fp];
1263 sdd2[datRow].MS.D->P->S3->flag = (int)[self readInt:fp];
1265 sdd2[datRow].MS.D->P->S3->type = (int)[self readInt:fp];
1266 sdd2[datRow].MS.D->P->S3->team = (int)[self readInt:fp];
1268 sdd2[datRow].MS.D->P->S3->unitNum = (int)[self readInt:fp];
1269 sdd2[datRow].MS.D->P->S3->loadInt = (int)[self readInt:fp];
1271 sdd2[datRow].MS.D->P->S3->U = UC[sdd2[datRow].MS.D->P->S3->unitNum];
1274 //struct _MAPSCRIPT3 *next;
1290 -(void)readMapScript4:(FILE*)fp{
1292 sdd2[datRow].MS.D->P->S4.lagFixFlag = (int)[self readInt:fp];
1293 sdd2[datRow].MS.D->P->S4.COMPrabel = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S4.COMPrabel] retain];
1294 sdd2[datRow].MS.D->P->S4.FAILrabel = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S4.FAILrabel] retain];
1296 sdd2[datRow].MS.D->P->S4.suicchiFlag = (int)[self readInt:fp];
1298 sdd2[datRow].MS.D->P->S4.suicchiCnt = (int)[self readInt:fp];
1300 if(sdd2[datRow].MS.D->P->S4.suicchiCnt > 0)
1301 sdd2[datRow].MS.D->P->S4.suicchi = calloc(sdd2[datRow].MS.D->P->S4.suicchiCnt, sizeof(int));
1302 for(int l = 0;l < sdd2[datRow].MS.D->P->S4.suicchiCnt;l++) {
1303 *(sdd2[datRow].MS.D->P->S4.suicchi + l) = (int)[self readInt:fp];
1306 sdd2[datRow].MS.D->P->S4.suicchiONOFF = (int)[self readInt:fp];
1308 sdd2[datRow].MS.D->P->S4.hensuFlag = (int)[self readInt:fp];
1309 sdd2[datRow].MS.D->P->S4.hensu1 = (int)[self readInt:fp];
1310 sdd2[datRow].MS.D->P->S4.teisuFlag = (int)[self readInt:fp];
1311 sdd2[datRow].MS.D->P->S4.teisuValue = (int)[self readInt:fp];
1312 sdd2[datRow].MS.D->P->S4.hensu2flag = (int)[self readInt:fp];
1313 sdd2[datRow].MS.D->P->S4.hensu2 = (int)[self readInt:fp];
1314 sdd2[datRow].MS.D->P->S4.hensuType = (int)[self readInt:fp];
1316 sdd2[datRow].MS.D->P->S4.timerFlag = (int)[self readInt:fp];
1317 sdd2[datRow].MS.D->P->S4.timerMin = (int)[self readInt:fp];
1318 sdd2[datRow].MS.D->P->S4.timerSec = (int)[self readInt:fp];
1319 sdd2[datRow].MS.D->P->S4.timerType = (int)[self readInt:fp];
1321 sdd2[datRow].MS.D->P->S4.unitNumFlag = (int)[self readInt:fp];
1322 sdd2[datRow].MS.D->P->S4.team = (int)[self readInt:fp];
1323 sdd2[datRow].MS.D->P->S4.unitNum = (int)[self readInt:fp];
1324 sdd2[datRow].MS.D->P->S4.unitType = (int)[self readInt:fp];
1325 sdd2[datRow].MS.D->P->S4.unitTypeFlag = (int)[self readInt:fp];
1329 UNIT2 *subjTop = sdd2[datRow].MS.D->P->S4.subj;
1331 sdd2[datRow].MS.D->P->S4.subjCnt = (int)[self readInt:fp];
1333 for (int k = 0;k < sdd2[datRow].MS.D->P->S4.subjCnt;k++) {
1335 sdd2[datRow].MS.D->P->S4.subj = calloc(1, sizeof(UNIT2));
1336 if(k + 1 < sdd2[datRow].MS.D->P->S4.subjCnt)
1337 sdd2[datRow].MS.D->P->S4.subj->next = calloc(1, sizeof(UNIT2));
1338 subjTop = sdd2[datRow].MS.D->P->S4.subj;
1339 }else if(k + 1 < sdd2[datRow].MS.D->P->S4.subjCnt)
1340 sdd2[datRow].MS.D->P->S4.subj->next = calloc(1, sizeof(UNIT2));
1341 [self readMapScript4subj:fp];
1342 sdd2[datRow].MS.D->P->S4.subj = sdd2[datRow].MS.D->P->S4.subj->next;
1343 }sdd2[datRow].MS.D->P->S4.subj = subjTop;
1347 sdd2[datRow].MS.D->P->S4.placeFlag = (int)[self readInt:fp];
1348 PLACEMENT *waypTop = sdd2[datRow].MS.D->P->S4.wayp;
1350 sdd2[datRow].MS.D->P->S4.waypCnt = (int)[self readInt:fp];
1352 for (int k = 0;k < sdd2[datRow].MS.D->P->S4.waypCnt;k++) {
1354 sdd2[datRow].MS.D->P->S4.wayp = calloc(1, sizeof(PLACEMENT));
1355 if(k + 1 < sdd2[datRow].MS.D->P->S4.waypCnt)
1356 sdd2[datRow].MS.D->P->S4.wayp->next = calloc(1, sizeof(PLACEMENT));
1357 waypTop = sdd2[datRow].MS.D->P->S4.wayp;
1358 }else if(k + 1 < sdd2[datRow].MS.D->P->S4.waypCnt)
1359 sdd2[datRow].MS.D->P->S4.wayp->next = calloc(1, sizeof(PLACEMENT));
1360 [self readMapScript4wayp:fp];
1361 sdd2[datRow].MS.D->P->S4.wayp = sdd2[datRow].MS.D->P->S4.wayp->next;
1362 }sdd2[datRow].MS.D->P->S4.wayp = waypTop;
1364 sdd2[datRow].MS.D->P->S4.unitCMDflag = (int)[self readInt:fp];
1365 sdd2[datRow].MS.D->P->S4.unitCMD = (int)[self readInt:fp];
1368 sdd2[datRow].MS.D->P->S4.objeFlag = (int)[self readInt:fp];
1369 UNIT2 *objeTop = sdd2[datRow].MS.D->P->S4.obje;
1371 sdd2[datRow].MS.D->P->S4.objeCnt = (int)[self readInt:fp];
1373 for (int k = 0;k < sdd2[datRow].MS.D->P->S4.objeCnt;k++) {
1375 sdd2[datRow].MS.D->P->S4.obje = calloc(1, sizeof(UNIT2));
1376 if(k + 1 < sdd2[datRow].MS.D->P->S4.objeCnt)
1377 sdd2[datRow].MS.D->P->S4.obje->next = calloc(1, sizeof(UNIT2));
1378 objeTop = sdd2[datRow].MS.D->P->S4.obje;
1379 }else if(k + 1 < sdd2[datRow].MS.D->P->S4.objeCnt)
1380 sdd2[datRow].MS.D->P->S4.obje->next = calloc(1, sizeof(UNIT2));
1381 [self readMapScript4obje:fp];
1382 sdd2[datRow].MS.D->P->S4.obje = sdd2[datRow].MS.D->P->S4.obje->next;
1383 }sdd2[datRow].MS.D->P->S4.obje = objeTop;
1386 sdd2[datRow].MS.D->P->S4.objeRange = (int)[self readInt:fp];
1389 sdd2[datRow].MS.D->P->S4.buildFlag = (int)[self readInt:fp];
1390 BUILD2 *buildTop = sdd2[datRow].MS.D->P->S4.build;
1392 sdd2[datRow].MS.D->P->S4.buildCnt = (int)[self readInt:fp];
1394 for (int k = 0;k < sdd2[datRow].MS.D->P->S4.buildCnt;k++) {
1396 sdd2[datRow].MS.D->P->S4.build = calloc(1, sizeof(BUILD2));
1397 if(k + 1 < sdd2[datRow].MS.D->P->S4.buildCnt)
1398 sdd2[datRow].MS.D->P->S4.build->next = calloc(1, sizeof(BUILD2));
1399 buildTop = sdd2[datRow].MS.D->P->S4.build;
1400 }else if(k + 1 < sdd2[datRow].MS.D->P->S4.buildCnt)
1401 sdd2[datRow].MS.D->P->S4.build->next = calloc(1, sizeof(BUILD2));
1402 [self readMapScript4build:fp];
1403 sdd2[datRow].MS.D->P->S4.build = sdd2[datRow].MS.D->P->S4.build->next;
1404 }sdd2[datRow].MS.D->P->S4.build = buildTop;
1409 -(void)readMapScript4subj:(FILE*)fp{
1412 sdd2[datRow].MS.D->P->S4.subj->team = (int)[self readInt:fp];
1413 sdd2[datRow].MS.D->P->S4.subj->x = (int)[self readInt:fp];
1414 sdd2[datRow].MS.D->P->S4.subj->y = (int)[self readInt:fp];
1417 //struct _UNIT2 *next;
1426 -(void)readMapScript4wayp:(FILE*)fp{
1428 sdd2[datRow].MS.D->P->S4.wayp->type = (int)[self readInt:fp];
1429 sdd2[datRow].MS.D->P->S4.wayp->x = (int)[self readInt:fp];
1430 sdd2[datRow].MS.D->P->S4.wayp->y = (int)[self readInt:fp];
1431 sdd2[datRow].MS.D->P->S4.wayp->z = (int)[self readInt:fp];
1432 sdd2[datRow].MS.D->P->S4.wayp->x2 = (int)[self readInt:fp];
1433 sdd2[datRow].MS.D->P->S4.wayp->y2 = (int)[self readInt:fp];
1436 //struct _PLACEMENT *next;
1447 -(void)readMapScript4obje:(FILE*)fp{
1449 sdd2[datRow].MS.D->P->S4.obje->team = (int)[self readInt:fp];
1450 sdd2[datRow].MS.D->P->S4.obje->x = (int)[self readInt:fp];
1451 sdd2[datRow].MS.D->P->S4.obje->y = (int)[self readInt:fp];
1454 //struct _UNIT2 *next;
1463 -(void)readMapScript4build:(FILE*)fp{
1465 sdd2[datRow].MS.D->P->S4.build->team = (int)[self readInt:fp];
1466 sdd2[datRow].MS.D->P->S4.build->x = (int)[self readInt:fp];
1467 sdd2[datRow].MS.D->P->S4.build->y = (int)[self readInt:fp];
1470 //struct _BUILD2 *next;
1471 //struct _BUILDCHIP *C;
1479 -(void)readMapScript5:(FILE*)fp{
1481 sdd2[datRow].MS.D->P->S5->x = (int)[self readInt:fp];
1482 sdd2[datRow].MS.D->P->S5->y = (int)[self readInt:fp];
1483 sdd2[datRow].MS.D->P->S5->type = (int)[self readInt:fp];
1484 sdd2[datRow].MS.D->P->S5->team = (int)[self readInt:fp];
1485 sdd2[datRow].MS.D->P->S5->unitNum = (int)[self readInt:fp];
1486 sdd2[datRow].MS.D->P->S5->saveInt = (int)[self readInt:fp];
1488 sdd2[datRow].MS.D->P->S5->U = UC[sdd2[datRow].MS.D->P->S5->unitNum];
1491 //struct _MAPSCRIPT5 *next;
1507 -(void)readMapScript6:(FILE*)fp{
1509 sdd2[datRow].MS.D->P->S6.team = (int)[self readInt:fp];
1511 sdd2[datRow].MS.D->P->S6.RCsupply = (int)[self readInt:fp];
1512 sdd2[datRow].MS.D->P->S6.RCfood = (int)[self readInt:fp];
1513 sdd2[datRow].MS.D->P->S6.RCmoney = (int)[self readInt:fp];
1515 sdd2[datRow].MS.D->P->S6.RCsupplyAdd = (int)[self readInt:fp];
1516 sdd2[datRow].MS.D->P->S6.RCfoodAdd = (int)[self readInt:fp];
1517 sdd2[datRow].MS.D->P->S6.RCmoneyAdd = (int)[self readInt:fp];
1519 sdd2[datRow].MS.D->P->S6.RCsupplyValue = (int)[self readInt:fp];
1520 sdd2[datRow].MS.D->P->S6.RCfoodValue = (int)[self readInt:fp];
1521 sdd2[datRow].MS.D->P->S6.RCmoneyValue = (int)[self readInt:fp];
1523 sdd2[datRow].MS.D->P->S6.RCsupplySelect = (int)[self readInt:fp];
1524 sdd2[datRow].MS.D->P->S6.RCfoodSelect = (int)[self readInt:fp];
1525 sdd2[datRow].MS.D->P->S6.RCmoneySelect = (int)[self readInt:fp];
1527 sdd2[datRow].MS.D->P->S6.RCsupplyS = (int)[self readInt:fp];
1528 sdd2[datRow].MS.D->P->S6.RCfoodS = (int)[self readInt:fp];
1529 sdd2[datRow].MS.D->P->S6.RCmoneyS = (int)[self readInt:fp];
1556 -(void)readMapScriptBGM:(FILE*)fp{
1558 NSString *directoryPath;
1560 directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
1561 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
1564 NSString* Cpath = @"data/BGM/";
1565 [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
1567 sdd2[datRow].MS.D->P->BGM.name = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->BGM.name] retain];
1568 sdd2[datRow].MS.D->P->BGM.fName = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->BGM.fName] retain];
1570 sdd2[datRow].MS.D->P->BGM.snd = [[[NSSound alloc] initWithContentsOfURL:
1571 [NSURL fileURLWithPath:sdd2[datRow].MS.D->P->BGM.fName] byReference:NO] retain];
1580 -(void)readMapScriptSE:(FILE*)fp{
1582 NSString *directoryPath;
1584 directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
1585 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
1588 NSString* Cpath = @"data/BGM/";
1589 [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
1591 sdd2[datRow].MS.D->P->SE.name = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->SE.name] retain];
1592 sdd2[datRow].MS.D->P->SE.fName = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->SE.fName] retain];
1594 sdd2[datRow].MS.D->P->SE.snd = [[[NSSound alloc] initWithContentsOfURL:
1595 [NSURL fileURLWithPath:sdd2[datRow].MS.D->P->SE.fName] byReference:NO] retain];
1604 -(void)readMapScriptSC:(FILE*)fp{
1606 sdd2[datRow].MS.D->P->sc.scFlag = (int)[self readInt:fp];
1607 sdd2[datRow].MS.D->P->sc.edcdFlag = (int)[self readInt:fp];
1615 -(void)readMapScriptGAOV:(FILE*)fp{
1618 sdd2[datRow].MS.D->P->gaov.fNname = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->gaov.fNname] retain];
1619 sdd2[datRow].MS.D->P->gaov.gaovFlag = (int)[self readInt:fp];
1620 sdd2[datRow].MS.D->P->gaov.edcdFlag = (int)[self readInt:fp];
1630 -(void)inputFileData{
1639 NSString *directoryPath;
1641 directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
1642 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
1645 NSString* Cpath = @"SaveData/";
1646 [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
1648 NSString *path = [[NSString alloc] initWithUTF8String:datFilePath];
1650 if(0 && [[NSFileManager defaultManager] fileExistsAtPath:path]){
1658 sdd.name = [sdd2[datRow].name retain];
1659 sdd.imgAdressCnt = sdd2[datRow].imgAdressCnt;
1660 sdd.imgAdressFix = sdd2[datRow].imgAdressFix;
1661 sdd.img = sdd2[datRow].img;
1663 sdd.MFselectedRow = sdd2[datRow].MFselectedRow;
1664 sdd.storyNumb = sdd2[datRow].storyNumb;
1665 sdd.scenarioNumb = sdd2[datRow].scenarioNumb;
1667 sdd.mapfileName = [sdd2[datRow].mapfileName retain];
1668 sdd.levelName = [sdd2[datRow].levelName retain];
1669 sdd.levelName = [sdd2[datRow].scenarioName retain];
1671 sdd.chipHeight = sdd2[datRow].chipHeight;
1672 sdd.chipWidth = sdd2[datRow].chipWidth;
1674 sdd.posX = sdd2[datRow].posX;
1675 sdd.posY = sdd2[datRow].posY;
1677 sdd.eSlctX = sdd2[datRow].eSlctX;
1678 sdd.eSlctY = sdd2[datRow].eSlctY;
1680 sdd.registerNum = sdd2[datRow].registerNum;
1681 sdd.registerNumB = sdd2[datRow].registerNumB;
1683 sdd.esSceneProc = sdd2[datRow].esSceneProc;
1685 sdd.endGameCondition = sdd2[datRow].endGameCondition;
1686 sdd.initMapFlag = sdd2[datRow].initMapFlag;
1687 sdd.initStatusFlag = sdd2[datRow].initStatusFlag;
1688 sdd.TeamCountFlag = sdd2[datRow].TeamCountFlag;
1689 sdd.battleBegin = sdd2[datRow].battleBegin;
1690 sdd.startES = sdd2[datRow].startES;
1692 sdd.cpuAImodeflag = sdd2[datRow].cpuAImodeflag;
1693 sdd.cpuModeATTACKflag = sdd2[datRow].cpuModeATTACKflag;
1694 sdd.cpuModeMOVEflag = sdd2[datRow].cpuModeMOVEflag;
1695 sdd.cpuTurnEndFlag = sdd2[datRow].cpuTurnEndFlag;
1696 sdd.waitSwtichFlag = sdd2[datRow].waitSwtichFlag;
1697 sdd.battleReadyUpFlag = sdd2[datRow].battleReadyUpFlag;
1698 sdd.setBattleModeFlag = sdd2[datRow].setBattleModeFlag;
1700 sdd.wtRdy = sdd2[datRow].wtRdy;
1701 sdd.wtRdy2 = sdd2[datRow].wtRdy2;
1702 sdd.wtRdy3 = sdd2[datRow].wtRdy3;
1704 sdd.wtMovedFlag = sdd2[datRow].wtMovedFlag;
1705 sdd.wtAttackedFlag = sdd2[datRow].wtAttackedFlag;
1706 sdd.unitMoveEndFlag = sdd2[datRow].unitMoveEndFlag;
1707 sdd.battleSetUp = sdd2[datRow].battleSetUp;
1708 sdd.pushStanbyFlag = sdd2[datRow].pushStanbyFlag;
1709 sdd.battleEndFlag = sdd2[datRow].battleEndFlag;
1710 sdd.wtUnitNum = sdd2[datRow].wtUnitNum;
1711 sdd.messageDialog = sdd2[datRow].messageDialog;
1714 for(int i = 0;i < 1002;i++)
1715 for(int j = 0;j < 1002;j++)
1716 sdd.chipNum[i][j] = sdd2[datRow].chipNum[i][j];
1717 for(int i = 0;i < 1002;i++)
1718 for(int j = 0;j < 1002;j++)
1719 sdd.buildNum[i][j] = sdd2[datRow].buildNum[i][j];
1720 for(int i = 0;i < 1002;i++)
1721 for(int j = 0;j < 1002;j++)
1722 sdd.unitNum[i][j] = sdd2[datRow].unitNum[i][j];
1723 for(int i = 0;i < 1002;i++)
1724 for(int j = 0;j < 1002;j++)
1725 sdd.loadNum[i][j] = sdd2[datRow].loadNum[i][j];
1726 for(int i = 0;i < 1002;i++)
1727 for(int j = 0;j < 1002;j++)
1728 sdd.buildTeam[i][j] = sdd2[datRow].buildTeam[i][j];
1729 for(int i = 0;i < 1002;i++)
1730 for(int j = 0;j < 1002;j++)
1731 sdd.unitTeam[i][j] = sdd2[datRow].unitTeam[i][j];
1733 for(int i = 0;i < sdd.registerNum;i++)
1734 sdd.dU[i] = sdd2[datRow].dU[i];
1735 for(int i = 0;i < sdd.registerNumB;i++)
1736 sdd.dB[i] = sdd2[datRow].dB[i];
1738 for(int i = 0;i < 3;i++)
1739 sdd.P[i] = sdd2[datRow].P[i];
1742 for(int i = 0;i < 9999;i++)
1743 sdd.Suicchi[i] = sdd2[datRow].Suicchi[i];
1745 sdd.HensuuNum = sdd2[datRow].HensuuNum;
1746 for(int i = 0;i < 65000;i++)
1747 sdd.Hensuu[i] = [sdd2[datRow].Hensuu[i] retain];
1748 for(int i = 0;i < 65000;i++)
1749 sdd.HensuuName[i] = [sdd2[datRow].HensuuName[i] retain];
1751 sdd.MS = sdd2[datRow].MS;
1755 datExistFlag = true;
1757 datExistFlag = false;
1763 fpo = fopen(datFilePath, "wb");
1768 [self writeNSString:fpo str:sdd.name];
1769 [self writeNSImage:fpo str:sdd.img adCnt:&sdd.imgAdressCnt adFix:&sdd.imgAdressFix];
1772 [self writeInt:fpo val:sdd.MFselectedRow];
1773 [self writeInt:fpo val:sdd.storyNumb];
1774 [self writeInt:fpo val:sdd.scenarioNumb];
1775 [self writeNSString:fpo str:sdd.mapfileName];
1776 [self writeNSString:fpo str:sdd.levelName];
1777 [self writeNSString:fpo str:sdd.scenarioName];
1779 [self writeInt:fpo val:sdd.chipHeight];
1780 [self writeInt:fpo val:sdd.chipWidth];
1781 [self writeInt:fpo val:sdd.posX];
1782 [self writeInt:fpo val:sdd.posY];
1783 [self writeInt:fpo val:sdd.eSlctX];
1784 [self writeInt:fpo val:sdd.eSlctY];
1785 [self writeInt:fpo val:sdd.registerNum];
1786 [self writeInt:fpo val:sdd.registerNumB];
1787 [self writeInt:fpo val:sdd.esSceneProc];
1788 [self writeInt:fpo val:sdd.endGameCondition];
1790 [self writeInt:fpo val:sdd.initMapFlag];
1791 [self writeInt:fpo val:sdd.initStatusFlag];
1792 [self writeInt:fpo val:sdd.TeamCountFlag];
1793 [self writeInt:fpo val:sdd.battleBegin];
1794 [self writeInt:fpo val:sdd.startES];
1796 [self writeInt:fpo val:sdd.cpuAImodeflag];
1797 [self writeInt:fpo val:sdd.cpuModeATTACKflag];
1798 [self writeInt:fpo val:sdd.cpuModeMOVEflag];
1799 [self writeInt:fpo val:sdd.cpuTurnEndFlag];
1800 [self writeInt:fpo val:sdd.waitSwtichFlag];
1801 [self writeInt:fpo val:sdd.battleReadyUpFlag];
1802 [self writeInt:fpo val:sdd.setBattleModeFlag];
1804 [self writeInt:fpo val:sdd.wtRdy];
1805 [self writeInt:fpo val:sdd.wtRdy2];
1806 [self writeInt:fpo val:sdd.wtRdy3];
1808 [self writeInt:fpo val:sdd.wtMovedFlag];
1809 [self writeInt:fpo val:sdd.wtAttackedFlag];
1810 [self writeInt:fpo val:sdd.unitMoveEndFlag];
1811 [self writeInt:fpo val:sdd.battleSetUp];
1812 [self writeInt:fpo val:sdd.pushStanbyFlag];
1813 [self writeInt:fpo val:sdd.battleEndFlag];
1814 [self writeInt:fpo val:sdd.wtUnitNum];
1815 [self writeInt:fpo val:sdd.messageDialog];
1817 /*//これやると容量が重くなる(24MB超えるので保存しない)
1818 for(int i = 0;i < 1002;i++)
1819 for(int j = 0;j < 1002;j++)
1820 [self writeInt:fpo val:sdd.chipNum[i][j]];
1821 for(int i = 0;i < 1002;i++)
1822 for(int j = 0;j < 1002;j++)
1823 [self writeInt:fpo val:sdd.buildNum[i][j]];
1824 for(int i = 0;i < 1002;i++)
1825 for(int j = 0;j < 1002;j++)
1826 [self writeInt:fpo val:sdd.unitNum[i][j]];
1827 for(int i = 0;i < 1002;i++)
1828 for(int j = 0;j < 1002;j++)
1829 [self writeInt:fpo val:sdd.loadNum[i][j]];
1830 for(int i = 0;i < 1002;i++)
1831 for(int j = 0;j < 1002;j++)
1832 [self writeInt:fpo val:sdd.buildTeam[i][j]];
1833 for(int i = 0;i < 1002;i++)
1834 for(int j = 0;j < 1002;j++)
1835 [self writeInt:fpo val:sdd.unitTeam[i][j]];
1838 for(int i = 0;i < sdd.registerNum;i++)
1839 [self writeUnitD:fpo row:i];
1840 for(int i = 0;i < sdd.registerNumB;i++)
1841 [self writeBiuldD:fpo row:i];
1842 NSLog(@"\n(保存)%@:IMGADRESS %p\n", sdd.name,sdd.img);
1844 for(int i = 0;i < 3;i++){
1845 fwrite(&sdd.P[i], sizeof(PLAYER), 1, fpo);
1846 [self writeNSString:fpo str:P[i].name];
1849 for(int i = 0;i < 9999;i++)
1850 [self writeInt:fpo val:sdd.Suicchi[i]];
1852 [self writeInt:fpo val:sdd.HensuuNum];
1853 for(int i = 0;i < 65000;i++)
1854 [self writeNSString:fpo str:sdd.Hensuu[i]];
1855 for(int i = 0;i < 65000;i++)
1856 [self writeNSString:fpo str:sdd.HensuuName[i]];
1859 [self writeMapScript:fpo];
1870 -(void)writeBiuldD:(FILE*)fp row:(int)r{
1872 [self writeInt:fp val:sdd.dB[r].number];
1873 [self writeInt:fp val:sdd.dB[r].team];
1874 [self writeInt:fp val:sdd.dB[r].chipNumber];
1875 [self writeInt:fp val:sdd.dB[r].makeLv];
1877 [self writeInt:fp val:sdd.dB[r].x];
1878 [self writeInt:fp val:sdd.dB[r].y];
1879 [self writeInt:fp val:sdd.dB[r].z];
1881 [self writeInt:fp val:sdd.dB[r].dead];
1883 //[self writeBuildDimage:fp row:r];
1884 [self writeBuildChipD:fp val:sdd.dB[r].C];
1887 -(void)writeBuildChipD:(FILE*)fp val:(BUILDCHIPD)val{
1889 [self writeInt:fp val:val.chipNumb];
1890 [self writeNSString:fp str:val.name];
1891 [self writeNSString:fp str:val.nameID];
1893 fwrite(&val.S_C, sizeof(BSTATUS), 1, fp);
1895 NSLog(@"gj folks...");
1898 -(void)writeBuildDimage:(FILE*)fp row:(int)r{
1901 NSString *directoryPath;
1903 directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
1904 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
1906 NSString* Cpath = @"Awars IV.app/Contents/Resources/";
1907 [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
1909 NSString *path2 = @INSTANT_IMG;
1912 NSData *imgData = [sdd.dB[r].img TIFFRepresentation];
1913 NSBitmapImageRep *brep = [NSBitmapImageRep imageRepWithData:imgData];
1914 imgData = [brep representationUsingType:NSPNGFileType properties:nil];
1915 [imgData writeToFile:path2 atomically:YES];
1917 fpx = fopen(INSTANT_IMG, "rb");
1919 unsigned char in_buf[1024], out_buf[1024];
1922 sdd.dB[r].imgAdCnt = 0;
1923 sdd.dB[r].imgAdFix = 0;
1926 while (!feof(fpx)) {
1928 rinf = (int)fread((void*)in_buf, 1, 1024, fpx);
1932 memcpy((void*)out_buf, (void*)in_buf, 1024);
1933 rinf = (int)fwrite((void*)out_buf, 1, rinf, fp);
1937 sdd.dB[r].imgAdCnt++;
1938 sdd.dB[r].imgAdFix = rinf;
1941 fpt -= (sdd.dB[r].imgAdCnt-1)*1024;
1943 [self writeInt:fp val:(int)sdd.dB[r].imgAdCnt];
1944 [self writeInt:fp val:(int)sdd.dB[r].imgAdFix];
1948 while (!feof(fpx)) {
1949 rinf = (int)fread((void*)in_buf, 1, 1024, fpx);
1953 memcpy((void*)out_buf, (void*)in_buf, 1024);
1954 rinf = (int)fwrite((void*)out_buf, 1, rinf, fp);
1966 -(void)writeUnitD:(FILE*)fp row:(int)r{
1968 [self writeInt:fp val:sdd.dU[r].CPU];
1969 [self writeInt:fp val:sdd.dU[r].number];
1970 [self writeInt:fp val:sdd.dU[r].team];
1971 [self writeInt:fp val:sdd.dU[r].chipNumber];
1972 [self writeInt:fp val:sdd.dU[r].chipNumberL];
1974 [self writeInt:fp val:sdd.dU[r].x];
1975 [self writeInt:fp val:sdd.dU[r].y];
1976 [self writeInt:fp val:sdd.dU[r].z];
1978 [self writeInt:fp val:sdd.dU[r].ix];
1979 [self writeInt:fp val:sdd.dU[r].iy];
1980 [self writeInt:fp val:sdd.dU[r].iz];
1982 [self writeInt:fp val:sdd.dU[r].dead];
1984 [self writeInt:fp val:sdd.dU[r].loadChipFlag];
1986 [self writeInt:fp val:sdd.dU[r].unControlable];
1987 [self writeInt:fp val:sdd.dU[r].joinArmyFromNext];
1988 [self writeInt:fp val:sdd.dU[r].persuasion];
1990 [self writeInt:fp val:sdd.dU[r].targType1L];
1991 [self writeInt:fp val:sdd.dU[r].targType2L];
1992 [self writeInt:fp val:sdd.dU[r].targType1D];
1993 [self writeInt:fp val:sdd.dU[r].targType2D];
1995 [self writeNSString:fp str:sdd.dU[r].army];
1996 //[self writeUnitDimage:fp row:r];
1999 [self writeUnitChipD:fp val:sdd.dU[r].C];
2000 [self writeUnitChipLD:fp val:sdd.dU[r].CL];
2004 -(void)writeUnitChipD:(FILE*)fp val:(UNITCHIPD)val{
2006 [self writeInt:fp val:val.chipNumb];
2007 [self writeNSString:fp str:val.name];
2008 [self writeNSString:fp str:val.nameNick];
2009 [self writeNSString:fp str:val.nameClass];
2010 [self writeNSString:fp str:val.nameID];
2014 fwrite(&val.R_C, sizeof(RESIST), 1, fp);
2015 fwrite(&val.S_C, sizeof(STATUS), 1, fp);
2017 NSLog(@"oops is right youre supposed to get...");
2020 -(void)writeUnitChipLD:(FILE*)fp val:(LOADCHIPD)val{
2022 [self writeInt:fp val:val.chipNumb];
2023 [self writeNSString:fp str:val.name];
2024 [self writeNSString:fp str:val.nameID];
2028 fwrite(&val.R_C, sizeof(RESIST), 1, fp);
2029 fwrite(&val.S_C, sizeof(STATUS2), 1, fp);
2031 NSLog(@"oops is right youre supposed to get...2");
2034 -(void)writeUnitDimage:(FILE*)fp row:(int)r{
2037 NSString *directoryPath;
2039 directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
2040 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
2042 NSString* Cpath = @"Awars IV.app/Contents/Resources/";
2043 [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
2045 NSString *path2 = @INSTANT_IMG;
2048 NSData *imgData = [sdd.dU[r].img TIFFRepresentation];
2049 NSBitmapImageRep *brep = [NSBitmapImageRep imageRepWithData:imgData];
2050 imgData = [brep representationUsingType:NSPNGFileType properties:nil];
2051 [imgData writeToFile:path2 atomically:YES];
2053 fpx = fopen(INSTANT_IMG, "rb");
2055 unsigned char in_buf[1024], out_buf[1024];
2058 sdd.dU[r].imgAdCnt = 0;
2059 sdd.dU[r].imgAdFix = 0;
2062 while (!feof(fpx)) {
2064 rinf = (int)fread((void*)in_buf, 1, 1024, fpx);
2068 memcpy((void*)out_buf, (void*)in_buf, 1024);
2069 rinf = (int)fwrite((void*)out_buf, 1, rinf, fp);
2073 sdd.dU[r].imgAdCnt++;
2074 sdd.dU[r].imgAdFix = rinf;
2077 fpt -= (sdd.dU[r].imgAdCnt-1)*1024;
2079 [self writeInt:fp val:(int)sdd.dU[r].imgAdCnt];
2080 [self writeInt:fp val:(int)sdd.dU[r].imgAdFix];
2084 while (!feof(fpx)) {
2085 rinf = (int)fread((void*)in_buf, 1, 1024, fpx);
2089 memcpy((void*)out_buf, (void*)in_buf, 1024);
2090 rinf = (int)fwrite((void*)out_buf, 1, rinf, fp);
2107 NSString *directoryPath;
2109 directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
2110 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
2113 NSString* Cpath = @"SaveData/";
2114 [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
2121 fpi = fopen(datFilePath, "rb");
2126 sdd2[datRow].name = [[self readNSString:fpi strOut:sdd2[datRow].name] retain];
2128 sdd2[datRow].imgAdressCnt = (int)[self readInt:fpi];
2129 sdd2[datRow].imgAdressFix = (int)[self readInt:fpi];
2130 sdd2[datRow].img = [[self readNSImage:fpi imgOut:sdd2[datRow].img dcnt:sdd2[datRow].imgAdressCnt dfix:sdd2[datRow].imgAdressFix] retain];
2132 sdd2[datRow].MFselectedRow = (int)[self readInt:fpi];
2133 sdd2[datRow].storyNumb = (int)[self readInt:fpi];
2134 sdd2[datRow].scenarioNumb = (int)[self readInt:fpi];
2135 sdd2[datRow].mapfileName = [[self readNSString:fpi strOut:sdd2[datRow].mapfileName] retain];
2136 sdd2[datRow].levelName = [[self readNSString:fpi strOut:sdd2[datRow].levelName] retain];
2137 sdd2[datRow].scenarioName = [ [self readNSString:fpi strOut:sdd2[datRow].scenarioName] retain];
2139 sdd2[datRow].chipHeight = (int)[self readInt:fpi];
2140 sdd2[datRow].chipWidth = (int)[self readInt:fpi];
2141 sdd2[datRow].posX = (int)[self readInt:fpi];
2142 sdd2[datRow].posY = (int)[self readInt:fpi];
2143 sdd2[datRow].eSlctX = (int)[self readInt:fpi];
2144 sdd2[datRow].eSlctY = (int)[self readInt:fpi];
2145 sdd2[datRow].registerNum = (int)[self readInt:fpi];
2146 sdd2[datRow].registerNumB = (int)[self readInt:fpi];
2147 sdd2[datRow].esSceneProc = (int)[self readInt:fpi];
2148 sdd2[datRow].endGameCondition = (int)[self readInt:fpi];
2150 sdd2[datRow].initMapFlag = (int)[self readInt:fpi];
2151 sdd2[datRow].initStatusFlag = (int)[self readInt:fpi];
2152 sdd2[datRow].TeamCountFlag = (int)[self readInt:fpi];
2153 sdd2[datRow].battleBegin = (int)[self readInt:fpi];
2154 sdd2[datRow].startES = (int)[self readInt:fpi];
2156 sdd2[datRow].cpuAImodeflag = (int)[self readInt:fpi];
2157 sdd2[datRow].cpuModeATTACKflag = (int)[self readInt:fpi];
2158 sdd2[datRow].cpuModeMOVEflag = (int)[self readInt:fpi];
2159 sdd2[datRow].cpuTurnEndFlag = (int)[self readInt:fpi];
2160 sdd2[datRow].waitSwtichFlag = (int)[self readInt:fpi];
2161 sdd2[datRow].battleReadyUpFlag = (int)[self readInt:fpi];
2162 sdd2[datRow].setBattleModeFlag = (int)[self readInt:fpi];
2164 sdd2[datRow].wtRdy = (int)[self readInt:fpi];
2165 sdd2[datRow].wtRdy2 = (int)[self readInt:fpi];
2166 sdd2[datRow].wtRdy3 = (int)[self readInt:fpi];
2168 sdd2[datRow].wtMovedFlag = (int)[self readInt:fpi];
2169 sdd2[datRow].wtAttackedFlag = (int)[self readInt:fpi];
2170 sdd2[datRow].unitMoveEndFlag = (int)[self readInt:fpi];
2171 sdd2[datRow].battleSetUp = (int)[self readInt:fpi];
2172 sdd2[datRow].pushStanbyFlag = (int)[self readInt:fpi];
2173 sdd2[datRow].battleEndFlag = (int)[self readInt:fpi];
2174 sdd2[datRow].wtUnitNum = (int)[self readInt:fpi];
2175 sdd2[datRow].messageDialog = (int)[self readInt:fpi];
2177 /*//saveStructとワンセット容量の関係で読み込まない
2178 for(int i = 0;i < 1002;i++)
2179 for(int j = 0;j < 1002;j++)
2180 sdd2[datRow].chipNum[i][j] = (int)[self readInt:fpi];
2181 for(int i = 0;i < 1002;i++)
2182 for(int j = 0;j < 1002;j++)
2183 sdd2[datRow].buildNum[i][j] = (int)[self readInt:fpi];
2184 for(int i = 0;i < 1002;i++)
2185 for(int j = 0;j < 1002;j++)
2186 sdd2[datRow].unitNum[i][j] = (int)[self readInt:fpi];
2187 for(int i = 0;i < 1002;i++)
2188 for(int j = 0;j < 1002;j++)
2189 sdd2[datRow].loadNum[i][j] = (int)[self readInt:fpi];
2190 for(int i = 0;i < 1002;i++)
2191 for(int j = 0;j < 1002;j++)
2192 sdd2[datRow].buildTeam[i][j] = (int)[self readInt:fpi];
2193 for(int i = 0;i < 1002;i++)
2194 for(int j = 0;j < 1002;j++)
2195 sdd2[datRow].unitTeam[i][j] = (int)[self readInt:fpi];
2197 for(int i = 0;i < sdd2[datRow].registerNum;i++)
2198 [self readUnitD:fpi row:i];
2199 for(int i = 0;i < sdd2[datRow].registerNumB;i++)
2200 [self readBiuldD:fpi row:i];
2202 NSLog(@"\n(読み込み)%@:IMGADRESS %p\n",sdd2[datRow].name,sdd2[datRow].img);
2204 for(int i = 0;i < 3;i++){
2205 fread(&sdd2[datRow].P[i], sizeof(PLAYER), 1, fpi);
2206 sdd2[datRow].P[i].name = [[self readNSString:fpi strOut:sdd2[datRow].P[i].name] retain];
2210 for(int i = 0;i < 9999;i++)
2211 sdd2[datRow].Suicchi[i] = (int)[self readInt:fpi];
2213 sdd2[datRow].HensuuNum = (int)[self readInt:fpi];
2214 for(int i = 0;i < 65000;i++)
2215 sdd2[datRow].Hensuu[i] = [[self readNSString:fpi strOut:sdd2[datRow].Hensuu[i]] retain];
2216 for(int i = 0;i < 65000;i++)
2217 sdd2[datRow].HensuuName[i] = [[self readNSString:fpi strOut:sdd2[datRow].HensuuName[i]] retain];
2219 [self readMapScript:fpi];
2226 -(void)loadOptionMenu{
2227 NSString *directoryPath;
2229 directoryPath = [[NSBundle mainBundle] bundlePath];
2230 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
2233 NSString* Cpath = @"Contents/Resources/";
2234 [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
2238 fpi = fopen(OPTIONFILE_NAME, "rb");
2242 wtfom.nameTitle = [@"" retain];
2243 NSLog(@"%@", wtfom.nameTitle);
2244 wtfom.nameTitle = [[self readNSString:fpi strOut:wtfom.nameTitle] retain];
2245 wtfom.nameVersion = [[self readNSString:fpi strOut:wtfom.nameVersion] retain];
2246 wtfom.nameOpening = [[self readNSString:fpi strOut:wtfom.nameOpening] retain];
2247 wtfom.nameBGM = [[self readNSString:fpi strOut:wtfom.nameBGM] retain];
2249 wtfom.allowMapEditor = (int)[self readInt:fpi];
2250 wtfom.allowScenarioEditor = (int)[self readInt:fpi];
2251 wtfom.onlyOnceOpening = (int)[self readInt:fpi];
2252 wtfom.newOpeningIsShown = (int)[self readInt:fpi];
2254 wtfom.adCntIT = (int)[self readInt:fpi];
2255 wtfom.adFixIT = (int)[self readInt:fpi];
2256 wtfom.imgTitle = [[self readNSImage:fpi imgOut:wtfom.imgTitle dcnt:wtfom.adCntIT dfix:wtfom.adFixIT] retain];
2259 directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
2260 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
2262 Cpath = @"data/Movie";
2266 [[NSFileManager defaultManager] fileExistsAtPath:Cpath isDirectory:&isDirectory];
2269 [[NSFileManager defaultManager] createDirectoryAtPath:Cpath withIntermediateDirectories:YES attributes:nil error:nil];
2272 [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
2274 if([[NSFileManager defaultManager] fileExistsAtPath:wtfom.nameOpening])
2275 openingAVP = [[AVPlayer playerWithURL:[NSURL fileURLWithPath:wtfom.nameOpening]] retain];
2279 directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
2280 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
2282 Cpath = @"data/BGM/";
2283 [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
2287 cwd = getcwd(NULL, 0);
2292 titleBGM = [[[NSSound alloc] initWithContentsOfURL:[NSURL fileURLWithPath:wtfom.nameBGM] byReference:NO] retain];
2297 -(void)openingAVPVfunc{
2299 if(openingAVP && openingAVPVisActive){
2300 openingAVPV.player = openingAVP;
2301 openingAVPV.videoGravity = AVLayerVideoGravityResize;
2304 if(openingAVPVisHidden)
2305 [openingAVPV setHidden:YES];
2307 [openingAVPV setHidden:NO];
2311 -(void)saveOptionMenu{
2312 NSString *directoryPath;
2314 directoryPath = [[NSBundle mainBundle] bundlePath];
2315 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
2318 NSString* Cpath = @"Contents/Resources/";
2319 [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
2323 cwd = getcwd(NULL, 0);
2330 fpo = fopen(OPTIONFILE_NAME, "wb");
2334 [self writeNSString:fpo str:wtfom.nameTitle];
2335 [self writeNSString:fpo str:wtfom.nameVersion];
2336 [self writeNSString:fpo str:wtfom.nameOpening];
2337 [self writeNSString:fpo str:wtfom.nameBGM];
2339 [self writeInt:fpo val:wtfom.allowMapEditor];
2340 [self writeInt:fpo val:wtfom.allowScenarioEditor];
2341 [self writeInt:fpo val:wtfom.onlyOnceOpening];
2342 [self writeInt:fpo val:wtfom.newOpeningIsShown];
2344 [self writeNSImage:fpo str:wtfom.imgTitle adCnt:&wtfom.adCntIT adFix:&wtfom.adFixIT];
2354 -(void)clickSGL:(id)sender{
2356 datRow = (int)[saveGameListTV clickedRow];
2359 -(void)clickLFOL:(id)sender{
2361 LFOLrow = (int)[loadFileOutputListTV selectedRow];
2364 for(int i = 1;i <= saveNumb;i++){
2366 for(int j = 0;j < [loadFileOutputListMA count];j++){
2368 if([SDL[j+1].name isEqualToString:[loadFileOutputListMA[LFOLrow] valueForKey:@"name"]]){
2371 [loadFileOutputTF setStringValue:[NSString stringWithFormat:@"%@ まで", SDL[SDLrow+1].levelName]];
2377 [loadFileOutputTF setStringValue:[NSString stringWithFormat:@""]];
2381 -(void)doubleClickBCL:(id)sender{
2402 for(int i = 0;i < slctedUnitNum;i++){
2406 if (MC[chipNum[possionX][possionY]].type == MC_ANTEI) {
2408 if(BC[U->C.S->list[crBCL]-1].type == BC_ANTEI){
2414 if (MC[chipNum[possionX][possionY]].type == MC_CHIKURIN) {
2416 if(BC[U->C.S->list[crBCL]-1].type == BC_CHIKURIN){
2422 if (MC[chipNum[possionX][possionY]].type == MC_ASASE) {
2424 if(BC[U->C.S->list[crBCL]-1].type == BC_ASASE){
2430 if(BC[U->C.S->list[crBCL]].type == BC_SONOTA){
2436 if(buildNum[possionX][possionY] >= 0){
2442 if(P[0].resource >= BC[U->C.S->list[crBCL]-1].Csupply){
2443 if(P[0].food >= BC[U->C.S->list[crBCL]-1].Cfood){
2444 if (P[0].money >= BC[U->C.S->list[crBCL]-1].Cmoney) {
2445 P[0].resource -= BC[U->C.S->list[crBCL]-1].Csupply;
2446 P[0].food -= BC[U->C.S->list[crBCL]-1].Cfood;
2447 P[0].money -= BC[U->C.S->list[crBCL]-1].Cmoney;
2449 buildNum[possionX][possionY] = U->C.S->list[crBCL]-1;
2451 buildTeam[possionX][possionY] = 0;
2454 [self addBuildStatus];
2462 if(P[1].resource >= BC[U->C.S->list[crBCL]-1].Csupply){
2463 if(P[1].food >= BC[U->C.S->list[crBCL]-1].Cfood){
2464 if (P[1].money >= BC[U->C.S->list[crBCL]-1].Cmoney) {
2465 P[1].resource -= BC[U->C.S->list[crBCL]-1].Csupply;
2466 P[1].food -= BC[U->C.S->list[crBCL]-1].Cfood;
2467 P[1].money -= BC[U->C.S->list[crBCL]-1].Cmoney;
2469 buildNum[possionX][possionY] = U->C.S->list[crBCL]-1;
2471 buildTeam[possionX][possionY] = 2;
2473 [self addBuildStatus];
2479 [createPanel close];
2485 -(void)clickBCL:(id)sender{
2486 crBCL = (int)[BCreateListTV clickedRow];
2493 -(void)doubleClickCSL:(id)sender{
2496 for(int i = 0;i < slctedUnitNum;i++){
2501 SKILL *sTop = U->C.S;
2503 if(U->C.S->type == 2) break;
2504 U->C.S = U->C.S->next;
2513 if(U->C.S->cost[crCSL] <= U->C.S_C.MP){
2514 //U->C.S_C.MP -= U->C.S->cost[crCSL];
2515 CSLUC = UC[U->C.S->list[crCSL]-1];
2519 [summonPanel close];
2520 //unitColorInitFlag = true;
2523 if(U->C.S->cost[crCSL] <= U->C.S_C.MP){
2525 //U->C.S_C.MP -= U->C.S->cost[crCSL];
2526 CSLUC = UC[U->C.S->list[crCSL]-1];
2530 [summonPanel close];
2531 //unitColorInitFlag = true;
2538 -(void)clickCSL:(id)sender{
2539 crCSL = (int)[CSummonListTV clickedRow];
2544 -(void)doubleClickCAL:(id)sender{
2546 if([CAttackListTV clickedRow] < 0) return;
2551 int postCAL1 = crCAL1;
2552 int postCAL2 = crCAL2;
2554 if(!battleSet1Flag && !battleSet2Flag){
2556 while (!(AUN[1] == U->number)) {
2562 if(U->chipNumberL < 0){
2564 ATTACK *aTop = U->C.A;
2566 crCAL = (int)[CAttackListTV clickedRow];
2567 crCAL1 = (int)[CAttackListTV clickedRow];
2568 for(int i = 0;i < crCAL;i++){
2569 U->C.A = U->C.A->next;
2572 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
2573 costVIG = U->C.A->vigor;
2575 if(costMP <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
2576 if(U->C.A->extent > 0){
2577 atkExtentFlag = true;
2579 atkExtentFlag = false;
2589 ATTACK *aTop = U->CL.A;
2590 crCAL = (int)[CAttackListTV clickedRow];
2591 crCAL1 = (int)[CAttackListTV clickedRow];
2592 for(int i = 0;i < crCAL;i++){
2593 U->CL.A = U->CL.A->next;
2596 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
2597 costVIG = U->CL.A->vigor;
2599 if(costMP <= U->CL.S_C.EN && costVIG <= U->C.S_C.vigor){
2601 if(U->CL.A->extent > 0){
2602 atkExtentFlag = true;
2604 atkExtentFlag = false;
2615 if(battleSet1Flag && !battleSet2PushedFlag){
2619 while (!(AUN[1] == U->number)) {
2623 if(U->chipNumberL < 0){
2624 ATTACK *aTop = U->C.A;
2625 crCAL1 = (int)[CAttackListTV clickedRow];
2626 for(int i = 0;i < crCAL1;i++){
2627 U->C.A = U->C.A->next;
2630 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
2631 costVIG = U->C.A->vigor;
2634 if(costMP <= U->C.S_C.MP && U->atkRange >= U->C.A->rangeA
2635 && U->atkRange <= U->C.A->rangeB && costVIG >= U->C.S_C.vigor){
2647 ATTACK *aTop = U->CL.A;
2648 crCAL1 = (int)[CAttackListTV clickedRow];
2649 for(int i = 0;i < crCAL1;i++){
2650 U->CL.A = U->CL.A->next;
2653 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
2654 costVIG = U->C.A->vigor;
2656 if(costMP <= U->CL.S_C.EN && U->atkRange >= U->CL.A->rangeA
2657 && U->atkRange <= U->CL.A->rangeB && costVIG >= U->C.S_C.vigor){
2671 if(battleSet2Flag && battleSet2PushedFlag){
2673 while (!(AUN[1] == U->number)) {
2677 if(U->chipNumberL < 0){
2680 while (!(AUN[1] == U->number)) {
2684 int omgRange = U->atkRange;
2687 while (!(DUN[1] == U->number)) {
2691 U->atkRange = omgRange;
2693 ATTACK *aTop = U->C.A;
2694 crCAL2 = (int)[CAttackListTV clickedRow];
2695 for(int i = 0;i < crCAL2;i++){
2696 U->C.A = U->C.A->next;
2699 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
2700 costVIG = U->C.A->vigor;
2703 if(costMP <= U->C.S_C.MP && U->atkRange >= U->C.A->rangeA
2704 && U->atkRange <= U->C.A->rangeB && U->C.S_C.vigor){
2717 while (!(AUN[1] == U->number)) {
2721 int omgRange = U->atkRange;
2724 while (!(DUN[1] == U->number)) {
2728 U->atkRange = omgRange;
2730 ATTACK *aTop = U->CL.A;
2731 crCAL2 = (int)[CAttackListTV clickedRow];
2732 for(int i = 0;i < crCAL2;i++){
2733 U->CL.A = U->CL.A->next;
2736 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
2737 costVIG = U->C.A->vigor;
2739 if(costMP <= U->CL.S_C.EN && U->atkRange >= U->CL.A->rangeA
2740 && U->atkRange <= U->CL.A->rangeB && U->C.S_C.vigor){
2763 -(void)clickCAL:(id)sender{
2765 crCAL = (int)[CAttackListTV clickedRow];
2767 if(!battleSetFlag){crCAL = crCAL1;
2768 crCAL1 = (int)[CAttackListTV clickedRow];
2771 while (!(AUN[1] == U->number)) {
2774 }else if(battleSetFlag){crCAL = crCAL2;
2775 crCAL2 = (int)[CAttackListTV clickedRow];
2778 while (!(DUN[1] == U->number)) {
2784 if(U->chipNumberL >= 0) {
2786 [self initCAttackSelect2];
2788 else if(U->chipNumber >= 0) {
2790 [self initCAttackSelect];
2795 -(void)initCAttackSelect{
2799 while (!(AUN[1] == U->number)) {
2802 if(!battleSetFlag){crCAL = crCAL1;
2803 //crCAL1 = (int)[CAttackListTV clickedRow];
2806 while (!(AUN[1] == U->number)) {
2809 }else if(battleSetFlag){crCAL = crCAL2;
2810 //crCAL2 = (int)[CAttackListTV clickedRow];
2813 while (!(DUN[1] == U->number)) {
2821 [CAttackListAC setSelectionIndex:crCAL];
2822 crCAL = (int)[CAttackListTV clickedRow];
2823 ATTACK *aTop = U->C.A;
2824 for(int i = 0;i < crCAL;i++){
2825 U->C.A = U->C.A->next;
2829 [bullet setStringValue:[NSString stringWithFormat:@"---/---"]];
2830 [costP setStringValue:[NSString stringWithFormat:@"---(%g)", U->C.S_C.MP]];
2831 [costV setStringValue:[NSString stringWithFormat:@"---(%d)", U->C.S_C.vigor]];
2832 [region setStringValue:[NSString stringWithFormat:@"陸-- 宙-- 海-- 空--"]];
2833 [crytical setStringValue:@""];
2834 [atkProperty setStringValue:@""];
2839 if(U->C.A->bullet > 0) [bullet setStringValue:[NSString stringWithFormat:@"%d/%d", U->C.A->bulletC, U->C.A->bullet]];
2840 else [bullet setStringValue:[NSString stringWithFormat:@"---/---"]];
2841 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]];
2842 else [costP setStringValue:[NSString stringWithFormat:@"---(%g)", U->C.S_C.MP]];
2843 if(U->C.A->vigor > 0) [costV setStringValue:[NSString stringWithFormat:@"%d(%d)", U->C.A->vigor, U->C.S_C.vigor]];
2844 else [costV setStringValue:[NSString stringWithFormat:@"---(%d)", U->C.S_C.vigor]];
2846 NSString *Riku, *Chu, *Umi, *Sora;
2848 switch (U->C.A->riku) {
2850 Riku = [@"A" retain];
2853 Riku = [@"B"retain];
2856 Riku = [@"C"retain];
2859 Riku = [@"D"retain];
2862 Riku = [@"E"retain];
2865 Riku = [@"S"retain];
2868 Riku = [@"SS"retain];
2871 switch (U->C.A->chu) {
2873 Chu = [@"A" retain];
2876 Chu = [@"B" retain];
2879 Chu = [@"C" retain];
2882 Chu = [@"D" retain];
2885 Chu = [@"E" retain];
2888 Chu = [@"S" retain];
2891 Chu = [@"SS" retain];
2894 switch (U->C.A->umi) {
2896 Umi = [@"A" retain];
2899 Umi = [@"B" retain];
2902 Umi = [@"C" retain];
2905 Umi = [@"D" retain];
2908 Umi = [@"E" retain];
2911 Umi = [@"S" retain];
2914 Umi = [@"SS" retain];
2917 switch (U->C.A->sora) {
2919 Sora = [@"A" retain];
2922 Sora = [@"B" retain];
2925 Sora = [@"C" retain];
2928 Sora = [@"D" retain];
2931 Sora = [@"E" retain];
2934 Sora = [@"S" retain];
2937 Sora = [@"SS" retain];
2948 [region setStringValue:[NSString stringWithFormat:@"陸%@ 宙%@ 海%@ 空%@", Riku, Chu, Umi, Sora]];
2949 [crytical setStringValue:@""];
2950 [atkProperty setStringValue:@""];
2956 -(void)initCAttackSelect2{
2960 while (!(AUN[1] == U->number)) {
2964 //crCAL1 = (int)[CAttackListTV clickedRow];
2966 while (!(AUN[1] == U->number)) {
2971 //crCAL2 = (int)[CAttackListTV clickedRow];
2973 while (!(DUN[1] == U->number)) {
2979 ATTACK *aTop = U->CL.A;
2980 for(int i = 0;i < crCAL;i++){
2981 U->CL.A = U->CL.A->next;
2989 if(U->CL.A->bullet > 0) [bullet setStringValue:[NSString stringWithFormat:@"%d/%d", U->CL.A->bulletC, U->CL.A->bullet]];
2990 else [bullet setStringValue:[NSString stringWithFormat:@"---/---"]];
2991 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]];
2992 else [costP setStringValue:[NSString stringWithFormat:@"---(%g)", U->CL.S_C.EN]];
2993 if(U->CL.A->vigor > 0) [costV setStringValue:[NSString stringWithFormat:@"%d(%d)", U->CL.A->vigor, U->C.S_C.vigor]];
2994 else [costV setStringValue:[NSString stringWithFormat:@"---(%d)", U->C.S_C.vigor]];
2996 NSString *Riku, *Chu, *Umi, *Sora;
2998 switch (U->CL.A->riku) {
3021 switch (U->CL.A->chu) {
3044 switch (U->CL.A->umi) {
3067 switch (U->CL.A->sora) {
3098 [region setStringValue:[NSString stringWithFormat:@"陸%@ 宙%@ 海%@ 空%@", Riku, Chu, Umi, Sora]];
3099 [crytical setStringValue:@""];
3100 [atkProperty setStringValue:@""];
3107 -(void)doubleClickCRL:(id)sender{
3109 if(crCRL == -1) return;
3111 if(unitBreak->team == 0)
3112 if(P[0].resource >= BRU->S_M.cSupply && P[0].food >= BRU->S_M.cFood && P[0].money >= BRU->S_M.cMoney){
3114 P[0].resource -= BRU->S_M.cSupply;
3115 P[0].food -= BRU->S_M.cFood;
3116 P[0].money -= BRU->S_M.cMoney;
3118 unitNum[possionX][possionY] = BRUindex;
3119 if(researchTeam == 0) unitTeam[possionX][possionY] = 0;
3120 if(researchTeam == 2) unitTeam[possionX][possionY] = 2;
3122 [self addUnitStatus];
3124 unitColorInitFlag = true;
3126 [researchPanel close];
3129 if(unitBreak->team == 2)
3130 if(P[1].resource >= BRU->S_M.cSupply && P[1].food >= BRU->S_M.cFood && P[1].money >= BRU->S_M.cMoney){
3132 P[1].resource -= BRU->S_M.cSupply;
3133 P[1].food -= BRU->S_M.cFood;
3134 P[1].money -= BRU->S_M.cMoney;
3136 unitNum[possionX][possionY] = BRUindex;
3137 if(researchTeam == 0) unitTeam[possionX][possionY] = 0;
3138 if(researchTeam == 2) unitTeam[possionX][possionY] = 2;
3140 [self addUnitStatus];
3142 unitColorInitFlag = true;
3144 [researchPanel close];
3149 -(void)clickCRL:(id)sender{
3151 crCRL = (int)[CResearchListTV clickedRow];
3156 B = &BC[buildNum[possionX][possionY]];
3166 for(int i = 0;i <= crCRL;i++){
3169 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", BU->S_M.ATK]];
3170 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", BU->S_M.DEF]];
3171 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", BU->S_M.CAP]];
3172 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", BU->S_M.ACU]];
3173 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", BU->S_M.EVA]];
3174 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", BU->S_M.MOV]];
3175 [researchIMG setImage:BU->imgb];
3176 [researchIMG setImageScaling:NSScaleToFit];
3182 for (int i = 0; BRU->nameID != UC[i].nameID && i < UCN;i++) {
3189 if(buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1){
3198 for(int i = k;i <= crCRL;i++){
3200 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ATK]];
3201 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.DEF]];
3202 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.CAP]];
3203 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ACU]];
3204 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.EVA]];
3205 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp1 + i - k)-1].S_M.MOV]];
3206 [researchIMG setImage:UC[*(GuildDisp1 + i - k)-1].imgb];
3207 [researchIMG setImageScaling:NSScaleToFit];
3212 for (int i = 0; UC[*(GuildDisp1 + crCRL - k)-1].nameID != UC[i].nameID && i < UCN;i++) {
3214 }BRU = &UC[BRUindex];
3218 }else if(buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3){
3227 for(int i = k;i <= crCRL;i++){
3229 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ATK]];
3230 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.DEF]];
3231 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.CAP]];
3232 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ACU]];
3233 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.EVA]];
3234 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp2 + i - k)-1].S_M.MOV]];
3235 [researchIMG setImage:UC[*(GuildDisp2 + i - k)-1].imgb];
3236 [researchIMG setImageScaling:NSScaleToFit];
3242 for (int i = 0; UC[*(GuildDisp2 + crCRL - k)-1].nameID != UC[i].nameID && i < UCN;i++) {
3244 }BRU = &UC[BRUindex];
3253 -(void)SetStatusFunc{
3262 double S, V, A, D, M, I;
3383 S = U->C.S_C.STR + STRfix;
3384 V = U->C.S_C.VIT + VITfix;
3385 A = U->C.S_C.AGI + AGIfix;
3386 D = U->C.S_C.DEX + DEXfix;
3387 M = U->C.S_C.MEN + MENfix;
3388 I = U->C.S_C.INT + INTfix;
3390 U->C.S_C.ATK = (S*5 + D*2 + A)/8;
3391 U->C.S_C.DEF = (V*5 + M*2 + S)/8;
3392 U->C.S_C.CAP = (I*4 + D*1 + M*2)/7;
3393 U->C.S_C.ACU = (D*4 + A*1 + M)/6;
3394 U->C.S_C.EVA = (A*4 + A*1 + M)/6;
3396 U->C.S_C.ATK += 0.5;
3397 U->C.S_C.DEF += 0.5;
3398 U->C.S_C.CAP += 0.5;
3399 U->C.S_C.ACU += 0.5;
3400 U->C.S_C.EVA += 0.5;
3402 U->C.S_C.ATK = floor(U->C.S_C.ATK);
3403 U->C.S_C.DEF = floor(U->C.S_C.DEF);
3404 U->C.S_C.CAP = floor(U->C.S_C.CAP);
3405 U->C.S_C.ACU = floor(U->C.S_C.ACU);
3406 U->C.S_C.EVA = floor(U->C.S_C.EVA);
3413 -(void)initMapscript{
3415 for(int i = 0;i < 9999;i++){
3419 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
3420 MAPSCRIPTD *MSDtop = MS.D;
3423 MAPSCRIPT0 *MSDPt = MS.D->P;
3426 MS.D->endFlag = false;
3429 double deltaET = floor(MS.D->ET2) - floor(MS.D->ET1);
3431 if(deltaET < 0) deltaET = 0;
3433 if(MS.D->ET1 <= eventTime && MS.D->ET2 >= eventTime){
3434 if(deltaET > 0) deltaR = rand()%(int)deltaET;
3437 MS.D->ET3 = MS.D->ET1 + (double)deltaR;
3438 MS.D->ET4 = MS.D->ET3;
3442 MS.D->P->endFlag = false;
3443 MS.D->P = MS.D->P->next;
3452 MF[MFselectedRow+1].MS = MS;
3457 -(void)EventLoopFS:(NSTimer*)time{
3459 if(openingAVP && openingAVPVisActive){
3460 if(openingAVP.rate <= 0 || openingAVPisDeactive){
3462 openingAVPVisHidden = true;
3463 [self openingAVPVfunc];
3464 openingAVPVisActive = false;
3465 openingAVPisDeactive = false;
3466 if(titleBGM) [titleBGM play];
3468 }else if(!openingAVP && openingAVPVisActive){
3469 openingAVPVisActive = false;
3470 openingAVPisDeactive = false;
3471 if(titleBGM) [titleBGM play];
3475 //NSLog(@"msgCnt %d", msgCnt);
3477 if(stopByFSVmenuFlag){
3478 [FSMenu makeKeyAndOrderFront:nil];
3483 menuDisplayFlag = false;
3486 if(saveDataLoadedFlag)
3492 for(int i = 0;i < DUN[1];i++){
3497 //NSLog(@"%d, %d", MF[0].MS.playerSet1, sdd2[0].MS.playerSet1);
3499 //if(Utarget) NSLog(@"PX %d PY %d UX %d UY %d", possionX, possionY, Utarget->x, Utarget->y);
3514 if(!fuckingLoadBugFix){
3516 [battleWindow close];
3519 if(extentBattleFlag){
3522 attackingWait = true;
3525 if(!battleSetUpIgnore){
3528 battleSet1Flag = false;
3529 battleSet2Flag = false;
3530 battleSettingFlag = false;
3531 extentBattleFlag = false;
3532 extentBattleFlag2 = true;
3535 if(cpuAtkExtendFlag2){
3538 attackingWait = true;
3541 if(!battleSetUpIgnore){
3545 battleSet1Flag = false;
3546 battleSet2Flag = false;
3547 battleSettingFlag = false;
3548 extentBattleFlag = false;
3549 extentBattleFlag2 = true;
3550 cpuAtkExtendFlag2 = false;
3551 [battlePanel close];
3553 }if(extentBattleFlag2){
3558 if(setBattleModeFlag){
3559 if(!battleReadyUpFlag){battleReadyUpFlag = true;
3561 P[0].resource = 500;
3564 P[1].resource = 500;
3567 P[2].resource = 500;
3571 [battleReadyUpPN1 setStringValue:P[0].name];
3572 [battleReadyUpPN2 setStringValue:P[1].name];
3574 NSString *string = @"";
3575 string = [string stringByAppendingFormat:@"%@の勝利条件\n", P[0].name];
3576 if(MF[MFselectedRow+1].MS.EGClight.endType1 == 1){
3577 string = [string stringByAppendingString:@"敵の壊滅\n"];
3579 }else if(MF[MFselectedRow+1].MS.EGClight.endType1 == 2){
3580 string = [string stringByAppendingString:@"味方の壊滅\n"];
3584 string = [string stringByAppendingString:@"\n"];
3586 string = [string stringByAppendingFormat:@"%@の勝利条件\n", P[1].name];
3587 if(MF[MFselectedRow+1].MS.EGCdark.endType1 == 2){
3588 string = [string stringByAppendingString:@"敵の壊滅\n"];
3589 }else if(MF[MFselectedRow+1].MS.EGClight.endType1 == 1){
3590 string = [string stringByAppendingString:@"味方の壊滅\n"];
3595 [battleReadyUpSupply1 setIntValue:P[0].resource];
3596 [battleReadyUpFood1 setIntValue:P[0].food];
3597 [battleReadyUpMoney1 setIntValue:P[0].money];
3599 [battleReadyUpSupply2 setIntValue:P[1].resource];
3600 [battleReadyUpFood2 setIntValue:P[1].food];
3601 [battleReadyUpMoney2 setIntValue:P[1].money];
3603 if(MF[MFselectedRow+1].MS.playerSet1 == 1){
3604 [battleReadyUpMAN1A setEnabled:NO];
3605 [battleReadyUpMAN1B setEnabled:NO];
3606 [battleReadyUpMAN1A setState:1];
3607 [battleReadyUpMAN1B setState:0];
3608 }else if(MF[MFselectedRow+1].MS.playerSet1 == 2){
3609 [battleReadyUpMAN1A setEnabled:NO];
3610 [battleReadyUpMAN1B setEnabled:NO];
3611 [battleReadyUpMAN1A setState:0];
3612 [battleReadyUpMAN1B setState:1];
3614 MF[MFselectedRow+1].MS.playerSet1 = 1;
3615 [battleReadyUpMAN1A setEnabled:YES];
3616 [battleReadyUpMAN1B setEnabled:YES];
3617 [battleReadyUpMAN1A setState:1];
3618 [battleReadyUpMAN1B setState:0];
3621 if(MF[MFselectedRow+1].MS.playerSet2 == 1){
3622 [battleReadyUpMAN2A setEnabled:NO];
3623 [battleReadyUpMAN2B setEnabled:NO];
3624 [battleReadyUpMAN2A setState:1];
3625 [battleReadyUpMAN2B setState:0];
3626 }else if(MF[MFselectedRow+1].MS.playerSet2 == 2){
3627 [battleReadyUpMAN2A setEnabled:NO];
3628 [battleReadyUpMAN2B setEnabled:NO];
3629 [battleReadyUpMAN2A setState:0];
3630 [battleReadyUpMAN2B setState:1];
3632 MF[MFselectedRow+1].MS.playerSet2 = 1;
3633 [battleReadyUpMAN2A setEnabled:YES];
3634 [battleReadyUpMAN2B setEnabled:YES];
3635 [battleReadyUpMAN2A setState:1];
3636 [battleReadyUpMAN2B setState:0];
3642 if([battleReadyUpMAN1A state] != 0)
3643 MF[MFselectedRow+1].MS.playerSet1 = 1;
3645 MF[MFselectedRow+1].MS.playerSet1 = 2;
3646 retardhelp1 = false;
3649 if([battleReadyUpMAN2A state] != 0)
3650 MF[MFselectedRow+1].MS.playerSet2 = 1;
3652 MF[MFselectedRow+1].MS.playerSet2 = 2;
3653 retardhelp2 = false;
3661 if(buildNum[possionX][possionY] < 0){
3662 [selectMesh setImage:MC[chipNum[possionX][possionY]].img];
3663 [selectMeshText setStringValue:MC[chipNum[possionX][possionY]].name];
3664 [selectMeshValue setStringValue:[NSString stringWithFormat:@"%d%", MC[chipNum[possionX][possionY]].dmgfix]];
3666 [selectMesh setImage:BC[buildNum[possionX][possionY]].img];
3667 [selectMeshText setStringValue:BC[buildNum[possionX][possionY]].name];
3668 [selectMeshValue setStringValue:[NSString stringWithFormat:@"%d%", BC[buildNum[possionX][possionY]].dmgfix]];
3670 [self SetStatusFunc];
3682 if(Uselected->chipNumberL < 0){
3683 if(!Uselected->dead){
3685 if(Uselected->team == 0){
3686 [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[0].name]];
3688 if(Uselected->team == 2){
3689 [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[1].name]];
3691 if(Uselected->team == 1){
3692 [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[2].name]];
3695 [tfName setStringValue:[NSString stringWithFormat:@"%@", Uselected->C.name]];
3696 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", Uselected->C.S_C.HP, Uselected->C.S_M.HP]];
3697 [HPbarLI setIntValue:[[NSString stringWithFormat:@"%g", Uselected->C.S_C.HP/Uselected->C.S_M.HP*100 + 0.5] intValue]];
3698 [MPbarTF setStringValue:[NSString stringWithFormat:@"MP %g/%g", Uselected->C.S_C.MP, Uselected->C.S_M.MP]];
3699 [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 %g", Uselected->C.S_C.ATK]];
3700 [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 %g", Uselected->C.S_C.DEF]];
3701 [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 %g", Uselected->C.S_C.CAP]];
3702 [tfHit setStringValue:[NSString stringWithFormat:@"命中値 %g", Uselected->C.S_C.ACU]];
3703 [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 %g", Uselected->C.S_C.EVA]];
3704 [tfMove setStringValue:[NSString stringWithFormat:@"移動力 %d", Uselected->C.S_C.MOV]];
3705 [tfWait setStringValue:[NSString stringWithFormat:@"WT %g", Uselected->C.S_C.WT]];
3706 [selectChara setImage:Uselected->C.imgb];
3707 [selectChara setImageScaling:NSScaleToFit];
3712 [tfName setStringValue:[NSString stringWithFormat:@"----"]];
3713 [tfArmy setStringValue:[NSString stringWithFormat:@"----"]];
3714 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP ----"]];
3715 [HPbarLI setIntValue:[[NSString stringWithFormat:@"0"] intValue]];
3716 [MPbarTF setStringValue:[NSString stringWithFormat:@"MP ----"]];
3717 [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
3718 [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
3719 [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
3720 [tfHit setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
3721 [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
3722 [tfMove setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
3723 [tfWait setStringValue:[NSString stringWithFormat:@"WT ----"]];
3724 [selectChara setImage:NULL];
3729 if(!Uselected->dead){
3731 if(Uselected->team == 0){
3732 [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[0].name]];
3734 if(Uselected->team == 2){
3735 [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[1].name]];
3738 [tfName setStringValue:[NSString stringWithFormat:@"%@", Uselected->CL.name]];
3739 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", Uselected->CL.S_C.HP, Uselected->CL.S_M.HP]];
3740 [HPbarLI setIntValue:[[NSString stringWithFormat:@"%g", Uselected->CL.S_C.HP/Uselected->CL.S_M.HP*100 + 0.5] intValue]];
3741 [MPbarTF setStringValue:[NSString stringWithFormat:@"EN %g/%g", Uselected->CL.S_C.EN, Uselected->CL.S_M.EN]];
3742 [tfAttack setStringValue:[NSString stringWithFormat:@"移動力 %d", Uselected->CL.S_C.MOV]];
3743 [tfDefence setStringValue:[NSString stringWithFormat:@"運動性 %g", Uselected->CL.S_C.MOB]];
3744 [tfCalc setStringValue:[NSString stringWithFormat:@"装甲 %g", Uselected->CL.S_C.ARM]];
3745 [tfHit setStringValue:[NSString stringWithFormat:@"限界 %g", Uselected->CL.S_C.LIM]];
3746 [tfDodge setStringValue:[NSString stringWithFormat:@""]];
3747 [tfMove setStringValue:[NSString stringWithFormat:@""]];
3748 [tfWait setStringValue:[NSString stringWithFormat:@"WT %g", Uselected->CL.S_C.WT]];
3749 [selectChara setImage:Uselected->CL.imgb];
3750 [selectChara setImageScaling:NSScaleToFit];
3754 [tfName setStringValue:[NSString stringWithFormat:@"----"]];
3755 [tfArmy setStringValue:[NSString stringWithFormat:@"----"]];
3756 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP ----"]];
3757 [HPbarLI setIntValue:[[NSString stringWithFormat:@"0"] intValue]];
3758 [MPbarTF setStringValue:[NSString stringWithFormat:@"MP ----"]];
3759 [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
3760 [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
3761 [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
3762 [tfHit setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
3763 [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
3764 [tfMove setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
3765 [tfWait setStringValue:[NSString stringWithFormat:@"WT ----"]];
3766 [selectChara setImage:NULL];
3774 [tfName setStringValue:[NSString stringWithFormat:@"----"]];
3775 [tfArmy setStringValue:[NSString stringWithFormat:@"----"]];
3776 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP ----"]];
3777 [HPbarLI setIntValue:[[NSString stringWithFormat:@"0"] intValue]];
3778 [MPbarTF setStringValue:[NSString stringWithFormat:@"MP ----"]];
3779 [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
3780 [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
3781 [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
3782 [tfHit setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
3783 [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
3784 [tfMove setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
3785 [tfWait setStringValue:[NSString stringWithFormat:@"WT ----"]];
3786 [selectChara setImage:NULL];
3794 if(unitBreak->team == 0){
3795 [tfResource setStringValue:[NSString stringWithFormat:@"資源 %d", P[0].resource]];
3796 [tfFood setStringValue:[NSString stringWithFormat:@"食料 %d", P[0].food]];
3797 [tfMoney setStringValue:[NSString stringWithFormat:@"資金 %d", P[0].money]];
3798 }else if(unitBreak->team == 2){
3799 [tfResource setStringValue:[NSString stringWithFormat:@"資源 %d", P[1].resource]];
3800 [tfFood setStringValue:[NSString stringWithFormat:@"食料 %d", P[1].food]];
3801 [tfMoney setStringValue:[NSString stringWithFormat:@"資金 %d", P[1].money]];
3802 }else if(unitBreak->team == 1){
3803 [tfResource setStringValue:[NSString stringWithFormat:@"資源 %d", P[2].resource]];
3804 [tfFood setStringValue:[NSString stringWithFormat:@"食料 %d", P[2].food]];
3805 [tfMoney setStringValue:[NSString stringWithFormat:@"資金 %d", P[2].money]];
3809 if(menuDisplayFlag){
3811 [self initBCreateList];
3812 [self initCSummonList];
3815 if(initMapFlag && datFileLoadCompFromTitle && !saveDataLoadedFlag){
3817 mouseDoubleClickedCnt = 0;
3818 mouseDoubleClickedFlag = false;
3819 mouseClicked = false;
3820 messageDialog = false;
3822 for(int i = 0;i<=1000;i++){
3823 for(int j = 0;j<= 1000;j++){
3824 buildNum[i][j] = -1;
3827 buildTeam[i][j] = -1;
3828 unitTeam[i][j] = -1;
3832 [self initUnitStatusDat];
3833 //NSLog(@"%d, %d", unitNum[0][0], MF[MFselectedRow].MS.playerSet1);
3834 [self initBuildStatusDat];
3838 initImgFlag = false;
3839 initStringNum = false;
3840 bugFixFlag1 = false;
3841 bugFixFlag2 = false;
3842 bugFixFlag3 = false;
3851 //ここに進行したマップスクリプト値関数
3852 //NSLog(@"%d, %d", unitNum[0][0], MF[MFselectedRow].MS.playerSet1);
3853 [self setTargetListDat];
3854 [self initGuildList];
3856 for(int i = 0;i < 255;i++){
3860 cpuTurnEndFlag = false;
3861 mapChipDataLoadProc = 0;
3866 battleEndFlag = false;
3867 initStatusFlag = true;
3868 TeamCountFlag = true;
3869 cpuTurnEndFlag = false;
3870 unitColorInitFlag = true;
3871 initMapEventFlag = true;
3872 fieldViewBattleInitFlag = true;
3873 MF[MFselectedRow+1].MS = sdd2[datRow].MS;
3874 MF[MFselectedRow+1].MS.D = sdd2[datRow].MS.D;
3875 MSDTOPP = sdd2[datRow].MS.D;
3876 MSDTOP = sdd2[datRow].MS.D;
3877 msdtop = sdd2[datRow].MS.D;
3878 MSDTO = sdd2[datRow].MS.D;
3880 //if(UTop) NSLog(@"%d, %d, %d", UTop->CPU, unitNum[0][0], MF[MFselectedRow].MS.playerSet1);
3881 datFileLoadCompFromTitle = false;
3885 }else if (initMapFlag && !initStatusFlag) {
3888 mouseDoubleClickedCnt = 0;
3889 mouseDoubleClickedFlag = false;
3890 mouseClicked = false;
3895 battleEndFlag = false;
3898 [self initUnitStatus];
3899 [self initBuildStatus];
3901 //NSLog(@"%d", unitNum[1][1]);
3905 U->C.S_C.HP = U->C.S_M.HP;
3911 initStatusFlag = true;
3913 TeamCountFlag = true;
3915 unitColorInitFlag = true;
3918 for (int i = 1;i < 512;i++) {
3919 if([[SC[storyNumb].nameMAP objectAtIndex:scenarioNumb] isEqualToString:[NSString stringWithFormat:@"%@", MF[i].fileName]])
3922 }if(MFselectedRow > 510){
3924 mapChipDataLoadFail = true;
3927 [self initMapscript];
3930 initImgFlag = false;
3931 initStringNum = false;
3932 bugFixFlag1 = false;
3933 bugFixFlag2 = false;
3934 bugFixFlag3 = false;
3939 [self setTargetList];
3942 initMapEventFlag = true;
3943 fieldViewBattleInitFlag = true;
3946 for(int i = 0;i < 255;i++){
3951 [self initGuildList];
3952 cpuTurnEndFlag = false;
3953 mapChipDataLoadProc = 0;
3956 if(mapChipDataLoadFail){
3957 [endGamePanel close];
3959 endGameCondition = false;
3960 initMapFlag = false;
3961 TeamCountFlag = false;
3962 initStatusFlag = false;
3963 battleBegin = false;
3967 blueWinFlag = false;
3971 mapChipDataLoadFail = false;
3980 endGameCondition = false;
3981 initMapFlag = false;
3982 TeamCountFlag = false;
3983 initStatusFlag = false;
3984 battleBegin = false;
3987 cpuModeMOVEflag = false;
3988 cpuModeATTACKflag = false;
3991 blueWinFlag = false;
3992 cpuAImodeflag = false;
3993 cpuTurnEndFlag = true;
3994 stageClearFlag = false;
3995 waitSwtichFlag = false;
3996 battleReadyUpFlag = false;
3997 setBattleModeFlag = false;
4005 }else if(initMapFlag){
4006 mapChipDataLoadProc++;
4009 if(mapChipDataLoadProc > 2)
4010 mapChipDataLoadProc = 2;
4012 if(mapChipDataLoadProc == 1){
4013 [fsWindow makeKeyAndOrderFront:nil];
4015 [titleWindow close];
4016 mapChipDataLoadProc++;
4020 if(unitBreak->team == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2){
4021 unitBreak->CPU = true;
4022 cpuAImodeflag = true;
4024 }else if(unitBreak->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2){
4025 unitBreak->CPU = true;
4026 cpuAImodeflag = true;
4028 }else if(unitBreak->team == 1){
4029 unitBreak->CPU = true;
4030 cpuAImodeflag = true;
4034 unitBreak->CPU = false;
4035 cpuAImodeflag = false;
4041 if(!cpuTurnEndFlag && unitBreak->C.S_C.WT == 0){
4042 [fieldView modeCPUturn];
4044 //NSLog(@"%d", U->x);
4054 //NSLog(@"%p", UTop);
4055 if(battleWindowFlag){battleFlag = true; battleWindowFlag = false;
4059 if(extentBattleFlag || cpuAtkExtendFlag2){
4060 if(!attackExtentFlag && !cpuAtkExtendFlag2)
4061 attackingWait = true;
4063 attackingWait = false;
4065 attackingWait = true;
4069 if(battleFlag && !battleSetUp){
4071 if(Utarget && !battleRdy)
4072 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4073 (unitBreak->team == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4074 (unitBreak->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2) ||
4075 (unitBreak->team == 1)
4082 [self battleStartCPU];//攻撃目標ウェイト
4083 attackingWait = true;
4087 if(attackExtentFlag || cpuAtkExtendFlag){
4088 attackingWait = false;
4099 if(initMapFlag && battleFlag)
4100 if((!attackExtentFlag && !cpuAtkExtendFlag))
4101 if(!battleSettingFlag && attackingWait){
4102 windowPoint.x = [mapWindow frame].origin.x;
4103 windowPoint.y = [mapWindow frame].origin.y;
4104 [battlePanel setFrameOrigin:windowPoint];
4105 [battlePanel makeKeyAndOrderFront:nil];
4106 [self setBattlePanel];
4109 if(Utarget && attackingWait){
4111 if(battleSetUp && ((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4112 (unitBreak->team == 2 && Utarget->team == 1 && MF[MFselectedRow+1].MS.playerSet2 == 2) || (unitBreak->team == 1 && Utarget->team == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4113 (unitBreak->team == 0 && Utarget->team == 1 && MF[MFselectedRow+1].MS.playerSet1 == 2) || (unitBreak->team == 1 && Utarget->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2) ||
4114 (unitBreak->team == 1 && Utarget->team == 1) ||
4115 (unitBreak->team == 2 && Utarget->team == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4116 (unitBreak->team == 0 && Utarget->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2)
4119 if(!animationFlag1 && !animationFlag2)
4124 oopsCnt = 30;//cpu攻撃設定
4127 //battleFlag = false;
4129 battleSet1Flag = false;
4130 battleSet2Flag = false;
4131 battleSettingFlag = false;
4132 attackingWait = false;
4139 if(battleRdy && ((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) || (unitBreak->team == 2 && Utarget->team == 1 && MF[MFselectedRow+1].MS.playerSet2 == 2) || (unitBreak->team == 1 && Utarget->team == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4140 (unitBreak->team == 0 && Utarget->team == 1 && MF[MFselectedRow+1].MS.playerSet1 == 2) || (unitBreak->team == 1 && Utarget->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2) ||
4141 (unitBreak->team == 1 && Utarget->team == 1) ||
4142 (unitBreak->team == 2 && Utarget->team == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4143 (unitBreak->team == 0 && Utarget->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2)
4150 if(!(AVpreview.rate > 0) && !animationFlag1 && !animationFlag2)
4161 damnitFixFlag = true;
4162 if(!datFileLoadCompFromTitle && initMapFlag){
4163 [self EventFunc:true];
4165 crapBugFixFlag = false;
4171 if(battleSetUp && fuckingLoadBugFix && Uselected && !attackingWait){
4172 if(!battleSetUpIgnore && fuckingLoadBugFix){
4173 [self AttackDisplay];
4175 windowPoint.x = [mapWindow frame].origin.x;
4176 windowPoint.y = [mapWindow frame].origin.y;
4177 [battleWindow setFrameOrigin:windowPoint];
4178 [battleWindow makeKeyAndOrderFront:nil];
4179 }else if(battleSetUpIgnore){
4180 [mapWindow makeKeyAndOrderFront:nil];
4183 windowPoint.x = [mapWindow frame].origin.x;
4184 windowPoint.y = [mapWindow frame].origin.y;
4185 [battleWindow setFrameOrigin:windowPoint];
4186 [battleWindow makeKeyAndOrderFront:nil];*/
4194 if(battleRdy && battleSetUp && fuckingLoadBugFix && !battleSetUpIgnore){
4195 [self DisplayMessage];
4202 if(battleBegin && !wtRdy2 && !battleFlag)
4206 //NSLog(@"eventTime%g", eventTime);
4209 if(!U->dead && U->C.S_C.WT > 0) U->C.S_C.WT -= 1;
4211 U->C.S_C.WT = 999999;
4214 if(U->C.S_C.WT <= 0 && !U->dead){//WTターン周り
4215 battleEndFlag = false;
4219 wtUnitNum = U->number;
4226 possionX = unitBreak->x;
4227 possionY = unitBreak->y;
4230 wtMovedFlag = false;
4231 wtAttackedFlag = false;
4235 [fieldView scrollPoint:NSMakePoint((wtPx-8)*32, (wtPy-8)*32)];
4238 if(buildNum[U->x][U->y] >= 0){
4242 if(B->x == U->x && B->y == U->y){
4255 U->C.S_C.HP += floor(U->C.S_M.HP*B->C.recHP/100);
4256 if(U->C.S_C.HP >= U->C.S_M.HP) U->C.S_C.HP = U->C.S_M.HP;
4260 U->C.S_C.MP += floor(U->C.S_M.MP*B->C.recMP/100);
4261 if(U->C.S_C.MP >= U->C.S_M.MP) U->C.S_C.MP = U->C.S_M.MP;
4265 U->CL.S_C.EN += floor(U->CL.S_M.EN*B->C.recEN/100);
4266 if(U->CL.S_C.EN >= U->CL.S_M.EN) U->CL.S_C.EN = U->CL.S_M.EN;
4269 if(B->C.recHPL > 0){
4270 U->CL.S_C.HP += floor(U->CL.S_M.HP*B->C.recHPL/100);
4271 if(U->CL.S_C.HP >= U->CL.S_M.HP) U->CL.S_C.HP = U->CL.S_M.HP;
4281 [self EventFunc:false];
4282 pussyCumsOnlyOnceFlag = false;
4293 if(!B->dead) B->C.S_C.WTE -= 1;
4294 if(B->C.S_C.WTE <= 0){
4297 P[0].resource += B->C.Esupply;
4298 P[0].food += B->C.Efood;
4299 P[0].money += B->C.Emoney;
4302 P[1].resource += B->C.Esupply;
4303 P[1].food += B->C.Efood;
4304 P[1].money += B->C.Emoney;
4307 P[2].resource += B->C.Esupply;
4308 P[2].food += B->C.Efood;
4309 P[2].money += B->C.Emoney;
4312 B->C.S_C.WTE = B->C.S_M.WTE;
4321 //NSLog(@"%g", eventTime);
4322 [self EventFunc:false];
4324 pussyCumsOnlyOnceFlag = false;
4326 //NSLog(@"eventTime%g", eventTime);
4342 if(buildSelectedFlag){
4343 windowPoint.x = [mapWindow frame].origin.x;
4344 windowPoint.y = [mapWindow frame].origin.y;
4345 [researchPanel setFrameOrigin:windowPoint];
4346 if([self setBuildList]){
4347 [researchPanel makeKeyAndOrderFront:nil];
4349 buildSelectedFlag = false;
4352 if(TeamCountFlag && !endGameCondition){
4357 if((U->team == 0 || U->team == 1) && !U->dead){
4360 else if(U->team == 2 && !U->dead){
4368 if(targType1cnt[1] == 0 || targType2cnt[1] == 0){
4369 endGameCondition = true;
4371 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[1].name]];
4374 if(targType1cnt[0] == 0 || targType2cnt[0] == 0){
4375 endGameCondition = true;
4377 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
4382 endGameCondition = true;
4384 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[1].name]];
4388 endGameCondition = true;
4390 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
4394 if(TeamCount0 == 0 && (MF[MFselectedRow+1].MS.EGCdark.endType1 == 2 || MF[MFselectedRow+1].MS.EGCdark.endType2 == 2)){
4395 endGameCondition = true;
4397 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[1].name]];
4399 if(TeamCount2 == 0 && (MF[MFselectedRow+1].MS.EGClight.endType1 == 1 || MF[MFselectedRow+1].MS.EGClight.endType2 == 1)){
4400 endGameCondition = true;
4402 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
4408 static int endGamePanelWait = 100;
4410 if(endGameCondition && !battleRdy){
4412 if(redWinFlag && blueWinFlag){
4416 windowPoint.x = [mapWindow frame].origin.x+30;
4417 windowPoint.y = [mapWindow frame].origin.y+200;
4418 [endGamePanel setFrameOrigin:windowPoint];
4419 [endGamePanel makeKeyAndOrderFront:nil];
4421 if(endGamePanelWait > 0) return;
4424 [endGamePanel close];
4433 endGameCondition = false;
4434 initMapFlag = false;
4435 TeamCountFlag = false;
4436 initStatusFlag = false;
4437 battleBegin = false;
4440 cpuModeMOVEflag = false;
4441 cpuModeATTACKflag = false;
4444 blueWinFlag = false;
4445 cpuAImodeflag = false;
4446 cpuTurnEndFlag = true;
4447 waitSwtichFlag = false;
4453 endGamePanelWait = 100;
4454 stageClearFlag = false;
4455 stageClearFlag2 = false;
4456 battleReadyUpFlag = false;
4457 setBattleModeFlag = false;
4461 [titleWindow makeKeyAndOrderFront:nil];
4469 endGameCondition = false;
4470 initMapFlag = false;
4471 TeamCountFlag = false;
4472 initStatusFlag = false;
4473 battleBegin = false;
4476 cpuModeMOVEflag = false;
4477 cpuModeATTACKflag = false;
4480 blueWinFlag = false;
4481 cpuAImodeflag = false;
4482 cpuTurnEndFlag = true;
4483 backTitleFlag = false;
4484 backTitleFlag2 = true;
4485 waitSwtichFlag = false;
4486 battleReadyUpFlag = false;
4487 setBattleModeFlag = false;
4495 }if(stageClearFlag){
4497 if(stageClearFlag2){
4499 endGameCondition = true;
4501 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
4515 endGameCondition = false;
4516 initMapFlag = false;
4517 TeamCountFlag = false;
4518 initStatusFlag = false;
4519 battleBegin = false;
4522 cpuModeMOVEflag = false;
4523 cpuModeATTACKflag = false;
4526 blueWinFlag = false;
4527 cpuAImodeflag = false;
4528 cpuTurnEndFlag = true;
4529 stageClearFlag = false;
4530 waitSwtichFlag = false;
4531 battleReadyUpFlag = false;
4532 setBattleModeFlag = false;
4545 [GameOverIV setImage:gaov.img];
4548 [GameOverWindow makeKeyAndOrderFront:nil];
4551 endGameCondition = false;
4552 initMapFlag = false;
4553 TeamCountFlag = false;
4554 initStatusFlag = false;
4555 battleBegin = false;
4558 cpuModeMOVEflag = false;
4559 cpuModeATTACKflag = false;
4562 blueWinFlag = false;
4563 cpuAImodeflag = false;
4564 cpuTurnEndFlag = true;
4565 backTitleFlag = false;
4566 gameOverFlag = false;
4567 gameOverFlag2 = true;
4568 waitSwtichFlag = false;
4569 battleReadyUpFlag = false;
4570 setBattleModeFlag = false;
4580 if(!Uselected->dead){
4584 while (U->number != wtUnitNum) {
4588 if(!wtMovedFlag && !wtAttackedFlag){
4589 U->C.S_C.WT = floor(U->C.S_M.WT/4 + 0.5);
4590 }else if(wtMovedFlag && wtAttackedFlag){
4591 U->C.S_C.WT = floor(U->C.S_M.WT + 0.5);
4592 }else if(wtMovedFlag){
4593 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
4594 }else if(wtAttackedFlag){
4595 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
4608 [self addSummonStatus];
4614 SKILL *sTop = U->C.S;
4617 if(U->C.S->type == 2) break;
4618 U->C.S = U->C.S->next;
4621 U->C.S_C.MP -= U->C.S->cost[crCSL];
4630 unitNum[possionX][possionY] = U->C.S->list[crCSL]-1;
4631 unitTeam[possionX][possionY] = 0;
4634 unitColorInitFlag = true;
4638 SKILL *sTop = U->C.S;
4641 if(U->C.S->type == 2) break;
4642 U->C.S = U->C.S->next;
4645 U->C.S_C.MP -= U->C.S->cost[crCSL];
4653 unitNum[possionX][possionY] = U->C.S->list[crCSL]-1;
4654 unitTeam[possionX][possionY] = 2;
4657 unitColorInitFlag = true;
4660 summonRdyFlag = false;
4668 if(unitMoveEndFlag){
4669 //pussyLoopFlag = false;
4676 if(displayBattleCheckPanelFlag == 1){
4677 displayBattleCheckPanelFlag = 2;
4679 windowPoint.x = [mapWindow frame].origin.x;
4680 windowPoint.y = [mapWindow frame].origin.y;
4681 [atkPanel setFrameOrigin:windowPoint];
4694 -(void)EventFunc:(bool)eventLoopProcFlag{
4700 pussyLoopFlag = false;
4709 if(battleBegin && !pussyLoopFlag){
4711 bool proccessTrue = false;
4712 static bool onlyBigin = false;
4713 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
4730 int proccesType = -1;
4732 bool EventFailFlag = false;
4733 static bool PtopFlag = false;
4760 if(MS.D->P->endFlag)
4761 MS.D->P = MS.D->P->next;
4767 if(!eventLoopProcFlag && MS.D->P->type == 0){
4768 proccessTrue = false;
4769 MS.D->P = MS.D->P->next;
4776 MS.D->endFlag = true;
4777 messageDialog = false;
4778 [self setMessage:NULL];
4783 MAPSCRIPT0 *MSDPT = MS.D->P;
4785 if(MS.D->ETtype == 0){
4787 }else if(MS.D->ETtype == 1){
4788 bool resultFailFlag = false;
4790 if(!MS.D->P->endFlag)
4791 resultFailFlag = true;
4792 MS.D->P = MS.D->P->next;
4797 MS.D->P->endFlag = false;
4798 MS.D->P = MS.D->P->next;
4801 }else if(MS.D->ETtype == 2){
4803 bool resultFailFlag = false;
4805 if(!MS.D->P->succeessfulFlag)
4806 resultFailFlag = true;
4807 MS.D->P = MS.D->P->next;
4812 MS.D->P->endFlag = false;
4813 MS.D->P = MS.D->P->next;
4815 }else if(MS.D->ETtype == 3){
4817 bool resultFailFlag = false;
4819 if(!MS.D->P->succeessfulFlag){
4820 resultFailFlag = false;
4823 MS.D->P = MS.D->P->next;
4824 resultFailFlag = true;
4829 MS.D->P->endFlag = false;
4830 MS.D->P = MS.D->P->next;
4832 //NSLog(@"%d", UTop->x);
4833 }else if(MS.D->ETtype == 4){
4835 MS.D->P->endFlag = false;
4836 MS.D->P = MS.D->P->next;
4852 for(int i = 0;*(MS.D->switch1+i)>0;i++){
4853 if(Suicchi[*(MS.D->switch1+i)])
4856 EventFailFlag = true;
4860 for(int i = 0;*(MS.D->switch2+i)>0;i++){
4861 if(!Suicchi[*(MS.D->switch2+i)])
4864 EventFailFlag = true;
4866 //NSLog(@"%g", eventTime);
4869 if(eventTime == MS.D->ET4 || MS.D->ET4 == 0 || MS.D->initialDeleyedFlag){
4871 if(MS.D->P->type == 6){
4872 if(eventTime == MS.D->ET4){
4873 MS.D->P->S4.lagFixFlag = false;
4875 else if(unitMoveEndFlag){
4876 MS.D->P->S4.lagFixFlag = false;
4878 else if(battleSetUp){
4879 MS.D->P->S4.lagFixFlag = false;
4881 else if(pushStanbyFlag){
4882 MS.D->P->S4.lagFixFlag = false;
4884 else if(battleEndFlag){
4885 MS.D->P->S4.lagFixFlag = false;
4887 else if(!MS.D->P->S4.lagFixFlag && MS.D->ET4 == 0){
4888 MS.D->P->S4.lagFixFlag = true;
4892 if(MS.D->P->S4.lagFixFlag){
4893 //NSLog(@"%g", eventTime);
4894 proccessTrue = false;
4898 proccessTrue = true;
4901 double deltaET = floor(MS.D->ET2) - floor(MS.D->ET1);
4903 if(deltaET < 0) deltaET = 0;
4905 if(MS.D->ET1 <= eventTime && MS.D->ET2 >= eventTime){
4906 if(deltaET > 0) deltaR = rand()%(int)deltaET;
4909 MS.D->ET3 = MS.D->ET1 + (double)deltaR;
4911 if(!MS.D->onlyInitialDeley) {
4912 MS.D->ET4 += MS.D->ET3;
4914 MS.D->initialDeleyedFlag = true;
4918 // NSLog(@"%g %d", eventTime, P[0].resource);
4922 proccessTrue = true;
4933 if(MS.D->type == -1 && !EventFailFlag)
4934 proccesType = ENTIRE_MAP;
4935 if(MS.D->type == 0 && pushStanbyFlag && (Uselected->x == MS.D->x && Uselected->y == MS.D->y) && !EventFailFlag)
4936 proccesType = CENTER_POINT;
4937 else if(MS.D->type == 0){
4938 proccesType = CENTER_POINT;
4939 proccessTrue = false;
4940 EventFailFlag = true;
4948 if(MS.D->ET4 != 0 && pussyCumsOnlyOnceFlag){
4949 EventFailFlag = true;
4953 if(EventFailFlag || !proccessTrue){
4955 //MS.D->P->endFlag = true;
4956 MS.D->P = MS.D->P->next;
4963 if(!eventLoopProcFlag && MS.D->P->type == 0)
4964 proccessTrue = false;
4967 switch (proccesType) {
4969 MS.D->P = [self setEvent:MS.D->P];
4976 if(waitSwtichFlag) {
4985 }if(stageClearFlag){
4999 MS.D->P = [self setEvent:MS.D->P];
5005 if(waitSwtichFlag) {
5014 }if(stageClearFlag){
5036 bool PnextFlag = false;
5040 if(MS.D->P->endFlag){
5041 MS.D->P = MS.D->P->next;
5063 MAPSCRIPT0 *MSDPT = MS.D->P;
5064 if(MS.D->ETtype == 0){
5066 MS.D->P->succeessfulFlag = true;
5067 MS.D->endFlag = true;
5068 MS.D->P = MS.D->P->next;
5070 }else if(MS.D->ETtype == 1){
5071 bool resultFailFlag = false;
5073 if(!MS.D->P->endFlag)
5074 resultFailFlag = true;
5075 MS.D->P = MS.D->P->next;
5080 MS.D->P->succeessfulFlag = false;
5081 MS.D->endFlag = false;
5082 MS.D->P = MS.D->P->next;
5085 }else if(MS.D->ETtype == 2){
5087 bool resultFailFlag = false;
5089 if(!MS.D->P->succeessfulFlag)
5090 resultFailFlag = true;
5091 MS.D->P = MS.D->P->next;
5096 MS.D->P->succeessfulFlag = false;
5097 MS.D->endFlag = false;
5098 MS.D->P = MS.D->P->next;
5100 }else if(MS.D->ETtype == 3){
5102 bool resultFailFlag = false;
5104 if(!MS.D->P->succeessfulFlag){
5105 resultFailFlag = false;
5108 resultFailFlag = true;
5109 MS.D->P = MS.D->P->next;
5114 MS.D->P->succeessfulFlag = false;
5115 MS.D->endFlag = false;
5116 MS.D->P = MS.D->P->next;
5118 }else if(MS.D->ETtype == 4){
5120 MS.D->P->succeessfulFlag = false;
5121 MS.D->endFlag = false;
5122 MS.D->P = MS.D->P->next;
5134 MF[MFselectedRow+1].MS.D = MS.D;
5136 cpuTurnEndFlag = false;
5137 battleSetUpIgnore = false;
5138 if(!eventLoopProcFlag){
5139 pussyCumsOnlyOnceFlag = true;
5142 fuckingLoadBugFix = true;
5149 -(MAPSCRIPT0*)setEvent:(MAPSCRIPT0*)MS0{
5163 APPEARANCE_FLAG = 22,
5164 DISSAPPEARANCE_FLAG = 23,
5169 STAGECLEAR_FLAG = 36,
5176 Proc = MESSAGE_FLAG;
5178 Proc = SELECTION_FLAG;
5180 Proc = INPUTNUMBER_FLAG;
5192 Proc = LABELJUMP_FLAG;
5194 Proc = COMMENT_FLAG;
5196 Proc = RESOURCE_FLAG;
5198 Proc = APPEARANCE_FLAG;
5200 Proc = DISSAPPEARANCE_FLAG;
5208 Proc = GAMEOVER_FLAG;
5210 Proc = STAGECLEAR_FLAG;
5220 messageDialog = true;
5221 [self setMessage:MS0];
5223 fuckingLoadBugFix = false;
5225 case SELECTION_FLAG:
5227 MS0 = [self setSelection:MS0];
5230 case INPUTNUMBER_FLAG:
5231 MS0 = [self setDefault:MS0];
5236 MS0 = [self setSwitch:MS0];
5239 MS0 = [self setDefault:MS0];
5242 MS0 = [self setDefault:MS0];
5245 MS0 = [self setBranch:MS0];
5248 MS0 = [self setLabel:MS0];
5250 case LABELJUMP_FLAG:
5251 MS0 = [self setLabelJump:MS0];
5254 MS0 = [self setComment:MS0];
5257 MS0 = [self setResource:MS0];
5259 case APPEARANCE_FLAG:
5260 MS0 = [self setAppearance:MS0];
5262 case DISSAPPEARANCE_FLAG:
5263 MS0 = [self setDissappearance:MS0];
5266 MS0 = [self setWait:MS0];
5269 MS0 = [self setBGM:MS0];
5272 MS0 = [self setSE:MS0];
5275 MS0 = [self setGameOver:MS0];
5278 case STAGECLEAR_FLAG:
5279 MS0 = [self setStageClear:MS0];
5282 MS0 = [self setTitleBack:MS0];
5290 -(void)setTargetListDat{
5291 targType1cnt[0] = -1;
5292 targType1cnt[1] = -1;
5293 targType2cnt[0] = -1;
5294 targType2cnt[1] = -1;
5295 targType2Lflag = false;
5296 targType2Dflag = false;
5299 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
5303 for (int i = 0;i < 64;i++) {
5304 if(!MS.EGClight.etValue1[i]) break;
5305 NSArray *array1 = [MS.EGClight.etValue1[i] componentsSeparatedByString:@"["];
5306 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5308 int Tx = [[array2 objectAtIndex:0] intValue];
5309 int Ty = [[array2 objectAtIndex:1] intValue];
5310 if(MS.EGClight.endType1 == 3){
5313 if(U->x == Tx && U->y == Ty){
5314 U->targType1L = true;
5315 if(targType1cnt[0] < 0)
5316 targType1cnt[0] = 0;
5323 if(MS.EGClight.endType1 == 4){
5326 if(U->x == Tx && U->y == Ty){
5327 U->targType2L = true;
5328 if(targType2cnt[0] < 0)
5329 targType2cnt[0] = 0;
5337 for (int i = 0;i < 64;i++) {
5338 if(!MS.EGClight.etValue2[i]) break;
5339 NSArray *array1 = [MS.EGClight.etValue2[i] componentsSeparatedByString:@"["];
5340 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5342 int Tx = [[array2 objectAtIndex:0] intValue];
5343 int Ty = [[array2 objectAtIndex:1] intValue];
5345 if(MS.EGClight.endType2 == 3){
5348 if(U->x == Tx && U->y == Ty){
5349 U->targType1L = true;
5350 if(targType1cnt[0] < 0)
5351 targType1cnt[0] = 0;
5358 if(MS.EGClight.endType2 == 4){
5361 if(U->x == Tx && U->y == Ty){
5362 U->targType2L = true;
5363 if(targType2cnt[0] < 0)
5364 targType2cnt[0] = 0;
5372 for (int i = 0;i < 64;i++) {
5373 if(!MS.EGCdark.etValue1[i]) break;
5374 NSArray *array1 = [MS.EGCdark.etValue1[i] componentsSeparatedByString:@"["];
5375 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5377 int Tx = [[array2 objectAtIndex:0] intValue];
5378 int Ty = [[array2 objectAtIndex:1] intValue];
5380 if(MS.EGCdark.endType1 == 3){
5383 if(U->x == Tx && U->y == Ty){
5384 U->targType1D = true;
5385 if(targType1cnt[1] < 0)
5386 targType1cnt[1] = 0;
5393 if(MS.EGCdark.endType1 == 4){
5396 if(U->x == Tx && U->y == Ty){
5397 U->targType2D = true;
5398 if(targType2cnt[1] < 0)
5399 targType2cnt[1] = 0;
5407 for (int i = 0;i < 64;i++) {
5408 if(!MS.EGCdark.etValue2[i]) break;
5409 NSArray *array1 = [MS.EGCdark.etValue2[i] componentsSeparatedByString:@"["];
5410 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5412 int Tx = [[array2 objectAtIndex:0] intValue];
5413 int Ty = [[array2 objectAtIndex:1] intValue];
5415 if(MS.EGCdark.endType2 == 3){
5418 if(U->x == Tx && U->y == Ty){
5419 U->targType1D = true;
5420 if(targType1cnt[1] < 0)
5421 targType1cnt[1] = 0;
5428 if(MS.EGCdark.endType2 == 4){
5431 if(U->x == Tx && U->y == Ty){
5432 U->targType2D = true;
5433 if(targType2cnt[1] < 0)
5434 targType2cnt[1] = 0;
5449 -(void)setTargetList{
5451 targType1cnt[0] = -1;
5452 targType1cnt[1] = -1;
5453 targType2cnt[0] = -1;
5454 targType2cnt[1] = -1;
5455 targType2Lflag = false;
5456 targType2Dflag = false;
5459 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
5463 for (int i = 0;i < 64;i++) {
5464 if(!MS.EGClight.etValue1[i] || [MS.EGClight.etValue1[i] isEqualToString:@""]) break;
5465 NSArray *array1 = [MS.EGClight.etValue1[i] componentsSeparatedByString:@"["];
5466 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5468 int Tx = [[array2 objectAtIndex:0] intValue];
5469 int Ty = [[array2 objectAtIndex:1] intValue];
5470 if(MS.EGClight.endType1 == 3){
5473 if(U->x == Tx && U->y == Ty){
5474 U->targType1L = true;
5475 if(targType1cnt[0] < 0)
5476 targType1cnt[0] = 0;
5483 if(MS.EGClight.endType1 == 4){
5486 if(U->x == Tx && U->y == Ty){
5487 U->targType2L = true;
5488 if(targType2cnt[0] < 0)
5489 targType2cnt[0] = 0;
5497 for (int i = 0;i < 64;i++) {
5498 if(!MS.EGClight.etValue2[i] || [MS.EGClight.etValue2[i] isEqualToString:@""]) break;
5499 NSArray *array1 = [MS.EGClight.etValue2[i] componentsSeparatedByString:@"["];
5500 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5502 int Tx = [[array2 objectAtIndex:0] intValue];
5503 int Ty = [[array2 objectAtIndex:1] intValue];
5505 if(MS.EGClight.endType2 == 3){
5508 if(U->x == Tx && U->y == Ty){
5509 U->targType1L = true;
5510 if(targType1cnt[0] < 0)
5511 targType1cnt[0] = 0;
5518 if(MS.EGClight.endType2 == 4){
5521 if(U->x == Tx && U->y == Ty){
5522 U->targType2L = true;
5523 if(targType2cnt[0] < 0)
5524 targType2cnt[0] = 0;
5532 for (int i = 0;i < 64;i++) {
5533 if(!MS.EGCdark.etValue1[i] || [MS.EGCdark.etValue1[i] isEqualToString:@""]) break;
5534 NSArray *array1 = [MS.EGCdark.etValue1[i] componentsSeparatedByString:@"["];
5535 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5537 int Tx = [[array2 objectAtIndex:0] intValue];
5538 int Ty = [[array2 objectAtIndex:1] intValue];
5540 if(MS.EGCdark.endType1 == 3){
5543 if(U->x == Tx && U->y == Ty){
5544 U->targType1D = true;
5545 if(targType1cnt[1] < 0)
5546 targType1cnt[1] = 0;
5553 if(MS.EGCdark.endType1 == 4){
5556 if(U->x == Tx && U->y == Ty){
5557 U->targType2D = true;
5558 if(targType2cnt[1] < 0)
5559 targType2cnt[1] = 0;
5567 for (int i = 0;i < 64;i++) {
5568 if(!MS.EGCdark.etValue2[i] || [MS.EGCdark.etValue2[i] isEqualToString:@""]) break;
5569 NSArray *array1 = [MS.EGCdark.etValue2[i] componentsSeparatedByString:@"["];
5570 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5572 int Tx = [[array2 objectAtIndex:0] intValue];
5573 int Ty = [[array2 objectAtIndex:1] intValue];
5575 if(MS.EGCdark.endType2 == 3){
5578 if(U->x == Tx && U->y == Ty){
5579 U->targType1D = true;
5580 if(targType1cnt[1] < 0)
5581 targType1cnt[1] = 0;
5588 if(MS.EGCdark.endType2 == 4){
5591 if(U->x == Tx && U->y == Ty){
5592 U->targType2D = true;
5593 if(targType2cnt[1] < 0)
5594 targType2cnt[1] = 0;
5610 -(bool)setBuildList{
5614 [self willChangeValueForKey:@"CResearchListMA"];
5615 [CResearchListMA removeAllObjects];
5616 [self didChangeValueForKey:@"CResearchListMA"];
5618 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
5619 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
5620 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
5621 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
5622 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
5623 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
5624 [researchIMG setImage:NULL];
5630 while (B && B->x != possionX && B->y != possionY) {
5633 B0 = &BC[buildNum[possionX][possionY]];
5641 if(buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1){
5651 else if(buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3){
5665 if(B->makeLv >= B0->R->Lv){
5666 NSMutableDictionary* dict = [NSMutableDictionary new];
5667 [dict setValue:[NSString stringWithFormat:@"%@", BU->nameClass] forKey:@"name"];
5668 [dict setValue:[NSString stringWithFormat:@"%g", BU->S_M.HP] forKey:@"HP"];
5669 [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d", BU->S_M.cSupply, BU->S_M.cFood, BU->S_M.cMoney] forKey:@"cost"];
5670 [dict setValue:BU->img forKey:@"img"];
5673 [self willChangeValueForKey:@"CResearchListMA"];
5674 [CResearchListMA addObject:dict];
5675 [self didChangeValueForKey:@"CResearchListMA"];
5677 B0->R = B0->R->next;
5685 B = &BC[buildNum[possionX][possionY]];
5694 for(int i = 0;i <= crCRL && B->R;i++){
5697 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", BU->S_M.ATK]];
5698 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", BU->S_M.DEF]];
5699 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", BU->S_M.CAP]];
5700 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", BU->S_M.ACU]];
5701 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", BU->S_M.EVA]];
5702 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", BU->S_M.MOV]];
5703 [researchIMG setImage:BU->imgb];
5704 [researchIMG setImageScaling:NSScaleToFit];
5711 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
5713 if(B->GuildFlag &&( buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1)){
5715 int a = MS.guildListRegistNum12 - MS.guildListRegistNum11;
5720 Gnum1 = MS.guildListRegistNum11 + arc4random()%(MS.guildListRegistNum12 - MS.guildListRegistNum11+1);
5722 Gnum1 = MS.guildListRegistNum12;
5724 if(Gnum1 > GCnum1+1)
5729 saveGuildList = calloc((GCnum1+1), sizeof(int));
5730 if(!guildRE1) GuildDisp1 = calloc(Gnum1, sizeof(int));
5731 for(int i = 0;i < Gnum1;i++){
5734 n = [self chooseGuildList:GuildChosen1 gcnum:GCnum1];
5737 *(GuildDisp1 + i) = *(GuildChosen1 + n);
5740 if(*(GuildDisp1 + i) <= 0)
5743 NSMutableDictionary* dict = [NSMutableDictionary new];
5744 [dict setValue:[NSString stringWithFormat:@"%@", UC[*(GuildDisp1 + i)-1].name] forKey:@"name"];
5745 [dict setValue:[NSString stringWithFormat:@"%g", UC[*(GuildDisp1 + i)-1].S_M.HP] forKey:@"HP"];
5746 [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d", UC[*(GuildDisp1 + i)-1].S_M.cSupply, UC[*(GuildDisp1 + i)-1].S_M.cFood, UC[*(GuildDisp1 + i)-1].S_M.cMoney] forKey:@"cost"];
5747 [dict setValue:UC[*(GuildDisp1 + i)-1].img forKey:@"img"];
5750 [self willChangeValueForKey:@"CResearchListMA"];
5751 [CResearchListMA addObject:dict];
5752 [self didChangeValueForKey:@"CResearchListMA"];
5766 for(int i = k;i <= crCRL;i++){
5767 if(*(GuildDisp1 + i - k) <= 0)
5770 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ATK]];
5771 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.DEF]];
5772 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.CAP]];
5773 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ACU]];
5774 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.EVA]];
5775 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp1 + i - k)-1].S_M.MOV]];
5776 [researchIMG setImage:UC[*(GuildDisp1 + i - k)-1].imgb];
5777 [researchIMG setImageScaling:NSScaleToFit];
5782 }else if(B->GuildFlag && (buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3)){
5784 int a = MS.guildListRegistNum22 - MS.guildListRegistNum21;
5789 Gnum2 = MS.guildListRegistNum21 + arc4random()%(MS.guildListRegistNum22 - MS.guildListRegistNum21+1);
5791 Gnum2 = MS.guildListRegistNum22;
5793 if(Gnum2 > GCnum2+1)
5799 saveGuildList = calloc((GCnum2+1), sizeof(int));
5800 if(!guildRE2) GuildDisp2 = calloc(Gnum2, sizeof(int));
5801 for(int i = 0;i < Gnum2;i++){
5803 n = [self chooseGuildList:GuildChosen2 gcnum:GCnum2];
5806 *(GuildDisp2 + i) = *(GuildChosen2 + n);
5809 if(*(GuildDisp2 + i) <= 0)
5812 NSMutableDictionary* dict = [NSMutableDictionary new];
5813 [dict setValue:[NSString stringWithFormat:@"%@", UC[*(GuildDisp2 + i)-1].name] forKey:@"name"];
5814 [dict setValue:[NSString stringWithFormat:@"%g", UC[*(GuildDisp2 + i)-1].S_M.HP] forKey:@"HP"];
5815 [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d", UC[*(GuildDisp2 + i)-1].S_M.cSupply, UC[*(GuildDisp2 + i)-1].S_M.cFood, UC[*(GuildDisp2 + i)-1].S_M.cMoney] forKey:@"cost"];
5816 [dict setValue:UC[*(GuildDisp2 + i)-1].img forKey:@"img"];
5819 [self willChangeValueForKey:@"CResearchListMA"];
5820 [CResearchListMA addObject:dict];
5821 [self didChangeValueForKey:@"CResearchListMA"];
5831 for(int i = k;i <= crCRL;i++){
5832 if(*(GuildDisp2 + i - k) <= 0)
5836 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ATK]];
5837 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.DEF]];
5838 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.CAP]];
5839 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ACU]];
5840 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.EVA]];
5841 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp2 + i - k)-1].S_M.MOV]];
5842 [researchIMG setImage:UC[*(GuildDisp2 + i - k)-1].imgb];
5843 [researchIMG setImageScaling:NSScaleToFit];
5860 -(int)chooseGuildList:(int*)value gcnum:(int)gcnum{
5864 bool sameFlag = false;
5865 bool sameFlag2 = false;
5867 if(guildc >= gcnum+1){
5872 a = arc4random()%(gcnum+1);
5874 for(int i = 0;i < guildc;i++){
5875 if(*(saveGuildList+i) == a){
5884 *(saveGuildList+guildc) = a;
5890 if([UC[*(value + a)-1].nameID isEqualToString:U->C.nameID]){
5905 -(void)initGuildList{
5907 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
5909 GuildChosen1 = calloc(UCN, sizeof(int));
5910 GuildChosen2 = calloc(UCN, sizeof(int));
5913 for (int i = 0;i < UCN;i++) {
5914 if(MS.guildListRegist[i]){
5916 *(GuildChosen1 + GCnum1) = i+1;
5920 for (int i = 0;i < UCN;i++) {
5921 if(MS.guildListRegist2[i]){
5923 *(GuildChosen2 + GCnum2) = i+1;
5932 [self setCommandPanel];
5933 [menuPanel makeKeyAndOrderFront:nil];
5936 -(IBAction)pushMove:(id)sender{menuDisplayFlag = false;
5943 -(IBAction)pushAttack:(id)sender{menuDisplayFlag = false;
5947 windowPoint.x = [mapWindow frame].origin.x;
5948 windowPoint.y = [mapWindow frame].origin.y;
5949 [atkPanel setFrameOrigin:windowPoint];
5952 while (!(AUN[1] == U->number)) {
5956 if(U->chipNumberL >= 0){
5958 [self initCAttackList2];
5959 [self initCAttackSelect2];
5961 else if(U->chipNumber >= 0) {
5963 [self initCAttackList];
5964 [self initCAttackSelect];
5967 [atkPanel makeKeyAndOrderFront:nil];
5969 -(IBAction)pushStandby:(id)sender{menuDisplayFlag = false;
5973 while (U->number != wtUnitNum) {
5977 if(!wtMovedFlag && !wtAttackedFlag){
5978 U->C.S_C.WT = floor(U->C.S_M.WT/4 + 0.5);
5979 }else if(wtMovedFlag && wtAttackedFlag){
5980 U->C.S_C.WT = floor(U->C.S_M.WT + 0.5);
5981 }else if(wtMovedFlag){
5982 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
5983 }else if(wtAttackedFlag){
5984 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
5989 if(B->x == possionX && B->y == possionY && B->C.capture){
5990 buildCaptureFlag = true;
5991 unitMoveEndFlag = true;
6001 pushStanbyFlag = true;
6002 pussyLoopFlag = false;
6005 -(IBAction)pushCreate:(id)sender{menuDisplayFlag = false;
6010 windowPoint.x = [mapWindow frame].origin.x;
6011 windowPoint.y = [mapWindow frame].origin.y;
6012 [createPanel setFrameOrigin:windowPoint];
6014 [self initBCreateList];
6015 [createPanel makeKeyAndOrderFront:nil];
6018 -(IBAction)pushSummon:(id)sender{menuDisplayFlag = false;
6023 windowPoint.x = [mapWindow frame].origin.x;
6024 windowPoint.y = [mapWindow frame].origin.y;
6025 [summonPanel setFrameOrigin:windowPoint];
6027 [self initCSummonList];
6028 [summonPanel makeKeyAndOrderFront:nil];
6033 -(void)initStatusWindow{
6037 [STIV setImage:Uselected->C.imgb];
6038 [STnameTF setStringValue:Uselected->C.name];
6039 [STclassTF setStringValue:Uselected->C.nameClass];
6040 [SThpTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", Uselected->C.S_C.HP, Uselected->C.S_M.HP]];
6041 [STmpTF setStringValue:[NSString stringWithFormat:@"MP %g/%g", Uselected->C.S_C.MP, Uselected->C.S_M.MP]];
6042 [STatkTF setStringValue:[NSString stringWithFormat:@"ATK %g", Uselected->C.S_C.ATK]];
6043 [STdefTF setStringValue:[NSString stringWithFormat:@"DEF %g", Uselected->C.S_C.DEF]];
6044 [STcapTF setStringValue:[NSString stringWithFormat:@"CAP %g", Uselected->C.S_C.CAP]];
6045 [STacuTF setStringValue:[NSString stringWithFormat:@"ACU %g", Uselected->C.S_C.ACU]];
6046 [STevaTF setStringValue:[NSString stringWithFormat:@"EVA %g", Uselected->C.S_C.EVA]];
6047 [STstrTF setStringValue:[NSString stringWithFormat:@"STR %g", Uselected->C.S_C.STR]];
6048 [STvitTF setStringValue:[NSString stringWithFormat:@"VIT %g", Uselected->C.S_C.VIT]];
6049 [STagiTF setStringValue:[NSString stringWithFormat:@"AGI %g", Uselected->C.S_C.AGI]];
6050 [STdexTF setStringValue:[NSString stringWithFormat:@"DEX %g", Uselected->C.S_C.DEX]];
6051 [STmenTF setStringValue:[NSString stringWithFormat:@"MEN %g", Uselected->C.S_C.MEN]];
6052 [STintTF setStringValue:[NSString stringWithFormat:@"INT %g", Uselected->C.S_C.INT]];
6053 [STmelTF setStringValue:[NSString stringWithFormat:@"MEL %g", Uselected->C.S_C.MEL]];
6054 [STmisTF setStringValue:[NSString stringWithFormat:@"MIS %g", Uselected->C.S_C.MIS]];
6055 [SThitTF setStringValue:[NSString stringWithFormat:@"HIT %g", Uselected->C.S_C.HIT]];
6056 [STdodTF setStringValue:[NSString stringWithFormat:@"DOD %g", Uselected->C.S_C.DOD]];
6057 [STreaTF setStringValue:[NSString stringWithFormat:@"REA %g", Uselected->C.S_C.REA]];
6058 [STskiTF setStringValue:[NSString stringWithFormat:@"SKI %g", Uselected->C.S_C.SKI]];
6059 [STvigTF setStringValue:[NSString stringWithFormat:@"VIG %d", Uselected->C.S_C.vigor]];
6070 -(IBAction)pushStatus:(id)sender{menuDisplayFlag = false;
6072 [self initStatusWindow];
6074 windowPoint.x = [mapWindow frame].origin.x;
6075 windowPoint.y = [mapWindow frame].origin.y;
6076 [STwindow setFrameOrigin:windowPoint];
6077 [STwindow makeKeyAndOrderFront:nil];
6084 -(IBAction)STsubmit:(id)sender{
6089 -(IBAction)pushCancel:(id)sender{menuDisplayFlag = false;
6095 -(IBAction)pushCancelCAL:(id)sender{
6100 -(IBAction)pushCancelBCL:(id)sender{
6102 [createPanel close];
6105 -(IBAction)pushCancelCSL:(id)sender{
6107 [summonPanel close];
6110 -(void)addBuildStatus{
6115 if(registerNumB == 1){
6116 B = calloc(1, sizeof(BUILD));
6123 while (B->next) {omgCnt++;
6126 if(registerNumB != 1){
6127 B->next = calloc(1, sizeof(BUILD));
6128 if(registerNumB == 2)
6134 B->number = registerNumB;
6137 B->chipNumber = BC[buildNum[possionX][possionY]].chipNumb;
6140 B->C = BC[buildNum[possionX][possionY]];
6141 B->img = [BC[buildNum[possionX][possionY]].img retain];
6142 unitColorInitFlag = true;
6144 if(buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1){
6146 if(unitTeam[possionX][possionY] == 0){
6147 U->joinArmyFromNext = true;
6148 U->persuasion = true;
6151 if(buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3){
6154 if(buildTeam[possionX][possionY] == 4 || buildTeam[possionX][possionY] == 5){
6157 if(buildTeam[possionX][possionY] == -1){
6166 -(void)addUnitStatus{
6170 while (U->next) {omgCnt++;
6173 U->next = calloc(1, sizeof(UNIT));
6176 if(omgCnt == 0) U = UTop;
6177 U->number = registerNum;
6179 for(int i = 0;i < UCN;i++){
6180 if([U->C.nameID isEqualToString:UC[i].nameID])
6184 U->chipNumber = unitNum[possionX][possionY];
6185 U->chipNumberL = loadNum[possionX][possionY];
6186 U->C.chipNumb = unitNum[possionX][possionY];
6187 U->CL.chipNumb = loadNum[possionX][possionY];
6191 if(unitTeam[possionX][possionY] == 0 || unitTeam[possionX][possionY] == 1){
6193 if(unitTeam[possionX][possionY] == 1){
6194 U->joinArmyFromNext = true;
6195 U->persuasion = true;
6198 if(MF[MFselectedRow+1].MS.playerSet1 == 2){
6202 if(unitTeam[possionX][possionY] == 2 || unitTeam[possionX][possionY] == 3){
6204 if(unitTeam[possionX][possionY] == 3){
6205 U->joinArmyFromNext = true;
6206 U->persuasion = true;
6209 if(MF[MFselectedRow+1].MS.playerSet2 == 2){
6213 if(unitTeam[possionX][possionY] == 4 || unitTeam[possionX][possionY] == 5){
6215 if(unitTeam[possionX][possionY] == 5){
6216 U->joinArmyFromNext = true;
6217 U->persuasion = true;
6221 if(unitTeam[possionX][possionY] == -1){
6223 if(unitTeam[possionX][possionY] == 0){
6224 U->joinArmyFromNext = false;
6225 U->persuasion = true;
6231 [self SetUnitStatus:unitNum[possionX][possionY]];
6235 -(void)addSummonStatus{
6239 while (U->next) {omgCnt++;
6242 U->next = calloc(1, sizeof(UNIT));
6245 if(omgCnt == 0) U = UTop;
6252 if(unitTeam[CSLU->x][CSLU->y] == 0 || unitTeam[CSLU->x][CSLU->y] == 1){
6254 if(unitTeam[CSLU->x][CSLU->y] == 1){
6255 U->joinArmyFromNext = true;
6256 U->persuasion = true;
6259 if(unitTeam[CSLU->x][CSLU->y] == 2 || unitTeam[CSLU->x][CSLU->y] == 3){
6261 if(unitTeam[CSLU->x][CSLU->y] == 3){
6262 U->joinArmyFromNext = true;
6263 U->persuasion = true;
6266 if(unitTeam[CSLU->x][CSLU->y] == 4 || unitTeam[CSLU->x][CSLU->y] == 5){
6268 if(unitTeam[CSLU->x][CSLU->y] == 5){
6269 U->joinArmyFromNext = true;
6270 U->persuasion = true;
6273 if(unitTeam[CSLU->x][CSLU->y] == -1){
6275 if(unitTeam[CSLU->x][CSLU->y] == 0){
6276 U->joinArmyFromNext = false;
6277 U->persuasion = true;
6281 [self SetUnitStatus:unitNum[possionX][possionY]];
6283 for(int i = 0;i < UCN;i++){
6284 if([U->C.nameID isEqualToString:UC[i].nameID])
6287 for(int i = 0;i < LCN;i++){
6288 if([U->CL.nameID isEqualToString:LC[i].nameID])
6291 for(int i = 0;i < UCN;i++){
6292 if([U->C.nameID isEqualToString:UC[i].nameID])
6295 for(int i = 0;i < LCN;i++){
6296 if([U->CL.nameID isEqualToString:LC[i].nameID])
6304 -(void)initUnitStatusDat{
6307 for(int i = 0;i < sdd2[datRow].registerNum;i++){
6309 U = calloc(1, sizeof(UNIT));
6315 U->x = sdd2[datRow].dU[i].x;
6316 U->y = sdd2[datRow].dU[i].y;
6317 U->number = sdd2[datRow].dU[i].number;;
6318 U->chipNumber = sdd2[datRow].dU[i].chipNumber;
6319 U->chipNumberL = sdd2[datRow].dU[i].chipNumberL;
6320 U->C.chipNumb = sdd2[datRow].dU[i].C.chipNumb;
6321 U->CL.chipNumb = sdd2[datRow].dU[i].C.chipNumb;
6323 U->dead = sdd2[datRow].dU[i].dead;
6325 U->team = sdd2[datRow].dU[i].team;
6326 U->CPU = sdd2[datRow].dU[i].CPU;
6327 U->joinArmyFromNext = sdd2[datRow].dU[i].joinArmyFromNext;
6328 U->persuasion = sdd2[datRow].dU[i].persuasion;
6330 U->ix = sdd2[datRow].dU[i].ix;
6331 U->iy = sdd2[datRow].dU[i].iy;
6332 U->iz = sdd2[datRow].dU[i].iz;
6336 if(U->chipNumber >= 0) [self SetUnitStatus:U->chipNumber];
6337 if(U->chipNumberL >= 0) [self SetUnitStatus2:U->chipNumberL];
6339 U->C.S_C = sdd2[datRow].dU[i].C.S_C;
6340 U->C.R_C = sdd2[datRow].dU[i].C.R_C;
6342 if(U->chipNumberL >= 0) U->img = [LC[U->chipNumberL].img retain];
6343 else U->img = [UC[U->chipNumber].img retain];
6346 unitTeam[U->x][U->y] = U->team;
6347 unitNum[U->x][U->y] = U->chipNumber;
6348 loadNum[U->x][U->y] = U->chipNumberL;
6351 U->next = calloc(1, sizeof(UNIT));
6354 if(U) U->next = NULL;
6360 -(void)initUnitStatus{
6364 for(int i=1;i <= chipHeight;i++){
6365 for(int j=1;j<= chipWidth;j++){
6366 if(unitNum[j][i] >= 0 || loadNum[j][i] >= 0){
6368 if(registerNum == 1){
6369 U = calloc(1, sizeof(UNIT));
6376 U->number = registerNum;
6377 U->chipNumber = unitNum[j][i];
6378 U->chipNumberL = loadNum[j][i];
6379 U->C.chipNumb = U->chipNumber;
6380 U->CL.chipNumb = U->chipNumberL;
6382 if(unitTeam[j][i] == 0 || unitTeam[j][i] == 1){
6384 if(unitTeam[j][i] == 1){
6385 U->joinArmyFromNext = true;
6386 U->persuasion = true;
6388 if(MF[MFselectedRow+1].MS.playerSet1 == 2)
6391 if(unitTeam[j][i] == 2 || unitTeam[j][i] == 3){
6393 if(unitTeam[i][j] == 2){
6394 U->joinArmyFromNext = true;
6395 U->persuasion = true;
6397 if(MF[MFselectedRow+1].MS.playerSet2 == 2)
6400 if(unitTeam[j][i] == 4 || unitTeam[j][i] == 5){
6402 if(unitTeam[j][i] == 5){
6403 U->joinArmyFromNext = true;
6404 U->persuasion = true;
6408 if(unitTeam[j][i] == -1){
6410 if(unitTeam[j][i] == -1){
6411 U->joinArmyFromNext = false;
6412 U->persuasion = true;
6416 if(unitNum[j][i] >= 0) [self SetUnitStatus:unitNum[j][i]];
6417 if(loadNum[j][i] >= 0) [self SetUnitStatus2:loadNum[j][i]];
6419 U->next = calloc(1, sizeof(UNIT));
6430 if(Ucrnt->x == U->x && Ucrnt->y == U->y){
6442 if(U) U->next = NULL;
6447 -(void)initBuildStatusDat{
6450 for(int i = 0;i < sdd2[datRow].registerNumB;i++){
6452 B = calloc(1, sizeof(BUILD));
6458 B->x = sdd2[datRow].dB[i].x;
6459 B->y = sdd2[datRow].dB[i].y;
6460 B->team = sdd2[datRow].dB[i].team;
6461 B->number = sdd2[datRow].dB[i].number;
6462 B->chipNumber = sdd2[datRow].dB[i].chipNumber;
6463 B->makeLv = sdd2[datRow].dB[i].makeLv;
6464 B->dead = sdd2[datRow].dB[i].dead;
6466 B->C = BC[B->chipNumber];
6467 B->C.S_C = sdd2[datRow].dB[i].C.S_C;
6469 B->img = [BC[B->chipNumber].img retain];
6471 buildTeam[B->x][B->y] = B->team;
6472 buildNum[B->x][B->y] = B->chipNumber;
6474 B->next = calloc(1, sizeof(BUILD));
6476 if(B) B->next = NULL;
6482 -(void)initBuildStatus{
6485 for(int i=1;i <= chipHeight;i++){
6486 for(int j=1;j<= chipWidth;j++){
6487 if(buildNum[j][i] >= 0){
6489 if(registerNumB == 1){
6490 B = calloc(1, sizeof(BUILD));
6493 if(registerNumB > 1)
6497 B->number = registerNumB;
6498 B->chipNumber = buildNum[j][i];
6500 if(buildTeam[j][i] == 0 || buildTeam[j][i] == 1){
6504 if(buildTeam[j][i] == 2 || buildTeam[j][i] == 3){
6508 if(buildTeam[j][i] == 4 || buildTeam[j][i] == 5){
6512 if(buildTeam[j][i] == -1){
6516 //[self SetUnitStatus:unitNum[j][i]];
6518 B->C = BC[buildNum[j][i]];
6520 B->next = calloc(1, sizeof(BUILD));
6526 if(B) B->next = NULL;
6531 -(void)SetUnitStatus:(int)UN{
6534 U->C.S_C.vigor = 100;
6541 AtopE1 = UC[UN].eHandL.A;
6542 AtopE2 = UC[UN].eHandR.A;
6543 U->C.A = calloc(1, sizeof(ATTACK));
6549 while(UC[UN].eHandR.A != NULL){ow1 = true;
6550 *U->C.A = *UC[UN].eHandR.A;
6551 U->C.A->next = calloc(1, sizeof(ATTACK));
6552 U->C.A->next->next = NULL;
6553 if(UC[UN].eHandR.A->next != NULL) U->C.A = U->C.A->next;
6554 UC[UN].eHandR.A = UC[UN].eHandR.A->next;
6555 U->C.attackListNum++;
6557 UC[UN].eHandR.A = AtopE2;
6561 U->C.A = U->C.A->next;
6564 while(UC[UN].eHandL.A != NULL){ow2 = true;
6565 *U->C.A = *UC[UN].eHandL.A;
6566 U->C.A->next = calloc(1, sizeof(ATTACK));
6567 U->C.A->next->next = NULL;
6568 if(UC[UN].eHandL.A->next != NULL) U->C.A = U->C.A->next;
6569 UC[UN].eHandL.A = UC[UN].eHandL.A->next;
6570 U->C.attackListNum++;
6572 UC[UN].eHandL.A = AtopE1;
6575 U->C.A = U->C.A->next;
6578 while(UC[UN].A != NULL){
6579 *U->C.A = *UC[UN].A;
6580 U->C.A->next = calloc(1, sizeof(ATTACK));
6581 U->C.A->next->next = NULL;
6582 if(UC[UN].A->next != NULL) U->C.A = U->C.A->next;
6583 UC[UN].A = UC[UN].A->next;
6585 U->C.A->next = NULL;
6588 if(U->C.A) if(!U->C.A->name)
6593 -(void)SetUnitStatus2:(int)UN{
6600 U->CL.A = calloc(1, sizeof(ATTACK));
6602 while(LC[UN].A != NULL){
6603 *U->CL.A = *LC[UN].A;
6604 U->CL.A->next = calloc(1, sizeof(ATTACK));
6605 U->CL.A->next->next = NULL;
6606 if(LC[UN].A->next != NULL) U->CL.A = U->CL.A->next;
6607 LC[UN].A = LC[UN].A->next;
6609 U->CL.A->next = NULL;
6616 -(void)initCAttackList2{
6619 CAttackListMA = [NSMutableArray new];
6621 [self willChangeValueForKey:@"CAttackListMA"];
6622 [CAttackListMA removeAllObjects];
6623 [self didChangeValueForKey:@"CAttackListMA"];
6626 if(!battleSet2PushedFlag){
6628 while (!(AUN[1] == U->number)) {
6632 for(int i = 0;i < U->CL.attackListNum;i++){
6634 NSMutableDictionary* dict = [NSMutableDictionary new];
6635 [dict setValue:[NSString stringWithFormat:@"%@", U->CL.A->name] forKey:@"name"];
6636 [dict setValue:[NSString stringWithFormat:@"%g", U->CL.A->totalD] forKey:@"atk"];
6637 if(U->CL.A->rangeA != U->CL.A->rangeB){
6638 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->CL.A->rangeA, U->CL.A->rangeB] forKey:@"range"];
6640 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->rangeA] forKey:@"range"];
6642 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->hitPercent] forKey:@"hit"];
6643 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
6645 [self willChangeValueForKey:@"CAttackListMA"];
6646 [CAttackListMA addObject:dict];
6647 [self didChangeValueForKey:@"CAttackListMA"];
6649 U->CL.A = U->CL.A->next;
6655 while (!(DUN[1] == U->number)) {
6659 for(int i = 0;i < U->CL.attackListNum;i++){
6662 U->CL.attackListNum = i;
6665 NSMutableDictionary* dict = [NSMutableDictionary new];
6666 [dict setValue:[NSString stringWithFormat:@"%@", U->CL.A->name] forKey:@"name"];
6667 [dict setValue:[NSString stringWithFormat:@"%g", U->CL.A->totalD] forKey:@"atk"];
6668 if(U->CL.A->rangeA != U->CL.A->rangeB){
6669 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->CL.A->rangeA, U->CL.A->rangeB] forKey:@"range"];
6671 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->rangeA] forKey:@"range"];
6673 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->hitPercent] forKey:@"hit"];
6674 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
6676 [self willChangeValueForKey:@"CAttackListMA"];
6677 [CAttackListMA addObject:dict];
6678 [self didChangeValueForKey:@"CAttackListMA"];
6680 U->CL.A = U->CL.A->next;
6688 [CAttackListAC setSelectionIndex:crCAL];
6690 [self initCAttackSelect2];
6697 -(void)initCAttackList{
6699 CAttackListMA = [NSMutableArray new];
6701 [self willChangeValueForKey:@"CAttackListMA"];
6702 [CAttackListMA removeAllObjects];
6703 [self didChangeValueForKey:@"CAttackListMA"];
6706 if(!battleSet2PushedFlag){
6708 while (!(AUN[1] == U->number)) {
6712 for(int i = 0;i < U->C.attackListNum;i++){
6714 U->C.attackListNum = i;
6717 NSMutableDictionary* dict = [NSMutableDictionary new];
6718 [dict setValue:[NSString stringWithFormat:@"%@", U->C.A->name] forKey:@"name"];
6719 [dict setValue:[NSString stringWithFormat:@"%g", U->C.A->totalD] forKey:@"atk"];
6720 if(U->C.A->rangeA != U->C.A->rangeB){
6721 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->C.A->rangeA, U->C.A->rangeB] forKey:@"range"];
6723 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->rangeA] forKey:@"range"];
6725 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->hitPercent] forKey:@"hit"];
6726 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
6728 [self willChangeValueForKey:@"CAttackListMA"];
6729 [CAttackListMA addObject:dict];
6730 [self didChangeValueForKey:@"CAttackListMA"];
6732 U->C.A = U->C.A->next;
6739 while (!(DUN[1] == U->number)) {
6743 for(int i = 0;i < U->C.attackListNum;i++){
6744 NSMutableDictionary* dict = [NSMutableDictionary new];
6745 [dict setValue:[NSString stringWithFormat:@"%@", U->C.A->name] forKey:@"name"];
6746 [dict setValue:[NSString stringWithFormat:@"%g", U->C.A->totalD] forKey:@"atk"];
6747 if(U->C.A->rangeA != U->C.A->rangeB){
6748 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->C.A->rangeA, U->C.A->rangeB] forKey:@"range"];
6750 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->rangeA] forKey:@"range"];
6752 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->hitPercent] forKey:@"hit"];
6753 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
6755 [self willChangeValueForKey:@"CAttackListMA"];
6756 [CAttackListMA addObject:dict];
6757 [self didChangeValueForKey:@"CAttackListMA"];
6759 U->C.A = U->C.A->next;
6767 [CAttackListAC setSelectionIndex:crCAL];
6769 [self initCAttackSelect];
6772 -(void)initBCreateList{
6773 BCreateListMA = [NSMutableArray new];
6775 [self willChangeValueForKey:@"BCreateListMA"];
6776 [BCreateListMA removeAllObjects];
6777 [self didChangeValueForKey:@"BCreateListMA"];
6778 buildSkillFlag = false;
6782 while (!(AUN[1] == U->number)) {
6790 while (U->C.S->type != 1 && U->C.S->next) {
6791 U->C.S = U->C.S->next;
6793 if(U->C.S->type != 1) {
6798 for(int i = 0;U->C.S->list[i] > 0;i++){
6799 NSMutableDictionary* dict = [NSMutableDictionary new];
6800 [dict setValue:[NSString stringWithFormat:@"%@", BC[U->C.S->list[i]-1].name] forKey:@"name"];
6801 [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d",
6802 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"];
6803 [dict setValue:BC[U->C.S->list[i]-1].img forKey:@"img"];
6805 [self willChangeValueForKey:@"BCreateListMA"];
6806 [BCreateListMA addObject:dict];
6807 [self didChangeValueForKey:@"BCreateListMA"];
6809 buildSkillFlag = true;
6815 -(void)initCSummonList{
6816 CSummonListMA = [NSMutableArray new];
6818 [self willChangeValueForKey:@"CSummonListMA"];
6819 [CSummonListMA removeAllObjects];
6820 [self didChangeValueForKey:@"CSummonListMA"];
6822 summonSkillFlag = false;
6826 while (!(AUN[1] == U->number)) {
6834 while (U->C.S->type != 2 && U->C.S->next) {
6835 U->C.S = U->C.S->next;
6837 if(U->C.S->type != 2) {
6842 for(int i = 0;U->C.S->list[i] > 0;i++){
6843 NSMutableDictionary* dict = [NSMutableDictionary new];
6844 [dict setValue:[NSString stringWithFormat:@"%@", UC[U->C.S->list[i]-1].nameClass] forKey:@"name"];
6845 [dict setValue:[NSString stringWithFormat:@"%g", UC[U->C.S->list[i]-1].S_M.HP] forKey:@"HP"];
6846 [dict setValue:[NSString stringWithFormat:@"%g", U->C.S->cost[i]] forKey:@"cost"];
6847 [dict setValue:UC[U->C.S->list[i]-1].img forKey:@"img"];
6849 [self willChangeValueForKey:@"CSummonListMA"];
6850 [CSummonListMA addObject:dict];
6851 [self didChangeValueForKey:@"CSummonListMA"];
6853 summonSkillFlag = true;
6861 -(void)AttackDisplay{
6863 if(battleRdy) return;
6864 if(!battleSetUp) return;
6865 if(!fuckingLoadBugFix) return;
6868 while (!(AUN[1] == U->number)) {
6871 [bplayer1 setImage:U->C.imgb];
6872 [bplayer1 setImageScaling:NSScaleToFit];
6873 [nplayer1 setStringValue:U->C.name];
6874 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
6875 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
6876 [iplayer1 setImage:MC[chipNum[U->x][U->y]].img];
6877 [mplayer1 setStringValue:MC[chipNum[U->x][U->y]].name];
6878 [rplayer1 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U->x][U->y]].dmgfix]];
6884 while (!(DUN[1] == U->number)) {
6887 [bplayer2 setImage:U->C.imgb];
6888 [bplayer1 setImageScaling:NSScaleToFit];
6889 [nplayer2 setStringValue:U->C.name];
6890 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
6891 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
6892 [iplayer2 setImage:MC[chipNum[U->x][U->y]].img];
6893 [mplayer2 setStringValue:MC[chipNum[U->x][U->y]].name];
6894 [rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U->x][U->y]].dmgfix]];
6897 [self AttackDisplay2];
6900 [battleDialog setStringValue:@"攻撃開始!!!!"];
6906 -(void)AttackDisplay2{
6910 while (!(DUN[1] == U->number)) {
6915 while (!(AUN[1] == U->number)) {
6920 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){U = UTop;
6923 while (!(AUN[1] == U->number)) {
6926 [bplayer1 setImage:U->CL.imgb];
6927 [bplayer1 setImageScaling:NSScaleToFit];
6928 [nplayer1 setStringValue:U->CL.name];
6929 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
6930 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
6936 while (!(DUN[1] == U->number)) {
6939 [bplayer2 setImage:U->CL.imgb];
6940 [bplayer1 setImageScaling:NSScaleToFit];
6941 [nplayer2 setStringValue:U->CL.name];
6942 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
6943 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
6947 }else if(U->chipNumberL >= 0 && U2->chipNumberL < 0){U = UTop;
6949 while (!(AUN[1] == U->number)) {
6952 [bplayer1 setImage:U->CL.imgb];
6953 [bplayer1 setImageScaling:NSScaleToFit];
6954 [nplayer1 setStringValue:U->CL.name];
6955 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
6956 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
6962 while (!(DUN[1] == U->number)) {
6965 [bplayer2 setImage:U->C.imgb];
6966 [bplayer1 setImageScaling:NSScaleToFit];
6967 [nplayer2 setStringValue:U->C.name];
6968 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
6969 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
6975 }else if(U->chipNumberL < 0 && U2->chipNumberL >= 0){U = UTop;
6977 while (!(AUN[1] == U->number)) {
6980 [bplayer1 setImage:U->C.imgb];
6981 [bplayer1 setImageScaling:NSScaleToFit];
6982 [nplayer1 setStringValue:U->C.name];
6983 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
6984 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
6990 while (!(DUN[1] == U->number)) {
6993 [bplayer2 setImage:U->CL.imgb];
6994 [bplayer1 setImageScaling:NSScaleToFit];
6995 [nplayer2 setStringValue:U->CL.name];
6996 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
6997 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
7005 -(bool)sortEcheck:(ATTACK*)AT opponent:(UNIT*)UT{
7007 if(AT->riku == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_RIKU)
7009 if(AT->umi == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_UMI)
7011 if(AT->chu == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_CHU)
7013 if(AT->sora == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_SORA)
7021 -(void)setBattlePanel{
7025 while (!(DUN[1] == U->number)) {
7030 while (!(AUN[1] == U->number)) {
7034 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){
7036 [self setBattlePanelT2];
7038 }else if(U->chipNumberL >= 0 && U2->chipNumberL <= 0){
7040 [self setBattlePanelT3];
7042 }else if(U->chipNumberL <= 0 && U2->chipNumberL >= 0){
7044 [self setBattlePanelT4];
7049 while (!(AUN[1] == U->number)) {
7053 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 || MF[MFselectedRow+1].MS.playerSet2 == 2)){
7054 cpuModeBATTLEflag = false;
7060 ATTACK *aTop2 = U->C.A;
7072 double urSupposedToGet;
7074 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
7078 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
7081 double oopsIsRight = 0;
7085 oopsIsRight = U->C.S_C.MEL;
7087 oopsIsRight = U->C.S_C.MIS;
7089 oopsIsRight = oopsIsRight/100;
7091 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
7093 if(!U2->C.aura && U->C.A->D){
7094 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
7095 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7096 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
7097 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7098 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
7099 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7100 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
7101 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7102 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
7103 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7104 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
7105 }else if(U->C.A->D){
7106 double val = val = 1/log(3+U2->C.S_C.MP/64);
7107 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
7108 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7109 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
7110 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7111 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
7112 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7113 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
7114 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7115 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
7116 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7117 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
7119 double val2 = log(3+U2->C.S_C.MP/64);
7121 mostDmg2 = mostDmg2*val2;
7124 if(U->C.A->D->fix == 2){
7125 mostDmg2 = mostDmg2/2 + (U->C.S_C.HIT/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
7127 if(U->C.A->D->type == 0) mostDmg2 -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7128 if(U->C.A->D->type == 1) mostDmg2 -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7129 if(U->C.A->D->type == 2) mostDmg2 -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7130 if(U->C.A->D->type == 3) mostDmg2 -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7131 if(U->C.A->D->type == 4) mostDmg2 -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7134 }else if(U->C.A->D->fix == 1){
7135 mostDmg2 = mostDmg2/2 + ((U->C.S_C.ATK/2+U->C.S_C.HIT/2)/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
7137 if(U->C.A->D->type == 0) mostDmg2 -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7138 if(U->C.A->D->type == 1) mostDmg2 -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7139 if(U->C.A->D->type == 2) mostDmg2 -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7140 if(U->C.A->D->type == 3) mostDmg2 -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7141 if(U->C.A->D->type == 4) mostDmg2 -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7143 }else if(U->C.A->D->fix == 0){
7150 costVIG = U->C.A->vigor;
7153 mostDmg2 = [self dmgResist:mostDmg2];
7155 //NSLog(@"crCAL1 %d", crCAL1);
7156 if(mostDmg2 < 0) mostDmg2 = 1;
7159 if(mostDmg < mostDmg2 && U->C.A->rangeA <= unitBreak->atkRange && U->C.A->rangeB >= unitBreak->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
7163 //mostDmg = U->C.A->totalD;
7167 if(mostHit < U->C.A->hitPercent && hit < 50 && mostDmg/2 < mostDmg2 && U->C.A->rangeA <= unitBreak->atkRange && U->C.A->rangeB >= unitBreak->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
7168 //mostDmg = U->C.A->totalD;
7169 mostHit = U->C.A->hitPercent;
7172 U->C.A = U->C.A->next;
7177 if(U->C.A->extent == 0 && mostNum >= 0 && !CPUmostDmgChoice){
7181 for(int i = 0;i < mostNum;i++){
7182 U->C.A = U->C.A->next;
7188 for(int i = 0;i < crCAL1;i++){
7189 U->C.A = U->C.A->next;
7193 CPUmostDmgChoice = false;
7196 mostNumSub = mostNum;
7199 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
7200 costVIG = U->C.A->vigor;
7202 if(U->C.A->rangeA <= unitBreak->atkRange && U->C.A->rangeB >= unitBreak->atkRange
7203 && mpCost <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
7213 while (!(AUN[1] == U->number)) {
7218 ATTACK *aTop = U->C.A;
7221 for(int i = 0;i < crCAL1;i++){
7222 U->C.A = U->C.A->next;
7225 //NSLog(@"%@", U->C.A->name);
7229 for (int i = 0;i < crCAL1;i++) {
7230 U->C.A = U->C.A->next;
7235 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7236 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7237 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7238 //NSLog(@"crCAL1 %d", crCAL1);
7240 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
7243 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7244 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7245 double oops = U->C.S_C.HP/U->C.S_M.HP*100;
7246 [combatLHP1 setIntValue:(int)oops];
7247 oops = U->C.S_C.MP/U->C.S_M.MP*100;
7248 [combatLMP1 setIntValue:(int)oops];
7250 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
7251 //NSLog(@"mostNumSub %d crCAL1 %d", mostNumSub, crCAL1);
7252 hitFix = U->C.A->hitPercent;
7258 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7259 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7260 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7261 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
7262 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7263 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7264 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7267 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7268 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7269 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7270 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
7271 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7272 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7273 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7284 while (!(DUN[1] == U->number)) {
7288 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
7290 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
7293 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
7295 if(battleDod2Flag) hit = hit / 2;
7298 if(hit > 100) hit = 100;
7299 if(hit < 0) hit = 0;
7301 if(u2A->D->sort == 1){
7305 if([self sortEcheck:u2A opponent:U])
7307 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
7308 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7317 ATTACK *aTop2 = U->C.A;
7323 double urSupposedToGet;
7325 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
7328 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
7330 double oopsIsRight = 0;
7334 oopsIsRight = U->C.S_C.MEL;
7336 oopsIsRight = U->C.S_C.MIS;
7338 oopsIsRight = oopsIsRight/100;
7340 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
7342 if(!U2->C.aura && U->C.A->D){
7343 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
7344 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7345 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
7346 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7347 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
7348 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7349 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
7350 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7351 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
7352 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7353 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
7354 }else if(U->C.A->D){
7355 double val = val = 1/log(3+U2->C.S_C.MP/64);
7356 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
7357 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7358 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
7359 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7360 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
7361 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7362 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
7363 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7364 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
7365 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7366 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
7368 double val2 = log(3+U2->C.S_C.MP/64);
7370 mostDmg2 = mostDmg2*val2;
7373 if(U->C.A->D->fix == 2){
7374 mostDmg2 = mostDmg2/2 + (U->C.S_C.HIT/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
7376 if(U->C.A->D->type == 0) mostDmg2 -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7377 if(U->C.A->D->type == 1) mostDmg2 -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7378 if(U->C.A->D->type == 2) mostDmg2 -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7379 if(U->C.A->D->type == 3) mostDmg2 -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7380 if(U->C.A->D->type == 4) mostDmg2 -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7383 }else if(U->C.A->D->fix == 1){
7384 mostDmg2 = mostDmg2/2 + ((U->C.S_C.ATK/2+U->C.S_C.HIT/2)/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
7386 if(U->C.A->D->type == 0) mostDmg2 -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7387 if(U->C.A->D->type == 1) mostDmg2 -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7388 if(U->C.A->D->type == 2) mostDmg2 -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7389 if(U->C.A->D->type == 3) mostDmg2 -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7390 if(U->C.A->D->type == 4) mostDmg2 -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7392 }else if(U->C.A->D->fix == 0){
7401 mostDmg2 = [self dmgResist:mostDmg2];
7404 costVIG = U->C.A->vigor;
7407 if(mostDmg < mostDmg2 && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
7411 //mostDmg = U->C.A->totalD;
7415 if(mostHit < U->C.A->hitPercent && hit < 50 && mostDmg/2 < mostDmg2 && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 &&costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
7416 //mostDmg = U->C.A->totalD;
7417 mostHit = U->C.A->hitPercent;
7420 U->C.A = U->C.A->next;
7428 mostNumSub = mostNum;
7430 for(int i = 0;i < mostNum;i++){
7431 U->C.A = U->C.A->next;
7433 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
7436 costVIG = U->C.A->vigor;
7439 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){
7441 }else while(U->C.A){
7442 U->C.A = U->C.A->next;
7451 //NSLog(@"%@", U->C.name);
7452 for (int i = 0;i < crCAL2;i++) {
7453 U->C.A = U->C.A->next;
7458 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7459 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7460 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7461 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7462 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7463 double oops2 = U->C.S_C.HP/U->C.S_M.HP*100;
7464 [combatLHP2 setIntValue:(int)oops2];
7465 oops2 = U->C.S_C.MP/U->C.S_M.MP*100;
7466 [combatLMP2 setIntValue:(int)oops2];
7471 mpCost2 = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
7472 costVIG = U->C.A->vigor;
7475 if(U->C.A && U->C.A->D){
7476 if(U->C.A && !(u2A->D->sort == 1) && U->C.A->D->sort != 1 && mpCost2 <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U]){
7477 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
7478 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
7479 hitFix = U->C.A->hitPercent;
7481 }else if(u2A->D->sort == 1 || !U->C.A || U->C.A->D->sort == 1 || [self sortEcheck:U->C.A opponent:U]){
7482 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
7485 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
7491 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7492 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7493 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7494 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7495 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
7496 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7497 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7501 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7502 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7503 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7504 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7505 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
7506 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7507 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7511 while (!(DUN[1] == U->number)) {
7517 while (!(AUN[1] == U->number)) {
7523 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
7526 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
7529 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
7530 if(battleDod1Flag) hit /= 2;
7533 if(hit > 100) hit = 100;
7534 if(hit < 0) hit = 0;
7536 if([self sortEcheck:U2A opponent:U])
7539 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
7540 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7543 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7548 if(CPUAttackSubmitFlag){
7549 if(unitCPUAttackFlag){
7550 [battleCancelBtn setEnabled:NO];
7551 [battleCancelBtn setTransparent:YES];
7553 [battleCancelBtn setEnabled:YES];
7554 [battleCancelBtn setTransparent:NO];
7556 if(displayBattleCheckPanelFlag == 0) displayBattleCheckPanelFlag = 1;
7558 [battleCancelBtn setEnabled:YES];
7559 [battleCancelBtn setTransparent:NO];
7563 while (!(AUN[1] == U->number)) {
7568 [battleAttackBtn1 setEnabled:NO];
7569 [battleAttackBtn1 setTransparent:YES];
7570 [battleGuardBtn1 setEnabled:NO];
7571 [battleGuardBtn1 setTransparent:YES];
7572 [battleDodgeBtn1 setEnabled:NO];
7573 [battleDodgeBtn1 setTransparent:YES];
7575 [battleAttackBtn1 setEnabled:YES];
7576 [battleAttackBtn1 setTransparent:NO];
7577 [battleGuardBtn1 setEnabled:YES];
7578 [battleGuardBtn1 setTransparent:NO];
7579 [battleDodgeBtn1 setEnabled:YES];
7580 [battleDodgeBtn1 setTransparent:NO];
7584 while (!(DUN[1] == U->number)) {
7588 [battleAttackBtn2 setEnabled:NO];
7589 [battleAttackBtn2 setTransparent:YES];
7590 [battleGuardBtn2 setEnabled:NO];
7591 [battleGuardBtn2 setTransparent:YES];
7592 [battleDodgeBtn2 setEnabled:NO];
7593 [battleDodgeBtn2 setTransparent:YES];
7595 [battleAttackBtn2 setEnabled:YES];
7596 [battleAttackBtn2 setTransparent:NO];
7597 [battleGuardBtn2 setEnabled:YES];
7598 [battleGuardBtn2 setTransparent:NO];
7599 [battleDodgeBtn2 setEnabled:YES];
7600 [battleDodgeBtn2 setTransparent:NO];
7607 for (int i = 1; i < DUN[1]; i++) {
7613 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
7614 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
7621 [battleStartBtn setEnabled:YES];
7622 [battleStartBtn setTransparent:NO];
7627 avPlayerFlag1 = false;
7628 avPlayerFlag2 = false;
7631 -(void)setBattlePanelT2{
7635 ATTACK *aTop2 = U->CL.A;
7636 while (!(AUN[1] == U->number)) {
7640 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 || MF[MFselectedRow+1].MS.playerSet2 == 2)){
7641 cpuModeBATTLEflag = false;
7648 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
7649 costVIG = U->C.A->vigor;
7650 if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
7651 mostDmg = U->CL.A->totalD;
7654 if(mostHit < U->CL.A->hitPercent && mostDmg/2 < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
7655 //mostDmg = U->C.A->totalD;
7656 mostHit = U->CL.A->hitPercent;
7659 U->CL.A = U->CL.A->next;
7664 for(int i = 0;i < crCAL1;i++){
7665 U->CL.A = U->CL.A->next;
7668 ATTACK *ua = U->CL.A;
7672 mostNumSub = mostNum;
7676 for(int i = 0;i < mostNum;i++){
7677 U->C.A = U->CL.A->next;
7679 if(U->CL.A->extent == 0){
7683 for(int i = 0;i < mostNum;i++){
7684 U->CL.A = U->CL.A->next;
7690 for(int i = 0;i < crCAL1;i++){
7691 U->CL.A = U->CL.A->next;
7699 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
7700 costVIG = U->C.A->vigor;
7703 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){
7705 }else while(U->CL.A){
7706 U->CL.A = U->CL.A->next;
7713 while (!(AUN[1] == U->number)) {
7718 ATTACK *aTop = U->CL.A;
7724 for(int i = 0;i < crCAL1;i++){
7725 U->CL.A = U->CL.A->next;
7732 for (int i = 0;i < crCAL1;i++) {
7733 U->CL.A = U->CL.A->next;
7738 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
7739 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7740 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
7741 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
7742 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7743 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7744 double oops = U->CL.S_C.HP/U->CL.S_M.HP*100;
7745 [combatLHP1 setIntValue:(int)oops];
7746 oops = U->CL.S_C.EN/U->CL.S_M.EN*100;
7747 [combatLMP1 setIntValue:(int)oops];
7749 hit = U->CL.S_C.MOB + U->C.S_C.HIT*U->C.S_C.HP/U->C.S_M.HP;
7750 hitFix = U->CL.A->hitPercent;
7756 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
7757 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7758 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
7759 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
7760 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7761 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7762 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7765 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
7766 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7767 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
7768 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
7769 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7770 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7771 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7782 while (!(DUN[1] == U->number)) {
7786 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;
7787 if(battleDod2Flag) hit = hit / 2;
7790 if(hit > 100) hit = 100;
7791 if(hit < 0) hit = 0;
7793 if(u2A->D->sort == 1){
7797 if([self sortEcheck:u2A opponent:U])
7799 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
7800 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7808 costVIG = U->C.A->vigor;
7810 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
7811 if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
7812 mostDmg = U->CL.A->totalD;
7815 if(mostHit < U->CL.A->hitPercent && mostDmg/2 < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
7816 //mostDmg = U->C.A->totalD;
7817 mostHit = U->CL.A->hitPercent;
7820 U->CL.A = U->CL.A->next;
7826 mostNumSub = mostNum;
7829 for(int i = 0;i < mostNum;i++){
7830 U->CL.A = U->CL.A->next;
7837 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
7838 costVIG = U->C.A->vigor;
7841 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){
7843 }else while(U->CL.A){
7844 U->CL.A = U->CL.A->next;
7854 for (int i = 0;i < crCAL2;i++) {
7855 U->CL.A = U->CL.A->next;
7861 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
7862 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7863 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
7864 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7865 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7866 double oops2 = U->CL.S_C.HP/U->CL.S_M.HP*100;
7867 [combatLHP2 setIntValue:(int)oops2];
7868 oops2 = U->CL.S_C.EN/U->CL.S_M.EN*100;
7869 [combatLMP2 setIntValue:(int)oops2];
7873 if(U->CL.A && U->CL.A->D){
7877 mpCost2 = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
7880 if(U->CL.A && !(u2A->D->sort == 1) && U->CL.A->D->sort != 1 && mpCost2 <= U->CL.S_C.EN && ![self sortEcheck:U->CL.A opponent:U2]){
7881 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
7882 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
7883 hitFix = U->CL.A->hitPercent;
7885 }else if(u2A->D->sort == 1 || !U->CL.A || U->CL.A->D->sort == 1 || [self sortEcheck:U->CL.A opponent:U2]){
7886 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
7890 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
7893 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
7899 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
7900 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7901 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
7902 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7903 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
7904 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7905 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7909 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
7910 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7911 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
7912 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7913 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
7914 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7915 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7919 while (!(AUN[1] == U->number)) {
7924 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;
7925 if(battleDod1Flag) hit /= 2;
7928 if(hit > 100) hit = 100;
7929 if(hit < 0) hit = 0;
7930 if([self sortEcheck:U2A opponent:U])
7932 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
7933 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7936 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7940 while (!(AUN[1] == U->number)) {
7945 [battleAttackBtn1 setEnabled:NO];
7946 [battleAttackBtn1 setTransparent:YES];
7947 [battleGuardBtn1 setEnabled:NO];
7948 [battleGuardBtn1 setTransparent:YES];
7949 [battleDodgeBtn1 setEnabled:NO];
7950 [battleDodgeBtn1 setTransparent:YES];
7952 [battleAttackBtn1 setEnabled:YES];
7953 [battleAttackBtn1 setTransparent:NO];
7954 [battleGuardBtn1 setEnabled:YES];
7955 [battleGuardBtn1 setTransparent:NO];
7956 [battleDodgeBtn1 setEnabled:YES];
7957 [battleDodgeBtn1 setTransparent:NO];
7961 while (!(DUN[1] == U->number)) {
7965 [battleAttackBtn2 setEnabled:NO];
7966 [battleAttackBtn2 setTransparent:YES];
7967 [battleGuardBtn2 setEnabled:NO];
7968 [battleGuardBtn2 setTransparent:YES];
7969 [battleDodgeBtn2 setEnabled:NO];
7970 [battleDodgeBtn2 setTransparent:YES];
7972 [battleAttackBtn2 setEnabled:YES];
7973 [battleAttackBtn2 setTransparent:NO];
7974 [battleGuardBtn2 setEnabled:YES];
7975 [battleGuardBtn2 setTransparent:NO];
7976 [battleDodgeBtn2 setEnabled:YES];
7977 [battleDodgeBtn2 setTransparent:NO];
7982 for (int i = 1; i < DUN[1]; i++) {
7987 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
7988 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
7991 [battleStartBtn setEnabled:NO];
7992 [battleStartBtn setTransparent:YES];
7995 [battleStartBtn setEnabled:YES];
7996 [battleStartBtn setTransparent:NO];
8001 avPlayerFlag1 = false;
8002 avPlayerFlag2 = false;
8005 -(void)setBattlePanelT3{
8009 while (!(AUN[1] == U->number)) {
8013 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 &&MF[MFselectedRow+1].MS.playerSet2 == 2)){
8014 cpuModeBATTLEflag = false;
8019 ATTACK *aTop2 = U->C.A;
8022 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
8024 costVIG = U->C.A->vigor;
8026 if(mostDmg < U->C.A->totalD && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
8027 mostDmg = U->C.A->totalD;
8031 if(mostHit < U->C.A->hitPercent && mostDmg/2 < U->C.A->totalD && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
8032 //mostDmg = U->C.A->totalD;
8033 mostHit = U->C.A->hitPercent;
8036 U->C.A = U->C.A->next;
8041 for(int i = 0;i < crCAL1;i++){
8042 U->C.A = U->C.A->next;
8045 ATTACK *ua = U->C.A;
8049 mostNumSub = mostNum;
8052 for(int i = 0;i < mostNum;i++){
8053 U->C.A = U->C.A->next;
8055 if(U->C.A->extent == 0 && mostNum > 0){
8059 for(int i = 0;i < mostNum;i++){
8060 U->C.A = U->C.A->next;
8066 for(int i = 0;i < crCAL1;i++){
8067 U->C.A = U->C.A->next;
8070 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
8071 costVIG = U->C.A->vigor;
8074 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){
8083 while (!(AUN[1] == U->number)) {
8089 ATTACK *aTop = U->CL.A;
8095 for(int i = 0;i < crCAL1;i++){
8096 U->CL.A = U->CL.A->next;
8102 for (int i = 0;i < crCAL1;i++) {
8103 U->CL.A = U->CL.A->next;
8108 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8109 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8110 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8111 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
8112 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8113 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8114 double oops = U->CL.S_C.HP/U->CL.S_M.HP*100;
8115 [combatLHP1 setIntValue:(int)oops];
8116 oops = U->CL.S_C.EN/U->CL.S_M.EN*100;
8117 [combatLMP1 setIntValue:(int)oops];
8119 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
8120 hitFix = U->CL.A->hitPercent;
8126 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8127 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8128 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8129 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
8130 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8131 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8132 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8135 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8136 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8137 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8138 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
8139 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8140 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8141 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8150 while (!(AUN[1] == U->number)) {
8156 while (!(DUN[1] == U->number)) {
8160 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
8162 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
8165 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
8166 if(battleDod2Flag) hit = hit / 2;
8169 if(hit > 100) hit = 100;
8170 if(hit < 0) hit = 0;
8172 if(u2A->D->sort == 1){
8175 if([self sortEcheck:u2A opponent:U])
8177 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
8178 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8186 ATTACK *aTop2 = U->C.A;
8190 costVIG = U->C.A->vigor;
8192 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
8194 if(mostDmg < U->C.A->totalD && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
8195 mostDmg = U->C.A->totalD;
8199 if(mostHit < U->C.A->hitPercent && mostDmg/2 < U->C.A->totalD && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && mpCost <= U->C.S_C.MP && U->C.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
8200 //mostDmg = U->C.A->totalD;
8201 mostHit = U->C.A->hitPercent;
8204 U->C.A = U->C.A->next;
8210 mostNumSub = mostNum;
8212 for(int i = 0;i < mostNum;i++){
8213 U->C.A = U->C.A->next;
8215 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
8216 costVIG = U->C.A->vigor;
8218 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){
8220 }else while(U->C.A){
8221 U->C.A = U->C.A->next;
8229 for (int i = 0;i < crCAL2;i++) {
8230 U->C.A = U->C.A->next;
8236 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8237 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8238 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8239 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8240 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8241 double oops2 = U->C.S_C.HP/U->C.S_M.HP*100;
8242 [combatLHP2 setIntValue:(int)oops2];
8243 oops2 = U->C.S_C.MP/U->C.S_M.MP*100;
8244 [combatLMP2 setIntValue:(int)oops2];
8249 mpCost2 = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
8250 costVIG = U->C.A->vigor;
8253 if(U->C.A &&U->C.A->D){
8254 if(U->C.A && !(u2A->D->sort == 1) && U->C.A->D->sort != 1 && mpCost2 <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
8255 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
8256 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
8257 hitFix = U->C.A->hitPercent;
8259 }else if(u2A->D->sort == 1 || !U->C.A || U->C.A->D->sort == 1 || [self sortEcheck:U->C.A opponent:U2]){
8260 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
8262 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
8268 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8269 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8270 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8271 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8272 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
8273 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8274 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8278 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8279 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8280 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8281 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8282 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
8283 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8284 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8288 while (!(AUN[1] == U->number)) {
8293 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;
8294 if(battleDod1Flag) hit /= 2;
8297 if(hit > 100) hit = 100;
8298 if(hit < 0) hit = 0;
8299 if([self sortEcheck:U2A opponent:U])
8301 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
8302 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8305 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8309 while (!(AUN[1] == U->number)) {
8314 [battleAttackBtn1 setEnabled:NO];
8315 [battleAttackBtn1 setTransparent:YES];
8316 [battleGuardBtn1 setEnabled:NO];
8317 [battleGuardBtn1 setTransparent:YES];
8318 [battleDodgeBtn1 setEnabled:NO];
8319 [battleDodgeBtn1 setTransparent:YES];
8321 [battleAttackBtn1 setEnabled:YES];
8322 [battleAttackBtn1 setTransparent:NO];
8323 [battleGuardBtn1 setEnabled:YES];
8324 [battleGuardBtn1 setTransparent:NO];
8325 [battleDodgeBtn1 setEnabled:YES];
8326 [battleDodgeBtn1 setTransparent:NO];
8330 while (!(DUN[1] == U->number)) {
8334 [battleAttackBtn2 setEnabled:NO];
8335 [battleAttackBtn2 setTransparent:YES];
8336 [battleGuardBtn2 setEnabled:NO];
8337 [battleGuardBtn2 setTransparent:YES];
8338 [battleDodgeBtn2 setEnabled:NO];
8339 [battleDodgeBtn2 setTransparent:YES];
8341 [battleAttackBtn2 setEnabled:YES];
8342 [battleAttackBtn2 setTransparent:NO];
8343 [battleGuardBtn2 setEnabled:YES];
8344 [battleGuardBtn2 setTransparent:NO];
8345 [battleDodgeBtn2 setEnabled:YES];
8346 [battleDodgeBtn2 setTransparent:NO];
8352 for (int i = 1; i < DUN[1]; i++) {
8356 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
8357 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
8360 [battleStartBtn setEnabled:NO];
8361 [battleStartBtn setTransparent:YES];
8364 [battleStartBtn setEnabled:YES];
8365 [battleStartBtn setTransparent:NO];
8370 avPlayerFlag1 = false;
8371 avPlayerFlag2 = false;
8374 -(void)setBattlePanelT4{
8378 while (!(AUN[1] == U->number)) {
8382 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2)){
8383 cpuModeBATTLEflag = false;
8388 ATTACK *aTop2 = U->CL.A;
8391 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8392 costVIG = U->C.A->vigor;
8393 if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self :U->CL.A opponent:U2]){
8394 mostDmg = U->CL.A->totalD;
8397 if(mostHit < U->CL.A->hitPercent && mostDmg/2 < U->CL.A->totalD && U->CL.A->rangeA <= unitBreak->atkRange && U->CL.A->rangeB >= unitBreak->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
8398 //mostDmg = U->C.A->totalD;
8399 mostHit = U->CL.A->hitPercent;
8402 U->CL.A = U->CL.A->next;
8406 mostNumSub = mostNum;
8409 for(int i = 0;i < mostNum;i++){
8410 U->CL.A = U->CL.A->next;
8412 if(U->CL.A->extent == 0){
8416 for(int i = 0;i < mostNum;i++){
8417 U->CL.A = U->CL.A->next;
8423 for(int i = 0;i < crCAL1;i++){
8424 U->CL.A = U->CL.A->next;
8427 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8428 costVIG = U->C.A->vigor;
8429 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){
8431 }else while(U->CL.A){
8432 U->CL.A = U->CL.A->next;
8439 while (!(AUN[1] == U->number)) {
8444 ATTACK *aTop = U->C.A;
8450 for(int i = 0;i < crCAL1;i++){
8451 U->C.A = U->C.A->next;
8457 for (int i = 0;i < crCAL1;i++) {
8458 U->C.A = U->C.A->next;
8463 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8464 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8465 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8466 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
8467 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8468 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8469 double oops = U->C.S_C.HP/U->C.S_M.HP*100;
8470 [combatLHP1 setIntValue:(int)oops];
8471 oops = U->C.S_C.MP/U->C.S_M.MP*100;
8472 [combatLMP1 setIntValue:(int)oops];
8474 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
8475 hitFix = U->C.A->hitPercent;
8481 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8482 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8483 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8484 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
8485 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8486 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8487 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8490 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8491 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8492 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8493 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
8494 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8495 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8496 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8507 while (!(DUN[1] == U->number)) {
8511 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;
8512 if(battleDod2Flag) hit = hit / 2;
8515 if(hit > 100) hit = 100;
8516 if(hit < 0) hit = 0;
8518 if(u2A->D->sort == 1){
8521 if([self sortEcheck:u2A opponent:U])
8523 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
8524 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8532 ATTACK *aTop2 = U->CL.A;
8535 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8536 costVIG = U->C.A->vigor;
8537 if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
8538 mostDmg = U->CL.A->totalD;
8541 if(mostHit < U->CL.A->hitPercent && mostDmg/2 < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && mpCost <= U->CL.S_C.EN && U->CL.A->D->sort != 1 && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
8542 //mostDmg = U->C.A->totalD;
8543 mostHit = U->CL.A->hitPercent;
8546 U->CL.A = U->CL.A->next;
8550 mostNumSub = mostNum;
8554 for(int i = 0;i < mostNum;i++){
8555 U->CL.A = U->CL.A->next;
8557 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8558 costVIG = U->C.A->vigor;
8559 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){
8561 }else while(U->CL.A){
8562 U->CL.A = U->CL.A->next;
8570 for (int i = 0;i < crCAL2;i++) {
8571 U->CL.A = U->CL.A->next;
8577 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8578 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8579 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8580 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8581 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8582 double oops2 = U->CL.S_C.HP/U->CL.S_M.HP*100;
8583 [combatLHP2 setIntValue:(int)oops2];
8584 oops2 = U->CL.S_C.EN/U->CL.S_M.EN*100;
8585 [combatLMP2 setIntValue:(int)oops2];
8590 mpCost2 = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8593 if(U->CL.A && U->CL.A->D){
8594 if(U->CL.A && !(u2A->D->sort == 1) && U->CL.A->D->sort != 1 && mpCost2 <= U->CL.S_C.EN && ![self sortEcheck:U->CL.A opponent:U2]){
8595 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
8596 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
8597 hitFix = U->CL.A->hitPercent;
8599 }else if(u2A->D->sort == 1 || !U->CL.A || U->CL.A->D->sort == 1 || [self sortEcheck:U->CL.A opponent:U2]){
8600 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
8602 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
8608 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8609 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8610 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8611 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8612 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
8613 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8614 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8618 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8619 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8620 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8621 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8622 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
8623 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8624 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8629 while (!(DUN[1] == U->number)) {
8635 while (!(AUN[1] == U->number)) {
8641 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
8643 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
8646 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
8647 if(battleDod1Flag) hit /= 2;
8650 if(hit > 100) hit = 100;
8651 if(hit < 0) hit = 0;
8652 if([self sortEcheck:U2A opponent:U])
8654 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
8655 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8658 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8662 while (!(AUN[1] == U->number)) {
8667 [battleAttackBtn1 setEnabled:NO];
8668 [battleAttackBtn1 setTransparent:YES];
8669 [battleGuardBtn1 setEnabled:NO];
8670 [battleGuardBtn1 setTransparent:YES];
8671 [battleDodgeBtn1 setEnabled:NO];
8672 [battleDodgeBtn1 setTransparent:YES];
8674 [battleAttackBtn1 setEnabled:YES];
8675 [battleAttackBtn1 setTransparent:NO];
8676 [battleGuardBtn1 setEnabled:YES];
8677 [battleGuardBtn1 setTransparent:NO];
8678 [battleDodgeBtn1 setEnabled:YES];
8679 [battleDodgeBtn1 setTransparent:NO];
8683 while (!(DUN[1] == U->number)) {
8687 [battleAttackBtn2 setEnabled:NO];
8688 [battleAttackBtn2 setTransparent:YES];
8689 [battleGuardBtn2 setEnabled:NO];
8690 [battleGuardBtn2 setTransparent:YES];
8691 [battleDodgeBtn2 setEnabled:NO];
8692 [battleDodgeBtn2 setTransparent:YES];
8694 [battleAttackBtn2 setEnabled:YES];
8695 [battleAttackBtn2 setTransparent:NO];
8696 [battleGuardBtn2 setEnabled:YES];
8697 [battleGuardBtn2 setTransparent:NO];
8698 [battleDodgeBtn2 setEnabled:YES];
8699 [battleDodgeBtn2 setTransparent:NO];
8705 for (int i = 1; i < DUN[1]; i++) {
8709 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
8710 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
8713 [battleStartBtn setEnabled:NO];
8714 [battleStartBtn setTransparent:YES];
8717 [battleStartBtn setEnabled:YES];
8718 [battleStartBtn setTransparent:NO];
8723 avPlayerFlag1 = false;
8724 avPlayerFlag2 = false;
8727 -(void)DisplayMessage{
8730 attackExtentFlag = false;
8731 attackingWait = false;
8733 if(!battleSetUp) return;
8734 if(!fuckingLoadBugFix) return;
8736 if(!battleVeryBegunFlag){
8737 [btHITtf1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8738 [btDMGtf1 setStringValue:[NSString stringWithFormat:@"ダメージ値 ----"]];
8739 [btHITtf2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8740 [btDMGtf2 setStringValue:[NSString stringWithFormat:@"ダメージ値 ----"]];
8742 battleVeryBegunFlag = true;
8743 pussyLoopFlag = true;
8745 if(AVpreview.rate > 0){
8746 //[battleWindow setIgnoresMouseEvents:YES];
8747 [battleWindow makeKeyAndOrderFront:nil];
8748 //NSLog(@"%g", AVpreview.rate);
8751 //[battleWindow setIgnoresMouseEvents:NO];
8752 //NSLog(@"%g", AVpreview.rate);
8756 [AVPV setHidden:YES];
8758 else if(avPlayerFlag2){
8759 [AVPV setHidden:YES];
8765 animationFlag1 = false;
8770 animationFlag2 = false;
8772 U->C.A = attackTop2;
8776 if(animationFlag1 || animationFlag2){
8781 double def2 = (double)31/32;
8782 NSString *message = @"";
8800 static bool extentbool = false;
8801 static bool extentbool2 = false;
8804 if(cpuAtkExtendFlag){
8805 extentBattleFlag2 = true;
8808 if(!extentbool && extentBattleFlag2){
8810 extentMPcostFlag = false;
8814 assholeLoadBugFix = true;
8816 switch (messageProcess) {
8818 if(bLoopFlag) break;
8823 while (!(DUN[DUNnum] == U->number)) {
8829 while (!(AUN[1] == U->number)) {
8833 if(U->number == U2->number){
8834 btSelfAction = true;
8836 btSelfAction = false;
8842 [battleDialog setStringValue:@"攻撃開始!"];
8843 if(!baseDistanceCompFlag)
8852 if(bLoopFlag) break;
8858 btHitExtendFlag1 = true;
8860 if(btHitExtendProc1 >= 3){
8861 btHitExtendProc1 = 0;
8865 BTunitAttackFlag1 = true;
8866 if(battleDef1Flag || battleDod1Flag)
8867 BTunitAttackFlag1 = false;
8870 while (!(DUN[DUNnum] == U->number)) {
8876 while (!(AUN[1] == U->number)) {
8881 if(U->number == U2->number){
8882 btSelfAction = true;
8884 btSelfAction = false;
8887 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){
8889 [self DisplayMessageMod1A];
8891 }else if(U->chipNumberL >= 0 && U2->chipNumberL < 0){
8893 [self DisplayMessageMod2A];
8895 }else if(U->chipNumberL < 0 && U2->chipNumberL >= 0){
8897 [self DisplayMessageMod3A];
8903 if(bLoopFlag) break;
8906 while (!(AUN[1] == U->number)) {
8909 ATTACK *aTop = U->C.A;
8911 for(int i = 0;i < crCAL1;i++){
8912 U->C.A = U->C.A->next;
8917 if(attackCR->magic){
8918 btAttackType1 = BT_TYPE_MAGIC;
8920 btAttackType1 = BT_TYPE_NORMAL;
8923 if(BTunitAttackFlag1)
8924 if((btAttackType1 == BT_TYPE_NORMAL && btAttackMoveValue1 < 2)
8925 || (btAttackType1 == BT_TYPE_MAGIC && btAttackMoveValue1 < 5)
8926 || (btAttackType1 == BT_TYPE_ABILITY && btAttackMoveValue1 < 2)){
8928 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
8930 [battleDialog setStringValue:message];
8937 if(btHitExtendFlag1 && btHitExtendProc1 < 2){
8948 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
8951 [bplayer2 setImage:U2->C.imgb];
8952 [bplayer2 setImageScaling:NSScaleToFit];
8953 [nplayer2 setStringValue:U2->C.name];
8954 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U2->C.S_C.HP, U2->C.S_M.HP]];
8955 [lplayer2 setIntValue:U2->C.S_C.HP/U2->C.S_M.HP*100];
8956 [iplayer2 setImage:MC[chipNum[U2->x][U2->y]].img];
8957 [mplayer2 setStringValue:MC[chipNum[U2->x][U2->y]].name];
8958 [rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U2->x][U2->y]].dmgfix]];
8960 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){
8961 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
8963 NSString *path = @"data/AttackList/ALdata";
8965 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
8967 path = [path stringByAppendingFormat:@"/"];
8969 path = [path stringByAppendingString:U->C.A->AN.movName];
8971 NSData *AVData = [NSData dataWithContentsOfFile:path];
8974 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
8979 NSString *path = @"data/AttackList3/IALdata";
8981 path = [path stringByAppendingFormat:@"%dE", U->C.A->indexE];
8983 path = [path stringByAppendingFormat:@"/"];
8985 path = [path stringByAppendingString:U->C.A->AN.movName];
8988 NSData *AVData = [NSData dataWithContentsOfFile:path];
8991 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
8997 AVPV.player = [AVpreview retain];
9003 [AVPV setHidden:NO];
9005 [battleDialog setStringValue:message];
9007 avPlayerFlag1 = true;
9013 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->C.A->AN.ANI && !animationFlag3 && DUNnum == 1){
9015 [battleDialog setStringValue:message];
9016 animationFlag1 = true;
9023 double urSupposedToGet;
9025 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
9028 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
9032 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
9033 else oopsIsRight = U->C.S_C.MIS;
9035 oopsIsRight = oopsIsRight/100;
9037 if(!U2->C.aura && U->C.A->D){
9038 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
9039 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9040 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
9041 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9042 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
9043 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9044 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
9045 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9046 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
9047 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9048 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
9049 }else if(U->C.A->D){
9050 val = 1/log(3+U2->C.S_C.MP/64);
9051 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
9052 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9053 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
9054 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9055 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
9056 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9057 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
9058 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9059 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
9060 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9061 if(U->C.A->D->type == 5) dmg = U->C.A->totalD*val;
9063 double val2 = log(3+U2->C.S_C.MP/64);
9069 if(U->C.A->D->fix == 2){
9070 dmg = dmg/2 + (U->C.S_C.HIT/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
9072 if(U->C.A->D->type == 0) dmg -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9073 if(U->C.A->D->type == 1) dmg -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9074 if(U->C.A->D->type == 2) dmg -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9075 if(U->C.A->D->type == 3) dmg -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9076 if(U->C.A->D->type == 4) dmg -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9079 }else if(U->C.A->D->fix == 1){
9080 dmg = dmg/2 + ((U->C.S_C.ATK/2+U->C.S_C.HIT/2)/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
9082 if(U->C.A->D->type == 0) dmg -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9083 if(U->C.A->D->type == 1) dmg -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9084 if(U->C.A->D->type == 2) dmg -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9085 if(U->C.A->D->type == 3) dmg -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9086 if(U->C.A->D->type == 4) dmg -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9088 }else if(U->C.A->D->fix == 0){
9092 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
9094 if(extentMPcostFlag && extentBattleFlag2){
9097 U->C.S_C.MP -= costMP;
9098 extentMPcostFlag = true;
9101 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
9102 hitFix = U->C.A->hitPercent;
9108 while (!(AUN[1] == U->number)) {
9114 while (!(DUN[DUNnum] == U->number)) {
9118 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
9120 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
9123 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
9124 if(hit > 100) hit = 100;
9125 if(hit < 0) hit = 0;
9126 if(U2A->D->sort == 1){
9129 if([self sortEcheck:U2A opponent:U])
9135 if(battleDod2Flag) wtf = 50;
9136 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
9138 if(U2A->D->sort == 0){
9139 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);
9140 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);
9141 NSLog(@"修正前のダメージ:%g", dmg);
9142 dmg = [self dmgResist:dmg];
9143 NSLog(@"属性後のダメージ:%g", dmg);
9144 def2 = pow(def2, U->C.S_C.DEF);
9145 int omfg = rand()%100;
9146 NSLog(@"ダメージ幅:%g〜%g", floor(dmg), floor(dmg + dmg/10));
9147 dmg = (dmg*omfg/100/10 + dmg);
9148 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
9149 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
9150 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
9152 if(U->C.S_C.typeMOVE == RIKU){
9153 if(U2A->riku == A) dmg = dmg*1.2;
9154 if(U2A->riku == B) dmg = dmg*1.0;
9155 if(U2A->riku == C) dmg = dmg*0.6;
9156 if(U2A->riku == D) dmg = dmg*0.2;
9157 if(U2A->riku == E) dmg = 0;
9158 if(U2A->riku == S) dmg = dmg*1.5;
9159 if(U2A->riku == SS) dmg = dmg*2.0;
9160 } if(U->C.S_C.typeMOVE == UMI &&
9161 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
9162 if(U2A->umi == A) dmg = dmg*1.2;
9163 if(U2A->umi == B) dmg = dmg*1.0;
9164 if(U2A->umi == C) dmg = dmg*0.6;
9165 if(U2A->umi == D) dmg = dmg*0.2;
9166 if(U2A->umi == E) dmg = 0;
9167 if(U2A->umi == S) dmg = dmg*1.5;
9168 if(U2A->umi == SS) dmg = dmg*2.0;
9169 }else if(U->C.S_C.typeMOVE == UMI){
9170 if(U2A->riku == A) dmg = dmg*1.2;
9171 if(U2A->riku == B) dmg = dmg*1.0;
9172 if(U2A->riku == C) dmg = dmg*0.6;
9173 if(U2A->riku == D) dmg = dmg*0.2;
9174 if(U2A->riku == E) dmg = 0;
9175 if(U2A->riku == S) dmg = dmg*1.5;
9176 if(U2A->riku == SS) dmg = dmg*2.0;
9178 } if(U->C.S_C.typeMOVE == CHU){
9179 if(U2A->chu == A) dmg = dmg*1.2;
9180 if(U2A->chu == B) dmg = dmg*1.0;
9181 if(U2A->chu == C) dmg = dmg*0.6;
9182 if(U2A->chu == D) dmg = dmg*0.2;
9183 if(U2A->chu == E) dmg = 0;
9184 if(U2A->chu == S) dmg = dmg*1.5;
9185 if(U2A->chu == SS) dmg = dmg*2.0;
9186 } if(U->C.S_C.typeMOVE == SORA){
9187 if(U2A->sora == A) dmg = dmg*1.2;
9188 if(U2A->sora == B) dmg = dmg*1.0;
9189 if(U2A->sora == C) dmg = dmg*0.6;
9190 if(U2A->sora == D) dmg = dmg*0.2;
9191 if(U2A->sora == E) dmg = 0;
9192 if(U2A->sora == S) dmg = dmg*1.5;
9193 if(U2A->sora == SS) dmg = dmg*2.0;
9196 NSLog(@"ユニットの地形適用後:%g", dmg);
9197 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
9198 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
9202 if(graze > omfg && !healFlag) {dmg = dmg/5;
9205 if(battleDef2Flag) dmg -= dmg*0.5;
9206 battleDef2Flag = false;
9208 if(dmg < 0) dmg = 0;
9212 [btHITtf1 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
9213 [btDMGtf1 setStringValue:[NSString stringWithFormat:@"ダメージ値 %g", dmg]];
9217 }else if(U2A->D->sort == 1){
9218 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
9222 if(U->C.S_C.HP > U->C.S_M.HP) U->C.S_C.HP = U->C.S_M.HP;
9227 if(U->C.S_C.HP <= 0) {
9229 U2->C.S_C.vigor += 5;
9240 targType2Lflag = true;
9247 targType2Dflag = true;
9255 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
9256 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
9258 if(![U2A->msg isEqualToString:@""]){
9260 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
9261 [self originalMessage:U2A->msg subj:U2->C.name obje:U->C.name]]];
9265 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
9267 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
9271 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->C.name, dmg]];
9274 }else if(battleDef1Flag){
9278 while (!(AUN[1] == U->number)) {
9283 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
9287 }else if(battleDod1Flag){
9290 while (!(AUN[1] == U->number)) {
9294 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
9299 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
9303 [battleDialog setStringValue:message];
9305 [btHITtf1 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
9311 if(!extentBattleFlag2){
9316 }else if(extentBattleFlag2){
9317 if(btHitExtendProc1 == 2)
9318 btHitExtendProc1 = 3;
9319 if(btHitExtendProc1 >= 2)
9320 btHitExtendFix1 = 1;
9325 if(DUN[DUNnum] <= 0){
9328 extentBattleFlag2 = false;
9330 extentMPcostFlag = false;
9334 avPlayerFlag1 = false;
9335 animationFlag3 = false;
9336 btAtattckMoveEnd = false;
9342 if(bLoopFlag) break;
9343 BTunitAttackFlag1 = false;
9344 BTunitAttackFlag2 = true;
9345 if(battleDef2Flag || battleDod2Flag)
9346 BTunitAttackFlag2 = false;
9351 while (!(DUN[1] == U->number)) {
9356 while (!(AUN[1] == U->number)) {
9361 if(U->number == U2->number){
9362 btSelfAction = true;
9364 btSelfAction = false;
9367 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){
9369 [self DisplayMessageMod1B];
9371 }else if(U->chipNumberL >= 0 && U2->chipNumberL < 0){
9373 [self DisplayMessageMod2B];
9375 }else if(U->chipNumberL < 0 && U2->chipNumberL >= 0){
9377 [self DisplayMessageMod3B];
9382 if(bLoopFlag) break;
9385 while (!(AUN[1] == U->number)) {
9392 while (!(DUN[1] == U->number)) {
9396 ATTACK *aTop2 = U->C.A;
9404 if(!U->C.A) goto SKIP3;
9408 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
9410 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
9413 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
9414 else oopsIsRight = U->C.S_C.MIS;
9416 oopsIsRight = oopsIsRight/100;
9419 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
9422 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
9423 if(!U2->C.aura && U->C.A->D){
9424 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
9425 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9426 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
9427 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9428 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
9429 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9430 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
9431 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9432 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
9433 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9434 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
9435 }else if(U->C.A->D){
9436 val = 1/log(3+U2->C.S_C.MP/64);
9437 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
9438 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9439 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
9440 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9441 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
9442 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9443 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
9444 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor)*asItIs*val;
9445 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
9446 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9447 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
9449 double val2 = log(3+U2->C.S_C.MP/64);
9451 mostDmg2 = mostDmg2*val2;
9454 if(U->C.A->D->fix == 2){
9455 mostDmg2 = mostDmg2/2 + (U->C.S_C.HIT/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
9457 if(U->C.A->D->type == 0) mostDmg2 -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9458 if(U->C.A->D->type == 1) mostDmg2 -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9459 if(U->C.A->D->type == 2) mostDmg2 -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9460 if(U->C.A->D->type == 3) mostDmg2 -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9461 if(U->C.A->D->type == 4) mostDmg2 -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9464 }else if(U->C.A->D->fix == 1){
9465 mostDmg2 = mostDmg2/2 + ((U->C.S_C.ATK/2+U->C.S_C.HIT/2)/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
9467 if(U->C.A->D->type == 0) mostDmg2 -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9468 if(U->C.A->D->type == 1) mostDmg2 -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9469 if(U->C.A->D->type == 2) mostDmg2 -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9470 if(U->C.A->D->type == 3) mostDmg2 -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9471 if(U->C.A->D->type == 4) mostDmg2 -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9473 }else if(U->C.A->D->fix == 0){
9481 mostDmg2 = [self dmgResist:mostDmg2];
9484 costVIG = U->C.A->vigor;
9486 if(mostDmg < mostDmg2 && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1 && mpCost <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
9492 //mostDmg = U->C.A->totalD;
9495 U->C.A = U->C.A->next;
9501 if(!battleSet2PushedFlag){
9502 for(int i = 0;i < mostNumSub;i++){
9503 U->C.A = U->C.A->next;
9507 for(int i = 0;i < crCAL2;i++){
9508 U->C.A = U->C.A->next;
9514 if(U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1 && ![self sortEcheck:U->C.A opponent:U2]){
9516 }else while(U->C.A){
9517 U->C.A = U->C.A->next;
9523 BTunitAttackFlag2 = false;
9524 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
9530 if(attackCR2->magic){
9531 btAttackType2 = BT_TYPE_MAGIC;
9533 btAttackType2 = BT_TYPE_NORMAL;
9536 if(BTunitAttackFlag2)
9537 if((btAttackType2 == BT_TYPE_NORMAL && btAttackMoveValue2 < 2)
9538 || (btAttackType2 == BT_TYPE_MAGIC && btAttackMoveValue2 < 5)
9539 || (btAttackType2 == BT_TYPE_ABILITY && btAttackMoveValue2 < 2)){
9542 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
9544 [battleDialog setStringValue:message];
9551 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
9553 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL){
9554 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
9556 NSString *path = @"data/AttackList/ALdata";
9558 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
9560 path = [path stringByAppendingFormat:@"/"];
9562 path = [path stringByAppendingString:U->C.A->AN.movName];
9565 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
9568 AVPV.player = [AVpreview retain];
9573 [AVPV setControlsStyle:0];
9574 [AVPV setHidden:NO];
9576 [battleDialog setStringValue:message];
9578 avPlayerFlag2 = true;
9583 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->C.A->AN.ANI && !animationFlag3){
9586 animationFlag2 = true;
9596 if(U->C.A->D->type == 0) dmg = U->C.S_C.ATK + U->C.A->totalD;
9597 if(U->C.A->D->type == 1) dmg = U->C.S_C.DEF + U->C.A->totalD;
9598 if(U->C.A->D->type == 2) dmg = U->C.S_C.ACU + U->C.A->totalD;
9599 if(U->C.A->D->type == 3) dmg = U->C.S_C.EVA + U->C.A->totalD;
9600 if(U->C.A->D->type == 4) dmg = U->C.S_C.CAP + U->C.A->totalD;
9601 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
9606 while (!(AUN[1] == U->number)) {
9611 while (!(DUN[1] == U->number)) {
9614 NSString *string = [U2A->name retain];
9615 while (![U->C.A->name isEqualToString:string] && U->C.A) {
9616 U->C.A = U->C.A->next;
9619 if(!U->C.A) U->C.A = aTop2;
9621 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
9623 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
9626 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
9627 else oopsIsRight = U->C.S_C.MIS;
9629 oopsIsRight = oopsIsRight/100;
9632 if(!U2->C.aura && U->C.A->D){
9633 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
9634 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9635 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
9636 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9637 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
9638 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9639 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
9640 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9641 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
9642 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9643 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
9644 }else if(U->C.A->D){
9645 double val = val = 1/log(3+U2->C.S_C.MP/64);
9646 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
9647 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9648 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
9649 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9650 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
9651 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9652 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
9653 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9654 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
9655 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9656 if(U->C.A->D->type == 5) dmg = U->C.A->totalD*val;
9658 val2 = log(3+U2->C.S_C.MP/64);
9663 if(U->C.A->D->fix == 2){
9664 dmg = dmg/2 + (U->C.S_C.HIT/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
9666 if(U->C.A->D->type == 0) dmg -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9667 if(U->C.A->D->type == 1) dmg -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9668 if(U->C.A->D->type == 2) dmg -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9669 if(U->C.A->D->type == 3) dmg -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9670 if(U->C.A->D->type == 4) dmg -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9673 }else if(U->C.A->D->fix == 1){
9674 dmg = dmg/2 + ((U->C.S_C.ATK/2+U->C.S_C.HIT/2)/2*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet*U->C.S_C.vigor/100)*oopsIsRight;
9676 if(U->C.A->D->type == 0) dmg -= (U2->C.S_C.DEF/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9677 if(U->C.A->D->type == 1) dmg -= (U2->C.S_C.ATK/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9678 if(U->C.A->D->type == 2) dmg -= (U2->C.S_C.EVA/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9679 if(U->C.A->D->type == 3) dmg -= (U2->C.S_C.ACU/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9680 if(U->C.A->D->type == 4) dmg -= (U2->C.S_C.CAP/2*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9682 }else if(U->C.A->D->fix == 0){
9686 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
9687 U->C.S_C.MP -= costMP;
9689 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
9690 hitFix = U->C.A->hitPercent;
9697 while (!(DUN[1] == U->number)) {
9703 while (!(AUN[1] == U->number)) {
9707 hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
9709 hi = U->C.S_C.LUK - U2->C.S_C.LUK;
9712 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
9713 if(hit > 100) hit = 100;
9714 if(hit < 0) hit = 0;
9715 if([self sortEcheck:U2A opponent:U])
9718 battleDod1Flag = false;
9721 while (!(DUN[1] == U->number)) {
9727 while (!(AUN[1] == U->number)) {
9732 if(battleDod1Flag) omg = 50;
9734 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
9735 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);
9736 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);
9737 NSLog(@"修正前のダメージ:%g", dmg);
9738 dmg = [self dmgResist:dmg];
9739 NSLog(@"属性後のダメージ:%g", dmg);
9740 def2 = pow(def2, U->C.S_C.DEF);
9741 int omfg = rand()%100;
9742 NSLog(@"ダメージ幅:%g〜%g", floor(dmg), floor(dmg + dmg/10));
9743 dmg = (dmg*omfg/100/10 + dmg);
9744 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
9745 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
9746 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
9748 if(U->C.S_C.typeMOVE == RIKU){
9749 if(U2A->riku == A) dmg = dmg*1.2;
9750 if(U2A->riku == B) dmg = dmg*1.0;
9751 if(U2A->riku == C) dmg = dmg*0.6;
9752 if(U2A->riku == D) dmg = dmg*0.2;
9753 if(U2A->riku == E) dmg = 0;
9754 if(U2A->riku == S) dmg = dmg*1.5;
9755 if(U2A->riku == SS) dmg = dmg*2.0;
9756 } if(U->C.S_C.typeMOVE == UMI &&
9757 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
9758 if(U2A->umi == A) dmg = dmg*1.2;
9759 if(U2A->umi == B) dmg = dmg*1.0;
9760 if(U2A->umi == C) dmg = dmg*0.6;
9761 if(U2A->umi == D) dmg = dmg*0.2;
9762 if(U2A->umi == E) dmg = 0;
9763 if(U2A->umi == S) dmg = dmg*1.5;
9764 if(U2A->umi == SS) dmg = dmg*2.0;
9765 }else if(U->C.S_C.typeMOVE == UMI){
9766 if(U2A->riku == A) dmg = dmg*1.2;
9767 if(U2A->riku == B) dmg = dmg*1.0;
9768 if(U2A->riku == C) dmg = dmg*0.6;
9769 if(U2A->riku == D) dmg = dmg*0.2;
9770 if(U2A->riku == E) dmg = 0;
9771 if(U2A->riku == S) dmg = dmg*1.5;
9772 if(U2A->riku == SS) dmg = dmg*2.0;
9774 } if(U->C.S_C.typeMOVE == CHU){
9775 if(U2A->chu == A) dmg = dmg*1.2;
9776 if(U2A->chu == B) dmg = dmg*1.0;
9777 if(U2A->chu == C) dmg = dmg*0.6;
9778 if(U2A->chu == D) dmg = dmg*0.2;
9779 if(U2A->chu == E) dmg = 0;
9780 if(U2A->chu == S) dmg = dmg*1.5;
9781 if(U2A->chu == SS) dmg = dmg*2.0;
9782 } if(U->C.S_C.typeMOVE == SORA){
9783 if(U2A->sora == A) dmg = dmg*1.2;
9784 if(U2A->sora == B) dmg = dmg*1.0;
9785 if(U2A->sora == C) dmg = dmg*0.6;
9786 if(U2A->sora == D) dmg = dmg*0.2;
9787 if(U2A->sora == E) dmg = 0;
9788 if(U2A->sora == S) dmg = dmg*1.5;
9789 if(U2A->sora == SS) dmg = dmg*2.0;
9792 NSLog(@"ユニットの地形適用後:%g", dmg);
9795 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
9799 if(graze > omfg && !healFlag) {dmg = dmg/5;
9803 if(battleDef1Flag) dmg -= dmg*0.5;
9804 battleDef1Flag = false;
9806 if(dmg < 0) dmg = 0;
9810 [btHITtf2 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
9811 [btDMGtf2 setStringValue:[NSString stringWithFormat:@"ダメージ値 %g", dmg]];
9814 if(U->C.S_C.HP <= 0) {
9816 U2->C.S_C.vigor += 5;
9827 targType2Lflag = true;
9834 targType2Dflag = true;
9844 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
9846 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
9848 if(![U2A->msg isEqualToString:@""]){
9849 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
9850 [self originalMessage:U2A->msg subj:U2->C.name obje:U->C.name]]];
9856 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
9858 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
9861 }else if(battleDef2Flag){
9865 while (!(DUN[1] == U->number)) {
9870 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
9873 }else if(battleDod2Flag){
9876 while (!(DUN[1] == U->number)) {
9880 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
9885 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
9889 [battleDialog setStringValue:message];
9892 [btHITtf2 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
9896 avPlayerFlag2 = false;
9897 animationFlag3 = false;
9898 btAtattckMoveEnd = false;
9903 if(bLoopFlag) break;
9904 if(cpuAImodeflag && !cpuTurnEndFlag) {
9909 fuckingLoadBugFix = false;
9911 battleSetUp = false;
9912 battleSetFlag = false;
9915 battleSet2PushedFlag = false;
9916 cpuModeBATTLEendFlag = true;
9919 [battleWindow close];
9920 pussyLoopFlag = false;
9921 cpuAtkExtendFlag3 = false;
9922 cpuOMFGmoveATKfixFlag = false;
9923 unitNoMoveFlag = false;
9926 CPUmostDmgChoice = false;
9928 cpuIsAttackingFlag = false;
9929 for(int g = 0;g < chipWidth;g++){
9930 for(int k = 0;k < chipHeight;k++){
9931 g_attackRangeExtent[g][k] = 0;
9937 BTunitAttackFlag1 = false;
9938 BTunitAttackFlag2 = false;
9939 BTunitAttackFlag1 = false;
9940 btAttackMoveValue1 = 0;
9941 btAttackMoveValue2 = 0;
9946 btHitExtendFlag1 = false;
9947 btHitExtendProc1 = 0;
9948 btHitExtendMove1 = 0;
9949 btHitExtendFlag2 = false;
9950 btHitExtendProc2 = 0;
9951 btHitExtendMove2 = 0;
9952 baseDistanceCompFlag = false;
9953 battleVeryBegunFlag = false;
9954 CPUAttackSubmitFlag = false;
9955 battleSetUp = false;
9956 displayBattleCheckPanelFlag = 0;
9957 battleEndFlag = true;
9958 assholeLoadBugFix = false;
9966 UCselected = UC[-1];
9971 -(void)DisplayMessageMod1A{//両方モビール
9973 double def2 = (double)31/32;
9974 NSString *message = @"";
9995 if(bLoopFlag) return;
9997 while (!(AUN[1] == U->number)) {
10001 ATTACK *aTop = U->CL.A;
10002 for(int i = 0;i < crCAL1;i++){
10003 U->CL.A = U->CL.A->next;
10007 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
10009 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
10010 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
10012 NSString *path = @"data/AttackList/ALdata";
10014 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
10016 path = [path stringByAppendingFormat:@"/"];
10018 path = [path stringByAppendingString:U->CL.A->AN.movName];
10020 NSData *AVData = [NSData dataWithContentsOfFile:path];
10023 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
10028 NSString *path = @"data/AttackList3/IALdata";
10030 path = [path stringByAppendingFormat:@"%dE", U->CL.A->indexE];
10032 path = [path stringByAppendingFormat:@"/"];
10034 path = [path stringByAppendingString:U->CL.A->AN.movName];
10037 NSData *AVData = [NSData dataWithContentsOfFile:path];
10040 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
10046 AVPV.player = [AVpreview retain];
10052 [AVPV setHidden:NO];
10054 [battleDialog setStringValue:message];
10056 avPlayerFlag1 = true;
10062 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->CL.A->AN.ANI && !animationFlag3){
10064 [battleDialog setStringValue:message];
10065 animationFlag1 = true;
10072 dmg = U->CL.A->totalD;
10074 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
10075 U->CL.S_C.EN -= costMP;
10077 hit = U->CL.S_C.MOB+U->C.S_C.HIT;
10078 hitFix = U->CL.A->hitPercent;
10084 while (!(DUN[1] == U->number)) {
10087 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;
10088 if(hit > 100) hit = 100;
10089 if(U2A->D->sort == 1){
10092 if([self sortEcheck:U2A opponent:U])
10098 if(battleDod2Flag) wtf = 50;
10099 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
10101 if(U2A->D->sort == 0){
10102 NSLog(@"修正前のダメージ:%g", dmg);
10103 dmg = [self dmgResist:dmg];
10104 NSLog(@"属性後のダメージ:%g", dmg);
10105 def2 = pow(def2, U->CL.S_C.ARM);
10106 int omfg = rand()%100;
10107 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->CL.S_C.ARM);
10109 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg + dmg - U->CL.S_C.ARM));
10110 dmg = (dmg*omfg/100 + dmg - U->CL.S_C.ARM);
10111 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
10112 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
10113 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
10115 if(U->CL.S_C.typeMOVE == RIKU){
10116 if(U2A->riku == A) dmg = dmg*1.2;
10117 if(U2A->riku == B) dmg = dmg*1.0;
10118 if(U2A->riku == C) dmg = dmg*0.6;
10119 if(U2A->riku == D) dmg = dmg*0.2;
10120 if(U2A->riku == E) dmg = 0;
10121 if(U2A->riku == S) dmg = dmg*1.5;
10122 if(U2A->riku == SS) dmg = dmg*2.0;
10123 } if(U->CL.S_C.typeMOVE == UMI &&
10124 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
10125 if(U2A->umi == A) dmg = dmg*1.2;
10126 if(U2A->umi == B) dmg = dmg*1.0;
10127 if(U2A->umi == C) dmg = dmg*0.6;
10128 if(U2A->umi == D) dmg = dmg*0.2;
10129 if(U2A->umi == E) dmg = 0;
10130 if(U2A->umi == S) dmg = dmg*1.5;
10131 if(U2A->umi == SS) dmg = dmg*2.0;
10132 }else if(U->CL.S_C.typeMOVE == UMI){
10133 if(U2A->riku == A) dmg = dmg*1.2;
10134 if(U2A->riku == B) dmg = dmg*1.0;
10135 if(U2A->riku == C) dmg = dmg*0.6;
10136 if(U2A->riku == D) dmg = dmg*0.2;
10137 if(U2A->riku == E) dmg = 0;
10138 if(U2A->riku == S) dmg = dmg*1.5;
10139 if(U2A->riku == SS) dmg = dmg*2.0;
10141 } if(U->CL.S_C.typeMOVE == CHU){
10142 if(U2A->chu == A) dmg = dmg*1.2;
10143 if(U2A->chu == B) dmg = dmg*1.0;
10144 if(U2A->chu == C) dmg = dmg*0.6;
10145 if(U2A->chu == D) dmg = dmg*0.2;
10146 if(U2A->chu == E) dmg = 0;
10147 if(U2A->chu == S) dmg = dmg*1.5;
10148 if(U2A->chu == SS) dmg = dmg*2.0;
10149 } if(U->CL.S_C.typeMOVE == SORA){
10150 if(U2A->sora == A) dmg = dmg*1.2;
10151 if(U2A->sora == B) dmg = dmg*1.0;
10152 if(U2A->sora == C) dmg = dmg*0.6;
10153 if(U2A->sora == D) dmg = dmg*0.2;
10154 if(U2A->sora == E) dmg = 0;
10155 if(U2A->sora == S) dmg = dmg*1.5;
10156 if(U2A->sora == SS) dmg = dmg*2.0;
10159 NSLog(@"ユニットの地形適用後:%g", dmg);
10160 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
10161 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
10165 if(graze > omfg && !healFlag) {dmg = dmg/5;
10168 if(battleDef2Flag) dmg -= dmg*0.5;
10169 battleDef2Flag = false;
10171 if(dmg < 0) dmg = 0;
10172 U->CL.S_C.HP -= dmg;
10175 }else if(U2A->D->sort == 1){
10176 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
10179 U->CL.S_C.HP += dmg;
10181 if(U->CL.S_C.HP > U->CL.S_M.HP) U->CL.S_C.HP = U->CL.S_M.HP;
10186 if(U->CL.S_C.HP <= 0) {
10188 U2->C.S_C.vigor += 5;
10190 messageProcess = 2;
10197 if(U->targType2L) {
10199 targType2Lflag = true;
10204 if(U->targType2D) {
10206 targType2Dflag = true;
10214 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
10215 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
10217 if(![U2A->msg isEqualToString:@""]){
10219 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
10220 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->CL.name]]];
10224 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
10225 if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
10226 else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->CL.name, dmg]];
10227 }else if(battleDef1Flag){
10231 while (!(AUN[1] == U->number)) {
10236 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
10239 }else if(battleDod1Flag){
10242 while (!(AUN[1] == U->number)) {
10246 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
10251 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
10254 [battleDialog setStringValue:message];
10270 -(void)DisplayMessageMod1B{
10272 double def2 = (double)31/32;
10273 NSString *message = @"";
10293 if(bLoopFlag) return;
10296 while (!(AUN[1] == U->number)) {
10303 while (!(DUN[1] == U->number)) {
10307 ATTACK *aTop2 = U->CL.A;
10313 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
10314 costVIG = U->C.A->vigor;
10317 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
10318 if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1 && mpCost <= U->CL.S_C.EN && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
10319 mostDmg = U->CL.A->totalD;
10322 U->CL.A = U->CL.A->next;
10328 if(!battleSet2PushedFlag){
10329 for(int i = 0;i < mostNumSub;i++){
10330 U->CL.A = U->CL.A->next;
10334 for(int i = 0;i < crCAL2;i++){
10335 U->CL.A = U->CL.A->next;
10339 if(!U->CL.A->name){
10344 if(U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1 && ![self sortEcheck:U->CL.A opponent:U2]){
10345 }else while(U->CL.A){
10346 U->CL.A = U->CL.A->next;
10353 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
10357 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
10360 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
10361 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
10363 NSString *path = @"data/AttackList/ALdata";
10365 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
10367 path = [path stringByAppendingFormat:@"/"];
10369 path = [path stringByAppendingString:U->CL.A->AN.movName];
10372 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
10375 AVPV.player = [AVpreview retain];
10380 [AVPV setControlsStyle:0];
10381 [AVPV setHidden:NO];
10383 [battleDialog setStringValue:message];
10385 avPlayerFlag2 = true;
10390 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->CL.A->AN.ANI && !animationFlag3){
10393 animationFlag2 = true;
10401 dmg = U->CL.A->totalD;
10403 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
10404 U->CL.S_C.EN -= costMP;
10406 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
10407 hitFix = U->CL.A->hitPercent;
10414 while (!(AUN[1] == U->number)) {
10419 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;
10420 if(hit > 100) hit = 100;
10422 if([self sortEcheck:U2A opponent:U])
10425 battleDod1Flag = false;
10428 if(battleDod1Flag) omg = 50;
10430 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
10431 NSLog(@"修正前のダメージ:%g", dmg);
10432 dmg = [self dmgResist:dmg];
10433 NSLog(@"属性後のダメージ:%g", dmg);
10434 def2 = pow(def2, U->CL.S_C.ARM);
10435 int omfg = rand()%100;
10436 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->CL.S_C.ARM);
10437 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg + dmg - U->CL.S_C.ARM));
10438 dmg = (dmg*omfg/100 + dmg - U->CL.S_C.ARM);
10441 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
10442 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
10443 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
10445 if(U->CL.S_C.typeMOVE == RIKU){
10446 if(U2A->riku == A) dmg = dmg*1.2;
10447 if(U2A->riku == B) dmg = dmg*1.0;
10448 if(U2A->riku == C) dmg = dmg*0.6;
10449 if(U2A->riku == D) dmg = dmg*0.2;
10450 if(U2A->riku == E) dmg = 0;
10451 if(U2A->riku == S) dmg = dmg*1.5;
10452 if(U2A->riku == SS) dmg = dmg*2.0;
10453 } if(U->CL.S_C.typeMOVE == UMI &&
10454 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
10455 if(U2A->umi == A) dmg = dmg*1.2;
10456 if(U2A->umi == B) dmg = dmg*1.0;
10457 if(U2A->umi == C) dmg = dmg*0.6;
10458 if(U2A->umi == D) dmg = dmg*0.2;
10459 if(U2A->umi == E) dmg = 0;
10460 if(U2A->umi == S) dmg = dmg*1.5;
10461 if(U2A->umi == SS) dmg = dmg*2.0;
10462 }else if(U->CL.S_C.typeMOVE == UMI){
10463 if(U2A->riku == A) dmg = dmg*1.2;
10464 if(U2A->riku == B) dmg = dmg*1.0;
10465 if(U2A->riku == C) dmg = dmg*0.6;
10466 if(U2A->riku == D) dmg = dmg*0.2;
10467 if(U2A->riku == E) dmg = 0;
10468 if(U2A->riku == S) dmg = dmg*1.5;
10469 if(U2A->riku == SS) dmg = dmg*2.0;
10471 } if(U->CL.S_C.typeMOVE == CHU){
10472 if(U2A->chu == A) dmg = dmg*1.2;
10473 if(U2A->chu == B) dmg = dmg*1.0;
10474 if(U2A->chu == C) dmg = dmg*0.6;
10475 if(U2A->chu == D) dmg = dmg*0.2;
10476 if(U2A->chu == E) dmg = 0;
10477 if(U2A->chu == S) dmg = dmg*1.5;
10478 if(U2A->chu == SS) dmg = dmg*2.0;
10479 } if(U->CL.S_C.typeMOVE == SORA){
10480 if(U2A->sora == A) dmg = dmg*1.2;
10481 if(U2A->sora == B) dmg = dmg*1.0;
10482 if(U2A->sora == C) dmg = dmg*0.6;
10483 if(U2A->sora == D) dmg = dmg*0.2;
10484 if(U2A->sora == E) dmg = 0;
10485 if(U2A->sora == S) dmg = dmg*1.5;
10486 if(U2A->sora == SS) dmg = dmg*2.0;
10489 NSLog(@"ユニットの地形適用後:%g", dmg);
10491 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
10495 if(graze > omfg && !healFlag) {dmg = dmg/5;
10499 if(battleDef1Flag) dmg -= dmg*0.5;
10500 battleDef1Flag = false;
10502 if(dmg < 0) dmg = 0;
10503 U->CL.S_C.HP -= dmg;
10507 if(U->CL.S_C.HP <= 0) {
10509 U2->C.S_C.vigor += 5;
10511 messageProcess = 2;
10518 if(U->targType2L) {
10520 targType2Lflag = true;
10525 if(U->targType2D) {
10527 targType2Dflag = true;
10537 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
10539 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
10541 if(![U2A->msg isEqualToString:@""]){
10542 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
10543 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->CL.name]]];
10549 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
10551 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
10553 }else if(battleDef2Flag){
10557 while (!(DUN[1] == U->number)) {
10562 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
10565 }else if(battleDod2Flag){
10568 while (!(DUN[1] == U->number)) {
10572 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
10577 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
10580 [battleDialog setStringValue:message];
10589 -(void)DisplayMessageMod2A{//攻撃側モビール
10591 double def2 = (double)31/32;
10592 NSString *message = @"";
10612 if(bLoopFlag) return;
10615 while (!(DUN[1] == U->number)) {
10621 while (!(AUN[1] == U->number)) {
10625 ATTACK *aTop = U->CL.A;
10626 for(int i = 0;i < crCAL1;i++){
10627 U->CL.A = U->CL.A->next;
10631 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
10633 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
10634 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
10636 NSString *path = @"data/AttackList/ALdata";
10638 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
10640 path = [path stringByAppendingFormat:@"/"];
10642 path = [path stringByAppendingString:U->CL.A->AN.movName];
10644 NSData *AVData = [NSData dataWithContentsOfFile:path];
10647 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
10652 NSString *path = @"data/AttackList3/IALdata";
10654 path = [path stringByAppendingFormat:@"%dE", U->CL.A->indexE];
10656 path = [path stringByAppendingFormat:@"/"];
10658 path = [path stringByAppendingString:U->CL.A->AN.movName];
10661 NSData *AVData = [NSData dataWithContentsOfFile:path];
10664 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
10670 AVPV.player = [AVpreview retain];
10676 [AVPV setHidden:NO];
10678 [battleDialog setStringValue:message];
10680 avPlayerFlag1 = true;
10686 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->CL.A->AN.ANI && !animationFlag3){
10688 [battleDialog setStringValue:message];
10689 animationFlag1 = true;
10696 dmg = U->CL.A->totalD;
10697 double val = 1/log(3+U2->C.S_C.MP/64);
10702 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
10703 U->CL.S_C.EN -= costMP;
10705 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
10706 hitFix = U->CL.A->hitPercent;
10712 while (!(DUN[1] == U->number)) {
10716 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
10718 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
10721 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
10722 if(hit > 100) hit = 100;
10723 if(U2A->D->sort == 1){
10726 if([self sortEcheck:U2A opponent:U])
10732 if(battleDod2Flag) wtf = 50;
10733 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
10735 if(U2A->D->sort == 0){
10736 NSLog(@"修正前のダメージ:%g", dmg);
10737 dmg = [self dmgResist:dmg];
10738 NSLog(@"属性後のダメージ:%g", dmg);
10739 def2 = pow(def2, U->C.S_C.DEF);
10740 int omfg = rand()%100;
10741 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->C.S_C.DEF);
10742 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->C.S_C.DEF), (dmg/10 + dmg - U->C.S_C.DEF));
10743 dmg = (dmg*omfg/100/10 + dmg - U->C.S_C.DEF);
10744 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
10745 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
10746 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
10748 if(U->C.S_C.typeMOVE == RIKU){
10749 if(U2A->riku == A) dmg = dmg*1.2;
10750 if(U2A->riku == B) dmg = dmg*1.0;
10751 if(U2A->riku == C) dmg = dmg*0.6;
10752 if(U2A->riku == D) dmg = dmg*0.2;
10753 if(U2A->riku == E) dmg = 0;
10754 if(U2A->riku == S) dmg = dmg*1.5;
10755 if(U2A->riku == SS) dmg = dmg*2.0;
10756 } if(U->C.S_C.typeMOVE == UMI &&
10757 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
10758 if(U2A->umi == A) dmg = dmg*1.2;
10759 if(U2A->umi == B) dmg = dmg*1.0;
10760 if(U2A->umi == C) dmg = dmg*0.6;
10761 if(U2A->umi == D) dmg = dmg*0.2;
10762 if(U2A->umi == E) dmg = 0;
10763 if(U2A->umi == S) dmg = dmg*1.5;
10764 if(U2A->umi == SS) dmg = dmg*2.0;
10765 }else if(U->C.S_C.typeMOVE == UMI){
10766 if(U2A->riku == A) dmg = dmg*1.2;
10767 if(U2A->riku == B) dmg = dmg*1.0;
10768 if(U2A->riku == C) dmg = dmg*0.6;
10769 if(U2A->riku == D) dmg = dmg*0.2;
10770 if(U2A->riku == E) dmg = 0;
10771 if(U2A->riku == S) dmg = dmg*1.5;
10772 if(U2A->riku == SS) dmg = dmg*2.0;
10774 } if(U->C.S_C.typeMOVE == CHU){
10775 if(U2A->chu == A) dmg = dmg*1.2;
10776 if(U2A->chu == B) dmg = dmg*1.0;
10777 if(U2A->chu == C) dmg = dmg*0.6;
10778 if(U2A->chu == D) dmg = dmg*0.2;
10779 if(U2A->chu == E) dmg = 0;
10780 if(U2A->chu == S) dmg = dmg*1.5;
10781 if(U2A->chu == SS) dmg = dmg*2.0;
10782 } if(U->C.S_C.typeMOVE == SORA){
10783 if(U2A->sora == A) dmg = dmg*1.2;
10784 if(U2A->sora == B) dmg = dmg*1.0;
10785 if(U2A->sora == C) dmg = dmg*0.6;
10786 if(U2A->sora == D) dmg = dmg*0.2;
10787 if(U2A->sora == E) dmg = 0;
10788 if(U2A->sora == S) dmg = dmg*1.5;
10789 if(U2A->sora == SS) dmg = dmg*2.0;
10792 NSLog(@"ユニットの地形適用後:%g", dmg);
10793 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
10794 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
10798 if(graze > omfg && !healFlag) {dmg = dmg/5;
10801 if(battleDef2Flag) dmg -= dmg*0.5;
10802 battleDef2Flag = false;
10804 if(dmg < 0) dmg = 0;
10805 U->C.S_C.HP -= dmg;
10808 }else if(U2A->D->sort == 1){
10809 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
10812 U->CL.S_C.HP += dmg;
10814 if(U->CL.S_C.HP > U->CL.S_M.HP) U->CL.S_C.HP = U->CL.S_M.HP;
10819 if(U->C.S_C.HP <= 0) {
10821 U2->C.S_C.vigor += 5;
10823 messageProcess = 2;
10830 if(U->targType2L) {
10832 targType2Lflag = true;
10837 if(U->targType2D) {
10839 targType2Dflag = true;
10847 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
10848 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
10850 if(![U2A->msg isEqualToString:@""]){
10852 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
10853 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->C.name]]];
10857 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
10858 if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
10859 else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->C.name, dmg]];
10860 }else if(battleDef1Flag){
10864 while (!(AUN[1] == U->number)) {
10869 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
10872 }else if(battleDod1Flag){
10875 while (!(AUN[1] == U->number)) {
10879 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
10884 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
10887 [battleDialog setStringValue:message];
10904 -(void)DisplayMessageMod2B{
10906 double def2 = (double)31/32;
10907 NSString *message = @"";
10927 if(bLoopFlag) return;
10930 while (!(AUN[1] == U->number)) {
10937 while (!(DUN[1] == U->number)) {
10941 ATTACK *aTop2 = U->C.A;
10947 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
10948 costVIG = U->C.A->vigor;
10951 costVIG = U->C.A->vigor;
10953 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
10955 if(mostDmg < U->C.A->totalD && U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1 && mpCost <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->C.A opponent:U2]){
10956 mostDmg = U->C.A->totalD;
10959 U->C.A = U->C.A->next;
10965 if(!battleSet2PushedFlag){
10966 for(int i = 0;i < mostNumSub;i++){
10967 U->C.A = U->C.A->next;
10970 if(mostNum < 0) U->C.A = NULL;
10972 for(int i = 0;i < crCAL2;i++){
10973 U->C.A = U->C.A->next;
10978 if(U->C.A->rangeA <= U2->atkRange && U->C.A->rangeB >= U2->atkRange && U->C.A->D->sort != 1 && ![self sortEcheck:U->C.A opponent:U2]){
10979 }else while(U->CL.A){
10980 U->C.A = U->C.A->next;
10986 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
10992 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
10996 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
10999 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL){
11000 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
11002 NSString *path = @"data/AttackList/ALdata";
11004 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
11006 path = [path stringByAppendingFormat:@"/"];
11008 path = [path stringByAppendingString:U->C.A->AN.movName];
11011 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
11014 AVPV.player = [AVpreview retain];
11019 [AVPV setControlsStyle:0];
11020 [AVPV setHidden:NO];
11022 [battleDialog setStringValue:message];
11024 avPlayerFlag2 = true;
11029 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->C.A->AN.ANI && !animationFlag3){
11032 animationFlag2 = true;
11042 if(U->C.A->D->type == 0) dmg = U->C.S_C.ATK + U->C.A->totalD;
11043 if(U->C.A->D->type == 1) dmg = U->C.S_C.DEF + U->C.A->totalD;
11044 if(U->C.A->D->type == 2) dmg = U->C.S_C.ACU + U->C.A->totalD;
11045 if(U->C.A->D->type == 3) dmg = U->C.S_C.EVA + U->C.A->totalD;
11046 if(U->C.A->D->type == 4) dmg = U->C.S_C.CAP + U->C.A->totalD;
11047 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
11050 double urSupposedToGet;
11052 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
11054 double oopsIsRight;
11055 bool lolFlag = false;
11057 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
11058 else oopsIsRight = U->C.S_C.MIS;
11061 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;
11062 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;
11063 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;
11064 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;
11065 if(U->C.A->D->type == 4) {
11067 dmg = (U->C.S_C.CAP + urSupposedToGet)*oopsIsRight/100;
11069 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
11071 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
11072 U->C.S_C.MP -= costMP;
11074 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
11075 hitFix = U->C.A->hitPercent;
11081 while (!(AUN[1] == U->number)) {
11085 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;
11086 if(hit > 100) hit = 100;
11088 if([self sortEcheck:U2A opponent:U])
11091 battleDod1Flag = false;
11094 if(battleDod1Flag) omg = 50;
11096 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
11097 NSLog(@"修正前のダメージ:%g, %g", dmg, U2A->D->seed);
11099 dmg = [self dmgResist:dmg];
11100 NSLog(@"属性後のダメージ:%g", dmg);
11101 def2 = pow(def2, U->CL.S_C.ARM);
11102 int omfg = rand()%100;
11103 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->CL.S_C.ARM);
11104 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg/10 + dmg - U->CL.S_C.ARM));
11105 if(lolFlag) dmg = (dmg*omfg/100/10 + dmg);
11106 else dmg = (dmg*omfg/100/10+ dmg - U->CL.S_C.ARM);
11109 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
11110 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
11111 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
11113 if(U->CL.S_C.typeMOVE == RIKU){
11114 if(U2A->riku == A) dmg = dmg*1.2;
11115 if(U2A->riku == B) dmg = dmg*1.0;
11116 if(U2A->riku == C) dmg = dmg*0.6;
11117 if(U2A->riku == D) dmg = dmg*0.2;
11118 if(U2A->riku == E) dmg = 0;
11119 if(U2A->riku == S) dmg = dmg*1.5;
11120 if(U2A->riku == SS) dmg = dmg*2.0;
11121 } if(U->CL.S_C.typeMOVE == UMI &&
11122 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
11123 if(U2A->umi == A) dmg = dmg*1.2;
11124 if(U2A->umi == B) dmg = dmg*1.0;
11125 if(U2A->umi == C) dmg = dmg*0.6;
11126 if(U2A->umi == D) dmg = dmg*0.2;
11127 if(U2A->umi == E) dmg = 0;
11128 if(U2A->umi == S) dmg = dmg*1.5;
11129 if(U2A->umi == SS) dmg = dmg*2.0;
11130 }else if(U->CL.S_C.typeMOVE == UMI){
11131 if(U2A->riku == A) dmg = dmg*1.2;
11132 if(U2A->riku == B) dmg = dmg*1.0;
11133 if(U2A->riku == C) dmg = dmg*0.6;
11134 if(U2A->riku == D) dmg = dmg*0.2;
11135 if(U2A->riku == E) dmg = 0;
11136 if(U2A->riku == S) dmg = dmg*1.5;
11137 if(U2A->riku == SS) dmg = dmg*2.0;
11139 } if(U->CL.S_C.typeMOVE == CHU){
11140 if(U2A->chu == A) dmg = dmg*1.2;
11141 if(U2A->chu == B) dmg = dmg*1.0;
11142 if(U2A->chu == C) dmg = dmg*0.6;
11143 if(U2A->chu == D) dmg = dmg*0.2;
11144 if(U2A->chu == E) dmg = 0;
11145 if(U2A->chu == S) dmg = dmg*1.5;
11146 if(U2A->chu == SS) dmg = dmg*2.0;
11147 } if(U->CL.S_C.typeMOVE == SORA){
11148 if(U2A->sora == A) dmg = dmg*1.2;
11149 if(U2A->sora == B) dmg = dmg*1.0;
11150 if(U2A->sora == C) dmg = dmg*0.6;
11151 if(U2A->sora == D) dmg = dmg*0.2;
11152 if(U2A->sora == E) dmg = 0;
11153 if(U2A->sora == S) dmg = dmg*1.5;
11154 if(U2A->sora == SS) dmg = dmg*2.0;
11157 NSLog(@"ユニットの地形適用後:%g", dmg);
11159 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
11163 if(graze > omfg && !healFlag) {dmg = dmg/5;
11167 if(battleDef1Flag) dmg -= dmg*0.5;
11168 battleDef1Flag = false;
11170 if(dmg < 0) dmg = 0;
11171 U->CL.S_C.HP -= dmg;
11175 if(U->CL.S_C.HP <= 0) {
11177 U2->C.S_C.vigor += 5;
11179 messageProcess = 2;
11186 if(U->targType2L) {
11188 targType2Lflag = true;
11193 if(U->targType2D) {
11195 targType2Dflag = true;
11205 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
11207 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
11209 if(![U2A->msg isEqualToString:@""]){
11210 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
11211 [self originalMessage:U2A->msg subj:U2->C.name obje:U->CL.name]]];
11217 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
11219 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
11221 }else if(battleDef2Flag){
11225 while (!(DUN[1] == U->number)) {
11230 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
11233 }else if(battleDod2Flag){
11236 while (!(DUN[1] == U->number)) {
11240 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
11245 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
11248 [battleDialog setStringValue:message];
11258 -(void)DisplayMessageMod3A{//防御側モビール
11260 double def2 = (double)31/32;
11261 NSString *message = @"";
11280 static bool extentbool3 = false;
11281 static bool extentbool4 = false;
11282 if(!extentbool3 && extentBattleFlag2){
11283 extentbool3 = true;
11284 extentMPcostFlag = false;
11287 if(!extentBattleFlag2){
11291 if(bLoopFlag) return;
11294 while (!(DUN[DUNnum] == U->number)) {
11300 while (!(AUN[1] == U->number)) {
11304 ATTACK *aTop = U->C.A;
11305 for(int i = 0;i < crCAL1;i++){
11306 U->C.A = U->C.A->next;
11310 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
11313 [bplayer2 setImage:U2->CL.imgb];
11314 //[bplayer2 setImageScaling:NSScaleToFit];
11315 [nplayer2 setStringValue:U2->CL.name];
11316 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U2->CL.S_C.HP, U2->CL.S_M.HP]];
11317 [lplayer2 setIntValue:U2->CL.S_C.HP/U2->CL.S_M.HP*100];
11318 [iplayer2 setImage:MC[chipNum[U2->x][U2->y]].img];
11319 [mplayer2 setStringValue:MC[chipNum[U2->x][U2->y]].name];
11320 [rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U2->x][U2->y]].dmgfix]];
11322 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){
11323 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
11325 NSString *path = @"data/AttackList/ALdata";
11327 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
11329 path = [path stringByAppendingFormat:@"/"];
11331 path = [path stringByAppendingString:U->C.A->AN.movName];
11333 NSData *AVData = [NSData dataWithContentsOfFile:path];
11336 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
11341 NSString *path = @"data/AttackList3/IALdata";
11343 path = [path stringByAppendingFormat:@"%dE", U->C.A->indexE];
11345 path = [path stringByAppendingFormat:@"/"];
11347 path = [path stringByAppendingString:U->C.A->AN.movName];
11350 NSData *AVData = [NSData dataWithContentsOfFile:path];
11353 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
11359 AVPV.player = [AVpreview retain];
11365 [AVPV setHidden:NO];
11367 [battleDialog setStringValue:message];
11369 avPlayerFlag1 = true;
11375 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->C.A->AN.ANI && !animationFlag3 && DUN[DUNnum] == 1){
11377 [battleDialog setStringValue:message];
11378 animationFlag1 = true;
11386 if(U->C.A->D->type == 0) dmg = U->C.S_C.ATK + U->C.A->totalD;
11387 if(U->C.A->D->type == 1) dmg = U->C.S_C.DEF + U->C.A->totalD;
11388 if(U->C.A->D->type == 2) dmg = U->C.S_C.ACU + U->C.A->totalD;
11389 if(U->C.A->D->type == 3) dmg = U->C.S_C.EVA + U->C.A->totalD;
11390 if(U->C.A->D->type == 4) dmg = U->C.S_C.CAP + U->C.A->totalD;
11391 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
11394 double urSupposedToGet;
11396 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
11398 double oopsIsRight;
11400 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
11401 else oopsIsRight = U->C.S_C.MIS;
11402 bool lolflag = false;
11404 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;
11405 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;
11406 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;
11407 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;
11409 if(U->C.A->D->type == 4){
11411 dmg = (U->C.S_C.CAP + U->C.A->totalD)*oopsIsRight/100;
11414 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
11415 double val2 = log(3+U2->C.S_C.MP/64);
11420 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
11422 if(extentMPcostFlag && extentBattleFlag2){
11425 U->C.S_C.MP -= costMP;
11426 extentMPcostFlag = true;
11429 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
11430 hitFix = U->C.A->hitPercent;
11436 while (!(DUN[DUNnum] == U->number)) {
11439 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;
11440 if(hit > 100) hit = 100;
11441 if(U2A->D->sort == 1){
11444 if([self sortEcheck:U2A opponent:U])
11450 if(battleDod2Flag) wtf = 50;
11451 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
11453 if(U2A->D->sort == 0){
11454 NSLog(@"修正前のダメージ:%g", dmg);
11455 dmg = [self dmgResist:dmg];
11456 NSLog(@"属性後のダメージ:%g", dmg);
11457 def2 = pow(def2, U->CL.S_C.ARM);
11458 int omfg = rand()%100;
11459 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, (U->CL.S_C.ARM));
11460 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg/10 + dmg - U->CL.S_C.ARM));
11461 if(lolflag) dmg = (dmg*omfg/100/10 + dmg);
11462 else dmg = (dmg*omfg/100/10 + dmg - U->CL.S_C.ARM);
11463 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
11464 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
11465 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
11467 if(U->CL.S_C.typeMOVE == RIKU){
11468 if(U2A->riku == A) dmg = dmg*1.2;
11469 if(U2A->riku == B) dmg = dmg*1.0;
11470 if(U2A->riku == C) dmg = dmg*0.6;
11471 if(U2A->riku == D) dmg = dmg*0.2;
11472 if(U2A->riku == E) dmg = 0;
11473 if(U2A->riku == S) dmg = dmg*1.5;
11474 if(U2A->riku == SS) dmg = dmg*2.0;
11475 } if(U->CL.S_C.typeMOVE == UMI &&
11476 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
11477 if(U2A->umi == A) dmg = dmg*1.2;
11478 if(U2A->umi == B) dmg = dmg*1.0;
11479 if(U2A->umi == C) dmg = dmg*0.6;
11480 if(U2A->umi == D) dmg = dmg*0.2;
11481 if(U2A->umi == E) dmg = 0;
11482 if(U2A->umi == S) dmg = dmg*1.5;
11483 if(U2A->umi == SS) dmg = dmg*2.0;
11484 }else if(U->CL.S_C.typeMOVE == UMI){
11485 if(U2A->riku == A) dmg = dmg*1.2;
11486 if(U2A->riku == B) dmg = dmg*1.0;
11487 if(U2A->riku == C) dmg = dmg*0.6;
11488 if(U2A->riku == D) dmg = dmg*0.2;
11489 if(U2A->riku == E) dmg = 0;
11490 if(U2A->riku == S) dmg = dmg*1.5;
11491 if(U2A->riku == SS) dmg = dmg*2.0;
11493 } if(U->CL.S_C.typeMOVE == CHU){
11494 if(U2A->chu == A) dmg = dmg*1.2;
11495 if(U2A->chu == B) dmg = dmg*1.0;
11496 if(U2A->chu == C) dmg = dmg*0.6;
11497 if(U2A->chu == D) dmg = dmg*0.2;
11498 if(U2A->chu == E) dmg = 0;
11499 if(U2A->chu == S) dmg = dmg*1.5;
11500 if(U2A->chu == SS) dmg = dmg*2.0;
11501 } if(U->CL.S_C.typeMOVE == SORA){
11502 if(U2A->sora == A) dmg = dmg*1.2;
11503 if(U2A->sora == B) dmg = dmg*1.0;
11504 if(U2A->sora == C) dmg = dmg*0.6;
11505 if(U2A->sora == D) dmg = dmg*0.2;
11506 if(U2A->sora == E) dmg = 0;
11507 if(U2A->sora == S) dmg = dmg*1.5;
11508 if(U2A->sora == SS) dmg = dmg*2.0;
11511 NSLog(@"ユニットの地形適用後:%g", dmg);
11512 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
11513 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
11517 if(graze > omfg && !healFlag) {dmg = dmg/5;
11520 if(battleDef2Flag) dmg -= dmg*0.5;
11521 battleDef2Flag = false;
11523 if(dmg < 0) dmg = 0;
11524 U->CL.S_C.HP -= dmg;
11527 }else if(U2A->D->sort == 1){
11528 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
11531 U->C.S_C.HP += dmg;
11532 if(U->C.S_C.HP > U->C.S_M.HP) U->C.S_C.HP = U->C.S_M.HP;
11537 if(U->CL.S_C.HP <= 0) {
11539 U2->C.S_C.vigor += 5;
11541 messageProcess = 2;
11548 if(U->targType2L) {
11550 targType2Lflag = true;
11555 if(U->targType2D) {
11557 targType2Dflag = true;
11565 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
11566 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
11568 if(![U2A->msg isEqualToString:@""]){
11570 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
11571 [self originalMessage:U2A->msg subj:U2->C.name obje:U->CL.name]]];
11575 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
11576 if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
11577 else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->CL.name, dmg]];
11578 }else if(battleDef1Flag){
11582 while (!(AUN[1] == U->number)) {
11587 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
11590 }else if(battleDod1Flag){
11593 while (!(AUN[1] == U->number)) {
11597 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
11602 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
11605 [battleDialog setStringValue:message];
11612 if(!extentBattleFlag2){
11617 }else if(extentBattleFlag2){
11619 messageProcess = 1;
11620 if(DUN[DUNnum] <= 0){
11624 extentBattleFlag2 = false;
11625 extentbool3 = false;
11626 extentMPcostFlag = false;
11633 -(void)DisplayMessageMod3B{
11636 double def2 = (double)31/32;
11637 NSString *message = @"";
11657 if(bLoopFlag) return;
11661 while (!(AUN[1] == U->number)) {
11667 while (!(DUN[1] == U->number)) {
11670 ATTACK *aTop2 = U->CL.A;
11676 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
11677 costVIG = U->C.A->vigor;
11680 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
11681 if(mostDmg < U->CL.A->totalD && U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1 && mpCost <= U->CL.S_C.EN && costVIG <= U->C.S_C.vigor && ![self sortEcheck:U->CL.A opponent:U2]){
11682 mostDmg = U->CL.A->totalD;
11685 U->CL.A = U->CL.A->next;
11689 if(mostNum < 0) U->C.A = NULL;
11693 if(!battleSet2PushedFlag){
11694 for(int i = 0;i < mostNumSub;i++){
11695 U->CL.A = U->CL.A->next;
11700 for(int i = 0;i < crCAL2;i++){
11701 U->CL.A = U->C.A->next;
11705 if(U->CL.A->rangeA <= U2->atkRange && U->CL.A->rangeB >= U2->atkRange && U->CL.A->D->sort != 1 && ![self sortEcheck:U->CL.A opponent:U2]){
11706 }else while(U->CL.A){
11707 U->CL.A = U->CL.A->next;
11714 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
11718 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
11720 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
11721 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
11723 NSString *path = @"data/AttackList/ALdata";
11725 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
11727 path = [path stringByAppendingFormat:@"/"];
11729 path = [path stringByAppendingString:U->CL.A->AN.movName];
11732 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
11735 AVPV.player = [AVpreview retain];
11740 [AVPV setControlsStyle:0];
11741 [AVPV setHidden:NO];
11743 [battleDialog setStringValue:message];
11745 avPlayerFlag2 = true;
11750 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->CL.A->AN.ANI && !animationFlag3){
11753 animationFlag2 = true;
11763 dmg = U->CL.A->totalD;
11765 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
11766 U->CL.S_C.EN -= costMP;
11768 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
11769 hitFix = U->CL.A->hitPercent;
11775 while (!(AUN[1] == U->number)) {
11779 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
11781 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
11784 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
11785 if(hit > 100) hit = 100;
11787 if([self sortEcheck:U2A opponent:U])
11790 battleDod1Flag = false;
11793 if(battleDod1Flag) omg = 50;
11795 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
11796 NSLog(@"修正前のダメージ:%g", dmg);
11797 dmg = [self dmgResist:dmg];
11798 NSLog(@"属性後のダメージ:%g", dmg);
11799 def2 = pow(def2, U->C.S_C.DEF);
11800 int omfg = rand()%100;
11801 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->C.S_C.DEF);
11802 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->C.S_C.DEF), (dmg/10 + dmg - U->C.S_C.DEF));
11803 dmg = (dmg*omfg/100/10 + dmg - U->C.S_C.DEF);
11806 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
11807 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
11808 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
11810 if(U->C.S_C.typeMOVE == RIKU){
11811 if(U2A->riku == A) dmg = dmg*1.2;
11812 if(U2A->riku == B) dmg = dmg*1.0;
11813 if(U2A->riku == C) dmg = dmg*0.6;
11814 if(U2A->riku == D) dmg = dmg*0.2;
11815 if(U2A->riku == E) dmg = 0;
11816 if(U2A->riku == S) dmg = dmg*1.5;
11817 if(U2A->riku == SS) dmg = dmg*2.0;
11818 } if(U->C.S_C.typeMOVE == UMI &&
11819 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
11820 if(U2A->umi == A) dmg = dmg*1.2;
11821 if(U2A->umi == B) dmg = dmg*1.0;
11822 if(U2A->umi == C) dmg = dmg*0.6;
11823 if(U2A->umi == D) dmg = dmg*0.2;
11824 if(U2A->umi == E) dmg = 0;
11825 if(U2A->umi == S) dmg = dmg*1.5;
11826 if(U2A->umi == SS) dmg = dmg*2.0;
11827 }else if(U->C.S_C.typeMOVE == UMI){
11828 if(U2A->riku == A) dmg = dmg*1.2;
11829 if(U2A->riku == B) dmg = dmg*1.0;
11830 if(U2A->riku == C) dmg = dmg*0.6;
11831 if(U2A->riku == D) dmg = dmg*0.2;
11832 if(U2A->riku == E) dmg = 0;
11833 if(U2A->riku == S) dmg = dmg*1.5;
11834 if(U2A->riku == SS) dmg = dmg*2.0;
11836 } if(U->C.S_C.typeMOVE == CHU){
11837 if(U2A->chu == A) dmg = dmg*1.2;
11838 if(U2A->chu == B) dmg = dmg*1.0;
11839 if(U2A->chu == C) dmg = dmg*0.6;
11840 if(U2A->chu == D) dmg = dmg*0.2;
11841 if(U2A->chu == E) dmg = 0;
11842 if(U2A->chu == S) dmg = dmg*1.5;
11843 if(U2A->chu == SS) dmg = dmg*2.0;
11844 } if(U->C.S_C.typeMOVE == SORA){
11845 if(U2A->sora == A) dmg = dmg*1.2;
11846 if(U2A->sora == B) dmg = dmg*1.0;
11847 if(U2A->sora == C) dmg = dmg*0.6;
11848 if(U2A->sora == D) dmg = dmg*0.2;
11849 if(U2A->sora == E) dmg = 0;
11850 if(U2A->sora == S) dmg = dmg*1.5;
11851 if(U2A->sora == SS) dmg = dmg*2.0;
11854 NSLog(@"ユニットの地形適用後:%g", dmg);
11856 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
11860 if(graze > omfg && !healFlag) {dmg = dmg/5;
11864 if(battleDef1Flag) dmg -= dmg*0.5;
11865 battleDef1Flag = false;
11867 if(dmg < 0) dmg = 0;
11868 U->C.S_C.HP -= dmg;
11872 if(U->C.S_C.HP <= 0) {
11874 U2->C.S_C.vigor += 5;
11876 messageProcess = 2;
11883 if(U->targType2L) {
11885 targType2Lflag = true;
11890 if(U->targType2D) {
11892 targType2Dflag = true;
11902 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
11904 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
11906 if(![U2A->msg isEqualToString:@""]){
11907 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
11908 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->C.name]]];
11914 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
11916 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
11918 }else if(battleDef2Flag){
11922 while (!(DUN[1] == U->number)) {
11927 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
11930 }else if(battleDod2Flag){
11933 while (!(DUN[1] == U->number)) {
11937 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
11942 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
11945 [battleDialog setStringValue:message];
11954 -(NSString*)originalMessage:(NSString*)str subj:(NSString*)subj obje:(NSString*)obje{
11958 NSString *result = @"";
11960 string = [str copy];
11962 array = [string componentsSeparatedByString:@"$subj"];
11964 for(int i = 0;i < [array count];i++){
11966 result = [[result stringByAppendingString:[NSString stringWithFormat:@"%@", subj]] retain];
11968 result = [[result stringByAppendingString:[array objectAtIndex:i]] retain];
11971 string = [result copy];
11973 array = [string componentsSeparatedByString:@"$obje"];
11977 for(int i = 0;i < [array count];i++){
11979 result = [[result stringByAppendingString:[NSString stringWithFormat:@"%@", obje]] retain];
11981 result = [[result stringByAppendingString:[array objectAtIndex:i]] retain];
11984 //NSLog(@"%@", result);
11991 -(double)dmgResist:(double)DMG{
11995 sd[0] = U->C.R_C.blow + U->C.R_F.blow;
11996 sd[1] = U->C.R_C.slash + U->C.R_F.slash;
11997 sd[2] = U->C.R_C.stub + U->C.R_F.stub;
11998 sd[3] = U->C.R_C.arrow + U->C.R_F.arrow;
11999 sd[4] = U->C.R_C.gun + U->C.R_F.gun;
12000 sd[5] = U->C.R_C.shell + U->C.R_F.shell;
12002 sd[6] = U->C.R_C.flame + U->C.R_F.flame;
12003 sd[7] = U->C.R_C.cold + U->C.R_F.cold;
12004 sd[8] = U->C.R_C.electoric + U->C.R_F.electoric;
12005 sd[9] = U->C.R_C.air + U->C.R_F.air;
12006 sd[10] = U->C.R_C.water + U->C.R_F.water;
12007 sd[11] = U->C.R_C.gas + U->C.R_F.gas;
12008 sd[12] = U->C.R_C.holy + U->C.R_F.holy;
12009 sd[13] = U->C.R_C.dark + U->C.R_F.dark;
12010 sd[14] = U->C.R_C.explosion + U->C.R_F.explosion;
12011 sd[15] = U->C.R_C.blood + U->C.R_F.blood;
12013 sd[16] = U->C.R_C.paralysis + U->C.R_F.paralysis;
12014 sd[17] = U->C.R_C.confusion + U->C.R_F.confusion;
12015 sd[18] = U->C.R_C.poison + U->C.R_F.poison;
12016 sd[19] = U->C.R_C.sleep + U->C.R_F.sleep;
12017 sd[20] = U->C.R_C.charm + U->C.R_F.charm;
12018 sd[21] = U->C.R_C.silent + U->C.R_F.silent;
12022 for(int i = 0;i <= 21;i++)
12023 sd[i] &= ~(sd[i] >> 31);
12027 if(U2A->D->seed == 0) DMG = DMG * sd[0]/100;
12028 if(U2A->D->seed == 1) DMG = DMG * sd[1]/100;
12029 if(U2A->D->seed == 2) DMG = DMG * sd[2]/100;
12030 if(U2A->D->seed == 3) DMG = DMG * sd[3]/100;
12031 if(U2A->D->seed == 4) DMG = DMG * sd[4]/100;
12032 if(U2A->D->seed == 5) DMG = DMG * sd[5]/100;
12034 if(U2A->D->seed == 6) DMG = DMG * sd[6]/100;
12035 if(U2A->D->seed == 7) DMG = DMG * sd[7]/100;
12036 if(U2A->D->seed == 8) DMG = DMG * sd[8]/100;
12037 if(U2A->D->seed == 9) DMG = DMG * sd[9]/100;
12038 if(U2A->D->seed == 10) DMG = DMG * sd[10]/100;
12039 if(U2A->D->seed == 11) DMG = DMG * sd[11]/100;
12040 if(U2A->D->seed == 12) DMG = DMG * sd[12]/100;
12041 if(U2A->D->seed == 13) DMG = DMG * sd[13]/100;
12042 if(U2A->D->seed == 14) DMG = DMG * sd[14]/100;
12043 if(U2A->D->seed == 15) DMG = DMG * sd[15]/100;
12045 if(U2A->D->seed == 16) DMG = DMG * sd[16]/100;
12046 if(U2A->D->seed == 17) DMG = DMG * sd[17]/100;
12047 if(U2A->D->seed == 18) DMG = DMG * sd[18]/100;
12048 if(U2A->D->seed == 19) DMG = DMG * sd[19]/100;
12049 if(U2A->D->seed == 20) DMG = DMG * sd[20]/100;
12050 if(U2A->D->seed == 21) DMG = DMG * sd[21]/100;
12055 -(IBAction)battleStart:(id)sender{
12056 battleSetUp = true;
12057 battleSet1Flag = false;
12058 battleSet2Flag = false;
12059 battleSettingFlag = false;
12061 attackingWait = false;
12062 crapBugFixFlag = true;
12064 [battlePanel close];
12068 -(void)battleStartCPU{
12069 battleSetUp = true;
12070 battleSet1Flag = false;
12071 battleSet2Flag = false;
12072 battleSettingFlag = false;
12074 crapBugFixFlag = true;
12076 [battlePanel close];
12079 -(IBAction)battleSet1:(id)sender{
12080 battleSetFlag = false;
12081 battleSet1Flag = true;
12082 battleDef1Flag = false;
12083 battleDod1Flag = false;
12084 battleSettingFlag = true;
12085 battleSet2PushedFlag = false;
12088 while (!(AUN[1] == U->number)) {
12091 if(U->chipNumberL >= 0)
12094 [self initCAttackList2];
12095 [self initCAttackSelect2];
12097 else if(U->chipNumber >= 0) {
12099 [self initCAttackList];
12100 [self initCAttackSelect];
12104 [atkPanel makeKeyAndOrderFront:nil];
12106 -(IBAction)battleDef1:(id)sender{
12107 battleDef1Flag = true;
12108 battleSet1Flag = false;
12109 battleDod1Flag = false;
12111 -(IBAction)battleDod1:(id)sender{
12112 battleDod1Flag = true;
12113 battleDef1Flag = false;
12114 battleSet1Flag = false;
12116 -(IBAction)battleSet2:(id)sender{
12117 battleSetFlag = true;
12118 battleSet2Flag = true;
12119 battleDef2Flag = false;
12120 battleDod2Flag = false;
12121 battleSettingFlag = true;
12122 battleSet2PushedFlag = true;
12125 while (!(DUN[1] == U->number)) {
12129 if(U->chipNumberL >= 0){
12131 [self initCAttackList2];
12132 [self initCAttackSelect2];
12134 else if(U->chipNumber >= 0) {
12136 [self initCAttackList];
12137 [self initCAttackSelect];
12140 [atkPanel makeKeyAndOrderFront:nil];
12142 -(IBAction)battleDef2:(id)sender{
12143 battleDef2Flag = true;
12144 battleSet2Flag = false;
12145 battleDod2Flag = false;
12147 -(IBAction)battleDod2:(id)sender{
12148 battleDod2Flag = true;
12149 battleDef2Flag = false;
12150 battleSet2Flag = false;
12153 -(IBAction)battleCancel:(id)sender{
12154 battleFlag = false;
12155 battleSettingFlag = false;
12157 battleSet2PushedFlag = false;
12158 attackingWait = false;
12160 [battlePanel close];
12163 -(IBAction)researchCancel:(id)sender{
12164 [researchPanel close];
12167 -(void)setCommandPanel{
12169 menuPoint.x = [mapWindow frame].origin.x + possionLocalX*32;
12170 menuPoint.y = [mapWindow frame].origin.y + possionLocalY*32 - 180;
12173 if(buildSkillFlag) {
12174 cIncludeCreateFlag = true;
12176 }else cIncludeCreateFlag = false;
12177 if(summonSkillFlag) {
12178 cIncludeSummonFlag = true;
12180 }else cIncludeSummonFlag = false;
12181 int plusBtnValue = 0;
12183 if(cIncludeCreateFlag && cIncludeSummonFlag && MF[MFselectedRow+1].MS.buildAllowedFlag && MF[MFselectedRow+1].MS.summonAllowedFlag){
12185 plusBtnValue = 200;
12186 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
12189 plusBtnValue -= moveBtn.frame.size.height + 12;
12190 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12191 [[commandPanel contentView] addSubview:moveBtn];
12193 plusBtnValue -= attackBtn.frame.size.height + 2;
12194 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12195 [[commandPanel contentView] addSubview:attackBtn];
12197 plusBtnValue -= stanbyBtn.frame.size.height + 2;
12198 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12199 [[commandPanel contentView] addSubview:stanbyBtn];
12201 [createBtn setTransparent: NO];
12202 [createBtn setEnabled: YES];
12203 plusBtnValue -= createBtn.frame.size.height + 2;
12204 [createBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12205 [[commandPanel contentView] addSubview:createBtn];
12207 [summonBtn setTransparent: NO];
12208 [summonBtn setEnabled: YES];
12209 plusBtnValue -= summonBtn.frame.size.height + 2;
12210 [summonBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12211 [[commandPanel contentView] addSubview:summonBtn];
12213 plusBtnValue -= statusBtn.frame.size.height + 2;
12214 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12215 [[commandPanel contentView] addSubview:statusBtn];
12217 plusBtnValue -= cancelBtn.frame.size.height + 2;
12218 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12219 [[commandPanel contentView] addSubview:cancelBtn];
12222 else if(cIncludeCreateFlag && !cIncludeSummonFlag && MF[MFselectedRow+1].MS.buildAllowedFlag){
12223 plusBtnValue = 180;
12224 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
12226 plusBtnValue -= moveBtn.frame.size.height + 12;
12227 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12228 [[commandPanel contentView] addSubview:moveBtn];
12230 plusBtnValue -= attackBtn.frame.size.height + 2;
12231 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12232 [[commandPanel contentView] addSubview:attackBtn];
12234 plusBtnValue -= stanbyBtn.frame.size.height + 2;
12235 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12236 [[commandPanel contentView] addSubview:stanbyBtn];
12238 [createBtn setTransparent: NO];
12239 [createBtn setEnabled: YES];
12240 plusBtnValue -= createBtn.frame.size.height + 2;
12241 [createBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12242 [[commandPanel contentView] addSubview:createBtn];
12244 [summonBtn setTransparent: YES];
12245 [summonBtn setEnabled: NO];
12247 plusBtnValue -= statusBtn.frame.size.height + 2;
12248 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12249 [[commandPanel contentView] addSubview:statusBtn];
12251 plusBtnValue -= cancelBtn.frame.size.height + 2;
12252 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12253 [[commandPanel contentView] addSubview:cancelBtn];
12256 }else if(cIncludeSummonFlag && !cIncludeCreateFlag && MF[MFselectedRow+1].MS.summonAllowedFlag){
12258 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, 210) display:YES];
12260 plusBtnValue = 180;
12261 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
12264 plusBtnValue -= moveBtn.frame.size.height + 12;
12265 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12266 [[commandPanel contentView] addSubview:moveBtn];
12268 plusBtnValue -= attackBtn.frame.size.height + 2;
12269 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12270 [[commandPanel contentView] addSubview:attackBtn];
12272 plusBtnValue -= stanbyBtn.frame.size.height + 2;
12273 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12274 [[commandPanel contentView] addSubview:stanbyBtn];
12276 [createBtn setTransparent: YES];
12277 [createBtn setEnabled: NO];
12279 [summonBtn setTransparent: NO];
12280 [summonBtn setEnabled: YES];
12281 plusBtnValue -= summonBtn.frame.size.height + 2;
12282 [summonBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12283 [[commandPanel contentView] addSubview:summonBtn];
12285 plusBtnValue -= statusBtn.frame.size.height + 2;
12286 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12287 [[commandPanel contentView] addSubview:statusBtn];
12289 plusBtnValue -= cancelBtn.frame.size.height + 2;
12290 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12291 [[commandPanel contentView] addSubview:cancelBtn];
12294 plusBtnValue = 160;
12295 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
12297 plusBtnValue -= moveBtn.frame.size.height + 12;
12298 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12299 [[commandPanel contentView] addSubview:moveBtn];
12301 plusBtnValue -= attackBtn.frame.size.height + 2;
12302 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12303 [[commandPanel contentView] addSubview:attackBtn];
12305 plusBtnValue -= stanbyBtn.frame.size.height + 2;
12306 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12307 [[commandPanel contentView] addSubview:stanbyBtn];
12309 [createBtn setTransparent: YES];
12310 [createBtn setEnabled: NO];
12312 [summonBtn setTransparent: YES];
12313 [summonBtn setEnabled: NO];
12315 plusBtnValue -= statusBtn.frame.size.height + 2;
12316 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12317 [[commandPanel contentView] addSubview:statusBtn];
12319 plusBtnValue -= cancelBtn.frame.size.height + 2;
12320 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12321 [[commandPanel contentView] addSubview:cancelBtn];
12327 -(void)openMessage{
12328 [IVimage setHidden:NO];
12329 [TFname setHidden:NO];
12330 [TFmessage setHidden:NO];
12331 [BXname setHidden:NO];
12332 [BXmessage setHidden:NO];
12333 [IVimage setEnabled:YES];
12334 [TFname setEnabled:YES];
12335 [TFmessage setEnabled:YES];
12338 -(void)closeMessage{
12339 [IVimage setHidden:YES];
12340 [TFname setHidden:YES];
12341 [TFmessage setHidden:YES];
12342 [BXname setHidden:YES];
12343 [BXmessage setHidden:YES];
12344 [IVimage setEnabled:NO];
12345 [TFname setEnabled:NO];
12346 [TFmessage setEnabled:NO];
12349 -(MAPSCRIPT0*)setMessage:(MAPSCRIPT0*)MS0{
12352 if(!messageDialog){
12353 [self closeMessage];
12354 damnitFixFlag = true;
12355 }else if(MS0->S1.str){
12356 [self openMessage];
12357 damnitFixFlag = false;
12358 NSString *string = @"";
12360 string = [MS0->S1.str retain];
12362 MS0->endFlag = true;
12363 textInstantBugFixFlag = false;
12364 messageEndFlag = false;
12365 messageDialog = false;
12369 if(!initStringNum){
12372 initStringNum = true;
12373 textInstantBugFixFlag = true;
12376 msgMax = (int)[string length];
12382 initImgFlag = true;
12385 [IVimage setImage:MS0->S1.img];
12386 if(MS0->S1.name) [TFname setStringValue:MS0->S1.name];
12387 else [TFname setStringValue:@""];
12389 if(msgCnt <= msgMax){
12391 [TFmessage setStringValue:[string substringToIndex:msgCnt]];
12394 else [TFmessage setStringValue:@""];
12399 if(messageEndFlag){
12400 MS0->endFlag = true;
12401 messageEndFlag = false;
12402 initStringNum = false;
12403 messageDialog = false;
12404 MS0->succeessfulFlag = true;
12406 textInstantBugFixFlag = false;
12407 [self setMessage:NULL];
12412 MS0->endFlag = true;
12413 messageEndFlag = false;
12414 messageDialog = false;
12415 initStringNum = false;
12424 NSString *directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
12425 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
12427 NSString *path = @"Map/";
12428 NSString *fileData = nil;
12429 NSArray *fileDataArray;
12431 path = [path stringByAppendingFormat:@"%@" ,MF[MFselectedRow+1].fileName];
12433 fileData = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
12435 fileDataArray = [fileData componentsSeparatedByString:@"\n"];
12437 MAPSCRIPT0 *MS00 = MF[MFselectedRow+1].MS.D->P;
12438 MAPSCRIPT0 *m00Top = MS00;
12439 for (int i = 0; i < [fileDataArray count]; i++) {
12441 NSRange range = [[fileDataArray objectAtIndex:i] rangeOfString:@"◆"];
12442 if(range.location != NSNotFound){
12444 NSArray *array2 = [[fileDataArray objectAtIndex:i] componentsSeparatedByString:@","];
12445 if(MS00->type == 1)
12447 MS00->S1.iName = [[array2 objectAtIndex:2] retain];
12449 for(int k = 0; k < UCN;k++){
12451 if([MS00->S1.iName isEqualToString:UC[k].nameClass]){
12452 MS00->S1.img = [UC[k].imgb retain];
12468 -(MAPSCRIPT0*)setSwitch:(MAPSCRIPT0*)MS0{
12471 for(int i = 0;*(MS0->switch1 + i) >0;i++){
12472 Suicchi[*(MS0->switch1+i)] = true;
12476 for(int i = 0;*(MS0->switch2 + i) >0;i++){
12477 Suicchi[*(MS0->switch2+i)] = false;
12481 MS0->succeessfulFlag = true;
12482 MS0->endFlag = true;
12486 -(MAPSCRIPT0*)setBranch:(MAPSCRIPT0*)MS0{
12488 MAPSCRIPT0 *CRMS0 = MS0;
12489 bool branchEndFlag = false;
12490 bool branchSuceedFlag = false;
12491 bool trueFlag = true;
12498 MS0->endFlag = true;
12504 if(MS0->S4.suicchiFlag){
12505 if(MS0->S4.suicchiONOFF == 0){
12506 if(MS0->S4.suicchi)
12507 for (int i = 0;*(MS0->S4.suicchi + i);i++) {
12508 if(!Suicchi[*(MS0->S4.suicchi + i)]){
12513 if(MS0->S4.suicchi)
12514 for (int i = 0;*(MS0->S4.suicchi + i);i++) {
12515 if(Suicchi[*(MS0->S4.suicchi + i)]){
12522 if(MS0->S4.hensuFlag){
12524 if(MS0->S4.teisuFlag){
12525 if(MS0->S4.hensuType == 0){
12526 if([Hensuu[MS0->S4.hensu1] intValue] == MS0->S4.teisuValue){
12531 }else if(MS0->S4.hensuType == 1){
12532 if([Hensuu[MS0->S4.hensu1] intValue] >= MS0->S4.teisuValue){
12537 }else if(MS0->S4.hensuType == 2){
12538 if([Hensuu[MS0->S4.hensu1] intValue] <= MS0->S4.teisuValue){
12543 }else if(MS0->S4.hensuType == 3){
12544 if([Hensuu[MS0->S4.hensu1] intValue] > MS0->S4.teisuValue){
12549 }else if(MS0->S4.hensuType == 4){
12550 if([Hensuu[MS0->S4.hensu1] intValue] < MS0->S4.teisuValue){
12555 }else if(MS0->S4.hensuType == 5){
12556 if([Hensuu[MS0->S4.hensu1] intValue] != MS0->S4.teisuValue){
12563 }if(MS0->S4.hensu2flag){
12564 if(MS0->S4.hensuType == 0){
12565 if([Hensuu[MS0->S4.hensu1] isEqualToString:Hensuu[MS0->S4.hensu2]]){
12570 }else if(MS0->S4.hensuType == 1){
12571 if([Hensuu[MS0->S4.hensu1] intValue] >= [Hensuu[MS0->S4.hensu2] intValue]){
12576 }else if(MS0->S4.hensuType == 2){
12577 if([Hensuu[MS0->S4.hensu1] intValue] <= [Hensuu[MS0->S4.hensu2] intValue]){
12582 }else if(MS0->S4.hensuType == 3){
12583 if([Hensuu[MS0->S4.hensu1] intValue] > [Hensuu[MS0->S4.hensu2] intValue]){
12588 }else if(MS0->S4.hensuType == 4){
12589 if([Hensuu[MS0->S4.hensu1] intValue] < [Hensuu[MS0->S4.hensu2] intValue]){
12594 }else if(MS0->S4.hensuType == 5){
12595 if(![Hensuu[MS0->S4.hensu1] isEqualToString:Hensuu[MS0->S4.hensu2]]){
12604 if(MS0->S4.timerFlag){
12606 if(MS0->S4.timerType == 0){
12607 if(MS0->S4.timerMin <= cntTimerMin){
12609 }else if(MS0->S4.timerSec <= cntTimerSec && MS0->S4.timerMin <= cntTimerMin){
12618 if(MS0->S4.timerMin >= cntTimerMin){
12620 }else if(MS0->S4.timerSec >= cntTimerSec && MS0->S4.timerMin >= cntTimerMin){
12631 if(MS0->S4.unitNumFlag){
12641 int objeSCSunitCnt = 0;
12643 if(MS0->S4.objeFlag){
12645 UNIT2 *objeT = MS0->S4.obje;
12647 while (MS0->S4.obje) {
12652 static bool okflag = true;
12654 for (int i = 0;i < 1002;i++) {
12655 for (int k = 0;k < 1002;k++) {
12662 if(U2->ix == MS0->S4.obje->x && U2->iy == MS0->S4.obje->y){
12673 [self checkPlaceHani:MS0->S4.objeRange+1 tX:U2->y tY:U2->x aMap:objeR u:U scsCnt:&objeSCSunitCnt];
12677 for(int bx=1;bx<=chipWidth;bx++){
12678 for(int by=1;by<=chipHeight;by++){
12679 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
12681 if(objeR[U->x][U->y] > 0){
12683 if(Unum < Cnum) goto omfgUnitOver2;
12697 if(UP->x == U->x && UP->y == U->y){
12710 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
12712 while(UP->next) UP = UP->next;
12717 UP->next = calloc(1, sizeof(UNITPOINT));
12731 //NSLog(@"%@, %d, %d", U->C.name, objeSCSunitCnt, objeR[0][0]);
12736 MS0->S4.obje = MS0->S4.obje->next;
12738 MS0->S4.obje = objeT;
12742 if(MS0->S4.buildFlag){
12743 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
12747 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
12748 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
12749 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
12757 if(MS0->S4.team == 0){
12758 if(!MS0->S4.objeFlag && !MS0->S4.placeFlag){
12761 if(U->team == 0 && !U->dead)
12766 if(MS0->S4.unitType == 0){
12767 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team0num = MS0->S4.unitNum;
12769 if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == objeSCSunitCnt)){
12771 }else if((MS0->S4.unitNum == team0num) && !MS0->S4.objeFlag){
12776 }else if(MS0->S4.unitType == 1){
12777 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team0num = 65000;
12779 if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= objeSCSunitCnt)){
12781 }else if((MS0->S4.unitNum <= team0num) && !MS0->S4.objeFlag){
12786 }else if(MS0->S4.unitType == 2){
12787 if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= objeSCSunitCnt)){
12789 }else if((MS0->S4.unitNum >= team0num) && !MS0->S4.objeFlag){
12797 }else if(MS0->S4.team == 1){
12798 if(!MS0->S4.objeFlag && !MS0->S4.placeFlag){
12801 if(U->team == 1 && !U->dead)
12806 if(MS0->S4.unitType == 0){
12807 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team1num = MS0->S4.unitNum;
12809 if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum == objeSCSunitCnt)){
12811 }else if((MS0->S4.unitNum == team1num) && !MS0->S4.objeFlag){
12816 }else if(MS0->S4.unitType == 1){
12817 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team1num = 65000;
12818 if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= objeSCSunitCnt)){
12820 }else if((MS0->S4.unitNum <= team1num) && !MS0->S4.objeFlag){
12825 }else if(MS0->S4.unitType == 2){
12827 if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= objeSCSunitCnt)){
12829 }else if((MS0->S4.unitNum >= team1num) && !MS0->S4.objeFlag){
12835 }else if(MS0->S4.team == 2){
12836 if(!MS0->S4.objeFlag && !MS0->S4.placeFlag){
12839 if(U->team == 2 && !U->dead)
12844 if(MS0->S4.unitType == 0){
12845 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team2num = MS0->S4.unitNum;
12847 if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == objeSCSunitCnt)){
12849 }else if((MS0->S4.unitNum == team2num) && !MS0->S4.objeFlag){
12854 }else if(MS0->S4.unitType == 1){
12855 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team2num = 65000;
12857 if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= objeSCSunitCnt)){
12859 }else if((MS0->S4.unitNum <= team2num) && !MS0->S4.objeFlag){
12864 }else if(MS0->S4.unitType == 2){
12865 if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= objeSCSunitCnt)){
12867 }else if((MS0->S4.unitNum >= team2num) && !MS0->S4.objeFlag){
12879 if(MS0->S4.unitTypeFlag && MS0->S4.unitNumFlag){
12880 UNIT2 *sjt = MS0->S4.subj;
12881 UNIT *chosen = NULL;
12882 UNIT *chosenT = NULL;
12885 while(MS0->S4.subj){
12888 if(MS0->S4.subj->x == U->ix && MS0->S4.subj->y == U->iy && U->iz == 1){
12890 chosen->next = calloc(1, sizeof(UNIT));
12895 chosen = chosen->next;
12898 chosen = calloc(1, sizeof(UNIT));
12902 chosen->C.name = U->C.name;
12913 MS0->S4.subj = MS0->S4.subj->next;
12914 }MS0->S4.subj = sjt;
12917 int objeSCSunitCnt = 0;
12925 chosen = chosen->next;
12928 if(MS0->S4.unitTypeFlag && MS0->S4.objeFlag){
12930 UNIT2 *objeT = MS0->S4.obje;
12932 while (MS0->S4.obje) {
12937 static bool okflag = true;
12939 for (int i = 0;i < 1002;i++) {
12940 for (int k = 0;k < 1002;k++) {
12947 if(U2->ix == MS0->S4.obje->x && U2->iy == MS0->S4.obje->y){
12959 [self checkPlaceHani:MS0->S4.objeRange+1 tX:U2->y tY:U2->x aMap:objeR u:chosen scsCnt:&objeSCSunitCnt];
12963 for(int bx=1;bx<=chipWidth;bx++){
12964 for(int by=1;by<=chipHeight;by++){
12965 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
12967 if(objeR[chosen->x][chosen->y] > 0){
12969 if(Unum < Cnum) goto omfgUnitOver3;
12983 if(UP->x == chosen->x && UP->y == chosen->y){
12996 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
12998 while(UP->next) UP = UP->next;
13003 UP->next = calloc(1, sizeof(UNITPOINT));
13017 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
13019 chosen = chosen->next;
13022 MS0->S4.obje = MS0->S4.obje->next;
13024 MS0->S4.obje = objeT;
13025 }else if(MS0->S4.objeFlag){
13027 UNIT2 *objeT = MS0->S4.obje;
13029 while (MS0->S4.obje) {
13034 static bool okflag = true;
13036 if(U->team != MS0->S4.team){
13040 for (int i = 0;i < 1002;i++) {
13041 for (int k = 0;k < 1002;k++) {
13048 if(U2->ix == MS0->S4.obje->x && U2->iy == MS0->S4.obje->y){
13059 [self checkPlaceHani:MS0->S4.objeRange+1 tX:U2->y tY:U2->x aMap:objeR u:U scsCnt:&objeSCSunitCnt];
13063 for(int bx=1;bx<=chipWidth;bx++){
13064 for(int by=1;by<=chipHeight;by++){
13065 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
13067 if(objeR[chosen->x][chosen->y] > 0){
13069 if(Unum < Cnum) goto omfgUnitOver30;
13083 if(UP->x == chosen->x && UP->y == chosen->y){
13096 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13098 while(UP->next) UP = UP->next;
13103 UP->next = calloc(1, sizeof(UNITPOINT));
13117 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
13119 chosen = chosen->next;
13122 MS0->S4.obje = MS0->S4.obje->next;
13124 MS0->S4.obje = objeT;
13132 if(MS0->S4.team == 0){
13133 if(!MS0->S4.unitTypeFlag){
13136 if(U->team == 0 && !U->dead)
13141 if(MS0->S4.unitType == 0){
13142 if(MS0->S4.unitTypeFlag) team0num = MS0->S4.unitNum;
13144 if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == cntUnit)
13145 && (MS0->S4.unitNum == objeSCSunitCnt)){
13147 }else if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == cntUnit) && !MS0->S4.objeFlag){
13152 }else if(MS0->S4.unitType == 1){
13153 if(MS0->S4.unitTypeFlag) team0num = 65000;
13155 if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= cntUnit)
13156 && (MS0->S4.unitNum <= objeSCSunitCnt)){
13158 }else if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= cntUnit) && !MS0->S4.objeFlag){
13163 }else if(MS0->S4.unitType == 2){
13164 if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= cntUnit)
13165 && (MS0->S4.unitNum >= objeSCSunitCnt)){
13167 }else if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= cntUnit) && !MS0->S4.objeFlag){
13175 }else if(MS0->S4.team == 1){
13176 if(!MS0->S4.unitTypeFlag){
13179 if(U->team == 1 && !U->dead)
13184 if(MS0->S4.unitType == 0){
13185 if(MS0->S4.unitTypeFlag) team1num = MS0->S4.unitNum;
13187 if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum == cntUnit)
13188 && (MS0->S4.unitNum == objeSCSunitCnt)){
13190 }else if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum == cntUnit) && !MS0->S4.objeFlag){
13195 }else if(MS0->S4.unitType == 1){
13196 if(MS0->S4.unitTypeFlag) team1num = 65000;
13198 if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= cntUnit)
13199 && (MS0->S4.unitNum <= objeSCSunitCnt)){
13201 }else if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= cntUnit) && !MS0->S4.objeFlag){
13206 }else if(MS0->S4.unitType == 2){
13207 if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= cntUnit)
13208 && (MS0->S4.unitNum >= objeSCSunitCnt)){
13210 }else if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= cntUnit) && !MS0->S4.objeFlag){
13216 }else if(MS0->S4.team == 2){
13217 if(!MS0->S4.unitTypeFlag){
13220 if(U->team == 2 && !U->dead)
13225 if(MS0->S4.unitType == 0){
13226 if(MS0->S4.unitTypeFlag) team2num = MS0->S4.unitNum;
13228 if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == cntUnit)
13229 && (MS0->S4.unitNum == objeSCSunitCnt)){
13231 }else if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == cntUnit) && !MS0->S4.objeFlag){
13236 }else if(MS0->S4.unitType == 1){
13237 if(MS0->S4.unitTypeFlag) team2num = 65000;
13239 if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= cntUnit)
13240 && (MS0->S4.unitNum <= objeSCSunitCnt)){
13242 }else if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= cntUnit) && !MS0->S4.objeFlag){
13247 }else if(MS0->S4.unitType == 2){
13248 if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= cntUnit)
13249 && (MS0->S4.unitNum >= objeSCSunitCnt)){
13251 }else if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= cntUnit) && !MS0->S4.objeFlag){
13269 if(MS0->S4.placeFlag && MS0->S4.unitNumFlag){
13279 UNIT2 *sjt = MS0->S4.subj;
13280 UNIT *chosen = NULL;
13281 UNIT *chosenT = NULL;
13284 if(MS0->S4.unitTypeFlag){
13285 while(MS0->S4.subj){
13288 if(MS0->S4.subj->x == U->ix && MS0->S4.subj->y == U->iy && U->iz == 1){
13290 chosen->next = calloc(1, sizeof(UNIT));
13295 chosen = chosen->next;
13298 chosen = calloc(1, sizeof(UNIT));
13302 chosen->C.name = U->C.name;
13313 MS0->S4.subj = MS0->S4.subj->next;
13314 }MS0->S4.subj = sjt;
13322 chosen = chosen->next;
13328 PLACEMENT *wpt = MS0->S4.wayp;
13330 int waypSCScnt = 0;
13331 bool waypSCS = false;
13332 int waypSCSunitCnt = 0;
13335 if(!MS0->S4.unitTypeFlag){
13337 while (MS0->S4.wayp) {
13343 if(MS0->S4.wayp->type == 0){
13346 if(U->team != MS0->S4.team){
13350 if(MS0->S4.wayp->x == U->x && MS0->S4.wayp->y == U->y){
13358 }else if(MS0->S4.wayp->type == 1){
13360 static bool okflag = true;
13362 if(U->team != MS0->S4.team){
13366 for (int i = 0;i < 1002;i++) {
13367 for (int k = 0;k < 1002;k++) {
13371 [self checkPlaceHani:MS0->S4.wayp->z+1 tX:MS0->S4.wayp->y tY:MS0->S4.wayp->x aMap:waypR u:U scsCnt:&waypSCSunitCnt];
13375 for(int bx=1;bx<=chipWidth;bx++){
13376 for(int by=1;by<=chipHeight;by++){
13377 if(waypR[bx][by] != 999 && waypR[bx][by] > 0){
13379 if(waypR[U->x][U->y] > 0){
13381 if(Unum < Cnum) goto omfgUnitOver;
13395 if(UP->x == U->x && UP->y == U->y){
13408 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13410 while(UP->next) UP = UP->next;
13415 UP->next = calloc(1, sizeof(UNITPOINT));
13428 // NSLog(@"%d", waypSCSunitCnt);
13436 }else if(MS0->S4.wayp->type == 2){
13438 waypSCSunitCnt = 0;
13439 static bool okflag = true;
13441 if(U->team != MS0->S4.team){
13445 if((MS0->S4.wayp->x <= U->x) && (MS0->S4.wayp->x2 >= U->x) &&
13446 (MS0->S4.wayp->y <= U->y) && (MS0->S4.wayp->y2 >= U->y)){
13453 if(Unum < Cnum) goto omfgUnitOver;
13467 if(UP->x == U->x && UP->y == U->y){
13480 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13482 while(UP->next) UP = UP->next;
13487 UP->next = calloc(1, sizeof(UNITPOINT));
13503 MS0->S4.wayp = MS0->S4.wayp->next;
13504 }MS0->S4.wayp = wpt;
13505 // NSLog(@"%d", waypSCSunitCnt);
13507 if(waypSCScnt >= waypCnt)
13510 }else if(MS0->S4.unitTypeFlag){
13512 while (MS0->S4.wayp) {
13518 if(MS0->S4.wayp->type == 0){
13521 if(MS0->S4.wayp->x == chosen->x && MS0->S4.wayp->y == chosen->y){
13526 chosen = chosen->next;
13529 }else if(MS0->S4.wayp->type == 1){
13531 static bool okflag = true;
13533 for (int i = 0;i < 1002;i++) {
13534 for (int k = 0;k < 1002;k++) {
13538 [self checkPlaceHani:MS0->S4.wayp->z+1 tX:MS0->S4.wayp->y tY:MS0->S4.wayp->x aMap:waypR u:chosen scsCnt:&waypSCSunitCnt];
13542 for(int bx=1;bx<=chipWidth;bx++){
13543 for(int by=1;by<=chipHeight;by++){
13544 if(waypR[bx][by] != 999 && waypR[bx][by] > 0){
13546 if(waypR[chosen->x][chosen->y] > 0){
13548 if(Unum < Cnum) goto omfgUnitOver5;
13562 if(UP->x == chosen->x && UP->y == chosen->y){
13575 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13577 while(UP->next) UP = UP->next;
13582 UP->next = calloc(1, sizeof(UNITPOINT));
13596 // NSLog(@"%d", waypSCSunitCnt);
13598 chosen = chosen->next;
13604 }else if(MS0->S4.wayp->type == 2){
13606 waypSCSunitCnt = 0;
13607 static bool okflag = true;
13609 if((MS0->S4.wayp->x <= chosen->x) && (MS0->S4.wayp->x2 >= chosen->x) &&
13610 (MS0->S4.wayp->y <= chosen->y) && (MS0->S4.wayp->y2 >= chosen->y)){
13617 if(Unum < Cnum) goto omfgUnitOver;
13631 if(UP->x == chosen->x && UP->y == chosen->y){
13644 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13646 while(UP->next) UP = UP->next;
13651 UP->next = calloc(1, sizeof(UNITPOINT));
13662 chosen = chosen->next;
13667 MS0->S4.wayp = MS0->S4.wayp->next;
13668 }MS0->S4.wayp = wpt;
13669 // NSLog(@"%d", waypSCSunitCnt);
13671 if(waypSCScnt >= waypCnt)
13683 if(MS0->S4.team == 0){
13684 if(!MS0->S4.placeFlag){
13687 if(U->team == 0 && !U->dead)
13692 if(MS0->S4.unitType == 0){
13693 if(MS0->S4.placeFlag) team0num = MS0->S4.unitNum;
13695 if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == waypSCSunitCnt)){
13700 }else if(MS0->S4.unitType == 1){
13701 if(MS0->S4.placeFlag) team0num = 65000;
13703 if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= waypSCSunitCnt)){
13708 }else if(MS0->S4.unitType == 2){
13709 if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= waypSCSunitCnt)){
13717 }else if(MS0->S4.team == 1){
13718 if(!MS0->S4.placeFlag){
13721 if(U->team == 1 && !U->dead)
13726 if(MS0->S4.unitType == 0){
13727 if(MS0->S4.placeFlag) team1num = MS0->S4.unitNum;
13729 if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum = waypSCSunitCnt)){
13734 }else if(MS0->S4.unitType == 1){
13735 if(MS0->S4.placeFlag) team1num = 65000;
13737 if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= waypSCSunitCnt)){
13742 }else if(MS0->S4.unitType == 2){
13743 if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= waypSCSunitCnt)){
13749 }else if(MS0->S4.team == 2){
13750 if(!MS0->S4.placeFlag){
13753 if(U->team == 2 && !U->dead)
13758 if(MS0->S4.unitType == 0){
13759 if(MS0->S4.placeFlag) team2num = MS0->S4.unitNum;
13761 if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == waypSCSunitCnt)){
13766 }else if(MS0->S4.unitType == 1){
13767 if(MS0->S4.placeFlag) team2num = 65000;
13769 if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= waypSCSunitCnt)){
13774 }else if(MS0->S4.unitType == 2){
13775 if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= waypSCSunitCnt)){
13786 if(MS0->S4.unitCMDflag){
13788 UNIT2 *sjt = MS0->S4.subj;
13789 UNIT *chosen = NULL;
13790 UNIT *chosenT = NULL;
13793 while(MS0->S4.subj){
13796 if(MS0->S4.subj->x == U->ix && MS0->S4.subj->y == U->iy && U->iz == 1){
13798 chosen->next = calloc(1, sizeof(UNIT));
13803 chosen = chosen->next;
13806 chosen = calloc(1, sizeof(UNIT));
13810 chosen->C.name = U->C.name;
13821 MS0->S4.subj = MS0->S4.subj->next;
13822 }MS0->S4.subj = sjt;
13825 int objeSCSunitCnt = 0;
13833 chosen = chosen->next;
13836 if(MS0->S4.unitTypeFlag && MS0->S4.objeFlag){
13838 UNIT2 *objeT = MS0->S4.obje;
13840 while (MS0->S4.obje) {
13845 static bool okflag = true;
13847 for (int i = 0;i < 1002;i++) {
13848 for (int k = 0;k < 1002;k++) {
13855 if(U2->ix == MS0->S4.obje->x && U2->iy == MS0->S4.obje->y){
13866 [self checkPlaceHani:MS0->S4.objeRange+1 tX:U2->y tY:U2->x aMap:objeR u:chosen scsCnt:&objeSCSunitCnt];
13870 for(int bx=1;bx<=chipWidth;bx++){
13871 for(int by=1;by<=chipHeight;by++){
13872 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
13874 if(objeR[chosen->x][chosen->y] > 0){
13876 if(Unum < Cnum) goto omfgUnitOver31;
13890 if(UP->x == chosen->x && UP->y == chosen->y){
13903 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13905 while(UP->next) UP = UP->next;
13910 UP->next = calloc(1, sizeof(UNITPOINT));
13924 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
13926 chosen = chosen->next;
13929 MS0->S4.obje = MS0->S4.obje->next;
13931 MS0->S4.obje = objeT;
13932 }else if(MS0->S4.objeFlag){
13934 UNIT2 *objeT = MS0->S4.obje;
13936 while (MS0->S4.obje) {
13941 static bool okflag = true;
13943 if(U->team != MS0->S4.team){
13947 for (int i = 0;i < 1002;i++) {
13948 for (int k = 0;k < 1002;k++) {
13955 if(U2->ix == MS0->S4.obje->x && U2->iy == MS0->S4.obje->y){
13966 [self checkPlaceHani:MS0->S4.objeRange+1 tX:U2->y tY:U2->x aMap:objeR u:U scsCnt:&objeSCSunitCnt];
13970 for(int bx=1;bx<=chipWidth;bx++){
13971 for(int by=1;by<=chipHeight;by++){
13972 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
13974 if(objeR[chosen->x][chosen->y] > 0){
13976 if(Unum < Cnum) goto omfgUnitOver32;
13990 if(UP->x == chosen->x && UP->y == chosen->y){
14003 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
14005 while(UP->next) UP = UP->next;
14010 UP->next = calloc(1, sizeof(UNITPOINT));
14024 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
14026 chosen = chosen->next;
14029 MS0->S4.obje = MS0->S4.obje->next;
14031 MS0->S4.obje = objeT;
14035 if(MS0->S4.team == 0){
14037 if(!MS0->S4.subj && !MS0->S4.obje && !MS0->S4.build){
14039 if(MS0->S4.unitCMD == 0){
14040 if(pushStanbyFlag){
14045 }else if(MS0->S4.unitCMD == 1){
14047 battleSetUpIgnore = true;
14051 }else if(MS0->S4.unitCMD == 2){
14056 }else if(!MS0->S4.subj && !MS0->S4.obje && MS0->S4.build){
14060 BUILD2 *bldt = MS0->S4.build;
14062 while(MS0->S4.build){
14063 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14065 if(MS0->S4.unitCMD == 0){
14066 if(pushStanbyFlag){
14071 }else if(MS0->S4.unitCMD == 1){
14073 battleSetUpIgnore = true;
14079 }else if(MS0->S4.unitCMD == 2){
14086 MS0->S4.build = MS0->S4.build->next;
14087 }MS0->S4.build = bldt;
14090 }else if(MS0->S4.subj && !MS0->S4.obje){
14093 UNIT2 *sbjt = MS0->S4.subj;
14095 while(MS0->S4.subj){
14096 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1){
14098 if(MS0->S4.unitCMD == 0){
14099 if(pushStanbyFlag){
14104 }else if(MS0->S4.unitCMD == 1){
14106 battleSetUpIgnore = true;
14112 }else if(MS0->S4.unitCMD == 2){
14120 MS0->S4.subj = MS0->S4.subj->next;
14121 }MS0->S4.subj = sbjt;
14125 else if(MS0->S4.subj && MS0->S4.obje){
14127 UNIT2 *sbjt = MS0->S4.subj;
14128 UNIT2 *objt = MS0->S4.obje;
14130 while(MS0->S4.subj){
14131 while(MS0->S4.obje){
14132 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14133 Utarget->ix == MS0->S4.obje->x && Utarget->iy == MS0->S4.obje->y && Utarget->iz == 1){
14135 if(MS0->S4.unitCMD == 0){
14137 if(MS0->S4.unitType == 0){
14138 if(objeSCSunitCnt == MS0->S4.unitNum){
14140 if(pushStanbyFlag){
14147 }else if(MS0->S4.unitType == 1){
14148 if(objeSCSunitCnt >= MS0->S4.unitNum){
14150 if(pushStanbyFlag){
14157 }else if(MS0->S4.unitType == 2){
14158 if(objeSCSunitCnt <= MS0->S4.unitNum){
14160 if(pushStanbyFlag){
14168 }else if(MS0->S4.unitCMD == 1){
14170 if(MS0->S4.unitType == 0){
14171 if(objeSCSunitCnt == MS0->S4.unitNum){
14174 battleSetUpIgnore = true;
14180 }else if(MS0->S4.unitType == 1){
14181 if(objeSCSunitCnt >= MS0->S4.unitNum){
14184 battleSetUpIgnore = true;
14190 }else if(MS0->S4.unitType == 2){
14191 if(objeSCSunitCnt <= MS0->S4.unitNum){
14194 battleSetUpIgnore = true;
14201 }else if(MS0->S4.unitCMD == 2 && objeSCSunitCnt > 0){
14213 MS0->S4.obje = MS0->S4.obje->next;
14214 }MS0->S4.obje = objt;
14215 MS0->S4.subj = MS0->S4.subj->next;
14216 }MS0->S4.subj = sbjt;
14218 }if(MS0->S4.subj && MS0->S4.build){
14221 UNIT2 *sbjt = MS0->S4.subj;
14222 BUILD2 *bldt = MS0->S4.build;
14224 while(MS0->S4.subj){
14225 while(MS0->S4.build){
14226 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14227 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
14228 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14230 if(MS0->S4.unitCMD == 0){
14231 if(pushStanbyFlag){
14236 }else if(MS0->S4.unitCMD == 1){
14238 battleSetUpIgnore = true;
14244 }else if(MS0->S4.unitCMD == 2){
14253 MS0->S4.build = MS0->S4.build->next;
14254 }MS0->S4.build = bldt;
14256 MS0->S4.subj = MS0->S4.subj->next;
14258 MS0->S4.subj = sbjt;
14261 }else if(MS0->S4.team == 1){
14262 if(!MS0->S4.subj && !MS0->S4.obje && !MS0->S4.build){
14264 if(MS0->S4.unitCMD == 0){
14265 if(pushStanbyFlag){
14270 }else if(MS0->S4.unitCMD == 1){
14272 battleSetUpIgnore = true;
14276 }else if(MS0->S4.unitCMD == 2){
14281 }else if(!MS0->S4.subj && !MS0->S4.obje && MS0->S4.build){
14285 BUILD2 *bldt = MS0->S4.build;
14286 while(MS0->S4.build){
14287 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14289 if(MS0->S4.unitCMD == 0){
14290 if(pushStanbyFlag){
14295 }else if(MS0->S4.unitCMD == 1){
14297 battleSetUpIgnore = true;
14303 }else if(MS0->S4.unitCMD == 2){
14310 MS0->S4.build = MS0->S4.build->next;
14311 }MS0->S4.build = bldt;
14314 }else if(MS0->S4.subj && !MS0->S4.obje){
14318 UNIT2 *sbjt = MS0->S4.subj;
14320 while(MS0->S4.subj){
14321 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1){
14323 if(MS0->S4.unitCMD == 0){
14324 if(pushStanbyFlag){
14329 }else if(MS0->S4.unitCMD == 1){
14331 battleSetUpIgnore = true;
14337 }else if(MS0->S4.unitCMD == 2){
14345 MS0->S4.subj = MS0->S4.subj->next;
14346 }MS0->S4.subj = sbjt;
14348 }else if(MS0->S4.subj && MS0->S4.obje){
14350 UNIT2 *sbjt = MS0->S4.subj;
14351 UNIT2 *objt = MS0->S4.obje;
14353 while(MS0->S4.subj){
14354 while(MS0->S4.obje){
14355 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14356 Utarget->ix == MS0->S4.obje->x && Utarget->iy == MS0->S4.obje->y && Utarget->iz == 1){
14358 if(MS0->S4.unitCMD == 0){
14360 if(MS0->S4.unitType == 0){
14361 if(objeSCSunitCnt == MS0->S4.unitNum){
14363 if(pushStanbyFlag){
14370 }else if(MS0->S4.unitType == 1){
14371 if(objeSCSunitCnt >= MS0->S4.unitNum){
14373 if(pushStanbyFlag){
14380 }else if(MS0->S4.unitType == 2){
14381 if(objeSCSunitCnt <= MS0->S4.unitNum){
14383 if(pushStanbyFlag){
14391 }else if(MS0->S4.unitCMD == 1){
14393 if(MS0->S4.unitType == 0){
14394 if(objeSCSunitCnt == MS0->S4.unitNum){
14397 battleSetUpIgnore = true;
14403 }else if(MS0->S4.unitType == 1){
14404 if(objeSCSunitCnt >= MS0->S4.unitNum){
14407 battleSetUpIgnore = true;
14413 }else if(MS0->S4.unitType == 2){
14414 if(objeSCSunitCnt <= MS0->S4.unitNum){
14417 battleSetUpIgnore = true;
14424 }else if(MS0->S4.unitCMD == 2 && objeSCSunitCnt > 0){
14437 MS0->S4.obje = MS0->S4.obje->next;
14438 }MS0->S4.obje = objt;
14439 MS0->S4.subj = MS0->S4.subj->next;
14440 }MS0->S4.subj = sbjt;
14442 }if(MS0->S4.subj && MS0->S4.build){
14444 UNIT2 *sbjt = MS0->S4.subj;
14445 BUILD2 *bldt = MS0->S4.build;
14446 while(MS0->S4.subj){
14447 while(MS0->S4.build){
14448 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14449 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
14450 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14452 if(MS0->S4.unitCMD == 0){
14453 if(pushStanbyFlag){
14458 }else if(MS0->S4.unitCMD == 1){
14460 battleSetUpIgnore = true;
14466 }else if(MS0->S4.unitCMD == 2){
14475 MS0->S4.build = MS0->S4.build->next;
14476 }MS0->S4.build = bldt;
14477 MS0->S4.subj = MS0->S4.subj->next;
14478 }MS0->S4.subj = sbjt;
14480 }else if(MS0->S4.team == 2){
14481 if(!MS0->S4.subj && !MS0->S4.obje && !MS0->S4.build){
14483 if(MS0->S4.unitCMD == 0){
14484 if(pushStanbyFlag){
14489 }else if(MS0->S4.unitCMD == 1){
14491 battleSetUpIgnore = true;
14495 }else if(MS0->S4.unitCMD == 2){
14500 }else if(!MS0->S4.subj && !MS0->S4.obje && MS0->S4.build){
14504 BUILD2 *bldt = MS0->S4.build;
14505 while(MS0->S4.build){
14506 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14508 if(MS0->S4.unitCMD == 0){
14509 if(pushStanbyFlag){
14514 }else if(MS0->S4.unitCMD == 1){
14516 battleSetUpIgnore = true;
14522 }else if(MS0->S4.unitCMD == 2){
14529 MS0->S4.build = MS0->S4.build->next;
14530 }MS0->S4.build = bldt;
14533 }else if(MS0->S4.subj && !MS0->S4.obje){
14535 UNIT2 *sbjt = MS0->S4.subj;
14537 while(MS0->S4.subj){
14538 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1){
14540 if(MS0->S4.unitCMD == 0){
14541 if(pushStanbyFlag){
14546 }else if(MS0->S4.unitCMD == 1){
14548 battleSetUpIgnore = true;
14554 }else if(MS0->S4.unitCMD == 2){
14561 MS0->S4.subj = MS0->S4.subj->next;
14562 }MS0->S4.subj = sbjt;
14564 }else if(MS0->S4.subj && MS0->S4.obje){
14566 UNIT2 *sbjt = MS0->S4.subj;
14567 UNIT2 *objt = MS0->S4.obje;
14569 while(MS0->S4.subj){
14570 while(MS0->S4.obje){
14571 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14572 Utarget->ix == MS0->S4.obje->x && Utarget->iy == MS0->S4.obje->y && Utarget->iz == 1){
14574 if(MS0->S4.unitCMD == 0){
14576 if(MS0->S4.unitType == 0){
14577 if(objeSCSunitCnt == MS0->S4.unitNum){
14579 if(pushStanbyFlag){
14586 }else if(MS0->S4.unitType == 1){
14587 if(objeSCSunitCnt >= MS0->S4.unitNum){
14589 if(pushStanbyFlag){
14596 }else if(MS0->S4.unitType == 2){
14597 if(objeSCSunitCnt <= MS0->S4.unitNum){
14599 if(pushStanbyFlag){
14607 }else if(MS0->S4.unitCMD == 1){
14609 if(MS0->S4.unitType == 0){
14610 if(objeSCSunitCnt == MS0->S4.unitNum){
14613 battleSetUpIgnore = true;
14619 }else if(MS0->S4.unitType == 1){
14620 if(objeSCSunitCnt >= MS0->S4.unitNum){
14623 battleSetUpIgnore = true;
14629 }else if(MS0->S4.unitType == 2){
14630 if(objeSCSunitCnt <= MS0->S4.unitNum){
14633 battleSetUpIgnore = true;
14640 }else if(MS0->S4.unitCMD == 2 && objeSCSunitCnt > 0){
14648 MS0->S4.obje = MS0->S4.obje->next;
14649 }MS0->S4.obje = objt;
14650 MS0->S4.subj = MS0->S4.subj->next;
14651 }MS0->S4.subj = sbjt;
14652 }if(MS0->S4.subj && MS0->S4.build){
14654 UNIT2 *sbjt = MS0->S4.subj;
14655 BUILD2 *bldt = MS0->S4.build;
14656 while(MS0->S4.subj){
14657 while(MS0->S4.build){
14658 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14659 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
14660 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14662 if(MS0->S4.unitCMD == 0){
14663 if(pushStanbyFlag){
14668 }else if(MS0->S4.unitCMD == 1){
14670 battleSetUpIgnore = true;
14676 }else if(MS0->S4.unitCMD == 2){
14685 MS0->S4.build = MS0->S4.build->next;
14686 }MS0->S4.build = bldt;
14687 MS0->S4.subj = MS0->S4.subj->next;
14688 }MS0->S4.subj = sbjt;
14726 branchEndFlag = true;
14727 MS0->succeessfulFlag = false;
14729 branchSuceedFlag = true;
14730 MS0->succeessfulFlag = true;
14732 MS0->succeessfulFlag = false;
14737 if(!branchSuceedFlag){
14740 MS0->endFlag = false;
14745 MS0->endFlag = true;
14748 if([CRMS0->S4.FAILrabel isEqualToString:MS0->label] && 0){
14750 MS0->succeessfulFlag = false;
14751 MS0->endFlag = false;
14757 if([CRMS0->S4.FAILrabel isEqualToString:MS0->next->label]){
14759 if(MS0->type == 6 && MS0->endFlag){
14762 MS0->succeessfulFlag = true;
14764 MS0->endFlag = true;
14768 if(MS0->type == 6 && MS0->endFlag){
14771 MS0->succeessfulFlag = true;
14773 MS0->endFlag = true;
14780 //MS0->endFlag = true;
14784 }else if(branchSuceedFlag){
14787 MS0->endFlag = false;
14792 MS0->endFlag = true;
14796 if([CRMS0->S4.COMPrabel isEqualToString:MS0->label] && 0){
14797 MS0->succeessfulFlag = false;
14798 MS0->endFlag = false;
14804 if([CRMS0->S4.COMPrabel isEqualToString:MS0->next->label]){
14806 if(MS0->type == 6 && MS0->endFlag){
14809 MS0->succeessfulFlag = true;
14811 MS0->endFlag = true;
14816 if(MS0->type == 6 && MS0->endFlag){
14819 MS0->succeessfulFlag = true;
14821 MS0->endFlag = true;
14828 //MS0->endFlag = true;
14834 //NSLog(@"%g", eventTime);
14835 //NSLog(@"%d", MSDPtop->succeessfulFlag);
14836 //MS0->endFlag = true;
14841 -(void)checkPlaceHani:(int)cnsPow tX:(int)startX tY:(int)startY aMap:(int[][1002])aMap u:(UNIT*)u scsCnt:(int*)scsCnt{
14843 if(cnsPow < 0) return;
14847 if(aMap[startY][startX] <= cnsPow)
14848 aMap[startY][startX] = cnsPow;
14850 if(startY < 0) startY = 0;
14851 if(startX < 0) startX = 0;
14852 if(cnsPow < 0) cnsPow = 0;
14856 if(aMap[startY-1][startX] >= 0 && cnsPow > 0)
14857 [self checkPlaceHani:i0 tX:startX tY:startY-1 aMap:aMap u:u scsCnt:j0];
14860 if(aMap[startY+1][startX] >= 0 && cnsPow > 0)
14861 [self checkPlaceHani:i0 tX:startX tY:startY+1 aMap:aMap u:u scsCnt:j0];
14864 if(aMap[startY][startX-1] >= 0 && cnsPow > 0)
14865 [self checkPlaceHani:i0 tX:startX-1 tY:startY aMap:aMap u:u scsCnt:j0];
14868 if(aMap[startY][startX+1] >= 0 && cnsPow > 0)
14869 [self checkPlaceHani:i0 tX:startX+1 tY:startY aMap:aMap u:u scsCnt:j0];
14874 -(MAPSCRIPT0*)setLabelJump:(MAPSCRIPT0*)MS0{
14876 MAPSCRIPT0 *CRMS0 = MS0;
14879 MS0->endFlag = false;
14883 MS0->endFlag = true;
14884 MS0->succeessfulFlag = true;
14888 if([CRMS0->labelJump isEqualToString:MS0->label]){
14889 MS0->succeessfulFlag = false;
14890 MS0->endFlag = false;
14896 if([CRMS0->labelJump isEqualToString:MS0->next->label]){
14897 if(MS0->type == 6 && MS0->endFlag){
14900 MS0->succeessfulFlag = true;
14902 MS0->endFlag = true;
14906 if(MS0->type == 6 && MS0->endFlag){
14909 MS0->succeessfulFlag = true;
14911 MS0->endFlag = true;
14923 -(MAPSCRIPT0*)setDefault:(MAPSCRIPT0*)MS0{
14925 MS0->succeessfulFlag = true;
14926 MS0->endFlag = true;
14930 -(MAPSCRIPT0*)setResource:(MAPSCRIPT0*)MS0{
14932 if(MS0->S6.team == 0){
14934 if(MS0->S6.RCsupply){
14935 if(MS0->S6.RCsupplyS){
14936 if(MS0->S6.RCsupplyAdd)
14937 P[0].resource += MS0->S6.RCsupplyValue;
14939 P[0].resource -= MS0->S6.RCsupplyValue;
14941 if(MS0->S6.RCsupplyAdd)
14942 P[0].resource += [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
14944 P[0].resource -= [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
14947 if(MS0->S6.RCfood){
14948 if(MS0->S6.RCfoodS){
14949 if(MS0->S6.RCfoodAdd)
14950 P[0].food += MS0->S6.RCfoodValue;
14952 P[0].food -= MS0->S6.RCfoodValue;
14954 if(MS0->S6.RCfoodAdd)
14955 P[0].food += [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
14957 P[0].food -= [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
14960 if(MS0->S6.RCmoney){
14961 if(MS0->S6.RCmoneyS){
14962 if(MS0->S6.RCmoneyAdd)
14963 P[0].money += MS0->S6.RCmoneyValue;
14965 P[0].money -= MS0->S6.RCmoneyValue;
14967 if(MS0->S6.RCmoneyAdd)
14968 P[0].money += [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
14970 P[0].money -= [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
14974 }else if(MS0->S6.team == 1){
14975 if(MS0->S6.RCsupply){
14976 if(MS0->S6.RCsupplyS){
14977 if(MS0->S6.RCsupplyAdd)
14978 P[1].resource += MS0->S6.RCsupplyValue;
14980 P[1].resource -= MS0->S6.RCsupplyValue;
14982 if(MS0->S6.RCsupplyAdd)
14983 P[1].resource += [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
14985 P[1].resource -= [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
14988 if(MS0->S6.RCfood){
14989 if(MS0->S6.RCfoodS){
14990 if(MS0->S6.RCfoodAdd)
14991 P[1].food += MS0->S6.RCfoodValue;
14993 P[1].food -= MS0->S6.RCfoodValue;
14995 if(MS0->S6.RCfoodAdd)
14996 P[1].food += [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
14998 P[1].food -= [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
15001 if(MS0->S6.RCmoney){
15002 if(MS0->S6.RCmoneyS){
15003 if(MS0->S6.RCmoneyAdd)
15004 P[1].money += MS0->S6.RCmoneyValue;
15006 P[1].money -= MS0->S6.RCmoneyValue;
15008 if(MS0->S6.RCmoneyAdd)
15009 P[1].money += [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
15011 P[1].money -= [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
15014 }else if(MS0->S6.team == 2){
15015 if(MS0->S6.RCsupply){
15016 if(MS0->S6.RCsupplyS){
15017 if(MS0->S6.RCsupplyAdd)
15018 P[2].resource += MS0->S6.RCsupplyValue;
15020 P[2].resource -= MS0->S6.RCsupplyValue;
15022 if(MS0->S6.RCsupplyAdd)
15023 P[2].resource += [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
15025 P[2].resource -= [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
15029 if(MS0->S6.RCfood){
15030 if(MS0->S6.RCfoodS){
15031 if(MS0->S6.RCfoodAdd)
15032 P[2].food += MS0->S6.RCfoodValue;
15034 P[2].food -= MS0->S6.RCfoodValue;
15036 if(MS0->S6.RCfoodAdd)
15037 P[2].food += [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
15039 P[2].food -= [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
15042 if(MS0->S6.RCmoney){
15043 if(MS0->S6.RCmoneyS){
15044 if(MS0->S6.RCmoneyAdd)
15045 P[2].money += MS0->S6.RCmoneyValue;
15047 P[2].money -= MS0->S6.RCmoneyValue;
15049 if(MS0->S6.RCmoneyAdd)
15050 P[2].money += [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
15052 P[2].money -= [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
15057 if(P[0].resource < 0) P[0].resource = 0;
15058 if(P[1].resource < 0) P[1].resource = 0;
15059 if(P[2].resource < 0) P[2].resource = 0;
15061 if(P[0].food < 0) P[0].food = 0;
15062 if(P[1].food < 0) P[1].food = 0;
15063 if(P[2].food < 0) P[2].food = 0;
15065 if(P[0].money < 0) P[0].money = 0;
15066 if(P[1].money < 0) P[1].money = 0;
15067 if(P[2].money < 0) P[2].money = 0;
15069 MS0->succeessfulFlag = true;
15070 MS0->endFlag = true;
15074 -(MAPSCRIPT0*)setLabel:(MAPSCRIPT0*)MS0{
15076 //NSLog(@"%d", MSDP0top->succeessfulFlag);
15077 MS0->succeessfulFlag = true;
15078 MS0->endFlag = true;
15082 -(MAPSCRIPT0*)setComment:(MAPSCRIPT0*)MS0{
15084 MS0->succeessfulFlag = true;
15085 MS0->endFlag = true;
15090 -(MAPSCRIPT0*)setSelection:(MAPSCRIPT0*)MS0{
15092 static bool initFlag = false;
15097 MAPSCRIPT2 *MS2top = MS0->S2;
15099 slctPoint.x = [mapWindow frame].origin.x + 100;
15100 slctPoint.y = [mapWindow frame].origin.y + 300;
15102 [slctBtn1 setHidden:YES];
15103 [slctBtn2 setHidden:YES];
15104 [slctBtn3 setHidden:YES];
15105 [slctBtn4 setHidden:YES];
15106 [slctBtn5 setHidden:YES];
15107 [slctBtn6 setHidden:YES];
15108 [slctBtn7 setHidden:YES];
15109 [slctBtn8 setHidden:YES];
15110 [slctBtn9 setHidden:YES];
15112 for(int i = 1;MS0->S2;i++){
15115 [slctBtn1 setTitle:MS0->S2->selection];
15116 [slctBtn1 setHidden:NO];
15117 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 60) display:YES];
15120 [slctBtn2 setTitle:MS0->S2->selection];
15121 [slctBtn2 setHidden:NO];
15122 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 90) display:YES];
15125 [slctBtn3 setTitle:MS0->S2->selection];
15126 [slctBtn3 setHidden:NO];
15127 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 120) display:YES];
15131 [slctBtn4 setTitle:MS0->S2->selection];
15132 [slctBtn4 setHidden:NO];
15133 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 150) display:YES];
15136 [slctBtn5 setTitle:MS0->S2->selection];
15137 [slctBtn5 setHidden:NO];
15138 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 180) display:YES];
15141 [slctBtn6 setTitle:MS0->S2->selection];
15142 [slctBtn6 setHidden:NO];
15143 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 210) display:YES];
15146 [slctBtn7 setTitle:MS0->S2->selection];
15147 [slctBtn7 setHidden:NO];
15148 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 240) display:YES];
15151 [slctBtn8 setTitle:MS0->S2->selection];
15152 [slctBtn8 setHidden:NO];
15153 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 270) display:YES];
15156 [slctBtn9 setTitle:MS0->S2->selection];
15157 [slctBtn9 setHidden:NO];
15158 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 300) display:YES];
15163 MS0->S2 = MS0->S2->next;
15169 [selectionWindow makeKeyAndOrderFront:nil];
15173 if(slctedBtnNum > 0){
15174 MAPSCRIPT0 *CRMS0 = MS0;
15178 MS0->endFlag = false;
15182 MAPSCRIPT2 *MS2top = MS0->S2;
15185 for(int i = 1;i < slctedBtnNum;i++){
15186 MS0->S2 = MS0->S2->next;
15193 if([CRMS2->labelJump isEqualToString:MS0->label]){
15194 MS0->endFlag = false;
15200 if([CRMS2->labelJump isEqualToString:MS0->next->label]){
15201 if(MS0->type == 6 && MS0->endFlag){
15204 MS0->succeessfulFlag = true;
15206 MS0->endFlag = true;
15210 if(MS0->type == 6 && MS0->endFlag){
15213 MS0->succeessfulFlag = true;
15215 MS0->endFlag = true;
15224 MS0->endFlag = true;
15225 MS0->succeessfulFlag = true;
15233 -(MAPSCRIPT0*)setAppearance:(MAPSCRIPT0*)MS0{
15243 if(unitNum[x][y] == -1){
15249 unitTeam[x][y] = MS0->S3->team;
15250 unitNum[x][y] = u.chipNumb;
15251 loadNum[x][y] = u.chipNumb;
15252 [self addAppearanceStatus:u x:x y:y];
15260 int *p = calloc(1, sizeof(int));
15261 int *o = calloc(1, sizeof(int));
15262 appearanceSAIKIflag = false;
15265 for (int i = 0;i < 1002;i++) {
15266 for (int k = 0;k < 1002;k++) {
15271 [self checkAppearanceRange:5 tX:y tY:x aMap:apprR];
15274 for (int i = 0;i < 1002;i++) {
15275 for (int k = 0;k < 1002;k++) {
15276 if(apprR[i][k] > postInt && unitNum[i][k] == -1){
15277 postInt = apprR[i][k];
15284 if(*p > 0 && *o >0){
15287 unitTeam[x][y] = MS0->S3->team;
15288 unitNum[x][y] = u.chipNumb;
15289 loadNum[x][y] = u.chipNumb;
15290 [self addAppearanceStatus:u x:x y:y];
15292 MS0->succeessfulFlag = false;
15293 MS0->endFlag = true;
15299 MS0->S3 = MS0->S3->next;
15301 unitColorInitFlag = true;
15303 MS0->succeessfulFlag = true;
15304 MS0->endFlag = true;
15308 -(MAPSCRIPT0*)setDissappearance:(MAPSCRIPT0*)MS0{
15321 if(MS0->S5->unitNum >= 0){
15322 unitNum[x][y] = -1;
15323 unitTeam[x][y] = -1;
15324 unitNum[x][y] = -1;
15325 loadNum[x][y] = -1;
15329 if(U->ix == x && U->iy == y)
15339 MS0->succeessfulFlag = false;
15340 MS0->endFlag = true;
15346 MS0->S5 = MS0->S5->next;
15348 unitColorInitFlag = true;
15350 MS0->succeessfulFlag = true;
15351 MS0->endFlag = true;
15356 -(void)checkAppearanceRange:(int)cnsPow tX:(int)startX tY:(int)startY aMap:(int[][1002])aMap{
15358 if(cnsPow < 0) return;
15361 if(aMap[startY][startX] <= cnsPow)
15362 aMap[startY][startX] = cnsPow;
15364 if(startY < 0) startY = 0;
15365 if(startX < 0) startX = 0;
15366 if(cnsPow < 0) cnsPow = 0;
15370 if(aMap[startY-1][startX] >= 0 && cnsPow > 0)
15371 [self checkAppearanceRange:i0 tX:startX tY:startY-1 aMap:aMap];
15374 if(aMap[startY+1][startX] >= 0 && cnsPow > 0)
15375 [self checkAppearanceRange:i0 tX:startX tY:startY+1 aMap:aMap];
15378 if(aMap[startY][startX-1] >= 0 && cnsPow > 0)
15379 [self checkAppearanceRange:i0 tX:startX-1 tY:startY aMap:aMap];
15382 if(aMap[startY][startX+1] >= 0 && cnsPow > 0)
15383 [self checkAppearanceRange:i0 tX:startX+1 tY:startY aMap:aMap];
15387 -(void)addAppearanceStatus:(UNITCHIP)u x:(int)x y:(int)y{
15392 while (U->next) {omgCnt++;
15395 U->next = calloc(1, sizeof(UNIT));
15398 if(omgCnt == 0) U = UTop;
15399 U->number = registerNum;
15400 U->chipNumber = -1;
15401 U->chipNumberL = -1;
15402 U->C.chipNumb = -1;
15403 U->CL.chipNumb = -1;
15409 if(unitTeam[x][y] == 0 || unitTeam[x][y] == 1){
15411 if(unitTeam[x][y] == 1){
15412 U->joinArmyFromNext = true;
15413 U->persuasion = true;
15415 if(MF[MFselectedRow+1].MS.playerSet1 == 2)
15419 if(unitTeam[x][y] == 2 || unitTeam[x][y] == 3){
15421 if(unitTeam[x][y] == 3){
15422 U->joinArmyFromNext = true;
15423 U->persuasion = true;
15425 if(MF[MFselectedRow+1].MS.playerSet2 == 2)
15429 if(unitTeam[x][y] == 4 || unitTeam[x][y] == 5){
15431 if(unitTeam[x][y] == 5){
15432 U->joinArmyFromNext = true;
15433 U->persuasion = true;
15437 if(unitTeam[x][y] == -1){
15439 if(unitTeam[x][y] == 0){
15440 U->joinArmyFromNext = false;
15441 U->persuasion = true;
15445 unitNum[x][y] = u.chipNumb;
15446 [self SetUnitStatus:unitNum[x][y]];
15448 for(int i = 0;i < UCN;i++){
15449 if([U->C.nameID isEqualToString:UC[i].nameID])
15452 for(int i = 0;i < LCN;i++){
15453 if([U->CL.nameID isEqualToString:LC[i].nameID])
15454 U->chipNumberL = i;
15456 for(int i = 0;i < UCN;i++){
15457 if([U->C.nameID isEqualToString:UC[i].nameID])
15460 for(int i = 0;i < LCN;i++){
15461 if([U->CL.nameID isEqualToString:LC[i].nameID])
15462 U->CL.chipNumb = i;
15471 -(MAPSCRIPT0*)setWait:(MAPSCRIPT0*)MS0{
15473 static bool waitin = false;
15477 waitinTime = MS0->wait;
15482 waitSwtichFlag = true;
15484 if(waitAllOverFlag){
15485 MS0->succeessfulFlag = true;
15486 MS0->endFlag = true;
15487 waitAllOverFlag = false;
15488 waitSwtichFlag = false;
15490 waitx10flag = false;
15497 -(MAPSCRIPT0*)setBGM:(MAPSCRIPT0*)MS0{
15502 BGMsub = [MS0->BGM.snd retain];
15504 [BGMsub setLoops:NO];
15507 MS0->succeessfulFlag = true;
15508 MS0->endFlag = true;
15513 -(MAPSCRIPT0*)setSE:(MAPSCRIPT0*)MS0{
15517 SEsub = [MS0->SE.snd retain];
15521 MS0->succeessfulFlag = true;
15522 MS0->endFlag = true;
15527 -(MAPSCRIPT0*)setTitleBack:(MAPSCRIPT0*)MS0{
15529 backTitleFlag = true;
15530 battleBegin = false;
15532 MS0->succeessfulFlag = true;
15533 MS0->endFlag = true;
15538 -(MAPSCRIPT0*)setStageClear:(MAPSCRIPT0*)MS0{
15540 stageClearFlag = true;
15542 if(MS0->sc.edcdFlag)
15543 stageClearFlag2 = true;
15544 battleBegin = false;
15546 MS0->succeessfulFlag = true;
15547 MS0->endFlag = true;
15552 -(MAPSCRIPT0*)setGameOver:(MAPSCRIPT0*)MS0{
15554 gaov.img = MS0->gaov.img;
15556 gameOverFlag = true;
15557 battleBegin = false;
15559 MS0->succeessfulFlag = true;
15560 MS0->endFlag = true;
15565 -(IBAction)gameOverSubmit:(id)sender{
15573 [GameOverWindow close];
15574 [titleWindow makeKeyAndOrderFront:nil];
15578 -(IBAction)battleReadyUpStartBtn:(id)sender{
15581 P[0].resource = [battleReadyUpSupply1 intValue];
15582 P[0].food = [battleReadyUpFood1 intValue];
15583 P[0].money = [battleReadyUpMoney1 intValue];
15585 P[1].resource = [battleReadyUpSupply2 intValue];
15586 P[1].food = [battleReadyUpFood2 intValue];
15587 P[1].money = [battleReadyUpMoney2 intValue];
15589 setBattleModeFlag = false;
15594 -(IBAction)battleReadyUpState1:(id)sender{
15595 retardhelp1 = true;
15597 -(IBAction)battleReadyUpState2:(id)sender{
15598 retardhelp2 = true;
15607 -(IBAction)selectionBtn1:(id)sender{
15609 [selectionWindow close];
15611 -(IBAction)selectionBtn2:(id)sender{
15613 [selectionWindow close];
15615 -(IBAction)selectionBtn3:(id)sender{
15617 [selectionWindow close];
15619 -(IBAction)selectionBtn4:(id)sender{
15621 [selectionWindow close];
15623 -(IBAction)selectionBtn5:(id)sender{
15625 [selectionWindow close];
15627 -(IBAction)selectionBtn6:(id)sender{
15629 [selectionWindow close];
15631 -(IBAction)selectionBtn7:(id)sender{
15633 [selectionWindow close];
15635 -(IBAction)selectionBtn8:(id)sender{
15637 [selectionWindow close];
15639 -(IBAction)selectionBtn9:(id)sender{
15641 [selectionWindow close];
15648 NSString *directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
15649 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
15652 NSData *InitialData = [NSData dataWithContentsOfFile:@"data/Others/var.txt"];
15653 NSString *pathVar = @"data/Others/var.txt";
15654 NSString *fileData = @"";
15657 [[NSFileManager defaultManager] createFileAtPath:pathVar contents:nil attributes:nil];
15661 fileData = [NSString stringWithContentsOfFile:pathVar encoding:NSUTF8StringEncoding error:nil];
15662 NSArray *fileDataArray = [fileData componentsSeparatedByString:@"\n"];
15664 for(int i = 0;i < [fileDataArray count];i++){
15666 NSArray *item = [[fileDataArray objectAtIndex:i] componentsSeparatedByString:@","];
15668 Hensuu[i] = [[item objectAtIndex:1] retain];
15669 HensuuName[i] = [[item objectAtIndex:2] retain];
15677 -(void)displaySideMenu{
15679 [FSMenu setFrameOrigin:NSMakePoint([fsWindow frame].origin.x + [fsWindow frame].size.width/2 - FSMenu.frame.size.width/2,
15680 [fsWindow frame].origin.y + [fsWindow frame].size.height/2 - FSMenu.frame.size.height/2)];
15683 attackFlag = false;
15684 summonFlag = false;
15685 menuDisplayFlag = false;
15686 [FSMenu makeKeyAndOrderFront:nil];
15691 -(IBAction)FSVsave:(id)sender{
15693 [saveGamePanel setFrameOrigin:NSMakePoint([fsWindow frame].origin.x + [fsWindow frame].size.width/2 - saveGamePanel.frame.size.width/2,
15694 [fsWindow frame].origin.y + [fsWindow frame].size.height/2 - saveGamePanel.frame.size.height/2)];
15696 [self saveGameDataDatViewImage];
15698 [saveGameTF setStringValue:@""];
15700 [saveGamePanel makeKeyAndOrderFront:nil];
15704 -(IBAction)FSVtitle:(id)sender{
15706 stopByFSVmenuFlag = false;
15709 if(titleBGM) [titleBGM play];
15711 [titleWindow makeKeyAndOrderFront:nil];
15718 endGameCondition = false;
15719 initMapFlag = false;
15720 TeamCountFlag = false;
15721 initStatusFlag = false;
15722 battleBegin = false;
15725 cpuModeMOVEflag = false;
15726 cpuModeATTACKflag = false;
15728 redWinFlag = false;
15729 blueWinFlag = false;
15730 cpuAImodeflag = false;
15731 cpuTurnEndFlag = true;
15732 backTitleFlag = false;
15733 backTitleFlag2 = true;
15734 waitSwtichFlag = false;
15735 battleReadyUpFlag = false;
15736 setBattleModeFlag = false;
15737 mapChipDataLoadProc = 0;
15745 -(IBAction)FSVcancel:(id)sender{
15747 stopByFSVmenuFlag = false;
15754 -(void)displaySaveFileDialog{
15756 [saveDataList initFileDirectory];
15757 [self initSaveFileInputList];
15758 [saveFileDialog makeKeyAndOrderFront:nil];
15762 -(IBAction)saveFileInputSubmit:(id)sender{
15764 if([saveFileInputTF stringValue] == nil || [[saveFileInputTF stringValue] isEqualToString:@""]){
15768 saveFileNameSDL = [[saveFileInputTF stringValue] retain];
15769 SC[storyNumb].saveFileName = [saveFileNameSDL retain];
15770 [saveDataList saveSaveList];
15771 [levelList saveLevelList];
15773 [titleWindow makeKeyAndOrderFront:nil];
15774 [saveFileInputPanel close];
15776 -(IBAction)saveFileInputCancel:(id)sender{
15779 [titleWindow makeKeyAndOrderFront:nil];
15780 [saveFileInputPanel close];
15783 -(IBAction)saveFileDialogSubmit:(id)sender{
15785 saveFileFlag = true;
15786 [saveFileInputPanel makeKeyAndOrderFront:nil];
15788 [saveFileDialog close];
15791 -(IBAction)saveFileDialogCancel:(id)sender{
15793 saveFileNameSDL = [@"preset.txt" retain];
15794 SC[storyNumb].saveFileName = [saveFileNameSDL retain];
15795 [saveDataList saveSaveList];
15797 saveFileFlag = true;
15798 [titleWindow makeKeyAndOrderFront:nil];
15801 [saveFileDialog close];
15805 -(void)initSaveFileInputList{
15807 [self willChangeValueForKey:@"saveFileInputListMA"];
15808 [saveFileInputListMA removeAllObjects];
15809 [self didChangeValueForKey:@"saveFileInputListMA"];
15812 for(int i = 1;i <= saveNumb;i++){
15815 NSMutableDictionary* dict = [NSMutableDictionary new];
15816 [dict setValue:[NSString stringWithFormat:@"%@", SDL[i].name] forKey:@"name"];
15817 [self willChangeValueForKey:@"saveFileInputListMA"];
15818 [saveFileInputListMA addObject:dict];
15819 [self didChangeValueForKey:@"saveFileInputListMA"];
15824 -(void)initLoadFileOutputList{
15826 [self willChangeValueForKey:@"loadFileOutputListMA"];
15827 [loadFileOutputListMA removeAllObjects];
15828 [self didChangeValueForKey:@"loadFileOutputListMA"];
15831 for(int i = 1;i <= saveNumb;i++){
15834 if([SC[storyNumb].name isEqualToString:SDL[i].levelName]){
15835 NSMutableDictionary* dict = [NSMutableDictionary new];
15836 [dict setValue:[NSString stringWithFormat:@"%@", SDL[i].name] forKey:@"name"];
15837 [self willChangeValueForKey:@"loadFileOutputListMA"];
15838 [loadFileOutputListMA addObject:dict];
15839 [self didChangeValueForKey:@"loadFileOutputListMA"];
15844 [loadFileOutputListAC setSelectionIndex:9999];
15846 [loadFileOutputTF setStringValue:[NSString stringWithFormat:@""]];
15848 [loadFileOutputPanel makeKeyAndOrderFront:nil];
15852 -(IBAction)loadFileOutputSubmit:(id)sender{
15857 SC[storyNumb].saveFileName = [SDL[SDLrow+1].name retain];
15858 SC[storyNumb].CrntLevelName = [SDL[SDLrow+1].levelName retain];
15859 SC[storyNumb].scenarioNumbCrnt[scenarioNumb] = [NSString stringWithFormat:@"%d", SDL[SDLrow+1].scenarioNumbCrnt];
15860 SC[storyNumb].scenarioNumbNext[scenarioNumb] = [NSString stringWithFormat:@"%d", SDL[SDLrow+1].scenarioNumbNext];
15862 [levelList saveLevelList];
15863 [scenarioList initFileDirectory];
15864 [mapEditor initFileDirectoryOthers];
15865 [scenarioList setScenarioList:selectNumb];
15867 [loadFileOutputPanel close];
15870 -(void)initFileOutPutListSet{
15872 SC[storyNumb].saveFileName = NULL;
15874 [levelList saveLevelList];
15875 [scenarioList setScenarioList:selectNumb];
15878 -(IBAction)loadFileOutputCancel:(id)sender{
15880 [loadFileOutputPanel close];
15890 -(IBAction)saveGameSubmit:(id)sender{
15892 if([[saveGameTF stringValue] isEqualToString:@""])
15895 sdd.name = [[saveGameTF stringValue] retain];
15896 datFilePath = calloc(255, sizeof(char));
15897 strcpy(datFilePath, [sdd.name UTF8String]);
15899 [self saveGameDataDatViewImage];
15900 [self saveGameDataDat];
15901 [saveDataList initSaveList];
15903 [saveGamePanel close];
15907 -(void)saveGameDataDatViewImage{
15909 NSString *directoryPath;
15911 directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
15912 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
15914 [fieldView lockFocus];
15915 NSBitmapImageRep* rep = [fieldView bitmapImageRepForCachingDisplayInRect:fieldView.bounds];
15916 [fieldView cacheDisplayInRect:fieldView.bounds toBitmapImageRep:rep];
15917 [fieldView unlockFocus];
15919 NSMutableData* data = [rep representationUsingType:NSPNGFileType properties:nil];
15920 sdd.img = [[[NSImage alloc] initWithData:data] retain];
15922 [saveGameIV setImage:sdd.img];
15923 [saveGameIV setImageScaling:NSScaleToFit];
15926 NSString *path = @"SaveData/";
15928 NSArray *ary = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
15930 [SAV removeAllObjects];
15931 for(NSString *name in ary){
15933 NSArray *arr = [name componentsSeparatedByString:@".sav"];
15935 if([arr count] > 1){
15936 [SAV addObject:name];
15940 [self willChangeValueForKey:@"saveGameListMA"];
15941 [saveGameListMA removeAllObjects];
15942 [self didChangeValueForKey:@"saveGameListMA"];
15944 for(int i = 0;i < [SAV count];i++){
15946 NSMutableDictionary* dict = [NSMutableDictionary new];
15947 [dict setValue:[NSString stringWithFormat:@"%@", SAV[i]] forKey:@"name"];
15949 [self willChangeValueForKey:@"saveGameListMA"];
15950 [saveGameListMA addObject:dict];
15951 [self didChangeValueForKey:@"saveGameListMA"];
15955 [saveGameListAC setSelectionIndex:9999];
15959 -(void)loadGameDataDat{
15969 NSString *directoryPath;
15970 directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
15971 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
15974 NSString *path = @"SaveData/";
15975 path = [path stringByAppendingString:SAV[SDLrow]];
15977 NSData *data = [[NSData alloc] initWithContentsOfFile:path];
15979 MFselectedRow = sdd2[datRow].MFselectedRow;
15980 MF[MFselectedRow+1].fileName = sdd2[datRow].mapfileName;
15982 storyNumb = sdd2[datRow].storyNumb;
15983 scenarioNumb = sdd2[datRow].scenarioNumb;
15985 SC[storyNumb].name = sdd2[datRow].levelName;
15986 SC[storyNumb].nameMAP[scenarioNumb] = sdd2[datRow].scenarioName;
15988 posX = sdd2[datRow].posX;
15989 posX = sdd2[datRow].posY;
15991 chipHeight = sdd2[datRow].chipHeight;
15992 chipWidth = sdd2[datRow].chipWidth;
15993 eSlctX = sdd2[datRow].eSlctX;
15994 eSlctY = sdd2[datRow].eSlctY;
15996 registerNum = sdd2[datRow].registerNum;
15997 registerNumB = sdd2[datRow].registerNumB;
15999 esSceneProc = sdd2[datRow].esSceneProc;
16001 endGameCondition = sdd2[datRow].endGameCondition;
16002 initMapFlag = sdd2[datRow].initMapFlag;
16003 TeamCountFlag = sdd2[datRow].TeamCountFlag;
16004 initStatusFlag = sdd2[datRow].initStatusFlag;
16005 battleBegin = sdd2[datRow].battleBegin;
16006 startES = sdd2[datRow].startES;
16008 cpuAImodeflag = sdd2[datRow].cpuAImodeflag;
16009 cpuTurnEndFlag = sdd2[datRow].cpuTurnEndFlag;
16010 cpuModeMOVEflag = sdd2[datRow].cpuModeMOVEflag;
16011 cpuModeATTACKflag = sdd2[datRow].cpuModeATTACKflag;
16012 waitSwtichFlag = sdd2[datRow].waitSwtichFlag;
16013 battleReadyUpFlag = sdd2[datRow].battleReadyUpFlag;
16014 setBattleModeFlag = sdd2[datRow].setBattleModeFlag;
16016 wtRdy = sdd2[datRow].wtRdy;
16017 wtRdy2 = sdd2[datRow].wtRdy2;
16018 wtRdy3 = sdd2[datRow].wtRdy3;
16020 wtMovedFlag = sdd2[datRow].wtMovedFlag;
16021 wtAttackedFlag = sdd2[datRow].wtAttackedFlag;
16022 unitMoveEndFlag = sdd2[datRow].unitMoveEndFlag;
16023 battleSetUp = sdd2[datRow].battleSetUp;
16024 pushStanbyFlag = sdd2[datRow].pushStanbyFlag;
16025 battleEndFlag = sdd2[datRow].battleEndFlag;
16026 wtUnitNum = sdd2[datRow].wtUnitNum;
16027 messageDialog = sdd2[datRow].messageDialog;
16030 for(int i = 0;i < 1002;i++){
16031 for(int j = 0;j < 1002;j++){
16032 chipNum[i][j] = sdd2[datRow].chipNum[i][j];
16036 for(int i = 0;i < 1002;i++){
16037 for(int j = 0;j < 1002;j++){
16038 buildNum[i][j] = sdd2[datRow].buildNum[i][j];
16042 for(int i = 0;i < 1002;i++){
16043 for(int j = 0;j < 1002;j++){
16044 unitNum[i][j] = sdd2[datRow].unitNum[i][j];
16048 for(int i = 0;i < 1002;i++){
16049 for(int j = 0;j < 1002;j++){
16050 loadNum[i][j] = sdd2[datRow].loadNum[i][j];
16054 for(int i = 0;i < 1002;i++){
16055 for(int j = 0;j < 1002;j++){
16056 buildTeam[i][j] = sdd2[datRow].buildTeam[i][j];
16060 for(int i = 0;i < 1002;i++){
16061 for(int j = 0;j < 1002;j++){
16062 unitTeam[i][j] = sdd2[datRow].unitTeam[i][j];
16067 P[0] = sdd2[datRow].P[0];
16068 P[1] = sdd2[datRow].P[1];
16069 P[2] = sdd2[datRow].P[2];
16071 for(int i = 0;i < 9999;i++)
16072 Suicchi[i] = sdd2[datRow].Suicchi[i];
16074 sdd.HensuuNum = HensuuNum;
16075 for(int i = 0;i < 65000;i++)
16076 Hensuu[i] = [sdd2[datRow].Hensuu[i] retain];
16077 for(int i = 0;i < 65000;i++)
16078 HensuuName[i] = [sdd2[datRow].HensuuName[i] retain];
16080 MF[MFselectedRow+1].MS = sdd2[datRow].MS;
16081 MF[MFselectedRow+1].MS.D = sdd2[datRow].MS.D;
16088 Uselected = sdd.Uselected;
16089 unitBreak = sdd.unitBreak;
16090 Utarget = sdd.Utarget;
16094 //NSLog(@"%d", MF[MFselectedRow+1].MS.playerSet1);
16097 -(void)saveGameDataDat{
16101 sdd.name = [[saveGameTF stringValue] retain];
16103 sdd.MFselectedRow = MFselectedRow;
16104 sdd.storyNumb = storyNumb;
16105 sdd.scenarioNumb = scenarioNumb;
16107 sdd.mapfileName = [MF[MFselectedRow+1].fileName retain];
16108 sdd.levelName = [SC[storyNumb].name retain];
16109 sdd.scenarioName = [SC[storyNumb].nameMAP[scenarioNumb] retain];
16114 sdd.chipHeight = chipHeight;
16115 sdd.chipWidth = chipWidth;
16116 sdd.eSlctX = eSlctX;
16117 sdd.eSlctY = eSlctY;
16119 sdd.registerNum = registerNum;
16120 sdd.registerNumB = registerNumB;
16122 sdd.esSceneProc = esSceneProc;
16124 sdd.endGameCondition = endGameCondition;
16125 sdd.initMapFlag = initMapFlag;
16126 sdd.TeamCountFlag = TeamCountFlag;
16127 sdd.initStatusFlag = initStatusFlag;
16128 sdd.battleBegin = battleBegin;
16129 sdd.startES = startES;
16131 sdd.cpuModeMOVEflag = cpuModeMOVEflag;
16132 sdd.cpuModeATTACKflag = cpuModeATTACKflag;
16134 sdd.cpuAImodeflag = cpuAImodeflag;
16135 sdd.cpuTurnEndFlag = cpuTurnEndFlag;
16136 sdd.waitSwtichFlag = waitSwtichFlag;
16137 sdd.battleReadyUpFlag = battleReadyUpFlag;
16138 sdd.setBattleModeFlag = setBattleModeFlag;
16142 sdd.wtRdy2 = wtRdy2;
16143 sdd.wtRdy3 = wtRdy3;
16146 sdd.wtMovedFlag = wtMovedFlag;
16147 sdd.wtAttackedFlag = wtAttackedFlag;
16148 sdd.unitMoveEndFlag = unitMoveEndFlag;
16149 sdd.battleSetUp = battleSetUp;
16150 sdd.pushStanbyFlag = pushStanbyFlag;
16151 sdd.battleEndFlag = battleEndFlag;
16152 sdd.wtUnitNum = wtUnitNum;
16153 sdd.messageDialog = messageDialog;
16156 for(int i = 0;i < 1002;i++){
16157 for(int j = 0;j < 1002;j++){
16158 sdd.chipNum[i][j] = chipNum[i][j];
16162 for(int i = 0;i < 1002;i++){
16163 for(int j = 0;j < 1002;j++){
16164 sdd.buildNum[i][j] = buildNum[i][j];
16168 for(int i = 0;i < 1002;i++){
16169 for(int j = 0;j < 1002;j++){
16170 sdd.unitNum[i][j] = unitNum[i][j];
16174 for(int i = 0;i < 1002;i++){
16175 for(int j = 0;j < 1002;j++){
16176 sdd.loadNum[i][j] = loadNum[i][j];
16180 for(int i = 0;i < 1002;i++){
16181 for(int j = 0;j < 1002;j++){
16182 sdd.buildTeam[i][j] = buildTeam[i][j];
16186 for(int i = 0;i < 1002;i++){
16187 for(int j = 0;j < 1002;j++){
16188 sdd.unitTeam[i][j] = unitTeam[i][j];
16195 while(U && r < registerNum){
16196 sdd.dU[r].CPU = U->CPU;
16197 sdd.dU[r].number = U->number;
16198 sdd.dU[r].team = U->team;
16199 sdd.dU[r].chipNumber = U->chipNumber;
16200 sdd.dU[r].chipNumberL = U->chipNumberL;
16202 sdd.dU[r].x = U->x;
16203 sdd.dU[r].y = U->y;
16204 sdd.dU[r].z = U->z;
16206 sdd.dU[r].ix = U->ix;
16207 sdd.dU[r].iy = U->iy;
16208 sdd.dU[r].iz = U->iz;
16210 sdd.dU[r].dead = U->dead;
16212 sdd.dU[r].loadChipFlag = U->loadChipFlag;
16214 sdd.dU[r].unControlable = U->unControlable;
16215 sdd.dU[r].joinArmyFromNext = U->joinArmyFromNext;
16216 sdd.dU[r].persuasion = U->persuasion;
16218 sdd.dU[r].targType1L = U->targType1L;
16219 sdd.dU[r].targType2L = U->targType2L;
16220 sdd.dU[r].targType1D = U->targType1D;
16221 sdd.dU[r].targType2D = U->targType2D;
16223 sdd.dU[r].army = U->army;
16224 sdd.dU[r].img = [U->img retain];
16226 sdd.dU[r].C.chipNumb = U->C.chipNumb;
16227 sdd.dU[r].C.name = [U->C.name retain];
16228 sdd.dU[r].C.nameNick = [U->C.nameNick retain];
16229 sdd.dU[r].C.nameClass = [U->C.nameClass retain];
16230 sdd.dU[r].C.nameID = [U->C.nameID retain];
16232 sdd.dU[r].C.R_C = U->C.R_C;
16233 sdd.dU[r].C.S_C = U->C.S_C;
16241 while(B && r < registerNumB){
16242 sdd.dB[r].number = B->number;
16243 sdd.dB[r].team = B->team;
16244 sdd.dB[r].chipNumber = B->chipNumber;
16245 sdd.dB[r].makeLv = B->makeLv;
16247 sdd.dB[r].x = B->x;
16248 sdd.dB[r].y = B->y;
16249 sdd.dB[r].z = B->z;
16251 sdd.dB[r].dead = B->dead;
16253 sdd.dB[r].img = [B->img retain];
16254 sdd.dB[r].C.chipNumb = B->C.chipNumb;
16255 sdd.dB[r].C.name = [B->C.name retain];
16256 sdd.dB[r].C.nameID = [B->C.nameID retain];
16257 sdd.dB[r].C.S_C = B->C.S_C;
16268 for(int i = 0;i < 9999;i++)
16269 sdd.Suicchi[i] = Suicchi[i];
16271 sdd.HensuuNum = HensuuNum;
16272 for(int i = 0;i < 65000;i++)
16273 sdd.Hensuu[i] = [Hensuu[i] retain];
16274 for(int i = 0;i < 65000;i++)
16275 sdd.HensuuName[i] = [HensuuName[i] retain];
16277 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
16290 -(NSData *)sddToNSData:(NSString *) path{
16293 NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject:sdd];
16295 [archivedData writeToFile:path atomically:YES];
16297 return archivedData;
16303 -(IBAction)saveGameCancel:(id)sender{
16305 [saveGamePanel close];
16315 @implementation FieldSceneEF
16322 - (id)initWithFrame:(NSRect)frame
16324 self = [super initWithFrame:frame];
16326 // Initialization code here.
16328 scheduledTimerWithTimeInterval:0.015
16330 selector:@selector(EventLoopBV:)
16339 -(void)scrollWheel:(NSEvent *)theEvent{
16345 -(void)EventLoopBV:(NSTimer*)timer{
16347 [battleView setNeedsDisplay:YES];
16349 static int aniFrame = 0;
16351 if(animationFlag3){
16357 if(!animationFlag1 && !animationFlag2){
16368 U->C.A = attackCR2;
16370 static bool pussyMikoto = false;
16374 ani = U->C.A->AN.ANI;
16377 for (int i = 0; i < aniFrameCnt;i++) {
16382 [ani->snd setCurrentTime:0];
16384 ani->snd.loops = NO;
16387 pussyMikoto = true;
16391 U->C.A->AN.ANI = ani;
16394 if(aniFrame < U->C.A->AN.frame){
16400 pussyMikoto = false;
16401 animationFlag3 = true;
16409 [self setNeedsDisplay:YES];
16414 -(void)DrawImage:(NSImage*)image x:(float)x y:(float)y a:(float)a{
16416 frRect.size.height = image.size.height;
16417 frRect.size.width = image.size.width;
16419 frRect.origin.x = 0;
16420 frRect.origin.y = 0;
16423 drRect.origin.x = x;
16424 drRect.origin.y = y;
16425 drRect.size.height = image.size.height;
16426 drRect.size.width = image.size.width;
16428 [image drawInRect:drRect fromRect:frRect operation:NSCompositeSourceOver fraction:a respectFlipped:YES hints:nil];
16432 - (void)drawRect:(NSRect)dirtyRect
16434 // Drawing code here.
16435 if(animationFlag3) return;
16440 if(animationFlag1 || animationFlag2){
16446 U->C.A = attackCR2;
16448 ani = U->C.A->AN.ANI;
16453 for (int i = 0; i < aniFrameCnt;i++) {
16461 [self DrawImage:ani->img x:ani->x + ani->ax y:ani->y + ani->ay a:1.0f];