OSDN Git Service

7741e3193ae3923b8d882838f504225b9bd06434
[awarsiii/AwarsIV.git] / Awars III / FieldScene.m
1 //
2 //  FieldScene.m
3 //  Awars III
4 //
5 //  Created by Killery on 2013/02/22.
6 //  Copyright (c) 2013年 Killery. All rights reserved.
7 //
8
9 #import "FieldScene.h"
10
11 @implementation FieldScene
12
13 -(void)awakeFromNib{
14
15     [CAttackListTV setTarget:self];
16     [CAttackListTV setDoubleAction:@selector(doubleClickCAL:)];
17     [CAttackListTV setTarget:self];
18     [CAttackListTV setAction:@selector(clickCAL:)];
19     
20     [CResearchListTV setTarget:self];
21     [CResearchListTV setDoubleAction:@selector(doubleClickCRL:)];
22     [CResearchListTV setTarget:self];
23     [CResearchListTV setAction:@selector(clickCRL:)];
24     
25     [BCreateListTV setTarget:self];
26     [BCreateListTV setDoubleAction:@selector(doubleClickBCL:)];
27     [BCreateListTV setTarget:self];
28     [BCreateListTV setAction:@selector(clickBCL:)];
29     
30     [CSummonListTV setTarget:self];
31     [CSummonListTV setDoubleAction:@selector(doubleClickCSL:)];
32     [CSummonListTV setTarget:self];
33     [CSummonListTV setAction:@selector(clickCSL:)];
34     
35     [loadFileOutputListTV setTarget:self];
36     [loadFileOutputListTV setAction:@selector(clickLFOL:)];
37     
38     [saveGameListTV setTarget:self];
39     [saveGameListTV setAction:@selector(clickSGL:)];
40     
41     [STequipListTV setTarget:self];
42     [STequipListTV setAction:@selector(clickSTE:)];
43     
44     CAttackListMA = [NSMutableArray new];
45     CResearchListMA = [NSMutableArray new];
46     BCreateListMA = [NSMutableArray new];
47     CSummonListMA = [NSMutableArray new];
48     saveFileInputListMA = [NSMutableArray new];
49     loadFileOutputListMA = [NSMutableArray new];
50     saveGameListMA = [NSMutableArray new];
51     
52     STequipListMA = [NSMutableArray new];
53     STskillListMA = [NSMutableArray new];
54     STjoinListMA = [NSMutableArray new];
55     
56     SAV = [NSMutableArray new];
57     
58     [IVimage setHidden:YES];
59     [TFname setHidden:YES];
60     [TFmessage setHidden:YES];
61     [BXname setHidden:YES];
62     [BXmessage setHidden:YES];
63     [IVimage setEnabled:NO];
64     [TFname setEnabled:NO];
65     [TFmessage setEnabled:NO];
66     
67 }
68
69 -(id)init{
70
71     if(self){
72         time  = [NSTimer
73                  scheduledTimerWithTimeInterval:1.0/30
74                  target:self
75                  selector:@selector(EventLoopFS:)
76                  userInfo:nil
77                  repeats:YES
78                  ];
79         
80         fieldScene = self;
81         fieldSceneSelfFlag = true;
82         openingAVP = NULL;
83         
84         P[0].name = [@"青軍" retain];
85         P[0].type = 0;
86         P[0].resource = 500;
87         P[0].food = 500;
88         P[0].money = 500;
89         
90         P[1].name = [@"赤軍" retain];
91         P[1].type = 0;
92         P[1].resource = 500;
93         P[1].food = 500;
94         P[1].money = 500;
95         
96         P[2].name = [@"黄軍" retain];
97         P[2].type = 0;
98         P[2].resource = 500;
99         P[2].food = 500;
100         P[2].money = 500;
101         
102         eventTime = 0;
103         
104         
105     }
106     
107
108     return self;
109 }
110
111 -(void)writeInt:(FILE*)fp val:(int)val{
112     int counter;
113     
114     for(counter = INT_MAX;counter > 0;counter>>=8){
115         unsigned char nowData = val&0xFF;
116         val >>= 8;
117         fwrite(&nowData, sizeof(unsigned char), 1, fp);
118     }
119 }
120
121 -(void)writeNSString:(FILE*)fp str:(NSString*)str{
122     int length = (int)[str length];
123     [self writeInt:fp val:length];
124     fwrite([str UTF8String], sizeof(str), length, fp);
125 }
126
127 -(void)writeNSImage:(FILE*)fp str:(NSImage*)img adCnt:(int*)adCnt adFix:(int*)adFix{
128     FILE *fpx;
129     
130     NSString *directoryPath;
131     
132     directoryPath = [[NSBundle mainBundle] bundlePath];
133     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
134     
135     NSString* Cpath = @"Contents/Resources/";
136     [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
137     
138     if(1){
139         NSData *imgData = [img TIFFRepresentation];
140         NSBitmapImageRep *brep = [NSBitmapImageRep imageRepWithData:imgData];
141         imgData = [brep representationUsingType:NSPNGFileType properties:nil];
142         [imgData writeToFile:@INSTANT_IMG atomically:YES];
143         
144         fpx = fopen(INSTANT_IMG, "rb");
145         [self fcopy:fpx wfp:fp adCnt:adCnt adFix:adFix];
146         fclose(fpx);
147     }
148
149     routeCnt++;
150 }
151
152
153 -(int)fcopy:(FILE *)rfp wfp:(FILE *)wfp adCnt:(int*)adCnt adFix:(int*)adFix{
154     
155     unsigned char in_buf[1024], out_buf[1024];
156     int rinf;
157     
158     *adCnt = 0;
159     *adFix = 0;
160     
161     fpos_t fpt = 0;
162     while (!feof(rfp)) {
163         fgetpos(wfp, &fpt);
164         rinf = (int)fread((void*)in_buf, 1, 1024, rfp);
165         if(rinf < 0){
166             return (-1);
167         }
168         memcpy((void*)out_buf, (void*)in_buf, 1024);
169         rinf = (int)fwrite((void*)out_buf, 1, rinf, wfp);
170         if(rinf < 0){
171             return (-1);
172         }
173         (*adCnt)++;
174         *adFix = rinf;
175     }
176     
177     fpt -= ((*adCnt)-1)*1024;
178     fsetpos(wfp, &fpt);
179     [self writeInt:wfp val:*adCnt];
180     [self writeInt:wfp val:*adFix];
181     
182     fpt = 0;
183     fsetpos(rfp, &fpt);
184     while (!feof(rfp)) {
185         rinf = (int)fread((void*)in_buf, 1, 1024, rfp);
186         if(rinf < 0){
187             return (-1);
188         }
189         memcpy((void*)out_buf, (void*)in_buf, 1024);
190         rinf = (int)fwrite((void*)out_buf, 1, rinf, wfp);
191         if(rinf < 0){
192             return (-1);
193         }
194     }
195     
196     return(0);
197 }
198
199 -(void)writeMapScript:(FILE*)fp{
200     
201     [self writeInt:fp val:(int)sdd.MS.EGClight.endType1];
202     [self writeInt:fp val:(int)sdd.MS.EGClight.endType2];
203     
204     for(int i = 0;i < 64;i++)
205         [self writeNSString:fp str:sdd.MS.EGClight.etValue1[i]];
206     for(int i = 0;i < 64;i++)
207         [self writeNSString:fp str:sdd.MS.EGClight.etValue2[i]];
208     
209     [self writeInt:fp val:(int)sdd.MS.EGCdark.endType1];
210     [self writeInt:fp val:(int)sdd.MS.EGCdark.endType2];
211     
212     for(int i = 0;i < 64;i++)
213         [self writeNSString:fp str:sdd.MS.EGCdark.etValue1[i]];
214     for(int i = 0;i < 64;i++)
215         [self writeNSString:fp str:sdd.MS.EGCdark.etValue2[i]];
216     
217     
218     [self writeInt:fp val:(int)sdd.MS.playerSet1];
219     [self writeInt:fp val:(int)sdd.MS.playerSet2];
220     [self writeInt:fp val:(int)sdd.MS.battleSetMode];
221     [self writeInt:fp val:(int)sdd.MS.employAllowedFlag];
222     [self writeInt:fp val:(int)sdd.MS.buildAllowedFlag];
223     [self writeInt:fp val:(int)sdd.MS.summonAllowedFlag];
224     
225     [self writeInt:fp val:(int)sdd.MS.scenarioSetMode];
226     [self writeInt:fp val:(int)sdd.MS.scenarioNumbCrnt];
227     [self writeInt:fp val:(int)sdd.MS.scenarioNumbNext];
228
229     for(int i = 0;i < 4096;i++)
230         [self writeInt:fp val:sdd.MS.guildListRegist[i]];
231     [self writeInt:fp val:(int)sdd.MS.guildListRegistNum11];
232     [self writeInt:fp val:(int)sdd.MS.guildListRegistNum12];
233     
234     for(int i = 0;i < 4096;i++)
235         [self writeInt:fp val:sdd.MS.guildListRegist2[i]];
236     [self writeInt:fp val:(int)sdd.MS.guildListRegistNum21];
237     [self writeInt:fp val:(int)sdd.MS.guildListRegistNum22];
238     
239     
240     sdd.MS.SCRPTnameCnt = (int)[sdd.MS.SCRPTname count];
241     
242     [self writeInt:fp val:(int)sdd.MS.SCRPTnameCnt];
243     for(int i = 0;i < sdd.MS.SCRPTnameCnt;i++)
244         [self writeNSString:fp str:sdd.MS.SCRPTname[i]];
245     
246     MAPSCRIPTD *SMSDtop = sdd.MS.D;
247     
248     sdd.MS.Dcnt = 0;
249     while (sdd.MS.D) {
250         sdd.MS.Dcnt++;
251         sdd.MS.D = sdd.MS.D->next;
252     }sdd.MS.D = SMSDtop;
253     [self writeInt:fp val:(int)sdd.MS.Dcnt];
254     
255     for (int i = 0;i < sdd.MS.Dcnt;i++) {
256         
257         sdd.MS.D->SCRPTcnt = (int)[sdd.MS.D->SCRPT count];
258         [self writeInt:fp val:(int)sdd.MS.D->SCRPTcnt];
259         for(int j = 0;j < sdd.MS.D->SCRPTcnt;j++)
260             [self writeNSString:fp str:sdd.MS.D->SCRPT[j]];
261         
262         [self writeInt:fp val:(int)sdd.MS.D->endFlag];
263         [self writeInt:fp val:(int)sdd.MS.D->index];
264         [self writeInt:fp val:(int)sdd.MS.D->x];
265         [self writeInt:fp val:(int)sdd.MS.D->y];
266         [self writeInt:fp val:(int)sdd.MS.D->type];
267         [self writeInt:fp val:(int)sdd.MS.D->ET1];
268         [self writeInt:fp val:(int)sdd.MS.D->ET2];
269         [self writeInt:fp val:(int)sdd.MS.D->ET3];
270         [self writeInt:fp val:(int)sdd.MS.D->ET4];
271         [self writeInt:fp val:(int)sdd.MS.D->ETtype];
272         [self writeInt:fp val:(int)sdd.MS.D->onlyInitialDeley];
273         [self writeInt:fp val:(int)sdd.MS.D->initialDeleyedFlag];
274         [self writeInt:fp val:(int)sdd.MS.D->switch1f];
275         [self writeInt:fp val:(int)sdd.MS.D->switch2f];
276         
277         sdd.MS.D->switch1cnt = 0;
278         if(sdd.MS.D->switch1)
279         for(int j = 0;*(sdd.MS.D->switch1 + j) > 0;j++) {
280             sdd.MS.D->switch1cnt++;
281         }[self writeInt:fp val:(int)sdd.MS.D->switch1cnt];
282         
283         sdd.MS.D->switch2cnt = 0;
284         if(sdd.MS.D->switch2)
285         for(int j = 0;*(sdd.MS.D->switch2 + j) > 0;j++) {
286             sdd.MS.D->switch2cnt++;
287         }[self writeInt:fp val:(int)sdd.MS.D->switch2cnt];
288         
289         for(int j = 0;j < sdd.MS.D->switch1cnt;j++) {
290             [self writeInt:fp val:(int)*(sdd.MS.D->switch1 + j)];
291         }
292         
293         for(int j = 0;j < sdd.MS.D->switch2cnt;j++) {
294             [self writeInt:fp val:(int)*(sdd.MS.D->switch2 + j)];
295         }
296         
297         
298         MAPSCRIPT0 *SMSPtop = sdd.MS.D->P;
299         
300         sdd.MS.D->Pcnt = 0;
301         while (sdd.MS.D->P) {
302             sdd.MS.D->Pcnt++;
303             sdd.MS.D->P = sdd.MS.D->P->next;
304         }sdd.MS.D->P = SMSPtop;
305         [self writeInt:fp val:(int)sdd.MS.D->Pcnt];
306         
307         for (int j = 0;j < sdd.MS.D->Pcnt;j++) {
308             
309             [self writeInt:fp val:sdd.MS.D->P->endFlag];
310             [self writeInt:fp val:sdd.MS.D->P->succeessfulFlag];
311             [self writeInt:fp val:sdd.MS.D->P->indent];
312             [self writeInt:fp val:sdd.MS.D->P->val];
313             [self writeInt:fp val:sdd.MS.D->P->valCnt];
314             [self writeInt:fp val:sdd.MS.D->P->timerMin];
315             [self writeInt:fp val:sdd.MS.D->P->timerSec];
316             [self writeInt:fp val:sdd.MS.D->P->timerEntire];
317             
318             [self writeInt:fp val:sdd.MS.D->P->timerFlag];
319             [self writeInt:fp val:sdd.MS.D->P->timerVisible];
320             [self writeInt:fp val:sdd.MS.D->P->timerRun];
321             [self writeInt:fp val:sdd.MS.D->P->timerMode];
322             [self writeInt:fp val:sdd.MS.D->P->wait];
323             [self writeInt:fp val:sdd.MS.D->P->titleBack];
324             
325             [self writeNSString:fp str:sdd.MS.D->P->label];
326             [self writeNSString:fp str:sdd.MS.D->P->labelJump];
327             [self writeNSString:fp str:sdd.MS.D->P->memo];
328             
329             
330             
331             sdd.MS.D->P->switch1cnt = 0;
332             if(sdd.MS.D->P->switch1)
333             for(int k = 0;*(sdd.MS.D->P->switch1 + k) > 0;k++) {
334                 sdd.MS.D->P->switch1cnt++;
335             }[self writeInt:fp val:(int)sdd.MS.D->P->switch1cnt];
336             
337             sdd.MS.D->P->switch2cnt = 0;
338             if(sdd.MS.D->P->switch2)
339             for(int k = 0;*(sdd.MS.D->P->switch2 + k) > 0;k++) {
340                 sdd.MS.D->P->switch2cnt++;
341             }[self writeInt:fp val:(int)sdd.MS.D->P->switch2cnt];
342
343             for(int k = 0;k < sdd.MS.D->P->switch1cnt;k++) {
344                 [self writeInt:fp val:(int)*(sdd.MS.D->P->switch1 + k)];
345             }
346             
347             for(int k = 0;k < sdd.MS.D->P->switch2cnt;k++) {
348                 [self writeInt:fp val:(int)*(sdd.MS.D->P->switch2 + k)];
349             }
350             
351             [self writeMapScriptBGM:fp];
352             [self writeMapScriptSE:fp];
353             [self writeMapScriptSC:fp];
354             [self writeMapScriptGAOV:fp];
355             
356             [self writeInt:fp val:sdd.MS.D->P->type];
357             
358             if(sdd.MS.D->P->type == 0)
359             [self writeMapScript1:fp];
360             
361             if(sdd.MS.D->P->type == 1){
362             MAPSCRIPT2 *SMSP2top = sdd.MS.D->P->S2;
363             
364             sdd.MS.D->P->S2cnt = 0;
365             while (sdd.MS.D->P->S2) {
366                 sdd.MS.D->P->S2cnt++;
367                 sdd.MS.D->P->S2 = sdd.MS.D->P->S2->next;
368             }sdd.MS.D->P->S2 = SMSP2top;
369             [self writeInt:fp val:sdd.MS.D->P->S2cnt];
370             
371
372             for (int k = 0;k < sdd.MS.D->P->S2cnt;k++) {
373                 [self writeMapScript2:fp];
374                 sdd.MS.D->P->S2 = sdd.MS.D->P->S2->next;
375             }sdd.MS.D->P->S2 = SMSP2top;
376             }
377             
378             if(sdd.MS.D->P->type == 22){
379             MAPSCRIPT3 *SMSP3top = sdd.MS.D->P->S3;
380             
381             sdd.MS.D->P->S3cnt = 0;
382             while (sdd.MS.D->P->S3) {
383                 sdd.MS.D->P->S3cnt++;
384                 sdd.MS.D->P->S3 = sdd.MS.D->P->S3->next;
385             }sdd.MS.D->P->S3 = SMSP3top;
386             [self writeInt:fp val:sdd.MS.D->P->S3cnt];
387             
388            
389             for (int k = 0;k < sdd.MS.D->P->S3cnt;k++) {
390                 [self writeMapScript3:fp];
391                 sdd.MS.D->P->S3 = sdd.MS.D->P->S3->next;
392             }sdd.MS.D->P->S3 = SMSP3top;
393             }
394             
395             
396             if(sdd.MS.D->P->type == 6)
397                 [self writeMapScript4:fp];
398             
399             if(sdd.MS.D->P->type == 23){
400             MAPSCRIPT5 *SMSP5top = sdd.MS.D->P->S5;
401             
402             sdd.MS.D->P->S5cnt = 0;
403             while (sdd.MS.D->P->S5) {
404                 sdd.MS.D->P->S5cnt++;
405                 sdd.MS.D->P->S5 = sdd.MS.D->P->S5->next;
406             }sdd.MS.D->P->S5 = SMSP5top;
407             [self writeInt:fp val:sdd.MS.D->P->S5cnt];
408             
409             for (int k = 0;k < sdd.MS.D->P->S5cnt;k++) {
410                 [self writeMapScript5:fp];
411                 sdd.MS.D->P->S5 = sdd.MS.D->P->S5->next;
412             }sdd.MS.D->P->S5 = SMSP5top;
413             
414             }
415             
416             if(sdd.MS.D->P->type == 10)
417                 [self writeMapScript6:fp];
418             
419             if(sdd.MS.D->P->type == 15)
420                 [self writeMapScript7:fp];
421             
422             sdd.MS.D->P = sdd.MS.D->P->next;
423         }sdd.MS.D->P = SMSPtop;
424         
425         
426         sdd.MS.D = sdd.MS.D->next;
427     }sdd.MS.D = SMSDtop;
428
429 }
430
431 -(void)writeMapScript1:(FILE*)fp{
432     
433     if(!sdd.MS.D->P->S1.name)
434         sdd.MS.D->P->S1.name = [@"" retain];
435     if(!sdd.MS.D->P->S1.str)
436         sdd.MS.D->P->S1.str = [@"" retain];
437     if(!sdd.MS.D->P->S1.iName)
438         sdd.MS.D->P->S1.iName = [@"" retain];
439     if(!sdd.MS.D->P->S1.nameID)
440         sdd.MS.D->P->S1.nameID = [@"" retain];
441     
442     [self writeNSString:fp str:sdd.MS.D->P->S1.name];
443     [self writeNSString:fp str:sdd.MS.D->P->S1.str];
444     [self writeNSString:fp str:sdd.MS.D->P->S1.iName];
445     [self writeNSString:fp str:sdd.MS.D->P->S1.nameID];
446     
447     /*
448      NSString *name;
449      NSString *str;
450      //NSImage *img;
451      NSString *iName;
452      NSString *nameID;
453      */
454 }
455
456 -(void)writeMapScript2:(FILE*)fp{
457     
458     [self writeNSString:fp str:sdd.MS.D->P->S2->selection];
459     [self writeNSString:fp str:sdd.MS.D->P->S2->labelJump];
460     
461     /*
462      //struct _MAPSCRIPT2 *next;
463      
464      NSString *selection;
465      NSString *labelJump;
466      */
467 }
468
469 -(void)writeMapScript3:(FILE*)fp{
470     
471     [self writeInt:fp val:sdd.MS.D->P->S3->x];
472     [self writeInt:fp val:sdd.MS.D->P->S3->y];
473     [self writeInt:fp val:sdd.MS.D->P->S3->flag];
474     
475     [self writeInt:fp val:sdd.MS.D->P->S3->type];
476     [self writeInt:fp val:sdd.MS.D->P->S3->team];
477     
478     [self writeInt:fp val:sdd.MS.D->P->S3->unitNum];
479     [self writeInt:fp val:sdd.MS.D->P->S3->loadInt];
480     
481     /*
482      //struct _MAPSCRIPT3 *next;
483      
484      int x;
485      int y;
486      bool flag;
487      
488      int type;
489      int team;
490      
491      //UNITCHIP U;
492      int unitNum;
493      
494      int loadInt;
495      */
496 }
497
498 -(void)writeMapScript4:(FILE*)fp{
499     
500     [self writeInt:fp val:sdd.MS.D->P->S4.lagFixFlag];
501     [self writeNSString:fp str:sdd.MS.D->P->S4.COMPrabel];
502     [self writeNSString:fp str:sdd.MS.D->P->S4.FAILrabel];
503     
504     [self writeInt:fp val:sdd.MS.D->P->S4.suicchiFlag];
505     
506     sdd.MS.D->P->S4.suicchiCnt = 0;
507     if(sdd.MS.D->P->S4.suicchi)
508     for(int l = 0;*(sdd.MS.D->P->S4.suicchi + l) > 0;l++) {
509         sdd.MS.D->P->S4.suicchiCnt++;
510     }[self writeInt:fp val:(int)sdd.MS.D->P->S4.suicchiCnt];
511     
512     for(int l = 0;l < sdd.MS.D->P->S4.suicchiCnt;l++) {
513         [self writeInt:fp val:(int)*(sdd.MS.D->P->S4.suicchi + l)];
514     }
515     
516     [self writeInt:fp val:sdd.MS.D->P->S4.suicchiONOFF];
517     
518     
519     [self writeInt:fp val:sdd.MS.D->P->S4.hensuFlag];
520     [self writeInt:fp val:sdd.MS.D->P->S4.hensu1];
521     [self writeInt:fp val:sdd.MS.D->P->S4.teisuFlag];
522     [self writeInt:fp val:sdd.MS.D->P->S4.teisuValue];
523     [self writeInt:fp val:sdd.MS.D->P->S4.hensu2flag];
524     [self writeInt:fp val:sdd.MS.D->P->S4.hensu2];
525     [self writeInt:fp val:sdd.MS.D->P->S4.hensuType];
526     
527     [self writeInt:fp val:sdd.MS.D->P->S4.timerFlag];
528     [self writeInt:fp val:sdd.MS.D->P->S4.timerMin];
529     [self writeInt:fp val:sdd.MS.D->P->S4.timerSec];
530     [self writeInt:fp val:sdd.MS.D->P->S4.timerType];
531     
532     [self writeInt:fp val:sdd.MS.D->P->S4.unitNumFlag];
533     [self writeInt:fp val:sdd.MS.D->P->S4.team];
534     [self writeInt:fp val:sdd.MS.D->P->S4.unitNum];
535     [self writeInt:fp val:sdd.MS.D->P->S4.unitType];
536     [self writeInt:fp val:sdd.MS.D->P->S4.unitTypeFlag];
537     
538     
539     UNIT2 *subjTop = sdd.MS.D->P->S4.subj;
540     
541     sdd.MS.D->P->S4.subjCnt = 0;
542     while (sdd.MS.D->P->S4.subj) {
543         sdd.MS.D->P->S4.subjCnt++;
544         sdd.MS.D->P->S4.subj = sdd.MS.D->P->S4.subj->next;
545     }sdd.MS.D->P->S4.subj = subjTop;
546     [self writeInt:fp val:sdd.MS.D->P->S4.subjCnt];
547     
548     for (int k = 0;k < sdd.MS.D->P->S4.subjCnt;k++) {
549         [self writeMapScript4subj:fp];
550         sdd.MS.D->P->S4.subj = sdd.MS.D->P->S4.subj->next;
551     }sdd.MS.D->P->S4.subj = subjTop;
552     
553     
554     
555     
556     [self writeInt:fp val:sdd.MS.D->P->S4.placeFlag];
557     PLACEMENT *waypTop = sdd.MS.D->P->S4.wayp;
558     
559     sdd.MS.D->P->S4.waypCnt = 0;
560     while (sdd.MS.D->P->S4.wayp) {
561         sdd.MS.D->P->S4.waypCnt++;
562         sdd.MS.D->P->S4.wayp = sdd.MS.D->P->S4.wayp->next;
563     }sdd.MS.D->P->S4.wayp = waypTop;
564     [self writeInt:fp val:sdd.MS.D->P->S4.waypCnt];
565     
566     for (int k = 0;k < sdd.MS.D->P->S4.waypCnt;k++) {
567         [self writeMapScript4wayp:fp];
568         sdd.MS.D->P->S4.wayp = sdd.MS.D->P->S4.wayp->next;
569     }sdd.MS.D->P->S4.wayp = waypTop;
570     
571     [self writeInt:fp val:sdd.MS.D->P->S4.unitCMDflag];
572     [self writeInt:fp val:sdd.MS.D->P->S4.unitCMD];
573     
574     
575     [self writeInt:fp val:sdd.MS.D->P->S4.objeFlag];
576     UNIT2 *objeTop = sdd.MS.D->P->S4.obje;
577
578     sdd.MS.D->P->S4.objeCnt = 0;
579     while (sdd.MS.D->P->S4.obje) {
580         sdd.MS.D->P->S4.objeCnt++;
581         sdd.MS.D->P->S4.obje = sdd.MS.D->P->S4.obje->next;
582     }sdd.MS.D->P->S4.obje = objeTop;
583     [self writeInt:fp val:sdd.MS.D->P->S4.objeCnt];
584     
585     for (int k = 0;k < sdd.MS.D->P->S4.objeCnt;k++) {
586         [self writeMapScript4obje:fp];
587         sdd.MS.D->P->S4.obje = sdd.MS.D->P->S4.obje->next;
588     }sdd.MS.D->P->S4.obje = objeTop;
589     
590     [self writeInt:fp val:sdd.MS.D->P->S4.objeRange];
591     
592     
593     
594     [self writeInt:fp val:sdd.MS.D->P->S4.buildFlag];
595     BUILD2 *buildTop = sdd.MS.D->P->S4.build;
596     
597     sdd.MS.D->P->S4.buildCnt = 0;
598     while (sdd.MS.D->P->S4.build) {
599         sdd.MS.D->P->S4.buildCnt++;
600         sdd.MS.D->P->S4.build = sdd.MS.D->P->S4.build->next;
601     }sdd.MS.D->P->S4.build = buildTop;
602     [self writeInt:fp val:sdd.MS.D->P->S4.buildCnt];
603     
604     for (int k = 0;k < sdd.MS.D->P->S4.buildCnt;k++) {
605         [self writeMapScript4build:fp];
606         sdd.MS.D->P->S4.build = sdd.MS.D->P->S4.build->next;
607     }sdd.MS.D->P->S4.build = buildTop;
608     
609     
610 }
611
612 -(void)writeMapScript4subj:(FILE*)fp{
613     
614     [self writeInt:fp val:sdd.MS.D->P->S4.subj->team];
615     [self writeInt:fp val:sdd.MS.D->P->S4.subj->x];
616     [self writeInt:fp val:sdd.MS.D->P->S4.subj->y];
617     
618     /*
619      //struct _UNIT2 *next;
620      //UNITCHIP C;
621      
622      int team;
623      int x;
624      int y;
625      */
626 }
627
628 -(void)writeMapScript4wayp:(FILE*)fp{
629     
630     [self writeInt:fp val:sdd.MS.D->P->S4.wayp->type];
631     [self writeInt:fp val:sdd.MS.D->P->S4.wayp->x];
632     [self writeInt:fp val:sdd.MS.D->P->S4.wayp->y];
633     [self writeInt:fp val:sdd.MS.D->P->S4.wayp->z];
634     [self writeInt:fp val:sdd.MS.D->P->S4.wayp->x2];
635     [self writeInt:fp val:sdd.MS.D->P->S4.wayp->y2];
636     
637     /*
638      //struct _PLACEMENT *next;
639      
640      int type;
641      int x;
642      int y;
643      int z;
644      int x2;
645      int y2;
646      */
647 }
648
649 -(void)writeMapScript4obje:(FILE*)fp{
650     
651     [self writeInt:fp val:sdd.MS.D->P->S4.obje->team];
652     [self writeInt:fp val:sdd.MS.D->P->S4.obje->x];
653     [self writeInt:fp val:sdd.MS.D->P->S4.obje->y];
654     
655     /*
656      //struct _UNIT2 *next;
657      //UNITCHIP C;
658      
659      int team;
660      int x;
661      int y;
662      */
663 }
664
665 -(void)writeMapScript4build:(FILE*)fp{
666     
667     [self writeInt:fp val:sdd.MS.D->P->S4.build->team];
668     [self writeInt:fp val:sdd.MS.D->P->S4.build->x];
669     [self writeInt:fp val:sdd.MS.D->P->S4.build->y];
670     
671     /*
672      //struct _BUILD2 *next;
673      //struct _BUILDCHIP *C;
674      
675      int team;
676      int x;
677      int y;
678      */
679 }
680
681 -(void)writeMapScript5:(FILE*)fp{
682     
683     [self writeInt:fp val:sdd.MS.D->P->S5->x];
684     [self writeInt:fp val:sdd.MS.D->P->S5->y];
685     [self writeInt:fp val:sdd.MS.D->P->S5->type];
686     [self writeInt:fp val:sdd.MS.D->P->S5->team];
687     [self writeInt:fp val:sdd.MS.D->P->S5->unitNum];
688     [self writeInt:fp val:sdd.MS.D->P->S5->saveInt];
689     
690     /*
691      //struct _MAPSCRIPT5 *next;
692      
693      int x;
694      int y;
695      
696      int type;
697      int team;
698      
699      //UNITCHIP U;
700      int unitNum;
701      
702      int saveInt;
703      */
704 }
705
706
707 -(void)writeMapScript6:(FILE*)fp{
708     
709     [self writeInt:fp val:sdd.MS.D->P->S6.team];
710     
711     [self writeInt:fp val:sdd.MS.D->P->S6.RCsupply];
712     [self writeInt:fp val:sdd.MS.D->P->S6.RCfood];
713     [self writeInt:fp val:sdd.MS.D->P->S6.RCmoney];
714     
715     [self writeInt:fp val:sdd.MS.D->P->S6.RCsupplyAdd];
716     [self writeInt:fp val:sdd.MS.D->P->S6.RCfoodAdd];
717     [self writeInt:fp val:sdd.MS.D->P->S6.RCmoneyAdd];
718     
719     [self writeInt:fp val:sdd.MS.D->P->S6.RCsupplyValue];
720     [self writeInt:fp val:sdd.MS.D->P->S6.RCfoodValue];
721     [self writeInt:fp val:sdd.MS.D->P->S6.RCmoneyValue];
722     
723     [self writeInt:fp val:sdd.MS.D->P->S6.RCsupplySelect];
724     [self writeInt:fp val:sdd.MS.D->P->S6.RCfoodSelect];
725     [self writeInt:fp val:sdd.MS.D->P->S6.RCmoneySelect];
726     
727     [self writeInt:fp val:sdd.MS.D->P->S6.RCsupplyS];
728     [self writeInt:fp val:sdd.MS.D->P->S6.RCfoodS];
729     [self writeInt:fp val:sdd.MS.D->P->S6.RCmoneyS];
730     
731 }
732
733 -(void)writeMapScript7:(FILE*)fp{
734     
735     [self writeInt:fp val:sdd.MS.D->P->S7.type];
736     
737     [self writeInt:fp val:sdd.MS.D->P->S7.maxFlag];
738     [self writeInt:fp val:sdd.MS.D->P->S7.percentFlag];
739     [self writeInt:fp val:sdd.MS.D->P->S7.extendFlag];
740     
741     [self writeInt:fp val:sdd.MS.D->P->S7.fluctuate];
742     [self writeInt:fp val:sdd.MS.D->P->S7.valueType];
743     
744     [self writeNSString:fp str:sdd.MS.D->P->S7.value];
745     
746     [self writeInt:fp val:sdd.MS.D->P->S7.rdm];
747     
748     
749     [self writeInt:fp val:sdd.MS.D->P->S7.teamFlag];
750     [self writeInt:fp val:sdd.MS.D->P->S7.team];
751     
752     [self writeInt:fp val:sdd.MS.D->P->S7.unitFlag];
753     [self writeInt:fp val:sdd.MS.D->P->S7.valueFlag];
754     
755     MS7Atop = sdd.MS.D->P->S7.A;
756     while (sdd.MS.D->P->S7.A) {
757         sdd.MS.D->P->S7.S7Acnt++;
758         sdd.MS.D->P->S7.A = sdd.MS.D->P->S7.A->next;
759     }sdd.MS.D->P->S7.A = MS7Atop;
760     
761     MS7Btop = sdd.MS.D->P->S7.B;
762     while (sdd.MS.D->P->S7.B) {
763         sdd.MS.D->P->S7.S7Bcnt++;
764         sdd.MS.D->P->S7.B = sdd.MS.D->P->S7.B->next;
765     }sdd.MS.D->P->S7.B = MS7Btop;
766     
767     [self writeInt:fp val:sdd.MS.D->P->S7.S7Acnt];
768     [self writeInt:fp val:sdd.MS.D->P->S7.S7Bcnt];
769     
770     
771     MS7Atop = sdd.MS.D->P->S7.A;
772     for(int i = 0;i < sdd.MS.D->P->S7.S7Acnt;i++){
773         
774         [self writeInt:fp val:sdd.MS.D->P->S7.A->x];
775         [self writeInt:fp val:sdd.MS.D->P->S7.A->y];
776         [self writeInt:fp val:sdd.MS.D->P->S7.A->team];
777         [self writeInt:fp val:sdd.MS.D->P->S7.A->unitNum];
778         
779         sdd.MS.D->P->S7.A = sdd.MS.D->P->S7.A->next;
780     }sdd.MS.D->P->S7.A = MS7Atop;
781     
782     MS7Btop = sdd.MS.D->P->S7.B;
783     for(int i = 0;i < sdd.MS.D->P->S7.S7Bcnt;i++){
784         
785         [self writeInt:fp val:sdd.MS.D->P->S7.B->x];
786         [self writeInt:fp val:sdd.MS.D->P->S7.B->y];
787         [self writeInt:fp val:sdd.MS.D->P->S7.B->team];
788         [self writeInt:fp val:sdd.MS.D->P->S7.B->unitNum];
789         [self writeInt:fp val:sdd.MS.D->P->S7.B->saveInt];
790         
791         sdd.MS.D->P->S7.B = sdd.MS.D->P->S7.B->next;
792     }sdd.MS.D->P->S7.B = MS7Btop;
793     
794 }
795
796 -(void)writeMapScriptBGM:(FILE*)fp{
797
798     [self writeNSString:fp str:sdd.MS.D->P->BGM.name];
799     [self writeNSString:fp str:sdd.MS.D->P->BGM.fName];
800     
801     /*
802     NSString *name;
803     NSString *fName;
804     //NSSound *snd;
805      */
806 }
807
808 -(void)writeMapScriptSE:(FILE*)fp{
809     
810     [self writeNSString:fp str:sdd.MS.D->P->SE.name];
811     [self writeNSString:fp str:sdd.MS.D->P->SE.fName];
812     
813     /*
814      NSString *name;
815      NSString *fName;
816      //NSSound *snd;
817      */
818 }
819
820 -(void)writeMapScriptSC:(FILE*)fp{
821     
822     [self writeInt:fp val:sdd.MS.D->P->sc.scFlag];
823     [self writeInt:fp val:sdd.MS.D->P->sc.edcdFlag];
824     
825     /*
826      bool scFlag;
827      bool edcdFlag;
828      */
829 }
830
831 -(void)writeMapScriptGAOV:(FILE*)fp{
832     
833     [self writeNSString:fp str:sdd.MS.D->P->gaov.fNname];
834     [self writeInt:fp val:sdd.MS.D->P->gaov.gaovFlag];
835     [self writeInt:fp val:sdd.MS.D->P->gaov.edcdFlag];
836     
837     /*
838      NSString *fNname;
839      //NSImage *img;
840      bool gaovFlag;
841      bool edcdFlag;
842      */
843 }
844
845 -(int)readInt:(FILE*)fp{
846     int counter;
847     int result = 0;
848     int shiftLen = 0;
849     
850     for(counter= INT_MAX;counter > 0;counter >>= 8){
851         unsigned char nowData = 0;
852         fread(&nowData, sizeof(unsigned char), 1, fp);
853         result |= (int)nowData << shiftLen;
854         shiftLen += 8;
855     }
856     
857     return result;
858 }
859
860 -(NSString*)readNSString:(FILE*)fp strOut:(NSString*)strOut{
861     int length = [self readInt:fp];
862     char strOutcc[1024];
863     fread(strOutcc, sizeof(strOut), length, fp);
864     strOut = [[NSString stringWithUTF8String:strOutcc] retain];
865     
866     return strOut;
867 }
868
869 -(NSImage*)readNSImage:(FILE*)fp imgOut:(NSImage*)imgOut dcnt:(int)dcnt dfix:(int)dfix{
870     unsigned char idat[1024];
871     int size = 0;
872     
873     NSMutableData *binaryData = [NSMutableData dataWithCapacity:sizeof(idat)];
874     
875     fpos_t fpt = 0;
876     for(int i = 0;i < dcnt;i++){
877         size += fread(idat, 1, 1024, fp);
878         
879         if(dcnt-1 == i){
880             fpt += dfix;
881             fsetpos(fp, &fpt);
882         }
883         
884         fgetpos(fp, &fpt);
885         
886         NSMutableData* data = [NSMutableData dataWithBytes:idat length:sizeof(unsigned char)*1024];
887         [binaryData appendData:data];
888     }
889     
890     
891     imgOut = [[[NSImage alloc] initWithData:binaryData] retain];
892     
893     return imgOut;
894 }
895
896 -(void)readBiuldD:(FILE*)fp row:(int)r{
897     
898     sdd2[datRow].dB[r].number = (int)[self readInt:fp];
899     sdd2[datRow].dB[r].team = (int)[self readInt:fp];
900     sdd2[datRow].dB[r].chipNumber = (int)[self readInt:fp];
901     sdd2[datRow].dB[r].makeLv = (int)[self readInt:fp];
902     
903     sdd2[datRow].dB[r].x = (int)[self readInt:fp];
904     sdd2[datRow].dB[r].y = (int)[self readInt:fp];
905     sdd2[datRow].dB[r].z = (int)[self readInt:fp];
906     
907     sdd2[datRow].dB[r].dead = (int)[self readInt:fp];
908     /*
909     sdd2[datRow].dB[r].imgAdCnt = (int)[self readInt:fp];
910     sdd2[datRow].dB[r].imgAdFix = (int)[self readInt:fp];
911     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];
912     */
913     [self readBuildChipD:fp val:&sdd2[datRow].dB[r].C];
914 }
915
916 -(void)readBuildChipD:(FILE*)fp val:(BUILDCHIPD*)val{
917     
918     val->chipNumb = (int)[self readInt:fp];
919     val->name = [[self readNSString:fp strOut:val->name] retain];
920     val->nameID = [[self readNSString:fp strOut:val->nameID] retain];
921     
922     fread(&val->S_C, sizeof(BSTATUS), 1, fp);
923     
924     //NSLog(@"awww man...");
925 }
926
927
928
929 -(void)readUnitD:(FILE*)fp row:(int)r{
930     
931     sdd2[datRow].dU[r].CPU = (int)[self readInt:fp];
932     sdd2[datRow].dU[r].number = (int)[self readInt:fp];
933     sdd2[datRow].dU[r].team = (int)[self readInt:fp];
934     sdd2[datRow].dU[r].chipNumber = (int)[self readInt:fp];
935     sdd2[datRow].dU[r].chipNumberL = (int)[self readInt:fp];
936     
937     sdd2[datRow].dU[r].x = (int)[self readInt:fp];
938     sdd2[datRow].dU[r].y = (int)[self readInt:fp];
939     sdd2[datRow].dU[r].z = (int)[self readInt:fp];
940     
941     sdd2[datRow].dU[r].ix = (int)[self readInt:fp];
942     sdd2[datRow].dU[r].iy = (int)[self readInt:fp];
943     sdd2[datRow].dU[r].iz = (int)[self readInt:fp];
944     
945     sdd2[datRow].dU[r].dead = (int)[self readInt:fp];
946     
947     sdd2[datRow].dU[r].loadChipFlag = (int)[self readInt:fp];
948     
949     sdd2[datRow].dU[r].unControlable = (int)[self readInt:fp];
950     sdd2[datRow].dU[r].joinArmyFromNext = (int)[self readInt:fp];
951     sdd2[datRow].dU[r].persuasion = (int)[self readInt:fp];
952     
953     sdd2[datRow].dU[r].targType1L = (int)[self readInt:fp];
954     sdd2[datRow].dU[r].targType2L = (int)[self readInt:fp];
955     sdd2[datRow].dU[r].targType1D = (int)[self readInt:fp];
956     sdd2[datRow].dU[r].targType2D = (int)[self readInt:fp];
957     
958     sdd2[datRow].dU[r].army = [[self readNSString:fp strOut:sdd2[datRow].dU[r].army] retain];
959     
960     /*
961     sdd2[datRow].dU[r].imgAdCnt = (int)[self readInt:fp];
962     sdd2[datRow].dU[r].imgAdFix = (int)[self readInt:fp];
963     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];
964     */
965     
966     [self readUnitChipD:fp val:&sdd2[datRow].dU[r].C];
967     [self readUnitChipLD:fp val:&sdd2[datRow].dU[r].CL];
968     
969 }
970
971 -(void)readUnitChipD:(FILE*)fp val:(UNITCHIPD*)val{
972     
973     val->chipNumb = (int)[self readInt:fp];
974     val->name = [[self readNSString:fp strOut:val->name] retain];
975     val->nameNick = [[self readNSString:fp strOut:val->nameNick] retain];
976     val->nameClass = [[self readNSString:fp strOut:val->nameClass] retain];
977     val->nameID = [[self readNSString:fp strOut:val->nameID] retain];
978     
979     
980     
981     fread(&val->R_C, sizeof(RESIST), 1, fp);
982     fread(&val->S_C, sizeof(STATUS), 1, fp);
983     
984     //NSLog(@"creepy jude...");
985 }
986
987 -(void)readUnitChipLD:(FILE*)fp val:(LOADCHIPD*)val{
988     
989     val->chipNumb = (int)[self readInt:fp];
990     val->name = [[self readNSString:fp strOut:val->name] retain];
991     val->nameID = [[self readNSString:fp strOut:val->nameID] retain];
992     
993     
994     
995     fread(&val->R_C, sizeof(RESIST), 1, fp);
996     fread(&val->S_C, sizeof(STATUS2), 1, fp);
997     
998     //NSLog(@"creepy jude...2");
999 }
1000
1001 -(void)readMapScript:(FILE*)fp{
1002     
1003     sdd2[datRow].MS.EGClight.endType1 = (int)[self readInt:fp];
1004     sdd2[datRow].MS.EGClight.endType2 = (int)[self readInt:fp];
1005     for(int i = 0;i < 64;i++)
1006         sdd2[datRow].MS.EGClight.etValue1[i] = [[self readNSString:fp strOut:sdd2[datRow].MS.EGClight.etValue1[i]] retain];
1007     for(int i = 0;i < 64;i++)
1008         sdd2[datRow].MS.EGClight.etValue2[i] = [[self readNSString:fp strOut:sdd2[datRow].MS.EGClight.etValue2[i]] retain];
1009     
1010     sdd2[datRow].MS.EGCdark.endType1 = (int)[self readInt:fp];
1011     sdd2[datRow].MS.EGCdark.endType2 = (int)[self readInt:fp];
1012     for(int i = 0;i < 64;i++)
1013         sdd2[datRow].MS.EGCdark.etValue1[i] = [[self readNSString:fp strOut:sdd2[datRow].MS.EGCdark.etValue1[i]] retain];
1014     for(int i = 0;i < 64;i++)
1015         sdd2[datRow].MS.EGCdark.etValue2[i] = [[self readNSString:fp strOut:sdd2[datRow].MS.EGCdark.etValue2[i]] retain];
1016     
1017     sdd2[datRow].MS.playerSet1 = (int)[self readInt:fp];
1018     sdd2[datRow].MS.playerSet2 = (int)[self readInt:fp];
1019     sdd2[datRow].MS.battleSetMode = (int)[self readInt:fp];
1020     sdd2[datRow].MS.employAllowedFlag = (int)[self readInt:fp];
1021     sdd2[datRow].MS.buildAllowedFlag = (int)[self readInt:fp];
1022     sdd2[datRow].MS.summonAllowedFlag = (int)[self readInt:fp];
1023     
1024     sdd2[datRow].MS.scenarioSetMode = (int)[self readInt:fp];
1025     sdd2[datRow].MS.scenarioNumbCrnt = (int)[self readInt:fp];
1026     sdd2[datRow].MS.scenarioNumbNext = (int)[self readInt:fp];
1027     
1028     for(int i = 0;i < 4096;i++)
1029         sdd2[datRow].MS.guildListRegist[i] = (int)[self readInt:fp];
1030     sdd2[datRow].MS.guildListRegistNum11 = (int)[self readInt:fp];
1031     sdd2[datRow].MS.guildListRegistNum12 = (int)[self readInt:fp];
1032     
1033     for(int i = 0;i < 4096;i++)
1034         sdd2[datRow].MS.guildListRegist2[i] = (int)[self readInt:fp];
1035     sdd2[datRow].MS.guildListRegistNum21 = (int)[self readInt:fp];
1036     sdd2[datRow].MS.guildListRegistNum22 = (int)[self readInt:fp];
1037     
1038     
1039     sdd2[datRow].MS.SCRPTnameCnt = (int)[self readInt:fp];
1040     sdd2[datRow].MS.SCRPTname = [NSMutableArray new];
1041     for(int j = 0;j < sdd2[datRow].MS.SCRPTnameCnt;j++)
1042         [sdd2[datRow].MS.SCRPTname addObject:@""];
1043     for(int i = 0;i < sdd2[datRow].MS.SCRPTnameCnt;i++)
1044         sdd2[datRow].MS.SCRPTname[i] = [[self readNSString:fp strOut:sdd2[datRow].MS.SCRPTname[i]] retain];
1045     
1046     
1047     MAPSCRIPTD *SMSDtop = sdd2[datRow].MS.D;
1048     
1049     sdd2[datRow].MS.Dcnt = (int)[self readInt:fp];
1050     
1051     for (int i = 0;i < sdd2[datRow].MS.Dcnt;i++) {
1052         
1053         if(i == 0){
1054             sdd2[datRow].MS.D = calloc(1, sizeof(MAPSCRIPTD));
1055             if(i + 1 < sdd2[datRow].MS.Dcnt)
1056                 sdd2[datRow].MS.D->next = calloc(1, sizeof(MAPSCRIPTD));
1057             SMSDtop = sdd2[datRow].MS.D;
1058             
1059         }else if(i + 1 < sdd2[datRow].MS.Dcnt)
1060             sdd2[datRow].MS.D->next = calloc(1, sizeof(MAPSCRIPTD));
1061         
1062         sdd2[datRow].MS.D->SCRPTcnt = (int)[self readInt:fp];
1063         sdd2[datRow].MS.D->SCRPT = [NSMutableArray new];
1064         for(int j = 0;j < sdd2[datRow].MS.D->SCRPTcnt;j++)
1065             [sdd2[datRow].MS.D->SCRPT addObject:@""];
1066         for(int j = 0;j < sdd2[datRow].MS.D->SCRPTcnt;j++)
1067             sdd2[datRow].MS.D->SCRPT[j] = [[self readNSString:fp strOut:sdd2[datRow].MS.D->SCRPT[j]] retain];
1068
1069         
1070         sdd2[datRow].MS.D->endFlag = (int)[self readInt:fp];
1071         sdd2[datRow].MS.D->index = (int)[self readInt:fp];
1072         sdd2[datRow].MS.D->x = (int)[self readInt:fp];
1073         sdd2[datRow].MS.D->y = (int)[self readInt:fp];
1074         sdd2[datRow].MS.D->type = (int)[self readInt:fp];
1075         sdd2[datRow].MS.D->ET1 = (int)[self readInt:fp];
1076         sdd2[datRow].MS.D->ET2 = (int)[self readInt:fp];
1077         sdd2[datRow].MS.D->ET3 = (int)[self readInt:fp];
1078         sdd2[datRow].MS.D->ET4 = (int)[self readInt:fp];
1079         sdd2[datRow].MS.D->ETtype = (int)[self readInt:fp];
1080         sdd2[datRow].MS.D->onlyInitialDeley = (int)[self readInt:fp];
1081         sdd2[datRow].MS.D->initialDeleyedFlag = (int)[self readInt:fp];
1082         sdd2[datRow].MS.D->switch1f = (int)[self readInt:fp];
1083         sdd2[datRow].MS.D->switch2f = (int)[self readInt:fp];
1084         
1085         sdd2[datRow].MS.D->switch1cnt = (int)[self readInt:fp];
1086         sdd2[datRow].MS.D->switch2cnt = (int)[self readInt:fp];
1087         
1088         if(sdd2[datRow].MS.D->switch1cnt > 0)
1089             sdd2[datRow].MS.D->switch1 = calloc(sdd2[datRow].MS.D->switch1cnt, sizeof(int));
1090         for(int j = 0;j < sdd2[datRow].MS.D->switch1cnt;j++) {
1091             *(sdd2[datRow].MS.D->switch1 + j) = (int)[self readInt:fp];
1092         }
1093         if(sdd2[datRow].MS.D->switch2cnt > 0)
1094             sdd2[datRow].MS.D->switch2 = calloc(sdd2[datRow].MS.D->switch2cnt, sizeof(int));
1095         for(int j = 0;j < sdd2[datRow].MS.D->switch2cnt;j++) {
1096             *(sdd2[datRow].MS.D->switch2 + j) = (int)[self readInt:fp];
1097         }
1098         
1099         
1100         MAPSCRIPT0 *SMSPtop = sdd2[datRow].MS.D->P;
1101         
1102         sdd2[datRow].MS.D->Pcnt = (int)[self readInt:fp];
1103         
1104         for (int j = 0;j < sdd2[datRow].MS.D->Pcnt;j++) {
1105             
1106             if(j == 0){
1107                 sdd2[datRow].MS.D->P = calloc(1, sizeof(MAPSCRIPT0));
1108                 if(j + 1 < sdd2[datRow].MS.D->Pcnt)
1109                     sdd2[datRow].MS.D->P->next = calloc(1, sizeof(MAPSCRIPT0));
1110                 SMSPtop = sdd2[datRow].MS.D->P;
1111             }else if(j + 1 < sdd2[datRow].MS.D->Pcnt)
1112                 sdd2[datRow].MS.D->P->next = calloc(1, sizeof(MAPSCRIPT0));
1113             
1114             sdd2[datRow].MS.D->P->endFlag = (int)[self readInt:fp];
1115             sdd2[datRow].MS.D->P->succeessfulFlag = (int)[self readInt:fp];
1116             sdd2[datRow].MS.D->P->indent = (int)[self readInt:fp];
1117             sdd2[datRow].MS.D->P->val = (int)[self readInt:fp];
1118             sdd2[datRow].MS.D->P->valCnt = (int)[self readInt:fp];
1119             sdd2[datRow].MS.D->P->timerMin = (int)[self readInt:fp];
1120             sdd2[datRow].MS.D->P->timerSec = (int)[self readInt:fp];
1121             sdd2[datRow].MS.D->P->timerEntire = (int)[self readInt:fp];
1122             
1123             sdd2[datRow].MS.D->P->timerFlag = (int)[self readInt:fp];
1124             sdd2[datRow].MS.D->P->timerVisible = (int)[self readInt:fp];
1125             sdd2[datRow].MS.D->P->timerRun = (int)[self readInt:fp];
1126             sdd2[datRow].MS.D->P->timerMode = (int)[self readInt:fp];
1127             sdd2[datRow].MS.D->P->wait = (int)[self readInt:fp];
1128             sdd2[datRow].MS.D->P->titleBack = (int)[self readInt:fp];
1129             
1130             sdd2[datRow].MS.D->P->label = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->label] retain];
1131             sdd2[datRow].MS.D->P->labelJump = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->labelJump] retain];
1132             sdd2[datRow].MS.D->P->memo = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->memo] retain];
1133             
1134             sdd2[datRow].MS.D->P->switch1cnt = (int)[self readInt:fp];
1135             sdd2[datRow].MS.D->P->switch2cnt = (int)[self readInt:fp];
1136
1137             if(sdd2[datRow].MS.D->P->switch1cnt > 0)
1138                 sdd2[datRow].MS.D->P->switch1 = calloc(sdd2[datRow].MS.D->P->switch1cnt, sizeof(int));
1139             for(int k = 0;k < sdd2[datRow].MS.D->P->switch1cnt;k++) {
1140                 *(sdd2[datRow].MS.D->P->switch1 + k) = (int)[self readInt:fp];
1141             }
1142             
1143             if(sdd2[datRow].MS.D->P->switch2cnt > 0)
1144                 sdd2[datRow].MS.D->P->switch2 = calloc(sdd2[datRow].MS.D->P->switch2cnt, sizeof(int));
1145             for(int k = 0;k < sdd2[datRow].MS.D->P->switch2cnt;k++) {
1146                 *(sdd2[datRow].MS.D->P->switch2 + k) = (int)[self readInt:fp];
1147             }
1148             
1149             [self readMapScriptBGM:fp];
1150             [self readMapScriptSE:fp];
1151             [self readMapScriptSC:fp];
1152             [self readMapScriptGAOV:fp];
1153             
1154             sdd2[datRow].MS.D->P->type = (int)[self readInt:fp];
1155             
1156             //なぜかゴミ文字列が入ったから処置
1157             if(sdd2[datRow].MS.D->P->type != 7)
1158                 sdd2[datRow].MS.D->P->label = NULL;
1159             if(sdd2[datRow].MS.D->P->type != 8)
1160                 sdd2[datRow].MS.D->P->labelJump = NULL;
1161             if(sdd2[datRow].MS.D->P->type != 9)
1162                 sdd2[datRow].MS.D->P->memo = NULL;
1163             
1164             if(sdd2[datRow].MS.D->P->type == 0)
1165                 [self readMapScript1:fp];
1166             
1167             if(sdd2[datRow].MS.D->P->type == 1){
1168             MAPSCRIPT2 *SMSP2top = sdd2[datRow].MS.D->P->S2;
1169             
1170             sdd2[datRow].MS.D->P->S2cnt = (int)[self readInt:fp];
1171
1172             for (int k = 0;k < sdd2[datRow].MS.D->P->S2cnt;k++) {
1173                 if(k == 0){
1174                     sdd2[datRow].MS.D->P->S2 = calloc(1, sizeof(MAPSCRIPT2));
1175                     if(k + 1 < sdd2[datRow].MS.D->P->S2cnt)
1176                         sdd2[datRow].MS.D->P->S2->next = calloc(1, sizeof(MAPSCRIPT2));
1177                     SMSP2top = sdd2[datRow].MS.D->P->S2;
1178                 }else if(k + 1 < sdd2[datRow].MS.D->P->S2cnt)
1179                     sdd2[datRow].MS.D->P->S2->next = calloc(1, sizeof(MAPSCRIPT2));
1180                 [self readMapScript2:fp];
1181                 sdd2[datRow].MS.D->P->S2 = sdd2[datRow].MS.D->P->S2->next;
1182             }
1183             if(sdd2[datRow].MS.D->P->S2)
1184                 sdd2[datRow].MS.D->P->S2->next = NULL;
1185             sdd2[datRow].MS.D->P->S2 = SMSP2top;
1186             }
1187             
1188             
1189             if(sdd2[datRow].MS.D->P->type == 22){
1190             MAPSCRIPT3 *SMSP3top = sdd2[datRow].MS.D->P->S3;
1191             
1192             sdd2[datRow].MS.D->P->S3cnt = (int)[self readInt:fp];
1193
1194             for (int k = 0;k < sdd2[datRow].MS.D->P->S3cnt;k++) {
1195                 if(k == 0){
1196                     sdd2[datRow].MS.D->P->S3 = calloc(1, sizeof(MAPSCRIPT3));
1197                     if(k + 1 < sdd2[datRow].MS.D->P->S3cnt)
1198                         sdd2[datRow].MS.D->P->S3->next = calloc(1, sizeof(MAPSCRIPT3));
1199                     SMSP3top = sdd2[datRow].MS.D->P->S3;
1200                 }else if(k + 1 < sdd2[datRow].MS.D->P->S3cnt)
1201                     sdd2[datRow].MS.D->P->S3->next = calloc(1, sizeof(MAPSCRIPT3));
1202                 [self readMapScript3:fp];
1203                 sdd2[datRow].MS.D->P->S3 = sdd2[datRow].MS.D->P->S3->next;
1204             }sdd2[datRow].MS.D->P->S3 = SMSP3top;
1205             }
1206             if(sdd2[datRow].MS.D->P->type == 6)
1207                 [self readMapScript4:fp];
1208             
1209             if(sdd2[datRow].MS.D->P->type == 23){
1210             MAPSCRIPT5 *SMSP5top = sdd2[datRow].MS.D->P->S5;
1211             
1212             sdd2[datRow].MS.D->P->S5cnt = (int)[self readInt:fp];
1213
1214             for (int k = 0;k < sdd2[datRow].MS.D->P->S5cnt;k++) {
1215                 if(k == 0){
1216                     sdd2[datRow].MS.D->P->S5 = calloc(1, sizeof(MAPSCRIPT5));
1217                     if(k + 1 < sdd2[datRow].MS.D->P->S5cnt)
1218                         sdd2[datRow].MS.D->P->S5->next = calloc(1, sizeof(MAPSCRIPT5));
1219                     SMSP5top = sdd2[datRow].MS.D->P->S5;
1220                 }else if(k + 1 < sdd2[datRow].MS.D->P->S5cnt)
1221                     sdd2[datRow].MS.D->P->S5->next = calloc(1, sizeof(MAPSCRIPT5));
1222                 [self readMapScript5:fp];
1223                 sdd2[datRow].MS.D->P->S5 = sdd2[datRow].MS.D->P->S5->next;
1224             }sdd2[datRow].MS.D->P->S5 = SMSP5top;
1225             }
1226             
1227             if(sdd2[datRow].MS.D->P->type == 10)
1228                 [self readMapScript6:fp];
1229             
1230             
1231             
1232             sdd2[datRow].MS.D->P = sdd2[datRow].MS.D->P->next;
1233         }
1234         if(sdd2[datRow].MS.D->P)
1235             sdd2[datRow].MS.D->P->next = NULL;
1236         
1237         sdd2[datRow].MS.D->P = SMSPtop;
1238         
1239         
1240         sdd2[datRow].MS.D = sdd2[datRow].MS.D->next;
1241     }
1242     if(sdd2[datRow].MS.D)
1243         sdd2[datRow].MS.D->next = NULL;
1244     
1245     sdd2[datRow].MS.D = SMSDtop;
1246     
1247     
1248     
1249     
1250 }
1251
1252 -(void)readMapScript1:(FILE*)fp{
1253     
1254     sdd2[datRow].MS.D->P->S1.name = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S1.name] retain];
1255     sdd2[datRow].MS.D->P->S1.str = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S1.str] retain];
1256     sdd2[datRow].MS.D->P->S1.iName = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S1.iName] retain];
1257     sdd2[datRow].MS.D->P->S1.nameID = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S1.nameID] retain];
1258     
1259     for(int k = 0; k < UCN;k++){
1260         if(sdd2[datRow].MS.D->P->S1.nameID)
1261             if([sdd2[datRow].MS.D->P->S1.nameID isEqualToString:UC[k].nameID]){
1262                 sdd2[datRow].MS.D->P->S1.img = [UC[k].imgb retain];
1263                 break;
1264             }
1265     }
1266     for(int k = 0; k < LCN;k++){
1267         if(sdd2[datRow].MS.D->P->S1.nameID)
1268             if([sdd2[datRow].MS.D->P->S1.nameID isEqualToString:LC[k].nameID]){
1269                 sdd2[datRow].MS.D->P->S1.img = [LC[k].imgb retain];
1270                 break;
1271             }
1272     }
1273     EIMG = EIMGtop;
1274     while (EIMG) {
1275         if(sdd2[datRow].MS.D->P->S1.nameID)
1276             if([sdd2[datRow].MS.D->P->S1.nameID isEqualToString:EIMG->name]){
1277                 sdd2[datRow].MS.D->P->S1.img = [EIMG->img retain];
1278                 break;
1279             }
1280         EIMG = EIMG->next;
1281     }EIMG = EIMGtop;
1282     
1283     /*
1284      NSString *name;
1285      NSString *str;
1286      //NSImage *img;
1287      NSString *iName;
1288      NSString *nameID;
1289      */
1290 }
1291
1292 -(void)readMapScript2:(FILE*)fp{
1293     
1294     sdd2[datRow].MS.D->P->S2->selection = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S2->selection] retain];
1295     sdd2[datRow].MS.D->P->S2->labelJump = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S2->labelJump] retain];
1296     
1297     /*
1298      //struct _MAPSCRIPT2 *next;
1299      
1300      NSString *selection;
1301      NSString *labelJump;
1302      */
1303 }
1304
1305 -(void)readMapScript3:(FILE*)fp{
1306     
1307     sdd2[datRow].MS.D->P->S3->x = (int)[self readInt:fp];
1308     sdd2[datRow].MS.D->P->S3->y = (int)[self readInt:fp];
1309     sdd2[datRow].MS.D->P->S3->flag = (int)[self readInt:fp];
1310     
1311     sdd2[datRow].MS.D->P->S3->type = (int)[self readInt:fp];
1312     sdd2[datRow].MS.D->P->S3->team = (int)[self readInt:fp];
1313     
1314     sdd2[datRow].MS.D->P->S3->unitNum = (int)[self readInt:fp];
1315     sdd2[datRow].MS.D->P->S3->loadInt = (int)[self readInt:fp];
1316     
1317     sdd2[datRow].MS.D->P->S3->U = UC[sdd2[datRow].MS.D->P->S3->unitNum];
1318     
1319     /*
1320      //struct _MAPSCRIPT3 *next;
1321      
1322      int x;
1323      int y;
1324      bool flag;
1325      
1326      int type;
1327      int team;
1328      
1329      //UNITCHIP U;
1330      int unitNum;
1331      
1332      int loadInt;
1333      */
1334 }
1335
1336 -(void)readMapScript4:(FILE*)fp{
1337     
1338     sdd2[datRow].MS.D->P->S4.lagFixFlag = (int)[self readInt:fp];
1339     sdd2[datRow].MS.D->P->S4.COMPrabel = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S4.COMPrabel] retain];
1340     sdd2[datRow].MS.D->P->S4.FAILrabel = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S4.FAILrabel] retain];
1341     
1342     sdd2[datRow].MS.D->P->S4.suicchiFlag = (int)[self readInt:fp];
1343
1344     sdd2[datRow].MS.D->P->S4.suicchiCnt = (int)[self readInt:fp];
1345     
1346     if(sdd2[datRow].MS.D->P->S4.suicchiCnt > 0)
1347         sdd2[datRow].MS.D->P->S4.suicchi = calloc(sdd2[datRow].MS.D->P->S4.suicchiCnt, sizeof(int));
1348     for(int l = 0;l < sdd2[datRow].MS.D->P->S4.suicchiCnt;l++) {
1349         *(sdd2[datRow].MS.D->P->S4.suicchi + l) = (int)[self readInt:fp];
1350     }
1351     
1352     sdd2[datRow].MS.D->P->S4.suicchiONOFF = (int)[self readInt:fp];
1353     
1354     sdd2[datRow].MS.D->P->S4.hensuFlag = (int)[self readInt:fp];
1355     sdd2[datRow].MS.D->P->S4.hensu1 = (int)[self readInt:fp];
1356     sdd2[datRow].MS.D->P->S4.teisuFlag = (int)[self readInt:fp];
1357     sdd2[datRow].MS.D->P->S4.teisuValue = (int)[self readInt:fp];
1358     sdd2[datRow].MS.D->P->S4.hensu2flag = (int)[self readInt:fp];
1359     sdd2[datRow].MS.D->P->S4.hensu2 = (int)[self readInt:fp];
1360     sdd2[datRow].MS.D->P->S4.hensuType = (int)[self readInt:fp];
1361     
1362     sdd2[datRow].MS.D->P->S4.timerFlag = (int)[self readInt:fp];
1363     sdd2[datRow].MS.D->P->S4.timerMin = (int)[self readInt:fp];
1364     sdd2[datRow].MS.D->P->S4.timerSec = (int)[self readInt:fp];
1365     sdd2[datRow].MS.D->P->S4.timerType = (int)[self readInt:fp];
1366     
1367     sdd2[datRow].MS.D->P->S4.unitNumFlag = (int)[self readInt:fp];
1368     sdd2[datRow].MS.D->P->S4.team = (int)[self readInt:fp];
1369     sdd2[datRow].MS.D->P->S4.unitNum = (int)[self readInt:fp];
1370     sdd2[datRow].MS.D->P->S4.unitType = (int)[self readInt:fp];
1371     sdd2[datRow].MS.D->P->S4.unitTypeFlag = (int)[self readInt:fp];
1372     
1373     
1374     
1375     UNIT2 *subjTop = sdd2[datRow].MS.D->P->S4.subj;
1376     
1377     sdd2[datRow].MS.D->P->S4.subjCnt = (int)[self readInt:fp];
1378     
1379     for (int k = 0;k < sdd2[datRow].MS.D->P->S4.subjCnt;k++) {
1380         if(k == 0){
1381             sdd2[datRow].MS.D->P->S4.subj = calloc(1, sizeof(UNIT2));
1382             if(k + 1 < sdd2[datRow].MS.D->P->S4.subjCnt)
1383                 sdd2[datRow].MS.D->P->S4.subj->next = calloc(1, sizeof(UNIT2));
1384             subjTop = sdd2[datRow].MS.D->P->S4.subj;
1385         }else if(k + 1 < sdd2[datRow].MS.D->P->S4.subjCnt)
1386             sdd2[datRow].MS.D->P->S4.subj->next = calloc(1, sizeof(UNIT2));
1387         [self readMapScript4subj:fp];
1388         sdd2[datRow].MS.D->P->S4.subj = sdd2[datRow].MS.D->P->S4.subj->next;
1389     }sdd2[datRow].MS.D->P->S4.subj = subjTop;
1390     
1391     
1392     
1393     sdd2[datRow].MS.D->P->S4.placeFlag = (int)[self readInt:fp];
1394     PLACEMENT *waypTop = sdd2[datRow].MS.D->P->S4.wayp;
1395     
1396     sdd2[datRow].MS.D->P->S4.waypCnt = (int)[self readInt:fp];
1397     
1398     for (int k = 0;k < sdd2[datRow].MS.D->P->S4.waypCnt;k++) {
1399         if(k == 0){
1400             sdd2[datRow].MS.D->P->S4.wayp = calloc(1, sizeof(PLACEMENT));
1401             if(k + 1 < sdd2[datRow].MS.D->P->S4.waypCnt)
1402                 sdd2[datRow].MS.D->P->S4.wayp->next = calloc(1, sizeof(PLACEMENT));
1403             waypTop = sdd2[datRow].MS.D->P->S4.wayp;
1404         }else if(k + 1 < sdd2[datRow].MS.D->P->S4.waypCnt)
1405             sdd2[datRow].MS.D->P->S4.wayp->next = calloc(1, sizeof(PLACEMENT));
1406         [self readMapScript4wayp:fp];
1407         sdd2[datRow].MS.D->P->S4.wayp = sdd2[datRow].MS.D->P->S4.wayp->next;
1408     }sdd2[datRow].MS.D->P->S4.wayp = waypTop;
1409     
1410     sdd2[datRow].MS.D->P->S4.unitCMDflag = (int)[self readInt:fp];
1411     sdd2[datRow].MS.D->P->S4.unitCMD = (int)[self readInt:fp];
1412     
1413     
1414     sdd2[datRow].MS.D->P->S4.objeFlag = (int)[self readInt:fp];
1415     UNIT2 *objeTop = sdd2[datRow].MS.D->P->S4.obje;
1416     
1417     sdd2[datRow].MS.D->P->S4.objeCnt = (int)[self readInt:fp];
1418     
1419     for (int k = 0;k < sdd2[datRow].MS.D->P->S4.objeCnt;k++) {
1420         if(k == 0){
1421             sdd2[datRow].MS.D->P->S4.obje = calloc(1, sizeof(UNIT2));
1422             if(k + 1 < sdd2[datRow].MS.D->P->S4.objeCnt)
1423                 sdd2[datRow].MS.D->P->S4.obje->next = calloc(1, sizeof(UNIT2));
1424             objeTop = sdd2[datRow].MS.D->P->S4.obje;
1425         }else if(k + 1 < sdd2[datRow].MS.D->P->S4.objeCnt)
1426             sdd2[datRow].MS.D->P->S4.obje->next = calloc(1, sizeof(UNIT2));
1427         [self readMapScript4obje:fp];
1428         sdd2[datRow].MS.D->P->S4.obje = sdd2[datRow].MS.D->P->S4.obje->next;
1429     }sdd2[datRow].MS.D->P->S4.obje = objeTop;
1430     
1431     
1432     sdd2[datRow].MS.D->P->S4.objeRange = (int)[self readInt:fp];
1433     
1434     
1435     sdd2[datRow].MS.D->P->S4.buildFlag = (int)[self readInt:fp];
1436     BUILD2 *buildTop = sdd2[datRow].MS.D->P->S4.build;
1437     
1438     sdd2[datRow].MS.D->P->S4.buildCnt = (int)[self readInt:fp];
1439     
1440     for (int k = 0;k < sdd2[datRow].MS.D->P->S4.buildCnt;k++) {
1441         if(k == 0){
1442             sdd2[datRow].MS.D->P->S4.build = calloc(1, sizeof(BUILD2));
1443             if(k + 1 < sdd2[datRow].MS.D->P->S4.buildCnt)
1444                 sdd2[datRow].MS.D->P->S4.build->next = calloc(1, sizeof(BUILD2));
1445             buildTop = sdd2[datRow].MS.D->P->S4.build;
1446         }else if(k + 1 < sdd2[datRow].MS.D->P->S4.buildCnt)
1447             sdd2[datRow].MS.D->P->S4.build->next = calloc(1, sizeof(BUILD2));
1448         [self readMapScript4build:fp];
1449         sdd2[datRow].MS.D->P->S4.build = sdd2[datRow].MS.D->P->S4.build->next;
1450     }sdd2[datRow].MS.D->P->S4.build = buildTop;
1451     
1452     
1453 }
1454
1455 -(void)readMapScript4subj:(FILE*)fp{
1456     
1457     
1458     sdd2[datRow].MS.D->P->S4.subj->team = (int)[self readInt:fp];
1459     sdd2[datRow].MS.D->P->S4.subj->x = (int)[self readInt:fp];
1460     sdd2[datRow].MS.D->P->S4.subj->y = (int)[self readInt:fp];
1461     
1462     /*
1463      //struct _UNIT2 *next;
1464      //UNITCHIP C;
1465      
1466      int team;
1467      int x;
1468      int y;
1469      */
1470 }
1471
1472 -(void)readMapScript4wayp:(FILE*)fp{
1473     
1474     sdd2[datRow].MS.D->P->S4.wayp->type = (int)[self readInt:fp];
1475     sdd2[datRow].MS.D->P->S4.wayp->x = (int)[self readInt:fp];
1476     sdd2[datRow].MS.D->P->S4.wayp->y = (int)[self readInt:fp];
1477     sdd2[datRow].MS.D->P->S4.wayp->z = (int)[self readInt:fp];
1478     sdd2[datRow].MS.D->P->S4.wayp->x2 = (int)[self readInt:fp];
1479     sdd2[datRow].MS.D->P->S4.wayp->y2 = (int)[self readInt:fp];
1480     
1481     /*
1482      //struct _PLACEMENT *next;
1483      
1484      int type;
1485      int x;
1486      int y;
1487      int z;
1488      int x2;
1489      int y2;
1490      */
1491 }
1492
1493 -(void)readMapScript4obje:(FILE*)fp{
1494     
1495     sdd2[datRow].MS.D->P->S4.obje->team = (int)[self readInt:fp];
1496     sdd2[datRow].MS.D->P->S4.obje->x = (int)[self readInt:fp];
1497     sdd2[datRow].MS.D->P->S4.obje->y = (int)[self readInt:fp];
1498     
1499     /*
1500      //struct _UNIT2 *next;
1501      //UNITCHIP C;
1502      
1503      int team;
1504      int x;
1505      int y;
1506      */
1507 }
1508
1509 -(void)readMapScript4build:(FILE*)fp{
1510     
1511     sdd2[datRow].MS.D->P->S4.build->team = (int)[self readInt:fp];
1512     sdd2[datRow].MS.D->P->S4.build->x = (int)[self readInt:fp];
1513     sdd2[datRow].MS.D->P->S4.build->y = (int)[self readInt:fp];
1514     
1515     /*
1516      //struct _BUILD2 *next;
1517      //struct _BUILDCHIP *C;
1518      
1519      int team;
1520      int x;
1521      int y;
1522      */
1523 }
1524
1525 -(void)readMapScript5:(FILE*)fp{
1526     
1527     sdd2[datRow].MS.D->P->S5->x = (int)[self readInt:fp];
1528     sdd2[datRow].MS.D->P->S5->y = (int)[self readInt:fp];
1529     sdd2[datRow].MS.D->P->S5->type = (int)[self readInt:fp];
1530     sdd2[datRow].MS.D->P->S5->team = (int)[self readInt:fp];
1531     sdd2[datRow].MS.D->P->S5->unitNum = (int)[self readInt:fp];
1532     sdd2[datRow].MS.D->P->S5->saveInt = (int)[self readInt:fp];
1533     
1534     sdd2[datRow].MS.D->P->S5->U = UC[sdd2[datRow].MS.D->P->S5->unitNum];
1535     
1536     /*
1537      //struct _MAPSCRIPT5 *next;
1538      
1539      int x;
1540      int y;
1541      
1542      int type;
1543      int team;
1544      
1545      //UNITCHIP U;
1546      int unitNum;
1547      
1548      int saveInt;
1549      */
1550 }
1551
1552
1553 -(void)readMapScript6:(FILE*)fp{
1554     
1555     sdd2[datRow].MS.D->P->S6.team = (int)[self readInt:fp];
1556     
1557     sdd2[datRow].MS.D->P->S6.RCsupply = (int)[self readInt:fp];
1558     sdd2[datRow].MS.D->P->S6.RCfood = (int)[self readInt:fp];
1559     sdd2[datRow].MS.D->P->S6.RCmoney = (int)[self readInt:fp];
1560     
1561     sdd2[datRow].MS.D->P->S6.RCsupplyAdd = (int)[self readInt:fp];
1562     sdd2[datRow].MS.D->P->S6.RCfoodAdd = (int)[self readInt:fp];
1563     sdd2[datRow].MS.D->P->S6.RCmoneyAdd = (int)[self readInt:fp];
1564     
1565     sdd2[datRow].MS.D->P->S6.RCsupplyValue = (int)[self readInt:fp];
1566     sdd2[datRow].MS.D->P->S6.RCfoodValue = (int)[self readInt:fp];
1567     sdd2[datRow].MS.D->P->S6.RCmoneyValue = (int)[self readInt:fp];
1568     
1569     sdd2[datRow].MS.D->P->S6.RCsupplySelect = (int)[self readInt:fp];
1570     sdd2[datRow].MS.D->P->S6.RCfoodSelect = (int)[self readInt:fp];
1571     sdd2[datRow].MS.D->P->S6.RCmoneySelect = (int)[self readInt:fp];
1572     
1573     sdd2[datRow].MS.D->P->S6.RCsupplyS = (int)[self readInt:fp];
1574     sdd2[datRow].MS.D->P->S6.RCfoodS = (int)[self readInt:fp];
1575     sdd2[datRow].MS.D->P->S6.RCmoneyS = (int)[self readInt:fp];
1576     
1577 }
1578
1579 -(void)readMapScript7:(FILE*)fp{
1580     
1581     sdd2[datRow].MS.D->P->S7.type = (int)[self readInt:fp];
1582     
1583     sdd2[datRow].MS.D->P->S7.maxFlag = (int)[self readInt:fp];
1584     sdd2[datRow].MS.D->P->S7.percentFlag = (int)[self readInt:fp];
1585     sdd2[datRow].MS.D->P->S7.type = (int)[self readInt:fp];
1586     
1587     sdd2[datRow].MS.D->P->S7.fluctuate = (int)[self readInt:fp];
1588     sdd2[datRow].MS.D->P->S7.valueType = (int)[self readInt:fp];
1589     
1590     sdd2[datRow].MS.D->P->S7.value = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->S7.value] retain];
1591     
1592     sdd2[datRow].MS.D->P->S7.rdm = (int)[self readInt:fp];
1593     
1594     sdd2[datRow].MS.D->P->S7.teamFlag = (int)[self readInt:fp];
1595     sdd2[datRow].MS.D->P->S7.team = (int)[self readInt:fp];
1596     
1597     sdd2[datRow].MS.D->P->S7.unitFlag = (int)[self readInt:fp];
1598     sdd2[datRow].MS.D->P->S7.valueFlag = (int)[self readInt:fp];
1599     
1600     
1601     sdd2[datRow].MS.D->P->S7.S7Acnt = (int)[self readInt:fp];
1602     sdd2[datRow].MS.D->P->S7.S7Bcnt = (int)[self readInt:fp];
1603     
1604     for (int k = 0;k < sdd2[datRow].MS.D->P->S7.S7Acnt;k++) {
1605         if(k == 0){
1606             sdd2[datRow].MS.D->P->S7.A = calloc(1, sizeof(MAPSCRIPT7A));
1607             if(k + 1 < sdd2[datRow].MS.D->P->S7.S7Acnt)
1608                 sdd2[datRow].MS.D->P->S7.A->next = calloc(1, sizeof(MAPSCRIPT7A));
1609             MS7Atop = sdd2[datRow].MS.D->P->S7.A;
1610         }else if(k + 1 < sdd2[datRow].MS.D->P->S7.S7Acnt)
1611             sdd2[datRow].MS.D->P->S7.A->next = calloc(1, sizeof(MAPSCRIPT7A));
1612         
1613         sdd2[datRow].MS.D->P->S7.A->x = (int)[self readInt:fp];
1614         sdd2[datRow].MS.D->P->S7.A->y = (int)[self readInt:fp];
1615         sdd2[datRow].MS.D->P->S7.A->team = (int)[self readInt:fp];
1616         sdd2[datRow].MS.D->P->S7.A->unitNum = (int)[self readInt:fp];
1617         
1618         sdd2[datRow].MS.D->P->S7.A = sdd2[datRow].MS.D->P->S7.A->next;
1619     }sdd2[datRow].MS.D->P->S7.A = MS7Atop;
1620     
1621  
1622     for (int k = 0;k < sdd2[datRow].MS.D->P->S7.S7Bcnt;k++) {
1623         if(k == 0){
1624             sdd2[datRow].MS.D->P->S7.B = calloc(1, sizeof(MAPSCRIPT7B));
1625             if(k + 1 < sdd2[datRow].MS.D->P->S7.S7Bcnt)
1626                 sdd2[datRow].MS.D->P->S7.B->next = calloc(1, sizeof(MAPSCRIPT7B));
1627             MS7Btop = sdd2[datRow].MS.D->P->S7.B;
1628         }else if(k + 1 < sdd2[datRow].MS.D->P->S7.S7Bcnt)
1629             sdd2[datRow].MS.D->P->S7.B->next = calloc(1, sizeof(MAPSCRIPT7B));
1630         
1631         sdd2[datRow].MS.D->P->S7.B->x = (int)[self readInt:fp];
1632         sdd2[datRow].MS.D->P->S7.B->y = (int)[self readInt:fp];
1633         sdd2[datRow].MS.D->P->S7.B->team = (int)[self readInt:fp];
1634         sdd2[datRow].MS.D->P->S7.B->unitNum = (int)[self readInt:fp];
1635         sdd2[datRow].MS.D->P->S7.B->saveInt = (int)[self readInt:fp];
1636         
1637         sdd2[datRow].MS.D->P->S7.B = sdd2[datRow].MS.D->P->S7.B->next;
1638     }sdd2[datRow].MS.D->P->S7.B = MS7Btop;
1639     
1640 }
1641
1642 -(void)readMapScriptBGM:(FILE*)fp{
1643     
1644     NSString *directoryPath;
1645     
1646     directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
1647     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
1648     
1649     
1650     NSString* Cpath = @"data/BGM/";
1651     [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
1652     
1653     sdd2[datRow].MS.D->P->BGM.name = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->BGM.name] retain];
1654     sdd2[datRow].MS.D->P->BGM.fName = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->BGM.fName] retain];
1655     
1656     sdd2[datRow].MS.D->P->BGM.snd = [[[NSSound alloc] initWithContentsOfURL:
1657                                       [NSURL fileURLWithPath:sdd2[datRow].MS.D->P->BGM.fName] byReference:NO] retain];
1658     
1659     /*
1660      //NSString *name;
1661      NSString *fName;
1662      //NSSound *snd;
1663      */
1664 }
1665
1666 -(void)readMapScriptSE:(FILE*)fp{
1667     
1668     NSString *directoryPath;
1669     
1670     directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
1671     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
1672     
1673     
1674     NSString* Cpath = @"data/BGM/";
1675     [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
1676     
1677     sdd2[datRow].MS.D->P->SE.name = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->SE.name] retain];
1678     sdd2[datRow].MS.D->P->SE.fName = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->SE.fName] retain];
1679     
1680     sdd2[datRow].MS.D->P->SE.snd = [[[NSSound alloc] initWithContentsOfURL:
1681                                       [NSURL fileURLWithPath:sdd2[datRow].MS.D->P->SE.fName] byReference:NO] retain];
1682     
1683     /*
1684      NSString *name;
1685      NSString *fName;
1686      //NSSound *snd;
1687      */
1688 }
1689
1690 -(void)readMapScriptSC:(FILE*)fp{
1691     
1692     sdd2[datRow].MS.D->P->sc.scFlag = (int)[self readInt:fp];
1693     sdd2[datRow].MS.D->P->sc.edcdFlag = (int)[self readInt:fp];
1694     
1695     /*
1696      bool scFlag;
1697      bool edcdFlag;
1698      */
1699 }
1700
1701 -(void)readMapScriptGAOV:(FILE*)fp{
1702     
1703     
1704     sdd2[datRow].MS.D->P->gaov.fNname = [[self readNSString:fp strOut:sdd2[datRow].MS.D->P->gaov.fNname] retain];
1705     sdd2[datRow].MS.D->P->gaov.gaovFlag = (int)[self readInt:fp];
1706     sdd2[datRow].MS.D->P->gaov.edcdFlag = (int)[self readInt:fp];
1707     
1708     /*
1709      NSString *fNname;
1710      //NSImage *img;
1711      bool gaovFlag;
1712      bool edcdFlag;
1713      */
1714 }
1715
1716 -(void)inputFileData{
1717     
1718     [self saveStruct];
1719     [self loadStruct];
1720 }
1721
1722 -(void)saveStruct{
1723     
1724     //まんこ
1725     NSString *directoryPath;
1726     
1727     directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
1728     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
1729     
1730     
1731     NSString* Cpath = @"SaveData/";
1732     [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
1733     
1734     NSString *path = [[NSString alloc] initWithUTF8String:datFilePath];
1735     
1736     if(0 && [[NSFileManager defaultManager] fileExistsAtPath:path]){
1737         [self loadStruct];
1738             if(datRow < 0)
1739                 return;
1740         
1741         
1742         if(1){
1743             
1744             sdd.name = [sdd2[datRow].name retain];
1745             sdd.imgAdressCnt = sdd2[datRow].imgAdressCnt;
1746             sdd.imgAdressFix = sdd2[datRow].imgAdressFix;
1747             sdd.img = sdd2[datRow].img;
1748             
1749             sdd.MFselectedRow = sdd2[datRow].MFselectedRow;
1750             sdd.storyNumb = sdd2[datRow].storyNumb;
1751             sdd.scenarioNumb = sdd2[datRow].scenarioNumb;
1752             
1753             sdd.mapfileName = [sdd2[datRow].mapfileName retain];
1754             sdd.levelName = [sdd2[datRow].levelName retain];
1755             sdd.levelName = [sdd2[datRow].scenarioName retain];
1756             
1757             sdd.chipHeight = sdd2[datRow].chipHeight;
1758             sdd.chipWidth = sdd2[datRow].chipWidth;
1759             
1760             sdd.posX = sdd2[datRow].posX;
1761             sdd.posY = sdd2[datRow].posY;
1762             
1763             sdd.eSlctX = sdd2[datRow].eSlctX;
1764             sdd.eSlctY = sdd2[datRow].eSlctY;
1765             
1766             sdd.registerNum = sdd2[datRow].registerNum;
1767             sdd.registerNumB = sdd2[datRow].registerNumB;
1768             
1769             sdd.esSceneProc = sdd2[datRow].esSceneProc;
1770             
1771             sdd.endGameCondition = sdd2[datRow].endGameCondition;
1772             sdd.initMapFlag = sdd2[datRow].initMapFlag;
1773             sdd.initStatusFlag = sdd2[datRow].initStatusFlag;
1774             sdd.TeamCountFlag = sdd2[datRow].TeamCountFlag;
1775             sdd.battleBegin = sdd2[datRow].battleBegin;
1776             sdd.startES = sdd2[datRow].startES;
1777             
1778             sdd.cpuAImodeflag = sdd2[datRow].cpuAImodeflag;
1779             sdd.cpuModeATTACKflag = sdd2[datRow].cpuModeATTACKflag;
1780             sdd.cpuModeMOVEflag = sdd2[datRow].cpuModeMOVEflag;
1781             sdd.cpuTurnEndFlag = sdd2[datRow].cpuTurnEndFlag;
1782             sdd.waitSwtichFlag = sdd2[datRow].waitSwtichFlag;
1783             sdd.battleReadyUpFlag = sdd2[datRow].battleReadyUpFlag;
1784             sdd.setBattleModeFlag = sdd2[datRow].setBattleModeFlag;
1785             
1786             sdd.wtRdy = sdd2[datRow].wtRdy;
1787             sdd.wtRdy2 = sdd2[datRow].wtRdy2;
1788             sdd.wtRdy3 = sdd2[datRow].wtRdy3;
1789             
1790             sdd.wtMovedFlag = sdd2[datRow].wtMovedFlag;
1791             sdd.wtAttackedFlag = sdd2[datRow].wtAttackedFlag;
1792             sdd.unitMoveEndFlag = sdd2[datRow].unitMoveEndFlag;
1793             sdd.battleSetUp = sdd2[datRow].battleSetUp;
1794             sdd.pushStanbyFlag = sdd2[datRow].pushStanbyFlag;
1795             sdd.battleEndFlag = sdd2[datRow].battleEndFlag;
1796             sdd.wtUnitNum = sdd2[datRow].wtUnitNum;
1797             sdd.messageDialog = sdd2[datRow].messageDialog;
1798             
1799             /*
1800             for(int i = 0;i < 1002;i++)
1801                 for(int j = 0;j < 1002;j++)
1802                     sdd.chipNum[i][j] = sdd2[datRow].chipNum[i][j];
1803             for(int i = 0;i < 1002;i++)
1804                 for(int j = 0;j < 1002;j++)
1805                     sdd.buildNum[i][j] = sdd2[datRow].buildNum[i][j];
1806             for(int i = 0;i < 1002;i++)
1807                 for(int j = 0;j < 1002;j++)
1808                     sdd.unitNum[i][j] = sdd2[datRow].unitNum[i][j];
1809             for(int i = 0;i < 1002;i++)
1810                 for(int j = 0;j < 1002;j++)
1811                     sdd.loadNum[i][j] = sdd2[datRow].loadNum[i][j];
1812             for(int i = 0;i < 1002;i++)
1813                 for(int j = 0;j < 1002;j++)
1814                     sdd.buildTeam[i][j] = sdd2[datRow].buildTeam[i][j];
1815             for(int i = 0;i < 1002;i++)
1816                 for(int j = 0;j < 1002;j++)
1817                     sdd.unitTeam[i][j] = sdd2[datRow].unitTeam[i][j];
1818             */
1819             for(int i = 0;i < sdd.registerNum;i++)
1820                 sdd.dU[i] = sdd2[datRow].dU[i];
1821             for(int i = 0;i < sdd.registerNumB;i++)
1822                 sdd.dB[i] = sdd2[datRow].dB[i];
1823             
1824             for(int i = 0;i < 3;i++)
1825                 sdd.P[i] = sdd2[datRow].P[i];
1826             
1827             //カレントスイッチなど
1828             for(int i = 0;i < 9999;i++)
1829                 sdd.Suicchi[i] = sdd2[datRow].Suicchi[i];
1830             
1831             sdd.HensuuNum = sdd2[datRow].HensuuNum;
1832             for(int i = 0;i < 65000;i++)
1833                 sdd.Hensuu[i] = [sdd2[datRow].Hensuu[i] retain];
1834             for(int i = 0;i < 65000;i++)
1835                 sdd.HensuuName[i] = [sdd2[datRow].HensuuName[i] retain];
1836             
1837             sdd.MS = sdd2[datRow].MS;
1838             
1839         }
1840         
1841         datExistFlag = true;
1842     }else{
1843         datExistFlag = false;
1844     }
1845     
1846     if(1){
1847         FILE *fpo;
1848         
1849         fpo = fopen(datFilePath, "wb");
1850         if(!fpo)
1851             return;
1852             
1853         
1854         [self writeNSString:fpo str:sdd.name];
1855         [self writeNSImage:fpo str:sdd.img adCnt:&sdd.imgAdressCnt adFix:&sdd.imgAdressFix];
1856         
1857         
1858         [self writeInt:fpo val:sdd.MFselectedRow];
1859         [self writeInt:fpo val:sdd.storyNumb];
1860         [self writeInt:fpo val:sdd.scenarioNumb];
1861         [self writeNSString:fpo str:sdd.mapfileName];
1862         [self writeNSString:fpo str:sdd.levelName];
1863         [self writeNSString:fpo str:sdd.scenarioName];
1864         
1865         [self writeInt:fpo val:sdd.chipHeight];
1866         [self writeInt:fpo val:sdd.chipWidth];
1867         [self writeInt:fpo val:sdd.posX];
1868         [self writeInt:fpo val:sdd.posY];
1869         [self writeInt:fpo val:sdd.eSlctX];
1870         [self writeInt:fpo val:sdd.eSlctY];
1871         [self writeInt:fpo val:sdd.registerNum];
1872         [self writeInt:fpo val:sdd.registerNumB];
1873         [self writeInt:fpo val:sdd.esSceneProc];
1874         [self writeInt:fpo val:sdd.endGameCondition];
1875         
1876         [self writeInt:fpo val:sdd.initMapFlag];
1877         [self writeInt:fpo val:sdd.initStatusFlag];
1878         [self writeInt:fpo val:sdd.TeamCountFlag];
1879         [self writeInt:fpo val:sdd.battleBegin];
1880         [self writeInt:fpo val:sdd.startES];
1881         
1882         [self writeInt:fpo val:sdd.cpuAImodeflag];
1883         [self writeInt:fpo val:sdd.cpuModeATTACKflag];
1884         [self writeInt:fpo val:sdd.cpuModeMOVEflag];
1885         [self writeInt:fpo val:sdd.cpuTurnEndFlag];
1886         [self writeInt:fpo val:sdd.waitSwtichFlag];
1887         [self writeInt:fpo val:sdd.battleReadyUpFlag];
1888         [self writeInt:fpo val:sdd.setBattleModeFlag];
1889         
1890         [self writeInt:fpo val:sdd.wtRdy];
1891         [self writeInt:fpo val:sdd.wtRdy2];
1892         [self writeInt:fpo val:sdd.wtRdy3];
1893         
1894         [self writeInt:fpo val:sdd.wtMovedFlag];
1895         [self writeInt:fpo val:sdd.wtAttackedFlag];
1896         [self writeInt:fpo val:sdd.unitMoveEndFlag];
1897         [self writeInt:fpo val:sdd.battleSetUp];
1898         [self writeInt:fpo val:sdd.pushStanbyFlag];
1899         [self writeInt:fpo val:sdd.battleEndFlag];
1900         [self writeInt:fpo val:sdd.wtUnitNum];
1901         [self writeInt:fpo val:sdd.messageDialog];
1902         
1903         /*//これやると容量が重くなる(24MB超えるので保存しない)
1904         for(int i = 0;i < 1002;i++)
1905             for(int j = 0;j < 1002;j++)
1906                 [self writeInt:fpo val:sdd.chipNum[i][j]];
1907         for(int i = 0;i < 1002;i++)
1908             for(int j = 0;j < 1002;j++)
1909                 [self writeInt:fpo val:sdd.buildNum[i][j]];
1910         for(int i = 0;i < 1002;i++)
1911             for(int j = 0;j < 1002;j++)
1912                 [self writeInt:fpo val:sdd.unitNum[i][j]];
1913         for(int i = 0;i < 1002;i++)
1914             for(int j = 0;j < 1002;j++)
1915                 [self writeInt:fpo val:sdd.loadNum[i][j]];
1916         for(int i = 0;i < 1002;i++)
1917             for(int j = 0;j < 1002;j++)
1918                 [self writeInt:fpo val:sdd.buildTeam[i][j]];
1919         for(int i = 0;i < 1002;i++)
1920             for(int j = 0;j < 1002;j++)
1921                 [self writeInt:fpo val:sdd.unitTeam[i][j]];
1922         */
1923         
1924         for(int i = 0;i < sdd.registerNum;i++)
1925             [self writeUnitD:fpo row:i];
1926         for(int i = 0;i < sdd.registerNumB;i++)
1927             [self writeBiuldD:fpo row:i];
1928             NSLog(@"\n(保存)%@:IMGADRESS %p\n", sdd.name,sdd.img);
1929         
1930         for(int i = 0;i < 3;i++){
1931             fwrite(&sdd.P[i], sizeof(PLAYER), 1, fpo);
1932             [self writeNSString:fpo str:P[i].name];
1933         }
1934         //カレントスイッチなど
1935         for(int i = 0;i < 9999;i++)
1936             [self writeInt:fpo val:sdd.Suicchi[i]];
1937         
1938         [self writeInt:fpo val:sdd.HensuuNum];
1939         for(int i = 0;i < 65000;i++)
1940             [self writeNSString:fpo str:sdd.Hensuu[i]];
1941         for(int i = 0;i < 65000;i++)
1942             [self writeNSString:fpo str:sdd.HensuuName[i]];
1943         
1944         
1945         [self writeMapScript:fpo];
1946         
1947         fclose(fpo);
1948         
1949         routeCnt = 0;
1950         
1951         saveFlag = false;
1952     }
1953     [self loadStruct];
1954 }
1955
1956 -(void)writeBiuldD:(FILE*)fp row:(int)r{
1957
1958     [self writeInt:fp val:sdd.dB[r].number];
1959     [self writeInt:fp val:sdd.dB[r].team];
1960     [self writeInt:fp val:sdd.dB[r].chipNumber];
1961     [self writeInt:fp val:sdd.dB[r].makeLv];
1962     
1963     [self writeInt:fp val:sdd.dB[r].x];
1964     [self writeInt:fp val:sdd.dB[r].y];
1965     [self writeInt:fp val:sdd.dB[r].z];
1966     
1967     [self writeInt:fp val:sdd.dB[r].dead];
1968     
1969     //[self writeBuildDimage:fp row:r];
1970     [self writeBuildChipD:fp val:sdd.dB[r].C];
1971 }
1972
1973 -(void)writeBuildChipD:(FILE*)fp val:(BUILDCHIPD)val{
1974     
1975     [self writeInt:fp val:val.chipNumb];
1976     [self writeNSString:fp str:val.name];
1977     [self writeNSString:fp str:val.nameID];
1978     
1979     fwrite(&val.S_C, sizeof(BSTATUS), 1, fp);
1980     
1981     NSLog(@"gj folks...");
1982 }
1983
1984 -(void)writeBuildDimage:(FILE*)fp row:(int)r{
1985     FILE *fpx;
1986     
1987     NSString *directoryPath;
1988     
1989     directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
1990     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
1991     
1992     NSString* Cpath = @"Awars IV.app/Contents/Resources/";
1993     [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
1994     
1995     NSString *path2 = @INSTANT_IMG;
1996     
1997     if(1){
1998         NSData *imgData = [sdd.dB[r].img TIFFRepresentation];
1999         NSBitmapImageRep *brep = [NSBitmapImageRep imageRepWithData:imgData];
2000         imgData = [brep representationUsingType:NSPNGFileType properties:nil];
2001         [imgData writeToFile:path2 atomically:YES];
2002         
2003         fpx = fopen(INSTANT_IMG, "rb");
2004         
2005         unsigned char in_buf[1024], out_buf[1024];
2006         int rinf;
2007         
2008         sdd.dB[r].imgAdCnt = 0;
2009         sdd.dB[r].imgAdFix = 0;
2010         
2011         fpos_t fpt = 0;
2012         while (!feof(fpx)) {
2013             fgetpos(fp, &fpt);
2014             rinf = (int)fread((void*)in_buf, 1, 1024, fpx);
2015             if(rinf < 0){
2016                 break;
2017             }
2018             memcpy((void*)out_buf, (void*)in_buf, 1024);
2019             rinf = (int)fwrite((void*)out_buf, 1, rinf, fp);
2020             if(rinf < 0){
2021                 break;
2022             }
2023             sdd.dB[r].imgAdCnt++;
2024             sdd.dB[r].imgAdFix = rinf;
2025         }
2026         
2027         fpt -= (sdd.dB[r].imgAdCnt-1)*1024;
2028         fsetpos(fp, &fpt);
2029         [self writeInt:fp val:(int)sdd.dB[r].imgAdCnt];
2030         [self writeInt:fp val:(int)sdd.dB[r].imgAdFix];
2031         
2032         fpt = 0;
2033         fsetpos(fpx, &fpt);
2034         while (!feof(fpx)) {
2035             rinf = (int)fread((void*)in_buf, 1, 1024, fpx);
2036             if(rinf < 0){
2037                 break;
2038             }
2039             memcpy((void*)out_buf, (void*)in_buf, 1024);
2040             rinf = (int)fwrite((void*)out_buf, 1, rinf, fp);
2041             if(rinf < 0){
2042                 break;
2043             }
2044         }
2045         
2046         
2047         
2048         fclose(fpx);
2049     }
2050 }
2051
2052 -(void)writeUnitD:(FILE*)fp row:(int)r{
2053
2054     [self writeInt:fp val:sdd.dU[r].CPU];
2055     [self writeInt:fp val:sdd.dU[r].number];
2056     [self writeInt:fp val:sdd.dU[r].team];
2057     [self writeInt:fp val:sdd.dU[r].chipNumber];
2058     [self writeInt:fp val:sdd.dU[r].chipNumberL];
2059     
2060     [self writeInt:fp val:sdd.dU[r].x];
2061     [self writeInt:fp val:sdd.dU[r].y];
2062     [self writeInt:fp val:sdd.dU[r].z];
2063     
2064     [self writeInt:fp val:sdd.dU[r].ix];
2065     [self writeInt:fp val:sdd.dU[r].iy];
2066     [self writeInt:fp val:sdd.dU[r].iz];
2067     
2068     [self writeInt:fp val:sdd.dU[r].dead];
2069     
2070     [self writeInt:fp val:sdd.dU[r].loadChipFlag];
2071     
2072     [self writeInt:fp val:sdd.dU[r].unControlable];
2073     [self writeInt:fp val:sdd.dU[r].joinArmyFromNext];
2074     [self writeInt:fp val:sdd.dU[r].persuasion];
2075     
2076     [self writeInt:fp val:sdd.dU[r].targType1L];
2077     [self writeInt:fp val:sdd.dU[r].targType2L];
2078     [self writeInt:fp val:sdd.dU[r].targType1D];
2079     [self writeInt:fp val:sdd.dU[r].targType2D];
2080     
2081     [self writeNSString:fp str:sdd.dU[r].army];
2082     //[self writeUnitDimage:fp row:r];
2083     
2084     
2085     [self writeUnitChipD:fp val:sdd.dU[r].C];
2086     [self writeUnitChipLD:fp val:sdd.dU[r].CL];
2087
2088 }
2089
2090 -(void)writeUnitChipD:(FILE*)fp val:(UNITCHIPD)val{
2091
2092     [self writeInt:fp val:val.chipNumb];
2093     [self writeNSString:fp str:val.name];
2094     [self writeNSString:fp str:val.nameNick];
2095     [self writeNSString:fp str:val.nameClass];
2096     [self writeNSString:fp str:val.nameID];
2097     
2098     
2099     
2100     fwrite(&val.R_C, sizeof(RESIST), 1, fp);
2101     fwrite(&val.S_C, sizeof(STATUS), 1, fp);
2102     
2103     NSLog(@"oops is right youre supposed to get...");
2104 }
2105
2106 -(void)writeUnitChipLD:(FILE*)fp val:(LOADCHIPD)val{
2107     
2108     [self writeInt:fp val:val.chipNumb];
2109     [self writeNSString:fp str:val.name];
2110     [self writeNSString:fp str:val.nameID];
2111     
2112     
2113     
2114     fwrite(&val.R_C, sizeof(RESIST), 1, fp);
2115     fwrite(&val.S_C, sizeof(STATUS2), 1, fp);
2116     
2117     NSLog(@"oops is right youre supposed to get...2");
2118 }
2119
2120 -(void)writeUnitDimage:(FILE*)fp row:(int)r{
2121     FILE *fpx;
2122     
2123     NSString *directoryPath;
2124     
2125     directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
2126     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
2127     
2128     NSString* Cpath = @"Awars IV.app/Contents/Resources/";
2129     [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
2130     
2131     NSString *path2 = @INSTANT_IMG;
2132     
2133     if(1){
2134         NSData *imgData = [sdd.dU[r].img TIFFRepresentation];
2135         NSBitmapImageRep *brep = [NSBitmapImageRep imageRepWithData:imgData];
2136         imgData = [brep representationUsingType:NSPNGFileType properties:nil];
2137         [imgData writeToFile:path2 atomically:YES];
2138         
2139         fpx = fopen(INSTANT_IMG, "rb");
2140         
2141         unsigned char in_buf[1024], out_buf[1024];
2142         int rinf;
2143         
2144         sdd.dU[r].imgAdCnt = 0;
2145         sdd.dU[r].imgAdFix = 0;
2146         
2147         fpos_t fpt = 0;
2148         while (!feof(fpx)) {
2149             fgetpos(fp, &fpt);
2150             rinf = (int)fread((void*)in_buf, 1, 1024, fpx);
2151             if(rinf < 0){
2152                 break;
2153             }
2154             memcpy((void*)out_buf, (void*)in_buf, 1024);
2155             rinf = (int)fwrite((void*)out_buf, 1, rinf, fp);
2156             if(rinf < 0){
2157                 break;
2158             }
2159             sdd.dU[r].imgAdCnt++;
2160             sdd.dU[r].imgAdFix = rinf;
2161         }
2162         
2163         fpt -= (sdd.dU[r].imgAdCnt-1)*1024;
2164         fsetpos(fp, &fpt);
2165         [self writeInt:fp val:(int)sdd.dU[r].imgAdCnt];
2166         [self writeInt:fp val:(int)sdd.dU[r].imgAdFix];
2167         
2168         fpt = 0;
2169         fsetpos(fpx, &fpt);
2170         while (!feof(fpx)) {
2171             rinf = (int)fread((void*)in_buf, 1, 1024, fpx);
2172             if(rinf < 0){
2173                 break;
2174             }
2175             memcpy((void*)out_buf, (void*)in_buf, 1024);
2176             rinf = (int)fwrite((void*)out_buf, 1, rinf, fp);
2177             if(rinf < 0){
2178                 break;
2179             }
2180         }
2181         
2182         
2183         
2184         fclose(fpx);
2185     }
2186 }
2187
2188
2189
2190 -(void)loadStruct{
2191     
2192     //まんこ
2193     NSString *directoryPath;
2194     
2195     directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
2196     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
2197     
2198     
2199     NSString* Cpath = @"SaveData/";
2200     [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
2201     
2202     if(datRow < 0)
2203         return;
2204     
2205     FILE *fpi;
2206     
2207     fpi = fopen(datFilePath, "rb");
2208     if(!fpi)
2209         return;
2210     
2211         
2212         sdd2[datRow].name = [[self readNSString:fpi strOut:sdd2[datRow].name] retain];
2213         
2214         sdd2[datRow].imgAdressCnt = (int)[self readInt:fpi];
2215         sdd2[datRow].imgAdressFix = (int)[self readInt:fpi];
2216         sdd2[datRow].img = [[self readNSImage:fpi imgOut:sdd2[datRow].img dcnt:sdd2[datRow].imgAdressCnt dfix:sdd2[datRow].imgAdressFix] retain];
2217     
2218         sdd2[datRow].MFselectedRow = (int)[self readInt:fpi];
2219         sdd2[datRow].storyNumb = (int)[self readInt:fpi];
2220         sdd2[datRow].scenarioNumb = (int)[self readInt:fpi];
2221         sdd2[datRow].mapfileName = [[self readNSString:fpi strOut:sdd2[datRow].mapfileName] retain];
2222         sdd2[datRow].levelName = [[self readNSString:fpi strOut:sdd2[datRow].levelName] retain];
2223         sdd2[datRow].scenarioName = [ [self readNSString:fpi strOut:sdd2[datRow].scenarioName] retain];
2224     
2225         sdd2[datRow].chipHeight = (int)[self readInt:fpi];
2226         sdd2[datRow].chipWidth = (int)[self readInt:fpi];
2227         sdd2[datRow].posX = (int)[self readInt:fpi];
2228         sdd2[datRow].posY = (int)[self readInt:fpi];
2229         sdd2[datRow].eSlctX = (int)[self readInt:fpi];
2230         sdd2[datRow].eSlctY = (int)[self readInt:fpi];
2231         sdd2[datRow].registerNum = (int)[self readInt:fpi];
2232         sdd2[datRow].registerNumB = (int)[self readInt:fpi];
2233         sdd2[datRow].esSceneProc = (int)[self readInt:fpi];
2234         sdd2[datRow].endGameCondition = (int)[self readInt:fpi];
2235     
2236         sdd2[datRow].initMapFlag = (int)[self readInt:fpi];
2237         sdd2[datRow].initStatusFlag = (int)[self readInt:fpi];
2238         sdd2[datRow].TeamCountFlag = (int)[self readInt:fpi];
2239         sdd2[datRow].battleBegin = (int)[self readInt:fpi];
2240         sdd2[datRow].startES = (int)[self readInt:fpi];
2241     
2242         sdd2[datRow].cpuAImodeflag = (int)[self readInt:fpi];
2243         sdd2[datRow].cpuModeATTACKflag = (int)[self readInt:fpi];
2244         sdd2[datRow].cpuModeMOVEflag = (int)[self readInt:fpi];
2245         sdd2[datRow].cpuTurnEndFlag = (int)[self readInt:fpi];
2246         sdd2[datRow].waitSwtichFlag = (int)[self readInt:fpi];
2247         sdd2[datRow].battleReadyUpFlag = (int)[self readInt:fpi];
2248         sdd2[datRow].setBattleModeFlag = (int)[self readInt:fpi];
2249     
2250         sdd2[datRow].wtRdy = (int)[self readInt:fpi];
2251         sdd2[datRow].wtRdy2 = (int)[self readInt:fpi];
2252         sdd2[datRow].wtRdy3 = (int)[self readInt:fpi];
2253     
2254         sdd2[datRow].wtMovedFlag = (int)[self readInt:fpi];
2255         sdd2[datRow].wtAttackedFlag = (int)[self readInt:fpi];
2256         sdd2[datRow].unitMoveEndFlag = (int)[self readInt:fpi];
2257         sdd2[datRow].battleSetUp = (int)[self readInt:fpi];
2258         sdd2[datRow].pushStanbyFlag = (int)[self readInt:fpi];
2259         sdd2[datRow].battleEndFlag = (int)[self readInt:fpi];
2260         sdd2[datRow].wtUnitNum = (int)[self readInt:fpi];
2261         sdd2[datRow].messageDialog = (int)[self readInt:fpi];
2262     
2263     /*//saveStructとワンセット容量の関係で読み込まない
2264     for(int i = 0;i < 1002;i++)
2265         for(int j = 0;j < 1002;j++)
2266             sdd2[datRow].chipNum[i][j] = (int)[self readInt:fpi];
2267     for(int i = 0;i < 1002;i++)
2268         for(int j = 0;j < 1002;j++)
2269             sdd2[datRow].buildNum[i][j] = (int)[self readInt:fpi];
2270     for(int i = 0;i < 1002;i++)
2271         for(int j = 0;j < 1002;j++)
2272             sdd2[datRow].unitNum[i][j] = (int)[self readInt:fpi];
2273     for(int i = 0;i < 1002;i++)
2274         for(int j = 0;j < 1002;j++)
2275             sdd2[datRow].loadNum[i][j] = (int)[self readInt:fpi];
2276     for(int i = 0;i < 1002;i++)
2277         for(int j = 0;j < 1002;j++)
2278             sdd2[datRow].buildTeam[i][j] = (int)[self readInt:fpi];
2279     for(int i = 0;i < 1002;i++)
2280         for(int j = 0;j < 1002;j++)
2281             sdd2[datRow].unitTeam[i][j] = (int)[self readInt:fpi];
2282     */
2283     for(int i = 0;i < sdd2[datRow].registerNum;i++)
2284         [self readUnitD:fpi row:i];
2285     for(int i = 0;i < sdd2[datRow].registerNumB;i++)
2286         [self readBiuldD:fpi row:i];
2287     
2288         NSLog(@"\n(読み込み)%@:IMGADRESS %p\n",sdd2[datRow].name,sdd2[datRow].img);
2289     
2290     for(int i = 0;i < 3;i++){
2291         fread(&sdd2[datRow].P[i], sizeof(PLAYER), 1, fpi);
2292         sdd2[datRow].P[i].name = [[self readNSString:fpi strOut:sdd2[datRow].P[i].name] retain];
2293     }
2294     
2295     //カレントスイッチなど
2296     for(int i = 0;i < 9999;i++)
2297         sdd2[datRow].Suicchi[i] = (int)[self readInt:fpi];
2298     
2299     sdd2[datRow].HensuuNum = (int)[self readInt:fpi];
2300     for(int i = 0;i < 65000;i++)
2301         sdd2[datRow].Hensuu[i] = [[self readNSString:fpi strOut:sdd2[datRow].Hensuu[i]] retain];
2302     for(int i = 0;i < 65000;i++)
2303         sdd2[datRow].HensuuName[i] = [[self readNSString:fpi strOut:sdd2[datRow].HensuuName[i]] retain];
2304     
2305     [self readMapScript:fpi];
2306     
2307     fclose(fpi);
2308     
2309 }
2310
2311
2312 -(void)loadOptionMenu{
2313     NSString *directoryPath;
2314     
2315     directoryPath = [[NSBundle mainBundle] bundlePath];
2316     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
2317     
2318     
2319     NSString* Cpath = @"Contents/Resources/";
2320     [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
2321     
2322     FILE *fpi;
2323     
2324     fpi = fopen(OPTIONFILE_NAME, "rb");
2325     if(!fpi)
2326         return;
2327
2328     wtfom.nameTitle = [@"" retain];
2329     NSLog(@"%@", wtfom.nameTitle);
2330     wtfom.nameTitle = [[self readNSString:fpi strOut:wtfom.nameTitle] retain];
2331     wtfom.nameVersion = [[self readNSString:fpi strOut:wtfom.nameVersion] retain];
2332     wtfom.nameOpening = [[self readNSString:fpi strOut:wtfom.nameOpening] retain];
2333     wtfom.nameBGM = [[self readNSString:fpi strOut:wtfom.nameBGM] retain];
2334     
2335     wtfom.allowMapEditor = (int)[self readInt:fpi];
2336     wtfom.allowScenarioEditor = (int)[self readInt:fpi];
2337     wtfom.onlyOnceOpening = (int)[self readInt:fpi];
2338     wtfom.newOpeningIsShown = (int)[self readInt:fpi];
2339     
2340     wtfom.adCntIT = (int)[self readInt:fpi];
2341     wtfom.adFixIT = (int)[self readInt:fpi];
2342     wtfom.imgTitle = [[self readNSImage:fpi imgOut:wtfom.imgTitle dcnt:wtfom.adCntIT dfix:wtfom.adFixIT] retain];
2343
2344     
2345     directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
2346     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
2347     
2348     Cpath = @"data/Movie";
2349     
2350     BOOL isDirectory;
2351     
2352     [[NSFileManager defaultManager] fileExistsAtPath:Cpath isDirectory:&isDirectory];
2353     
2354     if(!isDirectory)
2355         [[NSFileManager defaultManager] createDirectoryAtPath:Cpath withIntermediateDirectories:YES attributes:nil error:nil];
2356     
2357     
2358     [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
2359     
2360     if([[NSFileManager defaultManager] fileExistsAtPath:wtfom.nameOpening])
2361         openingAVP = [[AVPlayer playerWithURL:[NSURL fileURLWithPath:wtfom.nameOpening]] retain];
2362     else
2363         openingAVP = NULL;
2364
2365     directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
2366     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
2367     
2368     Cpath = @"data/BGM/";
2369     [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
2370     
2371     /*
2372     char *cwd;
2373     cwd = getcwd(NULL, 0);
2374     
2375     NSLog(@"%s", cwd);
2376     */
2377     
2378     titleBGM = [[[NSSound alloc] initWithContentsOfURL:[NSURL fileURLWithPath:wtfom.nameBGM] byReference:NO] retain];
2379     
2380     fclose(fpi);
2381 }
2382
2383 -(void)openingAVPVfunc{
2384     
2385     if(openingAVP && openingAVPVisActive){
2386         openingAVPV.player = openingAVP;
2387         openingAVPV.videoGravity =  AVLayerVideoGravityResize;
2388     }
2389     
2390     if(openingAVPVisHidden)
2391         [openingAVPV setHidden:YES];
2392     else
2393         [openingAVPV setHidden:NO];
2394     
2395 }
2396
2397 -(void)saveOptionMenu{
2398     NSString *directoryPath;
2399     
2400     directoryPath = [[NSBundle mainBundle] bundlePath];
2401     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
2402     
2403     
2404     NSString* Cpath = @"Contents/Resources/";
2405     [[NSFileManager defaultManager] changeCurrentDirectoryPath:Cpath];
2406     
2407     /*
2408     char *cwd;
2409     cwd = getcwd(NULL, 0);
2410     
2411     NSLog(@"%s", cwd);
2412     */
2413     
2414     FILE *fpo;
2415     
2416     fpo = fopen(OPTIONFILE_NAME, "wb");
2417     if(!fpo)
2418         return;
2419     
2420     [self writeNSString:fpo str:wtfom.nameTitle];
2421     [self writeNSString:fpo str:wtfom.nameVersion];
2422     [self writeNSString:fpo str:wtfom.nameOpening];
2423     [self writeNSString:fpo str:wtfom.nameBGM];
2424     
2425     [self writeInt:fpo val:wtfom.allowMapEditor];
2426     [self writeInt:fpo val:wtfom.allowScenarioEditor];
2427     [self writeInt:fpo val:wtfom.onlyOnceOpening];
2428     [self writeInt:fpo val:wtfom.newOpeningIsShown];
2429     
2430     [self writeNSImage:fpo str:wtfom.imgTitle adCnt:&wtfom.adCntIT adFix:&wtfom.adFixIT];
2431     
2432     
2433     
2434     
2435     fclose(fpo);
2436 }
2437
2438
2439
2440 -(void)clickSGL:(id)sender{
2441
2442     datRow = (int)[saveGameListTV clickedRow];
2443 }
2444
2445 -(void)clickSTE:(id)sender{
2446     
2447     STErow = (int)[STequipListTV clickedRow];
2448 }
2449
2450 -(void)clickLFOL:(id)sender{
2451
2452     if([loadFileOutputListTV selectedRow] < 0){
2453         [loadFileOutputTF setStringValue:@""];
2454         return;
2455     }
2456     
2457     LFOLrow = (int)[loadFileOutputListTV selectedRow];
2458     SDLrow = -1;
2459     
2460     
2461     for(int i = 1;i <= saveNumb;i++){
2462         
2463         for(int j = 0;j < [loadFileOutputListMA count];j++){
2464             
2465             if([SDL[j+1].name isEqualToString:[loadFileOutputListMA[LFOLrow] valueForKey:@"name"]]){
2466                 SDLrow = j;
2467                 
2468                 [loadFileOutputTF setStringValue:[NSString stringWithFormat:@"%@ まで", SDL[SDLrow+1].scenarioName]];
2469                 return;
2470             }
2471         }
2472     }
2473     
2474     [loadFileOutputTF setStringValue:[NSString stringWithFormat:@""]];
2475
2476 }
2477
2478 -(void)doubleClickBCL:(id)sender{
2479     
2480     enum{
2481         MC_ANTEI,
2482         MC_FUANTEI,
2483         MC_CHIKURIN,
2484         MC_MIZUBA,
2485         MC_ASASE,
2486         MC_NAIBU
2487     };
2488     
2489     enum{
2490         BC_ANTEI,
2491         BC_CHIKURIN,
2492         BC_ASASE,
2493         BC_SONOTA
2494     };
2495     
2496     bclRdy = false;
2497     
2498     U = UTop;
2499     for(int i = 0;i < slctedUnitNum;i++){
2500         U = U->next;
2501     }
2502     
2503     if (MC[chipNum[possionX][possionY]].type == MC_ANTEI) {
2504         
2505         if(BC[U->C.S->list[crBCL]-1].type == BC_ANTEI){
2506             bclRdy = true;
2507         }
2508         
2509     }
2510  
2511     if (MC[chipNum[possionX][possionY]].type == MC_CHIKURIN) {
2512         
2513         if(BC[U->C.S->list[crBCL]-1].type == BC_CHIKURIN){
2514             bclRdy = true;
2515         }
2516         
2517     }
2518     
2519     if (MC[chipNum[possionX][possionY]].type == MC_ASASE) {
2520         
2521         if(BC[U->C.S->list[crBCL]-1].type == BC_ASASE){
2522             bclRdy = true;
2523         }
2524         
2525     }
2526
2527     if(BC[U->C.S->list[crBCL]].type == BC_SONOTA){
2528         bclRdy = true;
2529     }
2530     
2531     if(bclRdy){
2532         bclRdy = false;
2533         if(buildNum[possionX][possionY] >= 0){
2534             U = UTop;
2535             return;
2536         }
2537         
2538         if(U->team == 0)
2539         if(P[0].resource >= BC[U->C.S->list[crBCL]-1].Csupply){
2540             if(P[0].food >= BC[U->C.S->list[crBCL]-1].Cfood){
2541                 if (P[0].money >= BC[U->C.S->list[crBCL]-1].Cmoney) {
2542                     P[0].resource -= BC[U->C.S->list[crBCL]-1].Csupply;
2543                     P[0].food -= BC[U->C.S->list[crBCL]-1].Cfood;
2544                     P[0].money -= BC[U->C.S->list[crBCL]-1].Cmoney;
2545                     
2546                     buildNum[possionX][possionY] = U->C.S->list[crBCL]-1;
2547                     
2548                     buildTeam[possionX][possionY] = 0;
2549                    
2550                     
2551                     [self addBuildStatus];
2552                     
2553                     bclRdy = true;
2554                 }
2555             }
2556         }
2557         
2558         if(U->team == 2)
2559         if(P[1].resource >= BC[U->C.S->list[crBCL]-1].Csupply){
2560             if(P[1].food >= BC[U->C.S->list[crBCL]-1].Cfood){
2561                 if (P[1].money >= BC[U->C.S->list[crBCL]-1].Cmoney) {
2562                     P[1].resource -= BC[U->C.S->list[crBCL]-1].Csupply;
2563                     P[1].food -= BC[U->C.S->list[crBCL]-1].Cfood;
2564                     P[1].money -= BC[U->C.S->list[crBCL]-1].Cmoney;
2565                     
2566                     buildNum[possionX][possionY] = U->C.S->list[crBCL]-1;
2567                     
2568                     buildTeam[possionX][possionY] = 2;
2569                     
2570                     [self addBuildStatus];
2571                     
2572                     bclRdy = true;
2573                 }
2574             }
2575         }
2576         [createPanel close];
2577     }
2578     
2579     U = UTop;
2580 }
2581
2582 -(void)clickBCL:(id)sender{
2583     crBCL = (int)[BCreateListTV clickedRow];
2584     
2585     
2586     
2587 }
2588
2589
2590 -(void)doubleClickCSL:(id)sender{
2591    
2592     U = UTop;
2593     for(int i = 0;i < slctedUnitNum;i++){
2594         U = U->next;
2595     }
2596     CSLU = U;
2597     
2598     SKILL *sTop = U->C.S;
2599     while (U->C.S) {
2600         if(U->C.S->type == 2) break;
2601         U->C.S = U->C.S->next;
2602     }
2603     if(!U->C.S){
2604         U->C.S = sTop;
2605         U = UTop;
2606         return;
2607     }
2608     
2609     if(U->team == 0)
2610         if(U->C.S->cost[crCSL] <= U->C.S_C.MP){
2611             //U->C.S_C.MP -= U->C.S->cost[crCSL];
2612             CSLUC = UC[U->C.S->list[crCSL]-1];
2613             
2614             U->C.S = sTop;
2615             cslRdy = true;
2616             [summonPanel close];
2617             //unitColorInitFlag = true;
2618         }
2619     if(U->team == 2)
2620         if(U->C.S->cost[crCSL] <= U->C.S_C.MP){
2621             
2622             //U->C.S_C.MP -= U->C.S->cost[crCSL];
2623             CSLUC = UC[U->C.S->list[crCSL]-1];
2624             
2625             U->C.S = sTop;
2626             cslRdy = true;
2627             [summonPanel close];
2628             //unitColorInitFlag = true;
2629         }
2630     
2631     U = UTop;
2632     
2633 }
2634
2635 -(void)clickCSL:(id)sender{
2636     crCSL = (int)[CSummonListTV clickedRow];
2637     
2638     
2639 }
2640
2641 -(void)doubleClickCAL:(id)sender{
2642     
2643     if([CAttackListTV clickedRow] < 0) return;
2644     
2645     if(crCAL < 0)
2646         crCAL = 0;
2647     
2648     int postCAL1 = crCAL1;
2649     int postCAL2 = crCAL2;
2650     
2651     if(!battleSet1Flag && !battleSet2Flag){
2652     U = UTop;
2653     while (!(AUN[1] == U->number)) {
2654         U = U->next;
2655     }
2656     
2657         
2658         
2659         if(U->chipNumberL < 0){
2660         
2661             ATTACK *aTop = U->C.A;
2662             
2663             crCAL = (int)[CAttackListTV clickedRow];
2664             crCAL1 = (int)[CAttackListTV clickedRow];
2665             for(int i = 0;i < crCAL;i++){
2666                 U->C.A = U->C.A->next;
2667             }
2668     
2669             costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
2670             costVIG = U->C.A->vigor;
2671     
2672             if(costMP <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
2673                 if(U->C.A->extent > 0){
2674                     atkExtentFlag = true;
2675                 }else{
2676                     atkExtentFlag = false;
2677                 }
2678                 dcRdy = true;
2679                 [atkPanel close];
2680             }
2681             U->C.A = aTop;
2682             U = UTop;
2683             crCAL1 = crCAL;
2684             [self setBattlePanel];
2685             return;
2686         }else{
2687             ATTACK *aTop = U->CL.A;
2688             crCAL = (int)[CAttackListTV clickedRow];
2689             crCAL1 = (int)[CAttackListTV clickedRow];
2690             for(int i = 0;i < crCAL;i++){
2691                 U->CL.A = U->CL.A->next;
2692             }
2693             
2694             costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
2695             costVIG = U->CL.A->vigor;
2696             
2697             if(costMP <= U->CL.S_C.EN && costVIG <= U->C.S_C.vigor){
2698                 dcRdy = true;
2699                 if(U->CL.A->extent > 0){
2700                     atkExtentFlag = true;
2701                 }else{
2702                     atkExtentFlag = false;
2703                 }
2704                 [atkPanel close];
2705             }
2706             U->CL.A = aTop;
2707             U = UTop;
2708             crCAL1 = crCAL;
2709             [self setBattlePanel];
2710             return;
2711         }
2712     }
2713     
2714     if(battleSet1Flag && !battleSet2PushedFlag){
2715         
2716     
2717         U = UTop;
2718         while (!(AUN[1] == U->number)) {
2719             U = U->next;
2720         }
2721        
2722         if(U->chipNumberL < 0){
2723             ATTACK *aTop = U->C.A;
2724             crCAL1 = (int)[CAttackListTV clickedRow];
2725             for(int i = 0;i < crCAL1;i++){
2726                 U->C.A = U->C.A->next;
2727             }
2728         
2729             costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
2730             costVIG = U->C.A->vigor;
2731             
2732             
2733             if(costMP <= U->C.S_C.MP && U->atkRange >= U->C.A->rangeA
2734                && U->atkRange <= U->C.A->rangeB && costVIG >= U->C.S_C.vigor){
2735                 //dcRdy = true;
2736                 [atkPanel close];
2737                 U->C.A = aTop;
2738                 U = UTop;
2739                 [self setBattlePanel];
2740                 return;
2741             }
2742             U->C.A = aTop;
2743             crCAL1 = crCAL;
2744             U = UTop;
2745             [self setBattlePanel];
2746         }else{
2747             ATTACK *aTop = U->CL.A;
2748             crCAL1 = (int)[CAttackListTV clickedRow];
2749             for(int i = 0;i < crCAL1;i++){
2750                 U->CL.A = U->CL.A->next;
2751             }
2752             
2753             costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
2754             costVIG = U->C.A->vigor;
2755             
2756             if(costMP <= U->CL.S_C.EN && U->atkRange >= U->CL.A->rangeA
2757                && U->atkRange <= U->CL.A->rangeB && costVIG >= U->C.S_C.vigor){
2758                 //dcRdy = true;
2759                 [atkPanel close];
2760                 U->CL.A = aTop;
2761                 U = UTop;
2762                 [self setBattlePanel];
2763                 return;
2764             }
2765             U->CL.A = aTop;
2766             crCAL1 = crCAL;
2767             U = UTop;
2768             [self setBattlePanel];
2769         }
2770     
2771     }
2772     
2773     if(battleSet2Flag && battleSet2PushedFlag){
2774         U = UTop;
2775         while (!(AUN[1] == U->number)) {
2776             U = U->next;
2777         }
2778         
2779         if(U->chipNumberL < 0){
2780             U = UTop;
2781             U = UTop;
2782             while (!(AUN[1] == U->number)) {
2783                 U = U->next;
2784             }
2785         
2786             int omgRange = U->atkRange;
2787         
2788             U = UTop;
2789             while (!(DUN[1] == U->number)) {
2790                 U = U->next;
2791             }
2792         
2793             U->atkRange = omgRange;
2794         
2795             ATTACK *aTop = U->C.A;
2796             crCAL2 = (int)[CAttackListTV clickedRow];
2797             for(int i = 0;i < crCAL2;i++){
2798                 U->C.A = U->C.A->next;
2799             }
2800         
2801             costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
2802             costVIG = U->C.A->vigor;
2803
2804         
2805             if(costMP <= U->C.S_C.MP && U->atkRange >= U->C.A->rangeA
2806                 && U->atkRange <= U->C.A->rangeB && U->C.S_C.vigor){
2807                 //dcRdy = true;
2808                 [atkPanel close];
2809                 U->C.A = aTop;
2810                 U = UTop;
2811                 [self setBattlePanel];
2812                 return;
2813             }
2814             U->C.A = aTop;
2815             crCAL1 = crCAL;
2816             U = UTop;
2817         }else{
2818             U = UTop;
2819             U = UTop;
2820             while (!(AUN[1] == U->number)) {
2821                 U = U->next;
2822             }
2823             
2824             int omgRange = U->atkRange;
2825             
2826             U = UTop;
2827             while (!(DUN[1] == U->number)) {
2828                 U = U->next;
2829             }
2830             
2831             U->atkRange = omgRange;
2832             
2833             ATTACK *aTop = U->CL.A;
2834             crCAL2 = (int)[CAttackListTV clickedRow];
2835             for(int i = 0;i < crCAL2;i++){
2836                 U->CL.A = U->CL.A->next;
2837             }
2838             
2839             costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
2840             costVIG = U->C.A->vigor;
2841
2842             if(costMP <= U->CL.S_C.EN && U->atkRange >= U->CL.A->rangeA
2843                && U->atkRange <= U->CL.A->rangeB && U->C.S_C.vigor){
2844                 //dcRdy = true;
2845                 [atkPanel close];
2846                 U->CL.A = aTop;
2847                 U = UTop;
2848                 [self setBattlePanel];
2849                 return;
2850             }
2851             U->CL.A = aTop;
2852             crCAL1 = crCAL;
2853             U = UTop;
2854             [self setBattlePanel];
2855         }
2856         
2857         U = UTop;
2858         
2859     }
2860     
2861
2862     crCAL1 = postCAL1;
2863     crCAL2 = postCAL2;
2864 }
2865
2866
2867 -(void)clickCAL:(id)sender{
2868
2869     crCAL = (int)[CAttackListTV clickedRow];
2870     
2871     if(!battleSetFlag){crCAL = crCAL1;
2872         crCAL1 = (int)[CAttackListTV clickedRow];
2873         crCAL = crCAL1;
2874         U = UTop;
2875         while (!(AUN[1] == U->number)) {
2876             U = U->next;
2877         }
2878     }else if(battleSetFlag){crCAL = crCAL2;
2879         crCAL2 = (int)[CAttackListTV clickedRow];
2880         crCAL = crCAL2;
2881         U = UTop;
2882         while (!(DUN[1] == U->number)) {
2883             U = U->next;
2884         }
2885         
2886     }
2887     
2888     if(U->chipNumberL >= 0) {
2889         U = UTop;
2890         [self initCAttackSelect2];
2891     }
2892     else if(U->chipNumber >= 0) {
2893         U = UTop;
2894         [self initCAttackSelect];
2895     }
2896     U = UTop;
2897 }
2898
2899 -(void)initCAttackSelect{
2900     
2901     U = UTop;
2902     
2903     while (!(AUN[1] == U->number)) {
2904         U = U->next;
2905     }
2906     if(!battleSetFlag){crCAL = crCAL1;
2907         //crCAL1 = (int)[CAttackListTV clickedRow];
2908         crCAL = crCAL1;
2909         U = UTop;
2910         while (!(AUN[1] == U->number)) {
2911             U = U->next;
2912         }
2913     }else if(battleSetFlag){crCAL = crCAL2;
2914         //crCAL2 = (int)[CAttackListTV clickedRow];
2915         crCAL = crCAL2;
2916         U = UTop;
2917         while (!(DUN[1] == U->number)) {
2918             U = U->next;
2919         }
2920         
2921     }
2922     
2923     //U = Uselected;
2924     
2925     [CAttackListAC setSelectionIndex:crCAL];
2926     crCAL = (int)[CAttackListTV clickedRow];
2927     ATTACK *aTop = U->C.A;
2928     for(int i = 0;i < crCAL;i++){
2929         U->C.A = U->C.A->next;
2930     }
2931     
2932     if(!U->C.A) {
2933         [bullet setStringValue:[NSString stringWithFormat:@"---/---"]];
2934         [costP setStringValue:[NSString stringWithFormat:@"---(%g)", U->C.S_C.MP]];
2935         [costV setStringValue:[NSString stringWithFormat:@"---(%d)",  U->C.S_C.vigor]];
2936         [region setStringValue:[NSString stringWithFormat:@"陸-- 宙-- 海-- 空--"]];
2937         [crytical setStringValue:@""];
2938         [atkProperty setStringValue:@""];
2939         U->C.A = aTop;
2940         return;
2941     }
2942     
2943     if(U->C.A->bullet > 0) [bullet setStringValue:[NSString stringWithFormat:@"%d/%d", U->C.A->bulletC, U->C.A->bullet]];
2944     else [bullet setStringValue:[NSString stringWithFormat:@"---/---"]];
2945     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]];
2946     else [costP setStringValue:[NSString stringWithFormat:@"---(%g)", U->C.S_C.MP]];
2947     if(U->C.A->vigor > 0) [costV setStringValue:[NSString stringWithFormat:@"%d(%d)", U->C.A->vigor, U->C.S_C.vigor]];
2948     else [costV setStringValue:[NSString stringWithFormat:@"---(%d)",  U->C.S_C.vigor]];
2949     
2950     NSString *Riku, *Chu, *Umi, *Sora;
2951     
2952     switch (U->C.A->riku) {
2953         case 0:
2954             Riku = [@"A" retain];
2955             break;
2956         case 1:
2957             Riku = [@"B"retain];
2958             break;
2959         case 2:
2960             Riku = [@"C"retain];
2961             break;
2962         case 3:
2963             Riku = [@"D"retain];
2964             break;
2965         case 4:
2966             Riku = [@"E"retain];
2967             break;
2968         case 5:
2969             Riku = [@"S"retain];
2970             break;
2971         case 6:
2972             Riku = [@"SS"retain];
2973             break;
2974     }
2975     switch (U->C.A->chu) {
2976         case 0:
2977             Chu = [@"A" retain];
2978             break;
2979         case 1:
2980             Chu = [@"B" retain];
2981             break;
2982         case 2:
2983             Chu = [@"C" retain];
2984             break;
2985         case 3:
2986             Chu = [@"D" retain];
2987             break;
2988         case 4:
2989             Chu = [@"E" retain];
2990             break;
2991         case 5:
2992             Chu = [@"S" retain];
2993             break;
2994         case 6:
2995             Chu = [@"SS" retain];
2996             break;
2997     }
2998     switch (U->C.A->umi) {
2999         case 0:
3000             Umi = [@"A" retain];
3001             break;
3002         case 1:
3003             Umi = [@"B" retain];
3004             break;
3005         case 2:
3006             Umi = [@"C" retain];
3007             break;
3008         case 3:
3009             Umi = [@"D" retain];
3010             break;
3011         case 4:
3012             Umi = [@"E" retain];
3013             break;
3014         case 5:
3015             Umi = [@"S" retain];
3016             break;
3017         case 6:
3018             Umi = [@"SS" retain];
3019             break;
3020     }
3021     switch (U->C.A->sora) {
3022         case 0:
3023             Sora = [@"A" retain];
3024             break;
3025         case 1:
3026             Sora = [@"B" retain];
3027             break;
3028         case 2:
3029             Sora = [@"C" retain];
3030             break;
3031         case 3:
3032             Sora = [@"D" retain];
3033             break;
3034         case 4:
3035             Sora = [@"E" retain];
3036             break;
3037         case 5:
3038             Sora = [@"S" retain];
3039             break;
3040         case 6:
3041             Sora = [@"SS" retain];
3042             break;
3043     }
3044     
3045     if(!U->C.A->name){
3046         Riku = @"--";
3047         Chu = @"--";
3048         Umi = @"--";
3049         Sora = @"--";
3050     }
3051     
3052     [region setStringValue:[NSString stringWithFormat:@"陸%@ 宙%@ 海%@ 空%@",  Riku, Chu, Umi, Sora]];
3053     [crytical setStringValue:@""];
3054     [atkProperty setStringValue:@""];
3055     
3056     U->C.A = aTop;
3057     U = UTop;
3058 }
3059
3060 -(void)initCAttackSelect2{
3061     
3062     U = UTop;
3063     
3064     while (!(AUN[1] == U->number)) {
3065         U = U->next;
3066     }
3067     if(battleSet1Flag){
3068         //crCAL1 = (int)[CAttackListTV clickedRow];
3069         U = UTop;
3070         while (!(AUN[1] == U->number)) {
3071             U = U->next;
3072         }
3073     }
3074     if(battleSet2Flag){
3075         //crCAL2 = (int)[CAttackListTV clickedRow];
3076         U = UTop;
3077         while (!(DUN[1] == U->number)) {
3078             U = U->next;
3079         }
3080         
3081     }
3082     
3083     ATTACK *aTop = U->CL.A;
3084     for(int i = 0;i < crCAL;i++){
3085         U->CL.A = U->CL.A->next;
3086     }
3087     
3088     if(!U->CL.A) {
3089         
3090         U = UTop;
3091         return;
3092     }
3093     if(U->CL.A->bullet > 0) [bullet setStringValue:[NSString stringWithFormat:@"%d/%d", U->CL.A->bulletC, U->CL.A->bullet]];
3094     else [bullet setStringValue:[NSString stringWithFormat:@"---/---"]];
3095     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]];
3096     else [costP setStringValue:[NSString stringWithFormat:@"---(%g)", U->CL.S_C.EN]];
3097     if(U->CL.A->vigor > 0) [costV setStringValue:[NSString stringWithFormat:@"%d(%d)", U->CL.A->vigor, U->C.S_C.vigor]];
3098     else [costV setStringValue:[NSString stringWithFormat:@"---(%d)",  U->C.S_C.vigor]];
3099     
3100     NSString *Riku, *Chu, *Umi, *Sora;
3101     
3102     switch (U->CL.A->riku) {
3103         case 0:
3104             Riku = @"A";
3105             break;
3106         case 1:
3107             Riku = @"B";
3108             break;
3109         case 2:
3110             Riku = @"C";
3111             break;
3112         case 3:
3113             Riku = @"D";
3114             break;
3115         case 4:
3116             Riku = @"E";
3117             break;
3118         case 5:
3119             Riku = @"S";
3120             break;
3121         case 6:
3122             Riku = @"SS";
3123             break;
3124     }
3125     switch (U->CL.A->chu) {
3126         case 0:
3127             Chu = @"A";
3128             break;
3129         case 1:
3130             Chu = @"B";
3131             break;
3132         case 2:
3133             Chu = @"C";
3134             break;
3135         case 3:
3136             Chu = @"D";
3137             break;
3138         case 4:
3139             Chu = @"E";
3140             break;
3141         case 5:
3142             Chu = @"S";
3143             break;
3144         case 6:
3145             Chu = @"SS";
3146             break;
3147     }
3148     switch (U->CL.A->umi) {
3149         case 0:
3150             Umi = @"A";
3151             break;
3152         case 1:
3153             Umi = @"B";
3154             break;
3155         case 2:
3156             Umi = @"C";
3157             break;
3158         case 3:
3159             Umi = @"D";
3160             break;
3161         case 4:
3162             Umi = @"E";
3163             break;
3164         case 5:
3165             Umi = @"S";
3166             break;
3167         case 6:
3168             Umi = @"SS";
3169             break;
3170     }
3171     switch (U->CL.A->sora) {
3172         case 0:
3173             Sora = @"A";
3174             break;
3175         case 1:
3176             Sora = @"B";
3177             break;
3178         case 2:
3179             Sora = @"C";
3180             break;
3181         case 3:
3182             Sora = @"D";
3183             break;
3184         case 4:
3185             Sora = @"E";
3186             break;
3187         case 5:
3188             Sora = @"S";
3189             break;
3190         case 6:
3191             Sora = @"SS";
3192             break;
3193     }
3194     
3195     if(!U->CL.A->name){
3196         Riku = @"--";
3197         Chu = @"--";
3198         Umi = @"--";
3199         Sora = @"--";
3200     }
3201     
3202     [region setStringValue:[NSString stringWithFormat:@"陸%@ 宙%@ 海%@ 空%@",  Riku, Chu, Umi, Sora]];
3203     [crytical setStringValue:@""];
3204     [atkProperty setStringValue:@""];
3205     
3206     U->CL.A = aTop;
3207     U = UTop;
3208 }
3209
3210
3211 -(void)doubleClickCRL:(id)sender{
3212     
3213     if(crCRL == -1) return;
3214     
3215     if(unitBreak->team == 0)
3216     if(P[0].resource >= BRU->S_M.cSupply && P[0].food >= BRU->S_M.cFood && P[0].money >= BRU->S_M.cMoney){
3217         
3218         P[0].resource -= BRU->S_M.cSupply;
3219         P[0].food -= BRU->S_M.cFood;
3220         P[0].money -= BRU->S_M.cMoney;
3221         
3222         unitNum[possionX][possionY] = BRUindex;
3223         if(researchTeam == 0) unitTeam[possionX][possionY] = 0;
3224         if(researchTeam == 2) unitTeam[possionX][possionY] = 2;
3225
3226         [self addUnitStatus];
3227         
3228         unitColorInitFlag = true;
3229         
3230         [researchPanel close];
3231     }
3232     
3233     if(unitBreak->team == 2)
3234         if(P[1].resource >= BRU->S_M.cSupply && P[1].food >= BRU->S_M.cFood && P[1].money >= BRU->S_M.cMoney){
3235             
3236             P[1].resource -= BRU->S_M.cSupply;
3237             P[1].food -= BRU->S_M.cFood;
3238             P[1].money -= BRU->S_M.cMoney;
3239             
3240             unitNum[possionX][possionY] = BRUindex;
3241             if(researchTeam == 0) unitTeam[possionX][possionY] = 0;
3242             if(researchTeam == 2) unitTeam[possionX][possionY] = 2;
3243             
3244             [self addUnitStatus];
3245             
3246             unitColorInitFlag = true;
3247             
3248             [researchPanel close];
3249         }
3250
3251 }
3252
3253 -(void)clickCRL:(id)sender{
3254     
3255     crCRL = (int)[CResearchListTV clickedRow];
3256     if(crCRL < 0)
3257         return;
3258     BUILDCHIP *B;
3259     
3260     B = &BC[buildNum[possionX][possionY]];
3261     
3262     
3263     RESEARCH *Rtop;
3264     UNITCHIP *BU;
3265     
3266     Rtop = B->R;
3267     if(B->R){
3268     BU = B->R->U;
3269     BRU = BU;
3270     for(int i = 0;i <= crCRL;i++){
3271         BU = B->R->U;
3272         BRU = BU;
3273         [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", BU->S_M.ATK]];
3274         [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", BU->S_M.DEF]];
3275         [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", BU->S_M.CAP]];
3276         [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", BU->S_M.ACU]];
3277         [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", BU->S_M.EVA]];
3278         [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", BU->S_M.MOV]];
3279         [researchIMG setImage:BU->imgb];
3280         [researchIMG setImageScaling:NSScaleToFit];
3281         
3282         B->R = B->R->next;
3283     }
3284     B->R = Rtop;
3285         BRUindex = 0;
3286     for (int i = 0; BRU->nameID != UC[i].nameID && i < UCN;i++) {
3287         BRUindex++;
3288         
3289     }
3290         return;
3291     }
3292     
3293     if(buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1){
3294         
3295         int k = 0;
3296         B->R = Rtop;
3297         while (B->R) {
3298             B->R = B->R->next;
3299             k++;
3300         }
3301         
3302         for(int i = k;i <= crCRL;i++){
3303             
3304             [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ATK]];
3305             [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.DEF]];
3306             [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.CAP]];
3307             [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ACU]];
3308             [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.EVA]];
3309             [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp1 + i - k)-1].S_M.MOV]];
3310             [researchIMG setImage:UC[*(GuildDisp1 + i - k)-1].imgb];
3311             [researchIMG setImageScaling:NSScaleToFit];
3312             
3313         }B->R = Rtop;
3314         
3315         BRUindex = 0;
3316         for (int i = 0; UC[*(GuildDisp1 + crCRL - k)-1].nameID != UC[i].nameID && i < UCN;i++) {
3317             BRUindex++;
3318         }BRU = &UC[BRUindex];
3319         
3320     
3321         
3322     }else if(buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3){
3323         
3324         int k = 0;
3325         B->R = Rtop;
3326         while (B->R) {
3327             B->R = B->R->next;
3328             k++;
3329         }
3330         
3331         for(int i = k;i <= crCRL;i++){
3332             
3333             [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ATK]];
3334             [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.DEF]];
3335             [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.CAP]];
3336             [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ACU]];
3337             [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.EVA]];
3338             [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp2 + i - k)-1].S_M.MOV]];
3339             [researchIMG setImage:UC[*(GuildDisp2 + i - k)-1].imgb];
3340             [researchIMG setImageScaling:NSScaleToFit];
3341             
3342         }B->R = Rtop;
3343         
3344   
3345         BRUindex = 0;
3346         for (int i = 0; UC[*(GuildDisp2 + crCRL - k)-1].nameID != UC[i].nameID && i < UCN;i++) {
3347             BRUindex++;
3348         }BRU = &UC[BRUindex];
3349     }
3350
3351     
3352     
3353     
3354     
3355    }
3356
3357 -(void)SetStatusFunc{
3358     double STRfix;
3359     double VITfix;
3360     double AGIfix;
3361     double DEXfix;
3362     double MENfix;
3363     double INTfix;
3364     double LUKfix;
3365     
3366     double S, V, A, D, M, I;
3367     
3368     
3369     
3370     U = UTop;
3371     
3372     while(U){
3373     STRfix = (
3374               U->C.eHandL.STR +
3375               U->C.eHandR.STR +
3376               U->C.eHead.STR +
3377               U->C.eBody.STR +
3378               U->C.eFoot.STR +
3379               U->C.eArm.STR) +
3380     U->C.S_M.STR *(
3381                          U->C.eHandL.pSTR +
3382                          U->C.eHandR.pSTR +
3383                          U->C.eHead.pSTR +
3384                          U->C.eBody.pSTR +
3385                          U->C.eFoot.pSTR +
3386                          U->C.eArm.pSTR +
3387                          0)/100
3388     ;
3389     
3390     VITfix = (
3391               U->C.eHandL.VIT +
3392               U->C.eHandR.VIT +
3393               U->C.eHead.VIT +
3394               U->C.eBody.VIT +
3395               U->C.eFoot.VIT +
3396               U->C.eArm.VIT) +
3397     U->C.S_M.VIT *(
3398                          U->C.eHandL.pVIT +
3399                          U->C.eHandR.pVIT +
3400                          U->C.eHead.pVIT +
3401                          U->C.eBody.pVIT +
3402                          U->C.eFoot.pVIT +
3403                          U->C.eArm.pVIT +
3404                          0)/100
3405     ;
3406     AGIfix = (
3407               U->C.eHandL.AGI +
3408               U->C.eHandR.AGI +
3409               U->C.eHead.AGI +
3410               U->C.eBody.AGI +
3411               U->C.eFoot.AGI +
3412               U->C.eArm.AGI) +
3413     U->C.S_M.AGI *(
3414                          U->C.eHandL.pAGI +
3415                          U->C.eHandR.pAGI +
3416                          U->C.eHead.pAGI +
3417                          U->C.eBody.pAGI +
3418                          U->C.eFoot.pAGI +
3419                          U->C.eArm.pAGI +
3420                          0)/100
3421     ;
3422     DEXfix = (
3423               U->C.eHandL.DEX +
3424               U->C.eHandR.DEX +
3425               U->C.eHead.DEX +
3426               U->C.eBody.DEX +
3427               U->C.eFoot.DEX +
3428               U->C.eArm.DEX) +
3429     U->C.S_M.DEX *(
3430                          U->C.eHandL.pDEX +
3431                          U->C.eHandR.pDEX +
3432                          U->C.eHead.pDEX +
3433                          U->C.eBody.pDEX +
3434                          U->C.eFoot.pDEX +
3435                          U->C.eArm.pDEX +
3436                          0)/100
3437     ;
3438     MENfix = (
3439               U->C.eHandL.MEN +
3440               U->C.eHandR.MEN +
3441               U->C.eHead.MEN +
3442               U->C.eBody.MEN +
3443               U->C.eFoot.MEN +
3444               U->C.eArm.MEN) +
3445     U->C.S_M.MEN *(
3446                          U->C.eHandL.pMEN +
3447                          U->C.eHandR.pMEN +
3448                          U->C.eHead.pMEN +
3449                          U->C.eBody.pMEN +
3450                          U->C.eFoot.pMEN +
3451                          U->C.eArm.pMEN +
3452                          0)/100
3453     ;
3454     INTfix = (
3455               U->C.eHandL.INT +
3456               U->C.eHandR.INT +
3457               U->C.eHead.INT +
3458               U->C.eBody.INT +
3459               U->C.eFoot.INT +
3460               U->C.eArm.INT) +
3461     U->C.S_M.INT *(
3462                          U->C.eHandL.pINT +
3463                          U->C.eHandR.pINT +
3464                          U->C.eHead.pINT +
3465                          U->C.eBody.pINT +
3466                          U->C.eFoot.pINT +
3467                          U->C.eArm.pINT +
3468                          0)/100
3469     ;
3470     LUKfix = (
3471               U->C.eHandL.LUK +
3472               U->C.eHandR.LUK +
3473               U->C.eHead.LUK +
3474               U->C.eBody.LUK +
3475               U->C.eFoot.LUK +
3476               U->C.eArm.LUK) +
3477     U->C.S_M.LUK *(
3478                          U->C.eHandL.pLUK +
3479                          U->C.eHandR.pLUK +
3480                          U->C.eHead.pLUK +
3481                          U->C.eBody.pLUK +
3482                          U->C.eFoot.pLUK +
3483                          U->C.eArm.pLUK +
3484                          0)/100
3485     ;
3486     
3487     S = U->C.S_C.STR + STRfix;
3488     V = U->C.S_C.VIT + VITfix;
3489     A = U->C.S_C.AGI + AGIfix;
3490     D = U->C.S_C.DEX + DEXfix;
3491     M = U->C.S_C.MEN + MENfix;
3492     I = U->C.S_C.INT + INTfix;
3493     
3494     U->C.S_C.ATK = (S*5 + D*2 + A)/8;
3495     U->C.S_C.DEF = (V*5 + M*2 + S)/8;
3496     U->C.S_C.CAP = (I*4 + D*1 + M*2)/7;
3497     U->C.S_C.ACU = (D*4 + A*1 + M)/6;
3498     U->C.S_C.EVA = (A*4 + A*1 + M)/6;
3499         
3500         U->C.S_C.ATK += 0.5;
3501         U->C.S_C.DEF += 0.5;
3502         U->C.S_C.CAP += 0.5;
3503         U->C.S_C.ACU += 0.5;
3504         U->C.S_C.EVA += 0.5;
3505         
3506         U->C.S_C.ATK = floor(U->C.S_C.ATK);
3507         U->C.S_C.DEF = floor(U->C.S_C.DEF);
3508         U->C.S_C.CAP = floor(U->C.S_C.CAP);
3509         U->C.S_C.ACU = floor(U->C.S_C.ACU);
3510         U->C.S_C.EVA = floor(U->C.S_C.EVA);
3511         
3512         U = U->next;
3513     }U = UTop;
3514
3515 }
3516
3517 -(void)initMapscript{
3518
3519     for(int i = 0;i < 9999;i++){
3520         Suicchi[i] = false;
3521     }
3522     
3523     MAPSCRIPT MS = MF[MFselectedRow+1].MS;
3524     MAPSCRIPTD *MSDtop = MS.D;
3525     
3526     if(!MS.D) return;
3527     MAPSCRIPT0 *MSDPt = MS.D->P;
3528     
3529     while(MS.D){
3530         MS.D->endFlag = false;
3531         
3532         
3533         double deltaET = floor(MS.D->ET2) - floor(MS.D->ET1);
3534         int deltaR = 0;
3535         if(deltaET < 0) deltaET = 0;
3536             
3537         if(MS.D->ET1 <= eventTime && MS.D->ET2 >= eventTime){
3538             if(deltaET > 0) deltaR = rand()%(int)deltaET;
3539         }
3540
3541         MS.D->ET3 = MS.D->ET1 + (double)deltaR;
3542         MS.D->ET4 = MS.D->ET3;
3543         
3544         MSDPt = MS.D->P;
3545         while (MS.D->P) {
3546                 MS.D->P->endFlag = false;
3547             MS.D->P = MS.D->P->next;
3548         }MS.D->P = MSDPt;
3549         
3550         MS.D = MS.D->next;
3551     }
3552     
3553     MS.D = MSDtop;
3554     
3555     MSDTO = MSDtop;
3556     MF[MFselectedRow+1].MS = MS;
3557     
3558     [self HensuuLoad];
3559 }
3560
3561 -(void)EventLoopFS:(NSTimer*)time{
3562
3563     if(openingAVP && openingAVPVisActive){
3564         if(openingAVP.rate <= 0 || openingAVPisDeactive){
3565             [openingAVP pause];
3566             openingAVPVisHidden = true;
3567             [self openingAVPVfunc];
3568             openingAVPVisActive = false;
3569             openingAVPisDeactive = false;
3570             if(titleBGM) [titleBGM play];
3571         }
3572     }else if(!openingAVP && openingAVPVisActive){
3573         openingAVPVisActive = false;
3574         openingAVPisDeactive = false;
3575         if(titleBGM) [titleBGM play];
3576     }
3577     
3578     
3579     //NSLog(@"msgCnt %d", msgCnt);
3580     
3581     if(stopByFSVmenuFlag){
3582         [FSMenu makeKeyAndOrderFront:nil];
3583         [menuPanel close];
3584         moveFlag = false;
3585         attackFlag = false;
3586         summonFlag = false;
3587         menuDisplayFlag = false;
3588     }
3589     
3590     if(saveDataLoadedFlag)
3591         return;
3592     
3593     U = UTop;
3594     if(U){
3595     U = UTop;
3596     for(int i = 0;i < DUN[1];i++){
3597         
3598         U = U->next;
3599     }
3600     
3601     //NSLog(@"%d, %d", MF[0].MS.playerSet1, sdd2[0].MS.playerSet1);
3602         
3603     //if(Utarget) NSLog(@"PX %d PY %d UX %d UY %d", possionX, possionY, Utarget->x, Utarget->y);
3604         U = UTop;
3605     }
3606     
3607     if(coolTime){
3608         
3609         lmao++;
3610         
3611         if(lmao > 20){
3612             coolTime = false;
3613             lmao = 0;
3614         }
3615     
3616     }
3617     
3618     if(!fuckingLoadBugFix){
3619         battleRdy = false;
3620         [battleWindow close];
3621     }
3622     
3623     if(extentBattleFlag){
3624         if(!battleSetUp){
3625             battleSetUp = true;
3626             attackingWait = true;
3627             goto ahhh;
3628         }
3629         if(!battleSetUpIgnore){
3630             
3631             battleRdy = false;
3632             battleSet1Flag = false;
3633             battleSet2Flag = false;
3634             battleSettingFlag = false;
3635         extentBattleFlag = false;
3636             extentBattleFlag2 = true;
3637         }
3638     }
3639     if(cpuAtkExtendFlag2){
3640         if(!battleSetUp){
3641             battleSetUp = true;
3642             attackingWait = true;
3643             goto ahhh;
3644         }
3645         if(!battleSetUpIgnore){
3646
3647             
3648             battleRdy = false;
3649             battleSet1Flag = false;
3650             battleSet2Flag = false;
3651             battleSettingFlag = false;
3652         extentBattleFlag = false;
3653         extentBattleFlag2 = true;
3654         cpuAtkExtendFlag2 = false;
3655         [battlePanel close];
3656         }
3657     }if(extentBattleFlag2){
3658         battleFlag = false;
3659     }
3660
3661 ahhh:{}
3662     if(setBattleModeFlag){
3663         if(!battleReadyUpFlag){battleReadyUpFlag = true;
3664             
3665             P[0].resource = 500;
3666             P[0].food = 500;
3667             P[0].money = 500;
3668             P[1].resource = 500;
3669             P[1].food = 500;
3670             P[1].money = 500;
3671             P[2].resource = 500;
3672             P[2].food = 500;
3673             P[2].money = 500;
3674             
3675         [battleReadyUpPN1 setStringValue:P[0].name];
3676         [battleReadyUpPN2 setStringValue:P[1].name];
3677         
3678         NSString *string = @"";
3679         string = [string stringByAppendingFormat:@"%@の勝利条件\n", P[0].name];
3680         if(MF[MFselectedRow+1].MS.EGClight.endType1 == 1){
3681            string = [string stringByAppendingString:@"敵の壊滅\n"];
3682             
3683         }else if(MF[MFselectedRow+1].MS.EGClight.endType1 == 2){
3684             string = [string stringByAppendingString:@"味方の壊滅\n"];
3685             
3686         }
3687         
3688         string = [string stringByAppendingString:@"\n"];
3689         
3690         string = [string stringByAppendingFormat:@"%@の勝利条件\n", P[1].name];
3691         if(MF[MFselectedRow+1].MS.EGCdark.endType1 == 2){
3692             string = [string stringByAppendingString:@"敵の壊滅\n"];
3693         }else if(MF[MFselectedRow+1].MS.EGClight.endType1 == 1){
3694             string = [string stringByAppendingString:@"味方の壊滅\n"];
3695             
3696         }
3697     
3698         
3699         [battleReadyUpSupply1 setIntValue:P[0].resource];
3700         [battleReadyUpFood1 setIntValue:P[0].food];
3701         [battleReadyUpMoney1 setIntValue:P[0].money];
3702         
3703         [battleReadyUpSupply2 setIntValue:P[1].resource];
3704         [battleReadyUpFood2 setIntValue:P[1].food];
3705         [battleReadyUpMoney2 setIntValue:P[1].money];
3706         
3707         if(MF[MFselectedRow+1].MS.playerSet1 == 1){
3708             [battleReadyUpMAN1A setEnabled:NO];
3709             [battleReadyUpMAN1B setEnabled:NO];
3710             [battleReadyUpMAN1A setState:1];
3711             [battleReadyUpMAN1B setState:0];
3712         }else if(MF[MFselectedRow+1].MS.playerSet1 == 2){
3713             [battleReadyUpMAN1A setEnabled:NO];
3714             [battleReadyUpMAN1B setEnabled:NO];
3715             [battleReadyUpMAN1A setState:0];
3716             [battleReadyUpMAN1B setState:1];
3717         }else{
3718             MF[MFselectedRow+1].MS.playerSet1 = 1;
3719             [battleReadyUpMAN1A setEnabled:YES];
3720             [battleReadyUpMAN1B setEnabled:YES];
3721             [battleReadyUpMAN1A setState:1];
3722             [battleReadyUpMAN1B setState:0];
3723         }
3724         
3725         if(MF[MFselectedRow+1].MS.playerSet2 == 1){
3726             [battleReadyUpMAN2A setEnabled:NO];
3727             [battleReadyUpMAN2B setEnabled:NO];
3728             [battleReadyUpMAN2A setState:1];
3729             [battleReadyUpMAN2B setState:0];
3730         }else if(MF[MFselectedRow+1].MS.playerSet2 == 2){
3731             [battleReadyUpMAN2A setEnabled:NO];
3732             [battleReadyUpMAN2B setEnabled:NO];
3733             [battleReadyUpMAN2A setState:0];
3734             [battleReadyUpMAN2B setState:1];
3735         }else{
3736             MF[MFselectedRow+1].MS.playerSet2 = 1;
3737             [battleReadyUpMAN2A setEnabled:YES];
3738             [battleReadyUpMAN2B setEnabled:YES];
3739             [battleReadyUpMAN2A setState:1];
3740             [battleReadyUpMAN2B setState:0];
3741         }
3742             
3743         }
3744         
3745         if(retardhelp1){
3746             if([battleReadyUpMAN1A state] != 0)
3747                 MF[MFselectedRow+1].MS.playerSet1 = 1;
3748             else
3749                 MF[MFselectedRow+1].MS.playerSet1 = 2;
3750             retardhelp1 = false;
3751         }
3752         if(retardhelp2){
3753             if([battleReadyUpMAN2A state] != 0)
3754                 MF[MFselectedRow+1].MS.playerSet2 = 1;
3755             else
3756                 MF[MFselectedRow+1].MS.playerSet2 = 2;
3757             retardhelp2 = false;
3758         }
3759         
3760         return;
3761     }
3762     
3763
3764     
3765     if(buildNum[possionX][possionY] < 0){
3766         [selectMesh setImage:MC[chipNum[possionX][possionY]].img];
3767         [selectMesh setImageScaling:NSScaleToFit];
3768         [selectMeshText setStringValue:MC[chipNum[possionX][possionY]].name];
3769         [selectMeshValue setStringValue:[NSString stringWithFormat:@"%d%", MC[chipNum[possionX][possionY]].dmgfix]];
3770     }else{
3771         [selectMesh setImage:BC[buildNum[possionX][possionY]].img];
3772         [selectMesh setImageScaling:NSScaleToFit];
3773         [selectMeshText setStringValue:BC[buildNum[possionX][possionY]].name];
3774         [selectMeshValue setStringValue:[NSString stringWithFormat:@"%d%", BC[buildNum[possionX][possionY]].dmgfix]];
3775     }
3776     [self SetStatusFunc];
3777     
3778     
3779     if(initStatusFlag){
3780         
3781         
3782         if(1){
3783
3784             if(buildNum[possionX][possionY] < 0){
3785                 [dmgFixTF setStringValue:[NSString stringWithFormat:@"地形効果 %d%",MC[chipNum[possionX][possionY]].dmgfix]];
3786                 
3787                 
3788                 [recoveryTF setStringValue:@""];
3789                 
3790             }else{
3791                 [dmgFixTF setStringValue:[NSString stringWithFormat:@"地形効果 %d%",BC[buildNum[possionX][possionY]].dmgfix]];
3792                 
3793                 NSString *string = [@"" retain];
3794                 
3795                 if(BC[buildNum[possionX][possionY]].recHP > 0 || BC[buildNum[possionX][possionY]].recMP > 0)
3796                     string = [string stringByAppendingString:@"回復 "];
3797                 if(BC[buildNum[possionX][possionY]].recHP > 0)
3798                     string = [string stringByAppendingFormat:@"HP%d%", BC[buildNum[possionX][possionY]].recHP];
3799                 if(BC[buildNum[possionX][possionY]].recMP > 0)
3800                     string = [string stringByAppendingFormat:@"MP%d%", BC[buildNum[possionX][possionY]].recMP];
3801                 
3802                 [recoveryTF setStringValue:string];
3803             }
3804            
3805             if(Uselected){
3806             if(Uselected->chipNumberL < 0){
3807             if(!Uselected->dead){
3808                 
3809                 if(Uselected->team == 0){
3810                     [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[0].name]];
3811                 }
3812                 if(Uselected->team == 2){
3813                     [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[1].name]];
3814                 }
3815                 if(Uselected->team == 1){
3816                     [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[2].name]];
3817                 }
3818                 
3819                 [tfName setStringValue:[NSString stringWithFormat:@"%@", Uselected->C.nameNick]];
3820                 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", Uselected->C.S_C.HP, Uselected->C.S_M.HP]];
3821                 [HPbarLI setIntValue:[[NSString stringWithFormat:@"%g", Uselected->C.S_C.HP/Uselected->C.S_M.HP*100 + 0.5] intValue]];
3822                 [MPbarTF setStringValue:[NSString stringWithFormat:@"MP %g/%g", Uselected->C.S_C.MP, Uselected->C.S_M.MP]];
3823                 [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 %g", Uselected->C.S_C.ATK]];
3824                 [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 %g", Uselected->C.S_C.DEF]];
3825                 [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 %g", Uselected->C.S_C.CAP]];
3826                 [tfHit setStringValue:[NSString stringWithFormat:@"命中値 %g", Uselected->C.S_C.ACU]];
3827                 [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 %g", Uselected->C.S_C.EVA]];
3828                 [tfMove setStringValue:[NSString stringWithFormat:@"移動力 %d", Uselected->C.S_C.MOV]];
3829                 [tfWait setStringValue:[NSString stringWithFormat:@"WT %g", Uselected->C.S_C.WT]];
3830                 [selectChara setImage:Uselected->C.imgb];
3831                 [selectChara setImageScaling:NSScaleToFit];
3832                 
3833                 
3834                
3835             }else{
3836                 [tfName setStringValue:[NSString stringWithFormat:@"----"]];
3837                 [tfArmy setStringValue:[NSString stringWithFormat:@"----"]];
3838                 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP ----"]];
3839                 [HPbarLI setIntValue:[[NSString stringWithFormat:@"0"] intValue]];
3840                 [MPbarTF setStringValue:[NSString stringWithFormat:@"MP ----"]];
3841                 [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
3842                 [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
3843                 [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
3844                 [tfHit setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
3845                 [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
3846                 [tfMove setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
3847                 [tfWait setStringValue:[NSString stringWithFormat:@"WT ----"]];
3848                 [selectChara setImage:NULL];
3849                 
3850             
3851             }
3852             }else{
3853                 if(!Uselected->dead){
3854                     
3855                     if(Uselected->team == 0){
3856                         [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[0].name]];
3857                     }
3858                     if(Uselected->team == 2){
3859                         [tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[1].name]];
3860                     }
3861                     
3862                     [tfName setStringValue:[NSString stringWithFormat:@"%@", Uselected->CL.name]];
3863                     [HPbarTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", Uselected->CL.S_C.HP, Uselected->CL.S_M.HP]];
3864                     [HPbarLI setIntValue:[[NSString stringWithFormat:@"%g", Uselected->CL.S_C.HP/Uselected->CL.S_M.HP*100 + 0.5] intValue]];
3865                     [MPbarTF setStringValue:[NSString stringWithFormat:@"EN %g/%g", Uselected->CL.S_C.EN, Uselected->CL.S_M.EN]];
3866                     [tfAttack setStringValue:[NSString stringWithFormat:@"移動力 %d", Uselected->CL.S_C.MOV]];
3867                     [tfDefence setStringValue:[NSString stringWithFormat:@"運動性 %g", Uselected->CL.S_C.MOB]];
3868                     [tfCalc setStringValue:[NSString stringWithFormat:@"装甲 %g", Uselected->CL.S_C.ARM]];
3869                     [tfHit setStringValue:[NSString stringWithFormat:@"限界 %g", Uselected->CL.S_C.LIM]];
3870                     [tfDodge setStringValue:[NSString stringWithFormat:@""]];
3871                     [tfMove setStringValue:[NSString stringWithFormat:@""]];
3872                     [tfWait setStringValue:[NSString stringWithFormat:@"WT %g", Uselected->CL.S_C.WT]];
3873                     [selectChara setImage:Uselected->CL.imgb];
3874                     [selectChara setImageScaling:NSScaleToFit];
3875                     
3876                     
3877                 }else{
3878                     [tfName setStringValue:[NSString stringWithFormat:@"----"]];
3879                     [tfArmy setStringValue:[NSString stringWithFormat:@"----"]];
3880                     [HPbarTF setStringValue:[NSString stringWithFormat:@"HP ----"]];
3881                     [HPbarLI setIntValue:[[NSString stringWithFormat:@"0"] intValue]];
3882                     [MPbarTF setStringValue:[NSString stringWithFormat:@"MP ----"]];
3883                     [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
3884                     [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
3885                     [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
3886                     [tfHit setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
3887                     [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
3888                     [tfMove setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
3889                     [tfWait setStringValue:[NSString stringWithFormat:@"WT ----"]];
3890                     [selectChara setImage:NULL];
3891                     
3892                 }
3893             
3894             
3895             
3896             }
3897             }else{
3898                 [tfName setStringValue:[NSString stringWithFormat:@"----"]];
3899                 [tfArmy setStringValue:[NSString stringWithFormat:@"----"]];
3900                 [HPbarTF setStringValue:[NSString stringWithFormat:@"HP ----"]];
3901                 [HPbarLI setIntValue:[[NSString stringWithFormat:@"0"] intValue]];
3902                 [MPbarTF setStringValue:[NSString stringWithFormat:@"MP ----"]];
3903                 [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
3904                 [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
3905                 [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
3906                 [tfHit setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
3907                 [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
3908                 [tfMove setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
3909                 [tfWait setStringValue:[NSString stringWithFormat:@"WT ----"]];
3910                 [selectChara setImage:NULL];
3911                 
3912             }
3913         }
3914    
3915     }
3916     
3917     if(unitBreak){
3918     if(unitBreak->team == 0){
3919         [tfResource setStringValue:[NSString stringWithFormat:@"資源 %d", P[0].resource]];
3920         [tfFood setStringValue:[NSString stringWithFormat:@"食料 %d", P[0].food]];
3921         [tfMoney setStringValue:[NSString stringWithFormat:@"資金 %d", P[0].money]];
3922     }else if(unitBreak->team == 2){
3923         [tfResource setStringValue:[NSString stringWithFormat:@"資源 %d", P[1].resource]];
3924         [tfFood setStringValue:[NSString stringWithFormat:@"食料 %d", P[1].food]];
3925         [tfMoney setStringValue:[NSString stringWithFormat:@"資金 %d", P[1].money]];
3926     }else if(unitBreak->team == 1){
3927         [tfResource setStringValue:[NSString stringWithFormat:@"資源 %d", P[2].resource]];
3928         [tfFood setStringValue:[NSString stringWithFormat:@"食料 %d", P[2].food]];
3929         [tfMoney setStringValue:[NSString stringWithFormat:@"資金 %d", P[2].money]];
3930     }
3931     }
3932     
3933     if(menuDisplayFlag){
3934         [self SetMenu];
3935         [self initBCreateList];
3936         [self initCSummonList];
3937     }
3938     
3939     if(initMapFlag && datFileLoadCompFromTitle && !saveDataLoadedFlag){
3940     
3941         mouseDoubleClickedCnt = 0;
3942         mouseDoubleClickedFlag = false;
3943         mouseClicked = false;
3944         messageDialog = false;
3945         
3946         for(int i = 0;i<=1000;i++){
3947             for(int j = 0;j<= 1000;j++){
3948                 buildNum[i][j] = -1;
3949                 unitNum[i][j] = -1;
3950                 loadNum[i][j] = -1;
3951                 buildTeam[i][j] = -1;
3952                 unitTeam[i][j] = -1;
3953             }
3954         }
3955         
3956         [self initUnitStatusDat];
3957         //NSLog(@"%d, %d", unitNum[0][0], MF[MFselectedRow].MS.playerSet1);
3958         [self initBuildStatusDat];
3959         msgCnt = 0;
3960         msgLvl = 0;
3961         msgLvlMax = 0;
3962         initImgFlag = false;
3963         initStringNum = false;
3964         bugFixFlag1 = false;
3965         bugFixFlag2 = false;
3966         bugFixFlag3 = false;
3967         
3968         eventTime = 0;
3969         coolTime = true;
3970         
3971         wtRdy = false;
3972         wtRdy2 = false;
3973         wtRdy3 = false;
3974         
3975         //ここに進行したマップスクリプト値関数
3976         //NSLog(@"%d, %d", unitNum[0][0], MF[MFselectedRow].MS.playerSet1);
3977         [self setTargetListDat];
3978         [self initGuildList];
3979         
3980         for(int i = 0;i < 255;i++){
3981             AUN[i] = 0;
3982             DUN[i] = 0;
3983         }
3984         cpuTurnEndFlag = false;
3985         mapChipDataLoadProc = 0;
3986         
3987         U = UTop;
3988         unitBreak = U;
3989
3990         battleEndFlag = false;
3991         initStatusFlag = true;
3992         TeamCountFlag = true;
3993         cpuTurnEndFlag = false;
3994         unitColorInitFlag = true;
3995         initMapEventFlag = true;
3996         fieldViewBattleInitFlag = true;
3997         MF[MFselectedRow+1].MS = sdd2[datRow].MS;
3998         MF[MFselectedRow+1].MS.D = sdd2[datRow].MS.D;
3999         MSDTOPP = sdd2[datRow].MS.D;
4000         MSDTOP = sdd2[datRow].MS.D;
4001         msdtop = sdd2[datRow].MS.D;
4002         MSDTO = sdd2[datRow].MS.D;
4003         
4004         //if(UTop) NSLog(@"%d, %d, %d", UTop->CPU, unitNum[0][0], MF[MFselectedRow].MS.playerSet1);
4005         datFileLoadCompFromTitle = false;
4006         
4007         BGMsub = NULL;
4008         SEsub = NULL;
4009     }else if (initMapFlag && !initStatusFlag) {
4010         registerNum = 0;
4011         registerNumB = 0;
4012         mouseDoubleClickedCnt = 0;
4013         mouseDoubleClickedFlag = false;
4014         mouseClicked = false;
4015         
4016         wtRdy = false;
4017         wtRdy2 = false;
4018         wtRdy3 = false;
4019         battleEndFlag = false;
4020         
4021         
4022         [self initUnitStatus];
4023         [self initBuildStatus];
4024         
4025         //NSLog(@"%d", unitNum[1][1]);
4026         U = UTop;
4027         
4028         while (U != NULL) {
4029             U->C.S_C.HP = U->C.S_M.HP;
4030             
4031             U = U->next;
4032         }
4033         U = UTop;
4034         
4035         initStatusFlag = true;
4036         unitBreak = U;
4037         TeamCountFlag = true;
4038         
4039         unitColorInitFlag = true;
4040         
4041         MFselectedRow = 0;
4042         for (int i = 1;i < 512;i++) {
4043             if([[SC[storyNumb].nameMAP objectAtIndex:scenarioNumb] isEqualToString:[NSString stringWithFormat:@"%@", MF[i].fileName]])
4044                 break;
4045             MFselectedRow++;
4046         }if(MFselectedRow > 510){
4047             MFselectedRow = 0;
4048             mapChipDataLoadFail = true;
4049         }
4050         
4051         [self initMapscript];
4052         msgLvl = 0;
4053         msgLvlMax = 0;
4054         initImgFlag = false;
4055         initStringNum = false;
4056         bugFixFlag1 = false;
4057         bugFixFlag2 = false;
4058         bugFixFlag3 = false;
4059         
4060         eventTime = 0;
4061         coolTime = true;
4062         
4063         [self setTargetList];
4064
4065         
4066         initMapEventFlag = true;
4067         fieldViewBattleInitFlag = true;
4068         
4069         
4070         for(int i = 0;i < 255;i++){
4071             AUN[i] = 0;
4072             DUN[i] = 0;
4073         }
4074         
4075         [self initGuildList];
4076         cpuTurnEndFlag = false;
4077         mapChipDataLoadProc = 0;
4078     }
4079     
4080     if(mapChipDataLoadFail){
4081         [endGamePanel close];
4082         
4083         endGameCondition = false;
4084         initMapFlag = false;
4085         TeamCountFlag = false;
4086         initStatusFlag = false;
4087         battleBegin = false;
4088         startES = true;
4089         
4090         redWinFlag = false;
4091         blueWinFlag = false;
4092         battleFlag = false;
4093         battleRdy = false;
4094         
4095         mapChipDataLoadFail = false;
4096         
4097         [fsWindow close];
4098         
4099         esSceneProc = 0;
4100         
4101         [BGMsub stop];
4102         BGMsub = NULL;
4103         
4104         endGameCondition = false;
4105         initMapFlag = false;
4106         TeamCountFlag = false;
4107         initStatusFlag = false;
4108         battleBegin = false;
4109         startES = true;
4110         
4111         cpuModeMOVEflag = false;
4112         cpuModeATTACKflag = false;
4113         
4114         redWinFlag = false;
4115         blueWinFlag = false;
4116         cpuAImodeflag = false;
4117         cpuTurnEndFlag = true;
4118         stageClearFlag = false;
4119         waitSwtichFlag = false;
4120         battleReadyUpFlag = false;
4121         setBattleModeFlag = false;
4122         
4123         wtRdy = false;
4124         wtRdy2 = false;
4125         
4126         
4127         Uselected = NULL;
4128         return;
4129     }else if(initMapFlag){
4130         mapChipDataLoadProc++;
4131     }
4132     
4133     if(mapChipDataLoadProc > 2)
4134         mapChipDataLoadProc = 2;
4135     
4136     if(mapChipDataLoadProc == 1){
4137         [fsWindow makeKeyAndOrderFront:nil];
4138         [esWindow close];
4139         [titleWindow close];
4140         mapChipDataLoadProc++;
4141     }
4142     
4143     if(unitBreak){
4144         if(unitBreak->team == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2){
4145             unitBreak->CPU = true;
4146             cpuAImodeflag = true;
4147             //NSLog(@"OMFG");
4148         }else if(unitBreak->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2){
4149             unitBreak->CPU = true;
4150             cpuAImodeflag = true;
4151             //NSLog(@"OMFG");
4152         }else if(unitBreak->team == 1){
4153             unitBreak->CPU = true;
4154             cpuAImodeflag = true;
4155             //NSLog(@"OMFG");
4156         }
4157         else{
4158             unitBreak->CPU = false;
4159             cpuAImodeflag = false;
4160         }
4161     }
4162    
4163     
4164     if(cpuAImodeflag){
4165         if(!cpuTurnEndFlag && unitBreak->C.S_C.WT == 0){
4166             [fieldView modeCPUturn];
4167             CPUturn = true;
4168             //NSLog(@"%d", U->x);
4169         }else{
4170             CPUturn = false;
4171         }
4172         
4173     }else{
4174         CPUturn = false;
4175     }
4176
4177     
4178     //NSLog(@"%p", UTop);
4179     if(battleWindowFlag){battleFlag = true; battleWindowFlag = false;
4180         
4181     }
4182     
4183     if(extentBattleFlag || cpuAtkExtendFlag2){
4184         if(!attackExtentFlag && !cpuAtkExtendFlag2)
4185             attackingWait = true;
4186         else
4187             attackingWait = false;
4188         if(battleRdy)
4189             attackingWait = true;
4190      }
4191     
4192     while(1){
4193         if(battleFlag && !battleSetUp){
4194             
4195             if(Utarget && !battleRdy)
4196                 if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4197                     (unitBreak->team == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4198                     (unitBreak->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2) ||
4199                     (unitBreak->team == 1)
4200                    ){
4201                     
4202                     //おまんこかわいい
4203                     
4204                     vaginaCnt++;
4205                     if(vaginaCnt > 50){
4206                         [self battleStartCPU];//攻撃目標ウェイト
4207                         attackingWait = true;
4208                         vaginaCnt = 0;
4209                         oopsCnt = 80;
4210                         
4211                         if(attackExtentFlag || cpuAtkExtendFlag){
4212                             attackingWait = false;
4213                         }
4214                     }else
4215                         return;
4216                 }
4217             
4218         }
4219         
4220         break;
4221     }
4222     
4223     if(initMapFlag && battleFlag)
4224         if((!attackExtentFlag && !cpuAtkExtendFlag))
4225             if(!battleSettingFlag && attackingWait){
4226                 windowPoint.x = [mapWindow frame].origin.x;
4227                 windowPoint.y = [mapWindow frame].origin.y;
4228                 [battlePanel setFrameOrigin:windowPoint];
4229                 [battlePanel makeKeyAndOrderFront:nil];
4230                 [self setBattlePanel];
4231             }
4232     
4233     if(Utarget && attackingWait){
4234         
4235         if(battleSetUp && ((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4236             (unitBreak->team == 2 && Utarget->team == 1 && MF[MFselectedRow+1].MS.playerSet2 == 2) || (unitBreak->team == 1 && Utarget->team == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4237             (unitBreak->team == 0 && Utarget->team == 1 && MF[MFselectedRow+1].MS.playerSet1 == 2) || (unitBreak->team == 1 && Utarget->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2) ||
4238             (unitBreak->team == 1 && Utarget->team == 1) ||
4239             (unitBreak->team == 2 && Utarget->team == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4240             (unitBreak->team == 0 && Utarget->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2)
4241             )
4242            ){
4243             if(!animationFlag1 && !animationFlag2)
4244                 oopsCnt--;
4245             if(oopsCnt > 0)
4246                 return;
4247             else{
4248                 oopsCnt = 30;//cpu攻撃設定
4249             }
4250             
4251             //battleFlag = false;
4252             battleRdy = false;
4253             battleSet1Flag = false;
4254             battleSet2Flag = false;
4255             battleSettingFlag = false;
4256             attackingWait = false;
4257             
4258         }
4259     }
4260     
4261     
4262     if(Utarget){
4263         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) ||
4264             (unitBreak->team == 0 && Utarget->team == 1 && MF[MFselectedRow+1].MS.playerSet1 == 2) || (unitBreak->team == 1 && Utarget->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2) ||
4265             (unitBreak->team == 1 && Utarget->team == 1) ||
4266             (unitBreak->team == 2 && Utarget->team == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
4267             (unitBreak->team == 0 && Utarget->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2)
4268             )
4269            ){
4270             
4271             
4272             if(!(AVpreview.rate > 0) && !animationFlag1 && !animationFlag2)
4273                 oopsCnt--;
4274             if(oopsCnt > 0)
4275                 return;
4276             else{
4277                 //cpu攻撃ナビ
4278             }
4279             
4280             bLoopFlag = false;
4281         }
4282     }
4283     damnitFixFlag = true;
4284     if(!datFileLoadCompFromTitle && initMapFlag && !battleIsProcFlag){
4285         [self EventFunc:true];
4286         if(crapBugFixFlag){
4287             crapBugFixFlag = false;
4288             return;
4289         }
4290     }
4291     
4292     if(damnitFixFlag)
4293     if(battleSetUp && fuckingLoadBugFix && Uselected && !attackingWait){
4294         if(!battleSetUpIgnore && fuckingLoadBugFix){
4295             [self AttackDisplay];
4296             
4297             windowPoint.x = [mapWindow frame].origin.x;
4298             windowPoint.y = [mapWindow frame].origin.y;
4299             [battleWindow setFrameOrigin:windowPoint];
4300             [battleWindow makeKeyAndOrderFront:nil];
4301         }else if(battleSetUpIgnore){
4302             [mapWindow makeKeyAndOrderFront:nil];
4303         }else{
4304             /*
4305             windowPoint.x = [mapWindow frame].origin.x;
4306             windowPoint.y = [mapWindow frame].origin.y;
4307             [battleWindow setFrameOrigin:windowPoint];
4308             [battleWindow makeKeyAndOrderFront:nil];*/
4309             
4310         }
4311         
4312     }
4313     
4314     U = UTop;
4315     
4316     if(battleRdy && battleSetUp && fuckingLoadBugFix && !battleSetUpIgnore){
4317         [self DisplayMessage];
4318     }
4319     
4320     if(wtRdy3)
4321         return;
4322     U = UTop;
4323     U = unitBreak;
4324     if(battleBegin && !wtRdy2 && !battleFlag)
4325         while (!wtRdy) {
4326             wtPx = 0;
4327             wtPy = 0;
4328             //NSLog(@"eventTime%g", eventTime);
4329             
4330             while (U) {
4331                 if(!U->dead && U->C.S_C.WT > 0) U->C.S_C.WT -= 1;
4332                 if(U->dead) {
4333                     U->C.S_C.WT = 999999;
4334                     //goto lolwtfshit;
4335                 }
4336                 if(U->C.S_C.WT <= 0 && !U->dead){//WTターン周り
4337                     battleEndFlag = false;
4338                     U->C.S_C.WT = 0;
4339                     
4340                     
4341                     wtUnitNum = U->number;
4342                     wtPx = U->x;
4343                     wtPy = U->y;
4344                     wtRdy = true;
4345                     wtRdy2 = true;
4346                     unitBreak = U;
4347                     Uselected = U;
4348                     possionX = unitBreak->x;
4349                     possionY = unitBreak->y;
4350                     //おまんちん
4351                     stanbyFlag = false;
4352                     wtMovedFlag = false;
4353                     wtAttackedFlag = false;
4354                     guildRE1 = false;
4355                     guildRE2 = false;
4356                     
4357                     [fieldView scrollPoint:NSMakePoint((wtPx-8)*32, (wtPy-8)*32)];
4358                     
4359                     
4360                     if(buildNum[U->x][U->y] >= 0){
4361                         B = BTop;
4362                         while(B){
4363                         
4364                             if(B->x == U->x && B->y == U->y){
4365                                 break;
4366                             }
4367                             B = B->next;
4368                         }
4369                         
4370                         if(!B){
4371                             B = BTop;
4372                             goto wtfshit;
4373                            
4374                         }
4375                         
4376                         if(B->C.recHP > 0){
4377                             U->C.S_C.HP += floor(U->C.S_M.HP*B->C.recHP/100);
4378                             if(U->C.S_C.HP >= U->C.S_M.HP) U->C.S_C.HP = U->C.S_M.HP;
4379                         }
4380                         
4381                         if(B->C.recMP > 0){
4382                             U->C.S_C.MP += floor(U->C.S_M.MP*B->C.recMP/100);
4383                             if(U->C.S_C.MP >= U->C.S_M.MP) U->C.S_C.MP = U->C.S_M.MP;
4384                         }
4385                         
4386                         if(B->C.recEN > 0){
4387                             U->CL.S_C.EN += floor(U->CL.S_M.EN*B->C.recEN/100);
4388                             if(U->CL.S_C.EN >= U->CL.S_M.EN) U->CL.S_C.EN = U->CL.S_M.EN;
4389                         }
4390                         
4391                         if(B->C.recHPL > 0){
4392                             U->CL.S_C.HP += floor(U->CL.S_M.HP*B->C.recHPL/100);
4393                             if(U->CL.S_C.HP >= U->CL.S_M.HP) U->CL.S_C.HP = U->CL.S_M.HP;
4394                         }
4395                         
4396                         
4397                         B = BTop;
4398                     }
4399                     
4400                     
4401                     U = UTop;
4402                     
4403                     [self EventFunc:false];
4404                     pussyCumsOnlyOnceFlag = false;
4405                     
4406                     goto lolwtfshit;
4407                 }
4408                 
4409             wtfshit:{}
4410                 
4411                 U = U->next;
4412                 if(!U) {
4413                     BTop = B;
4414                     while(B){
4415                         if(!B->dead) B->C.S_C.WTE -= 1;
4416                         if(B->C.S_C.WTE <= 0){
4417                             
4418                             if(B->team == 0){
4419                                 P[0].resource += B->C.Esupply;
4420                                 P[0].food += B->C.Efood;
4421                                 P[0].money += B->C.Emoney;
4422                             }
4423                             if(B->team == 2){
4424                                 P[1].resource += B->C.Esupply;
4425                                 P[1].food += B->C.Efood;
4426                                 P[1].money += B->C.Emoney;
4427                             }
4428                             if(B->team == 1){
4429                                 P[2].resource += B->C.Esupply;
4430                                 P[2].food += B->C.Efood;
4431                                 P[2].money += B->C.Emoney;
4432                             }
4433                             
4434                             B->C.S_C.WTE = B->C.S_M.WTE;
4435                         }
4436                         B = B->next;
4437                     }B = BTop;
4438                 }
4439             }
4440             eventTime++;
4441             U = UTop;
4442             
4443             //NSLog(@"%g", eventTime);
4444             [self EventFunc:false];
4445             
4446             pussyCumsOnlyOnceFlag = false;
4447             wtRdy = false;
4448             //NSLog(@"eventTime%g", eventTime);
4449             if(!U) break;
4450             //if(wtRdy3) break;
4451           
4452         }
4453     lolwtfshit:{}
4454     U = UTop;
4455     
4456     
4457     
4458     
4459     
4460     
4461     
4462
4463     
4464     if(buildSelectedFlag){
4465         windowPoint.x = [mapWindow frame].origin.x;
4466         windowPoint.y = [mapWindow frame].origin.y;
4467         [researchPanel setFrameOrigin:windowPoint];
4468         if([self setBuildList]){
4469             [researchPanel makeKeyAndOrderFront:nil];
4470         };
4471         buildSelectedFlag = false;
4472     }
4473     
4474     if(TeamCountFlag && !endGameCondition){
4475         U = UTop;
4476         TeamCount0 = 0;
4477         TeamCount2 = 0;
4478         while(U){
4479             if((U->team == 0 || U->team == 1) && !U->dead){
4480                 TeamCount0++;
4481             }
4482             else if(U->team == 2 && !U->dead){
4483                 TeamCount2++;
4484             }
4485             U = U->next;
4486         }
4487         U = UTop;
4488         
4489         
4490         if(targType1cnt[1] == 0 || targType2cnt[1] == 0){
4491             endGameCondition = true;
4492             redWinFlag = true;
4493             [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[1].name]];
4494             
4495         }
4496         if(targType1cnt[0] == 0 || targType2cnt[0] == 0){
4497             endGameCondition = true;
4498             blueWinFlag = true;
4499             [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
4500             
4501         }
4502         
4503         if(targType2Dflag){
4504             endGameCondition = true;
4505             redWinFlag = true;
4506             [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[1].name]];
4507             
4508         }
4509         if(targType2Lflag){
4510             endGameCondition = true;
4511             blueWinFlag = true;
4512             [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
4513             
4514         }
4515         
4516         if(TeamCount0 == 0 && (MF[MFselectedRow+1].MS.EGCdark.endType1 == 2 || MF[MFselectedRow+1].MS.EGCdark.endType2 == 2)){
4517             endGameCondition = true;
4518             redWinFlag = true;
4519             [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[1].name]];
4520         }
4521         if(TeamCount2 == 0 && (MF[MFselectedRow+1].MS.EGClight.endType1 == 1 || MF[MFselectedRow+1].MS.EGClight.endType2 == 1)){
4522             endGameCondition = true;
4523             blueWinFlag = true;
4524             [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
4525             
4526         }
4527     }
4528     
4529     
4530     static int endGamePanelWait = 100;
4531     
4532     if(endGameCondition && !battleRdy){
4533         
4534         if(redWinFlag && blueWinFlag){
4535             
4536         
4537         }else{
4538             windowPoint.x = [mapWindow frame].origin.x+30;
4539             windowPoint.y = [mapWindow frame].origin.y+200;
4540             [endGamePanel setFrameOrigin:windowPoint];
4541             [endGamePanel makeKeyAndOrderFront:nil];
4542             endGamePanelWait--;
4543             if(endGamePanelWait > 0) return;
4544         }
4545         
4546         [endGamePanel close];
4547
4548         [fsWindow close];
4549         
4550         esSceneProc = 0;
4551         
4552         [BGMsub stop];
4553         BGMsub = NULL;
4554         
4555         endGameCondition = false;
4556         initMapFlag = false;
4557         TeamCountFlag = false;
4558         initStatusFlag = false;
4559         battleBegin = false;
4560         startES = true;
4561         
4562         cpuModeMOVEflag = false;
4563         cpuModeATTACKflag = false;
4564         
4565         redWinFlag = false;
4566         blueWinFlag = false;
4567         cpuAImodeflag = false;
4568         cpuTurnEndFlag = true;
4569         waitSwtichFlag = false;
4570         
4571         wtRdy = false;
4572         wtRdy2 = false;
4573         Uselected = NULL;
4574         
4575         endGamePanelWait = 100;
4576         stageClearFlag = false;
4577         stageClearFlag2 = false;
4578         battleReadyUpFlag = false;
4579         setBattleModeFlag = false;
4580     }
4581     if(backTitleFlag){
4582     
4583         [titleWindow makeKeyAndOrderFront:nil];
4584         [fsWindow close];
4585         
4586         esSceneProc = 0;
4587         
4588         [BGMsub stop];
4589         BGMsub = NULL;
4590         
4591         endGameCondition = false;
4592         initMapFlag = false;
4593         TeamCountFlag = false;
4594         initStatusFlag = false;
4595         battleBegin = false;
4596         startES = false;
4597         
4598         cpuModeMOVEflag = false;
4599         cpuModeATTACKflag = false;
4600         
4601         redWinFlag = false;
4602         blueWinFlag = false;
4603         cpuAImodeflag = false;
4604         cpuTurnEndFlag = true;
4605         backTitleFlag = false;
4606         backTitleFlag2 = true;
4607         waitSwtichFlag = false;
4608         battleReadyUpFlag = false;
4609         setBattleModeFlag = false;
4610         
4611         
4612         wtRdy = false;
4613         wtRdy2 = false;
4614         
4615         Uselected = NULL;
4616     
4617     }if(stageClearFlag){
4618         
4619         if(stageClearFlag2){
4620         
4621             endGameCondition = true;
4622             blueWinFlag = true;
4623             [endGameText setStringValue:[NSString stringWithFormat:@"%@の勝利!", P[0].name]];
4624         
4625         
4626         
4627             return;
4628         }
4629         
4630         [fsWindow close];
4631         
4632         esSceneProc = 0;
4633         
4634         [BGMsub stop];
4635         BGMsub = NULL;
4636         
4637         endGameCondition = false;
4638         initMapFlag = false;
4639         TeamCountFlag = false;
4640         initStatusFlag = false;
4641         battleBegin = false;
4642         startES = true;
4643         
4644         cpuModeMOVEflag = false;
4645         cpuModeATTACKflag = false;
4646         
4647         redWinFlag = false;
4648         blueWinFlag = false;
4649         cpuAImodeflag = false;
4650         cpuTurnEndFlag = true;
4651         stageClearFlag = false;
4652         waitSwtichFlag = false;
4653         battleReadyUpFlag = false;
4654         setBattleModeFlag = false;
4655         
4656         wtRdy = false;
4657         wtRdy2 = false;
4658         
4659         
4660         Uselected = NULL;
4661         
4662     }
4663     
4664     if(gameOverFlag){
4665         
4666         
4667         [GameOverIV setImage:gaov.img];
4668         
4669         
4670         [GameOverWindow makeKeyAndOrderFront:nil];
4671         [fsWindow close];
4672         
4673         endGameCondition = false;
4674         initMapFlag = false;
4675         TeamCountFlag = false;
4676         initStatusFlag = false;
4677         battleBegin = false;
4678         startES = true;
4679         
4680         cpuModeMOVEflag = false;
4681         cpuModeATTACKflag = false;
4682         
4683         redWinFlag = false;
4684         blueWinFlag = false;
4685         cpuAImodeflag = false;
4686         cpuTurnEndFlag = true;
4687         backTitleFlag = false;
4688         gameOverFlag = false;
4689         gameOverFlag2 = true;
4690         waitSwtichFlag = false;
4691         battleReadyUpFlag = false;
4692         setBattleModeFlag = false;
4693         
4694         wtRdy = false;
4695         wtRdy2 = false;
4696         Uselected = NULL;
4697         
4698     }
4699     
4700     /*
4701     if(Uselected)
4702         if(!Uselected->dead){
4703             
4704             U = UTop;
4705             
4706             while (U->number != wtUnitNum) {
4707                 U = U->next;
4708             }
4709             
4710             if(!wtMovedFlag && !wtAttackedFlag){
4711                 U->C.S_C.WT = floor(U->C.S_M.WT/4 + 0.5);
4712             }else if(wtMovedFlag && wtAttackedFlag){
4713                 U->C.S_C.WT =  floor(U->C.S_M.WT + 0.5);
4714             }else if(wtMovedFlag){
4715                 U->C.S_C.WT =  floor(U->C.S_M.WT/2 + 0.5);
4716             }else if(wtAttackedFlag){
4717                 U->C.S_C.WT =  floor(U->C.S_M.WT/2 + 0.5);
4718             }
4719             
4720             U = UTop;
4721             
4722             wtRdy = false;
4723         }
4724     */
4725     if(summonRdyFlag){
4726         U = UTop;
4727         
4728         
4729         U = CSLU;
4730         
4731         if(U->team == 0){
4732             
4733             SKILL *sTop = U->C.S;
4734             
4735             while (U->C.S) {
4736                 if(U->C.S->type == 2) break;
4737                 U->C.S = U->C.S->next;
4738             }
4739             
4740             U->C.S_C.MP -= U->C.S->cost[crCSL];
4741             
4742             if(!U->C.S){
4743                 U->C.S = sTop;
4744                 U = UTop;
4745                 return;
4746             }
4747             
4748             
4749             unitNum[possionX][possionY] = U->C.S->list[crCSL]-1;
4750             unitTeam[possionX][possionY] = 0;
4751             
4752             
4753             
4754             U->C.S = sTop;
4755             
4756             U = UTop;
4757             [self addSummonStatus];
4758             unitColorInitFlag = true;
4759
4760         }else if(U->team == 2){
4761             
4762             SKILL *sTop = U->C.S;
4763             
4764             while (U->C.S) {
4765                 if(U->C.S->type == 2) break;
4766                 U->C.S = U->C.S->next;
4767             }
4768             
4769             U->C.S_C.MP -= U->C.S->cost[crCSL];
4770             
4771             if(!U->C.S){
4772                 U->C.S = sTop;
4773                 U = UTop;
4774                 return;
4775             }
4776             
4777             unitNum[possionX][possionY] = U->C.S->list[crCSL]-1;
4778             unitTeam[possionX][possionY] = 2;
4779             
4780             U->C.S = sTop;
4781             unitColorInitFlag = true;
4782             
4783             U = UTop;
4784             [self addSummonStatus];
4785             unitColorInitFlag = true;
4786         }
4787     
4788         summonRdyFlag = false;
4789         cslRdy = false;
4790         
4791         U = UTop;
4792     }
4793     
4794     
4795     
4796     if(unitMoveEndFlag){
4797         //pussyLoopFlag = false;
4798     }
4799     
4800     
4801     w000p:
4802     
4803     
4804     if(displayBattleCheckPanelFlag == 1){
4805         displayBattleCheckPanelFlag = 2;
4806         battleFlag = true;
4807         windowPoint.x = [mapWindow frame].origin.x;
4808         windowPoint.y = [mapWindow frame].origin.y;
4809         [atkPanel setFrameOrigin:windowPoint];
4810     }
4811     
4812     
4813     
4814     U = UTop;
4815     
4816     
4817     
4818     
4819
4820 }
4821
4822 -(void)EventFunc:(bool)eventLoopProcFlag{
4823     
4824     
4825         
4826     
4827     if(battleSetUp){
4828         pussyLoopFlag = false;
4829     }
4830     
4831     
4832     if(attackingWait){
4833         return;
4834     }
4835
4836     
4837     if(battleBegin && !pussyLoopFlag){
4838         //wtRdy3 = true;
4839         bool proccessTrue = false;
4840         static bool onlyBigin = false;
4841         MAPSCRIPT MS = MF[MFselectedRow+1].MS;
4842         MAPSCRIPTD *MSDtop;
4843         MSDtop = MSDTO;
4844         if(!MSDtop){
4845             wtRdy3 = false;
4846             return;
4847         }
4848         
4849         
4850         if(!onlyBigin){
4851             MSDP0top = MS.D->P;
4852             onlyBigin = true;
4853         }
4854         
4855         
4856         
4857         while (MS.D) {
4858             int proccesType = -1;
4859             
4860             bool EventFailFlag = false;
4861             static bool PtopFlag = false;
4862             
4863             
4864             enum{
4865                 ENTIRE_MAP,
4866                 CENTER_POINT
4867             };
4868             
4869             
4870             while(MS.D){
4871                 if(MS.D->endFlag){
4872                     MS.D = MS.D->next;
4873                 }
4874                 else
4875                     break;
4876             }
4877             
4878             if(!MS.D) {
4879                 break;
4880             }
4881         
4882             PtopFlag = false;
4883             
4884             if(!PtopFlag){
4885                 MSDPtop = MS.D->P;
4886                 PtopFlag = true;
4887             }
4888             
4889             if(MS.D)
4890                 while(MS.D->P){
4891                     if(MS.D->P->endFlag)
4892                         MS.D->P = MS.D->P->next;
4893                     else
4894                         break;
4895                 }
4896             
4897                 while(MS.D->P){
4898                     if(!eventLoopProcFlag && MS.D->P->type == 0){
4899                         proccessTrue = false;
4900                         MS.D->P = MS.D->P->next;
4901                         continue;
4902                     }
4903                     break;
4904                 }
4905             
4906             if(!MS.D->P){
4907                 MS.D->endFlag = true;
4908                 messageDialog = false;
4909                 [self setMessage:NULL];
4910                 MS.D->P = MSDPtop;
4911                 PtopFlag = false;
4912                 
4913                 
4914                 MAPSCRIPT0 *MSDPT = MS.D->P;
4915                 
4916                 if(MS.D->ETtype == 0){
4917                     
4918                 }else if(MS.D->ETtype == 1){
4919                     bool resultFailFlag = false;
4920                     while(MS.D->P){
4921                         if(!MS.D->P->endFlag)
4922                             resultFailFlag = true;
4923                         MS.D->P = MS.D->P->next;
4924                     }MS.D->P = MSDPT;
4925                     
4926                     if(resultFailFlag)
4927                         while(MS.D->P){
4928                             MS.D->P->endFlag = false;
4929                             MS.D->P = MS.D->P->next;
4930                         }MS.D->P = MSDPT;
4931                     
4932                 }else if(MS.D->ETtype == 2){
4933                     
4934                     bool resultFailFlag = false;
4935                     while(MS.D->P){
4936                         if(!MS.D->P->succeessfulFlag)
4937                             resultFailFlag = true;
4938                         MS.D->P = MS.D->P->next;
4939                     }MS.D->P = MSDPT;
4940                     
4941                     if(resultFailFlag)
4942                         while(MS.D->P){
4943                             MS.D->P->endFlag = false;
4944                             MS.D->P = MS.D->P->next;
4945                         }MS.D->P = MSDPT;
4946                 }else if(MS.D->ETtype == 3){
4947                     
4948                     bool resultFailFlag = false;
4949                     while(MS.D->P){
4950                         if(!MS.D->P->succeessfulFlag){
4951                             resultFailFlag = false;
4952                             break;
4953                         }
4954                         MS.D->P = MS.D->P->next;
4955                         resultFailFlag = true;
4956                     }MS.D->P = MSDPT;
4957                     
4958                     if(resultFailFlag)
4959                         while(MS.D->P){
4960                             MS.D->P->endFlag = false;
4961                             MS.D->P = MS.D->P->next;
4962                         }MS.D->P = MSDPT;
4963                     //NSLog(@"%d", UTop->x);
4964                 }else if(MS.D->ETtype == 4){
4965                     while(MS.D->P){
4966                         MS.D->P->endFlag = false;
4967                         MS.D->P = MS.D->P->next;
4968                     }MS.D->P = MSDPT;
4969                 }
4970                 
4971             }
4972             if(!MS.D) {
4973                 
4974                 break;
4975             }
4976             
4977             if(!PtopFlag){
4978                 MSDPtop = MS.D->P;
4979                 PtopFlag = true;
4980             }
4981             
4982             if(MS.D->switch1)
4983                 for(int i = 0;*(MS.D->switch1+i)>0;i++){
4984                     if(Suicchi[*(MS.D->switch1+i)])
4985                         continue;
4986                     
4987                     EventFailFlag = true;
4988                 }
4989             
4990             if(MS.D->switch2)
4991                 for(int i = 0;*(MS.D->switch2+i)>0;i++){
4992                     if(!Suicchi[*(MS.D->switch2+i)])
4993                         continue;
4994                     
4995                     EventFailFlag = true;
4996                 }
4997             //NSLog(@"%g", eventTime);
4998             
4999             //if(!MS.D->endFlag)
5000             if(eventTime == MS.D->ET4 || MS.D->ET4 == 0 || MS.D->initialDeleyedFlag){
5001                 
5002                 if(MS.D->P->type == 6){
5003                 if(eventTime == MS.D->ET4){
5004                     MS.D->P->S4.lagFixFlag = false;
5005                 }
5006                 else if(unitMoveEndFlag){
5007                     MS.D->P->S4.lagFixFlag = false;
5008                 }
5009                 else if(battleSetUp){
5010                     MS.D->P->S4.lagFixFlag = false;
5011                 }
5012                 else if(pushStanbyFlag){
5013                     MS.D->P->S4.lagFixFlag = false;
5014                 }
5015                 else if(battleEndFlag){
5016                     MS.D->P->S4.lagFixFlag = false;
5017                 }
5018                 else if(!MS.D->P->S4.lagFixFlag && MS.D->ET4 == 0){
5019                         MS.D->P->S4.lagFixFlag = true;
5020                     }
5021                 }
5022                 
5023                 if(MS.D->P->S4.lagFixFlag){
5024                     //NSLog(@"%g", eventTime);
5025                     proccessTrue = false;
5026                     goto jonny;
5027                 }
5028                 
5029                 proccessTrue = true;
5030                 if(MS.D->ET4 > 0){
5031                     
5032                     double deltaET = floor(MS.D->ET2) - floor(MS.D->ET1);
5033                     int deltaR = 0;
5034                     if(deltaET < 0) deltaET = 0;
5035                     
5036                     if(MS.D->ET1 <= eventTime && MS.D->ET2 >= eventTime){
5037                         if(deltaET > 0) deltaR = rand()%(int)deltaET;
5038                     }
5039                     
5040                     MS.D->ET3 = MS.D->ET1 + (double)deltaR;
5041                     
5042                     if(!MS.D->onlyInitialDeley) {
5043                         MS.D->ET4 += MS.D->ET3;
5044                     }else{
5045                         MS.D->initialDeleyedFlag = true;
5046                     }
5047                 }
5048                 
5049                // NSLog(@"%g %d", eventTime, P[0].resource);
5050             }else{
5051             
5052                 if(wtRdy3){
5053                     proccessTrue = true;
5054                     goto jonny;
5055                 }
5056                 
5057                 MS.D = MS.D->next;
5058                 
5059                 continue;
5060             }
5061             
5062         jonny:{}
5063             
5064             if(MS.D->type == -1 && !EventFailFlag)
5065                 proccesType = ENTIRE_MAP;
5066             if(MS.D->type == 0 && pushStanbyFlag && (Uselected->x == MS.D->x && Uselected->y == MS.D->y) && !EventFailFlag)
5067                 proccesType = CENTER_POINT;
5068             else if(MS.D->type == 0){
5069                 proccesType = CENTER_POINT;
5070                 proccessTrue = false;
5071                 EventFailFlag = true;
5072             }
5073             
5074             if(MS.D->endFlag){
5075                 MS.D = MS.D->next;
5076                 continue;
5077             }
5078             
5079             if(MS.D->ET4 != 0 && pussyCumsOnlyOnceFlag){
5080                 EventFailFlag = true;
5081             }
5082             
5083             marry:{}
5084             if(EventFailFlag  || !proccessTrue){
5085                 MS.D->P = MSDPtop;
5086                 MS.D = MS.D->next;
5087                 continue;
5088             }
5089             
5090             if(!eventLoopProcFlag && MS.D->P->type == 0)
5091                 proccessTrue = false;
5092                 
5093             if(proccessTrue)
5094                 switch (proccesType) {
5095                     case ENTIRE_MAP:
5096                         MS.D->P = [self setEvent:MS.D->P];
5097                         
5098                         if(messageDialog){
5099                             MS.D->P = MSDPtop;
5100                             MS.D = MSDtop;
5101                             return;
5102                         }
5103                         if(waitSwtichFlag) {
5104                             MS.D->P = MSDPtop;
5105                             MS.D = MSDtop;
5106                             return;
5107                         }if(backTitleFlag){
5108                             MS.D->P = MSDPtop;
5109                             MS.D = MSDtop;
5110                             return;
5111                             
5112                         }if(stageClearFlag){
5113                             MS.D->P = MSDPtop;
5114                             MS.D = MSDtop;
5115                             return;
5116                             
5117                         }if(gameOverFlag){
5118                             MS.D->P = MSDPtop;
5119                             MS.D = MSDtop;
5120                             return;
5121                             
5122                         }
5123                         MS.D->P = MSDPtop;
5124                         break;
5125                     case CENTER_POINT:
5126                         MS.D->P = [self setEvent:MS.D->P];
5127                         if(messageDialog){
5128                             MS.D->P = MSDPtop;
5129                             MS.D = MSDtop;
5130                             return;
5131                         }
5132                         if(waitSwtichFlag) {
5133                             MS.D->P = MSDPtop;
5134                             MS.D = MSDtop;
5135                             return;
5136                         }if(backTitleFlag){
5137                             MS.D->P = MSDPtop;
5138                             MS.D = MSDtop;
5139                             return;
5140                             
5141                         }if(stageClearFlag){
5142                             MS.D->P = MSDPtop;
5143                             MS.D = MSDtop;
5144                             return;
5145                             
5146                         }if(gameOverFlag){
5147                             MS.D->P = MSDPtop;
5148                             MS.D = MSDtop;
5149                             return;
5150                             
5151                         }
5152                         MS.D->P = MSDPtop;
5153                         break;
5154                         
5155                     default:
5156                         MS.D->P = MSDPtop;
5157                         break;
5158                 }
5159             
5160             MS.D->P = MSDPtop;
5161             
5162             
5163             bool PnextFlag = false;
5164             
5165             MS.D->P = MSDPtop;
5166             while (MS.D->P) {
5167                 if(MS.D->P->endFlag){
5168                     MS.D->P = MS.D->P->next;
5169                 }else{
5170                     break;
5171                 }
5172                 if(!MS.D->P){
5173                     PnextFlag = true;
5174                 }
5175             }
5176             
5177             MS.D->P = MSDPtop;
5178             PtopFlag = true;
5179             if(PnextFlag){
5180                 MS.D = MS.D->next;
5181                 PtopFlag = false;
5182             }
5183
5184             continue;
5185         }
5186         MS.D = MSDtop;
5187         
5188         while(MS.D){
5189             
5190             MAPSCRIPT0 *MSDPT = MS.D->P;
5191             if(MS.D->ETtype == 0){
5192                 while(MS.D->P){
5193                     MS.D->P->succeessfulFlag = true;
5194                     MS.D->endFlag = true;
5195                     MS.D->P = MS.D->P->next;
5196                 }MS.D->P = MSDPT;
5197             }else if(MS.D->ETtype == 1){
5198                 bool resultFailFlag = false;
5199                 while(MS.D->P){
5200                     if(!MS.D->P->endFlag)
5201                         resultFailFlag = true;
5202                     MS.D->P = MS.D->P->next;
5203                 }MS.D->P = MSDPT;
5204                 
5205                 if(resultFailFlag)
5206                     while(MS.D->P){
5207                         MS.D->P->succeessfulFlag = false;
5208                         MS.D->endFlag = false;
5209                         MS.D->P->endFlag = false;
5210                         MS.D->P = MS.D->P->next;
5211                     }MS.D->P = MSDPT;
5212                 
5213             }else if(MS.D->ETtype == 2){
5214                 
5215                 bool resultFailFlag = false;
5216                 while(MS.D->P){
5217                     if(!MS.D->P->succeessfulFlag)
5218                         resultFailFlag = true;
5219                     MS.D->P = MS.D->P->next;
5220                 }MS.D->P = MSDPT;
5221                 
5222                 if(resultFailFlag)
5223                     while(MS.D->P){
5224                         MS.D->P->succeessfulFlag = false;
5225                         MS.D->endFlag = false;
5226                         MS.D->P->endFlag = false;
5227                         MS.D->P = MS.D->P->next;
5228                     }MS.D->P = MSDPT;
5229             }else if(MS.D->ETtype == 3){
5230                 
5231                 bool resultFailFlag = false;
5232                 while(MS.D->P){
5233                     if(!MS.D->P->succeessfulFlag){
5234                         resultFailFlag = false;
5235                         break;
5236                     }
5237                     resultFailFlag = true;
5238                     MS.D->P = MS.D->P->next;
5239                 }MS.D->P = MSDPT;
5240                 
5241                 if(resultFailFlag)
5242                     while(MS.D->P){
5243                         MS.D->P->succeessfulFlag = false;
5244                         MS.D->endFlag = false;
5245                         MS.D->P->endFlag = false;
5246                         MS.D->P = MS.D->P->next;
5247                     }MS.D->P = MSDPtop;
5248             }else if(MS.D->ETtype == 4){
5249                 while(MS.D->P){
5250                     MS.D->P->succeessfulFlag = false;
5251                     MS.D->P->endFlag = false;
5252                     MS.D->endFlag = false;
5253                     MS.D->P = MS.D->P->next;
5254                 }MS.D->P = MSDPT;
5255             }
5256             
5257             MS.D->P = MSDPT;
5258             MS.D = MS.D->next;
5259         }
5260         
5261         MS.D = MSDtop;
5262         
5263         
5264         
5265         MF[MFselectedRow+1].MS.D = MS.D;
5266         
5267         cpuTurnEndFlag = false;
5268         battleSetUpIgnore = false;
5269         if(!eventLoopProcFlag){
5270             pussyCumsOnlyOnceFlag = true;
5271         
5272         }else
5273             fuckingLoadBugFix = true;
5274         //wtRdy3 = false;
5275     }
5276
5277
5278 }
5279
5280 -(MAPSCRIPT0*)setEvent:(MAPSCRIPT0*)MS0{
5281
5282     enum{
5283         MESSAGE_FLAG,
5284         SELECTION_FLAG,
5285         INPUTNUMBER_FLAG,
5286         SWITCH_FLAG,
5287         VALUE_FLAG,
5288         TIMER_FLAG,
5289         BRANCH_FLAG,
5290         LABEL_FLAG,
5291         LABELJUMP_FLAG,
5292         COMMENT_FLAG,
5293         RESOURCE_FLAG,
5294         STATUS_FLAG = 15,
5295         APPEARANCE_FLAG = 22,
5296         DISSAPPEARANCE_FLAG = 23,
5297         WAIT_FLAG = 25,
5298         BGM_FLAG =28,
5299         SE_FLAG =30,
5300         GAMEOVER_FLAG = 35,
5301         STAGECLEAR_FLAG = 36,
5302         TITLE_FLAG = 37,
5303     };
5304
5305     int Proc = -1;
5306     
5307     if(MS0->type == 0)
5308         Proc = MESSAGE_FLAG;
5309     if(MS0->type == 1)
5310         Proc = SELECTION_FLAG;
5311     if(MS0->type == 2)
5312         Proc = INPUTNUMBER_FLAG;
5313     if(MS0->type == 3)
5314         Proc = SWITCH_FLAG;
5315     if(MS0->type == 4)
5316         Proc = VALUE_FLAG;
5317     if(MS0->type == 5)
5318         Proc = TIMER_FLAG;
5319     if(MS0->type == 6)
5320         Proc = BRANCH_FLAG;
5321     if(MS0->type == 7)
5322         Proc = LABEL_FLAG;
5323     if(MS0->type == 8)
5324         Proc = LABELJUMP_FLAG;
5325     if(MS0->type == 9)
5326         Proc = COMMENT_FLAG;
5327     if(MS0->type == 10)
5328         Proc = RESOURCE_FLAG;
5329     if(MS0->type == 15)
5330         Proc = STATUS_FLAG;
5331     if(MS0->type == 22)
5332         Proc = APPEARANCE_FLAG;
5333     if(MS0->type == 23)
5334         Proc = DISSAPPEARANCE_FLAG;
5335     if(MS0->type == 25)
5336         Proc = WAIT_FLAG;
5337     if(MS0->type == 28)
5338         Proc = BGM_FLAG;
5339     if(MS0->type == 30)
5340         Proc = SE_FLAG;
5341     if(MS0->type == 35)
5342         Proc = GAMEOVER_FLAG;
5343     if(MS0->type == 36)
5344         Proc = STAGECLEAR_FLAG;
5345     if(MS0->type == 37)
5346         Proc = TITLE_FLAG;
5347     
5348
5349         
5350     
5351     switch(Proc){
5352             
5353         case MESSAGE_FLAG:
5354             messageDialog = true;
5355             [self setMessage:MS0];
5356             coolTime = true;
5357             fuckingLoadBugFix = false;
5358             break;
5359         case SELECTION_FLAG:
5360             
5361             MS0 = [self setSelection:MS0];
5362             coolTime = true;
5363             break;
5364         case INPUTNUMBER_FLAG:
5365             MS0 = [self setDefault:MS0];
5366             coolTime = true;
5367             break;
5368     
5369         case SWITCH_FLAG:
5370             MS0 = [self setSwitch:MS0];
5371             break;
5372         case VALUE_FLAG:
5373             MS0 = [self setDefault:MS0];
5374             break;
5375         case TIMER_FLAG:
5376             MS0 = [self setDefault:MS0];
5377             break;
5378         case BRANCH_FLAG:
5379             MS0 = [self setBranch:MS0];
5380             break;
5381         case LABEL_FLAG:
5382             MS0 = [self setLabel:MS0];
5383             break;
5384         case LABELJUMP_FLAG:
5385             MS0 = [self setLabelJump:MS0];
5386             break;
5387         case COMMENT_FLAG:
5388             MS0 = [self setComment:MS0];
5389             break;
5390         case RESOURCE_FLAG:
5391             MS0 = [self setResource:MS0];
5392             break;
5393         case STATUS_FLAG:
5394             MS0 = [self setStatus:MS0];
5395             break;
5396         case APPEARANCE_FLAG:
5397             MS0 = [self setAppearance:MS0];
5398             break;
5399         case DISSAPPEARANCE_FLAG:
5400             MS0 = [self setDissappearance:MS0];
5401             break;
5402         case WAIT_FLAG:
5403             MS0 = [self setWait:MS0];
5404             break;
5405         case BGM_FLAG:
5406             MS0 = [self setBGM:MS0];
5407             break;
5408         case SE_FLAG:
5409             MS0 = [self setSE:MS0];
5410             break;
5411         case GAMEOVER_FLAG:
5412             MS0 = [self setGameOver:MS0];
5413             coolTime = true;
5414             break;
5415         case STAGECLEAR_FLAG:
5416             MS0 = [self setStageClear:MS0];
5417             break;
5418         case TITLE_FLAG:
5419             MS0 = [self setTitleBack:MS0];
5420             break;
5421             
5422     }
5423     
5424
5425     return MS0;
5426 }
5427 -(void)setTargetListDat{
5428     targType1cnt[0] = -1;
5429     targType1cnt[1] = -1;
5430     targType2cnt[0] = -1;
5431     targType2cnt[1] = -1;
5432     targType2Lflag = false;
5433     targType2Dflag = false;
5434     
5435     /*
5436     MAPSCRIPT MS = MF[MFselectedRow+1].MS;
5437     
5438     while(1) {
5439         
5440         for (int i = 0;i < 64;i++) {
5441             if(!MS.EGClight.etValue1[i]) break;
5442             NSArray *array1 = [MS.EGClight.etValue1[i] componentsSeparatedByString:@"["];
5443             NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5444             
5445             int Tx = [[array2 objectAtIndex:0] intValue];
5446             int Ty = [[array2 objectAtIndex:1] intValue];
5447             if(MS.EGClight.endType1 == 3){
5448                 U = UTop;
5449                 while (U) {
5450                     if(U->x == Tx && U->y == Ty){
5451                         U->targType1L = true;
5452                         if(targType1cnt[0] < 0)
5453                             targType1cnt[0] = 0;
5454                         targType1cnt[0]++;
5455                         break;
5456                     }
5457                     U = U->next;
5458                 }U = UTop;
5459             }
5460             if(MS.EGClight.endType1 == 4){
5461                 U = UTop;
5462                 while (U) {
5463                     if(U->x == Tx && U->y == Ty){
5464                         U->targType2L = true;
5465                         if(targType2cnt[0] < 0)
5466                             targType2cnt[0] = 0;
5467                         targType2cnt[0]++;
5468                         break;
5469                     }
5470                     U = U->next;
5471                 }U = UTop;
5472             }
5473         }
5474         for (int i = 0;i < 64;i++) {
5475             if(!MS.EGClight.etValue2[i]) break;
5476             NSArray *array1 = [MS.EGClight.etValue2[i] componentsSeparatedByString:@"["];
5477             NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5478             
5479             int Tx = [[array2 objectAtIndex:0] intValue];
5480             int Ty = [[array2 objectAtIndex:1] intValue];
5481             
5482             if(MS.EGClight.endType2 == 3){
5483                 U = UTop;
5484                 while (U) {
5485                     if(U->x == Tx && U->y == Ty){
5486                         U->targType1L = true;
5487                         if(targType1cnt[0] < 0)
5488                             targType1cnt[0] = 0;
5489                         targType1cnt[0]++;
5490                         break;
5491                     }
5492                     U = U->next;
5493                 }U = UTop;
5494             }
5495             if(MS.EGClight.endType2 == 4){
5496                 U = UTop;
5497                 while (U) {
5498                     if(U->x == Tx && U->y == Ty){
5499                         U->targType2L = true;
5500                         if(targType2cnt[0] < 0)
5501                             targType2cnt[0] = 0;
5502                         targType2cnt[0]++;
5503                         break;
5504                     }
5505                     U = U->next;
5506                 }U = UTop;
5507             }
5508         }
5509         for (int i = 0;i < 64;i++) {
5510             if(!MS.EGCdark.etValue1[i]) break;
5511             NSArray *array1 = [MS.EGCdark.etValue1[i] componentsSeparatedByString:@"["];
5512             NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5513             
5514             int Tx = [[array2 objectAtIndex:0] intValue];
5515             int Ty = [[array2 objectAtIndex:1] intValue];
5516             
5517             if(MS.EGCdark.endType1 == 3){
5518                 U = UTop;
5519                 while (U) {
5520                     if(U->x == Tx && U->y == Ty){
5521                         U->targType1D = true;
5522                         if(targType1cnt[1] < 0)
5523                             targType1cnt[1] = 0;
5524                         targType1cnt[1]++;
5525                         break;
5526                     }
5527                     U = U->next;
5528                 }U = UTop;
5529             }
5530             if(MS.EGCdark.endType1 == 4){
5531                 U = UTop;
5532                 while (U) {
5533                     if(U->x == Tx && U->y == Ty){
5534                         U->targType2D = true;
5535                         if(targType2cnt[1] < 0)
5536                             targType2cnt[1] = 0;
5537                         targType2cnt[1]++;
5538                         break;
5539                     }
5540                     U = U->next;
5541                 }U = UTop;
5542             }
5543         }
5544         for (int i = 0;i < 64;i++) {
5545             if(!MS.EGCdark.etValue2[i]) break;
5546             NSArray *array1 = [MS.EGCdark.etValue2[i] componentsSeparatedByString:@"["];
5547             NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5548             
5549             int Tx = [[array2 objectAtIndex:0] intValue];
5550             int Ty = [[array2 objectAtIndex:1] intValue];
5551             
5552             if(MS.EGCdark.endType2 == 3){
5553                 U = UTop;
5554                 while (U) {
5555                     if(U->x == Tx && U->y == Ty){
5556                         U->targType1D = true;
5557                         if(targType1cnt[1] < 0)
5558                             targType1cnt[1] = 0;
5559                         targType1cnt[1]++;
5560                         break;
5561                     }
5562                     U = U->next;
5563                 }U = UTop;
5564             }
5565             if(MS.EGCdark.endType2 == 4){
5566                 U = UTop;
5567                 while (U) {
5568                     if(U->x == Tx && U->y == Ty){
5569                         U->targType2D = true;
5570                         if(targType2cnt[1] < 0)
5571                             targType2cnt[1] = 0;
5572                         targType2cnt[1]++;
5573                         break;
5574                     }
5575                     U = U->next;
5576                 }U = UTop;
5577             }
5578         }
5579         break;
5580     }
5581 */
5582     
5583     
5584 }
5585
5586 -(void)setTargetList{
5587
5588     targType1cnt[0] = -1;
5589     targType1cnt[1] = -1;
5590     targType2cnt[0] = -1;
5591     targType2cnt[1] = -1;
5592     targType2Lflag = false;
5593     targType2Dflag = false;
5594     
5595     
5596     MAPSCRIPT MS = MF[MFselectedRow+1].MS;
5597     
5598     while(1) {
5599         
5600         for (int i = 0;i < 64;i++) {
5601             if(!MS.EGClight.etValue1[i] || [MS.EGClight.etValue1[i] isEqualToString:@""]) break;
5602             NSArray *array1 = [MS.EGClight.etValue1[i] componentsSeparatedByString:@"["];
5603             NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5604             
5605             int Tx = [[array2 objectAtIndex:0] intValue];
5606             int Ty = [[array2 objectAtIndex:1] intValue];
5607             if(MS.EGClight.endType1 == 3){
5608                 U = UTop;
5609                 while (U) {
5610                     if(U->x == Tx && U->y == Ty){
5611                         U->targType1L = true;
5612                         if(targType1cnt[0] < 0)
5613                             targType1cnt[0] = 0;
5614                         targType1cnt[0]++;
5615                         break;
5616                     }
5617                     U = U->next;
5618                 }U = UTop;
5619             }
5620             if(MS.EGClight.endType1 == 4){
5621                 U = UTop;
5622                 while (U) {
5623                     if(U->x == Tx && U->y == Ty){
5624                         U->targType2L = true;
5625                         if(targType2cnt[0] < 0)
5626                             targType2cnt[0] = 0;
5627                         targType2cnt[0]++;
5628                         break;
5629                     }
5630                     U = U->next;
5631                 }U = UTop;
5632             }
5633         }
5634         for (int i = 0;i < 64;i++) {
5635             if(!MS.EGClight.etValue2[i] || [MS.EGClight.etValue2[i] isEqualToString:@""]) break;
5636             NSArray *array1 = [MS.EGClight.etValue2[i] componentsSeparatedByString:@"["];
5637             NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5638             
5639             int Tx = [[array2 objectAtIndex:0] intValue];
5640             int Ty = [[array2 objectAtIndex:1] intValue];
5641             
5642             if(MS.EGClight.endType2 == 3){
5643             U = UTop;
5644                 while (U) {
5645                     if(U->x == Tx && U->y == Ty){
5646                         U->targType1L = true;
5647                         if(targType1cnt[0] < 0)
5648                             targType1cnt[0] = 0;
5649                         targType1cnt[0]++;
5650                         break;
5651                     }
5652                     U = U->next;
5653                 }U = UTop;
5654             }
5655             if(MS.EGClight.endType2 == 4){
5656                 U = UTop;
5657                 while (U) {
5658                     if(U->x == Tx && U->y == Ty){
5659                         U->targType2L = true;
5660                         if(targType2cnt[0] < 0)
5661                             targType2cnt[0] = 0;
5662                         targType2cnt[0]++;
5663                         break;
5664                     }
5665                     U = U->next;
5666                 }U = UTop;
5667             }
5668         }
5669         for (int i = 0;i < 64;i++) {
5670             if(!MS.EGCdark.etValue1[i] || [MS.EGCdark.etValue1[i] isEqualToString:@""]) break;
5671             NSArray *array1 = [MS.EGCdark.etValue1[i] componentsSeparatedByString:@"["];
5672             NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5673             
5674             int Tx = [[array2 objectAtIndex:0] intValue];
5675             int Ty = [[array2 objectAtIndex:1] intValue];
5676             
5677             if(MS.EGCdark.endType1 == 3){
5678                     U = UTop;
5679                 while (U) {
5680                     if(U->x == Tx && U->y == Ty){
5681                         U->targType1D = true;
5682                         if(targType1cnt[1] < 0)
5683                             targType1cnt[1] = 0;
5684                         targType1cnt[1]++;
5685                         break;
5686                     }
5687                     U = U->next;
5688                 }U = UTop;
5689             }
5690             if(MS.EGCdark.endType1 == 4){
5691                 U = UTop;
5692                 while (U) {
5693                     if(U->x == Tx && U->y == Ty){
5694                         U->targType2D = true;
5695                         if(targType2cnt[1] < 0)
5696                             targType2cnt[1] = 0;
5697                         targType2cnt[1]++;
5698                         break;
5699                     }
5700                     U = U->next;
5701                 }U = UTop;
5702             }
5703         }
5704         for (int i = 0;i < 64;i++) {
5705             if(!MS.EGCdark.etValue2[i] || [MS.EGCdark.etValue2[i] isEqualToString:@""]) break;
5706             NSArray *array1 = [MS.EGCdark.etValue2[i] componentsSeparatedByString:@"["];
5707             NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","];
5708             
5709             int Tx = [[array2 objectAtIndex:0] intValue];
5710             int Ty = [[array2 objectAtIndex:1] intValue];
5711             
5712             if(MS.EGCdark.endType2 == 3){
5713                 U = UTop;
5714                 while (U) {
5715                     if(U->x == Tx && U->y == Ty){
5716                         U->targType1D = true;
5717                         if(targType1cnt[1] < 0)
5718                             targType1cnt[1] = 0;
5719                         targType1cnt[1]++;
5720                         break;
5721                     }
5722                     U = U->next;
5723                 }U = UTop;
5724             }
5725             if(MS.EGCdark.endType2 == 4){
5726                 U = UTop;
5727                 while (U) {
5728                     if(U->x == Tx && U->y == Ty){
5729                         U->targType2D = true;
5730                         if(targType2cnt[1] < 0)
5731                             targType2cnt[1] = 0;
5732                         targType2cnt[1]++;
5733                         break;
5734                     }
5735                     U = U->next;
5736                 }U = UTop;
5737             }
5738         }
5739         break;
5740     }
5741
5742
5743
5744
5745 }
5746
5747 -(bool)setBuildList{
5748
5749     crCRL = 0;
5750     
5751     [self willChangeValueForKey:@"CResearchListMA"];
5752     [CResearchListMA removeAllObjects];
5753     [self didChangeValueForKey:@"CResearchListMA"];
5754     
5755     [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
5756     [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
5757     [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
5758     [researchACU setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
5759     [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
5760     [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
5761     [researchIMG setImage:NULL];
5762     
5763     BUILDCHIP *B0;
5764     
5765     B = BTop;
5766     
5767     while (B && B->x != possionX && B->y != possionY) {
5768         B = B->next;
5769     }
5770     B0 = &BC[buildNum[possionX][possionY]];
5771     
5772     RESEARCH *Rtop;
5773     UNITCHIP *BU;
5774     
5775     Rtop = B0->R;
5776     
5777     
5778     if(buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1){
5779     
5780         
5781         if(GCnum1 < 0)
5782         if(!B0->R){
5783
5784         return false;
5785     
5786         }
5787     }
5788     else if(buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3){
5789     
5790     
5791         if(GCnum2 < 0)
5792         if(!B0->R){
5793
5794             return false;
5795             
5796         }
5797     }
5798     
5799     while(B0->R){
5800         BU = B0->R->U;
5801         
5802         if(B->makeLv >= B0->R->Lv){
5803         NSMutableDictionary* dict = [NSMutableDictionary new];
5804         [dict setValue:[NSString stringWithFormat:@"%@", BU->nameClass] forKey:@"name"];
5805         [dict setValue:[NSString stringWithFormat:@"%g", BU->S_M.HP] forKey:@"HP"];
5806         [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d", BU->S_M.cSupply, BU->S_M.cFood, BU->S_M.cMoney] forKey:@"cost"];
5807         [dict setValue:BU->img forKey:@"img"];
5808
5809         
5810         [self willChangeValueForKey:@"CResearchListMA"];
5811         [CResearchListMA addObject:dict];
5812         [self didChangeValueForKey:@"CResearchListMA"];
5813         }
5814         B0->R = B0->R->next;
5815     }
5816     B0->R = Rtop;
5817     
5818     B = BTop;
5819     
5820     BUILDCHIP *B;
5821     
5822     B = &BC[buildNum[possionX][possionY]];
5823     
5824     
5825     if(B0->R){
5826     Rtop = B->R;
5827     
5828     BU = B->R->U;
5829     BRU = BU;
5830     
5831     for(int i = 0;i <= crCRL && B->R;i++){
5832         BU = B->R->U;
5833         BRU = BU;
5834         [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", BU->S_M.ATK]];
5835         [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", BU->S_M.DEF]];
5836         [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", BU->S_M.CAP]];
5837         [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", BU->S_M.ACU]];
5838         [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", BU->S_M.EVA]];
5839         [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", BU->S_M.MOV]];
5840         [researchIMG setImage:BU->imgb];
5841         [researchIMG setImageScaling:NSScaleToFit];
5842         
5843         B->R = B->R->next;
5844     }
5845     B->R = Rtop;
5846     }
5847     
5848     MAPSCRIPT MS = MF[MFselectedRow+1].MS;
5849     
5850     if(B->GuildFlag &&( buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1)){
5851     
5852         int a = MS.guildListRegistNum12 - MS.guildListRegistNum11;
5853         
5854         if(!guildRE1){
5855         Gnum1 = 0;
5856         if(a > 0)
5857             Gnum1 = MS.guildListRegistNum11 + arc4random()%(MS.guildListRegistNum12 - MS.guildListRegistNum11+1);
5858         else
5859             Gnum1 = MS.guildListRegistNum12;
5860         
5861         if(Gnum1 > GCnum1+1)
5862             Gnum1 = GCnum1;
5863         }
5864         int n = 0;
5865         guildc = 0;
5866         saveGuildList = calloc((GCnum1+1), sizeof(int));
5867         if(!guildRE1) GuildDisp1 = calloc(Gnum1, sizeof(int));
5868         for(int i = 0;i < Gnum1;i++){
5869             
5870             if(!guildRE1){
5871                 n = [self chooseGuildList:GuildChosen1 gcnum:GCnum1];
5872             if(n == -1)
5873                 break;
5874                 *(GuildDisp1 + i) = *(GuildChosen1 + n);
5875             }
5876         
5877             if(*(GuildDisp1 + i) <= 0)
5878                 break;
5879             
5880             NSMutableDictionary* dict = [NSMutableDictionary new];
5881             [dict setValue:[NSString stringWithFormat:@"%@", UC[*(GuildDisp1 + i)-1].name] forKey:@"name"];
5882             [dict setValue:[NSString stringWithFormat:@"%g", UC[*(GuildDisp1 + i)-1].S_M.HP] forKey:@"HP"];
5883             [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"];
5884             [dict setValue:UC[*(GuildDisp1 + i)-1].img forKey:@"img"];
5885             
5886             
5887             [self willChangeValueForKey:@"CResearchListMA"];
5888             [CResearchListMA addObject:dict];
5889             [self didChangeValueForKey:@"CResearchListMA"];
5890     
5891         }
5892
5893         
5894         
5895         int k = 0;
5896         B->R = Rtop;
5897         
5898         while (B->R) {
5899             B->R = B->R->next;
5900             k++;
5901         }
5902         
5903         for(int i = k;i <= crCRL;i++){
5904             if(*(GuildDisp1 + i - k) <= 0)
5905                 continue;
5906             
5907             [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ATK]];
5908             [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.DEF]];
5909             [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.CAP]];
5910             [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ACU]];
5911             [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.EVA]];
5912             [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp1 + i - k)-1].S_M.MOV]];
5913             [researchIMG setImage:UC[*(GuildDisp1 + i - k)-1].imgb];
5914             [researchIMG setImageScaling:NSScaleToFit];
5915             
5916         }B->R = Rtop;
5917         
5918         guildRE1 = true;
5919     }else if(B->GuildFlag && (buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3)){
5920     
5921         int a = MS.guildListRegistNum22 - MS.guildListRegistNum21;
5922         
5923         if(!guildRE2){
5924         Gnum2 = 0;
5925         if(a > 0)
5926             Gnum2 = MS.guildListRegistNum21 + arc4random()%(MS.guildListRegistNum22 - MS.guildListRegistNum21+1);
5927         else
5928             Gnum2 = MS.guildListRegistNum22;
5929         
5930         if(Gnum2 > GCnum2+1)
5931             Gnum2 = GCnum2;
5932         }
5933         int n = 0;
5934         
5935         guildc = 0;
5936         saveGuildList = calloc((GCnum2+1), sizeof(int));
5937         if(!guildRE2) GuildDisp2 = calloc(Gnum2, sizeof(int));
5938         for(int i = 0;i < Gnum2;i++){
5939             if(!guildRE2){
5940                 n = [self chooseGuildList:GuildChosen2 gcnum:GCnum2];
5941                 if(n == -1)
5942                     break;
5943                 *(GuildDisp2 + i) = *(GuildChosen2 + n);
5944             }
5945             
5946             if(*(GuildDisp2 + i) <= 0)
5947                 break;
5948             
5949             NSMutableDictionary* dict = [NSMutableDictionary new];
5950             [dict setValue:[NSString stringWithFormat:@"%@", UC[*(GuildDisp2 + i)-1].name] forKey:@"name"];
5951             [dict setValue:[NSString stringWithFormat:@"%g", UC[*(GuildDisp2 + i)-1].S_M.HP] forKey:@"HP"];
5952             [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"];
5953             [dict setValue:UC[*(GuildDisp2 + i)-1].img forKey:@"img"];
5954             
5955             
5956             [self willChangeValueForKey:@"CResearchListMA"];
5957             [CResearchListMA addObject:dict];
5958             [self didChangeValueForKey:@"CResearchListMA"];
5959         }
5960         
5961         int k = 0;
5962         B->R = Rtop;
5963         while (B->R) {
5964             B->R = B->R->next;
5965             k++;
5966         }
5967         
5968         for(int i = k;i <= crCRL;i++){
5969             if(*(GuildDisp2 + i - k) <= 0)
5970                 continue;
5971             
5972             
5973             [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ATK]];
5974             [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.DEF]];
5975             [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.CAP]];
5976             [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ACU]];
5977             [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.EVA]];
5978             [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp2 + i - k)-1].S_M.MOV]];
5979             [researchIMG setImage:UC[*(GuildDisp2 + i - k)-1].imgb];
5980             [researchIMG setImageScaling:NSScaleToFit];
5981             
5982         }B->R = Rtop;
5983         
5984         
5985         guildRE2 = true;
5986     }
5987     
5988     
5989     
5990     
5991     
5992     
5993     
5994     
5995     return true;
5996 }
5997 -(int)chooseGuildList:(int*)value gcnum:(int)gcnum{
5998
5999     int a = 0;
6000     while(1){
6001         bool sameFlag = false;
6002         bool sameFlag2 = false;
6003         
6004         if(guildc >= gcnum+1){
6005             a = -1;
6006             break;
6007         }
6008         
6009         a = arc4random()%(gcnum+1);
6010         
6011         for(int i = 0;i < guildc;i++){
6012             if(*(saveGuildList+i) == a){
6013                 sameFlag2 = true;
6014                 break;
6015             }
6016         }
6017         
6018         if(sameFlag2)
6019             continue;
6020         
6021         *(saveGuildList+guildc) = a;
6022         
6023         guildc++;
6024         
6025         U = UTop;
6026         while(U){
6027             if([UC[*(value + a)-1].nameID isEqualToString:U->C.nameID]){
6028                 sameFlag = true;
6029                 break;
6030             }
6031             U = U->next;
6032         }U = UTop;
6033         
6034         if(!sameFlag)
6035             break;
6036     }
6037
6038
6039     return a;
6040 }
6041
6042 -(void)initGuildList{
6043
6044     MAPSCRIPT MS = MF[MFselectedRow+1].MS;
6045     
6046     GuildChosen1 = calloc(UCN, sizeof(int));
6047     GuildChosen2 = calloc(UCN, sizeof(int));
6048
6049     GCnum1 = -1;
6050     for (int i = 0;i < UCN;i++) {
6051         if(MS.guildListRegist[i]){
6052             GCnum1++;
6053             *(GuildChosen1 + GCnum1) = i+1;
6054         }
6055     }
6056     GCnum2 = -1;
6057     for (int i = 0;i < UCN;i++) {
6058         if(MS.guildListRegist2[i]){
6059             GCnum2++;
6060             *(GuildChosen2 + GCnum2) = i+1;
6061         }
6062     }
6063
6064 }
6065
6066
6067 -(void)SetMenu{
6068     
6069     [self setCommandPanel];
6070     [menuPanel makeKeyAndOrderFront:nil];
6071 }
6072
6073 -(IBAction)pushMove:(id)sender{menuDisplayFlag = false;
6074     [menuPanel close];
6075     moveFlag = true;
6076     attackFlag = false;
6077     createFlag = false;
6078     summonFlag = false;
6079 }
6080 -(IBAction)pushAttack:(id)sender{menuDisplayFlag = false;
6081     [menuPanel close];
6082     attackFlag = true;
6083     moveFlag = false;
6084     windowPoint.x = [mapWindow frame].origin.x;
6085     windowPoint.y = [mapWindow frame].origin.y;
6086     [atkPanel setFrameOrigin:windowPoint];
6087     
6088     U = UTop;
6089     while (!(AUN[1] == U->number)) {
6090         U = U->next;
6091     }
6092     
6093     if(U->chipNumberL >= 0){
6094         U = UTop;
6095         [self initCAttackList2];
6096         [self initCAttackSelect2];
6097     }
6098     else if(U->chipNumber >= 0) {
6099         U = UTop;
6100         [self initCAttackList];
6101         [self initCAttackSelect];
6102     }
6103     U = UTop;
6104     [atkPanel makeKeyAndOrderFront:nil];
6105 }
6106 -(IBAction)pushStandby:(id)sender{menuDisplayFlag = false;
6107     
6108     U = UTop;
6109     
6110     while (U->number != wtUnitNum) {
6111         U = U->next;
6112     }
6113     
6114     if(!wtMovedFlag && !wtAttackedFlag){
6115         U->C.S_C.WT = floor(U->C.S_M.WT/4 + 0.5);
6116     }else if(wtMovedFlag && wtAttackedFlag){
6117         U->C.S_C.WT =  floor(U->C.S_M.WT + 0.5);
6118     }else if(wtMovedFlag){
6119         U->C.S_C.WT =  floor(U->C.S_M.WT/2 + 0.5);
6120     }else if(wtAttackedFlag){
6121         U->C.S_C.WT =  floor(U->C.S_M.WT/2 + 0.5);
6122     }
6123     
6124     BTop = B;
6125     while (B) {
6126         if(B->x == possionX && B->y == possionY && B->C.capture){
6127             buildCaptureFlag = true;
6128             unitMoveEndFlag = true;
6129         }
6130         B = B->next;
6131     }B = BTop;
6132     
6133     U = UTop;
6134     
6135     wtRdy = false;
6136     wtRdy2 = false;
6137     wtRdy3 = false;
6138     pushStanbyFlag = true;
6139     pussyLoopFlag = false;
6140     [menuPanel close];
6141 }
6142 -(IBAction)pushCreate:(id)sender{menuDisplayFlag = false;
6143     [menuPanel close];
6144     createFlag = true;
6145     moveFlag = false;
6146     
6147     windowPoint.x = [mapWindow frame].origin.x;
6148     windowPoint.y = [mapWindow frame].origin.y;
6149     [createPanel setFrameOrigin:windowPoint];
6150     
6151     wtAttackedFlag = true;
6152     
6153     [self initBCreateList];
6154     [createPanel makeKeyAndOrderFront:nil];
6155 }
6156
6157 -(IBAction)pushSummon:(id)sender{menuDisplayFlag = false;
6158     [menuPanel close];
6159     summonFlag = true;
6160     moveFlag = false;
6161     
6162     windowPoint.x = [mapWindow frame].origin.x;
6163     windowPoint.y = [mapWindow frame].origin.y;
6164     [summonPanel setFrameOrigin:windowPoint];
6165     
6166     wtAttackedFlag = true;
6167     
6168     [self initCSummonList];
6169     [summonPanel makeKeyAndOrderFront:nil];
6170 }
6171
6172
6173
6174 -(void)initStatusWindow{
6175
6176     U = UTop;
6177
6178     [STIV setImage:Uselected->C.imgb];
6179     [STIV setImageScaling:NSScaleToFit];
6180     [STnameTF setStringValue:Uselected->C.name];
6181     [STclassTF setStringValue:Uselected->C.nameClass];
6182     [SThpTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", Uselected->C.S_C.HP, Uselected->C.S_M.HP]];
6183     [STmpTF setStringValue:[NSString stringWithFormat:@"MP %g/%g", Uselected->C.S_C.MP, Uselected->C.S_M.MP]];
6184     [STatkTF setStringValue:[NSString stringWithFormat:@"ATK %g", Uselected->C.S_C.ATK]];
6185     [STdefTF setStringValue:[NSString stringWithFormat:@"DEF %g", Uselected->C.S_C.DEF]];
6186     [STcapTF setStringValue:[NSString stringWithFormat:@"CAP %g", Uselected->C.S_C.CAP]];
6187     [STacuTF setStringValue:[NSString stringWithFormat:@"ACU %g", Uselected->C.S_C.ACU]];
6188     [STevaTF setStringValue:[NSString stringWithFormat:@"EVA %g", Uselected->C.S_C.EVA]];
6189     [STstrTF setStringValue:[NSString stringWithFormat:@"STR %g", Uselected->C.S_C.STR]];
6190     [STvitTF setStringValue:[NSString stringWithFormat:@"VIT %g", Uselected->C.S_C.VIT]];
6191     [STagiTF setStringValue:[NSString stringWithFormat:@"AGI %g", Uselected->C.S_C.AGI]];
6192     [STdexTF setStringValue:[NSString stringWithFormat:@"DEX %g", Uselected->C.S_C.DEX]];
6193     [STmenTF setStringValue:[NSString stringWithFormat:@"MEN %g", Uselected->C.S_C.MEN]];
6194     [STintTF setStringValue:[NSString stringWithFormat:@"INT %g", Uselected->C.S_C.INT]];
6195     [STmelTF setStringValue:[NSString stringWithFormat:@"MEL %g", Uselected->C.S_C.MEL]];
6196     [STmisTF setStringValue:[NSString stringWithFormat:@"MIS %g", Uselected->C.S_C.MIS]];
6197     [SThitTF setStringValue:[NSString stringWithFormat:@"HIT %g", Uselected->C.S_C.HIT]];
6198     [STdodTF setStringValue:[NSString stringWithFormat:@"DOD %g", Uselected->C.S_C.DOD]];
6199     [STreaTF setStringValue:[NSString stringWithFormat:@"REA %g", Uselected->C.S_C.REA]];
6200     [STskiTF setStringValue:[NSString stringWithFormat:@"SKI %g", Uselected->C.S_C.SKI]];
6201     [STvigTF setStringValue:[NSString stringWithFormat:@"VIG %d", Uselected->C.S_C.vigor]];
6202
6203
6204
6205     [self willChangeValueForKey:@"STequipListMA"];
6206     [STequipListMA removeAllObjects];
6207     [self didChangeValueForKey:@"STequipListMA"];
6208     
6209     if(Uselected->C.eHandRflag) {
6210         NSMutableDictionary* dict = [NSMutableDictionary new];
6211         [dict setValue:[NSString stringWithFormat:@"%@", Uselected->C.eHandR.name] forKey:@"name"];
6212         [self willChangeValueForKey:@"STequipListMA"];
6213         [STequipListMA addObject:dict];
6214         [self didChangeValueForKey:@"STequipListMA"];
6215     }
6216     if(Uselected->C.eHandLflag) {
6217         NSMutableDictionary* dict = [NSMutableDictionary new];
6218         [dict setValue:[NSString stringWithFormat:@"%@", Uselected->C.eHandL.name] forKey:@"name"];
6219         [self willChangeValueForKey:@"STequipListMA"];
6220         [STequipListMA addObject:dict];
6221         [self didChangeValueForKey:@"STequipListMA"];
6222     }
6223     if(Uselected->C.eHeadflag) {
6224         NSMutableDictionary* dict = [NSMutableDictionary new];
6225         [dict setValue:[NSString stringWithFormat:@"%@", Uselected->C.eHead.name] forKey:@"name"];
6226         [self willChangeValueForKey:@"STequipListMA"];
6227         [STequipListMA addObject:dict];
6228         [self didChangeValueForKey:@"STequipListMA"];
6229     }
6230     if(Uselected->C.eBodyflag) {
6231         NSMutableDictionary* dict = [NSMutableDictionary new];
6232         [dict setValue:[NSString stringWithFormat:@"%@", Uselected->C.eBody.name] forKey:@"name"];
6233         [self willChangeValueForKey:@"STequipListMA"];
6234         [STequipListMA addObject:dict];
6235         [self didChangeValueForKey:@"STequipListMA"];
6236     }
6237     if(Uselected->C.eFootflag) {
6238         NSMutableDictionary* dict = [NSMutableDictionary new];
6239         [dict setValue:[NSString stringWithFormat:@"%@", Uselected->C.eFoot.name] forKey:@"name"];
6240         [self willChangeValueForKey:@"STequipListMA"];
6241         [STequipListMA addObject:dict];
6242         [self didChangeValueForKey:@"STequipListMA"];
6243     }
6244     if(Uselected->C.eArmflag) {
6245         NSMutableDictionary* dict = [NSMutableDictionary new];
6246         [dict setValue:[NSString stringWithFormat:@"%@", Uselected->C.eArm.name] forKey:@"name"];
6247         [self willChangeValueForKey:@"STequipListMA"];
6248         [STequipListMA addObject:dict];
6249         [self didChangeValueForKey:@"STequipListMA"];
6250     }
6251
6252
6253
6254     U = UTop;
6255 }
6256
6257 -(IBAction)pushStatus:(id)sender{menuDisplayFlag = false;
6258     
6259     [self initStatusWindow];
6260     
6261     windowPoint.x = [mapWindow frame].origin.x;
6262     windowPoint.y = [mapWindow frame].origin.y;
6263     [STwindow setFrameOrigin:windowPoint];
6264     [STwindow makeKeyAndOrderFront:nil];
6265     
6266     
6267     
6268     [menuPanel close];
6269 }
6270
6271 -(IBAction)STsubmit:(id)sender{
6272
6273     [STwindow close];
6274 }
6275
6276 -(IBAction)pushCancel:(id)sender{menuDisplayFlag = false;
6277     moveFlag = false;
6278     attackFlag = false;
6279     summonFlag = false;
6280     [menuPanel close];
6281 }
6282 -(IBAction)pushCancelCAL:(id)sender{
6283     attackFlag = false;
6284     wtAttackedFlag = false;
6285     [atkPanel close];
6286 }
6287
6288 -(IBAction)pushCancelBCL:(id)sender{
6289     createFlag = false;
6290     wtAttackedFlag = false;
6291     [createPanel close];
6292 }
6293
6294 -(IBAction)pushCancelCSL:(id)sender{
6295     summonFlag = false;
6296     wtAttackedFlag = false;
6297     [summonPanel close];
6298 }
6299
6300 -(void)addBuildStatus{
6301     //おまんちん
6302     
6303     registerNumB++;
6304     
6305     if(registerNumB == 1){
6306         B = calloc(1, sizeof(BUILD));
6307         BTop = B;
6308     }
6309     
6310     int omgCnt = 0;
6311     B = BTop;
6312     if(B)
6313     while (B->next) {omgCnt++;
6314         B = B->next;
6315     }
6316     if(registerNumB != 1){
6317         B->next = calloc(1, sizeof(BUILD));
6318         if(registerNumB == 2)
6319             BTop = B;
6320         B = B->next;
6321     }
6322         B->next = NULL;
6323     
6324     B->number = registerNumB;
6325     
6326     
6327     B->chipNumber = BC[buildNum[possionX][possionY]].chipNumb;
6328     B->x = possionX;
6329     B->y = possionY;
6330     B->C = BC[buildNum[possionX][possionY]];
6331     B->img = [BC[buildNum[possionX][possionY]].img retain];
6332     unitColorInitFlag = true;
6333     
6334     if(buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1){
6335         B->team = 0;
6336         if(unitTeam[possionX][possionY] == 0){
6337             U->joinArmyFromNext = true;
6338             U->persuasion = true;
6339         }
6340     }
6341     if(buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3){
6342         B->team = 2;
6343     }
6344     if(buildTeam[possionX][possionY] == 4 || buildTeam[possionX][possionY] == 5){
6345         B->team = 1;
6346     }
6347     if(buildTeam[possionX][possionY] == -1){
6348         B->team = -1;
6349
6350     }
6351     
6352     B = BTop;
6353 }
6354
6355
6356 -(void)addUnitStatus{
6357     registerNum++;
6358     int omgCnt = 0;
6359     U = UTop;
6360     while (U->next) {omgCnt++;
6361         U = U->next;
6362     }
6363     U->next = calloc(1, sizeof(UNIT));
6364     U = U->next;
6365     U->next = NULL;
6366     if(omgCnt == 0) U = UTop;
6367     U->number = registerNum;
6368     
6369     for(int i = 0;i < UCN;i++){
6370         if([U->C.nameID isEqualToString:UC[i].nameID])
6371             U->chipNumber = i;
6372     }
6373     
6374     U->chipNumber = unitNum[possionX][possionY];
6375     U->chipNumberL = loadNum[possionX][possionY];
6376     U->C.chipNumb = unitNum[possionX][possionY];
6377     U->CL.chipNumb = loadNum[possionX][possionY];
6378     U->x = possionX;
6379     U->y = possionY;
6380     U->C = *BRU;
6381                 if(unitTeam[possionX][possionY] == 0 || unitTeam[possionX][possionY] == 1){
6382                     U->team = 0;
6383                     if(unitTeam[possionX][possionY] == 1){
6384                         U->joinArmyFromNext = true;
6385                         U->persuasion = true;
6386                     }
6387                     
6388                     if(MF[MFselectedRow+1].MS.playerSet1 == 2){
6389                         U->CPU = true;
6390                     }
6391                 }
6392                 if(unitTeam[possionX][possionY] == 2 || unitTeam[possionX][possionY] == 3){
6393                     U->team = 2;
6394                     if(unitTeam[possionX][possionY] == 3){
6395                         U->joinArmyFromNext = true;
6396                         U->persuasion = true;
6397                     }
6398                     
6399                     if(MF[MFselectedRow+1].MS.playerSet2 == 2){
6400                         U->CPU = true;
6401                     }
6402                 }
6403                 if(unitTeam[possionX][possionY] == 4 || unitTeam[possionX][possionY] == 5){
6404                     U->team = 1;
6405                     if(unitTeam[possionX][possionY] == 5){
6406                         U->joinArmyFromNext = true;
6407                         U->persuasion = true;
6408                     }
6409                     U->CPU = true;
6410                 }
6411                 if(unitTeam[possionX][possionY] == -1){
6412                     U->team = -1;
6413                     if(unitTeam[possionX][possionY] == 0){
6414                         U->joinArmyFromNext = false;
6415                         U->persuasion = true;
6416                     }
6417                     U->CPU = true;
6418                 }
6419
6420     
6421                 [self SetUnitStatus:unitNum[possionX][possionY]];
6422     U = UTop;
6423 }
6424
6425 -(void)addSummonStatus{
6426     registerNum++;
6427     int omgCnt = 0;
6428     U = UTop;
6429     while (U->next) {omgCnt++;
6430         U = U->next;
6431     }
6432     U->next = calloc(1, sizeof(UNIT));
6433     U = U->next;
6434     U->next = NULL;
6435     if(omgCnt == 0) U = UTop;
6436     
6437     U->chipNumber = unitNum[possionX][possionY];
6438     U->chipNumberL = -1;
6439     
6440     U->x = possionX;
6441     U->y = possionY;
6442     U->number = registerNum;
6443
6444     U->C = CSLUC;
6445     if(unitTeam[CSLU->x][CSLU->y] == 0 || unitTeam[CSLU->x][CSLU->y] == 1){
6446         U->team = 0;
6447         if(unitTeam[CSLU->x][CSLU->y] == 1){
6448             U->joinArmyFromNext = true;
6449             U->persuasion = true;
6450         }
6451     }
6452     if(unitTeam[CSLU->x][CSLU->y] == 2 || unitTeam[CSLU->x][CSLU->y] == 3){
6453         U->team = 2;
6454         if(unitTeam[CSLU->x][CSLU->y] == 3){
6455             U->joinArmyFromNext = true;
6456             U->persuasion = true;
6457         }
6458     }
6459     if(unitTeam[CSLU->x][CSLU->y] == 4 || unitTeam[CSLU->x][CSLU->y] == 5){
6460         U->team = 1;
6461         if(unitTeam[CSLU->x][CSLU->y] == 5){
6462             U->joinArmyFromNext = true;
6463             U->persuasion = true;
6464         }
6465     }
6466     if(unitTeam[CSLU->x][CSLU->y] == -1){
6467         U->team = -1;
6468         if(unitTeam[CSLU->x][CSLU->y] == 0){
6469             U->joinArmyFromNext = false;
6470             U->persuasion = true;
6471         }
6472     }
6473     
6474     [self SetUnitStatus:unitNum[possionX][possionY]];
6475     
6476     for(int i = 0;i < UCN;i++){
6477         if([U->C.nameID isEqualToString:UC[i].nameID])
6478             U->chipNumber = i;
6479     }
6480     for(int i = 0;i < LCN;i++){
6481         if([U->CL.nameID isEqualToString:LC[i].nameID])
6482             U->chipNumberL = i;
6483     }
6484     for(int i = 0;i < UCN;i++){
6485         if([U->C.nameID isEqualToString:UC[i].nameID])
6486             U->C.chipNumb = i;
6487     }
6488     for(int i = 0;i < LCN;i++){
6489         if([U->CL.nameID isEqualToString:LC[i].nameID])
6490             U->CL.chipNumb = i;
6491     }
6492     
6493     U = UTop;
6494
6495 }
6496
6497 -(void)initUnitStatusDat{
6498     U = NULL;
6499     UTop = NULL;
6500     for(int i = 0;i < sdd2[datRow].registerNum;i++){
6501         if(i == 0){
6502             U = calloc(1, sizeof(UNIT));
6503             UTop = U;
6504         }
6505         if(i > 0)
6506             U = U->next;
6507         
6508         U->x = sdd2[datRow].dU[i].x;
6509         U->y = sdd2[datRow].dU[i].y;
6510         U->number = sdd2[datRow].dU[i].number;;
6511         U->chipNumber = sdd2[datRow].dU[i].chipNumber;
6512         U->chipNumberL = sdd2[datRow].dU[i].chipNumberL;
6513         U->C.chipNumb = sdd2[datRow].dU[i].C.chipNumb;
6514         U->CL.chipNumb = sdd2[datRow].dU[i].C.chipNumb;
6515         U->atkRange = 0;
6516         U->dead = sdd2[datRow].dU[i].dead;
6517
6518         U->team = sdd2[datRow].dU[i].team;
6519         U->CPU = sdd2[datRow].dU[i].CPU;
6520         U->joinArmyFromNext = sdd2[datRow].dU[i].joinArmyFromNext;
6521         U->persuasion = sdd2[datRow].dU[i].persuasion;
6522         
6523         U->ix = sdd2[datRow].dU[i].ix;
6524         U->iy = sdd2[datRow].dU[i].iy;
6525         U->iz = sdd2[datRow].dU[i].iz;
6526         
6527         
6528         
6529         if(U->chipNumber >= 0) [self SetUnitStatus:U->chipNumber];
6530         if(U->chipNumberL >= 0) [self SetUnitStatus2:U->chipNumberL];
6531         
6532         U->C.S_C = sdd2[datRow].dU[i].C.S_C;
6533         U->C.R_C = sdd2[datRow].dU[i].C.R_C;
6534         
6535         if(U->chipNumberL >= 0) U->img = [LC[U->chipNumberL].img retain];
6536             else U->img = [UC[U->chipNumber].img retain];
6537         
6538         
6539         unitTeam[U->x][U->y] = U->team;
6540         unitNum[U->x][U->y] = U->chipNumber;
6541         loadNum[U->x][U->y] = U->chipNumberL;
6542         
6543         
6544         U->next = calloc(1, sizeof(UNIT));
6545     }
6546     
6547     if(U) U->next = NULL;
6548     U = UTop;
6549     
6550 }
6551
6552
6553 -(void)initUnitStatus{
6554     registerNum = 0;
6555     U = NULL;
6556     UTop = NULL;
6557     for(int i=1;i <= chipHeight;i++){
6558         for(int j=1;j<= chipWidth;j++){
6559             if(unitNum[j][i] >= 0 || loadNum[j][i] >= 0){
6560                 registerNum++;
6561                 if(registerNum == 1){
6562                     U = calloc(1, sizeof(UNIT));
6563                     UTop = U;
6564                 }
6565                 if(registerNum > 1)
6566                     U = U->next;
6567                 U->x = j;
6568                 U->y = i;
6569                 U->number = registerNum;
6570                 U->chipNumber = unitNum[j][i];
6571                 U->chipNumberL = loadNum[j][i];
6572                 U->C.chipNumb = U->chipNumber;
6573                 U->CL.chipNumb = U->chipNumberL;
6574                 
6575                 if(unitTeam[j][i] == 0 || unitTeam[j][i] == 1){
6576                     U->team = 0;
6577                     if(unitTeam[j][i] == 1){
6578                         U->joinArmyFromNext = true;
6579                         U->persuasion = true;
6580                     }
6581                     if(MF[MFselectedRow+1].MS.playerSet1 == 2)
6582                         U->CPU = true;
6583                 }
6584                 if(unitTeam[j][i] == 2 || unitTeam[j][i] == 3){
6585                     U->team = 2;
6586                     if(unitTeam[i][j] == 2){
6587                         U->joinArmyFromNext = true;
6588                         U->persuasion = true;
6589                     }
6590                     if(MF[MFselectedRow+1].MS.playerSet2 == 2)
6591                         U->CPU = true;
6592                 }
6593                 if(unitTeam[j][i] == 4 || unitTeam[j][i] == 5){
6594                     U->team = 1;
6595                     if(unitTeam[j][i] == 5){
6596                         U->joinArmyFromNext = true;
6597                         U->persuasion = true;
6598                     }
6599                     U->CPU = true;
6600                 }
6601                 if(unitTeam[j][i] == -1){
6602                     U->team = -1;
6603                     if(unitTeam[j][i] == -1){
6604                         U->joinArmyFromNext = false;
6605                         U->persuasion = true;
6606                     }
6607                     U->CPU = true;
6608                 }
6609                 if(unitNum[j][i] >= 0) [self SetUnitStatus:unitNum[j][i]];
6610                 if(loadNum[j][i] >= 0) [self SetUnitStatus2:loadNum[j][i]];
6611                 
6612                 U->next = calloc(1, sizeof(UNIT));
6613                 U->atkRange = 0;
6614                 
6615                 U->ix = U->x;
6616                 U->iy = U->y;
6617                 U->iz = 0;
6618                 
6619                 UNIT *Ucrnt = U;
6620                 
6621                 U = UTop;
6622                 while(U){
6623                     if(Ucrnt->x == U->x && Ucrnt->y == U->y){
6624                         Ucrnt->iz++;
6625                     }
6626                     U = U->next;
6627                 }
6628                 
6629                 U = Ucrnt;
6630             }
6631         
6632         }
6633     }
6634     
6635     if(U) U->next = NULL;
6636     
6637     U = UTop;
6638 }
6639
6640 -(void)initBuildStatusDat{
6641     B = NULL;
6642     BTop = NULL;
6643     for(int i = 0;i < sdd2[datRow].registerNumB;i++){
6644         if(i == 0){
6645             B = calloc(1, sizeof(BUILD));
6646             BTop = B;
6647         }
6648         if(i > 0)
6649             B = B->next;
6650         
6651         B->x = sdd2[datRow].dB[i].x;
6652         B->y = sdd2[datRow].dB[i].y;
6653         B->team = sdd2[datRow].dB[i].team;
6654         B->number = sdd2[datRow].dB[i].number;
6655         B->chipNumber = sdd2[datRow].dB[i].chipNumber;
6656         B->makeLv = sdd2[datRow].dB[i].makeLv;
6657         B->dead = sdd2[datRow].dB[i].dead;
6658         
6659         B->C = BC[B->chipNumber];
6660         B->C.S_C = sdd2[datRow].dB[i].C.S_C;
6661         
6662         B->img = [BC[B->chipNumber].img retain];
6663         
6664         buildTeam[B->x][B->y] = B->team;
6665         buildNum[B->x][B->y] = B->chipNumber;
6666         
6667         B->next = calloc(1, sizeof(BUILD));
6668     }
6669     if(B) B->next = NULL;
6670     B = BTop;
6671     
6672 }
6673
6674
6675 -(void)initBuildStatus{
6676     B = NULL;
6677     BTop = NULL;
6678     for(int i=1;i <= chipHeight;i++){
6679         for(int j=1;j<= chipWidth;j++){
6680             if(buildNum[j][i] >= 0){
6681                 registerNumB++;
6682                 if(registerNumB == 1){
6683                     B = calloc(1, sizeof(BUILD));
6684                     BTop = B;
6685                 }
6686                 if(registerNumB > 1)
6687                     B = B->next;
6688                 B->x = j;
6689                 B->y = i;
6690                 B->number = registerNumB;
6691                 B->chipNumber = buildNum[j][i];
6692                 B->makeLv = 1;
6693                 if(buildTeam[j][i] == 0 || buildTeam[j][i] == 1){
6694                     B->team = 0;
6695
6696                 }
6697                 if(buildTeam[j][i] == 2 || buildTeam[j][i] == 3){
6698                     B->team = 2;
6699
6700                 }
6701                 if(buildTeam[j][i] == 4 || buildTeam[j][i] == 5){
6702                     B->team = 1;
6703
6704                 }
6705                 if(buildTeam[j][i] == -1){
6706                     B->team = -1;
6707
6708                 }
6709                 //[self SetUnitStatus:unitNum[j][i]];
6710                 
6711                 B->C = BC[buildNum[j][i]];
6712                 
6713                 B->next = calloc(1, sizeof(BUILD));
6714
6715             }
6716             
6717         }
6718     }
6719     if(B) B->next = NULL;
6720     B = BTop;
6721     
6722 }
6723
6724 -(void)SetUnitStatus:(int)UN{
6725     
6726     U->C = UC[UN];
6727     U->C.S_C.vigor = 100;
6728     
6729     ATTACK *Atop;
6730     ATTACK *AtopE1;
6731     ATTACK *AtopE2;
6732     ATTACK *UAtop;
6733     Atop = UC[UN].A;
6734     AtopE1 = UC[UN].eHandL.A;
6735     AtopE2 = UC[UN].eHandR.A;
6736     U->C.A = calloc(1, sizeof(ATTACK));
6737     UAtop = U->C.A;
6738     
6739     bool ow1 = false;
6740     bool ow2 = false;
6741     
6742     while(UC[UN].eHandR.A != NULL){ow1 = true;
6743         *U->C.A = *UC[UN].eHandR.A;
6744         U->C.A->next = calloc(1, sizeof(ATTACK));
6745         U->C.A->next->next = NULL;
6746         if(UC[UN].eHandR.A->next != NULL) U->C.A = U->C.A->next;
6747         UC[UN].eHandR.A = UC[UN].eHandR.A->next;
6748         U->C.attackListNum++;
6749     }
6750     UC[UN].eHandR.A = AtopE2;
6751     
6752     
6753     if(ow1) {
6754         U->C.A = U->C.A->next;
6755         ow1 = false;
6756     }
6757     while(UC[UN].eHandL.A != NULL){ow2 = true;
6758         *U->C.A = *UC[UN].eHandL.A;
6759         U->C.A->next = calloc(1, sizeof(ATTACK));
6760         U->C.A->next->next = NULL;
6761         if(UC[UN].eHandL.A->next != NULL) U->C.A = U->C.A->next;
6762         UC[UN].eHandL.A = UC[UN].eHandL.A->next;
6763         U->C.attackListNum++;
6764     }
6765     UC[UN].eHandL.A = AtopE1;
6766     
6767     if(ow2) {
6768         U->C.A = U->C.A->next;
6769         ow2 = false;
6770     }
6771     while(UC[UN].A != NULL){
6772         *U->C.A = *UC[UN].A;
6773         U->C.A->next = calloc(1, sizeof(ATTACK));
6774         U->C.A->next->next = NULL;
6775         if(UC[UN].A->next != NULL) U->C.A = U->C.A->next;
6776         UC[UN].A = UC[UN].A->next;
6777     }
6778     U->C.A->next = NULL;
6779     UC[UN].A = Atop;
6780     U->C.A = UAtop;
6781     if(U->C.A) if(!U->C.A->name)
6782         U->C.A = NULL;
6783     
6784 }
6785
6786 -(void)SetUnitStatus2:(int)UN{
6787     
6788     U->CL = LC[UN];
6789     
6790     ATTACK *Atop;
6791     ATTACK *UAtop;
6792     Atop = LC[UN].A;
6793     U->CL.A = calloc(1, sizeof(ATTACK));
6794     UAtop = U->CL.A;
6795     while(LC[UN].A != NULL){
6796         *U->CL.A = *LC[UN].A;
6797         U->CL.A->next = calloc(1, sizeof(ATTACK));
6798         U->CL.A->next->next = NULL;
6799         if(LC[UN].A->next != NULL) U->CL.A = U->CL.A->next;
6800         LC[UN].A = LC[UN].A->next;
6801     }
6802     U->CL.A->next = NULL;
6803     LC[UN].A = Atop;
6804     U->CL.A = UAtop;
6805     
6806 }
6807
6808
6809 -(void)initCAttackList2{
6810     crCAL = 0;
6811     
6812     CAttackListMA = [NSMutableArray new];
6813     
6814     [self willChangeValueForKey:@"CAttackListMA"];
6815     [CAttackListMA removeAllObjects];
6816     [self didChangeValueForKey:@"CAttackListMA"];
6817     
6818     U = UTop;
6819     if(!battleSet2PushedFlag){
6820         ATTACK *Atop;
6821         while (!(AUN[1] == U->number)) {
6822             U = U->next;
6823         }
6824         Atop = U->CL.A;
6825         for(int i = 0;i < U->CL.attackListNum;i++){
6826             if(!U->CL.A) break;
6827             NSMutableDictionary* dict = [NSMutableDictionary new];
6828             [dict setValue:[NSString stringWithFormat:@"%@", U->CL.A->name] forKey:@"name"];
6829             [dict setValue:[NSString stringWithFormat:@"%g", U->CL.A->totalD] forKey:@"atk"];
6830             if(U->CL.A->rangeA != U->CL.A->rangeB){
6831                 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->CL.A->rangeA, U->CL.A->rangeB] forKey:@"range"];
6832             }else{
6833                 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->rangeA] forKey:@"range"];
6834             }
6835             [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->hitPercent] forKey:@"hit"];
6836             //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
6837             
6838             [self willChangeValueForKey:@"CAttackListMA"];
6839             [CAttackListMA addObject:dict];
6840             [self didChangeValueForKey:@"CAttackListMA"];
6841             
6842             U->CL.A = U->CL.A->next;
6843         }
6844         
6845         U->CL.A = Atop;
6846     }else{
6847         ATTACK *Atop;
6848         while (!(DUN[1] == U->number)) {
6849             U = U->next;
6850         }
6851         Atop = U->CL.A;
6852         for(int i = 0;i < U->CL.attackListNum;i++){
6853             
6854             if(!U->CL.A){
6855                 U->CL.attackListNum = i;
6856                 break;
6857             }
6858             NSMutableDictionary* dict = [NSMutableDictionary new];
6859             [dict setValue:[NSString stringWithFormat:@"%@", U->CL.A->name] forKey:@"name"];
6860             [dict setValue:[NSString stringWithFormat:@"%g", U->CL.A->totalD] forKey:@"atk"];
6861             if(U->CL.A->rangeA != U->CL.A->rangeB){
6862                 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->CL.A->rangeA, U->CL.A->rangeB] forKey:@"range"];
6863             }else{
6864                 [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->rangeA] forKey:@"range"];
6865             }
6866             [dict setValue:[NSString stringWithFormat:@"%d", U->CL.A->hitPercent] forKey:@"hit"];
6867             //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
6868             
6869             [self willChangeValueForKey:@"CAttackListMA"];
6870             [CAttackListMA addObject:dict];
6871             [self didChangeValueForKey:@"CAttackListMA"];
6872             
6873             U->CL.A = U->CL.A->next;
6874         }
6875         
6876         U->CL.A = Atop;
6877         
6878     }
6879     U = UTop;
6880     
6881     [CAttackListAC setSelectionIndex:crCAL];
6882     
6883     [self initCAttackSelect2];
6884
6885
6886
6887
6888 }
6889
6890 -(void)initCAttackList{
6891     crCAL = 0;
6892     CAttackListMA = [NSMutableArray new];
6893     
6894     [self willChangeValueForKey:@"CAttackListMA"];
6895     [CAttackListMA removeAllObjects];
6896     [self didChangeValueForKey:@"CAttackListMA"];
6897
6898     U = UTop;
6899     if(!battleSet2PushedFlag){
6900         ATTACK *Atop;
6901     while (!(AUN[1] == U->number)) {
6902         U = U->next;
6903     }
6904     Atop = U->C.A;
6905         for(int i = 0;i < U->C.attackListNum;i++){
6906             if(!U->C.A) {
6907                 U->C.attackListNum = i;
6908                 break;
6909             };
6910         NSMutableDictionary* dict = [NSMutableDictionary new];
6911         [dict setValue:[NSString stringWithFormat:@"%@", U->C.A->name] forKey:@"name"];
6912         [dict setValue:[NSString stringWithFormat:@"%g", U->C.A->totalD] forKey:@"atk"];
6913         if(U->C.A->rangeA != U->C.A->rangeB){
6914             [dict setValue:[NSString stringWithFormat:@"%d-%d", U->C.A->rangeA, U->C.A->rangeB] forKey:@"range"];
6915         }else{
6916             [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->rangeA] forKey:@"range"];
6917         }
6918         [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->hitPercent] forKey:@"hit"];
6919         //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
6920     
6921         [self willChangeValueForKey:@"CAttackListMA"];
6922         [CAttackListMA addObject:dict];
6923         [self didChangeValueForKey:@"CAttackListMA"];
6924         
6925         U->C.A = U->C.A->next;
6926     }
6927     
6928     U->C.A = Atop;
6929     }else{
6930         
6931         ATTACK *Atop;
6932         while (!(DUN[1] == U->number)) {
6933             U = U->next;
6934         }
6935         Atop = U->C.A;
6936         for(int i = 0;i < U->C.attackListNum;i++){
6937             NSMutableDictionary* dict = [NSMutableDictionary new];
6938             [dict setValue:[NSString stringWithFormat:@"%@", U->C.A->name] forKey:@"name"];
6939             [dict setValue:[NSString stringWithFormat:@"%g", U->C.A->totalD] forKey:@"atk"];
6940             if(U->C.A->rangeA != U->C.A->rangeB){
6941                 [dict setValue:[NSString stringWithFormat:@"%d-%d", U->C.A->rangeA, U->C.A->rangeB] forKey:@"range"];
6942             }else{
6943                 [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->rangeA] forKey:@"range"];
6944             }
6945             [dict setValue:[NSString stringWithFormat:@"%d", U->C.A->hitPercent] forKey:@"hit"];
6946             //[dict setValue:[NSString stringWithFormat:@"%d", U->C.A->bulletC] forKey:@"bullet"];
6947             
6948             [self willChangeValueForKey:@"CAttackListMA"];
6949             [CAttackListMA addObject:dict];
6950             [self didChangeValueForKey:@"CAttackListMA"];
6951             
6952             U->C.A = U->C.A->next;
6953         }
6954         
6955         U->C.A = Atop;
6956     
6957     }
6958     U = UTop;
6959     
6960     [CAttackListAC setSelectionIndex:crCAL];
6961     
6962     [self initCAttackSelect];
6963 }
6964
6965 -(void)initBCreateList{
6966     BCreateListMA = [NSMutableArray new];
6967     
6968     [self willChangeValueForKey:@"BCreateListMA"];
6969     [BCreateListMA removeAllObjects];
6970     [self didChangeValueForKey:@"BCreateListMA"];
6971     buildSkillFlag = false;
6972     
6973     U = UTop;
6974     SKILL *Stop;
6975     while (!(AUN[1] == U->number)) {
6976         U = U->next;
6977     }
6978     Stop = U->C.S;
6979     if(!U->C.S) {
6980         U = UTop;
6981         return;
6982     }
6983     while (U->C.S->type != 1 && U->C.S->next) {
6984         U->C.S = U->C.S->next;
6985     }
6986     if(U->C.S->type != 1) {
6987         U->C.S = Stop;
6988         U = UTop;
6989         return;
6990     }
6991     for(int i = 0;U->C.S->list[i] > 0;i++){
6992         NSMutableDictionary* dict = [NSMutableDictionary new];
6993         [dict setValue:[NSString stringWithFormat:@"%@", BC[U->C.S->list[i]-1].name] forKey:@"name"];
6994         [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d",
6995                         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"];
6996         [dict setValue:BC[U->C.S->list[i]-1].img forKey:@"img"];
6997         
6998         [self willChangeValueForKey:@"BCreateListMA"];
6999         [BCreateListMA addObject:dict];
7000         [self didChangeValueForKey:@"BCreateListMA"];
7001         
7002         buildSkillFlag = true;
7003     }
7004     U->C.S = Stop;
7005     U = UTop;
7006 }
7007
7008 -(void)initCSummonList{
7009     CSummonListMA = [NSMutableArray new];
7010     
7011     [self willChangeValueForKey:@"CSummonListMA"];
7012     [CSummonListMA removeAllObjects];
7013     [self didChangeValueForKey:@"CSummonListMA"];
7014     
7015     summonSkillFlag = false;
7016     
7017     U = UTop;
7018     SKILL *Stop;
7019     while (!(AUN[1] == U->number)) {
7020         U = U->next;
7021     }
7022     Stop = U->C.S;
7023     if(!U->C.S) {
7024         U = UTop;
7025         return;
7026     }
7027     while (U->C.S->type != 2 && U->C.S->next) {
7028         U->C.S = U->C.S->next;
7029     }
7030     if(U->C.S->type != 2) {
7031         U->C.S = Stop;
7032         U = UTop;
7033         return;
7034     }
7035     for(int i = 0;U->C.S->list[i] > 0;i++){
7036         NSMutableDictionary* dict = [NSMutableDictionary new];
7037         [dict setValue:[NSString stringWithFormat:@"%@", UC[U->C.S->list[i]-1].nameClass] forKey:@"name"];
7038         [dict setValue:[NSString stringWithFormat:@"%g", UC[U->C.S->list[i]-1].S_M.HP] forKey:@"HP"];
7039         [dict setValue:[NSString stringWithFormat:@"%g", U->C.S->cost[i]] forKey:@"cost"];
7040         [dict setValue:UC[U->C.S->list[i]-1].img forKey:@"img"];
7041         
7042         [self willChangeValueForKey:@"CSummonListMA"];
7043         [CSummonListMA addObject:dict];
7044         [self didChangeValueForKey:@"CSummonListMA"];
7045         
7046         summonSkillFlag = true;
7047     }
7048     U->C.S = Stop;
7049     U = UTop;
7050     
7051 }
7052
7053
7054 -(void)AttackDisplay{
7055
7056     if(battleRdy) return;
7057     if(!battleSetUp) return;
7058     if(!fuckingLoadBugFix) return;
7059     
7060     U = UTop;
7061     while (!(AUN[1] == U->number)) {
7062         U = U->next;
7063     }
7064     [bplayer1 setImage:U->C.imgb];
7065     [bplayer1 setImageScaling:NSScaleToFit];
7066     [nplayer1 setStringValue:U->C.nameNick];
7067     [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7068     [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
7069     [iplayer1 setImage:MC[chipNum[U->x][U->y]].img];
7070     [mplayer1 setStringValue:MC[chipNum[U->x][U->y]].name];
7071     [rplayer1 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U->x][U->y]].dmgfix]];
7072     
7073     U = UTop;
7074     
7075     
7076     U = UTop;
7077     while (!(DUN[1] == U->number)) {
7078         U = U->next;
7079     }
7080     [bplayer2 setImage:U->C.imgb];
7081     [bplayer1 setImageScaling:NSScaleToFit];
7082     [nplayer2 setStringValue:U->C.nameNick];
7083     [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7084     [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
7085     [iplayer2 setImage:MC[chipNum[U->x][U->y]].img];
7086     [mplayer2 setStringValue:MC[chipNum[U->x][U->y]].name];
7087     [rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U->x][U->y]].dmgfix]];
7088     U = UTop;
7089     
7090     [self AttackDisplay2];
7091     
7092     messageProcess = 0;
7093     [battleDialog setStringValue:@"攻撃開始!!!!"];
7094     
7095     battleRdy = true;
7096
7097 }
7098
7099 -(void)AttackDisplay2{
7100
7101     U = UTop;
7102     
7103     while (!(DUN[1] == U->number)) {
7104         U = U->next;
7105     }
7106     U2 = U;
7107     U = UTop;
7108     while (!(AUN[1] == U->number)) {
7109         U = U->next;
7110     }
7111     
7112     
7113     if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){U = UTop;
7114     
7115         U = UTop;
7116         while (!(AUN[1] == U->number)) {
7117             U = U->next;
7118         }
7119         [bplayer1 setImage:U->CL.imgb];
7120         [bplayer1 setImageScaling:NSScaleToFit];
7121         [nplayer1 setStringValue:U->CL.name];
7122         [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7123         [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
7124         
7125         U = UTop;
7126         
7127         
7128         U = UTop;
7129         while (!(DUN[1] == U->number)) {
7130             U = U->next;
7131         }
7132         [bplayer2 setImage:U->CL.imgb];
7133         [bplayer1 setImageScaling:NSScaleToFit];
7134         [nplayer2 setStringValue:U->CL.name];
7135         [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7136         [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
7137         U = UTop;
7138     
7139     
7140     }else if(U->chipNumberL >= 0 && U2->chipNumberL < 0){U = UTop;
7141         U = UTop;
7142         while (!(AUN[1] == U->number)) {
7143             U = U->next;
7144         }
7145         [bplayer1 setImage:U->CL.imgb];
7146         [bplayer1 setImageScaling:NSScaleToFit];
7147         [nplayer1 setStringValue:U->CL.name];
7148         [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7149         [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
7150         
7151         U = UTop;
7152         
7153         
7154         U = UTop;
7155         while (!(DUN[1] == U->number)) {
7156             U = U->next;
7157         }
7158         [bplayer2 setImage:U->C.imgb];
7159         [bplayer1 setImageScaling:NSScaleToFit];
7160         [nplayer2 setStringValue:U->C.name];
7161         [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7162         [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
7163         U = UTop;
7164         
7165         
7166         
7167         
7168     }else if(U->chipNumberL < 0 && U2->chipNumberL >= 0){U = UTop;
7169         U = UTop;
7170         while (!(AUN[1] == U->number)) {
7171             U = U->next;
7172         }
7173         [bplayer1 setImage:U->C.imgb];
7174         [bplayer1 setImageScaling:NSScaleToFit];
7175         [nplayer1 setStringValue:U->C.name];
7176         [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7177         [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
7178         
7179         U = UTop;
7180         
7181         
7182         U = UTop;
7183         while (!(DUN[1] == U->number)) {
7184             U = U->next;
7185         }
7186         [bplayer2 setImage:U->CL.imgb];
7187         [bplayer1 setImageScaling:NSScaleToFit];
7188         [nplayer2 setStringValue:U->CL.name];
7189         [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7190         [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
7191         U = UTop;
7192     }
7193
7194
7195     U = UTop;
7196 }
7197
7198 -(bool)sortEcheck:(ATTACK*)AT opponent:(UNIT*)UT{
7199     
7200     if(AT->riku == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_RIKU)
7201         return true;
7202     if(AT->umi == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_UMI)
7203         return true;
7204     if(AT->chu == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_CHU)
7205         return true;
7206     if(AT->sora == FIELD_TYPE_E && UT->C.S_C.typeMOVE == MOVE_TYPE_SORA)
7207         return true;
7208     
7209     
7210     
7211     return false;
7212 }
7213
7214 -(void)setBattlePanel{
7215     //おまんちん
7216     U = UTop;
7217     
7218     if(DUN[1] <= 0 || AUN[1] <= 0)
7219         return;
7220     
7221     while (!(DUN[1] == U->number)) {
7222         U = U->next;
7223     }
7224     U2 = U;
7225     U = UTop;
7226     while (!(AUN[1] == U->number)) {
7227         U = U->next;
7228     }
7229     
7230     if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){
7231         U = UTop;
7232         [self setBattlePanelT2];
7233         return;
7234     }else if(U->chipNumberL >= 0 && U2->chipNumberL <= 0){
7235         U = UTop;
7236         [self setBattlePanelT3];
7237         return;
7238     }else if(U->chipNumberL <= 0 && U2->chipNumberL >= 0){
7239         U = UTop;
7240         [self setBattlePanelT4];
7241         return;
7242     }
7243     
7244     U = UTop;
7245     while (!(AUN[1] == U->number)) {
7246         U = U->next;
7247     }
7248     
7249     if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 || MF[MFselectedRow+1].MS.playerSet2 == 2)){
7250         cpuModeBATTLEflag = false;
7251     int mostDmg = 0;
7252     int mostDmg2 = 0;
7253     int mostHit = 0;
7254     int mostNum = 0;
7255     int num = 0;
7256     ATTACK *aTop2 = U->C.A;
7257     int mpCost = 0;
7258     if(U->C.A)
7259         if(!U->C.A->D){
7260             U->C.A = NULL;
7261             aTop2 = U->C.A;
7262         }
7263         
7264         
7265         
7266     while(U->C.A){
7267         
7268         double urSupposedToGet;
7269         
7270         if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
7271         
7272         double asItIs;
7273         
7274         if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
7275         
7276         
7277         double oopsIsRight = 0;
7278         
7279         if(U->C.A){
7280             if(U->C.A->melee){
7281                 oopsIsRight = U->C.S_C.MEL;
7282             }else
7283                 oopsIsRight = U->C.S_C.MIS;
7284         }
7285         oopsIsRight = oopsIsRight/100;
7286         
7287         mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
7288         
7289         if(!U2->C.aura && U->C.A->D){
7290             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
7291                                                  - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7292             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
7293                                                  - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7294             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
7295                                                  - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7296             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
7297                                                  - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7298             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
7299                                                  - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7300             if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
7301         }else if(U->C.A->D){
7302             double val = val = 1/log(3+U2->C.S_C.MP/64);
7303             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
7304                                                  - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7305             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
7306                                                  - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7307             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
7308                                                  - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7309             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
7310                                                  - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7311             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
7312                                                  - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7313             if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
7314         }
7315         double val2 = log(3+U2->C.S_C.MP/64);
7316         if(U->C.aura){
7317             mostDmg2 = mostDmg2*val2;
7318         }
7319         if(U->C.A->D){
7320             if(U->C.A->D->fix == 2){
7321                 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;
7322                 
7323                 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;
7324                 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;
7325                 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;
7326                 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;
7327                 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;
7328                 
7329                 
7330             }else if(U->C.A->D->fix == 1){
7331                 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;
7332                 
7333                 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;
7334                 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;
7335                 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;
7336                 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;
7337                 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;
7338                 
7339             }else if(U->C.A->D->fix == 0){
7340                 
7341             }
7342         }
7343
7344         
7345         U2A = U->C.A;
7346         costVIG = U->C.A->vigor;
7347         UNIT *oops = U;
7348         U = U2;
7349         mostDmg2 = [self dmgResist:mostDmg2];
7350         
7351         //NSLog(@"crCAL1 %d", crCAL1);
7352         if(mostDmg2 < 0) mostDmg2 = 1;
7353         U = oops;
7354         if(U->C.A->D)
7355         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]){
7356             
7357             mostDmg = mostDmg2;
7358             
7359             //mostDmg = U->C.A->totalD;
7360             mostNum = num;
7361         }
7362         if(U->C.A->D)
7363         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]){
7364             //mostDmg = U->C.A->totalD;
7365             mostHit = U->C.A->hitPercent;
7366             mostNum = num;
7367         }
7368         U->C.A = U->C.A->next;
7369         num++;
7370     }
7371     U->C.A = aTop2;
7372
7373         if(U->C.A->extent == 0 && mostNum >= 0 && !CPUmostDmgChoice){
7374             
7375             U->C.A = aTop2;
7376             crCAL1 = 0;
7377             for(int i = 0;i < mostNum;i++){
7378                 U->C.A = U->C.A->next;
7379                 crCAL1++;
7380             }
7381         }
7382         else{
7383         U->C.A = aTop2;
7384             for(int i = 0;i < crCAL1;i++){
7385                 U->C.A = U->C.A->next;
7386             }
7387         }
7388         
7389         CPUmostDmgChoice = false;
7390
7391    if(U->C.A){
7392         mostNumSub = mostNum;
7393         
7394        
7395         mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
7396        costVIG = U->C.A->vigor;
7397        
7398         if(U->C.A->rangeA <= unitBreak->atkRange && U->C.A->rangeB >= unitBreak->atkRange
7399            && mpCost <= U->C.S_C.MP && costVIG <= U->C.S_C.vigor){
7400             
7401         }else{
7402         
7403         }
7404         
7405     }U->C.A = aTop2;
7406     }
7407     U = UTop;
7408
7409     while (!(AUN[1] == U->number)) {
7410         U = U->next;
7411     }
7412     U2 = U;
7413     
7414     ATTACK *aTop = U->C.A;
7415     ATTACK *u2A;
7416     
7417     for(int i = 0;i < crCAL1;i++){
7418         U->C.A = U->C.A->next;
7419     }
7420     
7421     //NSLog(@"%@", U->C.A->name);
7422     
7423     if(battleSet1Flag){
7424         U->C.A = aTop;
7425         for (int i = 0;i < crCAL1;i++) {
7426             U->C.A = U->C.A->next;
7427         }
7428         
7429     }
7430     
7431     [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7432     [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7433     [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7434     //NSLog(@"crCAL1 %d", crCAL1);
7435     if(U->C.A){
7436         [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
7437         
7438     }
7439     [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7440     [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7441     double oops = U->C.S_C.HP/U->C.S_M.HP*100;
7442     [combatLHP1 setIntValue:(int)oops];
7443     oops = U->C.S_C.MP/U->C.S_M.MP*100;
7444     [combatLMP1 setIntValue:(int)oops];
7445     
7446     hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
7447     //NSLog(@"mostNumSub %d crCAL1 %d", mostNumSub, crCAL1);
7448     hitFix = U->C.A->hitPercent;
7449     
7450     u2A = U->C.A;
7451     U->C.A = aTop;
7452     
7453     if(battleDef1Flag){
7454         [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7455         [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7456         [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7457         [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
7458         [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7459         [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7460         [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7461     }
7462     if(battleDod1Flag){
7463         [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7464         [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7465         [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7466         [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
7467         [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7468         [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7469         [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7470
7471     }
7472     
7473     
7474     
7475     
7476     
7477     
7478     
7479     U = UTop;
7480     while (!(DUN[1] == U->number)) {
7481         U = U->next;
7482     }
7483     
7484     double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
7485     
7486     double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
7487     if(hi < 0) hi = 0;
7488     
7489     hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
7490
7491     if(battleDod2Flag) hit = hit / 2;
7492     hit = floor(hit);
7493     
7494     if(hit > 100) hit = 100;
7495     if(hit < 0) hit = 0;
7496     
7497     if(u2A->D->sort == 1){
7498         hit = 100;
7499     }
7500     
7501     if([self sortEcheck:u2A opponent:U])
7502         hit = 0;
7503     [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
7504     if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7505     
7506     
7507     
7508     int mostDmg = 0;
7509     int mostDmg2 = 0;
7510     int mostHit = 0;
7511     int mostNum = 0;
7512     int num = 0;
7513     ATTACK *aTop2 = U->C.A;
7514     int mpCost = 0;
7515
7516     
7517     while(U->C.A){
7518         
7519         double urSupposedToGet;
7520         
7521         if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
7522         
7523         double asItIs;
7524         if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
7525         
7526         double oopsIsRight = 0;
7527         
7528         if(U->C.A){
7529             if(U->C.A->melee){
7530                 oopsIsRight = U->C.S_C.MEL;
7531             }else
7532                 oopsIsRight = U->C.S_C.MIS;
7533         }
7534         oopsIsRight = oopsIsRight/100;
7535         
7536         mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
7537         
7538         if(!U2->C.aura && U->C.A->D){
7539             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
7540                                                  - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7541             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
7542                                                  - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7543             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
7544                                                  - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7545             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
7546                                                  - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7547             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
7548                                                  - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
7549             if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
7550         }else if(U->C.A->D){
7551             double val = val = 1/log(3+U2->C.S_C.MP/64);
7552             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
7553                                                  - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7554             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
7555                                                  - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7556             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
7557                                                  - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7558             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
7559                                                  - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7560             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
7561                                                  - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
7562             if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
7563         }
7564         double val2 = log(3+U2->C.S_C.MP/64);
7565         if(U->C.aura){
7566             mostDmg2 = mostDmg2*val2;
7567         }
7568         if(U->C.A->D){
7569             if(U->C.A->D->fix == 2){
7570                 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;
7571                 
7572                 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;
7573                 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;
7574                 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;
7575                 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;
7576                 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;
7577                 
7578                 
7579             }else if(U->C.A->D->fix == 1){
7580                 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;
7581                 
7582                 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;
7583                 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;
7584                 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;
7585                 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;
7586                 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;
7587                 
7588             }else if(U->C.A->D->fix == 0){
7589                 
7590             }
7591         }
7592
7593         U2A = U->C.A;
7594         
7595         UNIT *oops = U;
7596         //U = U2;
7597         mostDmg2 = [self dmgResist:mostDmg2];
7598         U = oops;
7599         
7600         costVIG = U->C.A->vigor;
7601
7602         if(U->C.A->D)
7603         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]){
7604             
7605             mostDmg = mostDmg2;
7606             
7607             //mostDmg = U->C.A->totalD;
7608             mostNum = num;
7609         }
7610         if(U->C.A->D)
7611         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]){
7612             //mostDmg = U->C.A->totalD;
7613             mostHit = U->C.A->hitPercent;
7614             mostNum = num;
7615         }
7616         U->C.A = U->C.A->next;
7617         num++;
7618     }
7619     
7620    
7621     
7622     U->C.A = aTop2;
7623     if(U->C.A){
7624     mostNumSub = mostNum;
7625     
7626     for(int i = 0;i < mostNum;i++){
7627         U->C.A = U->C.A->next;
7628     }
7629     mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
7630     
7631         
7632         costVIG = U->C.A->vigor;
7633         
7634
7635     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){
7636         
7637     }else while(U->C.A){
7638         U->C.A = U->C.A->next;
7639     }
7640     
7641     }
7642     
7643     
7644     
7645     if(battleSet2Flag){
7646             U->C.A = aTop2;
7647         //NSLog(@"%@", U->C.name);
7648         for (int i = 0;i < crCAL2;i++) {
7649             U->C.A = U->C.A->next;
7650         }
7651     }
7652     
7653     
7654     [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7655     [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7656     [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7657     [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7658     [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7659     double oops2 = U->C.S_C.HP/U->C.S_M.HP*100;
7660     [combatLHP2 setIntValue:(int)oops2];
7661     oops2 = U->C.S_C.MP/U->C.S_M.MP*100;
7662     [combatLMP2 setIntValue:(int)oops2];
7663     
7664     bool counter;
7665     int mpCost2 = 0;
7666     if(U->C.A){
7667         mpCost2 = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
7668         costVIG = U->C.A->vigor;
7669         
7670     }
7671     if(U->C.A && U->C.A->D){
7672     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]){
7673         [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
7674         hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
7675         hitFix = U->C.A->hitPercent;
7676         counter = true;
7677     }else if(u2A->D->sort == 1 || !U->C.A || U->C.A->D->sort == 1 || [self sortEcheck:U->C.A opponent:U]){
7678         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
7679     }
7680     }else{
7681         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
7682     }
7683     U2A = U->C.A;
7684     U->C.A = aTop2;
7685     
7686     if(battleDef2Flag){
7687         [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7688         [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7689         [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7690         [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7691         [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
7692         [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7693         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7694     }
7695     
7696     if(battleDod2Flag){
7697         [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
7698         [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
7699         [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
7700         [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7701         [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
7702         [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7703         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7704         
7705     }
7706     U = UTop;
7707     while (!(DUN[1] == U->number)) {
7708         U = U->next;
7709     }
7710     U2 = U;
7711     
7712     U = UTop;
7713     while (!(AUN[1] == U->number)) {
7714         U = U->next;
7715     }
7716     
7717     if(counter){
7718         
7719         double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
7720         
7721         
7722         double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
7723         if(hi < 0) hi = 0;
7724         
7725         hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
7726         if(battleDod1Flag) hit /= 2;
7727         hit = floor(hit);
7728         
7729         if(hit > 100) hit = 100;
7730         if(hit < 0) hit = 0;
7731         
7732         if([self sortEcheck:U2A opponent:U])
7733             hit = 0;
7734         
7735         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
7736         if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7737         
7738     }else{
7739         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7740     }
7741     
7742     U = UTop;
7743     
7744     if(CPUAttackSubmitFlag){
7745         if(unitCPUAttackFlag){
7746             [battleCancelBtn setEnabled:NO];
7747             [battleCancelBtn setTransparent:YES];
7748         }else{
7749             [battleCancelBtn setEnabled:YES];
7750             [battleCancelBtn setTransparent:NO];
7751         }
7752         if(displayBattleCheckPanelFlag == 0) displayBattleCheckPanelFlag = 1;
7753     }else{
7754         [battleCancelBtn setEnabled:YES];
7755         [battleCancelBtn setTransparent:NO];
7756     }
7757     
7758     U = UTop;
7759     while (!(AUN[1] == U->number)) {
7760         U = U->next;
7761     }
7762     
7763     if(U->CPU){
7764         [battleAttackBtn1 setEnabled:NO];
7765         [battleAttackBtn1 setTransparent:YES];
7766         [battleGuardBtn1 setEnabled:NO];
7767         [battleGuardBtn1 setTransparent:YES];
7768         [battleDodgeBtn1 setEnabled:NO];
7769         [battleDodgeBtn1 setTransparent:YES];
7770     }else{
7771         [battleAttackBtn1 setEnabled:YES];
7772         [battleAttackBtn1 setTransparent:NO];
7773         [battleGuardBtn1 setEnabled:YES];
7774         [battleGuardBtn1 setTransparent:NO];
7775         [battleDodgeBtn1 setEnabled:YES];
7776         [battleDodgeBtn1 setTransparent:NO];
7777     }U = UTop;
7778     
7779     U = UTop;
7780     while (!(DUN[1] == U->number)) {
7781         U = U->next;
7782     }
7783     if(U->CPU){
7784         [battleAttackBtn2 setEnabled:NO];
7785         [battleAttackBtn2 setTransparent:YES];
7786         [battleGuardBtn2 setEnabled:NO];
7787         [battleGuardBtn2 setTransparent:YES];
7788         [battleDodgeBtn2 setEnabled:NO];
7789         [battleDodgeBtn2 setTransparent:YES];
7790     }else{
7791         [battleAttackBtn2 setEnabled:YES];
7792         [battleAttackBtn2 setTransparent:NO];
7793         [battleGuardBtn2 setEnabled:YES];
7794         [battleGuardBtn2 setTransparent:NO];
7795         [battleDodgeBtn2 setEnabled:YES];
7796         [battleDodgeBtn2 setTransparent:NO];
7797     }U = UTop;
7798
7799     
7800     
7801     U = UTop;
7802     
7803     for (int i = 1; i < DUN[1]; i++) {
7804         U = U->next;
7805              
7806     }
7807
7808     
7809     if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
7810        unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
7811        ){
7812  
7813  //おまんこかわいい
7814         
7815         
7816     }else{
7817         [battleStartBtn setEnabled:YES];
7818         [battleStartBtn setTransparent:NO];
7819     }
7820    
7821     U = UTop;
7822     
7823     avPlayerFlag1 = false;
7824     avPlayerFlag2 = false;
7825 }
7826
7827 -(void)setBattlePanelT2{
7828     
7829     U = UTop;
7830     int mpCost = 0;
7831     ATTACK *aTop2 = U->CL.A;
7832     while (!(AUN[1] == U->number)) {
7833         U = U->next;
7834     }
7835     
7836     if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 || MF[MFselectedRow+1].MS.playerSet2 == 2)){
7837         cpuModeBATTLEflag = false;
7838     int mostDmg = 0;
7839     int mostHit = 0;
7840     int mostNum = -1;
7841     int num = 0;
7842     int mpCost = 0;
7843     while(U->CL.A){
7844         mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
7845         costVIG = U->C.A->vigor;
7846         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]){
7847             mostDmg = U->CL.A->totalD;
7848             mostNum = num;
7849         }
7850         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]){
7851             //mostDmg = U->C.A->totalD;
7852             mostHit = U->CL.A->hitPercent;
7853             mostNum = num;
7854         }
7855         U->CL.A = U->CL.A->next;
7856         num++;
7857     }
7858         U->CL.A = aTop2;
7859         
7860         for(int i = 0;i < crCAL1;i++){
7861             U->CL.A = U->CL.A->next;
7862             
7863         }
7864         ATTACK *ua = U->CL.A;
7865         
7866         U->CL.A = aTop2;
7867     
7868     mostNumSub = mostNum;
7869     
7870         U->CL.A = aTop2;
7871         
7872         for(int i = 0;i < mostNum;i++){
7873             U->C.A = U->CL.A->next;
7874         }
7875         if(U->CL.A->extent == 0){
7876             
7877             U->CL.A = aTop2;
7878             crCAL1 = 0;
7879             for(int i = 0;i < mostNum;i++){
7880                 U->CL.A = U->CL.A->next;
7881                 crCAL1++;
7882             }
7883         }
7884         else{
7885             U->CL.A = aTop2;
7886             for(int i = 0;i < crCAL1;i++){
7887                 U->CL.A = U->CL.A->next;
7888             }
7889         }
7890     }else{
7891         
7892         U->CL.A = NULL;
7893     }
7894     if(U->CL.A){
7895         mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
7896         costVIG = U->C.A->vigor;
7897     }
7898     if(U->CL.A){
7899         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){
7900             
7901         }else while(U->CL.A){
7902             U->CL.A = U->CL.A->next;
7903             crCAL1++;
7904         }
7905     }U->CL.A = aTop2;
7906     
7907     
7908     U = UTop;
7909     while (!(AUN[1] == U->number)) {
7910         U = U->next;
7911     }
7912     U2 = U;
7913     
7914     ATTACK *aTop = U->CL.A;
7915     ATTACK *u2A;
7916     
7917     if(U->C.A)
7918         crCAL1 = crCAL;
7919     
7920     for(int i = 0;i < crCAL1;i++){
7921         U->CL.A = U->CL.A->next;
7922     }
7923
7924     
7925     if(battleSet1Flag){
7926         
7927         U->CL.A = aTop;
7928         for (int i = 0;i < crCAL1;i++) {
7929             U->CL.A = U->CL.A->next;
7930         }
7931         
7932     }
7933     
7934     [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
7935     [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7936     [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
7937     [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
7938     [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7939     [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7940     double oops = U->CL.S_C.HP/U->CL.S_M.HP*100;
7941     [combatLHP1 setIntValue:(int)oops];
7942     oops = U->CL.S_C.EN/U->CL.S_M.EN*100;
7943     [combatLMP1 setIntValue:(int)oops];
7944     
7945     hit = U->CL.S_C.MOB + U->C.S_C.HIT*U->C.S_C.HP/U->C.S_M.HP;
7946     hitFix = U->CL.A->hitPercent;
7947     
7948     u2A = U->CL.A;
7949     U->CL.A = aTop;
7950     
7951     if(battleDef1Flag){
7952         [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
7953         [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7954         [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
7955         [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
7956         [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7957         [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7958         [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7959     }
7960     if(battleDod1Flag){
7961         [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
7962         [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
7963         [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
7964         [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
7965         [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
7966         [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
7967         [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7968         
7969     }
7970     
7971     
7972     
7973     
7974     
7975     
7976     
7977     U = UTop;
7978     while (!(DUN[1] == U->number)) {
7979         U = U->next;
7980     }
7981     
7982     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;
7983     if(battleDod2Flag) hit = hit / 2;
7984     hit = floor(hit);
7985     
7986     if(hit > 100) hit = 100;
7987     if(hit < 0) hit = 0;
7988     
7989     if(u2A->D->sort == 1){
7990         hit = 100;
7991     }
7992     
7993     if([self sortEcheck:u2A opponent:U])
7994         hit = 0;
7995     [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
7996     if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
7997     
7998     
7999     
8000     int mostDmg = 0;
8001     int mostHit = 0;
8002     int mostNum = -1;
8003     int num = 0;
8004     costVIG = U->C.A->vigor;
8005     while(U->CL.A){
8006         mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8007         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]){
8008             mostDmg = U->CL.A->totalD;
8009             mostNum = num;
8010         }
8011         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]){
8012             //mostDmg = U->C.A->totalD;
8013             mostHit = U->CL.A->hitPercent;
8014             mostNum = num;
8015         }
8016         U->CL.A = U->CL.A->next;
8017         num++;
8018     }
8019     
8020     U->CL.A = aTop2;
8021     
8022     mostNumSub = mostNum;
8023     
8024     if(mostNum >= 0){
8025     for(int i = 0;i < mostNum;i++){
8026         U->CL.A = U->CL.A->next;
8027     }
8028     }else{
8029     
8030         U->CL.A = NULL;
8031     }
8032     if(U->CL.A){
8033         mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8034         costVIG = U->C.A->vigor;
8035     }
8036     if(U->CL.A){
8037     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){
8038         
8039     }else while(U->CL.A){
8040         U->CL.A = U->CL.A->next;
8041     }
8042     }
8043     
8044     
8045     
8046     if(battleSet2Flag){
8047         
8048         U->CL.A = aTop2;
8049         
8050         for (int i = 0;i < crCAL2;i++) {
8051             U->CL.A = U->CL.A->next;
8052         }
8053         
8054     }
8055     
8056     
8057     [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8058     [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8059     [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8060     [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8061     [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8062     double oops2 = U->CL.S_C.HP/U->CL.S_M.HP*100;
8063     [combatLHP2 setIntValue:(int)oops2];
8064     oops2 = U->CL.S_C.EN/U->CL.S_M.EN*100;
8065     [combatLMP2 setIntValue:(int)oops2];
8066     
8067     bool counter;
8068     int mpCost2 = 0;
8069     if(U->CL.A && U->CL.A->D){
8070     if(U->CL.A->name){
8071         
8072     if(U->CL.A){
8073         mpCost2 = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8074         
8075     }
8076     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]){
8077         [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
8078         hit = U->CL.S_C.MOB + U->C.S_C.HIT;
8079         hitFix = U->CL.A->hitPercent;
8080         counter = true;
8081     }else if(u2A->D->sort == 1 || !U->CL.A || U->CL.A->D->sort == 1 || [self sortEcheck:U->CL.A opponent:U2]){
8082         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
8083     }
8084     
8085     }else{
8086         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
8087     }
8088     }else{
8089         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
8090     }
8091     U2A = U->CL.A;
8092     U->CL.A = aTop2;
8093     
8094     if(battleDef2Flag){
8095         [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8096         [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8097         [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8098         [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8099         [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
8100         [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8101         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8102     }
8103     
8104     if(battleDod2Flag){
8105         [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8106         [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8107         [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8108         [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8109         [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
8110         [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8111         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8112         
8113     }
8114     U = UTop;
8115     while (!(AUN[1] == U->number)) {
8116         U = U->next;
8117     }
8118     
8119     if(counter){
8120         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;
8121         if(battleDod1Flag) hit /= 2;
8122         hit = floor(hit);
8123         
8124         if(hit > 100) hit = 100;
8125         if(hit < 0) hit = 0;
8126         if([self sortEcheck:U2A opponent:U])
8127             hit = 0;
8128         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
8129         if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8130         
8131     }else{
8132         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8133     }
8134     
8135     U = UTop;
8136     while (!(AUN[1] == U->number)) {
8137         U = U->next;
8138     }
8139     
8140     if(U->CPU){
8141         [battleAttackBtn1 setEnabled:NO];
8142         [battleAttackBtn1 setTransparent:YES];
8143         [battleGuardBtn1 setEnabled:NO];
8144         [battleGuardBtn1 setTransparent:YES];
8145         [battleDodgeBtn1 setEnabled:NO];
8146         [battleDodgeBtn1 setTransparent:YES];
8147     }else{
8148         [battleAttackBtn1 setEnabled:YES];
8149         [battleAttackBtn1 setTransparent:NO];
8150         [battleGuardBtn1 setEnabled:YES];
8151         [battleGuardBtn1 setTransparent:NO];
8152         [battleDodgeBtn1 setEnabled:YES];
8153         [battleDodgeBtn1 setTransparent:NO];
8154     }U = UTop;
8155     
8156     U = UTop;
8157     while (!(DUN[1] == U->number)) {
8158         U = U->next;
8159     }
8160     if(U->CPU){
8161         [battleAttackBtn2 setEnabled:NO];
8162         [battleAttackBtn2 setTransparent:YES];
8163         [battleGuardBtn2 setEnabled:NO];
8164         [battleGuardBtn2 setTransparent:YES];
8165         [battleDodgeBtn2 setEnabled:NO];
8166         [battleDodgeBtn2 setTransparent:YES];
8167     }else{
8168         [battleAttackBtn2 setEnabled:YES];
8169         [battleAttackBtn2 setTransparent:NO];
8170         [battleGuardBtn2 setEnabled:YES];
8171         [battleGuardBtn2 setTransparent:NO];
8172         [battleDodgeBtn2 setEnabled:YES];
8173         [battleDodgeBtn2 setTransparent:NO];
8174     }U = UTop;
8175     
8176     U = UTop;
8177     
8178     for (int i = 1; i < DUN[1]; i++) {
8179         U = U->next;
8180     }
8181
8182     
8183     if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
8184        unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
8185        ){
8186         /*
8187         [battleStartBtn setEnabled:NO];
8188         [battleStartBtn setTransparent:YES];
8189          */
8190     }else{
8191         [battleStartBtn setEnabled:YES];
8192         [battleStartBtn setTransparent:NO];
8193     }
8194     
8195     U = UTop;
8196     
8197     avPlayerFlag1 = false;
8198     avPlayerFlag2 = false;
8199 }
8200
8201 -(void)setBattlePanelT3{
8202     
8203     
8204     U = UTop;
8205     while (!(AUN[1] == U->number)) {
8206         U = U->next;
8207     }
8208     
8209     if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 &&MF[MFselectedRow+1].MS.playerSet2 == 2)){
8210         cpuModeBATTLEflag = false;
8211     int mostDmg = 0;
8212     int mostHit = 0;
8213     int mostNum = 0;
8214     int num = 0;
8215     ATTACK *aTop2 = U->C.A;
8216     int mpCost = 0;
8217     while(U->C.A){
8218         mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
8219         
8220         costVIG = U->C.A->vigor;
8221         if(U->C.A->D)
8222         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]){
8223             mostDmg = U->C.A->totalD;
8224             mostNum = num;
8225         }
8226         if(U->C.A->D)
8227         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]){
8228             //mostDmg = U->C.A->totalD;
8229             mostHit = U->C.A->hitPercent;
8230             mostNum = num;
8231         }
8232         U->C.A = U->C.A->next;
8233         num++;
8234     }
8235         U->C.A = aTop2;
8236         
8237         for(int i = 0;i < crCAL1;i++){
8238             U->C.A = U->C.A->next;
8239             
8240         }
8241         ATTACK *ua = U->C.A;
8242         
8243         U->C.A = aTop2;
8244     
8245     mostNumSub = mostNum;
8246         U->C.A = aTop2;
8247         
8248         for(int i = 0;i < mostNum;i++){
8249             U->C.A = U->C.A->next;
8250         }
8251         if(U->C.A->extent == 0 && mostNum > 0){
8252             
8253             U->C.A = aTop2;
8254             crCAL1 = 0;
8255             for(int i = 0;i < mostNum;i++){
8256                 U->C.A = U->C.A->next;
8257                 crCAL1++;
8258             }
8259         }
8260         else{
8261             U->C.A = aTop2;
8262             for(int i = 0;i < crCAL1;i++){
8263                 U->C.A = U->C.A->next;
8264             }
8265         }
8266     mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
8267         costVIG = U->C.A->vigor;
8268         
8269
8270     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){
8271         
8272     }else{
8273     
8274     }
8275       U->C.A = aTop2;
8276     }
8277     
8278     U = UTop;
8279     while (!(AUN[1] == U->number)) {
8280         U = U->next;
8281     }
8282     U2 = U;
8283     
8284     
8285     ATTACK *aTop = U->CL.A;
8286     ATTACK *u2A;
8287     
8288     if(U->C.A)
8289         crCAL1 = crCAL;
8290     
8291     for(int i = 0;i < crCAL1;i++){
8292         U->CL.A = U->CL.A->next;
8293     }
8294     
8295     if(battleSet1Flag){
8296         
8297         U->CL.A = aTop;
8298         for (int i = 0;i < crCAL1;i++) {
8299             U->CL.A = U->CL.A->next;
8300         }
8301         
8302     }
8303     
8304     [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8305     [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8306     [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8307     [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
8308     [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8309     [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8310     double oops = U->CL.S_C.HP/U->CL.S_M.HP*100;
8311     [combatLHP1 setIntValue:(int)oops];
8312     oops = U->CL.S_C.EN/U->CL.S_M.EN*100;
8313     [combatLMP1 setIntValue:(int)oops];
8314     
8315     hit = U->CL.S_C.MOB + U->C.S_C.HIT;
8316     hitFix = U->CL.A->hitPercent;
8317     
8318     u2A = U->CL.A;
8319     U->CL.A = aTop;
8320     
8321     if(battleDef1Flag){
8322         [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8323         [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8324         [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8325         [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
8326         [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8327         [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8328         [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8329     }
8330     if(battleDod1Flag){
8331         [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8332         [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8333         [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8334         [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
8335         [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8336         [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8337         [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8338         
8339     }
8340     
8341     
8342     
8343     
8344     
8345     U = UTop;
8346     while (!(AUN[1] == U->number)) {
8347         U = U->next;
8348     }
8349     U2 = U;
8350     
8351     U = UTop;
8352     while (!(DUN[1] == U->number)) {
8353         U = U->next;
8354     }
8355     
8356     double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
8357     
8358     double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
8359     if(hi < 0) hi = 0;
8360     
8361     hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
8362     if(battleDod2Flag) hit = hit / 2;
8363     hit = floor(hit);
8364     
8365     if(hit > 100) hit = 100;
8366     if(hit < 0) hit = 0;
8367     
8368     if(u2A->D->sort == 1){
8369         hit = 100;
8370     }
8371     if([self sortEcheck:u2A opponent:U])
8372         hit = 0;
8373     [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
8374     if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8375     
8376     
8377     
8378     int mostDmg = 0;
8379     int mostHit = 0;
8380     int mostNum = 0;
8381     int num = 0;
8382     ATTACK *aTop2 = U->C.A;
8383     int mpCost = 0;
8384     while(U->C.A){
8385         
8386         costVIG = U->C.A->vigor;
8387         
8388         mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
8389         if(U->C.A->D)
8390         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]){
8391             mostDmg = U->C.A->totalD;
8392             mostNum = num;
8393         }
8394         if(U->C.A->D)
8395         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]){
8396             //mostDmg = U->C.A->totalD;
8397             mostHit = U->C.A->hitPercent;
8398             mostNum = num;
8399         }
8400         U->C.A = U->C.A->next;
8401         num++;
8402     }
8403     
8404     U->C.A = aTop2;
8405     
8406     mostNumSub = mostNum;
8407     
8408     for(int i = 0;i < mostNum;i++){
8409         U->C.A = U->C.A->next;
8410     }
8411     mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
8412     costVIG = U->C.A->vigor;
8413     
8414     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){
8415         
8416     }else while(U->C.A){
8417         U->C.A = U->C.A->next;
8418     }
8419     
8420     
8421     if(battleSet2Flag){
8422         
8423         U->C.A = aTop2;
8424         
8425         for (int i = 0;i < crCAL2;i++) {
8426             U->C.A = U->C.A->next;
8427         }
8428         
8429     }
8430     
8431     
8432     [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8433     [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8434     [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8435     [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8436     [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8437     double oops2 = U->C.S_C.HP/U->C.S_M.HP*100;
8438     [combatLHP2 setIntValue:(int)oops2];
8439     oops2 = U->C.S_C.MP/U->C.S_M.MP*100;
8440     [combatLMP2 setIntValue:(int)oops2];
8441     
8442     bool counter;
8443     int mpCost2 = 0;
8444     if(U->C.A){
8445         mpCost2 = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
8446         costVIG = U->C.A->vigor;
8447
8448     }
8449     if(U->C.A &&U->C.A->D){
8450     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]){
8451         [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
8452         hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
8453         hitFix = U->C.A->hitPercent;
8454         counter = true;
8455     }else if(u2A->D->sort == 1 || !U->C.A || U->C.A->D->sort == 1 || [self sortEcheck:U->C.A opponent:U2]){
8456         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
8457     }}else{
8458         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
8459     }
8460     U2A = U->C.A;
8461     U->C.A = aTop2;
8462     
8463     if(battleDef2Flag){
8464         [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8465         [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8466         [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8467         [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8468         [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
8469         [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8470         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8471     }
8472     
8473     if(battleDod2Flag){
8474         [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8475         [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8476         [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8477         [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8478         [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
8479         [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8480         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8481         
8482     }
8483     U = UTop;
8484     while (!(AUN[1] == U->number)) {
8485         U = U->next;
8486     }
8487     
8488     if(counter){
8489         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;
8490         if(battleDod1Flag) hit /= 2;
8491         hit = floor(hit);
8492         
8493         if(hit > 100) hit = 100;
8494         if(hit < 0) hit = 0;
8495         if([self sortEcheck:U2A opponent:U])
8496             hit = 0;
8497         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
8498         if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8499         
8500     }else{
8501         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8502     }
8503     
8504     U = UTop;
8505     while (!(AUN[1] == U->number)) {
8506         U = U->next;
8507     }
8508     
8509     if(U->CPU){
8510         [battleAttackBtn1 setEnabled:NO];
8511         [battleAttackBtn1 setTransparent:YES];
8512         [battleGuardBtn1 setEnabled:NO];
8513         [battleGuardBtn1 setTransparent:YES];
8514         [battleDodgeBtn1 setEnabled:NO];
8515         [battleDodgeBtn1 setTransparent:YES];
8516     }else{
8517         [battleAttackBtn1 setEnabled:YES];
8518         [battleAttackBtn1 setTransparent:NO];
8519         [battleGuardBtn1 setEnabled:YES];
8520         [battleGuardBtn1 setTransparent:NO];
8521         [battleDodgeBtn1 setEnabled:YES];
8522         [battleDodgeBtn1 setTransparent:NO];
8523     }U = UTop;
8524     
8525     U = UTop;
8526     while (!(DUN[1] == U->number)) {
8527         U = U->next;
8528     }
8529     if(U->CPU){
8530         [battleAttackBtn2 setEnabled:NO];
8531         [battleAttackBtn2 setTransparent:YES];
8532         [battleGuardBtn2 setEnabled:NO];
8533         [battleGuardBtn2 setTransparent:YES];
8534         [battleDodgeBtn2 setEnabled:NO];
8535         [battleDodgeBtn2 setTransparent:YES];
8536     }else{
8537         [battleAttackBtn2 setEnabled:YES];
8538         [battleAttackBtn2 setTransparent:NO];
8539         [battleGuardBtn2 setEnabled:YES];
8540         [battleGuardBtn2 setTransparent:NO];
8541         [battleDodgeBtn2 setEnabled:YES];
8542         [battleDodgeBtn2 setTransparent:NO];
8543     }U = UTop;
8544     
8545     
8546     U = UTop;
8547     
8548     for (int i = 1; i < DUN[1]; i++) {
8549         U = U->next;
8550     }
8551     
8552     if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
8553        unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
8554        ){
8555         /*
8556         [battleStartBtn setEnabled:NO];
8557         [battleStartBtn setTransparent:YES];
8558          */
8559     }else{
8560         [battleStartBtn setEnabled:YES];
8561         [battleStartBtn setTransparent:NO];
8562     }
8563     
8564     U = UTop;
8565     
8566     avPlayerFlag1 = false;
8567     avPlayerFlag2 = false;
8568 }
8569
8570 -(void)setBattlePanelT4{
8571
8572     U = UTop;
8573     
8574     while (!(AUN[1] == U->number)) {
8575         U = U->next;
8576     }
8577     
8578     if(cpuModeBATTLEflag && (MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2)){
8579         cpuModeBATTLEflag = false;
8580     int mostDmg = 0;
8581     int mostHit = 0;
8582     int mostNum = 0;
8583     int num = 0;
8584     ATTACK *aTop2 = U->CL.A;
8585     int mpCost = 0;
8586     while(U->CL.A){
8587         mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8588         costVIG = U->C.A->vigor;
8589         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]){
8590             mostDmg = U->CL.A->totalD;
8591             mostNum = num;
8592         }
8593         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]){
8594             //mostDmg = U->C.A->totalD;
8595             mostHit = U->CL.A->hitPercent;
8596             mostNum = num;
8597         }
8598         U->CL.A = U->CL.A->next;
8599         num++;
8600     }
8601     
8602         
8603     mostNumSub = mostNum;
8604         U->CL.A = aTop2;
8605         
8606         for(int i = 0;i < mostNum;i++){
8607             U->CL.A = U->CL.A->next;
8608         }
8609         if(U->CL.A->extent == 0){
8610             
8611             U->CL.A = aTop2;
8612             crCAL1 = 0;
8613             for(int i = 0;i < mostNum;i++){
8614                 U->CL.A = U->CL.A->next;
8615                 crCAL1++;
8616             }
8617         }
8618         else{
8619             U->CL.A = aTop2;
8620             for(int i = 0;i < crCAL1;i++){
8621                 U->CL.A = U->CL.A->next;
8622             }
8623         }
8624     mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8625         costVIG = U->C.A->vigor;
8626     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){
8627         
8628     }else while(U->CL.A){
8629         U->CL.A = U->CL.A->next;
8630         crCAL1++;
8631     }
8632       U->CL.A = aTop2;
8633     }
8634     U = UTop;
8635     
8636     while (!(AUN[1] == U->number)) {
8637         U = U->next;
8638     }
8639     U2 = U;
8640     
8641     ATTACK *aTop = U->C.A;
8642     ATTACK *u2A;
8643     
8644     if(U->C.A)
8645         crCAL1 = crCAL;
8646     
8647     for(int i = 0;i < crCAL1;i++){
8648         U->C.A = U->C.A->next;
8649     }
8650     
8651     if(battleSet1Flag){
8652         
8653         U->C.A = aTop;
8654         for (int i = 0;i < crCAL1;i++) {
8655             U->C.A = U->C.A->next;
8656         }
8657         
8658     }
8659     
8660     [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8661     [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8662     [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8663     [combatATK1 setStringValue:[NSString stringWithFormat:@"%@", U->C.A->name]];
8664     [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8665     [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8666     double oops = U->C.S_C.HP/U->C.S_M.HP*100;
8667     [combatLHP1 setIntValue:(int)oops];
8668     oops = U->C.S_C.MP/U->C.S_M.MP*100;
8669     [combatLMP1 setIntValue:(int)oops];
8670     
8671     hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
8672     hitFix = U->C.A->hitPercent;
8673     
8674     u2A = U->C.A;
8675     U->C.A = aTop;
8676     
8677     if(battleDef1Flag){
8678         [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8679         [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8680         [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8681         [combatATK1 setStringValue:[NSString stringWithFormat:@"防御耐性"]];
8682         [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8683         [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8684         [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8685     }
8686     if(battleDod1Flag){
8687         [combatNAME1 setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
8688         [combatHP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.HP, U->C.S_M.HP]];
8689         [combatMP1 setStringValue:[NSString stringWithFormat:@"%g/%g", U->C.S_C.MP, U->C.S_M.MP]];
8690         [combatATK1 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
8691         [combatVIG1 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8692         [combatAP1 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8693         [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8694         
8695     }
8696     
8697     
8698     
8699     
8700     
8701     
8702     
8703     U = UTop;
8704     while (!(DUN[1] == U->number)) {
8705         U = U->next;
8706     }
8707     
8708     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;
8709     if(battleDod2Flag) hit = hit / 2;
8710     hit = floor(hit);
8711     
8712     if(hit > 100) hit = 100;
8713     if(hit < 0) hit = 0;
8714     
8715     if(u2A->D->sort == 1){
8716         hit = 100;
8717     }
8718     if([self sortEcheck:u2A opponent:U])
8719         hit = 0;
8720     [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
8721     if(battleDef1Flag || battleDod1Flag) [combatHIT1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8722     
8723     
8724     
8725     int mostDmg = 0;
8726     int mostHit = 0;
8727     int mostNum = 0;
8728     int num = 0;
8729     ATTACK *aTop2 = U->CL.A;
8730     int mpCost = 0;
8731     while(U->CL.A){
8732         mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8733         costVIG = U->C.A->vigor;
8734         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]){
8735             mostDmg = U->CL.A->totalD;
8736             mostNum = num;
8737         }
8738         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]){
8739             //mostDmg = U->C.A->totalD;
8740             mostHit = U->CL.A->hitPercent;
8741             mostNum = num;
8742         }
8743         U->CL.A = U->CL.A->next;
8744         num++;
8745     }
8746     
8747     mostNumSub = mostNum;
8748     
8749     U->CL.A = aTop2;
8750     
8751     for(int i = 0;i < mostNum;i++){
8752         U->CL.A = U->CL.A->next;
8753     }
8754     mpCost = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8755     costVIG = U->C.A->vigor;
8756     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){
8757         
8758     }else while(U->CL.A){
8759         U->CL.A = U->CL.A->next;
8760     }
8761     
8762     
8763     if(battleSet2Flag){
8764         
8765         U->CL.A = aTop2;
8766         
8767         for (int i = 0;i < crCAL2;i++) {
8768             U->CL.A = U->CL.A->next;
8769         }
8770         
8771     }
8772     
8773     
8774     [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8775     [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8776     [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8777     [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8778     [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8779     double oops2 = U->CL.S_C.HP/U->CL.S_M.HP*100;
8780     [combatLHP2 setIntValue:(int)oops2];
8781     oops2 = U->CL.S_C.EN/U->CL.S_M.EN*100;
8782     [combatLMP2 setIntValue:(int)oops2];
8783     
8784     bool counter;
8785     int mpCost2 = 0;
8786     if(U->CL.A){
8787         mpCost2 = U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5;
8788         
8789     }
8790     if(U->CL.A && U->CL.A->D){
8791     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]){
8792         [combatATK2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.A->name]];
8793         hit = U->CL.S_C.MOB + U->C.S_C.HIT;
8794         hitFix = U->CL.A->hitPercent;
8795         counter = true;
8796     }else if(u2A->D->sort == 1 || !U->CL.A || U->CL.A->D->sort == 1 || [self sortEcheck:U->CL.A opponent:U2]){
8797         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
8798     }}else{
8799         [combatATK2 setStringValue:[NSString stringWithFormat:@"反撃不可能"]];
8800     }
8801     U2A = U->CL.A;
8802     U->CL.A = aTop2;
8803     
8804     if(battleDef2Flag){
8805         [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8806         [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8807         [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8808         [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8809         [combatATK2 setStringValue:[NSString stringWithFormat:@"防御態勢"]];
8810         [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8811         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8812     }
8813     
8814     if(battleDod2Flag){
8815         [combatNAME2 setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
8816         [combatHP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
8817         [combatMP2 setStringValue:[NSString stringWithFormat:@"%g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
8818         [combatVIG2 setStringValue:[NSString stringWithFormat:@"気力 %d", U->C.S_C.vigor]];
8819         [combatATK2 setStringValue:[NSString stringWithFormat:@"回避耐性"]];
8820         [combatAP2 setStringValue:[NSString stringWithFormat:@"%g", U->C.S_C.AP]];
8821         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8822         
8823     }
8824     
8825     U = UTop;
8826     while (!(DUN[1] == U->number)) {
8827         U = U->next;
8828     }
8829     U2 = U;
8830     
8831     U = UTop;
8832     while (!(AUN[1] == U->number)) {
8833         U = U->next;
8834     }
8835     
8836     if(counter){
8837         
8838         double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
8839         
8840         double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
8841         if(hi < 0) hi = 0;
8842         
8843         hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
8844         if(battleDod1Flag) hit /= 2;
8845         hit = floor(hit);
8846         
8847         if(hit > 100) hit = 100;
8848         if(hit < 0) hit = 0;
8849         if([self sortEcheck:U2A opponent:U])
8850             hit = 0;
8851         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 %g", hit]];
8852         if(battleDef2Flag || battleDod2Flag) [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8853         
8854     }else{
8855         [combatHIT2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8856     }
8857     
8858     U = UTop;
8859     while (!(AUN[1] == U->number)) {
8860         U = U->next;
8861     }
8862     
8863     if(U->CPU){
8864         [battleAttackBtn1 setEnabled:NO];
8865         [battleAttackBtn1 setTransparent:YES];
8866         [battleGuardBtn1 setEnabled:NO];
8867         [battleGuardBtn1 setTransparent:YES];
8868         [battleDodgeBtn1 setEnabled:NO];
8869         [battleDodgeBtn1 setTransparent:YES];
8870     }else{
8871         [battleAttackBtn1 setEnabled:YES];
8872         [battleAttackBtn1 setTransparent:NO];
8873         [battleGuardBtn1 setEnabled:YES];
8874         [battleGuardBtn1 setTransparent:NO];
8875         [battleDodgeBtn1 setEnabled:YES];
8876         [battleDodgeBtn1 setTransparent:NO];
8877     }U = UTop;
8878     
8879     U = UTop;
8880     while (!(DUN[1] == U->number)) {
8881         U = U->next;
8882     }
8883     if(U->CPU){
8884         [battleAttackBtn2 setEnabled:NO];
8885         [battleAttackBtn2 setTransparent:YES];
8886         [battleGuardBtn2 setEnabled:NO];
8887         [battleGuardBtn2 setTransparent:YES];
8888         [battleDodgeBtn2 setEnabled:NO];
8889         [battleDodgeBtn2 setTransparent:YES];
8890     }else{
8891         [battleAttackBtn2 setEnabled:YES];
8892         [battleAttackBtn2 setTransparent:NO];
8893         [battleGuardBtn2 setEnabled:YES];
8894         [battleGuardBtn2 setTransparent:NO];
8895         [battleDodgeBtn2 setEnabled:YES];
8896         [battleDodgeBtn2 setTransparent:NO];
8897     }U = UTop;
8898     
8899     
8900     U = UTop;
8901     
8902     for (int i = 1; i < DUN[1]; i++) {
8903         U = U->next;
8904     }
8905     
8906     if((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
8907        unitBreak->team == 1 || (unitBreak->team == 2 && U->team == 1)
8908        ){
8909         /*
8910         [battleStartBtn setEnabled:NO];
8911         [battleStartBtn setTransparent:YES];
8912          */
8913     }else{
8914         [battleStartBtn setEnabled:YES];
8915         [battleStartBtn setTransparent:NO];
8916     }
8917     
8918     U = UTop;
8919     
8920     avPlayerFlag1 = false;
8921     avPlayerFlag2 = false;
8922 }
8923
8924 -(void)DisplayMessage{
8925     
8926     battleFlag = true;
8927     attackExtentFlag = false;
8928     attackingWait = false;
8929     
8930     if(!battleSetUp) return;
8931     if(!fuckingLoadBugFix) return;
8932     
8933     if(!battleVeryBegunFlag){
8934     [btHITtf1 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8935     [btDMGtf1 setStringValue:[NSString stringWithFormat:@"ダメージ値 ----"]];
8936     [btHITtf2 setStringValue:[NSString stringWithFormat:@"命中率 ----"]];
8937     [btDMGtf2 setStringValue:[NSString stringWithFormat:@"ダメージ値 ----"]];
8938     }
8939     battleVeryBegunFlag = true;
8940     pussyLoopFlag = true;
8941     if(AVpreview){
8942     if(AVpreview.rate > 0){
8943         //[battleWindow setIgnoresMouseEvents:YES];
8944         [battleWindow makeKeyAndOrderFront:nil];
8945         //NSLog(@"%g", AVpreview.rate);
8946         return;
8947     }else{
8948         //[battleWindow setIgnoresMouseEvents:NO];
8949         //NSLog(@"%g", AVpreview.rate);
8950         AVpreview = NULL;
8951         if(avPlayerFlag1){
8952             
8953             [AVPV setHidden:YES];
8954         }
8955         else if(avPlayerFlag2){
8956             [AVPV setHidden:YES];
8957         }
8958     }
8959     }
8960     if(animationFlag3){
8961         if(animationFlag1){
8962             animationFlag1 = false;
8963             U = effCun;
8964             U->C.A = attackTop;
8965         }
8966         if(animationFlag2){
8967             animationFlag2 = false;
8968             U = effCun;
8969             U->C.A = attackTop2;
8970         }
8971         U = UTop;
8972     }else{
8973         if(animationFlag1 || animationFlag2){
8974             return;
8975         }
8976     }
8977     
8978     double def2 = (double)31/32;
8979     NSString *message = @"";
8980     
8981     enum{
8982         RIKU,
8983         UMI,
8984         CHU,
8985         SORA
8986     };
8987     
8988     enum{
8989         A,
8990         B,
8991         C,
8992         D,
8993         E,
8994         S,
8995         SS
8996     };
8997     static bool extentbool = false;
8998     static bool extentbool2 = false;
8999     
9000     
9001     if(cpuAtkExtendFlag){
9002         extentBattleFlag2 = true;
9003     }
9004     
9005     if(!extentbool && extentBattleFlag2){
9006         extentbool = true;
9007         extentMPcostFlag = false;
9008         DUNnum = 1;
9009     }
9010     
9011     assholeLoadBugFix = true;
9012     
9013     switch (messageProcess) {
9014         case 0:
9015             if(bLoopFlag) break;
9016             
9017             DUNnum = 1;
9018             
9019             U = UTop;
9020             while (!(DUN[DUNnum] == U->number)) {
9021                 U = U->next;
9022                 
9023             }
9024             U2 = U;
9025             U = UTop;
9026             while (!(AUN[1] == U->number)) {
9027                 U = U->next;
9028             }
9029             
9030             if(U->number == U2->number){
9031                 btSelfAction = true;
9032             }else{
9033                 btSelfAction = false;
9034             }
9035             
9036             U = UTop;
9037             U2 = UTop;
9038             
9039             [battleDialog setStringValue:@"攻撃開始!"];
9040             if(!baseDistanceCompFlag)
9041                 break;
9042             bLoopFlag = true;
9043             messageProcess++;
9044             DUNnum = 1;
9045             battleIsProcFlag = true;
9046             
9047             break;
9048         case 1:
9049             
9050             if(bLoopFlag) break;
9051             
9052             
9053             if(DUNnum > 1){
9054                 
9055                 
9056                 btHitExtendFlag1 = true;
9057                 
9058                 if(btHitExtendProc1 >= 3){
9059                     btHitExtendProc1 = 0;
9060                 }
9061             }
9062             
9063                 BTunitAttackFlag1 = true;
9064             if(battleDef1Flag || battleDod1Flag)
9065                 BTunitAttackFlag1 = false;
9066             
9067             U = UTop;
9068             while (!(DUN[DUNnum] == U->number)) {
9069                 U = U->next;
9070                 
9071             }
9072             U2 = U;
9073             U = UTop;
9074             while (!(AUN[1] == U->number)) {
9075                 U = U->next;
9076             }
9077             
9078             
9079             if(U->number == U2->number){
9080                 btSelfAction = true;
9081             }else{
9082                 btSelfAction = false;
9083             }
9084             
9085             if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){
9086                 U = UTop;
9087                 [self DisplayMessageMod1A];
9088                 return;
9089             }else if(U->chipNumberL >= 0 && U2->chipNumberL < 0){
9090                 U = UTop;
9091                 [self DisplayMessageMod2A];
9092                 return;
9093             }else if(U->chipNumberL < 0 && U2->chipNumberL >= 0){
9094                 U = UTop;
9095                 [self DisplayMessageMod3A];
9096                 return;
9097             }
9098             
9099             
9100             U = UTop;
9101             if(bLoopFlag) break;
9102             
9103             U = UTop;
9104             while (!(AUN[1] == U->number)) {
9105                 U = U->next;
9106             }
9107             ATTACK *aTop = U->C.A;
9108             attackTop = aTop;
9109             for(int i = 0;i < crCAL1;i++){
9110                 U->C.A = U->C.A->next;
9111             }
9112             effCun = U;
9113             attackCR = U->C.A;
9114             
9115             if(attackCR->magic){
9116                 btAttackType1 = BT_TYPE_MAGIC;
9117             }else{
9118                 btAttackType1 = BT_TYPE_NORMAL;
9119             }
9120             
9121             if(BTunitAttackFlag1)
9122             if((btAttackType1 == BT_TYPE_NORMAL && btAttackMoveValue1 < 2)
9123                || (btAttackType1 == BT_TYPE_MAGIC && btAttackMoveValue1 < 5)
9124                || (btAttackType1 == BT_TYPE_ABILITY && btAttackMoveValue1 < 2)){
9125                 
9126                 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.nameNick, U->C.A->name]];
9127                 
9128                 [battleDialog setStringValue:message];
9129                 U->C.A = aTop;
9130                 U = UTop;
9131                 
9132                 return;
9133             }
9134             
9135             if(btHitExtendFlag1 && btHitExtendProc1 < 2){
9136                 
9137                 
9138                 
9139                 
9140                 U->C.A = aTop;
9141                 U = UTop;
9142                 
9143                 return;
9144             }
9145             
9146             if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.nameNick, U->C.A->name]];
9147             
9148             
9149             [bplayer2 setImage:U2->C.imgb];
9150             [bplayer2 setImageScaling:NSScaleToFit];
9151             [nplayer2 setStringValue:U2->C.nameNick];
9152             [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U2->C.S_C.HP, U2->C.S_M.HP]];
9153             [lplayer2 setIntValue:U2->C.S_C.HP/U2->C.S_M.HP*100];
9154             [iplayer2 setImage:MC[chipNum[U2->x][U2->y]].img];
9155             [mplayer2 setStringValue:MC[chipNum[U2->x][U2->y]].name];
9156             [rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U2->x][U2->y]].dmgfix]];
9157             
9158             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){
9159                 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath]  stringByDeletingLastPathComponent]];
9160             
9161                 NSString *path = @"data/AttackList/ALdata";
9162             
9163                 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
9164             
9165                 path = [path stringByAppendingFormat:@"/"];
9166             
9167                 path = [path stringByAppendingString:U->C.A->AN.movName];
9168             
9169                 NSData *AVData = [NSData dataWithContentsOfFile:path];
9170                 
9171                 if(AVData)
9172                 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
9173                 
9174                 
9175                 if(!AVpreview){
9176                 
9177                     NSString *path = @"data/AttackList3/IALdata";
9178                     
9179                     path = [path stringByAppendingFormat:@"%dE", U->C.A->indexE];
9180                     
9181                     path = [path stringByAppendingFormat:@"/"];
9182                     
9183                     path = [path stringByAppendingString:U->C.A->AN.movName];
9184                     
9185                     
9186                     NSData *AVData = [NSData dataWithContentsOfFile:path];
9187                     
9188                     if(AVData)
9189                     AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
9190                     
9191                 
9192                 }
9193                 
9194                 if(AVpreview) {
9195                     AVPV.player = [AVpreview retain];
9196                     AVPV.videoGravity = AVLayerVideoGravityResize;
9197                 }else{
9198                     goto avAWESOME;
9199                 }
9200                 
9201                 
9202                 [AVPV setHidden:NO];
9203                 [AVpreview play];
9204                 [battleDialog setStringValue:message];
9205                 
9206                 avPlayerFlag1 = true;
9207                 
9208                 
9209                 U->C.A = aTop;
9210                 U = UTop;
9211                 return;
9212             }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->C.A->AN.ANI && !animationFlag3 && DUNnum == 1){
9213             
9214                 [battleDialog setStringValue:message];
9215                 animationFlag1 = true;
9216                 aniFrameCnt = 0;
9217                 return;
9218             }
9219             
9220         avAWESOME:{}
9221
9222             double urSupposedToGet;
9223            
9224             if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
9225             
9226             double asItIs;
9227             if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
9228             
9229             double oopsIsRight;
9230             
9231             if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
9232             else oopsIsRight = U->C.S_C.MIS;
9233             
9234             oopsIsRight = oopsIsRight/100;
9235             double val;
9236             if(!U2->C.aura && U->C.A->D){
9237             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
9238                                             - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9239             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
9240                                             - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9241             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
9242                                             - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9243             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
9244                                             - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9245             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
9246                                             - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9247             if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
9248             }else if(U->C.A->D){
9249                 val = 1/log(3+U2->C.S_C.MP/64);
9250                 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
9251                                                 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9252                 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
9253                                                 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9254                 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
9255                                                 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9256                 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
9257                                                 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9258                 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
9259                                                 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9260                 if(U->C.A->D->type == 5) dmg = U->C.A->totalD*val;
9261             }
9262             double val2 = log(3+U2->C.S_C.MP/64);
9263             if(U->C.aura){
9264                 dmg = dmg*val2;
9265             }
9266             
9267             if(U->C.A->D){
9268             if(U->C.A->D->fix == 2){
9269                 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;
9270
9271                 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;
9272                 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;
9273                 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;
9274                 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;
9275                 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;
9276                 
9277             
9278             }else if(U->C.A->D->fix == 1){
9279                 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;
9280                 
9281                 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;
9282                 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;
9283                 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;
9284                 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;
9285                 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;
9286                 
9287             }else if(U->C.A->D->fix == 0){
9288                 
9289             }
9290             }
9291             costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
9292             
9293             if(extentMPcostFlag && extentBattleFlag2){
9294                 
9295             }else{
9296                 U->C.S_C.MP -= costMP;
9297                 extentMPcostFlag = true;
9298             }
9299             
9300             hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
9301             hitFix = U->C.A->hitPercent;
9302             
9303             U2A = U->C.A;
9304             U->C.A = aTop;
9305             
9306             U = UTop;
9307             while (!(AUN[1] == U->number)) {
9308                 U = U->next;
9309             }
9310             U2 = U;
9311             
9312             U = UTop;
9313             while (!(DUN[DUNnum] == U->number)) {
9314                 U = U->next;
9315             }
9316             
9317             double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
9318             
9319             double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
9320             if(hi < 0) hi = 0;
9321             
9322             hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
9323             if(hit > 100) hit = 100;
9324             if(hit < 0) hit = 0;
9325             if(U2A->D->sort == 1){
9326                 hit = 100;
9327             }
9328             if([self sortEcheck:U2A opponent:U])
9329                 hit = 0;
9330             
9331             healFlag = false;
9332             
9333             int wtf = 100;
9334             if(battleDod2Flag) hit /= 2;
9335             if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
9336                 
9337                 if(U2A->D->sort == 0){
9338                     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);
9339                     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);
9340                     NSLog(@"修正前のダメージ:%g", dmg);
9341                     dmg = [self dmgResist:dmg];
9342                     NSLog(@"属性後のダメージ:%g", dmg);
9343                     def2 = pow(def2, U->C.S_C.DEF);
9344                     int omfg = rand()%100;
9345                     NSLog(@"ダメージ幅:%g〜%g", floor(dmg), floor(dmg + dmg/10));
9346                     dmg = (dmg*omfg/100/10 + dmg);
9347                     NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
9348                     if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
9349                     else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
9350                     
9351                     if(U->C.S_C.typeMOVE == RIKU){
9352                         if(U2A->riku == A) dmg = dmg*1.2;
9353                         if(U2A->riku == B) dmg = dmg*1.0;
9354                         if(U2A->riku == C) dmg = dmg*0.6;
9355                         if(U2A->riku == D) dmg = dmg*0.2;
9356                         if(U2A->riku == E) dmg = 0;
9357                         if(U2A->riku == S) dmg = dmg*1.5;
9358                         if(U2A->riku == SS) dmg = dmg*2.0;
9359                     } if(U->C.S_C.typeMOVE == UMI &&
9360                        (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
9361                         if(U2A->umi == A) dmg = dmg*1.2;
9362                         if(U2A->umi == B) dmg = dmg*1.0;
9363                         if(U2A->umi == C) dmg = dmg*0.6;
9364                         if(U2A->umi == D) dmg = dmg*0.2;
9365                         if(U2A->umi == E) dmg = 0;
9366                         if(U2A->umi == S) dmg = dmg*1.5;
9367                         if(U2A->umi == SS) dmg = dmg*2.0;
9368                     }else if(U->C.S_C.typeMOVE == UMI){
9369                         if(U2A->riku == A) dmg = dmg*1.2;
9370                         if(U2A->riku == B) dmg = dmg*1.0;
9371                         if(U2A->riku == C) dmg = dmg*0.6;
9372                         if(U2A->riku == D) dmg = dmg*0.2;
9373                         if(U2A->riku == E) dmg = 0;
9374                         if(U2A->riku == S) dmg = dmg*1.5;
9375                         if(U2A->riku == SS) dmg = dmg*2.0;
9376                     
9377                     } if(U->C.S_C.typeMOVE == CHU){
9378                         if(U2A->chu == A) dmg = dmg*1.2;
9379                         if(U2A->chu == B) dmg = dmg*1.0;
9380                         if(U2A->chu == C) dmg = dmg*0.6;
9381                         if(U2A->chu == D) dmg = dmg*0.2;
9382                         if(U2A->chu == E) dmg = 0;
9383                         if(U2A->chu == S) dmg = dmg*1.5;
9384                         if(U2A->chu == SS) dmg = dmg*2.0;
9385                     } if(U->C.S_C.typeMOVE == SORA){
9386                         if(U2A->sora == A) dmg = dmg*1.2;
9387                         if(U2A->sora == B) dmg = dmg*1.0;
9388                         if(U2A->sora == C) dmg = dmg*0.6;
9389                         if(U2A->sora == D) dmg = dmg*0.2;
9390                         if(U2A->sora == E) dmg = 0;
9391                         if(U2A->sora == S) dmg = dmg*1.5;
9392                         if(U2A->sora == SS) dmg = dmg*2.0;
9393                     }
9394                     
9395                     NSLog(@"ユニットの地形適用後:%g", dmg);
9396                     if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
9397                     graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
9398                     
9399                     grazeFlag = false;
9400                     omfg = rand()%100;
9401                     if(graze > omfg && !healFlag) {dmg = dmg/5;
9402                         grazeFlag = true;
9403                     }
9404                     if(battleDef2Flag) dmg -= dmg*0.5;
9405                     battleDef2Flag = false;
9406                     dmg = floor(dmg);
9407                     if(dmg < 0) dmg = 0;
9408                     U->C.S_C.HP -= dmg;
9409                     U->C.S_C.vigor++;
9410                     
9411                     [btHITtf1 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
9412                     [btDMGtf1 setStringValue:[NSString stringWithFormat:@"ダメージ値 %g", dmg]];
9413                     
9414                     
9415                     
9416                 }else if(U2A->D->sort == 1){
9417                     dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
9418                     dmg = floor(dmg);
9419                     
9420                     U->C.S_C.HP += dmg;
9421                     if(U->C.S_C.HP > U->C.S_M.HP) U->C.S_C.HP = U->C.S_M.HP;
9422                     healFlag = true;
9423                 }
9424                 
9425                 while(1){
9426                     if(U->C.S_C.HP <= 0) {
9427                         U->C.S_C.HP = 0;
9428                         U2->C.S_C.vigor += 5;
9429                         
9430                         messageProcess = 2;
9431                         if(U->dead) break;
9432                         U->dead = true;
9433                         
9434                         
9435                         if(U->targType1L)
9436                             targType1cnt[0]--;
9437                         if(U->targType2L) {
9438                             targType2cnt[0]--;
9439                             targType2Lflag = true;
9440                         }
9441                         
9442                         if(U->targType1D)
9443                             targType1cnt[1]--;
9444                         if(U->targType2D) {
9445                             targType2cnt[1]--;
9446                             targType2Dflag = true;
9447                         }
9448                         
9449                         break;
9450                     }
9451                     break;
9452                 }
9453                 
9454             [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
9455             [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
9456             
9457                 if(![U2A->msg isEqualToString:@""]){
9458                     
9459                     message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
9460                                                                 [self originalMessage:U2A->msg subj:U2->C.nameNick obje:U->C.nameNick]]];
9461                     
9462                 }
9463                 
9464             if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
9465             if(!healFlag) {
9466                     message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.nameNick, dmg]];
9467                 btHitFlag1 = true;
9468                 }
9469             else {
9470                 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->C.nameNick, dmg]];
9471                 btHitFlag1 = false;
9472             }
9473             }else if(battleDef1Flag){
9474             
9475                 
9476                 U = UTop;
9477                 while (!(AUN[1] == U->number)) {
9478                     U = U->next;
9479                 }
9480                 
9481                 
9482                 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.nameNick]];
9483             
9484                 btHitFlag1 = false;
9485             
9486             }else if(battleDod1Flag){
9487             
9488                 U = UTop;
9489                 while (!(AUN[1] == U->number)) {
9490                     U = U->next;
9491                 }
9492                 
9493                 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.nameNick]];
9494                 
9495                 btHitFlag1 = false;
9496             }else{
9497             
9498                 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.nameNick]];
9499                 btHitFlag1 = false;
9500             
9501             }
9502                 [battleDialog setStringValue:message];
9503             
9504             [btHITtf1 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
9505             
9506             U = UTop;
9507             
9508             bLoopFlag = true;
9509             
9510             if(!extentBattleFlag2){
9511             if(healFlag) {
9512                 messageProcess++;
9513                  };
9514             messageProcess++;
9515             }else if(extentBattleFlag2){
9516                 if(btHitExtendProc1 == 2)
9517                     btHitExtendProc1 = 3;
9518                 if(btHitExtendProc1 >= 2)
9519                     btHitExtendFix1 = 1;
9520                 
9521                 btHitFlagCnt1 = 0;
9522                 DUNnum++;
9523                 messageProcess = 1;
9524                 if(DUN[DUNnum] <= 0){
9525                     messageProcess++;
9526                     messageProcess++;
9527                     extentBattleFlag2 = false;
9528                     extentbool = false;
9529                     extentMPcostFlag = false;
9530                 }
9531             }
9532             message = @"";
9533             avPlayerFlag1 = false;
9534             animationFlag3 = false;
9535             btAtattckMoveEnd = false;
9536             oopsCnt = 30;
9537             break;
9538         
9539         case 2:
9540             
9541             if(bLoopFlag) break;
9542             BTunitAttackFlag1 = false;
9543             BTunitAttackFlag2 = true;
9544             if(battleDef2Flag || battleDod2Flag)
9545                 BTunitAttackFlag2 = false;
9546             btHitFlag1 = false;
9547             
9548             
9549             U = UTop;
9550             while (!(DUN[1] == U->number)) {
9551                 U = U->next;
9552             }
9553             U2 = U;
9554             U = UTop;
9555             while (!(AUN[1] == U->number)) {
9556                 U = U->next;
9557             }
9558             
9559             
9560             if(U->number == U2->number){
9561                 btSelfAction = true;
9562             }else{
9563                 btSelfAction = false;
9564             }
9565             
9566             if(U->chipNumberL >= 0 && U2->chipNumberL >= 0){
9567                 U = UTop;
9568                 [self DisplayMessageMod1B];
9569                 return;
9570             }else if(U->chipNumberL >= 0 && U2->chipNumberL < 0){
9571                 U = UTop;
9572                 [self DisplayMessageMod2B];
9573                 return;
9574             }else if(U->chipNumberL < 0 && U2->chipNumberL >= 0){
9575                 U = UTop;
9576                 [self DisplayMessageMod3B];
9577                 return;
9578             }
9579             U = UTop;
9580             
9581             if(bLoopFlag) break;
9582             
9583             U = UTop;
9584             while (!(AUN[1] == U->number)) {
9585                 U = U->next;
9586             }
9587             U2 = U;
9588             U = UTop;
9589             
9590             U = UTop;
9591             while (!(DUN[1] == U->number)) {
9592                 U = U->next;
9593             }
9594             
9595             ATTACK *aTop2 = U->C.A;
9596             attackTop2 = aTop2;
9597             int mostDmg = 0;
9598             int mostDmg2 = 0;
9599             int mostNum = 0;
9600             int num = 0;
9601             int mpCost =0;
9602             
9603             if(!U->C.A) goto SKIP3;
9604             
9605             
9606             
9607             if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
9608             
9609             if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
9610
9611             
9612             if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
9613             else oopsIsRight = U->C.S_C.MIS;
9614             
9615             oopsIsRight = oopsIsRight/100;
9616             
9617             if(U->C.A) {
9618                 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
9619             }
9620             while(U->C.A){
9621                 mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
9622                 if(!U2->C.aura && U->C.A->D){
9623                     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
9624                                                          - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9625                     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
9626                                                          - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9627                     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
9628                                                          - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9629                     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
9630                                                          - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9631                     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
9632                                                          - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9633                     if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
9634                 }else if(U->C.A->D){
9635                     val = 1/log(3+U2->C.S_C.MP/64);
9636                     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
9637                                                          - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9638                     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
9639                                                          - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9640                     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
9641                                                          - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9642                     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
9643                                                          - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor)*asItIs*val;
9644                     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
9645                                                          - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9646                     if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
9647                 }
9648                 double val2 = log(3+U2->C.S_C.MP/64);
9649                 if(U->C.aura){
9650                     mostDmg2 = mostDmg2*val2;
9651                 }
9652                 if(U->C.A->D){
9653                     if(U->C.A->D->fix == 2){
9654                         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;
9655                         
9656                         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;
9657                         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;
9658                         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;
9659                         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;
9660                         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;
9661                         
9662                         
9663                     }else if(U->C.A->D->fix == 1){
9664                         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;
9665                         
9666                         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;
9667                         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;
9668                         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;
9669                         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;
9670                         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;
9671                         
9672                     }else if(U->C.A->D->fix == 0){
9673                         
9674                     }
9675                 }
9676                 
9677                 U2A = U->C.A;
9678                 UNIT *oops = U;
9679                 U = U2;
9680                 mostDmg2 = [self dmgResist:mostDmg2];
9681                 U = oops;
9682                 
9683                 costVIG = U->C.A->vigor;
9684                 if(U->C.A->D)
9685                 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]){
9686                     
9687             
9688                     mostDmg = mostDmg2;
9689                     
9690                     
9691                     //mostDmg = U->C.A->totalD;
9692                     mostNum = num;
9693                 }
9694                 U->C.A = U->C.A->next;
9695                 num++;
9696             }
9697             
9698             U->C.A = aTop2;
9699             
9700             if(!battleSet2PushedFlag){
9701                 for(int i = 0;i < mostNumSub;i++){
9702                 U->C.A = U->C.A->next;
9703             }
9704             
9705             }else{
9706             for(int i = 0;i < crCAL2;i++){
9707                 U->C.A = U->C.A->next;
9708             }
9709             
9710             
9711             }
9712             if(U->C.A->D){
9713             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]){
9714             
9715             }else while(U->C.A){
9716                 U->C.A = U->C.A->next;
9717             }}
9718             
9719             if(!U->C.A){
9720                 U->C.A = aTop2;
9721                 U = UTop;
9722                 BTunitAttackFlag2 = false;
9723                 message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
9724                 goto SKIP1;
9725             }
9726             effCun = U;
9727             attackCR2 = U->C.A;
9728             
9729             if(attackCR2->magic){
9730                 btAttackType2 = BT_TYPE_MAGIC;
9731             }else{
9732                 btAttackType2 = BT_TYPE_NORMAL;
9733             }
9734             
9735             if(BTunitAttackFlag2)
9736                 if((btAttackType2 == BT_TYPE_NORMAL && btAttackMoveValue2 < 2)
9737                    || (btAttackType2 == BT_TYPE_MAGIC && btAttackMoveValue2 < 5)
9738                    || (btAttackType2 == BT_TYPE_ABILITY && btAttackMoveValue2 < 2)){
9739                     
9740                 
9741                 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.nameNick, U->C.A->name]];
9742                 
9743                 [battleDialog setStringValue:message];
9744                 U->C.A = aTop2;
9745                 U = UTop;
9746                 
9747                 return;
9748             }
9749             
9750             if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.nameNick, U->C.A->name]];
9751             
9752             if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL){
9753                 [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath]  stringByDeletingLastPathComponent]];
9754                 
9755                 NSString *path = @"data/AttackList/ALdata";
9756                 
9757                 path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
9758                 
9759                 path = [path stringByAppendingFormat:@"/"];
9760                 
9761                 path = [path stringByAppendingString:U->C.A->AN.movName];
9762                 
9763                 
9764                 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
9765                 
9766                 if(AVpreview) {
9767                     AVPV.player = [AVpreview retain];
9768                     AVPV.videoGravity = AVLayerVideoGravityResize;
9769                 }else{
9770                     goto avAWESOME2;
9771                 }
9772                 
9773                 [AVPV setControlsStyle:0];
9774                 [AVPV setHidden:NO];
9775                 [AVpreview play];
9776                 [battleDialog setStringValue:message];
9777                 
9778                 avPlayerFlag2 = true;
9779                 
9780                 U->C.A = aTop2;
9781                 U = UTop;
9782                 return;
9783             }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->C.A->AN.ANI && !animationFlag3){
9784                 
9785                 
9786                 animationFlag2 = true;
9787                 aniFrameCnt = 0;
9788                 return;
9789             }
9790
9791             
9792         avAWESOME2:{}
9793             U2A = U->C.A;
9794             
9795             /*
9796             if(U->C.A->D->type == 0) dmg = U->C.S_C.ATK + U->C.A->totalD;
9797             if(U->C.A->D->type == 1) dmg = U->C.S_C.DEF + U->C.A->totalD;
9798             if(U->C.A->D->type == 2) dmg = U->C.S_C.ACU + U->C.A->totalD;
9799             if(U->C.A->D->type == 3) dmg = U->C.S_C.EVA + U->C.A->totalD;
9800             if(U->C.A->D->type == 4) dmg = U->C.S_C.CAP + U->C.A->totalD;
9801             if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
9802             */
9803             
9804             U->C.A = aTop2;
9805             U = UTop;
9806             while (!(AUN[1] == U->number)) {
9807                 U = U->next;
9808             }
9809             U2 = U;
9810             U = UTop;
9811             while (!(DUN[1] == U->number)) {
9812                 U = U->next;
9813             }
9814             NSString *string = [U2A->name retain];
9815             while (![U->C.A->name isEqualToString:string] && U->C.A) {
9816                 U->C.A = U->C.A->next;
9817             }
9818             
9819             if(!U->C.A) U->C.A = aTop2;
9820             
9821             if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
9822             
9823             if(U2) asItIs = 1/log(3+U2->C.S_C.DEF/64);
9824             
9825             
9826             if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
9827             else oopsIsRight = U->C.S_C.MIS;
9828             
9829             oopsIsRight = oopsIsRight/100;
9830
9831             
9832             if(!U2->C.aura && U->C.A->D){
9833                 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
9834                                                 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9835                 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
9836                                                 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9837                 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
9838                                                 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9839                 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
9840                                                 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9841                 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
9842                                                 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
9843                 if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
9844             }else if(U->C.A->D){
9845                 double val = val = 1/log(3+U2->C.S_C.MP/64);
9846                 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
9847                                                 - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9848                 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
9849                                                 - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9850                 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
9851                                                 - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9852                 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
9853                                                 - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9854                 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
9855                                                 - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
9856                 if(U->C.A->D->type == 5) dmg = U->C.A->totalD*val;
9857             }
9858             val2 = log(3+U2->C.S_C.MP/64);
9859             if(U->C.aura){
9860                 dmg = dmg*val2;
9861             }
9862             if(U->C.A->D){
9863                 if(U->C.A->D->fix == 2){
9864                     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;
9865                     
9866                     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;
9867                     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;
9868                     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;
9869                     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;
9870                     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;
9871                     
9872                     
9873                 }else if(U->C.A->D->fix == 1){
9874                     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;
9875                     
9876                     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;
9877                     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;
9878                     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;
9879                     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;
9880                     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;
9881                     
9882                 }else if(U->C.A->D->fix == 0){
9883                     
9884                 }
9885             }
9886             costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
9887             U->C.S_C.MP -= costMP;
9888             
9889             hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
9890             hitFix = U->C.A->hitPercent;
9891             
9892             U2A = U->C.A;
9893             
9894             U->C.A = aTop2;
9895             
9896             U = UTop;
9897             while (!(DUN[1] == U->number)) {
9898                 U = U->next;
9899             }
9900             U2 = U;
9901             
9902             U = UTop;
9903             while (!(AUN[1] == U->number)) {
9904                 U = U->next;
9905             }
9906             
9907             hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
9908             
9909             hi = U->C.S_C.LUK - U2->C.S_C.LUK;
9910             if(hi < 0) hi = 0;
9911             
9912             hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
9913             if(hit > 100) hit = 100;
9914             if(hit < 0) hit = 0;
9915             if([self sortEcheck:U2A opponent:U])
9916                 hit = 0;
9917             
9918             battleDod1Flag = false;
9919             
9920             U = UTop;
9921             while (!(DUN[1] == U->number)) {
9922                 U = U->next;
9923             }
9924             U2 = U;
9925             
9926             U = UTop;
9927             while (!(AUN[1] == U->number)) {
9928                 U = U->next;
9929             }
9930             
9931             int omg = 100;
9932             if(battleDod1Flag) hit /= 2;
9933             
9934             if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
9935                 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);
9936                 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);
9937                 NSLog(@"修正前のダメージ:%g", dmg);
9938                 dmg = [self dmgResist:dmg];
9939                 NSLog(@"属性後のダメージ:%g", dmg);
9940             def2 = pow(def2, U->C.S_C.DEF);
9941             int omfg = rand()%100;
9942                 NSLog(@"ダメージ幅:%g〜%g", floor(dmg), floor(dmg + dmg/10));
9943                 dmg = (dmg*omfg/100/10 + dmg);
9944                 NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
9945                 if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
9946                 else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
9947             
9948                 if(U->C.S_C.typeMOVE == RIKU){
9949                     if(U2A->riku == A) dmg = dmg*1.2;
9950                     if(U2A->riku == B) dmg = dmg*1.0;
9951                     if(U2A->riku == C) dmg = dmg*0.6;
9952                     if(U2A->riku == D) dmg = dmg*0.2;
9953                     if(U2A->riku == E) dmg = 0;
9954                     if(U2A->riku == S) dmg = dmg*1.5;
9955                     if(U2A->riku == SS) dmg = dmg*2.0;
9956                 } if(U->C.S_C.typeMOVE == UMI &&
9957                      (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
9958                     if(U2A->umi == A) dmg = dmg*1.2;
9959                     if(U2A->umi == B) dmg = dmg*1.0;
9960                     if(U2A->umi == C) dmg = dmg*0.6;
9961                     if(U2A->umi == D) dmg = dmg*0.2;
9962                     if(U2A->umi == E) dmg = 0;
9963                     if(U2A->umi == S) dmg = dmg*1.5;
9964                     if(U2A->umi == SS) dmg = dmg*2.0;
9965                 }else if(U->C.S_C.typeMOVE == UMI){
9966                     if(U2A->riku == A) dmg = dmg*1.2;
9967                     if(U2A->riku == B) dmg = dmg*1.0;
9968                     if(U2A->riku == C) dmg = dmg*0.6;
9969                     if(U2A->riku == D) dmg = dmg*0.2;
9970                     if(U2A->riku == E) dmg = 0;
9971                     if(U2A->riku == S) dmg = dmg*1.5;
9972                     if(U2A->riku == SS) dmg = dmg*2.0;
9973                     
9974                 } if(U->C.S_C.typeMOVE == CHU){
9975                     if(U2A->chu == A) dmg = dmg*1.2;
9976                     if(U2A->chu == B) dmg = dmg*1.0;
9977                     if(U2A->chu == C) dmg = dmg*0.6;
9978                     if(U2A->chu == D) dmg = dmg*0.2;
9979                     if(U2A->chu == E) dmg = 0;
9980                     if(U2A->chu == S) dmg = dmg*1.5;
9981                     if(U2A->chu == SS) dmg = dmg*2.0;
9982                 } if(U->C.S_C.typeMOVE == SORA){
9983                     if(U2A->sora == A) dmg = dmg*1.2;
9984                     if(U2A->sora == B) dmg = dmg*1.0;
9985                     if(U2A->sora == C) dmg = dmg*0.6;
9986                     if(U2A->sora == D) dmg = dmg*0.2;
9987                     if(U2A->sora == E) dmg = 0;
9988                     if(U2A->sora == S) dmg = dmg*1.5;
9989                     if(U2A->sora == SS) dmg = dmg*2.0;
9990                 }
9991                 
9992                 NSLog(@"ユニットの地形適用後:%g", dmg);
9993                 
9994                 
9995                 graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
9996                 
9997                 grazeFlag = false;
9998                 omfg = rand()&100;
9999                 if(graze > omfg && !healFlag) {dmg = dmg/5;
10000                     grazeFlag = true;
10001                 }
10002
10003             if(battleDef1Flag) dmg -= dmg*0.5;
10004             battleDef1Flag = false;
10005                 dmg = floor(dmg);
10006                 if(dmg < 0) dmg = 0;
10007                 U->C.S_C.HP -= dmg;
10008                 U->C.S_C.vigor++;
10009
10010                 [btHITtf2 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
10011                 [btDMGtf2 setStringValue:[NSString stringWithFormat:@"ダメージ値 %g", dmg]];
10012                 
10013                 while(1){
10014                 if(U->C.S_C.HP <= 0) {
10015                     U->C.S_C.HP = 0;
10016                     U2->C.S_C.vigor += 5;
10017                 
10018                     messageProcess = 2;
10019                     if(U->dead) break;
10020                     U->dead = true;
10021                     
10022                     
10023                     if(U->targType1L)
10024                         targType1cnt[0]--;
10025                     if(U->targType2L) {
10026                         targType2cnt[0]--;
10027                         targType2Lflag = true;
10028                     }
10029                 
10030                     if(U->targType1D)
10031                         targType1cnt[1]--;
10032                     if(U->targType2D) {
10033                         targType2cnt[1]--;
10034                         targType2Dflag = true;
10035                     }
10036                     
10037                     break;
10038                 }
10039                     break;
10040                 }
10041                 
10042       
10043         
10044                 [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
10045             
10046                 [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
10047             
10048                 if(![U2A->msg isEqualToString:@""]){
10049                     message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
10050                                                                 [self originalMessage:U2A->msg subj:U2->C.nameNick obje:U->C.nameNick]]];
10051                 }
10052                 
10053                 
10054            
10055                 if(grazeFlag)
10056                     message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
10057             
10058                 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.nameNick, dmg]];
10059                 btHitFlag2 = true;
10060            
10061             }else if(battleDef2Flag){
10062                 
10063                 
10064                 U = UTop;
10065                 while (!(DUN[1] == U->number)) {
10066                     U = U->next;
10067                 }
10068                 
10069                 
10070                 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.nameNick]];
10071                 btHitFlag2 = false;
10072                 
10073             }else if(battleDod2Flag){
10074                 
10075                 U = UTop;
10076                 while (!(DUN[1] == U->number)) {
10077                     U = U->next;
10078                 }
10079                 
10080                 message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.nameNick]];
10081                 
10082                 btHitFlag2 = false;
10083             }else{
10084             
10085                 message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.nameNick]];
10086                 btHitFlag2 = false;
10087             }
10088         SKIP1:
10089             [battleDialog setStringValue:message];
10090         SKIP3:
10091             U = UTop;
10092             [btHITtf2 setStringValue:[NSString stringWithFormat:@"命中率 %g%", floor(hit)]];
10093             bLoopFlag = true;
10094             messageProcess++;
10095             message = @"";
10096             avPlayerFlag2 = false;
10097             animationFlag3 = false;
10098             btAtattckMoveEnd = false;
10099             oopsCnt = 30;
10100             break;
10101         case 3:
10102             //おまんこ
10103             if(bLoopFlag) break;
10104             if(cpuAImodeflag && !cpuTurnEndFlag) {
10105                 wtRdy = false;
10106             wtRdy2 = false;
10107             }
10108             
10109             fuckingLoadBugFix = false;
10110             
10111             battleSetUp = false;
10112             battleSetFlag = false;
10113             battleFlag = false;
10114             battleRdy = false;
10115             battleSet2PushedFlag = false;
10116             cpuModeBATTLEendFlag = true;
10117             crCAL1 = 0;
10118             crCAL2 = 0;
10119             [battleWindow close];
10120             pussyLoopFlag = false;
10121             cpuAtkExtendFlag3 = false;
10122             cpuOMFGmoveATKfixFlag = false;
10123             unitNoMoveFlag = false;
10124             UA = NULL;
10125             Utarget = NULL;
10126             CPUmostDmgChoice = false;
10127             //おまんちん
10128             cpuIsAttackingFlag = false;
10129             for(int g = 0;g < chipWidth;g++){
10130                 for(int k = 0;k < chipHeight;k++){
10131                     g_attackRangeExtent[g][k] = 0;
10132                 }
10133             }
10134             
10135             btDistanceX1 = 0;
10136             btDistanceX2 = 0;
10137             BTunitAttackFlag1 = false;
10138             BTunitAttackFlag2 = false;
10139             BTunitAttackFlag1 = false;
10140             btAttackMoveValue1 = 0;
10141             btAttackMoveValue2 = 0;
10142             btHitFlag1 = false;
10143             btHitFlag2 = false;
10144             btHitFlagCnt1 = 0;
10145             btHitFlagCnt2 = 0;
10146             btHitExtendFlag1 = false;
10147             btHitExtendProc1 = 0;
10148             btHitExtendMove1 = 0;
10149             btHitExtendFlag2 = false;
10150             btHitExtendProc2 = 0;
10151             btHitExtendMove2 = 0;
10152             battleDef1Flag = false;
10153             battleDef2Flag = false;
10154             battleDod1Flag = false;
10155             battleDod2Flag = false;
10156             baseDistanceCompFlag = false;
10157             battleVeryBegunFlag = false;
10158             CPUAttackSubmitFlag = false;
10159             battleSetUp = false;
10160             displayBattleCheckPanelFlag = 0;
10161             battleEndFlag = true;
10162             assholeLoadBugFix = false;
10163             
10164             cpuOMFGmoveATKfixFlag = true;
10165             battleIsProcFlag = false;
10166             break;
10167             
10168         default:
10169             break;
10170     }
10171
10172
10173     UCselected = UC[-1];
10174
10175
10176 }
10177
10178 -(void)DisplayMessageMod1A{//両方モビール
10179
10180     double def2 = (double)31/32;
10181     NSString *message = @"";
10182     
10183     enum{
10184         RIKU,
10185         UMI,
10186         CHU,
10187         SORA,
10188     };
10189     
10190     enum{
10191         A,
10192         B,
10193         C,
10194         D,
10195         E,
10196         S,
10197         SS
10198     };
10199
10200     
10201     
10202     if(bLoopFlag) return;
10203     U = UTop;
10204     while (!(AUN[1] == U->number)) {
10205         U = U->next;
10206     }
10207     U2 = U;
10208     ATTACK *aTop = U->CL.A;
10209     for(int i = 0;i < crCAL1;i++){
10210         U->CL.A = U->CL.A->next;
10211     }
10212     
10213     
10214     if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
10215     
10216     if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
10217         [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath]  stringByDeletingLastPathComponent]];
10218         
10219         NSString *path = @"data/AttackList/ALdata";
10220         
10221         path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
10222         
10223         path = [path stringByAppendingFormat:@"/"];
10224         
10225         path = [path stringByAppendingString:U->CL.A->AN.movName];
10226         
10227         NSData *AVData = [NSData dataWithContentsOfFile:path];
10228         
10229         if(AVData)
10230             AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
10231         
10232         
10233         if(!AVpreview){
10234             
10235             NSString *path = @"data/AttackList3/IALdata";
10236             
10237             path = [path stringByAppendingFormat:@"%dE", U->CL.A->indexE];
10238             
10239             path = [path stringByAppendingFormat:@"/"];
10240             
10241             path = [path stringByAppendingString:U->CL.A->AN.movName];
10242             
10243             
10244             NSData *AVData = [NSData dataWithContentsOfFile:path];
10245             
10246             if(AVData)
10247                 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
10248             
10249             
10250         }
10251         
10252         if(AVpreview) {
10253             AVPV.player = [AVpreview retain];
10254             AVPV.videoGravity = AVLayerVideoGravityResize;
10255         }else{
10256             goto avAWESOME1A;
10257         }
10258         
10259         
10260         [AVPV setHidden:NO];
10261         [AVpreview play];
10262         [battleDialog setStringValue:message];
10263         
10264         avPlayerFlag1 = true;
10265         
10266         U->CL.A = aTop;
10267         
10268         U = UTop;
10269         return;
10270     }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->CL.A->AN.ANI && !animationFlag3){
10271         
10272         [battleDialog setStringValue:message];
10273         animationFlag1 = true;
10274         aniFrameCnt = 0;
10275         return;
10276     }
10277     
10278 avAWESOME1A:{}
10279     
10280     dmg = U->CL.A->totalD;
10281     
10282     costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
10283     U->CL.S_C.EN -= costMP;
10284     
10285     hit = U->CL.S_C.MOB+U->C.S_C.HIT;
10286     hitFix = U->CL.A->hitPercent;
10287     
10288     U2A = U->CL.A;
10289     U->CL.A = aTop;
10290     
10291     U = UTop;
10292     while (!(DUN[1] == U->number)) {
10293         U = U->next;
10294     }
10295     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;
10296     if(hit > 100) hit = 100;
10297     if(U2A->D->sort == 1){
10298         hit = 100;
10299     }
10300     if([self sortEcheck:U2A opponent:U])
10301         hit = 0;
10302     
10303     healFlag = false;
10304     
10305     int wtf = 100;
10306     if(battleDod2Flag) wtf = 50;
10307     if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
10308         
10309         if(U2A->D->sort == 0){
10310             NSLog(@"修正前のダメージ:%g", dmg);
10311             dmg = [self dmgResist:dmg];
10312             NSLog(@"属性後のダメージ:%g", dmg);
10313             def2 = pow(def2, U->CL.S_C.ARM);
10314             int omfg = rand()%100;
10315             NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->CL.S_C.ARM);
10316             
10317             NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg + dmg - U->CL.S_C.ARM));
10318             dmg = (dmg*omfg/100 + dmg - U->CL.S_C.ARM);
10319             NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
10320             if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
10321             else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
10322             
10323             if(U->CL.S_C.typeMOVE == RIKU){
10324                 if(U2A->riku == A) dmg = dmg*1.2;
10325                 if(U2A->riku == B) dmg = dmg*1.0;
10326                 if(U2A->riku == C) dmg = dmg*0.6;
10327                 if(U2A->riku == D) dmg = dmg*0.2;
10328                 if(U2A->riku == E) dmg = 0;
10329                 if(U2A->riku == S) dmg = dmg*1.5;
10330                 if(U2A->riku == SS) dmg = dmg*2.0;
10331             } if(U->CL.S_C.typeMOVE == UMI &&
10332                  (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
10333                 if(U2A->umi == A) dmg = dmg*1.2;
10334                 if(U2A->umi == B) dmg = dmg*1.0;
10335                 if(U2A->umi == C) dmg = dmg*0.6;
10336                 if(U2A->umi == D) dmg = dmg*0.2;
10337                 if(U2A->umi == E) dmg = 0;
10338                 if(U2A->umi == S) dmg = dmg*1.5;
10339                 if(U2A->umi == SS) dmg = dmg*2.0;
10340             }else if(U->CL.S_C.typeMOVE == UMI){
10341                 if(U2A->riku == A) dmg = dmg*1.2;
10342                 if(U2A->riku == B) dmg = dmg*1.0;
10343                 if(U2A->riku == C) dmg = dmg*0.6;
10344                 if(U2A->riku == D) dmg = dmg*0.2;
10345                 if(U2A->riku == E) dmg = 0;
10346                 if(U2A->riku == S) dmg = dmg*1.5;
10347                 if(U2A->riku == SS) dmg = dmg*2.0;
10348                 
10349             } if(U->CL.S_C.typeMOVE == CHU){
10350                 if(U2A->chu == A) dmg = dmg*1.2;
10351                 if(U2A->chu == B) dmg = dmg*1.0;
10352                 if(U2A->chu == C) dmg = dmg*0.6;
10353                 if(U2A->chu == D) dmg = dmg*0.2;
10354                 if(U2A->chu == E) dmg = 0;
10355                 if(U2A->chu == S) dmg = dmg*1.5;
10356                 if(U2A->chu == SS) dmg = dmg*2.0;
10357             } if(U->CL.S_C.typeMOVE == SORA){
10358                 if(U2A->sora == A) dmg = dmg*1.2;
10359                 if(U2A->sora == B) dmg = dmg*1.0;
10360                 if(U2A->sora == C) dmg = dmg*0.6;
10361                 if(U2A->sora == D) dmg = dmg*0.2;
10362                 if(U2A->sora == E) dmg = 0;
10363                 if(U2A->sora == S) dmg = dmg*1.5;
10364                 if(U2A->sora == SS) dmg = dmg*2.0;
10365             }
10366             
10367             NSLog(@"ユニットの地形適用後:%g", dmg);
10368             if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
10369             graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
10370             
10371             grazeFlag = false;
10372             omfg = rand()%100;
10373             if(graze > omfg && !healFlag) {dmg = dmg/5;
10374                 grazeFlag = true;
10375             }
10376             if(battleDef2Flag) dmg -= dmg*0.5;
10377             battleDef2Flag = false;
10378             dmg = floor(dmg);
10379             if(dmg < 0) dmg = 0;
10380             U->CL.S_C.HP -= dmg;
10381             U->C.S_C.vigor++;
10382             
10383         }else if(U2A->D->sort == 1){
10384             dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
10385             dmg = floor(dmg);
10386             
10387             U->CL.S_C.HP += dmg;
10388             
10389             if(U->CL.S_C.HP > U->CL.S_M.HP) U->CL.S_C.HP = U->CL.S_M.HP;
10390             healFlag = true;
10391         }
10392         
10393         while(1){
10394             if(U->CL.S_C.HP <= 0) {
10395                 U->CL.S_C.HP = 0;
10396                 U2->C.S_C.vigor += 5;
10397                 
10398                 messageProcess = 2;
10399                 if(U->dead) break;
10400                 U->dead = true;
10401                 
10402                 
10403                 if(U->targType1L)
10404                     targType1cnt[0]--;
10405                 if(U->targType2L) {
10406                     targType2cnt[0]--;
10407                     targType2Lflag = true;
10408                 }
10409                 
10410                 if(U->targType1D)
10411                     targType1cnt[1]--;
10412                 if(U->targType2D) {
10413                     targType2cnt[1]--;
10414                     targType2Dflag = true;
10415                 }
10416                 
10417                 break;
10418             }
10419             break;
10420         }
10421         
10422         [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
10423         [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
10424         
10425         if(![U2A->msg isEqualToString:@""]){
10426             
10427             message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
10428                                                         [self originalMessage:U2A->msg subj:U2->CL.name obje:U->CL.name]]];
10429             
10430         }
10431         
10432         if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
10433         if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
10434         else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->CL.name, dmg]];
10435     }else if(battleDef1Flag){
10436         
10437         
10438         U = UTop;
10439         while (!(AUN[1] == U->number)) {
10440             U = U->next;
10441         }
10442         
10443         
10444         message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
10445         
10446         
10447     }else if(battleDod1Flag){
10448         
10449         U = UTop;
10450         while (!(AUN[1] == U->number)) {
10451             U = U->next;
10452         }
10453         
10454         message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
10455         
10456         
10457     }else{
10458         
10459         message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
10460         
10461     }
10462     [battleDialog setStringValue:message];
10463     
10464     
10465     U = UTop;
10466     
10467     bLoopFlag = true;
10468     
10469     if(healFlag) {
10470         messageProcess++;
10471     };
10472     messageProcess++;
10473     
10474     return;
10475
10476 }
10477
10478 -(void)DisplayMessageMod1B{
10479
10480     double def2 = (double)31/32;
10481     NSString *message = @"";
10482     
10483     enum{
10484         RIKU,
10485         UMI,
10486         CHU,
10487         SORA,
10488     };
10489     
10490     enum{
10491         A,
10492         B,
10493         C,
10494         D,
10495         E,
10496         S,
10497         SS
10498     };
10499
10500     
10501     if(bLoopFlag) return;
10502     
10503     U = UTop;
10504     while (!(AUN[1] == U->number)) {
10505         U = U->next;
10506     }
10507     U2 = U;
10508     U = UTop;
10509     
10510     U = UTop;
10511     while (!(DUN[1] == U->number)) {
10512         U = U->next;
10513     }
10514     
10515     ATTACK *aTop2 = U->CL.A;
10516     int mostDmg = 0;
10517     int mostNum = 0;
10518     int num = 0;
10519     int mpCost =0;
10520     if(U->CL.A) {
10521         mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
10522         costVIG = U->C.A->vigor;
10523     }
10524     while(U->CL.A){
10525         mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
10526         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]){
10527             mostDmg = U->CL.A->totalD;
10528             mostNum = num;
10529         }
10530         U->CL.A = U->CL.A->next;
10531         num++;
10532     }
10533     
10534     U->CL.A = aTop2;
10535     
10536     if(!battleSet2PushedFlag){
10537         for(int i = 0;i < mostNumSub;i++){
10538             U->CL.A = U->CL.A->next;
10539         }
10540         
10541     }else{
10542         for(int i = 0;i < crCAL2;i++){
10543             U->CL.A = U->CL.A->next;
10544         }
10545     }
10546     
10547     if(!U->CL.A->name){
10548     
10549         U->CL.A = NULL;
10550     }
10551     if(U->CL.A){
10552     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]){
10553     }else while(U->CL.A){
10554         U->CL.A = U->CL.A->next;
10555     }
10556     }
10557     
10558     if(!U->CL.A){
10559         U->CL.A = aTop2;
10560         U = UTop;
10561         message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
10562         goto SKIP1;
10563     }
10564     
10565     if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
10566     
10567     
10568     if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
10569         [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath]  stringByDeletingLastPathComponent]];
10570         
10571         NSString *path = @"data/AttackList/ALdata";
10572         
10573         path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
10574         
10575         path = [path stringByAppendingFormat:@"/"];
10576         
10577         path = [path stringByAppendingString:U->CL.A->AN.movName];
10578         
10579         
10580         AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
10581         
10582         if(AVpreview) {
10583             AVPV.player = [AVpreview retain];
10584             AVPV.videoGravity = AVLayerVideoGravityResize;
10585         }else{
10586             goto avAWESOME1B;
10587         }
10588         
10589         [AVPV setControlsStyle:0];
10590         [AVPV setHidden:NO];
10591         [AVpreview play];
10592         [battleDialog setStringValue:message];
10593         
10594         avPlayerFlag2 = true;
10595         
10596         U->CL.A = aTop2;
10597         U = UTop;
10598         return;
10599     }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->CL.A->AN.ANI && !animationFlag3){
10600         
10601         
10602         animationFlag2 = true;
10603         aniFrameCnt = 0;
10604         return;
10605     }
10606     
10607     
10608 avAWESOME1B:{}
10609     
10610     dmg = U->CL.A->totalD;
10611     
10612     costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
10613     U->CL.S_C.EN -= costMP;
10614     
10615     hit = U->CL.S_C.MOB + U->C.S_C.HIT;
10616     hitFix = U->CL.A->hitPercent;
10617     
10618     U2A = U->CL.A;
10619     U->CL.A = aTop2;
10620     
10621     
10622     U = UTop;
10623     while (!(AUN[1] == U->number)) {
10624         U = U->next;
10625     }
10626     
10627     
10628     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;
10629     if(hit > 100) hit = 100;
10630     
10631     if([self sortEcheck:U2A opponent:U])
10632         hit = 0;
10633     
10634     battleDod1Flag = false;
10635     
10636     int omg = 100;
10637     if(battleDod1Flag) omg = 50;
10638     
10639     if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
10640         NSLog(@"修正前のダメージ:%g", dmg);
10641         dmg = [self dmgResist:dmg];
10642         NSLog(@"属性後のダメージ:%g", dmg);
10643         def2 = pow(def2, U->CL.S_C.ARM);
10644         int omfg = rand()%100;
10645         NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->CL.S_C.ARM);
10646         NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg + dmg - U->CL.S_C.ARM));
10647         dmg = (dmg*omfg/100 + dmg - U->CL.S_C.ARM);
10648         
10649         
10650         NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
10651         if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
10652         else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
10653         
10654         if(U->CL.S_C.typeMOVE == RIKU){
10655             if(U2A->riku == A) dmg = dmg*1.2;
10656             if(U2A->riku == B) dmg = dmg*1.0;
10657             if(U2A->riku == C) dmg = dmg*0.6;
10658             if(U2A->riku == D) dmg = dmg*0.2;
10659             if(U2A->riku == E) dmg = 0;
10660             if(U2A->riku == S) dmg = dmg*1.5;
10661             if(U2A->riku == SS) dmg = dmg*2.0;
10662         } if(U->CL.S_C.typeMOVE == UMI &&
10663              (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
10664             if(U2A->umi == A) dmg = dmg*1.2;
10665             if(U2A->umi == B) dmg = dmg*1.0;
10666             if(U2A->umi == C) dmg = dmg*0.6;
10667             if(U2A->umi == D) dmg = dmg*0.2;
10668             if(U2A->umi == E) dmg = 0;
10669             if(U2A->umi == S) dmg = dmg*1.5;
10670             if(U2A->umi == SS) dmg = dmg*2.0;
10671         }else if(U->CL.S_C.typeMOVE == UMI){
10672             if(U2A->riku == A) dmg = dmg*1.2;
10673             if(U2A->riku == B) dmg = dmg*1.0;
10674             if(U2A->riku == C) dmg = dmg*0.6;
10675             if(U2A->riku == D) dmg = dmg*0.2;
10676             if(U2A->riku == E) dmg = 0;
10677             if(U2A->riku == S) dmg = dmg*1.5;
10678             if(U2A->riku == SS) dmg = dmg*2.0;
10679             
10680         } if(U->CL.S_C.typeMOVE == CHU){
10681             if(U2A->chu == A) dmg = dmg*1.2;
10682             if(U2A->chu == B) dmg = dmg*1.0;
10683             if(U2A->chu == C) dmg = dmg*0.6;
10684             if(U2A->chu == D) dmg = dmg*0.2;
10685             if(U2A->chu == E) dmg = 0;
10686             if(U2A->chu == S) dmg = dmg*1.5;
10687             if(U2A->chu == SS) dmg = dmg*2.0;
10688         } if(U->CL.S_C.typeMOVE == SORA){
10689             if(U2A->sora == A) dmg = dmg*1.2;
10690             if(U2A->sora == B) dmg = dmg*1.0;
10691             if(U2A->sora == C) dmg = dmg*0.6;
10692             if(U2A->sora == D) dmg = dmg*0.2;
10693             if(U2A->sora == E) dmg = 0;
10694             if(U2A->sora == S) dmg = dmg*1.5;
10695             if(U2A->sora == SS) dmg = dmg*2.0;
10696         }
10697         
10698         NSLog(@"ユニットの地形適用後:%g", dmg);
10699         
10700         graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
10701         
10702         grazeFlag = false;
10703         omfg = rand()&100;
10704         if(graze > omfg && !healFlag) {dmg = dmg/5;
10705             grazeFlag = true;
10706         }
10707         
10708         if(battleDef1Flag) dmg -= dmg*0.5;
10709         battleDef1Flag = false;
10710         dmg = floor(dmg);
10711         if(dmg < 0) dmg = 0;
10712         U->CL.S_C.HP -= dmg;
10713         U->C.S_C.vigor++;
10714         
10715         while(1){
10716             if(U->CL.S_C.HP <= 0) {
10717                 U->CL.S_C.HP = 0;
10718                 U2->C.S_C.vigor += 5;
10719                 
10720                 messageProcess = 2;
10721                 if(U->dead) break;
10722                 U->dead = true;
10723                 
10724                 
10725                 if(U->targType1L)
10726                     targType1cnt[0]--;
10727                 if(U->targType2L) {
10728                     targType2cnt[0]--;
10729                     targType2Lflag = true;
10730                 }
10731                 
10732                 if(U->targType1D)
10733                     targType1cnt[1]--;
10734                 if(U->targType2D) {
10735                     targType2cnt[1]--;
10736                     targType2Dflag = true;
10737                 }
10738                 
10739                 break;
10740             }
10741             break;
10742         }
10743         
10744         
10745         
10746         [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
10747         
10748         [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
10749         
10750         if(![U2A->msg isEqualToString:@""]){
10751             message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
10752                                                         [self originalMessage:U2A->msg subj:U2->CL.name obje:U->CL.name]]];
10753         }
10754         
10755         
10756         
10757         if(grazeFlag)
10758             message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
10759         
10760         message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
10761         
10762     }else if(battleDef2Flag){
10763         
10764         
10765         U = UTop;
10766         while (!(DUN[1] == U->number)) {
10767             U = U->next;
10768         }
10769         
10770         
10771         message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
10772         
10773         
10774     }else if(battleDod2Flag){
10775         
10776         U = UTop;
10777         while (!(DUN[1] == U->number)) {
10778             U = U->next;
10779         }
10780         
10781         message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
10782         
10783         
10784     }else{
10785         
10786         message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
10787     }
10788 SKIP1:
10789     [battleDialog setStringValue:message];
10790     
10791     U = UTop;
10792     bLoopFlag = true;
10793     messageProcess++;
10794     return;
10795
10796 }
10797
10798 -(void)DisplayMessageMod2A{//攻撃側モビール
10799
10800     double def2 = (double)31/32;
10801     NSString *message = @"";
10802     
10803     enum{
10804         RIKU,
10805         UMI,
10806         CHU,
10807         SORA,
10808     };
10809     
10810     enum{
10811         A,
10812         B,
10813         C,
10814         D,
10815         E,
10816         S,
10817         SS
10818     };
10819
10820
10821     if(bLoopFlag) return;
10822     U = UTop;
10823     
10824     while (!(DUN[1] == U->number)) {
10825         U = U->next;
10826     }
10827     U2 = U;
10828     
10829     U = UTop;
10830     while (!(AUN[1] == U->number)) {
10831         U = U->next;
10832     }
10833     
10834     ATTACK *aTop = U->CL.A;
10835     for(int i = 0;i < crCAL1;i++){
10836         U->CL.A = U->CL.A->next;
10837     }
10838     
10839     
10840     if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
10841     
10842     if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
10843         [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath]  stringByDeletingLastPathComponent]];
10844         
10845         NSString *path = @"data/AttackList/ALdata";
10846         
10847         path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
10848         
10849         path = [path stringByAppendingFormat:@"/"];
10850         
10851         path = [path stringByAppendingString:U->CL.A->AN.movName];
10852         
10853         NSData *AVData = [NSData dataWithContentsOfFile:path];
10854         
10855         if(AVData)
10856             AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
10857         
10858         
10859         if(!AVpreview){
10860             
10861             NSString *path = @"data/AttackList3/IALdata";
10862             
10863             path = [path stringByAppendingFormat:@"%dE", U->CL.A->indexE];
10864             
10865             path = [path stringByAppendingFormat:@"/"];
10866             
10867             path = [path stringByAppendingString:U->CL.A->AN.movName];
10868             
10869             
10870             NSData *AVData = [NSData dataWithContentsOfFile:path];
10871             
10872             if(AVData)
10873                 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
10874             
10875             
10876         }
10877         
10878         if(AVpreview) {
10879             AVPV.player = [AVpreview retain];
10880             AVPV.videoGravity = AVLayerVideoGravityResize;
10881         }else{
10882             goto avAWESOME2A;
10883         }
10884         
10885         
10886         [AVPV setHidden:NO];
10887         [AVpreview play];
10888         [battleDialog setStringValue:message];
10889         
10890         avPlayerFlag1 = true;
10891         
10892         U->CL.A = aTop;
10893         
10894         U = UTop;
10895         return;
10896     }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->CL.A->AN.ANI && !animationFlag3){
10897         
10898         [battleDialog setStringValue:message];
10899         animationFlag1 = true;
10900         aniFrameCnt = 0;
10901         return;
10902     }
10903     
10904 avAWESOME2A:{}
10905     
10906     dmg = U->CL.A->totalD;
10907     double val = 1/log(3+U2->C.S_C.MP/64);
10908     if(U2->C.aura){
10909         dmg = dmg*val;
10910     }
10911     
10912     costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
10913     U->CL.S_C.EN -= costMP;
10914     
10915     hit = U->CL.S_C.MOB + U->C.S_C.HIT;
10916     hitFix = U->CL.A->hitPercent;
10917     
10918     U2A = U->CL.A;
10919     U->CL.A = aTop;
10920     
10921     U = UTop;
10922     while (!(DUN[1] == U->number)) {
10923         U = U->next;
10924     }
10925     
10926     double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
10927     
10928     double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
10929     if(hi < 0) hi = 0;
10930     
10931     hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
10932     if(hit > 100) hit = 100;
10933     if(U2A->D->sort == 1){
10934         hit = 100;
10935     }
10936     if([self sortEcheck:U2A opponent:U])
10937         hit = 0;
10938     
10939     healFlag = false;
10940     
10941     int wtf = 100;
10942     if(battleDod2Flag) wtf = 50;
10943     if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
10944         
10945         if(U2A->D->sort == 0){
10946             NSLog(@"修正前のダメージ:%g", dmg);
10947             dmg = [self dmgResist:dmg];
10948             NSLog(@"属性後のダメージ:%g", dmg);
10949             def2 = pow(def2, U->C.S_C.DEF);
10950             int omfg = rand()%100;
10951             NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->C.S_C.DEF);
10952             NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->C.S_C.DEF), (dmg/10 + dmg - U->C.S_C.DEF));
10953             dmg = (dmg*omfg/100/10 + dmg - U->C.S_C.DEF);
10954             NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
10955             if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
10956             else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
10957             
10958             if(U->C.S_C.typeMOVE == RIKU){
10959                 if(U2A->riku == A) dmg = dmg*1.2;
10960                 if(U2A->riku == B) dmg = dmg*1.0;
10961                 if(U2A->riku == C) dmg = dmg*0.6;
10962                 if(U2A->riku == D) dmg = dmg*0.2;
10963                 if(U2A->riku == E) dmg = 0;
10964                 if(U2A->riku == S) dmg = dmg*1.5;
10965                 if(U2A->riku == SS) dmg = dmg*2.0;
10966             } if(U->C.S_C.typeMOVE == UMI &&
10967                  (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
10968                 if(U2A->umi == A) dmg = dmg*1.2;
10969                 if(U2A->umi == B) dmg = dmg*1.0;
10970                 if(U2A->umi == C) dmg = dmg*0.6;
10971                 if(U2A->umi == D) dmg = dmg*0.2;
10972                 if(U2A->umi == E) dmg = 0;
10973                 if(U2A->umi == S) dmg = dmg*1.5;
10974                 if(U2A->umi == SS) dmg = dmg*2.0;
10975             }else if(U->C.S_C.typeMOVE == UMI){
10976                 if(U2A->riku == A) dmg = dmg*1.2;
10977                 if(U2A->riku == B) dmg = dmg*1.0;
10978                 if(U2A->riku == C) dmg = dmg*0.6;
10979                 if(U2A->riku == D) dmg = dmg*0.2;
10980                 if(U2A->riku == E) dmg = 0;
10981                 if(U2A->riku == S) dmg = dmg*1.5;
10982                 if(U2A->riku == SS) dmg = dmg*2.0;
10983                 
10984             } if(U->C.S_C.typeMOVE == CHU){
10985                 if(U2A->chu == A) dmg = dmg*1.2;
10986                 if(U2A->chu == B) dmg = dmg*1.0;
10987                 if(U2A->chu == C) dmg = dmg*0.6;
10988                 if(U2A->chu == D) dmg = dmg*0.2;
10989                 if(U2A->chu == E) dmg = 0;
10990                 if(U2A->chu == S) dmg = dmg*1.5;
10991                 if(U2A->chu == SS) dmg = dmg*2.0;
10992             } if(U->C.S_C.typeMOVE == SORA){
10993                 if(U2A->sora == A) dmg = dmg*1.2;
10994                 if(U2A->sora == B) dmg = dmg*1.0;
10995                 if(U2A->sora == C) dmg = dmg*0.6;
10996                 if(U2A->sora == D) dmg = dmg*0.2;
10997                 if(U2A->sora == E) dmg = 0;
10998                 if(U2A->sora == S) dmg = dmg*1.5;
10999                 if(U2A->sora == SS) dmg = dmg*2.0;
11000             }
11001             
11002             NSLog(@"ユニットの地形適用後:%g", dmg);
11003             if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
11004             graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
11005             
11006             grazeFlag = false;
11007             omfg = rand()%100;
11008             if(graze > omfg && !healFlag) {dmg = dmg/5;
11009                 grazeFlag = true;
11010             }
11011             if(battleDef2Flag) dmg -= dmg*0.5;
11012             battleDef2Flag = false;
11013             dmg = floor(dmg);
11014             if(dmg < 0) dmg = 0;
11015             U->C.S_C.HP -= dmg;
11016             U->C.S_C.vigor++;
11017             
11018         }else if(U2A->D->sort == 1){
11019             dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
11020             dmg = floor(dmg);
11021             
11022             U->CL.S_C.HP += dmg;
11023             
11024             if(U->CL.S_C.HP > U->CL.S_M.HP) U->CL.S_C.HP = U->CL.S_M.HP;
11025             healFlag = true;
11026         }
11027         
11028         while(1){
11029             if(U->C.S_C.HP <= 0) {
11030                 U->C.S_C.HP = 0;
11031                 U2->C.S_C.vigor += 5;
11032                 
11033                 messageProcess = 2;
11034                 if(U->dead) break;
11035                 U->dead = true;
11036                 
11037                 
11038                 if(U->targType1L)
11039                     targType1cnt[0]--;
11040                 if(U->targType2L) {
11041                     targType2cnt[0]--;
11042                     targType2Lflag = true;
11043                 }
11044                 
11045                 if(U->targType1D)
11046                     targType1cnt[1]--;
11047                 if(U->targType2D) {
11048                     targType2cnt[1]--;
11049                     targType2Dflag = true;
11050                 }
11051                 
11052                 break;
11053             }
11054             break;
11055         }
11056         
11057         [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
11058         [lplayer2 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
11059         
11060         if(![U2A->msg isEqualToString:@""]){
11061             
11062             message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
11063                                                         [self originalMessage:U2A->msg subj:U2->CL.name obje:U->C.name]]];
11064             
11065         }
11066         
11067         if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
11068         if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
11069         else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->C.name, dmg]];
11070     }else if(battleDef1Flag){
11071         
11072         
11073         U = UTop;
11074         while (!(AUN[1] == U->number)) {
11075             U = U->next;
11076         }
11077         
11078         
11079         message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
11080         
11081         
11082     }else if(battleDod1Flag){
11083         
11084         U = UTop;
11085         while (!(AUN[1] == U->number)) {
11086             U = U->next;
11087         }
11088         
11089         message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
11090         
11091         
11092     }else{
11093         
11094         message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
11095         
11096     }
11097     [battleDialog setStringValue:message];
11098     
11099     
11100     U = UTop;
11101     
11102     bLoopFlag = true;
11103     
11104     if(healFlag) {
11105         messageProcess++;
11106     };
11107     messageProcess++;
11108     
11109     return;
11110
11111
11112 }
11113
11114 -(void)DisplayMessageMod2B{
11115     
11116     double def2 = (double)31/32;
11117     NSString *message = @"";
11118     
11119     enum{
11120         RIKU,
11121         UMI,
11122         CHU,
11123         SORA,
11124     };
11125     
11126     enum{
11127         A,
11128         B,
11129         C,
11130         D,
11131         E,
11132         S,
11133         SS
11134     };
11135
11136     
11137     if(bLoopFlag) return;
11138     
11139     U = UTop;
11140     while (!(AUN[1] == U->number)) {
11141         U = U->next;
11142     }
11143     U2 = U;
11144     U = UTop;
11145     
11146     U = UTop;
11147     while (!(DUN[1] == U->number)) {
11148         U = U->next;
11149     }
11150     
11151     ATTACK *aTop2 = U->C.A;
11152     int mostDmg = 0;
11153     int mostNum = -1;
11154     int num = 0;
11155     int mpCost =0;
11156     if(U->C.A) {
11157         mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
11158         costVIG = U->C.A->vigor;
11159         }
11160     while(U->C.A){
11161         costVIG = U->C.A->vigor;
11162
11163         mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
11164         if(U->C.A->D)
11165         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]){
11166             mostDmg = U->C.A->totalD;
11167             mostNum = num;
11168         }
11169         U->C.A = U->C.A->next;
11170         num++;
11171     }
11172     
11173     U->C.A = aTop2;
11174     
11175     if(!battleSet2PushedFlag){
11176         for(int i = 0;i < mostNumSub;i++){
11177             U->C.A = U->C.A->next;
11178         }
11179         
11180         if(mostNum < 0) U->C.A = NULL;
11181     }else{
11182         for(int i = 0;i < crCAL2;i++){
11183             U->C.A = U->C.A->next;
11184         }
11185     }
11186     if(U->C.A){
11187         if(U->C.A->D){
11188     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]){
11189     }else while(U->CL.A){
11190         U->C.A = U->C.A->next;
11191     }}
11192     }
11193     if(!U->C.A){
11194         U->C.A = aTop2;
11195         U = UTop;
11196         message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
11197         goto SKIP1;
11198     }
11199     if(!U->C.A->name){
11200         U->C.A = aTop2;
11201         U = UTop;
11202         message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
11203         goto SKIP1;
11204     }
11205     
11206     if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
11207
11208     
11209     if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL){
11210         [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath]  stringByDeletingLastPathComponent]];
11211         
11212         NSString *path = @"data/AttackList/ALdata";
11213         
11214         path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
11215         
11216         path = [path stringByAppendingFormat:@"/"];
11217         
11218         path = [path stringByAppendingString:U->C.A->AN.movName];
11219         
11220         
11221         AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
11222         
11223         if(AVpreview) {
11224             AVPV.player = [AVpreview retain];
11225             AVPV.videoGravity = AVLayerVideoGravityResize;
11226         }else{
11227             goto avAWESOME2B;
11228         }
11229         
11230         [AVPV setControlsStyle:0];
11231         [AVPV setHidden:NO];
11232         [AVpreview play];
11233         [battleDialog setStringValue:message];
11234         
11235         avPlayerFlag2 = true;
11236         
11237         U->C.A = aTop2;
11238         U = UTop;
11239         return;
11240     }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->C.A->AN.ANI && !animationFlag3){
11241         
11242         
11243         animationFlag2 = true;
11244         aniFrameCnt = 0;
11245         return;
11246     }
11247     
11248     
11249 avAWESOME2B:{}
11250     
11251     
11252     /*
11253     if(U->C.A->D->type == 0) dmg = U->C.S_C.ATK + U->C.A->totalD;
11254     if(U->C.A->D->type == 1) dmg = U->C.S_C.DEF + U->C.A->totalD;
11255     if(U->C.A->D->type == 2) dmg = U->C.S_C.ACU + U->C.A->totalD;
11256     if(U->C.A->D->type == 3) dmg = U->C.S_C.EVA + U->C.A->totalD;
11257     if(U->C.A->D->type == 4) dmg = U->C.S_C.CAP + U->C.A->totalD;
11258     if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
11259     */
11260
11261     double urSupposedToGet;
11262     
11263     if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
11264     
11265     double oopsIsRight;
11266     bool lolFlag = false;
11267     if(U->C.A) {
11268     if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
11269     else oopsIsRight = U->C.S_C.MIS;
11270         
11271         if(U->C.A->D){
11272     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;
11273     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;
11274     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;
11275     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;
11276     if(U->C.A->D->type == 4) {
11277         lolFlag = true;
11278         dmg = (U->C.S_C.CAP + urSupposedToGet)*oopsIsRight/100;
11279     }
11280     if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
11281         }}
11282         costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
11283     U->C.S_C.MP -= costMP;
11284     
11285     hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
11286     hitFix = U->C.A->hitPercent;
11287     
11288     U2A = U->C.A;
11289     U->C.A = aTop2;
11290     
11291     U = UTop;
11292     while (!(AUN[1] == U->number)) {
11293         U = U->next;
11294     }
11295     
11296     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;
11297     if(hit > 100) hit = 100;
11298     
11299     if([self sortEcheck:U2A opponent:U])
11300         hit = 0;
11301     
11302     battleDod1Flag = false;
11303     
11304     int omg = 100;
11305     if(battleDod1Flag) omg = 50;
11306     
11307     if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
11308         NSLog(@"修正前のダメージ:%g, %g", dmg, U2A->D->seed);
11309         
11310         dmg = [self dmgResist:dmg];
11311         NSLog(@"属性後のダメージ:%g", dmg);
11312         def2 = pow(def2, U->CL.S_C.ARM);
11313         int omfg = rand()%100;
11314         NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->CL.S_C.ARM);
11315         NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg/10 + dmg - U->CL.S_C.ARM));
11316         if(lolFlag) dmg = (dmg*omfg/100/10 + dmg);
11317         else dmg = (dmg*omfg/100/10+ dmg - U->CL.S_C.ARM);
11318
11319         
11320         NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
11321         if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
11322         else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
11323         
11324         if(U->CL.S_C.typeMOVE == RIKU){
11325             if(U2A->riku == A) dmg = dmg*1.2;
11326             if(U2A->riku == B) dmg = dmg*1.0;
11327             if(U2A->riku == C) dmg = dmg*0.6;
11328             if(U2A->riku == D) dmg = dmg*0.2;
11329             if(U2A->riku == E) dmg = 0;
11330             if(U2A->riku == S) dmg = dmg*1.5;
11331             if(U2A->riku == SS) dmg = dmg*2.0;
11332         } if(U->CL.S_C.typeMOVE == UMI &&
11333              (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
11334             if(U2A->umi == A) dmg = dmg*1.2;
11335             if(U2A->umi == B) dmg = dmg*1.0;
11336             if(U2A->umi == C) dmg = dmg*0.6;
11337             if(U2A->umi == D) dmg = dmg*0.2;
11338             if(U2A->umi == E) dmg = 0;
11339             if(U2A->umi == S) dmg = dmg*1.5;
11340             if(U2A->umi == SS) dmg = dmg*2.0;
11341         }else if(U->CL.S_C.typeMOVE == UMI){
11342             if(U2A->riku == A) dmg = dmg*1.2;
11343             if(U2A->riku == B) dmg = dmg*1.0;
11344             if(U2A->riku == C) dmg = dmg*0.6;
11345             if(U2A->riku == D) dmg = dmg*0.2;
11346             if(U2A->riku == E) dmg = 0;
11347             if(U2A->riku == S) dmg = dmg*1.5;
11348             if(U2A->riku == SS) dmg = dmg*2.0;
11349             
11350         } if(U->CL.S_C.typeMOVE == CHU){
11351             if(U2A->chu == A) dmg = dmg*1.2;
11352             if(U2A->chu == B) dmg = dmg*1.0;
11353             if(U2A->chu == C) dmg = dmg*0.6;
11354             if(U2A->chu == D) dmg = dmg*0.2;
11355             if(U2A->chu == E) dmg = 0;
11356             if(U2A->chu == S) dmg = dmg*1.5;
11357             if(U2A->chu == SS) dmg = dmg*2.0;
11358         } if(U->CL.S_C.typeMOVE == SORA){
11359             if(U2A->sora == A) dmg = dmg*1.2;
11360             if(U2A->sora == B) dmg = dmg*1.0;
11361             if(U2A->sora == C) dmg = dmg*0.6;
11362             if(U2A->sora == D) dmg = dmg*0.2;
11363             if(U2A->sora == E) dmg = 0;
11364             if(U2A->sora == S) dmg = dmg*1.5;
11365             if(U2A->sora == SS) dmg = dmg*2.0;
11366         }
11367         
11368         NSLog(@"ユニットの地形適用後:%g", dmg);
11369         
11370         graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
11371         
11372         grazeFlag = false;
11373         omfg = rand()&100;
11374         if(graze > omfg && !healFlag) {dmg = dmg/5;
11375             grazeFlag = true;
11376         }
11377         
11378         if(battleDef1Flag) dmg -= dmg*0.5;
11379         battleDef1Flag = false;
11380         dmg = floor(dmg);
11381         if(dmg < 0) dmg = 0;
11382         U->CL.S_C.HP -= dmg;
11383         U->C.S_C.vigor++;
11384         
11385         while(1){
11386             if(U->CL.S_C.HP <= 0) {
11387                 U->CL.S_C.HP = 0;
11388                 U2->C.S_C.vigor += 5;
11389                 
11390                 messageProcess = 2;
11391                 if(U->dead) break;
11392                 U->dead = true;
11393                
11394                 
11395                 if(U->targType1L)
11396                     targType1cnt[0]--;
11397                 if(U->targType2L) {
11398                     targType2cnt[0]--;
11399                     targType2Lflag = true;
11400                 }
11401                 
11402                 if(U->targType1D)
11403                     targType1cnt[1]--;
11404                 if(U->targType2D) {
11405                     targType2cnt[1]--;
11406                     targType2Dflag = true;
11407                 }
11408                 
11409                 break;
11410             }
11411             break;
11412         }
11413         
11414         
11415         
11416         [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
11417         
11418         [lplayer1 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
11419         
11420         if(![U2A->msg isEqualToString:@""]){
11421             message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
11422                                                         [self originalMessage:U2A->msg subj:U2->C.name obje:U->CL.name]]];
11423         }
11424         
11425         
11426         
11427         if(grazeFlag)
11428             message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
11429         
11430         message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
11431         
11432     }else if(battleDef2Flag){
11433         
11434         
11435         U = UTop;
11436         while (!(DUN[1] == U->number)) {
11437             U = U->next;
11438         }
11439         
11440         
11441         message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
11442         
11443         
11444     }else if(battleDod2Flag){
11445         
11446         U = UTop;
11447         while (!(DUN[1] == U->number)) {
11448             U = U->next;
11449         }
11450         
11451         message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
11452         
11453         
11454     }else{
11455         
11456         message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
11457     }
11458 SKIP1:
11459     [battleDialog setStringValue:message];
11460     
11461     U = UTop;
11462     bLoopFlag = true;
11463     messageProcess++;
11464     return;
11465
11466
11467 }
11468
11469 -(void)DisplayMessageMod3A{//防御側モビール
11470
11471     double def2 = (double)31/32;
11472     NSString *message = @"";
11473     
11474     enum{
11475         RIKU,
11476         UMI,
11477         CHU,
11478         SORA,
11479     };
11480     
11481     enum{
11482         A,
11483         B,
11484         C,
11485         D,
11486         E,
11487         S,
11488         SS
11489     };
11490     
11491     static bool extentbool3 = false;
11492     static bool extentbool4 = false;
11493     if(!extentbool3 && extentBattleFlag2){
11494         extentbool3 = true;
11495         extentMPcostFlag = false;
11496         DUNnum = 1;
11497     }
11498     if(!extentBattleFlag2){
11499         DUNnum = 1;
11500     }
11501     
11502     if(bLoopFlag) return;
11503     U = UTop;
11504     U = UTop;
11505     while (!(DUN[DUNnum] == U->number)) {
11506         U = U->next;
11507     }
11508     U2 = U;
11509     
11510     U = UTop;
11511     while (!(AUN[1] == U->number)) {
11512         U = U->next;
11513     }
11514     
11515     ATTACK *aTop = U->C.A;
11516     for(int i = 0;i < crCAL1;i++){
11517         U->C.A = U->C.A->next;
11518     }
11519     
11520     
11521     if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
11522     
11523     
11524     [bplayer2 setImage:U2->CL.imgb];
11525     //[bplayer2 setImageScaling:NSScaleToFit];
11526     [nplayer2 setStringValue:U2->CL.name];
11527     [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U2->CL.S_C.HP, U2->CL.S_M.HP]];
11528     [lplayer2 setIntValue:U2->CL.S_C.HP/U2->CL.S_M.HP*100];
11529     [iplayer2 setImage:MC[chipNum[U2->x][U2->y]].img];
11530     [mplayer2 setStringValue:MC[chipNum[U2->x][U2->y]].name];
11531     [rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U2->x][U2->y]].dmgfix]];
11532     
11533     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){
11534         [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath]  stringByDeletingLastPathComponent]];
11535         
11536         NSString *path = @"data/AttackList/ALdata";
11537         
11538         path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
11539         
11540         path = [path stringByAppendingFormat:@"/"];
11541         
11542         path = [path stringByAppendingString:U->C.A->AN.movName];
11543         
11544         NSData *AVData = [NSData dataWithContentsOfFile:path];
11545         
11546         if(AVData)
11547             AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
11548         
11549         
11550         if(!AVpreview){
11551             
11552             NSString *path = @"data/AttackList3/IALdata";
11553             
11554             path = [path stringByAppendingFormat:@"%dE", U->C.A->indexE];
11555             
11556             path = [path stringByAppendingFormat:@"/"];
11557             
11558             path = [path stringByAppendingString:U->C.A->AN.movName];
11559             
11560             
11561             NSData *AVData = [NSData dataWithContentsOfFile:path];
11562             
11563             if(AVData)
11564                 AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
11565             
11566             
11567         }
11568         
11569         if(AVpreview) {
11570             AVPV.player = [AVpreview retain];
11571             AVPV.videoGravity = AVLayerVideoGravityResize;
11572         }else{
11573             goto avAWESOME3A;
11574         }
11575         
11576         
11577         [AVPV setHidden:NO];
11578         [AVpreview play];
11579         [battleDialog setStringValue:message];
11580         
11581         avPlayerFlag1 = true;
11582         
11583         
11584         U->C.A = aTop;
11585         U = UTop;
11586         return;
11587     }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->C.A->AN.ANI && !animationFlag3 && DUN[DUNnum] == 1){
11588         
11589         [battleDialog setStringValue:message];
11590         animationFlag1 = true;
11591         aniFrameCnt = 0;
11592         return;
11593     }
11594     
11595 avAWESOME3A:{}
11596     
11597     /*
11598     if(U->C.A->D->type == 0) dmg = U->C.S_C.ATK + U->C.A->totalD;
11599     if(U->C.A->D->type == 1) dmg = U->C.S_C.DEF + U->C.A->totalD;
11600     if(U->C.A->D->type == 2) dmg = U->C.S_C.ACU + U->C.A->totalD;
11601     if(U->C.A->D->type == 3) dmg = U->C.S_C.EVA + U->C.A->totalD;
11602     if(U->C.A->D->type == 4) dmg = U->C.S_C.CAP + U->C.A->totalD;
11603     if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
11604     */
11605     
11606     double urSupposedToGet;
11607     
11608     if(U->C.A) urSupposedToGet = pow(8, log(3+U->C.A->totalD/16));
11609     
11610     double oopsIsRight;
11611     
11612     if(U->C.A->melee) oopsIsRight = U->C.S_C.MEL;
11613     else oopsIsRight = U->C.S_C.MIS;
11614     bool lolflag = false;
11615     if(U->C.A->D){
11616     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;
11617     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;
11618     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;
11619     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;
11620     
11621     if(U->C.A->D->type == 4){
11622         lolflag = true;
11623         dmg = (U->C.S_C.CAP + U->C.A->totalD)*oopsIsRight/100;
11624     
11625     }
11626     if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
11627     double val2 = log(3+U2->C.S_C.MP/64);
11628         if(U->C.aura){
11629             dmg = dmg*val2;
11630         }
11631     }
11632     costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
11633     
11634     if(extentMPcostFlag && extentBattleFlag2){
11635         
11636     }else{
11637         U->C.S_C.MP -= costMP;
11638         extentMPcostFlag = true;
11639     }
11640     
11641     hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
11642     hitFix = U->C.A->hitPercent;
11643     
11644     U2A = U->C.A;
11645     U->C.A = aTop;
11646     
11647     U = UTop;
11648     while (!(DUN[DUNnum] == U->number)) {
11649         U = U->next;
11650     }
11651     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;
11652     if(hit > 100) hit = 100;
11653     if(U2A->D->sort == 1){
11654         hit = 100;
11655     }
11656     if([self sortEcheck:U2A opponent:U])
11657         hit = 0;
11658     
11659     healFlag = false;
11660     
11661     int wtf = 100;
11662     if(battleDod2Flag) wtf = 50;
11663     if(hit - rand()%wtf > 0 && !battleDef1Flag && !battleDod1Flag){
11664         
11665         if(U2A->D->sort == 0){
11666             NSLog(@"修正前のダメージ:%g", dmg);
11667             dmg = [self dmgResist:dmg];
11668             NSLog(@"属性後のダメージ:%g", dmg);
11669             def2 = pow(def2, U->CL.S_C.ARM);
11670             int omfg = rand()%100;
11671             NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, (U->CL.S_C.ARM));
11672             NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->CL.S_C.ARM), (dmg/10 + dmg - U->CL.S_C.ARM));
11673             if(lolflag) dmg = (dmg*omfg/100/10 + dmg);
11674             else dmg = (dmg*omfg/100/10 + dmg - U->CL.S_C.ARM);
11675             NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
11676             if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
11677             else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
11678             
11679             if(U->CL.S_C.typeMOVE == RIKU){
11680                 if(U2A->riku == A) dmg = dmg*1.2;
11681                 if(U2A->riku == B) dmg = dmg*1.0;
11682                 if(U2A->riku == C) dmg = dmg*0.6;
11683                 if(U2A->riku == D) dmg = dmg*0.2;
11684                 if(U2A->riku == E) dmg = 0;
11685                 if(U2A->riku == S) dmg = dmg*1.5;
11686                 if(U2A->riku == SS) dmg = dmg*2.0;
11687             } if(U->CL.S_C.typeMOVE == UMI &&
11688                  (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
11689                 if(U2A->umi == A) dmg = dmg*1.2;
11690                 if(U2A->umi == B) dmg = dmg*1.0;
11691                 if(U2A->umi == C) dmg = dmg*0.6;
11692                 if(U2A->umi == D) dmg = dmg*0.2;
11693                 if(U2A->umi == E) dmg = 0;
11694                 if(U2A->umi == S) dmg = dmg*1.5;
11695                 if(U2A->umi == SS) dmg = dmg*2.0;
11696             }else if(U->CL.S_C.typeMOVE == UMI){
11697                 if(U2A->riku == A) dmg = dmg*1.2;
11698                 if(U2A->riku == B) dmg = dmg*1.0;
11699                 if(U2A->riku == C) dmg = dmg*0.6;
11700                 if(U2A->riku == D) dmg = dmg*0.2;
11701                 if(U2A->riku == E) dmg = 0;
11702                 if(U2A->riku == S) dmg = dmg*1.5;
11703                 if(U2A->riku == SS) dmg = dmg*2.0;
11704                 
11705             } if(U->CL.S_C.typeMOVE == CHU){
11706                 if(U2A->chu == A) dmg = dmg*1.2;
11707                 if(U2A->chu == B) dmg = dmg*1.0;
11708                 if(U2A->chu == C) dmg = dmg*0.6;
11709                 if(U2A->chu == D) dmg = dmg*0.2;
11710                 if(U2A->chu == E) dmg = 0;
11711                 if(U2A->chu == S) dmg = dmg*1.5;
11712                 if(U2A->chu == SS) dmg = dmg*2.0;
11713             } if(U->CL.S_C.typeMOVE == SORA){
11714                 if(U2A->sora == A) dmg = dmg*1.2;
11715                 if(U2A->sora == B) dmg = dmg*1.0;
11716                 if(U2A->sora == C) dmg = dmg*0.6;
11717                 if(U2A->sora == D) dmg = dmg*0.2;
11718                 if(U2A->sora == E) dmg = 0;
11719                 if(U2A->sora == S) dmg = dmg*1.5;
11720                 if(U2A->sora == SS) dmg = dmg*2.0;
11721             }
11722             
11723             NSLog(@"ユニットの地形適用後:%g", dmg);
11724             if(battleDef2Flag) NSLog(@"防御後のダメージ:%g", dmg/2);
11725             graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
11726             
11727             grazeFlag = false;
11728             omfg = rand()%100;
11729             if(graze > omfg && !healFlag) {dmg = dmg/5;
11730                 grazeFlag = true;
11731             }
11732             if(battleDef2Flag) dmg -= dmg*0.5;
11733             battleDef2Flag = false;
11734             dmg = floor(dmg);
11735             if(dmg < 0) dmg = 0;
11736             U->CL.S_C.HP -= dmg;
11737             U->C.S_C.vigor++;
11738             
11739         }else if(U2A->D->sort == 1){
11740             dmg = dmg + rand()%5*dmg/10 - rand()%5*dmg/10;
11741             dmg = floor(dmg);
11742             
11743             U->C.S_C.HP += dmg;
11744             if(U->C.S_C.HP > U->C.S_M.HP) U->C.S_C.HP = U->C.S_M.HP;
11745             healFlag = true;
11746         }
11747         
11748         while(1){
11749             if(U->CL.S_C.HP <= 0) {
11750                 U->CL.S_C.HP = 0;
11751                 U2->C.S_C.vigor += 5;
11752                 
11753                 messageProcess = 2;
11754                 if(U->dead) break;
11755                 U->dead = true;
11756                 
11757                 
11758                 if(U->targType1L)
11759                     targType1cnt[0]--;
11760                 if(U->targType2L) {
11761                     targType2cnt[0]--;
11762                     targType2Lflag = true;
11763                 }
11764                 
11765                 if(U->targType1D)
11766                     targType1cnt[1]--;
11767                 if(U->targType2D) {
11768                     targType2cnt[1]--;
11769                     targType2Dflag = true;
11770                 }
11771                 
11772                 break;
11773             }
11774             break;
11775         }
11776         
11777         [tplayer2 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
11778         [lplayer2 setIntValue:U->CL.S_C.HP/U->CL.S_M.HP*100];
11779         
11780         if(![U2A->msg isEqualToString:@""]){
11781             
11782             message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
11783                                                         [self originalMessage:U2A->msg subj:U2->C.name obje:U->CL.name]]];
11784             
11785         }
11786         
11787         if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
11788         if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->CL.name, dmg]];
11789         else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->CL.name, dmg]];
11790     }else if(battleDef1Flag){
11791         
11792         
11793         U = UTop;
11794         while (!(AUN[1] == U->number)) {
11795             U = U->next;
11796         }
11797         
11798         
11799         message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
11800         
11801         
11802     }else if(battleDod1Flag){
11803         
11804         U = UTop;
11805         while (!(AUN[1] == U->number)) {
11806             U = U->next;
11807         }
11808         
11809         message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
11810         
11811         
11812     }else{
11813         
11814         message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->CL.name]];
11815         
11816     }
11817     [battleDialog setStringValue:message];
11818     
11819     
11820     U = UTop;
11821     
11822     bLoopFlag = true;
11823     
11824     if(!extentBattleFlag2){
11825         if(healFlag) {
11826             messageProcess++;
11827         };
11828         messageProcess++;
11829     }else if(extentBattleFlag2){
11830         DUNnum++;
11831         messageProcess = 1;
11832         if(DUN[DUNnum] <= 0){
11833             DUNnum = 1;
11834             messageProcess++;
11835             messageProcess++;
11836             extentBattleFlag2 = false;
11837             extentbool3 = false;
11838             extentMPcostFlag = false;
11839         }
11840     }
11841     return;
11842
11843 }
11844
11845 -(void)DisplayMessageMod3B{
11846
11847     
11848     double def2 = (double)31/32;
11849     NSString *message = @"";
11850     
11851     enum{
11852         RIKU,
11853         UMI,
11854         CHU,
11855         SORA,
11856     };
11857     
11858     enum{
11859         A,
11860         B,
11861         C,
11862         D,
11863         E,
11864         S,
11865         SS
11866     };
11867
11868     
11869     if(bLoopFlag) return;
11870     U = UTop;
11871     
11872     U = UTop;
11873     while (!(AUN[1] == U->number)) {
11874         U = U->next;
11875     }
11876     U2 = U;
11877     
11878     U = UTop;
11879     while (!(DUN[1] == U->number)) {
11880         U = U->next;
11881     }
11882     ATTACK *aTop2 = U->CL.A;
11883     int mostDmg = 0;
11884     int mostNum = -1;
11885     int num = 0;
11886     int mpCost =0;
11887     if(U->CL.A) {
11888         mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
11889         costVIG = U->C.A->vigor;
11890     }
11891     while(U->CL.A){
11892         mpCost = floor(U->CL.A->EN + U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
11893         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]){
11894             mostDmg = U->CL.A->totalD;
11895             mostNum = num;
11896         }
11897         U->CL.A = U->CL.A->next;
11898         num++;
11899     }
11900     
11901     if(mostNum < 0) U->C.A = NULL;
11902     
11903     U->CL.A = aTop2;
11904     
11905     if(!battleSet2PushedFlag){
11906         for(int i = 0;i < mostNumSub;i++){
11907             U->CL.A = U->CL.A->next;
11908         }
11909         
11910         
11911     }else{
11912         for(int i = 0;i < crCAL2;i++){
11913             U->CL.A = U->C.A->next;
11914         }
11915     }
11916     
11917     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]){
11918     }else while(U->CL.A){
11919         U->CL.A = U->CL.A->next;
11920     }
11921     
11922     if(!U->CL.A){
11923         U->CL.A = aTop2;
11924         U = UTop;
11925         
11926         message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
11927         goto SKIP1;
11928     }
11929     
11930     if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
11931     
11932     if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
11933         [[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath]  stringByDeletingLastPathComponent]];
11934         
11935         NSString *path = @"data/AttackList/ALdata";
11936         
11937         path = [path stringByAppendingFormat:@"%dE", U->chipNumber+1];
11938         
11939         path = [path stringByAppendingFormat:@"/"];
11940         
11941         path = [path stringByAppendingString:U->CL.A->AN.movName];
11942         
11943         
11944         AVpreview = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
11945         
11946         if(AVpreview) {
11947             AVPV.player = [AVpreview retain];
11948             AVPV.videoGravity = AVLayerVideoGravityResize;
11949         }else{
11950             goto avAWESOME3B;
11951         }
11952         
11953         [AVPV setControlsStyle:0];
11954         [AVPV setHidden:NO];
11955         [AVpreview play];
11956         [battleDialog setStringValue:message];
11957         
11958         avPlayerFlag2 = true;
11959         
11960         U->CL.A = aTop2;
11961         U = UTop;
11962         return;
11963     }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->CL.A->AN.ANI && !animationFlag3){
11964         
11965         
11966         animationFlag2 = true;
11967         aniFrameCnt = 0;
11968         return;
11969     }
11970     
11971     
11972 avAWESOME3B:{}
11973     
11974     
11975
11976     dmg = U->CL.A->totalD;
11977     
11978     costMP = U->CL.A->EN + floor(U->CL.A->pEN*U->CL.S_M.EN/100 + 0.5);
11979     U->CL.S_C.EN -= costMP;
11980     
11981     hit = U->CL.S_C.MOB + U->C.S_C.HIT;
11982     hitFix = U->CL.A->hitPercent;
11983     
11984     U2A = U->CL.A;
11985     U->CL.A = aTop2;
11986     
11987     U = UTop;
11988     while (!(AUN[1] == U->number)) {
11989         U = U->next;
11990     }
11991     
11992     double hit2 = U->C.S_C.EVA*U->C.S_C.DOD/100*U->C.S_C.HP/U->C.S_M.HP;
11993     
11994     double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
11995     if(hi < 0) hi = 0;
11996     
11997     hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
11998     if(hit > 100) hit = 100;
11999     
12000     if([self sortEcheck:U2A opponent:U])
12001         hit = 0;
12002     
12003     battleDod1Flag = false;
12004     
12005     int omg = 100;
12006     if(battleDod1Flag) omg = 50;
12007     
12008     if(hit - rand()%omg > 0 && !battleDef2Flag && !battleDod2Flag){
12009         NSLog(@"修正前のダメージ:%g", dmg);
12010         dmg = [self dmgResist:dmg];
12011         NSLog(@"属性後のダメージ:%g", dmg);
12012         def2 = pow(def2, U->C.S_C.DEF);
12013         int omfg = rand()%100;
12014         NSLog(@"計算式:(%g + %g - %g)", dmg*omfg/100, dmg, U->C.S_C.DEF);
12015         NSLog(@"ダメージ幅:%g〜%g", (0 + dmg - U->C.S_C.DEF), (dmg/10 + dmg - U->C.S_C.DEF));
12016         dmg = (dmg*omfg/100/10 + dmg - U->C.S_C.DEF);
12017         
12018         
12019         NSLog(@"地形効果:%g - %g", dmg, dmg*MC[chipNum[possionX][possionY]].dmgfix/100);
12020         if(buildNum[possionX][possionY] < 0) dmg -= dmg*MC[chipNum[possionX][possionY]].dmgfix/100 - 0.5;
12021         else dmg -= dmg*BC[buildNum[possionX][possionY]].dmgfix/100 - 0.5;
12022         
12023         if(U->C.S_C.typeMOVE == RIKU){
12024             if(U2A->riku == A) dmg = dmg*1.2;
12025             if(U2A->riku == B) dmg = dmg*1.0;
12026             if(U2A->riku == C) dmg = dmg*0.6;
12027             if(U2A->riku == D) dmg = dmg*0.2;
12028             if(U2A->riku == E) dmg = 0;
12029             if(U2A->riku == S) dmg = dmg*1.5;
12030             if(U2A->riku == SS) dmg = dmg*2.0;
12031         } if(U->C.S_C.typeMOVE == UMI &&
12032              (MC[chipNum[possionX][possionY]].type == 3 || MC[chipNum[possionX][possionY]].type == 4)){
12033             if(U2A->umi == A) dmg = dmg*1.2;
12034             if(U2A->umi == B) dmg = dmg*1.0;
12035             if(U2A->umi == C) dmg = dmg*0.6;
12036             if(U2A->umi == D) dmg = dmg*0.2;
12037             if(U2A->umi == E) dmg = 0;
12038             if(U2A->umi == S) dmg = dmg*1.5;
12039             if(U2A->umi == SS) dmg = dmg*2.0;
12040         }else if(U->C.S_C.typeMOVE == UMI){
12041             if(U2A->riku == A) dmg = dmg*1.2;
12042             if(U2A->riku == B) dmg = dmg*1.0;
12043             if(U2A->riku == C) dmg = dmg*0.6;
12044             if(U2A->riku == D) dmg = dmg*0.2;
12045             if(U2A->riku == E) dmg = 0;
12046             if(U2A->riku == S) dmg = dmg*1.5;
12047             if(U2A->riku == SS) dmg = dmg*2.0;
12048             
12049         } if(U->C.S_C.typeMOVE == CHU){
12050             if(U2A->chu == A) dmg = dmg*1.2;
12051             if(U2A->chu == B) dmg = dmg*1.0;
12052             if(U2A->chu == C) dmg = dmg*0.6;
12053             if(U2A->chu == D) dmg = dmg*0.2;
12054             if(U2A->chu == E) dmg = 0;
12055             if(U2A->chu == S) dmg = dmg*1.5;
12056             if(U2A->chu == SS) dmg = dmg*2.0;
12057         } if(U->C.S_C.typeMOVE == SORA){
12058             if(U2A->sora == A) dmg = dmg*1.2;
12059             if(U2A->sora == B) dmg = dmg*1.0;
12060             if(U2A->sora == C) dmg = dmg*0.6;
12061             if(U2A->sora == D) dmg = dmg*0.2;
12062             if(U2A->sora == E) dmg = 0;
12063             if(U2A->sora == S) dmg = dmg*1.5;
12064             if(U2A->sora == SS) dmg = dmg*2.0;
12065         }
12066         
12067         NSLog(@"ユニットの地形適用後:%g", dmg);
12068         
12069         graze = U->C.S_C.MEN/U2->C.S_C.MEN*U->C.S_C.LUK/3;
12070         
12071         grazeFlag = false;
12072         omfg = rand()&100;
12073         if(graze > omfg && !healFlag) {dmg = dmg/5;
12074             grazeFlag = true;
12075         }
12076         
12077         if(battleDef1Flag) dmg -= dmg*0.5;
12078         battleDef1Flag = false;
12079         dmg = floor(dmg);
12080         if(dmg < 0) dmg = 0;
12081         U->C.S_C.HP -= dmg;
12082         U->C.S_C.vigor++;
12083         
12084         while(1){
12085             if(U->C.S_C.HP <= 0) {
12086                 U->C.S_C.HP = 0;
12087                 U2->C.S_C.vigor += 5;
12088                 
12089                 messageProcess = 2;
12090                 if(U->dead) break;
12091                 U->dead = true;
12092                
12093                 
12094                 if(U->targType1L)
12095                     targType1cnt[0]--;
12096                 if(U->targType2L) {
12097                     targType2cnt[0]--;
12098                     targType2Lflag = true;
12099                 }
12100                 
12101                 if(U->targType1D)
12102                     targType1cnt[1]--;
12103                 if(U->targType2D) {
12104                     targType2cnt[1]--;
12105                     targType2Dflag = true;
12106                 }
12107                 
12108                 break;
12109             }
12110             break;
12111         }
12112         
12113         
12114         
12115         [tplayer1 setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
12116         
12117         [lplayer1 setIntValue:U->C.S_C.HP/U->C.S_M.HP*100];
12118         
12119         if(![U2A->msg isEqualToString:@""]){
12120             message = [message stringByAppendingString:[NSString stringWithFormat:@"%@\n",
12121                                                         [self originalMessage:U2A->msg subj:U2->CL.name obje:U->C.name]]];
12122         }
12123         
12124         
12125         
12126         if(grazeFlag)
12127             message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
12128         
12129         message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
12130         
12131     }else if(battleDef2Flag){
12132         
12133         
12134         U = UTop;
12135         while (!(DUN[1] == U->number)) {
12136             U = U->next;
12137         }
12138         
12139         
12140         message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->CL.name]];
12141         
12142         
12143     }else if(battleDod2Flag){
12144         
12145         U = UTop;
12146         while (!(DUN[1] == U->number)) {
12147             U = U->next;
12148         }
12149         
12150         message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->CL.name]];
12151         
12152         
12153     }else{
12154         
12155         message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
12156     }
12157 SKIP1:
12158     [battleDialog setStringValue:message];
12159     
12160     U = UTop;
12161     bLoopFlag = true;
12162     messageProcess++;
12163     return;
12164
12165 }
12166
12167 -(NSString*)originalMessage:(NSString*)str subj:(NSString*)subj obje:(NSString*)obje{
12168
12169     NSString *string;
12170     NSArray *array;
12171     NSString *result = @"";
12172     
12173     string = [str copy];
12174     
12175     array = [string componentsSeparatedByString:@"$subj"];
12176     
12177     for(int i = 0;i < [array count];i++){
12178         if(i != 0)
12179             result = [[result stringByAppendingString:[NSString stringWithFormat:@"%@", subj]] retain];
12180         
12181         result = [[result stringByAppendingString:[array objectAtIndex:i]] retain];
12182     }
12183     
12184     string = [result copy];
12185     
12186     array = [string componentsSeparatedByString:@"$obje"];
12187     
12188     result = @"";
12189     
12190     for(int i = 0;i < [array count];i++){
12191         if(i != 0)
12192             result = [[result stringByAppendingString:[NSString stringWithFormat:@"%@", obje]] retain];
12193         
12194         result = [[result stringByAppendingString:[array objectAtIndex:i]] retain];
12195     }
12196     
12197     //NSLog(@"%@", result);
12198     
12199     return result;
12200 }
12201
12202
12203
12204 -(double)dmgResist:(double)DMG{
12205
12206     int sd[22];
12207     
12208     sd[0] = U->C.R_C.blow + U->C.R_F.blow;
12209     sd[1] = U->C.R_C.slash + U->C.R_F.slash;
12210     sd[2] = U->C.R_C.stub + U->C.R_F.stub;
12211     sd[3] = U->C.R_C.arrow + U->C.R_F.arrow;
12212     sd[4] = U->C.R_C.gun + U->C.R_F.gun;
12213     sd[5] = U->C.R_C.shell + U->C.R_F.shell;
12214              
12215     sd[6] = U->C.R_C.flame + U->C.R_F.flame;
12216     sd[7] = U->C.R_C.cold + U->C.R_F.cold;
12217     sd[8] = U->C.R_C.electoric + U->C.R_F.electoric;
12218     sd[9] = U->C.R_C.air + U->C.R_F.air;
12219     sd[10] = U->C.R_C.water + U->C.R_F.water;
12220     sd[11] = U->C.R_C.gas + U->C.R_F.gas;
12221     sd[12] = U->C.R_C.holy + U->C.R_F.holy;
12222     sd[13] = U->C.R_C.dark + U->C.R_F.dark;
12223     sd[14] = U->C.R_C.explosion + U->C.R_F.explosion;
12224     sd[15] = U->C.R_C.blood + U->C.R_F.blood;
12225     
12226     sd[16] = U->C.R_C.paralysis + U->C.R_F.paralysis;
12227     sd[17] = U->C.R_C.confusion + U->C.R_F.confusion;
12228     sd[18] = U->C.R_C.poison + U->C.R_F.poison;
12229     sd[19] = U->C.R_C.sleep + U->C.R_F.sleep;
12230     sd[20] = U->C.R_C.charm + U->C.R_F.charm;
12231     sd[21] = U->C.R_C.silent + U->C.R_F.silent;
12232
12233     
12234     
12235     for(int i = 0;i <= 21;i++)
12236         sd[i] &= ~(sd[i] >> 31);
12237     
12238     if(U2A->D){
12239         
12240     if(U2A->D->seed == 0) DMG = DMG * sd[0]/100;
12241     if(U2A->D->seed == 1) DMG = DMG * sd[1]/100;
12242     if(U2A->D->seed == 2) DMG = DMG * sd[2]/100;
12243     if(U2A->D->seed == 3) DMG = DMG * sd[3]/100;
12244     if(U2A->D->seed == 4) DMG = DMG * sd[4]/100;
12245     if(U2A->D->seed == 5) DMG = DMG * sd[5]/100;
12246     
12247     if(U2A->D->seed == 6) DMG = DMG * sd[6]/100;
12248     if(U2A->D->seed == 7) DMG = DMG * sd[7]/100;
12249     if(U2A->D->seed == 8) DMG = DMG * sd[8]/100;
12250     if(U2A->D->seed == 9) DMG = DMG * sd[9]/100;
12251     if(U2A->D->seed == 10) DMG = DMG * sd[10]/100;
12252     if(U2A->D->seed == 11) DMG = DMG * sd[11]/100;
12253     if(U2A->D->seed == 12) DMG = DMG * sd[12]/100;
12254     if(U2A->D->seed == 13) DMG = DMG * sd[13]/100;
12255     if(U2A->D->seed == 14) DMG = DMG * sd[14]/100;
12256     if(U2A->D->seed == 15) DMG = DMG * sd[15]/100;
12257     
12258     if(U2A->D->seed == 16) DMG = DMG * sd[16]/100;
12259     if(U2A->D->seed == 17) DMG = DMG * sd[17]/100;
12260     if(U2A->D->seed == 18) DMG = DMG * sd[18]/100;
12261     if(U2A->D->seed == 19) DMG = DMG * sd[19]/100;
12262     if(U2A->D->seed == 20) DMG = DMG * sd[20]/100;
12263     if(U2A->D->seed == 21) DMG = DMG * sd[21]/100;
12264     }
12265     return DMG;
12266 }
12267
12268 -(IBAction)battleStart:(id)sender{
12269     battleSetUp = true;
12270     battleSet1Flag = false;
12271     battleSet2Flag = false;
12272     battleSettingFlag = false;
12273     
12274     attackingWait = false;
12275     crapBugFixFlag = true;
12276     
12277     [battlePanel close];
12278 }
12279
12280
12281 -(void)battleStartCPU{
12282     battleSetUp = true;
12283     battleSet1Flag = false;
12284     battleSet2Flag = false;
12285     battleSettingFlag = false;
12286     
12287     crapBugFixFlag = true;
12288     
12289     [battlePanel close];
12290 }
12291
12292 -(IBAction)battleSet1:(id)sender{
12293     battleSetFlag = false;
12294     battleSet1Flag = true;
12295     battleDef1Flag = false;
12296     battleDod1Flag = false;
12297     battleSettingFlag = true;
12298     battleSet2PushedFlag = false;
12299     
12300     U = UTop;
12301     while (!(AUN[1] == U->number)) {
12302         U = U->next;
12303     }
12304     if(U->chipNumberL >= 0)
12305     {
12306         U = UTop;
12307         [self initCAttackList2];
12308         [self initCAttackSelect2];
12309     }
12310     else if(U->chipNumber >= 0) {
12311         U = UTop;
12312         [self initCAttackList];
12313         [self initCAttackSelect];
12314     }
12315     U = UTop;
12316     
12317     [atkPanel makeKeyAndOrderFront:nil];
12318 }
12319 -(IBAction)battleDef1:(id)sender{
12320     battleDef1Flag = true;
12321     battleSet1Flag = false;
12322     battleDod1Flag = false;
12323     [self setBattlePanel];
12324 }
12325 -(IBAction)battleDod1:(id)sender{
12326     battleDod1Flag = true;
12327     battleDef1Flag = false;
12328     battleSet1Flag = false;
12329     [self setBattlePanel];
12330 }
12331 -(IBAction)battleSet2:(id)sender{
12332     battleSetFlag = true;
12333     battleSet2Flag = true;
12334     battleDef2Flag = false;
12335     battleDod2Flag = false;
12336     battleSettingFlag = true;
12337     battleSet2PushedFlag = true;
12338     
12339     U = UTop;
12340     while (!(DUN[1] == U->number)) {
12341         U = U->next;
12342     }
12343     
12344     if(U->chipNumberL >= 0){
12345         U = UTop;
12346         [self initCAttackList2];
12347         [self initCAttackSelect2];
12348     }
12349     else if(U->chipNumber >= 0) {
12350         U = UTop;
12351         [self initCAttackList];
12352         [self initCAttackSelect];
12353     }
12354     U = UTop;
12355     [atkPanel makeKeyAndOrderFront:nil];
12356 }
12357 -(IBAction)battleDef2:(id)sender{
12358     battleDef2Flag = true;
12359     battleSet2Flag = false;
12360     battleDod2Flag = false;
12361     [self setBattlePanel];
12362 }
12363 -(IBAction)battleDod2:(id)sender{
12364     battleDod2Flag = true;
12365     battleDef2Flag = false;
12366     battleSet2Flag = false;
12367     [self setBattlePanel];
12368 }
12369
12370 -(IBAction)battleCancel:(id)sender{
12371     battleFlag = false;
12372     battleSettingFlag = false;
12373     
12374     battleSet2PushedFlag = false;
12375     attackingWait = false;
12376     
12377     battleDef1Flag = false;
12378     battleDef2Flag = false;
12379     battleDod1Flag = false;
12380     battleDod2Flag = false;
12381     
12382     wtAttackedFlag = false;
12383     
12384     [battlePanel close];
12385 }
12386
12387 -(IBAction)researchCancel:(id)sender{
12388     [researchPanel close];
12389 }
12390
12391 -(void)setCommandPanel{
12392     
12393     menuPoint.x = [mapWindow frame].origin.x + possionLocalX*32;
12394     menuPoint.y = [mapWindow frame].origin.y + possionLocalY*32 - 180;
12395     
12396     
12397     if(buildSkillFlag) {
12398         cIncludeCreateFlag = true;
12399         menuPoint.y -= 20;
12400     }else cIncludeCreateFlag = false;
12401     if(summonSkillFlag) {
12402         cIncludeSummonFlag = true;
12403         menuPoint.y -= 20;
12404     }else cIncludeSummonFlag = false;
12405     int plusBtnValue = 0;
12406     int plusBtnValue2 = 0;
12407     int plusBtnValue3 = 0;
12408     
12409     if(Uselected != unitBreak){
12410         
12411         plusBtnValue = 160;
12412         plusBtnValue2 = plusBtnValue;
12413         
12414         plusBtnValue -= 10;
12415         
12416         if(1){
12417             plusBtnValue -= moveBtn.frame.size.height + 2;
12418             plusBtnValue2 -= moveBtn.frame.size.height + 2;
12419             plusBtnValue3 -= moveBtn.frame.size.height + 2;
12420             [moveBtn setTransparent: YES];
12421             [moveBtn setEnabled:NO];
12422         }
12423         
12424         if(1){
12425             plusBtnValue -= attackBtn.frame.size.height + 2;
12426             plusBtnValue2 -= attackBtn.frame.size.height + 2;
12427             plusBtnValue3 -= attackBtn.frame.size.height + 2;
12428             [attackBtn setTransparent: YES];
12429             [attackBtn setEnabled:NO];
12430         }
12431         
12432         plusBtnValue -= stanbyBtn.frame.size.height + 2;
12433         plusBtnValue2 -= stanbyBtn.frame.size.height + 2;
12434         plusBtnValue3 -= stanbyBtn.frame.size.height + 2;
12435         [stanbyBtn setTransparent: YES];
12436         [stanbyBtn setEnabled:NO];
12437         
12438         [createBtn setTransparent: YES];
12439         [createBtn setEnabled: NO];
12440         
12441         [summonBtn setTransparent: YES];
12442         [summonBtn setEnabled: NO];
12443         
12444         plusBtnValue -= statusBtn.frame.size.height + 2;
12445         [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12446         [[commandPanel contentView] addSubview:statusBtn];
12447         
12448         plusBtnValue -= cancelBtn.frame.size.height + 2;
12449         [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12450         [[commandPanel contentView] addSubview:cancelBtn];
12451         
12452         [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y - plusBtnValue3, 150, plusBtnValue2) display:YES];
12453         
12454         return;
12455     }
12456     
12457     if(cIncludeCreateFlag && cIncludeSummonFlag && MF[MFselectedRow+1].MS.buildAllowedFlag && MF[MFselectedRow+1].MS.summonAllowedFlag){
12458         
12459         plusBtnValue = 200;
12460         plusBtnValue2 = plusBtnValue;
12461         //[commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
12462         
12463         plusBtnValue -= 10;
12464         
12465         if(!wtMovedFlag){
12466         plusBtnValue -= moveBtn.frame.size.height + 2;
12467         [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12468         [[commandPanel contentView] addSubview:moveBtn];
12469             [moveBtn setTransparent: NO];
12470             [moveBtn setEnabled: YES];
12471            
12472         }else{
12473             plusBtnValue -= moveBtn.frame.size.height + 2;
12474             plusBtnValue2 -= moveBtn.frame.size.height + 2;
12475             plusBtnValue3 -= moveBtn.frame.size.height + 2;
12476             [moveBtn setTransparent: YES];
12477             [moveBtn setEnabled:NO];
12478         }
12479         
12480         if(!wtAttackedFlag){
12481         plusBtnValue -= attackBtn.frame.size.height + 2;
12482         [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12483         [[commandPanel contentView] addSubview:attackBtn];
12484             [attackBtn setTransparent: NO];
12485             [attackBtn setEnabled: YES];
12486         }else{
12487             plusBtnValue -= attackBtn.frame.size.height + 2;
12488             plusBtnValue2 -= attackBtn.frame.size.height + 2;
12489             plusBtnValue3 -= attackBtn.frame.size.height + 2;
12490             [attackBtn setTransparent: YES];
12491             [attackBtn setEnabled:NO];
12492         }
12493         
12494         if(!wtAttackedFlag){
12495         plusBtnValue -= stanbyBtn.frame.size.height + 2;
12496         [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12497         [[commandPanel contentView] addSubview:stanbyBtn];
12498         [stanbyBtn setTransparent: NO];
12499         [stanbyBtn setEnabled: YES];
12500         }
12501         
12502         if(!wtAttackedFlag){
12503         [createBtn setTransparent: NO];
12504         [createBtn setEnabled: YES];
12505         plusBtnValue -= createBtn.frame.size.height + 2;
12506         [createBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12507         [[commandPanel contentView] addSubview:createBtn];
12508         }else{
12509             plusBtnValue -= createBtn.frame.size.height + 2;
12510             plusBtnValue2 -= createBtn.frame.size.height + 2;
12511             plusBtnValue3 -= createBtn.frame.size.height + 2;
12512             [createBtn setTransparent: YES];
12513             [createBtn setEnabled: NO];
12514         }
12515         
12516         if(!wtAttackedFlag){
12517         [summonBtn setTransparent: NO];
12518         [summonBtn setEnabled: YES];
12519         plusBtnValue -= summonBtn.frame.size.height + 2;
12520         [summonBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12521         [[commandPanel contentView] addSubview:summonBtn];
12522         }else{
12523             plusBtnValue -= summonBtn.frame.size.height + 2;
12524             plusBtnValue2 -= summonBtn.frame.size.height + 2;
12525             plusBtnValue3 -= summonBtn.frame.size.height + 2;
12526             [summonBtn setTransparent: YES];
12527             [summonBtn setEnabled: NO];
12528         }
12529         
12530         if(!wtMovedFlag && wtAttackedFlag){
12531             [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12532             [[commandPanel contentView] addSubview:moveBtn];
12533             [moveBtn setTransparent: NO];
12534             [moveBtn setEnabled: YES];
12535             plusBtnValue -= stanbyBtn.frame.size.height + 2;
12536             [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12537             [[commandPanel contentView] addSubview:stanbyBtn];
12538             [stanbyBtn setTransparent: NO];
12539             [stanbyBtn setEnabled: YES];
12540         }
12541         
12542         if(wtMovedFlag && wtAttackedFlag){
12543             plusBtnValue -= stanbyBtn.frame.size.height + 2;
12544             [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12545             [[commandPanel contentView] addSubview:stanbyBtn];
12546             [stanbyBtn setTransparent: NO];
12547             [stanbyBtn setEnabled: YES];
12548         }
12549         
12550         
12551         
12552         plusBtnValue -= statusBtn.frame.size.height + 2;
12553         [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12554         [[commandPanel contentView] addSubview:statusBtn];
12555         
12556         plusBtnValue -= cancelBtn.frame.size.height + 2;
12557         [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12558         [[commandPanel contentView] addSubview:cancelBtn];
12559         
12560         [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y - plusBtnValue3, 150, plusBtnValue2) display:YES];
12561     }
12562     else if(cIncludeCreateFlag && !cIncludeSummonFlag && MF[MFselectedRow+1].MS.buildAllowedFlag){
12563         plusBtnValue = 180;
12564         plusBtnValue2 = plusBtnValue;
12565         //[commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
12566         
12567         plusBtnValue -= 10;
12568         
12569         if(!wtMovedFlag){
12570             plusBtnValue -= moveBtn.frame.size.height + 2;
12571             [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12572             [[commandPanel contentView] addSubview:moveBtn];
12573             [moveBtn setTransparent: NO];
12574             [moveBtn setEnabled: YES];
12575         }else{
12576             plusBtnValue -= moveBtn.frame.size.height + 2;
12577             plusBtnValue2 -= moveBtn.frame.size.height + 2;
12578             plusBtnValue3 -= moveBtn.frame.size.height + 2;
12579             [moveBtn setTransparent: YES];
12580             [moveBtn setEnabled:NO];
12581         }
12582         
12583         if(!wtAttackedFlag){
12584             plusBtnValue -= attackBtn.frame.size.height + 2;
12585             [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12586             [[commandPanel contentView] addSubview:attackBtn];
12587             [attackBtn setTransparent: NO];
12588             [attackBtn setEnabled: YES];
12589         }else{
12590             plusBtnValue -= attackBtn.frame.size.height + 2;
12591             plusBtnValue2 -= attackBtn.frame.size.height + 2;
12592             plusBtnValue3 -= attackBtn.frame.size.height + 2;
12593             [attackBtn setTransparent: YES];
12594             [attackBtn setEnabled:NO];
12595         }
12596
12597         if(!wtAttackedFlag){
12598             plusBtnValue -= stanbyBtn.frame.size.height + 2;
12599             [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12600             [[commandPanel contentView] addSubview:stanbyBtn];
12601             [stanbyBtn setTransparent: NO];
12602             [stanbyBtn setEnabled: YES];
12603         }
12604         
12605         if(!wtAttackedFlag){
12606         [createBtn setTransparent: NO];
12607         [createBtn setEnabled: YES];
12608         plusBtnValue -= createBtn.frame.size.height + 2;
12609         [createBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12610         [[commandPanel contentView] addSubview:createBtn];
12611         }else{
12612             plusBtnValue -= createBtn.frame.size.height + 2;
12613             plusBtnValue2 -= createBtn.frame.size.height + 2;
12614             plusBtnValue3 -= createBtn.frame.size.height + 2;
12615             [createBtn setTransparent: YES];
12616             [createBtn setEnabled:NO];
12617         }
12618         
12619         if(!wtMovedFlag && wtAttackedFlag){
12620             [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12621             [[commandPanel contentView] addSubview:moveBtn];
12622             [moveBtn setTransparent: NO];
12623             [moveBtn setEnabled: YES];
12624             plusBtnValue -= stanbyBtn.frame.size.height + 2;
12625             [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12626             [[commandPanel contentView] addSubview:stanbyBtn];
12627             [stanbyBtn setTransparent: NO];
12628             [stanbyBtn setEnabled: YES];
12629         }
12630         
12631         if(wtMovedFlag && wtAttackedFlag){
12632             plusBtnValue -= stanbyBtn.frame.size.height + 2;
12633             [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12634             [[commandPanel contentView] addSubview:stanbyBtn];
12635             [stanbyBtn setTransparent: NO];
12636             [stanbyBtn setEnabled: YES];
12637         }
12638         
12639         [summonBtn setTransparent: YES];
12640         [summonBtn setEnabled: NO];
12641         
12642         plusBtnValue -= statusBtn.frame.size.height + 2;
12643         [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12644         [[commandPanel contentView] addSubview:statusBtn];
12645         
12646         plusBtnValue -= cancelBtn.frame.size.height + 2;
12647         [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12648         [[commandPanel contentView] addSubview:cancelBtn];
12649         
12650         [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y - plusBtnValue3, 150, plusBtnValue2) display:YES];
12651     }else if(cIncludeSummonFlag && !cIncludeCreateFlag && MF[MFselectedRow+1].MS.summonAllowedFlag){
12652         
12653         //[commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, 210) display:YES];
12654         
12655         plusBtnValue = 180;
12656         plusBtnValue2 = plusBtnValue;
12657         //[commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
12658         
12659         plusBtnValue -= 10;
12660         
12661         if(!wtMovedFlag){
12662             plusBtnValue -= moveBtn.frame.size.height + 2;
12663             [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12664             [[commandPanel contentView] addSubview:moveBtn];
12665             [moveBtn setTransparent: NO];
12666             [moveBtn setEnabled: YES];
12667         }else{
12668             plusBtnValue -= moveBtn.frame.size.height + 2;
12669             plusBtnValue2 -= moveBtn.frame.size.height + 2;
12670             plusBtnValue3 -= moveBtn.frame.size.height + 2;
12671             [moveBtn setTransparent: YES];
12672             [moveBtn setEnabled:NO];
12673     
12674         }
12675         
12676         if(!wtAttackedFlag){
12677             plusBtnValue -= attackBtn.frame.size.height + 2;
12678             [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12679             [[commandPanel contentView] addSubview:attackBtn];
12680             [attackBtn setTransparent: NO];
12681             [attackBtn setEnabled: YES];
12682         }else{
12683             plusBtnValue2 -= attackBtn.frame.size.height + 2;
12684             plusBtnValue -= attackBtn.frame.size.height + 2;
12685             plusBtnValue3 -= attackBtn.frame.size.height + 2;
12686             [attackBtn setTransparent: YES];
12687             [attackBtn setEnabled:NO];
12688         }
12689         
12690         if(!wtAttackedFlag){
12691         plusBtnValue -= stanbyBtn.frame.size.height + 2;
12692         [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12693         [[commandPanel contentView] addSubview:stanbyBtn];
12694         [stanbyBtn setTransparent: NO];
12695         [stanbyBtn setEnabled: YES];
12696         }
12697         
12698         [createBtn setTransparent: YES];
12699         [createBtn setEnabled: NO];
12700         
12701         if(!wtAttackedFlag){
12702         [summonBtn setTransparent: NO];
12703         [summonBtn setEnabled: YES];
12704         plusBtnValue -= summonBtn.frame.size.height + 2;
12705         [summonBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12706         [[commandPanel contentView] addSubview:summonBtn];
12707         }else{
12708             plusBtnValue2 -= summonBtn.frame.size.height + 2;
12709             plusBtnValue -= summonBtn.frame.size.height + 2;
12710             plusBtnValue3 -= summonBtn.frame.size.height + 2;
12711             [summonBtn setTransparent: YES];
12712             [summonBtn setEnabled:NO];
12713         }
12714         
12715         if(!wtMovedFlag && wtAttackedFlag){
12716             [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12717             [[commandPanel contentView] addSubview:moveBtn];
12718             [moveBtn setTransparent: NO];
12719             [moveBtn setEnabled: YES];
12720             plusBtnValue -= stanbyBtn.frame.size.height + 2;
12721             [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12722             [[commandPanel contentView] addSubview:stanbyBtn];
12723             [stanbyBtn setTransparent: NO];
12724             [stanbyBtn setEnabled: YES];
12725         }
12726         
12727         if(wtMovedFlag && wtAttackedFlag){
12728             plusBtnValue -= stanbyBtn.frame.size.height + 2;
12729             [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12730             [[commandPanel contentView] addSubview:stanbyBtn];
12731             [stanbyBtn setTransparent: NO];
12732             [stanbyBtn setEnabled: YES];
12733         }
12734         
12735         plusBtnValue -= statusBtn.frame.size.height + 2;
12736         [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12737         [[commandPanel contentView] addSubview:statusBtn];
12738         
12739         plusBtnValue -= cancelBtn.frame.size.height + 2;
12740         [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12741         [[commandPanel contentView] addSubview:cancelBtn];
12742         
12743         [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y - plusBtnValue3, 150, plusBtnValue2) display:YES];
12744     }else{
12745         
12746         plusBtnValue = 160;
12747         plusBtnValue2 = plusBtnValue;
12748         //[commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y, 150, plusBtnValue) display:YES];
12749         
12750         plusBtnValue -= 10;
12751         
12752         if(!wtMovedFlag){
12753             plusBtnValue -= moveBtn.frame.size.height + 2;
12754             [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12755             [[commandPanel contentView] addSubview:moveBtn];
12756             [moveBtn setTransparent: NO];
12757             [moveBtn setEnabled: YES];
12758         }else{
12759             plusBtnValue -= moveBtn.frame.size.height + 2;
12760             plusBtnValue2 -= moveBtn.frame.size.height + 2;
12761             plusBtnValue3 -= moveBtn.frame.size.height + 2;
12762             [moveBtn setTransparent: YES];
12763             [moveBtn setEnabled:NO];
12764         }
12765         
12766         if(!wtAttackedFlag){
12767             plusBtnValue -= attackBtn.frame.size.height + 2;
12768             [attackBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12769             [[commandPanel contentView] addSubview:attackBtn];
12770             [attackBtn setTransparent: NO];
12771             [attackBtn setEnabled: YES];
12772         }else{
12773             plusBtnValue -= attackBtn.frame.size.height + 2;
12774             plusBtnValue2 -= attackBtn.frame.size.height + 2;
12775             plusBtnValue3 -= attackBtn.frame.size.height + 2;
12776             [attackBtn setTransparent: YES];
12777             [attackBtn setEnabled:NO];
12778         }
12779         
12780         if(!wtMovedFlag && wtAttackedFlag){
12781             [moveBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12782             [[commandPanel contentView] addSubview:moveBtn];
12783             [moveBtn setTransparent: NO];
12784             [moveBtn setEnabled: YES];
12785         }
12786         
12787         plusBtnValue -= stanbyBtn.frame.size.height + 2;
12788         [stanbyBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12789         [[commandPanel contentView] addSubview:stanbyBtn];
12790         [stanbyBtn setTransparent: NO];
12791         [stanbyBtn setEnabled: YES];
12792         
12793         [createBtn setTransparent: YES];
12794         [createBtn setEnabled: NO];
12795         
12796         [summonBtn setTransparent: YES];
12797         [summonBtn setEnabled: NO];
12798         
12799         plusBtnValue -= statusBtn.frame.size.height + 2;
12800         [statusBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12801         [[commandPanel contentView] addSubview:statusBtn];
12802         
12803         plusBtnValue -= cancelBtn.frame.size.height + 2;
12804         [cancelBtn setFrame:NSMakeRect(25, plusBtnValue, 100, 23)];
12805         [[commandPanel contentView] addSubview:cancelBtn];
12806      
12807         [commandPanel setFrame:NSMakeRect(menuPoint.x, menuPoint.y - plusBtnValue3, 150, plusBtnValue2) display:YES];
12808     }
12809     
12810
12811 }
12812
12813 -(void)openMessage{
12814     [IVimage setHidden:NO];
12815     [TFname setHidden:NO];
12816     [TFmessage setHidden:NO];
12817     [BXname setHidden:NO];
12818     [BXmessage setHidden:NO];
12819     [IVimage setEnabled:YES];
12820     [TFname setEnabled:YES];
12821     [TFmessage setEnabled:YES];
12822 }
12823
12824 -(void)closeMessage{
12825     [IVimage setHidden:YES];
12826     [TFname setHidden:YES];
12827     [TFmessage setHidden:YES];
12828     [BXname setHidden:YES];
12829     [BXmessage setHidden:YES];
12830     [IVimage setEnabled:NO];
12831     [TFname setEnabled:NO];
12832     [TFmessage setEnabled:NO];
12833 }
12834
12835 -(MAPSCRIPT0*)setMessage:(MAPSCRIPT0*)MS0{
12836
12837     
12838     if(!messageDialog){
12839         [self closeMessage];
12840         damnitFixFlag = true;
12841     }else if(MS0->S1.str){
12842         [self openMessage];
12843         damnitFixFlag = false;
12844     NSString *string = @"";
12845     
12846         string = [MS0->S1.str retain];
12847         if(!string){
12848             MS0->endFlag = true;
12849             textInstantBugFixFlag = false;
12850             messageEndFlag = false;
12851             messageDialog = false;
12852             return MS0;
12853         }
12854         
12855         if(!initStringNum){
12856             msgLvl = 0;
12857             msgCnt = 0;
12858             initStringNum = true;
12859             textInstantBugFixFlag = true;
12860         }
12861         
12862         msgMax = (int)[string length];
12863             
12864         
12865         if(!initImgFlag)
12866         {
12867             [self loadImg];
12868             initImgFlag = true;
12869         }
12870         
12871         [IVimage setImage:MS0->S1.img];
12872         if(MS0->S1.name) [TFname setStringValue:MS0->S1.name];
12873         else [TFname setStringValue:@""];
12874     
12875         if(msgCnt <= msgMax){
12876             if(string) {
12877                 [TFmessage setStringValue:[string substringToIndex:msgCnt]];
12878                 msgCnt++;
12879             }
12880             else [TFmessage setStringValue:@""];
12881         }
12882         wtRdy3 = true;
12883
12884         
12885         if(messageEndFlag){
12886             MS0->endFlag = true;
12887             messageEndFlag = false;
12888             initStringNum = false;
12889             messageDialog = false;
12890             MS0->succeessfulFlag = true;
12891             wtRdy3 = false;
12892             textInstantBugFixFlag = false;
12893             [self setMessage:NULL];
12894         }
12895         
12896         return MS0;
12897     }else{
12898         MS0->endFlag = true;
12899         messageEndFlag = false;
12900         messageDialog = false;
12901         initStringNum = false;
12902     }
12903     
12904     
12905     return MS0;
12906 }
12907
12908 -(void) loadImg{
12909     
12910     NSString *directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
12911     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
12912     
12913     NSString *path = @"Map/";
12914     NSString *fileData = nil;
12915     NSArray *fileDataArray;
12916     
12917     path = [path stringByAppendingFormat:@"%@"  ,MF[MFselectedRow+1].fileName];
12918     
12919     fileData = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
12920     
12921     fileDataArray = [fileData componentsSeparatedByString:@"\n"];
12922     
12923     MAPSCRIPT0 *MS00 = MF[MFselectedRow+1].MS.D->P;
12924     MAPSCRIPT0 *m00Top = MS00;
12925     for (int i = 0; i < [fileDataArray count]; i++) {
12926         if(!MS00) break;
12927         NSRange range = [[fileDataArray objectAtIndex:i] rangeOfString:@"◆"];
12928         if(range.location != NSNotFound){
12929             
12930             NSArray *array2 = [[fileDataArray objectAtIndex:i] componentsSeparatedByString:@","];
12931             if(MS00->type == 1)
12932             {
12933                 MS00->S1.iName = [[array2 objectAtIndex:2] retain];
12934             
12935             for(int k = 0; k < UCN;k++){
12936                 
12937                 if([MS00->S1.iName isEqualToString:UC[k].nameClass]){
12938                     MS00->S1.img = [UC[k].imgb retain];
12939                     MS00 = MS00->next;
12940                     break;
12941                 }
12942             
12943             }
12944             }
12945             
12946         }
12947     }
12948     
12949     MS00 = m00Top;
12950     
12951 }
12952
12953
12954 -(MAPSCRIPT0*)setSwitch:(MAPSCRIPT0*)MS0{
12955     
12956     if(MS0->switch1)
12957     for(int i = 0;*(MS0->switch1 + i) >0;i++){
12958         Suicchi[*(MS0->switch1+i)] = true;
12959     
12960     }
12961     if(MS0->switch2)
12962     for(int i = 0;*(MS0->switch2 + i) >0;i++){
12963         Suicchi[*(MS0->switch2+i)] = false;
12964         
12965     }
12966     
12967     MS0->succeessfulFlag = true;
12968     MS0->endFlag = true;
12969     return MS0;
12970 }
12971
12972 -(MAPSCRIPT0*)setBranch:(MAPSCRIPT0*)MS0{
12973
12974     MAPSCRIPT0 *CRMS0 = MS0;
12975     bool branchEndFlag = false;
12976     bool branchSuceedFlag = false;
12977     bool trueFlag = true;
12978     
12979     
12980     if(MS0->endFlag)
12981         return MS0;
12982     
12983     /*
12984     if(!Uselected){
12985         MS0->endFlag = true;
12986         return MS0;
12987     }*/
12988     
12989     if(1){
12990         
12991         if(MS0->S4.suicchiFlag){
12992             if(MS0->S4.suicchiONOFF == 0){
12993                 if(MS0->S4.suicchi)
12994                 for (int i = 0;*(MS0->S4.suicchi + i);i++) {
12995                     if(!Suicchi[*(MS0->S4.suicchi + i)]){
12996                         trueFlag = false;
12997                     }
12998                 }
12999             }else{
13000                 if(MS0->S4.suicchi)
13001                     for (int i = 0;*(MS0->S4.suicchi + i);i++) {
13002                         if(Suicchi[*(MS0->S4.suicchi + i)]){
13003                             trueFlag = false;
13004                         }
13005                     }
13006             }
13007         }
13008         
13009         if(MS0->S4.hensuFlag){
13010         
13011             if(MS0->S4.teisuFlag){
13012                 if(MS0->S4.hensuType == 0){
13013                     if([Hensuu[MS0->S4.hensu1] intValue] == MS0->S4.teisuValue){
13014                         
13015                     }else{
13016                         trueFlag = false;
13017                     }
13018                 }else if(MS0->S4.hensuType == 1){
13019                     if([Hensuu[MS0->S4.hensu1] intValue] >= MS0->S4.teisuValue){
13020                         
13021                     }else{
13022                         trueFlag = false;
13023                     }
13024                 }else if(MS0->S4.hensuType == 2){
13025                     if([Hensuu[MS0->S4.hensu1] intValue] <= MS0->S4.teisuValue){
13026                         
13027                     }else{
13028                         trueFlag = false;
13029                     }
13030                 }else if(MS0->S4.hensuType == 3){
13031                     if([Hensuu[MS0->S4.hensu1] intValue] > MS0->S4.teisuValue){
13032                         
13033                     }else{
13034                         trueFlag = false;
13035                     }
13036                 }else if(MS0->S4.hensuType == 4){
13037                     if([Hensuu[MS0->S4.hensu1] intValue] < MS0->S4.teisuValue){
13038                         
13039                     }else{
13040                         trueFlag = false;
13041                     }
13042                 }else if(MS0->S4.hensuType == 5){
13043                     if([Hensuu[MS0->S4.hensu1] intValue] != MS0->S4.teisuValue){
13044                         
13045                     }else{
13046                         trueFlag = false;
13047                     }
13048                 }
13049             
13050             }if(MS0->S4.hensu2flag){
13051                 if(MS0->S4.hensuType == 0){
13052                     if([Hensuu[MS0->S4.hensu1] isEqualToString:Hensuu[MS0->S4.hensu2]]){
13053                         
13054                     }else{
13055                         trueFlag = false;
13056                     }
13057                 }else if(MS0->S4.hensuType == 1){
13058                     if([Hensuu[MS0->S4.hensu1] intValue] >= [Hensuu[MS0->S4.hensu2] intValue]){
13059                         
13060                     }else{
13061                         trueFlag = false;
13062                     }
13063                 }else if(MS0->S4.hensuType == 2){
13064                     if([Hensuu[MS0->S4.hensu1] intValue] <= [Hensuu[MS0->S4.hensu2] intValue]){
13065                         
13066                     }else{
13067                         trueFlag = false;
13068                     }
13069                 }else if(MS0->S4.hensuType == 3){
13070                     if([Hensuu[MS0->S4.hensu1] intValue] > [Hensuu[MS0->S4.hensu2] intValue]){
13071                         
13072                     }else{
13073                         trueFlag = false;
13074                     }
13075                 }else if(MS0->S4.hensuType == 4){
13076                     if([Hensuu[MS0->S4.hensu1] intValue] < [Hensuu[MS0->S4.hensu2] intValue]){
13077                         
13078                     }else{
13079                         trueFlag = false;
13080                     }
13081                 }else if(MS0->S4.hensuType == 5){
13082                     if(![Hensuu[MS0->S4.hensu1] isEqualToString:Hensuu[MS0->S4.hensu2]]){
13083                         
13084                     }else{
13085                         trueFlag = false;
13086                     }
13087                 }
13088             }
13089             
13090         }
13091         if(MS0->S4.timerFlag){
13092         
13093             if(MS0->S4.timerType == 0){
13094                 if(MS0->S4.timerMin <= cntTimerMin){
13095                 
13096                 }else if(MS0->S4.timerSec <= cntTimerSec && MS0->S4.timerMin <= cntTimerMin){
13097                 
13098                 }else{
13099                     trueFlag = false;
13100                 }
13101             
13102             
13103             
13104             }else{
13105                 if(MS0->S4.timerMin >= cntTimerMin){
13106                     
13107                 }else if(MS0->S4.timerSec >= cntTimerSec && MS0->S4.timerMin >= cntTimerMin){
13108                     
13109                 }else{
13110                     trueFlag = false;
13111                 }
13112             
13113             }
13114         }
13115         
13116
13117         
13118         if(MS0->S4.unitNumFlag){
13119             
13120             
13121             int Unum = 0;
13122             U = UTop;;
13123             while (U) {
13124                 Unum++;
13125                 U = U->next;
13126             }U = UTop;
13127             
13128             int objeSCSunitCnt = 0;
13129             
13130             if(MS0->S4.objeFlag){
13131                 
13132                 UNIT2 *objeT = MS0->S4.obje;
13133                 
13134                 while (MS0->S4.obje) {
13135                     
13136                     
13137                     
13138                     U = UTop;
13139                     static bool okflag = true;
13140                     while(U){
13141                         for (int i = 0;i < 1002;i++) {
13142                             for (int k = 0;k < 1002;k++) {
13143                                 objeR[i][k] = 0;
13144                             }
13145                         }
13146                         
13147                         U2 = UTop;
13148                         while(U2){
13149                             if(U2->ix == MS0->S4.obje->x && U2->iy == MS0->S4.obje->y){
13150                                 break;
13151                             }
13152                             U2 = U2->next;
13153                         }
13154                         
13155                         if(!U2){
13156                             U2 = UTop;
13157                             break;
13158                         }
13159                         
13160                         [self checkPlaceHani:MS0->S4.objeRange+1 tX:U2->y tY:U2->x aMap:objeR u:U scsCnt:&objeSCSunitCnt];
13161                         
13162                         int Cnum = 0;
13163                         
13164                         for(int bx=1;bx<=chipWidth;bx++){
13165                             for(int by=1;by<=chipHeight;by++){
13166                                 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
13167                                     
13168                                     if(objeR[U->x][U->y] > 0){
13169                                         Cnum++;
13170                                         if(Unum < Cnum) goto omfgUnitOver2;
13171                                         
13172                                         
13173                                         
13174                                         
13175                                         
13176                                         if(UP)
13177                                         {
13178                                             if(!UPT){
13179                                                 UPT = UP;
13180                                             }
13181                                             
13182                                             UP = UPT;
13183                                             while (UP) {
13184                                                 if(UP->x == U->x && UP->y == U->y){
13185                                                     
13186                                                     break;
13187                                                 }else{
13188                                                     okflag = true;
13189                                                 }
13190                                                 
13191                                                 UP = UP->next;
13192                                             }
13193                                             
13194                                         }
13195                                         UP = UPT;
13196                                         
13197                                         if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13198                                         else if(UP){
13199                                             while(UP->next) UP = UP->next;
13200                                         }
13201                                         if(okflag){
13202                                             UP->x = U->x;
13203                                             UP->y = U->y;
13204                                             UP->next = calloc(1, sizeof(UNITPOINT));
13205                                             okflag = false;
13206                                             objeSCSunitCnt++;
13207                                         }
13208                                     }
13209                                     
13210                                 }
13211                             }
13212                         }
13213                         
13214                     omfgUnitOver2:
13215                         UP = NULL;
13216                         UPT = NULL;
13217                         
13218                         //NSLog(@"%@, %d, %d", U->C.name, objeSCSunitCnt, objeR[0][0]);
13219                         
13220                         U = U->next;
13221                     }U = UTop;
13222                     okflag = true;
13223                     MS0->S4.obje = MS0->S4.obje->next;
13224                 }
13225                 MS0->S4.obje = objeT;
13226             }
13227             
13228             /*
13229             if(MS0->S4.buildFlag){
13230                 if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
13231                 
13232                 }
13233                 
13234                 if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
13235                    BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
13236                    Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
13237                 
13238                 }
13239             }
13240             */
13241             
13242             int team0num = 0;
13243             int team1num = 0;
13244             int team2num = 0;
13245             if(MS0->S4.team == 0){
13246                 if(!MS0->S4.objeFlag && !MS0->S4.placeFlag){
13247                 U = UTop;
13248                 while (U) {
13249                     if(U->team == 0 && !U->dead)
13250                         team0num++;
13251                     U = U->next;
13252                 }U = UTop;
13253                 }
13254                 if(MS0->S4.unitType == 0){
13255                     if(MS0->S4.objeFlag || MS0->S4.placeFlag) team0num = MS0->S4.unitNum;
13256                     
13257                     if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == objeSCSunitCnt)){
13258                         
13259                     }else if((MS0->S4.unitNum == team0num) && !MS0->S4.objeFlag){
13260                         
13261                     }else{
13262                         trueFlag = false;
13263                     }
13264                 }else if(MS0->S4.unitType == 1){
13265                     if(MS0->S4.objeFlag || MS0->S4.placeFlag) team0num = 65000;
13266                     
13267                     if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= objeSCSunitCnt)){
13268                         
13269                     }else if((MS0->S4.unitNum <= team0num) && !MS0->S4.objeFlag){
13270                         
13271                     }else{
13272                         trueFlag = false;
13273                     }
13274                 }else if(MS0->S4.unitType == 2){
13275                     if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= objeSCSunitCnt)){
13276                         
13277                     }else if((MS0->S4.unitNum >= team0num) && !MS0->S4.objeFlag){
13278                         
13279                     }else{
13280                         trueFlag = false;
13281                     }
13282                 }
13283
13284             
13285             }else if(MS0->S4.team == 1){
13286                 if(!MS0->S4.objeFlag && !MS0->S4.placeFlag){
13287                 U = UTop;
13288                 while (U) {
13289                     if(U->team == 1 && !U->dead)
13290                         team1num++;
13291                     U = U->next;
13292                 }U = UTop;
13293                 }
13294                 if(MS0->S4.unitType == 0){
13295                     if(MS0->S4.objeFlag || MS0->S4.placeFlag) team1num = MS0->S4.unitNum;
13296                     
13297                     if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum == objeSCSunitCnt)){
13298                         
13299                     }else if((MS0->S4.unitNum == team1num) && !MS0->S4.objeFlag){
13300                         
13301                     }else{
13302                         trueFlag = false;
13303                     }
13304                 }else if(MS0->S4.unitType == 1){
13305                     if(MS0->S4.objeFlag || MS0->S4.placeFlag) team1num = 65000;
13306                     if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= objeSCSunitCnt)){
13307                         
13308                     }else if((MS0->S4.unitNum <= team1num) && !MS0->S4.objeFlag){
13309                         
13310                     }else{
13311                         trueFlag = false;
13312                     }
13313                 }else if(MS0->S4.unitType == 2){
13314                     
13315                     if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= objeSCSunitCnt)){
13316                         
13317                     }else if((MS0->S4.unitNum >= team1num) && !MS0->S4.objeFlag){
13318                         
13319                     }else{
13320                         trueFlag = false;
13321                     }
13322                 }
13323             }else if(MS0->S4.team == 2){
13324                 if(!MS0->S4.objeFlag && !MS0->S4.placeFlag){
13325                 U = UTop;
13326                 while (U) {
13327                     if(U->team == 2 && !U->dead)
13328                         team2num++;
13329                     U = U->next;
13330                 }U = UTop;
13331                 }
13332                 if(MS0->S4.unitType == 0){
13333                     if(MS0->S4.objeFlag || MS0->S4.placeFlag) team2num = MS0->S4.unitNum;
13334                     
13335                     if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == objeSCSunitCnt)){
13336                         
13337                     }else if((MS0->S4.unitNum == team2num) && !MS0->S4.objeFlag){
13338                         
13339                     }else{
13340                         trueFlag = false;
13341                     }
13342                 }else if(MS0->S4.unitType == 1){
13343                     if(MS0->S4.objeFlag || MS0->S4.placeFlag) team2num = 65000;
13344                     
13345                     if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= objeSCSunitCnt)){
13346                         
13347                     }else if((MS0->S4.unitNum <= team2num) && !MS0->S4.objeFlag){
13348                         
13349                     }else{
13350                         trueFlag = false;
13351                     }
13352                 }else if(MS0->S4.unitType == 2){
13353                     if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= objeSCSunitCnt)){
13354                         
13355                     }else if((MS0->S4.unitNum >= team2num) && !MS0->S4.objeFlag){
13356                         
13357                     }else{
13358                         trueFlag = false;
13359                     }
13360                 }
13361             }
13362         
13363         }
13364         
13365     
13366
13367         if(MS0->S4.unitTypeFlag && MS0->S4.unitNumFlag){
13368             UNIT2 *sjt = MS0->S4.subj;
13369             UNIT *chosen = NULL;
13370             UNIT *chosenT = NULL;
13371             int cntUnit = 0;
13372             bool lmao = false;
13373             while(MS0->S4.subj){
13374                 U = UTop;
13375                 while(U){
13376                     if(MS0->S4.subj->x == U->ix && MS0->S4.subj->y == U->iy && U->iz == 1){
13377                         if(chosen){
13378                             chosen->next = calloc(1, sizeof(UNIT));
13379                             if(!lmao){
13380                                 chosenT = chosen;
13381                                 lmao = true;
13382                             }
13383                             chosen = chosen->next;
13384                         }
13385                         if(!chosen){
13386                             chosen = calloc(1, sizeof(UNIT));
13387                         }
13388                         chosen->x = U->x;
13389                         chosen->y = U->y;
13390                         chosen->C.name = U->C.name;
13391                         
13392                         if(!U->dead)
13393                             cntUnit++;
13394                     }
13395                     U = U->next;
13396                 }U = UTop;
13397                 if(!lmao){
13398                     chosenT = chosen;
13399                     lmao = true;
13400                 }
13401                 MS0->S4.subj = MS0->S4.subj->next;
13402             }MS0->S4.subj = sjt;
13403             chosen = chosenT;
13404
13405             int objeSCSunitCnt = 0;
13406             
13407             
13408             int Unum = 0;
13409             
13410             
13411             while (chosen) {
13412                 Unum++;
13413                 chosen = chosen->next;
13414             }chosen = chosenT;
13415             
13416             if(MS0->S4.unitTypeFlag && MS0->S4.objeFlag){
13417                 
13418                 UNIT2 *objeT = MS0->S4.obje;
13419                 
13420                 while (MS0->S4.obje) {
13421                     
13422                     
13423                     
13424                     chosen = chosenT;
13425                     static bool okflag = true;
13426                     while(chosen){
13427                         for (int i = 0;i < 1002;i++) {
13428                             for (int k = 0;k < 1002;k++) {
13429                                 objeR[i][k] = 0;
13430                             }
13431                         }
13432                         
13433                         U2 = UTop;
13434                         while(U2){
13435                             if(U2->ix == MS0->S4.obje->x && U2->iy == MS0->S4.obje->y){
13436                                 break;
13437                             }
13438                             U2 = U2->next;
13439                         }
13440                         
13441                         if(!U2){
13442                             U2 = UTop;
13443                             break;
13444                         }
13445                             
13446                         
13447                         [self checkPlaceHani:MS0->S4.objeRange+1 tX:U2->y tY:U2->x aMap:objeR u:chosen scsCnt:&objeSCSunitCnt];
13448                         
13449                         int Cnum = 0;
13450                         
13451                         for(int bx=1;bx<=chipWidth;bx++){
13452                             for(int by=1;by<=chipHeight;by++){
13453                                 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
13454                                     
13455                                     if(objeR[chosen->x][chosen->y] > 0){
13456                                         Cnum++;
13457                                         if(Unum < Cnum) goto omfgUnitOver3;
13458                                         
13459                                         
13460                                         
13461                                         
13462                                         
13463                                         if(UP)
13464                                         {
13465                                             if(!UPT){
13466                                                 UPT = UP;
13467                                             }
13468                                             
13469                                             UP = UPT;
13470                                             while (UP) {
13471                                                 if(UP->x == chosen->x && UP->y == chosen->y){
13472                                                     
13473                                                     break;
13474                                                 }else{
13475                                                     okflag = true;
13476                                                 }
13477                                                 
13478                                                 UP = UP->next;
13479                                             }
13480                                             
13481                                         }
13482                                         UP = UPT;
13483                                         
13484                                         if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13485                                         else if(UP){
13486                                             while(UP->next) UP = UP->next;
13487                                         }
13488                                         if(okflag){
13489                                             UP->x = chosen->x;
13490                                             UP->y = chosen->y;
13491                                             UP->next = calloc(1, sizeof(UNITPOINT));
13492                                             okflag = false;
13493                                             objeSCSunitCnt++;
13494                                         }
13495                                     }
13496                                     
13497                                 }
13498                             }
13499                         }
13500                         
13501                     omfgUnitOver3:
13502                         UP = NULL;
13503                         UPT = NULL;
13504                         
13505                         //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
13506                         
13507                         chosen = chosen->next;
13508                     }chosen = chosenT;
13509                     okflag = true;
13510                     MS0->S4.obje = MS0->S4.obje->next;
13511                 }
13512                 MS0->S4.obje = objeT;
13513             }else if(MS0->S4.objeFlag){
13514                 
13515                 UNIT2 *objeT = MS0->S4.obje;
13516                 
13517                 while (MS0->S4.obje) {
13518                     
13519                     
13520                     
13521                     U = UTop;
13522                     static bool okflag = true;
13523                     while(U){
13524                         if(U->team != MS0->S4.team){
13525                             U = U->next;
13526                             continue;
13527                         }
13528                         for (int i = 0;i < 1002;i++) {
13529                             for (int k = 0;k < 1002;k++) {
13530                                 objeR[i][k] = 0;
13531                             }
13532                         }
13533                         
13534                         U2 = UTop;
13535                         while(U2){
13536                             if(U2->ix == MS0->S4.obje->x && U2->iy == MS0->S4.obje->y){
13537                                 break;
13538                             }
13539                             U2 = U2->next;
13540                         }
13541                         
13542                         if(!U2){
13543                             U2 = UTop;
13544                             break;
13545                         }
13546                         
13547                         [self checkPlaceHani:MS0->S4.objeRange+1 tX:U2->y tY:U2->x aMap:objeR u:U scsCnt:&objeSCSunitCnt];
13548                         
13549                         int Cnum = 0;
13550                         
13551                         for(int bx=1;bx<=chipWidth;bx++){
13552                             for(int by=1;by<=chipHeight;by++){
13553                                 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
13554                                     
13555                                     if(objeR[chosen->x][chosen->y] > 0){
13556                                         Cnum++;
13557                                         if(Unum < Cnum) goto omfgUnitOver30;
13558                                         
13559                                         
13560                                         
13561                                         
13562                                         
13563                                         if(UP)
13564                                         {
13565                                             if(!UPT){
13566                                                 UPT = UP;
13567                                             }
13568                                             
13569                                             UP = UPT;
13570                                             while (UP) {
13571                                                 if(UP->x == chosen->x && UP->y == chosen->y){
13572                                                     
13573                                                     break;
13574                                                 }else{
13575                                                     okflag = true;
13576                                                 }
13577                                                 
13578                                                 UP = UP->next;
13579                                             }
13580                                             
13581                                         }
13582                                         UP = UPT;
13583                                         
13584                                         if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13585                                         else if(UP){
13586                                             while(UP->next) UP = UP->next;
13587                                         }
13588                                         if(okflag){
13589                                             UP->x = chosen->x;
13590                                             UP->y = chosen->y;
13591                                             UP->next = calloc(1, sizeof(UNITPOINT));
13592                                             okflag = false;
13593                                             objeSCSunitCnt++;
13594                                         }
13595                                     }
13596                                     
13597                                 }
13598                             }
13599                         }
13600                         
13601                     omfgUnitOver30:
13602                         UP = NULL;
13603                         UPT = NULL;
13604                         
13605                         //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
13606                         
13607                         chosen = chosen->next;
13608                     }chosen = chosenT;
13609                     okflag = true;
13610                     MS0->S4.obje = MS0->S4.obje->next;
13611                 }
13612                 MS0->S4.obje = objeT;
13613                 U = UTop;
13614             }
13615
13616             
13617             int team0num = 0;
13618             int team1num = 0;
13619             int team2num = 0;
13620             if(MS0->S4.team == 0){
13621                 if(!MS0->S4.unitTypeFlag){
13622                 U = UTop;
13623                 while (U) {
13624                     if(U->team == 0 && !U->dead)
13625                         team0num++;
13626                     U = U->next;
13627                 }U = UTop;
13628                 }
13629                 if(MS0->S4.unitType == 0){
13630                     if(MS0->S4.unitTypeFlag) team0num = MS0->S4.unitNum;
13631                     
13632                     if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == cntUnit)
13633                        && (MS0->S4.unitNum == objeSCSunitCnt)){
13634                         
13635                     }else if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == cntUnit) && !MS0->S4.objeFlag){
13636                     
13637                     }else{
13638                         trueFlag = false;
13639                     }
13640                 }else if(MS0->S4.unitType == 1){
13641                     if(MS0->S4.unitTypeFlag) team0num = 65000;
13642                     
13643                     if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= cntUnit)
13644                        && (MS0->S4.unitNum <= objeSCSunitCnt)){
13645                         
13646                     }else if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= cntUnit) && !MS0->S4.objeFlag){
13647                     
13648                     }else{
13649                         trueFlag = false;
13650                     }
13651                 }else if(MS0->S4.unitType == 2){
13652                     if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= cntUnit)
13653                        && (MS0->S4.unitNum >= objeSCSunitCnt)){
13654                         
13655                     }else if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= cntUnit) && !MS0->S4.objeFlag){
13656                     
13657                     }else{
13658                         trueFlag = false;
13659                     }
13660                 }
13661                 
13662                 
13663             }else if(MS0->S4.team == 1){
13664                 if(!MS0->S4.unitTypeFlag){
13665                 U = UTop;
13666                 while (U) {
13667                     if(U->team == 1 && !U->dead)
13668                         team1num++;
13669                     U = U->next;
13670                 }U = UTop;
13671                 }
13672                 if(MS0->S4.unitType == 0){
13673                     if(MS0->S4.unitTypeFlag) team1num = MS0->S4.unitNum;
13674                     
13675                     if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum == cntUnit)
13676                        && (MS0->S4.unitNum == objeSCSunitCnt)){
13677                         
13678                     }else if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum == cntUnit) && !MS0->S4.objeFlag){
13679                     
13680                     }else{
13681                         trueFlag = false;
13682                     }
13683                 }else if(MS0->S4.unitType == 1){
13684                     if(MS0->S4.unitTypeFlag) team1num = 65000;
13685                     
13686                     if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= cntUnit)
13687                        && (MS0->S4.unitNum <= objeSCSunitCnt)){
13688                         
13689                     }else if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= cntUnit) && !MS0->S4.objeFlag){
13690                     
13691                     }else{
13692                         trueFlag = false;
13693                     }
13694                 }else if(MS0->S4.unitType == 2){
13695                     if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= cntUnit)
13696                        && (MS0->S4.unitNum >= objeSCSunitCnt)){
13697                         
13698                     }else if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= cntUnit) && !MS0->S4.objeFlag){
13699                     
13700                     }else{
13701                         trueFlag = false;
13702                     }
13703                 }
13704             }else if(MS0->S4.team == 2){
13705                 if(!MS0->S4.unitTypeFlag){
13706                 U = UTop;
13707                 while (U) {
13708                     if(U->team == 2 && !U->dead)
13709                         team2num++;
13710                     U = U->next;
13711                 }U = UTop;
13712                 }
13713                 if(MS0->S4.unitType == 0){
13714                     if(MS0->S4.unitTypeFlag) team2num = MS0->S4.unitNum;
13715                     
13716                     if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == cntUnit)
13717                        && (MS0->S4.unitNum == objeSCSunitCnt)){
13718                         
13719                     }else if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == cntUnit) && !MS0->S4.objeFlag){
13720                     
13721                     }else{
13722                         trueFlag = false;
13723                     }
13724                 }else if(MS0->S4.unitType == 1){
13725                     if(MS0->S4.unitTypeFlag) team2num = 65000;
13726                     
13727                     if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= cntUnit)
13728                        && (MS0->S4.unitNum <= objeSCSunitCnt)){
13729                         
13730                     }else if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= cntUnit) && !MS0->S4.objeFlag){
13731                     
13732                     }else{
13733                         trueFlag = false;
13734                     }
13735                 }else if(MS0->S4.unitType == 2){
13736                     if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= cntUnit)
13737                        && (MS0->S4.unitNum >= objeSCSunitCnt)){
13738                         
13739                     }else if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= cntUnit) && !MS0->S4.objeFlag){
13740                     
13741                     }else{
13742                         trueFlag = false;
13743                     }
13744                 }
13745             }
13746         
13747         
13748         
13749         
13750         
13751         
13752         }
13753         
13754         
13755         
13756         
13757         if(MS0->S4.placeFlag && MS0->S4.unitNumFlag){
13758             int Unum = 0;
13759             U = UTop;;
13760             while (U) {
13761                 Unum++;
13762                 U = U->next;
13763             }U = UTop;
13764             
13765             
13766          
13767             UNIT2 *sjt = MS0->S4.subj;
13768             UNIT *chosen = NULL;
13769             UNIT *chosenT = NULL;
13770             int cntUnit = 0;
13771             bool lmao = false;
13772             if(MS0->S4.unitTypeFlag){
13773                 while(MS0->S4.subj){
13774                     U = UTop;
13775                     while(U){
13776                         if(MS0->S4.subj->x == U->ix && MS0->S4.subj->y == U->iy && U->iz == 1){
13777                             if(chosen){
13778                                 chosen->next = calloc(1, sizeof(UNIT));
13779                                 if(!lmao){
13780                                     chosenT = chosen;
13781                                     lmao = true;
13782                                 }
13783                                 chosen = chosen->next;
13784                             }
13785                             if(!chosen){
13786                                 chosen = calloc(1, sizeof(UNIT));
13787                             }
13788                             chosen->x = U->x;
13789                             chosen->y = U->y;
13790                             chosen->C.name = U->C.name;
13791                             
13792                             if(!U->dead)
13793                                 cntUnit++;
13794                         }
13795                         U = U->next;
13796                     }U = UTop;
13797                     if(!lmao){
13798                         chosenT = chosen;
13799                         lmao = true;
13800                     }
13801                     MS0->S4.subj = MS0->S4.subj->next;
13802                 }MS0->S4.subj = sjt;
13803                 chosen = chosenT;
13804                 
13805     
13806                 
13807                 Unum = 0;
13808                 while (chosen) {
13809                     Unum++;
13810                     chosen = chosen->next;
13811                 }chosen = chosenT;
13812                 
13813             }
13814             
13815             
13816                 PLACEMENT *wpt = MS0->S4.wayp;
13817                 int waypCnt = 0;
13818                 int waypSCScnt = 0;
13819                 bool waypSCS = false;
13820                 int waypSCSunitCnt = 0;
13821             
13822             
13823             if(!MS0->S4.unitTypeFlag){
13824         
13825             while (MS0->S4.wayp) {
13826                     waypCnt++;
13827                     
13828                     
13829                     
13830                     
13831                     if(MS0->S4.wayp->type == 0){
13832                     U = UTop;
13833                     while(U){
13834                         if(U->team != MS0->S4.team){
13835                             U = U->next;
13836                             continue;
13837                         }
13838                         if(MS0->S4.wayp->x == U->x && MS0->S4.wayp->y == U->y){
13839                             waypSCScnt++;
13840                             waypSCSunitCnt++;
13841                             break;
13842                         }
13843                         U = U->next;
13844                     }U = UTop;
13845                         
13846                     }else if(MS0->S4.wayp->type == 1){
13847                         U = UTop;
13848                         static bool okflag = true;
13849                         while(U){
13850                             if(U->team != MS0->S4.team){
13851                                 U = U->next;
13852                                 continue;
13853                             }
13854                             for (int i = 0;i < 1002;i++) {
13855                                 for (int k = 0;k < 1002;k++) {
13856                                     waypR[i][k] = 0;
13857                                 }
13858                             }
13859                             [self checkPlaceHani:MS0->S4.wayp->z+1 tX:MS0->S4.wayp->y tY:MS0->S4.wayp->x aMap:waypR u:U scsCnt:&waypSCSunitCnt];
13860                             
13861                             int Cnum = 0;
13862                             
13863                             for(int bx=1;bx<=chipWidth;bx++){
13864                                 for(int by=1;by<=chipHeight;by++){
13865                                     if(waypR[bx][by] != 999 && waypR[bx][by] > 0){
13866                                         
13867                                         if(waypR[U->x][U->y] > 0){
13868                                             Cnum++;
13869                                             if(Unum < Cnum) goto omfgUnitOver;
13870                                             
13871                                             
13872
13873                                             
13874                                             
13875                                             if(UP)
13876                                             {
13877                                                 if(!UPT){
13878                                                     UPT = UP;
13879                                                 }
13880                                                 
13881                                                 UP = UPT;
13882                                                 while (UP) {
13883                                                     if(UP->x == U->x && UP->y == U->y){
13884                                                         
13885                                                         break;
13886                                                     }else{
13887                                                         okflag = true;
13888                                                     }
13889                                                     
13890                                                     UP = UP->next;
13891                                                 }
13892                                             
13893                                             }
13894                                             UP = UPT;
13895                                             
13896                                             if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13897                                             else if(UP){
13898                                                 while(UP->next) UP = UP->next;
13899                                             }
13900                                             if(okflag){
13901                                                 UP->x = U->x;
13902                                                 UP->y = U->y;
13903                                                 UP->next = calloc(1, sizeof(UNITPOINT));
13904                                                 okflag = false;
13905                                                 waypSCSunitCnt++;
13906                                             }
13907                                         }
13908                                         
13909                                     }
13910                                 }
13911                             }
13912                             
13913                         omfgUnitOver:
13914                             UP = NULL;
13915                             UPT = NULL;
13916                    //         NSLog(@"%d", waypSCSunitCnt);
13917                             
13918                              U = U->next;
13919                         }U = UTop;
13920                         okflag = true;
13921                     
13922                     
13923                     
13924                     }else if(MS0->S4.wayp->type == 2){
13925                         U = UTop;
13926                         waypSCSunitCnt = 0;
13927                         static bool okflag = true;
13928                         while(U){
13929                             if(U->team != MS0->S4.team){
13930                                 U = U->next;
13931                                 continue;
13932                             }
13933                             if((MS0->S4.wayp->x <= U->x) && (MS0->S4.wayp->x2 >= U->x) &&
13934                                (MS0->S4.wayp->y <= U->y) && (MS0->S4.wayp->y2 >= U->y)){
13935                                 
13936                                 
13937                                 int Cnum = 0;
13938                                 
13939                                 if(1){
13940                                     Cnum++;
13941                                     if(Unum < Cnum) goto omfgUnitOver;
13942                                     
13943                                     
13944                                     
13945                                     
13946                                     
13947                                     if(UP)
13948                                     {
13949                                         if(!UPT){
13950                                             UPT = UP;
13951                                         }
13952                                         
13953                                         UP = UPT;
13954                                         while (UP) {
13955                                             if(UP->x == U->x && UP->y == U->y){
13956                                                 
13957                                                 break;
13958                                             }else{
13959                                                 okflag = true;
13960                                             }
13961                                             
13962                                             UP = UP->next;
13963                                         }
13964                                         
13965                                     }
13966                                     UP = UPT;
13967                                     
13968                                     if(!UP) UP = calloc(1, sizeof(UNITPOINT));
13969                                     else if(UP){
13970                                         while(UP->next) UP = UP->next;
13971                                     }
13972                                     if(okflag){
13973                                         UP->x = U->x;
13974                                         UP->y = U->y;
13975                                         UP->next = calloc(1, sizeof(UNITPOINT));
13976                                         okflag = false;
13977                                         waypSCScnt++;
13978                                         waypSCSunitCnt++;
13979                                     }
13980                                 }
13981                                 
13982                                 
13983                                 
13984                                 
13985                             }
13986                             U = U->next;
13987                         }U = UTop;
13988                         okflag = true;
13989                     }
13990                     
13991                     MS0->S4.wayp = MS0->S4.wayp->next;
13992                 }MS0->S4.wayp = wpt;
13993            // NSLog(@"%d", waypSCSunitCnt);
13994             
13995             if(waypSCScnt >= waypCnt)
13996                 waypSCS = true;
13997             
13998             }else if(MS0->S4.unitTypeFlag){
13999             
14000                 while (MS0->S4.wayp) {
14001                     waypCnt++;
14002                     
14003                     
14004                     
14005                     
14006                     if(MS0->S4.wayp->type == 0){
14007                         chosen = chosenT;
14008                         while(chosen){
14009                             if(MS0->S4.wayp->x == chosen->x && MS0->S4.wayp->y == chosen->y){
14010                                 waypSCScnt++;
14011                                 waypSCSunitCnt++;
14012                                 break;
14013                             }
14014                             chosen = chosen->next;
14015                         }chosen = chosenT;
14016                         
14017                     }else if(MS0->S4.wayp->type == 1){
14018                         chosen = chosenT;
14019                         static bool okflag = true;
14020                         while(chosen){
14021                             for (int i = 0;i < 1002;i++) {
14022                                 for (int k = 0;k < 1002;k++) {
14023                                     waypR[i][k] = 0;
14024                                 }
14025                             }
14026                             [self checkPlaceHani:MS0->S4.wayp->z+1 tX:MS0->S4.wayp->y tY:MS0->S4.wayp->x aMap:waypR u:chosen scsCnt:&waypSCSunitCnt];
14027                             
14028                             int Cnum = 0;
14029                             
14030                             for(int bx=1;bx<=chipWidth;bx++){
14031                                 for(int by=1;by<=chipHeight;by++){
14032                                     if(waypR[bx][by] != 999 && waypR[bx][by] > 0){
14033                                         
14034                                         if(waypR[chosen->x][chosen->y] > 0){
14035                                             Cnum++;
14036                                             if(Unum < Cnum) goto omfgUnitOver5;
14037                                             
14038                                             
14039                                             
14040                                             
14041                                             
14042                                             if(UP)
14043                                             {
14044                                                 if(!UPT){
14045                                                     UPT = UP;
14046                                                 }
14047                                                 
14048                                                 UP = UPT;
14049                                                 while (UP) {
14050                                                     if(UP->x == chosen->x && UP->y == chosen->y){
14051                                                         
14052                                                         break;
14053                                                     }else{
14054                                                         okflag = true;
14055                                                     }
14056                                                     
14057                                                     UP = UP->next;
14058                                                 }
14059                                                 
14060                                             }
14061                                             UP = UPT;
14062                                             
14063                                             if(!UP) UP = calloc(1, sizeof(UNITPOINT));
14064                                             else if(UP){
14065                                                 while(UP->next) UP = UP->next;
14066                                             }
14067                                             if(okflag){
14068                                                 UP->x = chosen->x;
14069                                                 UP->y = chosen->y;
14070                                                 UP->next = calloc(1, sizeof(UNITPOINT));
14071                                                 okflag = false;
14072                                                 waypSCSunitCnt++;
14073                                             }
14074                                         }
14075                                         
14076                                     }
14077                                 }
14078                             }
14079                             
14080                         omfgUnitOver5:
14081                             UP = NULL;
14082                             UPT = NULL;
14083                             
14084                           //           NSLog(@"%d", waypSCSunitCnt);
14085                             
14086                             chosen = chosen->next;
14087                         }chosen = chosenT;
14088                         okflag = true;
14089                         
14090                         
14091                         
14092                     }else if(MS0->S4.wayp->type == 2){
14093                         chosen = chosenT;
14094                         waypSCSunitCnt = 0;
14095                         static bool okflag = true;
14096                         while(chosen){
14097                             if((MS0->S4.wayp->x <= chosen->x) && (MS0->S4.wayp->x2 >= chosen->x) &&
14098                                (MS0->S4.wayp->y <= chosen->y) && (MS0->S4.wayp->y2 >= chosen->y)){
14099                                 
14100                                 
14101                                 int Cnum = 0;
14102                                 
14103                                 if(1){
14104                                     Cnum++;
14105                                     if(Unum < Cnum) goto omfgUnitOver;
14106                                     
14107                                     
14108                                     
14109                                     
14110                                     
14111                                     if(UP)
14112                                     {
14113                                         if(!UPT){
14114                                             UPT = UP;
14115                                         }
14116                                         
14117                                         UP = UPT;
14118                                         while (UP) {
14119                                             if(UP->x == chosen->x && UP->y == chosen->y){
14120                                                 
14121                                                 break;
14122                                             }else{
14123                                                 okflag = true;
14124                                             }
14125                                             
14126                                             UP = UP->next;
14127                                         }
14128                                         
14129                                     }
14130                                     UP = UPT;
14131                                     
14132                                     if(!UP) UP = calloc(1, sizeof(UNITPOINT));
14133                                     else if(UP){
14134                                         while(UP->next) UP = UP->next;
14135                                     }
14136                                     if(okflag){
14137                                         UP->x = chosen->x;
14138                                         UP->y = chosen->y;
14139                                         UP->next = calloc(1, sizeof(UNITPOINT));
14140                                         okflag = false;
14141                                         waypSCScnt++;
14142                                         waypSCSunitCnt++;
14143                                     }
14144                                 }
14145                                 
14146                                 
14147                                 
14148                                 
14149                             }
14150                             chosen = chosen->next;
14151                         }chosen = chosenT;
14152                         okflag = true;
14153                     }
14154                     
14155                     MS0->S4.wayp = MS0->S4.wayp->next;
14156                 }MS0->S4.wayp = wpt;
14157               //  NSLog(@"%d", waypSCSunitCnt);
14158                 
14159                 if(waypSCScnt >= waypCnt)
14160                     waypSCS = true;
14161             
14162             
14163             
14164             
14165             
14166             }
14167             
14168             int team0num = 0;
14169             int team1num = 0;
14170             int team2num = 0;
14171             if(MS0->S4.team == 0){
14172                 if(!MS0->S4.placeFlag){
14173                 U = UTop;
14174                 while (U) {
14175                     if(U->team == 0 && !U->dead)
14176                         team0num++;
14177                     U = U->next;
14178                 }U = UTop;
14179                 }
14180                 if(MS0->S4.unitType == 0){
14181                     if(MS0->S4.placeFlag) team0num = MS0->S4.unitNum;
14182                     
14183                     if((MS0->S4.unitNum == team0num) && (MS0->S4.unitNum == waypSCSunitCnt)){
14184                         
14185                     }else{
14186                         trueFlag = false;
14187                     }
14188                 }else if(MS0->S4.unitType == 1){
14189                     if(MS0->S4.placeFlag) team0num = 65000;
14190                     
14191                     if((MS0->S4.unitNum <= team0num) && (MS0->S4.unitNum <= waypSCSunitCnt)){
14192                         
14193                     }else{
14194                         trueFlag = false;
14195                     }
14196                 }else if(MS0->S4.unitType == 2){
14197                     if((MS0->S4.unitNum >= team0num) && (MS0->S4.unitNum >= waypSCSunitCnt)){
14198                         
14199                     }else{
14200                         trueFlag = false;
14201                     }
14202                 }
14203                 
14204                 
14205             }else if(MS0->S4.team == 1){
14206                 if(!MS0->S4.placeFlag){
14207                 U = UTop;
14208                 while (U) {
14209                     if(U->team == 1 && !U->dead)
14210                         team1num++;
14211                     U = U->next;
14212                 }U = UTop;
14213                 }
14214                 if(MS0->S4.unitType == 0){
14215                     if(MS0->S4.placeFlag) team1num = MS0->S4.unitNum;
14216                     
14217                     if((MS0->S4.unitNum == team1num) && (MS0->S4.unitNum = waypSCSunitCnt)){
14218                         
14219                     }else{
14220                         trueFlag = false;
14221                     }
14222                 }else if(MS0->S4.unitType == 1){
14223                     if(MS0->S4.placeFlag) team1num = 65000;
14224                     
14225                     if((MS0->S4.unitNum <= team1num) && (MS0->S4.unitNum <= waypSCSunitCnt)){
14226                         
14227                     }else{
14228                         trueFlag = false;
14229                     }
14230                 }else if(MS0->S4.unitType == 2){
14231                     if((MS0->S4.unitNum >= team1num) && (MS0->S4.unitNum >= waypSCSunitCnt)){
14232                         
14233                     }else{
14234                         trueFlag = false;
14235                     }
14236                 }
14237             }else if(MS0->S4.team == 2){
14238                 if(!MS0->S4.placeFlag){
14239                 U = UTop;
14240                 while (U) {
14241                     if(U->team == 2 && !U->dead)
14242                         team2num++;
14243                     U = U->next;
14244                 }U = UTop;
14245                 }
14246                 if(MS0->S4.unitType == 0){
14247                     if(MS0->S4.placeFlag) team2num = MS0->S4.unitNum;
14248                     
14249                     if((MS0->S4.unitNum == team2num) && (MS0->S4.unitNum == waypSCSunitCnt)){
14250                         
14251                     }else{
14252                         trueFlag = false;
14253                     }
14254                 }else if(MS0->S4.unitType == 1){
14255                     if(MS0->S4.placeFlag) team2num = 65000;
14256                     
14257                     if((MS0->S4.unitNum <= team2num) && (MS0->S4.unitNum <= waypSCSunitCnt)){
14258                         
14259                     }else{
14260                         trueFlag = false;
14261                     }
14262                 }else if(MS0->S4.unitType == 2){
14263                     if((MS0->S4.unitNum >= team2num) && (MS0->S4.unitNum >= waypSCSunitCnt)){
14264                         
14265                     }else{
14266                         trueFlag = false;
14267                     }
14268                 }
14269             }
14270             
14271         }
14272         
14273         
14274         if(MS0->S4.unitCMDflag){
14275             
14276             UNIT2 *sjt = MS0->S4.subj;
14277             UNIT *chosen = NULL;
14278             UNIT *chosenT = NULL;
14279             int cntUnit = 0;
14280             bool lmao = false;
14281             while(MS0->S4.subj){
14282                 U = UTop;
14283                 while(U){
14284                     if(MS0->S4.subj->x == U->ix && MS0->S4.subj->y == U->iy && U->iz == 1){
14285                         if(chosen){
14286                             chosen->next = calloc(1, sizeof(UNIT));
14287                             if(!lmao){
14288                                 chosenT = chosen;
14289                                 lmao = true;
14290                             }
14291                             chosen = chosen->next;
14292                         }
14293                         if(!chosen){
14294                             chosen = calloc(1, sizeof(UNIT));
14295                         }
14296                         chosen->x = U->x;
14297                         chosen->y = U->y;
14298                         chosen->C.name = U->C.name;
14299                         
14300                         if(!U->dead)
14301                             cntUnit++;
14302                     }
14303                     U = U->next;
14304                 }U = UTop;
14305                 if(!lmao){
14306                     chosenT = chosen;
14307                     lmao = true;
14308                 }
14309                 MS0->S4.subj = MS0->S4.subj->next;
14310             }MS0->S4.subj = sjt;
14311             chosen = chosenT;
14312             
14313             int objeSCSunitCnt = 0;
14314             
14315             
14316             int Unum = 0;
14317             
14318             
14319             while (chosen) {
14320                 Unum++;
14321                 chosen = chosen->next;
14322             }chosen = chosenT;
14323             
14324             if(MS0->S4.unitTypeFlag && MS0->S4.objeFlag){
14325                 
14326                 UNIT2 *objeT = MS0->S4.obje;
14327                 
14328                 while (MS0->S4.obje) {
14329                     
14330                     
14331                     
14332                     chosen = chosenT;
14333                     static bool okflag = true;
14334                     while(chosen){
14335                         for (int i = 0;i < 1002;i++) {
14336                             for (int k = 0;k < 1002;k++) {
14337                                 objeR[i][k] = 0;
14338                             }
14339                         }
14340                         
14341                         U2 = UTop;
14342                         while(U2){
14343                             if(U2->ix == MS0->S4.obje->x && U2->iy == MS0->S4.obje->y){
14344                                 break;
14345                             }
14346                             U2 = U2->next;
14347                         }
14348                         
14349                         if(!U2){
14350                             U2 = UTop;
14351                             break;
14352                         }
14353                         
14354                         [self checkPlaceHani:MS0->S4.objeRange+1 tX:U2->y tY:U2->x aMap:objeR u:chosen scsCnt:&objeSCSunitCnt];
14355                         
14356                         int Cnum = 0;
14357                         
14358                         for(int bx=1;bx<=chipWidth;bx++){
14359                             for(int by=1;by<=chipHeight;by++){
14360                                 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
14361                                     
14362                                     if(objeR[chosen->x][chosen->y] > 0){
14363                                         Cnum++;
14364                                         if(Unum < Cnum) goto omfgUnitOver31;
14365                                         
14366                                         
14367                                         
14368                                         
14369                                         
14370                                         if(UP)
14371                                         {
14372                                             if(!UPT){
14373                                                 UPT = UP;
14374                                             }
14375                                             
14376                                             UP = UPT;
14377                                             while (UP) {
14378                                                 if(UP->x == chosen->x && UP->y == chosen->y){
14379                                                     
14380                                                     break;
14381                                                 }else{
14382                                                     okflag = true;
14383                                                 }
14384                                                 
14385                                                 UP = UP->next;
14386                                             }
14387                                             
14388                                         }
14389                                         UP = UPT;
14390                                         
14391                                         if(!UP) UP = calloc(1, sizeof(UNITPOINT));
14392                                         else if(UP){
14393                                             while(UP->next) UP = UP->next;
14394                                         }
14395                                         if(okflag){
14396                                             UP->x = chosen->x;
14397                                             UP->y = chosen->y;
14398                                             UP->next = calloc(1, sizeof(UNITPOINT));
14399                                             okflag = false;
14400                                             objeSCSunitCnt++;
14401                                         }
14402                                     }
14403                                     
14404                                 }
14405                             }
14406                         }
14407                         
14408                     omfgUnitOver31:
14409                         UP = NULL;
14410                         UPT = NULL;
14411                         
14412                         //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
14413                         
14414                         chosen = chosen->next;
14415                     }chosen = chosenT;
14416                     okflag = true;
14417                     MS0->S4.obje = MS0->S4.obje->next;
14418                 }
14419                 MS0->S4.obje = objeT;
14420             }else if(MS0->S4.objeFlag){
14421                 
14422                 UNIT2 *objeT = MS0->S4.obje;
14423                 
14424                 while (MS0->S4.obje) {
14425                     
14426                     
14427                     
14428                     U = UTop;
14429                     static bool okflag = true;
14430                     while(U){
14431                         if(U->team != MS0->S4.team){
14432                             U = U->next;
14433                             continue;
14434                         }
14435                         for (int i = 0;i < 1002;i++) {
14436                             for (int k = 0;k < 1002;k++) {
14437                                 objeR[i][k] = 0;
14438                             }
14439                         }
14440                         
14441                         U2 = UTop;
14442                         while(U2){
14443                             if(U2->ix == MS0->S4.obje->x && U2->iy == MS0->S4.obje->y){
14444                                 break;
14445                             }
14446                             U2 = U2->next;
14447                         }
14448                         
14449                         if(!U2){
14450                             U2 = UTop;
14451                             break;
14452                         }
14453                         
14454                         [self checkPlaceHani:MS0->S4.objeRange+1 tX:U2->y tY:U2->x aMap:objeR u:U scsCnt:&objeSCSunitCnt];
14455                         
14456                         int Cnum = 0;
14457                         
14458                         for(int bx=1;bx<=chipWidth;bx++){
14459                             for(int by=1;by<=chipHeight;by++){
14460                                 if(objeR[bx][by] != 999 && objeR[bx][by] > 0){
14461                                     
14462                                     if(objeR[chosen->x][chosen->y] > 0){
14463                                         Cnum++;
14464                                         if(Unum < Cnum) goto omfgUnitOver32;
14465                                         
14466                                         
14467                                         
14468                                         
14469                                         
14470                                         if(UP)
14471                                         {
14472                                             if(!UPT){
14473                                                 UPT = UP;
14474                                             }
14475                                             
14476                                             UP = UPT;
14477                                             while (UP) {
14478                                                 if(UP->x == chosen->x && UP->y == chosen->y){
14479                                                     
14480                                                     break;
14481                                                 }else{
14482                                                     okflag = true;
14483                                                 }
14484                                                 
14485                                                 UP = UP->next;
14486                                             }
14487                                             
14488                                         }
14489                                         UP = UPT;
14490                                         
14491                                         if(!UP) UP = calloc(1, sizeof(UNITPOINT));
14492                                         else if(UP){
14493                                             while(UP->next) UP = UP->next;
14494                                         }
14495                                         if(okflag){
14496                                             UP->x = chosen->x;
14497                                             UP->y = chosen->y;
14498                                             UP->next = calloc(1, sizeof(UNITPOINT));
14499                                             okflag = false;
14500                                             objeSCSunitCnt++;
14501                                         }
14502                                     }
14503                                     
14504                                 }
14505                             }
14506                         }
14507                         
14508                     omfgUnitOver32:
14509                         UP = NULL;
14510                         UPT = NULL;
14511                         
14512                         //NSLog(@"%@, %d, %d", chosen->C.name, objeSCSunitCnt, objeR[0][0]);
14513                         
14514                         chosen = chosen->next;
14515                     }chosen = chosenT;
14516                     okflag = true;
14517                     MS0->S4.obje = MS0->S4.obje->next;
14518                 }
14519                 MS0->S4.obje = objeT;
14520                 U = UTop;
14521             }
14522
14523             if(MS0->S4.team == 0){
14524                 
14525                 if(!MS0->S4.subj && !MS0->S4.obje && !MS0->S4.build){
14526                 
14527                 if(MS0->S4.unitCMD == 0){
14528                     if(pushStanbyFlag){
14529                         
14530                     }else{
14531                         trueFlag = false;
14532                     }
14533                 }else if(MS0->S4.unitCMD == 1){
14534                     if(battleSetUp){
14535                         battleSetUpIgnore = true;
14536                     }else{
14537                         trueFlag = false;
14538                     }
14539                 }else if(MS0->S4.unitCMD == 2){
14540                     
14541                 }
14542                 
14543                 
14544                 }else if(!MS0->S4.subj && !MS0->S4.obje && MS0->S4.build && Uselected){
14545                     
14546                     
14547                     
14548                     BUILD2 *bldt = MS0->S4.build;
14549                     
14550                     while(MS0->S4.build){
14551                     if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14552                         
14553                         if(MS0->S4.unitCMD == 0){
14554                             if(pushStanbyFlag){
14555                                 
14556                             }else{
14557                                 trueFlag = false;
14558                             }
14559                         }else if(MS0->S4.unitCMD == 1){
14560                             if(battleSetUp){
14561                                 battleSetUpIgnore = true;
14562                             }else{
14563                                 trueFlag = false;
14564                                 
14565                             }
14566                             
14567                         }else if(MS0->S4.unitCMD == 2){
14568                             
14569                             
14570                         }
14571                     }else{
14572                         trueFlag = false;
14573                     }
14574                         MS0->S4.build = MS0->S4.build->next;
14575                     }MS0->S4.build = bldt;
14576                     
14577                     
14578                 }else if(MS0->S4.subj && !MS0->S4.obje && Uselected){
14579                     
14580                     
14581                     UNIT2 *sbjt = MS0->S4.subj;
14582                     
14583                     while(MS0->S4.subj){
14584                     if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1){
14585                     
14586                     if(MS0->S4.unitCMD == 0){
14587                         if(pushStanbyFlag){
14588                             
14589                         }else{
14590                             trueFlag = false;
14591                         }
14592                     }else if(MS0->S4.unitCMD == 1){
14593                         if(battleSetUp){
14594                             battleSetUpIgnore = true;
14595                         }else{
14596                             trueFlag = false;
14597                     
14598                         }
14599                    
14600                     }else if(MS0->S4.unitCMD == 2){
14601                         
14602                     
14603                     }
14604                     }else{
14605                         trueFlag = false;
14606                     }
14607                     
14608                         MS0->S4.subj = MS0->S4.subj->next;
14609                     }MS0->S4.subj = sbjt;
14610                 
14611                     
14612                 }
14613                 else if(MS0->S4.subj && MS0->S4.obje && Uselected){
14614                     
14615                     UNIT2 *sbjt = MS0->S4.subj;
14616                     UNIT2 *objt = MS0->S4.obje;
14617                     
14618                     while(MS0->S4.subj){
14619                         while(MS0->S4.obje){
14620                     if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14621                        Utarget->ix == MS0->S4.obje->x && Utarget->iy == MS0->S4.obje->y && Utarget->iz == 1){
14622                     
14623                     if(MS0->S4.unitCMD == 0){
14624                         
14625                         if(MS0->S4.unitType == 0){
14626                         if(objeSCSunitCnt == MS0->S4.unitNum){
14627                         
14628                             if(pushStanbyFlag){
14629                                 
14630                             }else{
14631                                 trueFlag = false;
14632                             }
14633                         }
14634                         
14635                         }else if(MS0->S4.unitType == 1){
14636                             if(objeSCSunitCnt >= MS0->S4.unitNum){
14637                                 
14638                                 if(pushStanbyFlag){
14639                                     
14640                                 }else{
14641                                     trueFlag = false;
14642                                 }
14643                             }
14644                         
14645                         }else if(MS0->S4.unitType == 2){
14646                             if(objeSCSunitCnt <= MS0->S4.unitNum){
14647                                 
14648                                 if(pushStanbyFlag){
14649                                     
14650                                 }else{
14651                                     trueFlag = false;
14652                                 }
14653                             }
14654                         }
14655                         
14656                     }else if(MS0->S4.unitCMD == 1){
14657
14658                         if(MS0->S4.unitType == 0){
14659                             if(objeSCSunitCnt == MS0->S4.unitNum){
14660                                 
14661                                 if(battleSetUp){
14662                                     battleSetUpIgnore = true;
14663                                 }else{
14664                                     trueFlag = false;
14665                                 }
14666                             }
14667                             
14668                         }else if(MS0->S4.unitType == 1){
14669                             if(objeSCSunitCnt >= MS0->S4.unitNum){
14670                                 
14671                                 if(battleSetUp){
14672                                     battleSetUpIgnore = true;
14673                                 }else{
14674                                     trueFlag = false;
14675                                 }
14676                             }
14677                             
14678                         }else if(MS0->S4.unitType == 2){
14679                             if(objeSCSunitCnt <= MS0->S4.unitNum){
14680                                 
14681                                 if(battleSetUp){
14682                                     battleSetUpIgnore = true;
14683                                 }else{
14684                                     trueFlag = false;
14685                                 }
14686                             }
14687                         }
14688                         
14689                     }else if(MS0->S4.unitCMD == 2 && objeSCSunitCnt > 0){
14690                         
14691                         
14692                     }
14693                     
14694                     
14695                     
14696                     
14697                     
14698                     }else{
14699                         trueFlag = false;
14700                     }
14701                         MS0->S4.obje = MS0->S4.obje->next;
14702                         }MS0->S4.obje = objt;
14703                         MS0->S4.subj = MS0->S4.subj->next;
14704                     }MS0->S4.subj = sbjt;
14705                     
14706                 }if(MS0->S4.subj && MS0->S4.build && Uselected){
14707                 
14708                     
14709                     UNIT2 *sbjt = MS0->S4.subj;
14710                     BUILD2 *bldt = MS0->S4.build;
14711                     
14712                     while(MS0->S4.subj){
14713                         while(MS0->S4.build){
14714                     if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14715                        BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
14716                        Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14717                         
14718                         if(MS0->S4.unitCMD == 0){
14719                             if(pushStanbyFlag){
14720                                 
14721                             }else{
14722                                 trueFlag = false;
14723                             }
14724                         }else if(MS0->S4.unitCMD == 1){
14725                             if(battleSetUp){
14726                                 battleSetUpIgnore = true;
14727                             }else{
14728                                 trueFlag = false;
14729                                 
14730                             }
14731                             
14732                         }else if(MS0->S4.unitCMD == 2){
14733                             
14734                             
14735                         }
14736                 
14737                 
14738                     }else{
14739                         trueFlag = false;
14740                     }
14741                         MS0->S4.build = MS0->S4.build->next;
14742                         }MS0->S4.build = bldt;
14743
14744                         MS0->S4.subj = MS0->S4.subj->next;
14745                 }
14746                    MS0->S4.subj = sbjt;
14747                 
14748                 }
14749             }else if(MS0->S4.team == 1){
14750                 if(!MS0->S4.subj && !MS0->S4.obje && !MS0->S4.build){
14751                     
14752                     if(MS0->S4.unitCMD == 0){
14753                         if(pushStanbyFlag){
14754                             
14755                         }else{
14756                             trueFlag = false;
14757                         }
14758                     }else if(MS0->S4.unitCMD == 1){
14759                         if(battleSetUp){
14760                             battleSetUpIgnore = true;
14761                         }else{
14762                             trueFlag = false;
14763                         }
14764                     }else if(MS0->S4.unitCMD == 2){
14765                         
14766                     }
14767                     
14768                     
14769                 }else if(!MS0->S4.subj && !MS0->S4.obje && MS0->S4.build && Uselected){
14770                     
14771                     
14772                     
14773                     BUILD2 *bldt = MS0->S4.build;
14774                     while(MS0->S4.build){
14775                     if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14776                         
14777                         if(MS0->S4.unitCMD == 0){
14778                             if(pushStanbyFlag){
14779                                 
14780                             }else{
14781                                 trueFlag = false;
14782                             }
14783                         }else if(MS0->S4.unitCMD == 1){
14784                             if(battleSetUp){
14785                                 battleSetUpIgnore = true;
14786                             }else{
14787                                 trueFlag = false;
14788                                 
14789                             }
14790                             
14791                         }else if(MS0->S4.unitCMD == 2){
14792                             
14793                             
14794                         }
14795                     }else{
14796                         trueFlag = false;
14797                     }
14798                         MS0->S4.build = MS0->S4.build->next;
14799                     }MS0->S4.build = bldt;
14800                     
14801                     
14802                 }else if(MS0->S4.subj && !MS0->S4.obje && Uselected){
14803                     
14804                     
14805                     
14806                     UNIT2 *sbjt = MS0->S4.subj;
14807                     
14808                     while(MS0->S4.subj){
14809                     if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1){
14810                         
14811                         if(MS0->S4.unitCMD == 0){
14812                             if(pushStanbyFlag){
14813                                 
14814                             }else{
14815                                 trueFlag = false;
14816                             }
14817                         }else if(MS0->S4.unitCMD == 1){
14818                             if(battleSetUp){
14819                                 battleSetUpIgnore = true;
14820                             }else{
14821                                 trueFlag = false;
14822                                 
14823                             }
14824                             
14825                         }else if(MS0->S4.unitCMD == 2){
14826                             
14827                             
14828                         }
14829                     }else{
14830                         trueFlag = false;
14831                     }
14832                     
14833                         MS0->S4.subj = MS0->S4.subj->next;
14834                     }MS0->S4.subj = sbjt;
14835                     
14836                 }else if(MS0->S4.subj && MS0->S4.obje && Uselected){
14837                     
14838                     UNIT2 *sbjt = MS0->S4.subj;
14839                     UNIT2 *objt = MS0->S4.obje;
14840                     
14841                     while(MS0->S4.subj){
14842                         while(MS0->S4.obje){
14843                     if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14844                        Utarget->ix == MS0->S4.obje->x && Utarget->iy == MS0->S4.obje->y && Utarget->iz == 1){
14845                         
14846                         if(MS0->S4.unitCMD == 0){
14847                             
14848                             if(MS0->S4.unitType == 0){
14849                                 if(objeSCSunitCnt == MS0->S4.unitNum){
14850                                     
14851                                     if(pushStanbyFlag){
14852                                         
14853                                     }else{
14854                                         trueFlag = false;
14855                                     }
14856                                 }
14857                                 
14858                             }else if(MS0->S4.unitType == 1){
14859                                 if(objeSCSunitCnt >= MS0->S4.unitNum){
14860                                     
14861                                     if(pushStanbyFlag){
14862                                         
14863                                     }else{
14864                                         trueFlag = false;
14865                                     }
14866                                 }
14867                                 
14868                             }else if(MS0->S4.unitType == 2){
14869                                 if(objeSCSunitCnt <= MS0->S4.unitNum){
14870                                     
14871                                     if(pushStanbyFlag){
14872                                         
14873                                     }else{
14874                                         trueFlag = false;
14875                                     }
14876                                 }
14877                             }
14878                             
14879                         }else if(MS0->S4.unitCMD == 1){
14880                             
14881                             if(MS0->S4.unitType == 0){
14882                                 if(objeSCSunitCnt == MS0->S4.unitNum){
14883                                     
14884                                     if(battleSetUp){
14885                                         battleSetUpIgnore = true;
14886                                     }else{
14887                                         trueFlag = false;
14888                                     }
14889                                 }
14890                                 
14891                             }else if(MS0->S4.unitType == 1){
14892                                 if(objeSCSunitCnt >= MS0->S4.unitNum){
14893                                     
14894                                     if(battleSetUp){
14895                                         battleSetUpIgnore = true;
14896                                     }else{
14897                                         trueFlag = false;
14898                                     }
14899                                 }
14900                                 
14901                             }else if(MS0->S4.unitType == 2){
14902                                 if(objeSCSunitCnt <= MS0->S4.unitNum){
14903                                     
14904                                     if(battleSetUp){
14905                                         battleSetUpIgnore = true;
14906                                     }else{
14907                                         trueFlag = false;
14908                                     }
14909                                 }
14910                             }
14911                             
14912                         }else if(MS0->S4.unitCMD == 2 && objeSCSunitCnt > 0){
14913                             
14914                             
14915                         }
14916
14917                         
14918                         
14919                         
14920                     }else{
14921                         trueFlag = false;
14922                     }
14923
14924                         
14925                             MS0->S4.obje = MS0->S4.obje->next;
14926                         }MS0->S4.obje = objt;
14927                         MS0->S4.subj = MS0->S4.subj->next;
14928                     }MS0->S4.subj = sbjt;
14929                     
14930                 }if(MS0->S4.subj && MS0->S4.build && Uselected){
14931                     
14932                     UNIT2 *sbjt = MS0->S4.subj;
14933                     BUILD2 *bldt = MS0->S4.build;
14934                     while(MS0->S4.subj){
14935                         while(MS0->S4.build){
14936                     if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
14937                        BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
14938                        Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14939                         
14940                         if(MS0->S4.unitCMD == 0){
14941                             if(pushStanbyFlag){
14942                                 
14943                             }else{
14944                                 trueFlag = false;
14945                             }
14946                         }else if(MS0->S4.unitCMD == 1){
14947                             if(battleSetUp){
14948                                 battleSetUpIgnore = true;
14949                             }else{
14950                                 trueFlag = false;
14951                                 
14952                             }
14953                             
14954                         }else if(MS0->S4.unitCMD == 2){
14955                             
14956                             
14957                         }
14958                         
14959                         
14960                     }else{
14961                         trueFlag = false;
14962                     }
14963                         MS0->S4.build = MS0->S4.build->next;
14964                         }MS0->S4.build = bldt;
14965                         MS0->S4.subj = MS0->S4.subj->next;
14966                     }MS0->S4.subj = sbjt;
14967                 }
14968             }else if(MS0->S4.team == 2){
14969                 if(!MS0->S4.subj && !MS0->S4.obje && !MS0->S4.build){
14970                     
14971                     if(MS0->S4.unitCMD == 0){
14972                         if(pushStanbyFlag){
14973                             
14974                         }else{
14975                             trueFlag = false;
14976                         }
14977                     }else if(MS0->S4.unitCMD == 1){
14978                         if(battleSetUp){
14979                             battleSetUpIgnore = true;
14980                         }else{
14981                             trueFlag = false;
14982                         }
14983                     }else if(MS0->S4.unitCMD == 2){
14984                         
14985                     }
14986                     
14987                     
14988                 }else if(!MS0->S4.subj && !MS0->S4.obje && MS0->S4.build && Uselected){
14989                     
14990                     
14991                     
14992                     BUILD2 *bldt = MS0->S4.build;
14993                     while(MS0->S4.build){
14994                     if(Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
14995                         
14996                         if(MS0->S4.unitCMD == 0){
14997                             if(pushStanbyFlag){
14998                                 
14999                             }else{
15000                                 trueFlag = false;
15001                             }
15002                         }else if(MS0->S4.unitCMD == 1){
15003                             if(battleSetUp){
15004                                 battleSetUpIgnore = true;
15005                             }else{
15006                                 trueFlag = false;
15007                                 
15008                             }
15009                             
15010                         }else if(MS0->S4.unitCMD == 2){
15011                             
15012                             
15013                         }
15014                     }else{
15015                         trueFlag = false;
15016                     }
15017                         MS0->S4.build = MS0->S4.build->next;
15018                     }MS0->S4.build = bldt;
15019                     
15020                     
15021                 }else if(MS0->S4.subj && !MS0->S4.obje && Uselected){
15022   
15023                     UNIT2 *sbjt = MS0->S4.subj;
15024                     
15025                     while(MS0->S4.subj){
15026                     if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1){
15027                         
15028                         if(MS0->S4.unitCMD == 0){
15029                             if(pushStanbyFlag){
15030                                 
15031                             }else{
15032                                 trueFlag = false;
15033                             }
15034                         }else if(MS0->S4.unitCMD == 1){
15035                             if(battleSetUp){
15036                                 battleSetUpIgnore = true;
15037                             }else{
15038                                 trueFlag = false;
15039                                 
15040                             }
15041                             
15042                         }else if(MS0->S4.unitCMD == 2){
15043                             
15044                             
15045                         }
15046                     }else{
15047                         trueFlag = false;
15048                     }
15049                       MS0->S4.subj = MS0->S4.subj->next;
15050                     }MS0->S4.subj = sbjt;
15051                     
15052                 }else if(MS0->S4.subj && MS0->S4.obje && Uselected){
15053                     
15054                     UNIT2 *sbjt = MS0->S4.subj;
15055                     UNIT2 *objt = MS0->S4.obje;
15056                     
15057                     while(MS0->S4.subj){
15058                         while(MS0->S4.obje){
15059                     if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
15060                        Utarget->ix == MS0->S4.obje->x && Utarget->iy == MS0->S4.obje->y && Utarget->iz == 1){
15061                         
15062                         if(MS0->S4.unitCMD == 0){
15063                             
15064                             if(MS0->S4.unitType == 0){
15065                                 if(objeSCSunitCnt == MS0->S4.unitNum){
15066                                     
15067                                     if(pushStanbyFlag){
15068                                         
15069                                     }else{
15070                                         trueFlag = false;
15071                                     }
15072                                 }
15073                                 
15074                             }else if(MS0->S4.unitType == 1){
15075                                 if(objeSCSunitCnt >= MS0->S4.unitNum){
15076                                     
15077                                     if(pushStanbyFlag){
15078                                         
15079                                     }else{
15080                                         trueFlag = false;
15081                                     }
15082                                 }
15083                                 
15084                             }else if(MS0->S4.unitType == 2){
15085                                 if(objeSCSunitCnt <= MS0->S4.unitNum){
15086                                     
15087                                     if(pushStanbyFlag){
15088                                         
15089                                     }else{
15090                                         trueFlag = false;
15091                                     }
15092                                 }
15093                             }
15094                             
15095                         }else if(MS0->S4.unitCMD == 1){
15096                             
15097                             if(MS0->S4.unitType == 0){
15098                                 if(objeSCSunitCnt == MS0->S4.unitNum){
15099                                     
15100                                     if(battleSetUp){
15101                                         battleSetUpIgnore = true;
15102                                     }else{
15103                                         trueFlag = false;
15104                                     }
15105                                 }
15106                                 
15107                             }else if(MS0->S4.unitType == 1){
15108                                 if(objeSCSunitCnt >= MS0->S4.unitNum){
15109                                     
15110                                     if(battleSetUp){
15111                                         battleSetUpIgnore = true;
15112                                     }else{
15113                                         trueFlag = false;
15114                                     }
15115                                 }
15116                                 
15117                             }else if(MS0->S4.unitType == 2){
15118                                 if(objeSCSunitCnt <= MS0->S4.unitNum){
15119                                     
15120                                     if(battleSetUp){
15121                                         battleSetUpIgnore = true;
15122                                     }else{
15123                                         trueFlag = false;
15124                                     }
15125                                 }
15126                             }
15127                             
15128                         }else if(MS0->S4.unitCMD == 2 && objeSCSunitCnt > 0){
15129                             
15130                             
15131                         }
15132
15133                     }else{
15134                         trueFlag = false;
15135                     }
15136                             MS0->S4.obje = MS0->S4.obje->next;
15137                         }MS0->S4.obje = objt;
15138                         MS0->S4.subj = MS0->S4.subj->next;
15139                     }MS0->S4.subj = sbjt;
15140                 }if(MS0->S4.subj && MS0->S4.build && Uselected){
15141                     
15142                     UNIT2 *sbjt = MS0->S4.subj;
15143                     BUILD2 *bldt = MS0->S4.build;
15144                     while(MS0->S4.subj){
15145                         while(MS0->S4.build){
15146                     if(Uselected->ix == MS0->S4.subj->x && Uselected->iy == MS0->S4.subj->y && Uselected->iz == 1 &&
15147                        BC[buildNum[Uselected->x][Uselected->y]].nameID == MS0->S4.build->C->nameID &&
15148                        Uselected->x == MS0->S4.build->x && Uselected->y == MS0->S4.build->y){
15149                         
15150                         if(MS0->S4.unitCMD == 0){
15151                             if(pushStanbyFlag){
15152                                 
15153                             }else{
15154                                 trueFlag = false;
15155                             }
15156                         }else if(MS0->S4.unitCMD == 1){
15157                             if(battleSetUp){
15158                                 battleSetUpIgnore = true;
15159                             }else{
15160                                 trueFlag = false;
15161                                 
15162                             }
15163                             
15164                         }else if(MS0->S4.unitCMD == 2){
15165                             
15166                             
15167                         }
15168                         
15169                         
15170                     }else{
15171                         trueFlag = false;
15172                     }
15173                         MS0->S4.build = MS0->S4.build->next;
15174                         }MS0->S4.build = bldt;
15175                         MS0->S4.subj = MS0->S4.subj->next;
15176                     }MS0->S4.subj = sbjt;
15177                 }
15178             }
15179         }
15180     
15181     
15182     
15183     
15184     
15185     
15186     
15187     
15188     
15189     
15190     
15191         
15192         
15193         
15194         
15195         
15196         
15197         
15198         
15199         
15200         
15201     
15202     
15203     
15204     
15205     }
15206     
15207         
15208     
15209     
15210     
15211     
15212     
15213     
15214     branchEndFlag = true;
15215     MS0->succeessfulFlag = false;
15216     if(trueFlag){
15217         branchSuceedFlag = true;
15218         MS0->succeessfulFlag = true;
15219     }else{
15220         MS0->succeessfulFlag = false;
15221     }
15222     
15223     CRMS0 = MS0;
15224     if(branchEndFlag){
15225         if(!branchSuceedFlag){
15226             MS0 = MSDPtop;
15227             while(MS0){
15228                 MS0->endFlag = false;
15229                 MS0 = MS0->next;
15230             }
15231             
15232             MS0 = CRMS0;
15233             MS0->endFlag = true;
15234             MS0 = MSDPtop;
15235             
15236             if([CRMS0->S4.FAILrabel isEqualToString:MS0->label] && 0){
15237                 //ここはどうやら使えない
15238                 MS0->succeessfulFlag = false;
15239                 MS0->endFlag = false;
15240             }else{
15241                 
15242                 while (MS0) {
15243                     
15244                     if(MS0->next)
15245                         if([CRMS0->S4.FAILrabel isEqualToString:MS0->next->label]){
15246                             
15247                             if(MS0->type == 6 && MS0->endFlag){
15248                                 
15249                             }else{
15250                                 MS0->succeessfulFlag = true;
15251                             }
15252                             MS0->endFlag = true;
15253                             MS0 = MS0->next;
15254                             break;
15255                         }
15256                     if(MS0->type == 6 && MS0->endFlag){
15257                         
15258                     }else{
15259                         MS0->succeessfulFlag = true;
15260                     }
15261                     MS0->endFlag = true;
15262                     MS0 = MS0->next;
15263                 }
15264             }
15265             
15266             if(!MS0){
15267                 MS0 = CRMS0;
15268                 //MS0->endFlag = true;
15269                 return MS0;
15270             }
15271
15272         }else if(branchSuceedFlag){
15273             MS0 = MSDPtop;
15274             while(MS0){
15275                 MS0->endFlag = false;
15276                 MS0 = MS0->next;
15277             }
15278             
15279             MS0 = CRMS0;
15280             MS0->endFlag = true;
15281             
15282             MS0 = MSDPtop;
15283             
15284             if([CRMS0->S4.COMPrabel isEqualToString:MS0->label] && 0){
15285                 MS0->succeessfulFlag = false;
15286                 MS0->endFlag = false;
15287             }else{
15288                 
15289                 while (MS0) {
15290                     
15291                     if(MS0->next)
15292                         if([CRMS0->S4.COMPrabel isEqualToString:MS0->next->label]){
15293                             
15294                             if(MS0->type == 6 && MS0->endFlag){
15295                                 
15296                             }else{
15297                                 MS0->succeessfulFlag = true;
15298                             }
15299                             MS0->endFlag = true;
15300                             MS0 = MS0->next;
15301                             break;
15302                         }
15303                     
15304                     if(MS0->type == 6 && MS0->endFlag){
15305                         
15306                     }else{
15307                         MS0->succeessfulFlag = true;
15308                     }
15309                     MS0->endFlag = true;
15310                     MS0 = MS0->next;
15311                 }
15312             }
15313             
15314             if(!MS0){
15315                 MS0 = CRMS0;
15316                 //MS0->endFlag = true;
15317                 return MS0;
15318             }
15319         }
15320     }
15321     
15322     //NSLog(@"%g", eventTime);
15323     //NSLog(@"%d", MSDPtop->succeessfulFlag);
15324     //MS0->endFlag = true;
15325     
15326     MS0 = [self setEvent:MS0];
15327     
15328     return MS0;
15329 }
15330
15331
15332 -(void)checkPlaceHani:(int)cnsPow tX:(int)startX tY:(int)startY aMap:(int[][1002])aMap u:(UNIT*)u scsCnt:(int*)scsCnt{
15333     
15334     if(cnsPow < 0) return;
15335     
15336     int i0;
15337     int *j0 = scsCnt;
15338     if(aMap[startY][startX] <= cnsPow)
15339         aMap[startY][startX] = cnsPow;
15340     
15341     if(startY < 0) startY = 0;
15342     if(startX < 0) startX = 0;
15343     if(cnsPow < 0) cnsPow = 0;
15344     
15345     i0 = cnsPow - 1;
15346     
15347     if(aMap[startY-1][startX] >= 0 && cnsPow > 0)
15348         [self checkPlaceHani:i0 tX:startX tY:startY-1 aMap:aMap u:u scsCnt:j0];
15349     
15350     i0 = cnsPow - 1;
15351     if(aMap[startY+1][startX] >= 0 && cnsPow > 0)
15352         [self checkPlaceHani:i0 tX:startX tY:startY+1 aMap:aMap u:u scsCnt:j0];
15353     
15354     i0 = cnsPow - 1;
15355     if(aMap[startY][startX-1] >= 0 && cnsPow > 0)
15356         [self checkPlaceHani:i0 tX:startX-1 tY:startY aMap:aMap u:u scsCnt:j0];
15357     
15358     i0 = cnsPow - 1;
15359     if(aMap[startY][startX+1] >= 0 && cnsPow > 0)
15360         [self checkPlaceHani:i0 tX:startX+1 tY:startY aMap:aMap u:u scsCnt:j0];
15361     
15362     
15363 }
15364
15365 -(MAPSCRIPT0*)setLabelJump:(MAPSCRIPT0*)MS0{
15366     
15367     MAPSCRIPT0 *CRMS0 = MS0;
15368     MS0 = MSDPtop;
15369     while(MS0){
15370         MS0->endFlag = false;
15371         MS0 = MS0->next;
15372     }
15373     MS0 = CRMS0;
15374     MS0->endFlag = true;
15375     MS0->succeessfulFlag = true;
15376     
15377     MS0 = MSDPtop;
15378     
15379     if([CRMS0->labelJump isEqualToString:MS0->label]){
15380         MS0->succeessfulFlag = false;
15381         MS0->endFlag = false;
15382     }else{
15383         
15384         while (MS0) {
15385             
15386             if(MS0->next)
15387                 if([CRMS0->labelJump isEqualToString:MS0->next->label]){
15388                     if(MS0->type == 6 && MS0->endFlag){
15389                         
15390                     }else{
15391                         MS0->succeessfulFlag = true;
15392                     }
15393                     MS0->endFlag = true;
15394                     MS0 = MS0->next;
15395                     break;
15396                 }
15397             if(MS0->type == 6 && MS0->endFlag){
15398                 
15399             }else{
15400                 MS0->succeessfulFlag = true;
15401             }
15402             MS0->endFlag = true;
15403                 MS0 = MS0->next;
15404         }
15405     }
15406     if(!MS0){
15407         MS0 = CRMS0;
15408         return MS0;
15409     }
15410     
15411     return MS0;
15412 }
15413
15414 -(MAPSCRIPT0*)setDefault:(MAPSCRIPT0*)MS0{
15415     
15416     MS0->succeessfulFlag = true;
15417     MS0->endFlag = true;
15418     return MS0;
15419 }
15420
15421 -(MAPSCRIPT0*)setStatus:(MAPSCRIPT0*)MS0{
15422     
15423     NSString *value = @"";
15424     
15425     if(MS0->S7.valueType == 0)
15426         value = [MS0->S7.value retain];
15427     else if(MS0->S7.valueType == 1)
15428         value = [Hensuu[MS0->S7.rdm] retain];
15429     
15430     if(MS0->S7.teamFlag){
15431         U = UTop;
15432         while (U) {
15433             
15434             if(MS0->S7.team == U->team)
15435                 [self setStatus0:U MS0:MS0 value:value];
15436             
15437             U = U->next;
15438         }U = UTop;
15439     }
15440     
15441     if(MS0->S7.unitFlag){
15442         U = UTop;
15443         while (U) {
15444             
15445             MAPSCRIPT7A *MS7A = MS0->S7.A;
15446             while (MS0->S7.A) {
15447                 
15448                 if(U->ix == MS0->S7.A->x || U->iy == MS0->S7.A->y){
15449                     [self setStatus0:U MS0:MS0 value:value];
15450                     break;
15451                 }
15452                 MS0->S7.A = MS0->S7.A->next;
15453             }MS0->S7.A = MS7A;
15454             
15455             U = U->next;
15456         }U = UTop;
15457     }
15458     
15459     if(MS0->S7.valueFlag){
15460         U = UTop;
15461         while (U) {
15462             
15463             MAPSCRIPT7B *MS7B = MS0->S7.B;
15464             while (MS0->S7.B) {
15465                 
15466             if(U->ix == MS0->S7.B->x || U->iy == MS0->S7.B->y){
15467                 [self setStatus0:U MS0:MS0 value:value];
15468                 break;
15469             }
15470                 MS0->S7.B = MS0->S7.B->next;
15471             }MS0->S7.B = MS7B;
15472             
15473             U = U->next;
15474         }U = UTop;
15475     }
15476     
15477     MS0->succeessfulFlag = true;
15478     MS0->endFlag = true;
15479     return MS0;
15480 }
15481
15482 -(UNIT*)setStatus0:(UNIT*)U MS0:(MAPSCRIPT0*)MS0 value:(NSString*)value{
15483
15484     if(!MS0->S7.maxFlag){
15485         
15486         if (!MS0->S7.percentFlag) {
15487             
15488             switch (MS0->S7.type) {
15489                 case 0:
15490                     if(MS0->S7.fluctuate == 0)
15491                         U->C.S_C.HP += [value doubleValue];
15492                     else if(MS0->S7.fluctuate == 1)
15493                         U->C.S_C.HP -= [value doubleValue];
15494                     else if(MS0->S7.fluctuate == 2)
15495                         U->C.S_C.HP = [value doubleValue];
15496                     if(MS0->S7.extendFlag)
15497                     if(U->C.S_C.HP > U->C.S_M.HP)
15498                         U->C.S_C.HP = U->C.S_M.HP;
15499                     if(U->C.S_C.HP < 0)
15500                         U->C.S_C.HP = 0;
15501                     break;
15502                 case 1:
15503                     if(MS0->S7.fluctuate == 0)
15504                         U->C.S_C.MP += [value doubleValue];
15505                     else if(MS0->S7.fluctuate == 1)
15506                         U->C.S_C.MP -= [value doubleValue];
15507                     else if(MS0->S7.fluctuate == 2)
15508                         U->C.S_C.MP = [value doubleValue];
15509                     if(MS0->S7.extendFlag)
15510                     if(U->C.S_C.MP > U->C.S_M.MP)
15511                         U->C.S_C.MP = U->C.S_M.MP;
15512                     if(U->C.S_C.MP < 0)
15513                         U->C.S_C.MP = 0;
15514                     break;
15515                 case 2:
15516                     if(MS0->S7.fluctuate == 0)
15517                         U->C.S_C.WT += [value doubleValue];
15518                     else if(MS0->S7.fluctuate == 1)
15519                         U->C.S_C.WT -= [value doubleValue];
15520                     else if(MS0->S7.fluctuate == 2)
15521                         U->C.S_C.WT = [value doubleValue];
15522                     if(MS0->S7.extendFlag)
15523                     if(U->C.S_C.WT > U->C.S_M.WT)
15524                         U->C.S_C.WT = U->C.S_M.WT;
15525                     if(U->C.S_C.WT < 0)
15526                         U->C.S_C.WT = 0;
15527                     break;
15528                 case 3:
15529                     if(MS0->S7.fluctuate == 0)
15530                         U->C.S_C.STR += [value doubleValue];
15531                     else if(MS0->S7.fluctuate == 1)
15532                         U->C.S_C.STR -= [value doubleValue];
15533                     else if(MS0->S7.fluctuate == 2)
15534                         U->C.S_C.STR = [value doubleValue];
15535                     if(MS0->S7.extendFlag)
15536                     if(U->C.S_C.STR > U->C.S_M.STR)
15537                         U->C.S_C.STR = U->C.S_M.STR;
15538                     if(U->C.S_C.STR < 0)
15539                         U->C.S_C.STR = 0;
15540                     break;
15541                 case 4:
15542                     if(MS0->S7.fluctuate == 0)
15543                         U->C.S_C.VIT += [value doubleValue];
15544                     else if(MS0->S7.fluctuate == 1)
15545                         U->C.S_C.VIT -= [value doubleValue];
15546                     else if(MS0->S7.fluctuate == 2)
15547                         U->C.S_C.VIT = [value doubleValue];
15548                     if(MS0->S7.extendFlag)
15549                     if(U->C.S_C.VIT > U->C.S_M.VIT)
15550                         U->C.S_C.VIT = U->C.S_M.VIT;
15551                     if(U->C.S_C.VIT < 0)
15552                         U->C.S_C.VIT = 0;
15553                     break;
15554                 case 5:
15555                     if(MS0->S7.fluctuate == 0)
15556                         U->C.S_C.AGI += [value doubleValue];
15557                     else if(MS0->S7.fluctuate == 1)
15558                         U->C.S_C.AGI -= [value doubleValue];
15559                     else if(MS0->S7.fluctuate == 2)
15560                         U->C.S_C.AGI = [value doubleValue];
15561                     if(MS0->S7.extendFlag)
15562                     if(U->C.S_C.AGI > U->C.S_M.AGI)
15563                         U->C.S_C.AGI = U->C.S_M.AGI;
15564                     if(U->C.S_C.AGI < 0)
15565                         U->C.S_C.AGI = 0;
15566                     break;
15567                 case 6:
15568                     if(MS0->S7.fluctuate == 0)
15569                         U->C.S_C.DEX += [value doubleValue];
15570                     else if(MS0->S7.fluctuate == 1)
15571                         U->C.S_C.DEX -= [value doubleValue];
15572                     else if(MS0->S7.fluctuate == 2)
15573                         U->C.S_C.DEX = [value doubleValue];
15574                     if(MS0->S7.extendFlag)
15575                     if(U->C.S_C.DEX > U->C.S_M.DEX)
15576                         U->C.S_C.DEX = U->C.S_M.DEX;
15577                     if(U->C.S_C.DEX < 0)
15578                         U->C.S_C.DEX = 0;
15579                     break;
15580                 case 7:
15581                     if(MS0->S7.fluctuate == 0)
15582                         U->C.S_C.MEN += [value doubleValue];
15583                     else if(MS0->S7.fluctuate == 1)
15584                         U->C.S_C.MEN -= [value doubleValue];
15585                     else if(MS0->S7.fluctuate == 2)
15586                         U->C.S_C.MEN = [value doubleValue];
15587                     if(MS0->S7.extendFlag)
15588                     if(U->C.S_C.MEN > U->C.S_M.MEN)
15589                         U->C.S_C.MEN = U->C.S_M.MEN;
15590                     if(U->C.S_C.MEN < 0)
15591                         U->C.S_C.MEN = 0;
15592                     break;
15593                 case 8:
15594                     if(MS0->S7.fluctuate == 0)
15595                         U->C.S_C.INT += [value doubleValue];
15596                     else if(MS0->S7.fluctuate == 1)
15597                         U->C.S_C.INT -= [value doubleValue];
15598                     else if(MS0->S7.fluctuate == 2)
15599                         U->C.S_C.INT = [value doubleValue];
15600                     if(MS0->S7.extendFlag)
15601                     if(U->C.S_C.INT > U->C.S_M.INT)
15602                         U->C.S_C.INT = U->C.S_M.INT;
15603                     if(U->C.S_C.INT < 0)
15604                         U->C.S_C.INT = 0;
15605                     break;
15606                 case 9:
15607                     if(MS0->S7.fluctuate == 0)
15608                         U->C.S_C.LUK += [value doubleValue];
15609                     else if(MS0->S7.fluctuate == 1)
15610                         U->C.S_C.LUK -= [value doubleValue];
15611                     else if(MS0->S7.fluctuate == 2)
15612                         U->C.S_C.LUK = [value doubleValue];
15613                     if(MS0->S7.extendFlag)
15614                     if(U->C.S_C.LUK > U->C.S_M.LUK)
15615                         U->C.S_C.LUK = U->C.S_M.LUK;
15616                     if(U->C.S_C.LUK < 0)
15617                         U->C.S_C.LUK = 0;
15618                     break;
15619                 case 10:
15620                     if(MS0->S7.fluctuate == 0)
15621                         U->C.S_C.MOV += [value doubleValue];
15622                     else if(MS0->S7.fluctuate == 1)
15623                         U->C.S_C.MOV -= [value doubleValue];
15624                     else if(MS0->S7.fluctuate == 2)
15625                         U->C.S_C.MOV = [value doubleValue];
15626                     if(MS0->S7.extendFlag)
15627                     if(U->C.S_C.MOV > U->C.S_M.MOV)
15628                         U->C.S_C.MOV = U->C.S_M.MOV;
15629                     if(U->C.S_C.MOV < 0)
15630                         U->C.S_C.MOV = 0;
15631                     break;
15632                 case 11:
15633                     if(MS0->S7.fluctuate == 0)
15634                         U->C.S_C.MEL += [value doubleValue];
15635                     else if(MS0->S7.fluctuate == 1)
15636                         U->C.S_C.MEL -= [value doubleValue];
15637                     else if(MS0->S7.fluctuate == 2)
15638                         U->C.S_C.MEL = [value doubleValue];
15639                     if(MS0->S7.extendFlag)
15640                     if(U->C.S_C.MEL > U->C.S_M.MEL)
15641                         U->C.S_C.MEL = U->C.S_M.MEL;
15642                     if(U->C.S_C.MEL < 0)
15643                         U->C.S_C.MEL = 0;
15644                     break;
15645                 case 12:
15646                     if(MS0->S7.fluctuate == 0)
15647                         U->C.S_C.MIS += [value doubleValue];
15648                     else if(MS0->S7.fluctuate == 1)
15649                         U->C.S_C.MIS -= [value doubleValue];
15650                     else if(MS0->S7.fluctuate == 2)
15651                         U->C.S_C.MIS = [value doubleValue];
15652                     if(MS0->S7.extendFlag)
15653                     if(U->C.S_C.MIS > U->C.S_M.MIS)
15654                         U->C.S_C.MIS = U->C.S_M.MIS;
15655                     if(U->C.S_C.MIS < 0)
15656                         U->C.S_C.MIS = 0;
15657                     break;
15658                 case 13:
15659                     if(MS0->S7.fluctuate == 0)
15660                         U->C.S_C.HIT += [value doubleValue];
15661                     else if(MS0->S7.fluctuate == 1)
15662                         U->C.S_C.HIT -= [value doubleValue];
15663                     else if(MS0->S7.fluctuate == 2)
15664                         U->C.S_C.HIT = [value doubleValue];
15665                     if(MS0->S7.extendFlag)
15666                     if(U->C.S_C.HIT > U->C.S_M.HIT)
15667                         U->C.S_C.HIT = U->C.S_M.HIT;
15668                     if(U->C.S_C.HIT < 0)
15669                         U->C.S_C.HIT = 0;
15670                     break;
15671                 case 14:
15672                     if(MS0->S7.fluctuate == 0)
15673                         U->C.S_C.DOD += [value doubleValue];
15674                     else if(MS0->S7.fluctuate == 1)
15675                         U->C.S_C.DOD -= [value doubleValue];
15676                     else if(MS0->S7.fluctuate == 2)
15677                         U->C.S_C.DOD = [value doubleValue];
15678                     if(MS0->S7.extendFlag)
15679                     if(U->C.S_C.DOD > U->C.S_M.DOD)
15680                         U->C.S_C.DOD = U->C.S_M.DOD;
15681                     if(U->C.S_C.DOD < 0)
15682                         U->C.S_C.DOD = 0;
15683                     break;
15684                 case 15:
15685                     if(MS0->S7.fluctuate == 0)
15686                         U->C.S_C.REA += [value doubleValue];
15687                     else if(MS0->S7.fluctuate == 1)
15688                         U->C.S_C.REA -= [value doubleValue];
15689                     else if(MS0->S7.fluctuate == 2)
15690                         U->C.S_C.REA = [value doubleValue];
15691                     if(MS0->S7.extendFlag)
15692                     if(U->C.S_C.REA > U->C.S_M.REA)
15693                         U->C.S_C.REA = U->C.S_M.REA;
15694                     if(U->C.S_C.REA < 0)
15695                         U->C.S_C.REA = 0;
15696                     break;
15697                 case 16:
15698                     if(MS0->S7.fluctuate == 0)
15699                         U->C.S_C.SKI += [value doubleValue];
15700                     else if(MS0->S7.fluctuate == 1)
15701                         U->C.S_C.SKI -= [value doubleValue];
15702                     else if(MS0->S7.fluctuate == 2)
15703                         U->C.S_C.SKI = [value doubleValue];
15704                     if(MS0->S7.extendFlag)
15705                     if(U->C.S_C.SKI > U->C.S_M.SKI)
15706                         U->C.S_C.SKI = U->C.S_M.SKI;
15707                     if(U->C.S_C.SKI < 0)
15708                         U->C.S_C.SKI = 0;
15709                     break;
15710                 case 17:
15711                     U->C.name =  [value retain];
15712                     break;
15713                 case 18:
15714                     U->C.nameNick =  [value retain];
15715                     break;
15716                 case 19:
15717                     U->C.nameClass =  [value retain];
15718                     break;
15719                 case 20:
15720                     U->C.S_C.typeMONS =  [value doubleValue];
15721                     break;
15722                 case 21:
15723                     U->C.S_C.typeMOVE =  [value doubleValue];
15724                     break;
15725                 case 22:
15726                     if(MS0->S7.fluctuate == 0)
15727                         U->C.S_C.cSupply += [value doubleValue];
15728                     else if(MS0->S7.fluctuate == 1)
15729                         U->C.S_C.cSupply -= [value doubleValue];
15730                     else if(MS0->S7.fluctuate == 2)
15731                         U->C.S_C.cSupply = [value doubleValue];
15732                     if(MS0->S7.extendFlag)
15733                     if(U->C.S_C.cSupply > U->C.S_M.cSupply)
15734                         U->C.S_C.cSupply = U->C.S_M.cSupply;
15735                     if(U->C.S_C.cSupply < 0)
15736                         U->C.S_C.cSupply = 0;
15737                     break;
15738                 case 23:
15739                     if(MS0->S7.fluctuate == 0)
15740                         U->C.S_C.cFood += [value doubleValue];
15741                     else if(MS0->S7.fluctuate == 1)
15742                         U->C.S_C.cFood -= [value doubleValue];
15743                     else if(MS0->S7.fluctuate == 2)
15744                         U->C.S_C.cFood = [value doubleValue];
15745                     if(MS0->S7.extendFlag)
15746                     if(U->C.S_C.cFood > U->C.S_M.cFood)
15747                         U->C.S_C.cFood = U->C.S_M.cFood;
15748                     if(U->C.S_C.cFood < 0)
15749                         U->C.S_C.cFood = 0;
15750                     break;
15751                 case 24:
15752                     if(MS0->S7.fluctuate == 0)
15753                         U->C.S_C.cMoney += [value doubleValue];
15754                     else if(MS0->S7.fluctuate == 1)
15755                         U->C.S_C.cMoney -= [value doubleValue];
15756                     else if(MS0->S7.fluctuate == 2)
15757                         U->C.S_C.cMoney = [value doubleValue];
15758                     if(MS0->S7.extendFlag)
15759                     if(U->C.S_C.cMoney > U->C.S_M.cMoney)
15760                         U->C.S_C.cMoney = U->C.S_M.cMoney;
15761                     if(U->C.S_C.cMoney < 0)
15762                         U->C.S_C.cMoney = 0;
15763                     break;
15764                 case 25:
15765                     if(MS0->S7.fluctuate == 0)
15766                         U->C.S_C.cWT += [value doubleValue];
15767                     else if(MS0->S7.fluctuate == 1)
15768                         U->C.S_C.cWT -= [value doubleValue];
15769                     else if(MS0->S7.fluctuate == 2)
15770                         U->C.S_C.cWT = [value doubleValue];
15771                     if(MS0->S7.extendFlag)
15772                         if(U->C.S_C.cWT > U->C.S_M.cWT)
15773                             U->C.S_C.cWT = U->C.S_M.cWT;
15774                     if(U->C.S_C.cWT < 0)
15775                         U->C.S_C.cWT = 0;
15776                     break;
15777                 case 26:
15778                     if(MS0->S7.fluctuate == 0)
15779                         U->C.S_C.vigor += [value doubleValue];
15780                     else if(MS0->S7.fluctuate == 1)
15781                         U->C.S_C.vigor -= [value doubleValue];
15782                     else if(MS0->S7.fluctuate == 2)
15783                         U->C.S_C.vigor = [value doubleValue];
15784                     if(MS0->S7.extendFlag)
15785                         if(U->C.S_C.vigor > U->C.S_M.vigor)
15786                             U->C.S_C.vigor = U->C.S_M.vigor;
15787                     if(U->C.S_C.vigor < 0)
15788                         U->C.S_C.vigor = 0;
15789                     break;
15790                     
15791                 default:
15792                     break;
15793             }
15794             
15795         }else{
15796             
15797             switch (MS0->S7.type) {
15798                 case 0:
15799                     if(MS0->S7.fluctuate == 0)
15800                         U->C.S_C.HP += U->C.S_M.HP*[value doubleValue]/100;
15801                     else if(MS0->S7.fluctuate == 1)
15802                         U->C.S_C.HP -= U->C.S_M.HP*[value doubleValue]/100;
15803                     else if(MS0->S7.fluctuate == 2)
15804                         U->C.S_C.HP = U->C.S_M.HP*[value doubleValue]/100;
15805                     if(MS0->S7.extendFlag)
15806                     if(U->C.S_C.HP > U->C.S_M.HP)
15807                         U->C.S_C.HP = U->C.S_M.HP;
15808                     if(U->C.S_C.HP < 0)
15809                         U->C.S_C.HP = 0;
15810                     break;
15811                 case 1:
15812                     if(MS0->S7.fluctuate == 0)
15813                         U->C.S_C.MP += U->C.S_M.MP*[value doubleValue]/100;
15814                     else if(MS0->S7.fluctuate == 1)
15815                         U->C.S_C.MP -= U->C.S_M.MP*[value doubleValue]/100;
15816                     else if(MS0->S7.fluctuate == 2)
15817                         U->C.S_C.MP = U->C.S_M.MP*[value doubleValue]/100;
15818                     if(MS0->S7.extendFlag)
15819                     if(U->C.S_C.MP > U->C.S_M.MP)
15820                         U->C.S_C.MP = U->C.S_M.MP;
15821                     if(U->C.S_C.MP < 0)
15822                         U->C.S_C.MP = 0;
15823                     break;
15824                 case 2:
15825                     if(MS0->S7.fluctuate == 0)
15826                         U->C.S_C.WT += U->C.S_M.WT*[value doubleValue]/100;
15827                     else if(MS0->S7.fluctuate == 1)
15828                         U->C.S_C.WT -= U->C.S_M.WT*[value doubleValue]/100;
15829                     else if(MS0->S7.fluctuate == 2)
15830                         U->C.S_C.MP = U->C.S_M.WT*[value doubleValue]/100;
15831                     if(MS0->S7.extendFlag)
15832                     if(U->C.S_C.WT > U->C.S_M.WT)
15833                         U->C.S_C.WT = U->C.S_M.WT;
15834                     if(U->C.S_C.WT < 0)
15835                         U->C.S_C.WT = 0;
15836                     break;
15837                 case 3:
15838                     if(MS0->S7.fluctuate == 0)
15839                         U->C.S_C.STR += U->C.S_M.STR*[value doubleValue]/100;
15840                     else if(MS0->S7.fluctuate == 1)
15841                         U->C.S_C.STR -= U->C.S_M.STR*[value doubleValue]/100;
15842                     else if(MS0->S7.fluctuate == 2)
15843                         U->C.S_C.STR = U->C.S_M.STR*[value doubleValue]/100;
15844                     if(MS0->S7.extendFlag)
15845                     if(U->C.S_C.STR > U->C.S_M.STR)
15846                         U->C.S_C.STR = U->C.S_M.STR;
15847                     if(U->C.S_C.STR < 0)
15848                         U->C.S_C.STR = 0;
15849                     break;
15850                 case 4:
15851                     if(MS0->S7.fluctuate == 0)
15852                         U->C.S_C.VIT += U->C.S_M.VIT*[value doubleValue]/100;
15853                     else if(MS0->S7.fluctuate == 1)
15854                         U->C.S_C.VIT -= U->C.S_M.VIT*[value doubleValue]/100;
15855                     else if(MS0->S7.fluctuate == 2)
15856                         U->C.S_C.VIT = U->C.S_M.VIT*[value doubleValue]/100;
15857                     if(MS0->S7.extendFlag)
15858                     if(U->C.S_C.VIT > U->C.S_M.VIT)
15859                         U->C.S_C.VIT = U->C.S_M.VIT;
15860                     if(U->C.S_C.VIT < 0)
15861                         U->C.S_C.VIT = 0;
15862                     break;
15863                 case 5:
15864                     if(MS0->S7.fluctuate == 0)
15865                         U->C.S_C.AGI += U->C.S_M.AGI*[value doubleValue]/100;
15866                     else if(MS0->S7.fluctuate == 1)
15867                         U->C.S_C.AGI -= U->C.S_M.AGI*[value doubleValue]/100;
15868                     else if(MS0->S7.fluctuate == 2)
15869                         U->C.S_C.AGI = U->C.S_M.AGI*[value doubleValue]/100;
15870                     if(MS0->S7.extendFlag)
15871                     if(U->C.S_C.AGI > U->C.S_M.AGI)
15872                         U->C.S_C.AGI = U->C.S_M.AGI;
15873                     if(U->C.S_C.AGI < 0)
15874                         U->C.S_C.AGI = 0;
15875                     break;
15876                 case 6:
15877                     if(MS0->S7.fluctuate == 0)
15878                         U->C.S_C.DEX += U->C.S_M.DEX*[value doubleValue]/100;
15879                     else if(MS0->S7.fluctuate == 1)
15880                         U->C.S_C.DEX -= U->C.S_M.DEX*[value doubleValue]/100;
15881                     else if(MS0->S7.fluctuate == 2)
15882                         U->C.S_C.DEX = U->C.S_M.DEX*[value doubleValue]/100;
15883                     if(MS0->S7.extendFlag)
15884                     if(U->C.S_C.DEX > U->C.S_M.DEX)
15885                         U->C.S_C.DEX = U->C.S_M.DEX;
15886                     if(U->C.S_C.DEX < 0)
15887                         U->C.S_C.DEX = 0;
15888                     break;
15889                 case 7:
15890                     if(MS0->S7.fluctuate == 0)
15891                         U->C.S_C.MEN += U->C.S_M.MEN*[value doubleValue]/100;
15892                     else if(MS0->S7.fluctuate == 1)
15893                         U->C.S_C.MEN -= U->C.S_M.MEN*[value doubleValue]/100;
15894                     else if(MS0->S7.fluctuate == 2)
15895                         U->C.S_C.MEN = U->C.S_M.MEN*[value doubleValue]/100;
15896                     if(MS0->S7.extendFlag)
15897                     if(U->C.S_C.MEN > U->C.S_M.MEN)
15898                         U->C.S_C.MEN = U->C.S_M.MEN;
15899                     if(U->C.S_C.MEN < 0)
15900                         U->C.S_C.MEN = 0;
15901                     break;
15902                 case 8:
15903                     if(MS0->S7.fluctuate == 0)
15904                         U->C.S_C.INT += U->C.S_M.INT*[value doubleValue]/100;
15905                     else if(MS0->S7.fluctuate == 1)
15906                         U->C.S_C.INT -= U->C.S_M.INT*[value doubleValue]/100;
15907                     else if(MS0->S7.fluctuate == 2)
15908                         U->C.S_C.INT = U->C.S_M.INT*[value doubleValue]/100;
15909                     if(MS0->S7.extendFlag)
15910                     if(U->C.S_C.INT > U->C.S_M.INT)
15911                         U->C.S_C.INT = U->C.S_M.INT;
15912                     if(U->C.S_C.INT < 0)
15913                         U->C.S_C.INT = 0;
15914                     break;
15915                 case 9:
15916                     if(MS0->S7.fluctuate == 0)
15917                         U->C.S_C.LUK += U->C.S_M.LUK*[value doubleValue]/100;
15918                     else if(MS0->S7.fluctuate == 1)
15919                         U->C.S_C.LUK -= U->C.S_M.LUK*[value doubleValue]/100;
15920                     else if(MS0->S7.fluctuate == 2)
15921                         U->C.S_C.LUK = U->C.S_M.LUK*[value doubleValue]/100;
15922                     if(MS0->S7.extendFlag)
15923                     if(U->C.S_C.LUK > U->C.S_M.LUK)
15924                         U->C.S_C.LUK = U->C.S_M.LUK;
15925                     if(U->C.S_C.LUK < 0)
15926                         U->C.S_C.LUK = 0;
15927                     break;
15928                 case 10:
15929                     if(MS0->S7.fluctuate == 0)
15930                         U->C.S_C.MOV += U->C.S_M.MOV*[value doubleValue]/100;
15931                     else if(MS0->S7.fluctuate == 1)
15932                         U->C.S_C.MOV -= U->C.S_M.MOV*[value doubleValue]/100;
15933                     else if(MS0->S7.fluctuate == 2)
15934                         U->C.S_C.MOV = U->C.S_M.MOV*[value doubleValue]/100;
15935                     if(MS0->S7.extendFlag)
15936                     if(U->C.S_C.MOV > U->C.S_M.MOV)
15937                         U->C.S_C.MOV = U->C.S_M.MOV;
15938                     if(U->C.S_C.MOV < 0)
15939                         U->C.S_C.MOV = 0;
15940                     break;
15941                 case 11:
15942                     if(MS0->S7.fluctuate == 0)
15943                         U->C.S_C.MEL += U->C.S_M.MEL*[value doubleValue]/100;
15944                     else if(MS0->S7.fluctuate == 1)
15945                         U->C.S_C.MEL -= U->C.S_M.MEL*[value doubleValue]/100;
15946                     else if(MS0->S7.fluctuate == 2)
15947                         U->C.S_C.MEL = U->C.S_M.MEL*[value doubleValue]/100;
15948                     if(MS0->S7.extendFlag)
15949                     if(U->C.S_C.MEL > U->C.S_M.MEL)
15950                         U->C.S_C.MEL = U->C.S_M.MEL;
15951                     if(U->C.S_C.MEL < 0)
15952                         U->C.S_C.MEL = 0;
15953                     break;
15954                 case 12:
15955                     if(MS0->S7.fluctuate == 0)
15956                         U->C.S_C.MIS += U->C.S_M.MIS*[value doubleValue]/100;
15957                     else if(MS0->S7.fluctuate == 1)
15958                         U->C.S_C.MIS -= U->C.S_M.MIS*[value doubleValue]/100;
15959                     else if(MS0->S7.fluctuate == 2)
15960                         U->C.S_C.MIS = U->C.S_M.MIS*[value doubleValue]/100;
15961                     if(MS0->S7.extendFlag)
15962                     if(U->C.S_C.MIS > U->C.S_M.MIS)
15963                         U->C.S_C.MIS = U->C.S_M.MIS;
15964                     if(U->C.S_C.MIS < 0)
15965                         U->C.S_C.MIS = 0;
15966                     break;
15967                 case 13:
15968                     if(MS0->S7.fluctuate == 0)
15969                         U->C.S_C.HIT += U->C.S_M.HIT*[value doubleValue]/100;
15970                     else if(MS0->S7.fluctuate == 1)
15971                         U->C.S_C.HIT -= U->C.S_M.HIT*[value doubleValue]/100;
15972                     else if(MS0->S7.fluctuate == 2)
15973                         U->C.S_C.HIT = U->C.S_M.HIT*[value doubleValue]/100;
15974                     if(MS0->S7.extendFlag)
15975                     if(U->C.S_C.HIT > U->C.S_M.HIT)
15976                         U->C.S_C.HIT = U->C.S_M.HIT;
15977                     if(U->C.S_C.HIT < 0)
15978                         U->C.S_C.HIT = 0;
15979                     break;
15980                 case 14:
15981                     if(MS0->S7.fluctuate == 0)
15982                         U->C.S_C.DOD += U->C.S_M.DOD*[value doubleValue]/100;
15983                     else if(MS0->S7.fluctuate == 1)
15984                         U->C.S_C.DOD -= U->C.S_M.DOD*[value doubleValue]/100;
15985                     else if(MS0->S7.fluctuate == 2)
15986                         U->C.S_C.DOD = U->C.S_M.DOD*[value doubleValue]/100;
15987                     if(MS0->S7.extendFlag)
15988                     if(U->C.S_C.HIT > U->C.S_M.DOD)
15989                         U->C.S_C.DOD = U->C.S_M.DOD;
15990                     if(U->C.S_C.DOD < 0)
15991                         U->C.S_C.DOD = 0;
15992                     break;
15993                 case 15:
15994                     if(MS0->S7.fluctuate == 0)
15995                         U->C.S_C.REA += U->C.S_M.REA*[value doubleValue]/100;
15996                     else if(MS0->S7.fluctuate == 1)
15997                         U->C.S_C.REA -= U->C.S_M.REA*[value doubleValue]/100;
15998                     else if(MS0->S7.fluctuate == 2)
15999                         U->C.S_C.REA = U->C.S_M.REA*[value doubleValue]/100;
16000                     if(MS0->S7.extendFlag)
16001                     if(U->C.S_C.REA > U->C.S_M.REA)
16002                         U->C.S_C.REA = U->C.S_M.REA;
16003                     if(U->C.S_C.REA < 0)
16004                         U->C.S_C.REA = 0;
16005                     break;
16006                 case 16:
16007                     if(MS0->S7.fluctuate == 0)
16008                         U->C.S_C.SKI += U->C.S_M.SKI*[value doubleValue]/100;
16009                     else if(MS0->S7.fluctuate == 1)
16010                         U->C.S_C.SKI -= U->C.S_M.SKI*[value doubleValue]/100;
16011                     else if(MS0->S7.fluctuate == 2)
16012                         U->C.S_C.SKI = U->C.S_M.SKI*[value doubleValue]/100;
16013                     if(MS0->S7.extendFlag)
16014                     if(U->C.S_C.SKI > U->C.S_M.SKI)
16015                         U->C.S_C.SKI = U->C.S_M.SKI;
16016                     if(U->C.S_C.SKI < 0)
16017                         U->C.S_C.SKI = 0;
16018                     break;
16019                 case 17:
16020                     U->C.name =  [MS0->S7.value retain];
16021                     break;
16022                 case 18:
16023                     U->C.nameNick =  [MS0->S7.value retain];
16024                     break;
16025                 case 19:
16026                     U->C.nameClass =  [MS0->S7.value retain];
16027                     break;
16028                 case 20:
16029                     U->C.S_C.typeMONS =  [MS0->S7.value doubleValue];
16030                     break;
16031                 case 21:
16032                     U->C.S_C.typeMOVE =  [MS0->S7.value doubleValue];
16033                     break;
16034                 case 22:
16035                     if(MS0->S7.fluctuate == 0)
16036                         U->C.S_C.cSupply += U->C.S_M.cSupply*[value doubleValue]/100;
16037                     else if(MS0->S7.fluctuate == 1)
16038                         U->C.S_C.cSupply -= U->C.S_M.cSupply*[value doubleValue]/100;
16039                     else if(MS0->S7.fluctuate == 2)
16040                         U->C.S_C.cSupply = U->C.S_M.cSupply*[value doubleValue]/100;
16041                     if(MS0->S7.extendFlag)
16042                     if(U->C.S_C.cSupply > U->C.S_M.cSupply)
16043                         U->C.S_C.cSupply = U->C.S_M.cSupply;
16044                     if(U->C.S_C.cSupply < 0)
16045                         U->C.S_C.cSupply = 0;
16046                     break;
16047                 case 23:
16048                     if(MS0->S7.fluctuate == 0)
16049                         U->C.S_C.cFood += U->C.S_M.cFood*[value doubleValue]/100;
16050                     else if(MS0->S7.fluctuate == 1)
16051                         U->C.S_C.cFood -= U->C.S_M.cFood*[value doubleValue]/100;
16052                     else if(MS0->S7.fluctuate == 2)
16053                         U->C.S_C.cFood = U->C.S_M.cFood*[value doubleValue]/100;
16054                     if(MS0->S7.extendFlag)
16055                     if(U->C.S_C.cFood > U->C.S_M.cFood)
16056                         U->C.S_C.cFood = U->C.S_M.cFood;
16057                     if(U->C.S_C.cFood < 0)
16058                         U->C.S_C.cFood = 0;
16059                     break;
16060                 case 24:
16061                     if(MS0->S7.fluctuate == 0)
16062                         U->C.S_C.cMoney += U->C.S_M.cMoney*[value doubleValue]/100;
16063                     else if(MS0->S7.fluctuate == 1)
16064                         U->C.S_C.cMoney -= U->C.S_M.cMoney*[value doubleValue]/100;
16065                     else if(MS0->S7.fluctuate == 2)
16066                         U->C.S_C.cMoney = U->C.S_M.cMoney*[value doubleValue]/100;
16067                     if(MS0->S7.extendFlag)
16068                     if(U->C.S_C.cMoney > U->C.S_M.cMoney)
16069                         U->C.S_C.cMoney = U->C.S_M.cMoney;
16070                     if(U->C.S_C.cMoney < 0)
16071                         U->C.S_C.cMoney = 0;
16072                     break;
16073                 case 25:
16074                     if(MS0->S7.fluctuate == 0)
16075                         U->C.S_C.cWT += U->C.S_M.cWT*[value doubleValue]/100;
16076                     else if(MS0->S7.fluctuate == 1)
16077                         U->C.S_C.cWT -= U->C.S_M.cWT*[value doubleValue]/100;
16078                     else if(MS0->S7.fluctuate == 2)
16079                         U->C.S_C.cWT = U->C.S_M.cWT*[value doubleValue]/100;
16080                     if(MS0->S7.extendFlag)
16081                     if(U->C.S_C.cWT > U->C.S_M.cWT)
16082                         U->C.S_C.cWT = U->C.S_M.cWT;
16083                     if(U->C.S_C.cWT < 0)
16084                         U->C.S_C.cWT = 0;
16085                     break;
16086                 case 26:
16087                     if(MS0->S7.fluctuate == 0)
16088                         U->C.S_C.vigor += U->C.S_M.vigor*[value doubleValue]/100;
16089                     else if(MS0->S7.fluctuate == 1)
16090                         U->C.S_C.vigor -= U->C.S_M.vigor*[value doubleValue]/100;
16091                     else if(MS0->S7.fluctuate == 2)
16092                         U->C.S_C.vigor = U->C.S_M.vigor*[value doubleValue]/100;
16093                     if(MS0->S7.extendFlag)
16094                         if(U->C.S_C.vigor > U->C.S_M.vigor)
16095                             U->C.S_C.vigor = U->C.S_M.vigor;
16096                     if(U->C.S_C.vigor < 0)
16097                         U->C.S_C.vigor = 0;
16098                     break;
16099                 default:
16100                     break;
16101             }
16102         }
16103         
16104     }else{
16105         
16106         if (!MS0->S7.percentFlag) {
16107             
16108             switch (MS0->S7.type) {
16109                 case 0:
16110                     if(MS0->S7.fluctuate == 0)
16111                         U->C.S_M.HP += [value doubleValue];
16112                     else if(MS0->S7.fluctuate == 1)
16113                         U->C.S_M.HP -= [value doubleValue];
16114                     else if(MS0->S7.fluctuate == 2)
16115                         U->C.S_M.HP = [value doubleValue];
16116                     
16117                     if(U->C.S_M.HP < 0)
16118                         U->C.S_M.HP = 0;
16119                     if(MS0->S7.extendFlag)
16120                         U->C.S_C.HP = U->C.S_M.HP;
16121                     break;
16122                 case 1:
16123                     if(MS0->S7.fluctuate == 0)
16124                         U->C.S_M.MP += [value doubleValue];
16125                     else if(MS0->S7.fluctuate == 1)
16126                         U->C.S_M.MP -= [value doubleValue];
16127                     else if(MS0->S7.fluctuate == 2)
16128                         U->C.S_M.MP = [value doubleValue];
16129                     
16130                     if(U->C.S_M.MP < 0)
16131                         U->C.S_M.MP = 0;
16132                     if(MS0->S7.extendFlag)
16133                         U->C.S_C.MP = U->C.S_M.MP;
16134                     break;
16135                 case 2:
16136                     if(MS0->S7.fluctuate == 0)
16137                         U->C.S_M.WT += [value doubleValue];
16138                     else if(MS0->S7.fluctuate == 1)
16139                         U->C.S_M.WT -= [value doubleValue];
16140                     else if(MS0->S7.fluctuate == 2)
16141                         U->C.S_M.WT = [value doubleValue];
16142                     
16143                     if(U->C.S_M.WT < 0)
16144                         U->C.S_M.WT = 0;
16145                     if(MS0->S7.extendFlag)
16146                         U->C.S_C.WT = U->C.S_M.WT;
16147                     break;
16148                 case 3:
16149                     if(MS0->S7.fluctuate == 0)
16150                         U->C.S_M.STR += [value doubleValue];
16151                     else if(MS0->S7.fluctuate == 1)
16152                         U->C.S_M.STR -= [value doubleValue];
16153                     else if(MS0->S7.fluctuate == 2)
16154                         U->C.S_M.STR = [value doubleValue];
16155                     
16156                     if(U->C.S_M.STR < 0)
16157                         U->C.S_M.STR = 0;
16158                     if(MS0->S7.extendFlag)
16159                         U->C.S_C.STR = U->C.S_M.STR;
16160                     break;
16161                 case 4:
16162                     if(MS0->S7.fluctuate == 0)
16163                         U->C.S_M.VIT += [value doubleValue];
16164                     else if(MS0->S7.fluctuate == 1)
16165                         U->C.S_M.VIT -= [value doubleValue];
16166                     else if(MS0->S7.fluctuate == 2)
16167                         U->C.S_M.VIT = [value doubleValue];
16168                     
16169                     if(U->C.S_M.VIT < 0)
16170                         U->C.S_M.VIT = 0;
16171                     if(MS0->S7.extendFlag)
16172                         U->C.S_C.VIT = U->C.S_M.VIT;
16173                     break;
16174                 case 5:
16175                     if(MS0->S7.fluctuate == 0)
16176                         U->C.S_M.AGI += [value doubleValue];
16177                     else if(MS0->S7.fluctuate == 1)
16178                         U->C.S_M.AGI -= [value doubleValue];
16179                     else if(MS0->S7.fluctuate == 2)
16180                         U->C.S_M.AGI = [value doubleValue];
16181                     
16182                     if(U->C.S_M.AGI < 0)
16183                         U->C.S_M.AGI = 0;
16184                     if(MS0->S7.extendFlag)
16185                         U->C.S_C.AGI = U->C.S_M.AGI;
16186                     break;
16187                 case 6:
16188                     if(MS0->S7.fluctuate == 0)
16189                         U->C.S_M.DEX += [value doubleValue];
16190                     else if(MS0->S7.fluctuate == 1)
16191                         U->C.S_M.DEX -= [value doubleValue];
16192                     else if(MS0->S7.fluctuate == 2)
16193                         U->C.S_M.DEX = [value doubleValue];
16194                     
16195                     if(U->C.S_M.DEX < 0)
16196                         U->C.S_M.DEX = 0;
16197                     if(MS0->S7.extendFlag)
16198                         U->C.S_C.DEX = U->C.S_M.DEX;
16199                     break;
16200                 case 7:
16201                     if(MS0->S7.fluctuate == 0)
16202                         U->C.S_M.MEN += [value doubleValue];
16203                     else if(MS0->S7.fluctuate == 1)
16204                         U->C.S_M.MEN -= [value doubleValue];
16205                     else if(MS0->S7.fluctuate == 2)
16206                         U->C.S_M.MEN = [value doubleValue];
16207                     
16208                     if(U->C.S_M.MEN < 0)
16209                         U->C.S_M.MEN = 0;
16210                     if(MS0->S7.extendFlag)
16211                         U->C.S_C.MEN = U->C.S_M.MEN;
16212                     break;
16213                 case 8:
16214                     if(MS0->S7.fluctuate == 0)
16215                         U->C.S_M.INT += [value doubleValue];
16216                     else if(MS0->S7.fluctuate == 1)
16217                         U->C.S_M.INT -= [value doubleValue];
16218                     else if(MS0->S7.fluctuate == 2)
16219                         U->C.S_M.INT = [value doubleValue];
16220                     
16221                     if(U->C.S_M.INT < 0)
16222                         U->C.S_M.INT = 0;
16223                     if(MS0->S7.extendFlag)
16224                         U->C.S_C.INT = U->C.S_M.INT;
16225                     break;
16226                 case 9:
16227                     if(MS0->S7.fluctuate == 0)
16228                         U->C.S_M.LUK += [value doubleValue];
16229                     else if(MS0->S7.fluctuate == 1)
16230                         U->C.S_M.LUK -= [value doubleValue];
16231                     else if(MS0->S7.fluctuate == 2)
16232                         U->C.S_M.LUK = [value doubleValue];
16233                     
16234                     if(U->C.S_M.LUK < 0)
16235                         U->C.S_M.LUK = 0;
16236                     if(MS0->S7.extendFlag)
16237                         U->C.S_C.LUK = U->C.S_M.LUK;
16238                     break;
16239                 case 10:
16240                     if(MS0->S7.fluctuate == 0)
16241                         U->C.S_M.MOV += [value doubleValue];
16242                     else if(MS0->S7.fluctuate == 1)
16243                         U->C.S_M.MOV -= [value doubleValue];
16244                     else if(MS0->S7.fluctuate == 2)
16245                         U->C.S_M.MOV = [value doubleValue];
16246                     
16247                     if(U->C.S_M.MOV < 0)
16248                         U->C.S_M.MOV = 0;
16249                     if(MS0->S7.extendFlag)
16250                         U->C.S_C.MOV = U->C.S_M.MOV;
16251                     break;
16252                 case 11:
16253                     if(MS0->S7.fluctuate == 0)
16254                         U->C.S_M.MEL += [value doubleValue];
16255                     else if(MS0->S7.fluctuate == 1)
16256                         U->C.S_M.MEL -= [value doubleValue];
16257                     else if(MS0->S7.fluctuate == 2)
16258                         U->C.S_M.MEL = [value doubleValue];
16259                    
16260                     if(U->C.S_M.MEL < 0)
16261                         U->C.S_M.MEL = 0;
16262                     if(MS0->S7.extendFlag)
16263                         U->C.S_C.MEL = U->C.S_M.MEL;
16264                     break;
16265                 case 12:
16266                     if(MS0->S7.fluctuate == 0)
16267                         U->C.S_M.MIS += [value doubleValue];
16268                     else if(MS0->S7.fluctuate == 1)
16269                         U->C.S_M.MIS -= [value doubleValue];
16270                     else if(MS0->S7.fluctuate == 2)
16271                         U->C.S_M.MIS = [value doubleValue];
16272      
16273                     if(U->C.S_M.MIS < 0)
16274                         U->C.S_M.MIS = 0;
16275                     if(MS0->S7.extendFlag)
16276                         U->C.S_C.MIS = U->C.S_M.MIS;
16277
16278                     break;
16279                 case 13:
16280                     if(MS0->S7.fluctuate == 0)
16281                         U->C.S_M.HIT += [value doubleValue];
16282                     else if(MS0->S7.fluctuate == 1)
16283                         U->C.S_M.HIT -= [value doubleValue];
16284                     else if(MS0->S7.fluctuate == 2)
16285                         U->C.S_M.HIT = [value doubleValue];
16286        
16287                     if(U->C.S_M.HIT < 0)
16288                         U->C.S_M.HIT = 0;
16289                     if(MS0->S7.extendFlag)
16290                         U->C.S_C.HIT = U->C.S_M.HIT;
16291                     break;
16292                 case 14:
16293                     if(MS0->S7.fluctuate == 0)
16294                         U->C.S_M.DOD += [value doubleValue];
16295                     else if(MS0->S7.fluctuate == 1)
16296                         U->C.S_M.DOD -= [value doubleValue];
16297                     else if(MS0->S7.fluctuate == 2)
16298                         U->C.S_M.DOD = [value doubleValue];
16299                
16300                     if(U->C.S_M.DOD < 0)
16301                         U->C.S_M.DOD = 0;
16302                     if(MS0->S7.extendFlag)
16303                         U->C.S_C.DOD = U->C.S_M.DOD;
16304                     break;
16305                 case 15:
16306                     if(MS0->S7.fluctuate == 0)
16307                         U->C.S_M.REA += [value doubleValue];
16308                     else if(MS0->S7.fluctuate == 1)
16309                         U->C.S_M.REA -= [value doubleValue];
16310                     else if(MS0->S7.fluctuate == 2)
16311                         U->C.S_M.REA = [value doubleValue];
16312
16313                     if(U->C.S_M.REA < 0)
16314                         U->C.S_M.REA = 0;
16315                     if(MS0->S7.extendFlag)
16316                         U->C.S_C.REA = U->C.S_M.REA;
16317                     break;
16318                 case 16:
16319                     if(MS0->S7.fluctuate == 0)
16320                         U->C.S_M.SKI += [value doubleValue];
16321                     else if(MS0->S7.fluctuate == 1)
16322                         U->C.S_M.SKI -= [value doubleValue];
16323                     else if(MS0->S7.fluctuate == 2)
16324                         U->C.S_M.SKI = [value doubleValue];
16325
16326                     if(U->C.S_M.SKI < 0)
16327                         U->C.S_M.SKI = 0;
16328                     if(MS0->S7.extendFlag)
16329                         U->C.S_C.SKI = U->C.S_M.SKI;
16330                     break;
16331                 case 17:
16332                     U->C.name =  [value retain];
16333                     break;
16334                 case 18:
16335                     U->C.nameNick =  [value retain];
16336                     break;
16337                 case 19:
16338                     U->C.nameClass =  [value retain];
16339                     break;
16340                 case 20:
16341                     U->C.S_C.typeMONS =  [value doubleValue];
16342                     break;
16343                 case 21:
16344                     U->C.S_C.typeMOVE =  [value doubleValue];
16345                     break;
16346                 case 22:
16347                     if(MS0->S7.fluctuate == 0)
16348                         U->C.S_M.cSupply += [value doubleValue];
16349                     else if(MS0->S7.fluctuate == 1)
16350                         U->C.S_M.cSupply -= [value doubleValue];
16351                     else if(MS0->S7.fluctuate == 2)
16352                         U->C.S_M.cSupply = [value doubleValue];
16353               
16354                     if(U->C.S_M.cSupply < 0)
16355                         U->C.S_M.cSupply = 0;
16356                     if(MS0->S7.extendFlag)
16357                         U->C.S_C.cSupply = U->C.S_M.cSupply;
16358                     break;
16359                 case 23:
16360                     if(MS0->S7.fluctuate == 0)
16361                         U->C.S_M.cFood += [value doubleValue];
16362                     else if(MS0->S7.fluctuate == 1)
16363                         U->C.S_M.cFood -= [value doubleValue];
16364                     else if(MS0->S7.fluctuate == 2)
16365                         U->C.S_M.cFood = [value doubleValue];
16366            
16367                     if(U->C.S_M.cFood < 0)
16368                         U->C.S_M.cFood = 0;
16369                     if(MS0->S7.extendFlag)
16370                         U->C.S_C.cFood = U->C.S_M.cFood;
16371                     break;
16372                 case 24:
16373                     if(MS0->S7.fluctuate == 0)
16374                         U->C.S_M.cMoney += [value doubleValue];
16375                     else if(MS0->S7.fluctuate == 1)
16376                         U->C.S_M.cMoney -= [value doubleValue];
16377                     else if(MS0->S7.fluctuate == 2)
16378                         U->C.S_M.cMoney = [value doubleValue];
16379                     if(U->C.S_M.cMoney < 0)
16380                         U->C.S_M.cMoney = 0;
16381                     if(MS0->S7.extendFlag)
16382                         U->C.S_C.cMoney = U->C.S_M.cMoney;
16383                     break;
16384                 case 25:
16385                     if(MS0->S7.fluctuate == 0)
16386                         U->C.S_M.cWT += [value doubleValue];
16387                     else if(MS0->S7.fluctuate == 1)
16388                         U->C.S_M.cWT -= [value doubleValue];
16389                     else if(MS0->S7.fluctuate == 2)
16390                         U->C.S_M.cWT = [value doubleValue];
16391                     if(U->C.S_M.cWT < 0)
16392                         U->C.S_M.cWT = 0;
16393                     if(MS0->S7.extendFlag)
16394                         U->C.S_C.cWT = U->C.S_M.cWT;
16395                     break;
16396                 case 26:
16397                     if(MS0->S7.fluctuate == 0)
16398                         U->C.S_M.vigor += [value doubleValue];
16399                     else if(MS0->S7.fluctuate == 1)
16400                         U->C.S_M.vigor -= [value doubleValue];
16401                     else if(MS0->S7.fluctuate == 2)
16402                         U->C.S_M.vigor = [value doubleValue];
16403                     if(U->C.S_M.vigor < 0)
16404                         U->C.S_M.vigor = 0;
16405                     if(MS0->S7.extendFlag)
16406                         U->C.S_C.vigor = U->C.S_M.vigor;
16407                     break;
16408                     
16409                 default:
16410                     break;
16411             }
16412             
16413         }else{
16414             
16415             switch (MS0->S7.type) {
16416                 case 0:
16417                     if(MS0->S7.fluctuate == 0)
16418                         U->C.S_M.HP += U->C.S_M.HP*[value doubleValue]/100;
16419                     else if(MS0->S7.fluctuate == 1)
16420                         U->C.S_M.HP -= U->C.S_M.HP*[value doubleValue]/100;
16421                     else if(MS0->S7.fluctuate == 2)
16422                         U->C.S_M.HP = U->C.S_M.HP*[value doubleValue]/100;
16423                     
16424                     if(U->C.S_M.HP < 0)
16425                         U->C.S_M.HP = 0;
16426                     if(MS0->S7.extendFlag)
16427                         U->C.S_C.HP = U->C.S_M.HP;
16428                     break;
16429                 case 1:
16430                     if(MS0->S7.fluctuate == 0)
16431                         U->C.S_M.MP += U->C.S_M.MP*[value doubleValue]/100;
16432                     else if(MS0->S7.fluctuate == 1)
16433                         U->C.S_M.MP -= U->C.S_M.MP*[value doubleValue]/100;
16434                     else if(MS0->S7.fluctuate == 2)
16435                         U->C.S_M.MP = U->C.S_M.MP*[value doubleValue]/100;
16436                     
16437                     if(U->C.S_M.MP < 0)
16438                         U->C.S_M.MP = 0;
16439                     if(MS0->S7.extendFlag)
16440                         U->C.S_C.MP = U->C.S_M.MP;
16441                     break;
16442                 case 2:
16443                     if(MS0->S7.fluctuate == 0)
16444                         U->C.S_M.WT += U->C.S_M.WT*[value doubleValue]/100;
16445                     else if(MS0->S7.fluctuate == 1)
16446                         U->C.S_M.WT -= U->C.S_M.WT*[value doubleValue]/100;
16447                     else if(MS0->S7.fluctuate == 2)
16448                         U->C.S_M.MP = U->C.S_M.WT*[value doubleValue]/100;
16449                     
16450                     if(U->C.S_M.WT < 0)
16451                         U->C.S_M.WT = 0;
16452                     if(MS0->S7.extendFlag)
16453                         U->C.S_C.WT = U->C.S_M.WT;
16454                     break;
16455                 case 3:
16456                     if(MS0->S7.fluctuate == 0)
16457                         U->C.S_M.STR += U->C.S_M.STR*[value doubleValue]/100;
16458                     else if(MS0->S7.fluctuate == 1)
16459                         U->C.S_M.STR -= U->C.S_M.STR*[value doubleValue]/100;
16460                     else if(MS0->S7.fluctuate == 2)
16461                         U->C.S_M.STR = U->C.S_M.STR*[value doubleValue]/100;
16462                     
16463                     if(U->C.S_M.STR < 0)
16464                         U->C.S_M.STR = 0;
16465                     if(MS0->S7.extendFlag)
16466                         U->C.S_C.STR = U->C.S_M.STR;
16467                     break;
16468                 case 4:
16469                     if(MS0->S7.fluctuate == 0)
16470                         U->C.S_M.VIT += U->C.S_M.VIT*[value doubleValue]/100;
16471                     else if(MS0->S7.fluctuate == 1)
16472                         U->C.S_M.VIT -= U->C.S_M.VIT*[value doubleValue]/100;
16473                     else if(MS0->S7.fluctuate == 2)
16474                         U->C.S_M.VIT = U->C.S_M.VIT*[value doubleValue]/100;
16475                     
16476                     if(U->C.S_M.VIT < 0)
16477                         U->C.S_M.VIT = 0;
16478                     if(MS0->S7.extendFlag)
16479                         U->C.S_C.VIT = U->C.S_M.VIT;
16480                     break;
16481                 case 5:
16482                     if(MS0->S7.fluctuate == 0)
16483                         U->C.S_M.AGI += U->C.S_M.AGI*[value doubleValue]/100;
16484                     else if(MS0->S7.fluctuate == 1)
16485                         U->C.S_M.AGI -= U->C.S_M.AGI*[value doubleValue]/100;
16486                     else if(MS0->S7.fluctuate == 2)
16487                         U->C.S_M.AGI = U->C.S_M.AGI*[value doubleValue]/100;
16488                     
16489                     if(U->C.S_M.AGI < 0)
16490                         U->C.S_M.AGI = 0;
16491                     if(MS0->S7.extendFlag)
16492                         U->C.S_C.AGI = U->C.S_M.AGI;
16493                     break;
16494                 case 6:
16495                     if(MS0->S7.fluctuate == 0)
16496                         U->C.S_M.DEX += U->C.S_M.DEX*[value doubleValue]/100;
16497                     else if(MS0->S7.fluctuate == 1)
16498                         U->C.S_M.DEX -= U->C.S_M.DEX*[value doubleValue]/100;
16499                     else if(MS0->S7.fluctuate == 2)
16500                         U->C.S_M.DEX = U->C.S_M.DEX*[value doubleValue]/100;
16501                     
16502                     if(U->C.S_M.DEX < 0)
16503                         U->C.S_M.DEX = 0;
16504                     if(MS0->S7.extendFlag)
16505                         U->C.S_C.DEX = U->C.S_M.DEX;
16506                     break;
16507                 case 7:
16508                     if(MS0->S7.fluctuate == 0)
16509                         U->C.S_M.MEN += U->C.S_M.MEN*[value doubleValue]/100;
16510                     else if(MS0->S7.fluctuate == 1)
16511                         U->C.S_M.MEN -= U->C.S_M.MEN*[value doubleValue]/100;
16512                     else if(MS0->S7.fluctuate == 2)
16513                         U->C.S_M.MEN = U->C.S_M.MEN*[value doubleValue]/100;
16514                     
16515                     if(U->C.S_M.MEN < 0)
16516                         U->C.S_M.MEN = 0;
16517                     if(MS0->S7.extendFlag)
16518                         U->C.S_C.MEN = U->C.S_M.MEN;
16519                     break;
16520                 case 8:
16521                     if(MS0->S7.fluctuate == 0)
16522                         U->C.S_M.INT += U->C.S_M.INT*[value doubleValue]/100;
16523                     else if(MS0->S7.fluctuate == 1)
16524                         U->C.S_M.INT -= U->C.S_M.INT*[value doubleValue]/100;
16525                     else if(MS0->S7.fluctuate == 2)
16526                         U->C.S_M.INT = U->C.S_M.INT*[value doubleValue]/100;
16527                     
16528                     if(U->C.S_M.INT < 0)
16529                         U->C.S_M.INT = 0;
16530                     if(MS0->S7.extendFlag)
16531                         U->C.S_C.INT = U->C.S_M.INT;
16532                     break;
16533                 case 9:
16534                     if(MS0->S7.fluctuate == 0)
16535                         U->C.S_M.LUK += U->C.S_M.LUK*[value doubleValue]/100;
16536                     else if(MS0->S7.fluctuate == 1)
16537                         U->C.S_M.LUK -= U->C.S_M.LUK*[value doubleValue]/100;
16538                     else if(MS0->S7.fluctuate == 2)
16539                         U->C.S_M.LUK = U->C.S_M.LUK*[value doubleValue]/100;
16540                     
16541                     if(U->C.S_M.LUK < 0)
16542                         U->C.S_M.LUK = 0;
16543                     if(MS0->S7.extendFlag)
16544                         U->C.S_C.LUK = U->C.S_M.LUK;
16545                     break;
16546                 case 10:
16547                     if(MS0->S7.fluctuate == 0)
16548                         U->C.S_M.MOV += U->C.S_M.MOV*[value doubleValue]/100;
16549                     else if(MS0->S7.fluctuate == 1)
16550                         U->C.S_M.MOV -= U->C.S_M.MOV*[value doubleValue]/100;
16551                     else if(MS0->S7.fluctuate == 2)
16552                         U->C.S_M.MOV = U->C.S_M.MOV*[value doubleValue]/100;
16553                     
16554                     if(U->C.S_M.MOV < 0)
16555                         U->C.S_M.MOV = 0;
16556                     if(MS0->S7.extendFlag)
16557                         U->C.S_C.MOV = U->C.S_M.MOV;
16558                     break;
16559                 case 11:
16560                     if(MS0->S7.fluctuate == 0)
16561                         U->C.S_M.MEL += U->C.S_M.MEL*[value doubleValue]/100;
16562                     else if(MS0->S7.fluctuate == 1)
16563                         U->C.S_M.MEL -= U->C.S_M.MEL*[value doubleValue]/100;
16564                     else if(MS0->S7.fluctuate == 2)
16565                         U->C.S_M.MEL = U->C.S_M.MEL*[value doubleValue]/100;
16566                     
16567                     if(U->C.S_C.MEL < 0)
16568                         U->C.S_M.MEL = 0;
16569                     if(MS0->S7.extendFlag)
16570                         U->C.S_C.MEL = U->C.S_M.MEL;
16571                     break;
16572                 case 12:
16573                     if(MS0->S7.fluctuate == 0)
16574                         U->C.S_C.MIS += U->C.S_M.MIS*[value doubleValue]/100;
16575                     else if(MS0->S7.fluctuate == 1)
16576                         U->C.S_C.MIS -= U->C.S_M.MIS*[value doubleValue]/100;
16577                     else if(MS0->S7.fluctuate == 2)
16578                         U->C.S_C.MIS = U->C.S_M.MIS*[value doubleValue]/100;
16579                     
16580                     if(U->C.S_C.MIS < 0)
16581                         U->C.S_C.MIS = 0;
16582                     if(MS0->S7.extendFlag)
16583                         U->C.S_C.MIS = U->C.S_M.MIS;
16584                     break;
16585                 case 13:
16586                     if(MS0->S7.fluctuate == 0)
16587                         U->C.S_M.HIT += U->C.S_M.HIT*[value doubleValue]/100;
16588                     else if(MS0->S7.fluctuate == 1)
16589                         U->C.S_M.HIT -= U->C.S_M.HIT*[value doubleValue]/100;
16590                     else if(MS0->S7.fluctuate == 2)
16591                         U->C.S_M.HIT = U->C.S_M.HIT*[value doubleValue]/100;
16592                     
16593                     if(U->C.S_M.HIT < 0)
16594                         U->C.S_M.HIT = 0;
16595                     if(MS0->S7.extendFlag)
16596                         U->C.S_C.HIT = U->C.S_M.HIT;
16597                     break;
16598                 case 14:
16599                     if(MS0->S7.fluctuate == 0)
16600                         U->C.S_M.DOD += U->C.S_M.DOD*[value doubleValue]/100;
16601                     else if(MS0->S7.fluctuate == 1)
16602                         U->C.S_M.DOD -= U->C.S_M.DOD*[value doubleValue]/100;
16603                     else if(MS0->S7.fluctuate == 2)
16604                         U->C.S_M.DOD = U->C.S_M.DOD*[value doubleValue]/100;
16605                     
16606                     if(U->C.S_M.DOD < 0)
16607                         U->C.S_M.DOD = 0;
16608                     if(MS0->S7.extendFlag)
16609                         U->C.S_C.DOD = U->C.S_M.DOD;
16610                     break;
16611                 case 15:
16612                     if(MS0->S7.fluctuate == 0)
16613                         U->C.S_M.REA += U->C.S_M.REA*[value doubleValue]/100;
16614                     else if(MS0->S7.fluctuate == 1)
16615                         U->C.S_M.REA -= U->C.S_M.REA*[value doubleValue]/100;
16616                     else if(MS0->S7.fluctuate == 2)
16617                         U->C.S_M.REA = U->C.S_M.REA*[value doubleValue]/100;
16618                     
16619                     if(U->C.S_M.REA < 0)
16620                         U->C.S_M.REA = 0;
16621                     if(MS0->S7.extendFlag)
16622                         U->C.S_C.REA = U->C.S_M.REA;
16623                     break;
16624                 case 16:
16625                     if(MS0->S7.fluctuate == 0)
16626                         U->C.S_M.SKI += U->C.S_M.SKI*[value doubleValue]/100;
16627                     else if(MS0->S7.fluctuate == 1)
16628                         U->C.S_M.SKI -= U->C.S_M.SKI*[value doubleValue]/100;
16629                     else if(MS0->S7.fluctuate == 2)
16630                         U->C.S_M.SKI = U->C.S_M.SKI*[value doubleValue]/100;
16631                     
16632                     if(U->C.S_M.SKI < 0)
16633                         U->C.S_M.SKI = 0;
16634                     if(MS0->S7.extendFlag)
16635                         U->C.S_C.SKI = U->C.S_M.SKI;
16636                     break;
16637                 case 17:
16638                     U->C.name =  [MS0->S7.value retain];
16639                     break;
16640                 case 18:
16641                     U->C.nameNick =  [MS0->S7.value retain];
16642                     break;
16643                 case 19:
16644                     U->C.nameClass =  [MS0->S7.value retain];
16645                     break;
16646                 case 20:
16647                     U->C.S_C.typeMONS =  [MS0->S7.value doubleValue];
16648                     break;
16649                 case 21:
16650                     U->C.S_C.typeMOVE =  [MS0->S7.value doubleValue];
16651                     break;
16652                 case 22:
16653                     if(MS0->S7.fluctuate == 0)
16654                         U->C.S_M.cSupply += U->C.S_M.cSupply*[value doubleValue]/100;
16655                     else if(MS0->S7.fluctuate == 1)
16656                         U->C.S_M.cSupply -= U->C.S_M.cSupply*[value doubleValue]/100;
16657                     else if(MS0->S7.fluctuate == 2)
16658                         U->C.S_M.cSupply = U->C.S_M.cSupply*[value doubleValue]/100;
16659                     
16660                     if(U->C.S_M.cSupply < 0)
16661                         U->C.S_M.cSupply = 0;
16662                     if(MS0->S7.extendFlag)
16663                         U->C.S_C.cSupply = U->C.S_M.cSupply;
16664                     break;
16665                 case 23:
16666                     if(MS0->S7.fluctuate == 0)
16667                         U->C.S_M.cFood += U->C.S_M.cFood*[value doubleValue]/100;
16668                     else if(MS0->S7.fluctuate == 1)
16669                         U->C.S_M.cFood -= U->C.S_M.cFood*[value doubleValue]/100;
16670                     else if(MS0->S7.fluctuate == 2)
16671                         U->C.S_M.cFood = U->C.S_M.cFood*[value doubleValue]/100;
16672                     
16673                     
16674                     if(U->C.S_M.cFood < 0)
16675                         U->C.S_M.cFood = 0;
16676                     if(MS0->S7.extendFlag)
16677                         U->C.S_C.cFood = U->C.S_M.cFood;
16678                     break;
16679                 case 24:
16680                     if(MS0->S7.fluctuate == 0)
16681                         U->C.S_M.cMoney += U->C.S_M.cMoney*[value doubleValue]/100;
16682                     else if(MS0->S7.fluctuate == 1)
16683                         U->C.S_M.cMoney -= U->C.S_M.cMoney*[value doubleValue]/100;
16684                     else if(MS0->S7.fluctuate == 2)
16685                         U->C.S_M.cMoney = U->C.S_M.cMoney*[value doubleValue]/100;
16686                     
16687                     if(U->C.S_M.cMoney < 0)
16688                         U->C.S_M.cMoney = 0;
16689                     if(MS0->S7.extendFlag)
16690                         U->C.S_C.cMoney = U->C.S_M.cMoney;
16691                     break;
16692                 case 25:
16693                     if(MS0->S7.fluctuate == 0)
16694                         U->C.S_M.cWT += U->C.S_M.cWT*[value doubleValue]/100;
16695                     else if(MS0->S7.fluctuate == 1)
16696                         U->C.S_M.cWT -= U->C.S_M.cWT*[value doubleValue]/100;
16697                     else if(MS0->S7.fluctuate == 2)
16698                         U->C.S_M.cWT = U->C.S_M.cWT*[value doubleValue]/100;
16699                     
16700                     if(U->C.S_M.cWT < 0)
16701                         U->C.S_M.cWT = 0;
16702                     if(MS0->S7.extendFlag)
16703                         U->C.S_C.cWT = U->C.S_M.cWT;
16704                     break;
16705                 case 26:
16706                     if(MS0->S7.fluctuate == 0)
16707                         U->C.S_M.vigor += U->C.S_M.vigor*[value doubleValue]/100;
16708                     else if(MS0->S7.fluctuate == 1)
16709                         U->C.S_M.vigor -= U->C.S_M.vigor*[value doubleValue]/100;
16710                     else if(MS0->S7.fluctuate == 2)
16711                         U->C.S_M.vigor = U->C.S_M.vigor*[value doubleValue]/100;
16712                     
16713                     if(U->C.S_M.vigor < 0)
16714                         U->C.S_M.vigor = 0;
16715                     if(MS0->S7.extendFlag)
16716                         U->C.S_C.vigor = U->C.S_M.vigor;
16717                     break;
16718                     
16719                 default:
16720                     break;
16721             }
16722         }
16723     }
16724     
16725     return U;
16726 }
16727
16728
16729 -(MAPSCRIPT0*)setResource:(MAPSCRIPT0*)MS0{
16730     
16731     if(MS0->S6.team == 0){
16732         
16733         if(MS0->S6.RCsupply){
16734             if(MS0->S6.RCsupplyS){
16735                 if(MS0->S6.RCsupplyAdd)
16736                     P[0].resource += MS0->S6.RCsupplyValue;
16737                 else
16738                     P[0].resource -= MS0->S6.RCsupplyValue;
16739             }else{
16740                 if(MS0->S6.RCsupplyAdd)
16741                     P[0].resource += [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
16742                 else
16743                     P[0].resource -= [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
16744             }
16745         }
16746         if(MS0->S6.RCfood){
16747             if(MS0->S6.RCfoodS){
16748                 if(MS0->S6.RCfoodAdd)
16749                     P[0].food += MS0->S6.RCfoodValue;
16750                 else
16751                     P[0].food -= MS0->S6.RCfoodValue;
16752             }else{
16753                 if(MS0->S6.RCfoodAdd)
16754                     P[0].food += [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
16755                 else
16756                     P[0].food -= [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
16757             }
16758         }
16759         if(MS0->S6.RCmoney){
16760             if(MS0->S6.RCmoneyS){
16761                 if(MS0->S6.RCmoneyAdd)
16762                     P[0].money += MS0->S6.RCmoneyValue;
16763                 else
16764                     P[0].money -= MS0->S6.RCmoneyValue;
16765             }else{
16766                 if(MS0->S6.RCmoneyAdd)
16767                     P[0].money += [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
16768                 else
16769                     P[0].money -= [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
16770             }
16771         }
16772         
16773     }else if(MS0->S6.team == 1){
16774         if(MS0->S6.RCsupply){
16775         if(MS0->S6.RCsupplyS){
16776             if(MS0->S6.RCsupplyAdd)
16777                 P[1].resource += MS0->S6.RCsupplyValue;
16778             else
16779                 P[1].resource -= MS0->S6.RCsupplyValue;
16780         }else{
16781             if(MS0->S6.RCsupplyAdd)
16782                 P[1].resource += [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
16783             else
16784                 P[1].resource -= [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
16785         }
16786         }
16787     if(MS0->S6.RCfood){
16788         if(MS0->S6.RCfoodS){
16789             if(MS0->S6.RCfoodAdd)
16790                 P[1].food += MS0->S6.RCfoodValue;
16791             else
16792                 P[1].food -= MS0->S6.RCfoodValue;
16793         }else{
16794             if(MS0->S6.RCfoodAdd)
16795                 P[1].food += [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
16796             else
16797                 P[1].food -= [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
16798         }
16799     }
16800     if(MS0->S6.RCmoney){
16801         if(MS0->S6.RCmoneyS){
16802             if(MS0->S6.RCmoneyAdd)
16803                 P[1].money += MS0->S6.RCmoneyValue;
16804             else
16805                 P[1].money -= MS0->S6.RCmoneyValue;
16806         }else{
16807             if(MS0->S6.RCmoneyAdd)
16808                 P[1].money += [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
16809             else
16810                 P[1].money -= [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
16811         }
16812     }
16813     }else if(MS0->S6.team == 2){
16814         if(MS0->S6.RCsupply){
16815         if(MS0->S6.RCsupplyS){
16816             if(MS0->S6.RCsupplyAdd)
16817                 P[2].resource += MS0->S6.RCsupplyValue;
16818             else
16819                 P[2].resource -= MS0->S6.RCsupplyValue;
16820         }else{
16821             if(MS0->S6.RCsupplyAdd)
16822                 P[2].resource += [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
16823             else
16824                 P[2].resource -= [Hensuu[MS0->S6.RCsupplySelect-1] intValue];
16825         }
16826         }
16827     
16828     if(MS0->S6.RCfood){
16829         if(MS0->S6.RCfoodS){
16830             if(MS0->S6.RCfoodAdd)
16831                 P[2].food += MS0->S6.RCfoodValue;
16832             else
16833                 P[2].food -= MS0->S6.RCfoodValue;
16834         }else{
16835             if(MS0->S6.RCfoodAdd)
16836                 P[2].food += [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
16837             else
16838                 P[2].food -= [Hensuu[MS0->S6.RCfoodSelect-1] intValue];
16839         }
16840     }
16841     if(MS0->S6.RCmoney){
16842         if(MS0->S6.RCmoneyS){
16843             if(MS0->S6.RCmoneyAdd)
16844                 P[2].money += MS0->S6.RCmoneyValue;
16845             else
16846                 P[2].money -= MS0->S6.RCmoneyValue;
16847         }else{
16848             if(MS0->S6.RCmoneyAdd)
16849                 P[2].money += [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
16850             else
16851                 P[2].money -= [Hensuu[MS0->S6.RCmoneySelect-1] intValue];
16852         }
16853     }
16854     }
16855     
16856     if(P[0].resource < 0) P[0].resource = 0;
16857     if(P[1].resource < 0) P[1].resource = 0;
16858     if(P[2].resource < 0) P[2].resource = 0;
16859     
16860     if(P[0].food < 0) P[0].food = 0;
16861     if(P[1].food < 0) P[1].food = 0;
16862     if(P[2].food < 0) P[2].food = 0;
16863     
16864     if(P[0].money < 0) P[0].money = 0;
16865     if(P[1].money < 0) P[1].money = 0;
16866     if(P[2].money < 0) P[2].money = 0;
16867     
16868     MS0->succeessfulFlag = true;
16869     MS0->endFlag = true;
16870     return MS0;
16871 }
16872
16873 -(MAPSCRIPT0*)setLabel:(MAPSCRIPT0*)MS0{
16874
16875     //NSLog(@"%d", MSDP0top->succeessfulFlag);
16876     MS0->succeessfulFlag = true;
16877     MS0->endFlag = true;
16878     return MS0;
16879 }
16880
16881 -(MAPSCRIPT0*)setComment:(MAPSCRIPT0*)MS0{
16882     
16883     MS0->succeessfulFlag = true;
16884     MS0->endFlag = true;
16885     return MS0;
16886 }
16887
16888
16889 -(MAPSCRIPT0*)setSelection:(MAPSCRIPT0*)MS0{
16890     
16891     static bool initFlag = false;
16892     
16893     if(!initFlag){
16894         initFlag = true;
16895         
16896         MAPSCRIPT2 *MS2top = MS0->S2;
16897         
16898         slctPoint.x = [mapWindow frame].origin.x + 100;
16899         slctPoint.y = [mapWindow frame].origin.y + 300;
16900         
16901         [slctBtn1 setHidden:YES];
16902         [slctBtn2 setHidden:YES];
16903         [slctBtn3 setHidden:YES];
16904         [slctBtn4 setHidden:YES];
16905         [slctBtn5 setHidden:YES];
16906         [slctBtn6 setHidden:YES];
16907         [slctBtn7 setHidden:YES];
16908         [slctBtn8 setHidden:YES];
16909         [slctBtn9 setHidden:YES];
16910         
16911         for(int i = 1;MS0->S2;i++){
16912             
16913             if(i == 1){
16914                 [slctBtn1 setTitle:MS0->S2->selection];
16915                 [slctBtn1 setHidden:NO];
16916                 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 60) display:YES];
16917             }
16918             if(i == 2){
16919                 [slctBtn2 setTitle:MS0->S2->selection];
16920                 [slctBtn2 setHidden:NO];
16921                 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 90) display:YES];
16922             }
16923             if(i == 3){
16924                 [slctBtn3 setTitle:MS0->S2->selection];
16925                 [slctBtn3 setHidden:NO];
16926                 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 120) display:YES];
16927             }
16928             
16929             if(i == 4){
16930                 [slctBtn4 setTitle:MS0->S2->selection];
16931                 [slctBtn4 setHidden:NO];
16932                 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 150) display:YES];
16933             }
16934             if(i == 5){
16935                 [slctBtn5 setTitle:MS0->S2->selection];
16936                 [slctBtn5 setHidden:NO];
16937                 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 180) display:YES];
16938             }
16939             if(i == 6){
16940                 [slctBtn6 setTitle:MS0->S2->selection];
16941                 [slctBtn6 setHidden:NO];
16942                 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 210) display:YES];
16943             }
16944             if(i == 7){
16945                 [slctBtn7 setTitle:MS0->S2->selection];
16946                 [slctBtn7 setHidden:NO];
16947                 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 240) display:YES];
16948             }
16949             if(i == 8){
16950                 [slctBtn8 setTitle:MS0->S2->selection];
16951                 [slctBtn8 setHidden:NO];
16952                 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 270) display:YES];
16953             }
16954             if(i == 9){
16955                 [slctBtn9 setTitle:MS0->S2->selection];
16956                 [slctBtn9 setHidden:NO];
16957                 [selectionWindow setFrame:NSMakeRect(slctPoint.x, slctPoint.y, 400, 300) display:YES];
16958             }
16959             slctBtnNum = i;
16960             if(slctBtnNum > 9)
16961                 slctBtnNum = 9;
16962             MS0->S2 = MS0->S2->next;
16963         }
16964         MS0->S2 = MS2top;
16965         
16966         
16967         
16968         [selectionWindow makeKeyAndOrderFront:nil];
16969     }
16970     
16971     
16972     if(slctedBtnNum > 0){
16973         MAPSCRIPT0 *CRMS0 = MS0;
16974         
16975         MS0 = MSDPtop;
16976         while(MS0){
16977             MS0->endFlag = false;
16978             MS0 = MS0->next;
16979         }MS0 = CRMS0;
16980         
16981         MAPSCRIPT2 *MS2top = MS0->S2;
16982         MAPSCRIPT2 *CRMS2;
16983         
16984         for(int i = 1;i < slctedBtnNum;i++){
16985             MS0->S2 = MS0->S2->next;
16986         }
16987             CRMS2 = MS0->S2;
16988         
16989         MS0->S2 = MS2top;
16990         
16991         MS0 = MSDPtop;
16992         if([CRMS2->labelJump isEqualToString:MS0->label]){
16993             MS0->endFlag = false;
16994         }else{
16995             
16996             while (MS0) {
16997                 
16998                 if(MS0->next)
16999                     if([CRMS2->labelJump isEqualToString:MS0->next->label]){
17000                         if(MS0->type == 6 && MS0->endFlag){
17001                             
17002                         }else{
17003                             MS0->succeessfulFlag = true;
17004                         }
17005                         MS0->endFlag = true;
17006                         MS0 = MS0->next;
17007                         break;
17008                     }
17009                 if(MS0->type == 6 && MS0->endFlag){
17010                     
17011                 }else{
17012                     MS0->succeessfulFlag = true;
17013                 }
17014                 MS0->endFlag = true;
17015                 MS0 = MS0->next;
17016             }
17017         }
17018         if(!MS0){
17019             MS0 = CRMS0;
17020             return MS0;
17021         }
17022         
17023         MS0->endFlag = true;
17024         MS0->succeessfulFlag = true;
17025         initFlag = false;
17026         slctedBtnNum = 0;
17027         }
17028     
17029     return MS0;
17030 }
17031
17032 -(MAPSCRIPT0*)setAppearance:(MAPSCRIPT0*)MS0{
17033     
17034     MS3T = MS0->S3;
17035     while(MS0->S3){
17036         int x, y;
17037         UNITCHIP u;
17038         u = MS0->S3->U;
17039         x = MS0->S3->x;
17040         y = MS0->S3->y;
17041     
17042         if(unitNum[x][y] == -1){
17043             
17044             if(MS0->S3->flag){
17045                 
17046                 
17047             }else{
17048                 unitTeam[x][y] = MS0->S3->team;
17049                 unitNum[x][y] = u.chipNumb;
17050                 //loadNum[x][y] = u.chipNumb;
17051                 [self addAppearanceStatus:u x:x y:y];
17052             }
17053         }else{
17054             
17055             if(MS0->S3->flag){
17056             
17057             
17058             }else{
17059                 int *p = calloc(1, sizeof(int));
17060                 int *o = calloc(1, sizeof(int));
17061                 appearanceSAIKIflag = false;
17062                 wtflag = 0;
17063                 
17064                 for (int i = 0;i < 1002;i++) {
17065                     for (int k = 0;k < 1002;k++) {
17066                         apprR[i][k] = 0;
17067                     }
17068                 }
17069                 
17070                 [self checkAppearanceRange:5 tX:y tY:x aMap:apprR];
17071                 
17072                 int postInt = 0;
17073                 for (int i = 0;i < 1002;i++) {
17074                     for (int k = 0;k < 1002;k++) {
17075                         if(apprR[i][k] > postInt && unitNum[i][k] == -1){
17076                             postInt = apprR[i][k];
17077                             *p = i;
17078                             *o = k;
17079                         }
17080                     }
17081                 }
17082                 
17083                 if(*p > 0 && *o >0){
17084                     x = *p;
17085                     y = *o;
17086                     unitTeam[x][y] = MS0->S3->team;
17087                     unitNum[x][y] = u.chipNumb;
17088                     //loadNum[x][y] = u.chipNumb;
17089                     [self addAppearanceStatus:u x:x y:y];
17090                 }else{
17091                     MS0->succeessfulFlag = false;
17092                     MS0->endFlag = true;
17093                     MS0->S3 = MS3T;
17094                     return MS0;
17095                 }
17096             }
17097         }
17098         MS0->S3 = MS0->S3->next;
17099     }MS0->S3 = MS3T;
17100     unitColorInitFlag = true;
17101     
17102     MS0->succeessfulFlag = true;
17103     MS0->endFlag = true;
17104     return MS0;
17105 }
17106
17107 -(MAPSCRIPT0*)setDissappearance:(MAPSCRIPT0*)MS0{
17108     
17109     MS5T = MS0->S5;
17110     while(MS0->S5){
17111         int x, y;
17112         UNITCHIP u;
17113         u = MS0->S5->U;
17114         x = MS0->S5->x;
17115         y = MS0->S5->y;
17116         
17117         if(1){
17118
17119
17120             if(MS0->S5->unitNum >= 0){
17121                 unitNum[x][y] = -1;
17122                 unitTeam[x][y] = -1;
17123                 unitNum[x][y] = -1;
17124                 loadNum[x][y] = -1;
17125                 
17126                 U = UTop;
17127                 while(U){
17128                     if(U->ix == x && U->iy == y)
17129                         break;
17130                     U = U->next;
17131                 }
17132                 if(U)
17133                     U->dead = true;
17134                 
17135                 U = UTop;
17136           
17137             }else{
17138                 MS0->succeessfulFlag = false;
17139                 MS0->endFlag = true;
17140                 MS0->S5 = MS5T;
17141                 return MS0;
17142             }
17143             
17144         }
17145         MS0->S5 = MS0->S5->next;
17146     }MS0->S5 = MS5T;
17147     unitColorInitFlag = true;
17148     
17149     MS0->succeessfulFlag = true;
17150     MS0->endFlag = true;
17151     return MS0;
17152 }
17153
17154
17155 -(void)checkAppearanceRange:(int)cnsPow tX:(int)startX tY:(int)startY aMap:(int[][1002])aMap{
17156
17157     if(cnsPow < 0) return;
17158     
17159     int i0;
17160     if(aMap[startY][startX] <= cnsPow)
17161         aMap[startY][startX] = cnsPow;
17162     
17163     if(startY < 0) startY = 0;
17164     if(startX < 0) startX = 0;
17165     if(cnsPow < 0) cnsPow = 0;
17166     
17167     i0 = cnsPow - 1;
17168     
17169     if(aMap[startY-1][startX] >= 0 && cnsPow > 0)
17170         [self checkAppearanceRange:i0 tX:startX tY:startY-1 aMap:aMap];
17171     
17172     i0 = cnsPow - 1;
17173     if(aMap[startY+1][startX] >= 0 && cnsPow > 0)
17174         [self checkAppearanceRange:i0 tX:startX tY:startY+1 aMap:aMap];
17175     
17176     i0 = cnsPow - 1;
17177     if(aMap[startY][startX-1] >= 0 && cnsPow > 0)
17178         [self checkAppearanceRange:i0 tX:startX-1 tY:startY aMap:aMap];
17179     
17180     i0 = cnsPow - 1;
17181     if(aMap[startY][startX+1] >= 0 && cnsPow > 0)
17182         [self checkAppearanceRange:i0 tX:startX+1 tY:startY aMap:aMap];
17183     
17184 }
17185
17186 -(void)addAppearanceStatus:(UNITCHIP)u x:(int)x y:(int)y{
17187     registerNum++;
17188     
17189     int omgCnt = 0;
17190     U = UTop;
17191     while (U->next) {omgCnt++;
17192         U = U->next;
17193     }
17194     U->next = calloc(1, sizeof(UNIT));
17195     U = U->next;
17196     U->next = NULL;
17197     if(omgCnt == 0) U = UTop;
17198     U->number = registerNum;
17199     U->chipNumber = -1;
17200     U->chipNumberL = -1;
17201     U->C.chipNumb = -1;
17202     U->CL.chipNumb = -1;
17203     
17204     U->x = x;
17205     U->y = y;
17206     
17207     U->C = u;
17208     if(unitTeam[x][y] == 0 || unitTeam[x][y] == 1){
17209         U->team = 0;
17210         if(unitTeam[x][y] == 1){
17211             U->joinArmyFromNext = true;
17212             U->persuasion = true;
17213         }
17214         if(MF[MFselectedRow+1].MS.playerSet1 == 2)
17215             U->CPU = true;
17216     
17217     }
17218     if(unitTeam[x][y] == 2 || unitTeam[x][y] == 3){
17219         U->team = 2;
17220         if(unitTeam[x][y] == 3){
17221             U->joinArmyFromNext = true;
17222             U->persuasion = true;
17223         }
17224         if(MF[MFselectedRow+1].MS.playerSet2 == 2)
17225             U->CPU = true;
17226         
17227     }
17228     if(unitTeam[x][y] == 4 || unitTeam[x][y] == 5){
17229         U->team = 1;
17230         if(unitTeam[x][y] == 5){
17231             U->joinArmyFromNext = true;
17232             U->persuasion = true;
17233         }
17234         U->CPU = true;
17235     }
17236     if(unitTeam[x][y] == -1){
17237         U->team = -1;
17238         if(unitTeam[x][y] == 0){
17239             U->joinArmyFromNext = false;
17240             U->persuasion = true;
17241         }
17242         U->CPU = true;
17243     }
17244     unitNum[x][y] = u.chipNumb;
17245     [self SetUnitStatus:unitNum[x][y]];
17246     
17247     for(int i = 0;i < UCN;i++){
17248         if([U->C.nameID isEqualToString:UC[i].nameID])
17249             U->chipNumber = i;
17250     }
17251     for(int i = 0;i < LCN;i++){
17252         if([U->CL.nameID isEqualToString:LC[i].nameID])
17253             U->chipNumberL = i;
17254     }
17255     for(int i = 0;i < UCN;i++){
17256         if([U->C.nameID isEqualToString:UC[i].nameID])
17257             U->C.chipNumb = i;
17258     }
17259     for(int i = 0;i < LCN;i++){
17260         if([U->CL.nameID isEqualToString:LC[i].nameID])
17261             U->CL.chipNumb = i;
17262     }
17263     
17264     registerNum++;
17265     U = UTop;
17266     
17267 }
17268
17269
17270 -(MAPSCRIPT0*)setWait:(MAPSCRIPT0*)MS0{
17271     
17272     static bool waitin = false;
17273     
17274     if(!waitin){
17275         waitinTime = 0;
17276         waitinTime = MS0->wait;
17277         
17278         waitin = true;
17279     }
17280     
17281     waitSwtichFlag = true;
17282     
17283     if(waitAllOverFlag){
17284         MS0->succeessfulFlag = true;
17285         MS0->endFlag = true;
17286         waitAllOverFlag = false;
17287         waitSwtichFlag = false;
17288         waitin = false;
17289         waitx10flag = false;
17290         waitinTime = 0;
17291     }
17292     
17293     return MS0;
17294 }
17295
17296 -(MAPSCRIPT0*)setBGM:(MAPSCRIPT0*)MS0{
17297     
17298     if(BGMsub)
17299         BGMsub = NULL;
17300     
17301     BGMsub = [MS0->BGM.snd retain];
17302     
17303     [BGMsub setLoops:NO];
17304     [BGMsub play];
17305     
17306     MS0->succeessfulFlag = true;
17307     MS0->endFlag = true;
17308     
17309     return MS0;
17310 }
17311
17312 -(MAPSCRIPT0*)setSE:(MAPSCRIPT0*)MS0{
17313     
17314     if(SEsub)
17315         [SEsub stop];
17316     SEsub = [MS0->SE.snd retain];
17317     
17318     [SEsub play];
17319     
17320     MS0->succeessfulFlag = true;
17321     MS0->endFlag = true;
17322     
17323     return MS0;
17324 }
17325
17326 -(MAPSCRIPT0*)setTitleBack:(MAPSCRIPT0*)MS0{
17327     
17328     backTitleFlag = true;
17329     battleBegin = false;
17330     
17331     MS0->succeessfulFlag = true;
17332     MS0->endFlag = true;
17333     
17334     return MS0;
17335 }
17336
17337 -(MAPSCRIPT0*)setStageClear:(MAPSCRIPT0*)MS0{
17338     
17339     stageClearFlag = true;
17340     
17341     if(MS0->sc.edcdFlag)
17342         stageClearFlag2 = true;
17343     battleBegin = false;
17344     
17345     MS0->succeessfulFlag = true;
17346     MS0->endFlag = true;
17347     
17348     return MS0;
17349 }
17350
17351 -(MAPSCRIPT0*)setGameOver:(MAPSCRIPT0*)MS0{
17352     
17353     gaov.img = MS0->gaov.img;
17354     
17355     gameOverFlag = true;
17356     battleBegin = false;
17357     
17358     MS0->succeessfulFlag = true;
17359     MS0->endFlag = true;
17360     
17361     return MS0;
17362 }
17363
17364 -(IBAction)gameOverSubmit:(id)sender{
17365
17366     
17367     gaov.img = nil;
17368     
17369     [BGMsub stop];
17370     BGMsub = NULL;
17371     
17372     [GameOverWindow close];
17373     [titleWindow makeKeyAndOrderFront:nil];
17374     
17375 }
17376
17377 -(IBAction)battleReadyUpStartBtn:(id)sender{
17378
17379
17380     P[0].resource = [battleReadyUpSupply1 intValue];
17381     P[0].food = [battleReadyUpFood1 intValue];
17382     P[0].money = [battleReadyUpMoney1 intValue];
17383     
17384     P[1].resource = [battleReadyUpSupply2 intValue];
17385     P[1].food = [battleReadyUpFood2 intValue];
17386     P[1].money = [battleReadyUpMoney2 intValue];
17387
17388     setBattleModeFlag = false;
17389     [bsWindow close];
17390     
17391 }
17392
17393 -(IBAction)battleReadyUpState1:(id)sender{
17394     retardhelp1 = true;
17395 }
17396 -(IBAction)battleReadyUpState2:(id)sender{
17397     retardhelp2 = true;
17398 }
17399
17400
17401
17402
17403
17404
17405
17406 -(IBAction)selectionBtn1:(id)sender{
17407     slctedBtnNum = 1;
17408     [selectionWindow close];
17409 }
17410 -(IBAction)selectionBtn2:(id)sender{
17411     slctedBtnNum = 2;
17412     [selectionWindow close];
17413 }
17414 -(IBAction)selectionBtn3:(id)sender{
17415     slctedBtnNum = 3;
17416     [selectionWindow close];
17417 }
17418 -(IBAction)selectionBtn4:(id)sender{
17419     slctedBtnNum = 4;
17420     [selectionWindow close];
17421 }
17422 -(IBAction)selectionBtn5:(id)sender{
17423     slctedBtnNum = 5;
17424     [selectionWindow close];
17425 }
17426 -(IBAction)selectionBtn6:(id)sender{
17427     slctedBtnNum = 6;
17428     [selectionWindow close];
17429 }
17430 -(IBAction)selectionBtn7:(id)sender{
17431     slctedBtnNum = 7;
17432     [selectionWindow close];
17433 }
17434 -(IBAction)selectionBtn8:(id)sender{
17435     slctedBtnNum = 8;
17436     [selectionWindow close];
17437 }
17438 -(IBAction)selectionBtn9:(id)sender{
17439     slctedBtnNum = 9;
17440     [selectionWindow close];
17441 }
17442
17443
17444
17445 -(void)HensuuLoad{
17446     
17447     NSString *directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
17448     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
17449     
17450     
17451     NSData *InitialData = [NSData dataWithContentsOfFile:@"data/Others/var.txt"];
17452     NSString *pathVar = @"data/Others/var.txt";
17453     NSString *fileData = @"";
17454     
17455     if(!InitialData){
17456         [[NSFileManager defaultManager] createFileAtPath:pathVar contents:nil attributes:nil];
17457     }
17458     
17459     HensuuNum = 0;
17460     fileData = [NSString stringWithContentsOfFile:pathVar encoding:NSUTF8StringEncoding error:nil];
17461     NSArray *fileDataArray = [fileData componentsSeparatedByString:@"\n"];
17462     
17463     for(int i = 0;i < [fileDataArray count];i++){
17464         
17465         NSArray *item = [[fileDataArray objectAtIndex:i] componentsSeparatedByString:@","];
17466         
17467         Hensuu[i] = [[item objectAtIndex:1] retain];
17468         HensuuName[i] = [[item objectAtIndex:2] retain];
17469         HensuuNum++;
17470     }
17471     
17472     
17473 }
17474
17475
17476 -(void)displaySideMenu{
17477     
17478     [FSMenu setFrameOrigin:NSMakePoint([fsWindow frame].origin.x + [fsWindow frame].size.width/2 - FSMenu.frame.size.width/2,
17479                                        [fsWindow frame].origin.y + [fsWindow frame].size.height/2 - FSMenu.frame.size.height/2)];
17480     [menuPanel close];
17481     moveFlag = false;
17482     attackFlag = false;
17483     summonFlag = false;
17484     menuDisplayFlag = false;
17485     [FSMenu makeKeyAndOrderFront:nil];
17486     
17487     coolTime = true;
17488 }
17489
17490 -(IBAction)FSVsave:(id)sender{
17491     
17492     [saveGamePanel setFrameOrigin:NSMakePoint([fsWindow frame].origin.x + [fsWindow frame].size.width/2 - saveGamePanel.frame.size.width/2,
17493                                        [fsWindow frame].origin.y + [fsWindow frame].size.height/2 - saveGamePanel.frame.size.height/2)];
17494     
17495     [self saveGameDataDatViewImage];
17496     
17497     [saveGameTF setStringValue:@""];
17498     
17499     [saveGamePanel makeKeyAndOrderFront:nil];
17500     
17501 }
17502
17503 -(IBAction)FSVtitle:(id)sender{
17504     
17505     stopByFSVmenuFlag = false;
17506     [BGMsub stop];
17507     BGMsub = NULL;
17508     if(titleBGM) [titleBGM play];
17509
17510     [titleWindow makeKeyAndOrderFront:nil];
17511     [fsWindow close];
17512     [FSMenu close];
17513     
17514     esSceneProc = 0;
17515     
17516     
17517     endGameCondition = false;
17518     initMapFlag = false;
17519     TeamCountFlag = false;
17520     initStatusFlag = false;
17521     battleBegin = false;
17522     startES = false;
17523     
17524     cpuModeMOVEflag = false;
17525     cpuModeATTACKflag = false;
17526     
17527     redWinFlag = false;
17528     blueWinFlag = false;
17529     cpuAImodeflag = false;
17530     cpuTurnEndFlag = true;
17531     backTitleFlag = false;
17532     backTitleFlag2 = true;
17533     waitSwtichFlag = false;
17534     battleReadyUpFlag = false;
17535     setBattleModeFlag = false;
17536     mapChipDataLoadProc = 0;
17537     
17538     wtRdy = false;
17539     wtRdy2 = false;
17540     
17541     Uselected = NULL;
17542     
17543 }
17544 -(IBAction)FSVcancel:(id)sender{
17545     
17546     stopByFSVmenuFlag = false;
17547     coolTime = false;
17548     [FSMenu close];
17549     
17550 }
17551
17552
17553 -(void)displaySaveFileDialog{
17554
17555     [saveDataList initFileDirectory];
17556     [self initSaveFileInputList];
17557     [saveFileDialog makeKeyAndOrderFront:nil];
17558 }
17559
17560
17561 -(IBAction)saveFileInputSubmit:(id)sender{
17562
17563     if([saveFileInputTF stringValue] == nil || [[saveFileInputTF stringValue] isEqualToString:@""]){
17564         return;
17565     }
17566     
17567     bahBugFixFlag = false;
17568     saveFileFlag = false;
17569     dialogNumber = 1;
17570     evActive = false;
17571     
17572     startOrEndFlag = false;
17573     EventViewDraw = true;
17574     startES = false;
17575     BGMrunedFlag = false;
17576     BGMchangedFlag = false;
17577     if(BGMes)
17578         [BGMes stop];
17579     SErunedFlag = false;
17580     SEchangedFlag = false;
17581     if(SEes)
17582         [SEes stop];
17583     [titleWindow makeKeyAndOrderFront:nil];
17584     if(titleBGM) [titleBGM play];
17585     [esWindow close];
17586     
17587     saveFileNameSDL = [[saveFileInputTF stringValue] retain];
17588     SC[storyNumb].saveFileName = [saveFileNameSDL retain];
17589     [saveDataList saveSaveList];
17590     [levelList saveLevelList];
17591     
17592     [titleWindow makeKeyAndOrderFront:nil];
17593     [saveFileInputPanel close];
17594 }
17595 -(IBAction)saveFileInputCancel:(id)sender{
17596
17597     bahBugFixFlag = false;
17598     saveFileFlag = false;
17599     dialogNumber = 1;
17600     evActive = false;
17601     
17602     startOrEndFlag = false;
17603     EventViewDraw = true;
17604     startES = false;
17605     BGMrunedFlag = false;
17606     BGMchangedFlag = false;
17607     if(BGMes)
17608         [BGMes stop];
17609     SErunedFlag = false;
17610     SEchangedFlag = false;
17611     if(SEes)
17612         [SEes stop];
17613     [titleWindow makeKeyAndOrderFront:nil];
17614     if(titleBGM) [titleBGM play];
17615     [esWindow close];
17616     
17617     saveFileNameSDL = [@"preset.txt" retain];
17618     SC[storyNumb].saveFileName = [saveFileNameSDL retain];
17619     [saveDataList saveSaveList];
17620     
17621     [titleWindow makeKeyAndOrderFront:nil];
17622     [saveFileInputPanel close];
17623 }
17624
17625 -(IBAction)saveFileDialogSubmit:(id)sender{
17626
17627     saveFileFlag = true;
17628     [saveFileInputPanel makeKeyAndOrderFront:nil];
17629     [fsWindow close];
17630     [saveFileDialog close];
17631
17632 }
17633 -(IBAction)saveFileDialogCancel:(id)sender{
17634
17635     saveFileNameSDL = [@"preset.txt" retain];
17636     SC[storyNumb].saveFileName = [saveFileNameSDL retain];
17637     [saveDataList saveSaveList];
17638
17639     bahBugFixFlag = false;
17640     saveFileFlag = false;
17641     dialogNumber = 1;
17642     evActive = false;
17643     
17644     startOrEndFlag = false;
17645     EventViewDraw = true;
17646     startES = false;
17647     BGMrunedFlag = false;
17648     BGMchangedFlag = false;
17649     if(BGMes)
17650         [BGMes stop];
17651     SErunedFlag = false;
17652     SEchangedFlag = false;
17653     if(SEes)
17654         [SEes stop];
17655     [titleWindow makeKeyAndOrderFront:nil];
17656     if(titleBGM) [titleBGM play];
17657     [esWindow close];
17658     
17659     saveFileFlag = true;
17660     [titleWindow makeKeyAndOrderFront:nil];
17661
17662     [fsWindow close];
17663     [saveFileDialog close];
17664
17665 }
17666
17667 -(void)initSaveFileInputList{
17668
17669     [self willChangeValueForKey:@"saveFileInputListMA"];
17670     [saveFileInputListMA removeAllObjects];
17671     [self didChangeValueForKey:@"saveFileInputListMA"];
17672     
17673     
17674     for(int i = 1;i <= saveNumb;i++){
17675         
17676         
17677         NSMutableDictionary* dict = [NSMutableDictionary new];
17678         [dict setValue:[NSString stringWithFormat:@"%@", SDL[i].name] forKey:@"name"];
17679         [self willChangeValueForKey:@"saveFileInputListMA"];
17680         [saveFileInputListMA addObject:dict];
17681         [self didChangeValueForKey:@"saveFileInputListMA"];
17682     }
17683     
17684 }
17685
17686 -(void)initLoadFileOutputList{
17687     
17688     [self willChangeValueForKey:@"loadFileOutputListMA"];
17689     [loadFileOutputListMA removeAllObjects];
17690     [self didChangeValueForKey:@"loadFileOutputListMA"];
17691     
17692     
17693     for(int i = 1;i <= saveNumb;i++){
17694         
17695         
17696         if([SC[storyNumb].name isEqualToString:SDL[i].levelName]){
17697             NSMutableDictionary* dict = [NSMutableDictionary new];
17698             [dict setValue:[NSString stringWithFormat:@"%@", SDL[i].name] forKey:@"name"];
17699             [self willChangeValueForKey:@"loadFileOutputListMA"];
17700             [loadFileOutputListMA addObject:dict];
17701             [self didChangeValueForKey:@"loadFileOutputListMA"];
17702         }
17703     }
17704     
17705     LFOLrow = -1;
17706     [loadFileOutputListAC setSelectionIndex:9999];
17707     
17708     [loadFileOutputTF setStringValue:[NSString stringWithFormat:@""]];
17709     
17710     [loadFileOutputPanel makeKeyAndOrderFront:nil];
17711         
17712 }
17713
17714 -(IBAction)loadFileOutputSubmit:(id)sender{
17715
17716     if(LFOLrow < 0)
17717         return;
17718     
17719     SC[storyNumb].saveFileName = [SDL[SDLrow+1].name retain];
17720     SC[storyNumb].CrntLevelName = [SDL[SDLrow+1].levelName retain];
17721     SC[storyNumb].scenarioNumbCrnt[scenarioNumb] = [NSString stringWithFormat:@"%d", SDL[SDLrow+1].scenarioNumbCrnt];
17722     SC[storyNumb].scenarioNumbNext[scenarioNumb] = [NSString stringWithFormat:@"%d", SDL[SDLrow+1].scenarioNumbNext];
17723     
17724     [levelList saveLevelList];
17725     [scenarioList initFileDirectory];
17726     [mapEditor initFileDirectoryOthers];
17727     [scenarioList setScenarioList:selectNumb];
17728     
17729     [loadFileOutputPanel close];
17730 }
17731
17732 -(void)initFileOutPutListSet{
17733
17734     SC[storyNumb].saveFileName = NULL;
17735     
17736     [levelList saveLevelList];
17737     [scenarioList setScenarioList:selectNumb];
17738 }
17739
17740 -(IBAction)loadFileOutputCancel:(id)sender{
17741
17742     [loadFileOutputPanel close];
17743 }
17744
17745
17746
17747
17748
17749
17750
17751
17752 -(IBAction)saveGameSubmit:(id)sender{
17753
17754     if([[saveGameTF stringValue] isEqualToString:@""])
17755         return;
17756     
17757     sdd.name = [[saveGameTF stringValue] retain];
17758     datFilePath = calloc(255, sizeof(char));
17759     strcpy(datFilePath, [sdd.name UTF8String]);
17760     
17761     [self saveGameDataDatViewImage];
17762     [self saveGameDataDat];
17763     [saveDataList initSaveList];
17764     
17765     [saveGamePanel close];
17766
17767 }
17768
17769 -(void)saveGameDataDatViewImage{
17770
17771     NSString *directoryPath;
17772     
17773     directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
17774     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
17775     
17776     [fieldView lockFocus];
17777     NSBitmapImageRep* rep = [fieldView bitmapImageRepForCachingDisplayInRect:fieldView.bounds];
17778     [fieldView cacheDisplayInRect:fieldView.bounds toBitmapImageRep:rep];
17779     [fieldView unlockFocus];
17780     
17781     NSMutableData* data = [rep representationUsingType:NSPNGFileType properties:nil];
17782     sdd.img = [[[NSImage alloc] initWithData:data] retain];
17783     
17784     [saveGameIV setImage:sdd.img];
17785     [saveGameIV setImageScaling:NSScaleToFit];
17786     
17787     
17788     NSString *path = @"SaveData/";
17789     
17790     NSArray *ary = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
17791     
17792     [SAV removeAllObjects];
17793     for(NSString *name in ary){
17794         
17795         NSArray *arr = [name componentsSeparatedByString:@".sav"];
17796         
17797         if([arr count] > 1){
17798             [SAV addObject:name];
17799         }
17800     }
17801     
17802     [self willChangeValueForKey:@"saveGameListMA"];
17803     [saveGameListMA removeAllObjects];
17804     [self didChangeValueForKey:@"saveGameListMA"];
17805     
17806     for(int i = 0;i < [SAV count];i++){
17807         
17808         NSMutableDictionary* dict = [NSMutableDictionary new];
17809         [dict setValue:[NSString stringWithFormat:@"%@", SAV[i]] forKey:@"name"];
17810
17811         [self willChangeValueForKey:@"saveGameListMA"];
17812         [saveGameListMA addObject:dict];
17813         [self didChangeValueForKey:@"saveGameListMA"];
17814
17815     }
17816     
17817     [saveGameListAC setSelectionIndex:9999];
17818     
17819 }
17820
17821 -(void)loadGameDataDat{
17822     
17823     if(!datFilePath)
17824         return;
17825     
17826     
17827     
17828     [self loadStruct];
17829     
17830     
17831     NSString *directoryPath;
17832     directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
17833     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
17834     
17835     
17836     NSString *path = @"SaveData/";
17837     path = [path stringByAppendingString:SAV[SDLrow]];
17838     
17839     NSData *data = [[NSData alloc] initWithContentsOfFile:path];
17840
17841     MFselectedRow = sdd2[datRow].MFselectedRow;
17842     MF[MFselectedRow+1].fileName = sdd2[datRow].mapfileName;
17843     
17844     storyNumb = sdd2[datRow].storyNumb;
17845     scenarioNumb = sdd2[datRow].scenarioNumb;
17846
17847     SC[storyNumb].name = sdd2[datRow].levelName;
17848     SC[storyNumb].nameMAP[scenarioNumb] = sdd2[datRow].scenarioName;
17849     
17850     posX = sdd2[datRow].posX;
17851     posX = sdd2[datRow].posY;
17852     
17853     chipHeight = sdd2[datRow].chipHeight;
17854     chipWidth = sdd2[datRow].chipWidth;
17855     eSlctX = sdd2[datRow].eSlctX;
17856     eSlctY = sdd2[datRow].eSlctY;
17857     
17858     registerNum = sdd2[datRow].registerNum;
17859     registerNumB = sdd2[datRow].registerNumB;
17860     
17861     esSceneProc = sdd2[datRow].esSceneProc;
17862     
17863     endGameCondition = sdd2[datRow].endGameCondition;
17864     initMapFlag = sdd2[datRow].initMapFlag;
17865     TeamCountFlag = sdd2[datRow].TeamCountFlag;
17866     initStatusFlag = sdd2[datRow].initStatusFlag;
17867     battleBegin = sdd2[datRow].battleBegin;
17868     startES = sdd2[datRow].startES;
17869     
17870     cpuAImodeflag = sdd2[datRow].cpuAImodeflag;
17871     cpuTurnEndFlag = sdd2[datRow].cpuTurnEndFlag;
17872     cpuModeMOVEflag = sdd2[datRow].cpuModeMOVEflag;
17873     cpuModeATTACKflag = sdd2[datRow].cpuModeATTACKflag;
17874     waitSwtichFlag = sdd2[datRow].waitSwtichFlag;
17875     battleReadyUpFlag = sdd2[datRow].battleReadyUpFlag;
17876     setBattleModeFlag = sdd2[datRow].setBattleModeFlag;
17877     
17878     wtRdy = sdd2[datRow].wtRdy;
17879     wtRdy2 = sdd2[datRow].wtRdy2;
17880     wtRdy3 = sdd2[datRow].wtRdy3;
17881     
17882     wtMovedFlag = sdd2[datRow].wtMovedFlag;
17883     wtAttackedFlag = sdd2[datRow].wtAttackedFlag;
17884     unitMoveEndFlag = sdd2[datRow].unitMoveEndFlag;
17885     battleSetUp = sdd2[datRow].battleSetUp;
17886     pushStanbyFlag = sdd2[datRow].pushStanbyFlag;
17887     battleEndFlag = sdd2[datRow].battleEndFlag;
17888     wtUnitNum = sdd2[datRow].wtUnitNum;
17889     messageDialog = sdd2[datRow].messageDialog;
17890
17891 /*
17892     for(int i = 0;i < 1002;i++){
17893         for(int j = 0;j < 1002;j++){
17894             chipNum[i][j] = sdd2[datRow].chipNum[i][j];
17895         }
17896     }
17897     
17898     for(int i = 0;i < 1002;i++){
17899         for(int j = 0;j < 1002;j++){
17900             buildNum[i][j] = sdd2[datRow].buildNum[i][j];
17901         }
17902     }
17903     
17904     for(int i = 0;i < 1002;i++){
17905         for(int j = 0;j < 1002;j++){
17906             unitNum[i][j] = sdd2[datRow].unitNum[i][j];
17907         }
17908     }
17909     
17910     for(int i = 0;i < 1002;i++){
17911         for(int j = 0;j < 1002;j++){
17912             loadNum[i][j] = sdd2[datRow].loadNum[i][j];
17913         }
17914     }
17915     
17916     for(int i = 0;i < 1002;i++){
17917         for(int j = 0;j < 1002;j++){
17918             buildTeam[i][j] = sdd2[datRow].buildTeam[i][j];
17919         }
17920     }
17921     
17922     for(int i = 0;i < 1002;i++){
17923         for(int j = 0;j < 1002;j++){
17924             unitTeam[i][j] = sdd2[datRow].unitTeam[i][j];
17925         }
17926     }
17927 */
17928     
17929     P[0] = sdd2[datRow].P[0];
17930     P[1] = sdd2[datRow].P[1];
17931     P[2] = sdd2[datRow].P[2];
17932     
17933     for(int i = 0;i < 9999;i++)
17934         Suicchi[i] = sdd2[datRow].Suicchi[i];
17935     
17936     sdd.HensuuNum = HensuuNum;
17937     for(int i = 0;i < 65000;i++)
17938         Hensuu[i] = [sdd2[datRow].Hensuu[i] retain];
17939     for(int i = 0;i < 65000;i++)
17940         HensuuName[i] = [sdd2[datRow].HensuuName[i] retain];
17941     
17942     MF[MFselectedRow+1].MS = sdd2[datRow].MS;
17943     MF[MFselectedRow+1].MS.D = sdd2[datRow].MS.D;
17944     
17945     /*
17946      UTop = sdd.UTop;
17947      BTop = sdd.BTop;
17948      
17949      
17950      Uselected = sdd.Uselected;
17951      unitBreak = sdd.unitBreak;
17952      Utarget = sdd.Utarget;
17953      
17954      */
17955     
17956     //NSLog(@"%d", MF[MFselectedRow+1].MS.playerSet1);
17957 }
17958
17959 -(void)saveGameDataDat{
17960     //おまんこ
17961     
17962     
17963     sdd.name = [[saveGameTF stringValue] retain];
17964     
17965     sdd.MFselectedRow = MFselectedRow;
17966     sdd.storyNumb = storyNumb;
17967     sdd.scenarioNumb = scenarioNumb;
17968     
17969     sdd.mapfileName = [MF[MFselectedRow+1].fileName retain];
17970     sdd.levelName = [SC[storyNumb].name retain];
17971     sdd.scenarioName = [SC[storyNumb].nameMAP[scenarioNumb] retain];
17972     
17973     sdd.posX = posX;
17974     sdd.posX = posY;
17975     
17976     sdd.chipHeight = chipHeight;
17977     sdd.chipWidth = chipWidth;
17978     sdd.eSlctX = eSlctX;
17979     sdd.eSlctY = eSlctY;
17980     
17981     sdd.registerNum = registerNum;
17982     sdd.registerNumB = registerNumB;
17983     
17984     sdd.esSceneProc = esSceneProc;
17985     
17986     sdd.endGameCondition = endGameCondition;
17987     sdd.initMapFlag = initMapFlag;
17988     sdd.TeamCountFlag = TeamCountFlag;
17989     sdd.initStatusFlag = initStatusFlag;
17990     sdd.battleBegin = battleBegin;
17991     sdd.startES = startES;
17992     
17993     sdd.cpuModeMOVEflag = cpuModeMOVEflag;
17994     sdd.cpuModeATTACKflag = cpuModeATTACKflag;
17995     
17996     sdd.cpuAImodeflag = cpuAImodeflag;
17997     sdd.cpuTurnEndFlag = cpuTurnEndFlag;
17998     sdd.waitSwtichFlag = waitSwtichFlag;
17999     sdd.battleReadyUpFlag = battleReadyUpFlag;
18000     sdd.setBattleModeFlag = setBattleModeFlag;
18001     
18002     
18003     sdd.wtRdy = wtRdy;
18004     sdd.wtRdy2 = wtRdy2;
18005     sdd.wtRdy3 = wtRdy3;
18006     
18007     
18008     sdd.wtMovedFlag = wtMovedFlag;
18009     sdd.wtAttackedFlag = wtAttackedFlag;
18010     sdd.unitMoveEndFlag = unitMoveEndFlag;
18011     sdd.battleSetUp = battleSetUp;
18012     sdd.pushStanbyFlag = pushStanbyFlag;
18013     sdd.battleEndFlag = battleEndFlag;
18014     sdd.wtUnitNum = wtUnitNum;
18015     sdd.messageDialog = messageDialog;
18016     
18017     /*
18018     for(int i = 0;i < 1002;i++){
18019         for(int j = 0;j < 1002;j++){
18020             sdd.chipNum[i][j] = chipNum[i][j];
18021         }
18022     }
18023     
18024     for(int i = 0;i < 1002;i++){
18025         for(int j = 0;j < 1002;j++){
18026             sdd.buildNum[i][j] = buildNum[i][j];
18027         }
18028     }
18029     
18030     for(int i = 0;i < 1002;i++){
18031         for(int j = 0;j < 1002;j++){
18032             sdd.unitNum[i][j] = unitNum[i][j];
18033         }
18034     }
18035     
18036     for(int i = 0;i < 1002;i++){
18037         for(int j = 0;j < 1002;j++){
18038             sdd.loadNum[i][j] = loadNum[i][j];
18039         }
18040     }
18041     
18042     for(int i = 0;i < 1002;i++){
18043         for(int j = 0;j < 1002;j++){
18044             sdd.buildTeam[i][j] = buildTeam[i][j];
18045         }
18046     }
18047     
18048     for(int i = 0;i < 1002;i++){
18049         for(int j = 0;j < 1002;j++){
18050             sdd.unitTeam[i][j] = unitTeam[i][j];
18051         }
18052     }
18053     */
18054     
18055     U = UTop;
18056     int r = 0;
18057     while(U && r < registerNum){
18058         sdd.dU[r].CPU = U->CPU;
18059         sdd.dU[r].number = U->number;
18060         sdd.dU[r].team = U->team;
18061         sdd.dU[r].chipNumber = U->chipNumber;
18062         sdd.dU[r].chipNumberL = U->chipNumberL;
18063     
18064         sdd.dU[r].x = U->x;
18065         sdd.dU[r].y = U->y;
18066         sdd.dU[r].z = U->z;
18067     
18068         sdd.dU[r].ix = U->ix;
18069         sdd.dU[r].iy = U->iy;
18070         sdd.dU[r].iz = U->iz;
18071     
18072         sdd.dU[r].dead = U->dead;
18073     
18074         sdd.dU[r].loadChipFlag = U->loadChipFlag;
18075     
18076         sdd.dU[r].unControlable = U->unControlable;
18077         sdd.dU[r].joinArmyFromNext = U->joinArmyFromNext;
18078         sdd.dU[r].persuasion = U->persuasion;
18079     
18080         sdd.dU[r].targType1L = U->targType1L;
18081         sdd.dU[r].targType2L = U->targType2L;
18082         sdd.dU[r].targType1D = U->targType1D;
18083         sdd.dU[r].targType2D = U->targType2D;
18084     
18085         sdd.dU[r].army = U->army;
18086         sdd.dU[r].img = [U->img retain];
18087         
18088         sdd.dU[r].C.chipNumb = U->C.chipNumb;
18089         sdd.dU[r].C.name = [U->C.name retain];
18090         sdd.dU[r].C.nameNick = [U->C.nameNick retain];
18091         sdd.dU[r].C.nameClass = [U->C.nameClass retain];
18092         sdd.dU[r].C.nameID = [U->C.nameID retain];
18093     
18094         sdd.dU[r].C.R_C = U->C.R_C;
18095         sdd.dU[r].C.S_C = U->C.S_C;
18096
18097         U = U->next;
18098         r++;
18099     }U = UTop;
18100     
18101     B = BTop;
18102     r = 0;
18103     while(B && r < registerNumB){
18104         sdd.dB[r].number = B->number;
18105         sdd.dB[r].team = B->team;
18106         sdd.dB[r].chipNumber = B->chipNumber;
18107         sdd.dB[r].makeLv = B->makeLv;
18108         
18109         sdd.dB[r].x = B->x;
18110         sdd.dB[r].y = B->y;
18111         sdd.dB[r].z = B->z;
18112         
18113         sdd.dB[r].dead = B->dead;
18114         
18115         sdd.dB[r].img = [B->img retain];
18116         sdd.dB[r].C.chipNumb = B->C.chipNumb;
18117         sdd.dB[r].C.name = [B->C.name retain];
18118         sdd.dB[r].C.nameID = [B->C.nameID retain];
18119         sdd.dB[r].C.S_C = B->C.S_C;
18120
18121         B = B->next;
18122         r++;
18123     }B = BTop;
18124     
18125     sdd.P[0] = P[0];
18126     sdd.P[1] = P[1];
18127     sdd.P[2] = P[2];
18128     
18129     
18130     for(int i = 0;i < 9999;i++)
18131         sdd.Suicchi[i] = Suicchi[i];
18132     
18133     sdd.HensuuNum = HensuuNum;
18134     for(int i = 0;i < 65000;i++)
18135         sdd.Hensuu[i] = [Hensuu[i] retain];
18136     for(int i = 0;i < 65000;i++)
18137         sdd.HensuuName[i] = [HensuuName[i] retain];
18138     
18139     MAPSCRIPT MS = MF[MFselectedRow+1].MS;
18140     
18141      sdd.MS = MS;
18142     
18143     [self saveStruct];
18144 }
18145
18146 -(NSData *)sddToNSData:(NSString *) path{
18147     
18148     /*
18149     NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject:sdd];
18150     
18151     [archivedData writeToFile:path atomically:YES];
18152     
18153     return archivedData;
18154     */
18155     
18156     
18157 }
18158
18159 -(IBAction)saveGameCancel:(id)sender{
18160
18161     [saveGamePanel close];
18162
18163 }
18164
18165 @end
18166
18167
18168
18169
18170
18171 @implementation FieldSceneEF
18172
18173
18174 -(BOOL)isFlipped{
18175     return YES;
18176 }
18177
18178 - (id)initWithFrame:(NSRect)frame
18179 {
18180     self = [super initWithFrame:frame];
18181     if (self) {
18182         // Initialization code here.
18183         time  = [NSTimer
18184                  scheduledTimerWithTimeInterval:0.015
18185                  target:self
18186                  selector:@selector(EventLoopBV:)
18187                  userInfo:nil
18188                  repeats:YES
18189                  ];
18190     }
18191     
18192     return self;
18193 }
18194
18195 -(void)scrollWheel:(NSEvent *)theEvent{
18196
18197     theEvent = NULL;
18198
18199 }
18200
18201 -(void)EventLoopBV:(NSTimer*)timer{
18202     
18203     [battleView setNeedsDisplay:YES];
18204     
18205     static int aniFrame = 0;
18206     
18207     if(animationFlag3){
18208         aniFrame = 0;
18209         aniFrameCnt = 0;
18210         return;
18211     }
18212     
18213     if(!animationFlag1 && !animationFlag2){
18214         aniFrame = 0;
18215         aniFrameCnt = 0;
18216         return;
18217     }
18218     
18219     U = effCun;
18220     
18221     if(animationFlag1)
18222         U->C.A = attackCR;
18223     if(animationFlag2)
18224         U->C.A = attackCR2;
18225     
18226     static bool pussyMikoto = false;
18227     
18228     if(aniFrame == 0){
18229         
18230         ani = U->C.A->AN.ANI;
18231         ANI *aniTop = ani;
18232         
18233         for (int i = 0; i < aniFrameCnt;i++) {
18234             ani = ani->next;
18235         }
18236         
18237         if(ani->snd){
18238             [ani->snd setCurrentTime:0];
18239             [ani->snd play];
18240             ani->snd.loops = NO;
18241         }
18242         if(!ani->next){
18243             pussyMikoto = true;
18244         }
18245         ani = aniTop;
18246         
18247         U->C.A->AN.ANI = ani;
18248     }
18249     
18250     if(aniFrame < U->C.A->AN.frame){
18251         aniFrame++;
18252     }else{
18253         aniFrame = 0;
18254         aniFrameCnt++;
18255         if(pussyMikoto){
18256             pussyMikoto = false;
18257             animationFlag3 = true;
18258         }
18259     }
18260     
18261     
18262     
18263     
18264     
18265     [self setNeedsDisplay:YES];
18266     
18267     
18268 }
18269
18270 -(void)DrawImage:(NSImage*)image x:(float)x y:(float)y a:(float)a{
18271     NSRect frRect;
18272     frRect.size.height = image.size.height;
18273     frRect.size.width = image.size.width;
18274     
18275     frRect.origin.x = 0;
18276     frRect.origin.y = 0;
18277     
18278     NSRect drRect;
18279     drRect.origin.x = x;
18280     drRect.origin.y = y;
18281     drRect.size.height = image.size.height;
18282     drRect.size.width = image.size.width;
18283     
18284     [image drawInRect:drRect fromRect:frRect operation:NSCompositeSourceOver fraction:a respectFlipped:YES hints:nil];
18285     
18286 }
18287
18288 - (void)drawRect:(NSRect)dirtyRect
18289 {
18290     // Drawing code here.
18291     if(animationFlag3) return;
18292     
18293
18294
18295     
18296     if(animationFlag1 || animationFlag2){
18297         U = effCun;
18298         
18299         if(animationFlag1)
18300                 U->C.A = attackCR;
18301         if(animationFlag2)
18302             U->C.A = attackCR2;
18303         
18304     ani = U->C.A->AN.ANI;
18305     
18306     ANI *aniTop = ani;
18307     
18308         
18309     for (int i = 0; i < aniFrameCnt;i++) {
18310         ani = ani->next;
18311     }
18312         if(!ani)
18313         {
18314             ani = aniTop;
18315             return;
18316         }
18317     [self DrawImage:ani->img x:ani->x + ani->ax y:ani->y + ani->ay a:1.0f];
18318     ani = aniTop;
18319     }
18320
18321     
18322
18323     
18324 }
18325
18326
18327
18328
18329
18330
18331
18332
18333
18334
18335 @end
18336
18337
18338
18339
18340
18341
18342
18343
18344