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)
4148 if(!(AVpreview.rate > 0) && !animationFlag1 && !animationFlag2)
4159 damnitFixFlag = true;
4160 if(!datFileLoadCompFromTitle && initMapFlag && !battleIsProcFlag){
4161 [self EventFunc:true];
4163 crapBugFixFlag = false;
4169 if(battleSetUp && fuckingLoadBugFix && Uselected && !attackingWait){
4170 if(!battleSetUpIgnore && fuckingLoadBugFix){
4171 [self AttackDisplay];
4173 windowPoint.x = [mapWindow frame].origin.x;
4174 windowPoint.y = [mapWindow frame].origin.y;
4175 [battleWindow setFrameOrigin:windowPoint];
4176 [battleWindow makeKeyAndOrderFront:nil];
4177 }else if(battleSetUpIgnore){
4178 [mapWindow makeKeyAndOrderFront:nil];
4181 windowPoint.x = [mapWindow frame].origin.x;
4182 windowPoint.y = [mapWindow frame].origin.y;
4183 [battleWindow setFrameOrigin:windowPoint];
4184 [battleWindow makeKeyAndOrderFront:nil];*/
4192 if(battleRdy && battleSetUp && fuckingLoadBugFix && !battleSetUpIgnore){
4193 [self DisplayMessage];
4200 if(battleBegin && !wtRdy2 && !battleFlag)
4204 //NSLog(@"eventTime%g", eventTime);
4207 if(!U->dead && U->C.S_C.WT > 0) U->C.S_C.WT -= 1;
4209 U->C.S_C.WT = 999999;
4212 if(U->C.S_C.WT <= 0 && !U->dead){//WTターン周り
4213 battleEndFlag = false;
4217 wtUnitNum = U->number;
4224 possionX = unitBreak->x;
4225 possionY = unitBreak->y;
4228 wtMovedFlag = false;
4229 wtAttackedFlag = false;
4233 [fieldView scrollPoint:NSMakePoint((wtPx-8)*32, (wtPy-8)*32)];
4236 if(buildNum[U->x][U->y] >= 0){
4240 if(B->x == U->x && B->y == U->y){
4253 U->C.S_C.HP += floor(U->C.S_M.HP*B->C.recHP/100);
4254 if(U->C.S_C.HP >= U->C.S_M.HP) U->C.S_C.HP = U->C.S_M.HP;
4258 U->C.S_C.MP += floor(U->C.S_M.MP*B->C.recMP/100);
4259 if(U->C.S_C.MP >= U->C.S_M.MP) U->C.S_C.MP = U->C.S_M.MP;
4263 U->CL.S_C.EN += floor(U->CL.S_M.EN*B->C.recEN/100);
4264 if(U->CL.S_C.EN >= U->CL.S_M.EN) U->CL.S_C.EN = U->CL.S_M.EN;
4267 if(B->C.recHPL > 0){
4268 U->CL.S_C.HP += floor(U->CL.S_M.HP*B->C.recHPL/100);
4269 if(U->CL.S_C.HP >= U->CL.S_M.HP) U->CL.S_C.HP = U->CL.S_M.HP;
4279 [self EventFunc:false];
4280 pussyCumsOnlyOnceFlag = false;
4291 if(!B->dead) B->C.S_C.WTE -= 1;
4292 if(B->C.S_C.WTE <= 0){
4295 P[0].resource += B->C.Esupply;
4296 P[0].food += B->C.Efood;
4297 P[0].money += B->C.Emoney;
4300 P[1].resource += B->C.Esupply;
4301 P[1].food += B->C.Efood;
4302 P[1].money += B->C.Emoney;
4305 P[2].resource += B->C.Esupply;
4306 P[2].food += B->C.Efood;
4307 P[2].money += B->C.Emoney;
4310 B->C.S_C.WTE = B->C.S_M.WTE;
4319 //NSLog(@"%g", eventTime);
4320 [self EventFunc:false];
4322 pussyCumsOnlyOnceFlag = false;
4324 //NSLog(@"eventTime%g", eventTime);
4340 if(buildSelectedFlag){
4341 windowPoint.x = [mapWindow frame].origin.x;
4342 windowPoint.y = [mapWindow frame].origin.y;
4343 [researchPanel setFrameOrigin:windowPoint];
4344 if([self setBuildList]){
4345 [researchPanel makeKeyAndOrderFront:nil];
4347 buildSelectedFlag = false;
4350 if(TeamCountFlag && !endGameCondition){
4355 if((U->team == 0 || U->team == 1) && !U->dead){
4358 else if(U->team == 2 && !U->dead){
4366 if(targType1cnt[1] == 0 || targType2cnt[1] == 0){
4367 endGameCondition = true;
4369 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[1].name]];
4372 if(targType1cnt[0] == 0 || targType2cnt[0] == 0){
4373 endGameCondition = true;
4375 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
4380 endGameCondition = true;
4382 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[1].name]];
4386 endGameCondition = true;
4388 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
4392 if(TeamCount0 == 0 && (MF[MFselectedRow+1].MS.EGCdark.endType1 == 2 || MF[MFselectedRow+1].MS.EGCdark.endType2 == 2)){
4393 endGameCondition = true;
4395 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[1].name]];
4397 if(TeamCount2 == 0 && (MF[MFselectedRow+1].MS.EGClight.endType1 == 1 || MF[MFselectedRow+1].MS.EGClight.endType2 == 1)){
4398 endGameCondition = true;
4400 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
4406 static int endGamePanelWait = 100;
4408 if(endGameCondition && !battleRdy){
4410 if(redWinFlag && blueWinFlag){
4414 windowPoint.x = [mapWindow frame].origin.x+30;
4415 windowPoint.y = [mapWindow frame].origin.y+200;
4416 [endGamePanel setFrameOrigin:windowPoint];
4417 [endGamePanel makeKeyAndOrderFront:nil];
4419 if(endGamePanelWait > 0) return;
4422 [endGamePanel close];
4431 endGameCondition = false;
4432 initMapFlag = false;
4433 TeamCountFlag = false;
4434 initStatusFlag = false;
4435 battleBegin = false;
4438 cpuModeMOVEflag = false;
4439 cpuModeATTACKflag = false;
4442 blueWinFlag = false;
4443 cpuAImodeflag = false;
4444 cpuTurnEndFlag = true;
4445 waitSwtichFlag = false;
4451 endGamePanelWait = 100;
4452 stageClearFlag = false;
4453 stageClearFlag2 = false;
4454 battleReadyUpFlag = false;
4455 setBattleModeFlag = false;
4459 [titleWindow makeKeyAndOrderFront:nil];
4467 endGameCondition = false;
4468 initMapFlag = false;
4469 TeamCountFlag = false;
4470 initStatusFlag = false;
4471 battleBegin = false;
4474 cpuModeMOVEflag = false;
4475 cpuModeATTACKflag = false;
4478 blueWinFlag = false;
4479 cpuAImodeflag = false;
4480 cpuTurnEndFlag = true;
4481 backTitleFlag = false;
4482 backTitleFlag2 = true;
4483 waitSwtichFlag = false;
4484 battleReadyUpFlag = false;
4485 setBattleModeFlag = false;
4493 }if(stageClearFlag){
4495 if(stageClearFlag2){
4497 endGameCondition = true;
4499 [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
4513 endGameCondition = false;
4514 initMapFlag = false;
4515 TeamCountFlag = false;
4516 initStatusFlag = false;
4517 battleBegin = false;
4520 cpuModeMOVEflag = false;
4521 cpuModeATTACKflag = false;
4524 blueWinFlag = false;
4525 cpuAImodeflag = false;
4526 cpuTurnEndFlag = true;
4527 stageClearFlag = false;
4528 waitSwtichFlag = false;
4529 battleReadyUpFlag = false;
4530 setBattleModeFlag = false;
4543 [GameOverIV setImage:gaov.img];
4546 [GameOverWindow makeKeyAndOrderFront:nil];
4549 endGameCondition = false;
4550 initMapFlag = false;
4551 TeamCountFlag = false;
4552 initStatusFlag = false;
4553 battleBegin = false;
4556 cpuModeMOVEflag = false;
4557 cpuModeATTACKflag = false;
4560 blueWinFlag = false;
4561 cpuAImodeflag = false;
4562 cpuTurnEndFlag = true;
4563 backTitleFlag = false;
4564 gameOverFlag = false;
4565 gameOverFlag2 = true;
4566 waitSwtichFlag = false;
4567 battleReadyUpFlag = false;
4568 setBattleModeFlag = false;
4578 if(!Uselected->dead){
4582 while (U->number != wtUnitNum) {
4586 if(!wtMovedFlag && !wtAttackedFlag){
4587 U->C.S_C.WT = floor(U->C.S_M.WT/4 + 0.5);
4588 }else if(wtMovedFlag && wtAttackedFlag){
4589 U->C.S_C.WT = floor(U->C.S_M.WT + 0.5);
4590 }else if(wtMovedFlag){
4591 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
4592 }else if(wtAttackedFlag){
4593 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
4606 [self addSummonStatus];
4612 SKILL *sTop = U->C.S;
4615 if(U->C.S->type == 2) break;
4616 U->C.S = U->C.S->next;
4619 U->C.S_C.MP -= U->C.S->cost[crCSL];
4628 unitNum[possionX][possionY] = U->C.S->list[crCSL]-1;
4629 unitTeam[possionX][possionY] = 0;
4632 unitColorInitFlag = true;
4636 SKILL *sTop = U->C.S;
4639 if(U->C.S->type == 2) break;
4640 U->C.S = U->C.S->next;
4643 U->C.S_C.MP -= U->C.S->cost[crCSL];
4651 unitNum[possionX][possionY] = U->C.S->list[crCSL]-1;
4652 unitTeam[possionX][possionY] = 2;
4655 unitColorInitFlag = true;
4658 summonRdyFlag = false;
4666 if(unitMoveEndFlag){
4667 //pussyLoopFlag = false;
4674 if(displayBattleCheckPanelFlag == 1){
4675 displayBattleCheckPanelFlag = 2;
4677 windowPoint.x = [mapWindow frame].origin.x;
4678 windowPoint.y = [mapWindow frame].origin.y;
4679 [atkPanel setFrameOrigin:windowPoint];
4692 -(void)EventFunc:(bool)eventLoopProcFlag{
4698 pussyLoopFlag = false;
4707 if(battleBegin && !pussyLoopFlag){
4709 bool proccessTrue = false;
4710 static bool onlyBigin = false;
4711 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
4728 int proccesType = -1;
4730 bool EventFailFlag = false;
4731 static bool PtopFlag = false;
4761 if(MS.D->P->endFlag)
4762 MS.D->P = MS.D->P->next;
4768 if(!eventLoopProcFlag && MS.D->P->type == 0){
4769 proccessTrue = false;
4770 MS.D->P = MS.D->P->next;
4777 MS.D->endFlag = true;
4778 messageDialog = false;
4779 [self setMessage:NULL];
4784 MAPSCRIPT0 *MSDPT = MS.D->P;
4786 if(MS.D->ETtype == 0){
4788 }else if(MS.D->ETtype == 1){
4789 bool resultFailFlag = false;
4791 if(!MS.D->P->endFlag)
4792 resultFailFlag = true;
4793 MS.D->P = MS.D->P->next;
4798 MS.D->P->endFlag = false;
4799 MS.D->P = MS.D->P->next;
4802 }else if(MS.D->ETtype == 2){
4804 bool resultFailFlag = false;
4806 if(!MS.D->P->succeessfulFlag)
4807 resultFailFlag = true;
4808 MS.D->P = MS.D->P->next;
4813 MS.D->P->endFlag = false;
4814 MS.D->P = MS.D->P->next;
4816 }else if(MS.D->ETtype == 3){
4818 bool resultFailFlag = false;
4820 if(!MS.D->P->succeessfulFlag){
4821 resultFailFlag = false;
4824 MS.D->P = MS.D->P->next;
4825 resultFailFlag = true;
4830 MS.D->P->endFlag = false;
4831 MS.D->P = MS.D->P->next;
4833 //NSLog(@"%d", UTop->x);
4834 }else if(MS.D->ETtype == 4){
4836 MS.D->P->endFlag = false;
4837 MS.D->P = MS.D->P->next;
4853 for(int i = 0;*(MS.D->switch1+i)>0;i++){
4854 if(Suicchi[*(MS.D->switch1+i)])
4857 EventFailFlag = true;
4861 for(int i = 0;*(MS.D->switch2+i)>0;i++){
4862 if(!Suicchi[*(MS.D->switch2+i)])
4865 EventFailFlag = true;
4867 //NSLog(@"%g", eventTime);
4869 //if(!MS.D->endFlag)
4870 if(eventTime == MS.D->ET4 || MS.D->ET4 == 0 || MS.D->initialDeleyedFlag){
4872 if(MS.D->P->type == 6){
4873 if(eventTime == MS.D->ET4){
4874 MS.D->P->S4.lagFixFlag = false;
4876 else if(unitMoveEndFlag){
4877 MS.D->P->S4.lagFixFlag = false;
4879 else if(battleSetUp){
4880 MS.D->P->S4.lagFixFlag = false;
4882 else if(pushStanbyFlag){
4883 MS.D->P->S4.lagFixFlag = false;
4885 else if(battleEndFlag){
4886 MS.D->P->S4.lagFixFlag = false;
4888 else if(!MS.D->P->S4.lagFixFlag && MS.D->ET4 == 0){
4889 MS.D->P->S4.lagFixFlag = true;
4893 if(MS.D->P->S4.lagFixFlag){
4894 //NSLog(@"%g", eventTime);
4895 proccessTrue = false;
4899 proccessTrue = true;
4902 double deltaET = floor(MS.D->ET2) - floor(MS.D->ET1);
4904 if(deltaET < 0) deltaET = 0;
4906 if(MS.D->ET1 <= eventTime && MS.D->ET2 >= eventTime){
4907 if(deltaET > 0) deltaR = rand()%(int)deltaET;
4910 MS.D->ET3 = MS.D->ET1 + (double)deltaR;
4912 if(!MS.D->onlyInitialDeley) {
4913 MS.D->ET4 += MS.D->ET3;
4915 MS.D->initialDeleyedFlag = true;
4919 // NSLog(@"%g %d", eventTime, P[0].resource);
4923 proccessTrue = true;
4934 if(MS.D->type == -1 && !EventFailFlag)
4935 proccesType = ENTIRE_MAP;
4936 if(MS.D->type == 0 && pushStanbyFlag && (Uselected->x == MS.D->x && Uselected->y == MS.D->y) && !EventFailFlag)
4937 proccesType = CENTER_POINT;
4938 else if(MS.D->type == 0){
4939 proccesType = CENTER_POINT;
4940 proccessTrue = false;
4941 EventFailFlag = true;
4949 if(MS.D->ET4 != 0 && pussyCumsOnlyOnceFlag){
4950 EventFailFlag = true;
4954 if(EventFailFlag || !proccessTrue){
4960 if(!eventLoopProcFlag && MS.D->P->type == 0)
4961 proccessTrue = false;
4964 switch (proccesType) {
4966 MS.D->P = [self setEvent:MS.D->P];
4973 if(waitSwtichFlag) {
4982 }if(stageClearFlag){
4996 MS.D->P = [self setEvent:MS.D->P];
5002 if(waitSwtichFlag) {
5011 }if(stageClearFlag){
5033 bool PnextFlag = false;
5037 if(MS.D->P->endFlag){
5038 MS.D->P = MS.D->P->next;
5060 MAPSCRIPT0 *MSDPT = MS.D->P;
5061 if(MS.D->ETtype == 0){
5063 MS.D->P->succeessfulFlag = true;
5064 MS.D->endFlag = true;
5065 MS.D->P = MS.D->P->next;
5067 }else if(MS.D->ETtype == 1){
5068 bool resultFailFlag = false;
5070 if(!MS.D->P->endFlag)
5071 resultFailFlag = true;
5072 MS.D->P = MS.D->P->next;
5077 MS.D->P->succeessfulFlag = false;
5078 MS.D->endFlag = false;
5079 MS.D->P->endFlag = false;
5080 MS.D->P = MS.D->P->next;
5083 }else if(MS.D->ETtype == 2){
5085 bool resultFailFlag = false;
5087 if(!MS.D->P->succeessfulFlag)
5088 resultFailFlag = true;
5089 MS.D->P = MS.D->P->next;
5094 MS.D->P->succeessfulFlag = false;
5095 MS.D->endFlag = false;
5096 MS.D->P->endFlag = false;
5097 MS.D->P = MS.D->P->next;
5099 }else if(MS.D->ETtype == 3){
5101 bool resultFailFlag = false;
5103 if(!MS.D->P->succeessfulFlag){
5104 resultFailFlag = false;
5107 resultFailFlag = true;
5108 MS.D->P = MS.D->P->next;
5113 MS.D->P->succeessfulFlag = false;
5114 MS.D->endFlag = false;
5115 MS.D->P->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->P->endFlag = false;
5122 MS.D->endFlag = false;
5123 MS.D->P = MS.D->P->next;
5135 MF[MFselectedRow+1].MS.D = MS.D;
5137 cpuTurnEndFlag = false;
5138 battleSetUpIgnore = false;
5139 if(!eventLoopProcFlag){
5140 pussyCumsOnlyOnceFlag = true;
5143 fuckingLoadBugFix = true;
5150 -(MAPSCRIPT0*)setEvent:(MAPSCRIPT0*)MS0{
5165 APPEARANCE_FLAG = 22,
5166 DISSAPPEARANCE_FLAG = 23,
5171 STAGECLEAR_FLAG = 36,
5178 Proc = MESSAGE_FLAG;
5180 Proc = SELECTION_FLAG;
5182 Proc = INPUTNUMBER_FLAG;
5194 Proc = LABELJUMP_FLAG;
5196 Proc = COMMENT_FLAG;
5198 Proc = RESOURCE_FLAG;
5202 Proc = APPEARANCE_FLAG;
5204 Proc = DISSAPPEARANCE_FLAG;
5212 Proc = GAMEOVER_FLAG;
5214 Proc = STAGECLEAR_FLAG;
5224 messageDialog = true;
5225 [self setMessage:MS0];
5227 fuckingLoadBugFix = false;
5229 case SELECTION_FLAG:
5231 MS0 = [self setSelection:MS0];
5234 case INPUTNUMBER_FLAG:
5235 MS0 = [self setDefault:MS0];
5240 MS0 = [self setSwitch:MS0];
5243 MS0 = [self setDefault:MS0];
5246 MS0 = [self setDefault:MS0];
5249 MS0 = [self setBranch:MS0];
5252 MS0 = [self setLabel:MS0];
5254 case LABELJUMP_FLAG:
5255 MS0 = [self setLabelJump:MS0];
5258 MS0 = [self setComment:MS0];
5261 MS0 = [self setResource:MS0];
5264 MS0 = [self setStatus:MS0];
5266 case APPEARANCE_FLAG:
5267 MS0 = [self setAppearance:MS0];
5269 case DISSAPPEARANCE_FLAG:
5270 MS0 = [self setDissappearance:MS0];
5273 MS0 = [self setWait:MS0];
5276 MS0 = [self setBGM:MS0];
5279 MS0 = [self setSE:MS0];
5282 MS0 = [self setGameOver:MS0];
5285 case STAGECLEAR_FLAG:
5286 MS0 = [self setStageClear:MS0];
5289 MS0 = [self setTitleBack:MS0];
5297 -(void)setTargetListDat{
5298 targType1cnt[0] = -1;
5299 targType1cnt[1] = -1;
5300 targType2cnt[0] = -1;
5301 targType2cnt[1] = -1;
5302 targType2Lflag = false;
5303 targType2Dflag = false;
5306 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
5310 for (int i = 0;i < 64;i++) {
5311 if(!MS.EGClight.etValue1[i]) break;
5312 NSArray *array1 = [MS.EGClight.etValue1[i] componentsSeparatedByString:@"["];
5313 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5315 int Tx = [[array2 objectAtIndex:0] intValue];
5316 int Ty = [[array2 objectAtIndex:1] intValue];
5317 if(MS.EGClight.endType1 == 3){
5320 if(U->x == Tx && U->y == Ty){
5321 U->targType1L = true;
5322 if(targType1cnt[0] < 0)
5323 targType1cnt[0] = 0;
5330 if(MS.EGClight.endType1 == 4){
5333 if(U->x == Tx && U->y == Ty){
5334 U->targType2L = true;
5335 if(targType2cnt[0] < 0)
5336 targType2cnt[0] = 0;
5344 for (int i = 0;i < 64;i++) {
5345 if(!MS.EGClight.etValue2[i]) break;
5346 NSArray *array1 = [MS.EGClight.etValue2[i] componentsSeparatedByString:@"["];
5347 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5349 int Tx = [[array2 objectAtIndex:0] intValue];
5350 int Ty = [[array2 objectAtIndex:1] intValue];
5352 if(MS.EGClight.endType2 == 3){
5355 if(U->x == Tx && U->y == Ty){
5356 U->targType1L = true;
5357 if(targType1cnt[0] < 0)
5358 targType1cnt[0] = 0;
5365 if(MS.EGClight.endType2 == 4){
5368 if(U->x == Tx && U->y == Ty){
5369 U->targType2L = true;
5370 if(targType2cnt[0] < 0)
5371 targType2cnt[0] = 0;
5379 for (int i = 0;i < 64;i++) {
5380 if(!MS.EGCdark.etValue1[i]) break;
5381 NSArray *array1 = [MS.EGCdark.etValue1[i] componentsSeparatedByString:@"["];
5382 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5384 int Tx = [[array2 objectAtIndex:0] intValue];
5385 int Ty = [[array2 objectAtIndex:1] intValue];
5387 if(MS.EGCdark.endType1 == 3){
5390 if(U->x == Tx && U->y == Ty){
5391 U->targType1D = true;
5392 if(targType1cnt[1] < 0)
5393 targType1cnt[1] = 0;
5400 if(MS.EGCdark.endType1 == 4){
5403 if(U->x == Tx && U->y == Ty){
5404 U->targType2D = true;
5405 if(targType2cnt[1] < 0)
5406 targType2cnt[1] = 0;
5414 for (int i = 0;i < 64;i++) {
5415 if(!MS.EGCdark.etValue2[i]) break;
5416 NSArray *array1 = [MS.EGCdark.etValue2[i] componentsSeparatedByString:@"["];
5417 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5419 int Tx = [[array2 objectAtIndex:0] intValue];
5420 int Ty = [[array2 objectAtIndex:1] intValue];
5422 if(MS.EGCdark.endType2 == 3){
5425 if(U->x == Tx && U->y == Ty){
5426 U->targType1D = true;
5427 if(targType1cnt[1] < 0)
5428 targType1cnt[1] = 0;
5435 if(MS.EGCdark.endType2 == 4){
5438 if(U->x == Tx && U->y == Ty){
5439 U->targType2D = true;
5440 if(targType2cnt[1] < 0)
5441 targType2cnt[1] = 0;
5456 -(void)setTargetList{
5458 targType1cnt[0] = -1;
5459 targType1cnt[1] = -1;
5460 targType2cnt[0] = -1;
5461 targType2cnt[1] = -1;
5462 targType2Lflag = false;
5463 targType2Dflag = false;
5466 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
5470 for (int i = 0;i < 64;i++) {
5471 if(!MS.EGClight.etValue1[i] || [MS.EGClight.etValue1[i] isEqualToString:@""]) break;
5472 NSArray *array1 = [MS.EGClight.etValue1[i] componentsSeparatedByString:@"["];
5473 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5475 int Tx = [[array2 objectAtIndex:0] intValue];
5476 int Ty = [[array2 objectAtIndex:1] intValue];
5477 if(MS.EGClight.endType1 == 3){
5480 if(U->x == Tx && U->y == Ty){
5481 U->targType1L = true;
5482 if(targType1cnt[0] < 0)
5483 targType1cnt[0] = 0;
5490 if(MS.EGClight.endType1 == 4){
5493 if(U->x == Tx && U->y == Ty){
5494 U->targType2L = true;
5495 if(targType2cnt[0] < 0)
5496 targType2cnt[0] = 0;
5504 for (int i = 0;i < 64;i++) {
5505 if(!MS.EGClight.etValue2[i] || [MS.EGClight.etValue2[i] isEqualToString:@""]) break;
5506 NSArray *array1 = [MS.EGClight.etValue2[i] componentsSeparatedByString:@"["];
5507 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5509 int Tx = [[array2 objectAtIndex:0] intValue];
5510 int Ty = [[array2 objectAtIndex:1] intValue];
5512 if(MS.EGClight.endType2 == 3){
5515 if(U->x == Tx && U->y == Ty){
5516 U->targType1L = true;
5517 if(targType1cnt[0] < 0)
5518 targType1cnt[0] = 0;
5525 if(MS.EGClight.endType2 == 4){
5528 if(U->x == Tx && U->y == Ty){
5529 U->targType2L = true;
5530 if(targType2cnt[0] < 0)
5531 targType2cnt[0] = 0;
5539 for (int i = 0;i < 64;i++) {
5540 if(!MS.EGCdark.etValue1[i] || [MS.EGCdark.etValue1[i] isEqualToString:@""]) break;
5541 NSArray *array1 = [MS.EGCdark.etValue1[i] componentsSeparatedByString:@"["];
5542 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5544 int Tx = [[array2 objectAtIndex:0] intValue];
5545 int Ty = [[array2 objectAtIndex:1] intValue];
5547 if(MS.EGCdark.endType1 == 3){
5550 if(U->x == Tx && U->y == Ty){
5551 U->targType1D = true;
5552 if(targType1cnt[1] < 0)
5553 targType1cnt[1] = 0;
5560 if(MS.EGCdark.endType1 == 4){
5563 if(U->x == Tx && U->y == Ty){
5564 U->targType2D = true;
5565 if(targType2cnt[1] < 0)
5566 targType2cnt[1] = 0;
5574 for (int i = 0;i < 64;i++) {
5575 if(!MS.EGCdark.etValue2[i] || [MS.EGCdark.etValue2[i] isEqualToString:@""]) break;
5576 NSArray *array1 = [MS.EGCdark.etValue2[i] componentsSeparatedByString:@"["];
5577 NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5579 int Tx = [[array2 objectAtIndex:0] intValue];
5580 int Ty = [[array2 objectAtIndex:1] intValue];
5582 if(MS.EGCdark.endType2 == 3){
5585 if(U->x == Tx && U->y == Ty){
5586 U->targType1D = true;
5587 if(targType1cnt[1] < 0)
5588 targType1cnt[1] = 0;
5595 if(MS.EGCdark.endType2 == 4){
5598 if(U->x == Tx && U->y == Ty){
5599 U->targType2D = true;
5600 if(targType2cnt[1] < 0)
5601 targType2cnt[1] = 0;
5617 -(bool)setBuildList{
5621 [self willChangeValueForKey:@"CResearchListMA"];
5622 [CResearchListMA removeAllObjects];
5623 [self didChangeValueForKey:@"CResearchListMA"];
5625 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
5626 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
5627 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
5628 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
5629 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
5630 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
5631 [researchIMG setImage:NULL];
5637 while (B && B->x != possionX && B->y != possionY) {
5640 B0 = &BC[buildNum[possionX][possionY]];
5648 if(buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1){
5658 else if(buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3){
5672 if(B->makeLv >= B0->R->Lv){
5673 NSMutableDictionary* dict = [NSMutableDictionary new];
5674 [dict setValue:[NSString stringWithFormat:@"%@", BU->nameClass] forKey:@"name"];
5675 [dict setValue:[NSString stringWithFormat:@"%g", BU->S_M.HP] forKey:@"HP"];
5676 [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d", BU->S_M.cSupply, BU->S_M.cFood, BU->S_M.cMoney] forKey:@"cost"];
5677 [dict setValue:BU->img forKey:@"img"];
5680 [self willChangeValueForKey:@"CResearchListMA"];
5681 [CResearchListMA addObject:dict];
5682 [self didChangeValueForKey:@"CResearchListMA"];
5684 B0->R = B0->R->next;
5692 B = &BC[buildNum[possionX][possionY]];
5701 for(int i = 0;i <= crCRL && B->R;i++){
5704 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", BU->S_M.ATK]];
5705 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", BU->S_M.DEF]];
5706 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", BU->S_M.CAP]];
5707 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", BU->S_M.ACU]];
5708 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", BU->S_M.EVA]];
5709 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", BU->S_M.MOV]];
5710 [researchIMG setImage:BU->imgb];
5711 [researchIMG setImageScaling:NSScaleToFit];
5718 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
5720 if(B->GuildFlag &&( buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1)){
5722 int a = MS.guildListRegistNum12 - MS.guildListRegistNum11;
5727 Gnum1 = MS.guildListRegistNum11 + arc4random()%(MS.guildListRegistNum12 - MS.guildListRegistNum11+1);
5729 Gnum1 = MS.guildListRegistNum12;
5731 if(Gnum1 > GCnum1+1)
5736 saveGuildList = calloc((GCnum1+1), sizeof(int));
5737 if(!guildRE1) GuildDisp1 = calloc(Gnum1, sizeof(int));
5738 for(int i = 0;i < Gnum1;i++){
5741 n = [self chooseGuildList:GuildChosen1 gcnum:GCnum1];
5744 *(GuildDisp1 + i) = *(GuildChosen1 + n);
5747 if(*(GuildDisp1 + i) <= 0)
5750 NSMutableDictionary* dict = [NSMutableDictionary new];
5751 [dict setValue:[NSString stringWithFormat:@"%@", UC[*(GuildDisp1 + i)-1].name] forKey:@"name"];
5752 [dict setValue:[NSString stringWithFormat:@"%g", UC[*(GuildDisp1 + i)-1].S_M.HP] forKey:@"HP"];
5753 [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"];
5754 [dict setValue:UC[*(GuildDisp1 + i)-1].img forKey:@"img"];
5757 [self willChangeValueForKey:@"CResearchListMA"];
5758 [CResearchListMA addObject:dict];
5759 [self didChangeValueForKey:@"CResearchListMA"];
5773 for(int i = k;i <= crCRL;i++){
5774 if(*(GuildDisp1 + i - k) <= 0)
5777 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ATK]];
5778 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.DEF]];
5779 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.CAP]];
5780 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ACU]];
5781 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.EVA]];
5782 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp1 + i - k)-1].S_M.MOV]];
5783 [researchIMG setImage:UC[*(GuildDisp1 + i - k)-1].imgb];
5784 [researchIMG setImageScaling:NSScaleToFit];
5789 }else if(B->GuildFlag && (buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3)){
5791 int a = MS.guildListRegistNum22 - MS.guildListRegistNum21;
5796 Gnum2 = MS.guildListRegistNum21 + arc4random()%(MS.guildListRegistNum22 - MS.guildListRegistNum21+1);
5798 Gnum2 = MS.guildListRegistNum22;
5800 if(Gnum2 > GCnum2+1)
5806 saveGuildList = calloc((GCnum2+1), sizeof(int));
5807 if(!guildRE2) GuildDisp2 = calloc(Gnum2, sizeof(int));
5808 for(int i = 0;i < Gnum2;i++){
5810 n = [self chooseGuildList:GuildChosen2 gcnum:GCnum2];
5813 *(GuildDisp2 + i) = *(GuildChosen2 + n);
5816 if(*(GuildDisp2 + i) <= 0)
5819 NSMutableDictionary* dict = [NSMutableDictionary new];
5820 [dict setValue:[NSString stringWithFormat:@"%@", UC[*(GuildDisp2 + i)-1].name] forKey:@"name"];
5821 [dict setValue:[NSString stringWithFormat:@"%g", UC[*(GuildDisp2 + i)-1].S_M.HP] forKey:@"HP"];
5822 [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"];
5823 [dict setValue:UC[*(GuildDisp2 + i)-1].img forKey:@"img"];
5826 [self willChangeValueForKey:@"CResearchListMA"];
5827 [CResearchListMA addObject:dict];
5828 [self didChangeValueForKey:@"CResearchListMA"];
5838 for(int i = k;i <= crCRL;i++){
5839 if(*(GuildDisp2 + i - k) <= 0)
5843 [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ATK]];
5844 [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.DEF]];
5845 [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.CAP]];
5846 [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ACU]];
5847 [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.EVA]];
5848 [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp2 + i - k)-1].S_M.MOV]];
5849 [researchIMG setImage:UC[*(GuildDisp2 + i - k)-1].imgb];
5850 [researchIMG setImageScaling:NSScaleToFit];
5867 -(int)chooseGuildList:(int*)value gcnum:(int)gcnum{
5871 bool sameFlag = false;
5872 bool sameFlag2 = false;
5874 if(guildc >= gcnum+1){
5879 a = arc4random()%(gcnum+1);
5881 for(int i = 0;i < guildc;i++){
5882 if(*(saveGuildList+i) == a){
5891 *(saveGuildList+guildc) = a;
5897 if([UC[*(value + a)-1].nameID isEqualToString:U->C.nameID]){
5912 -(void)initGuildList{
5914 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
5916 GuildChosen1 = calloc(UCN, sizeof(int));
5917 GuildChosen2 = calloc(UCN, sizeof(int));
5920 for (int i = 0;i < UCN;i++) {
5921 if(MS.guildListRegist[i]){
5923 *(GuildChosen1 + GCnum1) = i+1;
5927 for (int i = 0;i < UCN;i++) {
5928 if(MS.guildListRegist2[i]){
5930 *(GuildChosen2 + GCnum2) = i+1;
5939 [self setCommandPanel];
5940 [menuPanel makeKeyAndOrderFront:nil];
5943 -(IBAction)pushMove:(id)sender{menuDisplayFlag = false;
5950 -(IBAction)pushAttack:(id)sender{menuDisplayFlag = false;
5954 windowPoint.x = [mapWindow frame].origin.x;
5955 windowPoint.y = [mapWindow frame].origin.y;
5956 [atkPanel setFrameOrigin:windowPoint];
5959 while (!(AUN[1] == U->number)) {
5963 if(U->chipNumberL >= 0){
5965 [self initCAttackList2];
5966 [self initCAttackSelect2];
5968 else if(U->chipNumber >= 0) {
5970 [self initCAttackList];
5971 [self initCAttackSelect];
5974 [atkPanel makeKeyAndOrderFront:nil];
5976 -(IBAction)pushStandby:(id)sender{menuDisplayFlag = false;
5980 while (U->number != wtUnitNum) {
5984 if(!wtMovedFlag && !wtAttackedFlag){
5985 U->C.S_C.WT = floor(U->C.S_M.WT/4 + 0.5);
5986 }else if(wtMovedFlag && wtAttackedFlag){
5987 U->C.S_C.WT = floor(U->C.S_M.WT + 0.5);
5988 }else if(wtMovedFlag){
5989 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
5990 }else if(wtAttackedFlag){
5991 U->C.S_C.WT = floor(U->C.S_M.WT/2 + 0.5);
5996 if(B->x == possionX && B->y == possionY && B->C.capture){
5997 buildCaptureFlag = true;
5998 unitMoveEndFlag = true;
6008 pushStanbyFlag = true;
6009 pussyLoopFlag = false;
6012 -(IBAction)pushCreate:(id)sender{menuDisplayFlag = false;
6017 windowPoint.x = [mapWindow frame].origin.x;
6018 windowPoint.y = [mapWindow frame].origin.y;
6019 [createPanel setFrameOrigin:windowPoint];
6021 [self initBCreateList];
6022 [createPanel makeKeyAndOrderFront:nil];
6025 -(IBAction)pushSummon:(id)sender{menuDisplayFlag = false;
6030 windowPoint.x = [mapWindow frame].origin.x;
6031 windowPoint.y = [mapWindow frame].origin.y;
6032 [summonPanel setFrameOrigin:windowPoint];
6034 [self initCSummonList];
6035 [summonPanel makeKeyAndOrderFront:nil];
6040 -(void)initStatusWindow{
6044 [STIV setImage:Uselected->C.imgb];
6045 [STnameTF setStringValue:Uselected->C.name];
6046 [STclassTF setStringValue:Uselected->C.nameClass];
6047 [SThpTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", Uselected->C.S_C.HP, Uselected->C.S_M.HP]];
6048 [STmpTF setStringValue:[NSString stringWithFormat:@"MP %g/%g", Uselected->C.S_C.MP, Uselected->C.S_M.MP]];
6049 [STatkTF setStringValue:[NSString stringWithFormat:@"ATK %g", Uselected->C.S_C.ATK]];
6050 [STdefTF setStringValue:[NSString stringWithFormat:@"DEF %g", Uselected->C.S_C.DEF]];
6051 [STcapTF setStringValue:[NSString stringWithFormat:@"CAP %g", Uselected->C.S_C.CAP]];
6052 [STacuTF setStringValue:[NSString stringWithFormat:@"ACU %g", Uselected->C.S_C.ACU]];
6053 [STevaTF setStringValue:[NSString stringWithFormat:@"EVA %g", Uselected->C.S_C.EVA]];
6054 [STstrTF setStringValue:[NSString stringWithFormat:@"STR %g", Uselected->C.S_C.STR]];
6055 [STvitTF setStringValue:[NSString stringWithFormat:@"VIT %g", Uselected->C.S_C.VIT]];
6056 [STagiTF setStringValue:[NSString stringWithFormat:@"AGI %g", Uselected->C.S_C.AGI]];
6057 [STdexTF setStringValue:[NSString stringWithFormat:@"DEX %g", Uselected->C.S_C.DEX]];
6058 [STmenTF setStringValue:[NSString stringWithFormat:@"MEN %g", Uselected->C.S_C.MEN]];
6059 [STintTF setStringValue:[NSString stringWithFormat:@"INT %g", Uselected->C.S_C.INT]];
6060 [STmelTF setStringValue:[NSString stringWithFormat:@"MEL %g", Uselected->C.S_C.MEL]];
6061 [STmisTF setStringValue:[NSString stringWithFormat:@"MIS %g", Uselected->C.S_C.MIS]];
6062 [SThitTF setStringValue:[NSString stringWithFormat:@"HIT %g", Uselected->C.S_C.HIT]];
6063 [STdodTF setStringValue:[NSString stringWithFormat:@"DOD %g", Uselected->C.S_C.DOD]];
6064 [STreaTF setStringValue:[NSString stringWithFormat:@"REA %g", Uselected->C.S_C.REA]];
6065 [STskiTF setStringValue:[NSString stringWithFormat:@"SKI %g", Uselected->C.S_C.SKI]];
6066 [STvigTF setStringValue:[NSString stringWithFormat:@"VIG %d", Uselected->C.S_C.vigor]];
6077 -(IBAction)pushStatus:(id)sender{menuDisplayFlag = false;
6079 [self initStatusWindow];
6081 windowPoint.x = [mapWindow frame].origin.x;
6082 windowPoint.y = [mapWindow frame].origin.y;
6083 [STwindow setFrameOrigin:windowPoint];
6084 [STwindow makeKeyAndOrderFront:nil];
6091 -(IBAction)STsubmit:(id)sender{
6096 -(IBAction)pushCancel:(id)sender{menuDisplayFlag = false;
6102 -(IBAction)pushCancelCAL:(id)sender{
6107 -(IBAction)pushCancelBCL:(id)sender{
6109 [createPanel close];
6112 -(IBAction)pushCancelCSL:(id)sender{
6114 [summonPanel close];
6117 -(void)addBuildStatus{
6122 if(registerNumB == 1){
6123 B = calloc(1, sizeof(BUILD));
6130 while (B->next) {omgCnt++;
6133 if(registerNumB != 1){
6134 B->next = calloc(1, sizeof(BUILD));
6135 if(registerNumB == 2)
6141 B->number = registerNumB;
6144 B->chipNumber = BC[buildNum[possionX][possionY]].chipNumb;
6147 B->C = BC[buildNum[possionX][possionY]];
6148 B->img = [BC[buildNum[possionX][possionY]].img retain];
6149 unitColorInitFlag = true;
6151 if(buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1){
6153 if(unitTeam[possionX][possionY] == 0){
6154 U->joinArmyFromNext = true;
6155 U->persuasion = true;
6158 if(buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3){
6161 if(buildTeam[possionX][possionY] == 4 || buildTeam[possionX][possionY] == 5){
6164 if(buildTeam[possionX][possionY] == -1){
6173 -(void)addUnitStatus{
6177 while (U->next) {omgCnt++;
6180 U->next = calloc(1, sizeof(UNIT));
6183 if(omgCnt == 0) U = UTop;
6184 U->number = registerNum;
6186 for(int i = 0;i < UCN;i++){
6187 if([U->C.nameID isEqualToString:UC[i].nameID])
6191 U->chipNumber = unitNum[possionX][possionY];
6192 U->chipNumberL = loadNum[possionX][possionY];
6193 U->C.chipNumb = unitNum[possionX][possionY];
6194 U->CL.chipNumb = loadNum[possionX][possionY];
6198 if(unitTeam[possionX][possionY] == 0 || unitTeam[possionX][possionY] == 1){
6200 if(unitTeam[possionX][possionY] == 1){
6201 U->joinArmyFromNext = true;
6202 U->persuasion = true;
6205 if(MF[MFselectedRow+1].MS.playerSet1 == 2){
6209 if(unitTeam[possionX][possionY] == 2 || unitTeam[possionX][possionY] == 3){
6211 if(unitTeam[possionX][possionY] == 3){
6212 U->joinArmyFromNext = true;
6213 U->persuasion = true;
6216 if(MF[MFselectedRow+1].MS.playerSet2 == 2){
6220 if(unitTeam[possionX][possionY] == 4 || unitTeam[possionX][possionY] == 5){
6222 if(unitTeam[possionX][possionY] == 5){
6223 U->joinArmyFromNext = true;
6224 U->persuasion = true;
6228 if(unitTeam[possionX][possionY] == -1){
6230 if(unitTeam[possionX][possionY] == 0){
6231 U->joinArmyFromNext = false;
6232 U->persuasion = true;
6238 [self SetUnitStatus:unitNum[possionX][possionY]];
6242 -(void)addSummonStatus{
6246 while (U->next) {omgCnt++;
6249 U->next = calloc(1, sizeof(UNIT));
6252 if(omgCnt == 0) U = UTop;
6259 if(unitTeam[CSLU->x][CSLU->y] == 0 || unitTeam[CSLU->x][CSLU->y] == 1){
6261 if(unitTeam[CSLU->x][CSLU->y] == 1){
6262 U->joinArmyFromNext = true;
6263 U->persuasion = true;
6266 if(unitTeam[CSLU->x][CSLU->y] == 2 || unitTeam[CSLU->x][CSLU->y] == 3){
6268 if(unitTeam[CSLU->x][CSLU->y] == 3){
6269 U->joinArmyFromNext = true;
6270 U->persuasion = true;
6273 if(unitTeam[CSLU->x][CSLU->y] == 4 || unitTeam[CSLU->x][CSLU->y] == 5){
6275 if(unitTeam[CSLU->x][CSLU->y] == 5){
6276 U->joinArmyFromNext = true;
6277 U->persuasion = true;
6280 if(unitTeam[CSLU->x][CSLU->y] == -1){
6282 if(unitTeam[CSLU->x][CSLU->y] == 0){
6283 U->joinArmyFromNext = false;
6284 U->persuasion = true;
6288 [self SetUnitStatus:unitNum[possionX][possionY]];
6290 for(int i = 0;i < UCN;i++){
6291 if([U->C.nameID isEqualToString:UC[i].nameID])
6294 for(int i = 0;i < LCN;i++){
6295 if([U->CL.nameID isEqualToString:LC[i].nameID])
6298 for(int i = 0;i < UCN;i++){
6299 if([U->C.nameID isEqualToString:UC[i].nameID])
6302 for(int i = 0;i < LCN;i++){
6303 if([U->CL.nameID isEqualToString:LC[i].nameID])
6311 -(void)initUnitStatusDat{
6314 for(int i = 0;i < sdd2[datRow].registerNum;i++){
6316 U = calloc(1, sizeof(UNIT));
6322 U->x = sdd2[datRow].dU[i].x;
6323 U->y = sdd2[datRow].dU[i].y;
6324 U->number = sdd2[datRow].dU[i].number;;
6325 U->chipNumber = sdd2[datRow].dU[i].chipNumber;
6326 U->chipNumberL = sdd2[datRow].dU[i].chipNumberL;
6327 U->C.chipNumb = sdd2[datRow].dU[i].C.chipNumb;
6328 U->CL.chipNumb = sdd2[datRow].dU[i].C.chipNumb;
6330 U->dead = sdd2[datRow].dU[i].dead;
6332 U->team = sdd2[datRow].dU[i].team;
6333 U->CPU = sdd2[datRow].dU[i].CPU;
6334 U->joinArmyFromNext = sdd2[datRow].dU[i].joinArmyFromNext;
6335 U->persuasion = sdd2[datRow].dU[i].persuasion;
6337 U->ix = sdd2[datRow].dU[i].ix;
6338 U->iy = sdd2[datRow].dU[i].iy;
6339 U->iz = sdd2[datRow].dU[i].iz;
6343 if(U->chipNumber >= 0) [self SetUnitStatus:U->chipNumber];
6344 if(U->chipNumberL >= 0) [self SetUnitStatus2:U->chipNumberL];
6346 U->C.S_C = sdd2[datRow].dU[i].C.S_C;
6347 U->C.R_C = sdd2[datRow].dU[i].C.R_C;
6349 if(U->chipNumberL >= 0) U->img = [LC[U->chipNumberL].img retain];
6350 else U->img = [UC[U->chipNumber].img retain];
6353 unitTeam[U->x][U->y] = U->team;
6354 unitNum[U->x][U->y] = U->chipNumber;
6355 loadNum[U->x][U->y] = U->chipNumberL;
6358 U->next = calloc(1, sizeof(UNIT));
6361 if(U) U->next = NULL;
6367 -(void)initUnitStatus{
6371 for(int i=1;i <= chipHeight;i++){
6372 for(int j=1;j<= chipWidth;j++){
6373 if(unitNum[j][i] >= 0 || loadNum[j][i] >= 0){
6375 if(registerNum == 1){
6376 U = calloc(1, sizeof(UNIT));
6383 U->number = registerNum;
6384 U->chipNumber = unitNum[j][i];
6385 U->chipNumberL = loadNum[j][i];
6386 U->C.chipNumb = U->chipNumber;
6387 U->CL.chipNumb = U->chipNumberL;
6389 if(unitTeam[j][i] == 0 || unitTeam[j][i] == 1){
6391 if(unitTeam[j][i] == 1){
6392 U->joinArmyFromNext = true;
6393 U->persuasion = true;
6395 if(MF[MFselectedRow+1].MS.playerSet1 == 2)
6398 if(unitTeam[j][i] == 2 || unitTeam[j][i] == 3){
6400 if(unitTeam[i][j] == 2){
6401 U->joinArmyFromNext = true;
6402 U->persuasion = true;
6404 if(MF[MFselectedRow+1].MS.playerSet2 == 2)
6407 if(unitTeam[j][i] == 4 || unitTeam[j][i] == 5){
6409 if(unitTeam[j][i] == 5){
6410 U->joinArmyFromNext = true;
6411 U->persuasion = true;
6415 if(unitTeam[j][i] == -1){
6417 if(unitTeam[j][i] == -1){
6418 U->joinArmyFromNext = false;
6419 U->persuasion = true;
6423 if(unitNum[j][i] >= 0) [self SetUnitStatus:unitNum[j][i]];
6424 if(loadNum[j][i] >= 0) [self SetUnitStatus2:loadNum[j][i]];
6426 U->next = calloc(1, sizeof(UNIT));
6437 if(Ucrnt->x == U->x && Ucrnt->y == U->y){
6449 if(U) U->next = NULL;
6454 -(void)initBuildStatusDat{
6457 for(int i = 0;i < sdd2[datRow].registerNumB;i++){
6459 B = calloc(1, sizeof(BUILD));
6465 B->x = sdd2[datRow].dB[i].x;
6466 B->y = sdd2[datRow].dB[i].y;
6467 B->team = sdd2[datRow].dB[i].team;
6468 B->number = sdd2[datRow].dB[i].number;
6469 B->chipNumber = sdd2[datRow].dB[i].chipNumber;
6470 B->makeLv = sdd2[datRow].dB[i].makeLv;
6471 B->dead = sdd2[datRow].dB[i].dead;
6473 B->C = BC[B->chipNumber];
6474 B->C.S_C = sdd2[datRow].dB[i].C.S_C;
6476 B->img = [BC[B->chipNumber].img retain];
6478 buildTeam[B->x][B->y] = B->team;
6479 buildNum[B->x][B->y] = B->chipNumber;
6481 B->next = calloc(1, sizeof(BUILD));
6483 if(B) B->next = NULL;
6489 -(void)initBuildStatus{
6492 for(int i=1;i <= chipHeight;i++){
6493 for(int j=1;j<= chipWidth;j++){
6494 if(buildNum[j][i] >= 0){
6496 if(registerNumB == 1){
6497 B = calloc(1, sizeof(BUILD));
6500 if(registerNumB > 1)
6504 B->number = registerNumB;
6505 B->chipNumber = buildNum[j][i];
6507 if(buildTeam[j][i] == 0 || buildTeam[j][i] == 1){
6511 if(buildTeam[j][i] == 2 || buildTeam[j][i] == 3){
6515 if(buildTeam[j][i] == 4 || buildTeam[j][i] == 5){
6519 if(buildTeam[j][i] == -1){
6523 //[self SetUnitStatus:unitNum[j][i]];
6525 B->C = BC[buildNum[j][i]];
6527 B->next = calloc(1, sizeof(BUILD));
6533 if(B) B->next = NULL;
6538 -(void)SetUnitStatus:(int)UN{
6541 U->C.S_C.vigor = 100;
6548 AtopE1 = UC[UN].eHandL.A;
6549 AtopE2 = UC[UN].eHandR.A;
6550 U->C.A = calloc(1, sizeof(ATTACK));
6556 while(UC[UN].eHandR.A != NULL){ow1 = true;
6557 *U->C.A = *UC[UN].eHandR.A;
6558 U->C.A->next = calloc(1, sizeof(ATTACK));
6559 U->C.A->next->next = NULL;
6560 if(UC[UN].eHandR.A->next != NULL) U->C.A = U->C.A->next;
6561 UC[UN].eHandR.A = UC[UN].eHandR.A->next;
6562 U->C.attackListNum++;
6564 UC[UN].eHandR.A = AtopE2;
6568 U->C.A = U->C.A->next;
6571 while(UC[UN].eHandL.A != NULL){ow2 = true;
6572 *U->C.A = *UC[UN].eHandL.A;
6573 U->C.A->next = calloc(1, sizeof(ATTACK));
6574 U->C.A->next->next = NULL;
6575 if(UC[UN].eHandL.A->next != NULL) U->C.A = U->C.A->next;
6576 UC[UN].eHandL.A = UC[UN].eHandL.A->next;
6577 U->C.attackListNum++;
6579 UC[UN].eHandL.A = AtopE1;
6582 U->C.A = U->C.A->next;
6585 while(UC[UN].A != NULL){
6586 *U->C.A = *UC[UN].A;
6587 U->C.A->next = calloc(1, sizeof(ATTACK));
6588 U->C.A->next->next = NULL;
6589 if(UC[UN].A->next != NULL) U->C.A = U->C.A->next;
6590 UC[UN].A = UC[UN].A->next;
6592 U->C.A->next = NULL;
6595 if(U->C.A) if(!U->C.A->name)
6600 -(void)SetUnitStatus2:(int)UN{
6607 U->CL.A = calloc(1, sizeof(ATTACK));
6609 while(LC[UN].A != NULL){
6610 *U->CL.A = *LC[UN].A;
6611 U->CL.A->next = calloc(1, sizeof(ATTACK));
6612 U->CL.A->next->next = NULL;
6613 if(LC[UN].A->next != NULL) U->CL.A = U->CL.A->next;
6614 LC[UN].A = LC[UN].A->next;
6616 U->CL.A->next = NULL;
6623 -(void)initCAttackList2{
6626 CAttackListMA = [NSMutableArray new];
6628 [self willChangeValueForKey:@"CAttackListMA"];
6629 [CAttackListMA removeAllObjects];
6630 [self didChangeValueForKey:@"CAttackListMA"];
6633 if(!battleSet2PushedFlag){
6635 while (!(AUN[1] == U->number)) {
6639 for(int i = 0;i < U->CL.attackListNum;i++){
6641 NSMutableDictionary* dict = [NSMutableDictionary new];
6642 [dict setValue:[NSString stringWithFormat:@"%@", U->CL.A->name] forKey:@"name"];
6643 [dict setValue:[NSString stringWithFormat:@"%g", U->CL.A->totalD] forKey:@"atk"];
6644 if(U->CL.A->rangeA != U->CL.A->rangeB){
6645 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->CL.A->rangeA, U->CL.A->rangeB] forKey:@"range"];
6647 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->rangeA] forKey:@"range"];
6649 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->hitPercent] forKey:@"hit"];
6650 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
6652 [self willChangeValueForKey:@"CAttackListMA"];
6653 [CAttackListMA addObject:dict];
6654 [self didChangeValueForKey:@"CAttackListMA"];
6656 U->CL.A = U->CL.A->next;
6662 while (!(DUN[1] == U->number)) {
6666 for(int i = 0;i < U->CL.attackListNum;i++){
6669 U->CL.attackListNum = i;
6672 NSMutableDictionary* dict = [NSMutableDictionary new];
6673 [dict setValue:[NSString stringWithFormat:@"%@", U->CL.A->name] forKey:@"name"];
6674 [dict setValue:[NSString stringWithFormat:@"%g", U->CL.A->totalD] forKey:@"atk"];
6675 if(U->CL.A->rangeA != U->CL.A->rangeB){
6676 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->CL.A->rangeA, U->CL.A->rangeB] forKey:@"range"];
6678 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->rangeA] forKey:@"range"];
6680 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->hitPercent] forKey:@"hit"];
6681 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
6683 [self willChangeValueForKey:@"CAttackListMA"];
6684 [CAttackListMA addObject:dict];
6685 [self didChangeValueForKey:@"CAttackListMA"];
6687 U->CL.A = U->CL.A->next;
6695 [CAttackListAC setSelectionIndex:crCAL];
6697 [self initCAttackSelect2];
6704 -(void)initCAttackList{
6706 CAttackListMA = [NSMutableArray new];
6708 [self willChangeValueForKey:@"CAttackListMA"];
6709 [CAttackListMA removeAllObjects];
6710 [self didChangeValueForKey:@"CAttackListMA"];
6713 if(!battleSet2PushedFlag){
6715 while (!(AUN[1] == U->number)) {
6719 for(int i = 0;i < U->C.attackListNum;i++){
6721 U->C.attackListNum = i;
6724 NSMutableDictionary* dict = [NSMutableDictionary new];
6725 [dict setValue:[NSString stringWithFormat:@"%@", U->C.A->name] forKey:@"name"];
6726 [dict setValue:[NSString stringWithFormat:@"%g", U->C.A->totalD] forKey:@"atk"];
6727 if(U->C.A->rangeA != U->C.A->rangeB){
6728 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->C.A->rangeA, U->C.A->rangeB] forKey:@"range"];
6730 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->rangeA] forKey:@"range"];
6732 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->hitPercent] forKey:@"hit"];
6733 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
6735 [self willChangeValueForKey:@"CAttackListMA"];
6736 [CAttackListMA addObject:dict];
6737 [self didChangeValueForKey:@"CAttackListMA"];
6739 U->C.A = U->C.A->next;
6746 while (!(DUN[1] == U->number)) {
6750 for(int i = 0;i < U->C.attackListNum;i++){
6751 NSMutableDictionary* dict = [NSMutableDictionary new];
6752 [dict setValue:[NSString stringWithFormat:@"%@", U->C.A->name] forKey:@"name"];
6753 [dict setValue:[NSString stringWithFormat:@"%g", U->C.A->totalD] forKey:@"atk"];
6754 if(U->C.A->rangeA != U->C.A->rangeB){
6755 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->C.A->rangeA, U->C.A->rangeB] forKey:@"range"];
6757 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->rangeA] forKey:@"range"];
6759 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->hitPercent] forKey:@"hit"];
6760 //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
6762 [self willChangeValueForKey:@"CAttackListMA"];
6763 [CAttackListMA addObject:dict];
6764 [self didChangeValueForKey:@"CAttackListMA"];
6766 U->C.A = U->C.A->next;
6774 [CAttackListAC setSelectionIndex:crCAL];
6776 [self initCAttackSelect];
6779 -(void)initBCreateList{
6780 BCreateListMA = [NSMutableArray new];
6782 [self willChangeValueForKey:@"BCreateListMA"];
6783 [BCreateListMA removeAllObjects];
6784 [self didChangeValueForKey:@"BCreateListMA"];
6785 buildSkillFlag = false;
6789 while (!(AUN[1] == U->number)) {
6797 while (U->C.S->type != 1 && U->C.S->next) {
6798 U->C.S = U->C.S->next;
6800 if(U->C.S->type != 1) {
6805 for(int i = 0;U->C.S->list[i] > 0;i++){
6806 NSMutableDictionary* dict = [NSMutableDictionary new];
6807 [dict setValue:[NSString stringWithFormat:@"%@", BC[U->C.S->list[i]-1].name] forKey:@"name"];
6808 [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d",
6809 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"];
6810 [dict setValue:BC[U->C.S->list[i]-1].img forKey:@"img"];
6812 [self willChangeValueForKey:@"BCreateListMA"];
6813 [BCreateListMA addObject:dict];
6814 [self didChangeValueForKey:@"BCreateListMA"];
6816 buildSkillFlag = true;
6822 -(void)initCSummonList{
6823 CSummonListMA = [NSMutableArray new];
6825 [self willChangeValueForKey:@"CSummonListMA"];
6826 [CSummonListMA removeAllObjects];
6827 [self didChangeValueForKey:@"CSummonListMA"];
6829 summonSkillFlag = false;
6833 while (!(AUN[1] == U->number)) {
6841 while (U->C.S->type != 2 && U->C.S->next) {
6842 U->C.S = U->C.S->next;
6844 if(U->C.S->type != 2) {
6849 for(int i = 0;U->C.S->list[i] > 0;i++){
6850 NSMutableDictionary* dict = [NSMutableDictionary new];
6851 [dict setValue:[NSString stringWithFormat:@"%@", UC[U->C.S->list[i]-1].nameClass] forKey:@"name"];
6852 [dict setValue:[NSString stringWithFormat:@"%g", UC[U->C.S->list[i]-1].S_M.HP] forKey:@"HP"];
6853 [dict setValue:[NSString stringWithFormat:@"%g", U->C.S->cost[i]] forKey:@"cost"];
6854 [dict setValue:UC[U->C.S->list[i]-1].img forKey:@"img"];
6856 [self willChangeValueForKey:@"CSummonListMA"];
6857 [CSummonListMA addObject:dict];
6858 [self didChangeValueForKey:@"CSummonListMA"];
6860 summonSkillFlag = true;
6868 -(void)AttackDisplay{
6870 if(battleRdy) return;
6871 if(!battleSetUp) return;
6872 if(!fuckingLoadBugFix) return;
6875 while (!(AUN[1] == U->number)) {
6878 [bplayer1 setImage:U->C.imgb];
6879 [bplayer1 setImageScaling:NSScaleToFit];
6880 [nplayer1 setStringValue:U->C.name];
6881 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
6882 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
6883 [iplayer1 setImage:MC[chipNum[U->x][U->y]].img];
6884 [mplayer1 setStringValue:MC[chipNum[U->x][U->y]].name];
6885 [rplayer1 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U->x][U->y]].dmgfix]];
6891 while (!(DUN[1] == U->number)) {
6894 [bplayer2 setImage:U->C.imgb];
6895 [bplayer1 setImageScaling:NSScaleToFit];
6896 [nplayer2 setStringValue:U->C.name];
6897 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
6898 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
6899 [iplayer2 setImage:MC[chipNum[U->x][U->y]].img];
6900 [mplayer2 setStringValue:MC[chipNum[U->x][U->y]].name];
6901 [rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U->x][U->y]].dmgfix]];
6904 [self AttackDisplay2];
6907 [battleDialog setStringValue:@"攻撃開始!!!!"];
6913 -(void)AttackDisplay2{
6917 while (!(DUN[1] == U->number)) {
6922 while (!(AUN[1] == U->number)) {
6927 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){U = UTop;
6930 while (!(AUN[1] == U->number)) {
6933 [bplayer1 setImage:U->CL.imgb];
6934 [bplayer1 setImageScaling:NSScaleToFit];
6935 [nplayer1 setStringValue:U->CL.name];
6936 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
6937 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
6943 while (!(DUN[1] == U->number)) {
6946 [bplayer2 setImage:U->CL.imgb];
6947 [bplayer1 setImageScaling:NSScaleToFit];
6948 [nplayer2 setStringValue:U->CL.name];
6949 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
6950 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
6954 }else if(U->chipNumberL >= 0 && U2->chipNumberL < 0){U = UTop;
6956 while (!(AUN[1] == U->number)) {
6959 [bplayer1 setImage:U->CL.imgb];
6960 [bplayer1 setImageScaling:NSScaleToFit];
6961 [nplayer1 setStringValue:U->CL.name];
6962 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
6963 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
6969 while (!(DUN[1] == U->number)) {
6972 [bplayer2 setImage:U->C.imgb];
6973 [bplayer1 setImageScaling:NSScaleToFit];
6974 [nplayer2 setStringValue:U->C.name];
6975 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
6976 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
6982 }else if(U->chipNumberL < 0 && U2->chipNumberL >= 0){U = UTop;
6984 while (!(AUN[1] == U->number)) {
6987 [bplayer1 setImage:U->C.imgb];
6988 [bplayer1 setImageScaling:NSScaleToFit];
6989 [nplayer1 setStringValue:U->C.name];
6990 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
6991 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
6997 while (!(DUN[1] == U->number)) {
7000 [bplayer2 setImage:U->CL.imgb];
7001 [bplayer1 setImageScaling:NSScaleToFit];
7002 [nplayer2 setStringValue:U->CL.name];
7003 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7004 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
7012 -(bool)sortEcheck:(ATTACK*)AT opponent:(UNIT*)UT{
7014 if(AT->riku == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_RIKU)
7016 if(AT->umi == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_UMI)
7018 if(AT->chu == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_CHU)
7020 if(AT->sora == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_SORA)
7028 -(void)setBattlePanel{
7032 while (!(DUN[1] == U->number)) {
7037 while (!(AUN[1] == U->number)) {
7041 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){
7043 [self setBattlePanelT2];
7045 }else if(U->chipNumberL >= 0 && U2->chipNumberL <= 0){
7047 [self setBattlePanelT3];
7049 }else if(U->chipNumberL <= 0 && U2->chipNumberL >= 0){
7051 [self setBattlePanelT4];
7056 while (!(AUN[1] == U->number)) {
7060 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 || MF[MFselectedRow+1].MS.playerSet2 == 2)){
7061 cpuModeBATTLEflag = false;
7067 ATTACK *aTop2 = U->C.A;
7079 double urSupposedToGet;
7081 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
7085 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
7088 double oopsIsRight = 0;
7092 oopsIsRight = U->C.S_C.MEL;
7094 oopsIsRight = U->C.S_C.MIS;
7096 oopsIsRight = oopsIsRight/100;
7098 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
7100 if(!U2->C.aura && U->C.A->D){
7101 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
7102 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7103 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
7104 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7105 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
7106 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7107 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
7108 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7109 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
7110 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7111 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
7112 }else if(U->C.A->D){
7113 double val = val = 1/log(3+U2->C.S_C.MP/64);
7114 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
7115 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7116 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
7117 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7118 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
7119 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7120 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
7121 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7122 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
7123 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7124 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
7126 double val2 = log(3+U2->C.S_C.MP/64);
7128 mostDmg2 = mostDmg2*val2;
7131 if(U->C.A->D->fix == 2){
7132 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;
7134 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;
7135 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;
7136 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;
7137 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;
7138 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;
7141 }else if(U->C.A->D->fix == 1){
7142 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;
7144 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;
7145 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;
7146 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;
7147 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;
7148 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;
7150 }else if(U->C.A->D->fix == 0){
7157 costVIG = U->C.A->vigor;
7160 mostDmg2 = [self dmgResist:mostDmg2];
7162 //NSLog(@"crCAL1 %d", crCAL1);
7163 if(mostDmg2 < 0) mostDmg2 = 1;
7166 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]){
7170 //mostDmg = U->C.A->totalD;
7174 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]){
7175 //mostDmg = U->C.A->totalD;
7176 mostHit = U->C.A->hitPercent;
7179 U->C.A = U->C.A->next;
7184 if(U->C.A->extent == 0 && mostNum >= 0 && !CPUmostDmgChoice){
7188 for(int i = 0;i < mostNum;i++){
7189 U->C.A = U->C.A->next;
7195 for(int i = 0;i < crCAL1;i++){
7196 U->C.A = U->C.A->next;
7200 CPUmostDmgChoice = false;
7203 mostNumSub = mostNum;
7206 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
7207 costVIG = U->C.A->vigor;
7209 if(U->C.A->rangeA <= unitBreak->atkRange && U->C.A->rangeB >= unitBreak->atkRange
7210 && mpCost <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
7220 while (!(AUN[1] == U->number)) {
7225 ATTACK *aTop = U->C.A;
7228 for(int i = 0;i < crCAL1;i++){
7229 U->C.A = U->C.A->next;
7232 //NSLog(@"%@", U->C.A->name);
7236 for (int i = 0;i < crCAL1;i++) {
7237 U->C.A = U->C.A->next;
7242 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7243 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7244 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7245 //NSLog(@"crCAL1 %d", crCAL1);
7247 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
7250 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7251 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7252 double oops = U->C.S_C.HP/U->C.S_M.HP*100;
7253 [combatLHP1 setIntValue:(int)oops];
7254 oops = U->C.S_C.MP/U->C.S_M.MP*100;
7255 [combatLMP1 setIntValue:(int)oops];
7257 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
7258 //NSLog(@"mostNumSub %d crCAL1 %d", mostNumSub, crCAL1);
7259 hitFix = U->C.A->hitPercent;
7265 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7266 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7267 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7268 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
7269 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7270 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7271 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7274 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7275 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7276 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7277 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
7278 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7279 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7280 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7291 while (!(DUN[1] == U->number)) {
7295 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
7297 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
7300 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
7302 if(battleDod2Flag) hit = hit / 2;
7305 if(hit > 100) hit = 100;
7306 if(hit < 0) hit = 0;
7308 if(u2A->D->sort == 1){
7312 if([self sortEcheck:u2A opponent:U])
7314 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
7315 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7324 ATTACK *aTop2 = U->C.A;
7330 double urSupposedToGet;
7332 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
7335 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
7337 double oopsIsRight = 0;
7341 oopsIsRight = U->C.S_C.MEL;
7343 oopsIsRight = U->C.S_C.MIS;
7345 oopsIsRight = oopsIsRight/100;
7347 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
7349 if(!U2->C.aura && U->C.A->D){
7350 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
7351 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7352 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
7353 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7354 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
7355 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7356 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
7357 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7358 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
7359 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7360 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
7361 }else if(U->C.A->D){
7362 double val = val = 1/log(3+U2->C.S_C.MP/64);
7363 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
7364 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7365 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
7366 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7367 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
7368 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7369 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
7370 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7371 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
7372 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7373 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
7375 double val2 = log(3+U2->C.S_C.MP/64);
7377 mostDmg2 = mostDmg2*val2;
7380 if(U->C.A->D->fix == 2){
7381 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;
7383 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;
7384 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;
7385 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;
7386 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;
7387 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;
7390 }else if(U->C.A->D->fix == 1){
7391 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;
7393 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;
7394 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;
7395 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;
7396 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;
7397 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;
7399 }else if(U->C.A->D->fix == 0){
7408 mostDmg2 = [self dmgResist:mostDmg2];
7411 costVIG = U->C.A->vigor;
7414 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]){
7418 //mostDmg = U->C.A->totalD;
7422 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]){
7423 //mostDmg = U->C.A->totalD;
7424 mostHit = U->C.A->hitPercent;
7427 U->C.A = U->C.A->next;
7435 mostNumSub = mostNum;
7437 for(int i = 0;i < mostNum;i++){
7438 U->C.A = U->C.A->next;
7440 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
7443 costVIG = U->C.A->vigor;
7446 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){
7448 }else while(U->C.A){
7449 U->C.A = U->C.A->next;
7458 //NSLog(@"%@", U->C.name);
7459 for (int i = 0;i < crCAL2;i++) {
7460 U->C.A = U->C.A->next;
7465 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7466 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7467 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7468 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7469 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7470 double oops2 = U->C.S_C.HP/U->C.S_M.HP*100;
7471 [combatLHP2 setIntValue:(int)oops2];
7472 oops2 = U->C.S_C.MP/U->C.S_M.MP*100;
7473 [combatLMP2 setIntValue:(int)oops2];
7478 mpCost2 = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
7479 costVIG = U->C.A->vigor;
7482 if(U->C.A && U->C.A->D){
7483 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]){
7484 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
7485 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
7486 hitFix = U->C.A->hitPercent;
7488 }else if(u2A->D->sort == 1 || !U->C.A || U->C.A->D->sort == 1 || [self sortEcheck:U->C.A opponent:U]){
7489 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
7492 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
7498 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7499 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7500 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7501 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7502 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
7503 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7504 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7508 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7509 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7510 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7511 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7512 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
7513 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7514 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7518 while (!(DUN[1] == U->number)) {
7524 while (!(AUN[1] == U->number)) {
7530 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
7533 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
7536 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
7537 if(battleDod1Flag) hit /= 2;
7540 if(hit > 100) hit = 100;
7541 if(hit < 0) hit = 0;
7543 if([self sortEcheck:U2A opponent:U])
7546 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
7547 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7550 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7555 if(CPUAttackSubmitFlag){
7556 if(unitCPUAttackFlag){
7557 [battleCancelBtn setEnabled:NO];
7558 [battleCancelBtn setTransparent:YES];
7560 [battleCancelBtn setEnabled:YES];
7561 [battleCancelBtn setTransparent:NO];
7563 if(displayBattleCheckPanelFlag == 0) displayBattleCheckPanelFlag = 1;
7565 [battleCancelBtn setEnabled:YES];
7566 [battleCancelBtn setTransparent:NO];
7570 while (!(AUN[1] == U->number)) {
7575 [battleAttackBtn1 setEnabled:NO];
7576 [battleAttackBtn1 setTransparent:YES];
7577 [battleGuardBtn1 setEnabled:NO];
7578 [battleGuardBtn1 setTransparent:YES];
7579 [battleDodgeBtn1 setEnabled:NO];
7580 [battleDodgeBtn1 setTransparent:YES];
7582 [battleAttackBtn1 setEnabled:YES];
7583 [battleAttackBtn1 setTransparent:NO];
7584 [battleGuardBtn1 setEnabled:YES];
7585 [battleGuardBtn1 setTransparent:NO];
7586 [battleDodgeBtn1 setEnabled:YES];
7587 [battleDodgeBtn1 setTransparent:NO];
7591 while (!(DUN[1] == U->number)) {
7595 [battleAttackBtn2 setEnabled:NO];
7596 [battleAttackBtn2 setTransparent:YES];
7597 [battleGuardBtn2 setEnabled:NO];
7598 [battleGuardBtn2 setTransparent:YES];
7599 [battleDodgeBtn2 setEnabled:NO];
7600 [battleDodgeBtn2 setTransparent:YES];
7602 [battleAttackBtn2 setEnabled:YES];
7603 [battleAttackBtn2 setTransparent:NO];
7604 [battleGuardBtn2 setEnabled:YES];
7605 [battleGuardBtn2 setTransparent:NO];
7606 [battleDodgeBtn2 setEnabled:YES];
7607 [battleDodgeBtn2 setTransparent:NO];
7614 for (int i = 1; i < DUN[1]; i++) {
7620 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
7621 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
7628 [battleStartBtn setEnabled:YES];
7629 [battleStartBtn setTransparent:NO];
7634 avPlayerFlag1 = false;
7635 avPlayerFlag2 = false;
7638 -(void)setBattlePanelT2{
7642 ATTACK *aTop2 = U->CL.A;
7643 while (!(AUN[1] == U->number)) {
7647 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 || MF[MFselectedRow+1].MS.playerSet2 == 2)){
7648 cpuModeBATTLEflag = false;
7655 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
7656 costVIG = U->C.A->vigor;
7657 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]){
7658 mostDmg = U->CL.A->totalD;
7661 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]){
7662 //mostDmg = U->C.A->totalD;
7663 mostHit = U->CL.A->hitPercent;
7666 U->CL.A = U->CL.A->next;
7671 for(int i = 0;i < crCAL1;i++){
7672 U->CL.A = U->CL.A->next;
7675 ATTACK *ua = U->CL.A;
7679 mostNumSub = mostNum;
7683 for(int i = 0;i < mostNum;i++){
7684 U->C.A = U->CL.A->next;
7686 if(U->CL.A->extent == 0){
7690 for(int i = 0;i < mostNum;i++){
7691 U->CL.A = U->CL.A->next;
7697 for(int i = 0;i < crCAL1;i++){
7698 U->CL.A = U->CL.A->next;
7706 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
7707 costVIG = U->C.A->vigor;
7710 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){
7712 }else while(U->CL.A){
7713 U->CL.A = U->CL.A->next;
7720 while (!(AUN[1] == U->number)) {
7725 ATTACK *aTop = U->CL.A;
7731 for(int i = 0;i < crCAL1;i++){
7732 U->CL.A = U->CL.A->next;
7739 for (int i = 0;i < crCAL1;i++) {
7740 U->CL.A = U->CL.A->next;
7745 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
7746 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7747 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
7748 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
7749 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7750 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7751 double oops = U->CL.S_C.HP/U->CL.S_M.HP*100;
7752 [combatLHP1 setIntValue:(int)oops];
7753 oops = U->CL.S_C.EN/U->CL.S_M.EN*100;
7754 [combatLMP1 setIntValue:(int)oops];
7756 hit = U->CL.S_C.MOB + U->C.S_C.HIT*U->C.S_C.HP/U->C.S_M.HP;
7757 hitFix = U->CL.A->hitPercent;
7763 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
7764 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7765 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
7766 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
7767 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7768 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7769 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7772 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
7773 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7774 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
7775 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
7776 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7777 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7778 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7789 while (!(DUN[1] == U->number)) {
7793 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;
7794 if(battleDod2Flag) hit = hit / 2;
7797 if(hit > 100) hit = 100;
7798 if(hit < 0) hit = 0;
7800 if(u2A->D->sort == 1){
7804 if([self sortEcheck:u2A opponent:U])
7806 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
7807 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7815 costVIG = U->C.A->vigor;
7817 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
7818 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]){
7819 mostDmg = U->CL.A->totalD;
7822 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]){
7823 //mostDmg = U->C.A->totalD;
7824 mostHit = U->CL.A->hitPercent;
7827 U->CL.A = U->CL.A->next;
7833 mostNumSub = mostNum;
7836 for(int i = 0;i < mostNum;i++){
7837 U->CL.A = U->CL.A->next;
7844 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
7845 costVIG = U->C.A->vigor;
7848 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){
7850 }else while(U->CL.A){
7851 U->CL.A = U->CL.A->next;
7861 for (int i = 0;i < crCAL2;i++) {
7862 U->CL.A = U->CL.A->next;
7868 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
7869 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7870 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
7871 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7872 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7873 double oops2 = U->CL.S_C.HP/U->CL.S_M.HP*100;
7874 [combatLHP2 setIntValue:(int)oops2];
7875 oops2 = U->CL.S_C.EN/U->CL.S_M.EN*100;
7876 [combatLMP2 setIntValue:(int)oops2];
7880 if(U->CL.A && U->CL.A->D){
7884 mpCost2 = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
7887 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]){
7888 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
7889 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
7890 hitFix = U->CL.A->hitPercent;
7892 }else if(u2A->D->sort == 1 || !U->CL.A || U->CL.A->D->sort == 1 || [self sortEcheck:U->CL.A opponent:U2]){
7893 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
7897 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
7900 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
7906 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
7907 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7908 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
7909 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7910 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
7911 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7912 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7916 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
7917 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7918 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
7919 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7920 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
7921 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7922 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7926 while (!(AUN[1] == U->number)) {
7931 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;
7932 if(battleDod1Flag) hit /= 2;
7935 if(hit > 100) hit = 100;
7936 if(hit < 0) hit = 0;
7937 if([self sortEcheck:U2A opponent:U])
7939 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
7940 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7943 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7947 while (!(AUN[1] == U->number)) {
7952 [battleAttackBtn1 setEnabled:NO];
7953 [battleAttackBtn1 setTransparent:YES];
7954 [battleGuardBtn1 setEnabled:NO];
7955 [battleGuardBtn1 setTransparent:YES];
7956 [battleDodgeBtn1 setEnabled:NO];
7957 [battleDodgeBtn1 setTransparent:YES];
7959 [battleAttackBtn1 setEnabled:YES];
7960 [battleAttackBtn1 setTransparent:NO];
7961 [battleGuardBtn1 setEnabled:YES];
7962 [battleGuardBtn1 setTransparent:NO];
7963 [battleDodgeBtn1 setEnabled:YES];
7964 [battleDodgeBtn1 setTransparent:NO];
7968 while (!(DUN[1] == U->number)) {
7972 [battleAttackBtn2 setEnabled:NO];
7973 [battleAttackBtn2 setTransparent:YES];
7974 [battleGuardBtn2 setEnabled:NO];
7975 [battleGuardBtn2 setTransparent:YES];
7976 [battleDodgeBtn2 setEnabled:NO];
7977 [battleDodgeBtn2 setTransparent:YES];
7979 [battleAttackBtn2 setEnabled:YES];
7980 [battleAttackBtn2 setTransparent:NO];
7981 [battleGuardBtn2 setEnabled:YES];
7982 [battleGuardBtn2 setTransparent:NO];
7983 [battleDodgeBtn2 setEnabled:YES];
7984 [battleDodgeBtn2 setTransparent:NO];
7989 for (int i = 1; i < DUN[1]; i++) {
7994 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
7995 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
7998 [battleStartBtn setEnabled:NO];
7999 [battleStartBtn setTransparent:YES];
8002 [battleStartBtn setEnabled:YES];
8003 [battleStartBtn setTransparent:NO];
8008 avPlayerFlag1 = false;
8009 avPlayerFlag2 = false;
8012 -(void)setBattlePanelT3{
8016 while (!(AUN[1] == U->number)) {
8020 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 &&MF[MFselectedRow+1].MS.playerSet2 == 2)){
8021 cpuModeBATTLEflag = false;
8026 ATTACK *aTop2 = U->C.A;
8029 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
8031 costVIG = U->C.A->vigor;
8033 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]){
8034 mostDmg = U->C.A->totalD;
8038 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]){
8039 //mostDmg = U->C.A->totalD;
8040 mostHit = U->C.A->hitPercent;
8043 U->C.A = U->C.A->next;
8048 for(int i = 0;i < crCAL1;i++){
8049 U->C.A = U->C.A->next;
8052 ATTACK *ua = U->C.A;
8056 mostNumSub = mostNum;
8059 for(int i = 0;i < mostNum;i++){
8060 U->C.A = U->C.A->next;
8062 if(U->C.A->extent == 0 && mostNum > 0){
8066 for(int i = 0;i < mostNum;i++){
8067 U->C.A = U->C.A->next;
8073 for(int i = 0;i < crCAL1;i++){
8074 U->C.A = U->C.A->next;
8077 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
8078 costVIG = U->C.A->vigor;
8081 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){
8090 while (!(AUN[1] == U->number)) {
8096 ATTACK *aTop = U->CL.A;
8102 for(int i = 0;i < crCAL1;i++){
8103 U->CL.A = U->CL.A->next;
8109 for (int i = 0;i < crCAL1;i++) {
8110 U->CL.A = U->CL.A->next;
8115 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8116 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8117 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8118 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
8119 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8120 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8121 double oops = U->CL.S_C.HP/U->CL.S_M.HP*100;
8122 [combatLHP1 setIntValue:(int)oops];
8123 oops = U->CL.S_C.EN/U->CL.S_M.EN*100;
8124 [combatLMP1 setIntValue:(int)oops];
8126 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
8127 hitFix = U->CL.A->hitPercent;
8133 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8134 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8135 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8136 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
8137 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8138 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8139 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8142 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8143 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8144 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8145 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
8146 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8147 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8148 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8157 while (!(AUN[1] == U->number)) {
8163 while (!(DUN[1] == U->number)) {
8167 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
8169 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
8172 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
8173 if(battleDod2Flag) hit = hit / 2;
8176 if(hit > 100) hit = 100;
8177 if(hit < 0) hit = 0;
8179 if(u2A->D->sort == 1){
8182 if([self sortEcheck:u2A opponent:U])
8184 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
8185 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8193 ATTACK *aTop2 = U->C.A;
8197 costVIG = U->C.A->vigor;
8199 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
8201 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]){
8202 mostDmg = U->C.A->totalD;
8206 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]){
8207 //mostDmg = U->C.A->totalD;
8208 mostHit = U->C.A->hitPercent;
8211 U->C.A = U->C.A->next;
8217 mostNumSub = mostNum;
8219 for(int i = 0;i < mostNum;i++){
8220 U->C.A = U->C.A->next;
8222 mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
8223 costVIG = U->C.A->vigor;
8225 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){
8227 }else while(U->C.A){
8228 U->C.A = U->C.A->next;
8236 for (int i = 0;i < crCAL2;i++) {
8237 U->C.A = U->C.A->next;
8243 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8244 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8245 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8246 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8247 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8248 double oops2 = U->C.S_C.HP/U->C.S_M.HP*100;
8249 [combatLHP2 setIntValue:(int)oops2];
8250 oops2 = U->C.S_C.MP/U->C.S_M.MP*100;
8251 [combatLMP2 setIntValue:(int)oops2];
8256 mpCost2 = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
8257 costVIG = U->C.A->vigor;
8260 if(U->C.A &&U->C.A->D){
8261 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]){
8262 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
8263 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
8264 hitFix = U->C.A->hitPercent;
8266 }else if(u2A->D->sort == 1 || !U->C.A || U->C.A->D->sort == 1 || [self sortEcheck:U->C.A opponent:U2]){
8267 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
8269 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
8275 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8276 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8277 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8278 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8279 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
8280 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8281 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8285 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8286 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8287 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8288 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8289 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
8290 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8291 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8295 while (!(AUN[1] == U->number)) {
8300 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;
8301 if(battleDod1Flag) hit /= 2;
8304 if(hit > 100) hit = 100;
8305 if(hit < 0) hit = 0;
8306 if([self sortEcheck:U2A opponent:U])
8308 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
8309 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8312 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8316 while (!(AUN[1] == U->number)) {
8321 [battleAttackBtn1 setEnabled:NO];
8322 [battleAttackBtn1 setTransparent:YES];
8323 [battleGuardBtn1 setEnabled:NO];
8324 [battleGuardBtn1 setTransparent:YES];
8325 [battleDodgeBtn1 setEnabled:NO];
8326 [battleDodgeBtn1 setTransparent:YES];
8328 [battleAttackBtn1 setEnabled:YES];
8329 [battleAttackBtn1 setTransparent:NO];
8330 [battleGuardBtn1 setEnabled:YES];
8331 [battleGuardBtn1 setTransparent:NO];
8332 [battleDodgeBtn1 setEnabled:YES];
8333 [battleDodgeBtn1 setTransparent:NO];
8337 while (!(DUN[1] == U->number)) {
8341 [battleAttackBtn2 setEnabled:NO];
8342 [battleAttackBtn2 setTransparent:YES];
8343 [battleGuardBtn2 setEnabled:NO];
8344 [battleGuardBtn2 setTransparent:YES];
8345 [battleDodgeBtn2 setEnabled:NO];
8346 [battleDodgeBtn2 setTransparent:YES];
8348 [battleAttackBtn2 setEnabled:YES];
8349 [battleAttackBtn2 setTransparent:NO];
8350 [battleGuardBtn2 setEnabled:YES];
8351 [battleGuardBtn2 setTransparent:NO];
8352 [battleDodgeBtn2 setEnabled:YES];
8353 [battleDodgeBtn2 setTransparent:NO];
8359 for (int i = 1; i < DUN[1]; i++) {
8363 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
8364 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
8367 [battleStartBtn setEnabled:NO];
8368 [battleStartBtn setTransparent:YES];
8371 [battleStartBtn setEnabled:YES];
8372 [battleStartBtn setTransparent:NO];
8377 avPlayerFlag1 = false;
8378 avPlayerFlag2 = false;
8381 -(void)setBattlePanelT4{
8385 while (!(AUN[1] == U->number)) {
8389 if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2)){
8390 cpuModeBATTLEflag = false;
8395 ATTACK *aTop2 = U->CL.A;
8398 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8399 costVIG = U->C.A->vigor;
8400 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]){
8401 mostDmg = U->CL.A->totalD;
8404 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]){
8405 //mostDmg = U->C.A->totalD;
8406 mostHit = U->CL.A->hitPercent;
8409 U->CL.A = U->CL.A->next;
8414 mostNumSub = mostNum;
8417 for(int i = 0;i < mostNum;i++){
8418 U->CL.A = U->CL.A->next;
8420 if(U->CL.A->extent == 0){
8424 for(int i = 0;i < mostNum;i++){
8425 U->CL.A = U->CL.A->next;
8431 for(int i = 0;i < crCAL1;i++){
8432 U->CL.A = U->CL.A->next;
8435 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8436 costVIG = U->C.A->vigor;
8437 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){
8439 }else while(U->CL.A){
8440 U->CL.A = U->CL.A->next;
8447 while (!(AUN[1] == U->number)) {
8452 ATTACK *aTop = U->C.A;
8458 for(int i = 0;i < crCAL1;i++){
8459 U->C.A = U->C.A->next;
8465 for (int i = 0;i < crCAL1;i++) {
8466 U->C.A = U->C.A->next;
8471 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8472 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8473 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8474 [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
8475 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8476 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8477 double oops = U->C.S_C.HP/U->C.S_M.HP*100;
8478 [combatLHP1 setIntValue:(int)oops];
8479 oops = U->C.S_C.MP/U->C.S_M.MP*100;
8480 [combatLMP1 setIntValue:(int)oops];
8482 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
8483 hitFix = U->C.A->hitPercent;
8489 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8490 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8491 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8492 [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
8493 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8494 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8495 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8498 [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8499 [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8500 [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8501 [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
8502 [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8503 [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8504 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8515 while (!(DUN[1] == U->number)) {
8519 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;
8520 if(battleDod2Flag) hit = hit / 2;
8523 if(hit > 100) hit = 100;
8524 if(hit < 0) hit = 0;
8526 if(u2A->D->sort == 1){
8529 if([self sortEcheck:u2A opponent:U])
8531 [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
8532 if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8540 ATTACK *aTop2 = U->CL.A;
8543 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8544 costVIG = U->C.A->vigor;
8545 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]){
8546 mostDmg = U->CL.A->totalD;
8549 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]){
8550 //mostDmg = U->C.A->totalD;
8551 mostHit = U->CL.A->hitPercent;
8554 U->CL.A = U->CL.A->next;
8558 mostNumSub = mostNum;
8562 for(int i = 0;i < mostNum;i++){
8563 U->CL.A = U->CL.A->next;
8565 mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8566 costVIG = U->C.A->vigor;
8567 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){
8569 }else while(U->CL.A){
8570 U->CL.A = U->CL.A->next;
8578 for (int i = 0;i < crCAL2;i++) {
8579 U->CL.A = U->CL.A->next;
8585 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8586 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8587 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8588 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8589 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8590 double oops2 = U->CL.S_C.HP/U->CL.S_M.HP*100;
8591 [combatLHP2 setIntValue:(int)oops2];
8592 oops2 = U->CL.S_C.EN/U->CL.S_M.EN*100;
8593 [combatLMP2 setIntValue:(int)oops2];
8598 mpCost2 = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8601 if(U->CL.A && U->CL.A->D){
8602 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]){
8603 [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
8604 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
8605 hitFix = U->CL.A->hitPercent;
8607 }else if(u2A->D->sort == 1 || !U->CL.A || U->CL.A->D->sort == 1 || [self sortEcheck:U->CL.A opponent:U2]){
8608 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
8610 [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
8616 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8617 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8618 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8619 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8620 [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
8621 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8622 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8626 [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8627 [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8628 [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8629 [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8630 [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
8631 [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8632 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8637 while (!(DUN[1] == U->number)) {
8643 while (!(AUN[1] == U->number)) {
8649 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
8651 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
8654 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
8655 if(battleDod1Flag) hit /= 2;
8658 if(hit > 100) hit = 100;
8659 if(hit < 0) hit = 0;
8660 if([self sortEcheck:U2A opponent:U])
8662 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
8663 if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8666 [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8670 while (!(AUN[1] == U->number)) {
8675 [battleAttackBtn1 setEnabled:NO];
8676 [battleAttackBtn1 setTransparent:YES];
8677 [battleGuardBtn1 setEnabled:NO];
8678 [battleGuardBtn1 setTransparent:YES];
8679 [battleDodgeBtn1 setEnabled:NO];
8680 [battleDodgeBtn1 setTransparent:YES];
8682 [battleAttackBtn1 setEnabled:YES];
8683 [battleAttackBtn1 setTransparent:NO];
8684 [battleGuardBtn1 setEnabled:YES];
8685 [battleGuardBtn1 setTransparent:NO];
8686 [battleDodgeBtn1 setEnabled:YES];
8687 [battleDodgeBtn1 setTransparent:NO];
8691 while (!(DUN[1] == U->number)) {
8695 [battleAttackBtn2 setEnabled:NO];
8696 [battleAttackBtn2 setTransparent:YES];
8697 [battleGuardBtn2 setEnabled:NO];
8698 [battleGuardBtn2 setTransparent:YES];
8699 [battleDodgeBtn2 setEnabled:NO];
8700 [battleDodgeBtn2 setTransparent:YES];
8702 [battleAttackBtn2 setEnabled:YES];
8703 [battleAttackBtn2 setTransparent:NO];
8704 [battleGuardBtn2 setEnabled:YES];
8705 [battleGuardBtn2 setTransparent:NO];
8706 [battleDodgeBtn2 setEnabled:YES];
8707 [battleDodgeBtn2 setTransparent:NO];
8713 for (int i = 1; i < DUN[1]; i++) {
8717 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
8718 unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
8721 [battleStartBtn setEnabled:NO];
8722 [battleStartBtn setTransparent:YES];
8725 [battleStartBtn setEnabled:YES];
8726 [battleStartBtn setTransparent:NO];
8731 avPlayerFlag1 = false;
8732 avPlayerFlag2 = false;
8735 -(void)DisplayMessage{
8738 attackExtentFlag = false;
8739 attackingWait = false;
8741 if(!battleSetUp) return;
8742 if(!fuckingLoadBugFix) return;
8744 if(!battleVeryBegunFlag){
8745 [btHITtf1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8746 [btDMGtf1 setStringValue:[NSString stringWithFormat:@"ダメージ値 ----"]];
8747 [btHITtf2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8748 [btDMGtf2 setStringValue:[NSString stringWithFormat:@"ダメージ値 ----"]];
8750 battleVeryBegunFlag = true;
8751 pussyLoopFlag = true;
8753 if(AVpreview.rate > 0){
8754 //[battleWindow setIgnoresMouseEvents:YES];
8755 [battleWindow makeKeyAndOrderFront:nil];
8756 //NSLog(@"%g", AVpreview.rate);
8759 //[battleWindow setIgnoresMouseEvents:NO];
8760 //NSLog(@"%g", AVpreview.rate);
8764 [AVPV setHidden:YES];
8766 else if(avPlayerFlag2){
8767 [AVPV setHidden:YES];
8773 animationFlag1 = false;
8778 animationFlag2 = false;
8780 U->C.A = attackTop2;
8784 if(animationFlag1 || animationFlag2){
8789 double def2 = (double)31/32;
8790 NSString *message = @"";
8808 static bool extentbool = false;
8809 static bool extentbool2 = false;
8812 if(cpuAtkExtendFlag){
8813 extentBattleFlag2 = true;
8816 if(!extentbool && extentBattleFlag2){
8818 extentMPcostFlag = false;
8822 assholeLoadBugFix = true;
8824 switch (messageProcess) {
8826 if(bLoopFlag) break;
8831 while (!(DUN[DUNnum] == U->number)) {
8837 while (!(AUN[1] == U->number)) {
8841 if(U->number == U2->number){
8842 btSelfAction = true;
8844 btSelfAction = false;
8850 [battleDialog setStringValue:@"攻撃開始!"];
8851 if(!baseDistanceCompFlag)
8856 battleIsProcFlag = true;
8861 if(bLoopFlag) break;
8867 btHitExtendFlag1 = true;
8869 if(btHitExtendProc1 >= 3){
8870 btHitExtendProc1 = 0;
8874 BTunitAttackFlag1 = true;
8875 if(battleDef1Flag || battleDod1Flag)
8876 BTunitAttackFlag1 = false;
8879 while (!(DUN[DUNnum] == U->number)) {
8885 while (!(AUN[1] == U->number)) {
8890 if(U->number == U2->number){
8891 btSelfAction = true;
8893 btSelfAction = false;
8896 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){
8898 [self DisplayMessageMod1A];
8900 }else if(U->chipNumberL >= 0 && U2->chipNumberL < 0){
8902 [self DisplayMessageMod2A];
8904 }else if(U->chipNumberL < 0 && U2->chipNumberL >= 0){
8906 [self DisplayMessageMod3A];
8912 if(bLoopFlag) break;
8915 while (!(AUN[1] == U->number)) {
8918 ATTACK *aTop = U->C.A;
8920 for(int i = 0;i < crCAL1;i++){
8921 U->C.A = U->C.A->next;
8926 if(attackCR->magic){
8927 btAttackType1 = BT_TYPE_MAGIC;
8929 btAttackType1 = BT_TYPE_NORMAL;
8932 if(BTunitAttackFlag1)
8933 if((btAttackType1 == BT_TYPE_NORMAL && btAttackMoveValue1 < 2)
8934 || (btAttackType1 == BT_TYPE_MAGIC && btAttackMoveValue1 < 5)
8935 || (btAttackType1 == BT_TYPE_ABILITY && btAttackMoveValue1 < 2)){
8937 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
8939 [battleDialog setStringValue:message];
8946 if(btHitExtendFlag1 && btHitExtendProc1 < 2){
8957 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
8960 [bplayer2 setImage:U2->C.imgb];
8961 [bplayer2 setImageScaling:NSScaleToFit];
8962 [nplayer2 setStringValue:U2->C.name];
8963 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U2->C.S_C.HP, U2->C.S_M.HP]];
8964 [lplayer2 setIntValue:U2->C.S_C.HP/U2->C.S_M.HP*100];
8965 [iplayer2 setImage:MC[chipNum[U2->x][U2->y]].img];
8966 [mplayer2 setStringValue:MC[chipNum[U2->x][U2->y]].name];
8967 [rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U2->x][U2->y]].dmgfix]];
8969 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){
8970 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
8972 NSString *path = @"data/AttackList/ALdata";
8974 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
8976 path = [path stringByAppendingFormat:@"/"];
8978 path = [path stringByAppendingString:U->C.A->AN.movName];
8980 NSData *AVData = [NSData dataWithContentsOfFile:path];
8983 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
8988 NSString *path = @"data/AttackList3/IALdata";
8990 path = [path stringByAppendingFormat:@"%dE", U->C.A->indexE];
8992 path = [path stringByAppendingFormat:@"/"];
8994 path = [path stringByAppendingString:U->C.A->AN.movName];
8997 NSData *AVData = [NSData dataWithContentsOfFile:path];
9000 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
9006 AVPV.player = [AVpreview retain];
9012 [AVPV setHidden:NO];
9014 [battleDialog setStringValue:message];
9016 avPlayerFlag1 = true;
9022 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->C.A->AN.ANI && !animationFlag3 && DUNnum == 1){
9024 [battleDialog setStringValue:message];
9025 animationFlag1 = true;
9032 double urSupposedToGet;
9034 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
9037 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
9041 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
9042 else oopsIsRight = U->C.S_C.MIS;
9044 oopsIsRight = oopsIsRight/100;
9046 if(!U2->C.aura && U->C.A->D){
9047 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
9048 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9049 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
9050 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9051 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
9052 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9053 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
9054 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9055 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
9056 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9057 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
9058 }else if(U->C.A->D){
9059 val = 1/log(3+U2->C.S_C.MP/64);
9060 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
9061 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9062 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
9063 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9064 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
9065 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9066 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
9067 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9068 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
9069 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9070 if(U->C.A->D->type == 5) dmg = U->C.A->totalD*val;
9072 double val2 = log(3+U2->C.S_C.MP/64);
9078 if(U->C.A->D->fix == 2){
9079 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;
9081 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;
9082 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;
9083 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;
9084 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;
9085 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 == 1){
9089 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;
9091 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;
9092 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;
9093 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;
9094 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;
9095 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;
9097 }else if(U->C.A->D->fix == 0){
9101 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
9103 if(extentMPcostFlag && extentBattleFlag2){
9106 U->C.S_C.MP -= costMP;
9107 extentMPcostFlag = true;
9110 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
9111 hitFix = U->C.A->hitPercent;
9117 while (!(AUN[1] == U->number)) {
9123 while (!(DUN[DUNnum] == U->number)) {
9127 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
9129 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
9132 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
9133 if(hit > 100) hit = 100;
9134 if(hit < 0) hit = 0;
9135 if(U2A->D->sort == 1){
9138 if([self sortEcheck:U2A opponent:U])
9144 if(battleDod2Flag) wtf = 50;
9145 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
9147 if(U2A->D->sort == 0){
9148 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);
9149 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);
9150 NSLog(@"修正前のダメージ:%g", dmg);
9151 dmg = [self dmgResist:dmg];
9152 NSLog(@"属性後のダメージ:%g", dmg);
9153 def2 = pow(def2, U->C.S_C.DEF);
9154 int omfg = rand()%100;
9155 NSLog(@"ダメージ幅:%g〜%g", floor(dmg), floor(dmg + dmg/10));
9156 dmg = (dmg*omfg/100/10 + dmg);
9157 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
9158 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
9159 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
9161 if(U->C.S_C.typeMOVE == RIKU){
9162 if(U2A->riku == A) dmg = dmg*1.2;
9163 if(U2A->riku == B) dmg = dmg*1.0;
9164 if(U2A->riku == C) dmg = dmg*0.6;
9165 if(U2A->riku == D) dmg = dmg*0.2;
9166 if(U2A->riku == E) dmg = 0;
9167 if(U2A->riku == S) dmg = dmg*1.5;
9168 if(U2A->riku == SS) dmg = dmg*2.0;
9169 } if(U->C.S_C.typeMOVE == UMI &&
9170 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
9171 if(U2A->umi == A) dmg = dmg*1.2;
9172 if(U2A->umi == B) dmg = dmg*1.0;
9173 if(U2A->umi == C) dmg = dmg*0.6;
9174 if(U2A->umi == D) dmg = dmg*0.2;
9175 if(U2A->umi == E) dmg = 0;
9176 if(U2A->umi == S) dmg = dmg*1.5;
9177 if(U2A->umi == SS) dmg = dmg*2.0;
9178 }else if(U->C.S_C.typeMOVE == UMI){
9179 if(U2A->riku == A) dmg = dmg*1.2;
9180 if(U2A->riku == B) dmg = dmg*1.0;
9181 if(U2A->riku == C) dmg = dmg*0.6;
9182 if(U2A->riku == D) dmg = dmg*0.2;
9183 if(U2A->riku == E) dmg = 0;
9184 if(U2A->riku == S) dmg = dmg*1.5;
9185 if(U2A->riku == SS) dmg = dmg*2.0;
9187 } if(U->C.S_C.typeMOVE == CHU){
9188 if(U2A->chu == A) dmg = dmg*1.2;
9189 if(U2A->chu == B) dmg = dmg*1.0;
9190 if(U2A->chu == C) dmg = dmg*0.6;
9191 if(U2A->chu == D) dmg = dmg*0.2;
9192 if(U2A->chu == E) dmg = 0;
9193 if(U2A->chu == S) dmg = dmg*1.5;
9194 if(U2A->chu == SS) dmg = dmg*2.0;
9195 } if(U->C.S_C.typeMOVE == SORA){
9196 if(U2A->sora == A) dmg = dmg*1.2;
9197 if(U2A->sora == B) dmg = dmg*1.0;
9198 if(U2A->sora == C) dmg = dmg*0.6;
9199 if(U2A->sora == D) dmg = dmg*0.2;
9200 if(U2A->sora == E) dmg = 0;
9201 if(U2A->sora == S) dmg = dmg*1.5;
9202 if(U2A->sora == SS) dmg = dmg*2.0;
9205 NSLog(@"ユニットの地形適用後:%g", dmg);
9206 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
9207 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
9211 if(graze > omfg && !healFlag) {dmg = dmg/5;
9214 if(battleDef2Flag) dmg -= dmg*0.5;
9215 battleDef2Flag = false;
9217 if(dmg < 0) dmg = 0;
9221 [btHITtf1 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
9222 [btDMGtf1 setStringValue:[NSString stringWithFormat:@"ダメージ値 %g", dmg]];
9226 }else if(U2A->D->sort == 1){
9227 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
9231 if(U->C.S_C.HP > U->C.S_M.HP) U->C.S_C.HP = U->C.S_M.HP;
9236 if(U->C.S_C.HP <= 0) {
9238 U2->C.S_C.vigor += 5;
9249 targType2Lflag = true;
9256 targType2Dflag = true;
9264 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
9265 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
9267 if(![U2A->msg isEqualToString:@""]){
9269 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
9270 [self originalMessage:U2A->msg subj:U2->C.name obje:U->C.name]]];
9274 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
9276 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
9280 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->C.name, dmg]];
9283 }else if(battleDef1Flag){
9287 while (!(AUN[1] == U->number)) {
9292 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
9296 }else if(battleDod1Flag){
9299 while (!(AUN[1] == U->number)) {
9303 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
9308 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
9312 [battleDialog setStringValue:message];
9314 [btHITtf1 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
9320 if(!extentBattleFlag2){
9325 }else if(extentBattleFlag2){
9326 if(btHitExtendProc1 == 2)
9327 btHitExtendProc1 = 3;
9328 if(btHitExtendProc1 >= 2)
9329 btHitExtendFix1 = 1;
9334 if(DUN[DUNnum] <= 0){
9337 extentBattleFlag2 = false;
9339 extentMPcostFlag = false;
9343 avPlayerFlag1 = false;
9344 animationFlag3 = false;
9345 btAtattckMoveEnd = false;
9351 if(bLoopFlag) break;
9352 BTunitAttackFlag1 = false;
9353 BTunitAttackFlag2 = true;
9354 if(battleDef2Flag || battleDod2Flag)
9355 BTunitAttackFlag2 = false;
9360 while (!(DUN[1] == U->number)) {
9365 while (!(AUN[1] == U->number)) {
9370 if(U->number == U2->number){
9371 btSelfAction = true;
9373 btSelfAction = false;
9376 if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){
9378 [self DisplayMessageMod1B];
9380 }else if(U->chipNumberL >= 0 && U2->chipNumberL < 0){
9382 [self DisplayMessageMod2B];
9384 }else if(U->chipNumberL < 0 && U2->chipNumberL >= 0){
9386 [self DisplayMessageMod3B];
9391 if(bLoopFlag) break;
9394 while (!(AUN[1] == U->number)) {
9401 while (!(DUN[1] == U->number)) {
9405 ATTACK *aTop2 = U->C.A;
9413 if(!U->C.A) goto SKIP3;
9417 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
9419 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
9422 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
9423 else oopsIsRight = U->C.S_C.MIS;
9425 oopsIsRight = oopsIsRight/100;
9428 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
9431 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
9432 if(!U2->C.aura && U->C.A->D){
9433 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
9434 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9435 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
9436 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9437 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
9438 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9439 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
9440 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9441 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
9442 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9443 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
9444 }else if(U->C.A->D){
9445 val = 1/log(3+U2->C.S_C.MP/64);
9446 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
9447 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9448 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
9449 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9450 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
9451 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9452 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
9453 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor)*asItIs*val;
9454 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
9455 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9456 if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
9458 double val2 = log(3+U2->C.S_C.MP/64);
9460 mostDmg2 = mostDmg2*val2;
9463 if(U->C.A->D->fix == 2){
9464 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;
9466 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;
9467 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;
9468 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;
9469 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;
9470 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 == 1){
9474 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;
9476 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;
9477 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;
9478 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;
9479 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;
9480 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;
9482 }else if(U->C.A->D->fix == 0){
9490 mostDmg2 = [self dmgResist:mostDmg2];
9493 costVIG = U->C.A->vigor;
9495 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]){
9501 //mostDmg = U->C.A->totalD;
9504 U->C.A = U->C.A->next;
9510 if(!battleSet2PushedFlag){
9511 for(int i = 0;i < mostNumSub;i++){
9512 U->C.A = U->C.A->next;
9516 for(int i = 0;i < crCAL2;i++){
9517 U->C.A = U->C.A->next;
9523 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]){
9525 }else while(U->C.A){
9526 U->C.A = U->C.A->next;
9532 BTunitAttackFlag2 = false;
9533 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
9539 if(attackCR2->magic){
9540 btAttackType2 = BT_TYPE_MAGIC;
9542 btAttackType2 = BT_TYPE_NORMAL;
9545 if(BTunitAttackFlag2)
9546 if((btAttackType2 == BT_TYPE_NORMAL && btAttackMoveValue2 < 2)
9547 || (btAttackType2 == BT_TYPE_MAGIC && btAttackMoveValue2 < 5)
9548 || (btAttackType2 == BT_TYPE_ABILITY && btAttackMoveValue2 < 2)){
9551 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
9553 [battleDialog setStringValue:message];
9560 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
9562 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL){
9563 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
9565 NSString *path = @"data/AttackList/ALdata";
9567 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
9569 path = [path stringByAppendingFormat:@"/"];
9571 path = [path stringByAppendingString:U->C.A->AN.movName];
9574 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
9577 AVPV.player = [AVpreview retain];
9582 [AVPV setControlsStyle:0];
9583 [AVPV setHidden:NO];
9585 [battleDialog setStringValue:message];
9587 avPlayerFlag2 = true;
9592 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->C.A->AN.ANI && !animationFlag3){
9595 animationFlag2 = true;
9605 if(U->C.A->D->type == 0) dmg = U->C.S_C.ATK + U->C.A->totalD;
9606 if(U->C.A->D->type == 1) dmg = U->C.S_C.DEF + U->C.A->totalD;
9607 if(U->C.A->D->type == 2) dmg = U->C.S_C.ACU + U->C.A->totalD;
9608 if(U->C.A->D->type == 3) dmg = U->C.S_C.EVA + U->C.A->totalD;
9609 if(U->C.A->D->type == 4) dmg = U->C.S_C.CAP + U->C.A->totalD;
9610 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
9615 while (!(AUN[1] == U->number)) {
9620 while (!(DUN[1] == U->number)) {
9623 NSString *string = [U2A->name retain];
9624 while (![U->C.A->name isEqualToString:string] && U->C.A) {
9625 U->C.A = U->C.A->next;
9628 if(!U->C.A) U->C.A = aTop2;
9630 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
9632 if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
9635 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
9636 else oopsIsRight = U->C.S_C.MIS;
9638 oopsIsRight = oopsIsRight/100;
9641 if(!U2->C.aura && U->C.A->D){
9642 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
9643 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9644 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
9645 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9646 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
9647 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9648 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
9649 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9650 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
9651 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9652 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
9653 }else if(U->C.A->D){
9654 double val = val = 1/log(3+U2->C.S_C.MP/64);
9655 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
9656 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9657 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
9658 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9659 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
9660 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9661 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
9662 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9663 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
9664 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9665 if(U->C.A->D->type == 5) dmg = U->C.A->totalD*val;
9667 val2 = log(3+U2->C.S_C.MP/64);
9672 if(U->C.A->D->fix == 2){
9673 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;
9675 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;
9676 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;
9677 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;
9678 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;
9679 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 == 1){
9683 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;
9685 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;
9686 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;
9687 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;
9688 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;
9689 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;
9691 }else if(U->C.A->D->fix == 0){
9695 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
9696 U->C.S_C.MP -= costMP;
9698 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
9699 hitFix = U->C.A->hitPercent;
9706 while (!(DUN[1] == U->number)) {
9712 while (!(AUN[1] == U->number)) {
9716 hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
9718 hi = U->C.S_C.LUK - U2->C.S_C.LUK;
9721 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
9722 if(hit > 100) hit = 100;
9723 if(hit < 0) hit = 0;
9724 if([self sortEcheck:U2A opponent:U])
9727 battleDod1Flag = false;
9730 while (!(DUN[1] == U->number)) {
9736 while (!(AUN[1] == U->number)) {
9741 if(battleDod1Flag) omg = 50;
9743 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
9744 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);
9745 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);
9746 NSLog(@"修正前のダメージ:%g", dmg);
9747 dmg = [self dmgResist:dmg];
9748 NSLog(@"属性後のダメージ:%g", dmg);
9749 def2 = pow(def2, U->C.S_C.DEF);
9750 int omfg = rand()%100;
9751 NSLog(@"ダメージ幅:%g〜%g", floor(dmg), floor(dmg + dmg/10));
9752 dmg = (dmg*omfg/100/10 + dmg);
9753 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
9754 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
9755 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
9757 if(U->C.S_C.typeMOVE == RIKU){
9758 if(U2A->riku == A) dmg = dmg*1.2;
9759 if(U2A->riku == B) dmg = dmg*1.0;
9760 if(U2A->riku == C) dmg = dmg*0.6;
9761 if(U2A->riku == D) dmg = dmg*0.2;
9762 if(U2A->riku == E) dmg = 0;
9763 if(U2A->riku == S) dmg = dmg*1.5;
9764 if(U2A->riku == SS) dmg = dmg*2.0;
9765 } if(U->C.S_C.typeMOVE == UMI &&
9766 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
9767 if(U2A->umi == A) dmg = dmg*1.2;
9768 if(U2A->umi == B) dmg = dmg*1.0;
9769 if(U2A->umi == C) dmg = dmg*0.6;
9770 if(U2A->umi == D) dmg = dmg*0.2;
9771 if(U2A->umi == E) dmg = 0;
9772 if(U2A->umi == S) dmg = dmg*1.5;
9773 if(U2A->umi == SS) dmg = dmg*2.0;
9774 }else if(U->C.S_C.typeMOVE == UMI){
9775 if(U2A->riku == A) dmg = dmg*1.2;
9776 if(U2A->riku == B) dmg = dmg*1.0;
9777 if(U2A->riku == C) dmg = dmg*0.6;
9778 if(U2A->riku == D) dmg = dmg*0.2;
9779 if(U2A->riku == E) dmg = 0;
9780 if(U2A->riku == S) dmg = dmg*1.5;
9781 if(U2A->riku == SS) dmg = dmg*2.0;
9783 } if(U->C.S_C.typeMOVE == CHU){
9784 if(U2A->chu == A) dmg = dmg*1.2;
9785 if(U2A->chu == B) dmg = dmg*1.0;
9786 if(U2A->chu == C) dmg = dmg*0.6;
9787 if(U2A->chu == D) dmg = dmg*0.2;
9788 if(U2A->chu == E) dmg = 0;
9789 if(U2A->chu == S) dmg = dmg*1.5;
9790 if(U2A->chu == SS) dmg = dmg*2.0;
9791 } if(U->C.S_C.typeMOVE == SORA){
9792 if(U2A->sora == A) dmg = dmg*1.2;
9793 if(U2A->sora == B) dmg = dmg*1.0;
9794 if(U2A->sora == C) dmg = dmg*0.6;
9795 if(U2A->sora == D) dmg = dmg*0.2;
9796 if(U2A->sora == E) dmg = 0;
9797 if(U2A->sora == S) dmg = dmg*1.5;
9798 if(U2A->sora == SS) dmg = dmg*2.0;
9801 NSLog(@"ユニットの地形適用後:%g", dmg);
9804 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
9808 if(graze > omfg && !healFlag) {dmg = dmg/5;
9812 if(battleDef1Flag) dmg -= dmg*0.5;
9813 battleDef1Flag = false;
9815 if(dmg < 0) dmg = 0;
9819 [btHITtf2 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
9820 [btDMGtf2 setStringValue:[NSString stringWithFormat:@"ダメージ値 %g", dmg]];
9823 if(U->C.S_C.HP <= 0) {
9825 U2->C.S_C.vigor += 5;
9836 targType2Lflag = true;
9843 targType2Dflag = true;
9853 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
9855 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
9857 if(![U2A->msg isEqualToString:@""]){
9858 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
9859 [self originalMessage:U2A->msg subj:U2->C.name obje:U->C.name]]];
9865 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
9867 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
9870 }else if(battleDef2Flag){
9874 while (!(DUN[1] == U->number)) {
9879 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
9882 }else if(battleDod2Flag){
9885 while (!(DUN[1] == U->number)) {
9889 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
9894 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
9898 [battleDialog setStringValue:message];
9901 [btHITtf2 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
9905 avPlayerFlag2 = false;
9906 animationFlag3 = false;
9907 btAtattckMoveEnd = false;
9912 if(bLoopFlag) break;
9913 if(cpuAImodeflag && !cpuTurnEndFlag) {
9918 fuckingLoadBugFix = false;
9920 battleSetUp = false;
9921 battleSetFlag = false;
9924 battleSet2PushedFlag = false;
9925 cpuModeBATTLEendFlag = true;
9928 [battleWindow close];
9929 pussyLoopFlag = false;
9930 cpuAtkExtendFlag3 = false;
9931 cpuOMFGmoveATKfixFlag = false;
9932 unitNoMoveFlag = false;
9935 CPUmostDmgChoice = false;
9937 cpuIsAttackingFlag = false;
9938 for(int g = 0;g < chipWidth;g++){
9939 for(int k = 0;k < chipHeight;k++){
9940 g_attackRangeExtent[g][k] = 0;
9946 BTunitAttackFlag1 = false;
9947 BTunitAttackFlag2 = false;
9948 BTunitAttackFlag1 = false;
9949 btAttackMoveValue1 = 0;
9950 btAttackMoveValue2 = 0;
9955 btHitExtendFlag1 = false;
9956 btHitExtendProc1 = 0;
9957 btHitExtendMove1 = 0;
9958 btHitExtendFlag2 = false;
9959 btHitExtendProc2 = 0;
9960 btHitExtendMove2 = 0;
9961 baseDistanceCompFlag = false;
9962 battleVeryBegunFlag = false;
9963 CPUAttackSubmitFlag = false;
9964 battleSetUp = false;
9965 displayBattleCheckPanelFlag = 0;
9966 battleEndFlag = true;
9967 assholeLoadBugFix = false;
9969 battleIsProcFlag = false;
9977 UCselected = UC[-1];
9982 -(void)DisplayMessageMod1A{//両方モビール
9984 double def2 = (double)31/32;
9985 NSString *message = @"";
10006 if(bLoopFlag) return;
10008 while (!(AUN[1] == U->number)) {
10012 ATTACK *aTop = U->CL.A;
10013 for(int i = 0;i < crCAL1;i++){
10014 U->CL.A = U->CL.A->next;
10018 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
10020 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
10021 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
10023 NSString *path = @"data/AttackList/ALdata";
10025 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
10027 path = [path stringByAppendingFormat:@"/"];
10029 path = [path stringByAppendingString:U->CL.A->AN.movName];
10031 NSData *AVData = [NSData dataWithContentsOfFile:path];
10034 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
10039 NSString *path = @"data/AttackList3/IALdata";
10041 path = [path stringByAppendingFormat:@"%dE", U->CL.A->indexE];
10043 path = [path stringByAppendingFormat:@"/"];
10045 path = [path stringByAppendingString:U->CL.A->AN.movName];
10048 NSData *AVData = [NSData dataWithContentsOfFile:path];
10051 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
10057 AVPV.player = [AVpreview retain];
10063 [AVPV setHidden:NO];
10065 [battleDialog setStringValue:message];
10067 avPlayerFlag1 = true;
10073 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->CL.A->AN.ANI && !animationFlag3){
10075 [battleDialog setStringValue:message];
10076 animationFlag1 = true;
10083 dmg = U->CL.A->totalD;
10085 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
10086 U->CL.S_C.EN -= costMP;
10088 hit = U->CL.S_C.MOB+U->C.S_C.HIT;
10089 hitFix = U->CL.A->hitPercent;
10095 while (!(DUN[1] == U->number)) {
10098 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;
10099 if(hit > 100) hit = 100;
10100 if(U2A->D->sort == 1){
10103 if([self sortEcheck:U2A opponent:U])
10109 if(battleDod2Flag) wtf = 50;
10110 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
10112 if(U2A->D->sort == 0){
10113 NSLog(@"修正前のダメージ:%g", dmg);
10114 dmg = [self dmgResist:dmg];
10115 NSLog(@"属性後のダメージ:%g", dmg);
10116 def2 = pow(def2, U->CL.S_C.ARM);
10117 int omfg = rand()%100;
10118 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->CL.S_C.ARM);
10120 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg + dmg - U->CL.S_C.ARM));
10121 dmg = (dmg*omfg/100 + dmg - U->CL.S_C.ARM);
10122 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
10123 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
10124 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
10126 if(U->CL.S_C.typeMOVE == RIKU){
10127 if(U2A->riku == A) dmg = dmg*1.2;
10128 if(U2A->riku == B) dmg = dmg*1.0;
10129 if(U2A->riku == C) dmg = dmg*0.6;
10130 if(U2A->riku == D) dmg = dmg*0.2;
10131 if(U2A->riku == E) dmg = 0;
10132 if(U2A->riku == S) dmg = dmg*1.5;
10133 if(U2A->riku == SS) dmg = dmg*2.0;
10134 } if(U->CL.S_C.typeMOVE == UMI &&
10135 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
10136 if(U2A->umi == A) dmg = dmg*1.2;
10137 if(U2A->umi == B) dmg = dmg*1.0;
10138 if(U2A->umi == C) dmg = dmg*0.6;
10139 if(U2A->umi == D) dmg = dmg*0.2;
10140 if(U2A->umi == E) dmg = 0;
10141 if(U2A->umi == S) dmg = dmg*1.5;
10142 if(U2A->umi == SS) dmg = dmg*2.0;
10143 }else if(U->CL.S_C.typeMOVE == UMI){
10144 if(U2A->riku == A) dmg = dmg*1.2;
10145 if(U2A->riku == B) dmg = dmg*1.0;
10146 if(U2A->riku == C) dmg = dmg*0.6;
10147 if(U2A->riku == D) dmg = dmg*0.2;
10148 if(U2A->riku == E) dmg = 0;
10149 if(U2A->riku == S) dmg = dmg*1.5;
10150 if(U2A->riku == SS) dmg = dmg*2.0;
10152 } if(U->CL.S_C.typeMOVE == CHU){
10153 if(U2A->chu == A) dmg = dmg*1.2;
10154 if(U2A->chu == B) dmg = dmg*1.0;
10155 if(U2A->chu == C) dmg = dmg*0.6;
10156 if(U2A->chu == D) dmg = dmg*0.2;
10157 if(U2A->chu == E) dmg = 0;
10158 if(U2A->chu == S) dmg = dmg*1.5;
10159 if(U2A->chu == SS) dmg = dmg*2.0;
10160 } if(U->CL.S_C.typeMOVE == SORA){
10161 if(U2A->sora == A) dmg = dmg*1.2;
10162 if(U2A->sora == B) dmg = dmg*1.0;
10163 if(U2A->sora == C) dmg = dmg*0.6;
10164 if(U2A->sora == D) dmg = dmg*0.2;
10165 if(U2A->sora == E) dmg = 0;
10166 if(U2A->sora == S) dmg = dmg*1.5;
10167 if(U2A->sora == SS) dmg = dmg*2.0;
10170 NSLog(@"ユニットの地形適用後:%g", dmg);
10171 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
10172 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
10176 if(graze > omfg && !healFlag) {dmg = dmg/5;
10179 if(battleDef2Flag) dmg -= dmg*0.5;
10180 battleDef2Flag = false;
10182 if(dmg < 0) dmg = 0;
10183 U->CL.S_C.HP -= dmg;
10186 }else if(U2A->D->sort == 1){
10187 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
10190 U->CL.S_C.HP += dmg;
10192 if(U->CL.S_C.HP > U->CL.S_M.HP) U->CL.S_C.HP = U->CL.S_M.HP;
10197 if(U->CL.S_C.HP <= 0) {
10199 U2->C.S_C.vigor += 5;
10201 messageProcess = 2;
10208 if(U->targType2L) {
10210 targType2Lflag = true;
10215 if(U->targType2D) {
10217 targType2Dflag = true;
10225 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
10226 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
10228 if(![U2A->msg isEqualToString:@""]){
10230 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
10231 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->CL.name]]];
10235 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
10236 if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
10237 else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->CL.name, dmg]];
10238 }else if(battleDef1Flag){
10242 while (!(AUN[1] == U->number)) {
10247 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
10250 }else if(battleDod1Flag){
10253 while (!(AUN[1] == U->number)) {
10257 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
10262 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
10265 [battleDialog setStringValue:message];
10281 -(void)DisplayMessageMod1B{
10283 double def2 = (double)31/32;
10284 NSString *message = @"";
10304 if(bLoopFlag) return;
10307 while (!(AUN[1] == U->number)) {
10314 while (!(DUN[1] == U->number)) {
10318 ATTACK *aTop2 = U->CL.A;
10324 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
10325 costVIG = U->C.A->vigor;
10328 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
10329 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]){
10330 mostDmg = U->CL.A->totalD;
10333 U->CL.A = U->CL.A->next;
10339 if(!battleSet2PushedFlag){
10340 for(int i = 0;i < mostNumSub;i++){
10341 U->CL.A = U->CL.A->next;
10345 for(int i = 0;i < crCAL2;i++){
10346 U->CL.A = U->CL.A->next;
10350 if(!U->CL.A->name){
10355 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]){
10356 }else while(U->CL.A){
10357 U->CL.A = U->CL.A->next;
10364 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
10368 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
10371 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
10372 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
10374 NSString *path = @"data/AttackList/ALdata";
10376 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
10378 path = [path stringByAppendingFormat:@"/"];
10380 path = [path stringByAppendingString:U->CL.A->AN.movName];
10383 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
10386 AVPV.player = [AVpreview retain];
10391 [AVPV setControlsStyle:0];
10392 [AVPV setHidden:NO];
10394 [battleDialog setStringValue:message];
10396 avPlayerFlag2 = true;
10401 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->CL.A->AN.ANI && !animationFlag3){
10404 animationFlag2 = true;
10412 dmg = U->CL.A->totalD;
10414 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
10415 U->CL.S_C.EN -= costMP;
10417 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
10418 hitFix = U->CL.A->hitPercent;
10425 while (!(AUN[1] == U->number)) {
10430 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;
10431 if(hit > 100) hit = 100;
10433 if([self sortEcheck:U2A opponent:U])
10436 battleDod1Flag = false;
10439 if(battleDod1Flag) omg = 50;
10441 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
10442 NSLog(@"修正前のダメージ:%g", dmg);
10443 dmg = [self dmgResist:dmg];
10444 NSLog(@"属性後のダメージ:%g", dmg);
10445 def2 = pow(def2, U->CL.S_C.ARM);
10446 int omfg = rand()%100;
10447 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->CL.S_C.ARM);
10448 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg + dmg - U->CL.S_C.ARM));
10449 dmg = (dmg*omfg/100 + dmg - U->CL.S_C.ARM);
10452 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
10453 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
10454 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
10456 if(U->CL.S_C.typeMOVE == RIKU){
10457 if(U2A->riku == A) dmg = dmg*1.2;
10458 if(U2A->riku == B) dmg = dmg*1.0;
10459 if(U2A->riku == C) dmg = dmg*0.6;
10460 if(U2A->riku == D) dmg = dmg*0.2;
10461 if(U2A->riku == E) dmg = 0;
10462 if(U2A->riku == S) dmg = dmg*1.5;
10463 if(U2A->riku == SS) dmg = dmg*2.0;
10464 } if(U->CL.S_C.typeMOVE == UMI &&
10465 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
10466 if(U2A->umi == A) dmg = dmg*1.2;
10467 if(U2A->umi == B) dmg = dmg*1.0;
10468 if(U2A->umi == C) dmg = dmg*0.6;
10469 if(U2A->umi == D) dmg = dmg*0.2;
10470 if(U2A->umi == E) dmg = 0;
10471 if(U2A->umi == S) dmg = dmg*1.5;
10472 if(U2A->umi == SS) dmg = dmg*2.0;
10473 }else if(U->CL.S_C.typeMOVE == UMI){
10474 if(U2A->riku == A) dmg = dmg*1.2;
10475 if(U2A->riku == B) dmg = dmg*1.0;
10476 if(U2A->riku == C) dmg = dmg*0.6;
10477 if(U2A->riku == D) dmg = dmg*0.2;
10478 if(U2A->riku == E) dmg = 0;
10479 if(U2A->riku == S) dmg = dmg*1.5;
10480 if(U2A->riku == SS) dmg = dmg*2.0;
10482 } if(U->CL.S_C.typeMOVE == CHU){
10483 if(U2A->chu == A) dmg = dmg*1.2;
10484 if(U2A->chu == B) dmg = dmg*1.0;
10485 if(U2A->chu == C) dmg = dmg*0.6;
10486 if(U2A->chu == D) dmg = dmg*0.2;
10487 if(U2A->chu == E) dmg = 0;
10488 if(U2A->chu == S) dmg = dmg*1.5;
10489 if(U2A->chu == SS) dmg = dmg*2.0;
10490 } if(U->CL.S_C.typeMOVE == SORA){
10491 if(U2A->sora == A) dmg = dmg*1.2;
10492 if(U2A->sora == B) dmg = dmg*1.0;
10493 if(U2A->sora == C) dmg = dmg*0.6;
10494 if(U2A->sora == D) dmg = dmg*0.2;
10495 if(U2A->sora == E) dmg = 0;
10496 if(U2A->sora == S) dmg = dmg*1.5;
10497 if(U2A->sora == SS) dmg = dmg*2.0;
10500 NSLog(@"ユニットの地形適用後:%g", dmg);
10502 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
10506 if(graze > omfg && !healFlag) {dmg = dmg/5;
10510 if(battleDef1Flag) dmg -= dmg*0.5;
10511 battleDef1Flag = false;
10513 if(dmg < 0) dmg = 0;
10514 U->CL.S_C.HP -= dmg;
10518 if(U->CL.S_C.HP <= 0) {
10520 U2->C.S_C.vigor += 5;
10522 messageProcess = 2;
10529 if(U->targType2L) {
10531 targType2Lflag = true;
10536 if(U->targType2D) {
10538 targType2Dflag = true;
10548 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
10550 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
10552 if(![U2A->msg isEqualToString:@""]){
10553 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
10554 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->CL.name]]];
10560 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
10562 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
10564 }else if(battleDef2Flag){
10568 while (!(DUN[1] == U->number)) {
10573 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
10576 }else if(battleDod2Flag){
10579 while (!(DUN[1] == U->number)) {
10583 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
10588 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
10591 [battleDialog setStringValue:message];
10600 -(void)DisplayMessageMod2A{//攻撃側モビール
10602 double def2 = (double)31/32;
10603 NSString *message = @"";
10623 if(bLoopFlag) return;
10626 while (!(DUN[1] == U->number)) {
10632 while (!(AUN[1] == U->number)) {
10636 ATTACK *aTop = U->CL.A;
10637 for(int i = 0;i < crCAL1;i++){
10638 U->CL.A = U->CL.A->next;
10642 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
10644 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
10645 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
10647 NSString *path = @"data/AttackList/ALdata";
10649 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
10651 path = [path stringByAppendingFormat:@"/"];
10653 path = [path stringByAppendingString:U->CL.A->AN.movName];
10655 NSData *AVData = [NSData dataWithContentsOfFile:path];
10658 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
10663 NSString *path = @"data/AttackList3/IALdata";
10665 path = [path stringByAppendingFormat:@"%dE", U->CL.A->indexE];
10667 path = [path stringByAppendingFormat:@"/"];
10669 path = [path stringByAppendingString:U->CL.A->AN.movName];
10672 NSData *AVData = [NSData dataWithContentsOfFile:path];
10675 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
10681 AVPV.player = [AVpreview retain];
10687 [AVPV setHidden:NO];
10689 [battleDialog setStringValue:message];
10691 avPlayerFlag1 = true;
10697 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->CL.A->AN.ANI && !animationFlag3){
10699 [battleDialog setStringValue:message];
10700 animationFlag1 = true;
10707 dmg = U->CL.A->totalD;
10708 double val = 1/log(3+U2->C.S_C.MP/64);
10713 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
10714 U->CL.S_C.EN -= costMP;
10716 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
10717 hitFix = U->CL.A->hitPercent;
10723 while (!(DUN[1] == U->number)) {
10727 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
10729 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
10732 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
10733 if(hit > 100) hit = 100;
10734 if(U2A->D->sort == 1){
10737 if([self sortEcheck:U2A opponent:U])
10743 if(battleDod2Flag) wtf = 50;
10744 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
10746 if(U2A->D->sort == 0){
10747 NSLog(@"修正前のダメージ:%g", dmg);
10748 dmg = [self dmgResist:dmg];
10749 NSLog(@"属性後のダメージ:%g", dmg);
10750 def2 = pow(def2, U->C.S_C.DEF);
10751 int omfg = rand()%100;
10752 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->C.S_C.DEF);
10753 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->C.S_C.DEF), (dmg/10 + dmg - U->C.S_C.DEF));
10754 dmg = (dmg*omfg/100/10 + dmg - U->C.S_C.DEF);
10755 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
10756 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
10757 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
10759 if(U->C.S_C.typeMOVE == RIKU){
10760 if(U2A->riku == A) dmg = dmg*1.2;
10761 if(U2A->riku == B) dmg = dmg*1.0;
10762 if(U2A->riku == C) dmg = dmg*0.6;
10763 if(U2A->riku == D) dmg = dmg*0.2;
10764 if(U2A->riku == E) dmg = 0;
10765 if(U2A->riku == S) dmg = dmg*1.5;
10766 if(U2A->riku == SS) dmg = dmg*2.0;
10767 } if(U->C.S_C.typeMOVE == UMI &&
10768 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
10769 if(U2A->umi == A) dmg = dmg*1.2;
10770 if(U2A->umi == B) dmg = dmg*1.0;
10771 if(U2A->umi == C) dmg = dmg*0.6;
10772 if(U2A->umi == D) dmg = dmg*0.2;
10773 if(U2A->umi == E) dmg = 0;
10774 if(U2A->umi == S) dmg = dmg*1.5;
10775 if(U2A->umi == SS) dmg = dmg*2.0;
10776 }else if(U->C.S_C.typeMOVE == UMI){
10777 if(U2A->riku == A) dmg = dmg*1.2;
10778 if(U2A->riku == B) dmg = dmg*1.0;
10779 if(U2A->riku == C) dmg = dmg*0.6;
10780 if(U2A->riku == D) dmg = dmg*0.2;
10781 if(U2A->riku == E) dmg = 0;
10782 if(U2A->riku == S) dmg = dmg*1.5;
10783 if(U2A->riku == SS) dmg = dmg*2.0;
10785 } if(U->C.S_C.typeMOVE == CHU){
10786 if(U2A->chu == A) dmg = dmg*1.2;
10787 if(U2A->chu == B) dmg = dmg*1.0;
10788 if(U2A->chu == C) dmg = dmg*0.6;
10789 if(U2A->chu == D) dmg = dmg*0.2;
10790 if(U2A->chu == E) dmg = 0;
10791 if(U2A->chu == S) dmg = dmg*1.5;
10792 if(U2A->chu == SS) dmg = dmg*2.0;
10793 } if(U->C.S_C.typeMOVE == SORA){
10794 if(U2A->sora == A) dmg = dmg*1.2;
10795 if(U2A->sora == B) dmg = dmg*1.0;
10796 if(U2A->sora == C) dmg = dmg*0.6;
10797 if(U2A->sora == D) dmg = dmg*0.2;
10798 if(U2A->sora == E) dmg = 0;
10799 if(U2A->sora == S) dmg = dmg*1.5;
10800 if(U2A->sora == SS) dmg = dmg*2.0;
10803 NSLog(@"ユニットの地形適用後:%g", dmg);
10804 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
10805 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
10809 if(graze > omfg && !healFlag) {dmg = dmg/5;
10812 if(battleDef2Flag) dmg -= dmg*0.5;
10813 battleDef2Flag = false;
10815 if(dmg < 0) dmg = 0;
10816 U->C.S_C.HP -= dmg;
10819 }else if(U2A->D->sort == 1){
10820 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
10823 U->CL.S_C.HP += dmg;
10825 if(U->CL.S_C.HP > U->CL.S_M.HP) U->CL.S_C.HP = U->CL.S_M.HP;
10830 if(U->C.S_C.HP <= 0) {
10832 U2->C.S_C.vigor += 5;
10834 messageProcess = 2;
10841 if(U->targType2L) {
10843 targType2Lflag = true;
10848 if(U->targType2D) {
10850 targType2Dflag = true;
10858 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
10859 [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
10861 if(![U2A->msg isEqualToString:@""]){
10863 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
10864 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->C.name]]];
10868 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
10869 if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
10870 else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->C.name, dmg]];
10871 }else if(battleDef1Flag){
10875 while (!(AUN[1] == U->number)) {
10880 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
10883 }else if(battleDod1Flag){
10886 while (!(AUN[1] == U->number)) {
10890 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
10895 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
10898 [battleDialog setStringValue:message];
10915 -(void)DisplayMessageMod2B{
10917 double def2 = (double)31/32;
10918 NSString *message = @"";
10938 if(bLoopFlag) return;
10941 while (!(AUN[1] == U->number)) {
10948 while (!(DUN[1] == U->number)) {
10952 ATTACK *aTop2 = U->C.A;
10958 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
10959 costVIG = U->C.A->vigor;
10962 costVIG = U->C.A->vigor;
10964 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
10966 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]){
10967 mostDmg = U->C.A->totalD;
10970 U->C.A = U->C.A->next;
10976 if(!battleSet2PushedFlag){
10977 for(int i = 0;i < mostNumSub;i++){
10978 U->C.A = U->C.A->next;
10981 if(mostNum < 0) U->C.A = NULL;
10983 for(int i = 0;i < crCAL2;i++){
10984 U->C.A = U->C.A->next;
10989 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]){
10990 }else while(U->CL.A){
10991 U->C.A = U->C.A->next;
10997 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
11003 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
11007 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
11010 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL){
11011 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
11013 NSString *path = @"data/AttackList/ALdata";
11015 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
11017 path = [path stringByAppendingFormat:@"/"];
11019 path = [path stringByAppendingString:U->C.A->AN.movName];
11022 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
11025 AVPV.player = [AVpreview retain];
11030 [AVPV setControlsStyle:0];
11031 [AVPV setHidden:NO];
11033 [battleDialog setStringValue:message];
11035 avPlayerFlag2 = true;
11040 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->C.A->AN.ANI && !animationFlag3){
11043 animationFlag2 = true;
11053 if(U->C.A->D->type == 0) dmg = U->C.S_C.ATK + U->C.A->totalD;
11054 if(U->C.A->D->type == 1) dmg = U->C.S_C.DEF + U->C.A->totalD;
11055 if(U->C.A->D->type == 2) dmg = U->C.S_C.ACU + U->C.A->totalD;
11056 if(U->C.A->D->type == 3) dmg = U->C.S_C.EVA + U->C.A->totalD;
11057 if(U->C.A->D->type == 4) dmg = U->C.S_C.CAP + U->C.A->totalD;
11058 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
11061 double urSupposedToGet;
11063 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
11065 double oopsIsRight;
11066 bool lolFlag = false;
11068 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
11069 else oopsIsRight = U->C.S_C.MIS;
11072 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;
11073 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;
11074 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;
11075 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;
11076 if(U->C.A->D->type == 4) {
11078 dmg = (U->C.S_C.CAP + urSupposedToGet)*oopsIsRight/100;
11080 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
11082 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
11083 U->C.S_C.MP -= costMP;
11085 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
11086 hitFix = U->C.A->hitPercent;
11092 while (!(AUN[1] == U->number)) {
11096 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;
11097 if(hit > 100) hit = 100;
11099 if([self sortEcheck:U2A opponent:U])
11102 battleDod1Flag = false;
11105 if(battleDod1Flag) omg = 50;
11107 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
11108 NSLog(@"修正前のダメージ:%g, %g", dmg, U2A->D->seed);
11110 dmg = [self dmgResist:dmg];
11111 NSLog(@"属性後のダメージ:%g", dmg);
11112 def2 = pow(def2, U->CL.S_C.ARM);
11113 int omfg = rand()%100;
11114 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->CL.S_C.ARM);
11115 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg/10 + dmg - U->CL.S_C.ARM));
11116 if(lolFlag) dmg = (dmg*omfg/100/10 + dmg);
11117 else dmg = (dmg*omfg/100/10+ dmg - U->CL.S_C.ARM);
11120 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
11121 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
11122 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
11124 if(U->CL.S_C.typeMOVE == RIKU){
11125 if(U2A->riku == A) dmg = dmg*1.2;
11126 if(U2A->riku == B) dmg = dmg*1.0;
11127 if(U2A->riku == C) dmg = dmg*0.6;
11128 if(U2A->riku == D) dmg = dmg*0.2;
11129 if(U2A->riku == E) dmg = 0;
11130 if(U2A->riku == S) dmg = dmg*1.5;
11131 if(U2A->riku == SS) dmg = dmg*2.0;
11132 } if(U->CL.S_C.typeMOVE == UMI &&
11133 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
11134 if(U2A->umi == A) dmg = dmg*1.2;
11135 if(U2A->umi == B) dmg = dmg*1.0;
11136 if(U2A->umi == C) dmg = dmg*0.6;
11137 if(U2A->umi == D) dmg = dmg*0.2;
11138 if(U2A->umi == E) dmg = 0;
11139 if(U2A->umi == S) dmg = dmg*1.5;
11140 if(U2A->umi == SS) dmg = dmg*2.0;
11141 }else if(U->CL.S_C.typeMOVE == UMI){
11142 if(U2A->riku == A) dmg = dmg*1.2;
11143 if(U2A->riku == B) dmg = dmg*1.0;
11144 if(U2A->riku == C) dmg = dmg*0.6;
11145 if(U2A->riku == D) dmg = dmg*0.2;
11146 if(U2A->riku == E) dmg = 0;
11147 if(U2A->riku == S) dmg = dmg*1.5;
11148 if(U2A->riku == SS) dmg = dmg*2.0;
11150 } if(U->CL.S_C.typeMOVE == CHU){
11151 if(U2A->chu == A) dmg = dmg*1.2;
11152 if(U2A->chu == B) dmg = dmg*1.0;
11153 if(U2A->chu == C) dmg = dmg*0.6;
11154 if(U2A->chu == D) dmg = dmg*0.2;
11155 if(U2A->chu == E) dmg = 0;
11156 if(U2A->chu == S) dmg = dmg*1.5;
11157 if(U2A->chu == SS) dmg = dmg*2.0;
11158 } if(U->CL.S_C.typeMOVE == SORA){
11159 if(U2A->sora == A) dmg = dmg*1.2;
11160 if(U2A->sora == B) dmg = dmg*1.0;
11161 if(U2A->sora == C) dmg = dmg*0.6;
11162 if(U2A->sora == D) dmg = dmg*0.2;
11163 if(U2A->sora == E) dmg = 0;
11164 if(U2A->sora == S) dmg = dmg*1.5;
11165 if(U2A->sora == SS) dmg = dmg*2.0;
11168 NSLog(@"ユニットの地形適用後:%g", dmg);
11170 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
11174 if(graze > omfg && !healFlag) {dmg = dmg/5;
11178 if(battleDef1Flag) dmg -= dmg*0.5;
11179 battleDef1Flag = false;
11181 if(dmg < 0) dmg = 0;
11182 U->CL.S_C.HP -= dmg;
11186 if(U->CL.S_C.HP <= 0) {
11188 U2->C.S_C.vigor += 5;
11190 messageProcess = 2;
11197 if(U->targType2L) {
11199 targType2Lflag = true;
11204 if(U->targType2D) {
11206 targType2Dflag = true;
11216 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
11218 [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
11220 if(![U2A->msg isEqualToString:@""]){
11221 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
11222 [self originalMessage:U2A->msg subj:U2->C.name obje:U->CL.name]]];
11228 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
11230 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
11232 }else if(battleDef2Flag){
11236 while (!(DUN[1] == U->number)) {
11241 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
11244 }else if(battleDod2Flag){
11247 while (!(DUN[1] == U->number)) {
11251 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
11256 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
11259 [battleDialog setStringValue:message];
11269 -(void)DisplayMessageMod3A{//防御側モビール
11271 double def2 = (double)31/32;
11272 NSString *message = @"";
11291 static bool extentbool3 = false;
11292 static bool extentbool4 = false;
11293 if(!extentbool3 && extentBattleFlag2){
11294 extentbool3 = true;
11295 extentMPcostFlag = false;
11298 if(!extentBattleFlag2){
11302 if(bLoopFlag) return;
11305 while (!(DUN[DUNnum] == U->number)) {
11311 while (!(AUN[1] == U->number)) {
11315 ATTACK *aTop = U->C.A;
11316 for(int i = 0;i < crCAL1;i++){
11317 U->C.A = U->C.A->next;
11321 if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
11324 [bplayer2 setImage:U2->CL.imgb];
11325 //[bplayer2 setImageScaling:NSScaleToFit];
11326 [nplayer2 setStringValue:U2->CL.name];
11327 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U2->CL.S_C.HP, U2->CL.S_M.HP]];
11328 [lplayer2 setIntValue:U2->CL.S_C.HP/U2->CL.S_M.HP*100];
11329 [iplayer2 setImage:MC[chipNum[U2->x][U2->y]].img];
11330 [mplayer2 setStringValue:MC[chipNum[U2->x][U2->y]].name];
11331 [rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U2->x][U2->y]].dmgfix]];
11333 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){
11334 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
11336 NSString *path = @"data/AttackList/ALdata";
11338 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
11340 path = [path stringByAppendingFormat:@"/"];
11342 path = [path stringByAppendingString:U->C.A->AN.movName];
11344 NSData *AVData = [NSData dataWithContentsOfFile:path];
11347 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
11352 NSString *path = @"data/AttackList3/IALdata";
11354 path = [path stringByAppendingFormat:@"%dE", U->C.A->indexE];
11356 path = [path stringByAppendingFormat:@"/"];
11358 path = [path stringByAppendingString:U->C.A->AN.movName];
11361 NSData *AVData = [NSData dataWithContentsOfFile:path];
11364 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
11370 AVPV.player = [AVpreview retain];
11376 [AVPV setHidden:NO];
11378 [battleDialog setStringValue:message];
11380 avPlayerFlag1 = true;
11386 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->C.A->AN.ANI && !animationFlag3 && DUN[DUNnum] == 1){
11388 [battleDialog setStringValue:message];
11389 animationFlag1 = true;
11397 if(U->C.A->D->type == 0) dmg = U->C.S_C.ATK + U->C.A->totalD;
11398 if(U->C.A->D->type == 1) dmg = U->C.S_C.DEF + U->C.A->totalD;
11399 if(U->C.A->D->type == 2) dmg = U->C.S_C.ACU + U->C.A->totalD;
11400 if(U->C.A->D->type == 3) dmg = U->C.S_C.EVA + U->C.A->totalD;
11401 if(U->C.A->D->type == 4) dmg = U->C.S_C.CAP + U->C.A->totalD;
11402 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
11405 double urSupposedToGet;
11407 if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
11409 double oopsIsRight;
11411 if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
11412 else oopsIsRight = U->C.S_C.MIS;
11413 bool lolflag = false;
11415 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;
11416 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;
11417 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;
11418 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;
11420 if(U->C.A->D->type == 4){
11422 dmg = (U->C.S_C.CAP + U->C.A->totalD)*oopsIsRight/100;
11425 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
11426 double val2 = log(3+U2->C.S_C.MP/64);
11431 costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
11433 if(extentMPcostFlag && extentBattleFlag2){
11436 U->C.S_C.MP -= costMP;
11437 extentMPcostFlag = true;
11440 hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
11441 hitFix = U->C.A->hitPercent;
11447 while (!(DUN[DUNnum] == U->number)) {
11450 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;
11451 if(hit > 100) hit = 100;
11452 if(U2A->D->sort == 1){
11455 if([self sortEcheck:U2A opponent:U])
11461 if(battleDod2Flag) wtf = 50;
11462 if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
11464 if(U2A->D->sort == 0){
11465 NSLog(@"修正前のダメージ:%g", dmg);
11466 dmg = [self dmgResist:dmg];
11467 NSLog(@"属性後のダメージ:%g", dmg);
11468 def2 = pow(def2, U->CL.S_C.ARM);
11469 int omfg = rand()%100;
11470 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, (U->CL.S_C.ARM));
11471 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg/10 + dmg - U->CL.S_C.ARM));
11472 if(lolflag) dmg = (dmg*omfg/100/10 + dmg);
11473 else dmg = (dmg*omfg/100/10 + dmg - U->CL.S_C.ARM);
11474 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
11475 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
11476 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
11478 if(U->CL.S_C.typeMOVE == RIKU){
11479 if(U2A->riku == A) dmg = dmg*1.2;
11480 if(U2A->riku == B) dmg = dmg*1.0;
11481 if(U2A->riku == C) dmg = dmg*0.6;
11482 if(U2A->riku == D) dmg = dmg*0.2;
11483 if(U2A->riku == E) dmg = 0;
11484 if(U2A->riku == S) dmg = dmg*1.5;
11485 if(U2A->riku == SS) dmg = dmg*2.0;
11486 } if(U->CL.S_C.typeMOVE == UMI &&
11487 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
11488 if(U2A->umi == A) dmg = dmg*1.2;
11489 if(U2A->umi == B) dmg = dmg*1.0;
11490 if(U2A->umi == C) dmg = dmg*0.6;
11491 if(U2A->umi == D) dmg = dmg*0.2;
11492 if(U2A->umi == E) dmg = 0;
11493 if(U2A->umi == S) dmg = dmg*1.5;
11494 if(U2A->umi == SS) dmg = dmg*2.0;
11495 }else if(U->CL.S_C.typeMOVE == UMI){
11496 if(U2A->riku == A) dmg = dmg*1.2;
11497 if(U2A->riku == B) dmg = dmg*1.0;
11498 if(U2A->riku == C) dmg = dmg*0.6;
11499 if(U2A->riku == D) dmg = dmg*0.2;
11500 if(U2A->riku == E) dmg = 0;
11501 if(U2A->riku == S) dmg = dmg*1.5;
11502 if(U2A->riku == SS) dmg = dmg*2.0;
11504 } if(U->CL.S_C.typeMOVE == CHU){
11505 if(U2A->chu == A) dmg = dmg*1.2;
11506 if(U2A->chu == B) dmg = dmg*1.0;
11507 if(U2A->chu == C) dmg = dmg*0.6;
11508 if(U2A->chu == D) dmg = dmg*0.2;
11509 if(U2A->chu == E) dmg = 0;
11510 if(U2A->chu == S) dmg = dmg*1.5;
11511 if(U2A->chu == SS) dmg = dmg*2.0;
11512 } if(U->CL.S_C.typeMOVE == SORA){
11513 if(U2A->sora == A) dmg = dmg*1.2;
11514 if(U2A->sora == B) dmg = dmg*1.0;
11515 if(U2A->sora == C) dmg = dmg*0.6;
11516 if(U2A->sora == D) dmg = dmg*0.2;
11517 if(U2A->sora == E) dmg = 0;
11518 if(U2A->sora == S) dmg = dmg*1.5;
11519 if(U2A->sora == SS) dmg = dmg*2.0;
11522 NSLog(@"ユニットの地形適用後:%g", dmg);
11523 if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
11524 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
11528 if(graze > omfg && !healFlag) {dmg = dmg/5;
11531 if(battleDef2Flag) dmg -= dmg*0.5;
11532 battleDef2Flag = false;
11534 if(dmg < 0) dmg = 0;
11535 U->CL.S_C.HP -= dmg;
11538 }else if(U2A->D->sort == 1){
11539 dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
11542 U->C.S_C.HP += dmg;
11543 if(U->C.S_C.HP > U->C.S_M.HP) U->C.S_C.HP = U->C.S_M.HP;
11548 if(U->CL.S_C.HP <= 0) {
11550 U2->C.S_C.vigor += 5;
11552 messageProcess = 2;
11559 if(U->targType2L) {
11561 targType2Lflag = true;
11566 if(U->targType2D) {
11568 targType2Dflag = true;
11576 [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
11577 [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
11579 if(![U2A->msg isEqualToString:@""]){
11581 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
11582 [self originalMessage:U2A->msg subj:U2->C.name obje:U->CL.name]]];
11586 if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
11587 if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
11588 else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->CL.name, dmg]];
11589 }else if(battleDef1Flag){
11593 while (!(AUN[1] == U->number)) {
11598 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
11601 }else if(battleDod1Flag){
11604 while (!(AUN[1] == U->number)) {
11608 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
11613 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
11616 [battleDialog setStringValue:message];
11623 if(!extentBattleFlag2){
11628 }else if(extentBattleFlag2){
11630 messageProcess = 1;
11631 if(DUN[DUNnum] <= 0){
11635 extentBattleFlag2 = false;
11636 extentbool3 = false;
11637 extentMPcostFlag = false;
11644 -(void)DisplayMessageMod3B{
11647 double def2 = (double)31/32;
11648 NSString *message = @"";
11668 if(bLoopFlag) return;
11672 while (!(AUN[1] == U->number)) {
11678 while (!(DUN[1] == U->number)) {
11681 ATTACK *aTop2 = U->CL.A;
11687 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
11688 costVIG = U->C.A->vigor;
11691 mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
11692 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]){
11693 mostDmg = U->CL.A->totalD;
11696 U->CL.A = U->CL.A->next;
11700 if(mostNum < 0) U->C.A = NULL;
11704 if(!battleSet2PushedFlag){
11705 for(int i = 0;i < mostNumSub;i++){
11706 U->CL.A = U->CL.A->next;
11711 for(int i = 0;i < crCAL2;i++){
11712 U->CL.A = U->C.A->next;
11716 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]){
11717 }else while(U->CL.A){
11718 U->CL.A = U->CL.A->next;
11725 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
11729 if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
11731 if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
11732 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
11734 NSString *path = @"data/AttackList/ALdata";
11736 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
11738 path = [path stringByAppendingFormat:@"/"];
11740 path = [path stringByAppendingString:U->CL.A->AN.movName];
11743 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
11746 AVPV.player = [AVpreview retain];
11751 [AVPV setControlsStyle:0];
11752 [AVPV setHidden:NO];
11754 [battleDialog setStringValue:message];
11756 avPlayerFlag2 = true;
11761 }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->CL.A->AN.ANI && !animationFlag3){
11764 animationFlag2 = true;
11774 dmg = U->CL.A->totalD;
11776 costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
11777 U->CL.S_C.EN -= costMP;
11779 hit = U->CL.S_C.MOB + U->C.S_C.HIT;
11780 hitFix = U->CL.A->hitPercent;
11786 while (!(AUN[1] == U->number)) {
11790 double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
11792 double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
11795 hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
11796 if(hit > 100) hit = 100;
11798 if([self sortEcheck:U2A opponent:U])
11801 battleDod1Flag = false;
11804 if(battleDod1Flag) omg = 50;
11806 if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
11807 NSLog(@"修正前のダメージ:%g", dmg);
11808 dmg = [self dmgResist:dmg];
11809 NSLog(@"属性後のダメージ:%g", dmg);
11810 def2 = pow(def2, U->C.S_C.DEF);
11811 int omfg = rand()%100;
11812 NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->C.S_C.DEF);
11813 NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->C.S_C.DEF), (dmg/10 + dmg - U->C.S_C.DEF));
11814 dmg = (dmg*omfg/100/10 + dmg - U->C.S_C.DEF);
11817 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
11818 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
11819 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
11821 if(U->C.S_C.typeMOVE == RIKU){
11822 if(U2A->riku == A) dmg = dmg*1.2;
11823 if(U2A->riku == B) dmg = dmg*1.0;
11824 if(U2A->riku == C) dmg = dmg*0.6;
11825 if(U2A->riku == D) dmg = dmg*0.2;
11826 if(U2A->riku == E) dmg = 0;
11827 if(U2A->riku == S) dmg = dmg*1.5;
11828 if(U2A->riku == SS) dmg = dmg*2.0;
11829 } if(U->C.S_C.typeMOVE == UMI &&
11830 (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
11831 if(U2A->umi == A) dmg = dmg*1.2;
11832 if(U2A->umi == B) dmg = dmg*1.0;
11833 if(U2A->umi == C) dmg = dmg*0.6;
11834 if(U2A->umi == D) dmg = dmg*0.2;
11835 if(U2A->umi == E) dmg = 0;
11836 if(U2A->umi == S) dmg = dmg*1.5;
11837 if(U2A->umi == SS) dmg = dmg*2.0;
11838 }else if(U->C.S_C.typeMOVE == UMI){
11839 if(U2A->riku == A) dmg = dmg*1.2;
11840 if(U2A->riku == B) dmg = dmg*1.0;
11841 if(U2A->riku == C) dmg = dmg*0.6;
11842 if(U2A->riku == D) dmg = dmg*0.2;
11843 if(U2A->riku == E) dmg = 0;
11844 if(U2A->riku == S) dmg = dmg*1.5;
11845 if(U2A->riku == SS) dmg = dmg*2.0;
11847 } if(U->C.S_C.typeMOVE == CHU){
11848 if(U2A->chu == A) dmg = dmg*1.2;
11849 if(U2A->chu == B) dmg = dmg*1.0;
11850 if(U2A->chu == C) dmg = dmg*0.6;
11851 if(U2A->chu == D) dmg = dmg*0.2;
11852 if(U2A->chu == E) dmg = 0;
11853 if(U2A->chu == S) dmg = dmg*1.5;
11854 if(U2A->chu == SS) dmg = dmg*2.0;
11855 } if(U->C.S_C.typeMOVE == SORA){
11856 if(U2A->sora == A) dmg = dmg*1.2;
11857 if(U2A->sora == B) dmg = dmg*1.0;
11858 if(U2A->sora == C) dmg = dmg*0.6;
11859 if(U2A->sora == D) dmg = dmg*0.2;
11860 if(U2A->sora == E) dmg = 0;
11861 if(U2A->sora == S) dmg = dmg*1.5;
11862 if(U2A->sora == SS) dmg = dmg*2.0;
11865 NSLog(@"ユニットの地形適用後:%g", dmg);
11867 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
11871 if(graze > omfg && !healFlag) {dmg = dmg/5;
11875 if(battleDef1Flag) dmg -= dmg*0.5;
11876 battleDef1Flag = false;
11878 if(dmg < 0) dmg = 0;
11879 U->C.S_C.HP -= dmg;
11883 if(U->C.S_C.HP <= 0) {
11885 U2->C.S_C.vigor += 5;
11887 messageProcess = 2;
11894 if(U->targType2L) {
11896 targType2Lflag = true;
11901 if(U->targType2D) {
11903 targType2Dflag = true;
11913 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
11915 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
11917 if(![U2A->msg isEqualToString:@""]){
11918 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
11919 [self originalMessage:U2A->msg subj:U2->CL.name obje:U->C.name]]];
11925 message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
11927 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
11929 }else if(battleDef2Flag){
11933 while (!(DUN[1] == U->number)) {
11938 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
11941 }else if(battleDod2Flag){
11944 while (!(DUN[1] == U->number)) {
11948 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
11953 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
11956 [battleDialog setStringValue:message];
11965 -(NSString*)originalMessage:(NSString*)str subj:(NSString*)subj obje:(NSString*)obje{
11969 NSString *result = @"";
11971 string = [str copy];
11973 array = [string componentsSeparatedByString:@"$subj"];
11975 for(int i = 0;i < [array count];i++){
11977 result = [[result stringByAppendingString:[NSString stringWithFormat:@"%@", subj]] retain];
11979 result = [[result stringByAppendingString:[array objectAtIndex:i]] retain];
11982 string = [result copy];
11984 array = [string componentsSeparatedByString:@"$obje"];
11988 for(int i = 0;i < [array count];i++){
11990 result = [[result stringByAppendingString:[NSString stringWithFormat:@"%@", obje]] retain];
11992 result = [[result stringByAppendingString:[array objectAtIndex:i]] retain];
11995 //NSLog(@"%@", result);
12002 -(double)dmgResist:(double)DMG{
12006 sd[0] = U->C.R_C.blow + U->C.R_F.blow;
12007 sd[1] = U->C.R_C.slash + U->C.R_F.slash;
12008 sd[2] = U->C.R_C.stub + U->C.R_F.stub;
12009 sd[3] = U->C.R_C.arrow + U->C.R_F.arrow;
12010 sd[4] = U->C.R_C.gun + U->C.R_F.gun;
12011 sd[5] = U->C.R_C.shell + U->C.R_F.shell;
12013 sd[6] = U->C.R_C.flame + U->C.R_F.flame;
12014 sd[7] = U->C.R_C.cold + U->C.R_F.cold;
12015 sd[8] = U->C.R_C.electoric + U->C.R_F.electoric;
12016 sd[9] = U->C.R_C.air + U->C.R_F.air;
12017 sd[10] = U->C.R_C.water + U->C.R_F.water;
12018 sd[11] = U->C.R_C.gas + U->C.R_F.gas;
12019 sd[12] = U->C.R_C.holy + U->C.R_F.holy;
12020 sd[13] = U->C.R_C.dark + U->C.R_F.dark;
12021 sd[14] = U->C.R_C.explosion + U->C.R_F.explosion;
12022 sd[15] = U->C.R_C.blood + U->C.R_F.blood;
12024 sd[16] = U->C.R_C.paralysis + U->C.R_F.paralysis;
12025 sd[17] = U->C.R_C.confusion + U->C.R_F.confusion;
12026 sd[18] = U->C.R_C.poison + U->C.R_F.poison;
12027 sd[19] = U->C.R_C.sleep + U->C.R_F.sleep;
12028 sd[20] = U->C.R_C.charm + U->C.R_F.charm;
12029 sd[21] = U->C.R_C.silent + U->C.R_F.silent;
12033 for(int i = 0;i <= 21;i++)
12034 sd[i] &= ~(sd[i] >> 31);
12038 if(U2A->D->seed == 0) DMG = DMG * sd[0]/100;
12039 if(U2A->D->seed == 1) DMG = DMG * sd[1]/100;
12040 if(U2A->D->seed == 2) DMG = DMG * sd[2]/100;
12041 if(U2A->D->seed == 3) DMG = DMG * sd[3]/100;
12042 if(U2A->D->seed == 4) DMG = DMG * sd[4]/100;
12043 if(U2A->D->seed == 5) DMG = DMG * sd[5]/100;
12045 if(U2A->D->seed == 6) DMG = DMG * sd[6]/100;
12046 if(U2A->D->seed == 7) DMG = DMG * sd[7]/100;
12047 if(U2A->D->seed == 8) DMG = DMG * sd[8]/100;
12048 if(U2A->D->seed == 9) DMG = DMG * sd[9]/100;
12049 if(U2A->D->seed == 10) DMG = DMG * sd[10]/100;
12050 if(U2A->D->seed == 11) DMG = DMG * sd[11]/100;
12051 if(U2A->D->seed == 12) DMG = DMG * sd[12]/100;
12052 if(U2A->D->seed == 13) DMG = DMG * sd[13]/100;
12053 if(U2A->D->seed == 14) DMG = DMG * sd[14]/100;
12054 if(U2A->D->seed == 15) DMG = DMG * sd[15]/100;
12056 if(U2A->D->seed == 16) DMG = DMG * sd[16]/100;
12057 if(U2A->D->seed == 17) DMG = DMG * sd[17]/100;
12058 if(U2A->D->seed == 18) DMG = DMG * sd[18]/100;
12059 if(U2A->D->seed == 19) DMG = DMG * sd[19]/100;
12060 if(U2A->D->seed == 20) DMG = DMG * sd[20]/100;
12061 if(U2A->D->seed == 21) DMG = DMG * sd[21]/100;
12066 -(IBAction)battleStart:(id)sender{
12067 battleSetUp = true;
12068 battleSet1Flag = false;
12069 battleSet2Flag = false;
12070 battleSettingFlag = false;
12072 attackingWait = false;
12073 crapBugFixFlag = true;
12075 [battlePanel close];
12079 -(void)battleStartCPU{
12080 battleSetUp = true;
12081 battleSet1Flag = false;
12082 battleSet2Flag = false;
12083 battleSettingFlag = false;
12085 crapBugFixFlag = true;
12087 [battlePanel close];
12090 -(IBAction)battleSet1:(id)sender{
12091 battleSetFlag = false;
12092 battleSet1Flag = true;
12093 battleDef1Flag = false;
12094 battleDod1Flag = false;
12095 battleSettingFlag = true;
12096 battleSet2PushedFlag = false;
12099 while (!(AUN[1] == U->number)) {
12102 if(U->chipNumberL >= 0)
12105 [self initCAttackList2];
12106 [self initCAttackSelect2];
12108 else if(U->chipNumber >= 0) {
12110 [self initCAttackList];
12111 [self initCAttackSelect];
12115 [atkPanel makeKeyAndOrderFront:nil];
12117 -(IBAction)battleDef1:(id)sender{
12118 battleDef1Flag = true;
12119 battleSet1Flag = false;
12120 battleDod1Flag = false;
12122 -(IBAction)battleDod1:(id)sender{
12123 battleDod1Flag = true;
12124 battleDef1Flag = false;
12125 battleSet1Flag = false;
12127 -(IBAction)battleSet2:(id)sender{
12128 battleSetFlag = true;
12129 battleSet2Flag = true;
12130 battleDef2Flag = false;
12131 battleDod2Flag = false;
12132 battleSettingFlag = true;
12133 battleSet2PushedFlag = true;
12136 while (!(DUN[1] == U->number)) {
12140 if(U->chipNumberL >= 0){
12142 [self initCAttackList2];
12143 [self initCAttackSelect2];
12145 else if(U->chipNumber >= 0) {
12147 [self initCAttackList];
12148 [self initCAttackSelect];
12151 [atkPanel makeKeyAndOrderFront:nil];
12153 -(IBAction)battleDef2:(id)sender{
12154 battleDef2Flag = true;
12155 battleSet2Flag = false;
12156 battleDod2Flag = false;
12158 -(IBAction)battleDod2:(id)sender{
12159 battleDod2Flag = true;
12160 battleDef2Flag = false;
12161 battleSet2Flag = false;
12164 -(IBAction)battleCancel:(id)sender{
12165 battleFlag = false;
12166 battleSettingFlag = false;
12168 battleSet2PushedFlag = false;
12169 attackingWait = false;
12171 [battlePanel close];
12174 -(IBAction)researchCancel:(id)sender{
12175 [researchPanel close];
12178 -(void)setCommandPanel{
12180 menuPoint.x = [mapWindow frame].origin.x + possionLocalX*32;
12181 menuPoint.y = [mapWindow frame].origin.y + possionLocalY*32 - 180;
12184 if(buildSkillFlag) {
12185 cIncludeCreateFlag = true;
12187 }else cIncludeCreateFlag = false;
12188 if(summonSkillFlag) {
12189 cIncludeSummonFlag = true;
12191 }else cIncludeSummonFlag = false;
12192 int plusBtnValue = 0;
12194 if(cIncludeCreateFlag && cIncludeSummonFlag && MF[MFselectedRow+1].MS.buildAllowedFlag && MF[MFselectedRow+1].MS.summonAllowedFlag){
12196 plusBtnValue = 200;
12197 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
12200 plusBtnValue -= moveBtn.frame.size.height + 12;
12201 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12202 [[commandPanel contentView] addSubview:moveBtn];
12204 plusBtnValue -= attackBtn.frame.size.height + 2;
12205 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12206 [[commandPanel contentView] addSubview:attackBtn];
12208 plusBtnValue -= stanbyBtn.frame.size.height + 2;
12209 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12210 [[commandPanel contentView] addSubview:stanbyBtn];
12212 [createBtn setTransparent: NO];
12213 [createBtn setEnabled: YES];
12214 plusBtnValue -= createBtn.frame.size.height + 2;
12215 [createBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12216 [[commandPanel contentView] addSubview:createBtn];
12218 [summonBtn setTransparent: NO];
12219 [summonBtn setEnabled: YES];
12220 plusBtnValue -= summonBtn.frame.size.height + 2;
12221 [summonBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12222 [[commandPanel contentView] addSubview:summonBtn];
12224 plusBtnValue -= statusBtn.frame.size.height + 2;
12225 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12226 [[commandPanel contentView] addSubview:statusBtn];
12228 plusBtnValue -= cancelBtn.frame.size.height + 2;
12229 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12230 [[commandPanel contentView] addSubview:cancelBtn];
12233 else if(cIncludeCreateFlag && !cIncludeSummonFlag && MF[MFselectedRow+1].MS.buildAllowedFlag){
12234 plusBtnValue = 180;
12235 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
12237 plusBtnValue -= moveBtn.frame.size.height + 12;
12238 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12239 [[commandPanel contentView] addSubview:moveBtn];
12241 plusBtnValue -= attackBtn.frame.size.height + 2;
12242 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12243 [[commandPanel contentView] addSubview:attackBtn];
12245 plusBtnValue -= stanbyBtn.frame.size.height + 2;
12246 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12247 [[commandPanel contentView] addSubview:stanbyBtn];
12249 [createBtn setTransparent: NO];
12250 [createBtn setEnabled: YES];
12251 plusBtnValue -= createBtn.frame.size.height + 2;
12252 [createBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12253 [[commandPanel contentView] addSubview:createBtn];
12255 [summonBtn setTransparent: YES];
12256 [summonBtn setEnabled: NO];
12258 plusBtnValue -= statusBtn.frame.size.height + 2;
12259 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12260 [[commandPanel contentView] addSubview:statusBtn];
12262 plusBtnValue -= cancelBtn.frame.size.height + 2;
12263 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12264 [[commandPanel contentView] addSubview:cancelBtn];
12267 }else if(cIncludeSummonFlag && !cIncludeCreateFlag && MF[MFselectedRow+1].MS.summonAllowedFlag){
12269 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, 210) display:YES];
12271 plusBtnValue = 180;
12272 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
12275 plusBtnValue -= moveBtn.frame.size.height + 12;
12276 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12277 [[commandPanel contentView] addSubview:moveBtn];
12279 plusBtnValue -= attackBtn.frame.size.height + 2;
12280 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12281 [[commandPanel contentView] addSubview:attackBtn];
12283 plusBtnValue -= stanbyBtn.frame.size.height + 2;
12284 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12285 [[commandPanel contentView] addSubview:stanbyBtn];
12287 [createBtn setTransparent: YES];
12288 [createBtn setEnabled: NO];
12290 [summonBtn setTransparent: NO];
12291 [summonBtn setEnabled: YES];
12292 plusBtnValue -= summonBtn.frame.size.height + 2;
12293 [summonBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12294 [[commandPanel contentView] addSubview:summonBtn];
12296 plusBtnValue -= statusBtn.frame.size.height + 2;
12297 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12298 [[commandPanel contentView] addSubview:statusBtn];
12300 plusBtnValue -= cancelBtn.frame.size.height + 2;
12301 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12302 [[commandPanel contentView] addSubview:cancelBtn];
12305 plusBtnValue = 160;
12306 [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
12308 plusBtnValue -= moveBtn.frame.size.height + 12;
12309 [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12310 [[commandPanel contentView] addSubview:moveBtn];
12312 plusBtnValue -= attackBtn.frame.size.height + 2;
12313 [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12314 [[commandPanel contentView] addSubview:attackBtn];
12316 plusBtnValue -= stanbyBtn.frame.size.height + 2;
12317 [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12318 [[commandPanel contentView] addSubview:stanbyBtn];
12320 [createBtn setTransparent: YES];
12321 [createBtn setEnabled: NO];
12323 [summonBtn setTransparent: YES];
12324 [summonBtn setEnabled: NO];
12326 plusBtnValue -= statusBtn.frame.size.height + 2;
12327 [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12328 [[commandPanel contentView] addSubview:statusBtn];
12330 plusBtnValue -= cancelBtn.frame.size.height + 2;
12331 [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12332 [[commandPanel contentView] addSubview:cancelBtn];
12338 -(void)openMessage{
12339 [IVimage setHidden:NO];
12340 [TFname setHidden:NO];
12341 [TFmessage setHidden:NO];
12342 [BXname setHidden:NO];
12343 [BXmessage setHidden:NO];
12344 [IVimage setEnabled:YES];
12345 [TFname setEnabled:YES];
12346 [TFmessage setEnabled:YES];
12349 -(void)closeMessage{
12350 [IVimage setHidden:YES];
12351 [TFname setHidden:YES];
12352 [TFmessage setHidden:YES];
12353 [BXname setHidden:YES];
12354 [BXmessage setHidden:YES];
12355 [IVimage setEnabled:NO];
12356 [TFname setEnabled:NO];
12357 [TFmessage setEnabled:NO];
12360 -(MAPSCRIPT0*)setMessage:(MAPSCRIPT0*)MS0{
12363 if(!messageDialog){
12364 [self closeMessage];
12365 damnitFixFlag = true;
12366 }else if(MS0->S1.str){
12367 [self openMessage];
12368 damnitFixFlag = false;
12369 NSString *string = @"";
12371 string = [MS0->S1.str retain];
12373 MS0->endFlag = true;
12374 textInstantBugFixFlag = false;
12375 messageEndFlag = false;
12376 messageDialog = false;
12380 if(!initStringNum){
12383 initStringNum = true;
12384 textInstantBugFixFlag = true;
12387 msgMax = (int)[string length];
12393 initImgFlag = true;
12396 [IVimage setImage:MS0->S1.img];
12397 if(MS0->S1.name) [TFname setStringValue:MS0->S1.name];
12398 else [TFname setStringValue:@""];
12400 if(msgCnt <= msgMax){
12402 [TFmessage setStringValue:[string substringToIndex:msgCnt]];
12405 else [TFmessage setStringValue:@""];
12410 if(messageEndFlag){
12411 MS0->endFlag = true;
12412 messageEndFlag = false;
12413 initStringNum = false;
12414 messageDialog = false;
12415 MS0->succeessfulFlag = true;
12417 textInstantBugFixFlag = false;
12418 [self setMessage:NULL];
12423 MS0->endFlag = true;
12424 messageEndFlag = false;
12425 messageDialog = false;
12426 initStringNum = false;
12435 NSString *directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
12436 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
12438 NSString *path = @"Map/";
12439 NSString *fileData = nil;
12440 NSArray *fileDataArray;
12442 path = [path stringByAppendingFormat:@"%@" ,MF[MFselectedRow+1].fileName];
12444 fileData = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
12446 fileDataArray = [fileData componentsSeparatedByString:@"\n"];
12448 MAPSCRIPT0 *MS00 = MF[MFselectedRow+1].MS.D->P;
12449 MAPSCRIPT0 *m00Top = MS00;
12450 for (int i = 0; i < [fileDataArray count]; i++) {
12452 NSRange range = [[fileDataArray objectAtIndex:i] rangeOfString:@"◆"];
12453 if(range.location != NSNotFound){
12455 NSArray *array2 = [[fileDataArray objectAtIndex:i] componentsSeparatedByString:@","];
12456 if(MS00->type == 1)
12458 MS00->S1.iName = [[array2 objectAtIndex:2] retain];
12460 for(int k = 0; k < UCN;k++){
12462 if([MS00->S1.iName isEqualToString:UC[k].nameClass]){
12463 MS00->S1.img = [UC[k].imgb retain];
12479 -(MAPSCRIPT0*)setSwitch:(MAPSCRIPT0*)MS0{
12482 for(int i = 0;*(MS0->switch1 + i) >0;i++){
12483 Suicchi[*(MS0->switch1+i)] = true;
12487 for(int i = 0;*(MS0->switch2 + i) >0;i++){
12488 Suicchi[*(MS0->switch2+i)] = false;
12492 MS0->succeessfulFlag = true;
12493 MS0->endFlag = true;
12497 -(MAPSCRIPT0*)setBranch:(MAPSCRIPT0*)MS0{
12499 MAPSCRIPT0 *CRMS0 = MS0;
12500 bool branchEndFlag = false;
12501 bool branchSuceedFlag = false;
12502 bool trueFlag = true;
12510 MS0->endFlag = true;
12516 if(MS0->S4.suicchiFlag){
12517 if(MS0->S4.suicchiONOFF == 0){
12518 if(MS0->S4.suicchi)
12519 for (int i = 0;*(MS0->S4.suicchi + i);i++) {
12520 if(!Suicchi[*(MS0->S4.suicchi + i)]){
12525 if(MS0->S4.suicchi)
12526 for (int i = 0;*(MS0->S4.suicchi + i);i++) {
12527 if(Suicchi[*(MS0->S4.suicchi + i)]){
12534 if(MS0->S4.hensuFlag){
12536 if(MS0->S4.teisuFlag){
12537 if(MS0->S4.hensuType == 0){
12538 if([Hensuu[MS0->S4.hensu1] intValue] == MS0->S4.teisuValue){
12543 }else if(MS0->S4.hensuType == 1){
12544 if([Hensuu[MS0->S4.hensu1] intValue] >= MS0->S4.teisuValue){
12549 }else if(MS0->S4.hensuType == 2){
12550 if([Hensuu[MS0->S4.hensu1] intValue] <= MS0->S4.teisuValue){
12555 }else if(MS0->S4.hensuType == 3){
12556 if([Hensuu[MS0->S4.hensu1] intValue] > MS0->S4.teisuValue){
12561 }else if(MS0->S4.hensuType == 4){
12562 if([Hensuu[MS0->S4.hensu1] intValue] < MS0->S4.teisuValue){
12567 }else if(MS0->S4.hensuType == 5){
12568 if([Hensuu[MS0->S4.hensu1] intValue] != MS0->S4.teisuValue){
12575 }if(MS0->S4.hensu2flag){
12576 if(MS0->S4.hensuType == 0){
12577 if([Hensuu[MS0->S4.hensu1] isEqualToString:Hensuu[MS0->S4.hensu2]]){
12582 }else if(MS0->S4.hensuType == 1){
12583 if([Hensuu[MS0->S4.hensu1] intValue] >= [Hensuu[MS0->S4.hensu2] intValue]){
12588 }else if(MS0->S4.hensuType == 2){
12589 if([Hensuu[MS0->S4.hensu1] intValue] <= [Hensuu[MS0->S4.hensu2] intValue]){
12594 }else if(MS0->S4.hensuType == 3){
12595 if([Hensuu[MS0->S4.hensu1] intValue] > [Hensuu[MS0->S4.hensu2] intValue]){
12600 }else if(MS0->S4.hensuType == 4){
12601 if([Hensuu[MS0->S4.hensu1] intValue] < [Hensuu[MS0->S4.hensu2] intValue]){
12606 }else if(MS0->S4.hensuType == 5){
12607 if(![Hensuu[MS0->S4.hensu1] isEqualToString:Hensuu[MS0->S4.hensu2]]){
12616 if(MS0->S4.timerFlag){
12618 if(MS0->S4.timerType == 0){
12619 if(MS0->S4.timerMin <= cntTimerMin){
12621 }else if(MS0->S4.timerSec <= cntTimerSec && MS0->S4.timerMin <= cntTimerMin){
12630 if(MS0->S4.timerMin >= cntTimerMin){
12632 }else if(MS0->S4.timerSec >= cntTimerSec && MS0->S4.timerMin >= cntTimerMin){
12643 if(MS0->S4.unitNumFlag){
12653 int objeSCSunitCnt = 0;
12655 if(MS0->S4.objeFlag){
12657 UNIT2 *objeT = MS0->S4.obje;
12659 while (MS0->S4.obje) {
12664 static bool okflag = true;
12666 for (int i = 0;i < 1002;i++) {
12667 for (int k = 0;k < 1002;k++) {
12674 if(U2->ix == MS0->S4.obje->x && U2->iy == MS0->S4.obje->y){
12685 [self checkPlaceHani:MS0->S4.objeRange+1 tX:U2->y tY:U2->x aMap:objeR u:U scsCnt:&objeSCSunitCnt];
12689 for(int bx=1;bx<=chipWidth;bx++){
12690 for(int by=1;by<=chipHeight;by++){
12691 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
12693 if(objeR[U->x][U->y] > 0){
12695 if(Unum < Cnum) goto omfgUnitOver2;
12709 if(UP->x == U->x && UP->y == U->y){
12722 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
12724 while(UP->next) UP = UP->next;
12729 UP->next = calloc(1, sizeof(UNITPOINT));
12743 //NSLog(@"%@, %d, %d", U->C.name, objeSCSunitCnt, objeR[0][0]);
12748 MS0->S4.obje = MS0->S4.obje->next;
12750 MS0->S4.obje = objeT;
12754 if(MS0->S4.buildFlag){
12755 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
12759 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
12760 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
12761 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
12770 if(MS0->S4.team == 0){
12771 if(!MS0->S4.objeFlag && !MS0->S4.placeFlag){
12774 if(U->team == 0 && !U->dead)
12779 if(MS0->S4.unitType == 0){
12780 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team0num = MS0->S4.unitNum;
12782 if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == objeSCSunitCnt)){
12784 }else if((MS0->S4.unitNum == team0num) && !MS0->S4.objeFlag){
12789 }else if(MS0->S4.unitType == 1){
12790 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team0num = 65000;
12792 if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= objeSCSunitCnt)){
12794 }else if((MS0->S4.unitNum <= team0num) && !MS0->S4.objeFlag){
12799 }else if(MS0->S4.unitType == 2){
12800 if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= objeSCSunitCnt)){
12802 }else if((MS0->S4.unitNum >= team0num) && !MS0->S4.objeFlag){
12810 }else if(MS0->S4.team == 1){
12811 if(!MS0->S4.objeFlag && !MS0->S4.placeFlag){
12814 if(U->team == 1 && !U->dead)
12819 if(MS0->S4.unitType == 0){
12820 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team1num = MS0->S4.unitNum;
12822 if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum == objeSCSunitCnt)){
12824 }else if((MS0->S4.unitNum == team1num) && !MS0->S4.objeFlag){
12829 }else if(MS0->S4.unitType == 1){
12830 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team1num = 65000;
12831 if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= objeSCSunitCnt)){
12833 }else if((MS0->S4.unitNum <= team1num) && !MS0->S4.objeFlag){
12838 }else if(MS0->S4.unitType == 2){
12840 if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= objeSCSunitCnt)){
12842 }else if((MS0->S4.unitNum >= team1num) && !MS0->S4.objeFlag){
12848 }else if(MS0->S4.team == 2){
12849 if(!MS0->S4.objeFlag && !MS0->S4.placeFlag){
12852 if(U->team == 2 && !U->dead)
12857 if(MS0->S4.unitType == 0){
12858 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team2num = MS0->S4.unitNum;
12860 if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == objeSCSunitCnt)){
12862 }else if((MS0->S4.unitNum == team2num) && !MS0->S4.objeFlag){
12867 }else if(MS0->S4.unitType == 1){
12868 if(MS0->S4.objeFlag || MS0->S4.placeFlag) team2num = 65000;
12870 if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= objeSCSunitCnt)){
12872 }else if((MS0->S4.unitNum <= team2num) && !MS0->S4.objeFlag){
12877 }else if(MS0->S4.unitType == 2){
12878 if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= objeSCSunitCnt)){
12880 }else if((MS0->S4.unitNum >= team2num) && !MS0->S4.objeFlag){
12892 if(MS0->S4.unitTypeFlag && MS0->S4.unitNumFlag){
12893 UNIT2 *sjt = MS0->S4.subj;
12894 UNIT *chosen = NULL;
12895 UNIT *chosenT = NULL;
12898 while(MS0->S4.subj){
12901 if(MS0->S4.subj->x == U->ix && MS0->S4.subj->y == U->iy && U->iz == 1){
12903 chosen->next = calloc(1, sizeof(UNIT));
12908 chosen = chosen->next;
12911 chosen = calloc(1, sizeof(UNIT));
12915 chosen->C.name = U->C.name;
12926 MS0->S4.subj = MS0->S4.subj->next;
12927 }MS0->S4.subj = sjt;
12930 int objeSCSunitCnt = 0;
12938 chosen = chosen->next;
12941 if(MS0->S4.unitTypeFlag && MS0->S4.objeFlag){
12943 UNIT2 *objeT = MS0->S4.obje;
12945 while (MS0->S4.obje) {
12950 static bool okflag = true;
12952 for (int i = 0;i < 1002;i++) {
12953 for (int k = 0;k < 1002;k++) {
12960 if(U2->ix == MS0->S4.obje->x && U2->iy == MS0->S4.obje->y){
12972 [self checkPlaceHani:MS0->S4.objeRange+1 tX:U2->y tY:U2->x aMap:objeR u:chosen scsCnt:&objeSCSunitCnt];
12976 for(int bx=1;bx<=chipWidth;bx++){
12977 for(int by=1;by<=chipHeight;by++){
12978 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
12980 if(objeR[chosen->x][chosen->y] > 0){
12982 if(Unum < Cnum) goto omfgUnitOver3;
12996 if(UP->x == chosen->x && UP->y == chosen->y){
13009 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13011 while(UP->next) UP = UP->next;
13016 UP->next = calloc(1, sizeof(UNITPOINT));
13030 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
13032 chosen = chosen->next;
13035 MS0->S4.obje = MS0->S4.obje->next;
13037 MS0->S4.obje = objeT;
13038 }else if(MS0->S4.objeFlag){
13040 UNIT2 *objeT = MS0->S4.obje;
13042 while (MS0->S4.obje) {
13047 static bool okflag = true;
13049 if(U->team != MS0->S4.team){
13053 for (int i = 0;i < 1002;i++) {
13054 for (int k = 0;k < 1002;k++) {
13061 if(U2->ix == MS0->S4.obje->x && U2->iy == MS0->S4.obje->y){
13072 [self checkPlaceHani:MS0->S4.objeRange+1 tX:U2->y tY:U2->x aMap:objeR u:U scsCnt:&objeSCSunitCnt];
13076 for(int bx=1;bx<=chipWidth;bx++){
13077 for(int by=1;by<=chipHeight;by++){
13078 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
13080 if(objeR[chosen->x][chosen->y] > 0){
13082 if(Unum < Cnum) goto omfgUnitOver30;
13096 if(UP->x == chosen->x && UP->y == chosen->y){
13109 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13111 while(UP->next) UP = UP->next;
13116 UP->next = calloc(1, sizeof(UNITPOINT));
13130 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
13132 chosen = chosen->next;
13135 MS0->S4.obje = MS0->S4.obje->next;
13137 MS0->S4.obje = objeT;
13145 if(MS0->S4.team == 0){
13146 if(!MS0->S4.unitTypeFlag){
13149 if(U->team == 0 && !U->dead)
13154 if(MS0->S4.unitType == 0){
13155 if(MS0->S4.unitTypeFlag) team0num = MS0->S4.unitNum;
13157 if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == cntUnit)
13158 && (MS0->S4.unitNum == objeSCSunitCnt)){
13160 }else if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == cntUnit) && !MS0->S4.objeFlag){
13165 }else if(MS0->S4.unitType == 1){
13166 if(MS0->S4.unitTypeFlag) team0num = 65000;
13168 if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= cntUnit)
13169 && (MS0->S4.unitNum <= objeSCSunitCnt)){
13171 }else if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= cntUnit) && !MS0->S4.objeFlag){
13176 }else if(MS0->S4.unitType == 2){
13177 if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= cntUnit)
13178 && (MS0->S4.unitNum >= objeSCSunitCnt)){
13180 }else if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= cntUnit) && !MS0->S4.objeFlag){
13188 }else if(MS0->S4.team == 1){
13189 if(!MS0->S4.unitTypeFlag){
13192 if(U->team == 1 && !U->dead)
13197 if(MS0->S4.unitType == 0){
13198 if(MS0->S4.unitTypeFlag) team1num = MS0->S4.unitNum;
13200 if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum == cntUnit)
13201 && (MS0->S4.unitNum == objeSCSunitCnt)){
13203 }else if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum == cntUnit) && !MS0->S4.objeFlag){
13208 }else if(MS0->S4.unitType == 1){
13209 if(MS0->S4.unitTypeFlag) team1num = 65000;
13211 if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= cntUnit)
13212 && (MS0->S4.unitNum <= objeSCSunitCnt)){
13214 }else if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= cntUnit) && !MS0->S4.objeFlag){
13219 }else if(MS0->S4.unitType == 2){
13220 if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= cntUnit)
13221 && (MS0->S4.unitNum >= objeSCSunitCnt)){
13223 }else if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= cntUnit) && !MS0->S4.objeFlag){
13229 }else if(MS0->S4.team == 2){
13230 if(!MS0->S4.unitTypeFlag){
13233 if(U->team == 2 && !U->dead)
13238 if(MS0->S4.unitType == 0){
13239 if(MS0->S4.unitTypeFlag) team2num = MS0->S4.unitNum;
13241 if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == cntUnit)
13242 && (MS0->S4.unitNum == objeSCSunitCnt)){
13244 }else if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == cntUnit) && !MS0->S4.objeFlag){
13249 }else if(MS0->S4.unitType == 1){
13250 if(MS0->S4.unitTypeFlag) team2num = 65000;
13252 if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= cntUnit)
13253 && (MS0->S4.unitNum <= objeSCSunitCnt)){
13255 }else if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= cntUnit) && !MS0->S4.objeFlag){
13260 }else if(MS0->S4.unitType == 2){
13261 if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= cntUnit)
13262 && (MS0->S4.unitNum >= objeSCSunitCnt)){
13264 }else if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= cntUnit) && !MS0->S4.objeFlag){
13282 if(MS0->S4.placeFlag && MS0->S4.unitNumFlag){
13292 UNIT2 *sjt = MS0->S4.subj;
13293 UNIT *chosen = NULL;
13294 UNIT *chosenT = NULL;
13297 if(MS0->S4.unitTypeFlag){
13298 while(MS0->S4.subj){
13301 if(MS0->S4.subj->x == U->ix && MS0->S4.subj->y == U->iy && U->iz == 1){
13303 chosen->next = calloc(1, sizeof(UNIT));
13308 chosen = chosen->next;
13311 chosen = calloc(1, sizeof(UNIT));
13315 chosen->C.name = U->C.name;
13326 MS0->S4.subj = MS0->S4.subj->next;
13327 }MS0->S4.subj = sjt;
13335 chosen = chosen->next;
13341 PLACEMENT *wpt = MS0->S4.wayp;
13343 int waypSCScnt = 0;
13344 bool waypSCS = false;
13345 int waypSCSunitCnt = 0;
13348 if(!MS0->S4.unitTypeFlag){
13350 while (MS0->S4.wayp) {
13356 if(MS0->S4.wayp->type == 0){
13359 if(U->team != MS0->S4.team){
13363 if(MS0->S4.wayp->x == U->x && MS0->S4.wayp->y == U->y){
13371 }else if(MS0->S4.wayp->type == 1){
13373 static bool okflag = true;
13375 if(U->team != MS0->S4.team){
13379 for (int i = 0;i < 1002;i++) {
13380 for (int k = 0;k < 1002;k++) {
13384 [self checkPlaceHani:MS0->S4.wayp->z+1 tX:MS0->S4.wayp->y tY:MS0->S4.wayp->x aMap:waypR u:U scsCnt:&waypSCSunitCnt];
13388 for(int bx=1;bx<=chipWidth;bx++){
13389 for(int by=1;by<=chipHeight;by++){
13390 if(waypR[bx][by] != 999 && waypR[bx][by] > 0){
13392 if(waypR[U->x][U->y] > 0){
13394 if(Unum < Cnum) goto omfgUnitOver;
13408 if(UP->x == U->x && UP->y == U->y){
13421 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13423 while(UP->next) UP = UP->next;
13428 UP->next = calloc(1, sizeof(UNITPOINT));
13441 // NSLog(@"%d", waypSCSunitCnt);
13449 }else if(MS0->S4.wayp->type == 2){
13451 waypSCSunitCnt = 0;
13452 static bool okflag = true;
13454 if(U->team != MS0->S4.team){
13458 if((MS0->S4.wayp->x <= U->x) && (MS0->S4.wayp->x2 >= U->x) &&
13459 (MS0->S4.wayp->y <= U->y) && (MS0->S4.wayp->y2 >= U->y)){
13466 if(Unum < Cnum) goto omfgUnitOver;
13480 if(UP->x == U->x && UP->y == U->y){
13493 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13495 while(UP->next) UP = UP->next;
13500 UP->next = calloc(1, sizeof(UNITPOINT));
13516 MS0->S4.wayp = MS0->S4.wayp->next;
13517 }MS0->S4.wayp = wpt;
13518 // NSLog(@"%d", waypSCSunitCnt);
13520 if(waypSCScnt >= waypCnt)
13523 }else if(MS0->S4.unitTypeFlag){
13525 while (MS0->S4.wayp) {
13531 if(MS0->S4.wayp->type == 0){
13534 if(MS0->S4.wayp->x == chosen->x && MS0->S4.wayp->y == chosen->y){
13539 chosen = chosen->next;
13542 }else if(MS0->S4.wayp->type == 1){
13544 static bool okflag = true;
13546 for (int i = 0;i < 1002;i++) {
13547 for (int k = 0;k < 1002;k++) {
13551 [self checkPlaceHani:MS0->S4.wayp->z+1 tX:MS0->S4.wayp->y tY:MS0->S4.wayp->x aMap:waypR u:chosen scsCnt:&waypSCSunitCnt];
13555 for(int bx=1;bx<=chipWidth;bx++){
13556 for(int by=1;by<=chipHeight;by++){
13557 if(waypR[bx][by] != 999 && waypR[bx][by] > 0){
13559 if(waypR[chosen->x][chosen->y] > 0){
13561 if(Unum < Cnum) goto omfgUnitOver5;
13575 if(UP->x == chosen->x && UP->y == chosen->y){
13588 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13590 while(UP->next) UP = UP->next;
13595 UP->next = calloc(1, sizeof(UNITPOINT));
13609 // NSLog(@"%d", waypSCSunitCnt);
13611 chosen = chosen->next;
13617 }else if(MS0->S4.wayp->type == 2){
13619 waypSCSunitCnt = 0;
13620 static bool okflag = true;
13622 if((MS0->S4.wayp->x <= chosen->x) && (MS0->S4.wayp->x2 >= chosen->x) &&
13623 (MS0->S4.wayp->y <= chosen->y) && (MS0->S4.wayp->y2 >= chosen->y)){
13630 if(Unum < Cnum) goto omfgUnitOver;
13644 if(UP->x == chosen->x && UP->y == chosen->y){
13657 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13659 while(UP->next) UP = UP->next;
13664 UP->next = calloc(1, sizeof(UNITPOINT));
13675 chosen = chosen->next;
13680 MS0->S4.wayp = MS0->S4.wayp->next;
13681 }MS0->S4.wayp = wpt;
13682 // NSLog(@"%d", waypSCSunitCnt);
13684 if(waypSCScnt >= waypCnt)
13696 if(MS0->S4.team == 0){
13697 if(!MS0->S4.placeFlag){
13700 if(U->team == 0 && !U->dead)
13705 if(MS0->S4.unitType == 0){
13706 if(MS0->S4.placeFlag) team0num = MS0->S4.unitNum;
13708 if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == waypSCSunitCnt)){
13713 }else if(MS0->S4.unitType == 1){
13714 if(MS0->S4.placeFlag) team0num = 65000;
13716 if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= waypSCSunitCnt)){
13721 }else if(MS0->S4.unitType == 2){
13722 if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= waypSCSunitCnt)){
13730 }else if(MS0->S4.team == 1){
13731 if(!MS0->S4.placeFlag){
13734 if(U->team == 1 && !U->dead)
13739 if(MS0->S4.unitType == 0){
13740 if(MS0->S4.placeFlag) team1num = MS0->S4.unitNum;
13742 if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum = waypSCSunitCnt)){
13747 }else if(MS0->S4.unitType == 1){
13748 if(MS0->S4.placeFlag) team1num = 65000;
13750 if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= waypSCSunitCnt)){
13755 }else if(MS0->S4.unitType == 2){
13756 if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= waypSCSunitCnt)){
13762 }else if(MS0->S4.team == 2){
13763 if(!MS0->S4.placeFlag){
13766 if(U->team == 2 && !U->dead)
13771 if(MS0->S4.unitType == 0){
13772 if(MS0->S4.placeFlag) team2num = MS0->S4.unitNum;
13774 if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == waypSCSunitCnt)){
13779 }else if(MS0->S4.unitType == 1){
13780 if(MS0->S4.placeFlag) team2num = 65000;
13782 if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= waypSCSunitCnt)){
13787 }else if(MS0->S4.unitType == 2){
13788 if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= waypSCSunitCnt)){
13799 if(MS0->S4.unitCMDflag){
13801 UNIT2 *sjt = MS0->S4.subj;
13802 UNIT *chosen = NULL;
13803 UNIT *chosenT = NULL;
13806 while(MS0->S4.subj){
13809 if(MS0->S4.subj->x == U->ix && MS0->S4.subj->y == U->iy && U->iz == 1){
13811 chosen->next = calloc(1, sizeof(UNIT));
13816 chosen = chosen->next;
13819 chosen = calloc(1, sizeof(UNIT));
13823 chosen->C.name = U->C.name;
13834 MS0->S4.subj = MS0->S4.subj->next;
13835 }MS0->S4.subj = sjt;
13838 int objeSCSunitCnt = 0;
13846 chosen = chosen->next;
13849 if(MS0->S4.unitTypeFlag && MS0->S4.objeFlag){
13851 UNIT2 *objeT = MS0->S4.obje;
13853 while (MS0->S4.obje) {
13858 static bool okflag = true;
13860 for (int i = 0;i < 1002;i++) {
13861 for (int k = 0;k < 1002;k++) {
13868 if(U2->ix == MS0->S4.obje->x && U2->iy == MS0->S4.obje->y){
13879 [self checkPlaceHani:MS0->S4.objeRange+1 tX:U2->y tY:U2->x aMap:objeR u:chosen scsCnt:&objeSCSunitCnt];
13883 for(int bx=1;bx<=chipWidth;bx++){
13884 for(int by=1;by<=chipHeight;by++){
13885 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
13887 if(objeR[chosen->x][chosen->y] > 0){
13889 if(Unum < Cnum) goto omfgUnitOver31;
13903 if(UP->x == chosen->x && UP->y == chosen->y){
13916 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13918 while(UP->next) UP = UP->next;
13923 UP->next = calloc(1, sizeof(UNITPOINT));
13937 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
13939 chosen = chosen->next;
13942 MS0->S4.obje = MS0->S4.obje->next;
13944 MS0->S4.obje = objeT;
13945 }else if(MS0->S4.objeFlag){
13947 UNIT2 *objeT = MS0->S4.obje;
13949 while (MS0->S4.obje) {
13954 static bool okflag = true;
13956 if(U->team != MS0->S4.team){
13960 for (int i = 0;i < 1002;i++) {
13961 for (int k = 0;k < 1002;k++) {
13968 if(U2->ix == MS0->S4.obje->x && U2->iy == MS0->S4.obje->y){
13979 [self checkPlaceHani:MS0->S4.objeRange+1 tX:U2->y tY:U2->x aMap:objeR u:U scsCnt:&objeSCSunitCnt];
13983 for(int bx=1;bx<=chipWidth;bx++){
13984 for(int by=1;by<=chipHeight;by++){
13985 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
13987 if(objeR[chosen->x][chosen->y] > 0){
13989 if(Unum < Cnum) goto omfgUnitOver32;
14003 if(UP->x == chosen->x && UP->y == chosen->y){
14016 if(!UP) UP = calloc(1, sizeof(UNITPOINT));
14018 while(UP->next) UP = UP->next;
14023 UP->next = calloc(1, sizeof(UNITPOINT));
14037 //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
14039 chosen = chosen->next;
14042 MS0->S4.obje = MS0->S4.obje->next;
14044 MS0->S4.obje = objeT;
14048 if(MS0->S4.team == 0){
14050 if(!MS0->S4.subj && !MS0->S4.obje && !MS0->S4.build){
14052 if(MS0->S4.unitCMD == 0){
14053 if(pushStanbyFlag){
14058 }else if(MS0->S4.unitCMD == 1){
14060 battleSetUpIgnore = true;
14064 }else if(MS0->S4.unitCMD == 2){
14069 }else if(!MS0->S4.subj && !MS0->S4.obje && MS0->S4.build && Uselected){
14073 BUILD2 *bldt = MS0->S4.build;
14075 while(MS0->S4.build){
14076 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14078 if(MS0->S4.unitCMD == 0){
14079 if(pushStanbyFlag){
14084 }else if(MS0->S4.unitCMD == 1){
14086 battleSetUpIgnore = true;
14092 }else if(MS0->S4.unitCMD == 2){
14099 MS0->S4.build = MS0->S4.build->next;
14100 }MS0->S4.build = bldt;
14103 }else if(MS0->S4.subj && !MS0->S4.obje && Uselected){
14106 UNIT2 *sbjt = MS0->S4.subj;
14108 while(MS0->S4.subj){
14109 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1){
14111 if(MS0->S4.unitCMD == 0){
14112 if(pushStanbyFlag){
14117 }else if(MS0->S4.unitCMD == 1){
14119 battleSetUpIgnore = true;
14125 }else if(MS0->S4.unitCMD == 2){
14133 MS0->S4.subj = MS0->S4.subj->next;
14134 }MS0->S4.subj = sbjt;
14138 else if(MS0->S4.subj && MS0->S4.obje && Uselected){
14140 UNIT2 *sbjt = MS0->S4.subj;
14141 UNIT2 *objt = MS0->S4.obje;
14143 while(MS0->S4.subj){
14144 while(MS0->S4.obje){
14145 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14146 Utarget->ix == MS0->S4.obje->x && Utarget->iy == MS0->S4.obje->y && Utarget->iz == 1){
14148 if(MS0->S4.unitCMD == 0){
14150 if(MS0->S4.unitType == 0){
14151 if(objeSCSunitCnt == MS0->S4.unitNum){
14153 if(pushStanbyFlag){
14160 }else if(MS0->S4.unitType == 1){
14161 if(objeSCSunitCnt >= MS0->S4.unitNum){
14163 if(pushStanbyFlag){
14170 }else if(MS0->S4.unitType == 2){
14171 if(objeSCSunitCnt <= MS0->S4.unitNum){
14173 if(pushStanbyFlag){
14181 }else if(MS0->S4.unitCMD == 1){
14183 if(MS0->S4.unitType == 0){
14184 if(objeSCSunitCnt == MS0->S4.unitNum){
14187 battleSetUpIgnore = true;
14193 }else if(MS0->S4.unitType == 1){
14194 if(objeSCSunitCnt >= MS0->S4.unitNum){
14197 battleSetUpIgnore = true;
14203 }else if(MS0->S4.unitType == 2){
14204 if(objeSCSunitCnt <= MS0->S4.unitNum){
14207 battleSetUpIgnore = true;
14214 }else if(MS0->S4.unitCMD == 2 && objeSCSunitCnt > 0){
14226 MS0->S4.obje = MS0->S4.obje->next;
14227 }MS0->S4.obje = objt;
14228 MS0->S4.subj = MS0->S4.subj->next;
14229 }MS0->S4.subj = sbjt;
14231 }if(MS0->S4.subj && MS0->S4.build && Uselected){
14234 UNIT2 *sbjt = MS0->S4.subj;
14235 BUILD2 *bldt = MS0->S4.build;
14237 while(MS0->S4.subj){
14238 while(MS0->S4.build){
14239 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14240 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
14241 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14243 if(MS0->S4.unitCMD == 0){
14244 if(pushStanbyFlag){
14249 }else if(MS0->S4.unitCMD == 1){
14251 battleSetUpIgnore = true;
14257 }else if(MS0->S4.unitCMD == 2){
14266 MS0->S4.build = MS0->S4.build->next;
14267 }MS0->S4.build = bldt;
14269 MS0->S4.subj = MS0->S4.subj->next;
14271 MS0->S4.subj = sbjt;
14274 }else if(MS0->S4.team == 1){
14275 if(!MS0->S4.subj && !MS0->S4.obje && !MS0->S4.build){
14277 if(MS0->S4.unitCMD == 0){
14278 if(pushStanbyFlag){
14283 }else if(MS0->S4.unitCMD == 1){
14285 battleSetUpIgnore = true;
14289 }else if(MS0->S4.unitCMD == 2){
14294 }else if(!MS0->S4.subj && !MS0->S4.obje && MS0->S4.build && Uselected){
14298 BUILD2 *bldt = MS0->S4.build;
14299 while(MS0->S4.build){
14300 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14302 if(MS0->S4.unitCMD == 0){
14303 if(pushStanbyFlag){
14308 }else if(MS0->S4.unitCMD == 1){
14310 battleSetUpIgnore = true;
14316 }else if(MS0->S4.unitCMD == 2){
14323 MS0->S4.build = MS0->S4.build->next;
14324 }MS0->S4.build = bldt;
14327 }else if(MS0->S4.subj && !MS0->S4.obje && Uselected){
14331 UNIT2 *sbjt = MS0->S4.subj;
14333 while(MS0->S4.subj){
14334 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1){
14336 if(MS0->S4.unitCMD == 0){
14337 if(pushStanbyFlag){
14342 }else if(MS0->S4.unitCMD == 1){
14344 battleSetUpIgnore = true;
14350 }else if(MS0->S4.unitCMD == 2){
14358 MS0->S4.subj = MS0->S4.subj->next;
14359 }MS0->S4.subj = sbjt;
14361 }else if(MS0->S4.subj && MS0->S4.obje && Uselected){
14363 UNIT2 *sbjt = MS0->S4.subj;
14364 UNIT2 *objt = MS0->S4.obje;
14366 while(MS0->S4.subj){
14367 while(MS0->S4.obje){
14368 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14369 Utarget->ix == MS0->S4.obje->x && Utarget->iy == MS0->S4.obje->y && Utarget->iz == 1){
14371 if(MS0->S4.unitCMD == 0){
14373 if(MS0->S4.unitType == 0){
14374 if(objeSCSunitCnt == MS0->S4.unitNum){
14376 if(pushStanbyFlag){
14383 }else if(MS0->S4.unitType == 1){
14384 if(objeSCSunitCnt >= MS0->S4.unitNum){
14386 if(pushStanbyFlag){
14393 }else if(MS0->S4.unitType == 2){
14394 if(objeSCSunitCnt <= MS0->S4.unitNum){
14396 if(pushStanbyFlag){
14404 }else if(MS0->S4.unitCMD == 1){
14406 if(MS0->S4.unitType == 0){
14407 if(objeSCSunitCnt == MS0->S4.unitNum){
14410 battleSetUpIgnore = true;
14416 }else if(MS0->S4.unitType == 1){
14417 if(objeSCSunitCnt >= MS0->S4.unitNum){
14420 battleSetUpIgnore = true;
14426 }else if(MS0->S4.unitType == 2){
14427 if(objeSCSunitCnt <= MS0->S4.unitNum){
14430 battleSetUpIgnore = true;
14437 }else if(MS0->S4.unitCMD == 2 && objeSCSunitCnt > 0){
14450 MS0->S4.obje = MS0->S4.obje->next;
14451 }MS0->S4.obje = objt;
14452 MS0->S4.subj = MS0->S4.subj->next;
14453 }MS0->S4.subj = sbjt;
14455 }if(MS0->S4.subj && MS0->S4.build && Uselected){
14457 UNIT2 *sbjt = MS0->S4.subj;
14458 BUILD2 *bldt = MS0->S4.build;
14459 while(MS0->S4.subj){
14460 while(MS0->S4.build){
14461 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14462 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
14463 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14465 if(MS0->S4.unitCMD == 0){
14466 if(pushStanbyFlag){
14471 }else if(MS0->S4.unitCMD == 1){
14473 battleSetUpIgnore = true;
14479 }else if(MS0->S4.unitCMD == 2){
14488 MS0->S4.build = MS0->S4.build->next;
14489 }MS0->S4.build = bldt;
14490 MS0->S4.subj = MS0->S4.subj->next;
14491 }MS0->S4.subj = sbjt;
14493 }else if(MS0->S4.team == 2){
14494 if(!MS0->S4.subj && !MS0->S4.obje && !MS0->S4.build){
14496 if(MS0->S4.unitCMD == 0){
14497 if(pushStanbyFlag){
14502 }else if(MS0->S4.unitCMD == 1){
14504 battleSetUpIgnore = true;
14508 }else if(MS0->S4.unitCMD == 2){
14513 }else if(!MS0->S4.subj && !MS0->S4.obje && MS0->S4.build && Uselected){
14517 BUILD2 *bldt = MS0->S4.build;
14518 while(MS0->S4.build){
14519 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14521 if(MS0->S4.unitCMD == 0){
14522 if(pushStanbyFlag){
14527 }else if(MS0->S4.unitCMD == 1){
14529 battleSetUpIgnore = true;
14535 }else if(MS0->S4.unitCMD == 2){
14542 MS0->S4.build = MS0->S4.build->next;
14543 }MS0->S4.build = bldt;
14546 }else if(MS0->S4.subj && !MS0->S4.obje && Uselected){
14548 UNIT2 *sbjt = MS0->S4.subj;
14550 while(MS0->S4.subj){
14551 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1){
14553 if(MS0->S4.unitCMD == 0){
14554 if(pushStanbyFlag){
14559 }else if(MS0->S4.unitCMD == 1){
14561 battleSetUpIgnore = true;
14567 }else if(MS0->S4.unitCMD == 2){
14574 MS0->S4.subj = MS0->S4.subj->next;
14575 }MS0->S4.subj = sbjt;
14577 }else if(MS0->S4.subj && MS0->S4.obje && Uselected){
14579 UNIT2 *sbjt = MS0->S4.subj;
14580 UNIT2 *objt = MS0->S4.obje;
14582 while(MS0->S4.subj){
14583 while(MS0->S4.obje){
14584 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14585 Utarget->ix == MS0->S4.obje->x && Utarget->iy == MS0->S4.obje->y && Utarget->iz == 1){
14587 if(MS0->S4.unitCMD == 0){
14589 if(MS0->S4.unitType == 0){
14590 if(objeSCSunitCnt == MS0->S4.unitNum){
14592 if(pushStanbyFlag){
14599 }else if(MS0->S4.unitType == 1){
14600 if(objeSCSunitCnt >= MS0->S4.unitNum){
14602 if(pushStanbyFlag){
14609 }else if(MS0->S4.unitType == 2){
14610 if(objeSCSunitCnt <= MS0->S4.unitNum){
14612 if(pushStanbyFlag){
14620 }else if(MS0->S4.unitCMD == 1){
14622 if(MS0->S4.unitType == 0){
14623 if(objeSCSunitCnt == MS0->S4.unitNum){
14626 battleSetUpIgnore = true;
14632 }else if(MS0->S4.unitType == 1){
14633 if(objeSCSunitCnt >= MS0->S4.unitNum){
14636 battleSetUpIgnore = true;
14642 }else if(MS0->S4.unitType == 2){
14643 if(objeSCSunitCnt <= MS0->S4.unitNum){
14646 battleSetUpIgnore = true;
14653 }else if(MS0->S4.unitCMD == 2 && objeSCSunitCnt > 0){
14661 MS0->S4.obje = MS0->S4.obje->next;
14662 }MS0->S4.obje = objt;
14663 MS0->S4.subj = MS0->S4.subj->next;
14664 }MS0->S4.subj = sbjt;
14665 }if(MS0->S4.subj && MS0->S4.build && Uselected){
14667 UNIT2 *sbjt = MS0->S4.subj;
14668 BUILD2 *bldt = MS0->S4.build;
14669 while(MS0->S4.subj){
14670 while(MS0->S4.build){
14671 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14672 BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
14673 Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14675 if(MS0->S4.unitCMD == 0){
14676 if(pushStanbyFlag){
14681 }else if(MS0->S4.unitCMD == 1){
14683 battleSetUpIgnore = true;
14689 }else if(MS0->S4.unitCMD == 2){
14698 MS0->S4.build = MS0->S4.build->next;
14699 }MS0->S4.build = bldt;
14700 MS0->S4.subj = MS0->S4.subj->next;
14701 }MS0->S4.subj = sbjt;
14739 branchEndFlag = true;
14740 MS0->succeessfulFlag = false;
14742 branchSuceedFlag = true;
14743 MS0->succeessfulFlag = true;
14745 MS0->succeessfulFlag = false;
14750 if(!branchSuceedFlag){
14753 MS0->endFlag = false;
14758 MS0->endFlag = true;
14761 if([CRMS0->S4.FAILrabel isEqualToString:MS0->label] && 0){
14763 MS0->succeessfulFlag = false;
14764 MS0->endFlag = false;
14770 if([CRMS0->S4.FAILrabel isEqualToString:MS0->next->label]){
14772 if(MS0->type == 6 && MS0->endFlag){
14775 MS0->succeessfulFlag = true;
14777 MS0->endFlag = true;
14781 if(MS0->type == 6 && MS0->endFlag){
14784 MS0->succeessfulFlag = true;
14786 MS0->endFlag = true;
14793 //MS0->endFlag = true;
14797 }else if(branchSuceedFlag){
14800 MS0->endFlag = false;
14805 MS0->endFlag = true;
14809 if([CRMS0->S4.COMPrabel isEqualToString:MS0->label] && 0){
14810 MS0->succeessfulFlag = false;
14811 MS0->endFlag = false;
14817 if([CRMS0->S4.COMPrabel isEqualToString:MS0->next->label]){
14819 if(MS0->type == 6 && MS0->endFlag){
14822 MS0->succeessfulFlag = true;
14824 MS0->endFlag = true;
14829 if(MS0->type == 6 && MS0->endFlag){
14832 MS0->succeessfulFlag = true;
14834 MS0->endFlag = true;
14841 //MS0->endFlag = true;
14847 //NSLog(@"%g", eventTime);
14848 //NSLog(@"%d", MSDPtop->succeessfulFlag);
14849 //MS0->endFlag = true;
14851 MS0 = [self setEvent:MS0];
14857 -(void)checkPlaceHani:(int)cnsPow tX:(int)startX tY:(int)startY aMap:(int[][1002])aMap u:(UNIT*)u scsCnt:(int*)scsCnt{
14859 if(cnsPow < 0) return;
14863 if(aMap[startY][startX] <= cnsPow)
14864 aMap[startY][startX] = cnsPow;
14866 if(startY < 0) startY = 0;
14867 if(startX < 0) startX = 0;
14868 if(cnsPow < 0) cnsPow = 0;
14872 if(aMap[startY-1][startX] >= 0 && cnsPow > 0)
14873 [self checkPlaceHani:i0 tX:startX tY:startY-1 aMap:aMap u:u scsCnt:j0];
14876 if(aMap[startY+1][startX] >= 0 && cnsPow > 0)
14877 [self checkPlaceHani:i0 tX:startX tY:startY+1 aMap:aMap u:u scsCnt:j0];
14880 if(aMap[startY][startX-1] >= 0 && cnsPow > 0)
14881 [self checkPlaceHani:i0 tX:startX-1 tY:startY aMap:aMap u:u scsCnt:j0];
14884 if(aMap[startY][startX+1] >= 0 && cnsPow > 0)
14885 [self checkPlaceHani:i0 tX:startX+1 tY:startY aMap:aMap u:u scsCnt:j0];
14890 -(MAPSCRIPT0*)setLabelJump:(MAPSCRIPT0*)MS0{
14892 MAPSCRIPT0 *CRMS0 = MS0;
14895 MS0->endFlag = false;
14899 MS0->endFlag = true;
14900 MS0->succeessfulFlag = true;
14904 if([CRMS0->labelJump isEqualToString:MS0->label]){
14905 MS0->succeessfulFlag = false;
14906 MS0->endFlag = false;
14912 if([CRMS0->labelJump isEqualToString:MS0->next->label]){
14913 if(MS0->type == 6 && MS0->endFlag){
14916 MS0->succeessfulFlag = true;
14918 MS0->endFlag = true;
14922 if(MS0->type == 6 && MS0->endFlag){
14925 MS0->succeessfulFlag = true;
14927 MS0->endFlag = true;
14939 -(MAPSCRIPT0*)setDefault:(MAPSCRIPT0*)MS0{
14941 MS0->succeessfulFlag = true;
14942 MS0->endFlag = true;
14946 -(MAPSCRIPT0*)setStatus:(MAPSCRIPT0*)MS0{
14948 NSString *value = @"";
14950 if(MS0->S7.valueType == 0)
14951 value = [MS0->S7.value retain];
14952 else if(MS0->S7.valueType == 1)
14953 value = [Hensuu[MS0->S7.rdm] retain];
14955 if(MS0->S7.teamFlag){
14959 if(MS0->S7.team == U->team)
14960 [self setStatus0:U MS0:MS0 value:value];
14966 if(MS0->S7.unitFlag){
14970 MAPSCRIPT7A *MS7A = MS0->S7.A;
14971 while (MS0->S7.A) {
14973 if(U->ix == MS0->S7.A->x || U->iy == MS0->S7.A->y){
14974 [self setStatus0:U MS0:MS0 value:value];
14977 MS0->S7.A = MS0->S7.A->next;
14984 if(MS0->S7.valueFlag){
14988 MAPSCRIPT7B *MS7B = MS0->S7.B;
14989 while (MS0->S7.B) {
14991 if(U->ix == MS0->S7.B->x || U->iy == MS0->S7.B->y){
14992 [self setStatus0:U MS0:MS0 value:value];
14995 MS0->S7.B = MS0->S7.B->next;
15002 MS0->succeessfulFlag = true;
15003 MS0->endFlag = true;
15007 -(UNIT*)setStatus0:(UNIT*)U MS0:(MAPSCRIPT0*)MS0 value:(NSString*)value{
15009 if(!MS0->S7.maxFlag){
15011 if (!MS0->S7.percentFlag) {
15013 switch (MS0->S7.type) {
15015 if(MS0->S7.fluctuate == 0)
15016 U->C.S_C.HP += [value doubleValue];
15017 else if(MS0->S7.fluctuate == 1)
15018 U->C.S_C.HP -= [value doubleValue];
15019 else if(MS0->S7.fluctuate == 2)
15020 U->C.S_C.HP = [value doubleValue];
15021 if(MS0->S7.extendFlag)
15022 if(U->C.S_C.HP > U->C.S_M.HP)
15023 U->C.S_C.HP = U->C.S_M.HP;
15024 if(U->C.S_C.HP < 0)
15028 if(MS0->S7.fluctuate == 0)
15029 U->C.S_C.MP += [value doubleValue];
15030 else if(MS0->S7.fluctuate == 1)
15031 U->C.S_C.MP -= [value doubleValue];
15032 else if(MS0->S7.fluctuate == 2)
15033 U->C.S_C.MP = [value doubleValue];
15034 if(MS0->S7.extendFlag)
15035 if(U->C.S_C.MP > U->C.S_M.MP)
15036 U->C.S_C.MP = U->C.S_M.MP;
15037 if(U->C.S_C.MP < 0)
15041 if(MS0->S7.fluctuate == 0)
15042 U->C.S_C.WT += [value doubleValue];
15043 else if(MS0->S7.fluctuate == 1)
15044 U->C.S_C.WT -= [value doubleValue];
15045 else if(MS0->S7.fluctuate == 2)
15046 U->C.S_C.WT = [value doubleValue];
15047 if(MS0->S7.extendFlag)
15048 if(U->C.S_C.WT > U->C.S_M.WT)
15049 U->C.S_C.WT = U->C.S_M.WT;
15050 if(U->C.S_C.WT < 0)
15054 if(MS0->S7.fluctuate == 0)
15055 U->C.S_C.STR += [value doubleValue];
15056 else if(MS0->S7.fluctuate == 1)
15057 U->C.S_C.STR -= [value doubleValue];
15058 else if(MS0->S7.fluctuate == 2)
15059 U->C.S_C.STR = [value doubleValue];
15060 if(MS0->S7.extendFlag)
15061 if(U->C.S_C.STR > U->C.S_M.STR)
15062 U->C.S_C.STR = U->C.S_M.STR;
15063 if(U->C.S_C.STR < 0)
15067 if(MS0->S7.fluctuate == 0)
15068 U->C.S_C.VIT += [value doubleValue];
15069 else if(MS0->S7.fluctuate == 1)
15070 U->C.S_C.VIT -= [value doubleValue];
15071 else if(MS0->S7.fluctuate == 2)
15072 U->C.S_C.VIT = [value doubleValue];
15073 if(MS0->S7.extendFlag)
15074 if(U->C.S_C.VIT > U->C.S_M.VIT)
15075 U->C.S_C.VIT = U->C.S_M.VIT;
15076 if(U->C.S_C.VIT < 0)
15080 if(MS0->S7.fluctuate == 0)
15081 U->C.S_C.AGI += [value doubleValue];
15082 else if(MS0->S7.fluctuate == 1)
15083 U->C.S_C.AGI -= [value doubleValue];
15084 else if(MS0->S7.fluctuate == 2)
15085 U->C.S_C.AGI = [value doubleValue];
15086 if(MS0->S7.extendFlag)
15087 if(U->C.S_C.AGI > U->C.S_M.AGI)
15088 U->C.S_C.AGI = U->C.S_M.AGI;
15089 if(U->C.S_C.AGI < 0)
15093 if(MS0->S7.fluctuate == 0)
15094 U->C.S_C.DEX += [value doubleValue];
15095 else if(MS0->S7.fluctuate == 1)
15096 U->C.S_C.DEX -= [value doubleValue];
15097 else if(MS0->S7.fluctuate == 2)
15098 U->C.S_C.DEX = [value doubleValue];
15099 if(MS0->S7.extendFlag)
15100 if(U->C.S_C.DEX > U->C.S_M.DEX)
15101 U->C.S_C.DEX = U->C.S_M.DEX;
15102 if(U->C.S_C.DEX < 0)
15106 if(MS0->S7.fluctuate == 0)
15107 U->C.S_C.MEN += [value doubleValue];
15108 else if(MS0->S7.fluctuate == 1)
15109 U->C.S_C.MEN -= [value doubleValue];
15110 else if(MS0->S7.fluctuate == 2)
15111 U->C.S_C.MEN = [value doubleValue];
15112 if(MS0->S7.extendFlag)
15113 if(U->C.S_C.MEN > U->C.S_M.MEN)
15114 U->C.S_C.MEN = U->C.S_M.MEN;
15115 if(U->C.S_C.MEN < 0)
15119 if(MS0->S7.fluctuate == 0)
15120 U->C.S_C.INT += [value doubleValue];
15121 else if(MS0->S7.fluctuate == 1)
15122 U->C.S_C.INT -= [value doubleValue];
15123 else if(MS0->S7.fluctuate == 2)
15124 U->C.S_C.INT = [value doubleValue];
15125 if(MS0->S7.extendFlag)
15126 if(U->C.S_C.INT > U->C.S_M.INT)
15127 U->C.S_C.INT = U->C.S_M.INT;
15128 if(U->C.S_C.INT < 0)
15132 if(MS0->S7.fluctuate == 0)
15133 U->C.S_C.LUK += [value doubleValue];
15134 else if(MS0->S7.fluctuate == 1)
15135 U->C.S_C.LUK -= [value doubleValue];
15136 else if(MS0->S7.fluctuate == 2)
15137 U->C.S_C.LUK = [value doubleValue];
15138 if(MS0->S7.extendFlag)
15139 if(U->C.S_C.LUK > U->C.S_M.LUK)
15140 U->C.S_C.LUK = U->C.S_M.LUK;
15141 if(U->C.S_C.LUK < 0)
15145 if(MS0->S7.fluctuate == 0)
15146 U->C.S_C.MOV += [value doubleValue];
15147 else if(MS0->S7.fluctuate == 1)
15148 U->C.S_C.MOV -= [value doubleValue];
15149 else if(MS0->S7.fluctuate == 2)
15150 U->C.S_C.MOV = [value doubleValue];
15151 if(MS0->S7.extendFlag)
15152 if(U->C.S_C.MOV > U->C.S_M.MOV)
15153 U->C.S_C.MOV = U->C.S_M.MOV;
15154 if(U->C.S_C.MOV < 0)
15158 if(MS0->S7.fluctuate == 0)
15159 U->C.S_C.MEL += [value doubleValue];
15160 else if(MS0->S7.fluctuate == 1)
15161 U->C.S_C.MEL -= [value doubleValue];
15162 else if(MS0->S7.fluctuate == 2)
15163 U->C.S_C.MEL = [value doubleValue];
15164 if(MS0->S7.extendFlag)
15165 if(U->C.S_C.MEL > U->C.S_M.MEL)
15166 U->C.S_C.MEL = U->C.S_M.MEL;
15167 if(U->C.S_C.MEL < 0)
15171 if(MS0->S7.fluctuate == 0)
15172 U->C.S_C.MIS += [value doubleValue];
15173 else if(MS0->S7.fluctuate == 1)
15174 U->C.S_C.MIS -= [value doubleValue];
15175 else if(MS0->S7.fluctuate == 2)
15176 U->C.S_C.MIS = [value doubleValue];
15177 if(MS0->S7.extendFlag)
15178 if(U->C.S_C.MIS > U->C.S_M.MIS)
15179 U->C.S_C.MIS = U->C.S_M.MIS;
15180 if(U->C.S_C.MIS < 0)
15184 if(MS0->S7.fluctuate == 0)
15185 U->C.S_C.HIT += [value doubleValue];
15186 else if(MS0->S7.fluctuate == 1)
15187 U->C.S_C.HIT -= [value doubleValue];
15188 else if(MS0->S7.fluctuate == 2)
15189 U->C.S_C.HIT = [value doubleValue];
15190 if(MS0->S7.extendFlag)
15191 if(U->C.S_C.HIT > U->C.S_M.HIT)
15192 U->C.S_C.HIT = U->C.S_M.HIT;
15193 if(U->C.S_C.HIT < 0)
15197 if(MS0->S7.fluctuate == 0)
15198 U->C.S_C.DOD += [value doubleValue];
15199 else if(MS0->S7.fluctuate == 1)
15200 U->C.S_C.DOD -= [value doubleValue];
15201 else if(MS0->S7.fluctuate == 2)
15202 U->C.S_C.DOD = [value doubleValue];
15203 if(MS0->S7.extendFlag)
15204 if(U->C.S_C.DOD > U->C.S_M.DOD)
15205 U->C.S_C.DOD = U->C.S_M.DOD;
15206 if(U->C.S_C.DOD < 0)
15210 if(MS0->S7.fluctuate == 0)
15211 U->C.S_C.REA += [value doubleValue];
15212 else if(MS0->S7.fluctuate == 1)
15213 U->C.S_C.REA -= [value doubleValue];
15214 else if(MS0->S7.fluctuate == 2)
15215 U->C.S_C.REA = [value doubleValue];
15216 if(MS0->S7.extendFlag)
15217 if(U->C.S_C.REA > U->C.S_M.REA)
15218 U->C.S_C.REA = U->C.S_M.REA;
15219 if(U->C.S_C.REA < 0)
15223 if(MS0->S7.fluctuate == 0)
15224 U->C.S_C.SKI += [value doubleValue];
15225 else if(MS0->S7.fluctuate == 1)
15226 U->C.S_C.SKI -= [value doubleValue];
15227 else if(MS0->S7.fluctuate == 2)
15228 U->C.S_C.SKI = [value doubleValue];
15229 if(MS0->S7.extendFlag)
15230 if(U->C.S_C.SKI > U->C.S_M.SKI)
15231 U->C.S_C.SKI = U->C.S_M.SKI;
15232 if(U->C.S_C.SKI < 0)
15236 U->C.name = [value retain];
15239 U->C.nameNick = [value retain];
15242 U->C.nameClass = [value retain];
15245 U->C.S_C.typeMONS = [value doubleValue];
15248 U->C.S_C.typeMOVE = [value doubleValue];
15251 if(MS0->S7.fluctuate == 0)
15252 U->C.S_C.cSupply += [value doubleValue];
15253 else if(MS0->S7.fluctuate == 1)
15254 U->C.S_C.cSupply -= [value doubleValue];
15255 else if(MS0->S7.fluctuate == 2)
15256 U->C.S_C.cSupply = [value doubleValue];
15257 if(MS0->S7.extendFlag)
15258 if(U->C.S_C.cSupply > U->C.S_M.cSupply)
15259 U->C.S_C.cSupply = U->C.S_M.cSupply;
15260 if(U->C.S_C.cSupply < 0)
15261 U->C.S_C.cSupply = 0;
15264 if(MS0->S7.fluctuate == 0)
15265 U->C.S_C.cFood += [value doubleValue];
15266 else if(MS0->S7.fluctuate == 1)
15267 U->C.S_C.cFood -= [value doubleValue];
15268 else if(MS0->S7.fluctuate == 2)
15269 U->C.S_C.cFood = [value doubleValue];
15270 if(MS0->S7.extendFlag)
15271 if(U->C.S_C.cFood > U->C.S_M.cFood)
15272 U->C.S_C.cFood = U->C.S_M.cFood;
15273 if(U->C.S_C.cFood < 0)
15274 U->C.S_C.cFood = 0;
15277 if(MS0->S7.fluctuate == 0)
15278 U->C.S_C.cMoney += [value doubleValue];
15279 else if(MS0->S7.fluctuate == 1)
15280 U->C.S_C.cMoney -= [value doubleValue];
15281 else if(MS0->S7.fluctuate == 2)
15282 U->C.S_C.cMoney = [value doubleValue];
15283 if(MS0->S7.extendFlag)
15284 if(U->C.S_C.cMoney > U->C.S_M.cMoney)
15285 U->C.S_C.cMoney = U->C.S_M.cMoney;
15286 if(U->C.S_C.cMoney < 0)
15287 U->C.S_C.cMoney = 0;
15290 if(MS0->S7.fluctuate == 0)
15291 U->C.S_C.cWT += [value doubleValue];
15292 else if(MS0->S7.fluctuate == 1)
15293 U->C.S_C.cWT -= [value doubleValue];
15294 else if(MS0->S7.fluctuate == 2)
15295 U->C.S_C.cWT = [value doubleValue];
15296 if(MS0->S7.extendFlag)
15297 if(U->C.S_C.cWT > U->C.S_M.cWT)
15298 U->C.S_C.cWT = U->C.S_M.cWT;
15299 if(U->C.S_C.cWT < 0)
15303 if(MS0->S7.fluctuate == 0)
15304 U->C.S_C.vigor += [value doubleValue];
15305 else if(MS0->S7.fluctuate == 1)
15306 U->C.S_C.vigor -= [value doubleValue];
15307 else if(MS0->S7.fluctuate == 2)
15308 U->C.S_C.vigor = [value doubleValue];
15309 if(MS0->S7.extendFlag)
15310 if(U->C.S_C.vigor > U->C.S_M.vigor)
15311 U->C.S_C.vigor = U->C.S_M.vigor;
15312 if(U->C.S_C.vigor < 0)
15313 U->C.S_C.vigor = 0;
15322 switch (MS0->S7.type) {
15324 if(MS0->S7.fluctuate == 0)
15325 U->C.S_C.HP += U->C.S_M.HP*[value doubleValue]/100;
15326 else if(MS0->S7.fluctuate == 1)
15327 U->C.S_C.HP -= U->C.S_M.HP*[value doubleValue]/100;
15328 else if(MS0->S7.fluctuate == 2)
15329 U->C.S_C.HP = U->C.S_M.HP*[value doubleValue]/100;
15330 if(MS0->S7.extendFlag)
15331 if(U->C.S_C.HP > U->C.S_M.HP)
15332 U->C.S_C.HP = U->C.S_M.HP;
15333 if(U->C.S_C.HP < 0)
15337 if(MS0->S7.fluctuate == 0)
15338 U->C.S_C.MP += U->C.S_M.MP*[value doubleValue]/100;
15339 else if(MS0->S7.fluctuate == 1)
15340 U->C.S_C.MP -= U->C.S_M.MP*[value doubleValue]/100;
15341 else if(MS0->S7.fluctuate == 2)
15342 U->C.S_C.MP = U->C.S_M.MP*[value doubleValue]/100;
15343 if(MS0->S7.extendFlag)
15344 if(U->C.S_C.MP > U->C.S_M.MP)
15345 U->C.S_C.MP = U->C.S_M.MP;
15346 if(U->C.S_C.MP < 0)
15350 if(MS0->S7.fluctuate == 0)
15351 U->C.S_C.WT += U->C.S_M.WT*[value doubleValue]/100;
15352 else if(MS0->S7.fluctuate == 1)
15353 U->C.S_C.WT -= U->C.S_M.WT*[value doubleValue]/100;
15354 else if(MS0->S7.fluctuate == 2)
15355 U->C.S_C.MP = U->C.S_M.WT*[value doubleValue]/100;
15356 if(MS0->S7.extendFlag)
15357 if(U->C.S_C.WT > U->C.S_M.WT)
15358 U->C.S_C.WT = U->C.S_M.WT;
15359 if(U->C.S_C.WT < 0)
15363 if(MS0->S7.fluctuate == 0)
15364 U->C.S_C.STR += U->C.S_M.STR*[value doubleValue]/100;
15365 else if(MS0->S7.fluctuate == 1)
15366 U->C.S_C.STR -= U->C.S_M.STR*[value doubleValue]/100;
15367 else if(MS0->S7.fluctuate == 2)
15368 U->C.S_C.STR = U->C.S_M.STR*[value doubleValue]/100;
15369 if(MS0->S7.extendFlag)
15370 if(U->C.S_C.STR > U->C.S_M.STR)
15371 U->C.S_C.STR = U->C.S_M.STR;
15372 if(U->C.S_C.STR < 0)
15376 if(MS0->S7.fluctuate == 0)
15377 U->C.S_C.VIT += U->C.S_M.VIT*[value doubleValue]/100;
15378 else if(MS0->S7.fluctuate == 1)
15379 U->C.S_C.VIT -= U->C.S_M.VIT*[value doubleValue]/100;
15380 else if(MS0->S7.fluctuate == 2)
15381 U->C.S_C.VIT = U->C.S_M.VIT*[value doubleValue]/100;
15382 if(MS0->S7.extendFlag)
15383 if(U->C.S_C.VIT > U->C.S_M.VIT)
15384 U->C.S_C.VIT = U->C.S_M.VIT;
15385 if(U->C.S_C.VIT < 0)
15389 if(MS0->S7.fluctuate == 0)
15390 U->C.S_C.AGI += U->C.S_M.AGI*[value doubleValue]/100;
15391 else if(MS0->S7.fluctuate == 1)
15392 U->C.S_C.AGI -= U->C.S_M.AGI*[value doubleValue]/100;
15393 else if(MS0->S7.fluctuate == 2)
15394 U->C.S_C.AGI = U->C.S_M.AGI*[value doubleValue]/100;
15395 if(MS0->S7.extendFlag)
15396 if(U->C.S_C.AGI > U->C.S_M.AGI)
15397 U->C.S_C.AGI = U->C.S_M.AGI;
15398 if(U->C.S_C.AGI < 0)
15402 if(MS0->S7.fluctuate == 0)
15403 U->C.S_C.DEX += U->C.S_M.DEX*[value doubleValue]/100;
15404 else if(MS0->S7.fluctuate == 1)
15405 U->C.S_C.DEX -= U->C.S_M.DEX*[value doubleValue]/100;
15406 else if(MS0->S7.fluctuate == 2)
15407 U->C.S_C.DEX = U->C.S_M.DEX*[value doubleValue]/100;
15408 if(MS0->S7.extendFlag)
15409 if(U->C.S_C.DEX > U->C.S_M.DEX)
15410 U->C.S_C.DEX = U->C.S_M.DEX;
15411 if(U->C.S_C.DEX < 0)
15415 if(MS0->S7.fluctuate == 0)
15416 U->C.S_C.MEN += U->C.S_M.MEN*[value doubleValue]/100;
15417 else if(MS0->S7.fluctuate == 1)
15418 U->C.S_C.MEN -= U->C.S_M.MEN*[value doubleValue]/100;
15419 else if(MS0->S7.fluctuate == 2)
15420 U->C.S_C.MEN = U->C.S_M.MEN*[value doubleValue]/100;
15421 if(MS0->S7.extendFlag)
15422 if(U->C.S_C.MEN > U->C.S_M.MEN)
15423 U->C.S_C.MEN = U->C.S_M.MEN;
15424 if(U->C.S_C.MEN < 0)
15428 if(MS0->S7.fluctuate == 0)
15429 U->C.S_C.INT += U->C.S_M.INT*[value doubleValue]/100;
15430 else if(MS0->S7.fluctuate == 1)
15431 U->C.S_C.INT -= U->C.S_M.INT*[value doubleValue]/100;
15432 else if(MS0->S7.fluctuate == 2)
15433 U->C.S_C.INT = U->C.S_M.INT*[value doubleValue]/100;
15434 if(MS0->S7.extendFlag)
15435 if(U->C.S_C.INT > U->C.S_M.INT)
15436 U->C.S_C.INT = U->C.S_M.INT;
15437 if(U->C.S_C.INT < 0)
15441 if(MS0->S7.fluctuate == 0)
15442 U->C.S_C.LUK += U->C.S_M.LUK*[value doubleValue]/100;
15443 else if(MS0->S7.fluctuate == 1)
15444 U->C.S_C.LUK -= U->C.S_M.LUK*[value doubleValue]/100;
15445 else if(MS0->S7.fluctuate == 2)
15446 U->C.S_C.LUK = U->C.S_M.LUK*[value doubleValue]/100;
15447 if(MS0->S7.extendFlag)
15448 if(U->C.S_C.LUK > U->C.S_M.LUK)
15449 U->C.S_C.LUK = U->C.S_M.LUK;
15450 if(U->C.S_C.LUK < 0)
15454 if(MS0->S7.fluctuate == 0)
15455 U->C.S_C.MOV += U->C.S_M.MOV*[value doubleValue]/100;
15456 else if(MS0->S7.fluctuate == 1)
15457 U->C.S_C.MOV -= U->C.S_M.MOV*[value doubleValue]/100;
15458 else if(MS0->S7.fluctuate == 2)
15459 U->C.S_C.MOV = U->C.S_M.MOV*[value doubleValue]/100;
15460 if(MS0->S7.extendFlag)
15461 if(U->C.S_C.MOV > U->C.S_M.MOV)
15462 U->C.S_C.MOV = U->C.S_M.MOV;
15463 if(U->C.S_C.MOV < 0)
15467 if(MS0->S7.fluctuate == 0)
15468 U->C.S_C.MEL += U->C.S_M.MEL*[value doubleValue]/100;
15469 else if(MS0->S7.fluctuate == 1)
15470 U->C.S_C.MEL -= U->C.S_M.MEL*[value doubleValue]/100;
15471 else if(MS0->S7.fluctuate == 2)
15472 U->C.S_C.MEL = U->C.S_M.MEL*[value doubleValue]/100;
15473 if(MS0->S7.extendFlag)
15474 if(U->C.S_C.MEL > U->C.S_M.MEL)
15475 U->C.S_C.MEL = U->C.S_M.MEL;
15476 if(U->C.S_C.MEL < 0)
15480 if(MS0->S7.fluctuate == 0)
15481 U->C.S_C.MIS += U->C.S_M.MIS*[value doubleValue]/100;
15482 else if(MS0->S7.fluctuate == 1)
15483 U->C.S_C.MIS -= U->C.S_M.MIS*[value doubleValue]/100;
15484 else if(MS0->S7.fluctuate == 2)
15485 U->C.S_C.MIS = U->C.S_M.MIS*[value doubleValue]/100;
15486 if(MS0->S7.extendFlag)
15487 if(U->C.S_C.MIS > U->C.S_M.MIS)
15488 U->C.S_C.MIS = U->C.S_M.MIS;
15489 if(U->C.S_C.MIS < 0)
15493 if(MS0->S7.fluctuate == 0)
15494 U->C.S_C.HIT += U->C.S_M.HIT*[value doubleValue]/100;
15495 else if(MS0->S7.fluctuate == 1)
15496 U->C.S_C.HIT -= U->C.S_M.HIT*[value doubleValue]/100;
15497 else if(MS0->S7.fluctuate == 2)
15498 U->C.S_C.HIT = U->C.S_M.HIT*[value doubleValue]/100;
15499 if(MS0->S7.extendFlag)
15500 if(U->C.S_C.HIT > U->C.S_M.HIT)
15501 U->C.S_C.HIT = U->C.S_M.HIT;
15502 if(U->C.S_C.HIT < 0)
15506 if(MS0->S7.fluctuate == 0)
15507 U->C.S_C.DOD += U->C.S_M.DOD*[value doubleValue]/100;
15508 else if(MS0->S7.fluctuate == 1)
15509 U->C.S_C.DOD -= U->C.S_M.DOD*[value doubleValue]/100;
15510 else if(MS0->S7.fluctuate == 2)
15511 U->C.S_C.DOD = U->C.S_M.DOD*[value doubleValue]/100;
15512 if(MS0->S7.extendFlag)
15513 if(U->C.S_C.HIT > U->C.S_M.DOD)
15514 U->C.S_C.DOD = U->C.S_M.DOD;
15515 if(U->C.S_C.DOD < 0)
15519 if(MS0->S7.fluctuate == 0)
15520 U->C.S_C.REA += U->C.S_M.REA*[value doubleValue]/100;
15521 else if(MS0->S7.fluctuate == 1)
15522 U->C.S_C.REA -= U->C.S_M.REA*[value doubleValue]/100;
15523 else if(MS0->S7.fluctuate == 2)
15524 U->C.S_C.REA = U->C.S_M.REA*[value doubleValue]/100;
15525 if(MS0->S7.extendFlag)
15526 if(U->C.S_C.REA > U->C.S_M.REA)
15527 U->C.S_C.REA = U->C.S_M.REA;
15528 if(U->C.S_C.REA < 0)
15532 if(MS0->S7.fluctuate == 0)
15533 U->C.S_C.SKI += U->C.S_M.SKI*[value doubleValue]/100;
15534 else if(MS0->S7.fluctuate == 1)
15535 U->C.S_C.SKI -= U->C.S_M.SKI*[value doubleValue]/100;
15536 else if(MS0->S7.fluctuate == 2)
15537 U->C.S_C.SKI = U->C.S_M.SKI*[value doubleValue]/100;
15538 if(MS0->S7.extendFlag)
15539 if(U->C.S_C.SKI > U->C.S_M.SKI)
15540 U->C.S_C.SKI = U->C.S_M.SKI;
15541 if(U->C.S_C.SKI < 0)
15545 U->C.name = [MS0->S7.value retain];
15548 U->C.nameNick = [MS0->S7.value retain];
15551 U->C.nameClass = [MS0->S7.value retain];
15554 U->C.S_C.typeMONS = [MS0->S7.value doubleValue];
15557 U->C.S_C.typeMOVE = [MS0->S7.value doubleValue];
15560 if(MS0->S7.fluctuate == 0)
15561 U->C.S_C.cSupply += U->C.S_M.cSupply*[value doubleValue]/100;
15562 else if(MS0->S7.fluctuate == 1)
15563 U->C.S_C.cSupply -= U->C.S_M.cSupply*[value doubleValue]/100;
15564 else if(MS0->S7.fluctuate == 2)
15565 U->C.S_C.cSupply = U->C.S_M.cSupply*[value doubleValue]/100;
15566 if(MS0->S7.extendFlag)
15567 if(U->C.S_C.cSupply > U->C.S_M.cSupply)
15568 U->C.S_C.cSupply = U->C.S_M.cSupply;
15569 if(U->C.S_C.cSupply < 0)
15570 U->C.S_C.cSupply = 0;
15573 if(MS0->S7.fluctuate == 0)
15574 U->C.S_C.cFood += U->C.S_M.cFood*[value doubleValue]/100;
15575 else if(MS0->S7.fluctuate == 1)
15576 U->C.S_C.cFood -= U->C.S_M.cFood*[value doubleValue]/100;
15577 else if(MS0->S7.fluctuate == 2)
15578 U->C.S_C.cFood = U->C.S_M.cFood*[value doubleValue]/100;
15579 if(MS0->S7.extendFlag)
15580 if(U->C.S_C.cFood > U->C.S_M.cFood)
15581 U->C.S_C.cFood = U->C.S_M.cFood;
15582 if(U->C.S_C.cFood < 0)
15583 U->C.S_C.cFood = 0;
15586 if(MS0->S7.fluctuate == 0)
15587 U->C.S_C.cMoney += U->C.S_M.cMoney*[value doubleValue]/100;
15588 else if(MS0->S7.fluctuate == 1)
15589 U->C.S_C.cMoney -= U->C.S_M.cMoney*[value doubleValue]/100;
15590 else if(MS0->S7.fluctuate == 2)
15591 U->C.S_C.cMoney = U->C.S_M.cMoney*[value doubleValue]/100;
15592 if(MS0->S7.extendFlag)
15593 if(U->C.S_C.cMoney > U->C.S_M.cMoney)
15594 U->C.S_C.cMoney = U->C.S_M.cMoney;
15595 if(U->C.S_C.cMoney < 0)
15596 U->C.S_C.cMoney = 0;
15599 if(MS0->S7.fluctuate == 0)
15600 U->C.S_C.cWT += U->C.S_M.cWT*[value doubleValue]/100;
15601 else if(MS0->S7.fluctuate == 1)
15602 U->C.S_C.cWT -= U->C.S_M.cWT*[value doubleValue]/100;
15603 else if(MS0->S7.fluctuate == 2)
15604 U->C.S_C.cWT = U->C.S_M.cWT*[value doubleValue]/100;
15605 if(MS0->S7.extendFlag)
15606 if(U->C.S_C.cWT > U->C.S_M.cWT)
15607 U->C.S_C.cWT = U->C.S_M.cWT;
15608 if(U->C.S_C.cWT < 0)
15612 if(MS0->S7.fluctuate == 0)
15613 U->C.S_C.vigor += U->C.S_M.vigor*[value doubleValue]/100;
15614 else if(MS0->S7.fluctuate == 1)
15615 U->C.S_C.vigor -= U->C.S_M.vigor*[value doubleValue]/100;
15616 else if(MS0->S7.fluctuate == 2)
15617 U->C.S_C.vigor = U->C.S_M.vigor*[value doubleValue]/100;
15618 if(MS0->S7.extendFlag)
15619 if(U->C.S_C.vigor > U->C.S_M.vigor)
15620 U->C.S_C.vigor = U->C.S_M.vigor;
15621 if(U->C.S_C.vigor < 0)
15622 U->C.S_C.vigor = 0;
15631 if (!MS0->S7.percentFlag) {
15633 switch (MS0->S7.type) {
15635 if(MS0->S7.fluctuate == 0)
15636 U->C.S_M.HP += [value doubleValue];
15637 else if(MS0->S7.fluctuate == 1)
15638 U->C.S_M.HP -= [value doubleValue];
15639 else if(MS0->S7.fluctuate == 2)
15640 U->C.S_M.HP = [value doubleValue];
15642 if(U->C.S_M.HP < 0)
15644 if(MS0->S7.extendFlag)
15645 U->C.S_C.HP = U->C.S_M.HP;
15648 if(MS0->S7.fluctuate == 0)
15649 U->C.S_M.MP += [value doubleValue];
15650 else if(MS0->S7.fluctuate == 1)
15651 U->C.S_M.MP -= [value doubleValue];
15652 else if(MS0->S7.fluctuate == 2)
15653 U->C.S_M.MP = [value doubleValue];
15655 if(U->C.S_M.MP < 0)
15657 if(MS0->S7.extendFlag)
15658 U->C.S_C.MP = U->C.S_M.MP;
15661 if(MS0->S7.fluctuate == 0)
15662 U->C.S_M.WT += [value doubleValue];
15663 else if(MS0->S7.fluctuate == 1)
15664 U->C.S_M.WT -= [value doubleValue];
15665 else if(MS0->S7.fluctuate == 2)
15666 U->C.S_M.WT = [value doubleValue];
15668 if(U->C.S_M.WT < 0)
15670 if(MS0->S7.extendFlag)
15671 U->C.S_C.WT = U->C.S_M.WT;
15674 if(MS0->S7.fluctuate == 0)
15675 U->C.S_M.STR += [value doubleValue];
15676 else if(MS0->S7.fluctuate == 1)
15677 U->C.S_M.STR -= [value doubleValue];
15678 else if(MS0->S7.fluctuate == 2)
15679 U->C.S_M.STR = [value doubleValue];
15681 if(U->C.S_M.STR < 0)
15683 if(MS0->S7.extendFlag)
15684 U->C.S_C.STR = U->C.S_M.STR;
15687 if(MS0->S7.fluctuate == 0)
15688 U->C.S_M.VIT += [value doubleValue];
15689 else if(MS0->S7.fluctuate == 1)
15690 U->C.S_M.VIT -= [value doubleValue];
15691 else if(MS0->S7.fluctuate == 2)
15692 U->C.S_M.VIT = [value doubleValue];
15694 if(U->C.S_M.VIT < 0)
15696 if(MS0->S7.extendFlag)
15697 U->C.S_C.VIT = U->C.S_M.VIT;
15700 if(MS0->S7.fluctuate == 0)
15701 U->C.S_M.AGI += [value doubleValue];
15702 else if(MS0->S7.fluctuate == 1)
15703 U->C.S_M.AGI -= [value doubleValue];
15704 else if(MS0->S7.fluctuate == 2)
15705 U->C.S_M.AGI = [value doubleValue];
15707 if(U->C.S_M.AGI < 0)
15709 if(MS0->S7.extendFlag)
15710 U->C.S_C.AGI = U->C.S_M.AGI;
15713 if(MS0->S7.fluctuate == 0)
15714 U->C.S_M.DEX += [value doubleValue];
15715 else if(MS0->S7.fluctuate == 1)
15716 U->C.S_M.DEX -= [value doubleValue];
15717 else if(MS0->S7.fluctuate == 2)
15718 U->C.S_M.DEX = [value doubleValue];
15720 if(U->C.S_M.DEX < 0)
15722 if(MS0->S7.extendFlag)
15723 U->C.S_C.DEX = U->C.S_M.DEX;
15726 if(MS0->S7.fluctuate == 0)
15727 U->C.S_M.MEN += [value doubleValue];
15728 else if(MS0->S7.fluctuate == 1)
15729 U->C.S_M.MEN -= [value doubleValue];
15730 else if(MS0->S7.fluctuate == 2)
15731 U->C.S_M.MEN = [value doubleValue];
15733 if(U->C.S_M.MEN < 0)
15735 if(MS0->S7.extendFlag)
15736 U->C.S_C.MEN = U->C.S_M.MEN;
15739 if(MS0->S7.fluctuate == 0)
15740 U->C.S_M.INT += [value doubleValue];
15741 else if(MS0->S7.fluctuate == 1)
15742 U->C.S_M.INT -= [value doubleValue];
15743 else if(MS0->S7.fluctuate == 2)
15744 U->C.S_M.INT = [value doubleValue];
15746 if(U->C.S_M.INT < 0)
15748 if(MS0->S7.extendFlag)
15749 U->C.S_C.INT = U->C.S_M.INT;
15752 if(MS0->S7.fluctuate == 0)
15753 U->C.S_M.LUK += [value doubleValue];
15754 else if(MS0->S7.fluctuate == 1)
15755 U->C.S_M.LUK -= [value doubleValue];
15756 else if(MS0->S7.fluctuate == 2)
15757 U->C.S_M.LUK = [value doubleValue];
15759 if(U->C.S_M.LUK < 0)
15761 if(MS0->S7.extendFlag)
15762 U->C.S_C.LUK = U->C.S_M.LUK;
15765 if(MS0->S7.fluctuate == 0)
15766 U->C.S_M.MOV += [value doubleValue];
15767 else if(MS0->S7.fluctuate == 1)
15768 U->C.S_M.MOV -= [value doubleValue];
15769 else if(MS0->S7.fluctuate == 2)
15770 U->C.S_M.MOV = [value doubleValue];
15772 if(U->C.S_M.MOV < 0)
15774 if(MS0->S7.extendFlag)
15775 U->C.S_C.MOV = U->C.S_M.MOV;
15778 if(MS0->S7.fluctuate == 0)
15779 U->C.S_M.MEL += [value doubleValue];
15780 else if(MS0->S7.fluctuate == 1)
15781 U->C.S_M.MEL -= [value doubleValue];
15782 else if(MS0->S7.fluctuate == 2)
15783 U->C.S_M.MEL = [value doubleValue];
15785 if(U->C.S_M.MEL < 0)
15787 if(MS0->S7.extendFlag)
15788 U->C.S_C.MEL = U->C.S_M.MEL;
15791 if(MS0->S7.fluctuate == 0)
15792 U->C.S_M.MIS += [value doubleValue];
15793 else if(MS0->S7.fluctuate == 1)
15794 U->C.S_M.MIS -= [value doubleValue];
15795 else if(MS0->S7.fluctuate == 2)
15796 U->C.S_M.MIS = [value doubleValue];
15798 if(U->C.S_M.MIS < 0)
15800 if(MS0->S7.extendFlag)
15801 U->C.S_C.MIS = U->C.S_M.MIS;
15805 if(MS0->S7.fluctuate == 0)
15806 U->C.S_M.HIT += [value doubleValue];
15807 else if(MS0->S7.fluctuate == 1)
15808 U->C.S_M.HIT -= [value doubleValue];
15809 else if(MS0->S7.fluctuate == 2)
15810 U->C.S_M.HIT = [value doubleValue];
15812 if(U->C.S_M.HIT < 0)
15814 if(MS0->S7.extendFlag)
15815 U->C.S_C.HIT = U->C.S_M.HIT;
15818 if(MS0->S7.fluctuate == 0)
15819 U->C.S_M.DOD += [value doubleValue];
15820 else if(MS0->S7.fluctuate == 1)
15821 U->C.S_M.DOD -= [value doubleValue];
15822 else if(MS0->S7.fluctuate == 2)
15823 U->C.S_M.DOD = [value doubleValue];
15825 if(U->C.S_M.DOD < 0)
15827 if(MS0->S7.extendFlag)
15828 U->C.S_C.DOD = U->C.S_M.DOD;
15831 if(MS0->S7.fluctuate == 0)
15832 U->C.S_M.REA += [value doubleValue];
15833 else if(MS0->S7.fluctuate == 1)
15834 U->C.S_M.REA -= [value doubleValue];
15835 else if(MS0->S7.fluctuate == 2)
15836 U->C.S_M.REA = [value doubleValue];
15838 if(U->C.S_M.REA < 0)
15840 if(MS0->S7.extendFlag)
15841 U->C.S_C.REA = U->C.S_M.REA;
15844 if(MS0->S7.fluctuate == 0)
15845 U->C.S_M.SKI += [value doubleValue];
15846 else if(MS0->S7.fluctuate == 1)
15847 U->C.S_M.SKI -= [value doubleValue];
15848 else if(MS0->S7.fluctuate == 2)
15849 U->C.S_M.SKI = [value doubleValue];
15851 if(U->C.S_M.SKI < 0)
15853 if(MS0->S7.extendFlag)
15854 U->C.S_C.SKI = U->C.S_M.SKI;
15857 U->C.name = [value retain];
15860 U->C.nameNick = [value retain];
15863 U->C.nameClass = [value retain];
15866 U->C.S_C.typeMONS = [value doubleValue];
15869 U->C.S_C.typeMOVE = [value doubleValue];
15872 if(MS0->S7.fluctuate == 0)
15873 U->C.S_M.cSupply += [value doubleValue];
15874 else if(MS0->S7.fluctuate == 1)
15875 U->C.S_M.cSupply -= [value doubleValue];
15876 else if(MS0->S7.fluctuate == 2)
15877 U->C.S_M.cSupply = [value doubleValue];
15879 if(U->C.S_M.cSupply < 0)
15880 U->C.S_M.cSupply = 0;
15881 if(MS0->S7.extendFlag)
15882 U->C.S_C.cSupply = U->C.S_M.cSupply;
15885 if(MS0->S7.fluctuate == 0)
15886 U->C.S_M.cFood += [value doubleValue];
15887 else if(MS0->S7.fluctuate == 1)
15888 U->C.S_M.cFood -= [value doubleValue];
15889 else if(MS0->S7.fluctuate == 2)
15890 U->C.S_M.cFood = [value doubleValue];
15892 if(U->C.S_M.cFood < 0)
15893 U->C.S_M.cFood = 0;
15894 if(MS0->S7.extendFlag)
15895 U->C.S_C.cFood = U->C.S_M.cFood;
15898 if(MS0->S7.fluctuate == 0)
15899 U->C.S_M.cMoney += [value doubleValue];
15900 else if(MS0->S7.fluctuate == 1)
15901 U->C.S_M.cMoney -= [value doubleValue];
15902 else if(MS0->S7.fluctuate == 2)
15903 U->C.S_M.cMoney = [value doubleValue];
15904 if(U->C.S_M.cMoney < 0)
15905 U->C.S_M.cMoney = 0;
15906 if(MS0->S7.extendFlag)
15907 U->C.S_C.cMoney = U->C.S_M.cMoney;
15910 if(MS0->S7.fluctuate == 0)
15911 U->C.S_M.cWT += [value doubleValue];
15912 else if(MS0->S7.fluctuate == 1)
15913 U->C.S_M.cWT -= [value doubleValue];
15914 else if(MS0->S7.fluctuate == 2)
15915 U->C.S_M.cWT = [value doubleValue];
15916 if(U->C.S_M.cWT < 0)
15918 if(MS0->S7.extendFlag)
15919 U->C.S_C.cWT = U->C.S_M.cWT;
15922 if(MS0->S7.fluctuate == 0)
15923 U->C.S_M.vigor += [value doubleValue];
15924 else if(MS0->S7.fluctuate == 1)
15925 U->C.S_M.vigor -= [value doubleValue];
15926 else if(MS0->S7.fluctuate == 2)
15927 U->C.S_M.vigor = [value doubleValue];
15928 if(U->C.S_M.vigor < 0)
15929 U->C.S_M.vigor = 0;
15930 if(MS0->S7.extendFlag)
15931 U->C.S_C.vigor = U->C.S_M.vigor;
15940 switch (MS0->S7.type) {
15942 if(MS0->S7.fluctuate == 0)
15943 U->C.S_M.HP += U->C.S_M.HP*[value doubleValue]/100;
15944 else if(MS0->S7.fluctuate == 1)
15945 U->C.S_M.HP -= U->C.S_M.HP*[value doubleValue]/100;
15946 else if(MS0->S7.fluctuate == 2)
15947 U->C.S_M.HP = U->C.S_M.HP*[value doubleValue]/100;
15949 if(U->C.S_M.HP < 0)
15951 if(MS0->S7.extendFlag)
15952 U->C.S_C.HP = U->C.S_M.HP;
15955 if(MS0->S7.fluctuate == 0)
15956 U->C.S_M.MP += U->C.S_M.MP*[value doubleValue]/100;
15957 else if(MS0->S7.fluctuate == 1)
15958 U->C.S_M.MP -= U->C.S_M.MP*[value doubleValue]/100;
15959 else if(MS0->S7.fluctuate == 2)
15960 U->C.S_M.MP = U->C.S_M.MP*[value doubleValue]/100;
15962 if(U->C.S_M.MP < 0)
15964 if(MS0->S7.extendFlag)
15965 U->C.S_C.MP = U->C.S_M.MP;
15968 if(MS0->S7.fluctuate == 0)
15969 U->C.S_M.WT += U->C.S_M.WT*[value doubleValue]/100;
15970 else if(MS0->S7.fluctuate == 1)
15971 U->C.S_M.WT -= U->C.S_M.WT*[value doubleValue]/100;
15972 else if(MS0->S7.fluctuate == 2)
15973 U->C.S_M.MP = U->C.S_M.WT*[value doubleValue]/100;
15975 if(U->C.S_M.WT < 0)
15977 if(MS0->S7.extendFlag)
15978 U->C.S_C.WT = U->C.S_M.WT;
15981 if(MS0->S7.fluctuate == 0)
15982 U->C.S_M.STR += U->C.S_M.STR*[value doubleValue]/100;
15983 else if(MS0->S7.fluctuate == 1)
15984 U->C.S_M.STR -= U->C.S_M.STR*[value doubleValue]/100;
15985 else if(MS0->S7.fluctuate == 2)
15986 U->C.S_M.STR = U->C.S_M.STR*[value doubleValue]/100;
15988 if(U->C.S_M.STR < 0)
15990 if(MS0->S7.extendFlag)
15991 U->C.S_C.STR = U->C.S_M.STR;
15994 if(MS0->S7.fluctuate == 0)
15995 U->C.S_M.VIT += U->C.S_M.VIT*[value doubleValue]/100;
15996 else if(MS0->S7.fluctuate == 1)
15997 U->C.S_M.VIT -= U->C.S_M.VIT*[value doubleValue]/100;
15998 else if(MS0->S7.fluctuate == 2)
15999 U->C.S_M.VIT = U->C.S_M.VIT*[value doubleValue]/100;
16001 if(U->C.S_M.VIT < 0)
16003 if(MS0->S7.extendFlag)
16004 U->C.S_C.VIT = U->C.S_M.VIT;
16007 if(MS0->S7.fluctuate == 0)
16008 U->C.S_M.AGI += U->C.S_M.AGI*[value doubleValue]/100;
16009 else if(MS0->S7.fluctuate == 1)
16010 U->C.S_M.AGI -= U->C.S_M.AGI*[value doubleValue]/100;
16011 else if(MS0->S7.fluctuate == 2)
16012 U->C.S_M.AGI = U->C.S_M.AGI*[value doubleValue]/100;
16014 if(U->C.S_M.AGI < 0)
16016 if(MS0->S7.extendFlag)
16017 U->C.S_C.AGI = U->C.S_M.AGI;
16020 if(MS0->S7.fluctuate == 0)
16021 U->C.S_M.DEX += U->C.S_M.DEX*[value doubleValue]/100;
16022 else if(MS0->S7.fluctuate == 1)
16023 U->C.S_M.DEX -= U->C.S_M.DEX*[value doubleValue]/100;
16024 else if(MS0->S7.fluctuate == 2)
16025 U->C.S_M.DEX = U->C.S_M.DEX*[value doubleValue]/100;
16027 if(U->C.S_M.DEX < 0)
16029 if(MS0->S7.extendFlag)
16030 U->C.S_C.DEX = U->C.S_M.DEX;
16033 if(MS0->S7.fluctuate == 0)
16034 U->C.S_M.MEN += U->C.S_M.MEN*[value doubleValue]/100;
16035 else if(MS0->S7.fluctuate == 1)
16036 U->C.S_M.MEN -= U->C.S_M.MEN*[value doubleValue]/100;
16037 else if(MS0->S7.fluctuate == 2)
16038 U->C.S_M.MEN = U->C.S_M.MEN*[value doubleValue]/100;
16040 if(U->C.S_M.MEN < 0)
16042 if(MS0->S7.extendFlag)
16043 U->C.S_C.MEN = U->C.S_M.MEN;
16046 if(MS0->S7.fluctuate == 0)
16047 U->C.S_M.INT += U->C.S_M.INT*[value doubleValue]/100;
16048 else if(MS0->S7.fluctuate == 1)
16049 U->C.S_M.INT -= U->C.S_M.INT*[value doubleValue]/100;
16050 else if(MS0->S7.fluctuate == 2)
16051 U->C.S_M.INT = U->C.S_M.INT*[value doubleValue]/100;
16053 if(U->C.S_M.INT < 0)
16055 if(MS0->S7.extendFlag)
16056 U->C.S_C.INT = U->C.S_M.INT;
16059 if(MS0->S7.fluctuate == 0)
16060 U->C.S_M.LUK += U->C.S_M.LUK*[value doubleValue]/100;
16061 else if(MS0->S7.fluctuate == 1)
16062 U->C.S_M.LUK -= U->C.S_M.LUK*[value doubleValue]/100;
16063 else if(MS0->S7.fluctuate == 2)
16064 U->C.S_M.LUK = U->C.S_M.LUK*[value doubleValue]/100;
16066 if(U->C.S_M.LUK < 0)
16068 if(MS0->S7.extendFlag)
16069 U->C.S_C.LUK = U->C.S_M.LUK;
16072 if(MS0->S7.fluctuate == 0)
16073 U->C.S_M.MOV += U->C.S_M.MOV*[value doubleValue]/100;
16074 else if(MS0->S7.fluctuate == 1)
16075 U->C.S_M.MOV -= U->C.S_M.MOV*[value doubleValue]/100;
16076 else if(MS0->S7.fluctuate == 2)
16077 U->C.S_M.MOV = U->C.S_M.MOV*[value doubleValue]/100;
16079 if(U->C.S_M.MOV < 0)
16081 if(MS0->S7.extendFlag)
16082 U->C.S_C.MOV = U->C.S_M.MOV;
16085 if(MS0->S7.fluctuate == 0)
16086 U->C.S_M.MEL += U->C.S_M.MEL*[value doubleValue]/100;
16087 else if(MS0->S7.fluctuate == 1)
16088 U->C.S_M.MEL -= U->C.S_M.MEL*[value doubleValue]/100;
16089 else if(MS0->S7.fluctuate == 2)
16090 U->C.S_M.MEL = U->C.S_M.MEL*[value doubleValue]/100;
16092 if(U->C.S_C.MEL < 0)
16094 if(MS0->S7.extendFlag)
16095 U->C.S_C.MEL = U->C.S_M.MEL;
16098 if(MS0->S7.fluctuate == 0)
16099 U->C.S_C.MIS += U->C.S_M.MIS*[value doubleValue]/100;
16100 else if(MS0->S7.fluctuate == 1)
16101 U->C.S_C.MIS -= U->C.S_M.MIS*[value doubleValue]/100;
16102 else if(MS0->S7.fluctuate == 2)
16103 U->C.S_C.MIS = U->C.S_M.MIS*[value doubleValue]/100;
16105 if(U->C.S_C.MIS < 0)
16107 if(MS0->S7.extendFlag)
16108 U->C.S_C.MIS = U->C.S_M.MIS;
16111 if(MS0->S7.fluctuate == 0)
16112 U->C.S_M.HIT += U->C.S_M.HIT*[value doubleValue]/100;
16113 else if(MS0->S7.fluctuate == 1)
16114 U->C.S_M.HIT -= U->C.S_M.HIT*[value doubleValue]/100;
16115 else if(MS0->S7.fluctuate == 2)
16116 U->C.S_M.HIT = U->C.S_M.HIT*[value doubleValue]/100;
16118 if(U->C.S_M.HIT < 0)
16120 if(MS0->S7.extendFlag)
16121 U->C.S_C.HIT = U->C.S_M.HIT;
16124 if(MS0->S7.fluctuate == 0)
16125 U->C.S_M.DOD += U->C.S_M.DOD*[value doubleValue]/100;
16126 else if(MS0->S7.fluctuate == 1)
16127 U->C.S_M.DOD -= U->C.S_M.DOD*[value doubleValue]/100;
16128 else if(MS0->S7.fluctuate == 2)
16129 U->C.S_M.DOD = U->C.S_M.DOD*[value doubleValue]/100;
16131 if(U->C.S_M.DOD < 0)
16133 if(MS0->S7.extendFlag)
16134 U->C.S_C.DOD = U->C.S_M.DOD;
16137 if(MS0->S7.fluctuate == 0)
16138 U->C.S_M.REA += U->C.S_M.REA*[value doubleValue]/100;
16139 else if(MS0->S7.fluctuate == 1)
16140 U->C.S_M.REA -= U->C.S_M.REA*[value doubleValue]/100;
16141 else if(MS0->S7.fluctuate == 2)
16142 U->C.S_M.REA = U->C.S_M.REA*[value doubleValue]/100;
16144 if(U->C.S_M.REA < 0)
16146 if(MS0->S7.extendFlag)
16147 U->C.S_C.REA = U->C.S_M.REA;
16150 if(MS0->S7.fluctuate == 0)
16151 U->C.S_M.SKI += U->C.S_M.SKI*[value doubleValue]/100;
16152 else if(MS0->S7.fluctuate == 1)
16153 U->C.S_M.SKI -= U->C.S_M.SKI*[value doubleValue]/100;
16154 else if(MS0->S7.fluctuate == 2)
16155 U->C.S_M.SKI = U->C.S_M.SKI*[value doubleValue]/100;
16157 if(U->C.S_M.SKI < 0)
16159 if(MS0->S7.extendFlag)
16160 U->C.S_C.SKI = U->C.S_M.SKI;
16163 U->C.name = [MS0->S7.value retain];
16166 U->C.nameNick = [MS0->S7.value retain];
16169 U->C.nameClass = [MS0->S7.value retain];
16172 U->C.S_C.typeMONS = [MS0->S7.value doubleValue];
16175 U->C.S_C.typeMOVE = [MS0->S7.value doubleValue];
16178 if(MS0->S7.fluctuate == 0)
16179 U->C.S_M.cSupply += U->C.S_M.cSupply*[value doubleValue]/100;
16180 else if(MS0->S7.fluctuate == 1)
16181 U->C.S_M.cSupply -= U->C.S_M.cSupply*[value doubleValue]/100;
16182 else if(MS0->S7.fluctuate == 2)
16183 U->C.S_M.cSupply = U->C.S_M.cSupply*[value doubleValue]/100;
16185 if(U->C.S_M.cSupply < 0)
16186 U->C.S_M.cSupply = 0;
16187 if(MS0->S7.extendFlag)
16188 U->C.S_C.cSupply = U->C.S_M.cSupply;
16191 if(MS0->S7.fluctuate == 0)
16192 U->C.S_M.cFood += U->C.S_M.cFood*[value doubleValue]/100;
16193 else if(MS0->S7.fluctuate == 1)
16194 U->C.S_M.cFood -= U->C.S_M.cFood*[value doubleValue]/100;
16195 else if(MS0->S7.fluctuate == 2)
16196 U->C.S_M.cFood = U->C.S_M.cFood*[value doubleValue]/100;
16199 if(U->C.S_M.cFood < 0)
16200 U->C.S_M.cFood = 0;
16201 if(MS0->S7.extendFlag)
16202 U->C.S_C.cFood = U->C.S_M.cFood;
16205 if(MS0->S7.fluctuate == 0)
16206 U->C.S_M.cMoney += U->C.S_M.cMoney*[value doubleValue]/100;
16207 else if(MS0->S7.fluctuate == 1)
16208 U->C.S_M.cMoney -= U->C.S_M.cMoney*[value doubleValue]/100;
16209 else if(MS0->S7.fluctuate == 2)
16210 U->C.S_M.cMoney = U->C.S_M.cMoney*[value doubleValue]/100;
16212 if(U->C.S_M.cMoney < 0)
16213 U->C.S_M.cMoney = 0;
16214 if(MS0->S7.extendFlag)
16215 U->C.S_C.cMoney = U->C.S_M.cMoney;
16218 if(MS0->S7.fluctuate == 0)
16219 U->C.S_M.cWT += U->C.S_M.cWT*[value doubleValue]/100;
16220 else if(MS0->S7.fluctuate == 1)
16221 U->C.S_M.cWT -= U->C.S_M.cWT*[value doubleValue]/100;
16222 else if(MS0->S7.fluctuate == 2)
16223 U->C.S_M.cWT = U->C.S_M.cWT*[value doubleValue]/100;
16225 if(U->C.S_M.cWT < 0)
16227 if(MS0->S7.extendFlag)
16228 U->C.S_C.cWT = U->C.S_M.cWT;
16231 if(MS0->S7.fluctuate == 0)
16232 U->C.S_M.vigor += U->C.S_M.vigor*[value doubleValue]/100;
16233 else if(MS0->S7.fluctuate == 1)
16234 U->C.S_M.vigor -= U->C.S_M.vigor*[value doubleValue]/100;
16235 else if(MS0->S7.fluctuate == 2)
16236 U->C.S_M.vigor = U->C.S_M.vigor*[value doubleValue]/100;
16238 if(U->C.S_M.vigor < 0)
16239 U->C.S_M.vigor = 0;
16240 if(MS0->S7.extendFlag)
16241 U->C.S_C.vigor = U->C.S_M.vigor;
16254 -(MAPSCRIPT0*)setResource:(MAPSCRIPT0*)MS0{
16256 if(MS0->S6.team == 0){
16258 if(MS0->S6.RCsupply){
16259 if(MS0->S6.RCsupplyS){
16260 if(MS0->S6.RCsupplyAdd)
16261 P[0].resource += MS0->S6.RCsupplyValue;
16263 P[0].resource -= MS0->S6.RCsupplyValue;
16265 if(MS0->S6.RCsupplyAdd)
16266 P[0].resource += [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
16268 P[0].resource -= [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
16271 if(MS0->S6.RCfood){
16272 if(MS0->S6.RCfoodS){
16273 if(MS0->S6.RCfoodAdd)
16274 P[0].food += MS0->S6.RCfoodValue;
16276 P[0].food -= MS0->S6.RCfoodValue;
16278 if(MS0->S6.RCfoodAdd)
16279 P[0].food += [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
16281 P[0].food -= [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
16284 if(MS0->S6.RCmoney){
16285 if(MS0->S6.RCmoneyS){
16286 if(MS0->S6.RCmoneyAdd)
16287 P[0].money += MS0->S6.RCmoneyValue;
16289 P[0].money -= MS0->S6.RCmoneyValue;
16291 if(MS0->S6.RCmoneyAdd)
16292 P[0].money += [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
16294 P[0].money -= [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
16298 }else if(MS0->S6.team == 1){
16299 if(MS0->S6.RCsupply){
16300 if(MS0->S6.RCsupplyS){
16301 if(MS0->S6.RCsupplyAdd)
16302 P[1].resource += MS0->S6.RCsupplyValue;
16304 P[1].resource -= MS0->S6.RCsupplyValue;
16306 if(MS0->S6.RCsupplyAdd)
16307 P[1].resource += [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
16309 P[1].resource -= [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
16312 if(MS0->S6.RCfood){
16313 if(MS0->S6.RCfoodS){
16314 if(MS0->S6.RCfoodAdd)
16315 P[1].food += MS0->S6.RCfoodValue;
16317 P[1].food -= MS0->S6.RCfoodValue;
16319 if(MS0->S6.RCfoodAdd)
16320 P[1].food += [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
16322 P[1].food -= [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
16325 if(MS0->S6.RCmoney){
16326 if(MS0->S6.RCmoneyS){
16327 if(MS0->S6.RCmoneyAdd)
16328 P[1].money += MS0->S6.RCmoneyValue;
16330 P[1].money -= MS0->S6.RCmoneyValue;
16332 if(MS0->S6.RCmoneyAdd)
16333 P[1].money += [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
16335 P[1].money -= [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
16338 }else if(MS0->S6.team == 2){
16339 if(MS0->S6.RCsupply){
16340 if(MS0->S6.RCsupplyS){
16341 if(MS0->S6.RCsupplyAdd)
16342 P[2].resource += MS0->S6.RCsupplyValue;
16344 P[2].resource -= MS0->S6.RCsupplyValue;
16346 if(MS0->S6.RCsupplyAdd)
16347 P[2].resource += [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
16349 P[2].resource -= [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
16353 if(MS0->S6.RCfood){
16354 if(MS0->S6.RCfoodS){
16355 if(MS0->S6.RCfoodAdd)
16356 P[2].food += MS0->S6.RCfoodValue;
16358 P[2].food -= MS0->S6.RCfoodValue;
16360 if(MS0->S6.RCfoodAdd)
16361 P[2].food += [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
16363 P[2].food -= [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
16366 if(MS0->S6.RCmoney){
16367 if(MS0->S6.RCmoneyS){
16368 if(MS0->S6.RCmoneyAdd)
16369 P[2].money += MS0->S6.RCmoneyValue;
16371 P[2].money -= MS0->S6.RCmoneyValue;
16373 if(MS0->S6.RCmoneyAdd)
16374 P[2].money += [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
16376 P[2].money -= [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
16381 if(P[0].resource < 0) P[0].resource = 0;
16382 if(P[1].resource < 0) P[1].resource = 0;
16383 if(P[2].resource < 0) P[2].resource = 0;
16385 if(P[0].food < 0) P[0].food = 0;
16386 if(P[1].food < 0) P[1].food = 0;
16387 if(P[2].food < 0) P[2].food = 0;
16389 if(P[0].money < 0) P[0].money = 0;
16390 if(P[1].money < 0) P[1].money = 0;
16391 if(P[2].money < 0) P[2].money = 0;
16393 MS0->succeessfulFlag = true;
16394 MS0->endFlag = true;
16398 -(MAPSCRIPT0*)setLabel:(MAPSCRIPT0*)MS0{
16400 //NSLog(@"%d", MSDP0top->succeessfulFlag);
16401 MS0->succeessfulFlag = true;
16402 MS0->endFlag = true;
16406 -(MAPSCRIPT0*)setComment:(MAPSCRIPT0*)MS0{
16408 MS0->succeessfulFlag = true;
16409 MS0->endFlag = true;
16414 -(MAPSCRIPT0*)setSelection:(MAPSCRIPT0*)MS0{
16416 static bool initFlag = false;
16421 MAPSCRIPT2 *MS2top = MS0->S2;
16423 slctPoint.x = [mapWindow frame].origin.x + 100;
16424 slctPoint.y = [mapWindow frame].origin.y + 300;
16426 [slctBtn1 setHidden:YES];
16427 [slctBtn2 setHidden:YES];
16428 [slctBtn3 setHidden:YES];
16429 [slctBtn4 setHidden:YES];
16430 [slctBtn5 setHidden:YES];
16431 [slctBtn6 setHidden:YES];
16432 [slctBtn7 setHidden:YES];
16433 [slctBtn8 setHidden:YES];
16434 [slctBtn9 setHidden:YES];
16436 for(int i = 1;MS0->S2;i++){
16439 [slctBtn1 setTitle:MS0->S2->selection];
16440 [slctBtn1 setHidden:NO];
16441 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 60) display:YES];
16444 [slctBtn2 setTitle:MS0->S2->selection];
16445 [slctBtn2 setHidden:NO];
16446 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 90) display:YES];
16449 [slctBtn3 setTitle:MS0->S2->selection];
16450 [slctBtn3 setHidden:NO];
16451 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 120) display:YES];
16455 [slctBtn4 setTitle:MS0->S2->selection];
16456 [slctBtn4 setHidden:NO];
16457 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 150) display:YES];
16460 [slctBtn5 setTitle:MS0->S2->selection];
16461 [slctBtn5 setHidden:NO];
16462 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 180) display:YES];
16465 [slctBtn6 setTitle:MS0->S2->selection];
16466 [slctBtn6 setHidden:NO];
16467 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 210) display:YES];
16470 [slctBtn7 setTitle:MS0->S2->selection];
16471 [slctBtn7 setHidden:NO];
16472 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 240) display:YES];
16475 [slctBtn8 setTitle:MS0->S2->selection];
16476 [slctBtn8 setHidden:NO];
16477 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 270) display:YES];
16480 [slctBtn9 setTitle:MS0->S2->selection];
16481 [slctBtn9 setHidden:NO];
16482 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 300) display:YES];
16487 MS0->S2 = MS0->S2->next;
16493 [selectionWindow makeKeyAndOrderFront:nil];
16497 if(slctedBtnNum > 0){
16498 MAPSCRIPT0 *CRMS0 = MS0;
16502 MS0->endFlag = false;
16506 MAPSCRIPT2 *MS2top = MS0->S2;
16509 for(int i = 1;i < slctedBtnNum;i++){
16510 MS0->S2 = MS0->S2->next;
16517 if([CRMS2->labelJump isEqualToString:MS0->label]){
16518 MS0->endFlag = false;
16524 if([CRMS2->labelJump isEqualToString:MS0->next->label]){
16525 if(MS0->type == 6 && MS0->endFlag){
16528 MS0->succeessfulFlag = true;
16530 MS0->endFlag = true;
16534 if(MS0->type == 6 && MS0->endFlag){
16537 MS0->succeessfulFlag = true;
16539 MS0->endFlag = true;
16548 MS0->endFlag = true;
16549 MS0->succeessfulFlag = true;
16557 -(MAPSCRIPT0*)setAppearance:(MAPSCRIPT0*)MS0{
16567 if(unitNum[x][y] == -1){
16573 unitTeam[x][y] = MS0->S3->team;
16574 unitNum[x][y] = u.chipNumb;
16575 loadNum[x][y] = u.chipNumb;
16576 [self addAppearanceStatus:u x:x y:y];
16584 int *p = calloc(1, sizeof(int));
16585 int *o = calloc(1, sizeof(int));
16586 appearanceSAIKIflag = false;
16589 for (int i = 0;i < 1002;i++) {
16590 for (int k = 0;k < 1002;k++) {
16595 [self checkAppearanceRange:5 tX:y tY:x aMap:apprR];
16598 for (int i = 0;i < 1002;i++) {
16599 for (int k = 0;k < 1002;k++) {
16600 if(apprR[i][k] > postInt && unitNum[i][k] == -1){
16601 postInt = apprR[i][k];
16608 if(*p > 0 && *o >0){
16611 unitTeam[x][y] = MS0->S3->team;
16612 unitNum[x][y] = u.chipNumb;
16613 loadNum[x][y] = u.chipNumb;
16614 [self addAppearanceStatus:u x:x y:y];
16616 MS0->succeessfulFlag = false;
16617 MS0->endFlag = true;
16623 MS0->S3 = MS0->S3->next;
16625 unitColorInitFlag = true;
16627 MS0->succeessfulFlag = true;
16628 MS0->endFlag = true;
16632 -(MAPSCRIPT0*)setDissappearance:(MAPSCRIPT0*)MS0{
16645 if(MS0->S5->unitNum >= 0){
16646 unitNum[x][y] = -1;
16647 unitTeam[x][y] = -1;
16648 unitNum[x][y] = -1;
16649 loadNum[x][y] = -1;
16653 if(U->ix == x && U->iy == y)
16663 MS0->succeessfulFlag = false;
16664 MS0->endFlag = true;
16670 MS0->S5 = MS0->S5->next;
16672 unitColorInitFlag = true;
16674 MS0->succeessfulFlag = true;
16675 MS0->endFlag = true;
16680 -(void)checkAppearanceRange:(int)cnsPow tX:(int)startX tY:(int)startY aMap:(int[][1002])aMap{
16682 if(cnsPow < 0) return;
16685 if(aMap[startY][startX] <= cnsPow)
16686 aMap[startY][startX] = cnsPow;
16688 if(startY < 0) startY = 0;
16689 if(startX < 0) startX = 0;
16690 if(cnsPow < 0) cnsPow = 0;
16694 if(aMap[startY-1][startX] >= 0 && cnsPow > 0)
16695 [self checkAppearanceRange:i0 tX:startX tY:startY-1 aMap:aMap];
16698 if(aMap[startY+1][startX] >= 0 && cnsPow > 0)
16699 [self checkAppearanceRange:i0 tX:startX tY:startY+1 aMap:aMap];
16702 if(aMap[startY][startX-1] >= 0 && cnsPow > 0)
16703 [self checkAppearanceRange:i0 tX:startX-1 tY:startY aMap:aMap];
16706 if(aMap[startY][startX+1] >= 0 && cnsPow > 0)
16707 [self checkAppearanceRange:i0 tX:startX+1 tY:startY aMap:aMap];
16711 -(void)addAppearanceStatus:(UNITCHIP)u x:(int)x y:(int)y{
16716 while (U->next) {omgCnt++;
16719 U->next = calloc(1, sizeof(UNIT));
16722 if(omgCnt == 0) U = UTop;
16723 U->number = registerNum;
16724 U->chipNumber = -1;
16725 U->chipNumberL = -1;
16726 U->C.chipNumb = -1;
16727 U->CL.chipNumb = -1;
16733 if(unitTeam[x][y] == 0 || unitTeam[x][y] == 1){
16735 if(unitTeam[x][y] == 1){
16736 U->joinArmyFromNext = true;
16737 U->persuasion = true;
16739 if(MF[MFselectedRow+1].MS.playerSet1 == 2)
16743 if(unitTeam[x][y] == 2 || unitTeam[x][y] == 3){
16745 if(unitTeam[x][y] == 3){
16746 U->joinArmyFromNext = true;
16747 U->persuasion = true;
16749 if(MF[MFselectedRow+1].MS.playerSet2 == 2)
16753 if(unitTeam[x][y] == 4 || unitTeam[x][y] == 5){
16755 if(unitTeam[x][y] == 5){
16756 U->joinArmyFromNext = true;
16757 U->persuasion = true;
16761 if(unitTeam[x][y] == -1){
16763 if(unitTeam[x][y] == 0){
16764 U->joinArmyFromNext = false;
16765 U->persuasion = true;
16769 unitNum[x][y] = u.chipNumb;
16770 [self SetUnitStatus:unitNum[x][y]];
16772 for(int i = 0;i < UCN;i++){
16773 if([U->C.nameID isEqualToString:UC[i].nameID])
16776 for(int i = 0;i < LCN;i++){
16777 if([U->CL.nameID isEqualToString:LC[i].nameID])
16778 U->chipNumberL = i;
16780 for(int i = 0;i < UCN;i++){
16781 if([U->C.nameID isEqualToString:UC[i].nameID])
16784 for(int i = 0;i < LCN;i++){
16785 if([U->CL.nameID isEqualToString:LC[i].nameID])
16786 U->CL.chipNumb = i;
16795 -(MAPSCRIPT0*)setWait:(MAPSCRIPT0*)MS0{
16797 static bool waitin = false;
16801 waitinTime = MS0->wait;
16806 waitSwtichFlag = true;
16808 if(waitAllOverFlag){
16809 MS0->succeessfulFlag = true;
16810 MS0->endFlag = true;
16811 waitAllOverFlag = false;
16812 waitSwtichFlag = false;
16814 waitx10flag = false;
16821 -(MAPSCRIPT0*)setBGM:(MAPSCRIPT0*)MS0{
16826 BGMsub = [MS0->BGM.snd retain];
16828 [BGMsub setLoops:NO];
16831 MS0->succeessfulFlag = true;
16832 MS0->endFlag = true;
16837 -(MAPSCRIPT0*)setSE:(MAPSCRIPT0*)MS0{
16841 SEsub = [MS0->SE.snd retain];
16845 MS0->succeessfulFlag = true;
16846 MS0->endFlag = true;
16851 -(MAPSCRIPT0*)setTitleBack:(MAPSCRIPT0*)MS0{
16853 backTitleFlag = true;
16854 battleBegin = false;
16856 MS0->succeessfulFlag = true;
16857 MS0->endFlag = true;
16862 -(MAPSCRIPT0*)setStageClear:(MAPSCRIPT0*)MS0{
16864 stageClearFlag = true;
16866 if(MS0->sc.edcdFlag)
16867 stageClearFlag2 = true;
16868 battleBegin = false;
16870 MS0->succeessfulFlag = true;
16871 MS0->endFlag = true;
16876 -(MAPSCRIPT0*)setGameOver:(MAPSCRIPT0*)MS0{
16878 gaov.img = MS0->gaov.img;
16880 gameOverFlag = true;
16881 battleBegin = false;
16883 MS0->succeessfulFlag = true;
16884 MS0->endFlag = true;
16889 -(IBAction)gameOverSubmit:(id)sender{
16897 [GameOverWindow close];
16898 [titleWindow makeKeyAndOrderFront:nil];
16902 -(IBAction)battleReadyUpStartBtn:(id)sender{
16905 P[0].resource = [battleReadyUpSupply1 intValue];
16906 P[0].food = [battleReadyUpFood1 intValue];
16907 P[0].money = [battleReadyUpMoney1 intValue];
16909 P[1].resource = [battleReadyUpSupply2 intValue];
16910 P[1].food = [battleReadyUpFood2 intValue];
16911 P[1].money = [battleReadyUpMoney2 intValue];
16913 setBattleModeFlag = false;
16918 -(IBAction)battleReadyUpState1:(id)sender{
16919 retardhelp1 = true;
16921 -(IBAction)battleReadyUpState2:(id)sender{
16922 retardhelp2 = true;
16931 -(IBAction)selectionBtn1:(id)sender{
16933 [selectionWindow close];
16935 -(IBAction)selectionBtn2:(id)sender{
16937 [selectionWindow close];
16939 -(IBAction)selectionBtn3:(id)sender{
16941 [selectionWindow close];
16943 -(IBAction)selectionBtn4:(id)sender{
16945 [selectionWindow close];
16947 -(IBAction)selectionBtn5:(id)sender{
16949 [selectionWindow close];
16951 -(IBAction)selectionBtn6:(id)sender{
16953 [selectionWindow close];
16955 -(IBAction)selectionBtn7:(id)sender{
16957 [selectionWindow close];
16959 -(IBAction)selectionBtn8:(id)sender{
16961 [selectionWindow close];
16963 -(IBAction)selectionBtn9:(id)sender{
16965 [selectionWindow close];
16972 NSString *directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
16973 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
16976 NSData *InitialData = [NSData dataWithContentsOfFile:@"data/Others/var.txt"];
16977 NSString *pathVar = @"data/Others/var.txt";
16978 NSString *fileData = @"";
16981 [[NSFileManager defaultManager] createFileAtPath:pathVar contents:nil attributes:nil];
16985 fileData = [NSString stringWithContentsOfFile:pathVar encoding:NSUTF8StringEncoding error:nil];
16986 NSArray *fileDataArray = [fileData componentsSeparatedByString:@"\n"];
16988 for(int i = 0;i < [fileDataArray count];i++){
16990 NSArray *item = [[fileDataArray objectAtIndex:i] componentsSeparatedByString:@","];
16992 Hensuu[i] = [[item objectAtIndex:1] retain];
16993 HensuuName[i] = [[item objectAtIndex:2] retain];
17001 -(void)displaySideMenu{
17003 [FSMenu setFrameOrigin:NSMakePoint([fsWindow frame].origin.x + [fsWindow frame].size.width/2 - FSMenu.frame.size.width/2,
17004 [fsWindow frame].origin.y + [fsWindow frame].size.height/2 - FSMenu.frame.size.height/2)];
17007 attackFlag = false;
17008 summonFlag = false;
17009 menuDisplayFlag = false;
17010 [FSMenu makeKeyAndOrderFront:nil];
17015 -(IBAction)FSVsave:(id)sender{
17017 [saveGamePanel setFrameOrigin:NSMakePoint([fsWindow frame].origin.x + [fsWindow frame].size.width/2 - saveGamePanel.frame.size.width/2,
17018 [fsWindow frame].origin.y + [fsWindow frame].size.height/2 - saveGamePanel.frame.size.height/2)];
17020 [self saveGameDataDatViewImage];
17022 [saveGameTF setStringValue:@""];
17024 [saveGamePanel makeKeyAndOrderFront:nil];
17028 -(IBAction)FSVtitle:(id)sender{
17030 stopByFSVmenuFlag = false;
17033 if(titleBGM) [titleBGM play];
17035 [titleWindow makeKeyAndOrderFront:nil];
17042 endGameCondition = false;
17043 initMapFlag = false;
17044 TeamCountFlag = false;
17045 initStatusFlag = false;
17046 battleBegin = false;
17049 cpuModeMOVEflag = false;
17050 cpuModeATTACKflag = false;
17052 redWinFlag = false;
17053 blueWinFlag = false;
17054 cpuAImodeflag = false;
17055 cpuTurnEndFlag = true;
17056 backTitleFlag = false;
17057 backTitleFlag2 = true;
17058 waitSwtichFlag = false;
17059 battleReadyUpFlag = false;
17060 setBattleModeFlag = false;
17061 mapChipDataLoadProc = 0;
17069 -(IBAction)FSVcancel:(id)sender{
17071 stopByFSVmenuFlag = false;
17078 -(void)displaySaveFileDialog{
17080 [saveDataList initFileDirectory];
17081 [self initSaveFileInputList];
17082 [saveFileDialog makeKeyAndOrderFront:nil];
17086 -(IBAction)saveFileInputSubmit:(id)sender{
17088 if([saveFileInputTF stringValue] == nil || [[saveFileInputTF stringValue] isEqualToString:@""]){
17092 saveFileNameSDL = [[saveFileInputTF stringValue] retain];
17093 SC[storyNumb].saveFileName = [saveFileNameSDL retain];
17094 [saveDataList saveSaveList];
17095 [levelList saveLevelList];
17097 [titleWindow makeKeyAndOrderFront:nil];
17098 [saveFileInputPanel close];
17100 -(IBAction)saveFileInputCancel:(id)sender{
17103 [titleWindow makeKeyAndOrderFront:nil];
17104 [saveFileInputPanel close];
17107 -(IBAction)saveFileDialogSubmit:(id)sender{
17109 saveFileFlag = true;
17110 [saveFileInputPanel makeKeyAndOrderFront:nil];
17112 [saveFileDialog close];
17115 -(IBAction)saveFileDialogCancel:(id)sender{
17117 saveFileNameSDL = [@"preset.txt" retain];
17118 SC[storyNumb].saveFileName = [saveFileNameSDL retain];
17119 [saveDataList saveSaveList];
17121 saveFileFlag = true;
17122 [titleWindow makeKeyAndOrderFront:nil];
17125 [saveFileDialog close];
17129 -(void)initSaveFileInputList{
17131 [self willChangeValueForKey:@"saveFileInputListMA"];
17132 [saveFileInputListMA removeAllObjects];
17133 [self didChangeValueForKey:@"saveFileInputListMA"];
17136 for(int i = 1;i <= saveNumb;i++){
17139 NSMutableDictionary* dict = [NSMutableDictionary new];
17140 [dict setValue:[NSString stringWithFormat:@"%@", SDL[i].name] forKey:@"name"];
17141 [self willChangeValueForKey:@"saveFileInputListMA"];
17142 [saveFileInputListMA addObject:dict];
17143 [self didChangeValueForKey:@"saveFileInputListMA"];
17148 -(void)initLoadFileOutputList{
17150 [self willChangeValueForKey:@"loadFileOutputListMA"];
17151 [loadFileOutputListMA removeAllObjects];
17152 [self didChangeValueForKey:@"loadFileOutputListMA"];
17155 for(int i = 1;i <= saveNumb;i++){
17158 if([SC[storyNumb].name isEqualToString:SDL[i].levelName]){
17159 NSMutableDictionary* dict = [NSMutableDictionary new];
17160 [dict setValue:[NSString stringWithFormat:@"%@", SDL[i].name] forKey:@"name"];
17161 [self willChangeValueForKey:@"loadFileOutputListMA"];
17162 [loadFileOutputListMA addObject:dict];
17163 [self didChangeValueForKey:@"loadFileOutputListMA"];
17168 [loadFileOutputListAC setSelectionIndex:9999];
17170 [loadFileOutputTF setStringValue:[NSString stringWithFormat:@""]];
17172 [loadFileOutputPanel makeKeyAndOrderFront:nil];
17176 -(IBAction)loadFileOutputSubmit:(id)sender{
17181 SC[storyNumb].saveFileName = [SDL[SDLrow+1].name retain];
17182 SC[storyNumb].CrntLevelName = [SDL[SDLrow+1].levelName retain];
17183 SC[storyNumb].scenarioNumbCrnt[scenarioNumb] = [NSString stringWithFormat:@"%d", SDL[SDLrow+1].scenarioNumbCrnt];
17184 SC[storyNumb].scenarioNumbNext[scenarioNumb] = [NSString stringWithFormat:@"%d", SDL[SDLrow+1].scenarioNumbNext];
17186 [levelList saveLevelList];
17187 [scenarioList initFileDirectory];
17188 [mapEditor initFileDirectoryOthers];
17189 [scenarioList setScenarioList:selectNumb];
17191 [loadFileOutputPanel close];
17194 -(void)initFileOutPutListSet{
17196 SC[storyNumb].saveFileName = NULL;
17198 [levelList saveLevelList];
17199 [scenarioList setScenarioList:selectNumb];
17202 -(IBAction)loadFileOutputCancel:(id)sender{
17204 [loadFileOutputPanel close];
17214 -(IBAction)saveGameSubmit:(id)sender{
17216 if([[saveGameTF stringValue] isEqualToString:@""])
17219 sdd.name = [[saveGameTF stringValue] retain];
17220 datFilePath = calloc(255, sizeof(char));
17221 strcpy(datFilePath, [sdd.name UTF8String]);
17223 [self saveGameDataDatViewImage];
17224 [self saveGameDataDat];
17225 [saveDataList initSaveList];
17227 [saveGamePanel close];
17231 -(void)saveGameDataDatViewImage{
17233 NSString *directoryPath;
17235 directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
17236 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
17238 [fieldView lockFocus];
17239 NSBitmapImageRep* rep = [fieldView bitmapImageRepForCachingDisplayInRect:fieldView.bounds];
17240 [fieldView cacheDisplayInRect:fieldView.bounds toBitmapImageRep:rep];
17241 [fieldView unlockFocus];
17243 NSMutableData* data = [rep representationUsingType:NSPNGFileType properties:nil];
17244 sdd.img = [[[NSImage alloc] initWithData:data] retain];
17246 [saveGameIV setImage:sdd.img];
17247 [saveGameIV setImageScaling:NSScaleToFit];
17250 NSString *path = @"SaveData/";
17252 NSArray *ary = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
17254 [SAV removeAllObjects];
17255 for(NSString *name in ary){
17257 NSArray *arr = [name componentsSeparatedByString:@".sav"];
17259 if([arr count] > 1){
17260 [SAV addObject:name];
17264 [self willChangeValueForKey:@"saveGameListMA"];
17265 [saveGameListMA removeAllObjects];
17266 [self didChangeValueForKey:@"saveGameListMA"];
17268 for(int i = 0;i < [SAV count];i++){
17270 NSMutableDictionary* dict = [NSMutableDictionary new];
17271 [dict setValue:[NSString stringWithFormat:@"%@", SAV[i]] forKey:@"name"];
17273 [self willChangeValueForKey:@"saveGameListMA"];
17274 [saveGameListMA addObject:dict];
17275 [self didChangeValueForKey:@"saveGameListMA"];
17279 [saveGameListAC setSelectionIndex:9999];
17283 -(void)loadGameDataDat{
17293 NSString *directoryPath;
17294 directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
17295 [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
17298 NSString *path = @"SaveData/";
17299 path = [path stringByAppendingString:SAV[SDLrow]];
17301 NSData *data = [[NSData alloc] initWithContentsOfFile:path];
17303 MFselectedRow = sdd2[datRow].MFselectedRow;
17304 MF[MFselectedRow+1].fileName = sdd2[datRow].mapfileName;
17306 storyNumb = sdd2[datRow].storyNumb;
17307 scenarioNumb = sdd2[datRow].scenarioNumb;
17309 SC[storyNumb].name = sdd2[datRow].levelName;
17310 SC[storyNumb].nameMAP[scenarioNumb] = sdd2[datRow].scenarioName;
17312 posX = sdd2[datRow].posX;
17313 posX = sdd2[datRow].posY;
17315 chipHeight = sdd2[datRow].chipHeight;
17316 chipWidth = sdd2[datRow].chipWidth;
17317 eSlctX = sdd2[datRow].eSlctX;
17318 eSlctY = sdd2[datRow].eSlctY;
17320 registerNum = sdd2[datRow].registerNum;
17321 registerNumB = sdd2[datRow].registerNumB;
17323 esSceneProc = sdd2[datRow].esSceneProc;
17325 endGameCondition = sdd2[datRow].endGameCondition;
17326 initMapFlag = sdd2[datRow].initMapFlag;
17327 TeamCountFlag = sdd2[datRow].TeamCountFlag;
17328 initStatusFlag = sdd2[datRow].initStatusFlag;
17329 battleBegin = sdd2[datRow].battleBegin;
17330 startES = sdd2[datRow].startES;
17332 cpuAImodeflag = sdd2[datRow].cpuAImodeflag;
17333 cpuTurnEndFlag = sdd2[datRow].cpuTurnEndFlag;
17334 cpuModeMOVEflag = sdd2[datRow].cpuModeMOVEflag;
17335 cpuModeATTACKflag = sdd2[datRow].cpuModeATTACKflag;
17336 waitSwtichFlag = sdd2[datRow].waitSwtichFlag;
17337 battleReadyUpFlag = sdd2[datRow].battleReadyUpFlag;
17338 setBattleModeFlag = sdd2[datRow].setBattleModeFlag;
17340 wtRdy = sdd2[datRow].wtRdy;
17341 wtRdy2 = sdd2[datRow].wtRdy2;
17342 wtRdy3 = sdd2[datRow].wtRdy3;
17344 wtMovedFlag = sdd2[datRow].wtMovedFlag;
17345 wtAttackedFlag = sdd2[datRow].wtAttackedFlag;
17346 unitMoveEndFlag = sdd2[datRow].unitMoveEndFlag;
17347 battleSetUp = sdd2[datRow].battleSetUp;
17348 pushStanbyFlag = sdd2[datRow].pushStanbyFlag;
17349 battleEndFlag = sdd2[datRow].battleEndFlag;
17350 wtUnitNum = sdd2[datRow].wtUnitNum;
17351 messageDialog = sdd2[datRow].messageDialog;
17354 for(int i = 0;i < 1002;i++){
17355 for(int j = 0;j < 1002;j++){
17356 chipNum[i][j] = sdd2[datRow].chipNum[i][j];
17360 for(int i = 0;i < 1002;i++){
17361 for(int j = 0;j < 1002;j++){
17362 buildNum[i][j] = sdd2[datRow].buildNum[i][j];
17366 for(int i = 0;i < 1002;i++){
17367 for(int j = 0;j < 1002;j++){
17368 unitNum[i][j] = sdd2[datRow].unitNum[i][j];
17372 for(int i = 0;i < 1002;i++){
17373 for(int j = 0;j < 1002;j++){
17374 loadNum[i][j] = sdd2[datRow].loadNum[i][j];
17378 for(int i = 0;i < 1002;i++){
17379 for(int j = 0;j < 1002;j++){
17380 buildTeam[i][j] = sdd2[datRow].buildTeam[i][j];
17384 for(int i = 0;i < 1002;i++){
17385 for(int j = 0;j < 1002;j++){
17386 unitTeam[i][j] = sdd2[datRow].unitTeam[i][j];
17391 P[0] = sdd2[datRow].P[0];
17392 P[1] = sdd2[datRow].P[1];
17393 P[2] = sdd2[datRow].P[2];
17395 for(int i = 0;i < 9999;i++)
17396 Suicchi[i] = sdd2[datRow].Suicchi[i];
17398 sdd.HensuuNum = HensuuNum;
17399 for(int i = 0;i < 65000;i++)
17400 Hensuu[i] = [sdd2[datRow].Hensuu[i] retain];
17401 for(int i = 0;i < 65000;i++)
17402 HensuuName[i] = [sdd2[datRow].HensuuName[i] retain];
17404 MF[MFselectedRow+1].MS = sdd2[datRow].MS;
17405 MF[MFselectedRow+1].MS.D = sdd2[datRow].MS.D;
17412 Uselected = sdd.Uselected;
17413 unitBreak = sdd.unitBreak;
17414 Utarget = sdd.Utarget;
17418 //NSLog(@"%d", MF[MFselectedRow+1].MS.playerSet1);
17421 -(void)saveGameDataDat{
17425 sdd.name = [[saveGameTF stringValue] retain];
17427 sdd.MFselectedRow = MFselectedRow;
17428 sdd.storyNumb = storyNumb;
17429 sdd.scenarioNumb = scenarioNumb;
17431 sdd.mapfileName = [MF[MFselectedRow+1].fileName retain];
17432 sdd.levelName = [SC[storyNumb].name retain];
17433 sdd.scenarioName = [SC[storyNumb].nameMAP[scenarioNumb] retain];
17438 sdd.chipHeight = chipHeight;
17439 sdd.chipWidth = chipWidth;
17440 sdd.eSlctX = eSlctX;
17441 sdd.eSlctY = eSlctY;
17443 sdd.registerNum = registerNum;
17444 sdd.registerNumB = registerNumB;
17446 sdd.esSceneProc = esSceneProc;
17448 sdd.endGameCondition = endGameCondition;
17449 sdd.initMapFlag = initMapFlag;
17450 sdd.TeamCountFlag = TeamCountFlag;
17451 sdd.initStatusFlag = initStatusFlag;
17452 sdd.battleBegin = battleBegin;
17453 sdd.startES = startES;
17455 sdd.cpuModeMOVEflag = cpuModeMOVEflag;
17456 sdd.cpuModeATTACKflag = cpuModeATTACKflag;
17458 sdd.cpuAImodeflag = cpuAImodeflag;
17459 sdd.cpuTurnEndFlag = cpuTurnEndFlag;
17460 sdd.waitSwtichFlag = waitSwtichFlag;
17461 sdd.battleReadyUpFlag = battleReadyUpFlag;
17462 sdd.setBattleModeFlag = setBattleModeFlag;
17466 sdd.wtRdy2 = wtRdy2;
17467 sdd.wtRdy3 = wtRdy3;
17470 sdd.wtMovedFlag = wtMovedFlag;
17471 sdd.wtAttackedFlag = wtAttackedFlag;
17472 sdd.unitMoveEndFlag = unitMoveEndFlag;
17473 sdd.battleSetUp = battleSetUp;
17474 sdd.pushStanbyFlag = pushStanbyFlag;
17475 sdd.battleEndFlag = battleEndFlag;
17476 sdd.wtUnitNum = wtUnitNum;
17477 sdd.messageDialog = messageDialog;
17480 for(int i = 0;i < 1002;i++){
17481 for(int j = 0;j < 1002;j++){
17482 sdd.chipNum[i][j] = chipNum[i][j];
17486 for(int i = 0;i < 1002;i++){
17487 for(int j = 0;j < 1002;j++){
17488 sdd.buildNum[i][j] = buildNum[i][j];
17492 for(int i = 0;i < 1002;i++){
17493 for(int j = 0;j < 1002;j++){
17494 sdd.unitNum[i][j] = unitNum[i][j];
17498 for(int i = 0;i < 1002;i++){
17499 for(int j = 0;j < 1002;j++){
17500 sdd.loadNum[i][j] = loadNum[i][j];
17504 for(int i = 0;i < 1002;i++){
17505 for(int j = 0;j < 1002;j++){
17506 sdd.buildTeam[i][j] = buildTeam[i][j];
17510 for(int i = 0;i < 1002;i++){
17511 for(int j = 0;j < 1002;j++){
17512 sdd.unitTeam[i][j] = unitTeam[i][j];
17519 while(U && r < registerNum){
17520 sdd.dU[r].CPU = U->CPU;
17521 sdd.dU[r].number = U->number;
17522 sdd.dU[r].team = U->team;
17523 sdd.dU[r].chipNumber = U->chipNumber;
17524 sdd.dU[r].chipNumberL = U->chipNumberL;
17526 sdd.dU[r].x = U->x;
17527 sdd.dU[r].y = U->y;
17528 sdd.dU[r].z = U->z;
17530 sdd.dU[r].ix = U->ix;
17531 sdd.dU[r].iy = U->iy;
17532 sdd.dU[r].iz = U->iz;
17534 sdd.dU[r].dead = U->dead;
17536 sdd.dU[r].loadChipFlag = U->loadChipFlag;
17538 sdd.dU[r].unControlable = U->unControlable;
17539 sdd.dU[r].joinArmyFromNext = U->joinArmyFromNext;
17540 sdd.dU[r].persuasion = U->persuasion;
17542 sdd.dU[r].targType1L = U->targType1L;
17543 sdd.dU[r].targType2L = U->targType2L;
17544 sdd.dU[r].targType1D = U->targType1D;
17545 sdd.dU[r].targType2D = U->targType2D;
17547 sdd.dU[r].army = U->army;
17548 sdd.dU[r].img = [U->img retain];
17550 sdd.dU[r].C.chipNumb = U->C.chipNumb;
17551 sdd.dU[r].C.name = [U->C.name retain];
17552 sdd.dU[r].C.nameNick = [U->C.nameNick retain];
17553 sdd.dU[r].C.nameClass = [U->C.nameClass retain];
17554 sdd.dU[r].C.nameID = [U->C.nameID retain];
17556 sdd.dU[r].C.R_C = U->C.R_C;
17557 sdd.dU[r].C.S_C = U->C.S_C;
17565 while(B && r < registerNumB){
17566 sdd.dB[r].number = B->number;
17567 sdd.dB[r].team = B->team;
17568 sdd.dB[r].chipNumber = B->chipNumber;
17569 sdd.dB[r].makeLv = B->makeLv;
17571 sdd.dB[r].x = B->x;
17572 sdd.dB[r].y = B->y;
17573 sdd.dB[r].z = B->z;
17575 sdd.dB[r].dead = B->dead;
17577 sdd.dB[r].img = [B->img retain];
17578 sdd.dB[r].C.chipNumb = B->C.chipNumb;
17579 sdd.dB[r].C.name = [B->C.name retain];
17580 sdd.dB[r].C.nameID = [B->C.nameID retain];
17581 sdd.dB[r].C.S_C = B->C.S_C;
17592 for(int i = 0;i < 9999;i++)
17593 sdd.Suicchi[i] = Suicchi[i];
17595 sdd.HensuuNum = HensuuNum;
17596 for(int i = 0;i < 65000;i++)
17597 sdd.Hensuu[i] = [Hensuu[i] retain];
17598 for(int i = 0;i < 65000;i++)
17599 sdd.HensuuName[i] = [HensuuName[i] retain];
17601 MAPSCRIPT MS = MF[MFselectedRow+1].MS;
17614 -(NSData *)sddToNSData:(NSString *) path{
17617 NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject:sdd];
17619 [archivedData writeToFile:path atomically:YES];
17621 return archivedData;
17627 -(IBAction)saveGameCancel:(id)sender{
17629 [saveGamePanel close];
17639 @implementation FieldSceneEF
17646 - (id)initWithFrame:(NSRect)frame
17648 self = [super initWithFrame:frame];
17650 // Initialization code here.
17652 scheduledTimerWithTimeInterval:0.015
17654 selector:@selector(EventLoopBV:)
17663 -(void)scrollWheel:(NSEvent *)theEvent{
17669 -(void)EventLoopBV:(NSTimer*)timer{
17671 [battleView setNeedsDisplay:YES];
17673 static int aniFrame = 0;
17675 if(animationFlag3){
17681 if(!animationFlag1 && !animationFlag2){
17692 U->C.A = attackCR2;
17694 static bool pussyMikoto = false;
17698 ani = U->C.A->AN.ANI;
17701 for (int i = 0; i < aniFrameCnt;i++) {
17706 [ani->snd setCurrentTime:0];
17708 ani->snd.loops = NO;
17711 pussyMikoto = true;
17715 U->C.A->AN.ANI = ani;
17718 if(aniFrame < U->C.A->AN.frame){
17724 pussyMikoto = false;
17725 animationFlag3 = true;
17733 [self setNeedsDisplay:YES];
17738 -(void)DrawImage:(NSImage*)image x:(float)x y:(float)y a:(float)a{
17740 frRect.size.height = image.size.height;
17741 frRect.size.width = image.size.width;
17743 frRect.origin.x = 0;
17744 frRect.origin.y = 0;
17747 drRect.origin.x = x;
17748 drRect.origin.y = y;
17749 drRect.size.height = image.size.height;
17750 drRect.size.width = image.size.width;
17752 [image drawInRect:drRect fromRect:frRect operation:NSCompositeSourceOver fraction:a respectFlipped:YES hints:nil];
17756 - (void)drawRect:(NSRect)dirtyRect
17758 // Drawing code here.
17759 if(animationFlag3) return;
17764 if(animationFlag1 || animationFlag2){
17770 U->C.A = attackCR2;
17772 ani = U->C.A->AN.ANI;
17777 for (int i = 0; i < aniFrameCnt;i++) {
17785 [self DrawImage:ani->img x:ani->x + ani->ax y:ani->y + ani->ay a:1.0f];